diff --git a/.gitignore b/.gitignore index ee0f8a0..dfe57b1 100644 --- a/.gitignore +++ b/.gitignore @@ -16,5 +16,6 @@ zig-out/ /build/ /build-*/ /docgen_tmp/ +zig-pkg/ .vscode \ No newline at end of file diff --git a/build.zig b/build.zig deleted file mode 100644 index 1c9e3a0..0000000 --- a/build.zig +++ /dev/null @@ -1,72 +0,0 @@ -const std = @import("std"); -const rlz = @import("raylib_zig"); - -pub fn build(b: *std.Build) !void { - const target = b.standardTargetOptions(.{}); - const optimize = b.standardOptimizeOption(.{}); - - const raylib_dep = b.dependency("raylib_zig", .{ - .target = target, - .optimize = optimize, - - // Fixes panic from weird joystick OOB crap on hello world project - // panic: index -255 out of bounds for type 'int[512]' - // js->linjs.keyMap[code - BTN_MISC] in glfw/src/linux_joystick.c - .config = "-fno-sanitize=undefined", - }); - const raylib = raylib_dep.module("raylib"); - const raylib_artifact = raylib_dep.artifact("raylib"); - - const exe_mod = b.createModule(.{ - .root_source_file = b.path("src/main.zig"), - .target = target, - .optimize = optimize, - }); - exe_mod.addImport("raylib", raylib); - - const run_step = b.step("run", "Run the app"); - - //web exports are completely separate - if (target.query.os_tag == .emscripten) { - const emsdk = rlz.emsdk; - const wasm = b.addLibrary(.{ - .name = "zig-frugg", - .root_module = exe_mod, - }); - - const install_dir: std.Build.InstallDir = .{ .custom = "web" }; - const emcc_flags = emsdk.emccDefaultFlags(b.allocator, .{ .optimize = optimize }); - const emcc_settings = emsdk.emccDefaultSettings(b.allocator, .{ .optimize = optimize }); - - const emcc_step = emsdk.emccStep(b, raylib_artifact, wasm, .{ - .optimize = optimize, - .flags = emcc_flags, - .settings = emcc_settings, - .shell_file_path = emsdk.shell(raylib_dep), - .install_dir = install_dir, - .embed_paths = &.{.{ .src_path = "resources/" }}, - }); - b.getInstallStep().dependOn(emcc_step); - - const html_filename = try std.fmt.allocPrint(b.allocator, "{s}.html", .{wasm.name}); - const emrun_step = emsdk.emrunStep( - b, - b.getInstallPath(install_dir, html_filename), - &.{}, - ); - - emrun_step.dependOn(emcc_step); - run_step.dependOn(emrun_step); - } else { - const exe = b.addExecutable(.{ - .name = "zig-frugg", - .root_module = exe_mod, - }); - b.installArtifact(exe); - - const run_cmd = b.addRunArtifact(exe); - run_cmd.step.dependOn(b.getInstallStep()); - - run_step.dependOn(&run_cmd.step); - } -} diff --git a/build.zig.zon b/build.zig.zon deleted file mode 100644 index 90efce6..0000000 --- a/build.zig.zon +++ /dev/null @@ -1,52 +0,0 @@ -.{ - // This is the default name used by packages depending on this one. For - // example, when a user runs `zig fetch --save `, this field is used - // as the key in the `dependencies` table. Although the user can choose a - // different name, most users will stick with this provided value. - // - // It is redundant to include "zig" in this name because it is already - // within the Zig package namespace. - .name = .zig_frugg, - // This is a [Semantic Version](https://semver.org/). - // In a future version of Zig it will be used for package deduplication. - .version = "0.0.0", - // Together with name, this represents a globally unique package - // identifier. This field is generated by the Zig toolchain when the - // package is first created, and then *never changes*. This allows - // unambiguous detection of one package being an updated version of - // another. - // - // When forking a Zig project, this id should be regenerated (delete the - // field and run `zig build`) if the upstream project is still maintained. - // Otherwise, the fork is *hostile*, attempting to take control over the - // original project's identity. Thus it is recommended to leave the comment - // on the following line intact, so that it shows up in code reviews that - // modify the field. - .fingerprint = 0x83fd67e65259ef3a, // Changing this has security and trust implications. - // Tracks the earliest Zig version that the package considers to be a - // supported use case. - .minimum_zig_version = "0.16.0", - // This field is optional. - // Each dependency must either provide a `url` and `hash`, or a `path`. - // `zig build --fetch` can be used to fetch all dependencies of a package, recursively. - // Once all dependencies are fetched, `zig build` no longer requires - // internet connectivity. - .dependencies = .{ - .raylib_zig = .{ - .url = "git+https://github.com/raylib-zig/raylib-zig?ref=devel#58f3c0fa328fc9ff48d17c2c3771ab9c5114aaa6", - .hash = "raylib_zig-6.0.0-KE8REMNkBQCpxwqT9ubVNf5aEOcWRUVIaH2sgt_sDDoZ", - }, - .emsdk = .{ - .url = "git+https://github.com/emscripten-core/emsdk?ref=4.0.9#3bcf1dcd01f040f370e10fe673a092d9ed79ebb5", - .hash = "N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ", - }, - }, - .paths = .{ - "build.zig", - "build.zig.zon", - "src", - // For example... - //"LICENSE", - //"README.md", - }, -} diff --git a/resources/burp.mp3 b/resources/burp.mp3 deleted file mode 100644 index 6370422..0000000 Binary files a/resources/burp.mp3 and /dev/null differ diff --git a/resources/placeholder.txt b/resources/placeholder.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/main.zig b/src/main.zig deleted file mode 100644 index 0d14719..0000000 --- a/src/main.zig +++ /dev/null @@ -1,56 +0,0 @@ -const std = @import("std"); -const rl = @import("raylib"); - -const Vec3 = rl.Vector3; -const Vec2 = rl.Vector2; - -const Frug = struct { - pos: Vec3, - radius: f32 = 24, - pub fn draw(self: @This()) void { - rl.drawCircleV( - Vec2.init(self.pos.x, self.pos.y), - self.radius, - .green, - ); - } - pub fn init() Frug { - return Frug{ - .pos = .{ .x = 200, .y = 400, .z = 10 }, - .radius = 24, - }; - } -}; - -pub fn main(init: std.process.Init) anyerror!void { - const io = init.io; - try std.Io.File.stdout().writeStreamingAll(io, "FRUGG!\n"); - - const screenWidth = 800; - const screenHeight = 600; - - rl.initWindow(screenWidth, screenHeight, "Zig Frugger"); - defer rl.closeWindow(); - - rl.initAudioDevice(); - defer rl.closeAudioDevice(); - const frugBurp = try rl.loadSound("resources/burp.mp3"); - defer rl.unloadSound(frugBurp); - - rl.setTargetFPS(60); - - const frug = Frug.init(); - - while (!rl.windowShouldClose()) { - rl.beginDrawing(); - defer rl.endDrawing(); - - if (rl.isKeyPressed(.space)) rl.playSound(frugBurp); - - rl.clearBackground(.sky_blue); - - frug.draw(); - - rl.drawText("FRUGG!", 10, 10, 40, .green); - } -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/.gitattributes b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/.gitattributes deleted file mode 100644 index 15a5c58..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.h linguist-language=C diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/.github/FUNDING.yml b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/.github/FUNDING.yml deleted file mode 100644 index d7775fe..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: raysan5 -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/.gitignore b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/.gitignore deleted file mode 100644 index 18c01c5..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/.gitignore +++ /dev/null @@ -1,64 +0,0 @@ -# Object files -*.o -*.ko -*.obj -*.elf - -# Precompiled Headers -*.gch -*.pch - -# Libraries -*.lib -*.a -*.la -*.lo - -# Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib - -# Executables -*.exe -*.out -*.app -*.i*86 -*.x86_64 -*.hex - -# Debug files -*.dSYM/ -*.su - -# VSCode files -.vscode/ - - -# Ignore files build by Visual Studio -[Dd]ebug -[Rr]elease -*.vs -*.obj -*.pdb -*.aps -*.user -# *.vcproj -# *.vcxproj* -# *.sln -*.vspscc -*_i.c -*.i -*.icf -*_p.c -*.ncb -*.suo -*.tlb -*.tlh -*.bak -*.cache -*.ilk -*.log - -build \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/HISTORY.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/HISTORY.md deleted file mode 100644 index 7d0f717..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/HISTORY.md +++ /dev/null @@ -1,17 +0,0 @@ -## raygui history - -raygui development started on December 2014 by two internship students (Kevin and Daniel) guided by me, objective was creating a simple and easy-to-use immediate-mode-gui module for raylib, intended for tools development. On June 2015, library was mostly functional (including basic controls) and we started working in the styling posibilities for the library, focusing on an easy way to style controls properties. Consequently, development of [rGuiStyler](https://raylibtech.itch.io/rguistyler) also started at that point... but resources were quite limited and project was stopped for several months, most of the time was invested in [raylib](https://github.com/raysan5/raylib) development. - -On June 2016, project was picked up again and raygui 1.0 was released by the end of that month. During August 2016, raygui was used to develop [rFXGen](https://github.com/raysan5/rfxgen) and also an early protoype of [rGuiLayout](https://raylibtech.itch.io/rguilayout), those tools were a testbed for the library. By the end of 2016, raygui project development was stopped again for several months. - -On June 2017, a complete redesign of the library started, almost from scratch, all functions were reviewed and mostly rewritten and a brand new styling system was developed. The objective was using raygui professionally in several tools. It was the beginning of raygui 2.0. - -On January 2018, two students (Adria and Jordi) started working on raygui and related tools; library evolved considerably in the following months. [rGuiStyler](https://raylibtech.itch.io/rguistyler) was completely redesigned and rewritten from scratch (rGuiStyler v2.0). [rGuiLayout](https://raylibtech.itch.io/rguilayout) turned from a protoype into a professional software and raygui reached version 2.0 with plenty of new controls and features. - -On July 2018, I started working full time on raygui and its tools, improving the library considerably. On October 2018 [Sergio](https://github.com/anidealgift) joined the project and focused efforts on [rGuiLayout](https://raylibtech.itch.io/rguilayout) tool redesign. We reached 2019 with continuous improvement and redesigns of mostly all raygui functions along rGuiLayout 2.0 and rGuiStyler 3.0. - -On March 2019, the first set of new raygui tools was published: [rFXGen 2.0](https://raylibtech.itch.io/rfxgen), [rTexViewer 1.0](https://raylibtech.itch.io/rtexviewer) and [rIconPacker 1.0](https://raylibtech.itch.io/riconpacker). - -From March 2019 to June 2019 raygui development decelerated, Sergio left the project and efforts were focused on raylib 2.5, during this time one external contributor, [Vlad Adrian](https://github.com/Demizdor), completely redesigned `GuiTextBox()` and related controls and version was bumped to raygui 2.5. - -During summer 2019 lots of raygui functions were reviewed, breaking compatibility to any previous version and pointing to a **raygui 2.6** update. diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/LICENSE b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/LICENSE deleted file mode 100644 index 3edc539..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -zlib License - -Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) - -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. diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/README.md deleted file mode 100644 index 94fb498..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/README.md +++ /dev/null @@ -1,163 +0,0 @@ - - -**raygui is a simple and easy-to-use immediate-mode-gui library.** - -`raygui` was originally inspired by [Unity IMGUI](https://docs.unity3d.com/Manual/GUIScriptingGuide.html) (immediate mode GUI API). - -`raygui` was designed as an auxiliary module for [raylib](https://github.com/raysan5/raylib) to create simple GUI interfaces using raylib graphic style (simple colors, plain rectangular shapes, wide borders...) but it can be adapted to other engines/frameworks. - -`raygui` is intended for **tools development**; it has already been used to develop [multiple published tools](https://raylibtech.itch.io). - -
- -**WARNING: Latest `raygui` from master branch is always aligned with latest `raylib` from master branch. Make sure to use the appropriate versions.** - -**WARNING: Latest `raygui 4.0` is an API-BREAKING redesign from previous versions (3.x), now all functions are more consistent and coherent, you can read the details about this breaking change in issue [283](https://github.com/raysan5/raygui/issues/283)** - -*NOTE: raygui is a single-file header-only library (despite its internal dependency on raylib), so, functions definition AND implementation reside in the same file `raygui.h`, when including `raygui.h` in a module, `RAYGUI_IMPLEMENTATION` must be previously defined to include the implementation part of `raygui.h` BUT only in one compilation unit, other modules could also include `raygui.h` but `RAYGUI_IMPLEMENTATION` must not be defined again.* - -## features - - - **Immediate-mode gui, no retained data** - - **+25** controls provided (basic and advanced) - - Powerful **styling system** for colors, font and metrics - - Standalone usage mode supported (for other graphic libs) - - **Icons support**, embedding a complete 1-bit icons pack - - Multiple **tools** provided for raygui development - -## code sample -```c -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "raygui.h" - -int main() -{ - InitWindow(400, 200, "raygui - controls test suite"); - SetTargetFPS(60); - - bool showMessageBox = false; - - while (!WindowShouldClose()) - { - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); - - if (GuiButton((Rectangle){ 24, 24, 120, 30 }, "#191#Show Message")) showMessageBox = true; - - if (showMessageBox) - { - int result = GuiMessageBox((Rectangle){ 85, 70, 250, 100 }, - "#191#Message Box", "Hi! This is a message!", "Nice;Cool"); - - if (result >= 0) showMessageBox = false; - } - - EndDrawing(); - } - - CloseWindow(); - return 0; -} -``` -![screenshot000](https://github.com/raysan5/raygui/assets/5766837/170e2bce-b7ca-49dc-a263-32b673376546) - -## raygui controls - -### basic controls -``` -Label | Button | LabelButton | Toggle | ToggleGroup | ToggleSlider -CheckBox | ComboBox | DropdownBox | TextBox | ValueBox | Spinner -Slider | SliderBar | ProgressBar | StatusBar | DummyRec | Grid -``` -### container/separator controls -``` -WindowBox | GroupBox | Line | Panel | ScrollPanel | TabBar -``` -### advanced controls -``` -ListView | ColorPicker | MessageBox | TextInputBox -``` - - -## raygui styles - -`raygui` comes with a [default](styles/default) style automatically loaded at runtime: - -![raygui default style](styles/default/style_default.png) - -Some additional styles are also provided for convenience, just check [styles directory](styles) for details: - -![raygui additional styles](images/raygui_style_table_multi.png) - -Custom styles can also be created very easily using [rGuiStyler](https://raylibtech.itch.io/rguistyler) tool. - -Styles can be loaded at runtime using raygui `GuiLoadStyle()` function. Simple and easy-to-use. - -## raygui icons - -`raygui` supports custom icons, by default, a predefined set of icons is provided inside `raygui` as an array of binary data; it contains **256 possible icons** defined as **16x16 pixels** each; each pixel is codified using **1-bit**. The total size of the array is `2048 bytes`. - - - -To use any of those icons just prefix the *#iconId#* number to **any text** written within `raygui` controls: -```c -if (GuiButton(rec, "#05#Open Image")) { /* ACTION */ } -``` -It's also possible to use the provided `GuiIconText()` function to prefix it automatically, using a clearer identifier (defined in `raygui.h`). -```c -if (GuiButton(rec, GuiIconText(RICON_FILE_OPEN, "Open Image"))) { /* ACTION */ } -``` -Provided set of icons can be reviewed and customized using [rGuiIcons](https://raylibtech.itch.io/rguiicons) tool. - -## raygui support tools - - - [**rGuiStyler**](https://raylibtech.itch.io/rguistyler) - A simple and easy-to-use raygui styles editor. - - ![rGuiStyler v3.1](images/rguistyler_v300.png) - - - [**rGuiIcons**](https://raylibtech.itch.io/rguiicons) - A simple and easy-to-use raygui icons editor. - - ![rGuiIcons v1.0](images/rguiicons_v100.png) - - - [**rGuiLayout**](https://raylibtech.itch.io/rguilayout) - A simple and easy-to-use raygui layouts editor. - - ![rGuiLayout v2.2](images/rguilayout_v220.png) - -## building - -`raygui` is intended to be used as a portable single-file header-only library, to be directly integrated into any C/C++ codebase but some users could require a shared/dynamic version of the library, for example, to create bindings: - - - **Windows (MinGW, GCC)** -``` -copy src/raygui.h src/raygui.c -gcc -o src/raygui.dll src/raygui.c -shared -DRAYGUI_IMPLEMENTATION -DBUILD_LIBTYPE_SHARED -static-libgcc -lopengl32 -lgdi32 -lwinmm -Wl,--out-implib,src/librayguidll.a -``` - - - **Windows (MSVC)** -``` -copy src\raygui.h src\raygui.c -cl /O2 /I../raylib/src/ /D_USRDLL /D_WINDLL /DRAYGUI_IMPLEMENTATION /DBUILD_LIBTYPE_SHARED src/raygui.c /LD /Feraygui.dll /link /LIBPATH ../raylib/build/raylib/Release/raylib.lib /subsystem:windows /machine:x64 -``` - - - **Linux (GCC)** -``` -mv src/raygui.h src/raygui.c -gcc -o raygui.so src/raygui.c -shared -fpic -DRAYGUI_IMPLEMENTATION -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -mv src/raygui.c src/raygui.h -``` - -- **Mac (clang, homebrew installed raylib)** -``` -cp src/raygui.h src/raygui.c -brew install raylib -gcc -o raygui.dynlib src/raygui.c -shared -fpic -DRAYGUI_IMPLEMENTATION -framework OpenGL -lm -lpthread -ldl $(pkg-config --libs --cflags raylib) -``` - - -## license - -raygui is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check [LICENSE](LICENSE) for further details. diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/Makefile b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/Makefile deleted file mode 100644 index c282701..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/Makefile +++ /dev/null @@ -1,402 +0,0 @@ -#************************************************************************************************** -# -# raylib makefile for Desktop platform and HTML5 -# -# Copyright (c) 2019 Ramon Santamaria (@raysan5) -# -# 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. -# -#************************************************************************************************** - -.PHONY: all clean - -# Define required raylib variables -RAYLIB_PATH ?= ../../raylib -RAYGUI_PATH ?= ../src - -# Define default options - -# One of PLATFORM_DESKTOP, PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB -PLATFORM ?= PLATFORM_DESKTOP - -# Locations of your newly installed library and associated headers. See ../src/Makefile -# On Linux, if you have installed raylib but cannot compile the examples, check that -# the *_INSTALL_PATH values here are the same as those in src/Makefile or point to known locations. -# To enable system-wide compile-time and runtime linking to libraylib.so, run ../src/$ sudo make install RAYLIB_LIBTYPE_SHARED. -# To enable compile-time linking to a special version of libraylib.so, change these variables here. -# To enable runtime linking to a special version of libraylib.so, see EXAMPLE_RUNTIME_PATH below. -# If there is a libraylib in both EXAMPLE_RUNTIME_PATH and RAYLIB_INSTALL_PATH, at runtime, -# the library at EXAMPLE_RUNTIME_PATH, if present, will take precedence over the one at RAYLIB_INSTALL_PATH. -# RAYLIB_INSTALL_PATH should be the desired full path to libraylib. No relative paths. -DESTDIR ?= /usr/local -RAYLIB_INSTALL_PATH ?= $(DESTDIR)/lib -# RAYLIB_H_INSTALL_PATH locates the installed raylib header and associated source files. -RAYLIB_H_INSTALL_PATH ?= $(DESTDIR)/include - -# Library type used for raylib: STATIC (.a) or SHARED (.so/.dll) -RAYLIB_LIBTYPE ?= STATIC - -# Build mode for project: DEBUG or RELEASE -BUILD_MODE ?= RELEASE - -# Use external GLFW library instead of rglfw module -# TODO: Review usage on Linux. Target version of choice. Switch on -lglfw or -lglfw3 -USE_EXTERNAL_GLFW ?= FALSE - -# Use Wayland display server protocol on Linux desktop -# by default it uses X11 windowing system -USE_WAYLAND_DISPLAY ?= FALSE - -# Determine PLATFORM_OS in case PLATFORM_DESKTOP selected -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - # No uname.exe on MinGW!, but OS=Windows_NT on Windows! - # ifeq ($(UNAME),Msys) -> Windows - ifeq ($(OS),Windows_NT) - PLATFORM_OS=WINDOWS - else - UNAMEOS=$(shell uname) - ifeq ($(UNAMEOS),Linux) - PLATFORM_OS=LINUX - endif - ifeq ($(UNAMEOS),FreeBSD) - PLATFORM_OS=BSD - endif - ifeq ($(UNAMEOS),OpenBSD) - PLATFORM_OS=BSD - endif - ifeq ($(UNAMEOS),NetBSD) - PLATFORM_OS=BSD - endif - ifeq ($(UNAMEOS),DragonFly) - PLATFORM_OS=BSD - endif - ifeq ($(UNAMEOS),Darwin) - PLATFORM_OS=OSX - endif - endif -endif -ifeq ($(PLATFORM),PLATFORM_RPI) - UNAMEOS=$(shell uname) - ifeq ($(UNAMEOS),Linux) - PLATFORM_OS=LINUX - endif -endif - -# RAYLIB_PATH adjustment for different platforms. -# If using GNU make, we can get the full path to the top of the tree. Windows? BSD? -# Required for ldconfig or other tools that do not perform path expansion. -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),LINUX) - RAYLIB_PREFIX ?= .. - RAYLIB_PATH = $(realpath $(RAYLIB_PREFIX)) - endif -endif -# Default path for raylib on Raspberry Pi, if installed in different path, update it! -# This is not currently used by src/Makefile. Not sure of its origin or usage. Refer to wiki. -# TODO: update install: target in src/Makefile for RPI, consider relation to LINUX. -ifeq ($(PLATFORM),PLATFORM_RPI) - RAYLIB_PATH ?= /home/pi/raylib -endif - -ifeq ($(PLATFORM),PLATFORM_WEB) - # Emscripten required variables - EMSDK_PATH ?= C:/raylib/emsdk - EMSCRIPTEN_VERSION ?= 1.38.32 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) -endif - -# Define raylib release directory for compiled library. -# RAYLIB_RELEASE_PATH points to provided binaries or your freshly built version -RAYLIB_RELEASE_PATH ?= $(RAYLIB_PATH)/src - -# EXAMPLE_RUNTIME_PATH embeds a custom runtime location of libraylib.so or other desired libraries -# into each example binary compiled with RAYLIB_LIBTYPE=SHARED. It defaults to RAYLIB_RELEASE_PATH -# so that these examples link at runtime with your version of libraylib.so in ../release/libs/linux -# without formal installation from ../src/Makefile. It aids portability and is useful if you have -# multiple versions of raylib, have raylib installed to a non-standard location, or want to -# bundle libraylib.so with your game. Change it to your liking. -# NOTE: If, at runtime, there is a libraylib.so at both EXAMPLE_RUNTIME_PATH and RAYLIB_INSTALL_PATH, -# The library at EXAMPLE_RUNTIME_PATH, if present, will take precedence over RAYLIB_INSTALL_PATH, -# Implemented for LINUX below with CFLAGS += -Wl,-rpath,$(EXAMPLE_RUNTIME_PATH) -# To see the result, run readelf -d core/core_basic_window; looking at the RPATH or RUNPATH attribute. -# To see which libraries a built example is linking to, ldd core/core_basic_window; -# Look for libraylib.so.1 => $(RAYLIB_INSTALL_PATH)/libraylib.so.1 or similar listing. -EXAMPLE_RUNTIME_PATH ?= $(RAYLIB_RELEASE_PATH) - -# Define default C compiler: gcc -# NOTE: define g++ compiler if using C++ -CC = gcc - -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),OSX) - # OSX default compiler - CC = clang - endif - ifeq ($(PLATFORM_OS),BSD) - # FreeBSD, OpenBSD, NetBSD, DragonFly default compiler - CC = clang - endif -endif -ifeq ($(PLATFORM),PLATFORM_RPI) - ifeq ($(USE_RPI_CROSS_COMPILER),TRUE) - # Define RPI cross-compiler - #CC = armv6j-hardfloat-linux-gnueabi-gcc - CC = $(RPI_TOOLCHAIN)/bin/arm-linux-gnueabihf-gcc - endif -endif -ifeq ($(PLATFORM),PLATFORM_WEB) - # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned - # to use emscripten.h and emscripten_set_main_loop() - CC = emcc -endif - -# Define default make program: Mingw32-make -MAKE = mingw32-make - -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),LINUX) - MAKE = make - endif -endif - -# Define compiler flags: -# -O1 defines optimization level -# -g include debug information on compilation -# -s strip unnecessary data from build -# -Wall turns on most, but not all, compiler warnings -# -std=c99 defines C language mode (standard C from 1999 revision) -# -std=gnu99 defines C language mode (GNU C from 1999 revision) -# -Wno-missing-braces ignore invalid warning (GCC bug 53119) -# -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces - -ifeq ($(BUILD_MODE),DEBUG) - CFLAGS += -g -endif -ifeq ($(RAYLIB_BUILD_MODE),RELEASE) - CFLAGS += -O1 -s -endif - -# Additional flags for compiler (if desired) -#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data -Wl,--subsystem,windows - endif - ifeq ($(PLATFORM_OS),LINUX) - ifeq ($(RAYLIB_LIBTYPE),STATIC) - CFLAGS += -D_DEFAULT_SOURCE - endif - ifeq ($(RAYLIB_LIBTYPE),SHARED) - # Explicitly enable runtime link to libraylib.so - CFLAGS += -Wl,-rpath,$(EXAMPLE_RUNTIME_PATH) - endif - endif -endif -ifeq ($(PLATFORM),PLATFORM_RPI) - CFLAGS += -std=gnu99 -endif -ifeq ($(PLATFORM),PLATFORM_WEB) - # -Os # size optimization - # -O2 # optimization level 2, if used, also set --memory-init-file 0 - # -sUSE_GLFW=3 # Use glfw3 library (context/input management) - # -sALLOW_MEMORY_GROWTH=1 # to allow memory resizing -> WARNING: Audio buffers could FAIL! - # -sTOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) (67108864 = 64MB) - # -sUSE_PTHREADS=1 # multithreading support - # -sWASM=0 # disable Web Assembly, emitted by default - # -sASYNCIFY # lets synchronous C/C++ code interact with asynchronous JS - # -sFORCE_FILESYSTEM=1 # force filesystem to load/save files data - # -sASSERTIONS=1 # enable runtime checks for common memory allocation errors (-O1 and above turn it off) - # -sMINIFY_HTML=0 # minify generated html from shell.html - # --profiling # include information for code profiling - # --memory-init-file 0 # to avoid an external memory initialization code file (.mem) - # --preload-file resources # specify a resources folder for data compilation - # --source-map-base # allow debugging in browser with source map - # --shell-file shell.html # define a custom shell .html and output extension - CFLAGS += -Os -sUSE_GLFW=3 -sFORCE_FILESYSTEM=1 -sASYNCIFY --preload-file $(dir $<)resources@resources -sMINIFY_HTML=0 - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -sASSERTIONS=1 --profiling - endif - # NOTE: Simple raylib examples are compiled to be interpreter by emterpreter, that way, - # we can compile same code for ALL platforms with no change required, but, working on bigger - # projects, code needs to be refactored to avoid a blocking while() loop, moving Update and Draw - # logic to a self contained function: UpdateDrawFrame(), check core_basic_window_web.c for reference. - - # Define a custom shell .html and output extension - CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html - EXT = .html -endif - -# Define include paths for required headers -# NOTE: Several external required libraries (stb and others) -INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external -I$(RAYGUI_PATH) - -# Define additional directories containing required header files -ifeq ($(PLATFORM),PLATFORM_RPI) - # RPI required libraries - INCLUDE_PATHS += -I/opt/vc/include - INCLUDE_PATHS += -I/opt/vc/include/interface/vmcs_host/linux - INCLUDE_PATHS += -I/opt/vc/include/interface/vcos/pthreads -endif -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),BSD) - # Consider -L$(RAYLIB_H_INSTALL_PATH) - INCLUDE_PATHS += -I/usr/local/include - endif - ifeq ($(PLATFORM_OS),LINUX) - # Reset everything. - # Precedence: immediately local, installed version, raysan5 provided libs -I$(RAYLIB_H_INSTALL_PATH) -I$(RAYLIB_PATH)/release/include - INCLUDE_PATHS = -I$(RAYLIB_H_INSTALL_PATH) -isystem. -isystem$(RAYLIB_PATH)/src -isystem$(RAYLIB_PATH)/release/include -isystem$(RAYLIB_PATH)/src/external - endif -endif - -# Define library paths containing required libs. -LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src - -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),BSD) - # Consider -L$(RAYLIB_INSTALL_PATH) - LDFLAGS += -L. -Lsrc -L/usr/local/lib - ifeq ($(shell uname),OpenBSD) - LDFLAGS += -L/usr/X11R6/lib - endif - endif - ifeq ($(PLATFORM_OS),LINUX) - # Reset everything. - # Precedence: immediately local, installed version, raysan5 provided libs - LDFLAGS = -L. -L$(RAYLIB_INSTALL_PATH) -L$(RAYLIB_RELEASE_PATH) - endif -endif - -ifeq ($(PLATFORM),PLATFORM_RPI) - LDFLAGS += -L/opt/vc/lib -endif - -# Define any libraries required on linking -# if you want to link libraries (libname.so or libname.a), use the -lname -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # Libraries for Windows desktop compilation - # NOTE: WinMM library required to set high-res timer resolution - LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm - # Required for physac examples - LDLIBS += -static -lpthread - endif - ifeq ($(PLATFORM_OS),LINUX) - # Libraries for Debian GNU/Linux desktop compiling - # NOTE: Required packages: libegl1-mesa-dev - LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - - # On X11 requires also below libraries - LDLIBS += -lX11 - # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them - #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - - # On Wayland windowing system, additional libraries requires - ifeq ($(USE_WAYLAND_DISPLAY),TRUE) - LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon - endif - # Explicit link to libc - ifeq ($(RAYLIB_LIBTYPE),SHARED) - LDLIBS += -lc - endif - endif - ifeq ($(PLATFORM_OS),OSX) - # Libraries for OSX 10.9 desktop compiling - # NOTE: Required packages: libopenal-dev libegl1-mesa-dev - LDLIBS = -lraylib -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo - endif - ifeq ($(PLATFORM_OS),BSD) - # Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling - # NOTE: Required packages: mesa-libs - LDLIBS = -lraylib -lGL -lpthread -lm - - # On XWindow requires also below libraries - LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - endif - ifeq ($(USE_EXTERNAL_GLFW),TRUE) - # NOTE: It could require additional packages installed: libglfw3-dev - LDLIBS += -lglfw - endif -endif -ifeq ($(PLATFORM),PLATFORM_RPI) - # Libraries for Raspberry Pi compiling - # NOTE: Required packages: libasound2-dev (ALSA) - LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -ldrm -lgbm -ldl -endif -ifeq ($(PLATFORM),PLATFORM_WEB) - # Libraries for web (HTML5) compiling - LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.bc -endif - -# Define all source files required -EXAMPLES = \ - controls_test_suite/controls_test_suite \ - custom_file_dialog/custom_file_dialog \ - custom_input_box/custom_input_box\ - image_exporter/image_exporter \ - image_importer_raw/image_importer_raw \ - property_list/property_list \ - portable_window/portable_window \ - scroll_panel/scroll_panel \ - style_selector/style_selector \ - custom_sliders/custom_sliders \ - animation_curve/animation_curve \ - floating_window/floating_window \ - -CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) - -# Default target entry -all: $(EXAMPLES) - -# Generic compilation pattern -# NOTE: Examples must be ready for Android compilation! -%: %.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -# Clean everything -clean: -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - del *.o *.exe /s - endif - ifeq ($(PLATFORM_OS),LINUX) - rm -f $(EXAMPLES) - endif - ifeq ($(PLATFORM_OS),OSX) - find . -type f -perm +ugo+x -delete - rm -f *.o - endif - ifeq ($(shell uname),OpenBSD) - find . -type f -perm 0755 -delete - rm -f *.o - endif -endif -ifeq ($(PLATFORM),PLATFORM_RPI) - find . -type f -executable -delete - rm -fv *.o -endif -ifeq ($(PLATFORM),PLATFORM_WEB) - del *.o *.html *.js -endif - @echo Cleaning done diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/animation_curve/animation_curve.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/animation_curve/animation_curve.c deleted file mode 100644 index 2f9b2f0..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/animation_curve/animation_curve.c +++ /dev/null @@ -1,477 +0,0 @@ -/******************************************************************************************* -* -* Animation curves - An example demo for animation curves -* -* DEPENDENCIES: -* raylib 4.0 - Windowing/input management and drawing. -* raygui 3.0 - Immediate-mode GUI controls. -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2023 Pierre Jaffuer (@smallcluster) -* -**********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT 24 -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - -// raygui embedded styles -#include "../styles/style_cyber.h" // raygui style: cyber -#include "../styles/style_jungle.h" // raygui style: jungle -#include "../styles/style_lavanda.h" // raygui style: lavanda -#include "../styles/style_dark.h" // raygui style: dark -#include "../styles/style_bluish.h" // raygui style: bluish -#include "../styles/style_terminal.h" // raygui style: terminal - -#undef RAYGUI_IMPLEMENTATION // Avoid including raygui implementation again - -#define GUI_CURVE_EDITOR_IMPLEMENTATION -#include "gui_curve_editor.h" - -//------------------------------------------------------------------------------------ -// Helper function -//------------------------------------------------------------------------------------ -void LoadCurveDefaults(GuiCurveEditorState curves[]); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // Initialization - //--------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 540; - - InitWindow(screenWidth, screenHeight, "raygui - animation curves"); - SetTargetFPS(60); - - // Gui style - GuiLoadStyleDefault(); - int visualStyleActive = 0; - int prevVisualStyleActive = 0; - - float fontSize = GuiGetStyle(DEFAULT, TEXT_SIZE); - const float margin = 8; - - // Gui states - Vector2 scrollOffset = (Vector2){ 0, 0 }; - Rectangle contentRect = (Rectangle){ 0, 0, 0, 0 }; - bool moveSlider = false; - bool sectionActive[5] = { 0 }; - sectionActive[0] = true; - const char *sectionNames[5] = { "X Position", "Y Position", "Width", "Height", "Rotation" }; - bool editValueBox[5][4] = { 0 }; - char *valTextBox[5][4][20] = { 0 }; - bool playAnimation = true; - bool showHelp = true; - - Rectangle settingsRect = (Rectangle){ screenWidth - screenWidth/3, 0, screenWidth/3, screenHeight }; - - // Animation curves - // 0 -> Ball X position - // 1 -> Ball Y position - // 2 -> Ball Width - // 3 -> Ball Height - // 4 -> Ball rotation - GuiCurveEditorState curves[5] = { 0 }; - LoadCurveDefaults(curves); - - // Animation time - float time = 0.0f; - float animationTime = 4.0f; - - //SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (playAnimation) time += GetFrameTime(); - - // Reset timer - if (time > animationTime) time = 0; - - // Ball animation - const float t = time/animationTime; - Vector2 ballPos = (Vector2){ GuiCurveEval(&curves[0], t), GuiCurveEval(&curves[1], t) }; - Vector2 ballSize = (Vector2){ GuiCurveEval(&curves[2], t), GuiCurveEval(&curves[3], t) }; - float ballRotation = GuiCurveEval(&curves[4], t); - - // Update style - if (visualStyleActive != prevVisualStyleActive) - { - switch (visualStyleActive) - { - case 0: GuiLoadStyleDefault(); break; - case 1: GuiLoadStyleJungle(); break; - case 2: GuiLoadStyleLavanda(); break; - case 3: GuiLoadStyleDark(); break; - case 4: GuiLoadStyleBluish(); break; - case 5: GuiLoadStyleCyber(); break; - case 6: GuiLoadStyleTerminal(); break; - default: break; - } - - fontSize = GuiGetStyle(DEFAULT, TEXT_SIZE); - prevVisualStyleActive = visualStyleActive; - } - - // Update settings panel rect - Rectangle sliderRect = (Rectangle){ settingsRect.x - 4, settingsRect.y, 4, settingsRect.height }; - if (CheckCollisionPointRec(GetMousePosition(), sliderRect) && IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) moveSlider = true; - if (IsMouseButtonUp(MOUSE_BUTTON_LEFT)) moveSlider = false; - - if (moveSlider) - { - settingsRect.x = GetMouseX(); - - // Minimum-Maximum size - if (settingsRect.x > (screenWidth - 4)) settingsRect.x = screenWidth - 4; - else if (settingsRect.x < 4) settingsRect.x = 4; - - settingsRect.width = screenWidth - settingsRect.x; - } - - - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - ClearBackground(GetColor( GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); - - // Scene - //---------------------------------------------------------------------------------- - DrawRectangle(curves[0].start, curves[1].end, curves[0].end-curves[0].start, curves[1].start-curves[1].end, BLUE); // Sky - - DrawRectangle(curves[0].start, curves[1].start, curves[0].end-curves[0].start, 32, DARKGREEN); // Ground - - BeginScissorMode(curves[0].start, curves[1].end, curves[0].end-curves[0].start, curves[1].start-curves[1].end+32); - - DrawRectanglePro((Rectangle){ballPos.x, ballPos.y, ballSize.x, ballSize.y}, (Vector2){ballSize.x/2.f,ballSize.y/2.f}, ballRotation, PINK); // Ball - - DrawLine(ballPos.x, ballPos.y, ballPos.x + cosf(ballRotation*DEG2RAD)*ballSize.x, ballPos.y +sinf(ballRotation*DEG2RAD)*ballSize.y, RED); - DrawLine(ballPos.x, ballPos.y, ballPos.x + cosf((ballRotation+90)*DEG2RAD)*ballSize.x, ballPos.y +sinf((ballRotation+90)*DEG2RAD)*ballSize.y, GREEN); - - EndScissorMode(); - - // Bounds - DrawRectangleLines(curves[0].start, curves[1].end, curves[0].end-curves[0].start, curves[1].start-curves[1].end+32, GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_NORMAL))); - //---------------------------------------------------------------------------------- - - // GUI - //---------------------------------------------------------------------------------- - if (showHelp) - { - if (GuiWindowBox((Rectangle) {margin, margin, settingsRect.x-2*margin, curves[1].end-2*margin}, "help")) showHelp = false; - - Rectangle helpTextRect = (Rectangle) { 2*margin, 2*margin+RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, settingsRect.x - 4 - 4*margin, 0 }; - GuiLabel((Rectangle) {helpTextRect.x, helpTextRect.y+helpTextRect.height, helpTextRect.width, fontSize}, "Curve widget controls:"); - helpTextRect.height += fontSize+margin; - GuiLabel((Rectangle) {helpTextRect.x, helpTextRect.y+helpTextRect.height, helpTextRect.width, fontSize}, "- Left click to move/add point or move tangents"); - helpTextRect.height += fontSize+margin/2; - GuiLabel((Rectangle) {helpTextRect.x, helpTextRect.y+helpTextRect.height, helpTextRect.width, fontSize}, "- While moving a tangent, hold SHIFT to disable tangent symetry"); - helpTextRect.height += fontSize+margin/2; - GuiLabel((Rectangle) {helpTextRect.x, helpTextRect.y+helpTextRect.height, helpTextRect.width, fontSize}, "- Right click to remove a point"); - helpTextRect.height += fontSize+margin/2; - DrawRectangleGradientV(margin, margin+curves[1].end - 2*margin, settingsRect.x - 2*margin, 12, (Color){ 0,0,0,100 }, BLANK); - } - - // Settings panel - GuiScrollPanel(settingsRect, "Settings", contentRect, &scrollOffset, NULL); - - BeginScissorMode(settingsRect.x, settingsRect.y+RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, settingsRect.width, settingsRect.height); - - // Rebuild the content Rect - contentRect = (Rectangle){ settingsRect.x + margin, RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT+margin, settingsRect.width - 2*margin - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), 0 }; - - // Help button - if (GuiButton((Rectangle){ contentRect.x, contentRect.y + contentRect.height + scrollOffset.y, contentRect.width, 1.5*fontSize }, GuiIconText(showHelp? ICON_EYE_ON : ICON_EYE_OFF, "Curve controls help"))) showHelp = !showHelp; - - contentRect.height += 1.5*fontSize + margin; - - // Animation Time slider - GuiSlider((Rectangle){ contentRect.x, contentRect.y+contentRect.height+scrollOffset.y, contentRect.width/2, fontSize }, NULL, TextFormat("Animation Time: %.2fs", animationTime), &animationTime, 1, 8); - contentRect.height += fontSize + margin; - - // Load default curves - if (GuiButton((Rectangle){ contentRect.x, contentRect.y+contentRect.height+scrollOffset.y, contentRect.width, 1.5*fontSize }, "Load default")) - { - LoadCurveDefaults(curves); - animationTime = 4.0f; - time = 0.0f; - } - contentRect.height += 1.5f*fontSize + margin; - - // Styles - GuiLabel((Rectangle){ contentRect.x, contentRect.y + contentRect.height + scrollOffset.y, contentRect.width, fontSize }, "Style:"); - contentRect.height += fontSize; - GuiComboBox((Rectangle){contentRect.x, contentRect.y+contentRect.height+scrollOffset.y, contentRect.width, 1.5*fontSize }, "default;Jungle;Lavanda;Dark;Bluish;Cyber;Terminal", &visualStyleActive); - contentRect.height += 1.5f*fontSize + margin; - - // Draw curves with their controls - //---------------------------------------------------------------------------------- - for (int i = 0; i < 5; i++) - { - // Collapsing section - Rectangle headerRect = (Rectangle){ contentRect.x, contentRect.y + contentRect.height+scrollOffset.y, contentRect.width, 1.5f*fontSize }; - GuiStatusBar(headerRect, NULL); - - if (GuiLabelButton(headerRect, GuiIconText(sectionActive[i] ? ICON_ARROW_DOWN_FILL : ICON_ARROW_RIGHT_FILL, sectionNames[i]))) sectionActive[i] = !sectionActive[i]; - - contentRect.height += 1.5f*fontSize + margin; - - // Skip this section - if (!sectionActive[i]) continue; - - // Draw curve control - Rectangle curveRect = (Rectangle){ contentRect.x, contentRect.y+contentRect.height + scrollOffset.y, contentRect.width, fontSize*12 }; - EndScissorMode(); // Stop clipping from setting rect - - // Curves can leaks from control boundary... scissor it ! - BeginScissorMode(curveRect.x, curveRect.y, curveRect.width, curveRect.height); - GuiCurveEditor(&curves[i], curveRect); - EndScissorMode(); - - // Resume clipping from setting rect - BeginScissorMode(settingsRect.x, settingsRect.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, settingsRect.width, settingsRect.height); - contentRect.height += fontSize*12 + margin; - - // Draw selected point controls - GuiCurveEditorPoint *p = &(curves[i].points[curves[i].selectedIndex]); - GuiCheckBox((Rectangle){ contentRect.x, contentRect.y + contentRect.height + scrollOffset.y, 1.5f*fontSize, 1.5f*fontSize }, "Left Linear", &p->leftLinear); - GuiCheckBox((Rectangle){ contentRect.x+contentRect.width/2, contentRect.y + contentRect.height + scrollOffset.y, 1.5f*fontSize, 1.5f*fontSize }, "Right Linear", &p->rightLinear); - contentRect.height += 1.5f*fontSize + margin; - - // Positions - GuiLabel((Rectangle){ contentRect.x, contentRect.y + contentRect.height + scrollOffset.y, contentRect.width, fontSize }, "Position"); - contentRect.height += fontSize; - - if (!editValueBox[i][0]) gcvt(p->position.x, 6, (char *)valTextBox[i][0]); // Transform x position to string - - if (!editValueBox[i][1]) gcvt(curves[i].start + (curves[i].end-curves[i].start)*p->position.y, 6, (char *)valTextBox[i][1]); // Transform y position to string - - // X pos - if (GuiTextBox((Rectangle){ contentRect.x, contentRect.y + contentRect.height + scrollOffset.y, contentRect.width/2-margin, 1.5f*fontSize }, (char *)valTextBox[i][0], 20, editValueBox[i][0])) - { - editValueBox[i][0] = !editValueBox[i][0]; - - // Input ended - if (!editValueBox[i][0]) - { - // Try to convert text to float and assign it to the point - char *endPtr = NULL; - double value = strtod((char *)valTextBox[i][0], &endPtr); - - if (endPtr != (char *)valTextBox[i][0]) p->position.x = (value < 0)? 0 : (value > 1)? 1 : value; - } - } - - // Y pos - if (GuiTextBox((Rectangle){ contentRect.x + contentRect.width/2, contentRect.y + contentRect.height + scrollOffset.y, contentRect.width/2.0f, 1.5f*fontSize }, (char *)valTextBox[i][1], 20, editValueBox[i][1])) - { - editValueBox[i][1] = !editValueBox[i][1]; - - // Input ended - if (!editValueBox[i][1]) - { - // Try to convert text to float and assign it to the point - char *endPtr = NULL; - double value = strtod((char *)valTextBox[i][1], &endPtr); - - if (endPtr != (char *)valTextBox[i][1]) - { - float normalizedVal = (value - curves[i].start)/(curves[i].end - curves[i].start); - p->position.y = (normalizedVal < 0)? 0 : (normalizedVal > 1)? 1 : normalizedVal; - } - } - - } - - contentRect.height += 1.5f*fontSize + margin; - - // Tangents - GuiLabel((Rectangle){ contentRect.x, contentRect.y + contentRect.height + scrollOffset.y, contentRect.width, fontSize }, "Tangents"); - contentRect.height += fontSize; - - if (!editValueBox[i][2]) gcvt(p->tangents.x, 6, (char *)valTextBox[i][2]); // Transform left tangent to string - - if (!editValueBox[i][3]) gcvt(p->tangents.y, 6, (char *)valTextBox[i][3]); // Transform right tangent to string - - // Left tan - if (GuiTextBox((Rectangle){ contentRect.x, contentRect.y + contentRect.height + scrollOffset.y, contentRect.width/2 - margin, 1.5f*fontSize }, (char *)valTextBox[i][2], 20, editValueBox[i][2])) - { - editValueBox[i][2] = !editValueBox[i][2]; - - // Input ended - if (!editValueBox[i][2]) - { - // Try to convert text to float and assign it to the point - char *endPtr = NULL; - double value = strtod((char *)valTextBox[i][2], &endPtr); - if (endPtr != (char *)valTextBox[i][2]) p->tangents.x = value; - } - } - - // Right tan - if (GuiTextBox((Rectangle){ contentRect.x + contentRect.width/2.0f, contentRect.y + contentRect.height + scrollOffset.y, contentRect.width/2.0f, 1.5f*fontSize }, (char *)valTextBox[i][3], 20, editValueBox[i][3])) - { - editValueBox[i][3] = !editValueBox[i][3]; - - // Input ended - if (!editValueBox[i][3]) - { - // Try to convert text to float and assign it to the point - char *endPtr = NULL; - double value = strtod((char *)valTextBox[i][3], &endPtr); - if (endPtr != (char *)valTextBox[i][3]) p->tangents.y = value; - } - } - - contentRect.height += 1.5*fontSize + margin; - } - - contentRect.height += margin; - - EndScissorMode(); - - // Settings panel shadow - DrawRectangleGradientH(settingsRect.x - 12, 0, 12, settingsRect.height, BLANK, (Color){ 0, 0, 0, 100 }); - - // Slider - if (moveSlider) DrawRectangle(sliderRect.x, sliderRect.y, sliderRect.width, sliderRect.height, GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_PRESSED))); - else if(CheckCollisionPointRec(GetMousePosition(), sliderRect)) DrawRectangle(sliderRect.x, sliderRect.y, sliderRect.width, sliderRect.height, GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_FOCUSED))); - - // Draw Time controls - //---------------------------------------------------------------------------------- - Rectangle timeLineRect = (Rectangle){ 0, screenHeight-4*fontSize, settingsRect.x, 4*fontSize }; - GuiPanel((Rectangle){ timeLineRect.x, timeLineRect.y, timeLineRect.width, 2*fontSize }, NULL); - GuiLabel((Rectangle){ timeLineRect.x, timeLineRect.y, timeLineRect.width, 2*fontSize }, TextFormat("Normalized Time: %.3f", time/animationTime)); - if (GuiButton((Rectangle){ timeLineRect.x+timeLineRect.width/2 - 2*fontSize - margin/4, timeLineRect.y, 2*fontSize, 2*fontSize }, GuiIconText((playAnimation? ICON_PLAYER_PAUSE : ICON_PLAYER_PLAY), ""))) playAnimation = !playAnimation; - - if (GuiButton((Rectangle){ timeLineRect.x+timeLineRect.width/2 + margin/4, timeLineRect.y, 2*fontSize, 2*fontSize }, GuiIconText(ICON_PLAYER_STOP, ""))) - { - playAnimation = false; - time = 0; - } - - float animTime = time/animationTime; - GuiSlider((Rectangle){timeLineRect.x, timeLineRect.y + 2*fontSize, timeLineRect.width, timeLineRect.height - 2*fontSize }, NULL, NULL, &animTime, 0, 1); - time = animationTime*animTime; - - // Time panel shadow - DrawRectangleGradientV(timeLineRect.x, timeLineRect.y - 12, timeLineRect.width, 12, BLANK, (Color){ 0, 0, 0, 100 }); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -void LoadCurveDefaults(GuiCurveEditorState curves[]) -{ - // X pos - curves[0].start = 28; - curves[0].end = 506; - curves[0].numPoints = 4; - curves[0].selectedIndex = 0; - curves[0].editLeftTangent = false; - curves[0].editRightTangent = false; - curves[0].points[0].position =(Vector2) {0.000000, 0.000000}; curves[0].points[0].tangents = (Vector2) {0.000000, 1.515101}; curves[0].points[0].leftLinear = 1;curves[0].points[0].rightLinear = 1; - curves[0].points[1].position =(Vector2) {0.422414, 0.640000}; curves[0].points[1].tangents = (Vector2) {-2.824348, -4.494999};curves[0].points[1].leftLinear = 0;curves[0].points[1].rightLinear = 0; - curves[0].points[2].position =(Vector2) {0.732759, 0.210000}; curves[0].points[2].tangents = (Vector2) {0.000000, 2.956133}; curves[0].points[2].leftLinear = 0;curves[0].points[2].rightLinear = 1; - curves[0].points[3].position =(Vector2) {1.000000, 1.000000}; curves[0].points[3].tangents = (Vector2) {2.956133, 0.000000}; curves[0].points[3].leftLinear = 1;curves[0].points[3].rightLinear = 1; - - // Y pos - curves[1].start = 405; - curves[1].end = 135; - curves[1].numPoints = 7; - curves[1].selectedIndex = 0; - curves[1].editLeftTangent = false; - curves[1].editRightTangent = false; - curves[1].points[0].position = (Vector2) {0.000000, 1.000000};curves[1].points[0].tangents = (Vector2) { 0.000000 , 0.000000};curves[1].points[0].leftLinear = 0;curves[1].points[0].rightLinear = 0; - curves[1].points[1].position = (Vector2) {0.140000, 0.000000};curves[1].points[1].tangents = (Vector2) {-10.000000 ,10.000000};curves[1].points[1].leftLinear = 0;curves[1].points[1].rightLinear = 0; - curves[1].points[2].position = (Vector2) {0.450000, 0.000000};curves[1].points[2].tangents = (Vector2) {-10.000000 ,10.000000};curves[1].points[2].leftLinear = 0;curves[1].points[2].rightLinear = 0; - curves[1].points[3].position = (Vector2) {0.670000, 0.000000};curves[1].points[3].tangents = (Vector2) {-10.000000 ,10.000000};curves[1].points[3].leftLinear = 0;curves[1].points[3].rightLinear = 0; - curves[1].points[4].position = (Vector2) {0.830000, 0.000000};curves[1].points[4].tangents = (Vector2) {-10.000000 ,10.000000};curves[1].points[4].leftLinear = 0;curves[1].points[4].rightLinear = 0; - curves[1].points[5].position = (Vector2) {0.940000, 0.000000};curves[1].points[5].tangents = (Vector2) {-10.000000 ,10.000000};curves[1].points[5].leftLinear = 0;curves[1].points[5].rightLinear = 0; - curves[1].points[6].position = (Vector2) {1.000000, 0.000000};curves[1].points[6].tangents = (Vector2) {-10.000000 , 0.000000};curves[1].points[6].leftLinear = 0;curves[1].points[6].rightLinear = 0; - - // X size - curves[2].start = 1; - curves[2].end = 64; - curves[2].numPoints = 16; - curves[2].selectedIndex = 0; - curves[2].editLeftTangent = false; - curves[2].editRightTangent = false; - curves[2].points[0].position = (Vector2) {0.000000, 0.492063}; curves[2].points[0].tangents = (Vector2) {0,0}; curves[2].points[0].leftLinear = 0; curves[2].points[0].rightLinear = 0; - curves[2].points[1].position = (Vector2) {0.130000, 0.492063}; curves[2].points[1].tangents = (Vector2) {0,0}; curves[2].points[1].leftLinear = 0; curves[2].points[1].rightLinear = 0; - curves[2].points[2].position = (Vector2) {0.140000, 0.746032}; curves[2].points[2].tangents = (Vector2) {0,0}; curves[2].points[2].leftLinear = 0; curves[2].points[2].rightLinear = 0; - curves[2].points[3].position = (Vector2) {0.150000, 0.492063}; curves[2].points[3].tangents = (Vector2) {0,0}; curves[2].points[3].leftLinear = 0; curves[2].points[3].rightLinear = 0; - curves[2].points[4].position = (Vector2) {0.440000, 0.490000}; curves[2].points[4].tangents = (Vector2) {0,0}; curves[2].points[4].leftLinear = 0; curves[2].points[4].rightLinear = 0; - curves[2].points[5].position = (Vector2) {0.450000, 0.682540}; curves[2].points[5].tangents = (Vector2) {0,0}; curves[2].points[5].leftLinear = 0; curves[2].points[5].rightLinear = 0; - curves[2].points[6].position = (Vector2) {0.460000, 0.480000}; curves[2].points[6].tangents = (Vector2) {0,0}; curves[2].points[6].leftLinear = 0; curves[2].points[6].rightLinear = 0; - curves[2].points[7].position = (Vector2) {0.660000, 0.492063}; curves[2].points[7].tangents = (Vector2) {0,0}; curves[2].points[7].leftLinear = 0; curves[2].points[7].rightLinear = 0; - curves[2].points[8].position = (Vector2) {0.670000, 0.619048}; curves[2].points[8].tangents = (Vector2) {0,0}; curves[2].points[8].leftLinear = 0; curves[2].points[8].rightLinear = 0; - curves[2].points[9].position = (Vector2) {0.680000, 0.492063}; curves[2].points[9].tangents = (Vector2) {0,0}; curves[2].points[9].leftLinear = 0; curves[2].points[9].rightLinear = 0; - curves[2].points[10].position = (Vector2) {0.820000, 0.492063}; curves[2].points[10].tangents = (Vector2) {0,0}; curves[2].points[10].leftLinear = 0; curves[2].points[10].rightLinear = 0; - curves[2].points[11].position = (Vector2) {0.830000, 0.619048}; curves[2].points[11].tangents = (Vector2) {0,0}; curves[2].points[11].leftLinear = 0; curves[2].points[11].rightLinear = 0; - curves[2].points[12].position = (Vector2) {0.840000, 0.492063}; curves[2].points[12].tangents = (Vector2) {0,0}; curves[2].points[12].leftLinear = 0; curves[2].points[12].rightLinear = 0; - curves[2].points[13].position = (Vector2) {0.930000, 0.492063}; curves[2].points[13].tangents = (Vector2) {0,0}; curves[2].points[13].leftLinear = 0; curves[2].points[13].rightLinear = 0; - curves[2].points[14].position = (Vector2) {0.940000, 0.619048}; curves[2].points[14].tangents = (Vector2) {0,0}; curves[2].points[14].leftLinear = 0; curves[2].points[14].rightLinear = 0; - curves[2].points[15].position = (Vector2) {0.950000, 0.492063}; curves[2].points[15].tangents = (Vector2) {0,0}; curves[2].points[15].leftLinear = 0; curves[2].points[15].rightLinear = 0; - - // Y Size - curves[3].start = 1; - curves[3].end = 64; - curves[3].numPoints = 16; - curves[3].selectedIndex = 0; - curves[3].editLeftTangent = false; - curves[3].editRightTangent = false; - curves[3].points[0].position = (Vector2) {0.000000, 0.492063};curves[3].points[0].tangents = (Vector2) {0,0};curves[3].points[0].leftLinear = 0;curves[3].points[0].rightLinear = 0; - curves[3].points[1].position = (Vector2) {0.130000, 0.492063};curves[3].points[1].tangents = (Vector2) {0,0};curves[3].points[1].leftLinear = 0;curves[3].points[1].rightLinear = 0; - curves[3].points[2].position = (Vector2) {0.140000, 0.238095};curves[3].points[2].tangents = (Vector2) {0,0};curves[3].points[2].leftLinear = 0;curves[3].points[2].rightLinear = 0; - curves[3].points[3].position = (Vector2) {0.150000, 0.492063};curves[3].points[3].tangents = (Vector2) {0,0};curves[3].points[3].leftLinear = 0;curves[3].points[3].rightLinear = 0; - curves[3].points[4].position = (Vector2) {0.440000, 0.492063};curves[3].points[4].tangents = (Vector2) {0,0};curves[3].points[4].leftLinear = 0;curves[3].points[4].rightLinear = 0; - curves[3].points[5].position = (Vector2) {0.450000, 0.301587};curves[3].points[5].tangents = (Vector2) {0,0};curves[3].points[5].leftLinear = 0;curves[3].points[5].rightLinear = 0; - curves[3].points[6].position = (Vector2) {0.460000, 0.492063};curves[3].points[6].tangents = (Vector2) {0,0};curves[3].points[6].leftLinear = 0;curves[3].points[6].rightLinear = 0; - curves[3].points[7].position = (Vector2) {0.660000, 0.492063};curves[3].points[7].tangents = (Vector2) {0,0};curves[3].points[7].leftLinear = 0;curves[3].points[7].rightLinear = 0; - curves[3].points[8].position = (Vector2) {0.670000, 0.365079};curves[3].points[8].tangents = (Vector2) {0,0};curves[3].points[8].leftLinear = 0;curves[3].points[8].rightLinear = 0; - curves[3].points[9].position = (Vector2) {0.680000, 0.492063};curves[3].points[9].tangents = (Vector2) {0,0};curves[3].points[9].leftLinear = 0;curves[3].points[9].rightLinear = 0; - curves[3].points[10].position = (Vector2) {0.820000, 0.492063};curves[3].points[10].tangents = (Vector2) {0,0};curves[3].points[10].leftLinear = 0;curves[3].points[10].rightLinear = 0; - curves[3].points[11].position = (Vector2) {0.830000, 0.365079};curves[3].points[11].tangents = (Vector2) {0,0};curves[3].points[11].leftLinear = 0;curves[3].points[11].rightLinear = 0; - curves[3].points[12].position = (Vector2) {0.840000, 0.492063};curves[3].points[12].tangents = (Vector2) {0,0};curves[3].points[12].leftLinear = 0;curves[3].points[12].rightLinear = 0; - curves[3].points[13].position = (Vector2) {0.930000, 0.492063};curves[3].points[13].tangents = (Vector2) {0,0};curves[3].points[13].leftLinear = 0;curves[3].points[13].rightLinear = 0; - curves[3].points[14].position = (Vector2) {0.940000, 0.365079};curves[3].points[14].tangents = (Vector2) {0,0};curves[3].points[14].leftLinear = 0;curves[3].points[14].rightLinear = 0; - curves[3].points[15].position = (Vector2) {0.950000, 0.507937};curves[3].points[15].tangents = (Vector2) {0,0};curves[3].points[15].leftLinear = 0;curves[3].points[15].rightLinear = 0; - - // Rotation - curves[4].start = -360; - curves[4].end = 360; - curves[4].numPoints = 9; - curves[4].selectedIndex = 0; - curves[4].editLeftTangent = false; - curves[4].editRightTangent = false; - curves[4].points[0].position = (Vector2) {0.140000, 0.500000};curves[4].points[0].tangents = (Vector2) {0,0};curves[4].points[0].leftLinear = 0;curves[4].points[0].rightLinear = 0; - curves[4].points[1].position = (Vector2) {0.450000, 0.500000};curves[4].points[1].tangents = (Vector2) {0,0};curves[4].points[1].leftLinear = 0;curves[4].points[1].rightLinear = 0; - curves[4].points[2].position = (Vector2) {0.670000, 0.500000};curves[4].points[2].tangents = (Vector2) {0,0};curves[4].points[2].leftLinear = 0;curves[4].points[2].rightLinear = 0; - curves[4].points[3].position = (Vector2) {0.830000, 0.500000};curves[4].points[3].tangents = (Vector2) {0,0};curves[4].points[3].leftLinear = 0;curves[4].points[3].rightLinear = 0; - curves[4].points[4].position = (Vector2) {0.940000, 0.500000};curves[4].points[4].tangents = (Vector2) {0,0};curves[4].points[4].leftLinear = 0;curves[4].points[4].rightLinear = 0; - curves[4].points[5].position = (Vector2) {1.000000, 0.500000};curves[4].points[5].tangents = (Vector2) {0,0};curves[4].points[5].leftLinear = 0;curves[4].points[5].rightLinear = 0; - curves[4].points[6].position = (Vector2) {0.000000, 0.472222};curves[4].points[6].tangents = (Vector2) {0,0};curves[4].points[6].leftLinear = 0;curves[4].points[6].rightLinear = 0; - curves[4].points[7].position = (Vector2) {0.302752, 0.527778};curves[4].points[7].tangents = (Vector2) {0,0};curves[4].points[7].leftLinear = 0;curves[4].points[7].rightLinear = 0; - curves[4].points[8].position = (Vector2) {0.577982, 0.472222};curves[4].points[8].tangents = (Vector2) {0,0};curves[4].points[8].leftLinear = 0;curves[4].points[8].rightLinear = 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/animation_curve/gui_curve_editor.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/animation_curve/gui_curve_editor.h deleted file mode 100644 index 8cf9c0c..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/animation_curve/gui_curve_editor.h +++ /dev/null @@ -1,543 +0,0 @@ -/******************************************************************************************* -* -* CurveEdit v1.0 - A cubic Hermite editor for making animation curves -* -* MODULE USAGE: -* #define GUI_CURVE_EDITOR_IMPLEMENTATION -* #include "gui_curve_edit.h" -* -* INIT: GuiCurveEditState state = InitCurveEdit(); -* EVALUATE: float y = EvalGuiCurve(&state, t); // 0 <= t <= 1 -* DRAW: BeginScissorMode(bounds.x,bounds.y,bounds.width,bounds.height); -* GuiCurveEdit(&state, bounds, pointSize); -* EndScissorMode(); -* -* NOTE: See 'Module Structures Declaration' section for more informations. -* -* NOTE: This module uses functions of the stdlib: -* - qsort -* -* NOTE: Built-in interactions: -* - Left click to move/add point or move tangents -* - While moving a tangent, hold (left/right) SHIFT to disable tangent symetry -* - Right click to remove a point -* -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2023 Pierre Jaffuer (@smallcluster) -* -* 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. -* -**********************************************************************************************/ - -#include "raylib.h" - -#ifndef GUI_CURVE_EDITOR_H -#define GUI_CURVE_EDITOR_H - - -#ifndef GUI_CURVE_EDITOR_MAX_POINTS - #define GUI_CURVE_EDITOR_MAX_POINTS 30 -#endif - -//---------------------------------------------------------------------------------- -// Module Structures Declaration -//---------------------------------------------------------------------------------- - -typedef struct { - Vector2 position; // In normalized space [0.0f, 1.0f] - Vector2 tangents; // The derivatives (left/right) of the 1D curve - - // Let the curve editor calculate tangents to linearize part of the curve - bool leftLinear; - bool rightLinear; -} GuiCurveEditorPoint; - -typedef struct { - float start; // Value at y = 0 - float end; // Value at y = 1 - - // Always valid (unless you manualy change state's point array). Make sure to set it to -1 before init - int selectedIndex; - - // Unsorted array with at least one point (constant curve) - GuiCurveEditorPoint points[GUI_CURVE_EDITOR_MAX_POINTS]; - int numPoints; - - // Private variables - bool editLeftTangent; - bool editRightTangent; - Vector2 mouseOffset; -} GuiCurveEditorState; - - -#ifdef __cplusplus -extern "C" { // Prevents name mangling of functions -#endif - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -GuiCurveEditorState InitGuiCurveEditor(); // Initialize curve editor state -void GuiCurveEditor(GuiCurveEditorState *state, Rectangle bounds); // Draw and update curve control - -// 1D Interpolation -// Returns the y value (in [start, end]) of the curve at x = t -// t must be normalized [0.f, 1.f] -float GuiCurveEval(GuiCurveEditorState *state, float t); - -#ifdef __cplusplus -} -#endif - -#endif // GUI_CURVE_EDITOR_H - -/*********************************************************************************** -* -* GUI_CURVE_EDITOR IMPLEMENTATION -* -************************************************************************************/ -#if defined(GUI_CURVE_EDITOR_IMPLEMENTATION) - -#include "../../src/raygui.h" // Change this to fit your project - -#include "stdlib.h" // Required for qsort - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -GuiCurveEditorState InitGuiCurveEditor() -{ - GuiCurveEditorState state = { 0 }; - - state.start = 0; - state.end = 1; - state.selectedIndex = 0; - state.editLeftTangent = false; - state.editRightTangent = false; - state.mouseOffset = (Vector2){ 0.0f, 0.0f }; - - // At least one point (AVG by default) - state.numPoints = 1; - state.points[0].position = (Vector2){ 0.5f, 0.5f }; - state.points[0].tangents = (Vector2){ 0.0f, 0.0f }; - state.points[0].leftLinear = false; - state.points[0].rightLinear = false; - - return state; -} - -static int CompareGuiCurveEditPointPtr(const void *a, const void *b) -{ - float fa = (*(GuiCurveEditorPoint**)a)->position.x; - float fb = (*(GuiCurveEditorPoint**)b)->position.x; - - return ((fa > fb) - (fa < fb)); -} - -float GuiCurveEval(GuiCurveEditorState *state, float t) -{ - // Sort points - GuiCurveEditorPoint* sortedPoints[GUI_CURVE_EDITOR_MAX_POINTS]; - - for (int i=0; i < state->numPoints; i++) sortedPoints[i] = &state->points[i]; - - qsort(sortedPoints, state->numPoints, sizeof(GuiCurveEditorPoint*), CompareGuiCurveEditPointPtr); - - if (state->numPoints == 0) return state->start; - - // Constants part on edges - if (t <= sortedPoints[0]->position.x) return state->start + (state->end-state->start)*sortedPoints[0]->position.y; - if (t >= sortedPoints[state->numPoints-1]->position.x) return state->start + (state->end-state->start)*sortedPoints[state->numPoints-1]->position.y; - - // Find curve portion - for (int i=0; i < state->numPoints-1; i++) - { - const GuiCurveEditorPoint *p1 = sortedPoints[i]; - const GuiCurveEditorPoint *p2 = sortedPoints[i+1]; - - // Skip this range - if (!((t >= p1->position.x) && (t < p2->position.x)) || (p1->position.x == p2->position.x)) continue; - - float scale = (p2->position.x-p1->position.x); - float T = (t-p1->position.x)/scale; - float startTangent = scale*p1->tangents.y; - float endTangent = scale*p2->tangents.x; - float T2 = T*T; - float T3 = T*T*T; - - return (state->start + (state->end-state->start)*((2*T3 - 3*T2 + 1)*p1->position.y + (T3 - 2*T2 + T)*startTangent + (3*T2 - 2*T3)*p2->position.y + (T3 - T2)*endTangent)); - } - - return state->start; -} - -void GuiCurveEditor(GuiCurveEditorState *state, Rectangle bounds) -{ - // CONST - //---------------------------------------------------------------------------------- - const float pointSize = 10.0f; - const float fontSize = GuiGetStyle(DEFAULT, TEXT_SIZE); - const float handleLength = pointSize*2.5f; - const float handleSize = pointSize/1.5f; - - const Rectangle innerBounds = (Rectangle){ bounds.x + fontSize, bounds.y + fontSize, bounds.width - 2*fontSize, bounds.height - 2*fontSize }; - const Vector2 mouse = GetMousePosition(); - const Vector2 mouseLocal = (Vector2){ (mouse.x - innerBounds.x)/innerBounds.width, (innerBounds.y + innerBounds.height-mouse.y)/innerBounds.height}; - //---------------------------------------------------------------------------------- - - // UPDATE STATE - //---------------------------------------------------------------------------------- - // Find first point under mouse (-1 if not found) - int hoveredPointIndex = -1; - for (int i = 0; i < state->numPoints; i++) - { - const GuiCurveEditorPoint *p = &state->points[i]; - const Vector2 screenPos = (Vector2){ p->position.x*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height-p->position.y*innerBounds.height }; - const Rectangle pointRect = (Rectangle){ screenPos.x - pointSize/2.0f, screenPos.y - pointSize/2.0f, pointSize, pointSize }; - - if (CheckCollisionPointRec(mouse, pointRect)) - { - hoveredPointIndex = i; - break; - } - } - - // Unselect tangents - if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) - { - state->editLeftTangent = false; - state->editRightTangent = false; - } - - // Select a tangent if possible - if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && (state->selectedIndex != -1) && CheckCollisionPointRec(mouse, bounds)) - { - const GuiCurveEditorPoint* p = &state->points[state->selectedIndex]; - const Vector2 screenPos = (Vector2){ p->position.x*innerBounds.width+innerBounds.x, innerBounds.y+innerBounds.height-p->position.y*innerBounds.height }; - - // Left control - Vector2 target = (Vector2){ (p->position.x-1)*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - (p->position.y-p->tangents.x)*innerBounds.height }; - Vector2 dir = (Vector2){ target.x-screenPos.x, target.y-screenPos.y }; - float d = sqrt(dir.x*dir.x + dir.y*dir.y); - Vector2 control = (Vector2){ screenPos.x + dir.x/d*handleLength, screenPos.y + dir.y/d*handleLength }; - Rectangle controlRect = (Rectangle){ control.x - handleSize/2.0f, control.y - handleSize/2.0f, handleSize, handleSize }; - - // Edit left tangent - if (CheckCollisionPointRec(mouse, controlRect)) state->editLeftTangent = true; - - // Right control - target = (Vector2){ (p->position.x + 1)*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - (p->position.y + p->tangents.y)*innerBounds.height }; - dir = (Vector2){ target.x-screenPos.x, target.y-screenPos.y }; - d = sqrt(dir.x*dir.x + dir.y*dir.y); - control = (Vector2){ screenPos.x + dir.x/d*handleLength, screenPos.y + dir.y/d*handleLength }; - controlRect = (Rectangle){ control.x - handleSize/2.0f, control.y - handleSize/2.0f, handleSize, handleSize }; - - // Edit right tangent - if (CheckCollisionPointRec(mouse, controlRect)) state->editRightTangent = true; - } - - // Move tangents - if (IsMouseButtonDown(MOUSE_BUTTON_LEFT) && state->editRightTangent) - { - // editRightTangent == true implies selectedIndex != -1 - GuiCurveEditorPoint *p = &state->points[state->selectedIndex]; - const Vector2 dir = (Vector2){ mouseLocal.x - p->position.x, mouseLocal.y - p->position.y}; - - // Calculate right tangent slope - p->tangents.y = (dir.x < 0.001f)? dir.y/0.001f : dir.y/dir.x; - p->rightLinear = false; // Stop right linearization update - - // Tangents are symetric by default unless SHIFT is pressed - if (!(IsKeyDown(KEY_LEFT_SHIFT) || IsKeyDown(KEY_RIGHT_SHIFT))) - { - p->tangents.x = p->tangents.y; - p->leftLinear = false; // Stop left linearization update - } - - } - else if (IsMouseButtonDown(MOUSE_BUTTON_LEFT) && state->editLeftTangent) - { - // editLeftTangent == true implies selectedIndex != -1 - GuiCurveEditorPoint *p = &state->points[state->selectedIndex]; - const Vector2 dir = (Vector2){ mouseLocal.x - p->position.x, mouseLocal.y - p->position.y }; - - // Calculate left tangent slope - p->tangents.x = (dir.x > -0.001f)? dir.y/(-0.001f) : dir.y/dir.x; - p->leftLinear = false; // Stop left linearization update - - // Tangents are symetric by default unless SHIFT is pressed - if (!(IsKeyDown(KEY_LEFT_SHIFT) || IsKeyDown(KEY_RIGHT_SHIFT))) - { - p->tangents.y = p->tangents.x; - p->rightLinear = false; // Stop right linearization update - } - } - // Select a point - else if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && (hoveredPointIndex != -1) && CheckCollisionPointRec(mouse, bounds)) - { - state->selectedIndex = hoveredPointIndex; - const GuiCurveEditorPoint *p = &state->points[state->selectedIndex]; - state->mouseOffset = (Vector2){ p->position.x - mouseLocal.x, p->position.y - mouseLocal.y }; - } - // Remove a point (check against bounds) - else if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT) && (hoveredPointIndex != -1) && CheckCollisionPointRec(mouse, bounds) && (state->numPoints > 1)) - { - // Deselect everything - state->selectedIndex = 0; // select first point by default - state->editLeftTangent = false; - state->editRightTangent = false; - - // Remove point - state->numPoints -= 1; - for (int i = hoveredPointIndex; i < state->numPoints; i++) state->points[i] = state->points[i+1]; - } - // Add a point (check against innerBounds) - else if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && CheckCollisionPointRec(mouse, innerBounds) && (state->numPoints < GUI_CURVE_EDITOR_MAX_POINTS)) - { - state->editLeftTangent = false; - state->editRightTangent = false; - - // Create new point - GuiCurveEditorPoint p; - p.tangents = (Vector2){ 0.0f, 0.0f }; - p.position = mouseLocal; - p.leftLinear = false; - p.rightLinear = false; - - // Append point - state->points[state->numPoints] = p; - state->selectedIndex = state->numPoints; // select new point - state->numPoints += 1; - - // Point is add on mouse pos - state->mouseOffset = (Vector2){ 0, 0 }; - } - // Move selected point - else if ((state->selectedIndex != -1) && IsMouseButtonDown(MOUSE_BUTTON_LEFT) && CheckCollisionPointRec(mouse, bounds)) - { - GuiCurveEditorPoint *p = &state->points[state->selectedIndex]; - - // use mouse offset on click to prevent point teleporting to mouse - const Vector2 newLocalPos = (Vector2){ mouseLocal.x + state->mouseOffset.x, mouseLocal.y + state->mouseOffset.y }; - - // Clamp to innerbounds - p->position.x = (newLocalPos.x < 0)? 0 : ((newLocalPos.x > 1)? 1 : newLocalPos.x); - p->position.y = (newLocalPos.y < 0)? 0 : ((newLocalPos.y > 1)? 1 : newLocalPos.y); - } - - // Sort points - GuiCurveEditorPoint *sortedPoints[GUI_CURVE_EDITOR_MAX_POINTS] = { 0 }; - for (int i = 0; i < state->numPoints; i++) sortedPoints[i] = &state->points[i]; - qsort(sortedPoints, state->numPoints, sizeof(GuiCurveEditorPoint*), CompareGuiCurveEditPointPtr); - - // Update linear tangents - for (int i = 0; i < state->numPoints; i++) - { - GuiCurveEditorPoint *p = sortedPoints[i]; - - // Left tangent - if ((i > 0) && p->leftLinear) - { - const GuiCurveEditorPoint *p2 = sortedPoints[i - 1]; - Vector2 dir = (Vector2){ p2->position.x - p->position.x, p2->position.y - p->position.y }; - p->tangents.x = (dir.x == 0)? 0 : dir.y/dir.x; - } - - // Right tangent - if ((i < state->numPoints - 1) && p->rightLinear) - { - const GuiCurveEditorPoint *p2 = sortedPoints[i + 1]; - Vector2 dir = (Vector2){ p2->position.x - p->position.x, p2->position.y - p->position.y }; - p->tangents.y = (dir.x == 0)? 0 : dir.y/dir.x; - } - } - //---------------------------------------------------------------------------------- - - // DRAWING - //---------------------------------------------------------------------------------- - DrawRectangle(bounds.x, bounds.y, bounds.width, bounds.height, GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); - - // Draw grid - // H lines - const Color lineColor = GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_NORMAL)); - DrawLine(bounds.x, innerBounds.y, bounds.x+bounds.width, innerBounds.y, lineColor); // end - DrawLine(bounds.x, innerBounds.y+innerBounds.height/2, bounds.x+bounds.width, innerBounds.y+innerBounds.height/2, lineColor); // avg - DrawLine(bounds.x, innerBounds.y+innerBounds.height, bounds.x+bounds.width, innerBounds.y+innerBounds.height, lineColor); // start - - // V lines - DrawLine(innerBounds.x, bounds.y, innerBounds.x, bounds.y+bounds.height, lineColor); // 0 - DrawLine(innerBounds.x + innerBounds.width/4, bounds.y, innerBounds.x + innerBounds.width/4, bounds.y + bounds.height, lineColor); // 0.25 - DrawLine(innerBounds.x + innerBounds.width/2, bounds.y, innerBounds.x + innerBounds.width/2, bounds.y + bounds.height, lineColor); // 0.5 - DrawLine(innerBounds.x + 3*innerBounds.width/4, bounds.y, innerBounds.x + 3*innerBounds.width/4, bounds.y + bounds.height, lineColor); // 0.75 - DrawLine(innerBounds.x + innerBounds.width, bounds.y, innerBounds.x + innerBounds.width, bounds.y + bounds.height, lineColor); // 1 - - Font font = GuiGetFont(); - // V labels - DrawTextEx(font, "0", (Vector2){ innerBounds.x, bounds.y + bounds.height-fontSize}, fontSize, GuiGetStyle(DEFAULT, TEXT_SPACING), lineColor); - DrawTextEx(font, "0.25", (Vector2){ innerBounds.x + innerBounds.width/4.0f, bounds.y + bounds.height - fontSize}, fontSize, GuiGetStyle(DEFAULT, TEXT_SPACING), lineColor); - DrawTextEx(font, "0.5", (Vector2){ innerBounds.x + innerBounds.width/2.0f, bounds.y + bounds.height - fontSize}, fontSize, GuiGetStyle(DEFAULT, TEXT_SPACING), lineColor); - DrawTextEx(font, "0.75", (Vector2){ innerBounds.x + 3.0f*innerBounds.width/4.0f, bounds.y + bounds.height-fontSize}, fontSize, GuiGetStyle(DEFAULT, TEXT_SPACING), lineColor); - DrawTextEx(font, "1", (Vector2){ innerBounds.x + innerBounds.width, bounds.y+bounds.height - fontSize}, fontSize, GuiGetStyle(DEFAULT, TEXT_SPACING), lineColor); - - // H labels - DrawTextEx(font, TextFormat("%.2f", state->start), (Vector2){ innerBounds.x, innerBounds.y - fontSize+innerBounds.height }, fontSize, GuiGetStyle(DEFAULT, TEXT_SPACING), lineColor); - DrawTextEx(font, TextFormat("%.2f", state->start + (state->end-state->start)/2.f), (Vector2){ innerBounds.x, innerBounds.y - fontSize + innerBounds.height/2.0f }, fontSize, GuiGetStyle(DEFAULT, TEXT_SPACING), lineColor); - DrawTextEx(font, TextFormat("%.2f", state->end), (Vector2){ innerBounds.x, innerBounds.y }, fontSize, GuiGetStyle(DEFAULT, TEXT_SPACING), lineColor); - - // Draw contours - if (CheckCollisionPointRec(mouse, bounds)) DrawRectangleLines(bounds.x, bounds.y, bounds.width, bounds.height, GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_FOCUSED))); - else DrawRectangleLines(bounds.x, bounds.y, bounds.width, bounds.height, GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_NORMAL))); - - // Draw points - for (int i = 0; i < state->numPoints; i++) - { - const GuiCurveEditorPoint *p = sortedPoints[i]; - - const Vector2 screenPos = (Vector2){ p->position.x*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - p->position.y*innerBounds.height }; - const Rectangle pointRect = (Rectangle){ screenPos.x - pointSize/2.0f, screenPos.y - pointSize/2.0f, pointSize, pointSize }; - - Color pointColor = { 0 }; - Color pointBorderColor = { 0 }; - - // Draw point - if (&state->points[state->selectedIndex] == p) - { - // Draw left handle - if (i > 0) - { - const Vector2 target = (Vector2){ (p->position.x - 1)*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - (p->position.y - p->tangents.x)*innerBounds.height }; - const Vector2 dir = (Vector2){ target.x - screenPos.x, target.y - screenPos.y }; - const float d = sqrt(dir.x*dir.x + dir.y*dir.y); - const Vector2 control = (Vector2){ screenPos.x + dir.x/d*handleLength, screenPos.y + dir.y/d*handleLength }; - const Rectangle controlRect = (Rectangle){ control.x - handleSize/2.0f, control.y - handleSize/2.0f, handleSize, handleSize }; - - Color controlColor = { 0 }; - - if (state->editLeftTangent) - { - controlColor = GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_PRESSED)); - } - else if (CheckCollisionPointRec(mouse, controlRect)) - { - controlColor = GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_FOCUSED)); - } - else - { - controlColor = GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL)); - } - - DrawLine(screenPos.x,screenPos.y, control.x, control.y, controlColor); - DrawRectangle(controlRect.x, controlRect.y, controlRect.width, controlRect.height, controlColor); - DrawRectangleLines(controlRect.x, controlRect.y, controlRect.width, controlRect.height, controlColor); - } - - // Draw right handle - if (i < state->numPoints - 1) - { - const Vector2 target = (Vector2){ (p->position.x + 1)*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - (p->position.y + p->tangents.y)*innerBounds.height }; - const Vector2 dir = (Vector2){ target.x - screenPos.x, target.y - screenPos.y }; - const float d = sqrt(dir.x*dir.x + dir.y*dir.y); - const Vector2 control = (Vector2){ screenPos.x + dir.x/d*handleLength, screenPos.y + dir.y/d*handleLength }; - const Rectangle controlRect = (Rectangle){ control.x - handleSize/2.0f, control.y - handleSize/2.0f, handleSize, handleSize }; - - Color controlColor = { 0 }; - - if (state->editRightTangent) - { - controlColor = GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_PRESSED)); - } - else if (CheckCollisionPointRec(mouse, controlRect)) - { - controlColor = GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_FOCUSED)); - } - else - { - controlColor = GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL)); - } - - DrawLine(screenPos.x,screenPos.y, control.x, control.y, controlColor); - DrawRectangle(controlRect.x, controlRect.y, controlRect.width, controlRect.height, controlColor); - DrawRectangleLines(controlRect.x, controlRect.y, controlRect.width, controlRect.height, controlColor); - } - - pointColor = GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_PRESSED)); - pointBorderColor = GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_NORMAL)); - - } - else if (&state->points[hoveredPointIndex] == p) - { - pointColor = GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_FOCUSED)); - pointBorderColor = GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_NORMAL)); - } - else - { - pointColor = GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL)); - pointBorderColor = GetColor(GuiGetStyle(BUTTON, BORDER_COLOR_NORMAL)); - } - - DrawRectangle(pointRect.x, pointRect.y, pointRect.width, pointRect.height, pointColor); - DrawRectangleLines(pointRect.x, pointRect.y, pointRect.width, pointRect.height, pointBorderColor); - } - - // Draw curve - Color curveColor = GetColor(GuiGetStyle(LABEL, TEXT_COLOR_FOCUSED)); - - if (state->numPoints == 1) - { - const GuiCurveEditorPoint *p = sortedPoints[0]; - const Vector2 screenPos = (Vector2){ p->position.x*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - p->position.y*innerBounds.height }; - DrawLine(innerBounds.x, screenPos.y, innerBounds.x+innerBounds.width, screenPos.y, curveColor); - } - else - { - for (int i = 0; i < state->numPoints - 1; i++) - { - const GuiCurveEditorPoint *p1 = sortedPoints[i]; - const GuiCurveEditorPoint *p2 = sortedPoints[i + 1]; - const Vector2 screenPos1 = (Vector2){ p1->position.x*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - p1->position.y*innerBounds.height }; - const Vector2 screenPos2 = (Vector2){ p2->position.x*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - p2->position.y*innerBounds.height }; - - // Constant on edge - if ((screenPos1.x > innerBounds.x) && (i == 0)) - { - DrawLine(innerBounds.x, screenPos1.y, screenPos1.x, screenPos1.y, curveColor); - } - if ((screenPos2.x < innerBounds.x + innerBounds.width) && (i == (state->numPoints - 2))) - { - DrawLine(screenPos2.x, screenPos2.y, innerBounds.x+innerBounds.width, screenPos2.y, curveColor); - } - - // Draw cubic Hermite curve - const float scale = (p2->position.x - p1->position.x)/3.0f; - const Vector2 offset1 = (Vector2){ scale, scale*p1->tangents.y }; - // negative endTangent => top part => need to invert value to calculate offset - const Vector2 offset2 = (Vector2){ -scale, -scale*p2->tangents.x }; - - const Vector2 c1 = (Vector2){ p1->position.x + offset1.x, p1->position.y + offset1.y }; - const Vector2 c2 = (Vector2){ p2->position.x + offset2.x, p2->position.y + offset2.y }; - - const Vector2 screenC1 = (Vector2){ c1.x*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - c1.y*innerBounds.height }; - const Vector2 screenC2 = (Vector2){ c2.x*innerBounds.width + innerBounds.x, innerBounds.y + innerBounds.height - c2.y*innerBounds.height }; - - DrawSplineSegmentBezierCubic(screenPos1, screenC1, screenC2, screenPos2, 1, curveColor); - } - } -} - -#endif // GUI_CURVE_EDITOR_IMPLEMENTATION - diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/controls_test_suite/controls_test_suite.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/controls_test_suite/controls_test_suite.c deleted file mode 100644 index 0697088..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/controls_test_suite/controls_test_suite.c +++ /dev/null @@ -1,339 +0,0 @@ -/******************************************************************************************* -* -* raygui - controls test suite -* -* TEST CONTROLS: -* - GuiDropdownBox() -* - GuiCheckBox() -* - GuiSpinner() -* - GuiValueBox() -* - GuiTextBox() -* - GuiButton() -* - GuiComboBox() -* - GuiListView() -* - GuiToggleGroup() -* - GuiColorPicker() -* - GuiSlider() -* - GuiSliderBar() -* - GuiProgressBar() -* - GuiColorBarAlpha() -* - GuiScrollPanel() -* -* -* DEPENDENCIES: -* raylib 4.5 - Windowing/input management and drawing -* raygui 3.5 - Immediate-mode GUI controls with custom styling and icons -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) -* -**********************************************************************************************/ - -#include "raylib.h" - -//#define RAYGUI_DEBUG_RECS_BOUNDS -//#define RAYGUI_DEBUG_TEXT_BOUNDS - -#define RAYGUI_IMPLEMENTATION -//#define RAYGUI_CUSTOM_ICONS // It requires providing gui_icons.h in the same directory -//#include "gui_icons.h" // External icons data provided, it can be generated with rGuiIcons tool -#include "../../src/raygui.h" - -// raygui embedded styles -#include "../styles/style_cyber.h" // raygui style: cyber -#include "../styles/style_jungle.h" // raygui style: jungle -#include "../styles/style_lavanda.h" // raygui style: lavanda -#include "../styles/style_dark.h" // raygui style: dark -#include "../styles/style_bluish.h" // raygui style: bluish -#include "../styles/style_terminal.h" // raygui style: terminal -#include "../styles/style_candy.h" // raygui style: candy -#include "../styles/style_cherry.h" // raygui style: cherry -#include "../styles/style_ashes.h" // raygui style: ashes -#include "../styles/style_enefete.h" // raygui style: enefete -#include "../styles/style_sunny.h" // raygui style: sunny -#include "../styles/style_amber.h" // raygui style: amber -#include "../styles/style_genesis.h" // raygui style: genesis - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // Initialization - //--------------------------------------------------------------------------------------- - const int screenWidth = 960; - const int screenHeight = 560; - - InitWindow(screenWidth, screenHeight, "raygui - controls test suite"); - SetExitKey(0); - - // GUI controls initialization - //---------------------------------------------------------------------------------- - int dropdownBox000Active = 0; - bool dropDown000EditMode = false; - - int dropdownBox001Active = 0; - bool dropDown001EditMode = false; - - int spinner001Value = 0; - bool spinnerEditMode = false; - - int valueBox002Value = 0; - bool valueBoxEditMode = false; - - char textBoxText[64] = "Text box"; - bool textBoxEditMode = false; - - char textBoxMultiText[1024] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n\nThisisastringlongerthanexpectedwithoutspacestotestcharbreaksforthosecases,checkingifworkingasexpected.\n\nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; - bool textBoxMultiEditMode = false; - - int listViewScrollIndex = 0; - int listViewActive = -1; - - int listViewExScrollIndex = 0; - int listViewExActive = 2; - int listViewExFocus = -1; - char *listViewExList[8] = { "This", "is", "a", "list view", "with", "disable", "elements", "amazing!" }; - - Color colorPickerValue = RED; - - float sliderValue = 50.0f; - float sliderBarValue = 60; - float progressValue = 0.1f; - - bool forceSquaredChecked = false; - - float alphaValue = 0.5f; - - //int comboBoxActive = 1; - int visualStyleActive = 0; - int prevVisualStyleActive = 0; - - int toggleGroupActive = 0; - int toggleSliderActive = 0; - - Vector2 viewScroll = { 0, 0 }; - //---------------------------------------------------------------------------------- - - // Custom GUI font loading - //Font font = LoadFontEx("fonts/rainyhearts16.ttf", 12, 0, 0); - //GuiSetFont(font); - - bool exitWindow = false; - bool showMessageBox = false; - - char textInput[256] = { 0 }; - char textInputFileName[256] = { 0 }; - bool showTextInputBox = false; - - float alpha = 1.0f; - - // DEBUG: Testing how those two properties affect all controls! - //GuiSetStyle(DEFAULT, TEXT_PADDING, 0); - //GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!exitWindow) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - exitWindow = WindowShouldClose(); - - if (IsKeyPressed(KEY_ESCAPE)) showMessageBox = !showMessageBox; - - if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_S)) showTextInputBox = true; - - if (IsFileDropped()) - { - FilePathList droppedFiles = LoadDroppedFiles(); - - if ((droppedFiles.count > 0) && IsFileExtension(droppedFiles.paths[0], ".rgs")) GuiLoadStyle(droppedFiles.paths[0]); - - UnloadDroppedFiles(droppedFiles); // Clear internal buffers - } - - //alpha -= 0.002f; - if (alpha < 0.0f) alpha = 0.0f; - if (IsKeyPressed(KEY_SPACE)) alpha = 1.0f; - - GuiSetAlpha(alpha); - - //progressValue += 0.002f; - if (IsKeyPressed(KEY_LEFT)) progressValue -= 0.1f; - else if (IsKeyPressed(KEY_RIGHT)) progressValue += 0.1f; - if (progressValue > 1.0f) progressValue = 1.0f; - else if (progressValue < 0.0f) progressValue = 0.0f; - - if (visualStyleActive != prevVisualStyleActive) - { - GuiLoadStyleDefault(); - - switch (visualStyleActive) - { - case 0: break; // Default style - case 1: GuiLoadStyleJungle(); break; - case 2: GuiLoadStyleLavanda(); break; - case 3: GuiLoadStyleDark(); break; - case 4: GuiLoadStyleBluish(); break; - case 5: GuiLoadStyleCyber(); break; - case 6: GuiLoadStyleTerminal(); break; - case 7: GuiLoadStyleCandy(); break; - case 8: GuiLoadStyleCherry(); break; - case 9: GuiLoadStyleAshes(); break; - case 10: GuiLoadStyleEnefete(); break; - case 11: GuiLoadStyleSunny(); break; - case 12: GuiLoadStyleAmber(); break; - case 13: GuiLoadStyleGenesis(); break; - default: break; - } - - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - - prevVisualStyleActive = visualStyleActive; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); - - // raygui: controls drawing - //---------------------------------------------------------------------------------- - // Check all possible events that require GuiLock - if (dropDown000EditMode || dropDown001EditMode) GuiLock(); - if (showTextInputBox) GuiLock(); - - // First GUI column - //GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiCheckBox((Rectangle){ 25, 108, 15, 15 }, "FORCE CHECK!", &forceSquaredChecked); - - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - //GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - if (GuiSpinner((Rectangle){ 25, 135, 125, 30 }, NULL, &spinner001Value, 0, 100, spinnerEditMode)) spinnerEditMode = !spinnerEditMode; - if (GuiValueBox((Rectangle){ 25, 175, 125, 30 }, NULL, &valueBox002Value, 0, 100, valueBoxEditMode)) valueBoxEditMode = !valueBoxEditMode; - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - if (GuiTextBox((Rectangle){ 25, 215, 125, 30 }, textBoxText, 64, textBoxEditMode)) textBoxEditMode = !textBoxEditMode; - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - if (GuiButton((Rectangle){ 25, 255, 125, 30 }, GuiIconText(ICON_FILE_SAVE, "Save File"))) showTextInputBox = true; - - GuiGroupBox((Rectangle){ 25, 310, 125, 150 }, "STATES"); - //GuiLock(); - GuiSetState(STATE_NORMAL); if (GuiButton((Rectangle){ 30, 320, 115, 30 }, "NORMAL")) { } - GuiSetState(STATE_FOCUSED); if (GuiButton((Rectangle){ 30, 355, 115, 30 }, "FOCUSED")) { } - GuiSetState(STATE_PRESSED); if (GuiButton((Rectangle){ 30, 390, 115, 30 }, "#15#PRESSED")) { } - GuiSetState(STATE_DISABLED); if (GuiButton((Rectangle){ 30, 425, 115, 30 }, "DISABLED")) { } - GuiSetState(STATE_NORMAL); - //GuiUnlock(); - - GuiComboBox((Rectangle){ 25, 480, 125, 30 }, - "default;Jungle;Lavanda;Dark;Bluish;Cyber;Terminal;Candy;Cherry;Ashes;Enefete;Sunny;Amber;Genesis", &visualStyleActive); - - // NOTE: GuiDropdownBox must draw after any other control that can be covered on unfolding - if (dropDown000EditMode || dropDown001EditMode) GuiUnlock(); - if (showTextInputBox) GuiLock(); // Stay locked - - GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 4); - GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - if (GuiDropdownBox((Rectangle){ 25, 65, 125, 30 }, "#01#ONE;#02#TWO;#03#THREE;#04#FOUR", &dropdownBox001Active, dropDown001EditMode)) dropDown001EditMode = !dropDown001EditMode; - GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 0); - - if (GuiDropdownBox((Rectangle){ 25, 25, 125, 30 }, "ONE;TWO;THREE", &dropdownBox000Active, dropDown000EditMode)) dropDown000EditMode = !dropDown000EditMode; - - // Second GUI column - //GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL, 1); - GuiListView((Rectangle){ 165, 25, 140, 124 }, "Charmander;Bulbasaur;#18#Squirtel;Pikachu;Eevee;Pidgey", &listViewScrollIndex, &listViewActive); - GuiListViewEx((Rectangle){ 165, 162, 140, 184 }, listViewExList, 8, &listViewExScrollIndex, &listViewExActive, &listViewExFocus); - GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL, 0); - - //GuiToggle((Rectangle){ 165, 400, 140, 25 }, "#1#ONE", &toggleGroupActive); - GuiToggleGroup((Rectangle){ 165, 360, 140, 24 }, "#1#ONE\n#3#TWO\n#8#THREE\n#23#", &toggleGroupActive); - //GuiDisable(); - GuiSetStyle(SLIDER, SLIDER_PADDING, 2); - GuiToggleSlider((Rectangle){ 165, 480, 140, 30 }, "ON;OFF", &toggleSliderActive); - GuiSetStyle(SLIDER, SLIDER_PADDING, 0); - - // Third GUI column - GuiPanel((Rectangle){ 320, 25, 225, 140 }, "Panel Info"); - GuiColorPicker((Rectangle){ 320, 185, 196, 192 }, NULL, &colorPickerValue); - - //GuiDisable(); - GuiSlider((Rectangle){ 355, 400, 165, 20 }, "TEST", TextFormat("%2.2f", sliderValue), &sliderValue, -50, 100); - GuiSliderBar((Rectangle){ 320, 430, 200, 20 }, NULL, TextFormat("%i", (int)sliderBarValue), &sliderBarValue, 0, 100); - - GuiProgressBar((Rectangle){ 320, 460, 200, 20 }, NULL, TextFormat("%i%%", (int)(progressValue*100)), &progressValue, 0.0f, 1.0f); - GuiEnable(); - - // NOTE: View rectangle could be used to perform some scissor test - Rectangle view = { 0 }; - GuiScrollPanel((Rectangle){ 560, 25, 102, 354 }, NULL, (Rectangle){ 560, 25, 300, 1200 }, &viewScroll, &view); - - Vector2 mouseCell = { 0 }; - GuiGrid((Rectangle) { 560, 25 + 180 + 195, 100, 120 }, NULL, 20, 3, &mouseCell); - - GuiColorBarAlpha((Rectangle){ 320, 490, 200, 30 }, NULL, &alphaValue); - - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_TOP); // WARNING: Word-wrap does not work as expected in case of no-top alignment - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_WORD); // WARNING: If wrap mode enabled, text editing is not supported - if (GuiTextBox((Rectangle){ 678, 25, 258, 492 }, textBoxMultiText, 1024, textBoxMultiEditMode)) textBoxMultiEditMode = !textBoxMultiEditMode; - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_NONE); - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); - - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiStatusBar((Rectangle){ 0, (float)GetScreenHeight() - 20, (float)GetScreenWidth(), 20 }, "This is a status bar"); - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - //GuiSetStyle(STATUSBAR, TEXT_INDENTATION, 20); - - if (showMessageBox) - { - DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); - int result = GuiMessageBox((Rectangle){ (float)GetScreenWidth()/2 - 125, (float)GetScreenHeight()/2 - 50, 250, 100 }, GuiIconText(ICON_EXIT, "Close Window"), "Do you really want to exit?", "Yes;No"); - - if ((result == 0) || (result == 2)) showMessageBox = false; - else if (result == 1) exitWindow = true; - } - - if (showTextInputBox) - { - GuiUnlock(); - - DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); - int result = GuiTextInputBox((Rectangle){ (float)GetScreenWidth()/2 - 120, (float)GetScreenHeight()/2 - 60, 240, 140 }, GuiIconText(ICON_FILE_SAVE, "Save file as..."), "Introduce output file name:", "Ok;Cancel", textInput, 255, NULL); - - if (result == 1) - { - // TODO: Validate textInput value and save - - TextCopy(textInputFileName, textInput); - } - - if ((result == 0) || (result == 1) || (result == 2)) - { - showTextInputBox = false; - TextCopy(textInput, "\0"); - } - } - //---------------------------------------------------------------------------------- - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/controls_test_suite/controls_test_suite.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/controls_test_suite/controls_test_suite.png deleted file mode 100644 index 895696c..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/controls_test_suite/controls_test_suite.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/controls_test_suite/gui_value_box_float.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/controls_test_suite/gui_value_box_float.c deleted file mode 100644 index 8719375..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/controls_test_suite/gui_value_box_float.c +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************************* -* -* raygui - controls test suite -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) -* -**********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - -#include - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // Initialization - //--------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raygui - controls test suite"); - - float valueBoxValue = 0.0f; - bool valueBoxEditMode = false; - char valueBoxTextValue[32] = { 0 }; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); - - if (GuiValueBoxFloat((Rectangle){ 25, 175, 125, 30 }, NULL, valueBoxTextValue, &valueBoxValue, valueBoxEditMode)) - { - valueBoxEditMode = !valueBoxEditMode; - - printf("Value: %2.2f\n", valueBoxValue); - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_file_dialog/cat.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_file_dialog/cat.png deleted file mode 100644 index d023aa2..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_file_dialog/cat.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_file_dialog/custom_file_dialog.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_file_dialog/custom_file_dialog.c deleted file mode 100644 index dea4f23..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_file_dialog/custom_file_dialog.c +++ /dev/null @@ -1,112 +0,0 @@ -/******************************************************************************************* -* -* raygui - custom file dialog to load image -* -* DEPENDENCIES: -* raylib 4.0 - Windowing/input management and drawing. -* raygui 3.0 - Immediate-mode GUI controls. -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) -* -**********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - -#undef RAYGUI_IMPLEMENTATION // Avoid including raygui implementation again - -#define GUI_WINDOW_FILE_DIALOG_IMPLEMENTATION -#include "gui_window_file_dialog.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // Initialization - //--------------------------------------------------------------------------------------- - int screenWidth = 800; - int screenHeight = 560; - - InitWindow(screenWidth, screenHeight, "raygui - custom modal dialog"); - SetExitKey(0); - - // Custom file dialog - GuiWindowFileDialogState fileDialogState = InitGuiWindowFileDialog(GetWorkingDirectory()); - - bool exitWindow = false; - - char fileNameToLoad[512] = { 0 }; - - Texture texture = { 0 }; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!exitWindow) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - exitWindow = WindowShouldClose(); - - if (fileDialogState.SelectFilePressed) - { - // Load image file (if supported extension) - if (IsFileExtension(fileDialogState.fileNameText, ".png")) - { - strcpy(fileNameToLoad, TextFormat("%s" PATH_SEPERATOR "%s", fileDialogState.dirPathText, fileDialogState.fileNameText)); - UnloadTexture(texture); - texture = LoadTexture(fileNameToLoad); - } - - fileDialogState.SelectFilePressed = false; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); - - DrawTexture(texture, GetScreenWidth()/2 - texture.width/2, GetScreenHeight()/2 - texture.height/2 - 5, WHITE); - DrawRectangleLines(GetScreenWidth()/2 - texture.width/2, GetScreenHeight()/2 - texture.height/2 - 5, texture.width, texture.height, BLACK); - - DrawText(fileNameToLoad, 208, GetScreenHeight() - 20, 10, GRAY); - - // raygui: controls drawing - //---------------------------------------------------------------------------------- - if (fileDialogState.windowActive) GuiLock(); - - if (GuiButton((Rectangle){ 20, 20, 140, 30 }, GuiIconText(ICON_FILE_OPEN, "Open Image"))) fileDialogState.windowActive = true; - - GuiUnlock(); - - // GUI: Dialog Window - //-------------------------------------------------------------------------------- - GuiWindowFileDialog(&fileDialogState); - //-------------------------------------------------------------------------------- - - //---------------------------------------------------------------------------------- - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(texture); // Unload texture - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_file_dialog/gui_window_file_dialog.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_file_dialog/gui_window_file_dialog.h deleted file mode 100644 index a1c1370..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_file_dialog/gui_window_file_dialog.h +++ /dev/null @@ -1,624 +0,0 @@ -/******************************************************************************************* -* -* Window File Dialog v1.2 - Modal file dialog to open/save files -* -* MODULE USAGE: -* #define GUI_WINDOW_FILE_DIALOG_IMPLEMENTATION -* #include "gui_window_file_dialog.h" -* -* INIT: GuiWindowFileDialogState state = GuiInitWindowFileDialog(); -* DRAW: GuiWindowFileDialog(&state); -* -* NOTE: This module depends on some raylib file system functions: -* - LoadDirectoryFiles() -* - UnloadDirectoryFiles() -* - GetWorkingDirectory() -* - DirectoryExists() -* - FileExists() -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2019-2024 Ramon Santamaria (@raysan5) -* -* 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. -* -**********************************************************************************************/ - -#include "raylib.h" - -#ifndef GUI_WINDOW_FILE_DIALOG_H -#define GUI_WINDOW_FILE_DIALOG_H - -// Gui file dialog context data -typedef struct { - - // Window management variables - bool windowActive; - Rectangle windowBounds; - Vector2 panOffset; - bool dragMode; - bool supportDrag; - - // UI variables - bool dirPathEditMode; - char dirPathText[1024]; - - int filesListScrollIndex; - bool filesListEditMode; - int filesListActive; - - bool fileNameEditMode; - char fileNameText[1024]; - bool SelectFilePressed; - bool CancelFilePressed; - int fileTypeActive; - int itemFocused; - - // Custom state variables - FilePathList dirFiles; - char filterExt[256]; - char dirPathTextCopy[1024]; - char fileNameTextCopy[1024]; - - int prevFilesListActive; - - bool saveFileMode; - -} GuiWindowFileDialogState; - -#ifdef __cplusplus -extern "C" { // Prevents name mangling of functions -#endif - -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -//... - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -// ... - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -//... - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -GuiWindowFileDialogState InitGuiWindowFileDialog(const char *initPath); -void GuiWindowFileDialog(GuiWindowFileDialogState *state); - -#ifdef __cplusplus -} -#endif - -#endif // GUI_WINDOW_FILE_DIALOG_H - -/*********************************************************************************** -* -* GUI_WINDOW_FILE_DIALOG IMPLEMENTATION -* -************************************************************************************/ -#if defined(GUI_WINDOW_FILE_DIALOG_IMPLEMENTATION) - -#include "../../src/raygui.h" - -#include // Required for: strcpy() - -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -#define MAX_DIRECTORY_FILES 2048 -#define MAX_ICON_PATH_LENGTH 512 -#ifdef _WIN32 -#define PATH_SEPERATOR "\\" -#else -#define PATH_SEPERATOR "/" -#endif - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -#if defined(USE_CUSTOM_LISTVIEW_FILEINFO) -// Detailed file info type -typedef struct FileInfo { - const char *name; - int size; - int modTime; - int type; - int icon; -} FileInfo; -#else -// Filename only -typedef char *FileInfo; // Files are just a path string -#endif - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -FileInfo *dirFilesIcon = NULL; // Path string + icon (for fancy drawing) - -//---------------------------------------------------------------------------------- -// Internal Module Functions Definition -//---------------------------------------------------------------------------------- -// Read files in new path -static void ReloadDirectoryFiles(GuiWindowFileDialogState *state); - -#if defined(USE_CUSTOM_LISTVIEW_FILEINFO) -// List View control for files info with extended parameters -static int GuiListViewFiles(Rectangle bounds, FileInfo *files, int count, int *focus, int *scrollIndex, int active); -#endif - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -GuiWindowFileDialogState InitGuiWindowFileDialog(const char *initPath) -{ - GuiWindowFileDialogState state = { 0 }; - - // Init window data - state.windowBounds = (Rectangle){ GetScreenWidth()/2 - 440/2, GetScreenHeight()/2 - 310/2, 440, 310 }; - state.windowActive = false; - state.supportDrag = true; - state.dragMode = false; - state.panOffset = (Vector2){ 0, 0 }; - - // Init path data - state.dirPathEditMode = false; - state.filesListActive = -1; - state.prevFilesListActive = state.filesListActive; - state.filesListScrollIndex = 0; - - state.fileNameEditMode = false; - - state.SelectFilePressed = false; - state.CancelFilePressed = false; - - state.fileTypeActive = 0; - - strcpy(state.fileNameText, "\0"); - - // Custom variables initialization - if (initPath && DirectoryExists(initPath)) - { - strcpy(state.dirPathText, initPath); - } - else if (initPath && FileExists(initPath)) - { - strcpy(state.dirPathText, GetDirectoryPath(initPath)); - strcpy(state.fileNameText, GetFileName(initPath)); - } - else strcpy(state.dirPathText, GetWorkingDirectory()); - - // TODO: Why we keep a copy? - strcpy(state.dirPathTextCopy, state.dirPathText); - strcpy(state.fileNameTextCopy, state.fileNameText); - - state.filterExt[0] = '\0'; - //strcpy(state.filterExt, "all"); - - state.dirFiles.count = 0; - - return state; -} - -// Update and draw file dialog -void GuiWindowFileDialog(GuiWindowFileDialogState *state) -{ - if (state->windowActive) - { - // Update window dragging - //---------------------------------------------------------------------------------------- - if (state->supportDrag) - { - Vector2 mousePosition = GetMousePosition(); - - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) - { - // Window can be dragged from the top window bar - if (CheckCollisionPointRec(mousePosition, (Rectangle){ state->windowBounds.x, state->windowBounds.y, (float)state->windowBounds.width, RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT })) - { - state->dragMode = true; - state->panOffset.x = mousePosition.x - state->windowBounds.x; - state->panOffset.y = mousePosition.y - state->windowBounds.y; - } - } - - if (state->dragMode) - { - state->windowBounds.x = (mousePosition.x - state->panOffset.x); - state->windowBounds.y = (mousePosition.y - state->panOffset.y); - - // Check screen limits to avoid moving out of screen - if (state->windowBounds.x < 0) state->windowBounds.x = 0; - else if (state->windowBounds.x > (GetScreenWidth() - state->windowBounds.width)) state->windowBounds.x = GetScreenWidth() - state->windowBounds.width; - - if (state->windowBounds.y < 0) state->windowBounds.y = 0; - else if (state->windowBounds.y > (GetScreenHeight() - state->windowBounds.height)) state->windowBounds.y = GetScreenHeight() - state->windowBounds.height; - - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) state->dragMode = false; - } - } - //---------------------------------------------------------------------------------------- - - // Load dirFilesIcon and state->dirFiles lazily on windows open - // NOTE: They are automatically unloaded at fileDialog closing - //---------------------------------------------------------------------------------------- - if (dirFilesIcon == NULL) - { - dirFilesIcon = (FileInfo *)RL_CALLOC(MAX_DIRECTORY_FILES, sizeof(FileInfo)); // Max files to read - for (int i = 0; i < MAX_DIRECTORY_FILES; i++) dirFilesIcon[i] = (char *)RL_CALLOC(MAX_ICON_PATH_LENGTH, 1); // Max file name length - } - - // Load current directory files - if (state->dirFiles.paths == NULL) ReloadDirectoryFiles(state); - //---------------------------------------------------------------------------------------- - - // Draw window and controls - //---------------------------------------------------------------------------------------- - state->windowActive = !GuiWindowBox(state->windowBounds, "#198# Select File Dialog"); - - // Draw previous directory button + logic - if (GuiButton((Rectangle){ state->windowBounds.x + state->windowBounds.width - 48, state->windowBounds.y + 24 + 12, 40, 24 }, "< ..")) - { - // Move dir path one level up - strcpy(state->dirPathText, GetPrevDirectoryPath(state->dirPathText)); - - // Reload directory files (frees previous list) - ReloadDirectoryFiles(state); - - state->filesListActive = -1; - memset(state->fileNameText, 0, 1024); - memset(state->fileNameTextCopy, 0, 1024); - } - - // Draw current directory text box info + path editing logic - if (GuiTextBox((Rectangle){ state->windowBounds.x + 8, state->windowBounds.y + 24 + 12, state->windowBounds.width - 48 - 16, 24 }, state->dirPathText, 1024, state->dirPathEditMode)) - { - if (state->dirPathEditMode) - { - // Verify if a valid path has been introduced - if (DirectoryExists(state->dirPathText)) - { - // Reload directory files (frees previous list) - ReloadDirectoryFiles(state); - - strcpy(state->dirPathTextCopy, state->dirPathText); - } - else strcpy(state->dirPathText, state->dirPathTextCopy); - } - - state->dirPathEditMode = !state->dirPathEditMode; - } - - // List view elements are aligned left - int prevTextAlignment = GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT); - int prevElementsHeight = GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - GuiSetStyle(LISTVIEW, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, 24); -# if defined(USE_CUSTOM_LISTVIEW_FILEINFO) - state->filesListActive = GuiListViewFiles((Rectangle){ state->position.x + 8, state->position.y + 48 + 20, state->windowBounds.width - 16, state->windowBounds.height - 60 - 16 - 68 }, fileInfo, state->dirFiles.count, &state->itemFocused, &state->filesListScrollIndex, state->filesListActive); -# else - GuiListViewEx((Rectangle){ state->windowBounds.x + 8, state->windowBounds.y + 48 + 20, state->windowBounds.width - 16, state->windowBounds.height - 60 - 16 - 68 }, - (const char**)dirFilesIcon, state->dirFiles.count, &state->filesListScrollIndex, &state->filesListActive, &state->itemFocused); -# endif - GuiSetStyle(LISTVIEW, TEXT_ALIGNMENT, prevTextAlignment); - GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, prevElementsHeight); - - // Check if a path has been selected, if it is a directory, move to that directory (and reload paths) - if ((state->filesListActive >= 0) && (state->filesListActive != state->prevFilesListActive)) - //&& (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_DPAD_A))) - { - strcpy(state->fileNameText, GetFileName(state->dirFiles.paths[state->filesListActive])); - - if (DirectoryExists(TextFormat("%s/%s", state->dirPathText, state->fileNameText))) - { - if (TextIsEqual(state->fileNameText, "..")) strcpy(state->dirPathText, GetPrevDirectoryPath(state->dirPathText)); - else strcpy(state->dirPathText, TextFormat("%s/%s", (strcmp(state->dirPathText, "/") == 0)? "" : state->dirPathText, state->fileNameText)); - - strcpy(state->dirPathTextCopy, state->dirPathText); - - // Reload directory files (frees previous list) - ReloadDirectoryFiles(state); - - strcpy(state->dirPathTextCopy, state->dirPathText); - - state->filesListActive = -1; - strcpy(state->fileNameText, "\0"); - strcpy(state->fileNameTextCopy, state->fileNameText); - } - - state->prevFilesListActive = state->filesListActive; - } - - // Draw bottom controls - //-------------------------------------------------------------------------------------- - GuiLabel((Rectangle){ state->windowBounds.x + 8, state->windowBounds.y + state->windowBounds.height - 68, 60, 24 }, "File name:"); - if (GuiTextBox((Rectangle){ state->windowBounds.x + 72, state->windowBounds.y + state->windowBounds.height - 68, state->windowBounds.width - 184, 24 }, state->fileNameText, 128, state->fileNameEditMode)) - { - if (*state->fileNameText) - { - // Verify if a valid filename has been introduced - if (FileExists(TextFormat("%s/%s", state->dirPathText, state->fileNameText))) - { - // Select filename from list view - for (unsigned int i = 0; i < state->dirFiles.count; i++) - { - if (TextIsEqual(state->fileNameText, state->dirFiles.paths[i])) - { - state->filesListActive = i; - strcpy(state->fileNameTextCopy, state->fileNameText); - break; - } - } - } - else if (!state->saveFileMode) - { - strcpy(state->fileNameText, state->fileNameTextCopy); - } - } - - state->fileNameEditMode = !state->fileNameEditMode; - } - - GuiLabel((Rectangle){ state->windowBounds.x + 8, state->windowBounds.y + state->windowBounds.height - 24 - 12, 68, 24 }, "File filter:"); - GuiComboBox((Rectangle){ state->windowBounds.x + 72, state->windowBounds.y + state->windowBounds.height - 24 - 12, state->windowBounds.width - 184, 24 }, "All files", &state->fileTypeActive); - - state->SelectFilePressed = GuiButton((Rectangle){ state->windowBounds.x + state->windowBounds.width - 96 - 8, state->windowBounds.y + state->windowBounds.height - 68, 96, 24 }, "Select"); - - if (GuiButton((Rectangle){ state->windowBounds.x + state->windowBounds.width - 96 - 8, state->windowBounds.y + state->windowBounds.height - 24 - 12, 96, 24 }, "Cancel")) state->windowActive = false; - //-------------------------------------------------------------------------------------- - - // Exit on file selected - if (state->SelectFilePressed) state->windowActive = false; - - // File dialog has been closed, free all memory before exit - if (!state->windowActive) - { - // Free dirFilesIcon memory - for (int i = 0; i < MAX_DIRECTORY_FILES; i++) RL_FREE(dirFilesIcon[i]); - - RL_FREE(dirFilesIcon); - dirFilesIcon = NULL; - - // Unload directory file paths - UnloadDirectoryFiles(state->dirFiles); - - // Reset state variables - state->dirFiles.count = 0; - state->dirFiles.paths = NULL; - } - } -} - -// Compare two files from a directory -static inline int FileCompare(const char *d1, const char *d2, const char *dir) -{ - const bool b1 = DirectoryExists(TextFormat("%s/%s", dir, d1)); - const bool b2 = DirectoryExists(TextFormat("%s/%s", dir, d2)); - - if (b1 && !b2) return -1; - if (!b1 && b2) return 1; - - if (!FileExists(TextFormat("%s/%s", dir, d1))) return 1; - if (!FileExists(TextFormat("%s/%s", dir, d2))) return -1; - - return strcmp(d1, d2); -} - -// Read files in new path -static void ReloadDirectoryFiles(GuiWindowFileDialogState *state) -{ - UnloadDirectoryFiles(state->dirFiles); - - state->dirFiles = LoadDirectoryFilesEx(state->dirPathText, (state->filterExt[0] == '\0')? NULL : state->filterExt, false); - state->itemFocused = 0; - - // Reset dirFilesIcon memory - for (int i = 0; i < MAX_DIRECTORY_FILES; i++) memset(dirFilesIcon[i], 0, MAX_ICON_PATH_LENGTH); - - // Copy paths as icon + fileNames into dirFilesIcon - for (unsigned int i = 0; i < state->dirFiles.count; i++) - { - if (IsPathFile(state->dirFiles.paths[i])) - { - // Path is a file, a file icon for convenience (for some recognized extensions) - if (IsFileExtension(state->dirFiles.paths[i], ".png;.bmp;.tga;.gif;.jpg;.jpeg;.psd;.hdr;.qoi;.dds;.pkm;.ktx;.pvr;.astc")) - { - strcpy(dirFilesIcon[i], TextFormat("#12#%s", GetFileName(state->dirFiles.paths[i]))); - } - else if (IsFileExtension(state->dirFiles.paths[i], ".wav;.mp3;.ogg;.flac;.xm;.mod;.it;.wma;.aiff")) - { - strcpy(dirFilesIcon[i], TextFormat("#11#%s", GetFileName(state->dirFiles.paths[i]))); - } - else if (IsFileExtension(state->dirFiles.paths[i], ".txt;.info;.md;.nfo;.xml;.json;.c;.cpp;.cs;.lua;.py;.glsl;.vs;.fs")) - { - strcpy(dirFilesIcon[i], TextFormat("#10#%s", GetFileName(state->dirFiles.paths[i]))); - } - else if (IsFileExtension(state->dirFiles.paths[i], ".exe;.bin;.raw;.msi")) - { - strcpy(dirFilesIcon[i], TextFormat("#200#%s", GetFileName(state->dirFiles.paths[i]))); - } - else strcpy(dirFilesIcon[i], TextFormat("#218#%s", GetFileName(state->dirFiles.paths[i]))); - } - else - { - // Path is a directory, add a directory icon - strcpy(dirFilesIcon[i], TextFormat("#1#%s", GetFileName(state->dirFiles.paths[i]))); - } - } -} - -#if defined(USE_CUSTOM_LISTVIEW_FILEINFO) -// List View control for files info with extended parameters -static int GuiListViewFiles(Rectangle bounds, FileInfo *files, int count, int *focus, int *scrollIndex, int *active) -{ - int result = 0; - GuiState state = guiState; - int itemFocused = (focus == NULL)? -1 : *focus; - int itemSelected = *active; - - // Check if we need a scroll bar - bool useScrollBar = false; - if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING))*count > bounds.height) useScrollBar = true; - - // Define base item rectangle [0] - Rectangle itemBounds = { 0 }; - itemBounds.x = bounds.x + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING); - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.width = bounds.width - 2*GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING) - GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.height = GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - if (useScrollBar) itemBounds.width -= GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); - - // Get items on the list - int visibleItems = bounds.height/(GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING)); - if (visibleItems > count) visibleItems = count; - - int startIndex = (scrollIndex == NULL)? 0 : *scrollIndex; - if ((startIndex < 0) || (startIndex > (count - visibleItems))) startIndex = 0; - int endIndex = startIndex + visibleItems; - - // Update control - //-------------------------------------------------------------------- - if ((state != GUI_STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GetMousePosition(); - - // Check mouse inside list view - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = GUI_STATE_FOCUSED; - - // Check focused and selected item - for (int i = 0; i < visibleItems; i++) - { - if (CheckCollisionPointRec(mousePoint, itemBounds)) - { - itemFocused = startIndex + i; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) itemSelected = startIndex + i; - break; - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING)); - } - - if (useScrollBar) - { - int wheelMove = GetMouseWheelMove(); - startIndex -= wheelMove; - - if (startIndex < 0) startIndex = 0; - else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; - - endIndex = startIndex + visibleItems; - if (endIndex > count) endIndex = count; - } - } - else itemFocused = -1; - - // Reset item rectangle y to [0] - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - DrawRectangleRec(bounds, GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background - DrawRectangleLinesEx(bounds, GuiGetStyle(DEFAULT, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), guiAlpha)); - - // TODO: Draw list view header with file sections: icon+name | size | type | modTime - - // Draw visible items - for (int i = 0; i < visibleItems; i++) - { - if (state == GUI_STATE_DISABLED) - { - if ((startIndex + i) == itemSelected) - { - DrawRectangleRec(itemBounds, Fade(GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED)), guiAlpha)); - DrawRectangleLinesEx(itemBounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), guiAlpha)); - } - - // TODO: Draw full file info line: icon+name | size | type | modTime - - GuiDrawText(files[startIndex + i].name, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED)), guiAlpha)); - } - else - { - if ((startIndex + i) == itemSelected) - { - // Draw item selected - DrawRectangleRec(itemBounds, Fade(GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED)), guiAlpha)); - DrawRectangleLinesEx(itemBounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), guiAlpha)); - - GuiDrawText(files[startIndex + i].name, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED)), guiAlpha)); - } - else if ((startIndex + i) == itemFocused) - { - // Draw item focused - DrawRectangleRec(itemBounds, Fade(GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED)), guiAlpha)); - DrawRectangleLinesEx(itemBounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), guiAlpha)); - - GuiDrawText(files[startIndex + i].name, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED)), guiAlpha)); - } - else - { - // Draw item normal - GuiDrawText(files[startIndex + i].name, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL)), guiAlpha)); - } - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING)); - } - - if (useScrollBar) - { - Rectangle scrollBarBounds = { - bounds.x + bounds.width - GuiGetStyle(LISTVIEW, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.y + GuiGetStyle(LISTVIEW, BORDER_WIDTH), (float)GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - }; - - // Calculate percentage of visible items and apply same percentage to scrollbar - float percentVisible = (float)(endIndex - startIndex)/count; - float sliderSize = bounds.height*percentVisible; - - int prevSliderSize = GuiGetStyle(SCROLLBAR, SLIDER_WIDTH); // Save default slider size - int prevScrollSpeed = GuiGetStyle(SCROLLBAR, SCROLL_SPEED); // Save default scroll speed - GuiSetStyle(SCROLLBAR, SLIDER_WIDTH, sliderSize); // Change slider size - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, count - visibleItems); // Change scroll speed - - startIndex = GuiScrollBar(scrollBarBounds, startIndex, 0, count - visibleItems); - - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, prevScrollSpeed); // Reset scroll speed to default - GuiSetStyle(SCROLLBAR, SLIDER_WIDTH, prevSliderSize); // Reset slider size to default - } - //-------------------------------------------------------------------- - - if (focus != NULL) *focus = itemFocused; - if (scrollIndex != NULL) *scrollIndex = startIndex; - - *active = itemSelected; - return result; -} -#endif // USE_CUSTOM_LISTVIEW_FILEINFO - -#endif // GUI_FILE_DIALOG_IMPLEMENTATION diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_input_box/custom_input_box.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_input_box/custom_input_box.c deleted file mode 100644 index 18b7ffc..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_input_box/custom_input_box.c +++ /dev/null @@ -1,223 +0,0 @@ -/******************************************************************************************* -* -* raygui - basic calculator app with custom input box for float values -* -* DEPENDENCIES: -* raylib 4.5 - Windowing/input management and drawing. -* raygui 3.5 - Immediate-mode GUI controls. -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -**********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - -int guiFloatingPointIndex = 0; // Global variable shared by all GuiFloatBox() - -int GuiFloatBox(Rectangle bounds, const char* text, float* value, int minValue, int maxValue, bool editMode); // Custom input box that works with float values. Basicly GuiValueBox(), but with some changes - -int main() -{ - InitWindow(250, 100, "Basic calculator"); - - // General variables - SetTargetFPS(60); - - float variableA = 0.0f; - float variableB = 0.0f; - float result = 0.0f; - char operation[2]; - operation[0] = '+'; - operation[1] = '\0'; - - bool variableAMode = false; - bool variableBMode = false; - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) - { - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - if (GuiFloatBox((Rectangle){ 10, 10, 100, 20 }, NULL, &variableA, -1000000.0, 1000000.0, variableAMode)) variableAMode = !variableAMode; - if (GuiFloatBox((Rectangle){ 140, 10, 100, 20 }, NULL, &variableB, -1000000.0, 1000000.0, variableBMode)) variableBMode = !variableBMode; - - if (GuiButton((Rectangle){ 10, 70, 50, 20 }, "+")) - { - result = variableA + variableB; - operation[0] = '+'; - } - if (GuiButton((Rectangle){ 70, 70, 50, 20 }, "-")) - { - result = variableA - variableB; - operation[0] = '-'; - } - if (GuiButton((Rectangle){ 130, 70, 50, 20 }, "*")) - { - result = variableA * variableB; - operation[0] = '*'; - } - if (GuiButton((Rectangle){ 190, 70, 50, 20 }, "/")) - { - result = variableA / variableB; - operation[0] = '/'; - } - - DrawText(operation, 123, 15, 10, DARKGRAY); - - GuiFloatBox((Rectangle){ 55, 40, 135, 20 }, "= ", &result, -2000000.0, 2000000.0, false); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - CloseWindow(); -} - -// Float Box control, updates input text with numbers -int GuiFloatBox(Rectangle bounds, const char* text, float* value, int minValue, int maxValue, bool editMode) -{ -#if !defined(RAYGUI_VALUEBOX_MAX_CHARS) -#define RAYGUI_VALUEBOX_MAX_CHARS 32 -#endif - - int result = 0; - GuiState state = guiState; - - char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = "\0"; - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height / 2.0f - GuiGetStyle(DEFAULT, TEXT_SIZE) / 2.0f; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GetMousePosition(); - - if (*value >= 0) sprintf(textValue, "+%.3f", *value); - else sprintf(textValue, "%.3f", *value); - - bool valueHasChanged = false; - - int keyCount = (int)strlen(textValue) - guiFloatingPointIndex; - - if (editMode) - { - state = STATE_PRESSED; - - // Only allow keys in range [48..57] - if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) - { - if (GuiGetTextWidth(textValue) < bounds.width) - { - int key = GetCharPressed(); - if ((key >= 48) && (key <= 57) && guiFloatingPointIndex) - { - if (guiFloatingPointIndex && guiFloatingPointIndex != 4) guiFloatingPointIndex--; - - textValue[keyCount] = (char)key; - textValue[++keyCount] = '\0'; - valueHasChanged = true; - } - } - } - - // Delete text - if (keyCount > 0) - { - if (IsKeyPressed(KEY_BACKSPACE)) - { - if (guiFloatingPointIndex < 4) guiFloatingPointIndex++; - - keyCount--; - textValue[keyCount] = '\0'; - valueHasChanged = true; - } - } - - // Change sign - if (IsKeyPressed(KEY_MINUS)) - { - if (textValue[0] == '+') textValue[0] = '-'; - else if (textValue[0] == '-') textValue[0] = '+'; - valueHasChanged = true; - } - - // Add decimal separator - if ((IsKeyPressed(KEY_COMMA) || IsKeyPressed(KEY_PERIOD)) && guiFloatingPointIndex == 4) - { - guiFloatingPointIndex--; - valueHasChanged = true; - } - - if (valueHasChanged) - { - *value = atof(textValue); - } - - if (IsKeyPressed(KEY_ENTER) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) - { - guiFloatingPointIndex = 0; - result = 1; - } - } - else - { - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - Color baseColor = BLANK; - sprintf(textValue, "%.3f", *value); - - if (state == STATE_PRESSED) - { - baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); - textValue[(int)strlen(textValue) - guiFloatingPointIndex] = '\0'; - } - else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); - - // WARNING: BLANK color does not work properly with Fade() - GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(VALUEBOX, BORDER + (state * 3))), guiAlpha), baseColor); - GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(VALUEBOX, TEXT + (state * 3))), guiAlpha)); - - // Draw cursor - if (editMode) - { - // NOTE: ValueBox internal text is always centered - Rectangle cursor = { bounds.x + GuiGetTextWidth(textValue) / 2.0f + bounds.width / 2.0f + 1, bounds.y + 2.0f * GuiGetStyle(VALUEBOX, BORDER_WIDTH), 4, bounds.height - 4 * GuiGetStyle(VALUEBOX, BORDER_WIDTH) }; - GuiDrawRectangle(cursor, 0, BLANK, Fade(GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED)), guiAlpha)); - } - - // Draw text label if provided - GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT) ? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, Fade(GetColor(GuiGetStyle(LABEL, TEXT + (state * 3))), guiAlpha)); - //-------------------------------------------------------------------- - - return result; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_sliders/custom_sliders.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_sliders/custom_sliders.c deleted file mode 100644 index ecd7e27..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/custom_sliders/custom_sliders.c +++ /dev/null @@ -1,470 +0,0 @@ -/******************************************************************************************* -* -* raygui - custom sliders -* -* DEPENDENCIES: -* raylib 4.0 - Windowing/input management and drawing. -* raygui 3.0 - Immediate-mode GUI controls. -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) -* -**********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - -//---------------------------------------------------------------------------------- -// Controls Functions Declaration -//---------------------------------------------------------------------------------- -float GuiVerticalSlider(Rectangle bounds, const char *textTop, const char *textBottom, float value, float minValue, float maxValue); -float GuiVerticalSliderBar(Rectangle bounds, const char *textTop, const char *textBottom, float value, float minValue, float maxValue); -float GuiVerticalSliderPro(Rectangle bounds, const char *textTop, const char *textBottom, float value, float minValue, float maxValue, int sliderHeight); - -bool GuiSliderOwning(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue, bool editMode); -bool GuiSliderBarOwning(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue, bool editMode); -bool GuiSliderProOwning(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue, int sliderWidth, bool editMode); - -bool GuiVerticalSliderOwning(Rectangle bounds, const char *textTop, const char *textBottom, float *value, float minValue, float maxValue, bool editMode); -bool GuiVerticalSliderBarOwning(Rectangle bounds, const char *textTop, const char *textBottom, float *value, float minValue, float maxValue, bool editMode); -bool GuiVerticalSliderProOwning(Rectangle bounds, const char *textTop, const char *textBottom, float *value, float minValue, float maxValue, int sliderHeight, bool editMode); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // Initialization - //--------------------------------------------------------------------------------------- - int screenWidth = 800; - int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raygui - custom sliders"); - - float value = 0.5f; - bool sliderEditMode = false; - bool vSliderEditMode = false; - bool vSliderBarEditMode = false; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // TODO: Implement required update logic - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); - - if (vSliderEditMode || vSliderBarEditMode) GuiLock(); - else GuiUnlock(); - - // raygui: controls drawing - //---------------------------------------------------------------------------------- - GuiGroupBox((Rectangle){ 66, 24, 276, 312 }, "STANDARD"); - GuiSlider((Rectangle){ 96, 48, 216, 16 }, TextFormat("%0.2f", value), NULL, &value, 0.0f, 1.0f); - value = GuiVerticalSlider((Rectangle){ 120, 120, 24, 192 }, TextFormat("%0.2f", value), NULL, value, 0.0f, 1.0f); - value = GuiVerticalSliderBar((Rectangle){ 264, 120, 24, 192 }, TextFormat("%0.2f", value), NULL, value, 0.0f, 1.0f); - - GuiGroupBox((Rectangle){ 378, 24, 276, 312 }, "OWNING"); - if (GuiSliderOwning((Rectangle){ 408, 48, 216, 16 }, NULL, TextFormat("%0.2f", value), &value, 0.0f, 1.0f, sliderEditMode)) sliderEditMode = !sliderEditMode; - if (GuiVerticalSliderOwning((Rectangle){ 432, 120, 24, 192 }, NULL, TextFormat("%0.2f", value), &value, 0.0f, 1.0f, vSliderEditMode)) vSliderEditMode = !vSliderEditMode; - if (GuiVerticalSliderBarOwning((Rectangle){ 576, 120, 24, 192 }, NULL, TextFormat("%0.2f", value), &value, 0.0f, 1.0f, vSliderBarEditMode)) vSliderBarEditMode = !vSliderBarEditMode; - //---------------------------------------------------------------------------------- - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Controls Functions Definitions (local) -//------------------------------------------------------------------------------------ -float GuiVerticalSliderPro(Rectangle bounds, const char *textTop, const char *textBottom, float value, float minValue, float maxValue, int sliderHeight) -{ - GuiState state = (GuiState)GuiGetState(); - - int sliderValue = (int)(((value - minValue)/(maxValue - minValue)) * (bounds.height - 2 * GuiGetStyle(SLIDER, BORDER_WIDTH))); - - Rectangle slider = { - bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - bounds.y + bounds.height - sliderValue, - bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING), - 0.0f, - }; - - if (sliderHeight > 0) // Slider - { - slider.y -= sliderHeight/2; - slider.height = (float)sliderHeight; - } - else if (sliderHeight == 0) // SliderBar - { - slider.y -= GuiGetStyle(SLIDER, BORDER_WIDTH); - slider.height = (float)sliderValue; - } - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GetMousePosition(); - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) - { - state = STATE_PRESSED; - - // Get equivalent value and slider position from mousePoint.x - float normalizedValue = (bounds.y + bounds.height - mousePoint.y - (float)(sliderHeight / 2)) / (bounds.height - (float)sliderHeight); - value = (maxValue - minValue) * normalizedValue + minValue; - - if (sliderHeight > 0) slider.y = mousePoint.y - slider.height / 2; // Slider - else if (sliderHeight == 0) // SliderBar - { - slider.y = mousePoint.y; - slider.height = bounds.y + bounds.height - slider.y - GuiGetStyle(SLIDER, BORDER_WIDTH); - } - } - else state = STATE_FOCUSED; - } - - if (value > maxValue) value = maxValue; - else if (value < minValue) value = minValue; - } - - - // Bar limits check - if (sliderHeight > 0) // Slider - { - if (slider.y < (bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.y = bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH); - else if ((slider.y + slider.height) >= (bounds.y + bounds.height)) slider.y = bounds.y + bounds.height - slider.height - GuiGetStyle(SLIDER, BORDER_WIDTH); - } - else if (sliderHeight == 0) // SliderBar - { - if (slider.y < (bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH))) - { - slider.y = bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH); - slider.height = bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH); - } - } - - //-------------------------------------------------------------------- - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), guiAlpha), Fade(GetColor(GuiGetStyle(SLIDER, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED)), guiAlpha)); - - // Draw slider internal bar (depends on state) - if ((state == STATE_NORMAL) || (state == STATE_PRESSED)) GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED)), guiAlpha)); - else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED)), guiAlpha)); - - // Draw top/bottom text if provided - if (textTop != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textTop); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width/2 - textBounds.width/2; - textBounds.y = bounds.y - textBounds.height - GuiGetStyle(SLIDER, TEXT_PADDING); - - GuiDrawText(textTop, textBounds, TEXT_ALIGN_RIGHT, Fade(GetColor(GuiGetStyle(SLIDER, TEXT + (state*3))), guiAlpha)); - } - - if (textBottom != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textBottom); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width/2 - textBounds.width/2; - textBounds.y = bounds.y + bounds.height + GuiGetStyle(SLIDER, TEXT_PADDING); - - GuiDrawText(textBottom, textBounds, TEXT_ALIGN_LEFT, Fade(GetColor(GuiGetStyle(SLIDER, TEXT + (state*3))), guiAlpha)); - } - //-------------------------------------------------------------------- - - return value; -} - -float GuiVerticalSlider(Rectangle bounds, const char *textTop, const char *textBottom, float value, float minValue, float maxValue) -{ - return GuiVerticalSliderPro(bounds, textTop, textBottom, value, minValue, maxValue, GuiGetStyle(SLIDER, SLIDER_WIDTH)); -} - -float GuiVerticalSliderBar(Rectangle bounds, const char *textTop, const char *textBottom, float value, float minValue, float maxValue) -{ - return GuiVerticalSliderPro(bounds, textTop, textBottom, value, minValue, maxValue, 0); -} - -bool GuiSliderProOwning(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue, int sliderWidth, bool editMode) -{ - GuiState state = (GuiState)GuiGetState(); - - float tempValue = *value; - bool pressed = false; - - int sliderValue = (int)(((tempValue - minValue)/(maxValue - minValue))*(bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))); - - Rectangle slider = { - bounds.x, - bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - 0, - bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) - }; - - if (sliderWidth > 0) // Slider - { - slider.x += (sliderValue - sliderWidth/2); - slider.width = (float)sliderWidth; - } - else if (sliderWidth == 0) // SliderBar - { - slider.x += GuiGetStyle(SLIDER, BORDER_WIDTH); - slider.width = (float)sliderValue; - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && (editMode || !guiLocked)) - { - Vector2 mousePoint = GetMousePosition(); - - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - pressed = true; - } - } - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) && editMode) - { - pressed = true; - } - if (editMode) - { - state = STATE_PRESSED; - tempValue = ((maxValue - minValue)*(mousePoint.x - (float)(bounds.x + sliderWidth/2)))/(float)(bounds.width - sliderWidth) + minValue; - - if (sliderWidth > 0) slider.x = mousePoint.x - slider.width/2; // Slider - else if (sliderWidth == 0) slider.width = (float)sliderValue; // SliderBar - - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - } - - if (tempValue > maxValue) tempValue = maxValue; - else if (tempValue < minValue) tempValue = minValue; - } - - - // Bar limits check - if (sliderWidth > 0) // Slider - { - if (slider.x <= (bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH); - else if ((slider.x + slider.width) >= (bounds.x + bounds.width)) slider.x = bounds.x + bounds.width - slider.width - GuiGetStyle(SLIDER, BORDER_WIDTH); - } - else if (sliderWidth == 0) // SliderBar - { - if (slider.width > bounds.width) slider.width = bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH); - } - - //-------------------------------------------------------------------- - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), guiAlpha), Fade(GetColor(GuiGetStyle(SLIDER, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED)), guiAlpha)); - - // Draw slider internal bar (depends on state) - if ((state == STATE_NORMAL) || (state == STATE_PRESSED)) - GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED)), guiAlpha)); - else if (state == STATE_FOCUSED) - GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED)), guiAlpha)); - - // Draw left/right text if provided - if (textLeft != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textLeft); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x - textBounds.width - GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, Fade(GetColor(GuiGetStyle(SLIDER, TEXT + (state*3))), guiAlpha)); - } - - if (textRight != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textRight); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, Fade(GetColor(GuiGetStyle(SLIDER, TEXT + (state*3))), guiAlpha)); - } - //-------------------------------------------------------------------- - - *value = tempValue; - return pressed; -} - -bool GuiSliderOwning(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue, bool editMode) -{ - return GuiSliderProOwning(bounds, textLeft, textRight, value, minValue, maxValue, GuiGetStyle(SLIDER, SLIDER_WIDTH), editMode); -} - -bool GuiSliderBarOwning(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue, bool editMode) -{ - return GuiSliderProOwning(bounds, textLeft, textRight, value, minValue, maxValue, 0, editMode); -} - -bool GuiVerticalSliderProOwning(Rectangle bounds, const char *textTop, const char *textBottom, float *value, float minValue, float maxValue, int sliderHeight, bool editMode) -{ - GuiState state = (GuiState)GuiGetState(); - - float tempValue = *value; - bool pressed = false; - - int sliderValue = (int)(((tempValue - minValue)/(maxValue - minValue)) * (bounds.height - 2 * GuiGetStyle(SLIDER, BORDER_WIDTH))); - - Rectangle slider = { - bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - bounds.y + bounds.height - sliderValue, - bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING), - 0.0f, - }; - - if (sliderHeight > 0) // Slider - { - slider.y -= sliderHeight/2; - slider.height = (float)sliderHeight; - } - else if (sliderHeight == 0) // SliderBar - { - slider.y -= GuiGetStyle(SLIDER, BORDER_WIDTH); - slider.height = (float)sliderValue; - } - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && (editMode || !guiLocked)) - { - Vector2 mousePoint = GetMousePosition(); - - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - pressed = true; - } - } - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) && editMode) - { - pressed = true; - } - if (editMode) - { - state = STATE_PRESSED; - - float normalizedValue = (bounds.y + bounds.height - mousePoint.y - (float)(sliderHeight / 2)) / (bounds.height - (float)sliderHeight); - tempValue = (maxValue - minValue) * normalizedValue + minValue; - - if (sliderHeight > 0) slider.y = mousePoint.y - slider.height / 2; // Slider - else if (sliderHeight == 0) // SliderBar - { - slider.y = mousePoint.y; - slider.height = bounds.y + bounds.height - slider.y - GuiGetStyle(SLIDER, BORDER_WIDTH); - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - } - - if (tempValue > maxValue) tempValue = maxValue; - else if (tempValue < minValue) tempValue = minValue; - } - - - // Bar limits check - if (sliderHeight > 0) // Slider - { - if (slider.y < (bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.y = bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH); - else if ((slider.y + slider.height) >= (bounds.y + bounds.height)) slider.y = bounds.y + bounds.height - slider.height - GuiGetStyle(SLIDER, BORDER_WIDTH); - } - else if (sliderHeight == 0) // SliderBar - { - if (slider.y < (bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH))) - { - slider.y = bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH); - slider.height = bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH); - } - } - - //-------------------------------------------------------------------- - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), guiAlpha), Fade(GetColor(GuiGetStyle(SLIDER, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED)), guiAlpha)); - - // Draw slider internal bar (depends on state) - if ((state == STATE_NORMAL) || (state == STATE_PRESSED)) - GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED)), guiAlpha)); - else if (state == STATE_FOCUSED) - GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED)), guiAlpha)); - - // Draw top/bottom text if provided - if (textTop != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textTop); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width/2 - textBounds.width/2; - textBounds.y = bounds.y - textBounds.height - GuiGetStyle(SLIDER, TEXT_PADDING); - - GuiDrawText(textTop, textBounds, TEXT_ALIGN_RIGHT, Fade(GetColor(GuiGetStyle(SLIDER, TEXT + (state*3))), guiAlpha)); - } - - if (textBottom != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textBottom); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width/2 - textBounds.width/2; - textBounds.y = bounds.y + bounds.height + GuiGetStyle(SLIDER, TEXT_PADDING); - - GuiDrawText(textBottom, textBounds, TEXT_ALIGN_LEFT, Fade(GetColor(GuiGetStyle(SLIDER, TEXT + (state*3))), guiAlpha)); - } - //-------------------------------------------------------------------- - - *value = tempValue; - return pressed; -} - -bool GuiVerticalSliderOwning(Rectangle bounds, const char *textTop, const char *textBottom, float *value, float minValue, float maxValue, bool editMode) -{ - return GuiVerticalSliderProOwning(bounds, textTop, textBottom, value, minValue, maxValue, GuiGetStyle(SLIDER, SLIDER_WIDTH), editMode); -} - -bool GuiVerticalSliderBarOwning(Rectangle bounds, const char *textTop, const char *textBottom, float *value, float minValue, float maxValue, bool editMode) -{ - return GuiVerticalSliderProOwning(bounds, textTop, textBottom, value, minValue, maxValue, 0, editMode); -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/floating_window/floating_window.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/floating_window/floating_window.c deleted file mode 100644 index df6bc31..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/floating_window/floating_window.c +++ /dev/null @@ -1,148 +0,0 @@ -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - -#include "../../styles/dark/style_dark.h" - -static Vector2 window_position = { 10, 10 }; -static Vector2 window_size = { 200, 400 }; -static bool minimized = false; -static bool moving = false; -static bool resizing = false; -static Vector2 scroll; - -static Vector2 window2_position = { 250, 10 }; -static Vector2 window2_size = { 200, 400 }; -static bool minimized2 = false; -static bool moving2 = false; -static bool resizing2 = false; -static Vector2 scroll2; - -void GuiWindowFloating(Vector2 *position, Vector2 *size, bool *minimized, bool *moving, bool *resizing, void (*draw_content)(Vector2, Vector2), Vector2 content_size, Vector2 *scroll, const char* title) { - #if !defined(RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT) - #define RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT 24 - #endif - - #if !defined(RAYGUI_WINDOW_CLOSEBUTTON_SIZE) - #define RAYGUI_WINDOW_CLOSEBUTTON_SIZE 18 - #endif - - int close_title_size_delta_half = (RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - RAYGUI_WINDOW_CLOSEBUTTON_SIZE) / 2; - - // window movement and resize input and collision check - if(IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && !*moving && !*resizing) { - Vector2 mouse_position = GetMousePosition(); - - Rectangle title_collision_rect = { position->x, position->y, size->x - (RAYGUI_WINDOW_CLOSEBUTTON_SIZE + close_title_size_delta_half), RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; - Rectangle resize_collision_rect = { position->x + size->x - 20, position->y + size->y - 20, 20, 20 }; - - if(CheckCollisionPointRec(mouse_position, title_collision_rect)) { - *moving = true; - } else if(!*minimized && CheckCollisionPointRec(mouse_position, resize_collision_rect)) { - *resizing = true; - } - } - - // window movement and resize update - if(*moving) { - Vector2 mouse_delta = GetMouseDelta(); - position->x += mouse_delta.x; - position->y += mouse_delta.y; - - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) { - *moving = false; - - // clamp window position keep it inside the application area - if(position->x < 0) position->x = 0; - else if(position->x > GetScreenWidth() - size->x) position->x = GetScreenWidth() - size->x; - if(position->y < 0) position->y = 0; - else if(position->y > GetScreenHeight()) position->y = GetScreenHeight() - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; - } - - } else if(*resizing) { - Vector2 mouse = GetMousePosition(); - if (mouse.x > position->x) - size->x = mouse.x - position->x; - if (mouse.y > position->y) - size->y = mouse.y - position->y; - - // clamp window size to an arbitrary minimum value and the window size as the maximum - if(size->x < 100) size->x = 100; - else if(size->x > GetScreenWidth()) size->x = GetScreenWidth(); - if(size->y < 100) size->y = 100; - else if(size->y > GetScreenHeight()) size->y = GetScreenHeight(); - - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) { - *resizing = false; - } - } - - // window and content drawing with scissor and scroll area - if(*minimized) { - GuiStatusBar((Rectangle){ position->x, position->y, size->x, RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }, title); - - if (GuiButton((Rectangle){ position->x + size->x - RAYGUI_WINDOW_CLOSEBUTTON_SIZE - close_title_size_delta_half, - position->y + close_title_size_delta_half, - RAYGUI_WINDOW_CLOSEBUTTON_SIZE, - RAYGUI_WINDOW_CLOSEBUTTON_SIZE }, - "#120#")) { - *minimized = false; - } - - } else { - *minimized = GuiWindowBox((Rectangle) { position->x, position->y, size->x, size->y }, title); - - // scissor and draw content within a scroll panel - if(draw_content != NULL) { - Rectangle scissor = { 0 }; - GuiScrollPanel((Rectangle) { position->x, position->y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, size->x, size->y - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }, - NULL, - (Rectangle) { position->x, position->y, content_size.x, content_size.y }, - scroll, - &scissor); - - bool require_scissor = size->x < content_size.x || size->y < content_size.y; - - if(require_scissor) { - BeginScissorMode(scissor.x, scissor.y, scissor.width, scissor.height); - } - - draw_content(*position, *scroll); - - if(require_scissor) { - EndScissorMode(); - } - } - - // draw the resize button/icon - GuiDrawIcon(71, position->x + size->x - 20, position->y + size->y - 20, 1, WHITE); - } -} - -static void DrawContent(Vector2 position, Vector2 scroll) { - GuiButton((Rectangle) { position.x + 20 + scroll.x, position.y + 50 + scroll.y, 100, 25 }, "Button 1"); - GuiButton((Rectangle) { position.x + 20 + scroll.x, position.y + 100 + scroll.y, 100, 25 }, "Button 2"); - GuiButton((Rectangle) { position.x + 20 + scroll.x, position.y + 150 + scroll.y, 100, 25 }, "Button 3"); - GuiLabel((Rectangle) { position.x + 20 + scroll.x, position.y + 200 + scroll.y, 250, 25 }, "A Label"); - GuiLabel((Rectangle) { position.x + 20 + scroll.x, position.y + 250 + scroll.y, 250, 25 }, "Another Label"); - GuiLabel((Rectangle) { position.x + 20 + scroll.x, position.y + 300 + scroll.y, 250, 25 }, "Yet Another Label"); -} - -int main(void) { - InitWindow(960, 560, "raygui - floating window example"); - SetTargetFPS(60); - GuiLoadStyleDark(); - - while(!WindowShouldClose()) { - BeginDrawing(); - ClearBackground(DARKGREEN); - GuiWindowFloating(&window_position, &window_size, &minimized, &moving, &resizing, &DrawContent, (Vector2) { 140, 320 }, &scroll, "Movable & Scalable Window"); - GuiWindowFloating(&window2_position, &window2_size, &minimized2, &moving2, &resizing2, &DrawContent, (Vector2) { 140, 320 }, &scroll2, "Another window"); - EndDrawing(); - } - - CloseWindow(); - - return 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/image_exporter.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/image_exporter.c deleted file mode 100644 index cf5cd58..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/image_exporter.c +++ /dev/null @@ -1,192 +0,0 @@ -/******************************************************************************************* -* -* raygui - image exporter -* -* DEPENDENCIES: -* raylib 4.0 - Windowing/input management and drawing. -* raygui 3.0 - Immediate-mode GUI controls. -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2015-2024 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(int argc, char *argv[]) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raygui - image exporter"); - - // GUI controls initialization - //---------------------------------------------------------------------------------- - Rectangle windowBoxRec = { screenWidth/2 - 110, screenHeight/2 - 100, 220, 190 }; - bool windowBoxActive = false; - - int fileFormatActive = 0; - const char *fileFormatTextList[3] = { "IMAGE (.png)", "DATA (.raw)", "CODE (.h)" }; - - int pixelFormatActive = 0; - const char *pixelFormatTextList[7] = { "GRAYSCALE", "GRAY ALPHA", "R5G6B5", "R8G8B8", "R5G5B5A1", "R4G4B4A4", "R8G8B8A8" }; - - bool textBoxEditMode = false; - char fileName[64] = "untitled"; - //-------------------------------------------------------------------------------------- - - Image image = { 0 }; - Texture2D texture = { 0 }; - - bool imageLoaded = false; - float imageScale = 1.0f; - Rectangle imageRec = { 0 }; - - bool btnExportPressed = false; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsFileDropped()) - { - FilePathList droppedFiles = LoadDroppedFiles(); - - if (droppedFiles.count == 1) - { - Image imTemp = LoadImage(droppedFiles.paths[0]); - - if (imTemp.data != NULL) - { - UnloadImage(image); - image = imTemp; - - UnloadTexture(texture); - texture = LoadTextureFromImage(image); - - imageLoaded = true; - pixelFormatActive = image.format - 1; - - if (texture.height > texture.width) imageScale = (float)(screenHeight - 100)/(float)texture.height; - else imageScale = (float)(screenWidth - 100)/(float)texture.width; - } - } - - UnloadDroppedFiles(droppedFiles); - } - - if (btnExportPressed) - { - if (imageLoaded) - { - ImageFormat(&image, pixelFormatActive + 1); - - if (fileFormatActive == 0) // PNG - { - if ((GetFileExtension(fileName) == NULL) || (!IsFileExtension(fileName, ".png"))) strcat(fileName, ".png\0"); // No extension provided - ExportImage(image, fileName); - } - else if (fileFormatActive == 1) // RAW - { - if ((GetFileExtension(fileName) == NULL) || (!IsFileExtension(fileName, ".raw"))) strcat(fileName, ".raw\0"); // No extension provided - - int dataSize = GetPixelDataSize(image.width, image.height, image.format); - - FILE *rawFile = fopen(fileName, "wb"); - fwrite(image.data, 1, dataSize, rawFile); - fclose(rawFile); - } - else if (fileFormatActive == 2) // CODE - { - ExportImageAsCode(image, fileName); - } - } - - windowBoxActive = false; - } - - if (imageLoaded) - { - imageScale += (float)GetMouseWheelMove()*0.05f; // Image scale control - if (imageScale <= 0.1f) imageScale = 0.1f; - else if (imageScale >= 5) imageScale = 5; - - imageRec = (Rectangle){ screenWidth/2 - (float)image.width*imageScale/2, - screenHeight/2 - (float)image.height*imageScale/2, - (float)image.width*imageScale, (float)image.height*imageScale }; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - if (texture.id > 0) - { - DrawTextureEx(texture, (Vector2){ screenWidth/2 - (float)texture.width*imageScale/2, screenHeight/2 - (float)texture.height*imageScale/2 }, 0.0f, imageScale, WHITE); - - DrawRectangleLinesEx(imageRec, 1, CheckCollisionPointRec(GetMousePosition(), imageRec) ? RED : DARKGRAY); - DrawText(TextFormat("SCALE: %.2f%%", imageScale*100.0f), 20, screenHeight - 40, 20, GetColor(GuiGetStyle(DEFAULT, LINE_COLOR))); - } - else - { - DrawText("DRAG & DROP YOUR IMAGE!", 350, 200, 10, DARKGRAY); - GuiDisable(); - } - - if (GuiButton((Rectangle){ screenWidth - 170, screenHeight - 50, 150, 30 }, "Image Export")) windowBoxActive = true; - GuiEnable(); - - // Draw window box: windowBoxName - //----------------------------------------------------------------------------- - if (windowBoxActive) - { - DrawRectangle(0, 0, screenWidth, screenHeight, Fade(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR)), 0.7f)); - windowBoxActive = !GuiWindowBox((Rectangle){ windowBoxRec.x, windowBoxRec.y, 220, 190 }, "Image Export Options"); - - GuiLabel((Rectangle){ windowBoxRec.x + 10, windowBoxRec.y + 35, 60, 25 }, "File format:"); - GuiComboBox((Rectangle){ windowBoxRec.x + 80, windowBoxRec.y + 35, 130, 25 }, TextJoin(fileFormatTextList, 3, ";"), &fileFormatActive); - GuiLabel((Rectangle){ windowBoxRec.x + 10, windowBoxRec.y + 70, 63, 25 }, "Pixel format:"); - GuiComboBox((Rectangle){ windowBoxRec.x + 80, windowBoxRec.y + 70, 130, 25 }, TextJoin(pixelFormatTextList, 7, ";"), &pixelFormatActive); - GuiLabel((Rectangle){ windowBoxRec.x + 10, windowBoxRec.y + 105, 50, 25 }, "File name:"); - if (GuiTextBox((Rectangle){ windowBoxRec.x + 80, windowBoxRec.y + 105, 130, 25 }, fileName, 64, textBoxEditMode)) textBoxEditMode = !textBoxEditMode; - - btnExportPressed = GuiButton((Rectangle){ windowBoxRec.x + 10, windowBoxRec.y + 145, 200, 30 }, "Export Image"); - } - else btnExportPressed = false; - - if (btnExportPressed) DrawText("Image exported!", 20, screenHeight - 20, 20, RED); - //----------------------------------------------------------------------------- - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadImage(image); - UnloadTexture(texture); - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/cat.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/cat.png deleted file mode 100644 index d023aa2..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/cat.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/fudesumi.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/fudesumi.png deleted file mode 100644 index 9d9038f..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/fudesumi.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/parrots.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/parrots.png deleted file mode 100644 index d6ec60b..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/parrots.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/scarfy.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/scarfy.png deleted file mode 100644 index 4803ef7..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_exporter/resources/scarfy.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REF.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REF.png deleted file mode 100644 index 6f16441..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REF.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV0.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV0.png deleted file mode 100644 index 884b096..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV0.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV1.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV1.png deleted file mode 100644 index 39b1b72..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV1.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV2.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV2.png deleted file mode 100644 index 0797528..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV2.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV3.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV3.png deleted file mode 100644 index f396f6c..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV3.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV4.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV4.png deleted file mode 100644 index b128a62..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV4.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV5.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV5.png deleted file mode 100644 index 3f5e012..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/design/raw_importer_REV5.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/image_2x2_RGBA.raw b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/image_2x2_RGBA.raw deleted file mode 100644 index 1aa92cd..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/image_2x2_RGBA.raw and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/image_importer_raw.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/image_importer_raw.c deleted file mode 100644 index 4f86082..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/image_importer_raw/image_importer_raw.c +++ /dev/null @@ -1,228 +0,0 @@ -/******************************************************************************************* -* -* raygui - image raw importer -* -* DEPENDENCIES: -* raylib 4.0 - Windowing/input management and drawing. -* raygui 3.0 - Immediate-mode GUI controls. -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2015-2024 Ramon Santamaria (@raysan5) -* -**********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - -#include // Required for: strcpy() -#include // Required for: atoi() -#include // Required for: round() - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // Initialization - //--------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 600; - - InitWindow(screenWidth, screenHeight, "raygui - image raw importer"); - - Texture2D texture = { 0 }; - - // GUI controls initialization - //---------------------------------------------------------------------------------- - Vector2 windowOffset = { screenWidth/2 - 200/2, screenHeight/2 - 465/2 }; - - bool importWindowActive = false; - - int widthValue = 0; - bool widthEditMode = false; - int heightValue = 0; - bool heightEditMode = false; - - int pixelFormatActive = 0; - const char *pixelFormatTextList[8] = { "CUSTOM", "GRAYSCALE", "GRAY ALPHA", "R5G6B5", "R8G8B8", "R5G5B5A1", "R4G4B4A4", "R8G8B8A8" }; - - int channelsActive = 3; - const char *channelsTextList[4] = { "1", "2", "3", "4" }; - int bitDepthActive = 0; - const char *bitDepthTextList[3] = { "8", "16", "32" }; - - int headerSizeValue = 0; - bool headerSizeEditMode = false; - //---------------------------------------------------------------------------------- - - // Image file info - int dataSize = 0; - char fileNamePath[256] = "\0"; - char fileName[64] = "\0"; - - bool btnLoadPressed = false; - - bool imageLoaded = false; - float imageScale = 1.0f; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Check if a file is dropped - if (IsFileDropped()) - { - FilePathList droppedFiles = LoadDroppedFiles(); - - // Check file extensions for drag-and-drop - if ((droppedFiles.count == 1) && IsFileExtension(droppedFiles.paths[0], ".raw")) - { - FILE *imageFile = fopen(droppedFiles.paths[0], "rb"); - fseek(imageFile, 0L, SEEK_END); - dataSize = ftell(imageFile); - fclose(imageFile); - - // NOTE: Returned string is just a pointer to droppedFiles[0], - // we need to make a copy of that data somewhere else: fileName - strcpy(fileNamePath, droppedFiles.paths[0]); - strcpy(fileName, GetFileName(droppedFiles.paths[0])); - - // Try to guess possible raw values - // Let's assume image is square, RGBA, 8 bit per channel - widthValue = round(sqrt(dataSize/4)); - heightValue = widthValue; - headerSizeValue = dataSize - widthValue*heightValue*4; - if (headerSizeValue < 0) headerSizeValue = 0; - - importWindowActive = true; - } - - UnloadDroppedFiles(droppedFiles); - } - - // Check if load button has been pressed - if (btnLoadPressed) - { - // Depending on channels and bit depth, select correct pixel format - if ((widthValue != 0) && (heightValue != 0)) - { - int format = -1; - - if (pixelFormatActive == 0) - { - int channels = atoi(channelsTextList[channelsActive]); - int bpp = atoi(bitDepthTextList[bitDepthActive]); - - // Select correct format depending on channels and bpp - if (bpp == 8) - { - if (channels == 1) format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE; - else if (channels == 2) format = PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA; - else if (channels == 3) format = PIXELFORMAT_UNCOMPRESSED_R8G8B8; - else if (channels == 4) format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; - } - else if (bpp == 32) - { - if (channels == 1) format = PIXELFORMAT_UNCOMPRESSED_R32; - else if (channels == 2) TraceLog(LOG_WARNING, "Channel bit-depth not supported!"); - else if (channels == 3) format = PIXELFORMAT_UNCOMPRESSED_R32G32B32; - else if (channels == 4) format = PIXELFORMAT_UNCOMPRESSED_R32G32B32A32; - } - else if (bpp == 16) TraceLog(LOG_WARNING, "Channel bit-depth not supported!"); - } - else format = pixelFormatActive; - - if (format != -1) - { - Image image = LoadImageRaw(fileNamePath, widthValue, heightValue, format, headerSizeValue); - texture = LoadTextureFromImage(image); - UnloadImage(image); - - importWindowActive = false; - btnLoadPressed = false; - - if (texture.id > 0) - { - imageLoaded = true; - imageScale = (float)(screenHeight - 100)/texture.height; - } - } - } - } - - if (imageLoaded) imageScale += (float)GetMouseWheelMove(); // Image scale control - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); - - if (texture.id != 0) - { - DrawTextureEx(texture, (Vector2){ screenWidth/2 - texture.width*imageScale/2, screenHeight/2 - texture.height*imageScale/2 }, 0, imageScale, WHITE); - DrawText(TextFormat("SCALE x%.0f", imageScale), 20, screenHeight - 40, 20, GetColor(GuiGetStyle(DEFAULT, LINE_COLOR))); - } - else DrawText("drag & drop RAW image file", 320, 180, 10, GetColor(GuiGetStyle(DEFAULT, LINE_COLOR))); - - // raygui: controls drawing - //---------------------------------------------------------------------------------- - if (importWindowActive) - { - importWindowActive = !GuiWindowBox((Rectangle){ windowOffset.x + 0, windowOffset.y + 0, 200, 465 }, "Image RAW Import Options"); - - GuiLabel((Rectangle){ windowOffset.x + 10, windowOffset.y + 30, 65, 20 }, "Import file:"); - GuiLabel((Rectangle){ windowOffset.x + 85, windowOffset.y + 30, 75, 20 }, fileName); - GuiLabel((Rectangle){ windowOffset.x + 10, windowOffset.y + 50, 65, 20 }, "File size:"); - GuiLabel((Rectangle){ windowOffset.x + 85, windowOffset.y + 50, 75, 20 }, TextFormat("%i bytes", dataSize)); - GuiGroupBox((Rectangle){ windowOffset.x + 10, windowOffset.y + 85, 180, 80 }, "Resolution"); - GuiLabel((Rectangle){ windowOffset.x + 20, windowOffset.y + 100, 33, 25 }, "Width:"); - if (GuiValueBox((Rectangle){ windowOffset.x + 60, windowOffset.y + 100, 80, 25 }, NULL, &widthValue, 0, 8192, widthEditMode)) widthEditMode = !widthEditMode; - GuiLabel((Rectangle){ windowOffset.x + 145, windowOffset.y + 100, 30, 25 }, "pixels"); - GuiLabel((Rectangle){ windowOffset.x + 20, windowOffset.y + 130, 33, 25 }, "Height:"); - if (GuiValueBox((Rectangle){ windowOffset.x + 60, windowOffset.y + 130, 80, 25 }, NULL, &heightValue, 0, 8192, heightEditMode)) heightEditMode = !heightEditMode; - GuiLabel((Rectangle){ windowOffset.x + 145, windowOffset.y + 130, 30, 25 }, "pixels"); - GuiGroupBox((Rectangle){ windowOffset.x + 10, windowOffset.y + 180, 180, 160 }, "Pixel Format"); - GuiComboBox((Rectangle){ windowOffset.x + 20, windowOffset.y + 195, 160, 25 }, TextJoin(pixelFormatTextList, 8, ";"), &pixelFormatActive); - GuiLine((Rectangle){ windowOffset.x + 20, windowOffset.y + 220, 160, 20 }, NULL); - - if (pixelFormatActive != 0) GuiDisable(); - GuiLabel((Rectangle){ windowOffset.x + 20, windowOffset.y + 235, 50, 20 }, "Channels:"); - GuiToggleGroup((Rectangle){ windowOffset.x + 20, windowOffset.y + 255, 156/4, 25 }, TextJoin(channelsTextList, 4, ";"), &channelsActive); - GuiLabel((Rectangle){ windowOffset.x + 20, windowOffset.y + 285, 50, 20 }, "Bit Depth:"); - GuiToggleGroup((Rectangle){ windowOffset.x + 20, windowOffset.y + 305, 160/3, 25 }, TextJoin(bitDepthTextList, 3, ";"), &bitDepthActive); - GuiEnable(); - - GuiGroupBox((Rectangle){ windowOffset.x + 10, windowOffset.y + 355, 180, 50 }, "Header"); - GuiLabel((Rectangle){ windowOffset.x + 25, windowOffset.y + 370, 27, 25 }, "Size:"); - if (GuiValueBox((Rectangle){ windowOffset.x + 55, windowOffset.y + 370, 85, 25 }, NULL, &headerSizeValue, 0, 10000, headerSizeEditMode)) headerSizeEditMode = !headerSizeEditMode; - GuiLabel((Rectangle){ windowOffset.x + 145, windowOffset.y + 370, 30, 25 }, "bytes"); - - btnLoadPressed = GuiButton((Rectangle){ windowOffset.x + 10, windowOffset.y + 420, 180, 30 }, "Import RAW"); - } - //---------------------------------------------------------------------------------- - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - if (texture.id != 0) UnloadTexture(texture); - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/portable_window/portable_window.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/portable_window/portable_window.c deleted file mode 100644 index a7d3c9a..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/portable_window/portable_window.c +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************************* -* -* raygui - portable window -* -* DEPENDENCIES: -* raylib 4.0 - Windowing/input management and drawing. -* raygui 3.0 - Immediate-mode GUI controls. -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) -* -**********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // Initialization - //--------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 600; - - SetConfigFlags(FLAG_WINDOW_UNDECORATED); - InitWindow(screenWidth, screenHeight, "raygui - portable window"); - - // General variables - Vector2 mousePosition = { 0 }; - Vector2 windowPosition = { 500, 200 }; - Vector2 panOffset = mousePosition; - bool dragWindow = false; - - SetWindowPosition(windowPosition.x, windowPosition.y); - - bool exitWindow = false; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!exitWindow && !WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - mousePosition = GetMousePosition(); - - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && !dragWindow) - { - if (CheckCollisionPointRec(mousePosition, (Rectangle){ 0, 0, screenWidth, 20 })) - { - windowPosition = GetWindowPosition(); - dragWindow = true; - panOffset = mousePosition; - } - } - - if (dragWindow) - { - windowPosition.x += (mousePosition.x - panOffset.x); - windowPosition.y += (mousePosition.y - panOffset.y); - - SetWindowPosition((int)windowPosition.x, (int)windowPosition.y); - - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) dragWindow = false; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - exitWindow = GuiWindowBox((Rectangle){ 0, 0, screenWidth, screenHeight }, "#198# PORTABLE WINDOW"); - - DrawText(TextFormat("Mouse Position: [ %.0f, %.0f ]", mousePosition.x, mousePosition.y), 10, 40, 10, DARKGRAY); - DrawText(TextFormat("Window Position: [ %.0f, %.0f ]", windowPosition.x, windowPosition.y), 10, 60, 10, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/property_list/dm_property_list.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/property_list/dm_property_list.h deleted file mode 100644 index 838a161..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/property_list/dm_property_list.h +++ /dev/null @@ -1,868 +0,0 @@ -/******************************************************************************************* -* -* PropertyListControl v1.0.1 - A custom control that displays a set of properties as a list -* -* UPDATES: last updated - 10 march 2020 (v1.0.1) -* v1.0.1 - Made it work with latest raygui version -* - Added `GuiDMSaveProperties()` for saving properties to a text file -* - A `GuiDMLoadProperties()` is planed but not implemented yet -* - Added a section property that can work as a way to group multiple properties -* - Fixed issue with section not having the correct height -* v1.0.0 - Initial release -* -* -* MODULE USAGE: -* #define GUI_PROPERTY_LIST_IMPLEMENTATION -* #include "dm_property_list.h" -* -* INIT: GuiDMProperty props[] = { // initialize a set of properties first - PCOLOR(), - PINT(), - PFLOAT(), - ... - }; -* DRAW: GuiDMPropertyList(bounds, props, sizeof(props)/sizeof(props[0]), ...); -* -* -* NOTE: This module also contains 2 extra controls used internally by the property list -* - GuiDMValueBox() - a value box that supports displaying float values -* - GuiDMSpinner() - a `better` GuiSpinner() -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2020 Vlad Adrian (@Demizdor - https://github.com/Demizdor). -* -**********************************************************************************************/ - -#include "raylib.h" - -// WARNING: raygui implementation is expected to be defined before including this header -#undef RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - - -#ifndef GUI_PROPERTY_LIST_H -#define GUI_PROPERTY_LIST_H - -#ifdef __cplusplus -extern "C" { // Prevents name mangling of functions -#endif - -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- - -// A bunch of usefull macros for modifying the flags of each property - -// Set flag `F` of property `P`. `P` must be a pointer! -#define PROP_SET_FLAG(P, F) ((P)->flags |= (F)) -// Clear flag `F` of property `P`. `P` must be a pointer! -#define PROP_CLEAR_FLAG(P, F) ((P)->flags &= ~(F)) -// Toggles flag `F` of property `P`. `P` must be a pointer! -#define PROP_TOGGLE_FLAG(P, F) ((P)->flags ^= (F)) -// Checks if flag `F` of property `P` is set . `P` must be a pointer! -#define PROP_CHECK_FLAG(P, F) ((P)->flags & (F)) - -// Some usefull macros for creating properties - -// Create a bool property with name `N`, flags `F` and value `V` -#define PBOOL(N, F, V) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_BOOL, F, .value.vbool = V} -// Create a int property with name `N`, flags `F` and value `V` -#define PINT(N, F, V) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_INT, F, .value.vint = {V,0,0,1}} -// Create a ranged int property within `MIN` and `MAX` with name `N`, flags `F` value `V`. -// Pressing the spinner buttons will increase/decrease the value by `S`. -#define PINT_RANGE(N, F, V, S, MIN, MAX) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_INT, F, .value.vint = {V,MIN,MAX,S}} -// Create a float property with name `N`, flags `F` and value `V` -#define PFLOAT(N, F, V) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_FLOAT, F, .value.vfloat = {V,0.f,0.f,1.0f,3}} -// Create a ranged float property within `MIN` and `MAX` with name `N`, flags `F` value `V` with `P` decimal digits to show. -// Pressing the spinner buttons will increase/decrease the value by `S`. -#define PFLOAT_RANGE(N, F, V, S, P, MIN, MAX) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_FLOAT, F, .value.vfloat = {V,MIN,MAX,S,P}} -// Create a text property with name `N`, flags `F` value `V` and max text size `S` -#define PTEXT(N, F, V, S) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_TEXT, F, .value.vtext = {V, S} } -// Create a text property with name `N`, flags `F` value `V` and max text size `S` -#define PSELECT(N, F, V, A) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_SELECT, F, .value.vselect = {V, A} } -// Create a 2D vector property with name `N`, flags `F` and the `X`, `Y` coordinates -#define PVEC2(N, F, X, Y) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_VECTOR2, F, .value.v2 = {X, Y} } -// Create a 3D vector property with name `N`, flags `F` and the `X`, `Y`, `Z` coordinates -#define PVEC3(N, F, X, Y, Z) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_VECTOR3, F, .value.v3 = {X, Y, Z} } -// Create a 4D vector property with name `N`, flags `F` and the `X`, `Y`, `Z`, `W` coordinates -#define PVEC4(N, F, X, Y, Z, W) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_VECTOR4, F, .value.v4 = {X, Y, Z, W} } -// Create a rectangle property with name `N`, flags `F`, `X`, `Y` coordinates and `W` and `H` size -#define PRECT(N, F, X, Y, W, H) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_RECT, F, .value.vrect = {X, Y, W, H} } -// Create a 3D vector property with name `N`, flags `F` and the `R`, `G`, `B`, `A` channel values -#define PCOLOR(N, F, R, G, B, A) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_COLOR, F, .value.vcolor = {R, G, B, A} } -// Create a collapsable section named `N` with `F` flags and the next `C` properties as children. -// !! A section cannot hold another section as a child !! -#define PSECTION(N, F, C) RAYGUI_CLITERAL(GuiDMProperty){N, GUI_PROP_SECTION, F, .value.vsection = (C)} - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -enum GuiDMPropertyTypes { - GUI_PROP_BOOL = 0, - GUI_PROP_INT, - GUI_PROP_FLOAT, - GUI_PROP_TEXT, - GUI_PROP_SELECT, - GUI_PROP_VECTOR2, - GUI_PROP_VECTOR3, - GUI_PROP_VECTOR4, - GUI_PROP_RECT, - GUI_PROP_COLOR, - GUI_PROP_SECTION, -}; - -enum GuiDMPropertyFlags { - GUI_PFLAG_COLLAPSED = 1 << 0, // is the property expanded or collapsed? - GUI_PFLAG_DISABLED = 1 << 1, // is this property disabled or enabled? -}; - -// Data structure for each property -typedef struct { - char* name; - short type; - short flags; - union { - bool vbool; - struct { int val; int min; int max; int step; } vint; - struct { float val; float min; float max; float step; int precision; } vfloat; - struct { char* val; int size; } vtext; - struct { char* val; int active; } vselect; - int vsection; - Vector2 v2; - Vector3 v3; - Vector4 v4; - Rectangle vrect; - Color vcolor; - } value; -} GuiDMProperty; - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -//... - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- - -// A more advanced `GuiValueBox()` supporting float/int values with specified `precision`, cursor movements, cut/copy/paste and -// other keybord shortcuts. Needed by `GuiDMSpinner()` !! -// `precision` should be between 1-7 for float values and 0 for int values (maybe 15 for doubles but that was not tested) -// WARNING: The bounds should be set big enough else the text will overflow and things will break -// WARNING: Sometimes the last decimal value could differ, this is probably due to rounding -double GuiDMValueBox(Rectangle bounds, double value, double minValue, double maxValue, int precision, bool editMode); - -// A more advanced `GuiSpinner()` using `GuiDMValueBox()` for displaying the values. -// This was needed because `GuiSpinner()` can't display float values and editing values is somewhat hard. -// This is by no means perfect but should be more user friendly than the default control provided by raygui. -double GuiDMSpinner(Rectangle bounds, double value, double minValue, double maxValue, double step, int precision, bool editMode); - -// Works just like `GuiListViewEx()` but with an array of properties instead of text. -void GuiDMPropertyList(Rectangle bounds, GuiDMProperty* props, int count, int* focus, int* scrollIndex); - -// Handy function to save properties to a file. Returns false on failure or true otherwise. -bool GuiDMSaveProperties(const char* file, GuiDMProperty* props, int count); - -#ifdef __cplusplus -} -#endif - -#endif // GUI_PROPERTY_LIST_H - - - -/*********************************************************************************** -* -* GUI_PROPERTY_LIST_IMPLEMENTATION -* -************************************************************************************/ -#if defined(GUI_PROPERTY_LIST_IMPLEMENTATION) - -#include "../../src/raygui.h" - -#include // for calloc() -#include // for memmove(), strlen() -#include // for sscanf(), snprintf() - -#ifndef __cplusplus -#if __STDC_VERSION__ >= 199901L -#include // for bool if >= C99 -#endif -#endif - -double GuiDMValueBox(Rectangle bounds, double value, double minValue, double maxValue, int precision, bool editMode) { - // FIXME: Hope all those `memmove()` functions are correctly used so we won't leak memory or overflow the buffer !!! - static int framesCounter = 0; // Required for blinking cursor - static int cursor = 0; // Required for tracking the cursor position (only for a single active valuebox) - - enum {cursorTimer = 6, maxChars = 31, textPadding = 2}; - - GuiState state = GuiGetState(); - - // Make sure value is in range - if(maxValue != minValue){ - if(value < minValue) value = minValue; - if(value > maxValue) value = maxValue; - } - - char textValue[maxChars + 1] = "\0"; - snprintf(textValue, maxChars, "%.*f", precision, value); // NOTE: use `snprintf` here so we don't overflow the buffer - int len = strlen(textValue); - - bool valueHasChanged = false; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - if (editMode) - { - // Make sure cursor position is correct - if(cursor > len) cursor = len; - if(cursor < 0) cursor = 0; - - state = STATE_PRESSED; - framesCounter++; - - if(IsKeyPressed(KEY_RIGHT) || (IsKeyDown(KEY_RIGHT) && (framesCounter%cursorTimer == 0))) { - // MOVE CURSOR TO RIGHT - ++cursor; - framesCounter = 0; - } else if(IsKeyPressed(KEY_LEFT) || (IsKeyDown(KEY_LEFT) && (framesCounter%cursorTimer == 0))) { - // MOVE CURSOR TO LEFT - --cursor; - framesCounter = 0; - } else if (IsKeyPressed(KEY_BACKSPACE) || (IsKeyDown(KEY_BACKSPACE) && (framesCounter%cursorTimer) == 0)) { - // HANDLE BACKSPACE - if(cursor > 0) { - if(textValue[cursor-1] != '.') { - if(cursor < len ) - memmove(&textValue[cursor-1], &textValue[cursor], len-cursor); - textValue[len - 1] = '\0'; - valueHasChanged = true; - } - --cursor; - } - framesCounter = 0; - } else if (IsKeyPressed(KEY_DELETE) || (IsKeyDown(KEY_DELETE) && (framesCounter%cursorTimer) == 0)) { - // HANDLE DEL - if(len > 0 && cursor < len && textValue[cursor] != '.') { - memmove(&textValue[cursor], &textValue[cursor+1], len-cursor); - textValue[len] = '\0'; - len -= 1; - valueHasChanged = true; - } - } else if (IsKeyPressed(KEY_HOME)) { - // MOVE CURSOR TO START - cursor = 0; - } else if (IsKeyPressed(KEY_END)) { - // MOVE CURSOR TO END - cursor = len; - } else if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_C)) { - // COPY - SetClipboardText(textValue); - } else if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_X)) { - // CUT - SetClipboardText(textValue); - textValue[0] = '\0'; - cursor = len = 0; - value = 0.0; // set it to 0 and pretend the value didn't change - } else if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_V)) { - // PASTE - const char* clip = GetClipboardText(); - int clipLen = strlen(clip); - clipLen = clipLen > maxChars ? maxChars : clipLen; - memcpy(textValue, clip, clipLen); - len = clipLen; - textValue[len] = '\0'; - valueHasChanged = true; - } - else { - // HANDLE KEY PRESS - int key = GetKeyPressed(); - if( ((len < maxChars) && (key >= 48) && (key <= 57)) || (key == 46) || (key == 45) ) // only allow 0..9, minus(-) and dot(.) - { - if(precision != 0 && cursor < len) { // when we have decimals we can't insert at the end - memmove(&textValue[cursor], &textValue[cursor-1], len+1-cursor); - textValue[len+1] = '\0'; - textValue[cursor] = (char)key; - cursor++; - valueHasChanged = true; - } - else if(precision == 0) { - if(cursor < len) memmove(&textValue[cursor], &textValue[cursor-1], len+1-cursor); - len += 1; - textValue[len+1] = '\0'; - textValue[cursor] = (char)key; - cursor++; - valueHasChanged = true; - } - } - } - - // Make sure cursor position is correct - if(cursor > len) cursor = len; - if(cursor < 0) cursor = 0; - } - else - { - if (CheckCollisionPointRec(GetMousePosition(), bounds)) - { - state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) framesCounter = 0; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - DrawRectangleLinesEx(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), guiAlpha)); - - Rectangle textBounds = {bounds.x + GuiGetStyle(VALUEBOX, BORDER_WIDTH) + textPadding, bounds.y + GuiGetStyle(VALUEBOX, BORDER_WIDTH), - bounds.width - 2*(GuiGetStyle(VALUEBOX, BORDER_WIDTH) + textPadding), bounds.height - 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH)}; - - int textWidth = GuiGetTextWidth(textValue); - if(textWidth > textBounds.width) textBounds.width = textWidth; - - if (state == STATE_PRESSED) - { - DrawRectangle(bounds.x + GuiGetStyle(VALUEBOX, BORDER_WIDTH), bounds.y + GuiGetStyle(VALUEBOX, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), bounds.height - 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)), guiAlpha)); - - // Draw blinking cursor - // NOTE: ValueBox internal text is always centered - if (editMode && ((framesCounter/20)%2 == 0)) { - // Measure text until the cursor - int textWidthCursor = -2; - if(cursor > 0) { - char c = textValue[cursor]; - textValue[cursor] = '\0'; - textWidthCursor = GuiGetTextWidth(textValue); - textValue[cursor] = c; - } - //DrawRectangle(bounds.x + textWidthCursor + textPadding + 2, bounds.y + 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), 1, bounds.height - 4*GuiGetStyle(VALUEBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED)), guiAlpha)); - DrawRectangle(bounds.x + textWidthCursor + (int)((bounds.width - textWidth - textPadding)/2.0f) + 2, bounds.y + 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), 1, bounds.height - 4*GuiGetStyle(VALUEBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED)), guiAlpha)); - } - } - else if (state == STATE_DISABLED) - { - DrawRectangle(bounds.x + GuiGetStyle(VALUEBOX, BORDER_WIDTH), bounds.y + GuiGetStyle(VALUEBOX, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), bounds.height - 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)), guiAlpha)); - } - - GuiDrawText(textValue, textBounds, TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3))), guiAlpha)); - - value = valueHasChanged ? strtod(textValue, NULL) : value; - - // Make sure value is in range - if(maxValue != minValue){ - if(value < minValue) value = minValue; - if(value > maxValue) value = maxValue; - } - - return value; -} - - - -double GuiDMSpinner(Rectangle bounds, double value, double minValue, double maxValue, double step, int precision, bool editMode) { - GuiState state = GuiGetState(); - - Rectangle spinner = { bounds.x + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING), bounds.y, - bounds.width - 2*(GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING)), bounds.height }; - Rectangle leftButtonBound = { (float)bounds.x, (float)bounds.y, (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - Rectangle rightButtonBound = { (float)bounds.x + bounds.width - GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), - (float)bounds.y, (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GetMousePosition(); - - // Check spinner state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - - // Draw control - //-------------------------------------------------------------------- - // Draw value selector custom buttons - // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, GuiGetStyle(VALUEBOX, BORDER_WIDTH)); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - -#if defined(RAYGUI_SUPPORT_RICONS) - if (GuiButton(leftButtonBound, GuiIconText(RICON_ARROW_LEFT_FILL, NULL))) value -= step; - if (GuiButton(rightButtonBound, GuiIconText(RICON_ARROW_RIGHT_FILL, NULL))) value += step; -#else - if (GuiButton(leftButtonBound, "<")) value -= step; - if (GuiButton(rightButtonBound, ">")) value += step; -#endif - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - - value = GuiDMValueBox(spinner, value, minValue, maxValue, precision, editMode); - - return value; -} - - - -void GuiDMPropertyList(Rectangle bounds, GuiDMProperty* props, int count, int* focus, int* scrollIndex) { - #ifdef RAYGUI_SUPPORT_RICONS - #define PROPERTY_COLLAPSED_ICON "#120#" - #define PROPERTY_EXPANDED_ICON "#121#" - #else - #define PROPERTY_COLLAPSED_ICON "+" - #define PROPERTY_EXPANDED_ICON "-" - #endif - - #define PROPERTY_PADDING 6 - #define PROPERTY_ICON_SIZE 16 - #define PROPERTY_DECIMAL_DIGITS 3 //how many digits to show (used only for the vector properties) - - // NOTE: Using ListView style for everything !! - GuiState state = GuiGetState(); - int propFocused = (focus == NULL)? -1 : *focus; - int scroll = *scrollIndex > 0 ? 0 : *scrollIndex; // NOTE: scroll should always be negative or 0 - - // Each property occupies a certain number of slots, highly synchronized with the properties enum (GUI_PROP_BOOL ... GUI_PROP_SECTION) - // NOTE: If you add a custom property type make sure to add the number of slots it occupies here !! - const int propSlots[] = {1,1,1,2,1,3,4,5,5,5,1}; - - Rectangle absoluteBounds = {0}; // total bounds for all of the properties (unclipped) - // We need to loop over all the properties to get total height so we can see if we need a scrollbar or not - for(int p=0; p bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) ? true : false; - if(!useScrollBar && scroll != 0) scroll = 0; // make sure scroll is 0 when there's no scrollbar - - Rectangle scrollBarBounds = {bounds.x + GuiGetStyle(LISTVIEW, BORDER_WIDTH), bounds.y + GuiGetStyle(LISTVIEW, BORDER_WIDTH), - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH)}; - - absoluteBounds.x = bounds.x + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - absoluteBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH) + scroll; - absoluteBounds.width = bounds.width - 2*(GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH)); - - if(useScrollBar) { - if(GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE) - absoluteBounds.x += GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); // scrollbar is on the LEFT, adjust bounds - else - scrollBarBounds.x = bounds.x + bounds.width - GuiGetStyle(LISTVIEW, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); // scrollbar is on the RIGHT - absoluteBounds.width -= GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); // adjust width to fit the scrollbar - } - - int maxScroll = absoluteBounds.height + 2*(GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH))-bounds.height; - - // Update control - //-------------------------------------------------------------------- - Vector2 mousePos = GetMousePosition(); - // NOTE: most of the update code is actually done in the draw control section - if ((state != STATE_DISABLED) && !guiLocked) { - if(!CheckCollisionPointRec(mousePos, bounds)) { - propFocused = -1; - } - - if (useScrollBar) - { - int wheelMove = GetMouseWheelMove(); - scroll += wheelMove*count; - if(-scroll > maxScroll) scroll = -maxScroll; - } - } - //-------------------------------------------------------------------- - - - // Draw control - //-------------------------------------------------------------------- - DrawRectangleRec(bounds, Fade(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR)), guiAlpha) ); // Draw background - DrawRectangleLinesEx(bounds, GuiGetStyle(DEFAULT, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), guiAlpha)); // Draw border - - BeginScissorMode(absoluteBounds.x, bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), absoluteBounds.width, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH)); - int currentHeight = 0; - for(int p=0; p= bounds.y && absoluteBounds.y + currentHeight <= bounds.y + bounds.height) - { - Rectangle propBounds = {absoluteBounds.x, absoluteBounds.y + currentHeight, absoluteBounds.width, height}; - Color textColor = Fade(GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL)), guiAlpha); - int propState = STATE_NORMAL; - - // Get the state of this property and do some initial drawing - if(PROP_CHECK_FLAG(&props[p], GUI_PFLAG_DISABLED)) { - propState = STATE_DISABLED; - propBounds.height += 1; - DrawRectangleRec(propBounds, Fade(GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED)), guiAlpha)); - propBounds.height -= 1; - textColor = Fade(GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED)), guiAlpha); - } else { - if(CheckCollisionPointRec(mousePos, propBounds) && !guiLocked) { - if(IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) { - propState = STATE_PRESSED; - //DrawRectangleRec(propRect, Fade(GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED)), guiAlpha)); - textColor = Fade(GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED)), guiAlpha); - } else { - propState = STATE_FOCUSED; - propFocused = p; - //DrawRectangleRec(propRect, Fade(GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED)), guiAlpha)); - textColor = Fade(GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED)), guiAlpha); - } - } else propState = STATE_NORMAL; - } - - if(propState == STATE_DISABLED) GuiSetState(propState); - switch(props[p].type) - { - case GUI_PROP_BOOL: { - // draw property name - GuiDrawText(props[p].name, (Rectangle){propBounds.x + PROPERTY_PADDING, propBounds.y, propBounds.width/2-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_LEFT, textColor); - if(propState == STATE_PRESSED) props[p].value.vbool = !props[p].value.vbool; // toggle the property value when clicked - - // draw property value - const bool locked = guiLocked; - GuiLock(); // lock the checkbox since we changed the value manually - GuiCheckBox((Rectangle){propBounds.x+propBounds.width/2, propBounds.y + height/4, height/2, height/2}, props[p].value.vbool? "Yes" : "No", &props[p].value.vbool); - if(!locked) GuiUnlock(); // only unlock when needed - } break; - - case GUI_PROP_INT: - // draw property name - GuiDrawText(props[p].name, (Rectangle){propBounds.x + PROPERTY_PADDING, propBounds.y, propBounds.width/2-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_LEFT, textColor); - // draw property value - props[p].value.vint.val = GuiDMSpinner((Rectangle){propBounds.x+propBounds.width/2, propBounds.y + 1, propBounds.width/2, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 2}, - props[p].value.vint.val, props[p].value.vint.min, props[p].value.vint.max, props[p].value.vint.step, 0, (propState == STATE_FOCUSED) ); - break; - - case GUI_PROP_FLOAT: - // draw property name - GuiDrawText(props[p].name, (Rectangle){propBounds.x + PROPERTY_PADDING, propBounds.y, propBounds.width/2-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_LEFT, textColor); - // draw property value - props[p].value.vfloat.val = GuiDMSpinner((Rectangle){propBounds.x+propBounds.width/2, propBounds.y + 1, propBounds.width/2, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 2}, - props[p].value.vfloat.val, props[p].value.vfloat.min, props[p].value.vfloat.max, props[p].value.vfloat.step, props[p].value.vfloat.precision, (propState == STATE_FOCUSED) ); - break; - - case GUI_PROP_TEXT: { - Rectangle titleBounds = { propBounds.x, propBounds.y, propBounds.width, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) }; - // Collapse/Expand property on click - if((propState == STATE_PRESSED) && CheckCollisionPointRec(mousePos, titleBounds)) - PROP_TOGGLE_FLAG(&props[p], GUI_PFLAG_COLLAPSED); - - // draw property name - GuiDrawText(PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED) ? PROPERTY_COLLAPSED_ICON : PROPERTY_EXPANDED_ICON, titleBounds, TEXT_ALIGN_LEFT, textColor); - GuiDrawText(props[p].name, (Rectangle){propBounds.x+PROPERTY_ICON_SIZE+PROPERTY_PADDING, propBounds.y, propBounds.width-PROPERTY_ICON_SIZE-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_LEFT, textColor); - GuiDrawText(TextFormat("%i/%i", strlen(props[p].value.vtext.val), props[p].value.vtext.size), (Rectangle){propBounds.x+propBounds.width/2, propBounds.y + 1, propBounds.width/2, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 2}, TEXT_ALIGN_LEFT, textColor); - - // draw property value - if(!PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED)) - GuiTextBox((Rectangle){propBounds.x, propBounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)+1, propBounds.width, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2}, props[p].value.vtext.val, props[p].value.vtext.size, (propState == STATE_FOCUSED)); - } break; - - case GUI_PROP_SELECT: { - // TODO: Create a custom dropdownbox control instead of using the raygui combobox - // draw property name - GuiDrawText(props[p].name, (Rectangle){propBounds.x + PROPERTY_PADDING, propBounds.y, propBounds.width/2-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_LEFT, textColor); - // draw property value - GuiComboBox((Rectangle){propBounds.x+propBounds.width/2, propBounds.y + 1, propBounds.width/2, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 2}, - props[p].value.vselect.val, &props[p].value.vselect.active); - } break; - - case GUI_PROP_VECTOR2: case GUI_PROP_VECTOR3: case GUI_PROP_VECTOR4: { - Rectangle titleBounds = { propBounds.x, propBounds.y, propBounds.width, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) }; - // Collapse/Expand property on click - if((propState == STATE_PRESSED) && CheckCollisionPointRec(mousePos, titleBounds)) - PROP_TOGGLE_FLAG(&props[p], GUI_PFLAG_COLLAPSED); - - const char* fmt = ""; - if(props[p].type == GUI_PROP_VECTOR2) fmt = TextFormat("[%.0f, %.0f]", props[p].value.v2.x, props[p].value.v2.y); - else if(props[p].type == GUI_PROP_VECTOR3) fmt = TextFormat("[%.0f, %.0f, %.0f]", props[p].value.v3.x, props[p].value.v3.y, props[p].value.v3.z); - else fmt = TextFormat("[%.0f, %.0f, %.0f, %.0f]", props[p].value.v4.x, props[p].value.v4.y, props[p].value.v4.z, props[p].value.v4.w); - - // draw property name - GuiDrawText(PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED) ? PROPERTY_COLLAPSED_ICON : PROPERTY_EXPANDED_ICON, titleBounds, TEXT_ALIGN_LEFT, textColor); - GuiDrawText(props[p].name, (Rectangle){propBounds.x+PROPERTY_ICON_SIZE+PROPERTY_PADDING, propBounds.y, propBounds.width-PROPERTY_ICON_SIZE-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_LEFT, textColor); - GuiDrawText(fmt, (Rectangle){propBounds.x+propBounds.width/2, propBounds.y + 1, propBounds.width/2, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 2}, TEXT_ALIGN_LEFT, textColor); - - // draw X, Y, Z, W values (only when expanded) - if(!PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED)) { - Rectangle slotBounds = { propBounds.x, propBounds.y+GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)+1, propBounds.width, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2}; - Rectangle lblBounds = { propBounds.x+PROPERTY_PADDING, slotBounds.y, GuiGetTextWidth("A"), slotBounds.height}; - Rectangle valBounds = { lblBounds.x+lblBounds.width+PROPERTY_PADDING, slotBounds.y, propBounds.width-lblBounds.width-2*PROPERTY_PADDING, slotBounds.height}; - GuiDrawText("X", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.v2.x = GuiDMSpinner(valBounds, props[p].value.v2.x, 0.0, 0.0, 1.0, PROPERTY_DECIMAL_DIGITS, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - slotBounds.y += GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - lblBounds.y = valBounds.y = slotBounds.y; - GuiDrawText("Y", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.v2.y = GuiDMSpinner(valBounds, props[p].value.v2.y, 0.0, 0.0, 1.0, PROPERTY_DECIMAL_DIGITS, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - slotBounds.y += GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - lblBounds.y = valBounds.y = slotBounds.y; - if(props[p].type >= GUI_PROP_VECTOR3) { - GuiDrawText("Z", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.v3.z = GuiDMSpinner(valBounds, props[p].value.v3.z, 0.0, 0.0, 1.0, PROPERTY_DECIMAL_DIGITS, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - slotBounds.y += GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - lblBounds.y = valBounds.y = slotBounds.y; - } - - if(props[p].type >= GUI_PROP_VECTOR4) { - GuiDrawText("W", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.v4.w = GuiDMSpinner(valBounds, props[p].value.v4.w, 0.0, 0.0, 1.0, PROPERTY_DECIMAL_DIGITS, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - } - } - } break; - - case GUI_PROP_RECT:{ - Rectangle titleBounds = { propBounds.x, propBounds.y, propBounds.width, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) }; - // Collapse/Expand property on click - if((propState == STATE_PRESSED) && CheckCollisionPointRec(mousePos, titleBounds)) - PROP_TOGGLE_FLAG(&props[p], GUI_PFLAG_COLLAPSED); - - // draw property name - GuiDrawText(PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED) ? PROPERTY_COLLAPSED_ICON : PROPERTY_EXPANDED_ICON, titleBounds, TEXT_ALIGN_LEFT, textColor); - GuiDrawText(props[p].name, (Rectangle){propBounds.x+PROPERTY_ICON_SIZE+PROPERTY_PADDING, propBounds.y, propBounds.width-PROPERTY_ICON_SIZE-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_LEFT, textColor); - GuiDrawText(TextFormat("[%.0f, %.0f, %.0f, %.0f]", props[p].value.vrect.x, props[p].value.vrect.y, props[p].value.vrect.width, props[p].value.vrect.height), - (Rectangle){propBounds.x+propBounds.width/2, propBounds.y + 1, propBounds.width/2, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 2}, TEXT_ALIGN_LEFT, textColor); - - // draw X, Y, Width, Height values (only when expanded) - if(!PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED)) { - Rectangle slotBounds = { propBounds.x, propBounds.y+GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)+1, propBounds.width, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2}; - Rectangle lblBounds = { propBounds.x+PROPERTY_PADDING, slotBounds.y, GuiGetTextWidth("Height"), slotBounds.height}; - Rectangle valBounds = { lblBounds.x+lblBounds.width+PROPERTY_PADDING, slotBounds.y, propBounds.width-lblBounds.width-2*PROPERTY_PADDING, slotBounds.height}; - GuiDrawText("X", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.vrect.x = GuiDMSpinner(valBounds, props[p].value.vrect.x, 0.0, 0.0, 1.0, 0, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - slotBounds.y += GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - lblBounds.y = valBounds.y = slotBounds.y; - GuiDrawText("Y", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.vrect.y = GuiDMSpinner(valBounds, props[p].value.vrect.y, 0.0, 0.0, 1.0, 0, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - slotBounds.y += GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - lblBounds.y = valBounds.y = slotBounds.y; - GuiDrawText("Width", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.vrect.width = GuiDMSpinner(valBounds, props[p].value.vrect.width, 0.0, 0.0, 1.0, 0, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - slotBounds.y += GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - lblBounds.y = valBounds.y = slotBounds.y; - GuiDrawText("Height", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.vrect.height = GuiDMSpinner(valBounds, props[p].value.vrect.height, 0.0, 0.0, 1.0, 0, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - } - } break; - - - case GUI_PROP_COLOR: { - Rectangle titleBounds = { propBounds.x, propBounds.y, propBounds.width, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) }; - // Collapse/Expand property on click - if((propState == STATE_PRESSED) && CheckCollisionPointRec(mousePos, titleBounds)) - PROP_TOGGLE_FLAG(&props[p], GUI_PFLAG_COLLAPSED); - - // draw property name - GuiDrawText(PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED) ? PROPERTY_COLLAPSED_ICON : PROPERTY_EXPANDED_ICON, titleBounds, TEXT_ALIGN_LEFT, textColor); - GuiDrawText(props[p].name, (Rectangle){propBounds.x+PROPERTY_ICON_SIZE+PROPERTY_PADDING, propBounds.y+1, propBounds.width-PROPERTY_ICON_SIZE-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2}, TEXT_ALIGN_LEFT, textColor); - DrawLineEx( (Vector2){propBounds.x+propBounds.width/2, propBounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 5}, (Vector2){propBounds.x+propBounds.width, propBounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 5}, 6.0f, props[p].value.vcolor); - const char* fmt = TextFormat("#%02X%02X%02X%02X", props[p].value.vcolor.r, props[p].value.vcolor.g, props[p].value.vcolor.b, props[p].value.vcolor.a); - char clip[10] = "\0"; - memcpy(clip, fmt, 10*sizeof(char)); // copy to temporary buffer since we can't be sure when TextFormat() will be called again and our text will be overwritten - GuiDrawText(fmt, (Rectangle){propBounds.x+propBounds.width/2, propBounds.y + 1, propBounds.width/2, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 2}, TEXT_ALIGN_LEFT, textColor); - - // draw R, G, B, A values (only when expanded) - if(!PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED)) { - Rectangle slotBounds = { propBounds.x, propBounds.y+GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)+1, propBounds.width, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2}; - Rectangle lblBounds = { propBounds.x+PROPERTY_PADDING, slotBounds.y, GuiGetTextWidth("A"), slotBounds.height}; - Rectangle valBounds = { lblBounds.x+lblBounds.width+PROPERTY_PADDING, slotBounds.y, GuiGetTextWidth("000000"), slotBounds.height}; - Rectangle sbarBounds = { valBounds.x + valBounds.width + PROPERTY_PADDING, slotBounds.y, slotBounds.width - 3*PROPERTY_PADDING - lblBounds.width - valBounds.width, slotBounds.height }; - - if(sbarBounds.width <= GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2) valBounds.width = propBounds.width-lblBounds.width-2*PROPERTY_PADDING; // hide slider when no space - // save current scrollbar style - int tmpSliderPadding = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING); - int tmpPadding = GuiGetStyle(SCROLLBAR, SCROLL_PADDING); - int tmpBorder = GuiGetStyle(SCROLLBAR, BORDER_WIDTH); - int tmpSliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); - int tmpArrows = GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE); - Color tmpBG1 = GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED)); - // set a custom scrollbar style - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING, 3); - GuiSetStyle(SCROLLBAR, SCROLL_PADDING, 10); - GuiSetStyle(SCROLLBAR, BORDER_WIDTH, 0); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, 6); - GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, 0); - GuiSetStyle(DEFAULT, BORDER_COLOR_DISABLED, GuiGetStyle(DEFAULT, BACKGROUND_COLOR)); // disable scrollbar background - - GuiDrawText("R", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.vcolor.r = GuiDMValueBox(valBounds, props[p].value.vcolor.r, 0.0, 255.0, 0, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - if(sbarBounds.width > GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2) - props[p].value.vcolor.r = GuiScrollBar(sbarBounds, props[p].value.vcolor.r, 0, 255); - slotBounds.y += GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - lblBounds.y = valBounds.y = sbarBounds.y = slotBounds.y; - - GuiDrawText("G", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.vcolor.g = GuiDMValueBox(valBounds, props[p].value.vcolor.g, 0.0, 255.0, 0, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - if(sbarBounds.width > GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2) - props[p].value.vcolor.g = GuiScrollBar(sbarBounds, props[p].value.vcolor.g, 0, 255); - slotBounds.y += GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - lblBounds.y = valBounds.y = sbarBounds.y = slotBounds.y; - - GuiDrawText("B", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.vcolor.b = GuiDMValueBox(valBounds, props[p].value.vcolor.b, 0.0, 255.0, 0, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - if(sbarBounds.width > GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2) - props[p].value.vcolor.b = GuiScrollBar(sbarBounds, props[p].value.vcolor.b, 0, 255); - slotBounds.y += GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - lblBounds.y = valBounds.y = sbarBounds.y = slotBounds.y; - - GuiDrawText("A", lblBounds, TEXT_ALIGN_LEFT, textColor); - props[p].value.vcolor.a = GuiDMValueBox(valBounds, props[p].value.vcolor.a, 0.0, 255.0, 0, (propState == STATE_FOCUSED) && CheckCollisionPointRec(mousePos, slotBounds) ); - if(sbarBounds.width > GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)-2) - props[p].value.vcolor.a = GuiScrollBar(sbarBounds, props[p].value.vcolor.a, 0, 255); - - // load saved scrollbar style - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING, tmpSliderPadding); - GuiSetStyle(SCROLLBAR, SCROLL_PADDING, tmpPadding); - GuiSetStyle(SCROLLBAR, BORDER_WIDTH, tmpBorder); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, tmpSliderSize); - GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, tmpArrows); - GuiSetStyle(DEFAULT, BORDER_COLOR_DISABLED, ColorToInt(tmpBG1)); - } - - // support COPY/PASTE (need to do this here since GuiDMValueBox() also has COPY/PASTE so we need to overwrite it) - if((propState == STATE_FOCUSED)) { - if(IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_C)) - SetClipboardText(clip); - else if(IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_V)){ - unsigned int a = props[p].value.vcolor.a, r = props[p].value.vcolor.r, g=props[p].value.vcolor.g, b=props[p].value.vcolor.b; - sscanf(GetClipboardText(), "#%02X%02X%02X%02X", &r, &g, &b, &a); - props[p].value.vcolor.r=r; props[p].value.vcolor.g=g; props[p].value.vcolor.b=b; props[p].value.vcolor.a=a; - } - } - } break; - - case GUI_PROP_SECTION: { - Rectangle titleBounds = { propBounds.x, propBounds.y, propBounds.width, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) }; - // Collapse/Expand section on click - if( (propState == STATE_PRESSED) && CheckCollisionPointRec(mousePos, titleBounds) ) - PROP_TOGGLE_FLAG(&props[p], GUI_PFLAG_COLLAPSED); - - if(!PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED)) { - GuiDrawText(PROPERTY_EXPANDED_ICON, titleBounds, TEXT_ALIGN_LEFT, textColor); - GuiDrawText(props[p].name, (Rectangle){propBounds.x+PROPERTY_ICON_SIZE+PROPERTY_PADDING, propBounds.y, propBounds.width-PROPERTY_ICON_SIZE-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_CENTER, textColor); - } else { - GuiDrawText(PROPERTY_COLLAPSED_ICON, titleBounds, TEXT_ALIGN_LEFT, textColor); - GuiDrawText(TextFormat("%s [%i]", props[p].name, props[p].value.vsection), (Rectangle){propBounds.x+PROPERTY_ICON_SIZE+PROPERTY_PADDING, propBounds.y, propBounds.width-PROPERTY_ICON_SIZE-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_CENTER, textColor); - } - } break; - - - // NOTE: Add your custom property here !! - default: { - // draw property name - GuiDrawText(props[p].name, (Rectangle){propBounds.x + PROPERTY_PADDING, propBounds.y, propBounds.width/2-PROPERTY_PADDING, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT)}, TEXT_ALIGN_LEFT, textColor); - // draw property type - GuiDrawText(TextFormat("TYPE %i", props[p].type), (Rectangle){propBounds.x+propBounds.width/2, propBounds.y + 1, propBounds.width/2, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) - 2}, TEXT_ALIGN_LEFT, textColor); - } break; - - } // end of switch() - - GuiSetState(state); - } - - currentHeight += height + 1; - - // Skip collapsed section. Don't put this code inside the switch !! - if(props[p].type == GUI_PROP_SECTION && (PROP_CHECK_FLAG(&props[p], GUI_PFLAG_COLLAPSED))) p += props[p].value.vsection; - } // end for - EndScissorMode(); - - if(useScrollBar) { - scroll = -GuiScrollBar(scrollBarBounds, -scroll, 0, maxScroll); - *scrollIndex = scroll; - } - //-------------------------------------------------------------------- - - if(focus != NULL) *focus = propFocused; -} - -bool GuiDMSaveProperties(const char* file, GuiDMProperty* props, int count) { - if(file == NULL || props == NULL) return false; - if(count == 0) return true; - - FILE* f = fopen(file, "w"); - if(f == NULL) return false; - - // write header - fprintf(f, "#\n# Property types:\n" - "# b // Bool\n" - "# i // Int\n" - "# f // Float\n" - "# t // Text\n" - "# l // Select\n" - "# g // Section (Group)\n" - "# v2 // Vector 2D\n" - "# v3 // Vector 3D\n" - "# v4 // Vector 4D\n" - "# r // Rectangle\n" - "# c // Color\n" - "#\n\n"); - for(int p=0; p= 1) - { - DrawText(TextFormat("FOCUS:%i | SCROLL:%i | FPS:%i", focus, scroll, GetFPS()), prop[8].value.v2.x, prop[8].value.v2.y, 20, prop[11].value.vcolor); - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - GuiDMSaveProperties("test.props", prop, SIZEOF(prop)); // Save properties to `test.props` file at exit - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/property_list/test.props b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/property_list/test.props deleted file mode 100644 index 3208dd0..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/property_list/test.props +++ /dev/null @@ -1,27 +0,0 @@ -# -# Property types: -# b // Bool -# i // Int -# f // Float -# t // Text -# l // Select -# g // Section (Group) -# v2 // Vector 2D -# v3 // Vector 3D -# v4 // Vector 4D -# r // Rectangle -# c // Color -# - -b Bool 0 1 -g #102#SECTION 0 2 -i Int 0 123 0 0 1 -f Float 0 0.990000 0.000000 0.000000 1.000000 3 -t Text 1 Hello! 30 -l Select 0 ONE;TWO;THREE;FOUR 3 -i Int Range 0 32 0 100 1 -r Rect 1 0 0 100 200 -v2 Vec2 1 20.000000 20.000000 -v3 Vec3 1 12.000000 13.000000 14.000000 -v4 Vec4 1 12.000000 13.000000 14.000000 15.000000 -c Color 1 94 68 197 160 diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/raygui.ico b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/raygui.ico deleted file mode 100644 index cc8498b..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/raygui.ico and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/raygui.rc b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/raygui.rc deleted file mode 100644 index ddfb7f2..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/raygui.rc +++ /dev/null @@ -1,27 +0,0 @@ -GLFW_ICON ICON "raygui.ico" - -1 VERSIONINFO -FILEVERSION 4,0,0,0 -PRODUCTVERSION 4,0,0,0 -BEGIN - BLOCK "StringFileInfo" - BEGIN - //BLOCK "080904E4" // English UK - BLOCK "040904E4" // English US - BEGIN - //VALUE "CompanyName", "raylib technologies" - VALUE "FileDescription", "raygui application (www.raylib.com)" - VALUE "FileVersion", "4.0.0" - VALUE "InternalName", "raygui app" - VALUE "LegalCopyright", "(c) 2023 Ramon Santamaria (@raysan5)" - //VALUE "OriginalFilename", "raygui_app.exe" - VALUE "ProductName", "raygui app" - VALUE "ProductVersion", "4.0.0" - END - END - BLOCK "VarFileInfo" - BEGIN - //VALUE "Translation", 0x809, 1252 // English UK - VALUE "Translation", 0x409, 1252 // English US - END -END diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/scroll_panel/scroll_panel.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/scroll_panel/scroll_panel.c deleted file mode 100644 index 9c2ae1f..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/scroll_panel/scroll_panel.c +++ /dev/null @@ -1,153 +0,0 @@ -/******************************************************************************************* -* -* raygui - Controls test -* -* TEST CONTROLS: -* - GuiScrollPanel() -* -* DEPENDENCIES: -* raylib 4.0 - Windowing/input management and drawing. -* raygui 3.0 - Immediate-mode GUI controls. -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* COMPILATION (Linux - gcc): -* gcc -o $(NAME_PART) $(FILE_NAME) -I../../src -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2019-2024 Vlad Adrian (@Demizdor) and Ramon Santamaria (@raysan5) -* -**********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "../../src/raygui.h" - - -static void DrawStyleEditControls(void); // Draw and process scroll bar style edition controls - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // Initialization - //--------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raygui - GuiScrollPanel()"); - - Rectangle panelRec = { 20, 40, 200, 150 }; - Rectangle panelContentRec = {0, 0, 340, 340 }; - Rectangle panelView = { 0 }; - Vector2 panelScroll = { 99, -20 }; - - bool showContentArea = true; - - SetTargetFPS(60); - //--------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // TODO: Implement required update logic - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText(TextFormat("[%f, %f]", panelScroll.x, panelScroll.y), 4, 4, 20, RED); - - GuiScrollPanel(panelRec, NULL, panelContentRec, &panelScroll, &panelView); - - BeginScissorMode(panelView.x, panelView.y, panelView.width, panelView.height); - GuiGrid((Rectangle){panelRec.x + panelScroll.x, panelRec.y + panelScroll.y, panelContentRec.width, panelContentRec.height}, NULL, 16, 3, NULL); - EndScissorMode(); - - if (showContentArea) DrawRectangle(panelRec.x + panelScroll.x, panelRec.y + panelScroll.y, panelContentRec.width, panelContentRec.height, Fade(RED, 0.1)); - - DrawStyleEditControls(); - - GuiCheckBox((Rectangle){ 565, 80, 20, 20 }, "SHOW CONTENT AREA", &showContentArea); - - GuiSliderBar((Rectangle){ 590, 385, 145, 15}, "WIDTH", TextFormat("%i", (int)panelContentRec.width), &panelContentRec.width, 1, 600); - GuiSliderBar((Rectangle){ 590, 410, 145, 15 }, "HEIGHT", TextFormat("%i", (int)panelContentRec.height), &panelContentRec.height, 1, 400); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -// Draw and process scroll bar style edition controls -static void DrawStyleEditControls(void) -{ - // ScrollPanel style controls - //---------------------------------------------------------- - GuiGroupBox((Rectangle){ 550, 170, 220, 205 }, "SCROLLBAR STYLE"); - - int style = GuiGetStyle(SCROLLBAR, BORDER_WIDTH); - GuiLabel((Rectangle){ 555, 195, 110, 10 }, "BORDER_WIDTH"); - GuiSpinner((Rectangle){ 670, 190, 90, 20 }, NULL, &style, 0, 6, false); - GuiSetStyle(SCROLLBAR, BORDER_WIDTH, style); - - style = GuiGetStyle(SCROLLBAR, ARROWS_SIZE); - GuiLabel((Rectangle){ 555, 220, 110, 10 }, "ARROWS_SIZE"); - GuiSpinner((Rectangle){ 670, 215, 90, 20 }, NULL, &style, 4, 14, false); - GuiSetStyle(SCROLLBAR, ARROWS_SIZE, style); - - style = GuiGetStyle(SCROLLBAR, SLIDER_PADDING); - GuiLabel((Rectangle){ 555, 245, 110, 10 }, "SLIDER_PADDING"); - GuiSpinner((Rectangle){ 670, 240, 90, 20 }, NULL, &style, 0, 14, false); - GuiSetStyle(SCROLLBAR, SLIDER_PADDING, style); - - bool scrollBarArrows = GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE); - GuiCheckBox((Rectangle){ 565, 280, 20, 20 }, "ARROWS_VISIBLE", &scrollBarArrows); - GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, scrollBarArrows); - - style = GuiGetStyle(SCROLLBAR, SLIDER_PADDING); - GuiLabel((Rectangle){ 555, 325, 110, 10 }, "SLIDER_PADDING"); - GuiSpinner((Rectangle){ 670, 320, 90, 20 }, NULL, &style, 0, 14, false); - GuiSetStyle(SCROLLBAR, SLIDER_PADDING, style); - - style = GuiGetStyle(SCROLLBAR, SLIDER_WIDTH); - GuiLabel((Rectangle){ 555, 350, 110, 10 }, "SLIDER_WIDTH"); - GuiSpinner((Rectangle){ 670, 345, 90, 20 }, NULL, &style, 2, 100, false); - GuiSetStyle(SCROLLBAR, SLIDER_WIDTH, style); - - const char *text = GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE? "SCROLLBAR: LEFT" : "SCROLLBAR: RIGHT"; - bool toggleScrollBarSide = GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE); - GuiToggle((Rectangle){ 560, 110, 200, 35 }, text, &toggleScrollBarSide); - GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, toggleScrollBarSide); - //---------------------------------------------------------- - - // ScrollBar style controls - //---------------------------------------------------------- - GuiGroupBox((Rectangle){ 550, 20, 220, 135 }, "SCROLLPANEL STYLE"); - - style = GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); - GuiLabel((Rectangle){ 555, 35, 110, 10 }, "SCROLLBAR_WIDTH"); - GuiSpinner((Rectangle){ 670, 30, 90, 20 }, NULL, &style, 6, 30, false); - GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, style); - - style = GuiGetStyle(DEFAULT, BORDER_WIDTH); - GuiLabel((Rectangle){ 555, 60, 110, 10 }, "BORDER_WIDTH"); - GuiSpinner((Rectangle){ 670, 55, 90, 20 }, NULL, &style, 0, 20, false); - GuiSetStyle(DEFAULT, BORDER_WIDTH, style); - //---------------------------------------------------------- -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/standalone/raygui_custom_backend.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/standalone/raygui_custom_backend.h deleted file mode 100644 index e430d15..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/standalone/raygui_custom_backend.h +++ /dev/null @@ -1,181 +0,0 @@ -/******************************************************************************************* -* -* raygui - Standalone mode custom backend -* -* Just edit this file to include your custom implementation to your graphic API -* -* LICENSE: -* -* Copyright (c) -* -**********************************************************************************************/ - -//#include "my_cool_graphic_api.h" - -//---------------------------------------------------------------------------------- -// Defines and Macros -// TODO: Define input keys required by raygui -//---------------------------------------------------------------------------------- -#define KEY_RIGHT 262 -#define KEY_LEFT 263 -#define KEY_DOWN 264 -#define KEY_UP 265 -#define KEY_BACKSPACE 259 -#define KEY_ENTER 257 -#define MOUSE_LEFT_BUTTON 0 - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -// TODO: Define required structures, maybe Font/Texture2D should be defined here? -//---------------------------------------------------------------------------------- -// ... - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -// ... - -//---------------------------------------------------------------------------------- -// Module Functions Definition -// TODO: Define all raygui required functions (previously provided by raylib) -//---------------------------------------------------------------------------------- - -//------------------------------------------------------------------------------- -// Input required functions -//------------------------------------------------------------------------------- -static Vector2 GetMousePosition(void) -{ - Vector2 position = { 0 }; - - // TODO: Mouse position - - return position; -} - -static int GetMouseWheelMove(void) -{ - // TODO: Mouse wheel movement variation, reseted every frame - - return 0; -} - -static bool IsMouseButtonDown(int button) -{ - // TODO: Return true while mouse button [0..2] is being down - - return false; -} - -static bool IsMouseButtonPressed(int button) -{ - // TODO: Return true when mouse button [0..2] has been pressed: up->down - - return false; -} - -static bool IsMouseButtonReleased(int button) -{ - // TODO: Return true when mouse button [0..2] has been released: down->up - - return false; -} - -static bool IsKeyDown(int key) -{ - // TODO: Return true while key is being down - - return false; -} - -static bool IsKeyPressed(int key) -{ - // TODO: Return true when key has been pressed: up->down - - return false; -} - -// USED IN: GuiTextBox(), GuiValueBox() -static int GetKeyPressed(void) -{ - // TODO: Return last key pressed (up->down) in the frame - - return 0; -} - -//------------------------------------------------------------------------------- -// Drawing required functions -//------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color) -{ - // TODO: Draw rectangle on the screen -} - -// USED IN: GuiColorPicker() -static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4) -{ - // TODO: Draw rectangle with gradients (4 vertex colors) on the screen -} - -// USED IN: GuiDropdownBox(), GuiScrollBar() -static void DrawTriangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color) -{ - // TODO: Draw triangle on the screen, required for arrows -} - -//------------------------------------------------------------------------------- -// Text required functions -//------------------------------------------------------------------------------- -// USED IN: GuiLoadStyleDefault() -static Font GetFontDefault(void) -{ - Font font = { 0 }; - - // TODO: Return default rendering Font for the UI - - return font; -} - -// USED IN: GetTextWidth() -static Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing) -{ - Vector2 size = { 0 }; - - // TODO: Return text size (width, height) on screen depending on the Font, text, fontSize and spacing - - return size; -} - -// USED IN: GuiDrawText() -static void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint) -{ - // TODO: Draw text on the screen -} - -//------------------------------------------------------------------------------- -// GuiLoadStyle() required functions -//------------------------------------------------------------------------------- -static Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int glyphCount) -{ - Font font = { 0 }; - - // TODO: Load a new font from a file - - return font; -} - -static char *LoadText(const char *fileName) -{ - // TODO: Load text file data, used by GuiLoadStyle() to load characters list required on Font generation, - // this is a .rgs feature, probably this function is not required in most cases - - return NULL; -} - -static const char *GetDirectoryPath(const char *filePath) -{ - // TODO: Get directory path for .rgs file, required to look for a possible .ttf/.otf font file referenced, - // this is a .rgs feature, probably this function is not required in most cases - - return NULL; -} - diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/standalone/raygui_standalone.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/standalone/raygui_standalone.c deleted file mode 100644 index 2fbc8a2..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/standalone/raygui_standalone.c +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************************* -* -* raygui - Standalone mode usage template -* -* DEPENDENCIES: -* raygui 2.6 - Immediate-mode GUI controls. -* -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2020 Ramon Santamaria (@raysan5) -* -**********************************************************************************************/ - -#define RAYGUI_IMPLEMENTATION -#define RAYGUI_STANDALONE -#include "../../src/raygui.h" - -#include "custom_backend.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // TODO: Initialize your systems (window, graphics, inputs) - - // TODO: Create your game loop - { - // TODO: Use raygui API - } - - // TODO: De-initialize all resources - - return 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/style_selector/style_selector.c b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/style_selector/style_selector.c deleted file mode 100644 index b4afe66..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/style_selector/style_selector.c +++ /dev/null @@ -1,145 +0,0 @@ -/******************************************************************************************* -* -* raygui - style selector -* -* DEPENDENCIES: -* raylib 4.5 - Windowing/input management and drawing -* raygui 3.5 - Immediate-mode GUI controls with custom styling and icons -* -* COMPILATION (Windows - MinGW): -* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) -* -**********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -//#define RAYGUI_CUSTOM_ICONS // It requires providing gui_icons.h in the same directory -//#include "gui_icons.h" // External icons data provided, it can be generated with rGuiIcons tool -#include "../../src/raygui.h" - -// raygui embedded styles -// NOTE: Included in the same order as selector -#define MAX_GUI_STYLES_AVAILABLE 12 // NOTE: Included light style -#include "../styles/style_jungle.h" // raygui style: jungle -#include "../styles/style_candy.h" // raygui style: candy -#include "../styles/style_lavanda.h" // raygui style: lavanda -#include "../styles/style_cyber.h" // raygui style: cyber -#include "../styles/style_terminal.h" // raygui style: terminal -#include "../styles/style_ashes.h" // raygui style: ashes -#include "../styles/style_bluish.h" // raygui style: bluish -#include "../styles/style_dark.h" // raygui style: dark -#include "../styles/style_cherry.h" // raygui style: cherry -#include "../styles/style_sunny.h" // raygui style: sunny -#include "../styles/style_enefete.h" // raygui style: enefete - -#include // Required for: strcpy() - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main() -{ - // Initialization - //--------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 480; - - InitWindow(screenWidth, screenHeight, "raygui - styles selector"); - SetExitKey(0); - - // Custom GUI font loading - //Font font = LoadFontEx("fonts/custom_font.ttf", 12, 0, 0); - //GuiSetFont(font); - - bool exitWindow = false; - bool showMessageBox = false; - - // Load default style - GuiLoadStyleBluish(); - int visualStyleActive = 4; - int prevVisualStyleActive = 4; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!exitWindow) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - exitWindow = WindowShouldClose(); - - if (IsKeyPressed(KEY_ESCAPE)) showMessageBox = !showMessageBox; - - if (IsFileDropped()) - { - FilePathList droppedFiles = LoadDroppedFiles(); - - if ((droppedFiles.count > 0) && IsFileExtension(droppedFiles.paths[0], ".rgs")) GuiLoadStyle(droppedFiles.paths[0]); - - UnloadDroppedFiles(droppedFiles); // Clear internal buffers - } - - if (visualStyleActive != prevVisualStyleActive) - { - // Reset to default internal style - // NOTE: Required to unload any previously loaded font texture - GuiLoadStyleDefault(); - - switch (visualStyleActive) - { - case 1: GuiLoadStyleJungle(); break; - case 2: GuiLoadStyleCandy(); break; - case 3: GuiLoadStyleLavanda(); break; - case 4: GuiLoadStyleCyber(); break; - case 5: GuiLoadStyleTerminal(); break; - case 6: GuiLoadStyleAshes(); break; - case 7: GuiLoadStyleBluish(); break; - case 8: GuiLoadStyleDark(); break; - case 9: GuiLoadStyleCherry(); break; - case 10: GuiLoadStyleSunny(); break; - case 11: GuiLoadStyleEnefete(); break; - default: break; - } - - prevVisualStyleActive = visualStyleActive; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); - - // Visuals options - GuiLabel((Rectangle){ 10, 10, 60, 24 }, "Style:"); - GuiComboBox((Rectangle){ 60,10, 120, 24 }, "default;Jungle;Candy;Lavanda;Cyber;Terminal;Ashes;Bluish;Dark;Cherry;Sunny;Enefete", &visualStyleActive); - - DrawRectangle(10, 44, GuiGetFont().texture.width, GuiGetFont().texture.height, BLACK); - DrawTexture(GuiGetFont().texture, 10, 44, WHITE); - DrawRectangleLines(10, 44, GuiGetFont().texture.width, GuiGetFont().texture.height, - GetColor(GuiGetStyle(DEFAULT, LINE_COLOR))); - - //GuiSetIconScale(2); - //GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_RIGHT); - //GuiButton((Rectangle){ 25, 255, 300, 30 }, GuiIconText(ICON_FILE_SAVE, "Save File")); - //GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - //---------------------------------------------------------------------------------- - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_amber.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_amber.h deleted file mode 100644 index abec1e3..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_amber.h +++ /dev/null @@ -1,608 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleAmber(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define AMBER_STYLE_PROPS_COUNT 18 - -// Custom style name: Amber -static const GuiStyleProp amberStyleProps[AMBER_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x898988ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x292929ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xd4d4d4ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xeb891dff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x292929ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xffffffff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xf1cf9dff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xf39333ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x191410ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x6a6a6aff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x818181ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x606060ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 18, (int)0xef922aff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x333333ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING - { 1, 8, (int)0xe7e0d4ff }, // LABEL_TEXT_COLOR_PRESSED - { 4, 8, (int)0xf1cf9dff }, // SLIDER_TEXT_COLOR_PRESSED -}; - -// WARNING: This style uses a custom font: "hello-world.ttf" (size: 16, spacing: 1) - -#define AMBER_STYLE_FONT_ATLAS_COMP_SIZE 2605 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char amberFontData[AMBER_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x8b, 0x8e, 0x9c, 0xb8, 0x12, 0x00, 0x50, 0xf8, 0xff, 0x7f, 0x76, 0x5d, 0xe9, 0x66, 0xb3, 0xd2, 0xee, 0x8e, 0x6d, - 0xaa, 0x30, 0x8f, 0xee, 0x9c, 0x1c, 0x45, 0x91, 0x9a, 0x34, 0x18, 0xdb, 0x85, 0x0d, 0x33, 0x94, 0x63, 0x03, 0x00, 0x00, - 0x00, 0x88, 0x2d, 0x5a, 0xe7, 0xb3, 0xcc, 0xe7, 0x5b, 0xf7, 0xf3, 0xf6, 0xd7, 0xe7, 0x6d, 0xb0, 0xed, 0xe8, 0xbe, 0xfa, - 0x65, 0xda, 0x92, 0xfb, 0x89, 0xee, 0x37, 0xe2, 0x87, 0x4f, 0x7e, 0xff, 0xc9, 0xec, 0xa7, 0x77, 0xbe, 0xf9, 0xda, 0xcb, - 0x6e, 0x19, 0x1f, 0xbd, 0x25, 0x4b, 0x56, 0xff, 0xce, 0xd1, 0x7a, 0xcf, 0xd4, 0xe1, 0xef, 0x3f, 0x2d, 0xb1, 0x97, 0x71, - 0x79, 0x7e, 0xde, 0xdb, 0x36, 0x39, 0xeb, 0xdc, 0x79, 0xb7, 0xe9, 0x96, 0xda, 0xb7, 0xd6, 0xc4, 0x7f, 0xaf, 0x4d, 0x32, - 0x9f, 0x6f, 0xdd, 0x7a, 0xfc, 0x15, 0x37, 0xbd, 0xb8, 0xdd, 0x13, 0xfd, 0xa4, 0x17, 0x23, 0xfb, 0x20, 0xca, 0x23, 0xb5, - 0xff, 0x71, 0x2f, 0x5a, 0x71, 0x4d, 0xed, 0x95, 0xf6, 0xe7, 0xab, 0x4b, 0xff, 0x1b, 0x6d, 0x78, 0xe6, 0xb5, 0x6b, 0x55, - 0xbf, 0x1e, 0xf7, 0x1f, 0xbe, 0x5b, 0x2b, 0xdb, 0xf1, 0x72, 0x45, 0xba, 0x2d, 0x62, 0xd8, 0x6b, 0xf6, 0xee, 0x35, 0x23, - 0x77, 0x76, 0x51, 0x38, 0xef, 0x98, 0x6c, 0xd9, 0x52, 0xa3, 0x5a, 0x5b, 0x3c, 0xfe, 0xaf, 0x88, 0xff, 0xf8, 0x7f, 0x2d, - 0xee, 0xa9, 0xf1, 0x36, 0x92, 0x65, 0xca, 0x47, 0xed, 0xde, 0x39, 0x6e, 0x7f, 0x3c, 0xbf, 0xba, 0x4e, 0x7b, 0xdb, 0xf6, - 0x42, 0x6d, 0xf4, 0xb6, 0xb4, 0xee, 0x79, 0x6f, 0xe5, 0xab, 0x5e, 0x24, 0xce, 0x26, 0x4e, 0x5f, 0x4b, 0x63, 0xd0, 0xd2, - 0xe3, 0xb6, 0x8b, 0x74, 0x49, 0xa3, 0xf0, 0x9d, 0xf1, 0x96, 0x6d, 0xe9, 0x77, 0xae, 0x1b, 0xa3, 0xf2, 0xfb, 0x1b, 0xcf, - 0xbe, 0xa2, 0x18, 0x0f, 0xe7, 0xcb, 0xb9, 0xa7, 0xaf, 0x89, 0x71, 0xf1, 0x3d, 0x55, 0x36, 0xfe, 0xb7, 0x85, 0xf1, 0x1f, - 0xe9, 0xfa, 0xbe, 0x2f, 0xfe, 0x9f, 0x18, 0xff, 0xb7, 0x49, 0xfc, 0x6f, 0xe2, 0x3f, 0xf5, 0x7f, 0x73, 0xf7, 0x05, 0xe3, - 0x71, 0x3b, 0x12, 0xf3, 0x99, 0x58, 0x18, 0xcf, 0x71, 0x7b, 0xf4, 0x8f, 0x7a, 0x5b, 0x65, 0x26, 0xd8, 0xbf, 0xdf, 0xea, - 0xc7, 0xd9, 0xe8, 0x1e, 0x2d, 0xd2, 0x33, 0xce, 0xd1, 0xdd, 0x55, 0xe6, 0x79, 0x49, 0x2c, 0xeb, 0x99, 0x5b, 0x29, 0xfe, - 0x23, 0xf5, 0xcc, 0x27, 0x26, 0x35, 0x9f, 0x8d, 0xff, 0x18, 0x5c, 0xff, 0x46, 0xfd, 0x28, 0x2e, 0xbd, 0xff, 0xcf, 0xc6, - 0xff, 0x36, 0x99, 0x95, 0x6d, 0xa9, 0x9e, 0x5a, 0x29, 0x65, 0x7b, 0xd1, 0x13, 0xd5, 0x95, 0xf1, 0x1f, 0xc9, 0xb3, 0x8e, - 0x03, 0x4f, 0xc3, 0x7a, 0xc7, 0xa8, 0xdc, 0xbd, 0xb5, 0x93, 0xfd, 0x2a, 0x1e, 0x6c, 0x93, 0x33, 0x23, 0x76, 0x7b, 0x7c, - 0xfc, 0x8f, 0xc7, 0xe6, 0xff, 0x91, 0x9e, 0x1b, 0x5c, 0x1f, 0xff, 0xf1, 0xf2, 0xe8, 0xaf, 0xcd, 0xff, 0xa3, 0x38, 0x2f, - 0x8f, 0x45, 0x73, 0xf9, 0xea, 0xdd, 0xcc, 0xbb, 0x5a, 0x64, 0x9b, 0x3e, 0x4f, 0xf8, 0xc4, 0xf9, 0x7f, 0x3c, 0x54, 0x8f, - 0x51, 0xb8, 0x37, 0x10, 0xff, 0x95, 0xf8, 0xaf, 0xcd, 0x69, 0x67, 0x4f, 0x37, 0x63, 0xe9, 0x95, 0xe9, 0xb3, 0xe3, 0xbf, - 0x1e, 0xb1, 0xe2, 0xff, 0xe8, 0xdc, 0x36, 0x86, 0xcf, 0x65, 0x63, 0x49, 0x1b, 0x7e, 0xc6, 0x58, 0xb3, 0x2e, 0xfe, 0xe3, - 0xc4, 0x5d, 0xc3, 0x9f, 0x18, 0xff, 0xdb, 0x8d, 0xf1, 0x1f, 0x5f, 0x3b, 0xff, 0xaf, 0xdc, 0xff, 0xc7, 0xf0, 0x27, 0xd2, - 0xb1, 0x68, 0x06, 0xf0, 0xfe, 0xd1, 0xbf, 0xf2, 0xb4, 0x67, 0xfc, 0x9b, 0x47, 0x91, 0xfe, 0xb9, 0x40, 0xe5, 0x69, 0xd3, - 0x6c, 0xee, 0xbc, 0xa5, 0xcb, 0xf6, 0xe9, 0xe3, 0x7f, 0xfe, 0xbc, 0x63, 0xba, 0x25, 0x0a, 0xfd, 0xe8, 0x6d, 0xd7, 0xd7, - 0x78, 0x7c, 0x64, 0x05, 0xbe, 0x97, 0xf8, 0x07, 0x57, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x77, 0x6a, 0xff, 0xfa, 0xf7, 0x9f, 0xdb, 0xda, 0x8f, 0xd9, 0x8c, 0x5b, 0x77, 0x4b, 0x6f, 0x5f, 0xad, - 0x70, 0xfc, 0x7c, 0xc9, 0x56, 0xe7, 0x60, 0xdf, 0x06, 0x67, 0x5a, 0xaf, 0x83, 0xeb, 0xb7, 0x8c, 0x4b, 0x9d, 0x69, 0x9b, - 0x7e, 0xbd, 0x6c, 0xa9, 0x77, 0x92, 0x73, 0x79, 0x02, 0xdb, 0xe4, 0x0d, 0xd7, 0xec, 0xba, 0x0e, 0xb3, 0x1c, 0x86, 0x99, - 0xcc, 0x87, 0xed, 0x50, 0x34, 0xcd, 0x3f, 0xcf, 0x96, 0x67, 0x1b, 0x66, 0xc5, 0x8c, 0x72, 0xde, 0xbf, 0x5a, 0xee, 0xe9, - 0x3d, 0x99, 0xf9, 0x69, 0xf4, 0x3e, 0x7a, 0x4b, 0x67, 0x67, 0xbe, 0x2b, 0x07, 0xfb, 0xa8, 0x3e, 0xf7, 0x74, 0xf6, 0x8b, - 0xca, 0x96, 0xbd, 0xbb, 0xae, 0xca, 0x2c, 0xd7, 0xc3, 0x7e, 0xb8, 0x15, 0x46, 0x39, 0x92, 0xf7, 0x6e, 0x1e, 0xf1, 0x5c, - 0x5f, 0x5b, 0x95, 0xfb, 0x3e, 0xa6, 0x25, 0x8e, 0xe4, 0x77, 0xda, 0xf0, 0x38, 0x71, 0xd9, 0x3b, 0x65, 0x91, 0xac, 0xad, - 0xed, 0xef, 0x1c, 0x1b, 0xb9, 0xba, 0x3c, 0x13, 0xff, 0x95, 0xfc, 0xd2, 0x5b, 0x3a, 0x03, 0xea, 0xde, 0xc9, 0x4b, 0xff, - 0xfb, 0x7a, 0x76, 0x57, 0xa6, 0x95, 0x6c, 0x5b, 0xdf, 0x11, 0xff, 0xf3, 0xdc, 0x69, 0x91, 0x1a, 0x07, 0xf3, 0x7d, 0xf1, - 0x89, 0xdc, 0x0d, 0x77, 0xe5, 0x23, 0x3f, 0xd3, 0x8a, 0x57, 0xc6, 0x7f, 0x3e, 0x4f, 0x6c, 0x3d, 0xf3, 0xcf, 0xfa, 0xf8, - 0xcf, 0xe7, 0xab, 0x8a, 0x6e, 0x3e, 0x15, 0xf1, 0x5f, 0x8d, 0xff, 0xf8, 0x80, 0xf8, 0x5f, 0x99, 0x49, 0x7b, 0xb6, 0xb7, - 0x48, 0x65, 0x3e, 0x9f, 0x65, 0xf9, 0x69, 0x83, 0xb9, 0xec, 0xb1, 0xbb, 0x8f, 0x38, 0x30, 0xff, 0xb8, 0x27, 0xfe, 0x67, - 0x99, 0x7b, 0x73, 0xfd, 0xab, 0xba, 0x9f, 0x55, 0x6b, 0x30, 0xcc, 0x7a, 0x4e, 0xb6, 0x45, 0x23, 0xb9, 0x52, 0xe0, 0xea, - 0xf8, 0x1f, 0x47, 0x6d, 0xad, 0x6c, 0xdb, 0xd2, 0x11, 0xf7, 0xec, 0x08, 0x18, 0x4b, 0xef, 0x0c, 0xee, 0xb9, 0x8a, 0xef, - 0xa7, 0x57, 0x8f, 0x8b, 0xe1, 0x1d, 0xe6, 0xba, 0xbe, 0x75, 0xef, 0xf8, 0x1f, 0x8b, 0xf3, 0xa9, 0xc7, 0x8d, 0x99, 0x56, - 0xf3, 0xab, 0x5c, 0x64, 0xeb, 0xb3, 0x92, 0x23, 0x35, 0x9f, 0x55, 0xf9, 0x5b, 0xe2, 0xff, 0xfa, 0x2d, 0xeb, 0x23, 0x2d, - 0x17, 0xff, 0x71, 0xc3, 0xdc, 0xf2, 0x13, 0xe6, 0xff, 0xdb, 0x30, 0x5f, 0xfd, 0x5d, 0xf1, 0x5f, 0x6d, 0x8d, 0x6b, 0xe3, - 0x3f, 0x0a, 0xf3, 0xf6, 0x95, 0xf3, 0xfc, 0x67, 0xe6, 0xff, 0xe3, 0x31, 0x26, 0xd2, 0xf5, 0x5e, 0xcd, 0x61, 0x7a, 0x65, - 0xfc, 0xc7, 0x2d, 0xf7, 0x96, 0xf7, 0xc7, 0xff, 0xda, 0xb8, 0x5c, 0x1b, 0xff, 0x2b, 0xd7, 0xab, 0x10, 0xff, 0xf7, 0xcf, - 0x0c, 0xd6, 0x7e, 0xa7, 0x72, 0x77, 0xf0, 0xe4, 0xf8, 0x7f, 0x7f, 0x5d, 0x3f, 0x1f, 0xff, 0x2b, 0xe7, 0xff, 0xf1, 0x70, - 0xfc, 0x57, 0xd6, 0xff, 0xba, 0x67, 0x96, 0x2f, 0xfe, 0x9f, 0x88, 0xff, 0x37, 0xd4, 0x7a, 0x7e, 0xde, 0x34, 0x7f, 0x5a, - 0x98, 0x5b, 0x35, 0xb1, 0xf6, 0x54, 0x3c, 0x8a, 0x2b, 0x87, 0x47, 0xa1, 0xd4, 0x95, 0x99, 0xe3, 0xb6, 0xe4, 0x5e, 0xbe, - 0x76, 0x35, 0xa9, 0x64, 0x8e, 0xaf, 0xae, 0x33, 0x76, 0xe7, 0x7d, 0xc1, 0x35, 0xdf, 0xca, 0xb5, 0x62, 0x4c, 0xeb, 0x7e, - 0xc5, 0x75, 0x64, 0x7b, 0x61, 0x16, 0x7f, 0x3e, 0x5d, 0xdc, 0xf4, 0x1d, 0xd4, 0x22, 0xe2, 0x1f, 0xb5, 0xc8, 0x9b, 0x7a, - 0x61, 0x24, 0xef, 0xa9, 0xcd, 0x42, 0xd7, 0xd4, 0xba, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x56, 0xfd, 0x7e, 0x72, 0x36, 0xa7, 0xf8, 0x28, 0x6f, 0x62, 0x7e, 0x7f, 0xb3, 0x2c, 0x68, 0xed, 0xc1, 0x2d, 0xa3, - 0x5a, 0x68, 0x07, 0xcf, 0xa6, 0x25, 0xf3, 0xbc, 0xf5, 0xeb, 0xa4, 0x9f, 0x5f, 0xbe, 0x25, 0xb7, 0xb5, 0xc9, 0x1e, 0x8f, - 0xee, 0xfd, 0x78, 0x1b, 0xf7, 0xb3, 0xa8, 0xe5, 0xea, 0xbd, 0x9f, 0x99, 0xbf, 0x25, 0x57, 0x2c, 0x98, 0xd5, 0xe8, 0x96, - 0x68, 0xc9, 0x23, 0xbd, 0x69, 0xb4, 0xd6, 0xc4, 0xd1, 0x76, 0x38, 0x7a, 0x0e, 0x71, 0xf0, 0xad, 0xa3, 0x59, 0xae, 0xc5, - 0xd1, 0x96, 0x4c, 0x56, 0xa3, 0x33, 0xb9, 0x27, 0x56, 0xe6, 0xd2, 0x5d, 0x95, 0x4b, 0x3f, 0x97, 0xbb, 0x71, 0x1f, 0xb6, - 0x51, 0x9c, 0xbc, 0x52, 0xb7, 0xc1, 0x31, 0x5a, 0x21, 0xef, 0xc3, 0xf1, 0xbd, 0x1f, 0x6f, 0xe3, 0x3d, 0x9d, 0xdd, 0x64, - 0x65, 0xfe, 0xfd, 0x96, 0xce, 0xd8, 0xb9, 0x27, 0x57, 0xc4, 0x38, 0x9e, 0x4f, 0x62, 0x4f, 0x67, 0xae, 0x98, 0xf5, 0xc3, - 0xfd, 0xc4, 0x15, 0xe0, 0xce, 0xfc, 0x3b, 0x6f, 0x88, 0xff, 0x55, 0xb9, 0xb4, 0xaf, 0xce, 0xca, 0xd3, 0xba, 0xa5, 0x6f, - 0x17, 0xd7, 0x6d, 0x3d, 0xe2, 0x62, 0x98, 0x01, 0x23, 0xca, 0x63, 0xd4, 0xd1, 0x63, 0x8c, 0x22, 0x67, 0xb4, 0x62, 0xd1, - 0xf1, 0xeb, 0x66, 0x2c, 0x88, 0xff, 0x33, 0x6f, 0x03, 0x1f, 0x1f, 0x5b, 0x8e, 0xd6, 0xef, 0x7d, 0x19, 0xf3, 0xc7, 0x39, - 0xd8, 0x73, 0x59, 0xd8, 0x57, 0x67, 0xcc, 0x59, 0x17, 0xe7, 0xab, 0xf2, 0xe8, 0xe4, 0xa2, 0x25, 0xd2, 0xf3, 0xf1, 0x4c, - 0xfc, 0xc7, 0xe1, 0xd9, 0x7f, 0x36, 0x9f, 0x4d, 0x3e, 0x1a, 0x62, 0xf1, 0x1b, 0xb5, 0xfd, 0xf2, 0xb6, 0x8b, 0xc6, 0xff, - 0xd5, 0xf1, 0xbf, 0x9d, 0x88, 0xfe, 0x7b, 0x57, 0xcc, 0xd8, 0x8a, 0xeb, 0x52, 0x5c, 0x9d, 0x4b, 0x33, 0x0a, 0x65, 0x7b, - 0x2e, 0xfe, 0xb3, 0x2b, 0x18, 0x8c, 0x8e, 0xd0, 0x0e, 0x97, 0xa4, 0x5d, 0x14, 0x9b, 0x51, 0xec, 0xd5, 0xf1, 0x48, 0x66, - 0x8e, 0x73, 0xe3, 0xff, 0x76, 0x3a, 0xfe, 0xd7, 0xd7, 0xab, 0xf8, 0xaf, 0xcf, 0x67, 0xee, 0x8d, 0xff, 0xad, 0xb0, 0x4e, - 0x4b, 0x14, 0x66, 0x5d, 0xf5, 0x2b, 0xc0, 0x5d, 0xfd, 0xfa, 0xed, 0xcf, 0xd3, 0x67, 0xfd, 0xe0, 0x5d, 0xe7, 0x30, 0xeb, - 0x21, 0x99, 0x7e, 0x15, 0x93, 0xa3, 0xe4, 0xef, 0x8d, 0x2b, 0x7d, 0x7e, 0x2b, 0x66, 0x88, 0xaf, 0xe4, 0x2d, 0x3d, 0x7f, - 0xbf, 0x70, 0xfe, 0x2a, 0x52, 0x5d, 0xbf, 0x2b, 0x4e, 0xf7, 0x91, 0x4c, 0x7b, 0xad, 0xed, 0xaf, 0xef, 0xbd, 0x0e, 0xcc, - 0xb3, 0xc6, 0x7e, 0x46, 0x3e, 0xa0, 0xb8, 0xed, 0x5a, 0xfc, 0x96, 0xfa, 0x88, 0x45, 0x77, 0x8e, 0x57, 0x8d, 0xff, 0x6b, - 0x9f, 0xad, 0x66, 0xe3, 0xe8, 0xfb, 0xb2, 0x58, 0xc5, 0x25, 0xd7, 0x92, 0x58, 0x7a, 0xbf, 0x23, 0xfe, 0xc5, 0xff, 0x15, - 0xf1, 0x7f, 0xfc, 0x18, 0xf1, 0xb5, 0xf1, 0xff, 0x44, 0x2f, 0x12, 0xff, 0x67, 0xe6, 0x97, 0x6f, 0x9a, 0x51, 0x5e, 0x1b, - 0xff, 0xeb, 0xc6, 0xb1, 0xca, 0x7d, 0xd7, 0x9b, 0x5a, 0x47, 0xfc, 0xf3, 0x49, 0xed, 0xfc, 0x9e, 0x75, 0x34, 0x00, 0xf1, - 0x0f, 0x5c, 0x33, 0xef, 0x3e, 0xf6, 0x93, 0x7b, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x59, 0xad, 0x9b, 0x59, 0x3c, 0xba, 0x59, 0xcc, 0xff, 0xf9, 0xef, 0xcf, 0x5b, 0x9f, 0x3d, 0x9f, 0x2d, 0x55, 0xb6, - 0x36, 0xcc, 0xf8, 0xde, 0x1e, 0x2e, 0xf5, 0x95, 0x47, 0x68, 0xb7, 0x9d, 0xe1, 0xda, 0x5a, 0xe9, 0xbd, 0x47, 0xdb, 0x6e, - 0xa8, 0xc9, 0x5a, 0x7b, 0xb5, 0xe1, 0xb6, 0x96, 0xee, 0xb3, 0xb5, 0x2d, 0xff, 0xfd, 0x9f, 0xfb, 0xb0, 0x86, 0xf7, 0x64, - 0x5e, 0xde, 0xda, 0x9b, 0xd1, 0xb5, 0x6c, 0x5a, 0x3f, 0x6f, 0xdb, 0xff, 0xfa, 0xdb, 0xdb, 0x96, 0xa9, 0x83, 0x71, 0xee, - 0xfb, 0x95, 0xe7, 0x33, 0x2a, 0xf5, 0x9a, 0x0c, 0xc4, 0x3f, 0x1f, 0x21, 0x06, 0x67, 0x18, 0xa5, 0x6c, 0x66, 0x77, 0xb5, - 0x65, 0x6f, 0x4d, 0x86, 0xbd, 0xb0, 0xda, 0xca, 0x1d, 0xed, 0x15, 0xa5, 0xf5, 0x1b, 0xb6, 0x49, 0xdf, 0xcc, 0xf5, 0xe7, - 0x4c, 0xdd, 0x8f, 0xf2, 0xcd, 0x8e, 0xce, 0xb3, 0x7f, 0xe4, 0xfe, 0x99, 0xec, 0xc9, 0x33, 0xf9, 0xf5, 0xf9, 0x9e, 0xbc, - 0x96, 0xb6, 0xc1, 0x3c, 0xa7, 0xf2, 0xd6, 0xee, 0xca, 0xf3, 0x19, 0x8d, 0xc3, 0xfd, 0x3a, 0xc8, 0x1f, 0xe3, 0x78, 0x5b, - 0x8e, 0xea, 0xf8, 0xf9, 0xb6, 0x1c, 0xf5, 0xcc, 0x48, 0x47, 0x52, 0xbe, 0xcc, 0xfd, 0xbe, 0xde, 0xdb, 0xdb, 0x6c, 0x3d, - 0x9d, 0x67, 0xde, 0x11, 0x9f, 0xc5, 0x7f, 0xa4, 0xe3, 0x7f, 0xbc, 0x0a, 0xcc, 0xf1, 0x4f, 0x47, 0x57, 0xd9, 0x7d, 0x30, - 0x96, 0xf7, 0x6a, 0xb9, 0x0d, 0xeb, 0xbf, 0xf6, 0xd6, 0xfe, 0xaa, 0xf3, 0xa9, 0x1c, 0x67, 0x4f, 0xd7, 0x59, 0x2e, 0x2b, - 0xea, 0x3e, 0x3c, 0x93, 0x67, 0xdb, 0x72, 0xd4, 0x9b, 0xdb, 0x20, 0x4b, 0xff, 0xea, 0xf6, 0x8a, 0xc4, 0xde, 0xaa, 0x6b, - 0xd6, 0x8c, 0xd6, 0xe0, 0xcb, 0x6e, 0xe9, 0x45, 0x79, 0x65, 0xf6, 0x97, 0x9d, 0x13, 0xe7, 0xc7, 0xe5, 0xea, 0x58, 0xbe, - 0xa5, 0xb3, 0x96, 0xcf, 0x56, 0xc9, 0xc8, 0x8c, 0xd8, 0x95, 0x2d, 0x51, 0xb8, 0x37, 0x6c, 0xe9, 0x27, 0x16, 0xa3, 0x9c, - 0xe2, 0x91, 0x1c, 0xe3, 0x9e, 0x6d, 0xcb, 0xd9, 0x68, 0x96, 0x39, 0x9b, 0xca, 0x96, 0xd1, 0xac, 0xa9, 0xff, 0x9d, 0xfc, - 0xca, 0x98, 0x67, 0x56, 0xe7, 0x6b, 0x97, 0xcd, 0xff, 0xe7, 0x39, 0xb6, 0xd7, 0x8c, 0xcb, 0xd5, 0xb1, 0x7c, 0x2b, 0xac, - 0x5a, 0x10, 0x97, 0xdf, 0x31, 0x56, 0x57, 0x47, 0xdb, 0xbb, 0xf7, 0xc6, 0xb9, 0xcf, 0xab, 0x6b, 0x1f, 0xc4, 0x0b, 0xdb, - 0x32, 0x1f, 0xff, 0xd7, 0xac, 0x73, 0xb1, 0x76, 0x6d, 0xbc, 0x76, 0x5b, 0x9f, 0x3a, 0x3e, 0xca, 0xaf, 0x5e, 0xe5, 0xee, - 0xfa, 0x5a, 0xae, 0xe5, 0xf2, 0x7f, 0x3a, 0xfe, 0x63, 0xe1, 0x8a, 0x02, 0xab, 0xe2, 0xbf, 0xbd, 0x24, 0x62, 0xfe, 0x94, - 0xf8, 0xcf, 0xad, 0xc2, 0x11, 0xa5, 0x95, 0x3b, 0x32, 0x31, 0x9e, 0x7f, 0x96, 0xff, 0x9e, 0x5a, 0xfe, 0x9e, 0xf1, 0xff, - 0xb9, 0xf8, 0x8f, 0x0f, 0x8c, 0xff, 0xf7, 0x96, 0xf9, 0xf9, 0xb1, 0xf1, 0xd9, 0xf8, 0xaf, 0x8c, 0xcb, 0xf5, 0x75, 0x79, - 0xd6, 0xc6, 0x7f, 0x24, 0x46, 0xec, 0xf5, 0x99, 0xb8, 0x9f, 0x8a, 0xff, 0xf7, 0x8e, 0xa5, 0xb3, 0xba, 0x7a, 0xb2, 0x64, - 0xb3, 0x55, 0xe6, 0xdf, 0x15, 0xff, 0xd5, 0x15, 0x55, 0x23, 0x39, 0x93, 0x7d, 0xff, 0xf8, 0x1f, 0xa9, 0x35, 0xf7, 0xbe, - 0x67, 0xfc, 0x8f, 0xc9, 0xda, 0xbc, 0x9f, 0x37, 0xff, 0x8f, 0x47, 0x63, 0x2c, 0x4a, 0x2b, 0xc9, 0x66, 0x57, 0xda, 0x5b, - 0x35, 0xff, 0xbf, 0xf3, 0xe7, 0x8c, 0x9f, 0x36, 0x9b, 0x3c, 0xf7, 0xa4, 0xe3, 0x33, 0xe2, 0x7f, 0x3e, 0x92, 0x7e, 0x5e, - 0x8b, 0x3d, 0x3d, 0xc6, 0xca, 0xf6, 0xfc, 0x4d, 0xf1, 0xbf, 0xdd, 0x32, 0xfe, 0x57, 0x57, 0x3a, 0xcd, 0xfe, 0xfe, 0xd9, - 0x27, 0xc5, 0xff, 0xca, 0x95, 0x87, 0xee, 0x2c, 0x99, 0xf8, 0x7f, 0xdb, 0x3d, 0xce, 0x8a, 0x92, 0xdf, 0xf5, 0x13, 0x99, - 0xbb, 0xc7, 0xf9, 0xf7, 0x5e, 0xb1, 0xdf, 0xdb, 0xff, 0xaa, 0xbf, 0xe7, 0x2e, 0xfe, 0x3f, 0x2f, 0xfe, 0xb3, 0x23, 0x76, - 0x65, 0xcb, 0xfc, 0x48, 0xe7, 0x3f, 0x5f, 0xd7, 0x62, 0xeb, 0x9f, 0x7e, 0xde, 0x71, 0xb7, 0x7a, 0x5f, 0xc9, 0xc4, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xad, 0x36, 0xcc, 0xe4, 0x9f, 0xcd, 0x4a, 0x3e, 0xca, 0x0c, - 0x18, 0xb7, 0xe4, 0x38, 0xaf, 0xe6, 0xff, 0x3f, 0xfe, 0x79, 0xbe, 0xc6, 0x2a, 0x65, 0x5a, 0x7b, 0xee, 0x6d, 0xd2, 0x66, - 0x3f, 0x7f, 0xde, 0x0a, 0xab, 0x3c, 0xdc, 0xd1, 0x62, 0xad, 0xd4, 0x9f, 0xf9, 0xa9, 0xb6, 0xf6, 0x85, 0xb5, 0x35, 0x5b, - 0x33, 0xe0, 0x99, 0x1c, 0xe7, 0xb3, 0xe3, 0xb4, 0x45, 0xc7, 0x18, 0x67, 0xb8, 0xce, 0x95, 0xa9, 0x72, 0xee, 0xeb, 0xdb, - 0xb2, 0x5f, 0x8a, 0x7b, 0x5a, 0xac, 0xf9, 0x0d, 0xfb, 0x47, 0xdf, 0xd9, 0xa9, 0x64, 0x18, 0x8e, 0x64, 0xf6, 0xa3, 0xfb, - 0x4a, 0xbd, 0xee, 0x08, 0xfd, 0xab, 0xd8, 0xfe, 0xd2, 0xb1, 0x67, 0x9c, 0x7b, 0x76, 0x94, 0x15, 0xb1, 0xdd, 0xf4, 0x66, - 0x58, 0x4b, 0xbf, 0xcb, 0xd3, 0x16, 0xed, 0x4d, 0x94, 0xaf, 0xca, 0x3d, 0xbc, 0x4d, 0xf3, 0x72, 0xad, 0xba, 0xce, 0xe4, - 0x4b, 0xbd, 0x0d, 0xf6, 0x95, 0xfb, 0x7c, 0x4b, 0xe6, 0x6a, 0x89, 0xc5, 0x59, 0xdc, 0xd7, 0xd6, 0xca, 0x36, 0xb9, 0x8e, - 0x47, 0x22, 0xc6, 0xce, 0x6c, 0xc9, 0x1f, 0xe7, 0x6d, 0x6b, 0x69, 0x7c, 0xee, 0x7b, 0xb9, 0xfb, 0xa2, 0xdc, 0xc3, 0xf5, - 0x4c, 0x9a, 0xab, 0x72, 0x9c, 0xd7, 0x32, 0xb3, 0xac, 0xcb, 0xa4, 0xb7, 0x77, 0xfb, 0xf1, 0xda, 0x33, 0xbc, 0xbe, 0x56, - 0x3e, 0x21, 0x97, 0xee, 0x1b, 0xdf, 0x0c, 0xff, 0xec, 0xf7, 0xf3, 0x8f, 0x8c, 0x67, 0xdb, 0x74, 0xce, 0xf8, 0x64, 0xfb, - 0x5f, 0x9f, 0x49, 0x67, 0xfb, 0xc8, 0x0c, 0x87, 0x5b, 0x39, 0x03, 0x98, 0xf8, 0xff, 0xf6, 0xf9, 0x7f, 0xdc, 0x90, 0x17, - 0x69, 0x76, 0x2d, 0x59, 0x9b, 0xff, 0x77, 0x13, 0xff, 0x27, 0xa3, 0xe2, 0xf9, 0x5c, 0x9a, 0xf3, 0xab, 0xfc, 0x26, 0xfe, - 0x17, 0x8d, 0xfb, 0xdf, 0x96, 0x49, 0xd3, 0xf8, 0x7f, 0x5d, 0x54, 0x7c, 0xea, 0x5a, 0x1a, 0x6c, 0x85, 0xb1, 0x7c, 0x65, - 0x86, 0xe1, 0xb8, 0xe1, 0x0a, 0x54, 0xc9, 0xcc, 0x98, 0xff, 0xfc, 0xd3, 0xa2, 0x7c, 0x65, 0x8e, 0xad, 0x6b, 0xca, 0xb6, - 0x26, 0xfe, 0xdf, 0x99, 0xfd, 0xfa, 0x13, 0xe7, 0xff, 0xf7, 0x3c, 0x63, 0xd8, 0x6e, 0xce, 0xcc, 0x16, 0x4b, 0x3e, 0xdf, - 0x92, 0x77, 0x38, 0x2b, 0xef, 0x97, 0x9e, 0xcf, 0xa4, 0x77, 0x5f, 0x56, 0xfa, 0xda, 0x5d, 0x9e, 0xf1, 0x1f, 0xbe, 0xfb, - 0xd9, 0xb4, 0xf8, 0x07, 0xf1, 0x6f, 0xf6, 0x0f, 0xee, 0x4c, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xc7, 0xaf, 0x3f, 0xea, 0x01, 0xc4, 0x3f, 0xf0, 0xc7, - 0xc5, 0xff, 0xff, 0x00 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle amberFontRecs[189] = { - { 4, 4, 5 , 16 }, - { 17, 4, 2 , 10 }, - { 27, 4, 4 , 4 }, - { 39, 4, 5 , 10 }, - { 52, 4, 5 , 11 }, - { 65, 4, 5 , 10 }, - { 78, 4, 5 , 10 }, - { 91, 4, 2 , 4 }, - { 101, 4, 4 , 13 }, - { 113, 4, 5 , 13 }, - { 126, 4, 4 , 4 }, - { 138, 4, 5 , 6 }, - { 151, 4, 3 , 2 }, - { 162, 4, 5 , 2 }, - { 175, 4, 2 , 1 }, - { 185, 4, 5 , 10 }, - { 198, 4, 5 , 10 }, - { 211, 4, 4 , 10 }, - { 223, 4, 5 , 10 }, - { 236, 4, 5 , 10 }, - { 249, 4, 5 , 10 }, - { 262, 4, 5 , 10 }, - { 275, 4, 5 , 10 }, - { 288, 4, 5 , 10 }, - { 301, 4, 5 , 10 }, - { 314, 4, 5 , 10 }, - { 327, 4, 2 , 6 }, - { 337, 4, 2 , 6 }, - { 347, 4, 5 , 6 }, - { 360, 4, 5 , 4 }, - { 373, 4, 5 , 6 }, - { 386, 4, 5 , 10 }, - { 399, 4, 5 , 7 }, - { 412, 4, 5 , 10 }, - { 425, 4, 5 , 10 }, - { 438, 4, 5 , 10 }, - { 451, 4, 5 , 10 }, - { 464, 4, 5 , 10 }, - { 477, 4, 5 , 10 }, - { 490, 4, 5 , 10 }, - { 4, 28, 5 , 10 }, - { 17, 28, 4 , 10 }, - { 29, 28, 5 , 10 }, - { 42, 28, 5 , 10 }, - { 55, 28, 5 , 10 }, - { 68, 28, 5 , 10 }, - { 81, 28, 5 , 10 }, - { 94, 28, 5 , 10 }, - { 107, 28, 5 , 10 }, - { 120, 28, 5 , 10 }, - { 133, 28, 5 , 10 }, - { 146, 28, 5 , 10 }, - { 159, 28, 5 , 10 }, - { 172, 28, 5 , 10 }, - { 185, 28, 5 , 10 }, - { 198, 28, 5 , 10 }, - { 211, 28, 5 , 10 }, - { 224, 28, 5 , 10 }, - { 237, 28, 5 , 10 }, - { 250, 28, 3 , 13 }, - { 261, 28, 5 , 10 }, - { 274, 28, 3 , 13 }, - { 285, 28, 4 , 3 }, - { 297, 28, 5 , 1 }, - { 310, 28, 3 , 3 }, - { 321, 28, 5 , 7 }, - { 334, 28, 5 , 10 }, - { 347, 28, 5 , 7 }, - { 360, 28, 5 , 10 }, - { 373, 28, 5 , 7 }, - { 386, 28, 5 , 10 }, - { 399, 28, 5 , 10 }, - { 412, 28, 5 , 10 }, - { 425, 28, 4 , 10 }, - { 437, 28, 3 , 13 }, - { 448, 28, 5 , 10 }, - { 461, 28, 5 , 10 }, - { 474, 28, 5 , 7 }, - { 487, 28, 5 , 7 }, - { 4, 52, 5 , 7 }, - { 17, 52, 5 , 10 }, - { 30, 52, 5 , 10 }, - { 43, 52, 5 , 7 }, - { 56, 52, 5 , 7 }, - { 69, 52, 5 , 10 }, - { 82, 52, 5 , 7 }, - { 95, 52, 5 , 7 }, - { 108, 52, 5 , 7 }, - { 121, 52, 5 , 7 }, - { 134, 52, 5 , 10 }, - { 147, 52, 5 , 7 }, - { 160, 52, 4 , 13 }, - { 172, 52, 2 , 13 }, - { 182, 52, 4 , 13 }, - { 194, 52, 5 , 4 }, - { 207, 52, 2 , 9 }, - { 217, 52, 5 , 7 }, - { 230, 52, 5 , 10 }, - { 243, 52, 5 , 10 }, - { 256, 52, 5 , 10 }, - { 269, 52, 0 , 0 }, - { 277, 52, 5 , 10 }, - { 290, 52, 0 , 0 }, - { 298, 52, 5 , 7 }, - { 311, 52, 3 , 5 }, - { 322, 52, 5 , 5 }, - { 335, 52, 5 , 3 }, - { 348, 52, 5 , 7 }, - { 361, 52, 5 , 2 }, - { 374, 52, 4 , 4 }, - { 386, 52, 5 , 8 }, - { 399, 52, 3 , 5 }, - { 410, 52, 3 , 6 }, - { 421, 52, 0 , 0 }, - { 429, 52, 5 , 10 }, - { 442, 52, 5 , 10 }, - { 455, 52, 2 , 3 }, - { 465, 52, 0 , 0 }, - { 473, 52, 3 , 5 }, - { 484, 52, 4 , 4 }, - { 496, 52, 5 , 5 }, - { 4, 76, 5 , 10 }, - { 17, 76, 5 , 7 }, - { 30, 76, 5 , 10 }, - { 43, 76, 5 , 10 }, - { 56, 76, 5 , 14 }, - { 69, 76, 5 , 14 }, - { 82, 76, 5 , 14 }, - { 95, 76, 5 , 14 }, - { 108, 76, 5 , 12 }, - { 121, 76, 5 , 12 }, - { 134, 76, 5 , 10 }, - { 147, 76, 5 , 13 }, - { 160, 76, 5 , 14 }, - { 173, 76, 5 , 14 }, - { 186, 76, 5 , 14 }, - { 199, 76, 5 , 12 }, - { 212, 76, 4 , 14 }, - { 224, 76, 4 , 14 }, - { 236, 76, 4 , 14 }, - { 248, 76, 4 , 12 }, - { 260, 76, 5 , 10 }, - { 273, 76, 5 , 14 }, - { 286, 76, 5 , 14 }, - { 299, 76, 5 , 14 }, - { 312, 76, 5 , 14 }, - { 325, 76, 5 , 14 }, - { 338, 76, 5 , 12 }, - { 351, 76, 4 , 3 }, - { 363, 76, 5 , 10 }, - { 376, 76, 5 , 14 }, - { 389, 76, 5 , 14 }, - { 402, 76, 5 , 14 }, - { 415, 76, 5 , 12 }, - { 428, 76, 5 , 14 }, - { 441, 76, 5 , 10 }, - { 454, 76, 5 , 10 }, - { 467, 76, 5 , 10 }, - { 480, 76, 5 , 10 }, - { 493, 76, 5 , 10 }, - { 4, 100, 5 , 10 }, - { 17, 100, 5 , 9 }, - { 30, 100, 5 , 9 }, - { 43, 100, 5 , 7 }, - { 56, 100, 5 , 10 }, - { 69, 100, 5 , 10 }, - { 82, 100, 5 , 10 }, - { 95, 100, 5 , 10 }, - { 108, 100, 5 , 9 }, - { 121, 100, 4 , 10 }, - { 133, 100, 4 , 10 }, - { 145, 100, 4 , 10 }, - { 157, 100, 4 , 9 }, - { 169, 100, 5 , 10 }, - { 182, 100, 5 , 10 }, - { 195, 100, 5 , 10 }, - { 208, 100, 5 , 10 }, - { 221, 100, 5 , 10 }, - { 234, 100, 5 , 10 }, - { 247, 100, 5 , 9 }, - { 260, 100, 5 , 6 }, - { 273, 100, 5 , 7 }, - { 286, 100, 5 , 10 }, - { 299, 100, 5 , 10 }, - { 312, 100, 5 , 10 }, - { 325, 100, 5 , 9 }, - { 338, 100, 5 , 13 }, - { 351, 100, 5 , 10 }, - { 364, 100, 5 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo amberFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 1, 3, 5, { 0 }}, - { 34, 0, 3, 5, { 0 }}, - { 35, 0, 3, 5, { 0 }}, - { 36, 0, 3, 5, { 0 }}, - { 37, 0, 3, 5, { 0 }}, - { 38, 0, 3, 5, { 0 }}, - { 39, 1, 4, 5, { 0 }}, - { 40, 0, 3, 5, { 0 }}, - { 41, 0, 3, 5, { 0 }}, - { 42, 0, 3, 5, { 0 }}, - { 43, 0, 7, 5, { 0 }}, - { 44, 0, 12, 5, { 0 }}, - { 45, 0, 9, 5, { 0 }}, - { 46, 1, 12, 5, { 0 }}, - { 47, 0, 3, 5, { 0 }}, - { 48, 0, 3, 5, { 0 }}, - { 49, 0, 3, 5, { 0 }}, - { 50, 0, 3, 5, { 0 }}, - { 51, 0, 3, 5, { 0 }}, - { 52, 0, 3, 5, { 0 }}, - { 53, 0, 3, 5, { 0 }}, - { 54, 0, 3, 5, { 0 }}, - { 55, 0, 3, 5, { 0 }}, - { 56, 0, 3, 5, { 0 }}, - { 57, 0, 3, 5, { 0 }}, - { 58, 0, 7, 5, { 0 }}, - { 59, 0, 7, 5, { 0 }}, - { 60, 0, 7, 5, { 0 }}, - { 61, 0, 8, 5, { 0 }}, - { 62, 0, 7, 5, { 0 }}, - { 63, 0, 3, 5, { 0 }}, - { 64, 0, 6, 5, { 0 }}, - { 65, 0, 3, 5, { 0 }}, - { 66, 0, 3, 5, { 0 }}, - { 67, 0, 3, 5, { 0 }}, - { 68, 0, 3, 5, { 0 }}, - { 69, 0, 3, 5, { 0 }}, - { 70, 0, 3, 5, { 0 }}, - { 71, 0, 3, 5, { 0 }}, - { 72, 0, 3, 5, { 0 }}, - { 73, 0, 3, 5, { 0 }}, - { 74, 0, 3, 5, { 0 }}, - { 75, 0, 3, 5, { 0 }}, - { 76, 0, 3, 5, { 0 }}, - { 77, 0, 3, 5, { 0 }}, - { 78, 0, 3, 5, { 0 }}, - { 79, 0, 3, 5, { 0 }}, - { 80, 0, 3, 5, { 0 }}, - { 81, 0, 3, 5, { 0 }}, - { 82, 0, 3, 5, { 0 }}, - { 83, 0, 3, 5, { 0 }}, - { 84, 0, 3, 5, { 0 }}, - { 85, 0, 3, 5, { 0 }}, - { 86, 0, 3, 5, { 0 }}, - { 87, 0, 3, 5, { 0 }}, - { 88, 0, 3, 5, { 0 }}, - { 89, 0, 3, 5, { 0 }}, - { 90, 0, 3, 5, { 0 }}, - { 91, 0, 3, 5, { 0 }}, - { 92, 0, 3, 5, { 0 }}, - { 93, 0, 3, 5, { 0 }}, - { 94, 0, 3, 5, { 0 }}, - { 95, 0, 12, 5, { 0 }}, - { 96, 1, 4, 5, { 0 }}, - { 97, 0, 6, 5, { 0 }}, - { 98, 0, 3, 5, { 0 }}, - { 99, 0, 6, 5, { 0 }}, - { 100, 0, 3, 5, { 0 }}, - { 101, 0, 6, 5, { 0 }}, - { 102, 0, 3, 5, { 0 }}, - { 103, 0, 6, 5, { 0 }}, - { 104, 0, 3, 5, { 0 }}, - { 105, 0, 3, 5, { 0 }}, - { 106, 0, 3, 5, { 0 }}, - { 107, 0, 3, 5, { 0 }}, - { 108, 0, 3, 5, { 0 }}, - { 109, 0, 6, 5, { 0 }}, - { 110, 0, 6, 5, { 0 }}, - { 111, 0, 6, 5, { 0 }}, - { 112, 0, 6, 5, { 0 }}, - { 113, 0, 6, 5, { 0 }}, - { 114, 0, 6, 5, { 0 }}, - { 115, 0, 6, 5, { 0 }}, - { 116, 0, 3, 5, { 0 }}, - { 117, 0, 6, 5, { 0 }}, - { 118, 0, 6, 5, { 0 }}, - { 119, 0, 6, 5, { 0 }}, - { 120, 0, 6, 5, { 0 }}, - { 121, 0, 6, 5, { 0 }}, - { 122, 0, 6, 5, { 0 }}, - { 123, 0, 3, 5, { 0 }}, - { 124, 1, 3, 5, { 0 }}, - { 125, 0, 3, 5, { 0 }}, - { 126, 0, 8, 5, { 0 }}, - { 161, 1, 4, 5, { 0 }}, - { 162, 0, 6, 5, { 0 }}, - { 163, 0, 3, 5, { 0 }}, - { 8364, 0, 3, 5, { 0 }}, - { 165, 0, 3, 5, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 3, 5, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 0, 6, 5, { 0 }}, - { 170, 2, 3, 5, { 0 }}, - { 171, 0, 8, 5, { 0 }}, - { 172, 0, 6, 5, { 0 }}, - { 174, 0, 6, 5, { 0 }}, - { 175, 0, 3, 5, { 0 }}, - { 176, 1, 3, 5, { 0 }}, - { 177, 0, 5, 5, { 0 }}, - { 178, 2, 3, 5, { 0 }}, - { 179, 2, 3, 5, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 6, 5, { 0 }}, - { 182, 0, 3, 5, { 0 }}, - { 183, 1, 6, 5, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 3, 5, { 0 }}, - { 186, 0, 3, 5, { 0 }}, - { 187, 0, 8, 5, { 0 }}, - { 338, 0, 3, 5, { 0 }}, - { 339, 0, 6, 5, { 0 }}, - { 376, 0, 3, 5, { 0 }}, - { 191, 0, 3, 5, { 0 }}, - { 192, 0, -1, 5, { 0 }}, - { 193, 0, -1, 5, { 0 }}, - { 194, 0, -1, 5, { 0 }}, - { 195, 0, -1, 5, { 0 }}, - { 196, 0, 1, 5, { 0 }}, - { 197, 0, 1, 5, { 0 }}, - { 198, 0, 3, 5, { 0 }}, - { 199, 0, 3, 5, { 0 }}, - { 200, 0, -1, 5, { 0 }}, - { 201, 0, -1, 5, { 0 }}, - { 202, 0, -1, 5, { 0 }}, - { 203, 0, 1, 5, { 0 }}, - { 204, 0, -1, 5, { 0 }}, - { 205, 0, -1, 5, { 0 }}, - { 206, 0, -1, 5, { 0 }}, - { 207, 0, 1, 5, { 0 }}, - { 208, 0, 3, 5, { 0 }}, - { 209, 0, -1, 5, { 0 }}, - { 210, 0, -1, 5, { 0 }}, - { 211, 0, -1, 5, { 0 }}, - { 212, 0, -1, 5, { 0 }}, - { 213, 0, -1, 5, { 0 }}, - { 214, 0, 1, 5, { 0 }}, - { 215, 0, 10, 5, { 0 }}, - { 216, 0, 3, 5, { 0 }}, - { 217, 0, -1, 5, { 0 }}, - { 218, 0, -1, 5, { 0 }}, - { 219, 0, -1, 5, { 0 }}, - { 220, 0, 1, 5, { 0 }}, - { 221, 0, -1, 5, { 0 }}, - { 222, 0, 3, 5, { 0 }}, - { 223, 0, 3, 5, { 0 }}, - { 224, 0, 3, 5, { 0 }}, - { 225, 0, 3, 5, { 0 }}, - { 226, 0, 3, 5, { 0 }}, - { 227, 0, 3, 5, { 0 }}, - { 228, 0, 4, 5, { 0 }}, - { 229, 0, 4, 5, { 0 }}, - { 230, 0, 6, 5, { 0 }}, - { 231, 0, 6, 5, { 0 }}, - { 232, 0, 3, 5, { 0 }}, - { 233, 0, 3, 5, { 0 }}, - { 234, 0, 3, 5, { 0 }}, - { 235, 0, 4, 5, { 0 }}, - { 236, 0, 3, 5, { 0 }}, - { 237, 0, 3, 5, { 0 }}, - { 238, 0, 3, 5, { 0 }}, - { 239, 0, 4, 5, { 0 }}, - { 240, 0, 3, 5, { 0 }}, - { 241, 0, 3, 5, { 0 }}, - { 242, 0, 3, 5, { 0 }}, - { 243, 0, 3, 5, { 0 }}, - { 244, 0, 3, 5, { 0 }}, - { 245, 0, 3, 5, { 0 }}, - { 246, 0, 4, 5, { 0 }}, - { 247, 0, 7, 5, { 0 }}, - { 248, 0, 6, 5, { 0 }}, - { 249, 0, 3, 5, { 0 }}, - { 250, 0, 3, 5, { 0 }}, - { 251, 0, 3, 5, { 0 }}, - { 252, 0, 4, 5, { 0 }}, - { 253, 0, 3, 5, { 0 }}, - { 254, 0, 3, 5, { 0 }}, - { 255, 0, 4, 5, { 0 }}, -}; - -// Style loading function: Amber -static void GuiLoadStyleAmber(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < AMBER_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(amberStyleProps[i].controlId, amberStyleProps[i].propertyId, amberStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int amberFontDataSize = 0; - unsigned char *data = DecompressData(amberFontData, AMBER_STYLE_FONT_ATLAS_COMP_SIZE, &amberFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, amberFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, amberFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_ashes.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_ashes.h deleted file mode 100644 index 9774760..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_ashes.h +++ /dev/null @@ -1,565 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleAshes(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define ASHES_STYLE_PROPS_COUNT 16 - -// Custom style name: Ashes -static const GuiStyleProp ashesStyleProps[ASHES_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0xf0f0f0ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x868686ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xe6e6e6ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0x929999ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xeaeaeaff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x98a1a8ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x3f3f3fff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xf6f6f6ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x414141ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x8b8b8bff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x777777ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x959595ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 18, (int)0x9dadb1ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x6b6b6bff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "v5loxical.ttf" (size: 16, spacing: 1) - -#define ASHES_STYLE_FONT_ATLAS_COMP_SIZE 1800 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char ashesFontData[ASHES_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0x9d, 0x51, 0xb6, 0xa4, 0x36, 0x0c, 0x44, 0xbd, 0xff, 0x4d, 0x57, 0xbe, 0x72, 0x32, 0xc9, 0x49, 0x83, 0x25, 0x97, 0xb0, - 0x0c, 0x77, 0xee, 0x5f, 0xbf, 0x1e, 0x1a, 0x5c, 0xc8, 0x06, 0xbb, 0x24, 0x6b, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfd, - 0xef, 0x27, 0xfa, 0xf9, 0x4d, 0x4d, 0x1f, 0xe7, 0xdf, 0x9f, 0xeb, 0xc7, 0x5f, 0x63, 0xc7, 0xd3, 0xf4, 0xef, 0x66, 0xfe, - 0xa2, 0xff, 0x3d, 0x3f, 0x2d, 0xff, 0xaa, 0xa6, 0xaf, 0xe6, 0xea, 0xbb, 0x57, 0xbf, 0xa9, 0xa6, 0xfa, 0xeb, 0xe2, 0x78, - 0xd7, 0x47, 0xd4, 0xc2, 0x3d, 0x31, 0xf7, 0xbb, 0xf3, 0x9a, 0xae, 0xb7, 0xe7, 0xaf, 0x7b, 0x6b, 0xfe, 0xbb, 0xf7, 0x6d, - 0x5c, 0xab, 0xff, 0x9f, 0xff, 0xc6, 0x8f, 0xbf, 0xe6, 0x34, 0xae, 0x89, 0xf4, 0xeb, 0x33, 0x95, 0x49, 0xed, 0xf9, 0xbb, - 0x56, 0x4b, 0xfd, 0x50, 0xe6, 0xe8, 0xf9, 0x33, 0x1e, 0x41, 0xb5, 0x74, 0x73, 0x17, 0x2a, 0x7c, 0xc4, 0xd5, 0xfe, 0x3c, - 0x13, 0xff, 0x5d, 0xf4, 0xcf, 0xdd, 0xcd, 0x6a, 0xa0, 0x7f, 0x46, 0x39, 0x19, 0xce, 0x54, 0xa6, 0xf1, 0xbf, 0x42, 0xfd, - 0xa8, 0xfe, 0x32, 0xb6, 0x80, 0x53, 0xff, 0x6c, 0xff, 0x9f, 0xe9, 0xff, 0x46, 0x13, 0x3d, 0x9f, 0xd7, 0x5f, 0x8f, 0xb7, - 0x80, 0x23, 0xfe, 0xc7, 0x6d, 0x6f, 0xab, 0x9b, 0xa7, 0x1a, 0xbd, 0x40, 0x7f, 0xc7, 0xfd, 0x9f, 0x1d, 0x29, 0xfb, 0x8e, - 0xff, 0x9a, 0xe8, 0xeb, 0xf4, 0x8a, 0xf8, 0x8f, 0x8f, 0x72, 0xf3, 0xef, 0x9b, 0x77, 0x23, 0xa5, 0xb6, 0x5f, 0x7b, 0xee, - 0x09, 0xe4, 0xef, 0xff, 0x77, 0x7e, 0xfc, 0x77, 0x19, 0x83, 0x76, 0x9d, 0xb7, 0xb6, 0xc6, 0x17, 0xfa, 0x7f, 0xe1, 0xfa, - 0x45, 0xcb, 0x73, 0x97, 0xa1, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xca, 0x59, - 0x10, 0x77, 0x22, 0x68, 0xd9, 0xe3, 0xe6, 0xf1, 0xdf, 0x2b, 0xdc, 0x02, 0x19, 0xdf, 0xfd, 0xaf, 0xf3, 0x8a, 0x7d, 0x7f, - 0x84, 0x3d, 0x75, 0x4a, 0xae, 0x83, 0x29, 0xed, 0xea, 0x5a, 0x77, 0xa8, 0x57, 0xac, 0x20, 0xe7, 0xbd, 0x76, 0x11, 0x8f, - 0xae, 0x4c, 0x3e, 0x2d, 0x99, 0x73, 0x54, 0xdc, 0xfa, 0x8f, 0xed, 0xfa, 0xab, 0xd4, 0x0f, 0xa2, 0x1b, 0xbf, 0xd9, 0x17, - 0xf4, 0xcf, 0x3a, 0x77, 0x23, 0xfd, 0xbc, 0xec, 0xde, 0xc9, 0xf8, 0xf9, 0xdd, 0xe7, 0x03, 0x7c, 0x51, 0xff, 0x11, 0x8e, - 0xdb, 0x78, 0x0f, 0x3b, 0x3b, 0x52, 0x6b, 0x63, 0xfc, 0x5f, 0x8d, 0xdb, 0x0a, 0x44, 0x4d, 0x54, 0x9d, 0xd8, 0xef, 0xfe, - 0x73, 0xae, 0xeb, 0x4f, 0x44, 0x4f, 0xe9, 0x3f, 0x16, 0x7d, 0x9c, 0xb2, 0xf5, 0x18, 0xd9, 0x71, 0xae, 0x5f, 0xfc, 0xbb, - 0x9f, 0xff, 0xea, 0xf4, 0x97, 0xc1, 0x8d, 0xa5, 0x52, 0x2f, 0x68, 0x26, 0x47, 0xe5, 0x3d, 0xfa, 0x67, 0xde, 0x70, 0x3c, - 0xc7, 0x39, 0xc1, 0x87, 0xfa, 0x05, 0xfd, 0x01, 0xfd, 0xf1, 0xa1, 0x67, 0x9e, 0xdb, 0xea, 0xe6, 0x7f, 0x14, 0xee, 0xaf, - 0xd1, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xeb, 0xdb, 0xd9, 0x2a, - 0xe0, 0x8e, 0xef, 0x67, 0x7f, 0x41, 0x36, 0xc7, 0xa7, 0xcf, 0x3f, 0xfa, 0x7b, 0xfd, 0xd8, 0x91, 0xeb, 0x50, 0xa7, 0xff, - 0xb0, 0xbb, 0x68, 0xe3, 0x9e, 0xb4, 0x78, 0x7d, 0xfc, 0xd1, 0x4c, 0xff, 0x11, 0x68, 0x77, 0x15, 0xe6, 0x4c, 0xa0, 0x7f, - 0x7f, 0xfd, 0x7d, 0x95, 0x2f, 0xdf, 0xae, 0xff, 0x38, 0x4a, 0xff, 0xb5, 0x1d, 0x01, 0x5c, 0xfa, 0xe7, 0xfd, 0xed, 0xae, - 0x51, 0x70, 0x3d, 0xc7, 0x60, 0xa4, 0x77, 0x12, 0x72, 0xe9, 0x3f, 0x12, 0x79, 0x7f, 0x0e, 0x6f, 0xfc, 0x1b, 0xe2, 0x7f, - 0x18, 0xe2, 0x7f, 0x34, 0xed, 0xff, 0x87, 0xc9, 0x0f, 0x8a, 0xfe, 0xdf, 0xd6, 0xdf, 0x53, 0xfb, 0xf8, 0xbd, 0xfa, 0x77, - 0x7d, 0xfe, 0x43, 0xff, 0x13, 0xf5, 0x97, 0xed, 0xca, 0x7d, 0xfa, 0xaf, 0x66, 0x4d, 0x7a, 0x9e, 0xb4, 0x94, 0x7e, 0x6e, - 0x57, 0x38, 0x57, 0x2b, 0x9e, 0x7d, 0xea, 0xc8, 0x14, 0xbc, 0xab, 0x10, 0x11, 0x9b, 0x4d, 0x8a, 0x56, 0xd7, 0xa8, 0xd3, - 0xff, 0xcc, 0x8a, 0x25, 0xcc, 0xd0, 0x56, 0x64, 0xbb, 0xc0, 0x3b, 0xee, 0xf9, 0x2f, 0x46, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xad, 0x84, 0xc7, 0x56, 0x23, 0x5d, 0x6b, 0xb9, 0xc3, 0xb2, 0xbb, 0x80, - 0x0c, 0xeb, 0xeb, 0x6b, 0xff, 0x5f, 0x7f, 0xac, 0x0c, 0xbb, 0x72, 0x1c, 0x1c, 0x9f, 0xcf, 0x3a, 0x1b, 0x32, 0xeb, 0x8b, - 0x55, 0x8e, 0x06, 0x25, 0x7c, 0xd1, 0x15, 0xeb, 0xe2, 0x0a, 0xaf, 0xc1, 0xef, 0xf2, 0x44, 0x2b, 0x78, 0x45, 0xb2, 0xac, - 0x51, 0x3a, 0x9c, 0xc4, 0x5a, 0x76, 0x0a, 0xc7, 0x7d, 0xc2, 0x2a, 0xb8, 0x0f, 0xcf, 0xd0, 0xdf, 0x3b, 0x86, 0x54, 0x45, - 0xae, 0x37, 0xfe, 0xb5, 0xa0, 0x7f, 0x74, 0x37, 0x1b, 0xf4, 0xf7, 0xe8, 0x1f, 0x7b, 0x12, 0xa9, 0xd3, 0x9f, 0xf8, 0xdf, - 0x17, 0xff, 0xab, 0x1e, 0x3e, 0xf4, 0xff, 0x86, 0xfe, 0x32, 0xd5, 0xe1, 0x46, 0xff, 0x75, 0x8f, 0x5a, 0xcc, 0x01, 0xeb, - 0x72, 0x0a, 0xf7, 0x89, 0xff, 0x61, 0xf3, 0x44, 0xfb, 0x2a, 0x88, 0x77, 0xe8, 0x17, 0x1c, 0xdf, 0xee, 0x3d, 0xfe, 0x3f, - 0xe9, 0x00, 0xee, 0xec, 0xf7, 0xac, 0xf4, 0xae, 0x76, 0xd1, 0xbf, 0x5e, 0x81, 0x73, 0xf5, 0x3f, 0x37, 0x47, 0xa0, 0x53, - 0xab, 0xa2, 0x7f, 0xff, 0xac, 0x0b, 0xa0, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, - 0x3c, 0xd3, 0x9d, 0xf3, 0x4f, 0xc8, 0xe4, 0x82, 0x88, 0xfa, 0x00, 0xc7, 0x74, 0x8d, 0x7c, 0xa5, 0x9c, 0xc7, 0xab, 0xbe, - 0x93, 0xbb, 0x56, 0x96, 0x71, 0x45, 0x42, 0x97, 0xad, 0x54, 0xeb, 0xcf, 0xda, 0x55, 0x1f, 0x3d, 0x53, 0xe3, 0x71, 0x25, - 0x0b, 0xc2, 0xed, 0x3b, 0x90, 0xcd, 0x19, 0xa3, 0xe0, 0xfa, 0xa5, 0xcb, 0x87, 0x9f, 0xd3, 0x3f, 0xee, 0x1a, 0xab, 0xfb, - 0xd4, 0x91, 0x8b, 0x94, 0xcd, 0x1b, 0x91, 0x6d, 0x2d, 0x5a, 0x97, 0xf9, 0x4f, 0xbb, 0xfa, 0xff, 0xea, 0xfa, 0xf8, 0x4f, - 0xea, 0x1f, 0xf7, 0x00, 0x5d, 0x8f, 0x5a, 0x6b, 0x3a, 0x5d, 0x1d, 0x4f, 0xcb, 0x57, 0xd9, 0x4f, 0x7f, 0x5f, 0x8d, 0x6f, - 0x6f, 0xcb, 0xdc, 0xab, 0xbc, 0x16, 0xd9, 0x91, 0xfe, 0x5f, 0xe1, 0xfe, 0xdf, 0x93, 0x59, 0x51, 0xef, 0x82, 0x7e, 0x7e, - 0x7f, 0x04, 0x19, 0x7a, 0xf9, 0xbb, 0x2c, 0x58, 0xa1, 0x7f, 0x59, 0x1e, 0x48, 0x07, 0xfd, 0xaf, 0x9f, 0xc7, 0x65, 0x75, - 0x24, 0xd5, 0x8e, 0xff, 0xf9, 0x7a, 0xda, 0xae, 0x3a, 0xe3, 0x8e, 0x7d, 0x53, 0x6a, 0xfa, 0xff, 0xda, 0xf8, 0x1f, 0x45, - 0xcf, 0xff, 0x9d, 0xbd, 0x8f, 0x2e, 0x27, 0xf8, 0xb3, 0xcf, 0x7f, 0x9e, 0xf7, 0x99, 0x7c, 0x66, 0x44, 0xec, 0xfd, 0xbf, - 0xb3, 0x03, 0xb2, 0xa7, 0xfe, 0xf1, 0x3d, 0x25, 0x73, 0xfd, 0xe6, 0xb7, 0x1d, 0xa9, 0xeb, 0x7b, 0x58, 0x56, 0xf6, 0x6d, - 0x78, 0x83, 0x4f, 0xbd, 0x63, 0xde, 0x97, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xf3, 0xc8, 0xac, 0xae, 0x38, 0x2b, 0x51, 0x01, 0xdc, 0xb7, 0x6e, 0x73, 0xe7, 0x2f, 0xd1, 0x42, 0x2d, 0xb7, 0x4c, - 0x1d, 0xe8, 0x2b, 0x77, 0x8c, 0x82, 0xde, 0x19, 0xdf, 0xba, 0x94, 0x16, 0xd5, 0xcf, 0xfa, 0xaa, 0x64, 0x73, 0xd1, 0x64, - 0xdc, 0x6d, 0x0a, 0xd6, 0x88, 0x9f, 0xcb, 0x36, 0xf1, 0xf9, 0x42, 0xee, 0xbd, 0xf3, 0x75, 0xeb, 0xa6, 0x0a, 0xc6, 0x81, - 0x42, 0x8e, 0xb3, 0xdf, 0x6d, 0xb5, 0x1e, 0x95, 0xeb, 0xfa, 0xe7, 0xe3, 0x5f, 0xb6, 0xba, 0xf6, 0x59, 0xfd, 0x73, 0x11, - 0xb2, 0x1e, 0xff, 0x4a, 0x65, 0xd0, 0x54, 0x79, 0x76, 0x56, 0xf5, 0x1f, 0x66, 0xfd, 0x9f, 0x8b, 0x7f, 0x6d, 0x18, 0xff, - 0xff, 0x1c, 0xa1, 0x64, 0xfb, 0xdd, 0x35, 0x9f, 0xe4, 0x1e, 0xfd, 0xb3, 0xde, 0x3f, 0xdd, 0xb8, 0x63, 0xf5, 0xa8, 0xb7, - 0x25, 0xdb, 0x83, 0xa8, 0xa1, 0x2f, 0xe6, 0x2e, 0xef, 0xac, 0x87, 0xc3, 0x71, 0xfd, 0x09, 0x7c, 0xa5, 0x87, 0x5c, 0xbd, - 0x6b, 0x9c, 0xfa, 0xbb, 0xbc, 0xab, 0xb3, 0xb1, 0x87, 0xfe, 0xde, 0xf7, 0xc7, 0x7e, 0xf1, 0x7f, 0xed, 0xbb, 0xed, 0xad, - 0x7f, 0xec, 0xfd, 0x4f, 0x9b, 0x5b, 0xb9, 0xa3, 0x3f, 0x59, 0xa9, 0x27, 0xd0, 0x3e, 0xfa, 0xef, 0x3a, 0xd6, 0xdb, 0xe7, - 0xb6, 0xba, 0xe8, 0x7f, 0x37, 0xff, 0x73, 0x5a, 0xc6, 0xc6, 0x49, 0xfa, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x71, 0x8d, 0x74, 0x76, 0x95, 0x51, 0x41, 0x27, 0xf1, 0x75, 0xa5, 0xb4, 0xeb, 0x7c, - 0x82, 0xaa, 0xab, 0x58, 0xdd, 0x1f, 0x3e, 0x5a, 0x1b, 0x55, 0x41, 0xb7, 0xa3, 0x4b, 0xab, 0xbc, 0x13, 0x53, 0x26, 0xef, - 0xab, 0xaf, 0xf2, 0xbf, 0xfb, 0x2a, 0x66, 0x75, 0x55, 0xc0, 0xd5, 0xee, 0x69, 0x4b, 0xd7, 0x55, 0xf6, 0xf1, 0x66, 0x0d, - 0xa3, 0xfe, 0xa7, 0xf6, 0xbc, 0xfb, 0x3d, 0x48, 0x6a, 0xf4, 0x79, 0x56, 0xff, 0xf8, 0x78, 0xb1, 0x3a, 0xbe, 0xac, 0xef, - 0x38, 0xa2, 0xcb, 0x2c, 0x98, 0xca, 0xb6, 0xf7, 0xf7, 0xcf, 0xbe, 0xcf, 0x65, 0xcb, 0x19, 0x74, 0xd6, 0x05, 0xf7, 0xeb, - 0xbf, 0xaf, 0x8d, 0x7b, 0xeb, 0xbf, 0x53, 0x67, 0xf4, 0x47, 0xff, 0xaf, 0xe9, 0x1f, 0xab, 0xb4, 0x5f, 0xff, 0x79, 0x4e, - 0xb7, 0xda, 0xd1, 0x9f, 0xf8, 0x27, 0xfe, 0xd1, 0xff, 0xc9, 0xcf, 0x63, 0x11, 0x7a, 0xaa, 0xfe, 0x2a, 0x9d, 0x33, 0x39, - 0x51, 0x7f, 0x5f, 0xde, 0x6d, 0x7f, 0xfd, 0x77, 0x69, 0x72, 0xb6, 0xfe, 0xe3, 0x35, 0xf1, 0x8f, 0xfe, 0xbe, 0x7a, 0x05, - 0xe7, 0xcd, 0xff, 0xe4, 0xb3, 0xd6, 0x9d, 0xf3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x5e, 0xff, 0xbf, 0xc2, 0xf3, 0xf6, 0x19, 0x27, 0x7a, 0xa5, 0x3f, 0x7f, 0x7e, 0x96, 0x5d, 0xa9, 0x19, 0xfa, 0xbd, 0x79, - 0x10, 0xb3, 0xd7, 0x91, 0x5d, 0x4d, 0x89, 0xd7, 0xac, 0x8e, 0xfa, 0x70, 0xea, 0xfd, 0xf9, 0x91, 0xbd, 0x0a, 0x1c, 0xfb, - 0x0e, 0x54, 0xe7, 0x41, 0x64, 0xf2, 0x51, 0x9e, 0xf2, 0x92, 0x5f, 0x57, 0x54, 0xed, 0xbc, 0xe2, 0x94, 0xe9, 0x3f, 0xb4, - 0xd1, 0x7f, 0x1f, 0xd5, 0x3f, 0xb7, 0x03, 0x80, 0xc2, 0x3d, 0xa5, 0xc2, 0xeb, 0x96, 0x3d, 0x56, 0x93, 0xcf, 0xa9, 0x91, - 0xaa, 0x54, 0xfc, 0xfb, 0x22, 0x22, 0x33, 0xfe, 0x9f, 0xa1, 0xbf, 0x8e, 0xca, 0x83, 0x89, 0xfa, 0xdd, 0x54, 0xac, 0x7f, - 0xd6, 0xb7, 0x70, 0x46, 0xfc, 0xf7, 0xf1, 0x9d, 0xe6, 0x47, 0x2a, 0xa1, 0xff, 0xad, 0xbe, 0xda, 0xe2, 0x20, 0x8a, 0x3b, - 0x5a, 0xd1, 0x3f, 0xf2, 0x16, 0xb5, 0xa2, 0x7f, 0x3f, 0x1f, 0x5c, 0xf6, 0xfd, 0xef, 0x9b, 0xfa, 0xaf, 0xc6, 0xff, 0x69, - 0x3e, 0xc8, 0xd8, 0x5e, 0x8b, 0x4f, 0xe9, 0xaf, 0x03, 0xf4, 0x57, 0xab, 0x11, 0xca, 0xe9, 0x83, 0xd5, 0x03, 0xcf, 0xff, - 0xf1, 0x99, 0xc4, 0x8e, 0xf1, 0x7f, 0xbe, 0xfe, 0x4f, 0xec, 0x90, 0xe8, 0xd9, 0xcf, 0xed, 0x0c, 0xfd, 0xbb, 0xbd, 0xff, - 0x79, 0xe7, 0x92, 0x9c, 0xf3, 0x3f, 0x67, 0x55, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0x72, 0x0e, 0xc0, 0xaa, 0x03, 0x5f, 0xcb, 0x2b, 0x55, 0x0a, 0x38, 0xf8, 0xd5, 0xc8, 0xbf, 0x3f, 0x26, 0x6b, 0x2c, - 0x57, 0x9c, 0xad, 0xa7, 0x5a, 0x7a, 0x55, 0x85, 0xfc, 0x61, 0xa9, 0x92, 0x1f, 0x73, 0x1f, 0x3f, 0xed, 0xdf, 0x5f, 0x5b, - 0x11, 0xdf, 0x9d, 0x0f, 0x51, 0xe1, 0x25, 0x7e, 0x3e, 0x1f, 0x61, 0xa7, 0x7f, 0xff, 0xae, 0x5a, 0xb9, 0x36, 0x65, 0x1b, - 0xb0, 0x1a, 0xda, 0x3d, 0xdb, 0xa4, 0x53, 0xfe, 0x9f, 0x67, 0xa5, 0x7d, 0x35, 0x4f, 0x49, 0x8b, 0x3d, 0xea, 0x2e, 0x87, - 0x81, 0x8e, 0xf5, 0x43, 0x7b, 0x8f, 0xfc, 0x8c, 0xfe, 0xe7, 0xf8, 0xb4, 0xd0, 0x1f, 0xfd, 0xd1, 0xff, 0xcb, 0xfa, 0xeb, - 0x00, 0xfd, 0x3d, 0xfb, 0x36, 0xa0, 0x7f, 0x27, 0x3f, 0x74, 0x34, 0xfe, 0x87, 0x25, 0xc3, 0x1c, 0xfd, 0xbb, 0xf8, 0xa1, - 0xd1, 0xbf, 0x4f, 0x9e, 0x46, 0x6f, 0xfd, 0xcf, 0x7b, 0xff, 0x1b, 0xc5, 0xb5, 0xd1, 0xdf, 0xe3, 0x87, 0x67, 0x0e, 0x88, - 0xf9, 0x27, 0x40, 0x7f, 0xf8, 0xa2, 0xf6, 0xa8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x7a, 0x16, - 0x01, 0xfd, 0x01, 0x00, 0x80, 0xfe, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xb2, - 0x15, 0x0d, 0x68, 0x07, 0x7a, 0x01, 0x40, 0x7f, 0xc0, 0x39, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbb, 0x01, 0xfd, 0x61, 0xab, 0xfe, 0x7f, 0x01 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle ashesFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 1 , 10 }, - { 25, 4, 3 , 3 }, - { 36, 4, 6 , 8 }, - { 50, 4, 5 , 11 }, - { 63, 4, 7 , 8 }, - { 78, 4, 6 , 9 }, - { 92, 4, 1 , 3 }, - { 101, 4, 3 , 12 }, - { 112, 4, 3 , 12 }, - { 123, 4, 5 , 5 }, - { 136, 4, 5 , 5 }, - { 149, 4, 2 , 2 }, - { 159, 4, 4 , 1 }, - { 171, 4, 1 , 1 }, - { 180, 4, 5 , 10 }, - { 193, 4, 4 , 8 }, - { 205, 4, 2 , 8 }, - { 215, 4, 4 , 8 }, - { 227, 4, 4 , 8 }, - { 239, 4, 6 , 8 }, - { 4, 28, 4 , 8 }, - { 16, 28, 4 , 8 }, - { 28, 28, 4 , 8 }, - { 40, 28, 4 , 8 }, - { 52, 28, 4 , 8 }, - { 64, 28, 1 , 5 }, - { 73, 28, 2 , 6 }, - { 83, 28, 4 , 7 }, - { 95, 28, 4 , 4 }, - { 107, 28, 4 , 7 }, - { 119, 28, 4 , 10 }, - { 131, 28, 8 , 7 }, - { 147, 28, 4 , 10 }, - { 159, 28, 4 , 10 }, - { 171, 28, 4 , 10 }, - { 183, 28, 4 , 10 }, - { 195, 28, 4 , 10 }, - { 207, 28, 5 , 10 }, - { 220, 28, 4 , 10 }, - { 232, 28, 4 , 10 }, - { 244, 28, 1 , 10 }, - { 4, 52, 3 , 10 }, - { 15, 52, 4 , 10 }, - { 27, 52, 4 , 10 }, - { 39, 52, 7 , 10 }, - { 54, 52, 4 , 10 }, - { 66, 52, 4 , 10 }, - { 78, 52, 4 , 10 }, - { 90, 52, 5 , 11 }, - { 103, 52, 4 , 10 }, - { 115, 52, 4 , 10 }, - { 127, 52, 5 , 10 }, - { 140, 52, 4 , 10 }, - { 152, 52, 4 , 10 }, - { 164, 52, 7 , 10 }, - { 179, 52, 4 , 10 }, - { 191, 52, 4 , 10 }, - { 203, 52, 4 , 10 }, - { 215, 52, 2 , 12 }, - { 225, 52, 5 , 10 }, - { 238, 52, 2 , 12 }, - { 4, 76, 5 , 3 }, - { 17, 76, 5 , 1 }, - { 30, 76, 2 , 2 }, - { 40, 76, 4 , 8 }, - { 52, 76, 4 , 10 }, - { 64, 76, 3 , 8 }, - { 75, 76, 4 , 10 }, - { 87, 76, 4 , 8 }, - { 99, 76, 3 , 10 }, - { 110, 76, 5 , 11 }, - { 123, 76, 4 , 10 }, - { 135, 76, 1 , 10 }, - { 144, 76, 3 , 13 }, - { 155, 76, 4 , 10 }, - { 167, 76, 2 , 10 }, - { 177, 76, 7 , 8 }, - { 192, 76, 4 , 8 }, - { 204, 76, 4 , 8 }, - { 216, 76, 4 , 11 }, - { 228, 76, 4 , 11 }, - { 240, 76, 3 , 8 }, - { 4, 100, 4 , 8 }, - { 16, 100, 3 , 10 }, - { 27, 100, 4 , 8 }, - { 39, 100, 5 , 8 }, - { 52, 100, 7 , 8 }, - { 67, 100, 4 , 8 }, - { 79, 100, 4 , 11 }, - { 91, 100, 4 , 8 }, - { 103, 100, 4 , 12 }, - { 115, 100, 1 , 10 }, - { 124, 100, 4 , 12 }, - { 136, 100, 4 , 2 }, - { 148, 100, 1 , 10 }, - { 157, 100, 4 , 12 }, - { 169, 100, 5 , 10 }, - { 182, 100, 5 , 10 }, - { 195, 100, 5 , 10 }, - { 208, 100, 0 , 0 }, - { 216, 100, 4 , 10 }, - { 228, 100, 0 , 0 }, - { 236, 100, 7 , 9 }, - { 4, 124, 3 , 7 }, - { 15, 124, 6 , 5 }, - { 29, 124, 0 , 0 }, - { 37, 124, 7 , 9 }, - { 52, 124, 4 , 1 }, - { 64, 124, 3 , 5 }, - { 75, 124, 5 , 7 }, - { 88, 124, 3 , 5 }, - { 99, 124, 0 , 0 }, - { 107, 124, 0 , 0 }, - { 115, 124, 4 , 11 }, - { 127, 124, 6 , 10 }, - { 141, 124, 3 , 3 }, - { 152, 124, 0 , 0 }, - { 160, 124, 2 , 5 }, - { 170, 124, 3 , 5 }, - { 181, 124, 6 , 5 }, - { 195, 124, 7 , 10 }, - { 210, 124, 7 , 8 }, - { 225, 124, 0 , 0 }, - { 233, 124, 4 , 10 }, - { 4, 148, 4 , 13 }, - { 16, 148, 4 , 13 }, - { 28, 148, 4 , 13 }, - { 40, 148, 4 , 13 }, - { 52, 148, 4 , 13 }, - { 64, 148, 4 , 13 }, - { 76, 148, 7 , 10 }, - { 91, 148, 4 , 13 }, - { 103, 148, 4 , 13 }, - { 115, 148, 4 , 13 }, - { 127, 148, 4 , 13 }, - { 139, 148, 4 , 13 }, - { 151, 148, 2 , 13 }, - { 161, 148, 2 , 13 }, - { 171, 148, 3 , 13 }, - { 182, 148, 3 , 13 }, - { 193, 148, 5 , 10 }, - { 206, 148, 4 , 13 }, - { 218, 148, 4 , 13 }, - { 230, 148, 4 , 13 }, - { 242, 148, 4 , 13 }, - { 4, 172, 4 , 13 }, - { 16, 172, 4 , 13 }, - { 28, 172, 5 , 5 }, - { 41, 172, 6 , 12 }, - { 55, 172, 4 , 13 }, - { 67, 172, 4 , 13 }, - { 79, 172, 4 , 13 }, - { 91, 172, 4 , 13 }, - { 103, 172, 4 , 13 }, - { 115, 172, 0 , 0 }, - { 123, 172, 5 , 12 }, - { 136, 172, 4 , 12 }, - { 148, 172, 4 , 12 }, - { 160, 172, 4 , 12 }, - { 172, 172, 4 , 12 }, - { 184, 172, 4 , 12 }, - { 196, 172, 4 , 12 }, - { 208, 172, 7 , 8 }, - { 223, 172, 3 , 11 }, - { 234, 172, 4 , 12 }, - { 4, 196, 4 , 12 }, - { 16, 196, 4 , 12 }, - { 28, 196, 4 , 12 }, - { 40, 196, 3 , 12 }, - { 51, 196, 3 , 12 }, - { 62, 196, 3 , 12 }, - { 73, 196, 3 , 12 }, - { 84, 196, 0 , 0 }, - { 92, 196, 4 , 12 }, - { 104, 196, 4 , 12 }, - { 116, 196, 4 , 12 }, - { 128, 196, 4 , 12 }, - { 140, 196, 4 , 12 }, - { 152, 196, 4 , 12 }, - { 164, 196, 5 , 5 }, - { 177, 196, 6 , 10 }, - { 191, 196, 4 , 12 }, - { 203, 196, 4 , 12 }, - { 215, 196, 4 , 12 }, - { 227, 196, 4 , 12 }, - { 239, 196, 4 , 15 }, - { 4, 220, 0 , 0 }, - { 12, 220, 4 , 15 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo ashesFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 0, 3, 4, { 0 }}, - { 34, 0, 1, 5, { 0 }}, - { 35, 0, 4, 8, { 0 }}, - { 36, 0, 2, 7, { 0 }}, - { 37, 0, 5, 9, { 0 }}, - { 38, 0, 4, 8, { 0 }}, - { 39, 0, 1, 3, { 0 }}, - { 40, 0, 2, 5, { 0 }}, - { 41, 0, 2, 5, { 0 }}, - { 42, 0, 3, 7, { 0 }}, - { 43, 0, 6, 7, { 0 }}, - { 44, 0, 12, 4, { 0 }}, - { 45, 0, 9, 5, { 0 }}, - { 46, 0, 12, 3, { 0 }}, - { 47, 0, 3, 7, { 0 }}, - { 48, 0, 5, 6, { 0 }}, - { 49, 0, 5, 4, { 0 }}, - { 50, 0, 5, 6, { 0 }}, - { 51, 0, 5, 6, { 0 }}, - { 52, 0, 5, 8, { 0 }}, - { 53, 0, 5, 6, { 0 }}, - { 54, 0, 5, 6, { 0 }}, - { 55, 0, 5, 6, { 0 }}, - { 56, 0, 5, 6, { 0 }}, - { 57, 0, 5, 6, { 0 }}, - { 58, 0, 8, 3, { 0 }}, - { 59, 0, 8, 4, { 0 }}, - { 60, 0, 5, 6, { 0 }}, - { 61, 0, 7, 7, { 0 }}, - { 62, 0, 5, 6, { 0 }}, - { 63, 1, 3, 7, { 0 }}, - { 64, 0, 5, 10, { 0 }}, - { 65, 0, 3, 6, { 0 }}, - { 66, 0, 3, 6, { 0 }}, - { 67, 0, 3, 6, { 0 }}, - { 68, 0, 3, 6, { 0 }}, - { 69, 0, 3, 6, { 0 }}, - { 70, 0, 3, 6, { 0 }}, - { 71, 0, 3, 6, { 0 }}, - { 72, 0, 3, 6, { 0 }}, - { 73, 0, 3, 3, { 0 }}, - { 74, 0, 3, 5, { 0 }}, - { 75, 0, 3, 6, { 0 }}, - { 76, 0, 3, 6, { 0 }}, - { 77, 0, 3, 9, { 0 }}, - { 78, 0, 3, 6, { 0 }}, - { 79, 0, 3, 6, { 0 }}, - { 80, 0, 3, 6, { 0 }}, - { 81, 0, 3, 7, { 0 }}, - { 82, 0, 3, 6, { 0 }}, - { 83, 0, 3, 6, { 0 }}, - { 84, 0, 3, 6, { 0 }}, - { 85, 0, 3, 6, { 0 }}, - { 86, 0, 3, 6, { 0 }}, - { 87, 0, 3, 9, { 0 }}, - { 88, 0, 3, 6, { 0 }}, - { 89, 0, 3, 6, { 0 }}, - { 90, 0, 3, 6, { 0 }}, - { 91, 0, 2, 4, { 0 }}, - { 92, 0, 3, 7, { 0 }}, - { 93, 0, 2, 4, { 0 }}, - { 94, 0, 3, 7, { 0 }}, - { 95, 0, 12, 7, { 0 }}, - { 96, 0, 1, 4, { 0 }}, - { 97, 0, 5, 6, { 0 }}, - { 98, 0, 3, 6, { 0 }}, - { 99, 0, 5, 5, { 0 }}, - { 100, 0, 3, 6, { 0 }}, - { 101, 0, 5, 6, { 0 }}, - { 102, 0, 3, 5, { 0 }}, - { 103, 0, 5, 6, { 0 }}, - { 104, 0, 3, 6, { 0 }}, - { 105, 0, 3, 3, { 0 }}, - { 106, 0, 3, 5, { 0 }}, - { 107, 0, 3, 6, { 0 }}, - { 108, 0, 3, 4, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 6, { 0 }}, - { 111, 0, 5, 6, { 0 }}, - { 112, 0, 5, 6, { 0 }}, - { 113, 0, 5, 6, { 0 }}, - { 114, 0, 5, 5, { 0 }}, - { 115, 0, 5, 6, { 0 }}, - { 116, 0, 3, 5, { 0 }}, - { 117, 0, 5, 6, { 0 }}, - { 118, 0, 5, 7, { 0 }}, - { 119, 0, 5, 9, { 0 }}, - { 120, 0, 5, 6, { 0 }}, - { 121, 0, 5, 6, { 0 }}, - { 122, 0, 5, 6, { 0 }}, - { 123, 0, 2, 6, { 0 }}, - { 124, 0, 3, 3, { 0 }}, - { 125, 0, 2, 6, { 0 }}, - { 126, 0, 1, 6, { 0 }}, - { 161, 0, 4, 4, { 0 }}, - { 162, 0, 3, 6, { 0 }}, - { 163, 0, 3, 7, { 0 }}, - { 8364, 0, 3, 7, { 0 }}, - { 165, 0, 3, 7, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 3, 6, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 0, 1, 9, { 0 }}, - { 170, 0, 1, 5, { 0 }}, - { 171, 0, 6, 8, { 0 }}, - { 172, 0, 0, 0, { 0 }}, - { 174, 0, 1, 9, { 0 }}, - { 175, 0, 0, 6, { 0 }}, - { 176, 0, 1, 5, { 0 }}, - { 177, 0, 5, 7, { 0 }}, - { 178, 0, 1, 5, { 0 }}, - { 179, 0, 0, 0, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 5, 6, { 0 }}, - { 182, 0, 3, 8, { 0 }}, - { 183, 0, 7, 5, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 1, 4, { 0 }}, - { 186, 0, 1, 5, { 0 }}, - { 187, 0, 6, 8, { 0 }}, - { 338, 0, 3, 9, { 0 }}, - { 339, 0, 5, 9, { 0 }}, - { 376, 0, 0, 0, { 0 }}, - { 191, 0, 4, 6, { 0 }}, - { 192, 0, 0, 6, { 0 }}, - { 193, 0, 0, 6, { 0 }}, - { 194, 0, 0, 6, { 0 }}, - { 195, 0, 0, 6, { 0 }}, - { 196, 0, 0, 6, { 0 }}, - { 197, 0, 0, 6, { 0 }}, - { 198, 0, 3, 9, { 0 }}, - { 199, 0, 3, 6, { 0 }}, - { 200, 0, 0, 6, { 0 }}, - { 201, 0, 0, 6, { 0 }}, - { 202, 0, 0, 6, { 0 }}, - { 203, 0, 0, 6, { 0 }}, - { 204, 0, 0, 4, { 0 }}, - { 205, 0, 0, 4, { 0 }}, - { 206, 0, 0, 5, { 0 }}, - { 207, 0, 0, 5, { 0 }}, - { 208, 0, 3, 7, { 0 }}, - { 209, 0, 0, 6, { 0 }}, - { 210, 0, 0, 6, { 0 }}, - { 211, 0, 0, 6, { 0 }}, - { 212, 0, 0, 6, { 0 }}, - { 213, 0, 0, 6, { 0 }}, - { 214, 0, 0, 6, { 0 }}, - { 215, 0, 7, 7, { 0 }}, - { 216, 0, 2, 8, { 0 }}, - { 217, 0, 0, 6, { 0 }}, - { 218, 0, 0, 6, { 0 }}, - { 219, 0, 0, 6, { 0 }}, - { 220, 0, 0, 6, { 0 }}, - { 221, 0, 0, 6, { 0 }}, - { 222, 0, 0, 0, { 0 }}, - { 223, 0, 3, 7, { 0 }}, - { 224, 0, 1, 6, { 0 }}, - { 225, 0, 1, 6, { 0 }}, - { 226, 0, 1, 6, { 0 }}, - { 227, 0, 1, 6, { 0 }}, - { 228, 0, 1, 6, { 0 }}, - { 229, 0, 1, 6, { 0 }}, - { 230, 0, 5, 9, { 0 }}, - { 231, 0, 5, 5, { 0 }}, - { 232, 0, 1, 6, { 0 }}, - { 233, 0, 1, 6, { 0 }}, - { 234, 0, 1, 6, { 0 }}, - { 235, 0, 1, 6, { 0 }}, - { 236, 0, 1, 5, { 0 }}, - { 237, 0, 1, 5, { 0 }}, - { 238, 0, 1, 5, { 0 }}, - { 239, 0, 1, 5, { 0 }}, - { 240, 0, 0, 0, { 0 }}, - { 241, 0, 1, 6, { 0 }}, - { 242, 0, 1, 6, { 0 }}, - { 243, 0, 1, 6, { 0 }}, - { 244, 0, 1, 6, { 0 }}, - { 245, 0, 1, 6, { 0 }}, - { 246, 0, 1, 6, { 0 }}, - { 247, 0, 7, 7, { 0 }}, - { 248, 0, 4, 8, { 0 }}, - { 249, 0, 1, 6, { 0 }}, - { 250, 0, 1, 6, { 0 }}, - { 251, 0, 1, 6, { 0 }}, - { 252, 0, 1, 6, { 0 }}, - { 253, 0, 1, 6, { 0 }}, - { 254, 0, 0, 0, { 0 }}, - { 255, 0, 1, 6, { 0 }}, -}; - -// Style loading function: Ashes -static void GuiLoadStyleAshes(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < ASHES_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(ashesStyleProps[i].controlId, ashesStyleProps[i].propertyId, ashesStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int ashesFontDataSize = 0; - unsigned char *data = DecompressData(ashesFontData, ASHES_STYLE_FONT_ATLAS_COMP_SIZE, &ashesFontDataSize); - Image imFont = { data, 256, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, ashesFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, ashesFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 254, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_bluish.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_bluish.h deleted file mode 100644 index d95ab8c..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_bluish.h +++ /dev/null @@ -1,610 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleBluish(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define BLUISH_STYLE_PROPS_COUNT 14 - -// Custom style name: Bluish -static const GuiStyleProp bluishStyleProps[BLUISH_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x5ca6a6ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0xb4e8f3ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x447e77ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0x5f8792ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xcdeff7ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x4c6c74ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x3b5b5fff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xeaffffff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x275057ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x96aaacff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0xc8d7d9ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x8c9c9eff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 18, (int)0x84adb7ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0xe8eef1ff }, // DEFAULT_BACKGROUND_COLOR -}; - -// WARNING: This style uses a custom font: "homespun.ttf" (size: 10, spacing: 1) - -#define BLUISH_STYLE_FONT_ATLAS_COMP_SIZE 2730 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char bluishFontData[BLUISH_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0x9d, 0xdb, 0x92, 0xdb, 0x38, 0x0c, 0x44, 0x45, 0xee, 0xff, 0xff, 0xf1, 0x90, 0xdc, 0xca, 0xc8, 0x33, 0xa9, 0x4d, 0xd4, - 0x10, 0x01, 0x41, 0x17, 0xef, 0x9c, 0x9c, 0x4a, 0x1e, 0x44, 0x8b, 0x26, 0x09, 0x4a, 0x76, 0x84, 0x76, 0x63, 0x2c, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0x51, 0xc5, 0xb1, 0x2a, 0x5f, 0x5d, 0x1d, 0x3d, 0xad, 0xc7, 0xab, 0xd1, 0xee, 0xeb, 0xad, 0x3a, - 0x7a, 0xb0, 0x5a, 0xec, 0xb6, 0x3f, 0x29, 0x2f, 0x32, 0x56, 0xb6, 0x7e, 0xaf, 0xc7, 0xf6, 0x2a, 0x79, 0x5e, 0x5f, 0x5d, - 0xb3, 0xd8, 0x66, 0x88, 0x63, 0x7d, 0x73, 0xbe, 0x63, 0x14, 0xd1, 0x52, 0xc7, 0x10, 0xe3, 0x19, 0x9f, 0x67, 0x6d, 0xf7, - 0x68, 0x9d, 0xb5, 0xf5, 0x1e, 0x6d, 0xa3, 0x8f, 0x26, 0x77, 0xc5, 0xaf, 0x77, 0x54, 0x2b, 0xd4, 0x45, 0x3c, 0xc7, 0xe6, - 0x6b, 0x57, 0xca, 0xd4, 0xab, 0xad, 0x77, 0x18, 0xa3, 0x8d, 0xf6, 0x5a, 0x8f, 0x3f, 0x67, 0x31, 0x5c, 0xaf, 0xd7, 0x2d, - 0xc7, 0xe3, 0xdf, 0x3f, 0xc7, 0x53, 0x36, 0xae, 0x83, 0x5f, 0xd1, 0xea, 0x22, 0x5e, 0x6a, 0x3c, 0xeb, 0xca, 0x95, 0xcd, - 0x1e, 0xad, 0xb3, 0x96, 0xe9, 0xd5, 0xde, 0x3e, 0x7f, 0x1d, 0xe9, 0xf6, 0x3c, 0xca, 0x67, 0xdb, 0xd6, 0xda, 0xb5, 0xa4, - 0xfb, 0xaa, 0x9a, 0xef, 0x62, 0x5e, 0x5b, 0xdb, 0xab, 0xd0, 0x5d, 0x2d, 0xc7, 0xe3, 0xaf, 0x77, 0xf4, 0x78, 0xfd, 0x55, - 0x33, 0x6b, 0x62, 0x3c, 0x45, 0xb4, 0xd8, 0x67, 0x1d, 0x89, 0x7f, 0x79, 0x8d, 0xb4, 0x8a, 0xeb, 0x79, 0x88, 0x2b, 0xfa, - 0xcc, 0xe8, 0xfb, 0xe3, 0x5f, 0x5e, 0x7b, 0xb5, 0x88, 0x4f, 0xa5, 0x6b, 0xe3, 0x5f, 0x5e, 0xf7, 0xff, 0x2a, 0x46, 0x5f, - 0x64, 0xf4, 0xf5, 0xdd, 0xd6, 0xf3, 0xb9, 0xea, 0xbb, 0xfe, 0xd7, 0x75, 0x56, 0x7b, 0xeb, 0xbc, 0xd8, 0xdb, 0xf3, 0xf5, - 0xc5, 0x7f, 0xc8, 0x4f, 0x9e, 0xaf, 0x5d, 0x7c, 0x74, 0x16, 0x3d, 0xe9, 0xfa, 0xef, 0x72, 0x3c, 0xe5, 0x75, 0xff, 0xdf, - 0x9e, 0xb3, 0xe7, 0x2a, 0xf4, 0xc4, 0x7f, 0x2f, 0xc6, 0x67, 0x5e, 0xfb, 0xba, 0x6f, 0x7f, 0xfc, 0xd7, 0x1e, 0xb7, 0xde, - 0xe5, 0xec, 0x5d, 0xbc, 0xb8, 0xbe, 0xff, 0x15, 0xe3, 0x3b, 0xcf, 0xd7, 0xde, 0xf1, 0xcc, 0x2f, 0x2b, 0xce, 0xd7, 0x33, - 0x76, 0x67, 0xe0, 0x89, 0x7f, 0x91, 0xab, 0x5a, 0x2e, 0xff, 0xfc, 0xb7, 0xe2, 0x6f, 0x8d, 0xd4, 0x8a, 0xbf, 0x6f, 0x16, - 0xc3, 0xf9, 0x1d, 0xfc, 0x79, 0xf1, 0x1f, 0xdf, 0xff, 0x1f, 0x9a, 0x9b, 0x9b, 0x7a, 0xbd, 0xd5, 0xd3, 0x3d, 0xb3, 0x8e, - 0x8c, 0xe7, 0x69, 0xb3, 0x80, 0x23, 0x7c, 0x04, 0xe2, 0xf8, 0x41, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd2, 0x54, 0x3e, 0x59, 0x0a, 0x93, 0xec, 0x96, 0x63, 0xaa, 0x20, 0xad, 0xce, 0xb1, 0x14, 0x49, 0xf6, 0x28, 0xaf, 0x5a, - 0x8f, 0xe5, 0x22, 0xcd, 0xcf, 0x08, 0x28, 0x52, 0xae, 0x6a, 0x69, 0xd3, 0x2a, 0x8c, 0xed, 0x6c, 0xae, 0x56, 0xe7, 0x74, - 0xb1, 0x56, 0x7b, 0xa3, 0xbc, 0x6e, 0x3d, 0x6a, 0x60, 0x74, 0x91, 0xa7, 0xe5, 0x63, 0x27, 0x3b, 0xd7, 0x5c, 0x2d, 0x7d, - 0x37, 0xd7, 0xe7, 0x53, 0xbe, 0x1c, 0xcb, 0xab, 0x5a, 0xea, 0x3c, 0xa5, 0xff, 0xb0, 0x46, 0xa9, 0x74, 0x15, 0x23, 0x3c, - 0xeb, 0x96, 0x7a, 0x4e, 0x0b, 0xc5, 0x5f, 0xcf, 0x4a, 0xe7, 0xe6, 0x6d, 0xd5, 0xa3, 0xee, 0xcd, 0xd7, 0x32, 0xaf, 0x3e, - 0x50, 0x31, 0xd6, 0x1a, 0x09, 0xaf, 0x76, 0x66, 0x18, 0xba, 0x8a, 0xbd, 0xb9, 0x35, 0x57, 0x6e, 0x72, 0xec, 0xac, 0xe1, - 0x71, 0xb5, 0xcc, 0x9c, 0x3a, 0xa3, 0x1b, 0xf3, 0xb5, 0x15, 0x26, 0xdd, 0x75, 0x4e, 0x4f, 0xd0, 0xab, 0x78, 0x77, 0x8f, - 0xa5, 0xc3, 0xe9, 0x46, 0xfc, 0xab, 0x73, 0x6e, 0x6b, 0x4b, 0x75, 0xe5, 0x82, 0xc7, 0xce, 0x1a, 0x1e, 0x57, 0xcb, 0xcc, - 0xad, 0x5f, 0x09, 0xdf, 0xb1, 0xb3, 0xce, 0x39, 0x6f, 0x07, 0x0c, 0x77, 0x3f, 0xe3, 0x7b, 0xa7, 0x66, 0xde, 0xff, 0x4b, - 0xe0, 0x13, 0xb9, 0x1c, 0xd6, 0x6a, 0xcc, 0xdf, 0xb1, 0x63, 0x0a, 0x93, 0xac, 0x73, 0x9e, 0xa5, 0xdd, 0x28, 0xc1, 0x3b, - 0xf6, 0x35, 0x2d, 0x67, 0xc4, 0x3f, 0xaa, 0x30, 0xe9, 0x69, 0xe7, 0x2c, 0x97, 0x6b, 0x7a, 0x86, 0xbc, 0xfe, 0xad, 0xf5, - 0xc8, 0x5c, 0x43, 0x4b, 0x07, 0x64, 0x8f, 0xe0, 0x27, 0xd0, 0x78, 0x66, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0xd0, 0xff, 0xd8, 0xea, 0x1b, 0x9f, 0x42, 0xc5, 0x56, 0xed, 0x78, 0x3d, 0x7a, 0xea, 0xe5, 0xaa, 0x9b, 0xec, - 0x96, 0xc8, 0x5a, 0xec, 0xb5, 0xf8, 0xce, 0xdc, 0x7f, 0xde, 0xad, 0x35, 0x25, 0xea, 0xa9, 0x76, 0xfb, 0x3c, 0x2b, 0x27, - 0xfb, 0x37, 0x76, 0x47, 0xb6, 0xfe, 0x5b, 0x1f, 0xa8, 0x4f, 0xb2, 0x94, 0x4b, 0x5f, 0x23, 0xcf, 0xcc, 0x16, 0xae, 0x2d, - 0x6d, 0x73, 0x2d, 0xa2, 0x39, 0xb4, 0x88, 0x0e, 0xc5, 0xce, 0x86, 0xe5, 0xc5, 0x3f, 0x3a, 0xe7, 0x6b, 0x5b, 0xbc, 0x3e, - 0x22, 0xcf, 0x8b, 0xbf, 0xa5, 0xf2, 0xc9, 0x8a, 0xff, 0x31, 0x1d, 0x4c, 0x5e, 0xfc, 0x23, 0x1a, 0x2e, 0x3d, 0x76, 0x4b, - 0x07, 0x75, 0x65, 0xfc, 0xb5, 0x8f, 0xd6, 0x4c, 0xfc, 0xfd, 0x2a, 0x1f, 0x7f, 0xfc, 0x8f, 0xe9, 0x60, 0xf2, 0xe2, 0x1f, - 0xd1, 0x70, 0x74, 0xc3, 0x2d, 0xaa, 0xbb, 0xbd, 0x47, 0xc6, 0x8e, 0xc6, 0xb0, 0x05, 0xe2, 0x5f, 0xe4, 0x18, 0x8f, 0xea, - 0x3f, 0x3d, 0xd7, 0x7f, 0x39, 0x4d, 0x07, 0x93, 0x7b, 0xff, 0xcf, 0x5a, 0x87, 0xb2, 0xa3, 0x3e, 0x2c, 0x01, 0xb5, 0x48, - 0x4f, 0x5e, 0x8b, 0x39, 0xbd, 0x43, 0x4e, 0xfc, 0x23, 0x7d, 0xcd, 0x9d, 0xe3, 0x8d, 0x7f, 0x09, 0xc4, 0x3f, 0x73, 0xec, - 0x76, 0xfc, 0x8b, 0xa1, 0x16, 0xd9, 0x3f, 0x27, 0x3b, 0xfe, 0x51, 0x55, 0x4b, 0x49, 0xec, 0x6b, 0x24, 0xc7, 0xdf, 0xaf, - 0x93, 0xc9, 0x1d, 0xbb, 0x1d, 0xff, 0xf8, 0xe8, 0xd6, 0x3f, 0xf5, 0x04, 0x0d, 0x3d, 0xe0, 0x38, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x2c, 0x46, 0x45, 0x2a, 0x5b, 0x65, 0x34, 0xaf, 0x16, 0xfa, 0x52, 0x50, 0x6c, - 0xeb, 0x27, 0x72, 0x9c, 0x7e, 0xf6, 0x6b, 0x77, 0x79, 0xdf, 0x47, 0xad, 0x56, 0x64, 0x6c, 0x67, 0xd7, 0x38, 0x9b, 0x53, - 0xf9, 0x58, 0xba, 0x17, 0xdf, 0x6f, 0x50, 0x95, 0x37, 0x4d, 0x15, 0x4e, 0x37, 0xde, 0xdf, 0xee, 0x5b, 0x5e, 0x15, 0xba, - 0x9f, 0x4c, 0x17, 0x8b, 0x21, 0xf7, 0xeb, 0x08, 0x8c, 0xad, 0x89, 0xa3, 0xaa, 0x8f, 0x1a, 0xfe, 0xa5, 0x74, 0xdc, 0xcb, - 0x61, 0xd6, 0x53, 0x49, 0x67, 0x0c, 0xd7, 0x5c, 0xb7, 0x77, 0x07, 0x74, 0x79, 0x8d, 0x6d, 0x8f, 0xb5, 0x4a, 0x7d, 0xcb, - 0x22, 0xab, 0x99, 0xf9, 0xbd, 0x6a, 0x86, 0xa8, 0x1a, 0x66, 0xe7, 0x8f, 0xd4, 0xd8, 0x54, 0xb5, 0xa4, 0x45, 0xf4, 0xd1, - 0xc2, 0xbf, 0x09, 0x1f, 0x3b, 0x75, 0xa4, 0x3c, 0x3d, 0x5b, 0x3b, 0xc0, 0xaa, 0xe4, 0xd6, 0x12, 0x6a, 0x95, 0xf8, 0xbd, - 0x6a, 0x2c, 0xe5, 0x81, 0xdd, 0x9b, 0xd7, 0x9b, 0x45, 0xef, 0x19, 0xdf, 0x9d, 0x21, 0xcb, 0x61, 0x66, 0xee, 0xce, 0x59, - 0x8c, 0x19, 0x2d, 0xee, 0x1d, 0x70, 0x6e, 0x25, 0x8f, 0xf3, 0x94, 0x07, 0xb3, 0xb3, 0xc8, 0xce, 0x2c, 0xcf, 0xc7, 0x7f, - 0x39, 0xe4, 0x09, 0x52, 0xc2, 0x5a, 0x19, 0xdf, 0x0e, 0x38, 0x3b, 0xfe, 0x67, 0x29, 0x0f, 0xb2, 0x1c, 0x38, 0xfa, 0x43, - 0xe3, 0xbf, 0xe7, 0x36, 0xe3, 0x8f, 0xa5, 0x5f, 0x31, 0xba, 0xdc, 0x72, 0x67, 0xc8, 0x3e, 0x67, 0x71, 0xff, 0x4f, 0xe6, - 0x19, 0xf1, 0x8f, 0x39, 0xd4, 0x14, 0xb7, 0x97, 0xd0, 0x5d, 0xf1, 0xf7, 0xd7, 0x91, 0x8a, 0x9d, 0x93, 0xaf, 0xbd, 0xbc, - 0x22, 0xfe, 0xf0, 0x3e, 0xce, 0x47, 0x0d, 0x7d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x29, 0xff, - 0xc1, 0xa3, 0x5e, 0xb9, 0xbf, 0xa5, 0xee, 0x64, 0xb5, 0x4a, 0xb8, 0xa5, 0xa4, 0xf5, 0x69, 0x69, 0x8c, 0x8e, 0xd6, 0x3c, - 0xfb, 0xea, 0xbb, 0x84, 0xd5, 0x3f, 0xbf, 0x73, 0xd0, 0xeb, 0xbf, 0x35, 0x29, 0xb3, 0x9e, 0xdf, 0x72, 0xfe, 0xaf, 0xf9, - 0xcf, 0xf0, 0x1b, 0xb0, 0x1c, 0x22, 0xea, 0xb4, 0xb6, 0xa2, 0xc9, 0x9c, 0x6a, 0x97, 0x9e, 0x01, 0x2d, 0x90, 0x83, 0xb8, - 0xdf, 0x65, 0xa7, 0x39, 0xeb, 0x50, 0xd5, 0x0b, 0x3d, 0x36, 0xfa, 0x8e, 0x1e, 0xc6, 0xa7, 0xa1, 0xd1, 0x1e, 0x0a, 0x8b, - 0xeb, 0xb5, 0xaa, 0x26, 0x51, 0x79, 0xcb, 0xf8, 0x2f, 0x4e, 0x6d, 0x5f, 0x9f, 0xf0, 0xcb, 0xc8, 0xf2, 0xd8, 0x28, 0x01, - 0x85, 0x4f, 0x31, 0xea, 0x8f, 0xf9, 0xe2, 0xaf, 0xaa, 0xd5, 0xf9, 0xef, 0x8d, 0x57, 0xb8, 0x6c, 0xe4, 0x57, 0xb0, 0xc9, - 0x73, 0xf3, 0xc8, 0xf7, 0xd8, 0xb0, 0x32, 0xe5, 0x5a, 0x57, 0xe9, 0x8b, 0xbf, 0xd7, 0xdb, 0xe1, 0x8a, 0xf8, 0x47, 0x6b, - 0xdb, 0xe4, 0x3a, 0x73, 0x94, 0x87, 0x78, 0x6c, 0x78, 0x1d, 0x42, 0x8e, 0xdf, 0xff, 0xb3, 0xf5, 0x08, 0x79, 0x99, 0xea, - 0x6b, 0x7c, 0x36, 0x22, 0x3a, 0x9d, 0xb3, 0x32, 0xf3, 0xfe, 0xec, 0xbc, 0x47, 0x5b, 0xd9, 0xdf, 0x2a, 0xfe, 0x4f, 0xd6, - 0xf6, 0x3c, 0x89, 0x33, 0x6b, 0x9e, 0xa1, 0xfe, 0x79, 0xd7, 0x3d, 0xcd, 0x1a, 0xfc, 0x6c, 0x95, 0x17, 0x6b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x38, 0x00, 0x2d, 0xd2, 0xd3, 0x66, 0xbe, 0x87, 0x9a, 0xe6, 0x2f, 0xb4, 0x77, - 0x4e, 0x75, 0xd6, 0x25, 0x2b, 0x6e, 0x7d, 0xce, 0xb1, 0xda, 0x63, 0xbe, 0x95, 0x8e, 0xf4, 0x35, 0xb7, 0x5e, 0x33, 0xfa, - 0x2f, 0x4b, 0x45, 0xd1, 0xa6, 0x9e, 0xae, 0x0f, 0xe3, 0x79, 0x76, 0xfb, 0x9c, 0xc3, 0x87, 0xb3, 0x7a, 0x96, 0x7d, 0x8e, - 0xaa, 0x08, 0xa6, 0xfa, 0x2b, 0x9f, 0x2a, 0x89, 0xe6, 0xd2, 0xe7, 0xec, 0xbf, 0x93, 0xfa, 0x4d, 0x77, 0x73, 0x57, 0x04, - 0xb0, 0xab, 0x88, 0x95, 0xc3, 0x1e, 0x3e, 0x31, 0xe7, 0x94, 0x35, 0xbf, 0xd6, 0xa6, 0xde, 0xbf, 0x1a, 0x2e, 0x32, 0x4d, - 0xea, 0x5f, 0xb4, 0xf7, 0x8b, 0x75, 0x4e, 0x79, 0x65, 0xfd, 0xea, 0xe6, 0xf5, 0xb2, 0xad, 0xc2, 0x2a, 0xa6, 0x37, 0x8d, - 0xd6, 0x09, 0x95, 0x5d, 0x5f, 0xa3, 0xad, 0xb5, 0xe8, 0xc2, 0x53, 0xa8, 0x8b, 0x2b, 0x4d, 0x8d, 0x5b, 0x1d, 0xcf, 0x8d, - 0xbf, 0x76, 0x41, 0x1a, 0x93, 0x33, 0xff, 0xad, 0x20, 0x2c, 0x8e, 0x3b, 0xa5, 0xe5, 0x7e, 0x54, 0x0c, 0xcf, 0xa6, 0x2e, - 0xe3, 0xa9, 0xaf, 0xbd, 0x2e, 0x77, 0xa7, 0xb5, 0x2e, 0x7d, 0x77, 0xe7, 0xa8, 0x5c, 0x70, 0x71, 0xad, 0x91, 0xaa, 0x14, - 0x78, 0xcd, 0xf5, 0xaf, 0x34, 0x14, 0x7d, 0x5a, 0x75, 0x62, 0xed, 0xed, 0x3d, 0xc7, 0x24, 0xbf, 0xe2, 0x73, 0x8d, 0xc7, - 0x76, 0xfc, 0x6b, 0x9a, 0x1a, 0x60, 0x7c, 0xaf, 0x68, 0x0f, 0x7e, 0xb2, 0xce, 0xdf, 0xff, 0xd5, 0x27, 0x70, 0x99, 0xdc, - 0xb5, 0xc7, 0xe2, 0x5f, 0x4c, 0xcf, 0x96, 0x72, 0xf0, 0xfa, 0xb7, 0xd4, 0x9b, 0xb6, 0xcb, 0x9a, 0xff, 0xfa, 0xef, 0x52, - 0x6d, 0xf7, 0xec, 0xf8, 0xab, 0x71, 0xcf, 0xce, 0xe7, 0x58, 0xfc, 0x6d, 0x85, 0xd2, 0x6c, 0xaf, 0xf6, 0xdc, 0x86, 0xeb, - 0xbb, 0x97, 0xf5, 0xad, 0xac, 0x7c, 0xbf, 0xa6, 0x5e, 0xe0, 0x1b, 0x74, 0xc5, 0x3b, 0xdd, 0xad, 0x83, 0xfa, 0x70, 0xd7, - 0xa9, 0xd2, 0xca, 0x39, 0x6f, 0x8d, 0xbc, 0xa8, 0x9e, 0x6e, 0x4c, 0x7f, 0x37, 0x39, 0xaa, 0x2d, 0xca, 0x7a, 0xa7, 0x71, - 0xa2, 0x5a, 0xe9, 0xc9, 0x3a, 0xa8, 0x98, 0xcb, 0xde, 0x7b, 0xeb, 0xba, 0xd0, 0x8c, 0xcc, 0xc4, 0x32, 0xa6, 0x9a, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xfa, 0xc7, 0xaa, 0x5c, 0x35, 0x77, 0xfe, 0xbc, 0x72, 0xa5, 0xc8, - 0x5e, 0xeb, 0x44, 0x05, 0xad, 0xe2, 0xd6, 0xbe, 0x54, 0xb7, 0xe6, 0xc9, 0x56, 0xe9, 0xe8, 0xe3, 0x79, 0xda, 0xa7, 0x88, - 0xea, 0x68, 0x09, 0x3f, 0xa3, 0x5e, 0xff, 0x34, 0xb3, 0x3e, 0x8f, 0xfd, 0xec, 0x71, 0x38, 0x54, 0x30, 0x5d, 0xd6, 0x7b, - 0x5a, 0xcf, 0x68, 0x32, 0x1f, 0x3c, 0x44, 0x46, 0xa8, 0x99, 0x39, 0x8c, 0x26, 0x8f, 0xff, 0x23, 0xa3, 0xfc, 0x21, 0xdd, - 0x7a, 0xb6, 0xcf, 0x1a, 0x9f, 0xc7, 0xbb, 0x6b, 0x6c, 0xc3, 0xac, 0xad, 0x36, 0x8c, 0x36, 0xa5, 0x08, 0xd0, 0x33, 0x9a, - 0x89, 0x7f, 0x39, 0x90, 0x37, 0x1d, 0x32, 0x4f, 0xbf, 0xad, 0xc4, 0xd2, 0x1e, 0x3a, 0x76, 0x9b, 0xd2, 0xc8, 0x2c, 0xa6, - 0x43, 0x96, 0xde, 0xb7, 0xde, 0x1d, 0xa3, 0x62, 0xd9, 0xa4, 0x5e, 0xc9, 0xd6, 0xbe, 0x54, 0x43, 0xe1, 0x60, 0xf9, 0x0c, - 0x79, 0x47, 0xfe, 0xa4, 0xf8, 0x77, 0xd3, 0xf7, 0x40, 0x6b, 0x48, 0xf6, 0x7c, 0x6e, 0xb4, 0xe2, 0xaa, 0x84, 0xee, 0xbe, - 0x39, 0x2d, 0xf6, 0x55, 0xde, 0x64, 0x86, 0xdb, 0x5a, 0x07, 0xfb, 0x53, 0x3c, 0xa2, 0x49, 0xe8, 0xa7, 0xc4, 0xbf, 0x06, - 0xf5, 0x56, 0x3e, 0xcf, 0x26, 0x3b, 0x8b, 0xa8, 0xfd, 0x9a, 0xae, 0x72, 0xae, 0x5b, 0x02, 0xb9, 0x4f, 0x4b, 0x4b, 0xb3, - 0x98, 0x15, 0xeb, 0xa2, 0x31, 0xec, 0x87, 0xe2, 0x7f, 0x44, 0xb9, 0xf2, 0xf7, 0x1d, 0xa3, 0x38, 0x73, 0xe7, 0x96, 0x8a, - 0x48, 0xaf, 0x56, 0xa4, 0xbe, 0xe3, 0x55, 0x2d, 0xd6, 0x3a, 0xd8, 0xfd, 0x1d, 0xd1, 0x25, 0xdd, 0xed, 0xa2, 0xf3, 0x75, - 0x8d, 0x77, 0xb7, 0x8b, 0x8e, 0xad, 0x15, 0xea, 0xb7, 0x3b, 0x57, 0xfa, 0xef, 0x19, 0x5d, 0x46, 0x59, 0x5f, 0x05, 0xfd, - 0xe0, 0x15, 0x7c, 0x7f, 0xfc, 0x63, 0xaa, 0x8f, 0x12, 0x50, 0x91, 0x5c, 0xeb, 0x69, 0xe8, 0x6f, 0xe9, 0xc6, 0x3a, 0x58, - 0xae, 0x51, 0x3f, 0x51, 0x49, 0x11, 0xaf, 0xd5, 0xf7, 0xcc, 0xf8, 0xef, 0x69, 0xf5, 0x2c, 0x2f, 0xd1, 0xfb, 0x9d, 0xd0, - 0x9e, 0xa4, 0x2f, 0xfa, 0x3f, 0xc6, 0xff, 0x1d, 0x15, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x64, 0x07, - 0x20, 0x5b, 0x6b, 0x52, 0x53, 0x74, 0x35, 0xfa, 0x68, 0x75, 0x7a, 0x12, 0x55, 0xf3, 0xac, 0x7b, 0xf5, 0x3e, 0xc5, 0x7c, - 0x3a, 0x7b, 0xfe, 0x98, 0xed, 0xe8, 0x7b, 0x15, 0x2f, 0x96, 0x16, 0xa2, 0xba, 0xde, 0xa5, 0x1a, 0xef, 0xf0, 0x21, 0x9e, - 0x74, 0xfa, 0x75, 0x38, 0xf7, 0xeb, 0x7d, 0x94, 0xa2, 0xa3, 0x1a, 0x1e, 0x2f, 0x99, 0x63, 0xb6, 0x15, 0x5c, 0x5e, 0xc5, - 0x8b, 0xa5, 0x36, 0xf0, 0xa9, 0x53, 0x9a, 0x68, 0xd1, 0xfd, 0xeb, 0x27, 0xdd, 0xcd, 0xf0, 0x0d, 0xba, 0x5b, 0xef, 0xa3, - 0x6b, 0x4e, 0x29, 0x1d, 0x48, 0x95, 0x3b, 0x60, 0x75, 0xb2, 0xaa, 0xae, 0x31, 0x2f, 0x01, 0xe5, 0x48, 0x44, 0xd7, 0xe2, - 0x75, 0x32, 0x53, 0xc7, 0x57, 0x0d, 0x9c, 0xf6, 0x24, 0xf2, 0x39, 0x0d, 0xdd, 0xaf, 0xf7, 0xe9, 0xa6, 0xcb, 0x54, 0x56, - 0xee, 0x20, 0xe2, 0x03, 0xb7, 0xe7, 0xcf, 0xe3, 0xab, 0xd5, 0xa7, 0x3c, 0x83, 0xbc, 0xc7, 0x17, 0xe9, 0xe3, 0x34, 0x8c, - 0xec, 0xf8, 0x13, 0x72, 0xf7, 0xbe, 0xac, 0xce, 0xaa, 0x7a, 0x18, 0x37, 0x66, 0x95, 0xb4, 0x72, 0x24, 0xd2, 0xb2, 0xec, - 0x54, 0x57, 0xcb, 0x3a, 0xfe, 0xdc, 0xdc, 0xbd, 0x37, 0xfe, 0xe3, 0xf6, 0xf8, 0xdb, 0x2a, 0x39, 0x5f, 0x0b, 0xf1, 0xf7, - 0xc6, 0xbf, 0x27, 0xde, 0xff, 0x63, 0xf1, 0xd7, 0x2a, 0x39, 0x7f, 0xcb, 0x15, 0xf1, 0x1f, 0x66, 0xe5, 0xbc, 0x77, 0x8b, - 0x7f, 0xb9, 0x59, 0x55, 0x90, 0x5b, 0xc5, 0xf3, 0xfc, 0xf8, 0xc7, 0x54, 0x1d, 0xe5, 0xe6, 0x16, 0xbf, 0x6e, 0xe3, 0x9a, - 0xf7, 0xcf, 0xaf, 0xe2, 0x79, 0xee, 0xf1, 0x68, 0xfc, 0xf3, 0xe7, 0x38, 0x52, 0x7c, 0xab, 0xda, 0x45, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x3f, 0x35, 0x49, 0x99, 0x12, 0x75, 0xa8, 0xb9, 0xd7, 0x73, 0xc7, 0xf2, 0x17, - 0xd2, 0x2d, 0xd9, 0x33, 0xf2, 0x6a, 0xaa, 0x72, 0x7c, 0x80, 0x2c, 0xcd, 0x40, 0x95, 0x1a, 0x1c, 0x7f, 0x06, 0xdc, 0xd6, - 0x06, 0xb5, 0x80, 0x06, 0xa7, 0x1a, 0x1a, 0x9c, 0xe6, 0xf2, 0xdc, 0xe8, 0x86, 0xbf, 0x90, 0xe5, 0xac, 0x90, 0x39, 0x23, - 0x3d, 0xee, 0x26, 0x76, 0x45, 0x13, 0x7a, 0xaa, 0x9a, 0x74, 0xfd, 0x6b, 0x9d, 0x49, 0x34, 0x03, 0x1e, 0xd3, 0xe0, 0x34, - 0x97, 0x06, 0xc7, 0xaa, 0x1d, 0x55, 0x77, 0x6a, 0x73, 0xe9, 0x9c, 0x4a, 0xae, 0x8b, 0x90, 0x6f, 0xdc, 0x7a, 0x05, 0xe6, - 0xf5, 0x54, 0xd7, 0xfd, 0x16, 0xb6, 0x08, 0xa5, 0x5b, 0xe4, 0x0e, 0x1b, 0x69, 0xd1, 0x7e, 0x10, 0x56, 0xcd, 0xbe, 0x48, - 0xfd, 0xa2, 0xdc, 0x71, 0x5b, 0x75, 0xf8, 0x8a, 0xc3, 0xd9, 0x2a, 0x33, 0x6b, 0x16, 0x73, 0xaf, 0xd9, 0xae, 0x97, 0x93, - 0x5b, 0x07, 0x48, 0xb7, 0x14, 0xe9, 0x91, 0x52, 0xcc, 0x4a, 0x54, 0xdd, 0x5d, 0x05, 0x27, 0x5b, 0x3b, 0x54, 0x0c, 0x95, - 0xe0, 0xfc, 0x7d, 0x29, 0x33, 0x6b, 0x16, 0x73, 0xaf, 0x59, 0x8c, 0xd5, 0x3f, 0xbf, 0x65, 0x84, 0xaa, 0x4a, 0xd9, 0x99, - 0xb3, 0x7e, 0x89, 0x8b, 0x50, 0x37, 0xf4, 0x36, 0x77, 0xc4, 0x7f, 0x7f, 0xbd, 0xfc, 0x77, 0x86, 0x6b, 0xae, 0x23, 0xef, - 0x0e, 0x8c, 0x7a, 0x6e, 0x44, 0x94, 0x93, 0x96, 0xc7, 0x99, 0xcf, 0x61, 0xed, 0xec, 0xf8, 0x97, 0x9d, 0xfb, 0xbf, 0x76, - 0xf1, 0x1a, 0xb7, 0x6a, 0x30, 0xfc, 0xf7, 0xeb, 0x3c, 0xdf, 0xbb, 0x23, 0x2d, 0x76, 0x1d, 0xbe, 0xf3, 0xe2, 0x9f, 0xa9, - 0x26, 0xb9, 0x56, 0x67, 0x32, 0x92, 0x94, 0x4e, 0x4f, 0x98, 0x91, 0x77, 0xa7, 0xe5, 0xc5, 0xff, 0xa7, 0xa8, 0x49, 0x50, - 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xcf, 0xd5, 0xff, 0xf8, 0x3c, 0x78, 0x9e, 0xec, 0xb3, 0x93, 0xe7, - 0x40, 0x94, 0xad, 0xe2, 0x89, 0xa9, 0xa9, 0x96, 0x03, 0x95, 0xbd, 0xe6, 0xf5, 0x3f, 0x4d, 0xaa, 0x5b, 0x54, 0xed, 0xaa, - 0x7a, 0x81, 0x22, 0x26, 0xa2, 0xf1, 0x51, 0x47, 0xad, 0xdc, 0xcf, 0x35, 0x2a, 0x1e, 0xdd, 0xdb, 0xd8, 0xd1, 0x66, 0xb5, - 0x93, 0x9f, 0x58, 0x16, 0x63, 0xf6, 0x55, 0xee, 0x98, 0xf6, 0x48, 0x8d, 0x4f, 0x44, 0x5d, 0x91, 0xab, 0xe2, 0xd1, 0x2b, - 0xda, 0xa4, 0xc2, 0xc0, 0xae, 0xbf, 0x58, 0x4e, 0x7f, 0x2e, 0xae, 0xc7, 0xdb, 0x6f, 0x54, 0xf2, 0x44, 0xb4, 0x32, 0xdd, - 0x54, 0xf1, 0x74, 0x57, 0xc4, 0x22, 0x2d, 0x7b, 0xd9, 0xd4, 0x92, 0xa8, 0xa6, 0x3b, 0x37, 0xfe, 0x11, 0x85, 0xc5, 0x13, - 0x7c, 0x76, 0x8a, 0xe1, 0x72, 0xf2, 0x8e, 0xb5, 0x60, 0xee, 0x8a, 0xff, 0x7b, 0xae, 0x98, 0xed, 0x4a, 0xf1, 0x6e, 0x51, - 0x1e, 0x41, 0xc5, 0x4a, 0x4e, 0xfc, 0x9f, 0xbd, 0x2e, 0x79, 0x3e, 0x1b, 0xd7, 0x8c, 0x2c, 0xa6, 0x09, 0xbb, 0x22, 0x63, - 0x3d, 0x12, 0xaf, 0x98, 0xbb, 0x35, 0x3e, 0x11, 0x9f, 0x8d, 0xab, 0xd4, 0x47, 0x51, 0x9d, 0xc5, 0x3d, 0x55, 0x9d, 0x62, - 0x57, 0xcc, 0xdd, 0x1a, 0x9f, 0x27, 0xab, 0x78, 0xfc, 0x6a, 0x3a, 0xad, 0x58, 0x87, 0x77, 0x43, 0xc7, 0xb2, 0xb1, 0x3a, - 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, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xd6, 0x3f, - 0xac, 0x03, 0xf1, 0x87, 0x1f, 0x1b, 0xff, 0x7f, 0x01 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle bluishFontRecs[189] = { - { 4, 4, 5 , 10 }, - { 17, 4, 2 , 8 }, - { 27, 4, 4 , 3 }, - { 39, 4, 6 , 8 }, - { 53, 4, 5 , 10 }, - { 66, 4, 6 , 8 }, - { 80, 4, 5 , 10 }, - { 93, 4, 2 , 3 }, - { 103, 4, 3 , 8 }, - { 114, 4, 3 , 8 }, - { 125, 4, 6 , 6 }, - { 139, 4, 6 , 6 }, - { 153, 4, 2 , 3 }, - { 163, 4, 5 , 2 }, - { 176, 4, 2 , 2 }, - { 186, 4, 6 , 8 }, - { 200, 4, 5 , 8 }, - { 213, 4, 3 , 8 }, - { 224, 4, 5 , 8 }, - { 237, 4, 5 , 8 }, - { 4, 22, 5 , 8 }, - { 17, 22, 5 , 8 }, - { 30, 22, 5 , 8 }, - { 43, 22, 5 , 8 }, - { 56, 22, 5 , 8 }, - { 69, 22, 5 , 8 }, - { 82, 22, 2 , 8 }, - { 92, 22, 2 , 9 }, - { 102, 22, 4 , 6 }, - { 114, 22, 5 , 4 }, - { 127, 22, 4 , 6 }, - { 139, 22, 5 , 8 }, - { 152, 22, 6 , 8 }, - { 166, 22, 5 , 8 }, - { 179, 22, 5 , 8 }, - { 192, 22, 5 , 8 }, - { 205, 22, 5 , 8 }, - { 218, 22, 5 , 8 }, - { 231, 22, 5 , 8 }, - { 4, 40, 5 , 8 }, - { 17, 40, 5 , 8 }, - { 30, 40, 4 , 8 }, - { 42, 40, 5 , 8 }, - { 55, 40, 5 , 8 }, - { 68, 40, 5 , 8 }, - { 81, 40, 8 , 8 }, - { 97, 40, 5 , 8 }, - { 110, 40, 5 , 8 }, - { 123, 40, 5 , 8 }, - { 136, 40, 5 , 9 }, - { 149, 40, 5 , 8 }, - { 162, 40, 5 , 8 }, - { 175, 40, 6 , 8 }, - { 189, 40, 5 , 8 }, - { 202, 40, 5 , 8 }, - { 215, 40, 8 , 8 }, - { 231, 40, 5 , 8 }, - { 4, 58, 5 , 8 }, - { 17, 58, 5 , 8 }, - { 30, 58, 3 , 8 }, - { 41, 58, 6 , 8 }, - { 55, 58, 3 , 8 }, - { 66, 58, 6 , 4 }, - { 80, 58, 5 , 1 }, - { 93, 58, 2 , 3 }, - { 103, 58, 5 , 6 }, - { 116, 58, 5 , 8 }, - { 129, 58, 5 , 6 }, - { 142, 58, 5 , 8 }, - { 155, 58, 5 , 6 }, - { 168, 58, 5 , 8 }, - { 181, 58, 5 , 7 }, - { 194, 58, 5 , 8 }, - { 207, 58, 2 , 8 }, - { 217, 58, 3 , 9 }, - { 228, 58, 5 , 8 }, - { 241, 58, 2 , 8 }, - { 4, 76, 8 , 6 }, - { 20, 76, 5 , 6 }, - { 33, 76, 5 , 6 }, - { 46, 76, 5 , 7 }, - { 59, 76, 5 , 7 }, - { 72, 76, 5 , 6 }, - { 85, 76, 5 , 6 }, - { 98, 76, 5 , 8 }, - { 111, 76, 5 , 6 }, - { 124, 76, 5 , 6 }, - { 137, 76, 8 , 6 }, - { 153, 76, 5 , 6 }, - { 166, 76, 5 , 7 }, - { 179, 76, 5 , 6 }, - { 192, 76, 4 , 8 }, - { 204, 76, 2 , 10 }, - { 214, 76, 4 , 8 }, - { 226, 76, 6 , 4 }, - { 240, 76, 2 , 8 }, - { 4, 94, 5 , 8 }, - { 17, 94, 5 , 8 }, - { 30, 94, 0 , 0 }, - { 38, 94, 6 , 8 }, - { 52, 94, 5 , 10 }, - { 65, 94, 5 , 10 }, - { 78, 94, 5 , 9 }, - { 91, 94, 7 , 8 }, - { 106, 94, 4 , 6 }, - { 118, 94, 5 , 4 }, - { 131, 94, 5 , 3 }, - { 144, 94, 7 , 8 }, - { 159, 94, 5 , 2 }, - { 172, 94, 4 , 4 }, - { 184, 94, 6 , 8 }, - { 198, 94, 4 , 6 }, - { 210, 94, 4 , 6 }, - { 222, 94, 0 , 0 }, - { 230, 94, 5 , 9 }, - { 4, 112, 6 , 8 }, - { 18, 112, 2 , 2 }, - { 28, 112, 0 , 0 }, - { 36, 112, 3 , 6 }, - { 47, 112, 4 , 6 }, - { 59, 112, 5 , 4 }, - { 72, 112, 6 , 8 }, - { 86, 112, 6 , 6 }, - { 100, 112, 5 , 10 }, - { 113, 112, 5 , 8 }, - { 126, 112, 5 , 10 }, - { 139, 112, 5 , 10 }, - { 152, 112, 5 , 10 }, - { 165, 112, 5 , 10 }, - { 178, 112, 5 , 10 }, - { 191, 112, 5 , 10 }, - { 204, 112, 6 , 8 }, - { 218, 112, 5 , 9 }, - { 231, 112, 5 , 10 }, - { 4, 130, 5 , 10 }, - { 17, 130, 5 , 10 }, - { 30, 130, 5 , 10 }, - { 43, 130, 4 , 10 }, - { 55, 130, 4 , 10 }, - { 67, 130, 4 , 10 }, - { 79, 130, 4 , 10 }, - { 91, 130, 6 , 8 }, - { 105, 130, 5 , 10 }, - { 118, 130, 5 , 10 }, - { 131, 130, 5 , 10 }, - { 144, 130, 5 , 10 }, - { 157, 130, 5 , 10 }, - { 170, 130, 5 , 10 }, - { 183, 130, 4 , 4 }, - { 195, 130, 5 , 10 }, - { 208, 130, 5 , 10 }, - { 221, 130, 5 , 10 }, - { 234, 130, 5 , 10 }, - { 4, 148, 5 , 10 }, - { 17, 148, 5 , 10 }, - { 30, 148, 5 , 8 }, - { 43, 148, 5 , 8 }, - { 56, 148, 5 , 9 }, - { 69, 148, 5 , 9 }, - { 82, 148, 5 , 9 }, - { 95, 148, 5 , 9 }, - { 108, 148, 5 , 8 }, - { 121, 148, 5 , 10 }, - { 134, 148, 6 , 6 }, - { 148, 148, 5 , 7 }, - { 161, 148, 5 , 9 }, - { 174, 148, 5 , 9 }, - { 187, 148, 5 , 9 }, - { 200, 148, 5 , 8 }, - { 213, 148, 3 , 9 }, - { 224, 148, 3 , 9 }, - { 235, 148, 4 , 9 }, - { 4, 166, 4 , 8 }, - { 16, 166, 5 , 9 }, - { 29, 166, 5 , 9 }, - { 42, 166, 5 , 9 }, - { 55, 166, 5 , 9 }, - { 68, 166, 5 , 9 }, - { 81, 166, 5 , 9 }, - { 94, 166, 5 , 8 }, - { 107, 166, 4 , 6 }, - { 119, 166, 5 , 8 }, - { 132, 166, 5 , 9 }, - { 145, 166, 5 , 9 }, - { 158, 166, 5 , 9 }, - { 171, 166, 5 , 8 }, - { 184, 166, 5 , 10 }, - { 197, 166, 5 , 10 }, - { 210, 166, 5 , 9 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo bluishFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 1, 2, { 0 }}, - { 34, 0, 1, 4, { 0 }}, - { 35, 0, 1, 6, { 0 }}, - { 36, 0, 0, 5, { 0 }}, - { 37, 0, 1, 6, { 0 }}, - { 38, 0, 0, 5, { 0 }}, - { 39, 0, 1, 2, { 0 }}, - { 40, 0, 1, 3, { 0 }}, - { 41, 0, 1, 3, { 0 }}, - { 42, 0, 1, 6, { 0 }}, - { 43, 0, 2, 6, { 0 }}, - { 44, 0, 7, 2, { 0 }}, - { 45, 0, 4, 5, { 0 }}, - { 46, 0, 7, 2, { 0 }}, - { 47, 0, 1, 6, { 0 }}, - { 48, 0, 1, 5, { 0 }}, - { 49, 0, 1, 3, { 0 }}, - { 50, 0, 1, 5, { 0 }}, - { 51, 0, 1, 5, { 0 }}, - { 52, 0, 1, 5, { 0 }}, - { 53, 0, 1, 5, { 0 }}, - { 54, 0, 1, 5, { 0 }}, - { 55, 0, 1, 5, { 0 }}, - { 56, 0, 1, 5, { 0 }}, - { 57, 0, 1, 5, { 0 }}, - { 58, 0, 1, 2, { 0 }}, - { 59, 0, 1, 2, { 0 }}, - { 60, 0, 2, 4, { 0 }}, - { 61, 0, 3, 5, { 0 }}, - { 62, 0, 2, 4, { 0 }}, - { 63, 0, 1, 5, { 0 }}, - { 64, 0, 1, 6, { 0 }}, - { 65, 0, 1, 5, { 0 }}, - { 66, 0, 1, 5, { 0 }}, - { 67, 0, 1, 5, { 0 }}, - { 68, 0, 1, 5, { 0 }}, - { 69, 0, 1, 5, { 0 }}, - { 70, 0, 1, 5, { 0 }}, - { 71, 0, 1, 5, { 0 }}, - { 72, 0, 1, 5, { 0 }}, - { 73, 0, 1, 4, { 0 }}, - { 74, 0, 1, 5, { 0 }}, - { 75, 0, 1, 5, { 0 }}, - { 76, 0, 1, 5, { 0 }}, - { 77, 0, 1, 8, { 0 }}, - { 78, 0, 1, 5, { 0 }}, - { 79, 0, 1, 5, { 0 }}, - { 80, 0, 1, 5, { 0 }}, - { 81, 0, 1, 5, { 0 }}, - { 82, 0, 1, 5, { 0 }}, - { 83, 0, 1, 5, { 0 }}, - { 84, 0, 1, 6, { 0 }}, - { 85, 0, 1, 5, { 0 }}, - { 86, 0, 1, 5, { 0 }}, - { 87, 0, 1, 8, { 0 }}, - { 88, 0, 1, 5, { 0 }}, - { 89, 0, 1, 5, { 0 }}, - { 90, 0, 1, 5, { 0 }}, - { 91, 0, 1, 3, { 0 }}, - { 92, 0, 1, 6, { 0 }}, - { 93, 0, 1, 3, { 0 }}, - { 94, 0, 1, 6, { 0 }}, - { 95, 0, 9, 5, { 0 }}, - { 96, 0, 1, 2, { 0 }}, - { 97, 0, 3, 5, { 0 }}, - { 98, 0, 1, 5, { 0 }}, - { 99, 0, 3, 5, { 0 }}, - { 100, 0, 1, 5, { 0 }}, - { 101, 0, 3, 5, { 0 }}, - { 102, 0, 1, 5, { 0 }}, - { 103, 0, 3, 5, { 0 }}, - { 104, 0, 1, 5, { 0 }}, - { 105, 0, 1, 2, { 0 }}, - { 106, 0, 1, 3, { 0 }}, - { 107, 0, 1, 5, { 0 }}, - { 108, 0, 1, 2, { 0 }}, - { 109, 0, 3, 8, { 0 }}, - { 110, 0, 3, 5, { 0 }}, - { 111, 0, 3, 5, { 0 }}, - { 112, 0, 3, 5, { 0 }}, - { 113, 0, 3, 5, { 0 }}, - { 114, 0, 3, 5, { 0 }}, - { 115, 0, 3, 5, { 0 }}, - { 116, 0, 1, 5, { 0 }}, - { 117, 0, 3, 5, { 0 }}, - { 118, 0, 3, 5, { 0 }}, - { 119, 0, 3, 8, { 0 }}, - { 120, 0, 3, 5, { 0 }}, - { 121, 0, 3, 5, { 0 }}, - { 122, 0, 3, 5, { 0 }}, - { 123, 0, 1, 4, { 0 }}, - { 124, 0, 0, 2, { 0 }}, - { 125, 0, 1, 4, { 0 }}, - { 126, 0, 3, 6, { 0 }}, - { 161, 0, 1, 2, { 0 }}, - { 162, 0, 2, 5, { 0 }}, - { 163, 0, 1, 5, { 0 }}, - { 8364, 0, 0, 0, { 0 }}, - { 165, 0, 1, 6, { 0 }}, - { 352, 0, -1, 5, { 0 }}, - { 167, 0, 0, 5, { 0 }}, - { 353, 0, 0, 5, { 0 }}, - { 169, 0, 1, 7, { 0 }}, - { 170, 0, -1, 4, { 0 }}, - { 171, 0, 3, 5, { 0 }}, - { 172, 0, 4, 5, { 0 }}, - { 174, 0, 1, 7, { 0 }}, - { 175, 0, -1, 5, { 0 }}, - { 176, 0, -1, 4, { 0 }}, - { 177, 0, 1, 6, { 0 }}, - { 178, 0, -1, 4, { 0 }}, - { 179, 0, -1, 4, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 1, 5, { 0 }}, - { 182, 0, 1, 6, { 0 }}, - { 183, 0, 4, 2, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, -1, 3, { 0 }}, - { 186, 0, -1, 4, { 0 }}, - { 187, 0, 3, 5, { 0 }}, - { 338, 0, 1, 6, { 0 }}, - { 339, 0, 3, 6, { 0 }}, - { 376, 0, -1, 5, { 0 }}, - { 191, 0, 1, 5, { 0 }}, - { 192, 0, -1, 5, { 0 }}, - { 193, 0, -1, 5, { 0 }}, - { 194, 0, -1, 5, { 0 }}, - { 195, 0, -1, 5, { 0 }}, - { 196, 0, -1, 5, { 0 }}, - { 197, 0, -1, 5, { 0 }}, - { 198, 0, 1, 6, { 0 }}, - { 199, 0, 1, 5, { 0 }}, - { 200, 0, -1, 5, { 0 }}, - { 201, 0, -1, 5, { 0 }}, - { 202, 0, -1, 5, { 0 }}, - { 203, 0, -1, 5, { 0 }}, - { 204, 0, -1, 4, { 0 }}, - { 205, 0, -1, 4, { 0 }}, - { 206, 0, -1, 4, { 0 }}, - { 207, 0, -1, 4, { 0 }}, - { 208, 0, 1, 6, { 0 }}, - { 209, 0, -1, 5, { 0 }}, - { 210, 0, -1, 5, { 0 }}, - { 211, 0, -1, 5, { 0 }}, - { 212, 0, -1, 5, { 0 }}, - { 213, 0, -1, 5, { 0 }}, - { 214, 0, -1, 5, { 0 }}, - { 215, 0, 3, 4, { 0 }}, - { 216, 0, 0, 5, { 0 }}, - { 217, 0, -1, 5, { 0 }}, - { 218, 0, -1, 5, { 0 }}, - { 219, 0, -1, 5, { 0 }}, - { 220, 0, -1, 5, { 0 }}, - { 221, 0, -1, 5, { 0 }}, - { 222, 0, 1, 5, { 0 }}, - { 223, 0, 1, 5, { 0 }}, - { 224, 0, 0, 5, { 0 }}, - { 225, 0, 0, 5, { 0 }}, - { 226, 0, 0, 5, { 0 }}, - { 227, 0, 0, 5, { 0 }}, - { 228, 0, 1, 5, { 0 }}, - { 229, 0, -1, 5, { 0 }}, - { 230, 0, 3, 6, { 0 }}, - { 231, 0, 3, 5, { 0 }}, - { 232, 0, 0, 5, { 0 }}, - { 233, 0, 0, 5, { 0 }}, - { 234, 0, 0, 5, { 0 }}, - { 235, 0, 1, 5, { 0 }}, - { 236, 0, 0, 3, { 0 }}, - { 237, 0, 0, 2, { 0 }}, - { 238, 0, 0, 3, { 0 }}, - { 239, 0, 1, 3, { 0 }}, - { 240, 0, 0, 5, { 0 }}, - { 241, 0, 0, 5, { 0 }}, - { 242, 0, 0, 5, { 0 }}, - { 243, 0, 0, 5, { 0 }}, - { 244, 0, 0, 5, { 0 }}, - { 245, 0, 0, 5, { 0 }}, - { 246, 0, 1, 5, { 0 }}, - { 247, 0, 2, 4, { 0 }}, - { 248, 0, 2, 5, { 0 }}, - { 249, 0, 0, 5, { 0 }}, - { 250, 0, 0, 5, { 0 }}, - { 251, 0, 0, 5, { 0 }}, - { 252, 0, 1, 5, { 0 }}, - { 253, 0, 0, 5, { 0 }}, - { 254, 0, 0, 5, { 0 }}, - { 255, 0, 1, 5, { 0 }}, -}; - -// Style loading function: Bluish -static void GuiLoadStyleBluish(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < BLUISH_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(bluishStyleProps[i].controlId, bluishStyleProps[i].propertyId, bluishStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int bluishFontDataSize = 0; - unsigned char *data = DecompressData(bluishFontData, BLUISH_STYLE_FONT_ATLAS_COMP_SIZE, &bluishFontDataSize); - Image imFont = { data, 256, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 10; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, bluishFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, bluishFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 254, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_candy.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_candy.h deleted file mode 100644 index dc0351e..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_candy.h +++ /dev/null @@ -1,582 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleCandy(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define CANDY_STYLE_PROPS_COUNT 17 - -// Custom style name: Candy -static const GuiStyleProp candyStyleProps[CANDY_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0xe58b68ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0xfeda96ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xe59b5fff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xee813fff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xfcd85bff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xfc6955ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xb34848ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xeb7272ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xbd4a4aff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x94795dff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0xc2a37aff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x9c8369ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x0000000f }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0xd77575ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0xfff5e1ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000007 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "v5easter.ttf" (size: 15, spacing: 0) - -#define CANDY_STYLE_FONT_ATLAS_COMP_SIZE 2110 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char candyFontData[CANDY_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x5b, 0x76, 0xa4, 0x36, 0x10, 0x00, 0x50, 0xad, 0x2b, 0xfb, 0xdf, 0x97, 0x72, 0x92, 0x7c, 0xe4, 0xcc, 0x8c, 0x1b, - 0x54, 0xa5, 0x12, 0x08, 0xfa, 0xfa, 0xfe, 0x19, 0xbb, 0x1b, 0x10, 0xa5, 0x07, 0xa0, 0x52, 0x6f, 0x00, 0x00, 0x00, 0xc0, - 0x97, 0xfb, 0xe7, 0xe7, 0xcf, 0xdf, 0xb5, 0x1f, 0x7e, 0xfb, 0xff, 0xdf, 0xf6, 0x1f, 0xb7, 0x1e, 0x6d, 0xc9, 0xff, 0xe7, - 0xf1, 0x9e, 0x8c, 0x7d, 0x42, 0x3b, 0xd8, 0x72, 0xbe, 0xcf, 0xbf, 0xff, 0xae, 0x97, 0x7c, 0xfb, 0xa7, 0xcf, 0x39, 0xdb, - 0xa3, 0xcc, 0xb6, 0xa3, 0x4f, 0xed, 0x07, 0xc7, 0xd4, 0x06, 0xb6, 0xf4, 0xd4, 0xd1, 0xf5, 0xe9, 0x52, 0x8d, 0x95, 0xce, - 0xf9, 0xf1, 0xb7, 0xf0, 0x31, 0xb6, 0x05, 0xdb, 0xfa, 0x64, 0x19, 0xaf, 0x8c, 0xff, 0xdf, 0x7f, 0x2a, 0xe3, 0xff, 0xf8, - 0x33, 0x67, 0xae, 0x89, 0xff, 0x8f, 0xa6, 0x17, 0xc4, 0x7f, 0xbc, 0x16, 0x39, 0x3e, 0x82, 0xcf, 0x57, 0x71, 0x0b, 0xff, - 0xcf, 0x79, 0xfd, 0x5a, 0xf9, 0xa9, 0x2b, 0xb7, 0x8d, 0x45, 0xed, 0xfc, 0x75, 0x7e, 0xb6, 0x37, 0x73, 0x65, 0x78, 0xe5, - 0xb6, 0xda, 0xf8, 0x3f, 0xfb, 0xdb, 0x6c, 0xcd, 0x9e, 0xef, 0x1d, 0x8c, 0xb6, 0xe6, 0x3d, 0x74, 0xed, 0x9f, 0xb7, 0x62, - 0x35, 0x67, 0x38, 0x7a, 0xc4, 0xc7, 0x75, 0xc9, 0xd9, 0xd6, 0xf9, 0x36, 0x37, 0x72, 0x6d, 0xdc, 0x71, 0x15, 0x9f, 0x97, - 0x66, 0x45, 0xbb, 0xd4, 0x7f, 0x39, 0xdb, 0xe2, 0x7f, 0xf4, 0xaa, 0xed, 0x8b, 0x5b, 0xda, 0x16, 0x6e, 0x69, 0x73, 0x7d, - 0x96, 0xba, 0x33, 0x5c, 0x15, 0xff, 0x7d, 0x22, 0xfa, 0x5b, 0xa2, 0xc7, 0x79, 0x5c, 0x6b, 0x9f, 0xed, 0x7f, 0xf6, 0x2a, - 0xa9, 0xbd, 0x66, 0x67, 0xe3, 0xff, 0xb8, 0x3f, 0xdc, 0x0e, 0xeb, 0x9b, 0xeb, 0x7a, 0x5c, 0x3b, 0xc5, 0x7f, 0xb6, 0x87, - 0x3c, 0x3e, 0xba, 0xa9, 0x6b, 0xff, 0xd7, 0xc7, 0xff, 0x59, 0x44, 0xf6, 0xe0, 0x48, 0xb5, 0xb6, 0x35, 0x1e, 0x19, 0x4f, - 0x67, 0x6b, 0xf4, 0xf8, 0x18, 0xf7, 0xfa, 0xfe, 0xff, 0xf9, 0xb8, 0xb1, 0x2f, 0x1b, 0x39, 0xd5, 0x47, 0xd8, 0xbe, 0xfd, - 0xff, 0xb1, 0x7e, 0xc1, 0x9a, 0xfe, 0xff, 0xd9, 0xf8, 0xbf, 0x5d, 0xde, 0xfa, 0x9f, 0x45, 0x56, 0xbe, 0xf4, 0x7b, 0xaa, - 0x07, 0x34, 0x77, 0x57, 0x21, 0x57, 0x9e, 0x73, 0xf1, 0xbf, 0xa2, 0x0f, 0x10, 0x1d, 0xfd, 0xbd, 0xa3, 0xff, 0x9f, 0x39, - 0x83, 0xd9, 0xfb, 0xcc, 0x55, 0x47, 0x16, 0xbf, 0xcf, 0x7f, 0xdf, 0x19, 0xab, 0xab, 0xe7, 0x67, 0xcf, 0x60, 0xfd, 0xa7, - 0xe6, 0x7a, 0xd5, 0xd1, 0xab, 0xb8, 0xdf, 0xfa, 0x6c, 0xac, 0x3f, 0xe2, 0xce, 0xe9, 0x15, 0xed, 0xff, 0xd9, 0xfd, 0xff, - 0x99, 0xbb, 0x03, 0xb1, 0x27, 0x1b, 0x7d, 0xc3, 0x6b, 0x45, 0xfc, 0x3f, 0xa5, 0x15, 0xab, 0xea, 0x55, 0xbb, 0xff, 0x97, - 0x79, 0xa6, 0x5d, 0xd1, 0x9f, 0x7b, 0x4a, 0xfc, 0xf7, 0x81, 0xda, 0x74, 0x7c, 0x4b, 0xfe, 0x89, 0xfb, 0xaa, 0xb7, 0x0a, - 0xce, 0x9e, 0x36, 0x5e, 0xf7, 0x14, 0x7b, 0xc7, 0xf8, 0x7f, 0xc6, 0xf3, 0xff, 0x3d, 0xce, 0xe5, 0xda, 0x91, 0xdc, 0x8e, - 0xf1, 0x0f, 0xdf, 0xf1, 0x36, 0xe1, 0x75, 0x6f, 0x2d, 0x8a, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x9e, 0x3e, 0x3b, 0x27, 0x9f, 0x21, 0x32, 0x36, 0xe7, 0xa6, 0x2f, 0xc9, 0x8b, 0x94, 0x9b, 0x1b, 0x7d, - 0x6d, 0x0e, 0xe7, 0x6c, 0xd6, 0xec, 0xb9, 0x79, 0xe1, 0x9f, 0xf3, 0x09, 0xcd, 0x7c, 0xee, 0xf1, 0x5c, 0xe4, 0xc8, 0xbc, - 0xec, 0x6c, 0xae, 0xf3, 0x68, 0x4e, 0xa0, 0x4c, 0xee, 0xa4, 0xd9, 0xdc, 0xe9, 0xf1, 0x23, 0xce, 0xcc, 0x60, 0x9d, 0x9d, - 0xf3, 0x76, 0x55, 0xc6, 0xe6, 0x6c, 0x9c, 0x8e, 0x65, 0xbd, 0xed, 0xe1, 0x4c, 0x75, 0xbb, 0xe5, 0x69, 0xa8, 0xce, 0x9a, - 0xb1, 0x32, 0xfe, 0xdb, 0x50, 0x6e, 0xec, 0xb1, 0xf9, 0xce, 0xbd, 0x70, 0x46, 0xfb, 0x75, 0x39, 0xf7, 0xda, 0x74, 0x99, - 0x44, 0x5b, 0xaa, 0xf7, 0xc7, 0x7f, 0xf6, 0xd8, 0xcf, 0xce, 0x6a, 0xdf, 0x36, 0x8b, 0xfd, 0x9d, 0xf1, 0x9f, 0xed, 0xdb, - 0x1d, 0xb7, 0x7c, 0xf1, 0x8c, 0x07, 0xd7, 0x64, 0xb4, 0xe9, 0x1b, 0xc5, 0x7f, 0xfc, 0xdb, 0x56, 0xce, 0x61, 0x9f, 0x6b, - 0x7b, 0x7b, 0x59, 0xfc, 0xe7, 0xfb, 0x3e, 0xbb, 0xb5, 0xf1, 0xb5, 0x59, 0x73, 0xd6, 0xc5, 0x7f, 0x2b, 0xcf, 0xca, 0xb4, - 0x67, 0xfc, 0x8f, 0xb4, 0x0f, 0x99, 0xb1, 0x41, 0xfc, 0x3f, 0xb3, 0x35, 0x6e, 0xf4, 0xdb, 0x32, 0xed, 0xff, 0xf1, 0x51, - 0x3e, 0xb9, 0xfd, 0xdf, 0x25, 0xfe, 0xdb, 0x56, 0xfd, 0xff, 0xd9, 0xab, 0x31, 0x16, 0xe7, 0xf7, 0xe5, 0x66, 0xdb, 0x7d, - 0x25, 0xa3, 0xc8, 0x19, 0x9f, 0xcd, 0x8e, 0x9c, 0xbd, 0xef, 0x50, 0xb9, 0x62, 0xd3, 0xb3, 0xee, 0x71, 0xb5, 0xaf, 0x1c, - 0xff, 0xe7, 0xef, 0xfb, 0x8a, 0xff, 0xd9, 0xfe, 0x74, 0xbb, 0x21, 0xfe, 0x57, 0x9d, 0xbb, 0x27, 0xc7, 0xff, 0x4c, 0xcf, - 0xef, 0xaa, 0xf8, 0x6f, 0x1f, 0x57, 0xa1, 0x9a, 0x8d, 0xff, 0xfc, 0xda, 0x38, 0xd1, 0x38, 0xef, 0x37, 0x3e, 0xdf, 0x5a, - 0x51, 0x07, 0xe6, 0x9f, 0x37, 0x34, 0xf1, 0xff, 0xa8, 0xf8, 0xbf, 0xbf, 0xfd, 0x1f, 0x5d, 0x5b, 0xf1, 0xbb, 0xe3, 0xbf, - 0x4d, 0xdd, 0xe3, 0x5b, 0xf1, 0x7f, 0xbb, 0xf5, 0xff, 0xab, 0xeb, 0xce, 0x6b, 0xeb, 0xd3, 0x75, 0x7d, 0xdc, 0xdc, 0xfd, - 0xa4, 0xdc, 0x6a, 0x06, 0xb9, 0xac, 0xd9, 0x6b, 0xae, 0xa9, 0x96, 0x5e, 0xc3, 0xab, 0x85, 0x6b, 0x00, 0xf1, 0xff, 0xeb, - 0x96, 0x75, 0xab, 0x23, 0xc3, 0xea, 0x78, 0x7a, 0x56, 0xfc, 0xcf, 0xbd, 0x69, 0x50, 0xbf, 0xda, 0x60, 0xbf, 0xa1, 0xfd, - 0x87, 0xb5, 0x4f, 0xd9, 0xeb, 0xfe, 0x9e, 0x8a, 0x3e, 0x3d, 0xf0, 0xbd, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x8d, 0x73, 0x05, 0x3e, 0xcf, 0xf2, 0x3c, 0xce, 0x82, 0xd1, 0x92, 0x59, 0xb0, 0xdb, 0x40, - 0xe6, 0xe4, 0x9e, 0xfc, 0xbe, 0xc8, 0x2c, 0xe5, 0xdd, 0x72, 0x11, 0x44, 0xf3, 0x23, 0x46, 0x72, 0x63, 0xb7, 0x70, 0x9e, - 0xaf, 0x6c, 0x16, 0x9b, 0x36, 0x99, 0x73, 0x34, 0x3f, 0xff, 0x2e, 0x3b, 0x83, 0x7a, 0x2c, 0xa3, 0xdb, 0xd8, 0xf7, 0xf4, - 0xa1, 0x19, 0x7e, 0xb3, 0xa5, 0x50, 0x3f, 0x27, 0xb1, 0x5d, 0x9e, 0x75, 0xe3, 0xde, 0x6c, 0x4c, 0x4f, 0xca, 0xb7, 0x1d, - 0xc9, 0xc3, 0x7b, 0x9e, 0xcf, 0x63, 0x3e, 0xfe, 0x47, 0x73, 0x0a, 0xf4, 0xc9, 0xac, 0x9f, 0xd1, 0xba, 0xe2, 0xf8, 0xbc, - 0x1c, 0xcd, 0x4d, 0x8e, 0x45, 0x7f, 0x76, 0xfe, 0xcd, 0xf9, 0x3e, 0xac, 0x9b, 0x51, 0xfd, 0x1d, 0xf1, 0x1f, 0xaf, 0x41, - 0x9f, 0x90, 0x6f, 0xbb, 0x15, 0xfc, 0xb6, 0x72, 0xe6, 0x7b, 0x36, 0xa7, 0x48, 0x36, 0xfe, 0x23, 0xb1, 0xf5, 0xb9, 0x96, - 0x6b, 0x03, 0x19, 0xd4, 0xe6, 0xbf, 0x27, 0x13, 0xff, 0x3d, 0x9c, 0x6d, 0x25, 0xdb, 0xfe, 0xc7, 0x5a, 0x97, 0x3d, 0xe3, - 0x3f, 0xd3, 0xe3, 0xec, 0x17, 0xc6, 0xff, 0x5c, 0x8e, 0xaf, 0x76, 0x79, 0xfc, 0xd7, 0xae, 0x53, 0x31, 0x36, 0x92, 0xa9, - 0xe8, 0x69, 0xff, 0x34, 0x3a, 0x3c, 0x1a, 0x19, 0xd5, 0xc5, 0x7f, 0xff, 0xe1, 0x1b, 0x57, 0xb5, 0xff, 0x55, 0x19, 0x55, - 0xfb, 0xc1, 0xfe, 0xbe, 0x21, 0xfe, 0xdb, 0x26, 0xfd, 0xff, 0xfa, 0xb5, 0xd4, 0xf6, 0x8c, 0xff, 0x78, 0x8f, 0x2b, 0xde, - 0x7a, 0xc5, 0xfa, 0x0a, 0xe7, 0x23, 0x80, 0x5e, 0x50, 0x03, 0xf4, 0xdf, 0xd6, 0xa3, 0xaa, 0x1a, 0x85, 0xc7, 0x56, 0x12, - 0xcb, 0xb5, 0xff, 0xfd, 0xb5, 0xed, 0x7f, 0xed, 0xf8, 0x7f, 0x55, 0x2e, 0xc2, 0xda, 0xf5, 0xb6, 0xaa, 0x72, 0x6d, 0xe6, - 0xfa, 0x5a, 0xd9, 0xf6, 0xff, 0xac, 0x77, 0x30, 0x13, 0xff, 0x6d, 0x32, 0x2e, 0x63, 0xf5, 0x4c, 0x7f, 0x54, 0x06, 0x8e, - 0x91, 0x35, 0xf2, 0xea, 0xae, 0xf4, 0xd1, 0x08, 0x8a, 0x6c, 0x9d, 0xcd, 0xaa, 0x36, 0xfe, 0xa4, 0x61, 0xa4, 0xa6, 0xfe, - 0xfc, 0x94, 0x62, 0xe4, 0xac, 0x54, 0x8c, 0x01, 0x77, 0xed, 0xff, 0xdf, 0xd3, 0xfe, 0x8f, 0xb4, 0xfe, 0x35, 0x79, 0xc8, - 0x7a, 0x79, 0xfe, 0x9d, 0x5e, 0xb8, 0x77, 0x75, 0x2d, 0xe4, 0x1d, 0x4f, 0x22, 0x57, 0xec, 0xd1, 0x7e, 0x59, 0xd2, 0x7a, - 0xf2, 0xce, 0xf1, 0x5e, 0xfd, 0xff, 0xfc, 0xd8, 0x2a, 0x32, 0xaa, 0xaf, 0x7b, 0xfe, 0x57, 0xdd, 0x96, 0x3e, 0x2b, 0xfb, - 0x96, 0xf8, 0xdf, 0xbb, 0x0c, 0xf6, 0x8a, 0xff, 0xd1, 0x55, 0xcc, 0x7b, 0xf9, 0x93, 0xf8, 0x67, 0xd4, 0xe0, 0xcf, 0x7d, - 0xff, 0xe7, 0xfa, 0x95, 0x47, 0xef, 0x8e, 0xff, 0xdd, 0x6a, 0x80, 0xaa, 0x15, 0xaf, 0xdb, 0xe2, 0x37, 0x43, 0xee, 0x3f, - 0x6b, 0x2b, 0x56, 0x08, 0x86, 0xb7, 0xbc, 0xbf, 0xd9, 0x5f, 0xdf, 0x6f, 0x7a, 0x62, 0x4f, 0x1b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xd5, 0xfc, 0xbf, 0x3e, 0x39, 0x37, 0x30, 0x97, 0x59, 0xa8, 0x9d, 0xce, - 0x30, 0xed, 0xe9, 0xbf, 0x89, 0x1c, 0x4b, 0x3e, 0x67, 0x45, 0x26, 0xe7, 0x76, 0x3b, 0xc9, 0x53, 0x53, 0x73, 0x6e, 0xae, - 0x39, 0xce, 0xf3, 0xdc, 0x7a, 0xb1, 0xeb, 0x22, 0x72, 0xa6, 0xce, 0x73, 0xa6, 0x5c, 0x77, 0x1e, 0xb2, 0xe5, 0xdd, 0x4f, - 0x66, 0x73, 0xf7, 0xc3, 0x4c, 0x35, 0x15, 0xb9, 0x54, 0xce, 0x3e, 0x3f, 0x9f, 0x79, 0xaf, 0x25, 0x32, 0xae, 0xf5, 0x3f, - 0x72, 0x39, 0xf5, 0xd4, 0xdf, 0x44, 0x4b, 0x3d, 0xb7, 0x6d, 0x24, 0xa7, 0x63, 0x5d, 0x9e, 0xe8, 0xcc, 0xb9, 0x59, 0x7f, - 0x9c, 0xf1, 0xeb, 0xa2, 0x17, 0x7d, 0xc3, 0x68, 0x1e, 0x92, 0xfd, 0xcb, 0xfb, 0x3c, 0x63, 0xec, 0x5c, 0x36, 0x85, 0xd5, - 0xf1, 0x1f, 0xcb, 0xb9, 0x1a, 0xc9, 0x2b, 0x56, 0x19, 0xff, 0x7b, 0xf5, 0xc7, 0xf2, 0xab, 0x41, 0x54, 0x65, 0xd8, 0x7f, - 0xc6, 0x2c, 0xdd, 0xfc, 0x4a, 0x04, 0xcf, 0x29, 0xef, 0xd5, 0xc7, 0x37, 0x52, 0x53, 0xce, 0xe5, 0x81, 0xb8, 0x2b, 0xfe, - 0xeb, 0xfa, 0xff, 0xd9, 0xfe, 0x74, 0x66, 0x0d, 0xa4, 0xd9, 0xdc, 0x89, 0x33, 0x2b, 0x89, 0x5c, 0x7d, 0x2c, 0x73, 0xa3, - 0x82, 0x91, 0x31, 0xeb, 0x0e, 0xe7, 0x61, 0xe6, 0x1c, 0xb5, 0xc9, 0x95, 0x16, 0xce, 0x23, 0xa0, 0x0f, 0x8c, 0x4f, 0xfa, - 0x64, 0x0d, 0x13, 0x2d, 0xd1, 0xf3, 0x73, 0x55, 0x5b, 0x2f, 0xe6, 0x3e, 0x6f, 0xd7, 0x6d, 0x7d, 0x62, 0x1c, 0x73, 0xef, - 0xca, 0x45, 0x35, 0xf1, 0x3f, 0xde, 0xab, 0xdd, 0xbd, 0x4c, 0xdb, 0xc0, 0x38, 0x79, 0xff, 0xf8, 0x8f, 0xc6, 0x61, 0x65, - 0x1f, 0x77, 0x36, 0x9b, 0xf4, 0x3d, 0xdb, 0xe6, 0x57, 0x26, 0xd9, 0xfd, 0xda, 0xbe, 0x3b, 0xfe, 0xd7, 0xac, 0xfe, 0x52, - 0x7d, 0x8e, 0xce, 0x46, 0x0d, 0x55, 0xed, 0xff, 0xd9, 0x08, 0xa4, 0x6f, 0x31, 0x2e, 0x1c, 0x8b, 0xed, 0xf8, 0xfd, 0xff, - 0xb9, 0x6b, 0x65, 0xc5, 0xb6, 0xf9, 0xeb, 0x76, 0xdf, 0x18, 0xdf, 0x25, 0xfe, 0x9f, 0x50, 0x47, 0xce, 0xb4, 0xda, 0xd1, - 0xf6, 0xbf, 0x5d, 0x18, 0xff, 0x35, 0x77, 0x2a, 0x7a, 0xe1, 0x8a, 0x76, 0x4f, 0xbf, 0x56, 0xe6, 0xef, 0xff, 0xad, 0x78, - 0x02, 0xb2, 0x73, 0xfb, 0x2f, 0xfe, 0x9f, 0x16, 0xff, 0xd9, 0x67, 0xfb, 0x33, 0xfd, 0x91, 0x67, 0x8e, 0xff, 0x6b, 0xef, - 0x43, 0x3d, 0xb5, 0xff, 0xff, 0xf4, 0x32, 0x9d, 0xeb, 0xb5, 0xcb, 0x90, 0xfc, 0x4d, 0x7d, 0x83, 0xd9, 0x3b, 0x9d, 0x6f, - 0x8b, 0xff, 0x77, 0x97, 0x69, 0xf5, 0x0a, 0xe9, 0x7c, 0x4b, 0xfc, 0xb7, 0x0b, 0xdb, 0xc4, 0xf8, 0xfb, 0x86, 0xdf, 0x17, - 0xff, 0xab, 0xde, 0x91, 0x10, 0xff, 0xcf, 0x8c, 0xff, 0xd5, 0x65, 0x7a, 0xed, 0x7b, 0x0e, 0x35, 0xef, 0xff, 0xad, 0x5a, - 0xf5, 0x65, 0x87, 0xe7, 0xff, 0xcf, 0x7d, 0xf7, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, - 0xfb, 0x3d, 0xf7, 0xd8, 0x96, 0xe3, 0xb9, 0x48, 0xb1, 0xec, 0x7b, 0xbb, 0x67, 0x63, 0x6e, 0xb2, 0x6f, 0x87, 0x4a, 0x7f, - 0xf4, 0x7c, 0xef, 0x54, 0xbe, 0x9f, 0x4b, 0xac, 0xdf, 0x5e, 0x66, 0xb1, 0x98, 0x8a, 0x1f, 0x67, 0xc5, 0xe7, 0xe4, 0xa3, - 0xff, 0xca, 0xac, 0xd4, 0xb2, 0x6f, 0xaf, 0xce, 0xbe, 0x1d, 0x39, 0xdf, 0xfb, 0x94, 0x6f, 0x7c, 0xbe, 0xd5, 0xb5, 0x65, - 0xb6, 0xd7, 0x6c, 0xbe, 0xaa, 0x19, 0x86, 0x7b, 0xcd, 0x54, 0xec, 0x13, 0x19, 0xd5, 0xbb, 0xec, 0xdb, 0x8f, 0xe8, 0xe7, - 0x56, 0xac, 0x8c, 0xf1, 0x9e, 0x98, 0xba, 0x7b, 0x86, 0xeb, 0x73, 0xb2, 0x31, 0x8f, 0xf5, 0x61, 0x72, 0xab, 0x25, 0xbd, - 0x27, 0xfb, 0xf6, 0x4f, 0xad, 0xdd, 0xb5, 0x33, 0x6a, 0xab, 0xca, 0xf7, 0x38, 0xc7, 0xee, 0xce, 0xd9, 0x1f, 0x9e, 0x17, - 0xff, 0xbb, 0x64, 0xa5, 0x6a, 0x27, 0x25, 0x9e, 0xbf, 0xae, 0xbe, 0x29, 0xfb, 0xee, 0x3b, 0x32, 0xa8, 0xf4, 0xad, 0xae, - 0xcd, 0x77, 0xc7, 0x7f, 0x26, 0x1e, 0x57, 0x6c, 0xab, 0xc9, 0x0c, 0xff, 0xed, 0xd9, 0x77, 0xdf, 0x13, 0xff, 0x4d, 0xfc, - 0xdf, 0xde, 0xff, 0xbf, 0x6e, 0xdb, 0x7c, 0xdf, 0x60, 0xc5, 0xfd, 0xff, 0xe7, 0x65, 0xdf, 0x7d, 0x53, 0xfb, 0xbf, 0x4b, - 0xc6, 0xc4, 0x68, 0x4c, 0xf5, 0x17, 0xc4, 0xff, 0x8e, 0xed, 0xa9, 0xec, 0x9b, 0xdf, 0x11, 0xff, 0x7d, 0xc3, 0xe3, 0xea, - 0x45, 0x75, 0xd7, 0x35, 0xd7, 0x57, 0xf4, 0x2e, 0xcb, 0x2e, 0x71, 0x51, 0x7d, 0x6f, 0x70, 0xfc, 0x09, 0xfb, 0x1b, 0xb3, - 0x6f, 0xbe, 0x35, 0xdb, 0xe6, 0xca, 0xfd, 0x6b, 0xe1, 0xb5, 0xf8, 0xf3, 0x4f, 0x68, 0x56, 0xd5, 0xa5, 0x15, 0x2b, 0x6f, - 0xef, 0x94, 0x8d, 0x51, 0xf6, 0xcd, 0x15, 0xcf, 0xa2, 0x9e, 0x9c, 0x6d, 0xf3, 0x3c, 0x56, 0xe3, 0xdb, 0xd6, 0xc7, 0xf4, - 0x55, 0x75, 0xe9, 0xfb, 0x72, 0x8f, 0xca, 0xa8, 0xca, 0x33, 0xde, 0xb7, 0xc9, 0xdd, 0xe7, 0xa8, 0xbd, 0xe6, 0x45, 0x0a, - 0xdc, 0xf5, 0x6e, 0x90, 0xb6, 0x8a, 0xdd, 0xfc, 0xe5, 0x1c, 0xe8, 0x7f, 0x02, 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, 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, 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, 0xff, 0xfa, 0xef, 0xc7, - 0x79, 0x00, 0xf1, 0x0f, 0x7c, 0x5d, 0xfc, 0xff, 0x0d }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle candyFontRecs[189] = { - { 4, 4, 3 , 15 }, - { 15, 4, 2 , 9 }, - { 25, 4, 3 , 2 }, - { 36, 4, 8 , 9 }, - { 52, 4, 6 , 11 }, - { 66, 4, 7 , 9 }, - { 81, 4, 7 , 9 }, - { 96, 4, 1 , 2 }, - { 105, 4, 3 , 11 }, - { 116, 4, 3 , 11 }, - { 127, 4, 7 , 7 }, - { 142, 4, 6 , 5 }, - { 156, 4, 2 , 3 }, - { 166, 4, 5 , 1 }, - { 179, 4, 2 , 2 }, - { 189, 4, 5 , 10 }, - { 202, 4, 6 , 9 }, - { 216, 4, 4 , 9 }, - { 228, 4, 6 , 9 }, - { 242, 4, 6 , 9 }, - { 256, 4, 7 , 9 }, - { 271, 4, 6 , 9 }, - { 285, 4, 6 , 9 }, - { 299, 4, 6 , 9 }, - { 313, 4, 6 , 9 }, - { 327, 4, 6 , 9 }, - { 341, 4, 2 , 6 }, - { 351, 4, 2 , 7 }, - { 361, 4, 4 , 6 }, - { 373, 4, 5 , 3 }, - { 386, 4, 4 , 6 }, - { 398, 4, 6 , 9 }, - { 412, 4, 8 , 7 }, - { 428, 4, 6 , 9 }, - { 442, 4, 6 , 9 }, - { 456, 4, 6 , 9 }, - { 470, 4, 6 , 9 }, - { 484, 4, 6 , 9 }, - { 4, 27, 6 , 9 }, - { 18, 27, 6 , 9 }, - { 32, 27, 6 , 9 }, - { 46, 27, 2 , 9 }, - { 56, 27, 6 , 9 }, - { 70, 27, 6 , 9 }, - { 84, 27, 6 , 9 }, - { 98, 27, 8 , 9 }, - { 114, 27, 6 , 9 }, - { 128, 27, 6 , 9 }, - { 142, 27, 6 , 9 }, - { 156, 27, 6 , 9 }, - { 170, 27, 6 , 9 }, - { 184, 27, 6 , 9 }, - { 198, 27, 6 , 9 }, - { 212, 27, 6 , 9 }, - { 226, 27, 6 , 9 }, - { 240, 27, 8 , 9 }, - { 256, 27, 6 , 9 }, - { 270, 27, 6 , 9 }, - { 284, 27, 6 , 9 }, - { 298, 27, 3 , 11 }, - { 309, 27, 5 , 10 }, - { 322, 27, 3 , 11 }, - { 333, 27, 6 , 4 }, - { 347, 27, 6 , 1 }, - { 361, 27, 3 , 2 }, - { 372, 27, 6 , 7 }, - { 386, 27, 6 , 10 }, - { 400, 27, 6 , 7 }, - { 414, 27, 6 , 10 }, - { 428, 27, 6 , 7 }, - { 442, 27, 5 , 10 }, - { 455, 27, 7 , 10 }, - { 470, 27, 6 , 10 }, - { 484, 27, 2 , 10 }, - { 494, 27, 2 , 12 }, - { 4, 50, 6 , 10 }, - { 18, 50, 3 , 10 }, - { 29, 50, 8 , 7 }, - { 45, 50, 6 , 7 }, - { 59, 50, 6 , 7 }, - { 73, 50, 6 , 10 }, - { 87, 50, 6 , 10 }, - { 101, 50, 6 , 7 }, - { 115, 50, 6 , 7 }, - { 129, 50, 3 , 10 }, - { 140, 50, 6 , 7 }, - { 154, 50, 6 , 7 }, - { 168, 50, 8 , 7 }, - { 184, 50, 6 , 7 }, - { 198, 50, 6 , 10 }, - { 212, 50, 6 , 7 }, - { 226, 50, 4 , 11 }, - { 238, 50, 1 , 11 }, - { 247, 50, 4 , 11 }, - { 259, 50, 6 , 2 }, - { 273, 50, 2 , 10 }, - { 283, 50, 6 , 11 }, - { 297, 50, 8 , 9 }, - { 313, 50, 7 , 9 }, - { 328, 50, 6 , 9 }, - { 342, 50, 0 , 0 }, - { 350, 50, 6 , 11 }, - { 364, 50, 0 , 0 }, - { 372, 50, 8 , 8 }, - { 388, 50, 5 , 7 }, - { 401, 50, 7 , 6 }, - { 416, 50, 0 , 0 }, - { 424, 50, 8 , 8 }, - { 440, 50, 6 , 1 }, - { 454, 50, 4 , 5 }, - { 466, 50, 6 , 7 }, - { 480, 50, 3 , 5 }, - { 491, 50, 3 , 5 }, - { 502, 50, 0 , 0 }, - { 4, 73, 6 , 9 }, - { 18, 73, 6 , 9 }, - { 32, 73, 4 , 4 }, - { 44, 73, 0 , 0 }, - { 52, 73, 2 , 5 }, - { 62, 73, 4 , 7 }, - { 74, 73, 7 , 6 }, - { 89, 73, 10 , 9 }, - { 107, 73, 10 , 7 }, - { 125, 73, 0 , 0 }, - { 133, 73, 6 , 9 }, - { 147, 73, 6 , 12 }, - { 161, 73, 6 , 12 }, - { 175, 73, 6 , 12 }, - { 189, 73, 6 , 12 }, - { 203, 73, 6 , 11 }, - { 217, 73, 6 , 12 }, - { 231, 73, 10 , 9 }, - { 249, 73, 6 , 12 }, - { 263, 73, 6 , 12 }, - { 277, 73, 6 , 12 }, - { 291, 73, 6 , 12 }, - { 305, 73, 6 , 11 }, - { 319, 73, 3 , 12 }, - { 330, 73, 3 , 12 }, - { 341, 73, 4 , 12 }, - { 353, 73, 4 , 11 }, - { 365, 73, 8 , 9 }, - { 381, 73, 6 , 12 }, - { 395, 73, 6 , 12 }, - { 409, 73, 6 , 12 }, - { 423, 73, 6 , 12 }, - { 437, 73, 6 , 12 }, - { 451, 73, 6 , 11 }, - { 465, 73, 5 , 5 }, - { 478, 73, 9 , 10 }, - { 495, 73, 6 , 12 }, - { 4, 96, 6 , 12 }, - { 18, 96, 6 , 12 }, - { 32, 96, 6 , 11 }, - { 46, 96, 6 , 12 }, - { 60, 96, 0 , 0 }, - { 68, 96, 6 , 10 }, - { 82, 96, 6 , 10 }, - { 96, 96, 6 , 10 }, - { 110, 96, 6 , 10 }, - { 124, 96, 6 , 10 }, - { 138, 96, 6 , 9 }, - { 152, 96, 6 , 11 }, - { 166, 96, 10 , 7 }, - { 184, 96, 6 , 10 }, - { 198, 96, 6 , 10 }, - { 212, 96, 6 , 10 }, - { 226, 96, 6 , 10 }, - { 240, 96, 6 , 9 }, - { 254, 96, 3 , 10 }, - { 265, 96, 3 , 10 }, - { 276, 96, 4 , 10 }, - { 288, 96, 4 , 9 }, - { 300, 96, 0 , 0 }, - { 308, 96, 6 , 13 }, - { 322, 96, 6 , 10 }, - { 336, 96, 6 , 10 }, - { 350, 96, 6 , 10 }, - { 364, 96, 6 , 10 }, - { 378, 96, 6 , 9 }, - { 392, 96, 0 , 0 }, - { 400, 96, 8 , 8 }, - { 416, 96, 6 , 10 }, - { 430, 96, 6 , 10 }, - { 444, 96, 6 , 10 }, - { 458, 96, 6 , 9 }, - { 472, 96, 6 , 13 }, - { 486, 96, 0 , 0 }, - { 494, 96, 6 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo candyFontGlyphs[189] = { - { 32, 0, 0, 3, { 0 }}, - { 33, 0, 3, 3, { 0 }}, - { 34, 0, 2, 4, { 0 }}, - { 35, 0, 3, 9, { 0 }}, - { 36, 0, 2, 7, { 0 }}, - { 37, 0, 3, 8, { 0 }}, - { 38, 0, 3, 8, { 0 }}, - { 39, 0, 2, 2, { 0 }}, - { 40, 1, 2, 5, { 0 }}, - { 41, 1, 2, 5, { 0 }}, - { 42, 0, 4, 8, { 0 }}, - { 43, 0, 6, 7, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 7, 6, { 0 }}, - { 46, 0, 10, 3, { 0 }}, - { 47, 1, 3, 7, { 0 }}, - { 48, 0, 3, 7, { 0 }}, - { 49, 0, 3, 5, { 0 }}, - { 50, 0, 3, 7, { 0 }}, - { 51, 0, 3, 7, { 0 }}, - { 52, 0, 3, 8, { 0 }}, - { 53, 0, 3, 7, { 0 }}, - { 54, 0, 3, 7, { 0 }}, - { 55, 0, 3, 7, { 0 }}, - { 56, 0, 3, 7, { 0 }}, - { 57, 0, 3, 7, { 0 }}, - { 58, 0, 6, 3, { 0 }}, - { 59, 0, 6, 3, { 0 }}, - { 60, 1, 5, 6, { 0 }}, - { 61, 1, 7, 7, { 0 }}, - { 62, 1, 5, 6, { 0 }}, - { 63, 0, 3, 7, { 0 }}, - { 64, 0, 4, 9, { 0 }}, - { 65, 0, 3, 7, { 0 }}, - { 66, 0, 3, 7, { 0 }}, - { 67, 0, 3, 7, { 0 }}, - { 68, 0, 3, 7, { 0 }}, - { 69, 0, 3, 7, { 0 }}, - { 70, 0, 3, 7, { 0 }}, - { 71, 0, 3, 7, { 0 }}, - { 72, 0, 3, 7, { 0 }}, - { 73, 0, 3, 3, { 0 }}, - { 74, 0, 3, 7, { 0 }}, - { 75, 0, 3, 7, { 0 }}, - { 76, 0, 3, 7, { 0 }}, - { 77, 0, 3, 9, { 0 }}, - { 78, 0, 3, 7, { 0 }}, - { 79, 0, 3, 7, { 0 }}, - { 80, 0, 3, 7, { 0 }}, - { 81, 0, 3, 7, { 0 }}, - { 82, 0, 3, 7, { 0 }}, - { 83, 0, 3, 7, { 0 }}, - { 84, 0, 3, 7, { 0 }}, - { 85, 0, 3, 7, { 0 }}, - { 86, 0, 3, 7, { 0 }}, - { 87, 0, 3, 9, { 0 }}, - { 88, 0, 3, 7, { 0 }}, - { 89, 0, 3, 7, { 0 }}, - { 90, 0, 3, 7, { 0 }}, - { 91, 1, 2, 5, { 0 }}, - { 92, 1, 3, 7, { 0 }}, - { 93, 1, 2, 5, { 0 }}, - { 94, 0, 3, 7, { 0 }}, - { 95, 0, 11, 7, { 0 }}, - { 96, 0, 0, 4, { 0 }}, - { 97, 0, 5, 7, { 0 }}, - { 98, 0, 2, 7, { 0 }}, - { 99, 0, 5, 7, { 0 }}, - { 100, 0, 2, 7, { 0 }}, - { 101, 0, 5, 7, { 0 }}, - { 102, 0, 2, 6, { 0 }}, - { 103, 0, 5, 7, { 0 }}, - { 104, 0, 2, 7, { 0 }}, - { 105, 0, 2, 3, { 0 }}, - { 106, 0, 2, 3, { 0 }}, - { 107, 0, 2, 7, { 0 }}, - { 108, 0, 2, 4, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 7, { 0 }}, - { 111, 0, 5, 7, { 0 }}, - { 112, 0, 5, 7, { 0 }}, - { 113, 0, 5, 7, { 0 }}, - { 114, 0, 5, 7, { 0 }}, - { 115, 0, 5, 7, { 0 }}, - { 116, 0, 2, 4, { 0 }}, - { 117, 0, 5, 7, { 0 }}, - { 118, 0, 5, 7, { 0 }}, - { 119, 0, 5, 9, { 0 }}, - { 120, 0, 5, 7, { 0 }}, - { 121, 0, 5, 7, { 0 }}, - { 122, 0, 5, 7, { 0 }}, - { 123, 1, 2, 6, { 0 }}, - { 124, 1, 2, 3, { 0 }}, - { 125, 1, 2, 6, { 0 }}, - { 126, 0, 0, 7, { 0 }}, - { 161, 0, 3, 3, { 0 }}, - { 162, 0, 2, 7, { 0 }}, - { 163, 0, 3, 9, { 0 }}, - { 8364, 0, 3, 8, { 0 }}, - { 165, 0, 3, 7, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 2, 7, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 0, 0, 9, { 0 }}, - { 170, 0, 0, 6, { 0 }}, - { 171, 1, 5, 9, { 0 }}, - { 172, 0, 0, 0, { 0 }}, - { 174, 0, 0, 9, { 0 }}, - { 175, 0, 0, 7, { 0 }}, - { 176, 0, 0, 5, { 0 }}, - { 177, 0, 4, 7, { 0 }}, - { 178, 0, 0, 4, { 0 }}, - { 179, 0, 0, 4, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 5, 7, { 0 }}, - { 182, 0, 3, 7, { 0 }}, - { 183, 0, 6, 5, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 0, 3, { 0 }}, - { 186, 0, 0, 5, { 0 }}, - { 187, 1, 5, 9, { 0 }}, - { 338, 0, 3, 11, { 0 }}, - { 339, 0, 5, 11, { 0 }}, - { 376, 0, 0, 0, { 0 }}, - { 191, 0, 4, 7, { 0 }}, - { 192, 0, 0, 7, { 0 }}, - { 193, 0, 0, 7, { 0 }}, - { 194, 0, 0, 7, { 0 }}, - { 195, 0, 0, 7, { 0 }}, - { 196, 0, 1, 7, { 0 }}, - { 197, 0, 0, 7, { 0 }}, - { 198, 0, 3, 11, { 0 }}, - { 199, 0, 3, 7, { 0 }}, - { 200, 0, 0, 7, { 0 }}, - { 201, 0, 0, 7, { 0 }}, - { 202, 0, 0, 7, { 0 }}, - { 203, 0, 1, 7, { 0 }}, - { 204, -1, 0, 3, { 0 }}, - { 205, 0, 0, 3, { 0 }}, - { 206, -1, 0, 3, { 0 }}, - { 207, -1, 1, 3, { 0 }}, - { 208, 0, 3, 9, { 0 }}, - { 209, 0, 0, 7, { 0 }}, - { 210, 0, 0, 7, { 0 }}, - { 211, 0, 0, 7, { 0 }}, - { 212, 0, 0, 7, { 0 }}, - { 213, 0, 0, 7, { 0 }}, - { 214, 0, 1, 7, { 0 }}, - { 215, 0, 7, 6, { 0 }}, - { 216, 0, 3, 10, { 0 }}, - { 217, 0, 0, 7, { 0 }}, - { 218, 0, 0, 7, { 0 }}, - { 219, 0, 0, 7, { 0 }}, - { 220, 0, 1, 7, { 0 }}, - { 221, 0, 0, 7, { 0 }}, - { 222, 0, 0, 0, { 0 }}, - { 223, 0, 3, 7, { 0 }}, - { 224, 0, 2, 7, { 0 }}, - { 225, 0, 2, 7, { 0 }}, - { 226, 0, 2, 7, { 0 }}, - { 227, 0, 2, 7, { 0 }}, - { 228, 0, 3, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 5, 11, { 0 }}, - { 231, 0, 5, 7, { 0 }}, - { 232, 0, 2, 7, { 0 }}, - { 233, 0, 2, 7, { 0 }}, - { 234, 0, 2, 7, { 0 }}, - { 235, 0, 3, 7, { 0 }}, - { 236, 0, 2, 4, { 0 }}, - { 237, 0, 2, 4, { 0 }}, - { 238, 0, 2, 4, { 0 }}, - { 239, 0, 3, 4, { 0 }}, - { 240, 0, 0, 0, { 0 }}, - { 241, 0, 2, 7, { 0 }}, - { 242, 0, 2, 7, { 0 }}, - { 243, 0, 2, 7, { 0 }}, - { 244, 0, 2, 7, { 0 }}, - { 245, 0, 2, 7, { 0 }}, - { 246, 0, 3, 7, { 0 }}, - { 247, 0, 0, 0, { 0 }}, - { 248, 0, 5, 9, { 0 }}, - { 249, 0, 2, 7, { 0 }}, - { 250, 0, 2, 7, { 0 }}, - { 251, 0, 2, 7, { 0 }}, - { 252, 0, 3, 7, { 0 }}, - { 253, 0, 2, 7, { 0 }}, - { 254, 0, 0, 0, { 0 }}, - { 255, 0, 3, 7, { 0 }}, -}; - -// Style loading function: Candy -static void GuiLoadStyleCandy(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < CANDY_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(candyStyleProps[i].controlId, candyStyleProps[i].propertyId, candyStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int candyFontDataSize = 0; - unsigned char *data = DecompressData(candyFontData, CANDY_STYLE_FONT_ATLAS_COMP_SIZE, &candyFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 15; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, candyFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, candyFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_cherry.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_cherry.h deleted file mode 100644 index dd8bdd7..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_cherry.h +++ /dev/null @@ -1,617 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleCherry(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define CHERRY_STYLE_PROPS_COUNT 17 - -// Custom style name: Cherry -static const GuiStyleProp cherryStyleProps[CHERRY_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0xda5757ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x753233ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xe17373ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xfaaa97ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xe06262ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xfdb4aaff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xe03c46ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x5b1e20ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xc2474fff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0xa19292ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x706060ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x9e8585ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x0000000f }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0xfb8170ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x3a1720ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000007 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "Westington.ttf" (size: 15, spacing: 0) - -#define CHERRY_STYLE_FONT_ATLAS_COMP_SIZE 2821 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char cherryFontData[CHERRY_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x59, 0x92, 0xdc, 0xba, 0x11, 0x05, 0x50, 0xee, 0x7f, 0xd3, 0xd7, 0xe1, 0x70, 0x84, 0xed, 0x27, 0xa9, 0x09, 0x20, - 0x91, 0x20, 0xab, 0x5b, 0x47, 0xe7, 0xaf, 0xa1, 0x1a, 0x38, 0x24, 0x26, 0x16, 0x12, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xf2, - 0xef, 0x7f, 0x5f, 0xfd, 0xf5, 0xcf, 0x65, 0xff, 0xff, 0xaa, 0xdc, 0xbe, 0x73, 0xfd, 0xb3, 0xb3, 0xf8, 0xae, 0x59, 0xf8, - 0x7f, 0xf9, 0xf2, 0xbb, 0x64, 0xfa, 0x33, 0xd7, 0x8f, 0x7b, 0xfd, 0x58, 0xef, 0xce, 0xfd, 0xfa, 0x31, 0x5c, 0x37, 0x9f, - 0xbf, 0xf6, 0xdd, 0x2a, 0xaf, 0xb9, 0x2f, 0x59, 0xbf, 0x7b, 0x3a, 0xae, 0xc8, 0xdc, 0x35, 0xb8, 0x3f, 0xa7, 0xd7, 0xf0, - 0x95, 0xeb, 0xef, 0x9c, 0xe1, 0x59, 0x1c, 0x7f, 0xab, 0xb5, 0x1a, 0xe0, 0xeb, 0xbf, 0x8e, 0xee, 0xa6, 0x14, 0xee, 0xab, - 0xff, 0xbd, 0x22, 0x8b, 0x65, 0xa3, 0xd7, 0xec, 0xdd, 0x57, 0x59, 0xa8, 0xa5, 0x2a, 0x57, 0x21, 0x8b, 0xe7, 0x61, 0xf5, - 0xdc, 0xa5, 0x54, 0xff, 0x8c, 0xbe, 0x6d, 0x5a, 0x8e, 0xe7, 0xae, 0x24, 0xd3, 0x7f, 0x1d, 0xbf, 0xa2, 0xf2, 0x6e, 0x33, - 0xf7, 0xd5, 0xdd, 0xab, 0xfb, 0xdf, 0x39, 0x53, 0xf7, 0xef, 0xd9, 0xf8, 0x1f, 0xd5, 0x97, 0xf7, 0xe7, 0xfb, 0xee, 0x28, - 0xf2, 0xdf, 0xde, 0x45, 0xed, 0xbe, 0xdb, 0x89, 0xf4, 0xdc, 0xdc, 0x9d, 0x29, 0x9e, 0x8d, 0xfa, 0xff, 0xbb, 0x8f, 0x97, - 0x14, 0x7b, 0x5e, 0x59, 0xb8, 0x4f, 0xb3, 0x54, 0xeb, 0xcd, 0xf4, 0x26, 0x2a, 0x35, 0xdd, 0x6e, 0x2f, 0x6a, 0xbf, 0xa7, - 0xfb, 0xf5, 0x35, 0xb8, 0x3b, 0xdf, 0x99, 0x3c, 0x82, 0x94, 0xe2, 0xff, 0x5a, 0xac, 0xb1, 0x9f, 0x8a, 0xff, 0x71, 0xac, - 0x8c, 0xe2, 0x29, 0xc3, 0x2b, 0x9c, 0x96, 0xef, 0x9f, 0x52, 0x8d, 0x76, 0x6a, 0x9c, 0x55, 0xbf, 0x7f, 0x66, 0xcf, 0x5e, - 0x06, 0xa3, 0xb9, 0xee, 0x5e, 0xe8, 0x7c, 0xaf, 0x2f, 0xc5, 0xda, 0x75, 0xa5, 0x8f, 0x9f, 0xad, 0xde, 0xfa, 0x28, 0x7e, - 0xb3, 0x5c, 0x17, 0x67, 0xa2, 0x3f, 0x74, 0xa2, 0x4f, 0xf2, 0x09, 0xf1, 0x9f, 0xc2, 0x08, 0xae, 0x5a, 0xc7, 0xa7, 0xa9, - 0x6d, 0xce, 0xa1, 0xfa, 0xb5, 0x3b, 0xfe, 0xd7, 0xcb, 0xc6, 0x91, 0x91, 0xd6, 0x71, 0x58, 0x4a, 0x23, 0xe9, 0x7a, 0x1b, - 0xbe, 0xfb, 0xda, 0xbb, 0xb9, 0xa2, 0x4c, 0xd4, 0x9e, 0x59, 0x9e, 0x01, 0xd8, 0x89, 0xff, 0xfe, 0xf1, 0x7f, 0x4a, 0xaf, - 0x98, 0xab, 0x8d, 0x6b, 0x35, 0x71, 0x16, 0xbe, 0x59, 0x9a, 0x6a, 0xb6, 0x1c, 0x9d, 0x65, 0xbd, 0x1a, 0xe3, 0xbf, 0x36, - 0x72, 0x4a, 0xdb, 0xdc, 0x44, 0x7d, 0xec, 0x96, 0xa6, 0xfb, 0x35, 0xad, 0xaf, 0xb8, 0x8f, 0xff, 0xbb, 0xf6, 0x7f, 0xbf, - 0xff, 0xff, 0x7e, 0xfb, 0xdf, 0x3d, 0xfa, 0x9f, 0x9f, 0xc5, 0x18, 0x9f, 0xd3, 0xe7, 0xe2, 0xff, 0x64, 0xdf, 0xbf, 0x36, - 0x96, 0x4f, 0x71, 0x9e, 0x32, 0x4d, 0x23, 0xf6, 0x94, 0x47, 0xe7, 0x69, 0x99, 0xd5, 0xe9, 0xab, 0xab, 0x53, 0xfe, 0x8c, - 0xfa, 0x3c, 0xf6, 0x4f, 0x1d, 0xff, 0x67, 0xe9, 0xd9, 0xc0, 0xb8, 0x6f, 0x75, 0x77, 0x66, 0xd2, 0x3e, 0xff, 0xf7, 0xde, - 0x53, 0xd6, 0xb5, 0x5a, 0x27, 0x85, 0x31, 0x76, 0x65, 0xd6, 0xbc, 0xfa, 0x34, 0xb1, 0xf3, 0xd9, 0xe4, 0xfb, 0xd7, 0xa9, - 0x3a, 0xd7, 0x98, 0x72, 0xed, 0x9e, 0x89, 0x67, 0x3f, 0xeb, 0xb3, 0x0a, 0x4f, 0xf5, 0xa6, 0x66, 0xe6, 0x62, 0xae, 0xe2, - 0xbc, 0x69, 0x0a, 0x3d, 0x9c, 0x4f, 0x8f, 0xff, 0x4f, 0xaa, 0x89, 0x3e, 0xf1, 0xf7, 0x27, 0x69, 0x1e, 0xe9, 0x77, 0x45, - 0x40, 0x26, 0x46, 0xe2, 0x57, 0xa1, 0x9e, 0xfe, 0x0e, 0xcf, 0xff, 0xc7, 0xf1, 0x5f, 0x1d, 0xff, 0x67, 0xea, 0xf7, 0x18, - 0x6b, 0xcf, 0x01, 0xf2, 0xe1, 0xad, 0xbf, 0x1a, 0xa0, 0x67, 0x4e, 0xfe, 0xe9, 0xfa, 0x39, 0x87, 0xc7, 0x85, 0x7f, 0xe3, - 0x75, 0x05, 0xf7, 0x0f, 0x20, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x5e, 0x37, - 0xb8, 0xbe, 0x16, 0xb1, 0x3b, 0x4b, 0x6b, 0xe5, 0xfd, 0x7e, 0x2f, 0x1d, 0xbd, 0x47, 0xf5, 0x68, 0x2b, 0xb9, 0xa0, 0x33, - 0xf5, 0xdd, 0xb3, 0xbc, 0xa2, 0x73, 0x74, 0x34, 0xf9, 0xc7, 0x1a, 0xd5, 0x99, 0x73, 0xba, 0x73, 0x5d, 0xc6, 0x99, 0x77, - 0x57, 0xf2, 0xfb, 0xae, 0xad, 0x06, 0x5e, 0x5d, 0x21, 0xd0, 0x99, 0xed, 0x60, 0xf6, 0xfa, 0x56, 0xee, 0xa8, 0x95, 0x4f, - 0xdb, 0x59, 0x8b, 0x78, 0x9f, 0x81, 0xf9, 0x1a, 0x66, 0x88, 0xee, 0xca, 0x51, 0x97, 0x8d, 0x35, 0xfb, 0xbf, 0xdf, 0xc9, - 0x95, 0x55, 0xdb, 0xe3, 0x7b, 0xaa, 0x92, 0x77, 0xa9, 0x9a, 0xb3, 0x39, 0x2d, 0x9f, 0x3b, 0xf3, 0xcd, 0xe6, 0x32, 0xfa, - 0xd4, 0x33, 0xb6, 0x5f, 0x8b, 0xfb, 0x30, 0xac, 0xad, 0xe5, 0xce, 0xf2, 0x5a, 0xf8, 0xb4, 0xe5, 0x8b, 0x48, 0xf1, 0x3d, - 0x6b, 0xf7, 0xda, 0x99, 0xec, 0x3f, 0xd5, 0x2c, 0x59, 0x67, 0xe2, 0x3f, 0xe5, 0xef, 0x92, 0xdb, 0x7b, 0xe2, 0x1a, 0x66, - 0x28, 0xaa, 0x66, 0x5e, 0xca, 0x46, 0xbd, 0x96, 0x8d, 0xb5, 0xee, 0x5d, 0xf1, 0xbf, 0x13, 0xe1, 0xb3, 0xf9, 0x7b, 0xd3, - 0xb2, 0xba, 0x7f, 0x25, 0x1b, 0x7a, 0xb5, 0x1f, 0xdc, 0x19, 0x21, 0x77, 0xc7, 0x9e, 0x8d, 0x33, 0x73, 0x26, 0xfe, 0xf3, - 0x01, 0xf1, 0xbf, 0x53, 0x17, 0x7d, 0xcf, 0xf8, 0x4f, 0x43, 0xed, 0x9c, 0xd2, 0x15, 0xfa, 0x3d, 0x76, 0x2b, 0x7b, 0x59, - 0x5c, 0xe5, 0x8c, 0xce, 0x69, 0x6e, 0x8f, 0x3a, 0xd6, 0x14, 0x3f, 0x19, 0xff, 0xeb, 0xf5, 0xcd, 0xa9, 0xf8, 0xbf, 0xdb, - 0xad, 0x23, 0xa5, 0xdd, 0x9e, 0xfa, 0xf6, 0xc1, 0x5a, 0xa9, 0x8b, 0x32, 0x9d, 0x5b, 0xb4, 0x12, 0xff, 0x19, 0xee, 0xa0, - 0x51, 0xd9, 0xb7, 0xa0, 0x9a, 0x0d, 0xb9, 0x23, 0xfe, 0xe7, 0xf3, 0x9b, 0x67, 0xb2, 0xee, 0xed, 0x88, 0xf3, 0x77, 0xe2, - 0x7f, 0x74, 0x05, 0x53, 0xcc, 0xd6, 0xb7, 0x9e, 0xe5, 0x7b, 0xfc, 0x69, 0xbd, 0x59, 0xd4, 0x67, 0xf6, 0x9a, 0xc9, 0x37, - 0x68, 0xff, 0xcf, 0xc7, 0x7f, 0xe5, 0x5d, 0x67, 0xe7, 0x66, 0xf2, 0x5a, 0xfc, 0x67, 0xbb, 0x85, 0x4f, 0xf3, 0xe8, 0xf2, - 0x8d, 0xbc, 0x5f, 0x33, 0xf3, 0x05, 0xb5, 0x18, 0x4f, 0xeb, 0x78, 0xa3, 0xf6, 0x69, 0x27, 0x7a, 0x98, 0xeb, 0xf1, 0x9f, - 0xa3, 0xe3, 0xff, 0x95, 0x4f, 0xa8, 0xf7, 0xff, 0xef, 0x3e, 0xbb, 0x77, 0xfe, 0xaf, 0x6b, 0xee, 0x69, 0xa6, 0xed, 0x4e, - 0x43, 0x2f, 0xe2, 0x7c, 0xcd, 0x90, 0xd7, 0x9e, 0x91, 0x55, 0x3e, 0xff, 0x44, 0x44, 0x56, 0x63, 0xab, 0x1a, 0xff, 0xbd, - 0xf3, 0xff, 0x1d, 0xf3, 0xcc, 0x73, 0x47, 0x9f, 0x42, 0xa4, 0xa6, 0x38, 0xbe, 0xca, 0xd6, 0x0c, 0x79, 0x36, 0xe2, 0x3f, - 0x0d, 0xf1, 0x7f, 0xf7, 0xfc, 0x6e, 0x37, 0xfe, 0x33, 0x78, 0xbe, 0x91, 0x6f, 0x13, 0xff, 0x29, 0xc5, 0x7f, 0x9a, 0x23, - 0x32, 0xe5, 0xd8, 0xba, 0x96, 0x9f, 0x4f, 0x9e, 0x79, 0xfe, 0x3f, 0x7e, 0xca, 0xba, 0xf3, 0x24, 0x79, 0xf6, 0x3b, 0xd5, - 0x7f, 0xed, 0x30, 0x3a, 0x4b, 0x59, 0x8e, 0xb0, 0x94, 0x72, 0xf3, 0xcf, 0x8f, 0xf9, 0xb2, 0xd9, 0x4a, 0x8d, 0x6b, 0x88, - 0x6a, 0x4e, 0xea, 0xd5, 0x7d, 0xd5, 0xf3, 0xfa, 0xbe, 0x36, 0xcf, 0xbc, 0x72, 0x67, 0xaf, 0x06, 0x39, 0x89, 0xf9, 0x19, - 0xbf, 0x49, 0x73, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xd6, 0x60, - 0xa6, 0x94, 0xd5, 0x6b, 0xf6, 0x7f, 0x55, 0x73, 0x90, 0xe5, 0x36, 0xcb, 0xf4, 0xda, 0x5a, 0xdf, 0x0c, 0x8f, 0xb1, 0x63, - 0xa5, 0xf4, 0xd9, 0x2c, 0xdc, 0xf3, 0xe7, 0xb6, 0x76, 0xf5, 0xb3, 0x98, 0xcf, 0x32, 0xed, 0x2b, 0xd3, 0xc7, 0xeb, 0xad, - 0xef, 0xd7, 0xd0, 0xd7, 0x5f, 0x77, 0x15, 0x56, 0x38, 0xaf, 0x5e, 0xad, 0x99, 0x5c, 0xf1, 0x6f, 0xd4, 0x15, 0xd7, 0x44, - 0x86, 0xbb, 0x9d, 0x1c, 0xfa, 0x77, 0xe7, 0xfe, 0xeb, 0xfb, 0xf5, 0xee, 0x7b, 0xf5, 0xe5, 0x2d, 0xbc, 0xb6, 0x33, 0xe8, - 0x5e, 0x8f, 0x64, 0xe1, 0xce, 0xe2, 0x7d, 0x38, 0xfb, 0x3f, 0x47, 0x59, 0x04, 0x53, 0xc8, 0xf4, 0x71, 0xee, 0x78, 0x67, - 0xf2, 0x3f, 0x8d, 0xf2, 0x3c, 0xfe, 0xf9, 0xef, 0x2b, 0xf7, 0x53, 0x2d, 0x67, 0x72, 0x06, 0xb9, 0x24, 0x7b, 0xd7, 0x5a, - 0xe7, 0xf6, 0x5e, 0x5d, 0xef, 0x47, 0x9c, 0xb9, 0xa2, 0xf5, 0xf8, 0x5f, 0x6f, 0x77, 0x4e, 0xc5, 0xff, 0x7e, 0x16, 0xde, - 0x9d, 0x1c, 0x3d, 0xfb, 0x7f, 0xbf, 0x6f, 0xfd, 0xaf, 0xe5, 0xde, 0xd9, 0xb5, 0x95, 0xeb, 0x76, 0x9c, 0x09, 0x67, 0x9c, - 0x61, 0x6a, 0xf5, 0x38, 0xae, 0xc5, 0xfc, 0xce, 0x9f, 0x13, 0xff, 0x57, 0x29, 0xfe, 0xaf, 0x0f, 0x8a, 0xff, 0xbb, 0x76, - 0xe7, 0x2a, 0xee, 0x27, 0x72, 0xd7, 0x33, 0xbb, 0x1a, 0xdb, 0x9c, 0xdf, 0x6b, 0xd5, 0x94, 0xfa, 0xc3, 0x29, 0x67, 0x4f, - 0x7c, 0x2b, 0x07, 0xd7, 0x78, 0x77, 0x93, 0x71, 0xdf, 0xbf, 0x56, 0x53, 0xd6, 0x32, 0x31, 0xdd, 0x8f, 0x28, 0xb2, 0xb4, - 0x3b, 0x41, 0x3d, 0x2f, 0x58, 0x0e, 0x64, 0x47, 0x59, 0xad, 0xe9, 0x53, 0xe8, 0xff, 0x5f, 0x5b, 0xfb, 0x48, 0x54, 0xf3, - 0x1e, 0xd7, 0x72, 0xac, 0xa7, 0xd0, 0xee, 0xcc, 0xc4, 0xdf, 0x5e, 0x16, 0xde, 0x4c, 0x8e, 0xb2, 0xae, 0xc5, 0x3a, 0xf2, - 0x6a, 0xab, 0x31, 0xd6, 0x7a, 0x98, 0xd9, 0x1a, 0x6d, 0xcd, 0xd4, 0x0d, 0x59, 0xdc, 0xab, 0xa1, 0xde, 0x5e, 0x54, 0xf2, - 0xc9, 0xd5, 0x6b, 0x80, 0xbc, 0x36, 0xff, 0x77, 0x15, 0x32, 0xd5, 0xaf, 0xe5, 0xe6, 0xab, 0xcc, 0xbd, 0x55, 0x8e, 0xaf, - 0x96, 0x73, 0x6f, 0x26, 0x6b, 0x7b, 0x4f, 0xfe, 0xe2, 0xd5, 0xf3, 0x73, 0x4d, 0xcd, 0x6a, 0xe5, 0xa5, 0xf6, 0x7f, 0x3d, - 0x02, 0xe6, 0x76, 0xa5, 0xdc, 0xe9, 0xd5, 0x54, 0x33, 0x76, 0xf7, 0xf7, 0x7e, 0xde, 0x9f, 0xff, 0x5f, 0xcb, 0xe0, 0xfd, - 0x59, 0xd9, 0x59, 0xd3, 0xf0, 0x3f, 0xfa, 0x3e, 0xeb, 0xed, 0x67, 0x38, 0x39, 0x5a, 0xfb, 0xf7, 0xc6, 0x7f, 0x8a, 0xe3, - 0xc9, 0xd9, 0x7a, 0x38, 0x4b, 0x39, 0x87, 0xc7, 0xf3, 0x5b, 0xe7, 0xc6, 0x3f, 0x9f, 0x78, 0x3f, 0xed, 0xe4, 0xb2, 0x7f, - 0xf6, 0x7b, 0xe6, 0xb1, 0x1e, 0xd3, 0x89, 0xd9, 0x97, 0xe7, 0xce, 0xc4, 0xda, 0x31, 0xa5, 0xf1, 0x8e, 0xad, 0xcd, 0xff, - 0x65, 0x63, 0x8e, 0x6f, 0x77, 0xbf, 0xde, 0x14, 0x66, 0x15, 0xff, 0x86, 0x5f, 0x0a, 0x7c, 0x3d, 0x03, 0x91, 0xbf, 0x22, - 0xf7, 0xf0, 0x4f, 0x3c, 0xc6, 0x8e, 0xe7, 0xff, 0xd5, 0x7e, 0x53, 0x6d, 0xe7, 0x80, 0xb9, 0x79, 0x9f, 0xca, 0xfc, 0x6e, - 0x75, 0xcc, 0x08, 0x54, 0x9e, 0x31, 0x57, 0x76, 0x0e, 0xe8, 0x18, 0xc1, 0x65, 0xf9, 0xf9, 0x3f, 0xf0, 0x53, 0x6a, 0xa2, - 0xda, 0xbc, 0x22, 0xf0, 0xfd, 0x47, 0x3b, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0x9e, 0xbf, 0x88, 0x5e, 0x5f, 0xeb, 0xba, 0x9e, 0xeb, 0xb0, 0x9e, 0x71, 0x65, 0x76, 0x7d, 0xea, 0x55, 0xca, 0x1a, 0xb9, - 0x97, 0x9b, 0x66, 0x2e, 0x5b, 0x73, 0x3d, 0x5b, 0x5d, 0x35, 0x43, 0xd6, 0x5e, 0xe9, 0xf8, 0x95, 0xf5, 0x57, 0x5f, 0xd3, - 0xe7, 0x2d, 0xaf, 0x1c, 0x77, 0x16, 0x73, 0x18, 0xac, 0xdc, 0x53, 0xfd, 0xc7, 0xba, 0x77, 0x2e, 0xae, 0x62, 0x46, 0x9f, - 0x4a, 0xb6, 0xe3, 0x4a, 0xbc, 0xde, 0xe5, 0x3b, 0xcd, 0xe2, 0x67, 0x65, 0x39, 0xa7, 0xf3, 0xa8, 0x16, 0xc9, 0x60, 0xc5, - 0x68, 0x26, 0xd6, 0x9c, 0xee, 0xe5, 0x1b, 0xa8, 0x96, 0x8d, 0xaf, 0x7a, 0x3d, 0xcf, 0x49, 0x16, 0xeb, 0x8f, 0xb5, 0x1c, - 0x7d, 0x27, 0x8f, 0x7b, 0x7d, 0x0d, 0x73, 0x96, 0x73, 0x64, 0x5d, 0x8b, 0xad, 0x4d, 0x26, 0xda, 0x87, 0xea, 0xb9, 0x98, - 0x6d, 0x01, 0x57, 0xdb, 0xcd, 0xd5, 0x9a, 0xa4, 0x1a, 0xff, 0xd5, 0xcf, 0x3a, 0x13, 0xff, 0x77, 0xc7, 0x96, 0xdb, 0x9c, - 0x13, 0xd9, 0xcc, 0x6f, 0xf8, 0x6c, 0xaf, 0xb0, 0xa7, 0xfd, 0x4d, 0x71, 0x8d, 0xfe, 0xf9, 0x75, 0x81, 0xa7, 0x56, 0x07, - 0xd6, 0x73, 0x47, 0xbf, 0x71, 0x0f, 0xa4, 0x2d, 0x6b, 0xe4, 0x5c, 0x3e, 0xd6, 0xf5, 0xf8, 0x5f, 0x1d, 0x2f, 0xac, 0xe6, - 0x33, 0xcc, 0x44, 0xeb, 0x34, 0xdb, 0xfe, 0x67, 0xeb, 0xea, 0x3f, 0xdf, 0xff, 0xbf, 0x36, 0xda, 0xd0, 0xb9, 0xd1, 0xc1, - 0x6c, 0x1e, 0x8e, 0xd5, 0xbb, 0xa9, 0x5e, 0x3a, 0xce, 0x0d, 0xbc, 0xf7, 0xd7, 0xf1, 0xfd, 0x77, 0xf7, 0x4e, 0x95, 0x91, - 0x52, 0xb6, 0x33, 0x36, 0x65, 0xf9, 0x6c, 0xdc, 0x1f, 0xf5, 0x7a, 0xce, 0xe5, 0xd5, 0xf8, 0x1f, 0xd5, 0x26, 0x6b, 0x23, - 0xb8, 0x71, 0xfb, 0x3f, 0x93, 0x6b, 0x72, 0x6f, 0xb7, 0x8a, 0x1c, 0x89, 0xc3, 0x7a, 0xe9, 0xce, 0x4e, 0x27, 0x7f, 0xaa, - 0x13, 0x53, 0xae, 0x99, 0x72, 0xac, 0xf4, 0xc4, 0xf8, 0x7f, 0x9c, 0x71, 0x24, 0x85, 0x7c, 0x25, 0x3b, 0xa3, 0xa8, 0xdd, - 0xf6, 0xa5, 0xe3, 0xdd, 0xb2, 0xb5, 0x97, 0xc3, 0xb9, 0x6f, 0xdd, 0x31, 0xfe, 0x3f, 0x3b, 0xff, 0xb7, 0xbf, 0xe3, 0x58, - 0xcf, 0x6e, 0x45, 0xab, 0xb5, 0xd9, 0xaf, 0xe7, 0x22, 0x1f, 0xd2, 0xab, 0xa9, 0xd5, 0x0e, 0xfb, 0x7f, 0x1d, 0xcf, 0x59, - 0xe7, 0xa5, 0xf8, 0xef, 0x1d, 0x09, 0xe5, 0xc0, 0xfc, 0xe4, 0xf3, 0xd1, 0xbf, 0x32, 0xfe, 0xef, 0x98, 0x31, 0xab, 0xee, - 0x38, 0x72, 0xb6, 0xb4, 0xb2, 0xe3, 0xea, 0xfc, 0x3d, 0xf9, 0x44, 0x0b, 0xdf, 0xb5, 0x4f, 0xc2, 0x4f, 0x8d, 0xff, 0x37, - 0xf7, 0x18, 0xd9, 0x89, 0xff, 0xf3, 0x59, 0x9a, 0xf3, 0x87, 0x79, 0xbd, 0xdd, 0x4f, 0x1c, 0xed, 0x11, 0x9b, 0xf6, 0x38, - 0xdc, 0x8f, 0xe1, 0x9d, 0xd2, 0xb9, 0x7d, 0x78, 0x6a, 0x51, 0xba, 0x53, 0xfa, 0x56, 0xfb, 0x3f, 0x33, 0x0b, 0xf5, 0x74, - 0xfc, 0x77, 0xce, 0x86, 0xe6, 0x50, 0xeb, 0xb8, 0x3e, 0x9a, 0xe8, 0x9f, 0x1b, 0xed, 0xf8, 0xc4, 0x6a, 0xcb, 0xf0, 0x4e, - 0xff, 0xbf, 0xfe, 0xfb, 0x8b, 0x7f, 0xce, 0x66, 0xa5, 0x38, 0xab, 0xf5, 0x93, 0xc6, 0xff, 0xd7, 0xd4, 0xae, 0x51, 0x79, - 0x69, 0xfc, 0xff, 0x19, 0xaf, 0xff, 0x7b, 0x7f, 0x81, 0x75, 0x1d, 0x6e, 0x87, 0x9f, 0x2e, 0x3d, 0xdf, 0x63, 0xdc, 0x2b, - 0xcd, 0x2b, 0xed, 0xff, 0xdc, 0x48, 0xf4, 0xbd, 0xf8, 0xef, 0xea, 0x2f, 0xab, 0x09, 0x3a, 0xe7, 0x59, 0xde, 0x6d, 0xc3, - 0x6b, 0xbb, 0x38, 0xee, 0xfd, 0xda, 0x66, 0x76, 0x74, 0x50, 0x2b, 0xcd, 0xe1, 0xf1, 0xff, 0xee, 0x55, 0xae, 0x1c, 0xcf, - 0xa7, 0xc4, 0xbf, 0xbc, 0xea, 0xa7, 0xea, 0x8c, 0x4a, 0x1c, 0x3e, 0x15, 0xc3, 0xcf, 0xdf, 0x4d, 0x7b, 0xcf, 0xff, 0xd7, - 0xeb, 0xe8, 0xb5, 0xe7, 0xff, 0x3b, 0x2d, 0xc3, 0xd3, 0xcf, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xef, 0xb7, 0xfe, 0x6c, 0x9c, 0x99, 0xa6, 0x9e, 0xd5, 0x7b, 0x37, 0x2b, 0xc0, 0xde, 0x11, 0xa5, 0xb4, 0xf6, - 0x6c, 0x36, 0xb7, 0x75, 0xf7, 0xfa, 0xb4, 0x7a, 0x7e, 0xf0, 0x6c, 0xac, 0x3a, 0xac, 0xff, 0xba, 0xfc, 0xd4, 0x71, 0x9e, - 0xca, 0xc2, 0x55, 0xb9, 0x1f, 0x9e, 0xbb, 0x96, 0x69, 0xbf, 0xc2, 0xb3, 0xef, 0x51, 0xcd, 0x05, 0x9d, 0xa5, 0x1c, 0x10, - 0xab, 0x71, 0x96, 0xcd, 0x0c, 0xf5, 0xf5, 0xb5, 0x67, 0xb3, 0xb5, 0x4e, 0x6f, 0xe6, 0xea, 0x6c, 0xe4, 0x87, 0xae, 0x9f, - 0xa3, 0x9d, 0xd5, 0xa5, 0xdd, 0xc7, 0xb9, 0x7e, 0xc5, 0x3a, 0x72, 0x73, 0x67, 0xe3, 0xcc, 0x67, 0xf9, 0xcc, 0x64, 0x50, - 0x3b, 0xe5, 0x91, 0x75, 0xa5, 0xbd, 0x99, 0x0b, 0x56, 0x57, 0x34, 0x3e, 0xb7, 0xd6, 0xb6, 0xbe, 0x0a, 0x6c, 0x37, 0xbf, - 0xd5, 0x73, 0xfd, 0xb7, 0x6a, 0x5f, 0xe4, 0xd7, 0xa3, 0xcc, 0x07, 0xe4, 0x74, 0x38, 0xbb, 0x9a, 0xed, 0xcc, 0x5e, 0x23, - 0xe7, 0xbf, 0xe1, 0xde, 0xde, 0x21, 0x3b, 0x6b, 0x08, 0x53, 0xec, 0x51, 0x8d, 0x32, 0x1a, 0xdc, 0xc7, 0xe7, 0x6e, 0xf9, - 0x5c, 0x0e, 0xb8, 0x6b, 0x22, 0x33, 0x6d, 0x0a, 0xd9, 0x2f, 0x32, 0x58, 0xd7, 0xde, 0x5d, 0x56, 0xbb, 0x47, 0x67, 0xf2, - 0x96, 0xe7, 0xc0, 0x1d, 0x75, 0xbd, 0x98, 0x9b, 0xeb, 0x5a, 0x6e, 0x93, 0x53, 0x6c, 0x7b, 0x3b, 0x4b, 0x3a, 0xea, 0xe7, - 0x6a, 0x2f, 0x6f, 0xa6, 0x6c, 0x3d, 0xa3, 0xe1, 0x4c, 0xcf, 0xf2, 0x99, 0xf2, 0xf5, 0x5c, 0xe6, 0xb3, 0xd9, 0x6f, 0xf2, - 0x58, 0x59, 0xca, 0x77, 0xdb, 0x35, 0x91, 0x87, 0xff, 0xd4, 0x5d, 0xf3, 0x7c, 0x36, 0x8b, 0x4a, 0x0d, 0x5a, 0xcb, 0x91, - 0xf8, 0x5c, 0xc9, 0x6c, 0xae, 0x83, 0x13, 0x57, 0xeb, 0x2a, 0xde, 0x39, 0x9f, 0x11, 0xff, 0xb9, 0xbd, 0xe6, 0xd7, 0x56, - 0xdd, 0xd6, 0xdd, 0x2e, 0xce, 0xb4, 0x99, 0xf5, 0x7a, 0xa3, 0xfa, 0xb9, 0xb5, 0xac, 0x34, 0x73, 0xd9, 0x79, 0xae, 0xe9, - 0x91, 0x7e, 0x65, 0x8f, 0xca, 0x95, 0x4f, 0xad, 0xb4, 0x03, 0x4f, 0x95, 0x54, 0x46, 0x30, 0x4f, 0xc5, 0xff, 0x67, 0xb4, - 0xef, 0xb5, 0xdd, 0x0d, 0xc7, 0xe3, 0xff, 0x94, 0x7b, 0x45, 0xfd, 0x65, 0x29, 0xcf, 0xde, 0x74, 0xcc, 0x0b, 0xa5, 0xb5, - 0xec, 0x6a, 0x9a, 0x9f, 0xaf, 0xec, 0x66, 0xf7, 0xb9, 0xf1, 0x5f, 0xdd, 0x3b, 0xe6, 0xad, 0xf8, 0xcf, 0xc7, 0xb7, 0xff, - 0xeb, 0xbb, 0x9b, 0xfe, 0xf9, 0x19, 0x55, 0x4a, 0x3d, 0x8b, 0xce, 0xb2, 0xab, 0xb8, 0xef, 0xda, 0x6e, 0xaf, 0xf9, 0xc4, - 0xf8, 0x66, 0x36, 0x27, 0xf0, 0x93, 0xf1, 0x5f, 0xb9, 0x2a, 0xbd, 0x25, 0xbb, 0x33, 0x43, 0x6f, 0xb4, 0xff, 0xf3, 0xcf, - 0x0d, 0xde, 0x8a, 0xff, 0xea, 0xf3, 0xff, 0x99, 0xbd, 0x3c, 0x4f, 0xb4, 0x8c, 0x95, 0x96, 0xfc, 0xec, 0x3e, 0x09, 0x27, - 0xc6, 0x39, 0xa7, 0xdb, 0xff, 0xca, 0x78, 0xe4, 0x1a, 0xee, 0xfc, 0x7e, 0xba, 0xe4, 0xda, 0x9e, 0xf9, 0xfd, 0xb4, 0x19, - 0x99, 0xa7, 0xc6, 0xf7, 0x9f, 0xb5, 0xdf, 0xea, 0xf5, 0xda, 0xf3, 0xb4, 0x9f, 0x70, 0xac, 0x1d, 0x33, 0x00, 0xcf, 0x3f, - 0x73, 0xfc, 0xb4, 0x73, 0x57, 0xdd, 0x89, 0xe5, 0xb9, 0xef, 0xd3, 0x51, 0x3e, 0xf3, 0xbd, 0xe5, 0x4c, 0xe5, 0x6f, 0xfa, - 0xf5, 0xef, 0x67, 0xe5, 0x10, 0x1e, 0xff, 0x86, 0x76, 0xaf, 0xfc, 0xb9, 0xdf, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xa9, 0xdf, 0xde, 0xd7, 0xd7, 0xbd, 0x57, 0xd7, 0x7c, 0xf7, 0x67, 0xe2, 0x8e, 0x35, - 0x3c, 0xd0, 0xb6, 0x16, 0x34, 0x93, 0xb9, 0xe0, 0xba, 0x63, 0x31, 0x5b, 0x99, 0x4d, 0x80, 0xf9, 0x36, 0xff, 0x8d, 0x75, - 0x7e, 0xd5, 0xcf, 0xcd, 0x30, 0xf3, 0x82, 0x55, 0x7c, 0x30, 0x1f, 0xff, 0x19, 0xe6, 0x32, 0xea, 0x2e, 0xbd, 0x26, 0xb2, - 0x0b, 0x5c, 0x85, 0xfc, 0x55, 0xd1, 0x47, 0x80, 0xa5, 0xf8, 0x9f, 0xc9, 0xc8, 0xfd, 0x49, 0xa5, 0x29, 0xef, 0x3e, 0x06, - 0xfc, 0x79, 0x94, 0xfd, 0xbd, 0xe2, 0x7f, 0x27, 0x7f, 0x3d, 0xf0, 0x7e, 0xfc, 0xa7, 0x58, 0x5a, 0xcf, 0x15, 0x0b, 0xfc, - 0xda, 0xfb, 0x9f, 0x99, 0xfd, 0x4f, 0x7b, 0xe9, 0xd5, 0xb0, 0xc7, 0x44, 0xf5, 0xa9, 0x24, 0xd0, 0xf1, 0x7c, 0x70, 0xa7, - 0xb4, 0xfe, 0x9b, 0x84, 0x99, 0xe7, 0x19, 0xae, 0x1c, 0x7c, 0xff, 0xe7, 0x92, 0xb5, 0xfa, 0xca, 0x19, 0x84, 0xef, 0xdf, - 0xef, 0x70, 0x1e, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x79, 0xff, 0xf9, 0xe7, 0x3c, 0x80, 0xf8, 0x07, 0xfe, 0xba, 0xf8, 0xff, 0x17 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle cherryFontRecs[189] = { - { 4, 4, 5 , 15 }, - { 17, 4, 3 , 10 }, - { 28, 4, 5 , 2 }, - { 41, 4, 10 , 10 }, - { 59, 4, 7 , 11 }, - { 74, 4, 7 , 10 }, - { 89, 4, 8 , 10 }, - { 105, 4, 1 , 2 }, - { 114, 4, 3 , 10 }, - { 125, 4, 3 , 10 }, - { 136, 4, 3 , 3 }, - { 147, 4, 7 , 7 }, - { 162, 4, 2 , 2 }, - { 172, 4, 6 , 3 }, - { 186, 4, 1 , 1 }, - { 195, 4, 4 , 10 }, - { 207, 4, 5 , 8 }, - { 220, 4, 5 , 8 }, - { 233, 4, 5 , 8 }, - { 246, 4, 5 , 8 }, - { 259, 4, 5 , 8 }, - { 272, 4, 5 , 8 }, - { 285, 4, 5 , 8 }, - { 298, 4, 5 , 8 }, - { 311, 4, 5 , 8 }, - { 324, 4, 5 , 8 }, - { 337, 4, 3 , 10 }, - { 348, 4, 3 , 12 }, - { 359, 4, 6 , 7 }, - { 373, 4, 6 , 4 }, - { 387, 4, 6 , 7 }, - { 401, 4, 5 , 10 }, - { 414, 4, 8 , 10 }, - { 430, 4, 7 , 9 }, - { 445, 4, 7 , 9 }, - { 460, 4, 6 , 9 }, - { 474, 4, 6 , 9 }, - { 488, 4, 7 , 9 }, - { 4, 27, 6 , 9 }, - { 18, 27, 6 , 9 }, - { 32, 27, 7 , 9 }, - { 47, 27, 3 , 9 }, - { 58, 27, 6 , 9 }, - { 72, 27, 7 , 9 }, - { 87, 27, 7 , 9 }, - { 102, 27, 11 , 9 }, - { 121, 27, 8 , 9 }, - { 137, 27, 6 , 9 }, - { 151, 27, 6 , 9 }, - { 165, 27, 7 , 9 }, - { 180, 27, 7 , 9 }, - { 195, 27, 6 , 9 }, - { 209, 27, 7 , 9 }, - { 224, 27, 8 , 9 }, - { 240, 27, 9 , 9 }, - { 257, 27, 11 , 9 }, - { 276, 27, 7 , 9 }, - { 291, 27, 7 , 9 }, - { 306, 27, 7 , 9 }, - { 321, 27, 3 , 9 }, - { 332, 27, 4 , 10 }, - { 344, 27, 3 , 9 }, - { 355, 27, 3 , 3 }, - { 366, 27, 7 , 2 }, - { 381, 27, 2 , 2 }, - { 391, 27, 6 , 6 }, - { 405, 27, 6 , 9 }, - { 419, 27, 6 , 6 }, - { 433, 27, 6 , 9 }, - { 447, 27, 6 , 6 }, - { 461, 27, 5 , 9 }, - { 474, 27, 5 , 9 }, - { 487, 27, 7 , 9 }, - { 4, 50, 3 , 7 }, - { 15, 50, 3 , 8 }, - { 26, 50, 6 , 9 }, - { 40, 50, 4 , 9 }, - { 52, 50, 11 , 6 }, - { 71, 50, 7 , 6 }, - { 86, 50, 5 , 6 }, - { 99, 50, 6 , 8 }, - { 113, 50, 6 , 8 }, - { 127, 50, 5 , 6 }, - { 140, 50, 5 , 6 }, - { 153, 50, 5 , 9 }, - { 166, 50, 7 , 6 }, - { 181, 50, 7 , 6 }, - { 196, 50, 11 , 6 }, - { 215, 50, 7 , 6 }, - { 230, 50, 7 , 8 }, - { 245, 50, 6 , 6 }, - { 259, 50, 5 , 9 }, - { 272, 50, 1 , 9 }, - { 281, 50, 5 , 9 }, - { 294, 50, 7 , 3 }, - { 309, 50, 3 , 10 }, - { 320, 50, 7 , 10 }, - { 335, 50, 7 , 10 }, - { 350, 50, 6 , 9 }, - { 364, 50, 7 , 9 }, - { 379, 50, 6 , 12 }, - { 393, 50, 7 , 11 }, - { 408, 50, 5 , 9 }, - { 421, 50, 5 , 5 }, - { 434, 50, 4 , 5 }, - { 446, 50, 6 , 7 }, - { 460, 50, 6 , 3 }, - { 474, 50, 5 , 5 }, - { 487, 50, 6 , 1 }, - { 4, 73, 3 , 3 }, - { 15, 73, 7 , 10 }, - { 30, 73, 3 , 5 }, - { 41, 73, 3 , 5 }, - { 52, 73, 7 , 12 }, - { 67, 73, 6 , 8 }, - { 81, 73, 7 , 9 }, - { 96, 73, 2 , 3 }, - { 106, 73, 6 , 9 }, - { 120, 73, 3 , 5 }, - { 131, 73, 3 , 5 }, - { 142, 73, 6 , 7 }, - { 156, 73, 13 , 9 }, - { 177, 73, 10 , 6 }, - { 195, 73, 7 , 11 }, - { 210, 73, 5 , 10 }, - { 223, 73, 7 , 12 }, - { 238, 73, 7 , 12 }, - { 253, 73, 7 , 12 }, - { 268, 73, 7 , 12 }, - { 283, 73, 7 , 11 }, - { 298, 73, 7 , 11 }, - { 313, 73, 12 , 9 }, - { 333, 73, 6 , 11 }, - { 347, 73, 7 , 12 }, - { 362, 73, 7 , 12 }, - { 377, 73, 7 , 12 }, - { 392, 73, 7 , 11 }, - { 407, 73, 3 , 12 }, - { 418, 73, 3 , 12 }, - { 429, 73, 3 , 12 }, - { 440, 73, 3 , 11 }, - { 451, 73, 7 , 9 }, - { 466, 73, 8 , 12 }, - { 482, 73, 6 , 12 }, - { 496, 73, 6 , 12 }, - { 4, 96, 6 , 12 }, - { 18, 96, 6 , 12 }, - { 32, 96, 6 , 11 }, - { 46, 96, 5 , 5 }, - { 59, 96, 8 , 9 }, - { 75, 96, 8 , 12 }, - { 91, 96, 8 , 12 }, - { 107, 96, 8 , 12 }, - { 123, 96, 8 , 11 }, - { 139, 96, 7 , 12 }, - { 154, 96, 7 , 9 }, - { 169, 96, 8 , 9 }, - { 185, 96, 6 , 9 }, - { 199, 96, 6 , 9 }, - { 213, 96, 6 , 9 }, - { 227, 96, 6 , 9 }, - { 241, 96, 6 , 8 }, - { 255, 96, 6 , 10 }, - { 269, 96, 10 , 6 }, - { 287, 96, 6 , 8 }, - { 301, 96, 6 , 9 }, - { 315, 96, 6 , 9 }, - { 329, 96, 6 , 9 }, - { 343, 96, 6 , 8 }, - { 357, 96, 3 , 10 }, - { 368, 96, 3 , 10 }, - { 379, 96, 3 , 10 }, - { 390, 96, 3 , 9 }, - { 401, 96, 6 , 10 }, - { 415, 96, 7 , 9 }, - { 430, 96, 5 , 9 }, - { 443, 96, 5 , 9 }, - { 456, 96, 5 , 9 }, - { 469, 96, 5 , 9 }, - { 482, 96, 5 , 8 }, - { 495, 96, 7 , 9 }, - { 4, 119, 8 , 8 }, - { 20, 119, 7 , 9 }, - { 35, 119, 7 , 9 }, - { 50, 119, 7 , 9 }, - { 65, 119, 7 , 8 }, - { 80, 119, 7 , 11 }, - { 95, 119, 5 , 8 }, - { 108, 119, 7 , 10 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo cherryFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 2, 4, { 0 }}, - { 34, 0, 2, 6, { 0 }}, - { 35, 0, 2, 11, { 0 }}, - { 36, 0, 2, 8, { 0 }}, - { 37, 0, 2, 8, { 0 }}, - { 38, 0, 2, 9, { 0 }}, - { 39, 0, 2, 2, { 0 }}, - { 40, 0, 2, 4, { 0 }}, - { 41, 0, 2, 4, { 0 }}, - { 42, 0, 2, 4, { 0 }}, - { 43, 0, 4, 8, { 0 }}, - { 44, 0, 11, 3, { 0 }}, - { 45, 0, 6, 7, { 0 }}, - { 46, 0, 11, 2, { 0 }}, - { 47, 0, 2, 5, { 0 }}, - { 48, 0, 4, 6, { 0 }}, - { 49, 0, 4, 6, { 0 }}, - { 50, 0, 4, 6, { 0 }}, - { 51, 0, 4, 6, { 0 }}, - { 52, 0, 4, 6, { 0 }}, - { 53, 0, 4, 6, { 0 }}, - { 54, 0, 4, 6, { 0 }}, - { 55, 0, 4, 6, { 0 }}, - { 56, 0, 4, 6, { 0 }}, - { 57, 0, 4, 6, { 0 }}, - { 58, 0, 2, 4, { 0 }}, - { 59, 0, 2, 4, { 0 }}, - { 60, 0, 4, 7, { 0 }}, - { 61, 0, 5, 7, { 0 }}, - { 62, 0, 4, 7, { 0 }}, - { 63, 0, 2, 6, { 0 }}, - { 64, 0, 2, 9, { 0 }}, - { 65, 0, 3, 8, { 0 }}, - { 66, 0, 3, 8, { 0 }}, - { 67, 0, 3, 7, { 0 }}, - { 68, 0, 3, 7, { 0 }}, - { 69, 0, 3, 8, { 0 }}, - { 70, 0, 3, 7, { 0 }}, - { 71, 0, 3, 7, { 0 }}, - { 72, 0, 3, 8, { 0 }}, - { 73, 0, 3, 4, { 0 }}, - { 74, 0, 3, 7, { 0 }}, - { 75, 0, 3, 8, { 0 }}, - { 76, 0, 3, 8, { 0 }}, - { 77, 0, 3, 12, { 0 }}, - { 78, 0, 3, 9, { 0 }}, - { 79, 0, 3, 7, { 0 }}, - { 80, 0, 3, 7, { 0 }}, - { 81, 0, 3, 8, { 0 }}, - { 82, 0, 3, 8, { 0 }}, - { 83, 0, 3, 7, { 0 }}, - { 84, 0, 3, 8, { 0 }}, - { 85, 0, 3, 9, { 0 }}, - { 86, 0, 3, 10, { 0 }}, - { 87, 0, 3, 12, { 0 }}, - { 88, 0, 3, 8, { 0 }}, - { 89, 0, 3, 8, { 0 }}, - { 90, 0, 3, 8, { 0 }}, - { 91, 0, 3, 4, { 0 }}, - { 92, 0, 2, 5, { 0 }}, - { 93, 0, 3, 4, { 0 }}, - { 94, 0, 3, 4, { 0 }}, - { 95, 0, 10, 8, { 0 }}, - { 96, 0, 2, 3, { 0 }}, - { 97, 0, 6, 7, { 0 }}, - { 98, 0, 3, 7, { 0 }}, - { 99, 0, 6, 7, { 0 }}, - { 100, 0, 3, 7, { 0 }}, - { 101, 0, 6, 7, { 0 }}, - { 102, 0, 3, 6, { 0 }}, - { 103, 0, 5, 6, { 0 }}, - { 104, 0, 3, 8, { 0 }}, - { 105, 0, 5, 4, { 0 }}, - { 106, 0, 5, 4, { 0 }}, - { 107, 0, 3, 7, { 0 }}, - { 108, 0, 3, 5, { 0 }}, - { 109, 0, 6, 12, { 0 }}, - { 110, 0, 6, 8, { 0 }}, - { 111, 0, 6, 6, { 0 }}, - { 112, 0, 6, 7, { 0 }}, - { 113, 0, 6, 7, { 0 }}, - { 114, 0, 6, 6, { 0 }}, - { 115, 0, 6, 6, { 0 }}, - { 116, 0, 3, 6, { 0 }}, - { 117, 0, 6, 8, { 0 }}, - { 118, 0, 6, 8, { 0 }}, - { 119, 0, 6, 12, { 0 }}, - { 120, 0, 6, 8, { 0 }}, - { 121, 0, 6, 8, { 0 }}, - { 122, 0, 6, 7, { 0 }}, - { 123, 0, 3, 6, { 0 }}, - { 124, 0, 3, 2, { 0 }}, - { 125, 0, 3, 6, { 0 }}, - { 126, 0, 6, 8, { 0 }}, - { 161, 0, 4, 4, { 0 }}, - { 162, 0, 4, 8, { 0 }}, - { 163, 0, 2, 8, { 0 }}, - { 8364, 0, 3, 7, { 0 }}, - { 165, 0, 3, 8, { 0 }}, - { 352, 0, 0, 7, { 0 }}, - { 167, 0, 2, 8, { 0 }}, - { 353, 0, 3, 6, { 0 }}, - { 169, 0, 1, 6, { 0 }}, - { 170, 0, 2, 5, { 0 }}, - { 171, 0, 5, 7, { 0 }}, - { 172, 0, 6, 7, { 0 }}, - { 174, 0, 1, 6, { 0 }}, - { 175, 0, 2, 7, { 0 }}, - { 176, 0, 2, 4, { 0 }}, - { 177, 0, 3, 8, { 0 }}, - { 178, 0, 2, 4, { 0 }}, - { 179, 0, 2, 4, { 0 }}, - { 381, 0, 0, 8, { 0 }}, - { 181, 0, 6, 7, { 0 }}, - { 182, 0, 3, 8, { 0 }}, - { 183, 0, 6, 3, { 0 }}, - { 382, 0, 3, 7, { 0 }}, - { 185, 0, 2, 4, { 0 }}, - { 186, 0, 2, 4, { 0 }}, - { 187, 0, 5, 7, { 0 }}, - { 338, 0, 3, 14, { 0 }}, - { 339, 0, 6, 11, { 0 }}, - { 376, 0, 1, 8, { 0 }}, - { 191, 0, 4, 6, { 0 }}, - { 192, 0, 0, 8, { 0 }}, - { 193, 0, 0, 8, { 0 }}, - { 194, 0, 0, 8, { 0 }}, - { 195, 0, 0, 8, { 0 }}, - { 196, 0, 1, 8, { 0 }}, - { 197, 0, 1, 8, { 0 }}, - { 198, 0, 3, 13, { 0 }}, - { 199, 0, 3, 7, { 0 }}, - { 200, 0, 0, 8, { 0 }}, - { 201, 0, 0, 8, { 0 }}, - { 202, 0, 0, 8, { 0 }}, - { 203, 0, 1, 8, { 0 }}, - { 204, 0, 0, 4, { 0 }}, - { 205, 0, 0, 4, { 0 }}, - { 206, 0, 0, 4, { 0 }}, - { 207, 0, 1, 4, { 0 }}, - { 208, 0, 3, 8, { 0 }}, - { 209, 0, 0, 9, { 0 }}, - { 210, 0, 0, 7, { 0 }}, - { 211, 0, 0, 7, { 0 }}, - { 212, 0, 0, 7, { 0 }}, - { 213, 0, 0, 7, { 0 }}, - { 214, 0, 1, 7, { 0 }}, - { 215, 1, 5, 7, { 0 }}, - { 216, 0, 3, 9, { 0 }}, - { 217, 0, 0, 9, { 0 }}, - { 218, 0, 0, 9, { 0 }}, - { 219, 0, 0, 9, { 0 }}, - { 220, 0, 1, 9, { 0 }}, - { 221, 0, 0, 8, { 0 }}, - { 222, 0, 2, 8, { 0 }}, - { 223, 0, 3, 9, { 0 }}, - { 224, 0, 3, 7, { 0 }}, - { 225, 0, 3, 7, { 0 }}, - { 226, 0, 3, 7, { 0 }}, - { 227, 0, 3, 7, { 0 }}, - { 228, 0, 4, 7, { 0 }}, - { 229, 0, 2, 7, { 0 }}, - { 230, 0, 6, 11, { 0 }}, - { 231, 0, 6, 7, { 0 }}, - { 232, 0, 3, 7, { 0 }}, - { 233, 0, 3, 7, { 0 }}, - { 234, 0, 3, 7, { 0 }}, - { 235, 0, 4, 7, { 0 }}, - { 236, 0, 2, 4, { 0 }}, - { 237, 0, 2, 4, { 0 }}, - { 238, 0, 2, 4, { 0 }}, - { 239, 0, 3, 4, { 0 }}, - { 240, 0, 2, 7, { 0 }}, - { 241, 0, 3, 8, { 0 }}, - { 242, 0, 3, 6, { 0 }}, - { 243, 0, 3, 6, { 0 }}, - { 244, 0, 3, 6, { 0 }}, - { 245, 0, 3, 6, { 0 }}, - { 246, 0, 4, 6, { 0 }}, - { 247, 0, 3, 8, { 0 }}, - { 248, 0, 4, 9, { 0 }}, - { 249, 0, 3, 8, { 0 }}, - { 250, 0, 3, 8, { 0 }}, - { 251, 0, 3, 8, { 0 }}, - { 252, 0, 4, 8, { 0 }}, - { 253, 0, 3, 8, { 0 }}, - { 254, 0, 4, 6, { 0 }}, - { 255, 0, 4, 8, { 0 }}, -}; - -// Style loading function: Cherry -static void GuiLoadStyleCherry(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < CHERRY_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(cherryStyleProps[i].controlId, cherryStyleProps[i].propertyId, cherryStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int cherryFontDataSize = 0; - unsigned char *data = DecompressData(cherryFontData, CHERRY_STYLE_FONT_ATLAS_COMP_SIZE, &cherryFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 15; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, cherryFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, cherryFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_cyber.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_cyber.h deleted file mode 100644 index 5e7bf85..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_cyber.h +++ /dev/null @@ -1,592 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleCyber(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define CYBER_STYLE_PROPS_COUNT 17 - -// Custom style name: Cyber -static const GuiStyleProp cyberStyleProps[CYBER_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x2f7486ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x024658ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x51bfd3ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0x82cde0ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x3299b4ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xb6e1eaff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xeb7630ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xffbc51ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xd86f36ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x134b5aff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x02313dff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x17505fff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x0000000e }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x81c0d0ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x00222bff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000007 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "Kyrou7Wide.ttf" (size: 14, spacing: 0) - -#define CYBER_STYLE_FONT_ATLAS_COMP_SIZE 2306 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char cyberFontData[CYBER_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xdd, 0x72, 0xe3, 0x36, 0x12, 0x06, 0x50, 0x96, 0x6b, 0xdf, 0xff, 0x85, 0x1d, 0xec, 0xb7, 0xb5, 0x93, 0x4c, 0xe2, - 0xa9, 0x8c, 0x88, 0x7f, 0x8a, 0x92, 0xcf, 0x9c, 0xaa, 0xb9, 0x30, 0x2d, 0x89, 0x04, 0xd1, 0x40, 0x93, 0x34, 0x5a, 0x39, - 0x00, 0x00, 0x00, 0x00, 0x16, 0xcb, 0xc5, 0x9f, 0x96, 0xe6, 0x9f, 0xae, 0x3b, 0xa2, 0x9f, 0xff, 0x9e, 0x7b, 0xec, 0xfa, - 0x57, 0x7f, 0xbb, 0xe7, 0xe1, 0xb9, 0xd3, 0x9e, 0x5f, 0x7f, 0x92, 0xd3, 0xdf, 0xcd, 0x50, 0xeb, 0xa6, 0x7a, 0xc6, 0xce, - 0xcf, 0x4c, 0x5f, 0xbc, 0x3d, 0xde, 0x87, 0x74, 0xbf, 0x62, 0xe7, 0xc8, 0xf8, 0xf3, 0x5f, 0xe9, 0xea, 0xef, 0xe7, 0xbd, - 0xb8, 0xad, 0x97, 0xa7, 0xb2, 0x47, 0x69, 0xf8, 0x8d, 0xda, 0xeb, 0x8f, 0x89, 0xbd, 0x2f, 0x97, 0xce, 0x45, 0xa9, 0x8e, - 0x19, 0xc7, 0x86, 0xa3, 0xc9, 0xe4, 0xb9, 0xcc, 0xf4, 0x88, 0xd6, 0x1e, 0xff, 0xb5, 0x7e, 0x91, 0x7f, 0xfd, 0x7f, 0x0c, - 0x45, 0x5a, 0x36, 0xc6, 0xff, 0xd1, 0x35, 0xbe, 0xec, 0xcf, 0x8b, 0xd2, 0x10, 0xe9, 0xfd, 0xaf, 0x69, 0x3d, 0xda, 0xb1, - 0x11, 0x2f, 0xcd, 0xbf, 0x9b, 0xa1, 0x23, 0x5e, 0x75, 0x46, 0x7a, 0x47, 0xce, 0x5a, 0x6b, 0xec, 0x38, 0x9a, 0xaf, 0x3f, - 0xfb, 0x9c, 0x7c, 0x7d, 0xd9, 0x3e, 0x46, 0x96, 0x86, 0x96, 0x2a, 0xc3, 0x9f, 0x98, 0x81, 0x6c, 0x6e, 0xd5, 0xd9, 0xdf, - 0x9d, 0x17, 0x66, 0x38, 0x96, 0x32, 0x75, 0xf6, 0xce, 0x3f, 0x77, 0x74, 0xfe, 0xde, 0x3b, 0xe2, 0xf5, 0xe7, 0xfa, 0x59, - 0x34, 0x9a, 0x8f, 0x8d, 0x66, 0x3f, 0x5b, 0x2a, 0x1b, 0xe2, 0x77, 0xdd, 0x58, 0xbc, 0x32, 0x47, 0x9a, 0xc9, 0x3b, 0xcf, - 0xb6, 0x7d, 0xfe, 0xd0, 0xbe, 0x57, 0xaf, 0x32, 0xff, 0x67, 0xe2, 0xfc, 0x65, 0xa8, 0x9d, 0x6b, 0x39, 0x65, 0xeb, 0x11, - 0x9f, 0x7f, 0x7a, 0x19, 0x38, 0xe6, 0x8f, 0x94, 0xbf, 0x1d, 0x4b, 0x72, 0xda, 0x2c, 0x3c, 0x97, 0xe9, 0xbe, 0x56, 0xfa, - 0x33, 0x6e, 0xc7, 0x73, 0xe6, 0xe4, 0xbf, 0x3f, 0x94, 0xcd, 0xb9, 0xd8, 0x15, 0xf1, 0xff, 0xcf, 0x28, 0x96, 0x89, 0x88, - 0xcd, 0xe4, 0x0c, 0xb3, 0xf6, 0xfa, 0x7f, 0x5e, 0x99, 0x3a, 0x7f, 0x59, 0x7e, 0x55, 0xfb, 0x4f, 0xf4, 0x66, 0x28, 0x7f, - 0xc8, 0xb2, 0x51, 0xb6, 0x6c, 0xbc, 0x97, 0x9c, 0x4d, 0x59, 0xda, 0xa3, 0xf9, 0xff, 0xba, 0x6c, 0x67, 0xcf, 0xd5, 0x52, - 0xcf, 0xbd, 0xd3, 0xd1, 0xeb, 0xff, 0x34, 0x8e, 0x2e, 0xfb, 0xe2, 0xff, 0x7a, 0x7f, 0x4c, 0x9e, 0xbf, 0x5c, 0x7c, 0x7d, - 0xbe, 0xe6, 0x0a, 0x7d, 0x3c, 0xe3, 0xd9, 0x7b, 0xfd, 0x7f, 0xd5, 0x88, 0xb1, 0x23, 0xff, 0xcf, 0x8b, 0xe7, 0xff, 0x3d, - 0xf7, 0xff, 0xf3, 0x26, 0xf1, 0x9f, 0xe9, 0x27, 0x52, 0x59, 0x7e, 0x7f, 0xbe, 0x2d, 0xdb, 0x9d, 0x7b, 0xbe, 0x90, 0xa9, - 0x23, 0x5e, 0x75, 0x2f, 0x26, 0x8b, 0x7e, 0x37, 0x8d, 0xb3, 0xe2, 0xd8, 0xfd, 0xdd, 0xe7, 0xde, 0xff, 0xf7, 0xfc, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9e, 0xd5, 0x9d, 0xb9, 0xe0, 0x75, - 0x23, 0xab, 0x68, 0x67, 0x56, 0xdd, 0xce, 0xac, 0xd9, 0x1d, 0x7d, 0x65, 0xbd, 0x0e, 0xd1, 0xf8, 0x3a, 0xe3, 0xf6, 0x55, - 0xce, 0x7d, 0xeb, 0x86, 0xe7, 0xaa, 0xa3, 0xa4, 0xba, 0x8e, 0xbe, 0xad, 0x1e, 0x41, 0xbd, 0x76, 0x6b, 0xad, 0x92, 0xd5, - 0xfe, 0xda, 0xaf, 0x3b, 0x6b, 0x53, 0x66, 0xb8, 0x05, 0x7b, 0x56, 0xbf, 0xa7, 0xab, 0x3e, 0xc1, 0xe8, 0x3a, 0xf4, 0xeb, - 0xaa, 0x02, 0xce, 0xaf, 0x90, 0x3f, 0x7f, 0xe7, 0xb2, 0xfd, 0x28, 0xda, 0xf7, 0x38, 0x0b, 0xce, 0xd9, 0x8e, 0xf8, 0xcf, - 0x69, 0x45, 0x80, 0x5c, 0x58, 0xdb, 0x75, 0x5f, 0x25, 0xdc, 0x7d, 0x95, 0x76, 0xea, 0xf1, 0xdf, 0x5e, 0xb3, 0x39, 0x8b, - 0xa3, 0x35, 0xc3, 0xd1, 0xb3, 0x6a, 0x04, 0x18, 0x19, 0xb7, 0x56, 0xc4, 0xff, 0x68, 0xee, 0xf0, 0xda, 0xf1, 0x3f, 0x5a, - 0x4f, 0x2c, 0x27, 0xe7, 0x3d, 0x8d, 0x7d, 0xfb, 0x0e, 0xdb, 0x8f, 0x9b, 0xc6, 0x7f, 0x3d, 0xa6, 0x32, 0x5d, 0xa5, 0x78, - 0x5d, 0x7f, 0x5a, 0xa7, 0x34, 0x45, 0xe9, 0x58, 0x4d, 0xcf, 0x32, 0x3c, 0xb2, 0xec, 0xca, 0xff, 0x53, 0xb9, 0xf2, 0x48, - 0x53, 0x2e, 0xbb, 0x76, 0x8c, 0x6d, 0x1d, 0xb5, 0x1e, 0x57, 0x14, 0xab, 0xd5, 0x2b, 0x7c, 0xfe, 0xfc, 0x3e, 0x57, 0x4f, - 0xf9, 0x9a, 0xf8, 0x9f, 0x8f, 0xc4, 0x3c, 0x65, 0xce, 0x5a, 0x73, 0x6f, 0x22, 0x83, 0xf3, 0xd6, 0x9e, 0xd7, 0x5e, 0x31, - 0xff, 0xe7, 0xa5, 0xe6, 0xff, 0x96, 0xeb, 0xff, 0x2c, 0xb8, 0x7a, 0x1d, 0x6b, 0xb5, 0xd2, 0x7c, 0x2e, 0x77, 0xe4, 0xff, - 0x2d, 0x33, 0xfb, 0xfc, 0xfc, 0x3f, 0xb3, 0x35, 0xcd, 0xb3, 0xf0, 0xf5, 0xf1, 0xdf, 0x76, 0x4c, 0xb9, 0xf4, 0xb5, 0xaf, - 0x17, 0xff, 0xb9, 0xc5, 0xfd, 0xbf, 0x6c, 0xac, 0xcd, 0x9c, 0x25, 0xa3, 0xdb, 0x9e, 0xf8, 0x6f, 0xab, 0x87, 0x3e, 0x73, - 0xfd, 0x3f, 0x17, 0xe1, 0xf5, 0x08, 0xf8, 0x43, 0xfc, 0x2f, 0xca, 0xff, 0x57, 0xbd, 0xba, 0xff, 0x5e, 0xc9, 0xcc, 0x0c, - 0xda, 0x7e, 0x4c, 0x59, 0x9e, 0x7f, 0xcf, 0xd6, 0xf6, 0xdd, 0x9d, 0xff, 0xaf, 0x7a, 0xfd, 0x31, 0x7c, 0xde, 0xeb, 0x5b, - 0xe6, 0x7a, 0xe5, 0xf1, 0x84, 0x6f, 0x73, 0xd8, 0xfd, 0x7c, 0xcf, 0x77, 0x94, 0xbe, 0xdf, 0x53, 0x6c, 0x6d, 0x70, 0xef, - 0xe7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x5e, 0x65, 0x75, 0xbf, - 0x15, 0x53, 0x69, 0x58, 0x1f, 0xda, 0x52, 0x3f, 0xf3, 0xbc, 0xfa, 0xe6, 0xa3, 0x1a, 0x12, 0xa5, 0xa9, 0xf6, 0xe6, 0xaa, - 0xd6, 0x6c, 0xad, 0x83, 0x30, 0x5b, 0xa7, 0x73, 0xe4, 0xdd, 0x5b, 0x5a, 0xb9, 0xbe, 0xe6, 0x31, 0x95, 0x75, 0xc0, 0xc7, - 0xc2, 0x1e, 0x58, 0x5f, 0xf3, 0x9c, 0x89, 0x9a, 0x0b, 0x33, 0x55, 0x04, 0xb3, 0x71, 0x85, 0x69, 0x86, 0x5a, 0xa5, 0xbd, - 0x02, 0x47, 0xeb, 0xd6, 0x2c, 0xaa, 0xf2, 0xb0, 0xbb, 0x5f, 0xaf, 0xd8, 0xda, 0x5f, 0x47, 0xe1, 0x19, 0xf1, 0x7f, 0xde, - 0x43, 0xb2, 0xf8, 0x6c, 0xf7, 0xfd, 0xb4, 0x16, 0xfb, 0x8f, 0x6b, 0x2b, 0x7f, 0x34, 0xf6, 0x9b, 0x9e, 0xed, 0x99, 0x3e, - 0xcb, 0x99, 0xac, 0x84, 0x50, 0x3a, 0xe7, 0x9b, 0xf6, 0xe8, 0x9f, 0xeb, 0x79, 0xfb, 0x56, 0xc0, 0xbf, 0x53, 0xfc, 0x1f, - 0x83, 0x15, 0x0b, 0x77, 0xc7, 0xff, 0xd1, 0xb4, 0x4f, 0x59, 0x76, 0x44, 0xeb, 0xaa, 0x6f, 0x7f, 0x74, 0xe7, 0x58, 0x6b, - 0x6a, 0x59, 0xe5, 0xc2, 0x5a, 0x0f, 0xe9, 0xe8, 0x5d, 0xa3, 0x23, 0x40, 0x06, 0xe7, 0xff, 0xfe, 0x96, 0x5e, 0x95, 0x63, - 0xbc, 0x66, 0xfc, 0x8f, 0xb5, 0x66, 0x26, 0xce, 0xf0, 0xde, 0xf9, 0x7f, 0x65, 0xe5, 0xee, 0x91, 0xe8, 0x28, 0x0f, 0xde, - 0xa5, 0x0c, 0xcf, 0xce, 0xe3, 0x57, 0x07, 0x47, 0xd3, 0x77, 0x32, 0x94, 0xee, 0xd7, 0xe5, 0x97, 0xf8, 0xcc, 0x96, 0x6b, - 0xf4, 0x9c, 0xb4, 0xf0, 0x68, 0x35, 0xd2, 0xde, 0xf8, 0xcf, 0xa5, 0xf3, 0xff, 0xd1, 0xf8, 0xed, 0x19, 0xc7, 0xd0, 0xf9, - 0x3a, 0x06, 0xdf, 0x75, 0xfc, 0x95, 0xa9, 0xf6, 0xd8, 0x3d, 0xf5, 0x68, 0x57, 0x7e, 0x43, 0x47, 0x16, 0xf4, 0xdb, 0x54, - 0x3e, 0x21, 0x83, 0x39, 0x78, 0x6f, 0xe6, 0xdf, 0x33, 0xce, 0xa6, 0xe3, 0xce, 0x40, 0x4e, 0xc6, 0xc0, 0x6c, 0xca, 0xc1, - 0x57, 0xce, 0x83, 0x59, 0x9a, 0xaf, 0xed, 0xbb, 0xbb, 0xb8, 0x33, 0xa3, 0xbb, 0xe6, 0xdd, 0x9e, 0xd5, 0x26, 0x57, 0xce, - 0xff, 0xe9, 0xce, 0x76, 0x67, 0xe6, 0xff, 0x4c, 0xd7, 0xc9, 0xac, 0xe5, 0x7e, 0xc7, 0xed, 0xe6, 0xff, 0xb6, 0xd8, 0xcc, - 0xe5, 0xf9, 0xbf, 0xf8, 0xbf, 0xfa, 0x49, 0xcb, 0xf1, 0x12, 0xf1, 0xbf, 0xf7, 0xfa, 0x7f, 0xcd, 0x08, 0x32, 0x3a, 0xcb, - 0x1e, 0x9b, 0x9f, 0x11, 0x8c, 0xbf, 0x6a, 0x5f, 0xfc, 0x1f, 0xdf, 0xaa, 0x5a, 0xe3, 0xbb, 0xd5, 0xa6, 0x7c, 0x46, 0xfc, - 0xb7, 0xe4, 0xff, 0x19, 0xbc, 0xff, 0xdf, 0xfe, 0x0d, 0x5b, 0xe9, 0xca, 0x59, 0xda, 0xf3, 0x8e, 0xf7, 0xec, 0x11, 0xbc, - 0xf3, 0x88, 0x36, 0xf7, 0xfc, 0xff, 0x6e, 0x63, 0xf0, 0xdc, 0x77, 0xaa, 0x7c, 0xe7, 0xfe, 0xaf, 0xee, 0x32, 0xfe, 0x5a, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xd9, 0xeb, 0x16, 0x72, 0xe9, 0x7a, 0xf9, - 0xd1, 0xba, 0x75, 0xfd, 0x2b, 0x56, 0xb3, 0xa8, 0x65, 0xb2, 0xe8, 0x6c, 0x95, 0x86, 0xd5, 0xf9, 0x99, 0x6c, 0xf7, 0x4c, - 0xff, 0x4e, 0x1a, 0x56, 0x84, 0x65, 0xe8, 0x0c, 0xdf, 0x6f, 0xdd, 0xea, 0xcc, 0xaa, 0xc1, 0x2c, 0x6d, 0xdd, 0x95, 0xe7, - 0x3b, 0xd5, 0x6a, 0xd8, 0x5f, 0x95, 0xc1, 0xea, 0x2b, 0x19, 0x5a, 0x31, 0x99, 0xe1, 0xda, 0x04, 0xbd, 0xe3, 0x5d, 0x3a, - 0xdb, 0xac, 0xf7, 0x5c, 0x7f, 0x6d, 0xe3, 0xd6, 0x2a, 0x33, 0x5f, 0xb7, 0x97, 0xc1, 0x33, 0xfe, 0x91, 0xcf, 0xa9, 0x7e, - 0x9f, 0xe1, 0x11, 0xfa, 0x58, 0x52, 0xd7, 0xbb, 0xa5, 0x1a, 0x47, 0x69, 0x58, 0x43, 0x9f, 0xe9, 0xda, 0x60, 0x19, 0x6e, - 0x87, 0x95, 0x3d, 0x6f, 0xee, 0xd3, 0x6a, 0x6b, 0xb5, 0x33, 0x31, 0x83, 0x66, 0xb0, 0xfe, 0x5d, 0x26, 0x2b, 0x43, 0xe4, - 0x64, 0x8d, 0x77, 0xb6, 0xad, 0x6f, 0x4f, 0x67, 0xf4, 0xb7, 0x1f, 0x6f, 0x9a, 0xdb, 0xb4, 0xad, 0x5e, 0xf5, 0xc7, 0xed, - 0xb3, 0xd2, 0x32, 0x34, 0xdb, 0x8c, 0xb5, 0xe9, 0xd5, 0xf9, 0xc6, 0xdd, 0x6b, 0x7b, 0xd4, 0xab, 0x8f, 0xed, 0xbf, 0x36, - 0x18, 0xa9, 0xc5, 0xb2, 0x2e, 0xfe, 0xd3, 0x5d, 0x51, 0xaa, 0x4c, 0x5d, 0x75, 0xf4, 0xc5, 0x7f, 0xdb, 0xfb, 0x66, 0x68, - 0xfe, 0xaf, 0xc5, 0xdf, 0xde, 0xed, 0xb3, 0xd5, 0xf6, 0x47, 0xe3, 0xbf, 0xbf, 0x0f, 0x64, 0x43, 0x8d, 0xd4, 0x5a, 0x56, - 0x32, 0xb2, 0x65, 0xfe, 0x1a, 0x7b, 0x5f, 0xfc, 0x9f, 0xb5, 0xde, 0x6c, 0xbe, 0xb1, 0x6a, 0xfe, 0xcf, 0x74, 0xfe, 0xdf, - 0xda, 0x57, 0xd3, 0xfc, 0xfd, 0x42, 0x2d, 0x39, 0x55, 0x1e, 0xc6, 0x7e, 0xc9, 0x67, 0xf5, 0x9b, 0x32, 0x8e, 0xc1, 0x6f, - 0xc3, 0xd8, 0xbd, 0xbd, 0x67, 0xdc, 0x5e, 0x53, 0xb9, 0xf3, 0xfa, 0xad, 0x2b, 0xc6, 0xbe, 0x7b, 0xc4, 0x7f, 0x36, 0x65, - 0x3a, 0x99, 0x6a, 0xd7, 0x74, 0xed, 0xfb, 0x35, 0x77, 0x97, 0x72, 0x59, 0x55, 0xd1, 0xff, 0xc7, 0xfe, 0xc7, 0x70, 0x4e, - 0xbc, 0x7f, 0x7b, 0xeb, 0x38, 0x58, 0x2e, 0x98, 0xff, 0x77, 0xde, 0x01, 0x1d, 0xaf, 0x0a, 0x7f, 0x4d, 0xfc, 0x3f, 0xeb, - 0xda, 0xe8, 0xd8, 0x32, 0x36, 0xf6, 0xc6, 0x7f, 0x2e, 0x3e, 0x8e, 0xeb, 0xe2, 0xbf, 0x9c, 0x5e, 0x03, 0xa4, 0x23, 0xaf, - 0xdd, 0xb3, 0x7d, 0xe5, 0xf8, 0x32, 0xfb, 0xbd, 0x3f, 0xcf, 0xc9, 0xff, 0x9f, 0x1f, 0xff, 0x77, 0xbe, 0x43, 0x91, 0x37, - 0xba, 0x43, 0x93, 0x5f, 0xee, 0xb2, 0x5c, 0xf3, 0x3c, 0xf6, 0x3f, 0x29, 0x3f, 0x7c, 0x3e, 0xf8, 0x1e, 0xad, 0x7b, 0xe7, - 0xff, 0xbd, 0xf1, 0x3f, 0x73, 0xff, 0xff, 0xfb, 0xe6, 0xff, 0x77, 0xfe, 0x9b, 0x05, 0x7f, 0xb7, 0xb1, 0xb3, 0x9d, 0xee, - 0x1f, 0xdf, 0xeb, 0x47, 0xe6, 0xf2, 0xe0, 0x7a, 0xe8, 0xfb, 0xe6, 0xff, 0xf7, 0xff, 0x8b, 0x25, 0xd5, 0x56, 0xaf, 0xb8, - 0x26, 0xb9, 0xe3, 0xfd, 0xbd, 0xd5, 0xfd, 0xbd, 0x9c, 0xdc, 0x0b, 0xdd, 0x95, 0xff, 0x1f, 0x37, 0xbf, 0xff, 0x0f, 0xaf, - 0x39, 0x3e, 0x01, 0xe2, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7d, 0xff, 0x9a, 0x32, 0xc3, - 0xeb, 0x26, 0xf2, 0xa3, 0x96, 0xcc, 0xc7, 0xc4, 0x6a, 0xa4, 0x7d, 0x55, 0x64, 0xcf, 0x6b, 0x60, 0x7d, 0x4e, 0xfc, 0xfd, - 0xe8, 0xde, 0xe3, 0xca, 0xa2, 0xf5, 0xa3, 0xcf, 0x38, 0xb2, 0x0c, 0x9e, 0xab, 0xb9, 0xcf, 0xfc, 0x77, 0x55, 0xa4, 0x63, - 0xf9, 0x5a, 0xdf, 0xe3, 0xaf, 0xba, 0x49, 0xab, 0xcf, 0x48, 0xcf, 0xca, 0xc3, 0x7b, 0x55, 0x28, 0x2c, 0x3f, 0xda, 0x23, - 0xa7, 0x75, 0x24, 0xef, 0x5c, 0x45, 0xb6, 0x0c, 0x55, 0x97, 0xd9, 0x7f, 0x5c, 0x73, 0xf1, 0x90, 0x4a, 0x5d, 0xcf, 0xe7, - 0x54, 0xbb, 0xad, 0x9d, 0xab, 0xf3, 0x5a, 0xd8, 0xa5, 0x71, 0xbd, 0xfc, 0x79, 0x55, 0xe4, 0x4c, 0x8e, 0x7e, 0xf5, 0xe8, - 0xcf, 0xd0, 0xd1, 0xfd, 0xee, 0x8c, 0xa5, 0xf9, 0x13, 0xb2, 0xa8, 0x3a, 0xd7, 0x79, 0x6b, 0x94, 0x17, 0x5e, 0x29, 0x5c, - 0xba, 0xe2, 0x3f, 0x5f, 0x32, 0x84, 0xbc, 0xe0, 0xea, 0x96, 0xd6, 0xf1, 0xf8, 0xb5, 0x56, 0xce, 0xa4, 0x79, 0x45, 0xf8, - 0x4c, 0xc5, 0x1d, 0xeb, 0xa9, 0xda, 0x7b, 0x62, 0xbd, 0x9f, 0xde, 0xbb, 0x8a, 0xec, 0x67, 0xe5, 0xb8, 0xf2, 0xb2, 0xd5, - 0x6f, 0xda, 0x5a, 0x25, 0x03, 0xd9, 0xc1, 0xb3, 0xb6, 0x9e, 0x67, 0x71, 0xbf, 0x9b, 0xff, 0xc7, 0x32, 0x9b, 0x67, 0x1d, - 0x7b, 0xeb, 0xbe, 0x66, 0xcb, 0x95, 0x60, 0x4b, 0x4f, 0xc8, 0x69, 0xb6, 0xf5, 0x8a, 0x71, 0xd2, 0x92, 0x89, 0xde, 0x73, - 0xbf, 0xd3, 0xd8, 0x1b, 0x72, 0x92, 0x87, 0xdf, 0xb5, 0xee, 0xed, 0xcc, 0xa8, 0x94, 0x86, 0x2b, 0xfc, 0x96, 0xec, 0xa0, - 0x5c, 0xba, 0xf5, 0xae, 0xf1, 0xdf, 0x32, 0xff, 0xe7, 0x4d, 0xe3, 0xbf, 0xdc, 0x7c, 0xbf, 0xc7, 0xbf, 0xff, 0xac, 0x75, - 0xfe, 0xbf, 0xd7, 0xd6, 0x95, 0x19, 0xfc, 0xe3, 0xfb, 0x6d, 0xfb, 0x2a, 0x7d, 0xf6, 0xdf, 0x77, 0x7c, 0x8d, 0xf8, 0xbf, - 0xf3, 0x3c, 0x39, 0x1e, 0xff, 0x9f, 0x2f, 0xb0, 0xdf, 0x19, 0xba, 0xa3, 0x53, 0x8b, 0xff, 0x72, 0xcb, 0xad, 0x2b, 0x2b, - 0x5b, 0x8d, 0x3e, 0xab, 0xda, 0x59, 0xe9, 0xf3, 0xbe, 0xf1, 0xdf, 0x92, 0x2f, 0xbd, 0xea, 0x75, 0xf2, 0x31, 0x1d, 0x41, - 0x77, 0x8d, 0xff, 0xfa, 0x93, 0x87, 0xf1, 0x27, 0x64, 0xcf, 0xd8, 0x5a, 0x2e, 0xba, 0x83, 0xf7, 0xbc, 0x63, 0x7f, 0x5e, - 0xfc, 0xcf, 0x54, 0x28, 0x3c, 0xbf, 0xef, 0x72, 0x87, 0xeb, 0xe4, 0x1d, 0xf5, 0x10, 0xef, 0xb1, 0xdf, 0xd9, 0x34, 0x17, - 0xdd, 0xfb, 0x49, 0x8e, 0x3b, 0xf8, 0xf7, 0x7c, 0x6a, 0x30, 0xd6, 0x8f, 0x77, 0x6f, 0x7f, 0x56, 0x6f, 0xbc, 0x62, 0xbf, - 0x45, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x77, 0x5a, 0xc9, 0x93, 0xca, 0x2a, - 0xe0, 0xa3, 0xab, 0x76, 0xd1, 0xaf, 0x46, 0x6b, 0xa6, 0x66, 0x41, 0x95, 0xcc, 0x47, 0x6b, 0x6f, 0xca, 0xe5, 0x47, 0x73, - 0x4c, 0xbe, 0x33, 0x5c, 0xb5, 0x9a, 0xef, 0x77, 0xeb, 0xc5, 0x47, 0xfb, 0xfc, 0x68, 0xcd, 0xd4, 0xb9, 0x7a, 0xb1, 0xb5, - 0x95, 0xd2, 0x9f, 0x83, 0xe3, 0xd9, 0xae, 0x0a, 0xb0, 0x67, 0xef, 0x5c, 0xaf, 0xe7, 0x6b, 0x3d, 0x20, 0xf3, 0xd1, 0xff, - 0x1d, 0x7a, 0x50, 0xb6, 0xe5, 0x15, 0x3b, 0xf7, 0xf9, 0x43, 0x0f, 0xe5, 0x49, 0x39, 0x40, 0xdb, 0x5a, 0xf6, 0x72, 0xab, - 0xad, 0x8f, 0xf7, 0x39, 0x8d, 0x95, 0xfd, 0xee, 0xb5, 0x75, 0xa6, 0x9e, 0x2f, 0xb4, 0x5c, 0x11, 0xd7, 0xab, 0xa2, 0xbe, - 0xce, 0xd6, 0x96, 0xa3, 0x3d, 0xde, 0xe4, 0x58, 0xc5, 0x3f, 0xab, 0xe6, 0xfc, 0x77, 0xea, 0xf5, 0x99, 0x6a, 0x0b, 0xf1, - 0x8f, 0xf8, 0xff, 0x6e, 0xbd, 0x5e, 0xfc, 0xf3, 0x7d, 0xf3, 0xff, 0x32, 0x55, 0x2f, 0xfe, 0xb8, 0xd5, 0xd6, 0xf9, 0x6b, - 0xa1, 0xfb, 0x6c, 0xbd, 0x6b, 0x15, 0x44, 0xe0, 0x8a, 0x3b, 0xb0, 0x73, 0x4f, 0x70, 0x81, 0xd7, 0xc8, 0xc1, 0x46, 0xe2, - 0xda, 0xec, 0x0f, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8b, 0x3f, 0xff, 0x69, 0x07, 0x10, 0xff, 0xc0, - 0xb7, 0x8b, 0xff, 0xff, 0x01 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle cyberFontRecs[189] = { - { 4, 4, 4 , 14 }, - { 16, 4, 1 , 8 }, - { 25, 4, 4 , 3 }, - { 37, 4, 8 , 8 }, - { 53, 4, 8 , 9 }, - { 69, 4, 8 , 8 }, - { 85, 4, 8 , 8 }, - { 101, 4, 1 , 3 }, - { 110, 4, 4 , 9 }, - { 122, 4, 4 , 9 }, - { 134, 4, 5 , 6 }, - { 147, 4, 5 , 6 }, - { 160, 4, 2 , 2 }, - { 170, 4, 4 , 1 }, - { 182, 4, 1 , 1 }, - { 191, 4, 8 , 8 }, - { 207, 4, 8 , 8 }, - { 223, 4, 2 , 8 }, - { 233, 4, 8 , 8 }, - { 249, 4, 8 , 8 }, - { 265, 4, 8 , 8 }, - { 281, 4, 8 , 8 }, - { 297, 4, 8 , 8 }, - { 313, 4, 7 , 8 }, - { 328, 4, 8 , 8 }, - { 344, 4, 8 , 8 }, - { 360, 4, 1 , 4 }, - { 369, 4, 2 , 5 }, - { 379, 4, 4 , 8 }, - { 391, 4, 5 , 3 }, - { 404, 4, 4 , 8 }, - { 416, 4, 7 , 8 }, - { 431, 4, 8 , 8 }, - { 447, 4, 8 , 8 }, - { 463, 4, 8 , 8 }, - { 479, 4, 8 , 8 }, - { 495, 4, 8 , 8 }, - { 4, 26, 7 , 8 }, - { 19, 26, 7 , 8 }, - { 34, 26, 8 , 8 }, - { 50, 26, 8 , 8 }, - { 66, 26, 5 , 8 }, - { 79, 26, 7 , 8 }, - { 94, 26, 8 , 8 }, - { 110, 26, 7 , 8 }, - { 125, 26, 8 , 8 }, - { 141, 26, 8 , 8 }, - { 157, 26, 8 , 8 }, - { 173, 26, 8 , 8 }, - { 189, 26, 8 , 9 }, - { 205, 26, 8 , 8 }, - { 221, 26, 8 , 8 }, - { 237, 26, 8 , 8 }, - { 253, 26, 8 , 8 }, - { 269, 26, 8 , 8 }, - { 285, 26, 9 , 8 }, - { 302, 26, 8 , 8 }, - { 318, 26, 8 , 8 }, - { 334, 26, 8 , 8 }, - { 350, 26, 4 , 9 }, - { 362, 26, 8 , 8 }, - { 378, 26, 4 , 9 }, - { 390, 26, 4 , 3 }, - { 402, 26, 7 , 1 }, - { 417, 26, 2 , 3 }, - { 427, 26, 7 , 5 }, - { 442, 26, 7 , 8 }, - { 457, 26, 7 , 5 }, - { 472, 26, 7 , 8 }, - { 487, 26, 7 , 5 }, - { 4, 48, 4 , 8 }, - { 16, 48, 7 , 7 }, - { 31, 48, 7 , 8 }, - { 46, 48, 1 , 8 }, - { 55, 48, 3 , 10 }, - { 66, 48, 7 , 8 }, - { 81, 48, 4 , 8 }, - { 93, 48, 9 , 5 }, - { 110, 48, 7 , 5 }, - { 125, 48, 7 , 5 }, - { 140, 48, 7 , 7 }, - { 155, 48, 7 , 7 }, - { 170, 48, 5 , 5 }, - { 183, 48, 7 , 5 }, - { 198, 48, 5 , 8 }, - { 211, 48, 7 , 5 }, - { 226, 48, 7 , 5 }, - { 241, 48, 9 , 5 }, - { 258, 48, 7 , 5 }, - { 273, 48, 7 , 7 }, - { 288, 48, 7 , 5 }, - { 303, 48, 4 , 9 }, - { 315, 48, 1 , 9 }, - { 324, 48, 4 , 9 }, - { 336, 48, 8 , 2 }, - { 352, 48, 1 , 8 }, - { 361, 48, 7 , 8 }, - { 376, 48, 7 , 8 }, - { 391, 48, 8 , 9 }, - { 407, 48, 8 , 9 }, - { 423, 48, 8 , 10 }, - { 439, 48, 4 , 9 }, - { 451, 48, 7 , 8 }, - { 466, 48, 8 , 8 }, - { 482, 48, 7 , 6 }, - { 497, 48, 5 , 3 }, - { 4, 70, 5 , 3 }, - { 17, 70, 8 , 8 }, - { 33, 70, 0 , 0 }, - { 41, 70, 4 , 3 }, - { 53, 70, 8 , 6 }, - { 69, 70, 4 , 5 }, - { 81, 70, 4 , 5 }, - { 93, 70, 8 , 10 }, - { 109, 70, 7 , 7 }, - { 124, 70, 5 , 7 }, - { 137, 70, 1 , 1 }, - { 146, 70, 7 , 8 }, - { 161, 70, 2 , 5 }, - { 171, 70, 4 , 5 }, - { 183, 70, 5 , 3 }, - { 196, 70, 14 , 8 }, - { 218, 70, 13 , 5 }, - { 239, 70, 8 , 9 }, - { 255, 70, 7 , 8 }, - { 270, 70, 8 , 10 }, - { 286, 70, 8 , 10 }, - { 302, 70, 8 , 10 }, - { 318, 70, 8 , 10 }, - { 334, 70, 8 , 9 }, - { 350, 70, 8 , 12 }, - { 366, 70, 14 , 8 }, - { 388, 70, 8 , 10 }, - { 404, 70, 7 , 10 }, - { 419, 70, 7 , 10 }, - { 434, 70, 7 , 10 }, - { 449, 70, 7 , 9 }, - { 464, 70, 5 , 10 }, - { 477, 70, 5 , 10 }, - { 490, 70, 5 , 10 }, - { 4, 92, 5 , 9 }, - { 17, 92, 8 , 8 }, - { 33, 92, 8 , 10 }, - { 49, 92, 8 , 10 }, - { 65, 92, 8 , 10 }, - { 81, 92, 8 , 10 }, - { 97, 92, 8 , 10 }, - { 113, 92, 8 , 9 }, - { 129, 92, 4 , 4 }, - { 141, 92, 8 , 8 }, - { 157, 92, 8 , 10 }, - { 173, 92, 8 , 10 }, - { 189, 92, 8 , 10 }, - { 205, 92, 8 , 9 }, - { 221, 92, 8 , 10 }, - { 237, 92, 7 , 9 }, - { 252, 92, 7 , 9 }, - { 267, 92, 7 , 8 }, - { 282, 92, 7 , 8 }, - { 297, 92, 7 , 8 }, - { 312, 92, 7 , 8 }, - { 327, 92, 7 , 8 }, - { 342, 92, 7 , 9 }, - { 357, 92, 13 , 5 }, - { 378, 92, 7 , 7 }, - { 393, 92, 7 , 8 }, - { 408, 92, 7 , 8 }, - { 423, 92, 7 , 8 }, - { 438, 92, 7 , 8 }, - { 453, 92, 3 , 8 }, - { 464, 92, 2 , 8 }, - { 474, 92, 3 , 8 }, - { 485, 92, 3 , 8 }, - { 4, 114, 8 , 8 }, - { 20, 114, 7 , 8 }, - { 35, 114, 7 , 8 }, - { 50, 114, 7 , 8 }, - { 65, 114, 7 , 8 }, - { 80, 114, 7 , 8 }, - { 95, 114, 7 , 8 }, - { 110, 114, 5 , 6 }, - { 123, 114, 7 , 5 }, - { 138, 114, 7 , 8 }, - { 153, 114, 7 , 8 }, - { 168, 114, 7 , 8 }, - { 183, 114, 7 , 8 }, - { 198, 114, 7 , 10 }, - { 213, 114, 7 , 10 }, - { 228, 114, 7 , 10 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo cyberFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 0, 3, 2, { 0 }}, - { 34, 0, 3, 4, { 0 }}, - { 35, 0, 3, 8, { 0 }}, - { 36, 0, 3, 8, { 0 }}, - { 37, 0, 3, 8, { 0 }}, - { 38, 0, 3, 8, { 0 }}, - { 39, 0, 3, 2, { 0 }}, - { 40, 0, 3, 4, { 0 }}, - { 41, 0, 3, 4, { 0 }}, - { 42, 0, 4, 6, { 0 }}, - { 43, 0, 4, 6, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 7, 5, { 0 }}, - { 46, 0, 10, 2, { 0 }}, - { 47, 0, 3, 8, { 0 }}, - { 48, 0, 3, 8, { 0 }}, - { 49, 0, 3, 3, { 0 }}, - { 50, 0, 3, 8, { 0 }}, - { 51, 0, 3, 8, { 0 }}, - { 52, 0, 3, 8, { 0 }}, - { 53, 0, 3, 8, { 0 }}, - { 54, 0, 3, 8, { 0 }}, - { 55, 0, 3, 7, { 0 }}, - { 56, 0, 3, 8, { 0 }}, - { 57, 0, 3, 8, { 0 }}, - { 58, 0, 6, 2, { 0 }}, - { 59, 0, 6, 3, { 0 }}, - { 60, 0, 3, 5, { 0 }}, - { 61, 0, 6, 6, { 0 }}, - { 62, 0, 3, 5, { 0 }}, - { 63, 0, 3, 7, { 0 }}, - { 64, 0, 3, 8, { 0 }}, - { 65, 0, 3, 8, { 0 }}, - { 66, 0, 3, 8, { 0 }}, - { 67, 0, 3, 8, { 0 }}, - { 68, 0, 3, 8, { 0 }}, - { 69, 0, 3, 7, { 0 }}, - { 70, 0, 3, 7, { 0 }}, - { 71, 0, 3, 8, { 0 }}, - { 72, 0, 3, 8, { 0 }}, - { 73, 0, 3, 6, { 0 }}, - { 74, 0, 3, 7, { 0 }}, - { 75, 0, 3, 8, { 0 }}, - { 76, 0, 3, 7, { 0 }}, - { 77, 0, 3, 9, { 0 }}, - { 78, 0, 3, 8, { 0 }}, - { 79, 0, 3, 8, { 0 }}, - { 80, 0, 3, 8, { 0 }}, - { 81, 0, 3, 8, { 0 }}, - { 82, 0, 3, 8, { 0 }}, - { 83, 0, 3, 8, { 0 }}, - { 84, 0, 3, 8, { 0 }}, - { 85, 0, 3, 8, { 0 }}, - { 86, 0, 3, 8, { 0 }}, - { 87, 0, 3, 10, { 0 }}, - { 88, 0, 3, 8, { 0 }}, - { 89, 0, 3, 8, { 0 }}, - { 90, 0, 3, 8, { 0 }}, - { 91, 0, 3, 4, { 0 }}, - { 92, 0, 3, 8, { 0 }}, - { 93, 0, 3, 4, { 0 }}, - { 94, 0, 3, 4, { 0 }}, - { 95, 0, 11, 7, { 0 }}, - { 96, 0, 3, 3, { 0 }}, - { 97, 0, 6, 7, { 0 }}, - { 98, 0, 3, 7, { 0 }}, - { 99, 0, 6, 7, { 0 }}, - { 100, 0, 3, 7, { 0 }}, - { 101, 0, 6, 7, { 0 }}, - { 102, 0, 3, 5, { 0 }}, - { 103, 0, 6, 7, { 0 }}, - { 104, 0, 3, 7, { 0 }}, - { 105, 0, 3, 2, { 0 }}, - { 106, -2, 3, 2, { 0 }}, - { 107, 0, 3, 7, { 0 }}, - { 108, 0, 3, 4, { 0 }}, - { 109, 0, 6, 10, { 0 }}, - { 110, 0, 6, 7, { 0 }}, - { 111, 0, 6, 7, { 0 }}, - { 112, 0, 6, 7, { 0 }}, - { 113, 0, 6, 7, { 0 }}, - { 114, 0, 6, 6, { 0 }}, - { 115, 0, 6, 7, { 0 }}, - { 116, 0, 3, 6, { 0 }}, - { 117, 0, 6, 7, { 0 }}, - { 118, 0, 6, 7, { 0 }}, - { 119, 0, 6, 10, { 0 }}, - { 120, 0, 6, 7, { 0 }}, - { 121, 0, 6, 7, { 0 }}, - { 122, 0, 6, 7, { 0 }}, - { 123, 0, 3, 5, { 0 }}, - { 124, 0, 3, 2, { 0 }}, - { 125, 0, 3, 5, { 0 }}, - { 126, 0, 6, 8, { 0 }}, - { 161, 0, 3, 2, { 0 }}, - { 162, 0, 4, 7, { 0 }}, - { 163, 0, 3, 7, { 0 }}, - { 8364, 0, 3, 9, { 0 }}, - { 165, 0, 3, 8, { 0 }}, - { 352, 0, 1, 8, { 0 }}, - { 167, 0, 4, 5, { 0 }}, - { 353, 0, 3, 7, { 0 }}, - { 169, 0, 3, 9, { 0 }}, - { 170, 0, 3, 7, { 0 }}, - { 171, 0, 6, 6, { 0 }}, - { 172, 0, 7, 6, { 0 }}, - { 174, 0, 3, 9, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 0, 3, 4, { 0 }}, - { 177, 0, 6, 8, { 0 }}, - { 178, 0, 3, 4, { 0 }}, - { 179, 0, 3, 4, { 0 }}, - { 381, 0, 1, 8, { 0 }}, - { 181, 0, 6, 7, { 0 }}, - { 182, 0, 4, 6, { 0 }}, - { 183, 0, 7, 2, { 0 }}, - { 382, 0, 3, 7, { 0 }}, - { 185, 0, 3, 4, { 0 }}, - { 186, 0, 3, 5, { 0 }}, - { 187, 0, 6, 6, { 0 }}, - { 338, 0, 3, 14, { 0 }}, - { 339, 0, 6, 13, { 0 }}, - { 376, 0, 2, 8, { 0 }}, - { 191, 0, 3, 7, { 0 }}, - { 192, 0, 1, 8, { 0 }}, - { 193, 0, 1, 8, { 0 }}, - { 194, 0, 1, 8, { 0 }}, - { 195, 0, 1, 8, { 0 }}, - { 196, 0, 2, 8, { 0 }}, - { 197, 0, -1, 8, { 0 }}, - { 198, 0, 3, 14, { 0 }}, - { 199, 0, 3, 8, { 0 }}, - { 200, 0, 1, 7, { 0 }}, - { 201, 0, 1, 7, { 0 }}, - { 202, 0, 1, 7, { 0 }}, - { 203, 0, 2, 7, { 0 }}, - { 204, 0, 1, 6, { 0 }}, - { 205, 0, 1, 6, { 0 }}, - { 206, 0, 1, 6, { 0 }}, - { 207, 0, 2, 6, { 0 }}, - { 208, 0, 3, 9, { 0 }}, - { 209, 0, 1, 8, { 0 }}, - { 210, 0, 1, 8, { 0 }}, - { 211, 0, 1, 8, { 0 }}, - { 212, 0, 1, 8, { 0 }}, - { 213, 0, 1, 8, { 0 }}, - { 214, 0, 2, 8, { 0 }}, - { 215, 1, 6, 6, { 0 }}, - { 216, 0, 3, 8, { 0 }}, - { 217, 0, 1, 8, { 0 }}, - { 218, 0, 1, 8, { 0 }}, - { 219, 0, 1, 8, { 0 }}, - { 220, 0, 2, 8, { 0 }}, - { 221, 0, 1, 8, { 0 }}, - { 222, 0, 3, 7, { 0 }}, - { 223, 0, 3, 7, { 0 }}, - { 224, 0, 3, 7, { 0 }}, - { 225, 0, 3, 7, { 0 }}, - { 226, 0, 3, 7, { 0 }}, - { 227, 0, 3, 7, { 0 }}, - { 228, 0, 3, 7, { 0 }}, - { 229, 0, 2, 7, { 0 }}, - { 230, 0, 6, 13, { 0 }}, - { 231, 0, 6, 7, { 0 }}, - { 232, 0, 3, 7, { 0 }}, - { 233, 0, 3, 7, { 0 }}, - { 234, 0, 3, 7, { 0 }}, - { 235, 0, 3, 7, { 0 }}, - { 236, -1, 3, 2, { 0 }}, - { 237, 0, 3, 2, { 0 }}, - { 238, -1, 3, 2, { 0 }}, - { 239, -1, 3, 2, { 0 }}, - { 240, 0, 3, 8, { 0 }}, - { 241, 0, 3, 7, { 0 }}, - { 242, 0, 3, 7, { 0 }}, - { 243, 0, 3, 7, { 0 }}, - { 244, 0, 3, 7, { 0 }}, - { 245, 0, 3, 7, { 0 }}, - { 246, 0, 3, 7, { 0 }}, - { 247, 0, 4, 6, { 0 }}, - { 248, 0, 6, 7, { 0 }}, - { 249, 0, 3, 7, { 0 }}, - { 250, 0, 3, 7, { 0 }}, - { 251, 0, 3, 7, { 0 }}, - { 252, 0, 3, 7, { 0 }}, - { 253, 0, 3, 7, { 0 }}, - { 254, 0, 3, 7, { 0 }}, - { 255, 0, 3, 7, { 0 }}, -}; - -// Style loading function: Cyber -static void GuiLoadStyleCyber(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < CYBER_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(cyberStyleProps[i].controlId, cyberStyleProps[i].propertyId, cyberStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int cyberFontDataSize = 0; - unsigned char *data = DecompressData(cyberFontData, CYBER_STYLE_FONT_ATLAS_COMP_SIZE, &cyberFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 14; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, cyberFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, cyberFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_dark.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_dark.h deleted file mode 100644 index 500e56b..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_dark.h +++ /dev/null @@ -1,589 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleDark(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define DARK_STYLE_PROPS_COUNT 23 - -// Custom style name: Dark -static const GuiStyleProp darkStyleProps[DARK_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x878787ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x2c2c2cff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xc3c3c3ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xe1e1e1ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x848484ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x181818ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x000000ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xefefefff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x202020ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x6a6a6aff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x818181ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x606060ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x9d9d9dff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x3c3c3cff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING - { 1, 5, (int)0xf7f7f7ff }, // LABEL_TEXT_COLOR_FOCUSED - { 1, 8, (int)0x898989ff }, // LABEL_TEXT_COLOR_PRESSED - { 4, 5, (int)0xb0b0b0ff }, // SLIDER_TEXT_COLOR_FOCUSED - { 5, 5, (int)0x848484ff }, // PROGRESSBAR_TEXT_COLOR_FOCUSED - { 9, 5, (int)0xf5f5f5ff }, // TEXTBOX_TEXT_COLOR_FOCUSED - { 10, 5, (int)0xf6f6f6ff }, // VALUEBOX_TEXT_COLOR_FOCUSED -}; - -// WARNING: This style uses a custom font: "PixelOperator.ttf" (size: 16, spacing: 0) - -#define DARK_STYLE_FONT_ATLAS_COMP_SIZE 2138 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char darkFontData[DARK_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xdb, 0x92, 0xa5, 0xba, 0x0d, 0x00, 0x50, 0xff, 0xff, 0x4f, 0x2b, 0x0f, 0xa9, 0x54, 0x32, 0x95, 0xd3, 0x80, 0x64, - 0xd9, 0x98, 0x9e, 0x35, 0xeb, 0xad, 0x77, 0x4f, 0xc3, 0x36, 0x96, 0x6f, 0x80, 0x1c, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xeb, - 0xc5, 0x3f, 0xfe, 0x24, 0x7e, 0xfc, 0xcd, 0x78, 0xfc, 0x77, 0xae, 0x7f, 0xfe, 0x9f, 0x4f, 0xe3, 0xe2, 0x58, 0xcf, 0xce, - 0x35, 0x7b, 0xdc, 0x48, 0x94, 0xc4, 0x3f, 0x9f, 0x5f, 0x3c, 0xfe, 0xbb, 0x3f, 0x7d, 0xbf, 0xfc, 0xef, 0x5f, 0xfd, 0xa5, - 0xeb, 0xb3, 0x8f, 0x54, 0xb9, 0xe7, 0xff, 0x4f, 0xee, 0x2a, 0xc6, 0x92, 0xb2, 0xbf, 0x3f, 0xbb, 0xfc, 0xb9, 0x77, 0xfe, - 0x9f, 0xb8, 0xf8, 0x3e, 0x95, 0xab, 0xf4, 0x24, 0xb6, 0x4e, 0x88, 0xff, 0x78, 0x14, 0x89, 0xd1, 0x5a, 0x73, 0xfe, 0x7b, - 0xd4, 0x68, 0x6c, 0xa9, 0xaa, 0x25, 0x79, 0x15, 0xe9, 0xf9, 0xf2, 0xb8, 0xaa, 0xfd, 0xf9, 0x16, 0x30, 0x5a, 0xbe, 0xcb, - 0x7c, 0x6d, 0x8c, 0xe9, 0xdf, 0x7e, 0x56, 0x93, 0x7a, 0xbe, 0xd5, 0xcc, 0x27, 0xa3, 0xe5, 0x2a, 0xbd, 0x11, 0xff, 0x51, - 0x6e, 0xa9, 0x22, 0x19, 0xd1, 0x1d, 0x25, 0x58, 0x69, 0x87, 0xc7, 0xc6, 0xf8, 0x8f, 0xd6, 0xb1, 0x4b, 0xb4, 0xd5, 0xb9, - 0x37, 0xe2, 0xff, 0xba, 0xd7, 0x1e, 0x2d, 0xf5, 0x26, 0x6e, 0xca, 0xa8, 0x37, 0x96, 0xd7, 0x8e, 0x53, 0x57, 0xc7, 0xff, - 0xf5, 0x6f, 0x66, 0xfb, 0xdb, 0x48, 0xf6, 0xdd, 0x1d, 0xe5, 0x54, 0xeb, 0xff, 0xfb, 0xcb, 0x31, 0x7e, 0xec, 0x9b, 0xab, - 0xe3, 0x90, 0x4c, 0x09, 0x47, 0x72, 0x76, 0x35, 0xdb, 0xc3, 0xbe, 0xd9, 0xff, 0x3f, 0x1b, 0x0b, 0x8a, 0xff, 0xb5, 0xf1, - 0x5f, 0xf9, 0x26, 0xf1, 0xf0, 0x0c, 0x2a, 0x7d, 0xe2, 0x38, 0x20, 0xfe, 0xb3, 0xed, 0xd0, 0x75, 0x59, 0x75, 0x8d, 0xe5, - 0xb3, 0xeb, 0x12, 0xcf, 0x66, 0xd8, 0xfb, 0x6a, 0x61, 0x7e, 0x6c, 0x94, 0x8f, 0xff, 0x7c, 0xeb, 0x79, 0xf7, 0xd7, 0xb2, - 0xa5, 0xfa, 0xf3, 0xcc, 0x6e, 0xbe, 0xc4, 0xf7, 0xc5, 0x7f, 0x14, 0xfa, 0x94, 0xf7, 0xe3, 0xb9, 0x27, 0xfe, 0xa3, 0xb0, - 0x72, 0x31, 0xda, 0x56, 0xf9, 0x6a, 0xeb, 0x12, 0x7d, 0x6b, 0x06, 0xef, 0x5f, 0x81, 0xfb, 0xf8, 0xbf, 0x9b, 0x0f, 0xbe, - 0xdf, 0xff, 0xc7, 0x11, 0xfd, 0x7f, 0x94, 0xd7, 0x86, 0x47, 0xa1, 0xf5, 0xfd, 0x5a, 0xfc, 0x47, 0x21, 0x66, 0xa2, 0x65, - 0x5e, 0x3e, 0x96, 0xac, 0xe5, 0xf5, 0xae, 0x19, 0xee, 0xb9, 0x5a, 0x77, 0xbd, 0x68, 0xd7, 0xac, 0xe6, 0x77, 0xc5, 0xff, - 0x68, 0xe8, 0xff, 0x9f, 0x8d, 0x01, 0x66, 0xbf, 0x47, 0x7c, 0xac, 0xf7, 0xef, 0x8c, 0xff, 0x5d, 0x2b, 0xf6, 0xeb, 0x6b, - 0x63, 0x1c, 0x71, 0x65, 0xac, 0xff, 0x77, 0x8e, 0xff, 0xeb, 0x6b, 0x00, 0xb9, 0x79, 0x4c, 0x1c, 0x1a, 0xfd, 0x95, 0x39, - 0x73, 0xd7, 0x1d, 0xfb, 0xde, 0xa7, 0x09, 0xa2, 0xf0, 0xac, 0x46, 0xcf, 0x2a, 0xce, 0xea, 0x6b, 0x90, 0xef, 0xff, 0x77, - 0xdd, 0xff, 0xbf, 0x1f, 0x73, 0x9f, 0xd1, 0xff, 0x8f, 0xdb, 0xde, 0xfd, 0x94, 0xf3, 0x01, 0xf6, 0xb6, 0x00, 0x21, 0xfa, - 0xc1, 0x73, 0xc4, 0x80, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x9f, 0xcf, - 0xef, 0xcf, 0x63, 0x90, 0xcf, 0x84, 0xbd, 0x3e, 0x03, 0xfb, 0x4c, 0x4e, 0xe0, 0x6a, 0x09, 0x75, 0xfd, 0xc5, 0xeb, 0xdc, - 0xf1, 0x99, 0x4c, 0x0b, 0xcf, 0x6b, 0x46, 0xa4, 0x77, 0x3f, 0xe8, 0xcc, 0x28, 0x50, 0xc9, 0x69, 0x30, 0x92, 0x75, 0xa2, - 0x37, 0x97, 0x52, 0xee, 0xec, 0xf7, 0xd4, 0xf8, 0x2f, 0xc4, 0xff, 0xfb, 0x9f, 0x8c, 0x42, 0xfe, 0x9e, 0x9d, 0xf1, 0x9f, - 0xad, 0x7b, 0xb5, 0xfc, 0xb8, 0x73, 0x7d, 0xc9, 0xee, 0x8c, 0x62, 0xd1, 0x78, 0x0d, 0xf7, 0xf5, 0xab, 0x7f, 0xe6, 0xd0, - 0xd9, 0x51, 0xaf, 0x67, 0xe2, 0x3f, 0x9b, 0xfb, 0x34, 0x2e, 0x5a, 0xe1, 0x73, 0xe2, 0x7f, 0x6c, 0x89, 0xff, 0xf8, 0x48, - 0xfc, 0x77, 0x67, 0x92, 0xe9, 0xca, 0x42, 0x5e, 0xc9, 0x7c, 0x93, 0xbf, 0x86, 0xf5, 0x0c, 0xbf, 0xd5, 0x1a, 0xf7, 0x9d, - 0xf8, 0xaf, 0xd4, 0xad, 0xeb, 0x3c, 0xab, 0xe2, 0xff, 0xbe, 0x6c, 0x2b, 0xbd, 0xc9, 0xfc, 0xcf, 0x7b, 0x22, 0x7f, 0x4f, - 0x1e, 0xdd, 0xbb, 0x7d, 0xb4, 0xd6, 0xd6, 0x95, 0xd9, 0xbe, 0xf2, 0x2b, 0xf1, 0x1f, 0xc5, 0xbf, 0x12, 0x37, 0x2d, 0x4a, - 0x6f, 0x06, 0xf6, 0x9e, 0xac, 0x6d, 0x7b, 0xe3, 0xbf, 0x7b, 0xdf, 0x9f, 0x33, 0xe2, 0xff, 0xfd, 0x3c, 0xba, 0xab, 0xe6, - 0x70, 0xbd, 0x7d, 0xe5, 0xef, 0xee, 0xff, 0xef, 0x5b, 0xc9, 0x1d, 0xf5, 0x63, 0xa6, 0xa7, 0x7f, 0xb3, 0xff, 0x7f, 0xef, - 0xe7, 0xef, 0xc6, 0x7f, 0x57, 0x6d, 0x8f, 0x8d, 0x23, 0x93, 0x6a, 0x5f, 0xb9, 0x73, 0x95, 0x6c, 0xf7, 0xfc, 0x7f, 0xd5, - 0x37, 0x1b, 0xe9, 0xd1, 0x44, 0x1c, 0x1b, 0xff, 0x33, 0xab, 0x90, 0xeb, 0xc6, 0x0b, 0xef, 0x8c, 0xff, 0x6b, 0xfb, 0xdb, - 0x56, 0x76, 0x05, 0x3c, 0xad, 0xff, 0xdf, 0x75, 0x97, 0x6c, 0x6c, 0x8e, 0xc9, 0xbd, 0xc7, 0xea, 0xdc, 0xa5, 0x2e, 0x9f, - 0xbf, 0x3f, 0x9a, 0x47, 0x78, 0x5f, 0x8f, 0xff, 0xfa, 0x2a, 0xff, 0x68, 0x5a, 0x95, 0x7c, 0x6f, 0xfc, 0xbf, 0x7b, 0xa7, - 0x93, 0xca, 0x51, 0x7a, 0xda, 0xdf, 0x67, 0x77, 0x85, 0x7b, 0x7b, 0x81, 0x9f, 0xef, 0x36, 0x44, 0x53, 0xcf, 0xd1, 0x95, - 0xbf, 0xff, 0xcf, 0x73, 0xcb, 0xef, 0x78, 0x96, 0xbf, 0x13, 0x1f, 0xc9, 0xfd, 0xf4, 0xdf, 0x88, 0xff, 0xca, 0x91, 0x2b, - 0xff, 0x2b, 0x7b, 0x0d, 0x3b, 0xe3, 0xff, 0xbd, 0x16, 0x40, 0xde, 0x4d, 0x38, 0x71, 0x14, 0x03, 0xfc, 0x9e, 0x16, 0xc0, - 0x0e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xee, 0x37, 0xb1, 0x7f, 0xce, - 0xcd, 0x55, 0xc9, 0x1a, 0x9f, 0x7f, 0x4f, 0x7a, 0x67, 0xc6, 0xfc, 0x71, 0x93, 0x85, 0xec, 0xfa, 0xb7, 0xfe, 0xfc, 0xa4, - 0x23, 0x1f, 0x6f, 0x34, 0xbe, 0xb5, 0x9e, 0xc9, 0xe5, 0x1d, 0x85, 0x6c, 0x03, 0x57, 0x6f, 0xc6, 0xe6, 0xae, 0x41, 0xee, - 0x18, 0xd1, 0x9e, 0xcf, 0x2c, 0xd2, 0xd9, 0x63, 0xfe, 0xf7, 0x9c, 0x9f, 0x67, 0xfa, 0x8d, 0xf2, 0x9b, 0xc6, 0x77, 0xb9, - 0xcc, 0xf2, 0xf9, 0x11, 0x2a, 0x39, 0xf3, 0xf2, 0x79, 0x36, 0x4f, 0xcf, 0x98, 0x3f, 0x9f, 0x79, 0x27, 0x6e, 0xea, 0xe4, - 0xf3, 0x5a, 0xfa, 0x24, 0x73, 0x44, 0x4f, 0x06, 0xa1, 0xda, 0x37, 0x8e, 0xe9, 0xda, 0x5a, 0xb9, 0xde, 0x99, 0x23, 0xc4, - 0xf4, 0xfb, 0xfc, 0x95, 0xfa, 0x1e, 0x93, 0xd7, 0xbd, 0xfe, 0x8d, 0x67, 0xb2, 0x10, 0x44, 0xa9, 0xa7, 0xeb, 0x2c, 0xc1, - 0xeb, 0x4f, 0xf2, 0x19, 0x33, 0xe3, 0x61, 0x7c, 0x75, 0xff, 0x74, 0x24, 0xdb, 0x9b, 0x4a, 0xbe, 0xba, 0x99, 0x5d, 0x33, - 0xe6, 0xc6, 0x88, 0xe3, 0x22, 0xbb, 0x52, 0x3e, 0xfa, 0x7f, 0xee, 0x6f, 0x62, 0x32, 0xfe, 0xa3, 0x98, 0x59, 0xa8, 0x1e, - 0x23, 0xd9, 0xf8, 0x9f, 0xbf, 0x0a, 0xbb, 0xe2, 0xbf, 0x92, 0xf5, 0xe0, 0xfd, 0x8c, 0xd9, 0xb5, 0x9e, 0x70, 0x6f, 0xfc, - 0xc7, 0x83, 0xf6, 0x6b, 0xa4, 0xe7, 0x2f, 0xa3, 0x90, 0xe1, 0xfc, 0xf9, 0xec, 0x22, 0x5a, 0xfb, 0xff, 0x71, 0x59, 0x26, - 0xf1, 0xc2, 0xf8, 0xbf, 0xb6, 0xdf, 0x5b, 0x2e, 0xfe, 0x67, 0x5a, 0xa7, 0xfd, 0xfd, 0x7f, 0xad, 0x5f, 0x3b, 0xb9, 0xff, - 0x7f, 0x27, 0x63, 0x76, 0x14, 0xe6, 0xd9, 0x95, 0xe3, 0xc6, 0xe4, 0xc8, 0xe0, 0xd9, 0x5c, 0x30, 0x1a, 0xe6, 0xab, 0x1d, - 0xf1, 0xdf, 0x3f, 0xc2, 0xae, 0xcc, 0xad, 0x6a, 0xfd, 0x7f, 0xb4, 0xce, 0xff, 0x23, 0xdd, 0xce, 0xcf, 0xc5, 0x7f, 0xe7, - 0x6e, 0x4b, 0x2b, 0x32, 0xe6, 0xe6, 0x77, 0x76, 0x7c, 0xab, 0xff, 0x1f, 0xa5, 0xfe, 0xbf, 0xd6, 0x7b, 0xcd, 0xd4, 0xca, - 0xd8, 0x90, 0xeb, 0x2e, 0x37, 0xfe, 0x5f, 0x3d, 0xca, 0xce, 0xcf, 0x28, 0x63, 0x53, 0xfb, 0xd4, 0x3d, 0xf7, 0xab, 0x45, - 0x4b, 0xa4, 0xc7, 0xd7, 0x3b, 0x33, 0xe6, 0x56, 0xd6, 0x9e, 0xcf, 0x8f, 0xff, 0xce, 0x3d, 0x4c, 0x2a, 0x77, 0x17, 0xa2, - 0xa1, 0x6f, 0x5e, 0xdd, 0xff, 0xcf, 0xce, 0xff, 0x2b, 0xb9, 0xf4, 0xf7, 0xac, 0xff, 0x8d, 0xa5, 0x6b, 0x3f, 0xd1, 0x7a, - 0x3f, 0x71, 0x1c, 0xd0, 0x7e, 0x77, 0x66, 0x89, 0x7f, 0x63, 0xfe, 0xdf, 0x95, 0x81, 0x7d, 0x94, 0xef, 0x09, 0xd5, 0xd7, - 0xff, 0x67, 0x6b, 0x60, 0x1c, 0xd3, 0xf7, 0x8f, 0xc7, 0x7b, 0xe8, 0xc4, 0x4b, 0xd1, 0x7f, 0x5a, 0xfc, 0x9f, 0xf2, 0x44, - 0x43, 0x47, 0xbb, 0x15, 0x2d, 0xad, 0x5b, 0x65, 0xdf, 0x96, 0xce, 0x71, 0xd4, 0xfc, 0xfc, 0x7f, 0xcd, 0xba, 0xfa, 0x1b, - 0xc7, 0x98, 0xb9, 0x23, 0x3b, 0x1f, 0xff, 0xb1, 0xbc, 0xe4, 0xe4, 0x23, 0xfe, 0x4e, 0x2b, 0x75, 0xde, 0xf1, 0xfe, 0xe6, - 0xda, 0x13, 0x1b, 0x9f, 0xb5, 0x13, 0xa1, 0xc4, 0xd1, 0xf3, 0x21, 0xd7, 0x03, 0xfe, 0xe6, 0xf9, 0xd0, 0xdf, 0xfa, 0x1c, - 0xbc, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x7d, 0x3b, 0xa4, 0x92, 0x59, - 0x72, 0x34, 0xbf, 0x8b, 0x9e, 0xcf, 0xad, 0x5f, 0x3d, 0xbb, 0xbb, 0xf7, 0xa5, 0x6b, 0xf9, 0x79, 0x6b, 0xe5, 0x34, 0x97, - 0x8f, 0x28, 0x97, 0x53, 0xed, 0x7e, 0xff, 0x83, 0x38, 0xf2, 0x6a, 0xde, 0x65, 0x75, 0x8d, 0x42, 0x3e, 0xd5, 0xce, 0xeb, - 0x35, 0x4a, 0x65, 0xb7, 0xab, 0x96, 0x3d, 0x7f, 0x3b, 0x34, 0x36, 0xbc, 0x4f, 0x59, 0x8b, 0x85, 0x5a, 0x6e, 0xc3, 0xb9, - 0xdc, 0x61, 0xb1, 0xf8, 0x9b, 0xe5, 0xca, 0x6f, 0x7e, 0x3f, 0x89, 0xfb, 0x6c, 0xab, 0xf1, 0xb9, 0xab, 0x59, 0xcd, 0xf8, - 0xde, 0x7d, 0xbd, 0xea, 0xb5, 0xe5, 0x84, 0x5a, 0xb6, 0x7e, 0x67, 0x89, 0x37, 0xde, 0x6e, 0xad, 0x66, 0xc4, 0x8d, 0xcf, - 0xbf, 0x73, 0x1a, 0x1f, 0xcd, 0x05, 0x50, 0xcb, 0x13, 0xb9, 0xeb, 0x5b, 0x55, 0x8e, 0x14, 0xa5, 0x3d, 0x9b, 0xc6, 0xf6, - 0xec, 0x10, 0xf9, 0xec, 0xe7, 0xa3, 0x94, 0xef, 0xb3, 0xfb, 0x93, 0xca, 0x15, 0xa9, 0xc7, 0xff, 0x55, 0x39, 0x55, 0x3e, - 0x99, 0xed, 0xff, 0xc7, 0xf2, 0x7d, 0x18, 0x4e, 0xb9, 0x9a, 0x77, 0xfd, 0x7f, 0xb4, 0xed, 0x98, 0xb4, 0xf7, 0x93, 0x1d, - 0xe5, 0xda, 0x11, 0x0b, 0xbb, 0xf6, 0xfb, 0x8b, 0x74, 0xad, 0x18, 0xe9, 0x1c, 0x7b, 0xf5, 0xd9, 0xd7, 0xae, 0x4f, 0x56, - 0xc4, 0x7f, 0x5c, 0xcc, 0x93, 0xbb, 0x77, 0x1d, 0xeb, 0xbe, 0x9a, 0x4f, 0x5a, 0x86, 0x2f, 0xc6, 0xff, 0x8e, 0xf8, 0x99, - 0x9d, 0xff, 0x47, 0x79, 0x37, 0x9d, 0x33, 0x6b, 0x4c, 0x3c, 0xcc, 0xe8, 0xfc, 0xdb, 0xe2, 0x7f, 0x6f, 0x19, 0x77, 0xb7, - 0xe6, 0xd7, 0x23, 0xec, 0xf1, 0xd1, 0xf8, 0x9f, 0xdd, 0xef, 0x6d, 0x7e, 0xee, 0x7a, 0xbf, 0xfe, 0xdf, 0xb9, 0xb2, 0x71, - 0x46, 0xfc, 0x9f, 0x12, 0xe5, 0xb9, 0x32, 0x5f, 0x1b, 0xff, 0xef, 0xc7, 0x50, 0x57, 0x1f, 0xf6, 0xde, 0xb9, 0x47, 0xdb, - 0xfc, 0xff, 0x7e, 0x97, 0xe4, 0xdc, 0xdd, 0x9d, 0xbd, 0xab, 0x49, 0x3b, 0x4b, 0xbd, 0x73, 0xcf, 0xe1, 0xa7, 0x63, 0x87, - 0xee, 0xf9, 0xee, 0x19, 0xfd, 0x7f, 0x88, 0xff, 0x05, 0x6b, 0xe1, 0x27, 0xf4, 0x92, 0xab, 0xee, 0xe5, 0xe5, 0xb3, 0xd8, - 0xf7, 0x7e, 0x32, 0x5b, 0x52, 0xf9, 0xfb, 0xff, 0x5f, 0x1f, 0xff, 0x3f, 0xd9, 0xe1, 0xe7, 0x5b, 0xf1, 0x1f, 0xc5, 0x15, - 0xc5, 0x33, 0xe2, 0x3f, 0x36, 0x8e, 0x6a, 0x57, 0xdc, 0xcb, 0x3f, 0x79, 0xfc, 0xdf, 0xbf, 0x13, 0xd4, 0xd7, 0xe3, 0xff, - 0x0b, 0x63, 0xe8, 0x35, 0x4f, 0xa1, 0xbc, 0x17, 0xff, 0x73, 0x77, 0x86, 0x4f, 0x1e, 0xff, 0x9f, 0x1e, 0xff, 0xb3, 0x57, - 0x25, 0x36, 0xcd, 0xff, 0x9f, 0x8e, 0x34, 0x7e, 0x7f, 0xfc, 0x8f, 0xad, 0x7b, 0xf7, 0xd7, 0xe7, 0x9b, 0xe3, 0xd0, 0x67, - 0x61, 0xce, 0x79, 0x8a, 0xe3, 0xfd, 0x99, 0xcd, 0xfc, 0xae, 0xa8, 0xeb, 0xef, 0xff, 0x8f, 0x65, 0xfd, 0x7f, 0xef, 0x93, - 0x2d, 0xbb, 0xee, 0xff, 0xef, 0x7d, 0xa2, 0xa8, 0xfb, 0x0c, 0xc5, 0xff, 0x37, 0xda, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x73, 0xf2, 0x2b, 0x72, 0xeb, 0xf7, 0xe7, 0xc3, 0x38, 0x3d, 0xb7, 0xfe, - 0xdd, 0xfb, 0x33, 0xe3, 0xd8, 0xdc, 0xfa, 0xe3, 0x51, 0x8e, 0xa2, 0xef, 0xe5, 0xd6, 0xf7, 0xee, 0xc7, 0xd3, 0xb7, 0x64, - 0xd6, 0xe5, 0xd6, 0xef, 0x7b, 0x87, 0xfa, 0xf4, 0xdc, 0xfa, 0xe3, 0x26, 0x13, 0xd1, 0xc9, 0xb9, 0xf5, 0xeb, 0x6f, 0x51, - 0x9d, 0x9a, 0x5b, 0x9f, 0xb5, 0xef, 0x4e, 0x3e, 0x6d, 0xfb, 0xe3, 0xc5, 0x6b, 0xf6, 0x46, 0x36, 0x84, 0x93, 0x6b, 0x64, - 0x3e, 0x5b, 0xd3, 0x8a, 0x16, 0xa5, 0xf3, 0x7d, 0xcd, 0xb3, 0x73, 0xeb, 0x7f, 0x3d, 0xc6, 0xeb, 0xd9, 0x58, 0xa3, 0x9c, - 0xf3, 0xbe, 0xef, 0x5d, 0xed, 0x48, 0x8d, 0x1b, 0xd7, 0xe6, 0xd6, 0xba, 0x6e, 0x47, 0xcf, 0xdd, 0x29, 0xe1, 0xdb, 0xb9, - 0xb5, 0xc5, 0x7f, 0x4f, 0xab, 0x1b, 0x4d, 0x51, 0xf7, 0xf4, 0x93, 0x7d, 0x59, 0x83, 0xfa, 0xe2, 0x3f, 0xda, 0x3f, 0xdb, - 0x9b, 0x5b, 0xab, 0xba, 0x9e, 0x20, 0xfe, 0x7f, 0x57, 0x3b, 0x90, 0x99, 0xd1, 0x3e, 0x29, 0xf7, 0x37, 0x6b, 0xc0, 0xce, - 0xdc, 0x5a, 0x5f, 0x8f, 0xff, 0x4a, 0xff, 0x20, 0xfe, 0x7f, 0xcf, 0xf8, 0xbf, 0xaf, 0x2f, 0xaf, 0xaf, 0xff, 0x7f, 0x79, - 0x6f, 0xad, 0xdf, 0x19, 0xff, 0x67, 0xe4, 0xd6, 0x15, 0xff, 0xef, 0x8c, 0xff, 0x6b, 0xfb, 0x13, 0xac, 0x58, 0xcd, 0xed, - 0x9d, 0x4d, 0x88, 0xff, 0xd5, 0x75, 0xe7, 0xa4, 0x9d, 0x21, 0xc4, 0x78, 0x7d, 0xfe, 0x5f, 0xdb, 0x13, 0xb4, 0xda, 0x02, - 0xec, 0xcb, 0xd5, 0xfa, 0x46, 0x6e, 0x7d, 0xb9, 0x75, 0x67, 0xae, 0xd7, 0xf5, 0xe8, 0xef, 0x9b, 0xf7, 0x63, 0x4e, 0x1f, - 0xff, 0xf7, 0xde, 0xab, 0xf9, 0xff, 0x35, 0xa5, 0xd5, 0x2b, 0xde, 0xab, 0xc6, 0xff, 0x2b, 0xda, 0xd8, 0x37, 0x4b, 0x63, - 0xcd, 0xbd, 0xa3, 0xfe, 0x33, 0x8c, 0xa6, 0xd1, 0x1f, 0xef, 0xb4, 0x1a, 0xb0, 0x66, 0x9c, 0xf1, 0x7e, 0x4b, 0x08, 0x7c, - 0xed, 0x49, 0x2e, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x93, 0xfc, 0xfb, 0x9f, 0x72, 0x00, 0xf1, 0x0f, 0xfc, 0x75, 0xf1, 0xff, 0x2f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle darkFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 1 , 9 }, - { 25, 4, 3 , 3 }, - { 36, 4, 6 , 9 }, - { 50, 4, 5 , 13 }, - { 63, 4, 7 , 9 }, - { 78, 4, 5 , 9 }, - { 91, 4, 1 , 3 }, - { 100, 4, 3 , 9 }, - { 111, 4, 3 , 9 }, - { 122, 4, 5 , 5 }, - { 135, 4, 5 , 5 }, - { 148, 4, 2 , 3 }, - { 158, 4, 4 , 1 }, - { 170, 4, 1 , 1 }, - { 179, 4, 3 , 9 }, - { 190, 4, 5 , 9 }, - { 203, 4, 3 , 9 }, - { 214, 4, 5 , 9 }, - { 227, 4, 5 , 9 }, - { 240, 4, 5 , 9 }, - { 253, 4, 5 , 9 }, - { 266, 4, 5 , 9 }, - { 279, 4, 5 , 9 }, - { 292, 4, 5 , 9 }, - { 305, 4, 5 , 9 }, - { 318, 4, 1 , 7 }, - { 327, 4, 2 , 9 }, - { 337, 4, 3 , 5 }, - { 348, 4, 4 , 3 }, - { 360, 4, 3 , 5 }, - { 371, 4, 5 , 9 }, - { 384, 4, 7 , 9 }, - { 399, 4, 5 , 9 }, - { 412, 4, 5 , 9 }, - { 425, 4, 5 , 9 }, - { 438, 4, 5 , 9 }, - { 451, 4, 5 , 9 }, - { 464, 4, 5 , 9 }, - { 477, 4, 5 , 9 }, - { 490, 4, 5 , 9 }, - { 4, 28, 1 , 9 }, - { 13, 28, 5 , 9 }, - { 26, 28, 5 , 9 }, - { 39, 28, 5 , 9 }, - { 52, 28, 7 , 9 }, - { 67, 28, 5 , 9 }, - { 80, 28, 5 , 9 }, - { 93, 28, 5 , 9 }, - { 106, 28, 5 , 9 }, - { 119, 28, 5 , 9 }, - { 132, 28, 5 , 9 }, - { 145, 28, 5 , 9 }, - { 158, 28, 5 , 9 }, - { 171, 28, 5 , 9 }, - { 184, 28, 7 , 9 }, - { 199, 28, 5 , 9 }, - { 212, 28, 5 , 9 }, - { 225, 28, 5 , 9 }, - { 238, 28, 3 , 9 }, - { 249, 28, 3 , 9 }, - { 260, 28, 3 , 9 }, - { 271, 28, 5 , 3 }, - { 284, 28, 5 , 1 }, - { 297, 28, 2 , 2 }, - { 307, 28, 5 , 7 }, - { 320, 28, 5 , 9 }, - { 333, 28, 5 , 7 }, - { 346, 28, 5 , 9 }, - { 359, 28, 5 , 7 }, - { 372, 28, 4 , 9 }, - { 384, 28, 5 , 9 }, - { 397, 28, 5 , 9 }, - { 410, 28, 1 , 9 }, - { 419, 28, 5 , 11 }, - { 432, 28, 5 , 9 }, - { 445, 28, 2 , 9 }, - { 455, 28, 7 , 7 }, - { 470, 28, 5 , 7 }, - { 483, 28, 5 , 7 }, - { 496, 28, 5 , 9 }, - { 4, 52, 5 , 9 }, - { 17, 52, 5 , 7 }, - { 30, 52, 5 , 7 }, - { 43, 52, 4 , 8 }, - { 55, 52, 5 , 7 }, - { 68, 52, 5 , 7 }, - { 81, 52, 7 , 7 }, - { 96, 52, 5 , 7 }, - { 109, 52, 5 , 9 }, - { 122, 52, 5 , 7 }, - { 135, 52, 4 , 9 }, - { 147, 52, 1 , 9 }, - { 156, 52, 4 , 9 }, - { 168, 52, 6 , 2 }, - { 182, 52, 1 , 9 }, - { 191, 52, 5 , 11 }, - { 204, 52, 6 , 9 }, - { 218, 52, 6 , 9 }, - { 232, 52, 5 , 9 }, - { 245, 52, 5 , 12 }, - { 258, 52, 0 , 0 }, - { 266, 52, 5 , 10 }, - { 279, 52, 7 , 9 }, - { 294, 52, 0 , 0 }, - { 302, 52, 6 , 5 }, - { 316, 52, 5 , 3 }, - { 329, 52, 7 , 9 }, - { 344, 52, 0 , 0 }, - { 352, 52, 4 , 4 }, - { 364, 52, 5 , 7 }, - { 377, 52, 0 , 0 }, - { 385, 52, 0 , 0 }, - { 393, 52, 5 , 12 }, - { 406, 52, 5 , 9 }, - { 419, 52, 7 , 9 }, - { 434, 52, 1 , 1 }, - { 443, 52, 5 , 10 }, - { 456, 52, 0 , 0 }, - { 464, 52, 0 , 0 }, - { 472, 52, 6 , 5 }, - { 486, 52, 9 , 9 }, - { 4, 76, 9 , 7 }, - { 21, 76, 5 , 11 }, - { 34, 76, 5 , 9 }, - { 47, 76, 5 , 12 }, - { 60, 76, 5 , 12 }, - { 73, 76, 5 , 12 }, - { 86, 76, 6 , 12 }, - { 100, 76, 5 , 11 }, - { 113, 76, 5 , 13 }, - { 126, 76, 9 , 9 }, - { 143, 76, 5 , 12 }, - { 156, 76, 5 , 12 }, - { 169, 76, 5 , 12 }, - { 182, 76, 5 , 12 }, - { 195, 76, 5 , 11 }, - { 208, 76, 2 , 12 }, - { 218, 76, 2 , 12 }, - { 228, 76, 3 , 12 }, - { 239, 76, 3 , 11 }, - { 250, 76, 6 , 9 }, - { 264, 76, 6 , 12 }, - { 278, 76, 5 , 12 }, - { 291, 76, 5 , 12 }, - { 304, 76, 5 , 12 }, - { 317, 76, 6 , 12 }, - { 331, 76, 5 , 11 }, - { 344, 76, 5 , 5 }, - { 357, 76, 7 , 9 }, - { 372, 76, 5 , 12 }, - { 385, 76, 5 , 12 }, - { 398, 76, 5 , 12 }, - { 411, 76, 5 , 11 }, - { 424, 76, 5 , 12 }, - { 437, 76, 5 , 9 }, - { 450, 76, 5 , 9 }, - { 463, 76, 5 , 10 }, - { 476, 76, 5 , 10 }, - { 489, 76, 5 , 10 }, - { 4, 100, 6 , 10 }, - { 18, 100, 5 , 9 }, - { 31, 100, 5 , 11 }, - { 44, 100, 9 , 7 }, - { 61, 100, 5 , 10 }, - { 74, 100, 5 , 10 }, - { 87, 100, 5 , 10 }, - { 100, 100, 5 , 10 }, - { 113, 100, 5 , 9 }, - { 126, 100, 2 , 10 }, - { 136, 100, 2 , 10 }, - { 146, 100, 3 , 10 }, - { 157, 100, 3 , 9 }, - { 168, 100, 6 , 9 }, - { 182, 100, 6 , 10 }, - { 196, 100, 5 , 10 }, - { 209, 100, 5 , 10 }, - { 222, 100, 5 , 10 }, - { 235, 100, 6 , 10 }, - { 249, 100, 5 , 9 }, - { 262, 100, 5 , 5 }, - { 275, 100, 7 , 7 }, - { 290, 100, 5 , 10 }, - { 303, 100, 5 , 10 }, - { 316, 100, 5 , 10 }, - { 329, 100, 5 , 9 }, - { 342, 100, 5 , 12 }, - { 355, 100, 5 , 11 }, - { 368, 100, 5 , 11 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo darkFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 2, 4, 5, { 0 }}, - { 34, 2, 4, 7, { 0 }}, - { 35, 1, 4, 8, { 0 }}, - { 36, 1, 2, 7, { 0 }}, - { 37, 1, 4, 9, { 0 }}, - { 38, 1, 4, 7, { 0 }}, - { 39, 2, 4, 5, { 0 }}, - { 40, 3, 4, 7, { 0 }}, - { 41, 1, 4, 7, { 0 }}, - { 42, 1, 4, 7, { 0 }}, - { 43, 1, 6, 7, { 0 }}, - { 44, 1, 12, 5, { 0 }}, - { 45, 1, 8, 6, { 0 }}, - { 46, 2, 12, 5, { 0 }}, - { 47, 1, 4, 5, { 0 }}, - { 48, 1, 4, 7, { 0 }}, - { 49, 2, 4, 7, { 0 }}, - { 50, 1, 4, 7, { 0 }}, - { 51, 1, 4, 7, { 0 }}, - { 52, 1, 4, 7, { 0 }}, - { 53, 1, 4, 7, { 0 }}, - { 54, 1, 4, 7, { 0 }}, - { 55, 1, 4, 7, { 0 }}, - { 56, 1, 4, 7, { 0 }}, - { 57, 1, 4, 7, { 0 }}, - { 58, 2, 6, 5, { 0 }}, - { 59, 1, 6, 5, { 0 }}, - { 60, 1, 6, 5, { 0 }}, - { 61, 1, 7, 6, { 0 }}, - { 62, 1, 6, 5, { 0 }}, - { 63, 1, 4, 7, { 0 }}, - { 64, 1, 4, 9, { 0 }}, - { 65, 1, 4, 7, { 0 }}, - { 66, 1, 4, 7, { 0 }}, - { 67, 1, 4, 7, { 0 }}, - { 68, 1, 4, 7, { 0 }}, - { 69, 1, 4, 7, { 0 }}, - { 70, 1, 4, 7, { 0 }}, - { 71, 1, 4, 7, { 0 }}, - { 72, 1, 4, 7, { 0 }}, - { 73, 2, 4, 5, { 0 }}, - { 74, 1, 4, 7, { 0 }}, - { 75, 1, 4, 7, { 0 }}, - { 76, 1, 4, 7, { 0 }}, - { 77, 1, 4, 9, { 0 }}, - { 78, 1, 4, 7, { 0 }}, - { 79, 1, 4, 7, { 0 }}, - { 80, 1, 4, 7, { 0 }}, - { 81, 1, 4, 7, { 0 }}, - { 82, 1, 4, 7, { 0 }}, - { 83, 1, 4, 7, { 0 }}, - { 84, 1, 4, 7, { 0 }}, - { 85, 1, 4, 7, { 0 }}, - { 86, 1, 4, 7, { 0 }}, - { 87, 1, 4, 9, { 0 }}, - { 88, 1, 4, 7, { 0 }}, - { 89, 1, 4, 7, { 0 }}, - { 90, 1, 4, 7, { 0 }}, - { 91, 3, 4, 7, { 0 }}, - { 92, 1, 4, 5, { 0 }}, - { 93, 1, 4, 7, { 0 }}, - { 94, 1, 4, 7, { 0 }}, - { 95, 0, 14, 5, { 0 }}, - { 96, 1, 4, 5, { 0 }}, - { 97, 1, 6, 7, { 0 }}, - { 98, 1, 4, 7, { 0 }}, - { 99, 1, 6, 7, { 0 }}, - { 100, 1, 4, 7, { 0 }}, - { 101, 1, 6, 7, { 0 }}, - { 102, 1, 4, 6, { 0 }}, - { 103, 1, 6, 7, { 0 }}, - { 104, 1, 4, 7, { 0 }}, - { 105, 2, 4, 5, { 0 }}, - { 106, 1, 4, 7, { 0 }}, - { 107, 1, 4, 7, { 0 }}, - { 108, 2, 4, 5, { 0 }}, - { 109, 1, 6, 9, { 0 }}, - { 110, 1, 6, 7, { 0 }}, - { 111, 1, 6, 7, { 0 }}, - { 112, 1, 6, 7, { 0 }}, - { 113, 1, 6, 7, { 0 }}, - { 114, 1, 6, 7, { 0 }}, - { 115, 1, 6, 7, { 0 }}, - { 116, 1, 5, 6, { 0 }}, - { 117, 1, 6, 7, { 0 }}, - { 118, 1, 6, 7, { 0 }}, - { 119, 1, 6, 9, { 0 }}, - { 120, 1, 6, 7, { 0 }}, - { 121, 1, 6, 7, { 0 }}, - { 122, 1, 6, 7, { 0 }}, - { 123, 2, 4, 7, { 0 }}, - { 124, 2, 4, 5, { 0 }}, - { 125, 1, 4, 7, { 0 }}, - { 126, 1, 4, 8, { 0 }}, - { 161, 2, 6, 5, { 0 }}, - { 162, 1, 4, 7, { 0 }}, - { 163, 1, 4, 8, { 0 }}, - { 8364, 1, 4, 8, { 0 }}, - { 165, 1, 4, 7, { 0 }}, - { 352, 1, 1, 7, { 0 }}, - { 167, 0, 0, 0, { 0 }}, - { 353, 1, 3, 7, { 0 }}, - { 169, 1, 4, 9, { 0 }}, - { 170, 0, 0, 0, { 0 }}, - { 171, 1, 6, 8, { 0 }}, - { 172, 1, 8, 7, { 0 }}, - { 174, 1, 4, 9, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 1, 4, 6, { 0 }}, - { 177, 1, 6, 7, { 0 }}, - { 178, 0, 0, 0, { 0 }}, - { 179, 0, 0, 0, { 0 }}, - { 381, 1, 1, 7, { 0 }}, - { 181, 1, 6, 7, { 0 }}, - { 182, 1, 4, 9, { 0 }}, - { 183, 2, 8, 5, { 0 }}, - { 382, 1, 3, 7, { 0 }}, - { 185, 0, 0, 0, { 0 }}, - { 186, 0, 0, 0, { 0 }}, - { 187, 1, 6, 8, { 0 }}, - { 338, 1, 4, 11, { 0 }}, - { 339, 1, 6, 11, { 0 }}, - { 376, 1, 2, 7, { 0 }}, - { 191, 1, 6, 7, { 0 }}, - { 192, 1, 1, 7, { 0 }}, - { 193, 1, 1, 7, { 0 }}, - { 194, 1, 1, 7, { 0 }}, - { 195, 1, 1, 7, { 0 }}, - { 196, 1, 2, 7, { 0 }}, - { 197, 1, 0, 7, { 0 }}, - { 198, 1, 4, 11, { 0 }}, - { 199, 1, 4, 7, { 0 }}, - { 200, 1, 1, 7, { 0 }}, - { 201, 1, 1, 7, { 0 }}, - { 202, 1, 1, 7, { 0 }}, - { 203, 1, 2, 7, { 0 }}, - { 204, 1, 1, 5, { 0 }}, - { 205, 2, 1, 5, { 0 }}, - { 206, 1, 1, 5, { 0 }}, - { 207, 1, 2, 5, { 0 }}, - { 208, 0, 4, 7, { 0 }}, - { 209, 1, 1, 7, { 0 }}, - { 210, 1, 1, 7, { 0 }}, - { 211, 1, 1, 7, { 0 }}, - { 212, 1, 1, 7, { 0 }}, - { 213, 1, 1, 7, { 0 }}, - { 214, 1, 2, 7, { 0 }}, - { 215, 1, 6, 7, { 0 }}, - { 216, 0, 4, 7, { 0 }}, - { 217, 1, 1, 7, { 0 }}, - { 218, 1, 1, 7, { 0 }}, - { 219, 1, 1, 7, { 0 }}, - { 220, 1, 2, 7, { 0 }}, - { 221, 1, 1, 7, { 0 }}, - { 222, 1, 4, 7, { 0 }}, - { 223, 1, 4, 7, { 0 }}, - { 224, 1, 3, 7, { 0 }}, - { 225, 1, 3, 7, { 0 }}, - { 226, 1, 3, 7, { 0 }}, - { 227, 1, 3, 7, { 0 }}, - { 228, 1, 4, 7, { 0 }}, - { 229, 1, 2, 7, { 0 }}, - { 230, 1, 6, 11, { 0 }}, - { 231, 1, 6, 7, { 0 }}, - { 232, 1, 3, 7, { 0 }}, - { 233, 1, 3, 7, { 0 }}, - { 234, 1, 3, 7, { 0 }}, - { 235, 1, 4, 7, { 0 }}, - { 236, 1, 3, 5, { 0 }}, - { 237, 2, 3, 5, { 0 }}, - { 238, 1, 3, 5, { 0 }}, - { 239, 1, 4, 5, { 0 }}, - { 240, 1, 4, 7, { 0 }}, - { 241, 1, 3, 7, { 0 }}, - { 242, 1, 3, 7, { 0 }}, - { 243, 1, 3, 7, { 0 }}, - { 244, 1, 3, 7, { 0 }}, - { 245, 1, 3, 7, { 0 }}, - { 246, 1, 4, 7, { 0 }}, - { 247, 1, 6, 7, { 0 }}, - { 248, 0, 6, 7, { 0 }}, - { 249, 1, 3, 7, { 0 }}, - { 250, 1, 3, 7, { 0 }}, - { 251, 1, 3, 7, { 0 }}, - { 252, 1, 4, 7, { 0 }}, - { 253, 1, 3, 7, { 0 }}, - { 254, 1, 4, 7, { 0 }}, - { 255, 1, 4, 7, { 0 }}, -}; - -// Style loading function: Dark -static void GuiLoadStyleDark(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < DARK_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(darkStyleProps[i].controlId, darkStyleProps[i].propertyId, darkStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int darkFontDataSize = 0; - unsigned char *data = DecompressData(darkFontData, DARK_STYLE_FONT_ATLAS_COMP_SIZE, &darkFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, darkFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, darkFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_enefete.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_enefete.h deleted file mode 100644 index 3d80d4b..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_enefete.h +++ /dev/null @@ -1,598 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleEnefete(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define ENEFETE_STYLE_PROPS_COUNT 17 - -// Custom style name: Enefete -static const GuiStyleProp enefeteStyleProps[ENEFETE_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x1980d5ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x4df3ebff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x103e60ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xe7e2f7ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x23d4ddff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xf1f1f1ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x6413a6ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xea66d9ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x9f00bbff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x4b909eff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x73c7d0ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x448894ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x1d3f6cff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x29c9e5ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "GMSN.ttf" (size: 16, spacing: 0) - -#define ENEFETE_STYLE_FONT_ATLAS_COMP_SIZE 2434 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char enefeteFontData[ENEFETE_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x5b, 0x6e, 0xe4, 0x36, 0x10, 0x05, 0x50, 0xee, 0x7f, 0xa1, 0xd9, 0x06, 0x83, 0x20, 0x18, 0x24, 0xe3, 0xb1, 0x45, - 0xb2, 0xaa, 0xa8, 0x57, 0x9f, 0x1c, 0xe4, 0xc7, 0x1a, 0xb7, 0xd5, 0x94, 0xae, 0x44, 0x3d, 0x58, 0xec, 0x0d, 0x00, 0x00, - 0x00, 0xf8, 0x78, 0xff, 0xfc, 0xf7, 0xfd, 0xcf, 0xbe, 0x5b, 0x72, 0xbc, 0xec, 0xd7, 0xbf, 0x18, 0x2d, 0xe9, 0x3f, 0xae, - 0x49, 0x3f, 0x58, 0x36, 0xf7, 0xb7, 0x62, 0xeb, 0xd5, 0x97, 0xda, 0xa6, 0x1f, 0xb4, 0x5a, 0x4b, 0xff, 0xbc, 0x1d, 0xb6, - 0x7d, 0x0f, 0xb4, 0x5e, 0x3b, 0x5c, 0xe7, 0x9f, 0x7f, 0x73, 0xbc, 0xa4, 0x72, 0x3d, 0x57, 0xda, 0xb4, 0x72, 0xfb, 0xac, - 0xb4, 0x60, 0x5b, 0x5e, 0x7a, 0xdc, 0x52, 0x6d, 0xaa, 0x1d, 0xc7, 0x9f, 0xdc, 0x6f, 0x92, 0xff, 0xe3, 0x6f, 0xf3, 0x2b, - 0x83, 0x47, 0x5b, 0x7f, 0x7e, 0xdf, 0x68, 0xd3, 0xc7, 0x84, 0xff, 0xfe, 0x76, 0x5d, 0x42, 0xb3, 0x9f, 0xd2, 0x87, 0x47, - 0xc2, 0x95, 0x16, 0x3a, 0x6e, 0xbd, 0x16, 0xca, 0xc4, 0xe8, 0x33, 0x23, 0xeb, 0x32, 0xb3, 0x6c, 0x6e, 0xfd, 0x62, 0xfb, - 0xfc, 0xf8, 0xf3, 0x8e, 0xf7, 0xb4, 0xa3, 0x2d, 0x3c, 0xda, 0x73, 0x8f, 0xbf, 0xdf, 0xfa, 0x56, 0xcd, 0xa4, 0x7e, 0x4f, - 0xfe, 0xfb, 0xff, 0x72, 0xd6, 0x83, 0x19, 0xcc, 0x9f, 0x1b, 0xd6, 0xcf, 0x0a, 0xc7, 0xc7, 0xac, 0x7d, 0x2d, 0x7c, 0xd4, - 0x4e, 0x3d, 0xb0, 0x0f, 0xaf, 0x6f, 0xb3, 0xe8, 0xdf, 0xd9, 0x91, 0xff, 0x8a, 0x14, 0xb7, 0x89, 0x33, 0x62, 0xa4, 0x4f, - 0x71, 0xdc, 0xe3, 0xcc, 0x27, 0x7c, 0xb4, 0x2e, 0x91, 0xfe, 0x4c, 0xbe, 0x2d, 0x57, 0xfb, 0x1c, 0xfb, 0xf2, 0x5f, 0x71, - 0xbe, 0x5d, 0x3f, 0x97, 0xec, 0x6b, 0xdf, 0x99, 0xf3, 0xf5, 0xfd, 0xf3, 0xbf, 0xfe, 0xdd, 0x2a, 0xf2, 0x5f, 0xb3, 0x55, - 0xd6, 0xf3, 0xdf, 0xe5, 0x7f, 0xfa, 0xfc, 0xff, 0x73, 0xab, 0xf7, 0xe0, 0xf5, 0x57, 0xfe, 0xaa, 0xbd, 0xaa, 0x9f, 0x7f, - 0x6d, 0xfe, 0x47, 0xd7, 0x83, 0x6d, 0x39, 0xff, 0xb1, 0xab, 0xcf, 0xc8, 0xd5, 0x46, 0x55, 0xff, 0x7f, 0x6f, 0xef, 0xe1, - 0xf8, 0xea, 0x31, 0x92, 0xf0, 0xb5, 0x7b, 0x1e, 0x35, 0x9f, 0x7c, 0x45, 0xfe, 0xdb, 0xc4, 0xda, 0xf4, 0xe1, 0xf5, 0xff, - 0xec, 0x11, 0x7e, 0x2d, 0xff, 0x75, 0xe7, 0x8e, 0x2b, 0xf3, 0xdf, 0x83, 0x77, 0xc4, 0xaa, 0xaf, 0xe3, 0xe3, 0xdf, 0x6d, - 0xed, 0xfe, 0xdc, 0x79, 0xd7, 0xff, 0xa3, 0x7e, 0x60, 0x26, 0xff, 0x9f, 0xd2, 0xff, 0x9f, 0xe9, 0x69, 0x8f, 0x5a, 0x71, - 0xfe, 0x78, 0x76, 0xc5, 0xd9, 0xfc, 0xda, 0xfc, 0xf7, 0xa9, 0x7b, 0xd8, 0xf7, 0xce, 0x7f, 0x5b, 0xbe, 0xca, 0xab, 0xdc, - 0x77, 0xa3, 0x7b, 0xd4, 0x68, 0xcf, 0x9d, 0x39, 0xaa, 0xdd, 0x33, 0xff, 0xb1, 0xfd, 0xb9, 0x0f, 0x7b, 0xf9, 0x3d, 0x91, - 0xff, 0xf6, 0x9a, 0xfc, 0xf7, 0xe0, 0xdd, 0x8e, 0x9f, 0xfb, 0x7b, 0xb1, 0xfb, 0x71, 0x91, 0x9e, 0x7c, 0xa6, 0x8f, 0x52, - 0x95, 0xff, 0x7b, 0x6c, 0x49, 0xe7, 0xff, 0x8a, 0xfb, 0xff, 0xed, 0xb0, 0x87, 0xff, 0x59, 0xf9, 0x3f, 0x7e, 0xfe, 0xd7, - 0x6e, 0xff, 0xac, 0x2e, 0x9a, 0xff, 0x9a, 0xfb, 0xff, 0xe7, 0x1f, 0xad, 0x67, 0xae, 0x5c, 0x73, 0xf9, 0xbf, 0xd3, 0xf3, - 0xbf, 0xbd, 0xf9, 0x1f, 0x3d, 0xf5, 0x7e, 0x53, 0xff, 0xbf, 0xf2, 0x3e, 0x7e, 0xfc, 0x9d, 0x9b, 0x7d, 0xef, 0x14, 0xb5, - 0xd0, 0x9b, 0x5c, 0xf7, 0x4c, 0x7f, 0xf4, 0x39, 0x50, 0xee, 0x2e, 0xdd, 0xd5, 0xef, 0xff, 0xd4, 0xb7, 0xe0, 0x79, 0xeb, - 0xd3, 0x6f, 0xdc, 0x67, 0xe4, 0x5d, 0x6f, 0xc9, 0xda, 0xbb, 0xce, 0x7c, 0x3e, 0x1b, 0xff, 0x5b, 0xb6, 0x0f, 0x3b, 0xcf, - 0x6c, 0x5a, 0xe2, 0x19, 0xf7, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0xe3, - 0x17, 0x22, 0x63, 0x0d, 0xa3, 0x75, 0x08, 0x6a, 0xeb, 0x21, 0xf4, 0x2f, 0x75, 0x58, 0x57, 0x3f, 0x7b, 0x76, 0xac, 0x65, - 0x66, 0x9c, 0x66, 0xed, 0xef, 0x56, 0x55, 0x96, 0xa8, 0x1d, 0x79, 0x3e, 0xae, 0x77, 0xb3, 0x5a, 0xad, 0x39, 0x56, 0x05, - 0x6d, 0xbd, 0xa6, 0x79, 0xa6, 0x0e, 0x5f, 0xf5, 0xd8, 0xea, 0x9a, 0xfa, 0x68, 0xf3, 0x63, 0xde, 0x6b, 0x2a, 0x8d, 0xd4, - 0xe5, 0x7f, 0x7d, 0x3b, 0xf4, 0x2f, 0xeb, 0xd1, 0x2f, 0xa8, 0xc4, 0x50, 0xbf, 0x74, 0xee, 0xe7, 0x77, 0xca, 0xff, 0xec, - 0x31, 0x38, 0xbb, 0xf7, 0xc6, 0x47, 0xdc, 0x8d, 0xaa, 0x4f, 0x5c, 0x5f, 0x5b, 0xa5, 0x15, 0xd5, 0x47, 0xad, 0xcf, 0x7f, - 0x3b, 0xe9, 0xfc, 0x1f, 0xcd, 0x7f, 0x1f, 0xce, 0x66, 0x73, 0xdf, 0xfc, 0xaf, 0xd7, 0x9d, 0xc8, 0xfe, 0xd5, 0xdc, 0x4c, - 0x0e, 0xf1, 0x5a, 0xe3, 0xf9, 0xfc, 0xe7, 0x2a, 0x05, 0x9d, 0x7b, 0x6e, 0xbd, 0x3e, 0xff, 0xd1, 0x16, 0xb9, 0x2a, 0xff, - 0xf1, 0xbd, 0xa4, 0x0f, 0xab, 0x59, 0xdf, 0x31, 0xff, 0xfd, 0xe3, 0xf3, 0x5f, 0x5f, 0xcb, 0x37, 0x9a, 0x80, 0x48, 0x1d, - 0xf4, 0x99, 0xeb, 0xea, 0xd5, 0x2b, 0xbb, 0xf8, 0x75, 0x57, 0xf4, 0xfc, 0x3f, 0xfa, 0xfd, 0x99, 0x6f, 0x72, 0x75, 0xfe, - 0xdb, 0x30, 0xe1, 0x3d, 0x91, 0xd2, 0xf8, 0x1d, 0x90, 0x4c, 0xcd, 0xab, 0x6b, 0xf2, 0xdf, 0x42, 0x33, 0x06, 0xc6, 0xcf, - 0xf3, 0x77, 0xcf, 0x7f, 0xf5, 0xb5, 0x41, 0xf4, 0x8e, 0x41, 0xf5, 0x3a, 0xde, 0xef, 0xfa, 0xbf, 0x17, 0xf4, 0x12, 0x77, - 0xe4, 0x3f, 0xdb, 0x3e, 0xd1, 0x34, 0xc5, 0xf2, 0x3f, 0x7f, 0x76, 0x8f, 0xcd, 0x26, 0x10, 0x5b, 0xf6, 0xde, 0xfc, 0xd7, - 0xd6, 0x4f, 0x5d, 0xbf, 0x57, 0xfc, 0xa6, 0xfc, 0x47, 0xaf, 0xff, 0xe7, 0xaf, 0xb8, 0xee, 0x95, 0xff, 0x36, 0x31, 0x3f, - 0xcf, 0xd9, 0xf9, 0x1f, 0x55, 0x5b, 0x7d, 0x5b, 0xfe, 0xa3, 0xd9, 0x8a, 0xce, 0x67, 0xd4, 0xc2, 0x67, 0xba, 0xb7, 0x9f, - 0xff, 0xdb, 0x4b, 0xf3, 0x1f, 0x9f, 0x5f, 0xe6, 0x59, 0xf9, 0xaf, 0xee, 0x35, 0x5c, 0x5f, 0x57, 0x2f, 0x7a, 0xb7, 0x31, - 0x7e, 0x97, 0xf2, 0xdd, 0xfd, 0xff, 0xbe, 0xa1, 0x17, 0x9e, 0x7d, 0xfe, 0x7f, 0x55, 0xfe, 0x77, 0x3d, 0xff, 0x6b, 0xd3, - 0x73, 0xfe, 0xed, 0x5a, 0x2b, 0xf9, 0xaf, 0xce, 0x7f, 0xe5, 0xdc, 0x89, 0x6b, 0xff, 0xa2, 0xfa, 0xfd, 0x9f, 0xfa, 0x3b, - 0x69, 0xfb, 0xdf, 0xff, 0xd9, 0xd3, 0x3e, 0x6d, 0x6a, 0xc6, 0xb4, 0xf5, 0xbf, 0xda, 0x26, 0x67, 0x35, 0x8e, 0xad, 0x73, - 0xfd, 0xdb, 0x37, 0x77, 0xcf, 0x7f, 0xec, 0x6d, 0x83, 0xe8, 0x6f, 0xc6, 0x7f, 0xe3, 0x3e, 0x73, 0x81, 0x7d, 0xe6, 0x5b, - 0x94, 0x5a, 0xa1, 0xba, 0x85, 0xb4, 0x2a, 0x8e, 0x00, 0xef, 0x7a, 0xcf, 0x7c, 0xd7, 0xbf, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbc, 0xd1, 0x2b, 0xb3, 0x35, 0xb7, 0xff, 0xfc, 0x69, 0x0f, 0x8d, 0x77, - 0xed, 0xc9, 0xdf, 0xeb, 0xcb, 0x75, 0x30, 0xd6, 0xc6, 0x9d, 0x56, 0xd4, 0x60, 0xa8, 0xae, 0x23, 0x35, 0x6e, 0x97, 0xd9, - 0x2d, 0x3d, 0x1e, 0x49, 0xbc, 0xba, 0x87, 0x44, 0xc6, 0xf5, 0x64, 0x2a, 0xea, 0x64, 0xe6, 0x12, 0x88, 0x57, 0x42, 0x6c, - 0x8b, 0x9f, 0x1a, 0xdb, 0x6a, 0x91, 0xf1, 0xe1, 0x3b, 0xf3, 0x1f, 0xab, 0x2d, 0x79, 0x45, 0xa5, 0xb5, 0xf8, 0xde, 0x54, - 0xbb, 0x86, 0xf5, 0xad, 0x32, 0xb7, 0xb6, 0xb9, 0x9f, 0x67, 0xc6, 0xf4, 0xe7, 0x6a, 0x0f, 0xac, 0xb6, 0x44, 0x9f, 0xaa, - 0x96, 0xb2, 0xfa, 0x9b, 0x3f, 0xff, 0xde, 0xf1, 0xb2, 0x3e, 0x55, 0x39, 0x62, 0xed, 0x53, 0xbf, 0xff, 0xb7, 0xfb, 0x2a, - 0x27, 0xbc, 0x23, 0xff, 0x2d, 0x70, 0x94, 0x3d, 0x37, 0xff, 0xf1, 0xe3, 0x54, 0x2b, 0xac, 0xd2, 0xb3, 0x3e, 0x37, 0x46, - 0x64, 0xe4, 0x6e, 0xbe, 0x46, 0xd0, 0x19, 0x15, 0x35, 0xfe, 0xcc, 0xd7, 0xca, 0x56, 0x9b, 0x4b, 0xff, 0xf7, 0xc7, 0xb8, - 0x76, 0xd0, 0xdb, 0x9a, 0xcd, 0x7f, 0x0f, 0xd4, 0x1e, 0xa9, 0xa9, 0xc8, 0xf7, 0x9c, 0xfc, 0xcf, 0x5c, 0x6d, 0x9c, 0x97, - 0xff, 0xf1, 0xcf, 0xeb, 0xaa, 0x6a, 0x57, 0xd6, 0xda, 0x19, 0xd5, 0x5a, 0x6e, 0xa1, 0x2d, 0xd2, 0x83, 0xc7, 0x95, 0x5e, - 0x5c, 0xcf, 0xbc, 0x7f, 0xf9, 0x7f, 0xf6, 0x4c, 0x3d, 0x9b, 0xff, 0xd5, 0xbf, 0x78, 0x4d, 0xff, 0x7f, 0x65, 0x7f, 0x79, - 0x52, 0xfe, 0xdb, 0x54, 0x2d, 0xb2, 0x7b, 0x9f, 0xff, 0x2b, 0x6b, 0x6a, 0xd5, 0xe7, 0x3f, 0x96, 0xf0, 0xc8, 0xfe, 0x3e, - 0x3f, 0xe3, 0xc1, 0xda, 0x76, 0x1b, 0xf7, 0xf2, 0x7b, 0xa2, 0xff, 0x9f, 0xcf, 0x7f, 0x5d, 0x9f, 0x67, 0xed, 0xea, 0xf9, - 0x8a, 0xfc, 0xf7, 0x44, 0x65, 0xf4, 0xfd, 0xd7, 0xff, 0xa3, 0x7e, 0x62, 0xb4, 0x55, 0xea, 0xe7, 0xa6, 0xaa, 0xac, 0xb6, - 0xbd, 0x9a, 0xff, 0xcc, 0xf9, 0x3f, 0x7a, 0x1f, 0x22, 0xd3, 0x43, 0x5c, 0xbb, 0x1e, 0xcf, 0x1f, 0x01, 0xd6, 0xfa, 0xff, - 0x67, 0xdc, 0xff, 0xef, 0xa7, 0x5d, 0xff, 0xb7, 0xd4, 0x2c, 0x46, 0x95, 0xfd, 0xff, 0x96, 0xe8, 0x65, 0x66, 0x8e, 0x36, - 0x91, 0xd6, 0x5e, 0x6f, 0xb3, 0x2b, 0xcf, 0xff, 0xb9, 0xd9, 0xe6, 0xda, 0xb6, 0x7a, 0xa7, 0x91, 0xfe, 0xff, 0x9e, 0x14, - 0x56, 0xfc, 0xc5, 0xca, 0xeb, 0xff, 0xeb, 0xe7, 0x66, 0xc8, 0xe4, 0xff, 0xac, 0xde, 0xd3, 0xfe, 0x6f, 0x5e, 0x5b, 0x47, - 0xfa, 0x0e, 0xd7, 0xff, 0x91, 0xfb, 0xff, 0xd1, 0x9a, 0xc7, 0xe3, 0xb3, 0x71, 0xff, 0xf1, 0x0a, 0xff, 0xcc, 0xb3, 0xf1, - 0xf9, 0x47, 0x9c, 0xda, 0xeb, 0x7f, 0xf9, 0xdf, 0xf3, 0xdd, 0x2b, 0x6b, 0xe7, 0xee, 0xce, 0xff, 0x5c, 0xcf, 0x2a, 0x36, - 0x23, 0x62, 0x6e, 0xc6, 0xe4, 0xe8, 0x35, 0x5d, 0x3b, 0x75, 0x4f, 0x6f, 0x17, 0xf4, 0xfe, 0xab, 0x67, 0xe4, 0x79, 0xe7, - 0xfb, 0x50, 0xef, 0xf8, 0x06, 0x67, 0x1c, 0xcf, 0x7b, 0x61, 0xcf, 0x34, 0x7f, 0xff, 0x2f, 0x7e, 0xb4, 0x6a, 0x17, 0xd4, - 0x20, 0x3e, 0xfb, 0x2f, 0xc6, 0x9f, 0x56, 0x20, 0xff, 0x6b, 0xf9, 0xdf, 0xdf, 0x4b, 0xaa, 0x7a, 0x87, 0xe1, 0xd3, 0xf6, - 0x14, 0x2d, 0xf3, 0x29, 0xdb, 0x75, 0xfd, 0x4e, 0xef, 0x5b, 0x5a, 0xc2, 0x3e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x6b, 0xf4, 0x4f, 0xac, 0x9a, 0xc2, 0x6c, 0x2d, 0xab, 0xbe, 0x30, 0x3a, 0xb3, 0x0d, - 0xeb, 0x33, 0x67, 0x3f, 0xe7, 0xeb, 0xcc, 0x05, 0x7d, 0xf0, 0x2f, 0x5a, 0x60, 0x4d, 0x7b, 0x78, 0xac, 0xf1, 0xfa, 0x3c, - 0x0c, 0x5f, 0xd7, 0xb8, 0x25, 0x5a, 0x64, 0x3c, 0x92, 0x77, 0x7d, 0xc6, 0x86, 0xbd, 0xdf, 0xb9, 0xa6, 0x22, 0x7a, 0xa4, - 0xb6, 0xdf, 0x6c, 0x85, 0x92, 0xb3, 0x5b, 0x25, 0x33, 0x62, 0xbb, 0x05, 0x8e, 0x0d, 0xa3, 0x7a, 0x42, 0x2b, 0xb5, 0xba, - 0xd6, 0x8e, 0x4f, 0x73, 0x55, 0xf8, 0xd6, 0xc7, 0xa5, 0xcf, 0xd5, 0xf0, 0x6c, 0x1b, 0xeb, 0x5e, 0xaf, 0xef, 0xed, 0xf1, - 0xa4, 0xe4, 0x96, 0xce, 0x8d, 0xc7, 0xdf, 0xf1, 0x9d, 0xe3, 0x35, 0x6b, 0xe7, 0x3f, 0x27, 0x73, 0xf6, 0x1b, 0xa7, 0x74, - 0x4f, 0xab, 0xc4, 0xd2, 0x9f, 0xa9, 0x08, 0xb3, 0x9e, 0xff, 0x9a, 0xf5, 0x1e, 0xcf, 0x89, 0x10, 0x9b, 0x65, 0x63, 0xa6, - 0x86, 0xf7, 0xfb, 0xaa, 0x07, 0xe4, 0xf3, 0xff, 0xa9, 0x35, 0x17, 0x9e, 0xd4, 0x02, 0x7d, 0x31, 0x61, 0x33, 0xbd, 0xf8, - 0x9a, 0xfc, 0x8f, 0xe7, 0x4a, 0x3a, 0x3f, 0xff, 0x3d, 0xf4, 0x09, 0xf1, 0x9e, 0xdb, 0x1d, 0x97, 0xe6, 0xf2, 0x3f, 0xde, - 0x83, 0xf6, 0x2c, 0xad, 0x9a, 0x29, 0x29, 0x57, 0x87, 0xbc, 0x05, 0xaf, 0x1e, 0x32, 0x4b, 0x23, 0xb5, 0x11, 0x7a, 0xe8, - 0x6a, 0x64, 0xcf, 0xf9, 0x3f, 0x7f, 0xfd, 0x3f, 0xdf, 0x6f, 0x8b, 0xdf, 0x3f, 0xc8, 0xec, 0x4b, 0x3b, 0xfa, 0xe1, 0x67, - 0x2c, 0x8d, 0xd4, 0x86, 0xbb, 0x6a, 0xe9, 0xee, 0xfc, 0xf7, 0xdf, 0xe6, 0x4a, 0x3c, 0x4a, 0xd4, 0xfa, 0xd1, 0x21, 0x77, - 0x64, 0xd9, 0xdb, 0xd7, 0x59, 0xbd, 0xff, 0xb7, 0xba, 0x96, 0x75, 0x73, 0x99, 0x45, 0xab, 0x52, 0x7e, 0xfd, 0xfd, 0xba, - 0xf3, 0xff, 0xbe, 0xad, 0xbe, 0x77, 0x69, 0xe6, 0xee, 0xde, 0x5b, 0xf3, 0x3f, 0xd7, 0x6e, 0xef, 0xc8, 0xff, 0xb8, 0x7e, - 0x6b, 0x2f, 0xba, 0x4f, 0x71, 0xc6, 0x37, 0x9a, 0xad, 0xc0, 0x9f, 0x9b, 0x63, 0xf6, 0x4d, 0xf9, 0x6f, 0x45, 0xfd, 0xff, - 0x33, 0x97, 0xde, 0xa3, 0xff, 0xdf, 0x5f, 0x90, 0xff, 0xec, 0x73, 0x9d, 0x8a, 0x19, 0x8e, 0xcf, 0xce, 0x7f, 0xf6, 0x98, - 0x78, 0xaf, 0x6b, 0xe1, 0xec, 0xd2, 0x6c, 0xfe, 0x3f, 0xf5, 0xfc, 0xff, 0x86, 0xfc, 0xe7, 0x9f, 0x65, 0xaf, 0xdc, 0xff, - 0x3b, 0xef, 0x1d, 0x88, 0xbe, 0x31, 0xff, 0xed, 0x43, 0xcf, 0xff, 0x35, 0xf3, 0xca, 0x3f, 0x2d, 0xff, 0x33, 0x77, 0x99, - 0x9e, 0x9a, 0xff, 0x8a, 0x8c, 0x54, 0xdd, 0xff, 0xaf, 0x7f, 0x0b, 0x6a, 0x67, 0x75, 0xfa, 0xe7, 0x25, 0x7c, 0x9c, 0xff, - 0xc8, 0xfb, 0x3f, 0xef, 0xce, 0xff, 0xdc, 0xbb, 0x31, 0xcf, 0xce, 0x7f, 0x4f, 0xce, 0x4a, 0xf3, 0xce, 0xe7, 0xc3, 0xb1, - 0x39, 0xa6, 0x9f, 0x97, 0xff, 0xfc, 0x3b, 0x65, 0x6f, 0x7d, 0xfe, 0x97, 0x7b, 0x3b, 0xe0, 0x9a, 0xe7, 0x7f, 0x77, 0x7a, - 0xaf, 0x84, 0xb7, 0xbf, 0x55, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0xec, - 0xeb, 0xea, 0x88, 0x9d, 0xb9, 0x71, 0x62, 0xd7, 0x54, 0xbe, 0x8f, 0xd4, 0x29, 0x98, 0x59, 0x9f, 0x78, 0xf5, 0x83, 0x48, - 0xad, 0xfd, 0xa3, 0x6d, 0x13, 0xad, 0x38, 0x9e, 0xa9, 0x64, 0xb4, 0xeb, 0x3b, 0xae, 0xd7, 0x84, 0x9f, 0xff, 0x0b, 0x73, - 0x95, 0x1f, 0x63, 0xb9, 0xb8, 0xfb, 0xb6, 0x9e, 0x1b, 0xa5, 0xb9, 0xb3, 0x4e, 0x7c, 0x4f, 0xd6, 0x34, 0xaf, 0x5f, 0xab, - 0x6c, 0x95, 0xfe, 0xd8, 0x3a, 0x47, 0x5a, 0xb8, 0x27, 0xe6, 0x61, 0x69, 0x13, 0x7b, 0x52, 0x75, 0x75, 0x9f, 0xcc, 0xbc, - 0x1c, 0xf3, 0x47, 0xe4, 0xca, 0x8a, 0xfd, 0x2d, 0x51, 0xad, 0xff, 0x2e, 0xdb, 0xfa, 0xda, 0xf1, 0xb4, 0xe3, 0x75, 0x7e, - 0xce, 0x78, 0xdf, 0xb9, 0xd1, 0xe3, 0xcf, 0xf8, 0x36, 0x33, 0xc7, 0xb2, 0xf5, 0xea, 0x3c, 0xef, 0xac, 0xd9, 0xf0, 0xd9, - 0x63, 0x95, 0xb3, 0x95, 0x05, 0x46, 0xc7, 0xba, 0xe7, 0x54, 0xaf, 0xca, 0xd5, 0xbd, 0x9a, 0x69, 0xc5, 0xb3, 0x96, 0x1d, - 0xf9, 0x2b, 0x30, 0x0f, 0xdb, 0x95, 0xdf, 0x71, 0x7f, 0xc5, 0x8e, 0xe3, 0x5a, 0x22, 0xf7, 0xde, 0xd6, 0xd9, 0x1a, 0x59, - 0xd9, 0x4a, 0x30, 0xd1, 0xf3, 0xff, 0x53, 0xf3, 0x3f, 0x9a, 0x8b, 0xe0, 0xe7, 0x59, 0xc9, 0xce, 0x5b, 0x56, 0x31, 0x93, - 0xc1, 0xea, 0x15, 0xd0, 0x8e, 0x65, 0x57, 0x56, 0xec, 0x3a, 0xfb, 0xbb, 0xc6, 0xdb, 0xa8, 0xaa, 0x9f, 0x18, 0x9d, 0xb3, - 0x64, 0xb4, 0xec, 0xd3, 0xce, 0xff, 0xfd, 0xf2, 0x65, 0xf3, 0x47, 0xb1, 0xbb, 0xef, 0xdb, 0xfb, 0x67, 0xec, 0x78, 0x42, - 0xc6, 0x33, 0xb3, 0x4b, 0xed, 0xcc, 0xff, 0x3d, 0xeb, 0x1d, 0xf7, 0xd4, 0xb9, 0x31, 0x5b, 0xab, 0xef, 0x3e, 0xb9, 0xc9, - 0xcc, 0x64, 0x1c, 0x9b, 0xbf, 0xb9, 0x7a, 0x99, 0xfc, 0xdf, 0x3b, 0xff, 0x73, 0xf7, 0x56, 0xee, 0x57, 0xbd, 0x32, 0x3b, - 0x4b, 0xef, 0xfb, 0xfb, 0x8b, 0x7d, 0xc3, 0xd3, 0x9a, 0xba, 0xe7, 0x89, 0xf2, 0x7f, 0x97, 0xfe, 0xbf, 0xfc, 0xbf, 0x6f, - 0x7f, 0xe9, 0xa9, 0x4a, 0xe6, 0xfa, 0xff, 0xf2, 0xff, 0xe6, 0xfc, 0xf7, 0x47, 0x5c, 0xff, 0xef, 0xda, 0x5f, 0xde, 0x76, - 0xff, 0x3f, 0xfa, 0xb4, 0xf7, 0x29, 0xcf, 0x7a, 0xce, 0x78, 0xfe, 0xb7, 0xe7, 0x93, 0x77, 0x56, 0x43, 0x7f, 0xff, 0xf3, - 0xde, 0xa7, 0xd4, 0x83, 0xe7, 0xed, 0xfb, 0xa1, 0x36, 0x00, 0xf9, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x76, 0xbe, 0xa9, 0x7f, 0x66, 0xc5, 0xf7, 0xc8, 0xa8, 0xcf, 0xb9, 0xcf, 0x04, 0x62, 0x23, 0x75, 0xce, - 0xac, 0xf8, 0x9e, 0x1f, 0x9d, 0x6f, 0x5b, 0xc2, 0xfb, 0xc6, 0x8a, 0xcb, 0x36, 0xec, 0x49, 0x55, 0x7f, 0x48, 0x15, 0xa4, - 0x77, 0xcc, 0xcd, 0x01, 0xf2, 0xff, 0x94, 0x0a, 0x69, 0x20, 0xff, 0xf2, 0x0f, 0xf2, 0x2f, 0xff, 0x20, 0xff, 0xf2, 0x0f, - 0x6f, 0xbf, 0xff, 0x7f, 0xa7, 0x99, 0x6b, 0xf6, 0xd5, 0x29, 0x06, 0xcf, 0xfe, 0x63, 0x47, 0x87, 0xea, 0x65, 0x6d, 0x78, - 0xdc, 0xf0, 0x8c, 0x10, 0xce, 0xca, 0xff, 0x35, 0xcf, 0xf8, 0x57, 0xf3, 0xaf, 0xff, 0x0f, 0x6f, 0xba, 0x1a, 0x89, 0xbc, - 0xff, 0x27, 0xfd, 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, 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, - 0x70, 0x95, 0x7f, 0xff, 0xd3, 0x0e, 0x20, 0xff, 0xc0, 0xc7, 0xe5, 0xff, 0x6f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle enefeteFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 2 , 10 }, - { 26, 4, 5 , 3 }, - { 39, 4, 7 , 10 }, - { 54, 4, 7 , 13 }, - { 69, 4, 7 , 10 }, - { 84, 4, 7 , 10 }, - { 99, 4, 2 , 3 }, - { 109, 4, 3 , 12 }, - { 120, 4, 3 , 12 }, - { 131, 4, 5 , 6 }, - { 144, 4, 6 , 5 }, - { 158, 4, 2 , 4 }, - { 168, 4, 5 , 1 }, - { 181, 4, 2 , 2 }, - { 191, 4, 4 , 10 }, - { 203, 4, 6 , 10 }, - { 217, 4, 4 , 10 }, - { 229, 4, 6 , 10 }, - { 243, 4, 6 , 10 }, - { 257, 4, 6 , 10 }, - { 271, 4, 6 , 10 }, - { 285, 4, 6 , 10 }, - { 299, 4, 6 , 10 }, - { 313, 4, 6 , 10 }, - { 327, 4, 6 , 10 }, - { 341, 4, 2 , 6 }, - { 351, 4, 2 , 8 }, - { 361, 4, 7 , 7 }, - { 376, 4, 5 , 3 }, - { 389, 4, 7 , 7 }, - { 404, 4, 6 , 10 }, - { 418, 4, 7 , 12 }, - { 433, 4, 7 , 10 }, - { 448, 4, 7 , 10 }, - { 463, 4, 7 , 10 }, - { 478, 4, 7 , 10 }, - { 493, 4, 7 , 10 }, - { 4, 28, 7 , 10 }, - { 19, 28, 7 , 10 }, - { 34, 28, 7 , 10 }, - { 49, 28, 2 , 10 }, - { 59, 28, 5 , 10 }, - { 72, 28, 7 , 10 }, - { 87, 28, 6 , 10 }, - { 101, 28, 9 , 10 }, - { 118, 28, 7 , 10 }, - { 133, 28, 7 , 10 }, - { 148, 28, 7 , 10 }, - { 163, 28, 7 , 12 }, - { 178, 28, 7 , 10 }, - { 193, 28, 7 , 10 }, - { 208, 28, 6 , 10 }, - { 222, 28, 7 , 10 }, - { 237, 28, 7 , 10 }, - { 252, 28, 8 , 10 }, - { 268, 28, 7 , 10 }, - { 283, 28, 6 , 10 }, - { 297, 28, 7 , 10 }, - { 312, 28, 4 , 12 }, - { 324, 28, 4 , 10 }, - { 336, 28, 4 , 12 }, - { 348, 28, 6 , 3 }, - { 362, 28, 7 , 1 }, - { 377, 28, 4 , 3 }, - { 389, 28, 6 , 7 }, - { 403, 28, 6 , 10 }, - { 417, 28, 6 , 7 }, - { 431, 28, 6 , 10 }, - { 445, 28, 6 , 7 }, - { 459, 28, 4 , 10 }, - { 471, 28, 6 , 9 }, - { 485, 28, 6 , 10 }, - { 499, 28, 2 , 10 }, - { 4, 52, 5 , 12 }, - { 17, 52, 6 , 10 }, - { 31, 52, 3 , 10 }, - { 42, 52, 8 , 7 }, - { 58, 52, 6 , 7 }, - { 72, 52, 6 , 7 }, - { 86, 52, 6 , 9 }, - { 100, 52, 6 , 9 }, - { 114, 52, 5 , 7 }, - { 127, 52, 6 , 7 }, - { 141, 52, 4 , 10 }, - { 153, 52, 6 , 7 }, - { 167, 52, 6 , 7 }, - { 181, 52, 8 , 7 }, - { 197, 52, 6 , 7 }, - { 211, 52, 6 , 9 }, - { 225, 52, 6 , 7 }, - { 239, 52, 5 , 12 }, - { 252, 52, 2 , 12 }, - { 262, 52, 5 , 12 }, - { 275, 52, 7 , 3 }, - { 290, 52, 2 , 9 }, - { 300, 52, 6 , 11 }, - { 314, 52, 7 , 10 }, - { 329, 52, 7 , 9 }, - { 344, 52, 6 , 10 }, - { 358, 52, 7 , 11 }, - { 373, 52, 6 , 12 }, - { 387, 52, 6 , 10 }, - { 401, 52, 7 , 10 }, - { 416, 52, 5 , 5 }, - { 429, 52, 7 , 6 }, - { 444, 52, 6 , 3 }, - { 458, 52, 7 , 10 }, - { 473, 52, 0 , 0 }, - { 481, 52, 4 , 4 }, - { 493, 52, 6 , 7 }, - { 4, 76, 4 , 5 }, - { 16, 76, 4 , 5 }, - { 28, 76, 7 , 11 }, - { 43, 76, 6 , 9 }, - { 57, 76, 7 , 12 }, - { 72, 76, 2 , 2 }, - { 82, 76, 6 , 10 }, - { 96, 76, 3 , 5 }, - { 107, 76, 4 , 5 }, - { 119, 76, 7 , 6 }, - { 134, 76, 9 , 10 }, - { 151, 76, 8 , 7 }, - { 167, 76, 6 , 11 }, - { 181, 76, 6 , 11 }, - { 195, 76, 7 , 11 }, - { 210, 76, 7 , 11 }, - { 225, 76, 7 , 11 }, - { 240, 76, 7 , 11 }, - { 255, 76, 7 , 11 }, - { 270, 76, 7 , 11 }, - { 285, 76, 9 , 10 }, - { 302, 76, 7 , 12 }, - { 317, 76, 7 , 11 }, - { 332, 76, 7 , 11 }, - { 347, 76, 7 , 11 }, - { 362, 76, 7 , 11 }, - { 377, 76, 3 , 11 }, - { 388, 76, 3 , 11 }, - { 399, 76, 5 , 11 }, - { 412, 76, 5 , 11 }, - { 425, 76, 8 , 10 }, - { 441, 76, 7 , 11 }, - { 456, 76, 7 , 11 }, - { 471, 76, 7 , 11 }, - { 486, 76, 7 , 11 }, - { 4, 100, 7 , 11 }, - { 19, 100, 7 , 11 }, - { 34, 100, 7 , 7 }, - { 49, 100, 7 , 13 }, - { 64, 100, 7 , 11 }, - { 79, 100, 7 , 11 }, - { 94, 100, 7 , 11 }, - { 109, 100, 7 , 11 }, - { 124, 100, 6 , 11 }, - { 138, 100, 7 , 10 }, - { 153, 100, 7 , 10 }, - { 168, 100, 6 , 10 }, - { 182, 100, 6 , 10 }, - { 196, 100, 6 , 10 }, - { 210, 100, 6 , 10 }, - { 224, 100, 6 , 10 }, - { 238, 100, 6 , 11 }, - { 252, 100, 8 , 7 }, - { 268, 100, 6 , 9 }, - { 282, 100, 6 , 10 }, - { 296, 100, 6 , 10 }, - { 310, 100, 6 , 10 }, - { 324, 100, 6 , 10 }, - { 338, 100, 3 , 10 }, - { 349, 100, 3 , 10 }, - { 360, 100, 5 , 10 }, - { 373, 100, 5 , 10 }, - { 386, 100, 6 , 10 }, - { 400, 100, 6 , 10 }, - { 414, 100, 6 , 10 }, - { 428, 100, 6 , 10 }, - { 442, 100, 6 , 10 }, - { 456, 100, 6 , 10 }, - { 470, 100, 6 , 10 }, - { 484, 100, 6 , 7 }, - { 4, 124, 7 , 11 }, - { 19, 124, 6 , 10 }, - { 33, 124, 6 , 10 }, - { 47, 124, 6 , 10 }, - { 61, 124, 6 , 10 }, - { 75, 124, 6 , 12 }, - { 89, 124, 6 , 12 }, - { 103, 124, 6 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo enefeteFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 0, 2, 3, { 0 }}, - { 34, 0, 2, 6, { 0 }}, - { 35, 0, 2, 8, { 0 }}, - { 36, 0, 1, 8, { 0 }}, - { 37, 0, 2, 8, { 0 }}, - { 38, 0, 2, 8, { 0 }}, - { 39, 0, 2, 3, { 0 }}, - { 40, 0, 2, 4, { 0 }}, - { 41, 0, 2, 4, { 0 }}, - { 42, 0, 4, 6, { 0 }}, - { 43, 0, 6, 7, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 8, 6, { 0 }}, - { 46, 0, 10, 3, { 0 }}, - { 47, 0, 2, 5, { 0 }}, - { 48, 0, 2, 7, { 0 }}, - { 49, 0, 2, 7, { 0 }}, - { 50, 0, 2, 7, { 0 }}, - { 51, 0, 2, 7, { 0 }}, - { 52, 0, 2, 7, { 0 }}, - { 53, 0, 2, 7, { 0 }}, - { 54, 0, 2, 7, { 0 }}, - { 55, 0, 2, 7, { 0 }}, - { 56, 0, 2, 7, { 0 }}, - { 57, 0, 2, 7, { 0 }}, - { 58, 0, 4, 3, { 0 }}, - { 59, 0, 4, 3, { 0 }}, - { 60, 0, 4, 8, { 0 }}, - { 61, 0, 6, 6, { 0 }}, - { 62, 0, 4, 8, { 0 }}, - { 63, 0, 2, 7, { 0 }}, - { 64, 0, 2, 8, { 0 }}, - { 65, 0, 2, 8, { 0 }}, - { 66, 0, 2, 8, { 0 }}, - { 67, 0, 2, 8, { 0 }}, - { 68, 0, 2, 8, { 0 }}, - { 69, 0, 2, 8, { 0 }}, - { 70, 0, 2, 8, { 0 }}, - { 71, 0, 2, 8, { 0 }}, - { 72, 0, 2, 8, { 0 }}, - { 73, 0, 2, 3, { 0 }}, - { 74, 0, 2, 6, { 0 }}, - { 75, 0, 2, 8, { 0 }}, - { 76, 0, 2, 7, { 0 }}, - { 77, 0, 2, 10, { 0 }}, - { 78, 0, 2, 8, { 0 }}, - { 79, 0, 2, 8, { 0 }}, - { 80, 0, 2, 8, { 0 }}, - { 81, 0, 2, 8, { 0 }}, - { 82, 0, 2, 8, { 0 }}, - { 83, 0, 2, 8, { 0 }}, - { 84, 0, 2, 7, { 0 }}, - { 85, 0, 2, 8, { 0 }}, - { 86, 0, 2, 8, { 0 }}, - { 87, 0, 2, 9, { 0 }}, - { 88, 0, 2, 8, { 0 }}, - { 89, 0, 2, 7, { 0 }}, - { 90, 0, 2, 8, { 0 }}, - { 91, 0, 2, 5, { 0 }}, - { 92, 0, 2, 5, { 0 }}, - { 93, 0, 2, 5, { 0 }}, - { 94, 0, 2, 7, { 0 }}, - { 95, 0, 14, 8, { 0 }}, - { 96, 0, 2, 5, { 0 }}, - { 97, 0, 5, 7, { 0 }}, - { 98, 0, 2, 7, { 0 }}, - { 99, 0, 5, 7, { 0 }}, - { 100, 0, 2, 7, { 0 }}, - { 101, 0, 5, 7, { 0 }}, - { 102, 0, 2, 5, { 0 }}, - { 103, 0, 5, 7, { 0 }}, - { 104, 0, 2, 7, { 0 }}, - { 105, 0, 2, 3, { 0 }}, - { 106, 0, 2, 6, { 0 }}, - { 107, 0, 2, 7, { 0 }}, - { 108, 0, 2, 4, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 7, { 0 }}, - { 111, 0, 5, 7, { 0 }}, - { 112, 0, 5, 7, { 0 }}, - { 113, 0, 5, 7, { 0 }}, - { 114, 0, 5, 6, { 0 }}, - { 115, 0, 5, 7, { 0 }}, - { 116, 0, 2, 5, { 0 }}, - { 117, 0, 5, 7, { 0 }}, - { 118, 0, 5, 7, { 0 }}, - { 119, 0, 5, 9, { 0 }}, - { 120, 0, 5, 7, { 0 }}, - { 121, 0, 5, 7, { 0 }}, - { 122, 0, 5, 7, { 0 }}, - { 123, 0, 2, 6, { 0 }}, - { 124, 0, 2, 3, { 0 }}, - { 125, 0, 2, 6, { 0 }}, - { 126, 0, 6, 8, { 0 }}, - { 161, 0, 5, 3, { 0 }}, - { 162, 0, 3, 7, { 0 }}, - { 163, 0, 2, 8, { 0 }}, - { 8364, 0, 3, 8, { 0 }}, - { 165, 0, 2, 7, { 0 }}, - { 352, 0, 1, 8, { 0 }}, - { 167, 0, 2, 7, { 0 }}, - { 353, 0, 2, 7, { 0 }}, - { 169, 0, 2, 8, { 0 }}, - { 170, 0, 2, 6, { 0 }}, - { 171, 0, 6, 8, { 0 }}, - { 172, 0, 7, 7, { 0 }}, - { 174, 0, 2, 8, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 0, 2, 5, { 0 }}, - { 177, 0, 4, 7, { 0 }}, - { 178, 0, 2, 5, { 0 }}, - { 179, 0, 2, 5, { 0 }}, - { 381, 0, 1, 8, { 0 }}, - { 181, 0, 5, 7, { 0 }}, - { 182, 0, 2, 8, { 0 }}, - { 183, 0, 6, 3, { 0 }}, - { 382, 0, 2, 7, { 0 }}, - { 185, 0, 2, 4, { 0 }}, - { 186, 0, 2, 5, { 0 }}, - { 187, 0, 6, 8, { 0 }}, - { 338, 0, 2, 10, { 0 }}, - { 339, 0, 5, 9, { 0 }}, - { 376, 0, 1, 7, { 0 }}, - { 191, 0, 3, 7, { 0 }}, - { 192, 0, 1, 8, { 0 }}, - { 193, 0, 1, 8, { 0 }}, - { 194, 0, 1, 8, { 0 }}, - { 195, 0, 1, 8, { 0 }}, - { 196, 0, 1, 8, { 0 }}, - { 197, 0, 1, 8, { 0 }}, - { 198, 0, 2, 10, { 0 }}, - { 199, 0, 2, 8, { 0 }}, - { 200, 0, 1, 8, { 0 }}, - { 201, 0, 1, 8, { 0 }}, - { 202, 0, 1, 8, { 0 }}, - { 203, 0, 1, 8, { 0 }}, - { 204, 0, 1, 4, { 0 }}, - { 205, 0, 1, 4, { 0 }}, - { 206, 0, 1, 6, { 0 }}, - { 207, 0, 1, 6, { 0 }}, - { 208, 0, 2, 9, { 0 }}, - { 209, 0, 1, 8, { 0 }}, - { 210, 0, 1, 8, { 0 }}, - { 211, 0, 1, 8, { 0 }}, - { 212, 0, 1, 8, { 0 }}, - { 213, 0, 1, 8, { 0 }}, - { 214, 0, 1, 8, { 0 }}, - { 215, 0, 5, 8, { 0 }}, - { 216, 0, 1, 8, { 0 }}, - { 217, 0, 1, 8, { 0 }}, - { 218, 0, 1, 8, { 0 }}, - { 219, 0, 1, 8, { 0 }}, - { 220, 0, 1, 8, { 0 }}, - { 221, 0, 1, 7, { 0 }}, - { 222, 0, 2, 8, { 0 }}, - { 223, 0, 2, 8, { 0 }}, - { 224, 0, 2, 7, { 0 }}, - { 225, 0, 2, 7, { 0 }}, - { 226, 0, 2, 7, { 0 }}, - { 227, 0, 2, 7, { 0 }}, - { 228, 0, 2, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 5, 9, { 0 }}, - { 231, 0, 5, 7, { 0 }}, - { 232, 0, 2, 7, { 0 }}, - { 233, 0, 2, 7, { 0 }}, - { 234, 0, 2, 7, { 0 }}, - { 235, 0, 2, 7, { 0 }}, - { 236, 0, 2, 4, { 0 }}, - { 237, 0, 2, 4, { 0 }}, - { 238, 0, 2, 6, { 0 }}, - { 239, 0, 2, 6, { 0 }}, - { 240, 0, 2, 7, { 0 }}, - { 241, 0, 2, 7, { 0 }}, - { 242, 0, 2, 7, { 0 }}, - { 243, 0, 2, 7, { 0 }}, - { 244, 0, 2, 7, { 0 }}, - { 245, 0, 2, 7, { 0 }}, - { 246, 0, 2, 7, { 0 }}, - { 247, 0, 4, 7, { 0 }}, - { 248, 0, 3, 8, { 0 }}, - { 249, 0, 2, 7, { 0 }}, - { 250, 0, 2, 7, { 0 }}, - { 251, 0, 2, 7, { 0 }}, - { 252, 0, 2, 7, { 0 }}, - { 253, 0, 2, 7, { 0 }}, - { 254, 0, 2, 7, { 0 }}, - { 255, 0, 2, 7, { 0 }}, -}; - -// Style loading function: Enefete -static void GuiLoadStyleEnefete(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < ENEFETE_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(enefeteStyleProps[i].controlId, enefeteStyleProps[i].propertyId, enefeteStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int enefeteFontDataSize = 0; - unsigned char *data = DecompressData(enefeteFontData, ENEFETE_STYLE_FONT_ATLAS_COMP_SIZE, &enefeteFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, enefeteFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, enefeteFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_genesis.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_genesis.h deleted file mode 100644 index a6e8eda..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_genesis.h +++ /dev/null @@ -1,589 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleGenesis(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define GENESIS_STYLE_PROPS_COUNT 23 - -// Custom style name: Genesis -static const GuiStyleProp genesisStyleProps[GENESIS_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x667384ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x181b1eff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xc2c8d0ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xd3dbdfff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xa7afb0ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x020202ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x181b1eff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xac3c3cff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xdededeff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x3e4550ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x2e353dff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x484f57ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x96a3b4ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x292c33ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING - { 1, 5, (int)0x97a9aeff }, // LABEL_TEXT_COLOR_FOCUSED - { 4, 5, (int)0xa69a9aff }, // SLIDER_TEXT_COLOR_FOCUSED - { 4, 6, (int)0xc3ccd5ff }, // SLIDER_BORDER_COLOR_PRESSED - { 6, 6, (int)0xa7aeb5ff }, // CHECKBOX_BORDER_COLOR_PRESSED - { 9, 5, (int)0xa9a5a5ff }, // TEXTBOX_TEXT_COLOR_FOCUSED - { 10, 5, (int)0xc9c7c7ff }, // VALUEBOX_TEXT_COLOR_FOCUSED -}; - -// WARNING: This style uses a custom font: "PixelOperator.ttf" (size: 16, spacing: 0) - -#define GENESIS_STYLE_FONT_ATLAS_COMP_SIZE 2138 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char genesisFontData[GENESIS_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xdb, 0x92, 0xa5, 0xba, 0x0d, 0x00, 0x50, 0xff, 0xff, 0x4f, 0x2b, 0x0f, 0xa9, 0x54, 0x32, 0x95, 0xd3, 0x80, 0x64, - 0xd9, 0x98, 0x9e, 0x35, 0xeb, 0xad, 0x77, 0x4f, 0xc3, 0x36, 0x96, 0x6f, 0x80, 0x1c, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xeb, - 0xc5, 0x3f, 0xfe, 0x24, 0x7e, 0xfc, 0xcd, 0x78, 0xfc, 0x77, 0xae, 0x7f, 0xfe, 0x9f, 0x4f, 0xe3, 0xe2, 0x58, 0xcf, 0xce, - 0x35, 0x7b, 0xdc, 0x48, 0x94, 0xc4, 0x3f, 0x9f, 0x5f, 0x3c, 0xfe, 0xbb, 0x3f, 0x7d, 0xbf, 0xfc, 0xef, 0x5f, 0xfd, 0xa5, - 0xeb, 0xb3, 0x8f, 0x54, 0xb9, 0xe7, 0xff, 0x4f, 0xee, 0x2a, 0xc6, 0x92, 0xb2, 0xbf, 0x3f, 0xbb, 0xfc, 0xb9, 0x77, 0xfe, - 0x9f, 0xb8, 0xf8, 0x3e, 0x95, 0xab, 0xf4, 0x24, 0xb6, 0x4e, 0x88, 0xff, 0x78, 0x14, 0x89, 0xd1, 0x5a, 0x73, 0xfe, 0x7b, - 0xd4, 0x68, 0x6c, 0xa9, 0xaa, 0x25, 0x79, 0x15, 0xe9, 0xf9, 0xf2, 0xb8, 0xaa, 0xfd, 0xf9, 0x16, 0x30, 0x5a, 0xbe, 0xcb, - 0x7c, 0x6d, 0x8c, 0xe9, 0xdf, 0x7e, 0x56, 0x93, 0x7a, 0xbe, 0xd5, 0xcc, 0x27, 0xa3, 0xe5, 0x2a, 0xbd, 0x11, 0xff, 0x51, - 0x6e, 0xa9, 0x22, 0x19, 0xd1, 0x1d, 0x25, 0x58, 0x69, 0x87, 0xc7, 0xc6, 0xf8, 0x8f, 0xd6, 0xb1, 0x4b, 0xb4, 0xd5, 0xb9, - 0x37, 0xe2, 0xff, 0xba, 0xd7, 0x1e, 0x2d, 0xf5, 0x26, 0x6e, 0xca, 0xa8, 0x37, 0x96, 0xd7, 0x8e, 0x53, 0x57, 0xc7, 0xff, - 0xf5, 0x6f, 0x66, 0xfb, 0xdb, 0x48, 0xf6, 0xdd, 0x1d, 0xe5, 0x54, 0xeb, 0xff, 0xfb, 0xcb, 0x31, 0x7e, 0xec, 0x9b, 0xab, - 0xe3, 0x90, 0x4c, 0x09, 0x47, 0x72, 0x76, 0x35, 0xdb, 0xc3, 0xbe, 0xd9, 0xff, 0x3f, 0x1b, 0x0b, 0x8a, 0xff, 0xb5, 0xf1, - 0x5f, 0xf9, 0x26, 0xf1, 0xf0, 0x0c, 0x2a, 0x7d, 0xe2, 0x38, 0x20, 0xfe, 0xb3, 0xed, 0xd0, 0x75, 0x59, 0x75, 0x8d, 0xe5, - 0xb3, 0xeb, 0x12, 0xcf, 0x66, 0xd8, 0xfb, 0x6a, 0x61, 0x7e, 0x6c, 0x94, 0x8f, 0xff, 0x7c, 0xeb, 0x79, 0xf7, 0xd7, 0xb2, - 0xa5, 0xfa, 0xf3, 0xcc, 0x6e, 0xbe, 0xc4, 0xf7, 0xc5, 0x7f, 0x14, 0xfa, 0x94, 0xf7, 0xe3, 0xb9, 0x27, 0xfe, 0xa3, 0xb0, - 0x72, 0x31, 0xda, 0x56, 0xf9, 0x6a, 0xeb, 0x12, 0x7d, 0x6b, 0x06, 0xef, 0x5f, 0x81, 0xfb, 0xf8, 0xbf, 0x9b, 0x0f, 0xbe, - 0xdf, 0xff, 0xc7, 0x11, 0xfd, 0x7f, 0x94, 0xd7, 0x86, 0x47, 0xa1, 0xf5, 0xfd, 0x5a, 0xfc, 0x47, 0x21, 0x66, 0xa2, 0x65, - 0x5e, 0x3e, 0x96, 0xac, 0xe5, 0xf5, 0xae, 0x19, 0xee, 0xb9, 0x5a, 0x77, 0xbd, 0x68, 0xd7, 0xac, 0xe6, 0x77, 0xc5, 0xff, - 0x68, 0xe8, 0xff, 0x9f, 0x8d, 0x01, 0x66, 0xbf, 0x47, 0x7c, 0xac, 0xf7, 0xef, 0x8c, 0xff, 0x5d, 0x2b, 0xf6, 0xeb, 0x6b, - 0x63, 0x1c, 0x71, 0x65, 0xac, 0xff, 0x77, 0x8e, 0xff, 0xeb, 0x6b, 0x00, 0xb9, 0x79, 0x4c, 0x1c, 0x1a, 0xfd, 0x95, 0x39, - 0x73, 0xd7, 0x1d, 0xfb, 0xde, 0xa7, 0x09, 0xa2, 0xf0, 0xac, 0x46, 0xcf, 0x2a, 0xce, 0xea, 0x6b, 0x90, 0xef, 0xff, 0x77, - 0xdd, 0xff, 0xbf, 0x1f, 0x73, 0x9f, 0xd1, 0xff, 0x8f, 0xdb, 0xde, 0xfd, 0x94, 0xf3, 0x01, 0xf6, 0xb6, 0x00, 0x21, 0xfa, - 0xc1, 0x73, 0xc4, 0x80, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x9f, 0xcf, - 0xef, 0xcf, 0x63, 0x90, 0xcf, 0x84, 0xbd, 0x3e, 0x03, 0xfb, 0x4c, 0x4e, 0xe0, 0x6a, 0x09, 0x75, 0xfd, 0xc5, 0xeb, 0xdc, - 0xf1, 0x99, 0x4c, 0x0b, 0xcf, 0x6b, 0x46, 0xa4, 0x77, 0x3f, 0xe8, 0xcc, 0x28, 0x50, 0xc9, 0x69, 0x30, 0x92, 0x75, 0xa2, - 0x37, 0x97, 0x52, 0xee, 0xec, 0xf7, 0xd4, 0xf8, 0x2f, 0xc4, 0xff, 0xfb, 0x9f, 0x8c, 0x42, 0xfe, 0x9e, 0x9d, 0xf1, 0x9f, - 0xad, 0x7b, 0xb5, 0xfc, 0xb8, 0x73, 0x7d, 0xc9, 0xee, 0x8c, 0x62, 0xd1, 0x78, 0x0d, 0xf7, 0xf5, 0xab, 0x7f, 0xe6, 0xd0, - 0xd9, 0x51, 0xaf, 0x67, 0xe2, 0x3f, 0x9b, 0xfb, 0x34, 0x2e, 0x5a, 0xe1, 0x73, 0xe2, 0x7f, 0x6c, 0x89, 0xff, 0xf8, 0x48, - 0xfc, 0x77, 0x67, 0x92, 0xe9, 0xca, 0x42, 0x5e, 0xc9, 0x7c, 0x93, 0xbf, 0x86, 0xf5, 0x0c, 0xbf, 0xd5, 0x1a, 0xf7, 0x9d, - 0xf8, 0xaf, 0xd4, 0xad, 0xeb, 0x3c, 0xab, 0xe2, 0xff, 0xbe, 0x6c, 0x2b, 0xbd, 0xc9, 0xfc, 0xcf, 0x7b, 0x22, 0x7f, 0x4f, - 0x1e, 0xdd, 0xbb, 0x7d, 0xb4, 0xd6, 0xd6, 0x95, 0xd9, 0xbe, 0xf2, 0x2b, 0xf1, 0x1f, 0xc5, 0xbf, 0x12, 0x37, 0x2d, 0x4a, - 0x6f, 0x06, 0xf6, 0x9e, 0xac, 0x6d, 0x7b, 0xe3, 0xbf, 0x7b, 0xdf, 0x9f, 0x33, 0xe2, 0xff, 0xfd, 0x3c, 0xba, 0xab, 0xe6, - 0x70, 0xbd, 0x7d, 0xe5, 0xef, 0xee, 0xff, 0xef, 0x5b, 0xc9, 0x1d, 0xf5, 0x63, 0xa6, 0xa7, 0x7f, 0xb3, 0xff, 0x7f, 0xef, - 0xe7, 0xef, 0xc6, 0x7f, 0x57, 0x6d, 0x8f, 0x8d, 0x23, 0x93, 0x6a, 0x5f, 0xb9, 0x73, 0x95, 0x6c, 0xf7, 0xfc, 0x7f, 0xd5, - 0x37, 0x1b, 0xe9, 0xd1, 0x44, 0x1c, 0x1b, 0xff, 0x33, 0xab, 0x90, 0xeb, 0xc6, 0x0b, 0xef, 0x8c, 0xff, 0x6b, 0xfb, 0xdb, - 0x56, 0x76, 0x05, 0x3c, 0xad, 0xff, 0xdf, 0x75, 0x97, 0x6c, 0x6c, 0x8e, 0xc9, 0xbd, 0xc7, 0xea, 0xdc, 0xa5, 0x2e, 0x9f, - 0xbf, 0x3f, 0x9a, 0x47, 0x78, 0x5f, 0x8f, 0xff, 0xfa, 0x2a, 0xff, 0x68, 0x5a, 0x95, 0x7c, 0x6f, 0xfc, 0xbf, 0x7b, 0xa7, - 0x93, 0xca, 0x51, 0x7a, 0xda, 0xdf, 0x67, 0x77, 0x85, 0x7b, 0x7b, 0x81, 0x9f, 0xef, 0x36, 0x44, 0x53, 0xcf, 0xd1, 0x95, - 0xbf, 0xff, 0xcf, 0x73, 0xcb, 0xef, 0x78, 0x96, 0xbf, 0x13, 0x1f, 0xc9, 0xfd, 0xf4, 0xdf, 0x88, 0xff, 0xca, 0x91, 0x2b, - 0xff, 0x2b, 0x7b, 0x0d, 0x3b, 0xe3, 0xff, 0xbd, 0x16, 0x40, 0xde, 0x4d, 0x38, 0x71, 0x14, 0x03, 0xfc, 0x9e, 0x16, 0xc0, - 0x0e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xee, 0x37, 0xb1, 0x7f, 0xce, - 0xcd, 0x55, 0xc9, 0x1a, 0x9f, 0x7f, 0x4f, 0x7a, 0x67, 0xc6, 0xfc, 0x71, 0x93, 0x85, 0xec, 0xfa, 0xb7, 0xfe, 0xfc, 0xa4, - 0x23, 0x1f, 0x6f, 0x34, 0xbe, 0xb5, 0x9e, 0xc9, 0xe5, 0x1d, 0x85, 0x6c, 0x03, 0x57, 0x6f, 0xc6, 0xe6, 0xae, 0x41, 0xee, - 0x18, 0xd1, 0x9e, 0xcf, 0x2c, 0xd2, 0xd9, 0x63, 0xfe, 0xf7, 0x9c, 0x9f, 0x67, 0xfa, 0x8d, 0xf2, 0x9b, 0xc6, 0x77, 0xb9, - 0xcc, 0xf2, 0xf9, 0x11, 0x2a, 0x39, 0xf3, 0xf2, 0x79, 0x36, 0x4f, 0xcf, 0x98, 0x3f, 0x9f, 0x79, 0x27, 0x6e, 0xea, 0xe4, - 0xf3, 0x5a, 0xfa, 0x24, 0x73, 0x44, 0x4f, 0x06, 0xa1, 0xda, 0x37, 0x8e, 0xe9, 0xda, 0x5a, 0xb9, 0xde, 0x99, 0x23, 0xc4, - 0xf4, 0xfb, 0xfc, 0x95, 0xfa, 0x1e, 0x93, 0xd7, 0xbd, 0xfe, 0x8d, 0x67, 0xb2, 0x10, 0x44, 0xa9, 0xa7, 0xeb, 0x2c, 0xc1, - 0xeb, 0x4f, 0xf2, 0x19, 0x33, 0xe3, 0x61, 0x7c, 0x75, 0xff, 0x74, 0x24, 0xdb, 0x9b, 0x4a, 0xbe, 0xba, 0x99, 0x5d, 0x33, - 0xe6, 0xc6, 0x88, 0xe3, 0x22, 0xbb, 0x52, 0x3e, 0xfa, 0x7f, 0xee, 0x6f, 0x62, 0x32, 0xfe, 0xa3, 0x98, 0x59, 0xa8, 0x1e, - 0x23, 0xd9, 0xf8, 0x9f, 0xbf, 0x0a, 0xbb, 0xe2, 0xbf, 0x92, 0xf5, 0xe0, 0xfd, 0x8c, 0xd9, 0xb5, 0x9e, 0x70, 0x6f, 0xfc, - 0xc7, 0x83, 0xf6, 0x6b, 0xa4, 0xe7, 0x2f, 0xa3, 0x90, 0xe1, 0xfc, 0xf9, 0xec, 0x22, 0x5a, 0xfb, 0xff, 0x71, 0x59, 0x26, - 0xf1, 0xc2, 0xf8, 0xbf, 0xb6, 0xdf, 0x5b, 0x2e, 0xfe, 0x67, 0x5a, 0xa7, 0xfd, 0xfd, 0x7f, 0xad, 0x5f, 0x3b, 0xb9, 0xff, - 0x7f, 0x27, 0x63, 0x76, 0x14, 0xe6, 0xd9, 0x95, 0xe3, 0xc6, 0xe4, 0xc8, 0xe0, 0xd9, 0x5c, 0x30, 0x1a, 0xe6, 0xab, 0x1d, - 0xf1, 0xdf, 0x3f, 0xc2, 0xae, 0xcc, 0xad, 0x6a, 0xfd, 0x7f, 0xb4, 0xce, 0xff, 0x23, 0xdd, 0xce, 0xcf, 0xc5, 0x7f, 0xe7, - 0x6e, 0x4b, 0x2b, 0x32, 0xe6, 0xe6, 0x77, 0x76, 0x7c, 0xab, 0xff, 0x1f, 0xa5, 0xfe, 0xbf, 0xd6, 0x7b, 0xcd, 0xd4, 0xca, - 0xd8, 0x90, 0xeb, 0x2e, 0x37, 0xfe, 0x5f, 0x3d, 0xca, 0xce, 0xcf, 0x28, 0x63, 0x53, 0xfb, 0xd4, 0x3d, 0xf7, 0xab, 0x45, - 0x4b, 0xa4, 0xc7, 0xd7, 0x3b, 0x33, 0xe6, 0x56, 0xd6, 0x9e, 0xcf, 0x8f, 0xff, 0xce, 0x3d, 0x4c, 0x2a, 0x77, 0x17, 0xa2, - 0xa1, 0x6f, 0x5e, 0xdd, 0xff, 0xcf, 0xce, 0xff, 0x2b, 0xb9, 0xf4, 0xf7, 0xac, 0xff, 0x8d, 0xa5, 0x6b, 0x3f, 0xd1, 0x7a, - 0x3f, 0x71, 0x1c, 0xd0, 0x7e, 0x77, 0x66, 0x89, 0x7f, 0x63, 0xfe, 0xdf, 0x95, 0x81, 0x7d, 0x94, 0xef, 0x09, 0xd5, 0xd7, - 0xff, 0x67, 0x6b, 0x60, 0x1c, 0xd3, 0xf7, 0x8f, 0xc7, 0x7b, 0xe8, 0xc4, 0x4b, 0xd1, 0x7f, 0x5a, 0xfc, 0x9f, 0xf2, 0x44, - 0x43, 0x47, 0xbb, 0x15, 0x2d, 0xad, 0x5b, 0x65, 0xdf, 0x96, 0xce, 0x71, 0xd4, 0xfc, 0xfc, 0x7f, 0xcd, 0xba, 0xfa, 0x1b, - 0xc7, 0x98, 0xb9, 0x23, 0x3b, 0x1f, 0xff, 0xb1, 0xbc, 0xe4, 0xe4, 0x23, 0xfe, 0x4e, 0x2b, 0x75, 0xde, 0xf1, 0xfe, 0xe6, - 0xda, 0x13, 0x1b, 0x9f, 0xb5, 0x13, 0xa1, 0xc4, 0xd1, 0xf3, 0x21, 0xd7, 0x03, 0xfe, 0xe6, 0xf9, 0xd0, 0xdf, 0xfa, 0x1c, - 0xbc, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x7d, 0x3b, 0xa4, 0x92, 0x59, - 0x72, 0x34, 0xbf, 0x8b, 0x9e, 0xcf, 0xad, 0x5f, 0x3d, 0xbb, 0xbb, 0xf7, 0xa5, 0x6b, 0xf9, 0x79, 0x6b, 0xe5, 0x34, 0x97, - 0x8f, 0x28, 0x97, 0x53, 0xed, 0x7e, 0xff, 0x83, 0x38, 0xf2, 0x6a, 0xde, 0x65, 0x75, 0x8d, 0x42, 0x3e, 0xd5, 0xce, 0xeb, - 0x35, 0x4a, 0x65, 0xb7, 0xab, 0x96, 0x3d, 0x7f, 0x3b, 0x34, 0x36, 0xbc, 0x4f, 0x59, 0x8b, 0x85, 0x5a, 0x6e, 0xc3, 0xb9, - 0xdc, 0x61, 0xb1, 0xf8, 0x9b, 0xe5, 0xca, 0x6f, 0x7e, 0x3f, 0x89, 0xfb, 0x6c, 0xab, 0xf1, 0xb9, 0xab, 0x59, 0xcd, 0xf8, - 0xde, 0x7d, 0xbd, 0xea, 0xb5, 0xe5, 0x84, 0x5a, 0xb6, 0x7e, 0x67, 0x89, 0x37, 0xde, 0x6e, 0xad, 0x66, 0xc4, 0x8d, 0xcf, - 0xbf, 0x73, 0x1a, 0x1f, 0xcd, 0x05, 0x50, 0xcb, 0x13, 0xb9, 0xeb, 0x5b, 0x55, 0x8e, 0x14, 0xa5, 0x3d, 0x9b, 0xc6, 0xf6, - 0xec, 0x10, 0xf9, 0xec, 0xe7, 0xa3, 0x94, 0xef, 0xb3, 0xfb, 0x93, 0xca, 0x15, 0xa9, 0xc7, 0xff, 0x55, 0x39, 0x55, 0x3e, - 0x99, 0xed, 0xff, 0xc7, 0xf2, 0x7d, 0x18, 0x4e, 0xb9, 0x9a, 0x77, 0xfd, 0x7f, 0xb4, 0xed, 0x98, 0xb4, 0xf7, 0x93, 0x1d, - 0xe5, 0xda, 0x11, 0x0b, 0xbb, 0xf6, 0xfb, 0x8b, 0x74, 0xad, 0x18, 0xe9, 0x1c, 0x7b, 0xf5, 0xd9, 0xd7, 0xae, 0x4f, 0x56, - 0xc4, 0x7f, 0x5c, 0xcc, 0x93, 0xbb, 0x77, 0x1d, 0xeb, 0xbe, 0x9a, 0x4f, 0x5a, 0x86, 0x2f, 0xc6, 0xff, 0x8e, 0xf8, 0x99, - 0x9d, 0xff, 0x47, 0x79, 0x37, 0x9d, 0x33, 0x6b, 0x4c, 0x3c, 0xcc, 0xe8, 0xfc, 0xdb, 0xe2, 0x7f, 0x6f, 0x19, 0x77, 0xb7, - 0xe6, 0xd7, 0x23, 0xec, 0xf1, 0xd1, 0xf8, 0x9f, 0xdd, 0xef, 0x6d, 0x7e, 0xee, 0x7a, 0xbf, 0xfe, 0xdf, 0xb9, 0xb2, 0x71, - 0x46, 0xfc, 0x9f, 0x12, 0xe5, 0xb9, 0x32, 0x5f, 0x1b, 0xff, 0xef, 0xc7, 0x50, 0x57, 0x1f, 0xf6, 0xde, 0xb9, 0x47, 0xdb, - 0xfc, 0xff, 0x7e, 0x97, 0xe4, 0xdc, 0xdd, 0x9d, 0xbd, 0xab, 0x49, 0x3b, 0x4b, 0xbd, 0x73, 0xcf, 0xe1, 0xa7, 0x63, 0x87, - 0xee, 0xf9, 0xee, 0x19, 0xfd, 0x7f, 0x88, 0xff, 0x05, 0x6b, 0xe1, 0x27, 0xf4, 0x92, 0xab, 0xee, 0xe5, 0xe5, 0xb3, 0xd8, - 0xf7, 0x7e, 0x32, 0x5b, 0x52, 0xf9, 0xfb, 0xff, 0x5f, 0x1f, 0xff, 0x3f, 0xd9, 0xe1, 0xe7, 0x5b, 0xf1, 0x1f, 0xc5, 0x15, - 0xc5, 0x33, 0xe2, 0x3f, 0x36, 0x8e, 0x6a, 0x57, 0xdc, 0xcb, 0x3f, 0x79, 0xfc, 0xdf, 0xbf, 0x13, 0xd4, 0xd7, 0xe3, 0xff, - 0x0b, 0x63, 0xe8, 0x35, 0x4f, 0xa1, 0xbc, 0x17, 0xff, 0x73, 0x77, 0x86, 0x4f, 0x1e, 0xff, 0x9f, 0x1e, 0xff, 0xb3, 0x57, - 0x25, 0x36, 0xcd, 0xff, 0x9f, 0x8e, 0x34, 0x7e, 0x7f, 0xfc, 0x8f, 0xad, 0x7b, 0xf7, 0xd7, 0xe7, 0x9b, 0xe3, 0xd0, 0x67, - 0x61, 0xce, 0x79, 0x8a, 0xe3, 0xfd, 0x99, 0xcd, 0xfc, 0xae, 0xa8, 0xeb, 0xef, 0xff, 0x8f, 0x65, 0xfd, 0x7f, 0xef, 0x93, - 0x2d, 0xbb, 0xee, 0xff, 0xef, 0x7d, 0xa2, 0xa8, 0xfb, 0x0c, 0xc5, 0xff, 0x37, 0xda, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x73, 0xf2, 0x2b, 0x72, 0xeb, 0xf7, 0xe7, 0xc3, 0x38, 0x3d, 0xb7, 0xfe, - 0xdd, 0xfb, 0x33, 0xe3, 0xd8, 0xdc, 0xfa, 0xe3, 0x51, 0x8e, 0xa2, 0xef, 0xe5, 0xd6, 0xf7, 0xee, 0xc7, 0xd3, 0xb7, 0x64, - 0xd6, 0xe5, 0xd6, 0xef, 0x7b, 0x87, 0xfa, 0xf4, 0xdc, 0xfa, 0xe3, 0x26, 0x13, 0xd1, 0xc9, 0xb9, 0xf5, 0xeb, 0x6f, 0x51, - 0x9d, 0x9a, 0x5b, 0x9f, 0xb5, 0xef, 0x4e, 0x3e, 0x6d, 0xfb, 0xe3, 0xc5, 0x6b, 0xf6, 0x46, 0x36, 0x84, 0x93, 0x6b, 0x64, - 0x3e, 0x5b, 0xd3, 0x8a, 0x16, 0xa5, 0xf3, 0x7d, 0xcd, 0xb3, 0x73, 0xeb, 0x7f, 0x3d, 0xc6, 0xeb, 0xd9, 0x58, 0xa3, 0x9c, - 0xf3, 0xbe, 0xef, 0x5d, 0xed, 0x48, 0x8d, 0x1b, 0xd7, 0xe6, 0xd6, 0xba, 0x6e, 0x47, 0xcf, 0xdd, 0x29, 0xe1, 0xdb, 0xb9, - 0xb5, 0xc5, 0x7f, 0x4f, 0xab, 0x1b, 0x4d, 0x51, 0xf7, 0xf4, 0x93, 0x7d, 0x59, 0x83, 0xfa, 0xe2, 0x3f, 0xda, 0x3f, 0xdb, - 0x9b, 0x5b, 0xab, 0xba, 0x9e, 0x20, 0xfe, 0x7f, 0x57, 0x3b, 0x90, 0x99, 0xd1, 0x3e, 0x29, 0xf7, 0x37, 0x6b, 0xc0, 0xce, - 0xdc, 0x5a, 0x5f, 0x8f, 0xff, 0x4a, 0xff, 0x20, 0xfe, 0x7f, 0xcf, 0xf8, 0xbf, 0xaf, 0x2f, 0xaf, 0xaf, 0xff, 0x7f, 0x79, - 0x6f, 0xad, 0xdf, 0x19, 0xff, 0x67, 0xe4, 0xd6, 0x15, 0xff, 0xef, 0x8c, 0xff, 0x6b, 0xfb, 0x13, 0xac, 0x58, 0xcd, 0xed, - 0x9d, 0x4d, 0x88, 0xff, 0xd5, 0x75, 0xe7, 0xa4, 0x9d, 0x21, 0xc4, 0x78, 0x7d, 0xfe, 0x5f, 0xdb, 0x13, 0xb4, 0xda, 0x02, - 0xec, 0xcb, 0xd5, 0xfa, 0x46, 0x6e, 0x7d, 0xb9, 0x75, 0x67, 0xae, 0xd7, 0xf5, 0xe8, 0xef, 0x9b, 0xf7, 0x63, 0x4e, 0x1f, - 0xff, 0xf7, 0xde, 0xab, 0xf9, 0xff, 0x35, 0xa5, 0xd5, 0x2b, 0xde, 0xab, 0xc6, 0xff, 0x2b, 0xda, 0xd8, 0x37, 0x4b, 0x63, - 0xcd, 0xbd, 0xa3, 0xfe, 0x33, 0x8c, 0xa6, 0xd1, 0x1f, 0xef, 0xb4, 0x1a, 0xb0, 0x66, 0x9c, 0xf1, 0x7e, 0x4b, 0x08, 0x7c, - 0xed, 0x49, 0x2e, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x93, 0xfc, 0xfb, 0x9f, 0x72, 0x00, 0xf1, 0x0f, 0xfc, 0x75, 0xf1, 0xff, 0x2f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle genesisFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 1 , 9 }, - { 25, 4, 3 , 3 }, - { 36, 4, 6 , 9 }, - { 50, 4, 5 , 13 }, - { 63, 4, 7 , 9 }, - { 78, 4, 5 , 9 }, - { 91, 4, 1 , 3 }, - { 100, 4, 3 , 9 }, - { 111, 4, 3 , 9 }, - { 122, 4, 5 , 5 }, - { 135, 4, 5 , 5 }, - { 148, 4, 2 , 3 }, - { 158, 4, 4 , 1 }, - { 170, 4, 1 , 1 }, - { 179, 4, 3 , 9 }, - { 190, 4, 5 , 9 }, - { 203, 4, 3 , 9 }, - { 214, 4, 5 , 9 }, - { 227, 4, 5 , 9 }, - { 240, 4, 5 , 9 }, - { 253, 4, 5 , 9 }, - { 266, 4, 5 , 9 }, - { 279, 4, 5 , 9 }, - { 292, 4, 5 , 9 }, - { 305, 4, 5 , 9 }, - { 318, 4, 1 , 7 }, - { 327, 4, 2 , 9 }, - { 337, 4, 3 , 5 }, - { 348, 4, 4 , 3 }, - { 360, 4, 3 , 5 }, - { 371, 4, 5 , 9 }, - { 384, 4, 7 , 9 }, - { 399, 4, 5 , 9 }, - { 412, 4, 5 , 9 }, - { 425, 4, 5 , 9 }, - { 438, 4, 5 , 9 }, - { 451, 4, 5 , 9 }, - { 464, 4, 5 , 9 }, - { 477, 4, 5 , 9 }, - { 490, 4, 5 , 9 }, - { 4, 28, 1 , 9 }, - { 13, 28, 5 , 9 }, - { 26, 28, 5 , 9 }, - { 39, 28, 5 , 9 }, - { 52, 28, 7 , 9 }, - { 67, 28, 5 , 9 }, - { 80, 28, 5 , 9 }, - { 93, 28, 5 , 9 }, - { 106, 28, 5 , 9 }, - { 119, 28, 5 , 9 }, - { 132, 28, 5 , 9 }, - { 145, 28, 5 , 9 }, - { 158, 28, 5 , 9 }, - { 171, 28, 5 , 9 }, - { 184, 28, 7 , 9 }, - { 199, 28, 5 , 9 }, - { 212, 28, 5 , 9 }, - { 225, 28, 5 , 9 }, - { 238, 28, 3 , 9 }, - { 249, 28, 3 , 9 }, - { 260, 28, 3 , 9 }, - { 271, 28, 5 , 3 }, - { 284, 28, 5 , 1 }, - { 297, 28, 2 , 2 }, - { 307, 28, 5 , 7 }, - { 320, 28, 5 , 9 }, - { 333, 28, 5 , 7 }, - { 346, 28, 5 , 9 }, - { 359, 28, 5 , 7 }, - { 372, 28, 4 , 9 }, - { 384, 28, 5 , 9 }, - { 397, 28, 5 , 9 }, - { 410, 28, 1 , 9 }, - { 419, 28, 5 , 11 }, - { 432, 28, 5 , 9 }, - { 445, 28, 2 , 9 }, - { 455, 28, 7 , 7 }, - { 470, 28, 5 , 7 }, - { 483, 28, 5 , 7 }, - { 496, 28, 5 , 9 }, - { 4, 52, 5 , 9 }, - { 17, 52, 5 , 7 }, - { 30, 52, 5 , 7 }, - { 43, 52, 4 , 8 }, - { 55, 52, 5 , 7 }, - { 68, 52, 5 , 7 }, - { 81, 52, 7 , 7 }, - { 96, 52, 5 , 7 }, - { 109, 52, 5 , 9 }, - { 122, 52, 5 , 7 }, - { 135, 52, 4 , 9 }, - { 147, 52, 1 , 9 }, - { 156, 52, 4 , 9 }, - { 168, 52, 6 , 2 }, - { 182, 52, 1 , 9 }, - { 191, 52, 5 , 11 }, - { 204, 52, 6 , 9 }, - { 218, 52, 6 , 9 }, - { 232, 52, 5 , 9 }, - { 245, 52, 5 , 12 }, - { 258, 52, 0 , 0 }, - { 266, 52, 5 , 10 }, - { 279, 52, 7 , 9 }, - { 294, 52, 0 , 0 }, - { 302, 52, 6 , 5 }, - { 316, 52, 5 , 3 }, - { 329, 52, 7 , 9 }, - { 344, 52, 0 , 0 }, - { 352, 52, 4 , 4 }, - { 364, 52, 5 , 7 }, - { 377, 52, 0 , 0 }, - { 385, 52, 0 , 0 }, - { 393, 52, 5 , 12 }, - { 406, 52, 5 , 9 }, - { 419, 52, 7 , 9 }, - { 434, 52, 1 , 1 }, - { 443, 52, 5 , 10 }, - { 456, 52, 0 , 0 }, - { 464, 52, 0 , 0 }, - { 472, 52, 6 , 5 }, - { 486, 52, 9 , 9 }, - { 4, 76, 9 , 7 }, - { 21, 76, 5 , 11 }, - { 34, 76, 5 , 9 }, - { 47, 76, 5 , 12 }, - { 60, 76, 5 , 12 }, - { 73, 76, 5 , 12 }, - { 86, 76, 6 , 12 }, - { 100, 76, 5 , 11 }, - { 113, 76, 5 , 13 }, - { 126, 76, 9 , 9 }, - { 143, 76, 5 , 12 }, - { 156, 76, 5 , 12 }, - { 169, 76, 5 , 12 }, - { 182, 76, 5 , 12 }, - { 195, 76, 5 , 11 }, - { 208, 76, 2 , 12 }, - { 218, 76, 2 , 12 }, - { 228, 76, 3 , 12 }, - { 239, 76, 3 , 11 }, - { 250, 76, 6 , 9 }, - { 264, 76, 6 , 12 }, - { 278, 76, 5 , 12 }, - { 291, 76, 5 , 12 }, - { 304, 76, 5 , 12 }, - { 317, 76, 6 , 12 }, - { 331, 76, 5 , 11 }, - { 344, 76, 5 , 5 }, - { 357, 76, 7 , 9 }, - { 372, 76, 5 , 12 }, - { 385, 76, 5 , 12 }, - { 398, 76, 5 , 12 }, - { 411, 76, 5 , 11 }, - { 424, 76, 5 , 12 }, - { 437, 76, 5 , 9 }, - { 450, 76, 5 , 9 }, - { 463, 76, 5 , 10 }, - { 476, 76, 5 , 10 }, - { 489, 76, 5 , 10 }, - { 4, 100, 6 , 10 }, - { 18, 100, 5 , 9 }, - { 31, 100, 5 , 11 }, - { 44, 100, 9 , 7 }, - { 61, 100, 5 , 10 }, - { 74, 100, 5 , 10 }, - { 87, 100, 5 , 10 }, - { 100, 100, 5 , 10 }, - { 113, 100, 5 , 9 }, - { 126, 100, 2 , 10 }, - { 136, 100, 2 , 10 }, - { 146, 100, 3 , 10 }, - { 157, 100, 3 , 9 }, - { 168, 100, 6 , 9 }, - { 182, 100, 6 , 10 }, - { 196, 100, 5 , 10 }, - { 209, 100, 5 , 10 }, - { 222, 100, 5 , 10 }, - { 235, 100, 6 , 10 }, - { 249, 100, 5 , 9 }, - { 262, 100, 5 , 5 }, - { 275, 100, 7 , 7 }, - { 290, 100, 5 , 10 }, - { 303, 100, 5 , 10 }, - { 316, 100, 5 , 10 }, - { 329, 100, 5 , 9 }, - { 342, 100, 5 , 12 }, - { 355, 100, 5 , 11 }, - { 368, 100, 5 , 11 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo genesisFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 2, 4, 5, { 0 }}, - { 34, 2, 4, 7, { 0 }}, - { 35, 1, 4, 8, { 0 }}, - { 36, 1, 2, 7, { 0 }}, - { 37, 1, 4, 9, { 0 }}, - { 38, 1, 4, 7, { 0 }}, - { 39, 2, 4, 5, { 0 }}, - { 40, 3, 4, 7, { 0 }}, - { 41, 1, 4, 7, { 0 }}, - { 42, 1, 4, 7, { 0 }}, - { 43, 1, 6, 7, { 0 }}, - { 44, 1, 12, 5, { 0 }}, - { 45, 1, 8, 6, { 0 }}, - { 46, 2, 12, 5, { 0 }}, - { 47, 1, 4, 5, { 0 }}, - { 48, 1, 4, 7, { 0 }}, - { 49, 2, 4, 7, { 0 }}, - { 50, 1, 4, 7, { 0 }}, - { 51, 1, 4, 7, { 0 }}, - { 52, 1, 4, 7, { 0 }}, - { 53, 1, 4, 7, { 0 }}, - { 54, 1, 4, 7, { 0 }}, - { 55, 1, 4, 7, { 0 }}, - { 56, 1, 4, 7, { 0 }}, - { 57, 1, 4, 7, { 0 }}, - { 58, 2, 6, 5, { 0 }}, - { 59, 1, 6, 5, { 0 }}, - { 60, 1, 6, 5, { 0 }}, - { 61, 1, 7, 6, { 0 }}, - { 62, 1, 6, 5, { 0 }}, - { 63, 1, 4, 7, { 0 }}, - { 64, 1, 4, 9, { 0 }}, - { 65, 1, 4, 7, { 0 }}, - { 66, 1, 4, 7, { 0 }}, - { 67, 1, 4, 7, { 0 }}, - { 68, 1, 4, 7, { 0 }}, - { 69, 1, 4, 7, { 0 }}, - { 70, 1, 4, 7, { 0 }}, - { 71, 1, 4, 7, { 0 }}, - { 72, 1, 4, 7, { 0 }}, - { 73, 2, 4, 5, { 0 }}, - { 74, 1, 4, 7, { 0 }}, - { 75, 1, 4, 7, { 0 }}, - { 76, 1, 4, 7, { 0 }}, - { 77, 1, 4, 9, { 0 }}, - { 78, 1, 4, 7, { 0 }}, - { 79, 1, 4, 7, { 0 }}, - { 80, 1, 4, 7, { 0 }}, - { 81, 1, 4, 7, { 0 }}, - { 82, 1, 4, 7, { 0 }}, - { 83, 1, 4, 7, { 0 }}, - { 84, 1, 4, 7, { 0 }}, - { 85, 1, 4, 7, { 0 }}, - { 86, 1, 4, 7, { 0 }}, - { 87, 1, 4, 9, { 0 }}, - { 88, 1, 4, 7, { 0 }}, - { 89, 1, 4, 7, { 0 }}, - { 90, 1, 4, 7, { 0 }}, - { 91, 3, 4, 7, { 0 }}, - { 92, 1, 4, 5, { 0 }}, - { 93, 1, 4, 7, { 0 }}, - { 94, 1, 4, 7, { 0 }}, - { 95, 0, 14, 5, { 0 }}, - { 96, 1, 4, 5, { 0 }}, - { 97, 1, 6, 7, { 0 }}, - { 98, 1, 4, 7, { 0 }}, - { 99, 1, 6, 7, { 0 }}, - { 100, 1, 4, 7, { 0 }}, - { 101, 1, 6, 7, { 0 }}, - { 102, 1, 4, 6, { 0 }}, - { 103, 1, 6, 7, { 0 }}, - { 104, 1, 4, 7, { 0 }}, - { 105, 2, 4, 5, { 0 }}, - { 106, 1, 4, 7, { 0 }}, - { 107, 1, 4, 7, { 0 }}, - { 108, 2, 4, 5, { 0 }}, - { 109, 1, 6, 9, { 0 }}, - { 110, 1, 6, 7, { 0 }}, - { 111, 1, 6, 7, { 0 }}, - { 112, 1, 6, 7, { 0 }}, - { 113, 1, 6, 7, { 0 }}, - { 114, 1, 6, 7, { 0 }}, - { 115, 1, 6, 7, { 0 }}, - { 116, 1, 5, 6, { 0 }}, - { 117, 1, 6, 7, { 0 }}, - { 118, 1, 6, 7, { 0 }}, - { 119, 1, 6, 9, { 0 }}, - { 120, 1, 6, 7, { 0 }}, - { 121, 1, 6, 7, { 0 }}, - { 122, 1, 6, 7, { 0 }}, - { 123, 2, 4, 7, { 0 }}, - { 124, 2, 4, 5, { 0 }}, - { 125, 1, 4, 7, { 0 }}, - { 126, 1, 4, 8, { 0 }}, - { 161, 2, 6, 5, { 0 }}, - { 162, 1, 4, 7, { 0 }}, - { 163, 1, 4, 8, { 0 }}, - { 8364, 1, 4, 8, { 0 }}, - { 165, 1, 4, 7, { 0 }}, - { 352, 1, 1, 7, { 0 }}, - { 167, 0, 0, 0, { 0 }}, - { 353, 1, 3, 7, { 0 }}, - { 169, 1, 4, 9, { 0 }}, - { 170, 0, 0, 0, { 0 }}, - { 171, 1, 6, 8, { 0 }}, - { 172, 1, 8, 7, { 0 }}, - { 174, 1, 4, 9, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 1, 4, 6, { 0 }}, - { 177, 1, 6, 7, { 0 }}, - { 178, 0, 0, 0, { 0 }}, - { 179, 0, 0, 0, { 0 }}, - { 381, 1, 1, 7, { 0 }}, - { 181, 1, 6, 7, { 0 }}, - { 182, 1, 4, 9, { 0 }}, - { 183, 2, 8, 5, { 0 }}, - { 382, 1, 3, 7, { 0 }}, - { 185, 0, 0, 0, { 0 }}, - { 186, 0, 0, 0, { 0 }}, - { 187, 1, 6, 8, { 0 }}, - { 338, 1, 4, 11, { 0 }}, - { 339, 1, 6, 11, { 0 }}, - { 376, 1, 2, 7, { 0 }}, - { 191, 1, 6, 7, { 0 }}, - { 192, 1, 1, 7, { 0 }}, - { 193, 1, 1, 7, { 0 }}, - { 194, 1, 1, 7, { 0 }}, - { 195, 1, 1, 7, { 0 }}, - { 196, 1, 2, 7, { 0 }}, - { 197, 1, 0, 7, { 0 }}, - { 198, 1, 4, 11, { 0 }}, - { 199, 1, 4, 7, { 0 }}, - { 200, 1, 1, 7, { 0 }}, - { 201, 1, 1, 7, { 0 }}, - { 202, 1, 1, 7, { 0 }}, - { 203, 1, 2, 7, { 0 }}, - { 204, 1, 1, 5, { 0 }}, - { 205, 2, 1, 5, { 0 }}, - { 206, 1, 1, 5, { 0 }}, - { 207, 1, 2, 5, { 0 }}, - { 208, 0, 4, 7, { 0 }}, - { 209, 1, 1, 7, { 0 }}, - { 210, 1, 1, 7, { 0 }}, - { 211, 1, 1, 7, { 0 }}, - { 212, 1, 1, 7, { 0 }}, - { 213, 1, 1, 7, { 0 }}, - { 214, 1, 2, 7, { 0 }}, - { 215, 1, 6, 7, { 0 }}, - { 216, 0, 4, 7, { 0 }}, - { 217, 1, 1, 7, { 0 }}, - { 218, 1, 1, 7, { 0 }}, - { 219, 1, 1, 7, { 0 }}, - { 220, 1, 2, 7, { 0 }}, - { 221, 1, 1, 7, { 0 }}, - { 222, 1, 4, 7, { 0 }}, - { 223, 1, 4, 7, { 0 }}, - { 224, 1, 3, 7, { 0 }}, - { 225, 1, 3, 7, { 0 }}, - { 226, 1, 3, 7, { 0 }}, - { 227, 1, 3, 7, { 0 }}, - { 228, 1, 4, 7, { 0 }}, - { 229, 1, 2, 7, { 0 }}, - { 230, 1, 6, 11, { 0 }}, - { 231, 1, 6, 7, { 0 }}, - { 232, 1, 3, 7, { 0 }}, - { 233, 1, 3, 7, { 0 }}, - { 234, 1, 3, 7, { 0 }}, - { 235, 1, 4, 7, { 0 }}, - { 236, 1, 3, 5, { 0 }}, - { 237, 2, 3, 5, { 0 }}, - { 238, 1, 3, 5, { 0 }}, - { 239, 1, 4, 5, { 0 }}, - { 240, 1, 4, 7, { 0 }}, - { 241, 1, 3, 7, { 0 }}, - { 242, 1, 3, 7, { 0 }}, - { 243, 1, 3, 7, { 0 }}, - { 244, 1, 3, 7, { 0 }}, - { 245, 1, 3, 7, { 0 }}, - { 246, 1, 4, 7, { 0 }}, - { 247, 1, 6, 7, { 0 }}, - { 248, 0, 6, 7, { 0 }}, - { 249, 1, 3, 7, { 0 }}, - { 250, 1, 3, 7, { 0 }}, - { 251, 1, 3, 7, { 0 }}, - { 252, 1, 4, 7, { 0 }}, - { 253, 1, 3, 7, { 0 }}, - { 254, 1, 4, 7, { 0 }}, - { 255, 1, 4, 7, { 0 }}, -}; - -// Style loading function: Genesis -static void GuiLoadStyleGenesis(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < GENESIS_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(genesisStyleProps[i].controlId, genesisStyleProps[i].propertyId, genesisStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int genesisFontDataSize = 0; - unsigned char *data = DecompressData(genesisFontData, GENESIS_STYLE_FONT_ATLAS_COMP_SIZE, &genesisFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, genesisFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, genesisFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_jungle.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_jungle.h deleted file mode 100644 index 7311a6e..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_jungle.h +++ /dev/null @@ -1,579 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleJungle(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define JUNGLE_STYLE_PROPS_COUNT 17 - -// Custom style name: Jungle -static const GuiStyleProp jungleStyleProps[JUNGLE_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x60827dff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x2c3334ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x82a29fff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0x5f9aa8ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x334e57ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x6aa9b8ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xa9cb8dff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x3b6357ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x97af81ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x5b6462ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x2c3334ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x666b69ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x0000000c }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x638465ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x2b3a3aff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000006 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "PixelIntv.otf" (size: 12, spacing: 0) - -#define JUNGLE_STYLE_FONT_ATLAS_COMP_SIZE 2059 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char jungleFontData[JUNGLE_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0x9d, 0xbd, 0x8e, 0x1d, 0x35, 0x18, 0x86, 0x8d, 0x39, 0x1d, 0x25, 0xa2, 0x00, 0x09, 0x91, 0x06, 0x89, 0x86, 0x86, 0x28, - 0x12, 0x74, 0x7b, 0x01, 0xd4, 0x08, 0x51, 0x20, 0x2a, 0x1a, 0xe0, 0x1e, 0xc8, 0x95, 0xa5, 0xa1, 0xe7, 0x06, 0xb8, 0x0b, - 0x2e, 0xe0, 0x8b, 0x36, 0x9b, 0xdd, 0xec, 0xee, 0x99, 0xb1, 0xfd, 0xfd, 0xd8, 0x9e, 0x9f, 0x67, 0x1f, 0x25, 0x52, 0xc6, - 0x67, 0x66, 0x6c, 0xbf, 0xb6, 0x67, 0x36, 0xdf, 0x7b, 0x3e, 0x4b, 0x02, 0x00, 0x00, 0x00, 0xb8, 0xe2, 0xf6, 0x67, 0xf9, - 0xd8, 0x52, 0x49, 0x7a, 0x5f, 0xd2, 0x7e, 0xad, 0xfb, 0xe3, 0x77, 0x25, 0x79, 0xf5, 0x13, 0xcb, 0x57, 0xcc, 0x2b, 0x75, - 0x58, 0xab, 0xf5, 0x7a, 0xcd, 0x92, 0xaa, 0x64, 0xfd, 0xfa, 0xeb, 0xfd, 0x95, 0x14, 0x6d, 0x78, 0xfa, 0x93, 0x14, 0x6d, - 0x29, 0x9f, 0xd7, 0x5b, 0xff, 0x72, 0x1f, 0xac, 0x97, 0xdd, 0xfd, 0xb9, 0xed, 0x89, 0xac, 0xb8, 0xe6, 0xfa, 0xe7, 0x93, - 0x6a, 0x04, 0xea, 0x47, 0x86, 0xae, 0x77, 0x4b, 0x9f, 0xae, 0xb5, 0x41, 0x94, 0x35, 0xb8, 0x3f, 0xde, 0x53, 0xff, 0xf4, - 0x70, 0x8f, 0xf6, 0xf9, 0x5f, 0x53, 0x45, 0xe4, 0xb2, 0xd8, 0x13, 0xa9, 0xa8, 0x4d, 0x36, 0xdc, 0x29, 0x62, 0x34, 0xa7, - 0xa0, 0xde, 0xcd, 0xc5, 0x36, 0x88, 0x41, 0x7f, 0xdb, 0x08, 0x8d, 0xba, 0x8e, 0x6d, 0xfe, 0xdf, 0x72, 0x79, 0x37, 0x02, - 0xca, 0x57, 0xf5, 0xd7, 0x38, 0x6a, 0xfe, 0xa7, 0xae, 0xea, 0x7b, 0xf4, 0x1f, 0xb1, 0xfe, 0x97, 0x3f, 0x5f, 0xee, 0xb3, - 0xe5, 0xeb, 0xe5, 0xf7, 0xf3, 0x5f, 0xff, 0xf4, 0x8c, 0xd0, 0x5f, 0xff, 0xfc, 0xef, 0xab, 0x7e, 0xc4, 0xfa, 0xbf, 0xc5, - 0xf7, 0xc8, 0xda, 0x73, 0x7c, 0x79, 0xec, 0x48, 0xf7, 0xf9, 0x3f, 0x83, 0x92, 0xfa, 0xb5, 0xf7, 0x3f, 0x71, 0xac, 0xb3, - 0xbd, 0xe7, 0xbf, 0xe5, 0x5a, 0xf7, 0x3d, 0x21, 0x86, 0xf9, 0xb9, 0x57, 0xfd, 0x4b, 0xea, 0x43, 0xc4, 0x5a, 0xa3, 0x79, - 0xca, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x33, 0x62, 0x52, 0x8e, 0xbf, 0x47, - 0x46, 0x22, 0x7b, 0x95, 0xb5, 0xbb, 0x0d, 0x34, 0xce, 0x95, 0x6c, 0xe8, 0xb1, 0x59, 0xfd, 0xd2, 0xcb, 0xed, 0x97, 0xd4, - 0xde, 0x8c, 0x96, 0xda, 0x58, 0xef, 0xe7, 0xd1, 0x3f, 0x2b, 0x63, 0xaf, 0x65, 0x87, 0xde, 0x9a, 0x9f, 0x71, 0x3d, 0x72, - 0xed, 0x6d, 0x9f, 0xb6, 0x4c, 0xb7, 0x02, 0xa4, 0x21, 0xf3, 0xbf, 0xcd, 0xc3, 0xd4, 0xc7, 0xdd, 0xb8, 0xec, 0x33, 0x2b, - 0xd5, 0xf5, 0xa2, 0x76, 0x14, 0x7e, 0x88, 0x36, 0xf7, 0x1d, 0xdf, 0xd1, 0xae, 0x4f, 0xab, 0xa3, 0xc4, 0x32, 0x26, 0x2d, - 0x0e, 0xd6, 0x88, 0xf5, 0x3f, 0x66, 0xfe, 0x97, 0xc6, 0xa9, 0x3c, 0xfb, 0x13, 0xb3, 0x8e, 0xcf, 0xd2, 0xbf, 0xc7, 0x5a, - 0x9d, 0x1a, 0x56, 0x05, 0x6b, 0x5d, 0x6c, 0xcf, 0x7f, 0x8b, 0x53, 0xa7, 0xe4, 0x56, 0xb2, 0xbf, 0x4f, 0xcd, 0x98, 0xff, - 0x9e, 0x39, 0x6e, 0x5b, 0xff, 0xcb, 0xfa, 0xc7, 0xb9, 0xdb, 0x64, 0xca, 0xdb, 0x74, 0xcb, 0x1c, 0xdb, 0xd6, 0xf3, 0x1f, - 0x22, 0xfd, 0x8c, 0xf3, 0x7e, 0x9f, 0x42, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xeb, 0xc7, 0x1b, 0xe5, 0x29, 0x91, 0xc6, 0x2c, 0x3e, 0xeb, 0x7e, 0xad, 0x51, 0x6e, 0xbd, 0xf1, 0xfd, 0x1d, 0xed, - 0xfb, 0x88, 0x88, 0x49, 0x5b, 0x32, 0x98, 0xf9, 0xbd, 0x88, 0xb2, 0x09, 0x47, 0x5e, 0x8f, 0x7e, 0x9b, 0xa9, 0xbf, 0xa5, - 0x3e, 0x76, 0xfd, 0xc5, 0x98, 0x61, 0xb0, 0x96, 0x19, 0x66, 0x5b, 0xfa, 0x5b, 0x5c, 0x07, 0x1e, 0xfd, 0xeb, 0x6b, 0x55, - 0x2a, 0xe8, 0xa1, 0x5f, 0xe3, 0xad, 0xfa, 0x8b, 0x31, 0xef, 0x63, 0x9f, 0xa7, 0x58, 0x1f, 0xfd, 0x2d, 0xfd, 0x76, 0x94, - 0xf5, 0xbf, 0x7e, 0xcd, 0x6c, 0x5c, 0xff, 0xa5, 0xba, 0xaa, 0x48, 0xb8, 0x1b, 0x55, 0x3f, 0xa7, 0x5a, 0xfb, 0xe7, 0xbc, - 0xfa, 0xa7, 0x2e, 0xfa, 0xf7, 0xb9, 0xe3, 0x7e, 0x9e, 0xff, 0x96, 0xec, 0xd5, 0x33, 0x7c, 0x6e, 0x3e, 0x6f, 0x78, 0xad, - 0x74, 0x44, 0xcf, 0xf4, 0x5b, 0xff, 0x71, 0x01, 0xee, 0xc7, 0x25, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x22, 0x46, 0x61, 0x8f, 0x9d, 0xf5, 0x88, 0x00, 0x5e, 0x1f, 0xcf, 0x0d, 0x31, 0xcc, 0xe7, 0xc7, - 0xf3, 0x8a, 0x63, 0x44, 0x94, 0x39, 0xff, 0x6c, 0xfb, 0xf1, 0xb6, 0xe6, 0x41, 0xb3, 0x3b, 0x08, 0x23, 0xe2, 0x80, 0xe3, - 0xf5, 0x4f, 0x4d, 0xf1, 0xd8, 0x6b, 0x25, 0xb3, 0xc1, 0x33, 0x94, 0x95, 0x19, 0x9f, 0x4a, 0x19, 0xa2, 0xf4, 0x6e, 0xa6, - 0x7a, 0x2f, 0x58, 0x72, 0xdd, 0xd5, 0xae, 0x66, 0xdb, 0xa1, 0xb8, 0xe4, 0x8e, 0xa9, 0x79, 0x59, 0xf4, 0x2d, 0xcf, 0xea, - 0xb6, 0xe5, 0x86, 0x35, 0xa0, 0xbf, 0x47, 0x3a, 0xa9, 0xe7, 0xa3, 0xcf, 0x77, 0xd7, 0x5f, 0xff, 0xd4, 0xe0, 0xf1, 0x8b, - 0x76, 0xa4, 0x48, 0x65, 0xf7, 0x5b, 0xcb, 0x08, 0xe8, 0xad, 0x7f, 0xad, 0xad, 0x76, 0x97, 0x50, 0x0a, 0x1d, 0x37, 0xd1, - 0xfa, 0xb7, 0x8c, 0xd3, 0xe8, 0x11, 0x6c, 0x19, 0x01, 0x63, 0xe6, 0xbf, 0xa8, 0xf5, 0x2f, 0xaf, 0x0d, 0xf1, 0xbd, 0x67, - 0x71, 0x01, 0xd9, 0x56, 0x14, 0xaf, 0x5b, 0xcd, 0xa2, 0x62, 0x36, 0xad, 0x1c, 0x23, 0xde, 0xa0, 0x6d, 0x7b, 0x55, 0x47, - 0x3b, 0x36, 0x6d, 0x3d, 0x31, 0x5e, 0x7f, 0x31, 0xef, 0xf8, 0x9d, 0x37, 0xb7, 0xfb, 0xb5, 0x6d, 0xd6, 0xd9, 0x1d, 0x7b, - 0xf1, 0xf3, 0x7f, 0x7b, 0xdf, 0x46, 0x1b, 0x71, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x39, 0x73, 0x14, 0xe8, 0x33, 0xd5, 0xd4, 0xcf, 0xb0, 0xee, 0x9d, 0x35, 0x72, 0xef, 0xdc, 0x5e, 0xfb, 0xdb, 0xd9, - 0xf3, 0x82, 0x49, 0x97, 0x1d, 0xe0, 0xe2, 0xe3, 0x66, 0xbe, 0x2c, 0x66, 0xb5, 0x1e, 0xb2, 0x66, 0xdc, 0xd2, 0x7a, 0x30, - 0x3c, 0xbe, 0x1e, 0xab, 0xe7, 0x23, 0xde, 0x87, 0x17, 0xe3, 0x6d, 0xb3, 0xcd, 0x7f, 0x9b, 0x2f, 0x64, 0x6b, 0xfa, 0xa7, - 0x41, 0xfe, 0x3c, 0x8f, 0xfe, 0xde, 0xdd, 0x9f, 0xed, 0x8e, 0x2c, 0x7d, 0xaf, 0x1e, 0x41, 0xff, 0x36, 0xf7, 0xae, 0xc5, - 0x47, 0x18, 0xed, 0xc3, 0x9b, 0xa5, 0xbf, 0x98, 0xf6, 0xce, 0xf5, 0xe8, 0xef, 0xf3, 0xcb, 0x8f, 0x9b, 0xff, 0xf6, 0x3b, - 0xa6, 0x2e, 0x3b, 0xa3, 0x7b, 0x67, 0xab, 0x2e, 0x53, 0xe3, 0x0c, 0xa7, 0x56, 0xbc, 0x5f, 0xae, 0x97, 0xb3, 0x6b, 0xae, - 0x7b, 0x31, 0xca, 0xbf, 0xea, 0xcd, 0xfe, 0x3d, 0x43, 0x7f, 0xbc, 0x63, 0xc7, 0x1e, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x8b, 0xe3, 0xc4, 0xed, 0x47, 0xa5, 0xcd, 0xea, 0x26, 0x8b, 0x19, 0x3d, - 0xac, 0xb9, 0x63, 0xb4, 0xde, 0x0a, 0x4d, 0xec, 0x5c, 0x13, 0xbb, 0xcc, 0x8f, 0x3e, 0x7b, 0xed, 0x83, 0xf8, 0x5e, 0x5e, - 0x3c, 0xf0, 0x52, 0x3e, 0x5b, 0xcd, 0x72, 0xb2, 0xd4, 0x33, 0xb5, 0x73, 0xcb, 0x77, 0xb6, 0x38, 0x00, 0x74, 0xb9, 0xda, - 0x74, 0x47, 0xb3, 0xb2, 0x9e, 0x16, 0xd7, 0x85, 0x2f, 0x43, 0x9f, 0xf5, 0xb3, 0xf9, 0x89, 0x92, 0x4f, 0x79, 0xf5, 0xa4, - 0x77, 0x5f, 0x2e, 0xf6, 0x78, 0x5e, 0xc9, 0x75, 0x54, 0x3b, 0xb7, 0x7c, 0x67, 0xad, 0xfe, 0x59, 0x9d, 0xab, 0x4d, 0xaf, - 0x4e, 0x8c, 0xaf, 0xd0, 0x96, 0x15, 0xc7, 0xa2, 0x7f, 0x5b, 0xfd, 0x1f, 0xaf, 0xac, 0xcf, 0x4b, 0x5f, 0x14, 0xfe, 0x75, - 0x77, 0xf6, 0xe5, 0xe1, 0x6f, 0xfd, 0xb9, 0xa5, 0x3b, 0xeb, 0x9d, 0x3c, 0x36, 0x17, 0x97, 0x77, 0x04, 0x44, 0x66, 0x53, - 0x4c, 0xae, 0x0c, 0xad, 0x36, 0xc7, 0x83, 0x3c, 0xd9, 0x5b, 0x5e, 0xab, 0x61, 0x69, 0xfe, 0xb7, 0xe9, 0xbf, 0x76, 0xe7, - 0x64, 0xf4, 0xc7, 0xc9, 0x46, 0xe6, 0x7f, 0x8f, 0xac, 0x78, 0xa2, 0x9a, 0x27, 0xad, 0x6b, 0x85, 0x67, 0xfe, 0x97, 0x9e, - 0xff, 0xf1, 0xfa, 0x5b, 0x5d, 0x70, 0xa3, 0xf5, 0x4f, 0x66, 0x9f, 0xaa, 0xf5, 0xad, 0xd1, 0xbe, 0x02, 0x94, 0x9f, 0xc2, - 0x75, 0xfd, 0xd7, 0xa9, 0xeb, 0x6f, 0x79, 0xfe, 0xcb, 0x4e, 0xf4, 0x4f, 0x0e, 0x67, 0x6d, 0x94, 0x1f, 0xd5, 0xff, 0xfe, - 0xdf, 0x53, 0x7f, 0xfd, 0xfb, 0x7f, 0xac, 0xb3, 0xd2, 0x96, 0xd5, 0x71, 0x4f, 0xdf, 0x94, 0xf3, 0xb7, 0xe6, 0xd7, 0x47, - 0xbf, 0xc3, 0xbd, 0x92, 0x1f, 0x86, 0x9d, 0x0b, 0x31, 0x8e, 0x57, 0x3c, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xb0, 0x75, 0xea, 0x5e, 0xb4, 0xcf, 0x17, 0xe3, 0x48, 0xb5, 0xf3, 0xbc, 0xe5, 0x5a, 0x97, 0xda, 0xd7, - 0xf2, 0xad, 0x7c, 0x79, 0x75, 0xf4, 0x8d, 0xbc, 0x91, 0xdf, 0xdc, 0x7d, 0x50, 0x2b, 0xbf, 0x8b, 0xb4, 0x2d, 0xc7, 0xdb, - 0x96, 0x7e, 0x2c, 0x9f, 0xd1, 0xc7, 0xb5, 0xdb, 0xa2, 0x7f, 0x35, 0x3f, 0xd9, 0x8f, 0x72, 0x23, 0x7f, 0x1a, 0xce, 0xf3, - 0x96, 0x6b, 0xf4, 0xff, 0x42, 0xfe, 0x93, 0x7f, 0xe5, 0xb5, 0x7c, 0xb5, 0x78, 0xd6, 0xdf, 0xee, 0x3e, 0xf0, 0xf8, 0xf5, - 0x34, 0x3b, 0x21, 0xc7, 0x45, 0x18, 0xdb, 0xa3, 0xff, 0xb5, 0x78, 0xf2, 0x2f, 0xf2, 0x91, 0xfc, 0xb4, 0xe0, 0x44, 0xab, - 0x9d, 0xe7, 0x2d, 0xd7, 0xe8, 0xff, 0x97, 0x88, 0xfc, 0x23, 0xbf, 0xcb, 0xc7, 0x57, 0x25, 0x37, 0x72, 0xd3, 0x70, 0x6d, - 0x7f, 0x5d, 0x2f, 0xef, 0xea, 0x75, 0x71, 0xee, 0x84, 0x1d, 0x39, 0xff, 0xa3, 0xfc, 0x04, 0x9f, 0xca, 0xcf, 0xf2, 0x5d, - 0x87, 0x3e, 0x8b, 0xd4, 0xff, 0x1b, 0xf9, 0x7f, 0x45, 0xff, 0x98, 0x3e, 0xf0, 0xf8, 0xf5, 0xae, 0xb5, 0x8d, 0x71, 0x16, - 0x48, 0x63, 0x26, 0x5d, 0x6f, 0xdb, 0x7b, 0xf5, 0x99, 0x45, 0xff, 0xf5, 0x36, 0x7d, 0x22, 0xaf, 0x27, 0xea, 0x5f, 0x7b, - 0xfe, 0x27, 0x45, 0xce, 0x58, 0x8d, 0x1b, 0x35, 0xc2, 0xa9, 0xb2, 0x27, 0xfd, 0x4b, 0xe5, 0x7f, 0x4c, 0xd4, 0x7f, 0x8c, - 0x6b, 0xa8, 0xfd, 0xba, 0xe8, 0xbf, 0x2d, 0xfd, 0x2d, 0xef, 0xf6, 0x9e, 0xf5, 0x50, 0x73, 0x2f, 0xab, 0x9f, 0xac, 0x76, - 0x9e, 0xb7, 0x5c, 0x8b, 0x47, 0xff, 0xd1, 0x75, 0xdd, 0x8f, 0x53, 0x11, 0xce, 0xed, 0x54, 0x05, 0xf4, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3d, 0x93, 0x2b, 0xb9, 0xdf, 0x72, 0xa1, 0xc4, 0xe2, 0x67, 0x68, 0xdb, 0x01, - 0x58, 0x8c, 0x39, 0x09, 0x73, 0x68, 0x3b, 0xeb, 0x6d, 0x19, 0x77, 0xbf, 0x52, 0xcb, 0x4b, 0x7a, 0xd4, 0xff, 0xbf, 0x38, - 0x17, 0x4a, 0xb2, 0x3a, 0x77, 0x9f, 0x6f, 0x07, 0x58, 0x9f, 0xb7, 0x21, 0x9b, 0x3c, 0x91, 0xa5, 0x76, 0x6e, 0xe7, 0x7e, - 0xe5, 0xb2, 0x3c, 0x24, 0xe7, 0xcb, 0xec, 0xb8, 0xc5, 0x99, 0x63, 0x1a, 0x52, 0x75, 0x41, 0x8f, 0xf3, 0x11, 0xf4, 0x2e, - 0xb3, 0xe6, 0xf9, 0xdc, 0x62, 0x5b, 0x22, 0xcb, 0xd6, 0xe7, 0xbf, 0x6d, 0x7e, 0xd8, 0xd7, 0x9b, 0xb1, 0x65, 0x1a, 0xdf, - 0xdb, 0xa8, 0xb2, 0xd1, 0xf7, 0x8c, 0xf2, 0x7c, 0x1d, 0x41, 0x7f, 0x4b, 0x86, 0xd0, 0xa3, 0xeb, 0x2f, 0xc1, 0x99, 0xf3, - 0x66, 0xae, 0x6f, 0xbe, 0x6b, 0xa7, 0x21, 0x65, 0x33, 0xf4, 0x6f, 0xd9, 0x23, 0x7e, 0xaf, 0xf3, 0x5f, 0x5b, 0xe7, 0xb3, - 0xcd, 0xff, 0xb6, 0xef, 0x47, 0x1c, 0x5d, 0x7f, 0x41, 0xff, 0x40, 0xcf, 0xd7, 0x1e, 0xe7, 0xff, 0x59, 0xdf, 0xff, 0xdb, - 0xc6, 0x21, 0x9e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe7, 0x61, 0xb3, 0x7a, 0x03, 0xdb, - 0xbc, 0x6f, 0xdb, 0xf0, 0xfd, 0x65, 0xd3, 0x6e, 0x62, 0xe5, 0x36, 0xd8, 0xbc, 0x64, 0x7e, 0xdf, 0x57, 0xbc, 0x87, 0xcd, - 0xda, 0xaf, 0xf6, 0x1c, 0x59, 0xa3, 0x7d, 0x7f, 0xa5, 0x5d, 0x71, 0xad, 0xbb, 0x4d, 0xdb, 0xc6, 0xf0, 0x7a, 0x1b, 0xf6, - 0xec, 0x01, 0x5c, 0x3a, 0x9e, 0x77, 0xb0, 0xfb, 0xd6, 0xac, 0xd8, 0xd7, 0x11, 0x62, 0x66, 0xa9, 0x5a, 0x92, 0x37, 0xef, - 0x53, 0xaa, 0x97, 0x8d, 0xf5, 0xa7, 0x1c, 0xc5, 0xff, 0x75, 0xf4, 0xb2, 0xf1, 0x8e, 0x81, 0x7d, 0xc5, 0xff, 0xf7, 0xa4, - 0xb1, 0xcd, 0xbf, 0xcb, 0xfc, 0xf7, 0x3c, 0xa7, 0xb6, 0x36, 0x36, 0xb4, 0x1e, 0xad, 0xda, 0xb3, 0xc1, 0x52, 0x76, 0x16, - 0xff, 0xcf, 0x96, 0xe6, 0xf8, 0x96, 0xde, 0xc3, 0xd0, 0xbf, 0x5f, 0x3d, 0x8f, 0xf2, 0x3d, 0xa4, 0xbd, 0xf8, 0xdb, 0xb6, - 0xd4, 0x86, 0xb3, 0x7f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xc1, 0x98, 0x3c, 0x7e, - 0x5b, 0x77, 0xf3, 0x8d, 0xbd, 0x9f, 0x3d, 0x8b, 0x5f, 0x0e, 0xd8, 0xf1, 0x37, 0xca, 0xab, 0xd7, 0xe2, 0x75, 0xb4, 0x46, - 0x57, 0x8e, 0x9c, 0xc5, 0x2f, 0x15, 0x47, 0x46, 0xd9, 0xcd, 0x69, 0x1b, 0xa7, 0x33, 0x63, 0x4a, 0xa2, 0x8e, 0x92, 0x1f, - 0xdf, 0x6d, 0x1d, 0x1f, 0x01, 0x8b, 0xa8, 0x4d, 0x6c, 0x99, 0xcf, 0xcb, 0x34, 0xc3, 0x75, 0xa8, 0xcd, 0x36, 0x63, 0x2d, - 0x6b, 0x73, 0x01, 0xce, 0x71, 0x01, 0xc4, 0x94, 0xf9, 0x9e, 0xff, 0x5b, 0x8b, 0xe6, 0xf7, 0xc9, 0xe2, 0xa6, 0x2f, 0xed, - 0xe3, 0xaa, 0x98, 0xe5, 0x3b, 0x4b, 0xa6, 0xdd, 0xab, 0x67, 0x44, 0xf3, 0x8f, 0xaf, 0xff, 0x2c, 0xdf, 0xd9, 0x39, 0xb3, - 0x78, 0xb5, 0x8c, 0xc4, 0x19, 0xf3, 0x7f, 0xbe, 0x8f, 0x67, 0x7b, 0x8e, 0xa4, 0xf1, 0xbd, 0x53, 0xd6, 0x7f, 0xbc, 0x1a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x67, 0x07, 0x60, 0xb4, 0x37, 0xd0, 0xe2, 0x7d, - 0x89, 0xce, 0x80, 0xe7, 0xc9, 0xe2, 0x27, 0x06, 0x5f, 0xdb, 0x3e, 0xfd, 0x48, 0x3d, 0xf6, 0xf8, 0x5d, 0xef, 0xbb, 0x1c, - 0xee, 0xfb, 0x8c, 0xcf, 0xe2, 0x97, 0x4e, 0xa4, 0xff, 0x48, 0x4f, 0x59, 0x29, 0x8b, 0xdb, 0x5e, 0xda, 0x70, 0x1e, 0x37, - 0x62, 0x7c, 0xc4, 0xd9, 0x93, 0x1d, 0xaf, 0x47, 0x99, 0xe5, 0xcc, 0x1e, 0xbb, 0x30, 0xcf, 0xd5, 0xbf, 0x8f, 0xa3, 0xce, - 0x32, 0xda, 0x46, 0xea, 0x3f, 0xcf, 0xfb, 0x74, 0x06, 0xfd, 0xad, 0x35, 0x41, 0x7f, 0xf4, 0xdf, 0x8a, 0xfe, 0x72, 0x12, - 0xfd, 0xb7, 0xe1, 0xff, 0x9b, 0x97, 0x6d, 0x58, 0xcc, 0xdf, 0x50, 0xe0, 0x5d, 0xff, 0x38, 0x2b, 0xa0, 0xf6, 0x1b, 0x4a, - 0xe8, 0x7f, 0xdc, 0xdf, 0x53, 0xf9, 0xdd, 0x10, 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, 0x3c, 0x90, 0xb9, 0x10, 0xfd, 0xd1, 0xff, 0xe4, 0xfa, 0xbf, 0x05 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle jungleFontRecs[189] = { - { 4, 4, 5 , 12 }, - { 17, 4, 2 , 7 }, - { 27, 4, 5 , 3 }, - { 40, 4, 5 , 5 }, - { 53, 4, 6 , 7 }, - { 67, 4, 7 , 7 }, - { 82, 4, 5 , 7 }, - { 95, 4, 3 , 3 }, - { 106, 4, 4 , 8 }, - { 118, 4, 4 , 8 }, - { 130, 4, 5 , 5 }, - { 143, 4, 5 , 5 }, - { 156, 4, 2 , 3 }, - { 166, 4, 5 , 1 }, - { 179, 4, 2 , 2 }, - { 189, 4, 7 , 7 }, - { 204, 4, 7 , 6 }, - { 219, 4, 6 , 6 }, - { 233, 4, 6 , 6 }, - { 4, 24, 6 , 6 }, - { 18, 24, 6 , 6 }, - { 32, 24, 6 , 6 }, - { 46, 24, 6 , 6 }, - { 60, 24, 6 , 6 }, - { 74, 24, 6 , 6 }, - { 88, 24, 6 , 6 }, - { 102, 24, 2 , 5 }, - { 112, 24, 2 , 6 }, - { 122, 24, 3 , 5 }, - { 133, 24, 5 , 3 }, - { 146, 24, 3 , 5 }, - { 157, 24, 6 , 7 }, - { 171, 24, 7 , 7 }, - { 186, 24, 6 , 7 }, - { 200, 24, 6 , 7 }, - { 214, 24, 6 , 7 }, - { 228, 24, 6 , 7 }, - { 4, 44, 6 , 7 }, - { 18, 44, 6 , 7 }, - { 32, 44, 6 , 7 }, - { 46, 44, 6 , 7 }, - { 60, 44, 6 , 7 }, - { 74, 44, 6 , 7 }, - { 88, 44, 6 , 7 }, - { 102, 44, 6 , 7 }, - { 116, 44, 7 , 7 }, - { 131, 44, 6 , 7 }, - { 145, 44, 6 , 7 }, - { 159, 44, 6 , 7 }, - { 173, 44, 7 , 8 }, - { 188, 44, 6 , 7 }, - { 202, 44, 6 , 7 }, - { 216, 44, 6 , 7 }, - { 230, 44, 6 , 7 }, - { 4, 64, 6 , 7 }, - { 18, 64, 7 , 7 }, - { 33, 64, 6 , 7 }, - { 47, 64, 6 , 7 }, - { 61, 64, 6 , 7 }, - { 75, 64, 4 , 8 }, - { 87, 64, 7 , 7 }, - { 102, 64, 4 , 8 }, - { 114, 64, 4 , 2 }, - { 126, 64, 6 , 1 }, - { 140, 64, 2 , 2 }, - { 150, 64, 6 , 5 }, - { 164, 64, 6 , 7 }, - { 178, 64, 6 , 5 }, - { 192, 64, 6 , 7 }, - { 206, 64, 6 , 5 }, - { 220, 64, 6 , 7 }, - { 234, 64, 6 , 7 }, - { 4, 84, 6 , 7 }, - { 18, 84, 6 , 7 }, - { 32, 84, 5 , 8 }, - { 45, 84, 6 , 7 }, - { 59, 84, 6 , 7 }, - { 73, 84, 7 , 5 }, - { 88, 84, 6 , 5 }, - { 102, 84, 6 , 5 }, - { 116, 84, 6 , 7 }, - { 130, 84, 6 , 7 }, - { 144, 84, 6 , 5 }, - { 158, 84, 6 , 5 }, - { 172, 84, 6 , 6 }, - { 186, 84, 6 , 5 }, - { 200, 84, 6 , 5 }, - { 214, 84, 7 , 5 }, - { 229, 84, 6 , 5 }, - { 4, 104, 6 , 7 }, - { 18, 104, 6 , 5 }, - { 32, 104, 4 , 8 }, - { 44, 104, 2 , 8 }, - { 54, 104, 4 , 8 }, - { 66, 104, 5 , 2 }, - { 79, 104, 2 , 7 }, - { 89, 104, 6 , 6 }, - { 103, 104, 6 , 7 }, - { 117, 104, 6 , 7 }, - { 131, 104, 6 , 7 }, - { 145, 104, 0 , 0 }, - { 153, 104, 6 , 9 }, - { 167, 104, 0 , 0 }, - { 175, 104, 7 , 7 }, - { 190, 104, 8 , 8 }, - { 206, 104, 6 , 5 }, - { 220, 104, 8 , 8 }, - { 236, 104, 7 , 7 }, - { 4, 124, 8 , 8 }, - { 20, 124, 4 , 4 }, - { 32, 124, 8 , 8 }, - { 48, 124, 8 , 8 }, - { 64, 124, 8 , 8 }, - { 80, 124, 0 , 0 }, - { 88, 124, 6 , 7 }, - { 102, 124, 5 , 8 }, - { 115, 124, 3 , 3 }, - { 126, 124, 0 , 0 }, - { 134, 124, 8 , 8 }, - { 150, 124, 8 , 8 }, - { 166, 124, 6 , 5 }, - { 180, 124, 10 , 7 }, - { 198, 124, 10 , 5 }, - { 216, 124, 0 , 0 }, - { 224, 124, 6 , 7 }, - { 238, 124, 6 , 10 }, - { 4, 144, 6 , 10 }, - { 18, 144, 6 , 10 }, - { 32, 144, 6 , 10 }, - { 46, 144, 6 , 10 }, - { 60, 144, 6 , 10 }, - { 74, 144, 10 , 7 }, - { 92, 144, 6 , 9 }, - { 106, 144, 6 , 10 }, - { 120, 144, 6 , 10 }, - { 134, 144, 6 , 10 }, - { 148, 144, 6 , 10 }, - { 162, 144, 6 , 10 }, - { 176, 144, 6 , 10 }, - { 190, 144, 6 , 10 }, - { 204, 144, 6 , 10 }, - { 218, 144, 6 , 7 }, - { 232, 144, 6 , 10 }, - { 4, 164, 6 , 10 }, - { 18, 164, 6 , 10 }, - { 32, 164, 6 , 10 }, - { 46, 164, 6 , 10 }, - { 60, 164, 6 , 10 }, - { 74, 164, 6 , 5 }, - { 88, 164, 6 , 7 }, - { 102, 164, 6 , 10 }, - { 116, 164, 6 , 10 }, - { 130, 164, 6 , 10 }, - { 144, 164, 6 , 10 }, - { 158, 164, 6 , 10 }, - { 172, 164, 6 , 7 }, - { 186, 164, 6 , 7 }, - { 200, 164, 6 , 8 }, - { 214, 164, 6 , 8 }, - { 228, 164, 6 , 8 }, - { 4, 184, 6 , 8 }, - { 18, 184, 6 , 8 }, - { 32, 184, 6 , 8 }, - { 46, 184, 9 , 5 }, - { 63, 184, 6 , 7 }, - { 77, 184, 6 , 8 }, - { 91, 184, 6 , 8 }, - { 105, 184, 6 , 8 }, - { 119, 184, 6 , 8 }, - { 133, 184, 6 , 8 }, - { 147, 184, 6 , 8 }, - { 161, 184, 6 , 8 }, - { 175, 184, 6 , 8 }, - { 189, 184, 6 , 7 }, - { 203, 184, 6 , 8 }, - { 217, 184, 6 , 8 }, - { 231, 184, 6 , 8 }, - { 4, 204, 6 , 8 }, - { 18, 204, 6 , 8 }, - { 32, 204, 6 , 8 }, - { 46, 204, 5 , 5 }, - { 59, 204, 6 , 5 }, - { 73, 204, 6 , 8 }, - { 87, 204, 6 , 8 }, - { 101, 204, 6 , 8 }, - { 115, 204, 6 , 8 }, - { 129, 204, 6 , 10 }, - { 143, 204, 6 , 9 }, - { 157, 204, 6 , 10 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo jungleFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 2, 3, { 0 }}, - { 34, 0, 2, 6, { 0 }}, - { 35, 0, 3, 6, { 0 }}, - { 36, 0, 2, 7, { 0 }}, - { 37, 0, 2, 8, { 0 }}, - { 38, 0, 2, 6, { 0 }}, - { 39, 0, 2, 4, { 0 }}, - { 40, 0, 2, 5, { 0 }}, - { 41, 0, 2, 5, { 0 }}, - { 42, 0, 2, 6, { 0 }}, - { 43, 0, 3, 6, { 0 }}, - { 44, 0, 7, 3, { 0 }}, - { 45, 0, 5, 6, { 0 }}, - { 46, 0, 7, 3, { 0 }}, - { 47, 0, 2, 8, { 0 }}, - { 48, 0, 3, 8, { 0 }}, - { 49, 0, 3, 7, { 0 }}, - { 50, 0, 3, 7, { 0 }}, - { 51, 0, 3, 7, { 0 }}, - { 52, 0, 3, 7, { 0 }}, - { 53, 0, 3, 7, { 0 }}, - { 54, 0, 3, 7, { 0 }}, - { 55, 0, 3, 7, { 0 }}, - { 56, 0, 3, 7, { 0 }}, - { 57, 0, 3, 7, { 0 }}, - { 58, 0, 4, 3, { 0 }}, - { 59, 0, 4, 3, { 0 }}, - { 60, 0, 3, 4, { 0 }}, - { 61, 0, 4, 6, { 0 }}, - { 62, 0, 3, 4, { 0 }}, - { 63, 0, 2, 7, { 0 }}, - { 64, 0, 2, 8, { 0 }}, - { 65, 0, 2, 7, { 0 }}, - { 66, 0, 2, 7, { 0 }}, - { 67, 0, 2, 7, { 0 }}, - { 68, 0, 2, 7, { 0 }}, - { 69, 0, 2, 7, { 0 }}, - { 70, 0, 2, 7, { 0 }}, - { 71, 0, 2, 7, { 0 }}, - { 72, 0, 2, 7, { 0 }}, - { 73, 0, 2, 7, { 0 }}, - { 74, 0, 2, 7, { 0 }}, - { 75, 0, 2, 7, { 0 }}, - { 76, 0, 2, 7, { 0 }}, - { 77, 0, 2, 8, { 0 }}, - { 78, 0, 2, 7, { 0 }}, - { 79, 0, 2, 7, { 0 }}, - { 80, 0, 2, 7, { 0 }}, - { 81, 0, 2, 7, { 0 }}, - { 82, 0, 2, 7, { 0 }}, - { 83, 0, 2, 7, { 0 }}, - { 84, 0, 2, 7, { 0 }}, - { 85, 0, 2, 7, { 0 }}, - { 86, 0, 2, 7, { 0 }}, - { 87, 0, 2, 8, { 0 }}, - { 88, 0, 2, 7, { 0 }}, - { 89, 0, 2, 7, { 0 }}, - { 90, 0, 2, 7, { 0 }}, - { 91, 0, 2, 5, { 0 }}, - { 92, 0, 2, 8, { 0 }}, - { 93, 0, 2, 5, { 0 }}, - { 94, 0, -1, 5, { 0 }}, - { 95, 0, 10, 7, { 0 }}, - { 96, 0, -1, 3, { 0 }}, - { 97, 0, 4, 7, { 0 }}, - { 98, 0, 2, 7, { 0 }}, - { 99, 0, 4, 7, { 0 }}, - { 100, 0, 2, 7, { 0 }}, - { 101, 0, 4, 7, { 0 }}, - { 102, 0, 2, 7, { 0 }}, - { 103, 0, 4, 7, { 0 }}, - { 104, 0, 2, 7, { 0 }}, - { 105, 0, 2, 7, { 0 }}, - { 106, 0, 2, 6, { 0 }}, - { 107, 0, 2, 7, { 0 }}, - { 108, 0, 2, 7, { 0 }}, - { 109, 0, 4, 8, { 0 }}, - { 110, 0, 4, 7, { 0 }}, - { 111, 0, 4, 7, { 0 }}, - { 112, 0, 4, 7, { 0 }}, - { 113, 0, 4, 7, { 0 }}, - { 114, 0, 4, 7, { 0 }}, - { 115, 0, 4, 7, { 0 }}, - { 116, 0, 3, 7, { 0 }}, - { 117, 0, 4, 7, { 0 }}, - { 118, 0, 4, 7, { 0 }}, - { 119, 0, 4, 8, { 0 }}, - { 120, 0, 4, 7, { 0 }}, - { 121, 0, 4, 7, { 0 }}, - { 122, 0, 4, 7, { 0 }}, - { 123, 0, 2, 5, { 0 }}, - { 124, 0, 2, 3, { 0 }}, - { 125, 0, 2, 5, { 0 }}, - { 126, 0, -1, 6, { 0 }}, - { 161, 0, 2, 3, { 0 }}, - { 162, 0, 3, 7, { 0 }}, - { 163, 0, 2, 7, { 0 }}, - { 8364, 0, 2, 7, { 0 }}, - { 165, 0, 2, 7, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 1, 7, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 0, 2, 8, { 0 }}, - { 170, 0, 1, 8, { 0 }}, - { 171, 0, 3, 7, { 0 }}, - { 172, 0, 1, 8, { 0 }}, - { 174, 0, 2, 8, { 0 }}, - { 175, 0, 1, 8, { 0 }}, - { 176, 0, 1, 2, { 0 }}, - { 177, 0, 1, 8, { 0 }}, - { 178, 0, 1, 8, { 0 }}, - { 179, 0, 1, 8, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 4, 7, { 0 }}, - { 182, 0, 1, 4, { 0 }}, - { 183, 0, 4, 4, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 1, 8, { 0 }}, - { 186, 0, 1, 8, { 0 }}, - { 187, 0, 3, 7, { 0 }}, - { 338, 0, 2, 11, { 0 }}, - { 339, 0, 4, 11, { 0 }}, - { 376, 0, 0, 0, { 0 }}, - { 191, 0, 2, 7, { 0 }}, - { 192, 0, -1, 7, { 0 }}, - { 193, 0, -1, 7, { 0 }}, - { 194, 0, -1, 7, { 0 }}, - { 195, 0, -1, 7, { 0 }}, - { 196, 0, -1, 7, { 0 }}, - { 197, 0, -1, 7, { 0 }}, - { 198, 0, 2, 11, { 0 }}, - { 199, 0, 2, 7, { 0 }}, - { 200, 0, -1, 7, { 0 }}, - { 201, 0, -1, 7, { 0 }}, - { 202, 0, -1, 7, { 0 }}, - { 203, 0, -1, 7, { 0 }}, - { 204, 0, -1, 7, { 0 }}, - { 205, 0, -1, 7, { 0 }}, - { 206, 0, -1, 7, { 0 }}, - { 207, 0, -1, 7, { 0 }}, - { 208, 0, 2, 7, { 0 }}, - { 209, 0, -1, 7, { 0 }}, - { 210, 0, -1, 7, { 0 }}, - { 211, 0, -1, 7, { 0 }}, - { 212, 0, -1, 7, { 0 }}, - { 213, 0, -1, 7, { 0 }}, - { 214, 0, -1, 7, { 0 }}, - { 215, 0, 3, 7, { 0 }}, - { 216, 0, 2, 7, { 0 }}, - { 217, 0, -1, 7, { 0 }}, - { 218, 0, -1, 7, { 0 }}, - { 219, 0, -1, 7, { 0 }}, - { 220, 0, -1, 7, { 0 }}, - { 221, 0, -1, 7, { 0 }}, - { 222, 0, 2, 7, { 0 }}, - { 223, 0, 2, 7, { 0 }}, - { 224, 0, 1, 7, { 0 }}, - { 225, 0, 1, 7, { 0 }}, - { 226, 0, 1, 7, { 0 }}, - { 227, 0, 1, 7, { 0 }}, - { 228, 0, 1, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 4, 10, { 0 }}, - { 231, 0, 4, 7, { 0 }}, - { 232, 0, 1, 7, { 0 }}, - { 233, 0, 1, 7, { 0 }}, - { 234, 0, 1, 7, { 0 }}, - { 235, 0, 1, 7, { 0 }}, - { 236, 0, 1, 7, { 0 }}, - { 237, 0, 1, 7, { 0 }}, - { 238, 0, 1, 7, { 0 }}, - { 239, 0, 1, 7, { 0 }}, - { 240, 0, 2, 7, { 0 }}, - { 241, 0, 1, 7, { 0 }}, - { 242, 0, 1, 7, { 0 }}, - { 243, 0, 1, 7, { 0 }}, - { 244, 0, 1, 7, { 0 }}, - { 245, 0, 1, 7, { 0 }}, - { 246, 0, 1, 7, { 0 }}, - { 247, 0, 3, 6, { 0 }}, - { 248, 0, 4, 7, { 0 }}, - { 249, 0, 1, 7, { 0 }}, - { 250, 0, 1, 7, { 0 }}, - { 251, 0, 1, 7, { 0 }}, - { 252, 0, 1, 7, { 0 }}, - { 253, 0, 1, 7, { 0 }}, - { 254, 0, 2, 7, { 0 }}, - { 255, 0, 1, 7, { 0 }}, -}; - -// Style loading function: Jungle -static void GuiLoadStyleJungle(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < JUNGLE_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(jungleStyleProps[i].controlId, jungleStyleProps[i].propertyId, jungleStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int jungleFontDataSize = 0; - unsigned char *data = DecompressData(jungleFontData, JUNGLE_STYLE_FONT_ATLAS_COMP_SIZE, &jungleFontDataSize); - Image imFont = { data, 256, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 12; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, jungleFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, jungleFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 254, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_lavanda.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_lavanda.h deleted file mode 100644 index 7e8902b..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_lavanda.h +++ /dev/null @@ -1,607 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleLavanda(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define LAVANDA_STYLE_PROPS_COUNT 16 - -// Custom style name: Lavanda -static const GuiStyleProp lavandaStyleProps[LAVANDA_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0xab9bd3ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x3e4350ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xdadaf4ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xee84a0ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xf4b7c7ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xb7657bff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xd5c8dbff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x966ec0ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xd7ccf7ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x8fa2bdff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x6b798dff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x8292a9ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 18, (int)0x84adb7ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x5b5b81ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "Cartridge.ttf" (size: 16, spacing: 1) - -#define LAVANDA_STYLE_FONT_ATLAS_COMP_SIZE 2636 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char lavandaFontData[LAVANDA_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xdb, 0xd2, 0xa4, 0xba, 0x0d, 0x06, 0x50, 0xde, 0xff, 0xa5, 0xbf, 0x5c, 0xa4, 0x52, 0x49, 0xaa, 0x66, 0x63, 0x24, - 0x0b, 0x9a, 0xee, 0x59, 0xb3, 0xee, 0x7e, 0xa6, 0x4f, 0x06, 0xf9, 0x04, 0x96, 0x73, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, - 0xfc, 0x4b, 0x4e, 0xfe, 0x6f, 0x2e, 0xbf, 0xd3, 0x7f, 0xfe, 0x9e, 0xc5, 0xff, 0xf8, 0xff, 0xff, 0x75, 0xed, 0x7d, 0x73, - 0xf9, 0xf3, 0x3b, 0x47, 0xf2, 0xc7, 0xef, 0x97, 0x8d, 0xd7, 0xff, 0xd3, 0x3b, 0xd4, 0xff, 0xff, 0x7f, 0xff, 0x55, 0xca, - 0xf1, 0xfc, 0x35, 0x47, 0xf1, 0x73, 0xb2, 0xf8, 0x9c, 0xab, 0xbf, 0xb0, 0x56, 0xfa, 0xb5, 0x73, 0x9e, 0xd3, 0x2b, 0xb2, - 0xf3, 0xca, 0xf3, 0xd7, 0x1d, 0xe5, 0xb2, 0x3a, 0x96, 0x25, 0x5c, 0x3d, 0xcb, 0xef, 0x8b, 0xff, 0x5c, 0x78, 0xe5, 0xf9, - 0xf1, 0x6c, 0xd4, 0x09, 0xeb, 0x72, 0xac, 0xd6, 0x18, 0x3b, 0xa5, 0x7a, 0xf6, 0x1d, 0x2b, 0xff, 0xff, 0x5a, 0x6d, 0xbb, - 0x5f, 0x3b, 0xae, 0x4a, 0xbf, 0xfe, 0xad, 0xaf, 0x94, 0x5c, 0x06, 0xfe, 0x7f, 0x5a, 0xdf, 0x7e, 0xe2, 0xfa, 0xcf, 0xf6, - 0xb5, 0x7d, 0xa5, 0xad, 0x9c, 0xb8, 0x46, 0xab, 0xf1, 0x9f, 0x56, 0x8b, 0x90, 0x45, 0x99, 0xde, 0x1d, 0xff, 0x9d, 0x76, - 0x34, 0x37, 0x95, 0x6a, 0xb5, 0xbe, 0xad, 0x5f, 0x37, 0x29, 0xb6, 0xb4, 0xbd, 0xf8, 0x5f, 0x7f, 0x4e, 0xc6, 0xca, 0x6d, - 0xdd, 0x7b, 0xa9, 0x97, 0x76, 0xef, 0xb7, 0x75, 0x6b, 0x95, 0x34, 0x7a, 0x40, 0xfd, 0xfa, 0x7a, 0xaa, 0xc4, 0x6b, 0x51, - 0x7a, 0xa5, 0x75, 0xcb, 0x58, 0xbd, 0x9f, 0x72, 0x6b, 0x95, 0x47, 0xca, 0xf2, 0x68, 0xb7, 0x3a, 0xd5, 0x5f, 0x94, 0x72, - 0x5c, 0x56, 0xfa, 0xe5, 0xfd, 0xab, 0x30, 0xa5, 0xd1, 0x59, 0x6e, 0x6b, 0xff, 0xd7, 0xad, 0x71, 0x9a, 0x57, 0x72, 0xca, - 0x7d, 0x83, 0x94, 0x47, 0x95, 0xeb, 0x73, 0xbc, 0x1e, 0x8b, 0xcc, 0xc7, 0x7f, 0xaf, 0x1f, 0xf3, 0xa7, 0x72, 0xef, 0xf6, - 0x12, 0xe6, 0xeb, 0xc6, 0xb7, 0xc7, 0x7f, 0x1a, 0x7d, 0x8c, 0xea, 0x6b, 0x52, 0x9e, 0x7b, 0x39, 0x6f, 0x23, 0xaf, 0x5f, - 0x99, 0x19, 0xba, 0x26, 0x3b, 0xad, 0x41, 0x1a, 0xe3, 0xc5, 0xdd, 0x96, 0x7c, 0x7a, 0xce, 0xea, 0xc9, 0xf8, 0xcf, 0x85, - 0x19, 0x89, 0xd5, 0x95, 0x97, 0x65, 0x29, 0xe4, 0x86, 0xf6, 0xff, 0x0d, 0x73, 0xaa, 0x4f, 0xc5, 0x7f, 0x96, 0x73, 0x5b, - 0x13, 0xd7, 0x74, 0x46, 0xce, 0x43, 0x3e, 0x70, 0x16, 0xae, 0xc4, 0xff, 0xd1, 0x6c, 0xc9, 0x7f, 0x3b, 0xfe, 0x8f, 0x8b, - 0xbd, 0xf8, 0xa3, 0x31, 0x0b, 0xf8, 0x5b, 0xf1, 0x9f, 0x46, 0xcc, 0x64, 0x6c, 0x64, 0xde, 0xeb, 0x33, 0xcc, 0xc6, 0xff, - 0x7b, 0x6b, 0xe1, 0x55, 0xff, 0x3f, 0x17, 0xef, 0x30, 0xfd, 0x4e, 0xfc, 0x1f, 0xa3, 0xfd, 0xff, 0xf5, 0x15, 0x33, 0x31, - 0x6b, 0xf4, 0x77, 0xc4, 0x7f, 0x9a, 0xf5, 0x70, 0x06, 0x67, 0x6e, 0xbe, 0x39, 0xfe, 0x3b, 0xd1, 0x93, 0x76, 0x5d, 0x79, - 0xde, 0xba, 0xe5, 0xa4, 0xc7, 0x56, 0xad, 0x19, 0xee, 0x9e, 0xff, 0xef, 0xdf, 0xb7, 0xc9, 0xf6, 0xab, 0xf3, 0xf0, 0xf8, - 0xff, 0xb9, 0xf8, 0x3f, 0xca, 0x33, 0xd8, 0xe7, 0xf7, 0x5a, 0xea, 0xf5, 0x4f, 0x1a, 0xf7, 0xbb, 0x8f, 0x91, 0xdf, 0xf2, - 0xb6, 0xf3, 0x70, 0xed, 0x35, 0x29, 0xcf, 0x6d, 0x9c, 0xdf, 0x01, 0xfb, 0xe7, 0xd9, 0x88, 0xce, 0xbc, 0xec, 0xfb, 0xea, - 0xd8, 0xbc, 0xa6, 0x8d, 0xfd, 0x5b, 0x4a, 0x81, 0x67, 0x9e, 0x31, 0x40, 0xfc, 0x8b, 0x7f, 0x78, 0xfb, 0x73, 0xcb, 0xe2, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xdf, 0x5a, 0xa1, 0x57, 0x5b, 0x15, 0xbe, - 0x93, 0xcb, 0xb8, 0x93, 0x9d, 0x6e, 0xbd, 0x42, 0x3d, 0xad, 0x9c, 0x04, 0xbd, 0xd7, 0xe5, 0x34, 0x0b, 0x5a, 0x46, 0xf2, - 0x13, 0x74, 0xf3, 0x4e, 0x55, 0x32, 0x08, 0x54, 0xf7, 0x32, 0xe8, 0xee, 0x1b, 0x50, 0xfb, 0x8c, 0xce, 0x6a, 0xfd, 0x0c, - 0x65, 0x41, 0xe8, 0xe4, 0x16, 0xde, 0x5b, 0x95, 0x5a, 0xcf, 0xd1, 0xb6, 0x93, 0xf5, 0x23, 0xad, 0x55, 0x73, 0x93, 0xf1, - 0x9f, 0x4b, 0xb9, 0x0e, 0x3a, 0x19, 0x6a, 0x3a, 0x59, 0x6a, 0x32, 0x9c, 0x5f, 0xe7, 0x5a, 0x94, 0x5e, 0xcb, 0x39, 0x95, - 0xe2, 0x77, 0xaa, 0xef, 0xca, 0x90, 0x46, 0xa4, 0xd5, 0xca, 0xb0, 0xb3, 0x3e, 0x72, 0xa7, 0x55, 0xd9, 0xbb, 0x7a, 0x53, - 0xca, 0x45, 0x7c, 0x77, 0xde, 0x9d, 0x94, 0xe3, 0xe7, 0xd9, 0xf8, 0x4f, 0xe3, 0x17, 0xe5, 0x52, 0xce, 0xe5, 0x6e, 0x46, - 0xb6, 0x6e, 0x26, 0xa7, 0x5e, 0x16, 0x81, 0x7e, 0xfc, 0x5f, 0x3b, 0x03, 0xbf, 0x1d, 0xff, 0x3b, 0xfb, 0xc7, 0x4c, 0xc4, - 0x7f, 0xb6, 0x3f, 0x39, 0x23, 0xe5, 0x5a, 0x79, 0x97, 0x55, 0xfc, 0x3c, 0x19, 0xff, 0xfd, 0x8c, 0x85, 0x67, 0xbf, 0x38, - 0x5b, 0xf1, 0x3f, 0xf9, 0xba, 0xa3, 0x99, 0x5f, 0x6b, 0x3f, 0xfe, 0xd3, 0xec, 0xb9, 0xce, 0xf5, 0x3d, 0xa7, 0xf2, 0x06, - 0x77, 0xae, 0xcf, 0x5c, 0xc8, 0xd7, 0xbb, 0xdb, 0x33, 0xa8, 0xe5, 0xae, 0xce, 0xb2, 0x35, 0xde, 0x8d, 0xff, 0x3c, 0xd8, - 0xff, 0xaf, 0x8c, 0xc8, 0x32, 0xde, 0xfe, 0x7f, 0x57, 0xfc, 0xdf, 0xd5, 0xff, 0xbf, 0xd2, 0x92, 0x75, 0xf7, 0xf5, 0x7a, - 0x3a, 0xfe, 0xef, 0x98, 0x97, 0xca, 0x48, 0xcb, 0xd5, 0xaf, 0x31, 0xae, 0xf6, 0xff, 0x33, 0xb4, 0x2b, 0x55, 0x6f, 0xdc, - 0x92, 0x9b, 0xdb, 0xff, 0x34, 0x46, 0x4a, 0xbb, 0xf1, 0x7f, 0x5c, 0xca, 0x83, 0x9a, 0xe6, 0xb9, 0xae, 0xd4, 0xe1, 0x3b, - 0x3b, 0xef, 0xed, 0xf4, 0xe0, 0xd3, 0xdc, 0x79, 0x2e, 0x8d, 0x91, 0xea, 0x6f, 0xc4, 0xff, 0xce, 0x2e, 0x5d, 0x4f, 0xf5, - 0xdc, 0x8f, 0x0b, 0x6d, 0xde, 0x1b, 0xe3, 0x7f, 0x7e, 0xfe, 0x6f, 0xfd, 0x1d, 0xf2, 0xf0, 0xf8, 0x3f, 0x8d, 0x28, 0x7e, - 0x5f, 0xfc, 0xd7, 0xdb, 0xa3, 0x99, 0xfd, 0x90, 0xa7, 0x6b, 0x80, 0xce, 0xee, 0x99, 0x9d, 0x9d, 0x53, 0x53, 0xda, 0x89, - 0x6c, 0xae, 0x47, 0x32, 0xd5, 0xff, 0x7f, 0x2e, 0xfe, 0xd3, 0xba, 0x0e, 0x3b, 0xdf, 0xbf, 0xbf, 0x3b, 0x40, 0xb6, 0x5a, - 0x95, 0x8c, 0xc6, 0xff, 0xc4, 0x2c, 0x5d, 0xb7, 0x4e, 0x7a, 0x7e, 0x3f, 0xf4, 0xe7, 0xee, 0x59, 0xa7, 0xb9, 0xab, 0x5b, - 0x46, 0xee, 0x8c, 0x67, 0x64, 0x2e, 0x2d, 0x5b, 0xf1, 0xbf, 0x7f, 0x2e, 0xaa, 0xfb, 0x32, 0xae, 0xfb, 0xc6, 0xf5, 0x79, - 0x91, 0x6e, 0xfc, 0xf7, 0x32, 0xd4, 0x5f, 0xfd, 0x1d, 0xff, 0x3c, 0x57, 0x72, 0x8c, 0xdf, 0x91, 0x4e, 0xab, 0xae, 0xea, - 0xf6, 0x2c, 0xd2, 0xda, 0x35, 0xff, 0x7d, 0xf1, 0xff, 0x44, 0xad, 0x31, 0x33, 0xf3, 0xd9, 0xb9, 0x17, 0x99, 0xf2, 0x35, - 0x3d, 0x3d, 0xc2, 0xfa, 0xfc, 0x19, 0xbd, 0x6f, 0x47, 0xa3, 0x37, 0x65, 0xe3, 0x9d, 0x88, 0xff, 0xa3, 0x71, 0xbf, 0x62, - 0xff, 0x4e, 0xdf, 0x77, 0x66, 0x35, 0xce, 0x8d, 0x4f, 0x25, 0xcc, 0xbd, 0xbf, 0x67, 0x10, 0x3f, 0x17, 0x75, 0x7f, 0x6b, - 0xa9, 0xfd, 0x1d, 0xf1, 0xff, 0x4c, 0x8d, 0x3d, 0x3d, 0x12, 0x81, 0x4f, 0x8e, 0xa9, 0x33, 0x32, 0x02, 0xe7, 0xb7, 0xda, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa9, 0xf5, 0x63, 0x33, 0xf9, 0x89, 0xd6, - 0x6b, 0x9a, 0x6b, 0x2b, 0x21, 0xd2, 0x58, 0xaf, 0xbc, 0x97, 0x47, 0xbf, 0x9a, 0xd5, 0xe5, 0x7c, 0xbd, 0x4c, 0x2e, 0xae, - 0xa1, 0x59, 0xad, 0x10, 0xc9, 0xf6, 0x5a, 0xbc, 0xee, 0xae, 0x06, 0xab, 0x4f, 0xeb, 0x64, 0x65, 0x38, 0xdf, 0x4d, 0xa0, - 0xbb, 0x0f, 0xc0, 0x59, 0x96, 0x83, 0x94, 0x3f, 0xef, 0xec, 0x95, 0x29, 0xe7, 0x0a, 0x4b, 0x61, 0xed, 0x54, 0x5a, 0x57, - 0x68, 0x27, 0xa3, 0xc3, 0xff, 0x7e, 0x5e, 0xe5, 0x6c, 0x65, 0x79, 0xa5, 0x55, 0xb2, 0xf1, 0xd5, 0xf3, 0x9d, 0xac, 0x32, - 0x10, 0xf6, 0xf3, 0xe8, 0x67, 0x70, 0x05, 0x7e, 0x86, 0xfe, 0x5a, 0x59, 0x25, 0x96, 0xad, 0x3a, 0x3e, 0x43, 0x75, 0xed, - 0x6e, 0x79, 0xa5, 0x51, 0x73, 0xa7, 0x5d, 0xe3, 0x1f, 0xad, 0x0c, 0x09, 0x19, 0xc8, 0x08, 0x90, 0x56, 0x09, 0x9d, 0xb5, - 0x42, 0x69, 0xaf, 0x42, 0xac, 0x67, 0x39, 0x4a, 0xf9, 0x3b, 0x1e, 0x8d, 0x3c, 0xa8, 0xb3, 0xd9, 0x97, 0x76, 0xf6, 0xfd, - 0x98, 0xc9, 0x98, 0x39, 0xb5, 0x86, 0xbe, 0x97, 0x9b, 0xa9, 0xfe, 0xd9, 0x9d, 0xab, 0x2a, 0x1b, 0xbd, 0xd0, 0x14, 0x7f, - 0x5d, 0x2e, 0xb7, 0x71, 0x7f, 0x6e, 0xf5, 0xea, 0x71, 0x53, 0xcf, 0xa9, 0x34, 0x95, 0x3b, 0xe9, 0xae, 0xf8, 0x3f, 0xc6, - 0xb3, 0x9c, 0xf5, 0x7a, 0x21, 0xbb, 0x3d, 0xf5, 0xbd, 0xf8, 0x5f, 0xef, 0x52, 0xb4, 0x5f, 0xe3, 0xdf, 0x19, 0xff, 0xbd, - 0x5c, 0x88, 0x59, 0xf6, 0xba, 0xbb, 0x7b, 0xaf, 0xd5, 0xfa, 0xf1, 0x69, 0x67, 0x97, 0xed, 0xe5, 0xd1, 0xc8, 0x22, 0xb7, - 0x6c, 0x6f, 0xdd, 0xfe, 0x7e, 0xff, 0x7f, 0xdd, 0x8f, 0x3f, 0xab, 0x1b, 0xef, 0xc8, 0xff, 0x77, 0x7f, 0xfc, 0xd7, 0xb2, - 0x26, 0xf7, 0xda, 0xf0, 0x6b, 0x79, 0x74, 0x27, 0xb3, 0xdf, 0x7d, 0x2a, 0xfe, 0xeb, 0xe3, 0xea, 0xe9, 0x31, 0x45, 0xe7, - 0x0c, 0xe5, 0x42, 0x2e, 0xc3, 0xb4, 0xf2, 0xa7, 0x9e, 0x8f, 0x7a, 0x67, 0xb3, 0xf0, 0xdc, 0xf9, 0x3e, 0x57, 0xc6, 0x62, - 0xcf, 0xc5, 0x7f, 0x36, 0x46, 0xe0, 0x7b, 0xed, 0x56, 0x2e, 0xb7, 0x22, 0xf7, 0xc7, 0xff, 0xdc, 0x9e, 0x95, 0xfb, 0x79, - 0xfa, 0x7a, 0x7d, 0xfc, 0x6c, 0xcc, 0x82, 0x75, 0xce, 0xe8, 0xb5, 0xb9, 0x8e, 0x3c, 0x32, 0xeb, 0x9d, 0xad, 0xb8, 0xb9, - 0x7f, 0x4e, 0xbe, 0x36, 0x1b, 0x34, 0x1f, 0xff, 0x47, 0x71, 0xfc, 0x7d, 0x5c, 0xdc, 0xab, 0x63, 0x77, 0xdc, 0x9a, 0xad, - 0xfe, 0xf8, 0xec, 0x9c, 0x55, 0xfd, 0xbb, 0x3f, 0xdf, 0xff, 0xdf, 0xcb, 0x1a, 0x9b, 0x56, 0x3f, 0x38, 0x1b, 0x75, 0x69, - 0x27, 0xf3, 0xf2, 0x4e, 0x8c, 0x4d, 0xee, 0x53, 0x36, 0xf1, 0x1d, 0xcf, 0x47, 0x11, 0xd3, 0xf1, 0x5f, 0x2f, 0x85, 0x7c, - 0xb4, 0x1f, 0xd4, 0xbf, 0x5a, 0xfb, 0x11, 0x98, 0xc1, 0xb3, 0xf8, 0xfc, 0xfc, 0x5f, 0xda, 0x75, 0x5f, 0x36, 0x33, 0x9e, - 0x57, 0xdb, 0x8e, 0x67, 0xf3, 0x09, 0xe6, 0xa5, 0xf9, 0x0b, 0xfb, 0xb9, 0xff, 0xf3, 0x48, 0xa4, 0x4d, 0xe7, 0x9c, 0xbe, - 0xbf, 0x1e, 0xd9, 0xbb, 0x77, 0x96, 0xdb, 0xcf, 0x62, 0x6e, 0x7f, 0xf7, 0x2c, 0x9f, 0x33, 0xe8, 0xde, 0xdf, 0xc8, 0xe0, - 0xfd, 0x44, 0x8e, 0xad, 0x79, 0x9a, 0x7c, 0xf8, 0x3b, 0x1e, 0xce, 0xef, 0x43, 0xf1, 0xff, 0xe9, 0x72, 0xef, 0xcf, 0xd5, - 0xc9, 0x7a, 0xfb, 0xfd, 0xf1, 0xcf, 0x3b, 0xe3, 0xff, 0x78, 0x49, 0xfc, 0xf3, 0x7c, 0x0d, 0x2e, 0xfe, 0xdf, 0x77, 0x2e, - 0x77, 0x9f, 0xff, 0x7d, 0xfb, 0xaf, 0xd3, 0x96, 0xdf, 0x55, 0xaa, 0xca, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x58, 0xaf, 0x1c, 0xca, 0x50, 0x46, 0xa0, 0xe3, 0xff, 0x72, 0x97, 0xac, 0x73, 0x4d, 0x76, 0xf2, - 0xc6, 0xf7, 0x57, 0x53, 0xa5, 0x7d, 0x6c, 0x27, 0x17, 0x4b, 0x2e, 0xad, 0x00, 0xc9, 0xc8, 0x7e, 0x09, 0xfd, 0x52, 0x4a, - 0x29, 0x9b, 0x68, 0x25, 0x7f, 0x5b, 0x1a, 0x2b, 0x83, 0x7b, 0x59, 0x9f, 0x3e, 0x75, 0x9e, 0x57, 0x19, 0x57, 0xfa, 0xbf, - 0x26, 0x37, 0xac, 0x1e, 0xbc, 0xfa, 0x3d, 0x7a, 0x59, 0x58, 0x73, 0x69, 0xa5, 0x5b, 0xda, 0xb9, 0x5c, 0xfb, 0xeb, 0x29, - 0xd3, 0x5c, 0x4f, 0x99, 0xed, 0xd2, 0x5e, 0x45, 0x63, 0x2f, 0x5f, 0x6a, 0xb7, 0x8e, 0xdc, 0xcf, 0xf0, 0x9d, 0xed, 0x77, - 0xbe, 0xb2, 0x47, 0x41, 0xbe, 0xe8, 0x3c, 0x77, 0xeb, 0x86, 0xfe, 0xef, 0xcc, 0xed, 0xb1, 0xb3, 0x9b, 0xf9, 0xef, 0xca, - 0x55, 0xdf, 0xdb, 0x87, 0xe6, 0x8d, 0xab, 0x38, 0x77, 0xea, 0xf0, 0x6e, 0x1e, 0xb3, 0x6f, 0x58, 0xdf, 0x9b, 0x8f, 0xfe, - 0xae, 0xe7, 0xce, 0xf3, 0x3a, 0xcf, 0xe1, 0x1b, 0x7e, 0x6b, 0x25, 0xc3, 0x6b, 0xa7, 0xfd, 0xcf, 0xa5, 0xf2, 0xba, 0x92, - 0xdd, 0xb4, 0xb7, 0xeb, 0xd5, 0x67, 0x8e, 0x1e, 0x9b, 0xd9, 0xb6, 0x3a, 0xd9, 0xae, 0xcf, 0x77, 0xac, 0xaa, 0x1f, 0xd9, - 0x6d, 0xff, 0xbb, 0x7f, 0xed, 0xec, 0x43, 0xf4, 0x89, 0xf3, 0xdc, 0xdb, 0x1d, 0x2d, 0x8b, 0x51, 0xf7, 0x95, 0x32, 0xae, - 0x1d, 0xdb, 0xed, 0x25, 0xef, 0x8d, 0xff, 0xab, 0xed, 0xff, 0x51, 0xbe, 0xea, 0x77, 0x7a, 0xda, 0x6f, 0x3b, 0xba, 0x93, - 0x71, 0xf3, 0xa9, 0x23, 0x77, 0xc4, 0x7f, 0x4e, 0xb3, 0xf1, 0xe7, 0xd2, 0x2c, 0xc3, 0x4e, 0x66, 0xe7, 0xfa, 0xd1, 0x5c, - 0x2a, 0x8f, 0xf3, 0x36, 0xf4, 0xfb, 0xe2, 0x7f, 0xef, 0xbd, 0xd7, 0xf1, 0x5d, 0xcf, 0x50, 0x7b, 0xb4, 0xe7, 0xe1, 0xee, - 0x8b, 0xe1, 0xa3, 0xfd, 0xad, 0xf2, 0x9a, 0x28, 0xaf, 0xe5, 0x04, 0xbd, 0xbb, 0xfd, 0xbf, 0x96, 0xdd, 0xfc, 0x3d, 0x47, - 0xaf, 0xb5, 0x49, 0xef, 0x88, 0xff, 0xdc, 0x3a, 0x26, 0x4c, 0x69, 0xa6, 0xf5, 0x28, 0xee, 0x7d, 0x94, 0xd7, 0xb5, 0x0b, - 0xeb, 0x3d, 0x35, 0xae, 0xb4, 0x29, 0xb3, 0x11, 0xdb, 0x3b, 0xf2, 0xa6, 0xfe, 0xff, 0x2f, 0xc5, 0xff, 0x1d, 0x31, 0xfe, - 0x4c, 0xfc, 0xef, 0xf5, 0x00, 0xfa, 0xfb, 0x2d, 0x75, 0x6a, 0x86, 0x9d, 0xbd, 0x6d, 0x76, 0x8f, 0x76, 0x6b, 0x87, 0xfc, - 0xa1, 0x36, 0xec, 0xcd, 0xb4, 0x7e, 0x5b, 0xff, 0xff, 0xfc, 0xfe, 0x4f, 0xda, 0xf3, 0xcb, 0xef, 0x8b, 0xff, 0x7e, 0x0b, - 0x70, 0x4f, 0xfc, 0xe7, 0xc1, 0x79, 0xd2, 0xb4, 0x67, 0x3d, 0xd3, 0xb8, 0x6f, 0xfc, 0xc6, 0x71, 0x61, 0xe5, 0xec, 0x77, - 0xf6, 0xd0, 0xfc, 0xee, 0xf8, 0x5f, 0xcf, 0x2f, 0xfd, 0x4a, 0xff, 0x3f, 0x1b, 0xb3, 0xa0, 0xd3, 0xf1, 0xff, 0x3d, 0xf9, - 0x46, 0x33, 0x36, 0xee, 0xf8, 0xbe, 0x56, 0xa3, 0x1b, 0x57, 0x3b, 0xa3, 0x89, 0xeb, 0x73, 0xae, 0xcf, 0xec, 0x76, 0x92, - 0x57, 0x9d, 0xab, 0x3b, 0xee, 0x58, 0x7e, 0x66, 0xfe, 0xef, 0x5b, 0x22, 0x5f, 0xfc, 0xaf, 0xe6, 0xd0, 0xcf, 0xc7, 0xcf, - 0xb5, 0x23, 0x95, 0xe7, 0x0c, 0x3f, 0x17, 0xff, 0x9f, 0x9b, 0xe7, 0xb9, 0x67, 0x37, 0x93, 0xce, 0x33, 0x36, 0xc7, 0x2d, - 0xcf, 0xce, 0xbd, 0xef, 0x59, 0x8b, 0xe3, 0x0b, 0xe2, 0x7f, 0x66, 0x36, 0xb4, 0x53, 0x12, 0x59, 0xec, 0x8b, 0x9c, 0xe2, - 0x33, 0xd7, 0x77, 0xf5, 0xff, 0x67, 0x5b, 0xc5, 0x4f, 0x3e, 0xe7, 0xf1, 0xfc, 0x95, 0xde, 0x3d, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf6, 0xda, 0xba, 0x7a, 0xd6, 0xbd, 0x34, 0xd7, 0xef, 0xf6, 0xd7, - 0xa9, 0xd6, 0x77, 0x0d, 0xb8, 0xf2, 0x9e, 0x29, 0xaf, 0xbf, 0xa9, 0x7d, 0x52, 0xe5, 0x5b, 0xdf, 0x93, 0x75, 0xff, 0x58, - 0xe4, 0x18, 0xc8, 0xc8, 0x35, 0x91, 0x72, 0x4e, 0x87, 0xa3, 0x99, 0x95, 0x28, 0xe5, 0xab, 0x2e, 0x8d, 0xbf, 0xa7, 0xbc, - 0x32, 0xf3, 0x68, 0x7c, 0xef, 0x37, 0xaf, 0xb9, 0xef, 0x66, 0xf2, 0xec, 0xef, 0x50, 0x31, 0xbd, 0xea, 0x31, 0xcd, 0x3c, - 0xdc, 0x19, 0x5b, 0xef, 0x9a, 0x8d, 0x15, 0xcd, 0x9d, 0x48, 0xaf, 0xd4, 0xd7, 0x69, 0xc7, 0x46, 0xad, 0x3e, 0xcb, 0xe8, - 0x75, 0x3a, 0xb7, 0x43, 0x4c, 0x46, 0x33, 0x69, 0xbe, 0x79, 0x5d, 0x5e, 0x9a, 0xd9, 0x35, 0xf2, 0x05, 0xeb, 0x90, 0xb3, - 0xb1, 0x5b, 0x4a, 0x1a, 0x3b, 0x9d, 0x7c, 0x66, 0xa5, 0xf3, 0xde, 0x95, 0xf9, 0xce, 0x55, 0xa3, 0xd5, 0x7c, 0x6e, 0x4f, - 0x5d, 0x75, 0xbd, 0x9c, 0x1f, 0x19, 0x7f, 0xc7, 0x67, 0xe2, 0xbf, 0x93, 0x77, 0x37, 0xcb, 0x3e, 0xe5, 0xb3, 0xab, 0x9e, - 0xbb, 0xd9, 0xc6, 0xd2, 0xda, 0x6d, 0x60, 0xff, 0xef, 0x9f, 0xc8, 0xba, 0x73, 0x6f, 0xfb, 0x3f, 0xdf, 0xc7, 0xae, 0x66, - 0x38, 0xe8, 0x5d, 0xdd, 0xdd, 0x9d, 0x2e, 0xf2, 0x33, 0xf1, 0xbf, 0xce, 0xba, 0x98, 0x91, 0xd9, 0x84, 0x4f, 0x1c, 0x4b, - 0x73, 0xd7, 0xa7, 0x0c, 0x8d, 0x17, 0xd6, 0xb9, 0x2e, 0x9f, 0x88, 0xff, 0x9c, 0xf4, 0xce, 0xd3, 0xd8, 0xd9, 0x62, 0xea, - 0xef, 0x93, 0xb3, 0x15, 0xfd, 0x5d, 0x6b, 0xe6, 0xe2, 0x3f, 0xc3, 0x3b, 0xb0, 0xbd, 0x3d, 0xfe, 0xa7, 0x67, 0x00, 0xfa, - 0x31, 0x9e, 0xf6, 0x68, 0x6d, 0x62, 0x94, 0xdb, 0xf9, 0xfb, 0x73, 0x59, 0xf7, 0xcf, 0xf2, 0x2a, 0xa7, 0x75, 0x45, 0x64, - 0x60, 0x1e, 0x25, 0xed, 0x1e, 0xf6, 0xfd, 0xf1, 0xbf, 0xb3, 0xe7, 0x4f, 0xbe, 0x2e, 0xfe, 0x57, 0x35, 0x5a, 0x3d, 0xbf, - 0x6d, 0x5a, 0xb1, 0xda, 0x3b, 0x96, 0x8d, 0xd9, 0x9f, 0x2c, 0xb3, 0xe6, 0xdf, 0xd3, 0xfb, 0xaf, 0x7d, 0xdb, 0x99, 0xf8, - 0x9f, 0x89, 0xce, 0x4f, 0xc6, 0x7f, 0x36, 0xf6, 0x8e, 0x99, 0x6c, 0xdd, 0xd2, 0xcc, 0x14, 0x9a, 0x97, 0xce, 0xff, 0x75, - 0x46, 0x34, 0xf3, 0x7b, 0x75, 0xdc, 0x71, 0x6c, 0x6f, 0xe6, 0x2b, 0x37, 0x8e, 0x7d, 0x8f, 0x0f, 0xb4, 0xff, 0x13, 0x35, - 0xc3, 0x67, 0xdb, 0xff, 0x63, 0xf4, 0x7a, 0x5c, 0xff, 0xfa, 0x3c, 0xd0, 0xa3, 0x7c, 0x4b, 0xfc, 0xe7, 0x4b, 0xe3, 0xff, - 0xb8, 0xb0, 0xa3, 0xdc, 0x5b, 0x6b, 0x80, 0x3c, 0x3a, 0xfe, 0x7f, 0x57, 0xfc, 0xcf, 0xde, 0x01, 0xc9, 0xf2, 0x1e, 0x67, - 0x2d, 0xca, 0xd3, 0xb8, 0xd3, 0x98, 0xe2, 0x6e, 0x6a, 0xef, 0x79, 0xfe, 0x27, 0xcd, 0xd1, 0x49, 0x35, 0x1e, 0xef, 0x39, - 0x76, 0xcf, 0xac, 0x6b, 0xca, 0x73, 0x8a, 0x19, 0xb9, 0xce, 0x9f, 0xcc, 0xba, 0xbb, 0x1a, 0xc5, 0x3d, 0xff, 0xeb, 0x77, - 0xef, 0xa7, 0x66, 0xe8, 0xc8, 0xe4, 0xb3, 0x44, 0x6f, 0x79, 0x3a, 0x60, 0xfa, 0x1e, 0xda, 0x37, 0xe4, 0x21, 0xce, 0xcf, - 0x67, 0x4c, 0xbf, 0xef, 0xa9, 0x01, 0xee, 0xed, 0xe9, 0x7d, 0xcf, 0xb3, 0xc1, 0x88, 0x7e, 0xd6, 0xcf, 0xa8, 0xfc, 0xe6, - 0xef, 0x02, 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, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa6, 0xfd, 0xfb, 0x9f, 0x72, 0x00, 0xf1, 0x0f, 0xfc, 0x75, 0xf1, 0xff, 0x2f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle lavandaFontRecs[189] = { - { 4, 4, 5 , 16 }, - { 17, 4, 1 , 9 }, - { 26, 4, 3 , 3 }, - { 37, 4, 7 , 8 }, - { 52, 4, 5 , 11 }, - { 65, 4, 10 , 8 }, - { 83, 4, 7 , 9 }, - { 98, 4, 1 , 3 }, - { 107, 4, 3 , 12 }, - { 118, 4, 3 , 12 }, - { 129, 4, 5 , 4 }, - { 142, 4, 5 , 5 }, - { 155, 4, 2 , 3 }, - { 165, 4, 3 , 1 }, - { 176, 4, 1 , 1 }, - { 185, 4, 4 , 12 }, - { 197, 4, 5 , 9 }, - { 210, 4, 3 , 9 }, - { 221, 4, 5 , 9 }, - { 234, 4, 5 , 9 }, - { 247, 4, 5 , 9 }, - { 260, 4, 5 , 9 }, - { 273, 4, 5 , 9 }, - { 286, 4, 5 , 9 }, - { 299, 4, 5 , 9 }, - { 312, 4, 5 , 9 }, - { 325, 4, 1 , 4 }, - { 334, 4, 2 , 6 }, - { 344, 4, 4 , 5 }, - { 356, 4, 4 , 3 }, - { 368, 4, 4 , 5 }, - { 380, 4, 5 , 9 }, - { 393, 4, 7 , 10 }, - { 408, 4, 7 , 9 }, - { 423, 4, 6 , 9 }, - { 437, 4, 5 , 9 }, - { 450, 4, 6 , 9 }, - { 464, 4, 5 , 9 }, - { 477, 4, 5 , 9 }, - { 490, 4, 6 , 9 }, - { 4, 28, 5 , 10 }, - { 17, 28, 1 , 9 }, - { 26, 28, 6 , 9 }, - { 40, 28, 6 , 9 }, - { 54, 28, 5 , 9 }, - { 67, 28, 8 , 11 }, - { 83, 28, 6 , 10 }, - { 97, 28, 7 , 9 }, - { 112, 28, 5 , 9 }, - { 125, 28, 7 , 11 }, - { 140, 28, 5 , 9 }, - { 153, 28, 6 , 9 }, - { 167, 28, 7 , 9 }, - { 182, 28, 6 , 9 }, - { 196, 28, 6 , 10 }, - { 210, 28, 9 , 10 }, - { 227, 28, 6 , 11 }, - { 241, 28, 5 , 10 }, - { 254, 28, 5 , 9 }, - { 267, 28, 3 , 12 }, - { 278, 28, 4 , 12 }, - { 290, 28, 3 , 12 }, - { 301, 28, 5 , 4 }, - { 314, 28, 6 , 1 }, - { 328, 28, 3 , 3 }, - { 339, 28, 6 , 7 }, - { 353, 28, 5 , 9 }, - { 366, 28, 4 , 7 }, - { 378, 28, 5 , 10 }, - { 391, 28, 4 , 7 }, - { 403, 28, 3 , 10 }, - { 414, 28, 4 , 11 }, - { 426, 28, 5 , 11 }, - { 439, 28, 1 , 9 }, - { 448, 28, 5 , 12 }, - { 461, 28, 5 , 9 }, - { 474, 28, 1 , 9 }, - { 483, 28, 8 , 9 }, - { 4, 52, 5 , 9 }, - { 17, 52, 4 , 7 }, - { 29, 52, 5 , 10 }, - { 42, 52, 5 , 10 }, - { 55, 52, 5 , 7 }, - { 68, 52, 5 , 7 }, - { 81, 52, 3 , 9 }, - { 92, 52, 5 , 7 }, - { 105, 52, 5 , 8 }, - { 118, 52, 9 , 8 }, - { 135, 52, 5 , 9 }, - { 148, 52, 6 , 9 }, - { 162, 52, 4 , 7 }, - { 174, 52, 5 , 12 }, - { 187, 52, 1 , 12 }, - { 196, 52, 5 , 12 }, - { 209, 52, 6 , 2 }, - { 223, 52, 1 , 9 }, - { 232, 52, 5 , 10 }, - { 245, 52, 6 , 9 }, - { 259, 52, 7 , 9 }, - { 274, 52, 5 , 9 }, - { 287, 52, 6 , 12 }, - { 301, 52, 5 , 10 }, - { 314, 52, 5 , 10 }, - { 327, 52, 8 , 8 }, - { 343, 52, 4 , 7 }, - { 355, 52, 6 , 5 }, - { 369, 52, 6 , 3 }, - { 383, 52, 8 , 8 }, - { 399, 52, 5 , 1 }, - { 412, 52, 4 , 4 }, - { 424, 52, 5 , 7 }, - { 437, 52, 3 , 4 }, - { 448, 52, 3 , 4 }, - { 459, 52, 5 , 12 }, - { 472, 52, 5 , 10 }, - { 485, 52, 7 , 11 }, - { 500, 52, 1 , 1 }, - { 4, 76, 4 , 10 }, - { 16, 76, 2 , 4 }, - { 26, 76, 4 , 7 }, - { 38, 76, 6 , 5 }, - { 52, 76, 11 , 9 }, - { 71, 76, 7 , 7 }, - { 86, 76, 5 , 12 }, - { 99, 76, 5 , 9 }, - { 112, 76, 7 , 12 }, - { 127, 76, 7 , 12 }, - { 142, 76, 7 , 12 }, - { 157, 76, 7 , 12 }, - { 172, 76, 7 , 11 }, - { 187, 76, 7 , 12 }, - { 202, 76, 10 , 9 }, - { 220, 76, 5 , 12 }, - { 233, 76, 5 , 12 }, - { 246, 76, 5 , 12 }, - { 259, 76, 5 , 12 }, - { 272, 76, 5 , 11 }, - { 285, 76, 2 , 12 }, - { 295, 76, 2 , 12 }, - { 305, 76, 3 , 12 }, - { 316, 76, 3 , 11 }, - { 327, 76, 7 , 9 }, - { 342, 76, 6 , 12 }, - { 356, 76, 7 , 12 }, - { 371, 76, 7 , 12 }, - { 386, 76, 7 , 12 }, - { 401, 76, 7 , 12 }, - { 416, 76, 7 , 11 }, - { 431, 76, 5 , 5 }, - { 444, 76, 7 , 9 }, - { 459, 76, 6 , 12 }, - { 473, 76, 6 , 12 }, - { 487, 76, 6 , 12 }, - { 4, 100, 6 , 11 }, - { 18, 100, 5 , 13 }, - { 31, 100, 5 , 9 }, - { 44, 100, 5 , 11 }, - { 57, 100, 6 , 10 }, - { 71, 100, 6 , 10 }, - { 85, 100, 6 , 10 }, - { 99, 100, 6 , 10 }, - { 113, 100, 6 , 9 }, - { 127, 100, 6 , 11 }, - { 141, 100, 7 , 7 }, - { 156, 100, 4 , 10 }, - { 168, 100, 4 , 10 }, - { 180, 100, 4 , 10 }, - { 192, 100, 4 , 10 }, - { 204, 100, 4 , 9 }, - { 216, 100, 2 , 10 }, - { 226, 100, 2 , 10 }, - { 236, 100, 3 , 10 }, - { 247, 100, 3 , 9 }, - { 258, 100, 5 , 9 }, - { 271, 100, 5 , 12 }, - { 284, 100, 4 , 10 }, - { 296, 100, 4 , 10 }, - { 308, 100, 4 , 10 }, - { 320, 100, 5 , 10 }, - { 333, 100, 4 , 9 }, - { 345, 100, 5 , 5 }, - { 358, 100, 6 , 7 }, - { 372, 100, 5 , 10 }, - { 385, 100, 5 , 10 }, - { 398, 100, 5 , 10 }, - { 411, 100, 5 , 9 }, - { 424, 100, 6 , 12 }, - { 438, 100, 5 , 12 }, - { 451, 100, 6 , 11 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo lavandaFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 3, 2, { 0 }}, - { 34, 0, 3, 4, { 0 }}, - { 35, 0, 3, 8, { 0 }}, - { 36, 0, 2, 6, { 0 }}, - { 37, 0, 4, 11, { 0 }}, - { 38, 0, 3, 8, { 0 }}, - { 39, 0, 3, 2, { 0 }}, - { 40, 0, 2, 4, { 0 }}, - { 41, 0, 2, 4, { 0 }}, - { 42, 0, 3, 6, { 0 }}, - { 43, 0, 5, 6, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 7, 4, { 0 }}, - { 46, 0, 11, 2, { 0 }}, - { 47, 0, 2, 5, { 0 }}, - { 48, 0, 3, 6, { 0 }}, - { 49, 0, 3, 4, { 0 }}, - { 50, 0, 3, 6, { 0 }}, - { 51, 0, 3, 6, { 0 }}, - { 52, 0, 3, 6, { 0 }}, - { 53, 0, 3, 6, { 0 }}, - { 54, 0, 3, 6, { 0 }}, - { 55, 0, 3, 6, { 0 }}, - { 56, 0, 3, 6, { 0 }}, - { 57, 0, 3, 6, { 0 }}, - { 58, 0, 7, 2, { 0 }}, - { 59, 0, 7, 3, { 0 }}, - { 60, 0, 5, 5, { 0 }}, - { 61, 0, 6, 5, { 0 }}, - { 62, 0, 5, 5, { 0 }}, - { 63, 0, 3, 6, { 0 }}, - { 64, 0, 4, 8, { 0 }}, - { 65, 0, 3, 8, { 0 }}, - { 66, 0, 3, 7, { 0 }}, - { 67, 0, 3, 6, { 0 }}, - { 68, 0, 3, 7, { 0 }}, - { 69, 0, 3, 6, { 0 }}, - { 70, 0, 3, 6, { 0 }}, - { 71, 0, 3, 7, { 0 }}, - { 72, 0, 2, 6, { 0 }}, - { 73, 0, 3, 2, { 0 }}, - { 74, 0, 3, 7, { 0 }}, - { 75, 0, 3, 7, { 0 }}, - { 76, 0, 3, 6, { 0 }}, - { 77, 0, 3, 9, { 0 }}, - { 78, 0, 2, 7, { 0 }}, - { 79, 0, 3, 8, { 0 }}, - { 80, 0, 3, 6, { 0 }}, - { 81, 0, 3, 8, { 0 }}, - { 82, 0, 3, 6, { 0 }}, - { 83, 0, 3, 7, { 0 }}, - { 84, 0, 3, 8, { 0 }}, - { 85, 0, 3, 7, { 0 }}, - { 86, 0, 2, 7, { 0 }}, - { 87, 0, 2, 10, { 0 }}, - { 88, 0, 3, 7, { 0 }}, - { 89, 0, 3, 6, { 0 }}, - { 90, 0, 3, 6, { 0 }}, - { 91, 0, 2, 4, { 0 }}, - { 92, 0, 2, 5, { 0 }}, - { 93, 0, 2, 4, { 0 }}, - { 94, 0, 3, 6, { 0 }}, - { 95, 0, 13, 7, { 0 }}, - { 96, 0, 3, 4, { 0 }}, - { 97, 0, 5, 7, { 0 }}, - { 98, 0, 3, 6, { 0 }}, - { 99, 0, 5, 5, { 0 }}, - { 100, 0, 2, 6, { 0 }}, - { 101, 0, 5, 5, { 0 }}, - { 102, 0, 2, 4, { 0 }}, - { 103, 0, 4, 5, { 0 }}, - { 104, 0, 3, 6, { 0 }}, - { 105, 0, 3, 2, { 0 }}, - { 106, -1, 3, 5, { 0 }}, - { 107, 0, 3, 6, { 0 }}, - { 108, 0, 3, 2, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 6, { 0 }}, - { 111, 0, 5, 5, { 0 }}, - { 112, 0, 5, 6, { 0 }}, - { 113, 0, 5, 6, { 0 }}, - { 114, 0, 5, 6, { 0 }}, - { 115, 0, 5, 6, { 0 }}, - { 116, 0, 3, 4, { 0 }}, - { 117, 0, 5, 6, { 0 }}, - { 118, 0, 4, 6, { 0 }}, - { 119, 0, 4, 10, { 0 }}, - { 120, 0, 5, 6, { 0 }}, - { 121, -1, 5, 6, { 0 }}, - { 122, 0, 5, 5, { 0 }}, - { 123, 0, 2, 6, { 0 }}, - { 124, 0, 2, 2, { 0 }}, - { 125, 0, 2, 6, { 0 }}, - { 126, 0, 7, 7, { 0 }}, - { 161, 0, 5, 2, { 0 }}, - { 162, 0, 4, 6, { 0 }}, - { 163, 0, 3, 7, { 0 }}, - { 8364, 0, 3, 8, { 0 }}, - { 165, 0, 3, 6, { 0 }}, - { 352, 0, 0, 7, { 0 }}, - { 167, 0, 3, 6, { 0 }}, - { 353, 0, 2, 6, { 0 }}, - { 169, 0, 4, 9, { 0 }}, - { 170, 0, 3, 5, { 0 }}, - { 171, 0, 6, 7, { 0 }}, - { 172, 0, 6, 7, { 0 }}, - { 174, 0, 4, 9, { 0 }}, - { 175, 0, 2, 6, { 0 }}, - { 176, 0, 3, 5, { 0 }}, - { 177, 0, 5, 6, { 0 }}, - { 178, 0, 3, 4, { 0 }}, - { 179, 0, 3, 4, { 0 }}, - { 381, 0, 0, 6, { 0 }}, - { 181, 0, 5, 6, { 0 }}, - { 182, 0, 3, 8, { 0 }}, - { 183, 0, 7, 2, { 0 }}, - { 382, 0, 2, 5, { 0 }}, - { 185, 0, 3, 3, { 0 }}, - { 186, 0, 3, 5, { 0 }}, - { 187, 0, 6, 7, { 0 }}, - { 338, 0, 3, 12, { 0 }}, - { 339, 0, 5, 8, { 0 }}, - { 376, 0, 1, 6, { 0 }}, - { 191, 0, 5, 6, { 0 }}, - { 192, 0, 0, 8, { 0 }}, - { 193, 0, 0, 8, { 0 }}, - { 194, 0, 0, 8, { 0 }}, - { 195, 0, 0, 8, { 0 }}, - { 196, 0, 1, 8, { 0 }}, - { 197, 0, 0, 8, { 0 }}, - { 198, 0, 3, 11, { 0 }}, - { 199, 0, 3, 6, { 0 }}, - { 200, 0, 0, 6, { 0 }}, - { 201, 0, 0, 6, { 0 }}, - { 202, 0, 0, 6, { 0 }}, - { 203, 0, 1, 6, { 0 }}, - { 204, -1, 0, 2, { 0 }}, - { 205, 0, 0, 3, { 0 }}, - { 206, -1, 0, 3, { 0 }}, - { 207, -1, 1, 3, { 0 }}, - { 208, -1, 3, 7, { 0 }}, - { 209, 0, 0, 7, { 0 }}, - { 210, 0, 0, 8, { 0 }}, - { 211, 0, 0, 8, { 0 }}, - { 212, 0, 0, 8, { 0 }}, - { 213, 0, 0, 8, { 0 }}, - { 214, 0, 1, 8, { 0 }}, - { 215, 0, 5, 6, { 0 }}, - { 216, 0, 3, 8, { 0 }}, - { 217, 0, 0, 7, { 0 }}, - { 218, 0, 0, 7, { 0 }}, - { 219, 0, 0, 7, { 0 }}, - { 220, 0, 1, 7, { 0 }}, - { 221, 0, 0, 6, { 0 }}, - { 222, 0, 3, 6, { 0 }}, - { 223, 0, 3, 6, { 0 }}, - { 224, 0, 2, 7, { 0 }}, - { 225, 0, 2, 7, { 0 }}, - { 226, 0, 2, 7, { 0 }}, - { 227, 0, 2, 7, { 0 }}, - { 228, 0, 3, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 5, 8, { 0 }}, - { 231, 0, 5, 5, { 0 }}, - { 232, 0, 2, 5, { 0 }}, - { 233, 0, 2, 5, { 0 }}, - { 234, 0, 2, 5, { 0 }}, - { 235, 0, 3, 5, { 0 }}, - { 236, -1, 2, 2, { 0 }}, - { 237, 0, 2, 3, { 0 }}, - { 238, -1, 2, 3, { 0 }}, - { 239, -1, 3, 3, { 0 }}, - { 240, 0, 3, 6, { 0 }}, - { 241, 0, 2, 6, { 0 }}, - { 242, 0, 2, 5, { 0 }}, - { 243, 0, 2, 5, { 0 }}, - { 244, 0, 2, 5, { 0 }}, - { 245, 0, 2, 6, { 0 }}, - { 246, 0, 3, 5, { 0 }}, - { 247, 0, 5, 6, { 0 }}, - { 248, -1, 5, 6, { 0 }}, - { 249, 0, 2, 6, { 0 }}, - { 250, 0, 2, 6, { 0 }}, - { 251, 0, 2, 6, { 0 }}, - { 252, 0, 3, 6, { 0 }}, - { 253, -1, 2, 6, { 0 }}, - { 254, 0, 3, 6, { 0 }}, - { 255, -1, 3, 6, { 0 }}, -}; - -// Style loading function: Lavanda -static void GuiLoadStyleLavanda(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < LAVANDA_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(lavandaStyleProps[i].controlId, lavandaStyleProps[i].propertyId, lavandaStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int lavandaFontDataSize = 0; - unsigned char *data = DecompressData(lavandaFontData, LAVANDA_STYLE_FONT_ATLAS_COMP_SIZE, &lavandaFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, lavandaFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, lavandaFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_rltech.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_rltech.h deleted file mode 100644 index 20e84f6..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_rltech.h +++ /dev/null @@ -1,572 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleRLTech(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define RLTECH_STYLE_PROPS_COUNT 15 - -// Custom style name: RLTech -static const GuiStyleProp rltechStyleProps[RLTECH_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x000000ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0xf5f5f5ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x000000ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xe10000ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xffffffff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xed0000ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xed0000ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x0f0f0fff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xff2323ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0xcacacaff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0xe3e3e3ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0xb3b3b3ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 18, (int)0x352c2cff }, // DEFAULT_LINE_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "2a03.ttf" (size: 16, spacing: 1) - -#define RLTECH_STYLE_FONT_ATLAS_COMP_SIZE 1950 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char rltechFontData[RLTECH_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xcb, 0x76, 0xc3, 0x2a, 0x12, 0x05, 0x50, 0xfe, 0xff, 0xa7, 0xab, 0x07, 0x77, 0xd0, 0x8f, 0xd5, 0xb1, 0xa0, 0x28, - 0x10, 0xd8, 0x3b, 0x7b, 0x16, 0xc7, 0xb6, 0x1e, 0x1c, 0x03, 0x8a, 0x29, 0x45, 0x03, 0x00, 0x00, 0x00, 0x88, 0xf8, 0xbf, - 0xbf, 0x89, 0x3f, 0xfe, 0x32, 0xba, 0x5f, 0xe5, 0x9f, 0xdf, 0xc6, 0x87, 0x67, 0xfd, 0xfb, 0xa7, 0xef, 0xf5, 0xa2, 0xf3, - 0x5d, 0xff, 0xfe, 0xfd, 0xdf, 0x5b, 0xd2, 0xbf, 0x6d, 0x15, 0xaf, 0x30, 0xfa, 0xd7, 0x9f, 0xb7, 0xa4, 0xea, 0xd5, 0x6a, - 0x1f, 0xd9, 0x77, 0xe4, 0x9f, 0xb7, 0x6e, 0xe7, 0xb1, 0x68, 0x9b, 0x8e, 0x6c, 0x0c, 0xb4, 0xfa, 0xb5, 0xf9, 0xff, 0xbc, - 0xad, 0xf1, 0x78, 0xee, 0x67, 0xb2, 0x9e, 0x7d, 0xcf, 0x8a, 0x23, 0xd7, 0xb7, 0xbd, 0x31, 0xf9, 0xd7, 0x77, 0x3e, 0x92, - 0x3d, 0x6a, 0xe3, 0x7f, 0xdf, 0x9b, 0x87, 0xda, 0x3d, 0x6e, 0xa5, 0xcf, 0x69, 0x8b, 0xdf, 0xa7, 0x22, 0xff, 0xcf, 0x29, - 0x1f, 0xef, 0xff, 0x33, 0x79, 0xea, 0x69, 0x11, 0xa3, 0x9f, 0xc3, 0xed, 0xf5, 0xfc, 0x67, 0x1e, 0xa9, 0x6d, 0x71, 0x6d, - 0x7b, 0xfe, 0xc7, 0x47, 0x85, 0xe3, 0xc7, 0x27, 0x3e, 0xb4, 0x41, 0xf9, 0x1f, 0x7b, 0x56, 0x66, 0x5e, 0x90, 0x1b, 0xa5, - 0xcf, 0x8d, 0xdc, 0x5b, 0xf2, 0x33, 0xa7, 0x32, 0xfd, 0xf2, 0xbf, 0xab, 0xff, 0xef, 0xe9, 0x31, 0xe4, 0x7f, 0xfe, 0x1c, - 0x64, 0xe6, 0x2a, 0x4f, 0xf9, 0x1f, 0xe9, 0x91, 0x6b, 0xc6, 0xf3, 0xa7, 0xe6, 0x3f, 0x3a, 0xe6, 0x8f, 0x6b, 0xe7, 0x95, - 0xad, 0xf4, 0x6a, 0xc2, 0x8a, 0x4f, 0x80, 0x78, 0x68, 0x9b, 0xe3, 0xfd, 0x7f, 0x66, 0x2e, 0x9f, 0xc9, 0xe5, 0xe8, 0x99, - 0xfd, 0xcf, 0x6d, 0x9f, 0xbd, 0x3e, 0xb2, 0xbe, 0xff, 0xcf, 0x5d, 0x1b, 0x1c, 0xed, 0x3d, 0x76, 0xf6, 0xe7, 0x6f, 0xe4, - 0x7f, 0xa6, 0xf5, 0xd7, 0xcc, 0x4a, 0x56, 0x3c, 0x67, 0xcf, 0x99, 0x8a, 0x87, 0x36, 0x79, 0x6f, 0xff, 0x1f, 0x17, 0x8c, - 0xff, 0xdb, 0xe3, 0x88, 0x7b, 0xf4, 0x4a, 0xe6, 0x5d, 0xf9, 0x5f, 0x77, 0x75, 0xf3, 0xde, 0xfc, 0xb7, 0x63, 0xf2, 0x3f, - 0x73, 0x25, 0xfd, 0x17, 0xf2, 0x5f, 0x71, 0xf4, 0x9f, 0xae, 0xd8, 0x44, 0xc1, 0xec, 0xf1, 0x37, 0xf2, 0xbf, 0x3a, 0xb1, - 0xbb, 0x5f, 0xed, 0xbc, 0xf3, 0x22, 0xff, 0x2b, 0x12, 0x14, 0x0f, 0xa3, 0x86, 0xf9, 0xd9, 0xe3, 0x7d, 0xf9, 0x1f, 0x99, - 0x45, 0x9e, 0x33, 0x63, 0xdf, 0x3b, 0xff, 0xdf, 0x73, 0x06, 0xce, 0xfd, 0xfe, 0x44, 0xe6, 0x6a, 0xdb, 0x69, 0xfd, 0xff, - 0x09, 0xbd, 0x2c, 0x20, 0xff, 0x80, 0xfc, 0x03, 0xbf, 0xb0, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7e, 0xe9, 0x3b, 0xf4, 0xb9, 0xd5, 0xc9, 0x77, 0xd6, 0xa6, 0x5f, 0x51, 0x11, 0xa6, 0xba, 0xb2, 0xf6, - 0xe7, 0xad, 0x1f, 0x59, 0x01, 0xdf, 0xb7, 0x6a, 0x2a, 0x06, 0xd7, 0xa9, 0xd7, 0xae, 0x6a, 0xcf, 0x54, 0x1f, 0x68, 0xa5, - 0xeb, 0xed, 0x67, 0x56, 0x9b, 0x44, 0x2a, 0x21, 0x2b, 0xaa, 0x37, 0xee, 0xca, 0x7f, 0x4f, 0xfb, 0x6d, 0x47, 0xd4, 0xa6, - 0xcf, 0xac, 0x26, 0x7c, 0x3f, 0xff, 0xa3, 0xad, 0x70, 0xbc, 0x2e, 0x76, 0xc5, 0xea, 0xcb, 0xf6, 0x6a, 0xf5, 0xe1, 0xfc, - 0x59, 0xac, 0x5c, 0x81, 0xba, 0xb7, 0x57, 0x98, 0xdd, 0x8f, 0xbf, 0x5e, 0x73, 0xae, 0xd6, 0xe9, 0x48, 0x15, 0x6e, 0xf9, - 0x7f, 0x3b, 0xff, 0xeb, 0x47, 0x94, 0xbb, 0xea, 0xdd, 0xc4, 0xf0, 0x1d, 0x41, 0x66, 0xee, 0x57, 0x14, 0x13, 0x7f, 0x7b, - 0x76, 0xfe, 0xb3, 0x6d, 0x2a, 0x1e, 0x3f, 0x55, 0xe4, 0xbf, 0x3d, 0xdc, 0x39, 0xa1, 0x0d, 0x56, 0x4e, 0xce, 0x56, 0x59, - 0xae, 0xcf, 0x7d, 0x65, 0x85, 0xaa, 0x48, 0x8e, 0xff, 0xab, 0xcf, 0x62, 0x55, 0x4f, 0x79, 0x53, 0xfe, 0xf3, 0x77, 0xd1, - 0xdb, 0x37, 0xe7, 0x7d, 0x7a, 0xce, 0xe8, 0x5c, 0x73, 0x6f, 0xfe, 0x2b, 0xef, 0x75, 0x73, 0x4e, 0xfe, 0x57, 0xce, 0x28, - 0xfb, 0xb6, 0x7f, 0x7f, 0xfe, 0xe3, 0x2b, 0xc7, 0xff, 0x71, 0x48, 0xfe, 0x2b, 0xdb, 0x5a, 0x4b, 0xe5, 0x71, 0x6f, 0xff, - 0xdf, 0x5e, 0xfc, 0xbd, 0xfc, 0x8f, 0xe7, 0x3f, 0xcc, 0xff, 0x5f, 0xcb, 0x7f, 0x5c, 0x9b, 0xff, 0x98, 0xd8, 0x92, 0xf9, - 0x47, 0xce, 0x1a, 0xff, 0x57, 0x3e, 0x27, 0x73, 0x47, 0xe0, 0x3b, 0xfa, 0xff, 0x6f, 0xb8, 0xfe, 0x5f, 0xff, 0x7e, 0x99, - 0x19, 0x74, 0x55, 0xfe, 0xfb, 0xe7, 0xf0, 0xbf, 0x92, 0xff, 0xcc, 0xc8, 0xa0, 0xf6, 0x39, 0xe3, 0xd7, 0x78, 0xf6, 0xcd, - 0xff, 0x77, 0x5d, 0x6b, 0x3d, 0xe3, 0xd3, 0x3a, 0x16, 0x5d, 0x83, 0xfd, 0xdf, 0x2b, 0xbd, 0x55, 0xfd, 0x46, 0xed, 0x7c, - 0x3c, 0xff, 0x5d, 0x88, 0x99, 0x3e, 0xec, 0xe4, 0xfc, 0x8f, 0xf7, 0x52, 0xb9, 0x9e, 0xed, 0x8d, 0xfc, 0xbf, 0x59, 0x87, - 0x52, 0xbd, 0x4b, 0x42, 0x9b, 0x59, 0xf2, 0x59, 0x72, 0xc3, 0x71, 0x93, 0x7f, 0xe4, 0x5f, 0xd6, 0xd0, 0x2e, 0xb5, 0x63, - 0xf9, 0xe7, 0x17, 0xdb, 0x65, 0xff, 0xc8, 0xf6, 0x84, 0x7b, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0xb5, 0xfe, 0x3f, 0x53, 0x6d, 0xe4, 0xf4, 0xfa, 0xb9, 0xa3, 0x2b, 0xf9, 0xfb, 0xd7, 0x74, 0x47, 0x41, - 0x55, 0xde, 0xe7, 0xaa, 0x85, 0x23, 0x35, 0x04, 0x62, 0xb8, 0x42, 0x7f, 0xcf, 0x73, 0x3e, 0xb7, 0x89, 0xbf, 0xf7, 0x36, - 0xd7, 0xc2, 0x9e, 0x1f, 0xef, 0x5f, 0xdb, 0x10, 0x43, 0xc7, 0x3c, 0x73, 0x8c, 0x3e, 0x9d, 0x8b, 0xb1, 0x7b, 0x28, 0xfc, - 0xfd, 0x2a, 0x63, 0x2d, 0x23, 0x3a, 0x57, 0x33, 0x55, 0x55, 0x6b, 0xbf, 0xb7, 0x7e, 0xf6, 0xfc, 0xef, 0x62, 0x7a, 0x15, - 0xfa, 0xf8, 0x31, 0xaf, 0xad, 0x21, 0xd4, 0xfb, 0x9c, 0xf1, 0xba, 0xc4, 0x63, 0x6d, 0x26, 0x26, 0x56, 0xdc, 0x45, 0x6a, - 0xbf, 0x63, 0xe2, 0x68, 0xf4, 0xf6, 0x3a, 0x23, 0x7b, 0x32, 0x5a, 0x51, 0x30, 0x77, 0xe4, 0xab, 0xf3, 0x9f, 0xa9, 0xbc, - 0x9e, 0xcf, 0x7f, 0x6d, 0xfd, 0xec, 0xb9, 0xfc, 0x8f, 0xb5, 0xed, 0x7c, 0x65, 0xe5, 0xf1, 0x4f, 0xba, 0x36, 0x38, 0x06, - 0xfa, 0x94, 0xaa, 0x4f, 0xf5, 0x96, 0xf2, 0xbd, 0x50, 0x0c, 0xbf, 0xdb, 0xf8, 0xda, 0xc6, 0x48, 0xf5, 0xf3, 0x51, 0x54, - 0xab, 0x2c, 0xb7, 0x27, 0xb3, 0xf9, 0x1f, 0xf9, 0xec, 0xad, 0xba, 0x5b, 0xd3, 0x29, 0xf5, 0xb3, 0x73, 0xa3, 0xef, 0x53, - 0xf3, 0xbf, 0xef, 0x6e, 0x66, 0x9f, 0x9e, 0x13, 0xcb, 0x7a, 0xa1, 0xbf, 0xdf, 0x2d, 0x0a, 0x57, 0xdc, 0xd7, 0x8c, 0x86, - 0x66, 0xee, 0x48, 0xb2, 0x62, 0x84, 0xb8, 0xbf, 0xff, 0x1f, 0xcf, 0xc6, 0x49, 0xfd, 0xff, 0x9a, 0x39, 0x41, 0x45, 0xfe, - 0x73, 0x33, 0x83, 0xf9, 0x2a, 0xed, 0xbd, 0xcf, 0x89, 0x8e, 0x54, 0xb4, 0x92, 0x4f, 0x80, 0xf8, 0xaf, 0xde, 0x77, 0x75, - 0xfe, 0xc7, 0xaf, 0x68, 0xe4, 0xae, 0x3a, 0x55, 0x54, 0x31, 0x3d, 0x61, 0xfe, 0x5f, 0x99, 0xff, 0x35, 0xf5, 0x73, 0xeb, - 0xaa, 0xc6, 0xaf, 0xc8, 0xff, 0x78, 0xca, 0x67, 0x7a, 0xf9, 0x3d, 0xf9, 0xaf, 0xbe, 0x2a, 0xbd, 0xa2, 0xff, 0xaf, 0xdf, - 0xc6, 0xb1, 0xeb, 0x7f, 0xb3, 0x2d, 0x67, 0xf7, 0xf5, 0xff, 0xca, 0xf1, 0xff, 0xde, 0xfa, 0xb9, 0x75, 0x79, 0x99, 0xad, - 0x9d, 0x5b, 0x73, 0xaf, 0x9e, 0xea, 0xfe, 0x3f, 0x77, 0x74, 0x32, 0xf3, 0xff, 0x53, 0xf2, 0x1f, 0x0b, 0xb6, 0x70, 0xbc, - 0x95, 0xc7, 0x82, 0xf4, 0xd7, 0xec, 0xd7, 0xda, 0x31, 0xd6, 0x39, 0x9f, 0xd1, 0xed, 0xf5, 0xfe, 0x3f, 0xf7, 0xd7, 0x95, - 0x23, 0x83, 0xcc, 0xbb, 0xc5, 0xd6, 0xb3, 0x1c, 0x07, 0xb7, 0xa9, 0x99, 0x2b, 0x09, 0x71, 0x6c, 0x8a, 0xa2, 0x74, 0x3c, - 0x21, 0xff, 0xad, 0xf8, 0xba, 0xfc, 0xf8, 0xf8, 0xa9, 0x25, 0xbf, 0x03, 0xd1, 0xba, 0xee, 0x5b, 0xbf, 0x6b, 0x54, 0x7a, - 0x62, 0xa5, 0xc2, 0xdc, 0x1d, 0xd5, 0x46, 0xae, 0xff, 0x9d, 0x9e, 0x94, 0x7b, 0xbf, 0xd5, 0xb4, 0x3b, 0xff, 0x77, 0x7d, - 0x06, 0x9e, 0x9a, 0xb8, 0x3b, 0x8e, 0x67, 0xbc, 0xda, 0x7a, 0x59, 0x33, 0xa7, 0xfb, 0xa5, 0xfc, 0xe3, 0x78, 0x3a, 0xb3, - 0xdf, 0x91, 0x7f, 0xbd, 0x88, 0xe3, 0x4a, 0xd5, 0xff, 0x74, 0x7c, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x70, 0xc6, 0x6a, 0x86, 0xde, 0x5a, 0xec, 0xa3, 0xd5, 0xaf, 0xf3, 0xab, 0xa5, 0xc7, 0x7e, 0x1f, 0xc3, - 0x95, 0xb9, 0x9f, 0xd6, 0xda, 0x57, 0xde, 0x01, 0x21, 0xbf, 0x5f, 0x99, 0x3a, 0x6b, 0x3d, 0xbf, 0x1b, 0xaf, 0x32, 0x10, - 0xa9, 0xf5, 0x50, 0xeb, 0xcf, 0x64, 0xee, 0x6e, 0x0f, 0x7b, 0xce, 0x53, 0x66, 0x15, 0x59, 0xfd, 0x56, 0x3f, 0x3f, 0xa3, - 0xbf, 0x5a, 0x5c, 0xbc, 0xb8, 0x92, 0xfa, 0x73, 0xcb, 0x88, 0xc4, 0xfb, 0xc7, 0xd4, 0x31, 0x59, 0xbd, 0x5f, 0xb3, 0x6b, - 0x95, 0xb2, 0x55, 0xa7, 0x62, 0xf0, 0x08, 0xdf, 0x79, 0x26, 0xf7, 0x9c, 0xa7, 0x7c, 0x0d, 0xb9, 0xd8, 0x50, 0x7f, 0xa0, - 0x22, 0xff, 0x31, 0xb9, 0x9f, 0xef, 0xac, 0xd6, 0x8c, 0xd4, 0x3d, 0x75, 0xf6, 0xee, 0xd3, 0xba, 0xb5, 0xa6, 0x91, 0x6c, - 0x0d, 0xa7, 0xae, 0xbb, 0x7d, 0x77, 0x7f, 0x6a, 0xef, 0xc2, 0xb0, 0xf3, 0x2c, 0x8c, 0xe4, 0x3f, 0xb7, 0xbd, 0x51, 0x98, - 0xcb, 0xda, 0x5a, 0xf7, 0xb9, 0xcf, 0xb3, 0xb6, 0xa0, 0xb6, 0xe6, 0x78, 0x0d, 0xd6, 0xb6, 0xa4, 0x82, 0x69, 0xed, 0x1d, - 0xd5, 0x76, 0x9d, 0xc9, 0xa7, 0xfe, 0x7f, 0x7d, 0xbb, 0xd8, 0xf7, 0x48, 0xbe, 0xda, 0x63, 0x5f, 0xba, 0x2b, 0x46, 0x08, - 0xcf, 0x33, 0xec, 0x5b, 0x8e, 0x72, 0xdd, 0x7d, 0xba, 0xaa, 0x1f, 0x59, 0x91, 0xff, 0xa7, 0xfa, 0xbe, 0x37, 0xe6, 0xe5, - 0xe9, 0xbe, 0x8c, 0xe7, 0x6e, 0x75, 0x94, 0xb7, 0x98, 0x56, 0x9c, 0xee, 0xfe, 0x7d, 0xbc, 0x2d, 0xff, 0xa7, 0xa4, 0xfc, - 0xac, 0xfe, 0xff, 0xd4, 0x24, 0x7d, 0x1e, 0x63, 0xdf, 0xf9, 0xa9, 0xb5, 0xa2, 0xc5, 0x64, 0xd3, 0x9d, 0xbf, 0x1a, 0x7e, - 0x42, 0xfe, 0xf7, 0xce, 0xff, 0xab, 0x1f, 0x99, 0xbb, 0x57, 0x71, 0xf5, 0xf8, 0xff, 0xcc, 0x91, 0x74, 0xbb, 0xb4, 0x97, - 0xd9, 0x73, 0x5f, 0x8b, 0xfa, 0x2b, 0x17, 0x35, 0xed, 0xe9, 0xbb, 0xe7, 0xff, 0x55, 0x8f, 0xdc, 0x30, 0xff, 0x97, 0xff, - 0x99, 0x94, 0xb7, 0xd7, 0x8e, 0x4e, 0xef, 0x7f, 0xf7, 0x67, 0xf2, 0xbf, 0x27, 0x97, 0xab, 0x1e, 0x59, 0x31, 0xe2, 0x39, - 0x7b, 0xfc, 0x7f, 0xe3, 0xf9, 0xaa, 0xbd, 0xc6, 0x5e, 0xbf, 0x6d, 0x99, 0xff, 0xe3, 0xd5, 0x6d, 0xf5, 0xae, 0xff, 0xce, - 0x54, 0x8d, 0x3b, 0x4e, 0x6e, 0x4f, 0x6b, 0xfe, 0x3b, 0x7b, 0x4e, 0xfe, 0xbf, 0xf9, 0x7c, 0x9d, 0x96, 0xff, 0xb6, 0xe9, - 0xbf, 0x4b, 0xf2, 0xbf, 0xa2, 0x3d, 0xc5, 0xd6, 0xf9, 0x7f, 0xc8, 0x7f, 0x71, 0x0b, 0xdf, 0xb9, 0x6d, 0xb1, 0x38, 0x4b, - 0x77, 0x7e, 0xef, 0xf8, 0xdc, 0xbe, 0x61, 0xff, 0xf7, 0x8d, 0x6a, 0xee, 0x56, 0xb4, 0xf2, 0xfb, 0x57, 0xef, 0x5f, 0xc9, - 0xb9, 0xf5, 0x3c, 0xa9, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x5b, 0xbb, - 0xa7, 0xa6, 0x7e, 0x2b, 0xaa, 0xa9, 0x3f, 0xfe, 0x48, 0xed, 0xfe, 0x46, 0xa2, 0x3a, 0x78, 0x14, 0xac, 0x48, 0x5c, 0x71, - 0x96, 0xc6, 0xce, 0x4a, 0xdf, 0xab, 0xfd, 0x7a, 0xfa, 0xd7, 0x57, 0x62, 0xef, 0x5f, 0xc3, 0x57, 0xb5, 0x7a, 0xf6, 0x94, - 0x9a, 0xfa, 0x2d, 0x75, 0x7c, 0xdf, 0xae, 0xa8, 0x3f, 0x7e, 0xfe, 0xda, 0x05, 0x15, 0xf5, 0x79, 0x6b, 0xed, 0xe4, 0x6c, - 0xfe, 0x77, 0x6c, 0xfd, 0xba, 0x71, 0xd4, 0x6d, 0x15, 0xf5, 0x9f, 0xea, 0xe6, 0xc4, 0xa1, 0x15, 0xf5, 0x2b, 0x5f, 0x4d, - 0x96, 0xa3, 0xb0, 0x0a, 0x71, 0xcf, 0xf8, 0x7f, 0xcf, 0x5a, 0xed, 0x18, 0x1a, 0x41, 0x56, 0xd5, 0xd4, 0x78, 0xb3, 0x02, - 0x62, 0xe5, 0x7d, 0x26, 0xce, 0xae, 0xa8, 0x7d, 0xc2, 0x1d, 0x35, 0xbe, 0xeb, 0x1a, 0x40, 0x2b, 0xcb, 0xff, 0xfc, 0xab, - 0xad, 0xaf, 0x15, 0xb2, 0xae, 0xa6, 0xfe, 0x7d, 0x15, 0xf5, 0x3e, 0xdd, 0x05, 0xf0, 0xfb, 0x2a, 0x6a, 0xcb, 0xff, 0xea, - 0x9e, 0xeb, 0x9c, 0xfc, 0xef, 0xac, 0xa9, 0xa5, 0xa2, 0xae, 0xfc, 0x7f, 0xdb, 0xf8, 0xbf, 0xe2, 0x9e, 0x3a, 0xef, 0x8f, - 0x7a, 0x9b, 0xfc, 0xa7, 0xf2, 0x7f, 0x77, 0x45, 0x67, 0x89, 0x3f, 0xf9, 0x38, 0x7f, 0x5f, 0x4d, 0xdd, 0xdf, 0x49, 0x85, - 0xfc, 0xff, 0x4e, 0xfe, 0xd7, 0x54, 0x6f, 0xfc, 0xc6, 0x9a, 0xba, 0x67, 0xf7, 0x97, 0x37, 0x56, 0xd4, 0x7d, 0x7f, 0x4f, - 0x5d, 0xff, 0xbf, 0x61, 0x8e, 0x72, 0x7a, 0x4d, 0x5d, 0x15, 0x75, 0x73, 0xdb, 0xb6, 0xe6, 0x3f, 0x56, 0xc0, 0xdd, 0x57, - 0xac, 0x63, 0xe2, 0x2a, 0x37, 0xf0, 0xad, 0xf9, 0x37, 0xfe, 0x87, 0xef, 0x9f, 0xb1, 0x3a, 0x3a, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xf8, 0xe7, 0xc7, - 0x71, 0x00, 0xf9, 0x07, 0x7e, 0x2e, 0xff, 0xff, 0x02 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle rltechFontRecs[189] = { - { 4, 4, 5 , 16 }, - { 17, 4, 1 , 9 }, - { 26, 4, 3 , 3 }, - { 37, 4, 5 , 7 }, - { 50, 4, 5 , 9 }, - { 63, 4, 7 , 9 }, - { 78, 4, 6 , 9 }, - { 92, 4, 1 , 3 }, - { 101, 4, 2 , 13 }, - { 111, 4, 2 , 13 }, - { 121, 4, 5 , 5 }, - { 134, 4, 5 , 5 }, - { 147, 4, 1 , 2 }, - { 156, 4, 5 , 1 }, - { 169, 4, 1 , 1 }, - { 178, 4, 3 , 9 }, - { 189, 4, 5 , 9 }, - { 202, 4, 2 , 9 }, - { 212, 4, 5 , 9 }, - { 225, 4, 5 , 9 }, - { 238, 4, 5 , 9 }, - { 251, 4, 5 , 9 }, - { 264, 4, 5 , 9 }, - { 277, 4, 5 , 9 }, - { 290, 4, 5 , 9 }, - { 303, 4, 5 , 9 }, - { 316, 4, 1 , 6 }, - { 325, 4, 1 , 7 }, - { 334, 4, 3 , 5 }, - { 345, 4, 5 , 3 }, - { 358, 4, 3 , 5 }, - { 369, 4, 5 , 9 }, - { 382, 4, 8 , 9 }, - { 398, 4, 5 , 9 }, - { 411, 4, 5 , 9 }, - { 424, 4, 5 , 9 }, - { 437, 4, 5 , 9 }, - { 450, 4, 5 , 9 }, - { 463, 4, 5 , 9 }, - { 476, 4, 5 , 9 }, - { 489, 4, 5 , 9 }, - { 502, 4, 1 , 9 }, - { 4, 28, 5 , 9 }, - { 17, 28, 5 , 9 }, - { 30, 28, 5 , 9 }, - { 43, 28, 9 , 9 }, - { 60, 28, 5 , 9 }, - { 73, 28, 5 , 9 }, - { 86, 28, 5 , 9 }, - { 99, 28, 5 , 9 }, - { 112, 28, 5 , 9 }, - { 125, 28, 5 , 9 }, - { 138, 28, 5 , 9 }, - { 151, 28, 5 , 9 }, - { 164, 28, 5 , 9 }, - { 177, 28, 9 , 9 }, - { 194, 28, 5 , 9 }, - { 207, 28, 5 , 9 }, - { 220, 28, 5 , 9 }, - { 233, 28, 3 , 13 }, - { 244, 28, 3 , 9 }, - { 255, 28, 3 , 13 }, - { 266, 28, 3 , 2 }, - { 277, 28, 6 , 1 }, - { 291, 28, 2 , 2 }, - { 301, 28, 5 , 7 }, - { 314, 28, 5 , 9 }, - { 327, 28, 5 , 7 }, - { 340, 28, 5 , 9 }, - { 353, 28, 5 , 7 }, - { 366, 28, 4 , 9 }, - { 378, 28, 5 , 10 }, - { 391, 28, 5 , 9 }, - { 404, 28, 1 , 9 }, - { 413, 28, 1 , 12 }, - { 422, 28, 5 , 9 }, - { 435, 28, 1 , 9 }, - { 444, 28, 9 , 7 }, - { 461, 28, 5 , 7 }, - { 474, 28, 5 , 7 }, - { 487, 28, 5 , 10 }, - { 4, 52, 5 , 10 }, - { 17, 52, 5 , 7 }, - { 30, 52, 5 , 7 }, - { 43, 52, 4 , 9 }, - { 55, 52, 5 , 7 }, - { 68, 52, 5 , 7 }, - { 81, 52, 9 , 7 }, - { 98, 52, 5 , 7 }, - { 111, 52, 5 , 10 }, - { 124, 52, 5 , 7 }, - { 137, 52, 3 , 13 }, - { 148, 52, 1 , 13 }, - { 157, 52, 3 , 13 }, - { 168, 52, 4 , 2 }, - { 180, 52, 1 , 9 }, - { 189, 52, 5 , 7 }, - { 202, 52, 5 , 9 }, - { 215, 52, 5 , 9 }, - { 228, 52, 5 , 9 }, - { 241, 52, 5 , 12 }, - { 254, 52, 5 , 9 }, - { 267, 52, 5 , 10 }, - { 280, 52, 8 , 9 }, - { 296, 52, 4 , 7 }, - { 308, 52, 6 , 5 }, - { 322, 52, 5 , 3 }, - { 335, 52, 8 , 9 }, - { 351, 52, 6 , 1 }, - { 365, 52, 3 , 3 }, - { 376, 52, 5 , 7 }, - { 389, 52, 4 , 5 }, - { 401, 52, 4 , 5 }, - { 413, 52, 5 , 12 }, - { 426, 52, 5 , 10 }, - { 439, 52, 6 , 9 }, - { 453, 52, 1 , 1 }, - { 462, 52, 5 , 10 }, - { 475, 52, 2 , 5 }, - { 485, 52, 4 , 7 }, - { 497, 52, 6 , 5 }, - { 4, 76, 9 , 9 }, - { 21, 76, 9 , 7 }, - { 38, 76, 5 , 11 }, - { 51, 76, 5 , 9 }, - { 64, 76, 5 , 12 }, - { 77, 76, 5 , 12 }, - { 90, 76, 5 , 12 }, - { 103, 76, 5 , 12 }, - { 116, 76, 5 , 11 }, - { 129, 76, 5 , 11 }, - { 142, 76, 9 , 9 }, - { 159, 76, 5 , 11 }, - { 172, 76, 5 , 12 }, - { 185, 76, 5 , 12 }, - { 198, 76, 5 , 12 }, - { 211, 76, 5 , 11 }, - { 224, 76, 2 , 12 }, - { 234, 76, 2 , 12 }, - { 244, 76, 3 , 12 }, - { 255, 76, 3 , 11 }, - { 266, 76, 6 , 9 }, - { 280, 76, 5 , 12 }, - { 293, 76, 5 , 12 }, - { 306, 76, 5 , 12 }, - { 319, 76, 5 , 12 }, - { 332, 76, 5 , 12 }, - { 345, 76, 5 , 11 }, - { 358, 76, 5 , 5 }, - { 371, 76, 5 , 9 }, - { 384, 76, 5 , 12 }, - { 397, 76, 5 , 12 }, - { 410, 76, 5 , 12 }, - { 423, 76, 5 , 11 }, - { 436, 76, 5 , 12 }, - { 449, 76, 5 , 9 }, - { 462, 76, 5 , 11 }, - { 475, 76, 5 , 10 }, - { 488, 76, 5 , 10 }, - { 4, 100, 5 , 10 }, - { 17, 100, 5 , 10 }, - { 30, 100, 5 , 9 }, - { 43, 100, 5 , 9 }, - { 56, 100, 9 , 7 }, - { 73, 100, 5 , 9 }, - { 86, 100, 5 , 10 }, - { 99, 100, 5 , 10 }, - { 112, 100, 5 , 10 }, - { 125, 100, 5 , 9 }, - { 138, 100, 2 , 10 }, - { 148, 100, 2 , 10 }, - { 158, 100, 3 , 10 }, - { 169, 100, 3 , 9 }, - { 180, 100, 5 , 9 }, - { 193, 100, 5 , 10 }, - { 206, 100, 5 , 10 }, - { 219, 100, 5 , 10 }, - { 232, 100, 5 , 10 }, - { 245, 100, 5 , 10 }, - { 258, 100, 5 , 9 }, - { 271, 100, 5 , 5 }, - { 284, 100, 5 , 7 }, - { 297, 100, 5 , 10 }, - { 310, 100, 5 , 10 }, - { 323, 100, 5 , 10 }, - { 336, 100, 5 , 9 }, - { 349, 100, 5 , 13 }, - { 362, 100, 5 , 13 }, - { 375, 100, 5 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo rltechFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 3, 2, { 0 }}, - { 34, 0, 3, 4, { 0 }}, - { 35, 0, 3, 6, { 0 }}, - { 36, 0, 3, 6, { 0 }}, - { 37, 0, 3, 8, { 0 }}, - { 38, 0, 3, 7, { 0 }}, - { 39, 0, 3, 2, { 0 }}, - { 40, 0, 1, 2, { 0 }}, - { 41, -1, 1, 2, { 0 }}, - { 42, 0, 3, 6, { 0 }}, - { 43, 0, 5, 6, { 0 }}, - { 44, 0, 10, 2, { 0 }}, - { 45, 0, 8, 6, { 0 }}, - { 46, 0, 11, 2, { 0 }}, - { 47, 0, 3, 4, { 0 }}, - { 48, 0, 3, 6, { 0 }}, - { 49, 0, 3, 3, { 0 }}, - { 50, 0, 3, 6, { 0 }}, - { 51, 0, 3, 6, { 0 }}, - { 52, 0, 3, 6, { 0 }}, - { 53, 0, 3, 6, { 0 }}, - { 54, 0, 3, 6, { 0 }}, - { 55, 0, 3, 6, { 0 }}, - { 56, 0, 3, 6, { 0 }}, - { 57, 0, 3, 6, { 0 }}, - { 58, 0, 4, 2, { 0 }}, - { 59, 0, 4, 2, { 0 }}, - { 60, 0, 5, 4, { 0 }}, - { 61, 0, 6, 6, { 0 }}, - { 62, 0, 5, 4, { 0 }}, - { 63, 0, 3, 6, { 0 }}, - { 64, 0, 3, 9, { 0 }}, - { 65, 0, 3, 6, { 0 }}, - { 66, 0, 3, 6, { 0 }}, - { 67, 0, 3, 6, { 0 }}, - { 68, 0, 3, 6, { 0 }}, - { 69, 0, 3, 6, { 0 }}, - { 70, 0, 3, 6, { 0 }}, - { 71, 0, 3, 6, { 0 }}, - { 72, 0, 3, 6, { 0 }}, - { 73, 0, 3, 2, { 0 }}, - { 74, 0, 3, 6, { 0 }}, - { 75, 0, 3, 6, { 0 }}, - { 76, 0, 3, 6, { 0 }}, - { 77, 0, 3, 10, { 0 }}, - { 78, 0, 3, 6, { 0 }}, - { 79, 0, 3, 6, { 0 }}, - { 80, 0, 3, 6, { 0 }}, - { 81, 0, 3, 6, { 0 }}, - { 82, 0, 3, 6, { 0 }}, - { 83, 0, 3, 6, { 0 }}, - { 84, 0, 3, 6, { 0 }}, - { 85, 0, 3, 6, { 0 }}, - { 86, 0, 3, 6, { 0 }}, - { 87, 0, 3, 10, { 0 }}, - { 88, 0, 3, 6, { 0 }}, - { 89, 0, 3, 6, { 0 }}, - { 90, 0, 3, 6, { 0 }}, - { 91, 0, 1, 2, { 0 }}, - { 92, 0, 3, 4, { 0 }}, - { 93, -2, 1, 2, { 0 }}, - { 94, 0, 3, 4, { 0 }}, - { 95, 0, 12, 7, { 0 }}, - { 96, 0, 3, 3, { 0 }}, - { 97, 0, 5, 6, { 0 }}, - { 98, 0, 3, 6, { 0 }}, - { 99, 0, 5, 6, { 0 }}, - { 100, 0, 3, 6, { 0 }}, - { 101, 0, 5, 6, { 0 }}, - { 102, 0, 3, 5, { 0 }}, - { 103, 0, 5, 6, { 0 }}, - { 104, 0, 3, 6, { 0 }}, - { 105, 0, 3, 2, { 0 }}, - { 106, 0, 3, 2, { 0 }}, - { 107, 0, 3, 6, { 0 }}, - { 108, 0, 3, 2, { 0 }}, - { 109, 0, 5, 10, { 0 }}, - { 110, 0, 5, 6, { 0 }}, - { 111, 0, 5, 6, { 0 }}, - { 112, 0, 5, 6, { 0 }}, - { 113, 0, 5, 6, { 0 }}, - { 114, 0, 5, 6, { 0 }}, - { 115, 0, 5, 6, { 0 }}, - { 116, 0, 3, 5, { 0 }}, - { 117, 0, 5, 6, { 0 }}, - { 118, 0, 5, 6, { 0 }}, - { 119, 0, 5, 10, { 0 }}, - { 120, 0, 5, 6, { 0 }}, - { 121, 0, 5, 6, { 0 }}, - { 122, 0, 5, 6, { 0 }}, - { 123, 0, 1, 3, { 0 }}, - { 124, 0, 1, 2, { 0 }}, - { 125, -1, 1, 3, { 0 }}, - { 126, 0, 3, 5, { 0 }}, - { 161, 0, 6, 2, { 0 }}, - { 162, 0, 4, 6, { 0 }}, - { 163, 0, 3, 6, { 0 }}, - { 8364, 0, 3, 6, { 0 }}, - { 165, 0, 3, 6, { 0 }}, - { 352, 0, 0, 6, { 0 }}, - { 167, 0, 3, 6, { 0 }}, - { 353, 0, 2, 6, { 0 }}, - { 169, 0, 3, 9, { 0 }}, - { 170, 0, 3, 5, { 0 }}, - { 171, 0, 5, 7, { 0 }}, - { 172, 0, 6, 6, { 0 }}, - { 174, 0, 3, 9, { 0 }}, - { 175, 0, 2, 7, { 0 }}, - { 176, 0, 3, 4, { 0 }}, - { 177, 0, 4, 6, { 0 }}, - { 178, 0, 3, 5, { 0 }}, - { 179, 0, 3, 5, { 0 }}, - { 381, 0, 0, 6, { 0 }}, - { 181, 0, 5, 6, { 0 }}, - { 182, 0, 3, 7, { 0 }}, - { 183, 0, 7, 2, { 0 }}, - { 382, 0, 2, 6, { 0 }}, - { 185, 0, 3, 3, { 0 }}, - { 186, 0, 3, 5, { 0 }}, - { 187, 0, 5, 7, { 0 }}, - { 338, 0, 3, 10, { 0 }}, - { 339, 0, 5, 10, { 0 }}, - { 376, 0, 1, 6, { 0 }}, - { 191, 0, 6, 6, { 0 }}, - { 192, 0, 0, 6, { 0 }}, - { 193, 0, 0, 6, { 0 }}, - { 194, 0, 0, 6, { 0 }}, - { 195, 0, 0, 6, { 0 }}, - { 196, 0, 1, 6, { 0 }}, - { 197, 0, 1, 6, { 0 }}, - { 198, 0, 3, 10, { 0 }}, - { 199, 0, 3, 6, { 0 }}, - { 200, 0, 0, 6, { 0 }}, - { 201, 0, 0, 6, { 0 }}, - { 202, 0, 0, 6, { 0 }}, - { 203, 0, 1, 6, { 0 }}, - { 204, -1, 0, 2, { 0 }}, - { 205, 0, 0, 2, { 0 }}, - { 206, -1, 0, 2, { 0 }}, - { 207, -1, 1, 2, { 0 }}, - { 208, -1, 3, 6, { 0 }}, - { 209, 0, 0, 6, { 0 }}, - { 210, 0, 0, 6, { 0 }}, - { 211, 0, 0, 6, { 0 }}, - { 212, 0, 0, 6, { 0 }}, - { 213, 0, 0, 6, { 0 }}, - { 214, 0, 1, 6, { 0 }}, - { 215, 0, 5, 6, { 0 }}, - { 216, 0, 3, 6, { 0 }}, - { 217, 0, 0, 6, { 0 }}, - { 218, 0, 0, 6, { 0 }}, - { 219, 0, 0, 6, { 0 }}, - { 220, 0, 1, 6, { 0 }}, - { 221, 0, 0, 6, { 0 }}, - { 222, 0, 3, 6, { 0 }}, - { 223, 0, 3, 6, { 0 }}, - { 224, 0, 2, 6, { 0 }}, - { 225, 0, 2, 6, { 0 }}, - { 226, 0, 2, 6, { 0 }}, - { 227, 0, 2, 6, { 0 }}, - { 228, 0, 3, 6, { 0 }}, - { 229, 0, 3, 6, { 0 }}, - { 230, 0, 5, 10, { 0 }}, - { 231, 0, 5, 6, { 0 }}, - { 232, 0, 2, 6, { 0 }}, - { 233, 0, 2, 6, { 0 }}, - { 234, 0, 2, 6, { 0 }}, - { 235, 0, 3, 6, { 0 }}, - { 236, -1, 2, 2, { 0 }}, - { 237, 0, 2, 2, { 0 }}, - { 238, -1, 2, 2, { 0 }}, - { 239, -1, 3, 2, { 0 }}, - { 240, 0, 3, 6, { 0 }}, - { 241, 0, 2, 6, { 0 }}, - { 242, 0, 2, 6, { 0 }}, - { 243, 0, 2, 6, { 0 }}, - { 244, 0, 2, 6, { 0 }}, - { 245, 0, 2, 6, { 0 }}, - { 246, 0, 3, 6, { 0 }}, - { 247, 0, 5, 6, { 0 }}, - { 248, 0, 5, 6, { 0 }}, - { 249, 0, 2, 6, { 0 }}, - { 250, 0, 2, 6, { 0 }}, - { 251, 0, 2, 6, { 0 }}, - { 252, 0, 3, 6, { 0 }}, - { 253, 0, 2, 6, { 0 }}, - { 254, 0, 2, 6, { 0 }}, - { 255, 0, 3, 6, { 0 }}, -}; - -// Style loading function: RLTech -static void GuiLoadStyleRLTech(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < RLTECH_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(rltechStyleProps[i].controlId, rltechStyleProps[i].propertyId, rltechStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int rltechFontDataSize = 0; - unsigned char *data = DecompressData(rltechFontData, RLTECH_STYLE_FONT_ATLAS_COMP_SIZE, &rltechFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, rltechFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, rltechFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_sunny.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_sunny.h deleted file mode 100644 index 639ce1a..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_sunny.h +++ /dev/null @@ -1,614 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleSunny(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define SUNNY_STYLE_PROPS_COUNT 33 - -// Custom style name: Sunny -static const GuiStyleProp sunnyStyleProps[SUNNY_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x9c760aff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x594006ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xf6d519ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xf6ee89ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xf5f3d1ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xf4cd19ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xf7e580ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xf7f2c1ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x52470aff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0xc0be92ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0xd3d3a1ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0xbcbc89ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x725706ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0xf0be4bff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING - { 1, 2, (int)0x504506ff }, // LABEL_TEXT_COLOR_NORMAL - { 1, 5, (int)0xfdeb9bff }, // LABEL_TEXT_COLOR_FOCUSED - { 1, 8, (int)0xf5e8a4ff }, // LABEL_TEXT_COLOR_PRESSED - { 2, 2, (int)0xebc21fff }, // BUTTON_TEXT_COLOR_NORMAL - { 3, 2, (int)0xebc21fff }, // TOGGLE_TEXT_COLOR_NORMAL - { 4, 2, (int)0x81700fff }, // SLIDER_TEXT_COLOR_NORMAL - { 4, 5, (int)0xf4e49aff }, // SLIDER_TEXT_COLOR_FOCUSED - { 7, 2, (int)0xebc21fff }, // COMBOBOX_TEXT_COLOR_NORMAL - { 8, 2, (int)0xefd87bff }, // DROPDOWNBOX_TEXT_COLOR_NORMAL - { 8, 5, (int)0xd4b219ff }, // DROPDOWNBOX_TEXT_COLOR_FOCUSED - { 9, 2, (int)0x7a680bff }, // TEXTBOX_TEXT_COLOR_NORMAL - { 9, 5, (int)0xad931fff }, // TEXTBOX_TEXT_COLOR_FOCUSED - { 10, 2, (int)0x62570eff }, // VALUEBOX_TEXT_COLOR_NORMAL - { 10, 5, (int)0xf2df88ff }, // VALUEBOX_TEXT_COLOR_FOCUSED - { 12, 2, (int)0xf4e798ff }, // LISTVIEW_TEXT_COLOR_NORMAL - { 15, 2, (int)0xebc21fff }, // STATUSBAR_TEXT_COLOR_NORMAL -}; - -// WARNING: This style uses a custom font: "GMSN.ttf" (size: 16, spacing: 0) - -#define SUNNY_STYLE_FONT_ATLAS_COMP_SIZE 2434 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char sunnyFontData[SUNNY_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x5b, 0x6e, 0xe4, 0x36, 0x10, 0x05, 0x50, 0xee, 0x7f, 0xa1, 0xd9, 0x06, 0x83, 0x20, 0x18, 0x24, 0xe3, 0xb1, 0x45, - 0xb2, 0xaa, 0xa8, 0x57, 0x9f, 0x1c, 0xe4, 0xc7, 0x1a, 0xb7, 0xd5, 0x94, 0xae, 0x44, 0x3d, 0x58, 0xec, 0x0d, 0x00, 0x00, - 0x00, 0xf8, 0x78, 0xff, 0xfc, 0xf7, 0xfd, 0xcf, 0xbe, 0x5b, 0x72, 0xbc, 0xec, 0xd7, 0xbf, 0x18, 0x2d, 0xe9, 0x3f, 0xae, - 0x49, 0x3f, 0x58, 0x36, 0xf7, 0xb7, 0x62, 0xeb, 0xd5, 0x97, 0xda, 0xa6, 0x1f, 0xb4, 0x5a, 0x4b, 0xff, 0xbc, 0x1d, 0xb6, - 0x7d, 0x0f, 0xb4, 0x5e, 0x3b, 0x5c, 0xe7, 0x9f, 0x7f, 0x73, 0xbc, 0xa4, 0x72, 0x3d, 0x57, 0xda, 0xb4, 0x72, 0xfb, 0xac, - 0xb4, 0x60, 0x5b, 0x5e, 0x7a, 0xdc, 0x52, 0x6d, 0xaa, 0x1d, 0xc7, 0x9f, 0xdc, 0x6f, 0x92, 0xff, 0xe3, 0x6f, 0xf3, 0x2b, - 0x83, 0x47, 0x5b, 0x7f, 0x7e, 0xdf, 0x68, 0xd3, 0xc7, 0x84, 0xff, 0xfe, 0x76, 0x5d, 0x42, 0xb3, 0x9f, 0xd2, 0x87, 0x47, - 0xc2, 0x95, 0x16, 0x3a, 0x6e, 0xbd, 0x16, 0xca, 0xc4, 0xe8, 0x33, 0x23, 0xeb, 0x32, 0xb3, 0x6c, 0x6e, 0xfd, 0x62, 0xfb, - 0xfc, 0xf8, 0xf3, 0x8e, 0xf7, 0xb4, 0xa3, 0x2d, 0x3c, 0xda, 0x73, 0x8f, 0xbf, 0xdf, 0xfa, 0x56, 0xcd, 0xa4, 0x7e, 0x4f, - 0xfe, 0xfb, 0xff, 0x72, 0xd6, 0x83, 0x19, 0xcc, 0x9f, 0x1b, 0xd6, 0xcf, 0x0a, 0xc7, 0xc7, 0xac, 0x7d, 0x2d, 0x7c, 0xd4, - 0x4e, 0x3d, 0xb0, 0x0f, 0xaf, 0x6f, 0xb3, 0xe8, 0xdf, 0xd9, 0x91, 0xff, 0x8a, 0x14, 0xb7, 0x89, 0x33, 0x62, 0xa4, 0x4f, - 0x71, 0xdc, 0xe3, 0xcc, 0x27, 0x7c, 0xb4, 0x2e, 0x91, 0xfe, 0x4c, 0xbe, 0x2d, 0x57, 0xfb, 0x1c, 0xfb, 0xf2, 0x5f, 0x71, - 0xbe, 0x5d, 0x3f, 0x97, 0xec, 0x6b, 0xdf, 0x99, 0xf3, 0xf5, 0xfd, 0xf3, 0xbf, 0xfe, 0xdd, 0x2a, 0xf2, 0x5f, 0xb3, 0x55, - 0xd6, 0xf3, 0xdf, 0xe5, 0x7f, 0xfa, 0xfc, 0xff, 0x73, 0xab, 0xf7, 0xe0, 0xf5, 0x57, 0xfe, 0xaa, 0xbd, 0xaa, 0x9f, 0x7f, - 0x6d, 0xfe, 0x47, 0xd7, 0x83, 0x6d, 0x39, 0xff, 0xb1, 0xab, 0xcf, 0xc8, 0xd5, 0x46, 0x55, 0xff, 0x7f, 0x6f, 0xef, 0xe1, - 0xf8, 0xea, 0x31, 0x92, 0xf0, 0xb5, 0x7b, 0x1e, 0x35, 0x9f, 0x7c, 0x45, 0xfe, 0xdb, 0xc4, 0xda, 0xf4, 0xe1, 0xf5, 0xff, - 0xec, 0x11, 0x7e, 0x2d, 0xff, 0x75, 0xe7, 0x8e, 0x2b, 0xf3, 0xdf, 0x83, 0x77, 0xc4, 0xaa, 0xaf, 0xe3, 0xe3, 0xdf, 0x6d, - 0xed, 0xfe, 0xdc, 0x79, 0xd7, 0xff, 0xa3, 0x7e, 0x60, 0x26, 0xff, 0x9f, 0xd2, 0xff, 0x9f, 0xe9, 0x69, 0x8f, 0x5a, 0x71, - 0xfe, 0x78, 0x76, 0xc5, 0xd9, 0xfc, 0xda, 0xfc, 0xf7, 0xa9, 0x7b, 0xd8, 0xf7, 0xce, 0x7f, 0x5b, 0xbe, 0xca, 0xab, 0xdc, - 0x77, 0xa3, 0x7b, 0xd4, 0x68, 0xcf, 0x9d, 0x39, 0xaa, 0xdd, 0x33, 0xff, 0xb1, 0xfd, 0xb9, 0x0f, 0x7b, 0xf9, 0x3d, 0x91, - 0xff, 0xf6, 0x9a, 0xfc, 0xf7, 0xe0, 0xdd, 0x8e, 0x9f, 0xfb, 0x7b, 0xb1, 0xfb, 0x71, 0x91, 0x9e, 0x7c, 0xa6, 0x8f, 0x52, - 0x95, 0xff, 0x7b, 0x6c, 0x49, 0xe7, 0xff, 0x8a, 0xfb, 0xff, 0xed, 0xb0, 0x87, 0xff, 0x59, 0xf9, 0x3f, 0x7e, 0xfe, 0xd7, - 0x6e, 0xff, 0xac, 0x2e, 0x9a, 0xff, 0x9a, 0xfb, 0xff, 0xe7, 0x1f, 0xad, 0x67, 0xae, 0x5c, 0x73, 0xf9, 0xbf, 0xd3, 0xf3, - 0xbf, 0xbd, 0xf9, 0x1f, 0x3d, 0xf5, 0x7e, 0x53, 0xff, 0xbf, 0xf2, 0x3e, 0x7e, 0xfc, 0x9d, 0x9b, 0x7d, 0xef, 0x14, 0xb5, - 0xd0, 0x9b, 0x5c, 0xf7, 0x4c, 0x7f, 0xf4, 0x39, 0x50, 0xee, 0x2e, 0xdd, 0xd5, 0xef, 0xff, 0xd4, 0xb7, 0xe0, 0x79, 0xeb, - 0xd3, 0x6f, 0xdc, 0x67, 0xe4, 0x5d, 0x6f, 0xc9, 0xda, 0xbb, 0xce, 0x7c, 0x3e, 0x1b, 0xff, 0x5b, 0xb6, 0x0f, 0x3b, 0xcf, - 0x6c, 0x5a, 0xe2, 0x19, 0xf7, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0xe3, - 0x17, 0x22, 0x63, 0x0d, 0xa3, 0x75, 0x08, 0x6a, 0xeb, 0x21, 0xf4, 0x2f, 0x75, 0x58, 0x57, 0x3f, 0x7b, 0x76, 0xac, 0x65, - 0x66, 0x9c, 0x66, 0xed, 0xef, 0x56, 0x55, 0x96, 0xa8, 0x1d, 0x79, 0x3e, 0xae, 0x77, 0xb3, 0x5a, 0xad, 0x39, 0x56, 0x05, - 0x6d, 0xbd, 0xa6, 0x79, 0xa6, 0x0e, 0x5f, 0xf5, 0xd8, 0xea, 0x9a, 0xfa, 0x68, 0xf3, 0x63, 0xde, 0x6b, 0x2a, 0x8d, 0xd4, - 0xe5, 0x7f, 0x7d, 0x3b, 0xf4, 0x2f, 0xeb, 0xd1, 0x2f, 0xa8, 0xc4, 0x50, 0xbf, 0x74, 0xee, 0xe7, 0x77, 0xca, 0xff, 0xec, - 0x31, 0x38, 0xbb, 0xf7, 0xc6, 0x47, 0xdc, 0x8d, 0xaa, 0x4f, 0x5c, 0x5f, 0x5b, 0xa5, 0x15, 0xd5, 0x47, 0xad, 0xcf, 0x7f, - 0x3b, 0xe9, 0xfc, 0x1f, 0xcd, 0x7f, 0x1f, 0xce, 0x66, 0x73, 0xdf, 0xfc, 0xaf, 0xd7, 0x9d, 0xc8, 0xfe, 0xd5, 0xdc, 0x4c, - 0x0e, 0xf1, 0x5a, 0xe3, 0xf9, 0xfc, 0xe7, 0x2a, 0x05, 0x9d, 0x7b, 0x6e, 0xbd, 0x3e, 0xff, 0xd1, 0x16, 0xb9, 0x2a, 0xff, - 0xf1, 0xbd, 0xa4, 0x0f, 0xab, 0x59, 0xdf, 0x31, 0xff, 0xfd, 0xe3, 0xf3, 0x5f, 0x5f, 0xcb, 0x37, 0x9a, 0x80, 0x48, 0x1d, - 0xf4, 0x99, 0xeb, 0xea, 0xd5, 0x2b, 0xbb, 0xf8, 0x75, 0x57, 0xf4, 0xfc, 0x3f, 0xfa, 0xfd, 0x99, 0x6f, 0x72, 0x75, 0xfe, - 0xdb, 0x30, 0xe1, 0x3d, 0x91, 0xd2, 0xf8, 0x1d, 0x90, 0x4c, 0xcd, 0xab, 0x6b, 0xf2, 0xdf, 0x42, 0x33, 0x06, 0xc6, 0xcf, - 0xf3, 0x77, 0xcf, 0x7f, 0xf5, 0xb5, 0x41, 0xf4, 0x8e, 0x41, 0xf5, 0x3a, 0xde, 0xef, 0xfa, 0xbf, 0x17, 0xf4, 0x12, 0x77, - 0xe4, 0x3f, 0xdb, 0x3e, 0xd1, 0x34, 0xc5, 0xf2, 0x3f, 0x7f, 0x76, 0x8f, 0xcd, 0x26, 0x10, 0x5b, 0xf6, 0xde, 0xfc, 0xd7, - 0xd6, 0x4f, 0x5d, 0xbf, 0x57, 0xfc, 0xa6, 0xfc, 0x47, 0xaf, 0xff, 0xe7, 0xaf, 0xb8, 0xee, 0x95, 0xff, 0x36, 0x31, 0x3f, - 0xcf, 0xd9, 0xf9, 0x1f, 0x55, 0x5b, 0x7d, 0x5b, 0xfe, 0xa3, 0xd9, 0x8a, 0xce, 0x67, 0xd4, 0xc2, 0x67, 0xba, 0xb7, 0x9f, - 0xff, 0xdb, 0x4b, 0xf3, 0x1f, 0x9f, 0x5f, 0xe6, 0x59, 0xf9, 0xaf, 0xee, 0x35, 0x5c, 0x5f, 0x57, 0x2f, 0x7a, 0xb7, 0x31, - 0x7e, 0x97, 0xf2, 0xdd, 0xfd, 0xff, 0xbe, 0xa1, 0x17, 0x9e, 0x7d, 0xfe, 0x7f, 0x55, 0xfe, 0x77, 0x3d, 0xff, 0x6b, 0xd3, - 0x73, 0xfe, 0xed, 0x5a, 0x2b, 0xf9, 0xaf, 0xce, 0x7f, 0xe5, 0xdc, 0x89, 0x6b, 0xff, 0xa2, 0xfa, 0xfd, 0x9f, 0xfa, 0x3b, - 0x69, 0xfb, 0xdf, 0xff, 0xd9, 0xd3, 0x3e, 0x6d, 0x6a, 0xc6, 0xb4, 0xf5, 0xbf, 0xda, 0x26, 0x67, 0x35, 0x8e, 0xad, 0x73, - 0xfd, 0xdb, 0x37, 0x77, 0xcf, 0x7f, 0xec, 0x6d, 0x83, 0xe8, 0x6f, 0xc6, 0x7f, 0xe3, 0x3e, 0x73, 0x81, 0x7d, 0xe6, 0x5b, - 0x94, 0x5a, 0xa1, 0xba, 0x85, 0xb4, 0x2a, 0x8e, 0x00, 0xef, 0x7a, 0xcf, 0x7c, 0xd7, 0xbf, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbc, 0xd1, 0x2b, 0xb3, 0x35, 0xb7, 0xff, 0xfc, 0x69, 0x0f, 0x8d, 0x77, - 0xed, 0xc9, 0xdf, 0xeb, 0xcb, 0x75, 0x30, 0xd6, 0xc6, 0x9d, 0x56, 0xd4, 0x60, 0xa8, 0xae, 0x23, 0x35, 0x6e, 0x97, 0xd9, - 0x2d, 0x3d, 0x1e, 0x49, 0xbc, 0xba, 0x87, 0x44, 0xc6, 0xf5, 0x64, 0x2a, 0xea, 0x64, 0xe6, 0x12, 0x88, 0x57, 0x42, 0x6c, - 0x8b, 0x9f, 0x1a, 0xdb, 0x6a, 0x91, 0xf1, 0xe1, 0x3b, 0xf3, 0x1f, 0xab, 0x2d, 0x79, 0x45, 0xa5, 0xb5, 0xf8, 0xde, 0x54, - 0xbb, 0x86, 0xf5, 0xad, 0x32, 0xb7, 0xb6, 0xb9, 0x9f, 0x67, 0xc6, 0xf4, 0xe7, 0x6a, 0x0f, 0xac, 0xb6, 0x44, 0x9f, 0xaa, - 0x96, 0xb2, 0xfa, 0x9b, 0x3f, 0xff, 0xde, 0xf1, 0xb2, 0x3e, 0x55, 0x39, 0x62, 0xed, 0x53, 0xbf, 0xff, 0xb7, 0xfb, 0x2a, - 0x27, 0xbc, 0x23, 0xff, 0x2d, 0x70, 0x94, 0x3d, 0x37, 0xff, 0xf1, 0xe3, 0x54, 0x2b, 0xac, 0xd2, 0xb3, 0x3e, 0x37, 0x46, - 0x64, 0xe4, 0x6e, 0xbe, 0x46, 0xd0, 0x19, 0x15, 0x35, 0xfe, 0xcc, 0xd7, 0xca, 0x56, 0x9b, 0x4b, 0xff, 0xf7, 0xc7, 0xb8, - 0x76, 0xd0, 0xdb, 0x9a, 0xcd, 0x7f, 0x0f, 0xd4, 0x1e, 0xa9, 0xa9, 0xc8, 0xf7, 0x9c, 0xfc, 0xcf, 0x5c, 0x6d, 0x9c, 0x97, - 0xff, 0xf1, 0xcf, 0xeb, 0xaa, 0x6a, 0x57, 0xd6, 0xda, 0x19, 0xd5, 0x5a, 0x6e, 0xa1, 0x2d, 0xd2, 0x83, 0xc7, 0x95, 0x5e, - 0x5c, 0xcf, 0xbc, 0x7f, 0xf9, 0x7f, 0xf6, 0x4c, 0x3d, 0x9b, 0xff, 0xd5, 0xbf, 0x78, 0x4d, 0xff, 0x7f, 0x65, 0x7f, 0x79, - 0x52, 0xfe, 0xdb, 0x54, 0x2d, 0xb2, 0x7b, 0x9f, 0xff, 0x2b, 0x6b, 0x6a, 0xd5, 0xe7, 0x3f, 0x96, 0xf0, 0xc8, 0xfe, 0x3e, - 0x3f, 0xe3, 0xc1, 0xda, 0x76, 0x1b, 0xf7, 0xf2, 0x7b, 0xa2, 0xff, 0x9f, 0xcf, 0x7f, 0x5d, 0x9f, 0x67, 0xed, 0xea, 0xf9, - 0x8a, 0xfc, 0xf7, 0x44, 0x65, 0xf4, 0xfd, 0xd7, 0xff, 0xa3, 0x7e, 0x62, 0xb4, 0x55, 0xea, 0xe7, 0xa6, 0xaa, 0xac, 0xb6, - 0xbd, 0x9a, 0xff, 0xcc, 0xf9, 0x3f, 0x7a, 0x1f, 0x22, 0xd3, 0x43, 0x5c, 0xbb, 0x1e, 0xcf, 0x1f, 0x01, 0xd6, 0xfa, 0xff, - 0x67, 0xdc, 0xff, 0xef, 0xa7, 0x5d, 0xff, 0xb7, 0xd4, 0x2c, 0x46, 0x95, 0xfd, 0xff, 0x96, 0xe8, 0x65, 0x66, 0x8e, 0x36, - 0x91, 0xd6, 0x5e, 0x6f, 0xb3, 0x2b, 0xcf, 0xff, 0xb9, 0xd9, 0xe6, 0xda, 0xb6, 0x7a, 0xa7, 0x91, 0xfe, 0xff, 0x9e, 0x14, - 0x56, 0xfc, 0xc5, 0xca, 0xeb, 0xff, 0xeb, 0xe7, 0x66, 0xc8, 0xe4, 0xff, 0xac, 0xde, 0xd3, 0xfe, 0x6f, 0x5e, 0x5b, 0x47, - 0xfa, 0x0e, 0xd7, 0xff, 0x91, 0xfb, 0xff, 0xd1, 0x9a, 0xc7, 0xe3, 0xb3, 0x71, 0xff, 0xf1, 0x0a, 0xff, 0xcc, 0xb3, 0xf1, - 0xf9, 0x47, 0x9c, 0xda, 0xeb, 0x7f, 0xf9, 0xdf, 0xf3, 0xdd, 0x2b, 0x6b, 0xe7, 0xee, 0xce, 0xff, 0x5c, 0xcf, 0x2a, 0x36, - 0x23, 0x62, 0x6e, 0xc6, 0xe4, 0xe8, 0x35, 0x5d, 0x3b, 0x75, 0x4f, 0x6f, 0x17, 0xf4, 0xfe, 0xab, 0x67, 0xe4, 0x79, 0xe7, - 0xfb, 0x50, 0xef, 0xf8, 0x06, 0x67, 0x1c, 0xcf, 0x7b, 0x61, 0xcf, 0x34, 0x7f, 0xff, 0x2f, 0x7e, 0xb4, 0x6a, 0x17, 0xd4, - 0x20, 0x3e, 0xfb, 0x2f, 0xc6, 0x9f, 0x56, 0x20, 0xff, 0x6b, 0xf9, 0xdf, 0xdf, 0x4b, 0xaa, 0x7a, 0x87, 0xe1, 0xd3, 0xf6, - 0x14, 0x2d, 0xf3, 0x29, 0xdb, 0x75, 0xfd, 0x4e, 0xef, 0x5b, 0x5a, 0xc2, 0x3e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x6b, 0xf4, 0x4f, 0xac, 0x9a, 0xc2, 0x6c, 0x2d, 0xab, 0xbe, 0x30, 0x3a, 0xb3, 0x0d, - 0xeb, 0x33, 0x67, 0x3f, 0xe7, 0xeb, 0xcc, 0x05, 0x7d, 0xf0, 0x2f, 0x5a, 0x60, 0x4d, 0x7b, 0x78, 0xac, 0xf1, 0xfa, 0x3c, - 0x0c, 0x5f, 0xd7, 0xb8, 0x25, 0x5a, 0x64, 0x3c, 0x92, 0x77, 0x7d, 0xc6, 0x86, 0xbd, 0xdf, 0xb9, 0xa6, 0x22, 0x7a, 0xa4, - 0xb6, 0xdf, 0x6c, 0x85, 0x92, 0xb3, 0x5b, 0x25, 0x33, 0x62, 0xbb, 0x05, 0x8e, 0x0d, 0xa3, 0x7a, 0x42, 0x2b, 0xb5, 0xba, - 0xd6, 0x8e, 0x4f, 0x73, 0x55, 0xf8, 0xd6, 0xc7, 0xa5, 0xcf, 0xd5, 0xf0, 0x6c, 0x1b, 0xeb, 0x5e, 0xaf, 0xef, 0xed, 0xf1, - 0xa4, 0xe4, 0x96, 0xce, 0x8d, 0xc7, 0xdf, 0xf1, 0x9d, 0xe3, 0x35, 0x6b, 0xe7, 0x3f, 0x27, 0x73, 0xf6, 0x1b, 0xa7, 0x74, - 0x4f, 0xab, 0xc4, 0xd2, 0x9f, 0xa9, 0x08, 0xb3, 0x9e, 0xff, 0x9a, 0xf5, 0x1e, 0xcf, 0x89, 0x10, 0x9b, 0x65, 0x63, 0xa6, - 0x86, 0xf7, 0xfb, 0xaa, 0x07, 0xe4, 0xf3, 0xff, 0xa9, 0x35, 0x17, 0x9e, 0xd4, 0x02, 0x7d, 0x31, 0x61, 0x33, 0xbd, 0xf8, - 0x9a, 0xfc, 0x8f, 0xe7, 0x4a, 0x3a, 0x3f, 0xff, 0x3d, 0xf4, 0x09, 0xf1, 0x9e, 0xdb, 0x1d, 0x97, 0xe6, 0xf2, 0x3f, 0xde, - 0x83, 0xf6, 0x2c, 0xad, 0x9a, 0x29, 0x29, 0x57, 0x87, 0xbc, 0x05, 0xaf, 0x1e, 0x32, 0x4b, 0x23, 0xb5, 0x11, 0x7a, 0xe8, - 0x6a, 0x64, 0xcf, 0xf9, 0x3f, 0x7f, 0xfd, 0x3f, 0xdf, 0x6f, 0x8b, 0xdf, 0x3f, 0xc8, 0xec, 0x4b, 0x3b, 0xfa, 0xe1, 0x67, - 0x2c, 0x8d, 0xd4, 0x86, 0xbb, 0x6a, 0xe9, 0xee, 0xfc, 0xf7, 0xdf, 0xe6, 0x4a, 0x3c, 0x4a, 0xd4, 0xfa, 0xd1, 0x21, 0x77, - 0x64, 0xd9, 0xdb, 0xd7, 0x59, 0xbd, 0xff, 0xb7, 0xba, 0x96, 0x75, 0x73, 0x99, 0x45, 0xab, 0x52, 0x7e, 0xfd, 0xfd, 0xba, - 0xf3, 0xff, 0xbe, 0xad, 0xbe, 0x77, 0x69, 0xe6, 0xee, 0xde, 0x5b, 0xf3, 0x3f, 0xd7, 0x6e, 0xef, 0xc8, 0xff, 0xb8, 0x7e, - 0x6b, 0x2f, 0xba, 0x4f, 0x71, 0xc6, 0x37, 0x9a, 0xad, 0xc0, 0x9f, 0x9b, 0x63, 0xf6, 0x4d, 0xf9, 0x6f, 0x45, 0xfd, 0xff, - 0x33, 0x97, 0xde, 0xa3, 0xff, 0xdf, 0x5f, 0x90, 0xff, 0xec, 0x73, 0x9d, 0x8a, 0x19, 0x8e, 0xcf, 0xce, 0x7f, 0xf6, 0x98, - 0x78, 0xaf, 0x6b, 0xe1, 0xec, 0xd2, 0x6c, 0xfe, 0x3f, 0xf5, 0xfc, 0xff, 0x86, 0xfc, 0xe7, 0x9f, 0x65, 0xaf, 0xdc, 0xff, - 0x3b, 0xef, 0x1d, 0x88, 0xbe, 0x31, 0xff, 0xed, 0x43, 0xcf, 0xff, 0x35, 0xf3, 0xca, 0x3f, 0x2d, 0xff, 0x33, 0x77, 0x99, - 0x9e, 0x9a, 0xff, 0x8a, 0x8c, 0x54, 0xdd, 0xff, 0xaf, 0x7f, 0x0b, 0x6a, 0x67, 0x75, 0xfa, 0xe7, 0x25, 0x7c, 0x9c, 0xff, - 0xc8, 0xfb, 0x3f, 0xef, 0xce, 0xff, 0xdc, 0xbb, 0x31, 0xcf, 0xce, 0x7f, 0x4f, 0xce, 0x4a, 0xf3, 0xce, 0xe7, 0xc3, 0xb1, - 0x39, 0xa6, 0x9f, 0x97, 0xff, 0xfc, 0x3b, 0x65, 0x6f, 0x7d, 0xfe, 0x97, 0x7b, 0x3b, 0xe0, 0x9a, 0xe7, 0x7f, 0x77, 0x7a, - 0xaf, 0x84, 0xb7, 0xbf, 0x55, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0xec, - 0xeb, 0xea, 0x88, 0x9d, 0xb9, 0x71, 0x62, 0xd7, 0x54, 0xbe, 0x8f, 0xd4, 0x29, 0x98, 0x59, 0x9f, 0x78, 0xf5, 0x83, 0x48, - 0xad, 0xfd, 0xa3, 0x6d, 0x13, 0xad, 0x38, 0x9e, 0xa9, 0x64, 0xb4, 0xeb, 0x3b, 0xae, 0xd7, 0x84, 0x9f, 0xff, 0x0b, 0x73, - 0x95, 0x1f, 0x63, 0xb9, 0xb8, 0xfb, 0xb6, 0x9e, 0x1b, 0xa5, 0xb9, 0xb3, 0x4e, 0x7c, 0x4f, 0xd6, 0x34, 0xaf, 0x5f, 0xab, - 0x6c, 0x95, 0xfe, 0xd8, 0x3a, 0x47, 0x5a, 0xb8, 0x27, 0xe6, 0x61, 0x69, 0x13, 0x7b, 0x52, 0x75, 0x75, 0x9f, 0xcc, 0xbc, - 0x1c, 0xf3, 0x47, 0xe4, 0xca, 0x8a, 0xfd, 0x2d, 0x51, 0xad, 0xff, 0x2e, 0xdb, 0xfa, 0xda, 0xf1, 0xb4, 0xe3, 0x75, 0x7e, - 0xce, 0x78, 0xdf, 0xb9, 0xd1, 0xe3, 0xcf, 0xf8, 0x36, 0x33, 0xc7, 0xb2, 0xf5, 0xea, 0x3c, 0xef, 0xac, 0xd9, 0xf0, 0xd9, - 0x63, 0x95, 0xb3, 0x95, 0x05, 0x46, 0xc7, 0xba, 0xe7, 0x54, 0xaf, 0xca, 0xd5, 0xbd, 0x9a, 0x69, 0xc5, 0xb3, 0x96, 0x1d, - 0xf9, 0x2b, 0x30, 0x0f, 0xdb, 0x95, 0xdf, 0x71, 0x7f, 0xc5, 0x8e, 0xe3, 0x5a, 0x22, 0xf7, 0xde, 0xd6, 0xd9, 0x1a, 0x59, - 0xd9, 0x4a, 0x30, 0xd1, 0xf3, 0xff, 0x53, 0xf3, 0x3f, 0x9a, 0x8b, 0xe0, 0xe7, 0x59, 0xc9, 0xce, 0x5b, 0x56, 0x31, 0x93, - 0xc1, 0xea, 0x15, 0xd0, 0x8e, 0x65, 0x57, 0x56, 0xec, 0x3a, 0xfb, 0xbb, 0xc6, 0xdb, 0xa8, 0xaa, 0x9f, 0x18, 0x9d, 0xb3, - 0x64, 0xb4, 0xec, 0xd3, 0xce, 0xff, 0xfd, 0xf2, 0x65, 0xf3, 0x47, 0xb1, 0xbb, 0xef, 0xdb, 0xfb, 0x67, 0xec, 0x78, 0x42, - 0xc6, 0x33, 0xb3, 0x4b, 0xed, 0xcc, 0xff, 0x3d, 0xeb, 0x1d, 0xf7, 0xd4, 0xb9, 0x31, 0x5b, 0xab, 0xef, 0x3e, 0xb9, 0xc9, - 0xcc, 0x64, 0x1c, 0x9b, 0xbf, 0xb9, 0x7a, 0x99, 0xfc, 0xdf, 0x3b, 0xff, 0x73, 0xf7, 0x56, 0xee, 0x57, 0xbd, 0x32, 0x3b, - 0x4b, 0xef, 0xfb, 0xfb, 0x8b, 0x7d, 0xc3, 0xd3, 0x9a, 0xba, 0xe7, 0x89, 0xf2, 0x7f, 0x97, 0xfe, 0xbf, 0xfc, 0xbf, 0x6f, - 0x7f, 0xe9, 0xa9, 0x4a, 0xe6, 0xfa, 0xff, 0xf2, 0xff, 0xe6, 0xfc, 0xf7, 0x47, 0x5c, 0xff, 0xef, 0xda, 0x5f, 0xde, 0x76, - 0xff, 0x3f, 0xfa, 0xb4, 0xf7, 0x29, 0xcf, 0x7a, 0xce, 0x78, 0xfe, 0xb7, 0xe7, 0x93, 0x77, 0x56, 0x43, 0x7f, 0xff, 0xf3, - 0xde, 0xa7, 0xd4, 0x83, 0xe7, 0xed, 0xfb, 0xa1, 0x36, 0x00, 0xf9, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x76, 0xbe, 0xa9, 0x7f, 0x66, 0xc5, 0xf7, 0xc8, 0xa8, 0xcf, 0xb9, 0xcf, 0x04, 0x62, 0x23, 0x75, 0xce, - 0xac, 0xf8, 0x9e, 0x1f, 0x9d, 0x6f, 0x5b, 0xc2, 0xfb, 0xc6, 0x8a, 0xcb, 0x36, 0xec, 0x49, 0x55, 0x7f, 0x48, 0x15, 0xa4, - 0x77, 0xcc, 0xcd, 0x01, 0xf2, 0xff, 0x94, 0x0a, 0x69, 0x20, 0xff, 0xf2, 0x0f, 0xf2, 0x2f, 0xff, 0x20, 0xff, 0xf2, 0x0f, - 0x6f, 0xbf, 0xff, 0x7f, 0xa7, 0x99, 0x6b, 0xf6, 0xd5, 0x29, 0x06, 0xcf, 0xfe, 0x63, 0x47, 0x87, 0xea, 0x65, 0x6d, 0x78, - 0xdc, 0xf0, 0x8c, 0x10, 0xce, 0xca, 0xff, 0x35, 0xcf, 0xf8, 0x57, 0xf3, 0xaf, 0xff, 0x0f, 0x6f, 0xba, 0x1a, 0x89, 0xbc, - 0xff, 0x27, 0xfd, 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, 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, - 0x70, 0x95, 0x7f, 0xff, 0xd3, 0x0e, 0x20, 0xff, 0xc0, 0xc7, 0xe5, 0xff, 0x6f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle sunnyFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 2 , 10 }, - { 26, 4, 5 , 3 }, - { 39, 4, 7 , 10 }, - { 54, 4, 7 , 13 }, - { 69, 4, 7 , 10 }, - { 84, 4, 7 , 10 }, - { 99, 4, 2 , 3 }, - { 109, 4, 3 , 12 }, - { 120, 4, 3 , 12 }, - { 131, 4, 5 , 6 }, - { 144, 4, 6 , 5 }, - { 158, 4, 2 , 4 }, - { 168, 4, 5 , 1 }, - { 181, 4, 2 , 2 }, - { 191, 4, 4 , 10 }, - { 203, 4, 6 , 10 }, - { 217, 4, 4 , 10 }, - { 229, 4, 6 , 10 }, - { 243, 4, 6 , 10 }, - { 257, 4, 6 , 10 }, - { 271, 4, 6 , 10 }, - { 285, 4, 6 , 10 }, - { 299, 4, 6 , 10 }, - { 313, 4, 6 , 10 }, - { 327, 4, 6 , 10 }, - { 341, 4, 2 , 6 }, - { 351, 4, 2 , 8 }, - { 361, 4, 7 , 7 }, - { 376, 4, 5 , 3 }, - { 389, 4, 7 , 7 }, - { 404, 4, 6 , 10 }, - { 418, 4, 7 , 12 }, - { 433, 4, 7 , 10 }, - { 448, 4, 7 , 10 }, - { 463, 4, 7 , 10 }, - { 478, 4, 7 , 10 }, - { 493, 4, 7 , 10 }, - { 4, 28, 7 , 10 }, - { 19, 28, 7 , 10 }, - { 34, 28, 7 , 10 }, - { 49, 28, 2 , 10 }, - { 59, 28, 5 , 10 }, - { 72, 28, 7 , 10 }, - { 87, 28, 6 , 10 }, - { 101, 28, 9 , 10 }, - { 118, 28, 7 , 10 }, - { 133, 28, 7 , 10 }, - { 148, 28, 7 , 10 }, - { 163, 28, 7 , 12 }, - { 178, 28, 7 , 10 }, - { 193, 28, 7 , 10 }, - { 208, 28, 6 , 10 }, - { 222, 28, 7 , 10 }, - { 237, 28, 7 , 10 }, - { 252, 28, 8 , 10 }, - { 268, 28, 7 , 10 }, - { 283, 28, 6 , 10 }, - { 297, 28, 7 , 10 }, - { 312, 28, 4 , 12 }, - { 324, 28, 4 , 10 }, - { 336, 28, 4 , 12 }, - { 348, 28, 6 , 3 }, - { 362, 28, 7 , 1 }, - { 377, 28, 4 , 3 }, - { 389, 28, 6 , 7 }, - { 403, 28, 6 , 10 }, - { 417, 28, 6 , 7 }, - { 431, 28, 6 , 10 }, - { 445, 28, 6 , 7 }, - { 459, 28, 4 , 10 }, - { 471, 28, 6 , 9 }, - { 485, 28, 6 , 10 }, - { 499, 28, 2 , 10 }, - { 4, 52, 5 , 12 }, - { 17, 52, 6 , 10 }, - { 31, 52, 3 , 10 }, - { 42, 52, 8 , 7 }, - { 58, 52, 6 , 7 }, - { 72, 52, 6 , 7 }, - { 86, 52, 6 , 9 }, - { 100, 52, 6 , 9 }, - { 114, 52, 5 , 7 }, - { 127, 52, 6 , 7 }, - { 141, 52, 4 , 10 }, - { 153, 52, 6 , 7 }, - { 167, 52, 6 , 7 }, - { 181, 52, 8 , 7 }, - { 197, 52, 6 , 7 }, - { 211, 52, 6 , 9 }, - { 225, 52, 6 , 7 }, - { 239, 52, 5 , 12 }, - { 252, 52, 2 , 12 }, - { 262, 52, 5 , 12 }, - { 275, 52, 7 , 3 }, - { 290, 52, 2 , 9 }, - { 300, 52, 6 , 11 }, - { 314, 52, 7 , 10 }, - { 329, 52, 7 , 9 }, - { 344, 52, 6 , 10 }, - { 358, 52, 7 , 11 }, - { 373, 52, 6 , 12 }, - { 387, 52, 6 , 10 }, - { 401, 52, 7 , 10 }, - { 416, 52, 5 , 5 }, - { 429, 52, 7 , 6 }, - { 444, 52, 6 , 3 }, - { 458, 52, 7 , 10 }, - { 473, 52, 0 , 0 }, - { 481, 52, 4 , 4 }, - { 493, 52, 6 , 7 }, - { 4, 76, 4 , 5 }, - { 16, 76, 4 , 5 }, - { 28, 76, 7 , 11 }, - { 43, 76, 6 , 9 }, - { 57, 76, 7 , 12 }, - { 72, 76, 2 , 2 }, - { 82, 76, 6 , 10 }, - { 96, 76, 3 , 5 }, - { 107, 76, 4 , 5 }, - { 119, 76, 7 , 6 }, - { 134, 76, 9 , 10 }, - { 151, 76, 8 , 7 }, - { 167, 76, 6 , 11 }, - { 181, 76, 6 , 11 }, - { 195, 76, 7 , 11 }, - { 210, 76, 7 , 11 }, - { 225, 76, 7 , 11 }, - { 240, 76, 7 , 11 }, - { 255, 76, 7 , 11 }, - { 270, 76, 7 , 11 }, - { 285, 76, 9 , 10 }, - { 302, 76, 7 , 12 }, - { 317, 76, 7 , 11 }, - { 332, 76, 7 , 11 }, - { 347, 76, 7 , 11 }, - { 362, 76, 7 , 11 }, - { 377, 76, 3 , 11 }, - { 388, 76, 3 , 11 }, - { 399, 76, 5 , 11 }, - { 412, 76, 5 , 11 }, - { 425, 76, 8 , 10 }, - { 441, 76, 7 , 11 }, - { 456, 76, 7 , 11 }, - { 471, 76, 7 , 11 }, - { 486, 76, 7 , 11 }, - { 4, 100, 7 , 11 }, - { 19, 100, 7 , 11 }, - { 34, 100, 7 , 7 }, - { 49, 100, 7 , 13 }, - { 64, 100, 7 , 11 }, - { 79, 100, 7 , 11 }, - { 94, 100, 7 , 11 }, - { 109, 100, 7 , 11 }, - { 124, 100, 6 , 11 }, - { 138, 100, 7 , 10 }, - { 153, 100, 7 , 10 }, - { 168, 100, 6 , 10 }, - { 182, 100, 6 , 10 }, - { 196, 100, 6 , 10 }, - { 210, 100, 6 , 10 }, - { 224, 100, 6 , 10 }, - { 238, 100, 6 , 11 }, - { 252, 100, 8 , 7 }, - { 268, 100, 6 , 9 }, - { 282, 100, 6 , 10 }, - { 296, 100, 6 , 10 }, - { 310, 100, 6 , 10 }, - { 324, 100, 6 , 10 }, - { 338, 100, 3 , 10 }, - { 349, 100, 3 , 10 }, - { 360, 100, 5 , 10 }, - { 373, 100, 5 , 10 }, - { 386, 100, 6 , 10 }, - { 400, 100, 6 , 10 }, - { 414, 100, 6 , 10 }, - { 428, 100, 6 , 10 }, - { 442, 100, 6 , 10 }, - { 456, 100, 6 , 10 }, - { 470, 100, 6 , 10 }, - { 484, 100, 6 , 7 }, - { 4, 124, 7 , 11 }, - { 19, 124, 6 , 10 }, - { 33, 124, 6 , 10 }, - { 47, 124, 6 , 10 }, - { 61, 124, 6 , 10 }, - { 75, 124, 6 , 12 }, - { 89, 124, 6 , 12 }, - { 103, 124, 6 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo sunnyFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 0, 2, 3, { 0 }}, - { 34, 0, 2, 6, { 0 }}, - { 35, 0, 2, 8, { 0 }}, - { 36, 0, 1, 8, { 0 }}, - { 37, 0, 2, 8, { 0 }}, - { 38, 0, 2, 8, { 0 }}, - { 39, 0, 2, 3, { 0 }}, - { 40, 0, 2, 4, { 0 }}, - { 41, 0, 2, 4, { 0 }}, - { 42, 0, 4, 6, { 0 }}, - { 43, 0, 6, 7, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 8, 6, { 0 }}, - { 46, 0, 10, 3, { 0 }}, - { 47, 0, 2, 5, { 0 }}, - { 48, 0, 2, 7, { 0 }}, - { 49, 0, 2, 7, { 0 }}, - { 50, 0, 2, 7, { 0 }}, - { 51, 0, 2, 7, { 0 }}, - { 52, 0, 2, 7, { 0 }}, - { 53, 0, 2, 7, { 0 }}, - { 54, 0, 2, 7, { 0 }}, - { 55, 0, 2, 7, { 0 }}, - { 56, 0, 2, 7, { 0 }}, - { 57, 0, 2, 7, { 0 }}, - { 58, 0, 4, 3, { 0 }}, - { 59, 0, 4, 3, { 0 }}, - { 60, 0, 4, 8, { 0 }}, - { 61, 0, 6, 6, { 0 }}, - { 62, 0, 4, 8, { 0 }}, - { 63, 0, 2, 7, { 0 }}, - { 64, 0, 2, 8, { 0 }}, - { 65, 0, 2, 8, { 0 }}, - { 66, 0, 2, 8, { 0 }}, - { 67, 0, 2, 8, { 0 }}, - { 68, 0, 2, 8, { 0 }}, - { 69, 0, 2, 8, { 0 }}, - { 70, 0, 2, 8, { 0 }}, - { 71, 0, 2, 8, { 0 }}, - { 72, 0, 2, 8, { 0 }}, - { 73, 0, 2, 3, { 0 }}, - { 74, 0, 2, 6, { 0 }}, - { 75, 0, 2, 8, { 0 }}, - { 76, 0, 2, 7, { 0 }}, - { 77, 0, 2, 10, { 0 }}, - { 78, 0, 2, 8, { 0 }}, - { 79, 0, 2, 8, { 0 }}, - { 80, 0, 2, 8, { 0 }}, - { 81, 0, 2, 8, { 0 }}, - { 82, 0, 2, 8, { 0 }}, - { 83, 0, 2, 8, { 0 }}, - { 84, 0, 2, 7, { 0 }}, - { 85, 0, 2, 8, { 0 }}, - { 86, 0, 2, 8, { 0 }}, - { 87, 0, 2, 9, { 0 }}, - { 88, 0, 2, 8, { 0 }}, - { 89, 0, 2, 7, { 0 }}, - { 90, 0, 2, 8, { 0 }}, - { 91, 0, 2, 5, { 0 }}, - { 92, 0, 2, 5, { 0 }}, - { 93, 0, 2, 5, { 0 }}, - { 94, 0, 2, 7, { 0 }}, - { 95, 0, 14, 8, { 0 }}, - { 96, 0, 2, 5, { 0 }}, - { 97, 0, 5, 7, { 0 }}, - { 98, 0, 2, 7, { 0 }}, - { 99, 0, 5, 7, { 0 }}, - { 100, 0, 2, 7, { 0 }}, - { 101, 0, 5, 7, { 0 }}, - { 102, 0, 2, 5, { 0 }}, - { 103, 0, 5, 7, { 0 }}, - { 104, 0, 2, 7, { 0 }}, - { 105, 0, 2, 3, { 0 }}, - { 106, 0, 2, 6, { 0 }}, - { 107, 0, 2, 7, { 0 }}, - { 108, 0, 2, 4, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 7, { 0 }}, - { 111, 0, 5, 7, { 0 }}, - { 112, 0, 5, 7, { 0 }}, - { 113, 0, 5, 7, { 0 }}, - { 114, 0, 5, 6, { 0 }}, - { 115, 0, 5, 7, { 0 }}, - { 116, 0, 2, 5, { 0 }}, - { 117, 0, 5, 7, { 0 }}, - { 118, 0, 5, 7, { 0 }}, - { 119, 0, 5, 9, { 0 }}, - { 120, 0, 5, 7, { 0 }}, - { 121, 0, 5, 7, { 0 }}, - { 122, 0, 5, 7, { 0 }}, - { 123, 0, 2, 6, { 0 }}, - { 124, 0, 2, 3, { 0 }}, - { 125, 0, 2, 6, { 0 }}, - { 126, 0, 6, 8, { 0 }}, - { 161, 0, 5, 3, { 0 }}, - { 162, 0, 3, 7, { 0 }}, - { 163, 0, 2, 8, { 0 }}, - { 8364, 0, 3, 8, { 0 }}, - { 165, 0, 2, 7, { 0 }}, - { 352, 0, 1, 8, { 0 }}, - { 167, 0, 2, 7, { 0 }}, - { 353, 0, 2, 7, { 0 }}, - { 169, 0, 2, 8, { 0 }}, - { 170, 0, 2, 6, { 0 }}, - { 171, 0, 6, 8, { 0 }}, - { 172, 0, 7, 7, { 0 }}, - { 174, 0, 2, 8, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 0, 2, 5, { 0 }}, - { 177, 0, 4, 7, { 0 }}, - { 178, 0, 2, 5, { 0 }}, - { 179, 0, 2, 5, { 0 }}, - { 381, 0, 1, 8, { 0 }}, - { 181, 0, 5, 7, { 0 }}, - { 182, 0, 2, 8, { 0 }}, - { 183, 0, 6, 3, { 0 }}, - { 382, 0, 2, 7, { 0 }}, - { 185, 0, 2, 4, { 0 }}, - { 186, 0, 2, 5, { 0 }}, - { 187, 0, 6, 8, { 0 }}, - { 338, 0, 2, 10, { 0 }}, - { 339, 0, 5, 9, { 0 }}, - { 376, 0, 1, 7, { 0 }}, - { 191, 0, 3, 7, { 0 }}, - { 192, 0, 1, 8, { 0 }}, - { 193, 0, 1, 8, { 0 }}, - { 194, 0, 1, 8, { 0 }}, - { 195, 0, 1, 8, { 0 }}, - { 196, 0, 1, 8, { 0 }}, - { 197, 0, 1, 8, { 0 }}, - { 198, 0, 2, 10, { 0 }}, - { 199, 0, 2, 8, { 0 }}, - { 200, 0, 1, 8, { 0 }}, - { 201, 0, 1, 8, { 0 }}, - { 202, 0, 1, 8, { 0 }}, - { 203, 0, 1, 8, { 0 }}, - { 204, 0, 1, 4, { 0 }}, - { 205, 0, 1, 4, { 0 }}, - { 206, 0, 1, 6, { 0 }}, - { 207, 0, 1, 6, { 0 }}, - { 208, 0, 2, 9, { 0 }}, - { 209, 0, 1, 8, { 0 }}, - { 210, 0, 1, 8, { 0 }}, - { 211, 0, 1, 8, { 0 }}, - { 212, 0, 1, 8, { 0 }}, - { 213, 0, 1, 8, { 0 }}, - { 214, 0, 1, 8, { 0 }}, - { 215, 0, 5, 8, { 0 }}, - { 216, 0, 1, 8, { 0 }}, - { 217, 0, 1, 8, { 0 }}, - { 218, 0, 1, 8, { 0 }}, - { 219, 0, 1, 8, { 0 }}, - { 220, 0, 1, 8, { 0 }}, - { 221, 0, 1, 7, { 0 }}, - { 222, 0, 2, 8, { 0 }}, - { 223, 0, 2, 8, { 0 }}, - { 224, 0, 2, 7, { 0 }}, - { 225, 0, 2, 7, { 0 }}, - { 226, 0, 2, 7, { 0 }}, - { 227, 0, 2, 7, { 0 }}, - { 228, 0, 2, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 5, 9, { 0 }}, - { 231, 0, 5, 7, { 0 }}, - { 232, 0, 2, 7, { 0 }}, - { 233, 0, 2, 7, { 0 }}, - { 234, 0, 2, 7, { 0 }}, - { 235, 0, 2, 7, { 0 }}, - { 236, 0, 2, 4, { 0 }}, - { 237, 0, 2, 4, { 0 }}, - { 238, 0, 2, 6, { 0 }}, - { 239, 0, 2, 6, { 0 }}, - { 240, 0, 2, 7, { 0 }}, - { 241, 0, 2, 7, { 0 }}, - { 242, 0, 2, 7, { 0 }}, - { 243, 0, 2, 7, { 0 }}, - { 244, 0, 2, 7, { 0 }}, - { 245, 0, 2, 7, { 0 }}, - { 246, 0, 2, 7, { 0 }}, - { 247, 0, 4, 7, { 0 }}, - { 248, 0, 3, 8, { 0 }}, - { 249, 0, 2, 7, { 0 }}, - { 250, 0, 2, 7, { 0 }}, - { 251, 0, 2, 7, { 0 }}, - { 252, 0, 2, 7, { 0 }}, - { 253, 0, 2, 7, { 0 }}, - { 254, 0, 2, 7, { 0 }}, - { 255, 0, 2, 7, { 0 }}, -}; - -// Style loading function: Sunny -static void GuiLoadStyleSunny(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < SUNNY_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(sunnyStyleProps[i].controlId, sunnyStyleProps[i].propertyId, sunnyStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int sunnyFontDataSize = 0; - unsigned char *data = DecompressData(sunnyFontData, SUNNY_STYLE_FONT_ATLAS_COMP_SIZE, &sunnyFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, sunnyFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, sunnyFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_terminal.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_terminal.h deleted file mode 100644 index d5e42f4..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/examples/styles/style_terminal.h +++ /dev/null @@ -1,569 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleTerminal(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define TERMINAL_STYLE_PROPS_COUNT 17 - -// Custom style name: Terminal -static const GuiStyleProp terminalStyleProps[TERMINAL_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x1c8d00ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x161313ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x38f620ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xc3fbc6ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x43bf2eff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xdcfadcff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x1f5b19ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x43ff28ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x1e6f15ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x223b22ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x182c18ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x244125ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0xe6fce3ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x0c1505ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "Mecha.ttf" (size: 16, spacing: 0) - -#define TERMINAL_STYLE_FONT_ATLAS_COMP_SIZE 1860 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char terminalFontData[TERMINAL_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x41, 0x92, 0xa4, 0x36, 0x10, 0x05, 0x50, 0xee, 0x7f, 0xe9, 0xf4, 0x62, 0x62, 0x16, 0x76, 0xb8, 0x1b, 0x94, 0x4a, - 0x89, 0x04, 0x9e, 0x5f, 0x78, 0xd3, 0xd5, 0x53, 0x4d, 0x01, 0xbf, 0x24, 0x84, 0x94, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x7c, - 0x5e, 0xfc, 0xef, 0x4f, 0xe2, 0xc7, 0xdf, 0x8c, 0xcb, 0xef, 0xf3, 0xe7, 0xa7, 0xf1, 0xe3, 0x5f, 0xf9, 0xfb, 0xdf, 0x95, - 0x77, 0xba, 0xfe, 0x5b, 0x31, 0xb4, 0x75, 0x73, 0x5b, 0x95, 0x7b, 0x9f, 0xd1, 0xdf, 0xfe, 0x7d, 0x7b, 0xaa, 0xde, 0xad, - 0xf6, 0x95, 0xb1, 0xb3, 0x23, 0xbf, 0xe7, 0xae, 0x6e, 0x61, 0x6c, 0xdf, 0x2b, 0xc7, 0xa6, 0x7d, 0x1c, 0x0d, 0xf2, 0x7f, - 0x7e, 0xcc, 0x46, 0xf2, 0x14, 0xe9, 0xf4, 0x8e, 0x7f, 0x3b, 0xad, 0xfc, 0x0e, 0x1d, 0xdd, 0xc6, 0xdc, 0x3e, 0x89, 0x92, - 0xf7, 0x9f, 0xf9, 0x3b, 0x51, 0xb6, 0xd7, 0x72, 0xff, 0x26, 0x86, 0xdb, 0x88, 0xf9, 0x4f, 0x78, 0xbe, 0x8f, 0x63, 0xd1, - 0x71, 0xef, 0x99, 0xff, 0xfc, 0x51, 0xcb, 0x9f, 0x29, 0x57, 0xb7, 0x3c, 0xd7, 0xa6, 0xaf, 0x3a, 0x27, 0xe5, 0xff, 0xec, - 0x9b, 0xfa, 0xe7, 0x16, 0xb4, 0xa2, 0xdd, 0x90, 0xff, 0x5c, 0x06, 0x62, 0x22, 0x47, 0xbb, 0xf2, 0x5f, 0xdb, 0xd6, 0xc8, - 0xff, 0x33, 0xda, 0xff, 0xb3, 0x6d, 0xff, 0xf7, 0x79, 0x2b, 0xff, 0xd9, 0xa3, 0x90, 0x6d, 0xff, 0x63, 0x7a, 0xfb, 0x3b, - 0xe7, 0x7f, 0x74, 0xdc, 0x43, 0xfe, 0xcf, 0xaf, 0xe8, 0x73, 0xbf, 0x7d, 0xb6, 0x27, 0xe4, 0x7f, 0x5d, 0xfe, 0x7f, 0xeb, - 0xb3, 0x9d, 0xf5, 0xf4, 0x76, 0xe4, 0xff, 0xd8, 0x9e, 0xff, 0xb3, 0xeb, 0xa8, 0xeb, 0xfb, 0x62, 0xc7, 0x08, 0xd4, 0x91, - 0x1c, 0xdb, 0x89, 0xc1, 0x0c, 0xdf, 0xd3, 0x0b, 0x3b, 0xcb, 0x7f, 0x66, 0x4f, 0x66, 0xf2, 0x7f, 0x76, 0x5c, 0x8e, 0x5f, - 0x7a, 0x30, 0xab, 0xf6, 0x7e, 0x45, 0xfe, 0x67, 0x46, 0xe4, 0x9e, 0x9d, 0xff, 0x38, 0xd9, 0x57, 0x31, 0x31, 0xbe, 0xb9, - 0xb3, 0xcf, 0x30, 0xd3, 0x4f, 0xeb, 0x7b, 0x1c, 0xde, 0xd3, 0xff, 0x8f, 0xd6, 0xed, 0xbf, 0xfc, 0xcf, 0x5d, 0xff, 0xbf, - 0x2d, 0xff, 0xb1, 0xfd, 0x58, 0xc5, 0x85, 0x33, 0x56, 0xfe, 0xe7, 0xf6, 0xf0, 0x79, 0x8f, 0x23, 0x16, 0x5d, 0xbf, 0x74, - 0xcd, 0x7f, 0xee, 0xd3, 0x7d, 0xb1, 0xfd, 0x8f, 0x1b, 0x8f, 0x8f, 0xfc, 0xaf, 0xd8, 0x9b, 0x23, 0x77, 0xd8, 0x66, 0xe7, - 0x2f, 0xc8, 0xbf, 0xfc, 0xcb, 0x7f, 0xef, 0xfe, 0x7f, 0x0c, 0x8e, 0xdc, 0xc6, 0xe3, 0xc7, 0xff, 0xe2, 0x52, 0x6f, 0x69, - 0x7e, 0xb6, 0xe0, 0x78, 0x9f, 0x2b, 0xf7, 0x6e, 0xf9, 0xd9, 0x75, 0x4f, 0xb9, 0xfe, 0xdf, 0x39, 0x93, 0xf2, 0x28, 0x99, - 0x87, 0xb2, 0x7e, 0xfe, 0xdf, 0x33, 0xe7, 0x28, 0x77, 0xcf, 0x3f, 0xb0, 0x7a, 0x95, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x65, 0x0d, 0x4d, 0x94, 0xad, 0x7b, 0x8c, 0x16, 0x95, 0xe7, 0xf7, 0xd4, 0x58, - 0xbf, 0xb6, 0x87, 0xaa, 0xde, 0x71, 0xec, 0x59, 0x02, 0x63, 0xeb, 0x30, 0x73, 0x2b, 0xff, 0x56, 0xaf, 0x6e, 0x9b, 0x59, - 0xdd, 0x58, 0xb3, 0x65, 0x15, 0xb5, 0x2d, 0xee, 0x49, 0xc7, 0xca, 0x75, 0xe2, 0x71, 0x69, 0x75, 0x70, 0x6d, 0x92, 0x56, - 0xaf, 0xd8, 0xce, 0xac, 0x7d, 0xdf, 0x99, 0xff, 0xb1, 0x33, 0x70, 0xfc, 0x73, 0x46, 0x62, 0x35, 0x55, 0x6d, 0x0d, 0x98, - 0x63, 0xe9, 0xb9, 0x19, 0x8b, 0xd6, 0x90, 0x8d, 0xef, 0x83, 0x3d, 0xe9, 0x90, 0xff, 0x2f, 0xe7, 0x3f, 0x57, 0x23, 0x7b, - 0xc7, 0xb3, 0x50, 0xe4, 0x5f, 0xfe, 0xe5, 0xff, 0xad, 0xf9, 0x8f, 0xe2, 0xfe, 0x77, 0xbe, 0x5a, 0x47, 0xcd, 0x95, 0x55, - 0x6d, 0x4a, 0xe4, 0x5f, 0xfe, 0x7f, 0xef, 0x6d, 0xc7, 0xc5, 0x56, 0x6c, 0xa4, 0xc5, 0xdb, 0x59, 0xb3, 0x64, 0x5f, 0x15, - 0xad, 0xd1, 0x6f, 0x93, 0x28, 0x4c, 0xf0, 0x57, 0xf2, 0x9f, 0xaf, 0x7b, 0xbe, 0x67, 0xdc, 0x2b, 0xb3, 0xe5, 0x99, 0xda, - 0x57, 0xf5, 0xf9, 0x3f, 0x7b, 0x1e, 0x42, 0xe6, 0xfb, 0xe9, 0x5b, 0xf9, 0x1f, 0xfd, 0x6c, 0xf2, 0x7f, 0x6c, 0x7e, 0xb6, - 0xcc, 0xfd, 0x35, 0x16, 0x23, 0xd9, 0xd2, 0x57, 0x6d, 0x75, 0xa4, 0x46, 0xdb, 0xaa, 0x7e, 0x9e, 0xab, 0xd2, 0xf8, 0xde, - 0xfc, 0x47, 0xc1, 0x7d, 0xae, 0xb9, 0x56, 0x52, 0xfe, 0xe5, 0xff, 0x98, 0xac, 0xc0, 0xdb, 0x3d, 0xff, 0x2b, 0xae, 0xbf, - 0x2b, 0x9f, 0xe6, 0xfa, 0xcc, 0xf6, 0xff, 0x59, 0xf7, 0xff, 0xbe, 0x92, 0xff, 0xb3, 0x63, 0x79, 0x77, 0xfe, 0x3b, 0xd5, - 0x4c, 0xcd, 0x8c, 0x30, 0xce, 0xfc, 0x9b, 0x8e, 0xf9, 0xdf, 0x35, 0x9f, 0x47, 0xfe, 0x77, 0xe5, 0xff, 0xe7, 0xa7, 0x8d, - 0xcb, 0x7f, 0xaf, 0xfc, 0xaf, 0xeb, 0xff, 0x3f, 0x3b, 0xff, 0xeb, 0x7a, 0x5f, 0xab, 0xfb, 0x73, 0xb5, 0x5b, 0x9e, 0x99, - 0x01, 0xf7, 0xdb, 0xfc, 0xbb, 0x48, 0x57, 0x6d, 0xaf, 0x98, 0x87, 0x37, 0x33, 0x3b, 0x68, 0xf7, 0x95, 0x41, 0xf5, 0xbf, - 0xa9, 0x1f, 0xb3, 0xe8, 0x9b, 0x7f, 0x78, 0x46, 0xfe, 0xbf, 0xb0, 0xaf, 0x71, 0x3c, 0xee, 0x69, 0x59, 0x57, 0xfe, 0x3e, - 0xce, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xd3, 0x2a, 0xac, 0xaa, 0xba, 0x8d, 0x3b, - 0xab, 0x65, 0xe4, 0xd6, 0xf9, 0xc5, 0xe5, 0xba, 0x2e, 0x99, 0x55, 0xe4, 0x23, 0x6b, 0xf9, 0x6a, 0xd6, 0x34, 0xe6, 0xcf, - 0x81, 0x48, 0xad, 0x96, 0x3b, 0x3f, 0x53, 0x32, 0x35, 0xec, 0xd7, 0xcd, 0xb6, 0xff, 0xbd, 0x7e, 0x43, 0xbe, 0x92, 0xc8, - 0xaa, 0xf5, 0x05, 0x75, 0xf5, 0x9f, 0x8e, 0x82, 0xd5, 0x8a, 0xd9, 0x35, 0xf4, 0xf7, 0xe6, 0x7f, 0x74, 0xf5, 0xdb, 0xf5, - 0x9f, 0x55, 0xd4, 0x5b, 0x89, 0xc4, 0xca, 0xbc, 0xca, 0xfc, 0x57, 0x9c, 0xe3, 0x51, 0xf6, 0xbe, 0xb1, 0xb8, 0x4e, 0xc1, - 0x95, 0x56, 0xe2, 0xd9, 0x6b, 0xa2, 0xe2, 0xd5, 0xf9, 0xaf, 0xad, 0x96, 0x5b, 0xff, 0x9d, 0x90, 0xaf, 0x4f, 0x70, 0x5f, - 0xfe, 0xff, 0x6e, 0x57, 0x75, 0xfe, 0x33, 0xef, 0x5b, 0x53, 0xd9, 0x6a, 0x2e, 0xff, 0x3d, 0x56, 0xf6, 0xc5, 0xf2, 0x9e, - 0x47, 0x26, 0xff, 0x63, 0xfd, 0xb6, 0x15, 0xf9, 0xcf, 0x57, 0xe6, 0x39, 0x36, 0x65, 0xfd, 0x28, 0x4e, 0xf9, 0xfa, 0xfc, - 0xd7, 0x9f, 0x69, 0xf1, 0x9f, 0xff, 0xbb, 0xac, 0xb6, 0x7d, 0x4b, 0xfe, 0x73, 0xd5, 0x69, 0x66, 0xf3, 0x9f, 0xbd, 0xe2, - 0xbd, 0xbb, 0xfd, 0x5f, 0x73, 0x4d, 0xb0, 0x3e, 0xff, 0x91, 0xaa, 0x0c, 0xde, 0x27, 0xff, 0xb1, 0x20, 0xb9, 0xf2, 0x9f, - 0x6d, 0x03, 0xdf, 0x90, 0xff, 0xea, 0xe7, 0x7c, 0x74, 0xc8, 0x7f, 0x6e, 0xc4, 0x2b, 0x4a, 0x73, 0x1a, 0xed, 0xdb, 0xff, - 0x63, 0xdb, 0xf8, 0x5f, 0xff, 0xfc, 0x47, 0x49, 0xbf, 0xf0, 0xce, 0xfc, 0xd7, 0x57, 0xcb, 0xcd, 0x56, 0x0d, 0xbc, 0x3e, - 0xd6, 0xd7, 0xa7, 0xfd, 0xaf, 0xbf, 0x1e, 0x5e, 0xd1, 0xfe, 0x1f, 0x0b, 0xee, 0x52, 0xac, 0xbf, 0xaa, 0xee, 0x9f, 0xff, - 0xaa, 0xeb, 0xc2, 0xcc, 0x73, 0x93, 0x46, 0xef, 0xff, 0xc5, 0xe9, 0x59, 0x3c, 0x7a, 0xe7, 0x68, 0x3c, 0x4f, 0x31, 0xf8, - 0xf4, 0xa2, 0xfe, 0xd7, 0xff, 0x95, 0xed, 0xff, 0x9a, 0x51, 0xef, 0xae, 0xa3, 0xe9, 0xd7, 0x9e, 0x2f, 0xde, 0x63, 0x8b, - 0xf3, 0x4f, 0xdc, 0x8a, 0xed, 0x57, 0x56, 0x7d, 0x8e, 0xf1, 0xfc, 0x67, 0x5f, 0x93, 0xff, 0x8a, 0x8a, 0xd3, 0xf5, 0xed, - 0xe1, 0xf7, 0xe6, 0xbc, 0xcc, 0xdc, 0x75, 0xef, 0xb1, 0xb5, 0xd5, 0xe7, 0xc5, 0x3b, 0xf2, 0x5f, 0xf7, 0xd9, 0x63, 0xc9, - 0xb7, 0x4a, 0xa6, 0x96, 0x77, 0x2c, 0x9f, 0x0f, 0x23, 0xff, 0xcf, 0xcd, 0x7f, 0xdc, 0x70, 0xcf, 0xf0, 0x58, 0x3c, 0x1e, - 0xdd, 0x61, 0x0f, 0xef, 0xcd, 0x3f, 0xfd, 0xce, 0x88, 0xee, 0xf9, 0x5f, 0x3f, 0x2f, 0xf4, 0xcb, 0xed, 0x81, 0x2a, 0xf9, - 0x3c, 0xf1, 0x5a, 0x56, 0xfe, 0x73, 0xfd, 0x96, 0xd9, 0xf9, 0xff, 0x20, 0xff, 0xdf, 0xdd, 0xeb, 0xd0, 0x7f, 0x76, 0x03, - 0xf2, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfb, 0x67, 0xbb, 0x45, 0x6a, 0x7d, 0x5b, 0x0c, 0x56, - 0x32, 0x88, 0x74, 0xa5, 0xf8, 0x6c, 0x7d, 0x8c, 0x18, 0x5c, 0xf7, 0x35, 0x5f, 0x37, 0xf8, 0xfa, 0xf3, 0x15, 0x66, 0xd6, - 0x0f, 0xae, 0x3f, 0x8e, 0x75, 0x15, 0xd6, 0xeb, 0x8f, 0x52, 0xe6, 0xef, 0x47, 0x79, 0xed, 0xb5, 0xfe, 0x99, 0x99, 0xdf, - 0xcf, 0x99, 0x95, 0xbe, 0xb5, 0x67, 0xd4, 0xb5, 0x63, 0x5b, 0xb7, 0xba, 0x33, 0x26, 0x92, 0x3e, 0x3e, 0x4f, 0xfb, 0xf7, - 0xaa, 0x9f, 0x5d, 0x8f, 0x63, 0x2e, 0x4b, 0x51, 0xba, 0x06, 0x37, 0xf7, 0xd7, 0x9f, 0xb6, 0xaf, 0xaf, 0x57, 0x01, 0xd8, - 0xdd, 0x5f, 0xc8, 0x3f, 0x35, 0x28, 0x6e, 0x9f, 0x8b, 0xbf, 0xae, 0xa2, 0x4e, 0x5d, 0xad, 0xe2, 0xbb, 0x8f, 0xe3, 0x71, - 0xfa, 0x0c, 0x93, 0x68, 0xb8, 0xbe, 0xe5, 0xac, 0xff, 0x18, 0x2d, 0xf7, 0x75, 0x5c, 0xee, 0x23, 0xe6, 0xf3, 0x9f, 0x7f, - 0x3e, 0x53, 0x14, 0x57, 0xe6, 0xcd, 0x57, 0xc7, 0xac, 0xde, 0xfa, 0x7c, 0xfb, 0x9f, 0xb9, 0x52, 0x88, 0xe5, 0x9f, 0xaa, - 0xf6, 0x3b, 0x39, 0x4e, 0x6a, 0xb9, 0xae, 0x3e, 0x2b, 0x56, 0xbc, 0x12, 0x1b, 0xce, 0xad, 0xdc, 0xf5, 0xde, 0xb5, 0x33, - 0x64, 0x26, 0xff, 0x7d, 0x8f, 0xcd, 0xd1, 0xe6, 0x95, 0xdd, 0xf9, 0x7f, 0xee, 0x2b, 0xef, 0xc9, 0x7f, 0x9f, 0xb3, 0xef, - 0xb7, 0xcf, 0x33, 0xfb, 0xac, 0xc2, 0x0e, 0x47, 0xe0, 0xac, 0x4e, 0xec, 0x5b, 0xf3, 0x1f, 0x3f, 0x8e, 0x0c, 0xf6, 0xff, - 0x4e, 0xfe, 0xb9, 0x5f, 0xf0, 0xb4, 0xfc, 0x57, 0xb6, 0xcb, 0x15, 0x6d, 0xf9, 0xde, 0x6b, 0x66, 0xed, 0xbf, 0xf6, 0xff, - 0xdb, 0xf9, 0xbf, 0xff, 0x2a, 0x6c, 0x6f, 0x66, 0xfa, 0xed, 0xb3, 0x3e, 0xf9, 0x1f, 0x19, 0xf3, 0x92, 0xff, 0xb7, 0xe7, - 0xff, 0x09, 0xdf, 0x4d, 0xb3, 0xf7, 0xff, 0xde, 0x31, 0xfe, 0x57, 0xf5, 0x8a, 0xf6, 0x7f, 0x6e, 0x8c, 0xfd, 0xee, 0x6d, - 0xcb, 0x1f, 0xf3, 0xb7, 0x1c, 0x85, 0xd1, 0x3e, 0x80, 0xfe, 0xbf, 0xfc, 0xbf, 0x27, 0xff, 0x47, 0x7a, 0xf6, 0xc1, 0xb3, - 0xae, 0x33, 0x46, 0x8e, 0xc7, 0x73, 0xf2, 0x5f, 0x79, 0xc7, 0xee, 0x29, 0xe3, 0x7f, 0x4f, 0xfb, 0x66, 0x78, 0x63, 0xfe, - 0xef, 0xbd, 0xd7, 0xda, 0x63, 0xe6, 0xef, 0x33, 0xfb, 0x32, 0x4f, 0xce, 0xff, 0xb3, 0xfb, 0x64, 0xc7, 0x6d, 0x57, 0x85, - 0x51, 0xb8, 0xa7, 0x79, 0x46, 0xfe, 0x63, 0x53, 0xfe, 0x47, 0xc6, 0x06, 0xde, 0x9d, 0xff, 0xf1, 0xd6, 0x2a, 0x6e, 0x1f, - 0x63, 0x96, 0xff, 0xbb, 0xf3, 0xbf, 0x7f, 0xeb, 0x77, 0xf5, 0xc4, 0x62, 0x49, 0xd2, 0xc7, 0x8f, 0xc9, 0x13, 0xfb, 0xa4, - 0x3b, 0xb7, 0x4d, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xef, 0xcc, 0x00, 0x1e, 0x7b, 0xb5, - 0x43, 0x05, 0xfd, 0x23, 0x5d, 0x6d, 0xbd, 0xee, 0xf3, 0x1e, 0x89, 0xaa, 0xee, 0x99, 0x6d, 0xe8, 0x5c, 0x41, 0xdf, 0xac, - 0xdb, 0xb7, 0x7e, 0x03, 0xf4, 0xae, 0xa0, 0x7f, 0x5e, 0xe5, 0x63, 0xfd, 0xe7, 0xad, 0x9c, 0x3f, 0xdf, 0xbb, 0x82, 0x7e, - 0xbf, 0xb5, 0xab, 0xf4, 0xfb, 0x26, 0xd9, 0x59, 0x41, 0x7f, 0xbc, 0xbf, 0x71, 0x6c, 0xdc, 0xae, 0x6c, 0x35, 0x83, 0xae, - 0x15, 0xf4, 0xbb, 0xaf, 0x05, 0xe3, 0xfe, 0xb5, 0x59, 0x63, 0xcf, 0xb4, 0xa8, 0xaa, 0xa0, 0xf1, 0xb4, 0x0a, 0xfa, 0x67, - 0x19, 0x7b, 0x52, 0x9d, 0x6c, 0xf9, 0xb7, 0xfe, 0xf7, 0xbe, 0xfc, 0xf7, 0xad, 0x93, 0x91, 0xad, 0x52, 0xd3, 0xbb, 0x82, - 0xa6, 0xfc, 0xcb, 0xbf, 0xfc, 0xaf, 0xaa, 0x91, 0x20, 0xff, 0x3c, 0x3d, 0xff, 0x3b, 0x2b, 0xe8, 0xa8, 0xa0, 0xb9, 0xbb, - 0x22, 0xd0, 0x21, 0xff, 0xae, 0xff, 0x1f, 0xf1, 0x04, 0x3d, 0xf9, 0x5f, 0xf3, 0x8a, 0xfc, 0x7f, 0xfd, 0xde, 0x9f, 0x0a, - 0xda, 0x2b, 0xf3, 0x1f, 0x4d, 0xc7, 0xff, 0xf6, 0xdf, 0xf1, 0xe1, 0x89, 0xf9, 0xd7, 0xff, 0xcf, 0xe7, 0xe2, 0xfe, 0x0a, - 0x9a, 0xf9, 0x34, 0xcb, 0xbf, 0xfe, 0x7f, 0xc5, 0xfc, 0x9f, 0x9a, 0xb6, 0x47, 0x05, 0xcd, 0xb9, 0x6d, 0x93, 0x7f, 0xd0, - 0x2b, 0xd4, 0xff, 0x07, 0xbd, 0x41, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xf9, 0xf3, 0x9f, 0xfd, 0x00, 0xf2, 0x0f, 0x7c, 0x2e, 0xff, 0xff, 0x00 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle terminalFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 1 , 11 }, - { 25, 4, 3 , 3 }, - { 36, 4, 6 , 11 }, - { 50, 4, 5 , 11 }, - { 63, 4, 5 , 11 }, - { 76, 4, 5 , 11 }, - { 89, 4, 1 , 2 }, - { 98, 4, 2 , 13 }, - { 108, 4, 2 , 13 }, - { 118, 4, 3 , 3 }, - { 129, 4, 5 , 5 }, - { 142, 4, 1 , 3 }, - { 151, 4, 5 , 1 }, - { 164, 4, 1 , 1 }, - { 173, 4, 6 , 12 }, - { 187, 4, 5 , 11 }, - { 200, 4, 2 , 11 }, - { 210, 4, 5 , 11 }, - { 223, 4, 5 , 11 }, - { 236, 4, 5 , 11 }, - { 249, 4, 5 , 11 }, - { 262, 4, 5 , 11 }, - { 275, 4, 5 , 11 }, - { 288, 4, 5 , 11 }, - { 301, 4, 5 , 11 }, - { 314, 4, 1 , 8 }, - { 323, 4, 1 , 10 }, - { 332, 4, 4 , 5 }, - { 344, 4, 5 , 3 }, - { 357, 4, 4 , 5 }, - { 369, 4, 5 , 11 }, - { 382, 4, 11 , 11 }, - { 401, 4, 5 , 11 }, - { 414, 4, 5 , 11 }, - { 427, 4, 5 , 11 }, - { 440, 4, 5 , 11 }, - { 453, 4, 5 , 11 }, - { 466, 4, 5 , 11 }, - { 479, 4, 5 , 11 }, - { 492, 4, 5 , 11 }, - { 4, 28, 1 , 11 }, - { 13, 28, 5 , 11 }, - { 26, 28, 5 , 11 }, - { 39, 28, 5 , 11 }, - { 52, 28, 7 , 11 }, - { 67, 28, 5 , 11 }, - { 80, 28, 5 , 11 }, - { 93, 28, 5 , 11 }, - { 106, 28, 5 , 13 }, - { 119, 28, 5 , 11 }, - { 132, 28, 5 , 11 }, - { 145, 28, 5 , 11 }, - { 158, 28, 5 , 11 }, - { 171, 28, 5 , 11 }, - { 184, 28, 7 , 11 }, - { 199, 28, 5 , 11 }, - { 212, 28, 5 , 11 }, - { 225, 28, 5 , 11 }, - { 238, 28, 2 , 13 }, - { 248, 28, 6 , 12 }, - { 262, 28, 2 , 13 }, - { 272, 28, 5 , 4 }, - { 285, 28, 5 , 1 }, - { 298, 28, 2 , 2 }, - { 308, 28, 5 , 8 }, - { 321, 28, 5 , 11 }, - { 334, 28, 5 , 8 }, - { 347, 28, 5 , 11 }, - { 360, 28, 5 , 8 }, - { 373, 28, 4 , 11 }, - { 385, 28, 5 , 10 }, - { 398, 28, 5 , 11 }, - { 411, 28, 1 , 11 }, - { 420, 28, 1 , 13 }, - { 429, 28, 5 , 11 }, - { 442, 28, 1 , 11 }, - { 451, 28, 7 , 8 }, - { 466, 28, 5 , 8 }, - { 479, 28, 5 , 8 }, - { 492, 28, 5 , 10 }, - { 4, 52, 5 , 10 }, - { 17, 52, 4 , 8 }, - { 29, 52, 5 , 8 }, - { 42, 52, 3 , 11 }, - { 53, 52, 5 , 8 }, - { 66, 52, 5 , 8 }, - { 79, 52, 7 , 8 }, - { 94, 52, 5 , 8 }, - { 107, 52, 5 , 10 }, - { 120, 52, 5 , 8 }, - { 133, 52, 3 , 13 }, - { 144, 52, 1 , 15 }, - { 153, 52, 3 , 13 }, - { 164, 52, 5 , 3 }, - { 177, 52, 1 , 11 }, - { 186, 52, 5 , 11 }, - { 199, 52, 5 , 10 }, - { 212, 52, 5 , 10 }, - { 225, 52, 5 , 10 }, - { 238, 52, 0 , 0 }, - { 246, 52, 0 , 0 }, - { 254, 52, 0 , 0 }, - { 262, 52, 7 , 8 }, - { 277, 52, 0 , 0 }, - { 285, 52, 0 , 0 }, - { 293, 52, 5 , 3 }, - { 306, 52, 7 , 8 }, - { 321, 52, 5 , 1 }, - { 334, 52, 3 , 3 }, - { 345, 52, 5 , 7 }, - { 358, 52, 0 , 0 }, - { 366, 52, 0 , 0 }, - { 374, 52, 0 , 0 }, - { 382, 52, 5 , 10 }, - { 395, 52, 7 , 11 }, - { 410, 52, 1 , 1 }, - { 419, 52, 0 , 0 }, - { 427, 52, 0 , 0 }, - { 435, 52, 0 , 0 }, - { 443, 52, 0 , 0 }, - { 451, 52, 0 , 0 }, - { 459, 52, 0 , 0 }, - { 467, 52, 5 , 13 }, - { 480, 52, 5 , 11 }, - { 493, 52, 5 , 14 }, - { 4, 76, 5 , 14 }, - { 17, 76, 5 , 14 }, - { 30, 76, 5 , 14 }, - { 43, 76, 5 , 13 }, - { 56, 76, 5 , 13 }, - { 69, 76, 9 , 11 }, - { 86, 76, 5 , 13 }, - { 99, 76, 5 , 14 }, - { 112, 76, 5 , 14 }, - { 125, 76, 5 , 14 }, - { 138, 76, 5 , 13 }, - { 151, 76, 2 , 14 }, - { 161, 76, 2 , 14 }, - { 171, 76, 3 , 14 }, - { 182, 76, 3 , 13 }, - { 193, 76, 5 , 11 }, - { 206, 76, 5 , 14 }, - { 219, 76, 5 , 14 }, - { 232, 76, 5 , 14 }, - { 245, 76, 5 , 14 }, - { 258, 76, 5 , 14 }, - { 271, 76, 5 , 13 }, - { 284, 76, 5 , 5 }, - { 297, 76, 5 , 13 }, - { 310, 76, 5 , 14 }, - { 323, 76, 5 , 14 }, - { 336, 76, 5 , 14 }, - { 349, 76, 5 , 13 }, - { 362, 76, 5 , 14 }, - { 375, 76, 5 , 11 }, - { 388, 76, 5 , 11 }, - { 401, 76, 5 , 11 }, - { 414, 76, 5 , 11 }, - { 427, 76, 5 , 11 }, - { 440, 76, 5 , 11 }, - { 453, 76, 5 , 10 }, - { 466, 76, 5 , 10 }, - { 479, 76, 9 , 8 }, - { 496, 76, 5 , 10 }, - { 4, 100, 5 , 11 }, - { 17, 100, 5 , 11 }, - { 30, 100, 5 , 11 }, - { 43, 100, 5 , 10 }, - { 56, 100, 2 , 11 }, - { 66, 100, 2 , 11 }, - { 76, 100, 3 , 11 }, - { 87, 100, 3 , 10 }, - { 98, 100, 5 , 11 }, - { 111, 100, 5 , 11 }, - { 124, 100, 5 , 11 }, - { 137, 100, 5 , 11 }, - { 150, 100, 5 , 11 }, - { 163, 100, 5 , 11 }, - { 176, 100, 5 , 10 }, - { 189, 100, 5 , 5 }, - { 202, 100, 5 , 10 }, - { 215, 100, 5 , 11 }, - { 228, 100, 5 , 11 }, - { 241, 100, 5 , 11 }, - { 254, 100, 5 , 10 }, - { 267, 100, 5 , 13 }, - { 280, 100, 4 , 8 }, - { 292, 100, 5 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo terminalFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 1, 3, 3, { 0 }}, - { 34, 1, 3, 5, { 0 }}, - { 35, 1, 3, 8, { 0 }}, - { 36, 1, 3, 7, { 0 }}, - { 37, 1, 3, 7, { 0 }}, - { 38, 1, 3, 7, { 0 }}, - { 39, 1, 3, 3, { 0 }}, - { 40, 1, 2, 4, { 0 }}, - { 41, 1, 2, 4, { 0 }}, - { 42, 1, 3, 5, { 0 }}, - { 43, 1, 7, 7, { 0 }}, - { 44, 1, 13, 3, { 0 }}, - { 45, 1, 9, 7, { 0 }}, - { 46, 1, 13, 3, { 0 }}, - { 47, 1, 2, 8, { 0 }}, - { 48, 1, 3, 7, { 0 }}, - { 49, 1, 3, 4, { 0 }}, - { 50, 1, 3, 7, { 0 }}, - { 51, 1, 3, 7, { 0 }}, - { 52, 1, 3, 7, { 0 }}, - { 53, 1, 3, 7, { 0 }}, - { 54, 1, 3, 7, { 0 }}, - { 55, 1, 3, 7, { 0 }}, - { 56, 1, 3, 7, { 0 }}, - { 57, 1, 3, 7, { 0 }}, - { 58, 1, 6, 3, { 0 }}, - { 59, 1, 6, 3, { 0 }}, - { 60, 1, 7, 6, { 0 }}, - { 61, 1, 8, 7, { 0 }}, - { 62, 1, 7, 6, { 0 }}, - { 63, 1, 3, 7, { 0 }}, - { 64, 2, 3, 15, { 0 }}, - { 65, 1, 3, 7, { 0 }}, - { 66, 1, 3, 7, { 0 }}, - { 67, 1, 3, 7, { 0 }}, - { 68, 1, 3, 7, { 0 }}, - { 69, 1, 3, 7, { 0 }}, - { 70, 1, 3, 7, { 0 }}, - { 71, 1, 3, 7, { 0 }}, - { 72, 1, 3, 7, { 0 }}, - { 73, 1, 3, 3, { 0 }}, - { 74, 1, 3, 7, { 0 }}, - { 75, 1, 3, 7, { 0 }}, - { 76, 1, 3, 7, { 0 }}, - { 77, 1, 3, 9, { 0 }}, - { 78, 1, 3, 7, { 0 }}, - { 79, 1, 3, 7, { 0 }}, - { 80, 1, 3, 7, { 0 }}, - { 81, 1, 3, 7, { 0 }}, - { 82, 1, 3, 7, { 0 }}, - { 83, 1, 3, 7, { 0 }}, - { 84, 1, 3, 7, { 0 }}, - { 85, 1, 3, 7, { 0 }}, - { 86, 1, 3, 7, { 0 }}, - { 87, 1, 3, 9, { 0 }}, - { 88, 1, 3, 7, { 0 }}, - { 89, 1, 3, 7, { 0 }}, - { 90, 1, 3, 7, { 0 }}, - { 91, 1, 2, 4, { 0 }}, - { 92, 1, 2, 8, { 0 }}, - { 93, 1, 2, 4, { 0 }}, - { 94, 1, 3, 7, { 0 }}, - { 95, 1, 15, 7, { 0 }}, - { 96, 1, 0, 4, { 0 }}, - { 97, 1, 6, 7, { 0 }}, - { 98, 1, 3, 7, { 0 }}, - { 99, 1, 6, 7, { 0 }}, - { 100, 1, 3, 7, { 0 }}, - { 101, 1, 6, 7, { 0 }}, - { 102, 1, 3, 6, { 0 }}, - { 103, 1, 6, 7, { 0 }}, - { 104, 1, 3, 7, { 0 }}, - { 105, 1, 3, 3, { 0 }}, - { 106, 1, 3, 3, { 0 }}, - { 107, 1, 3, 7, { 0 }}, - { 108, 1, 3, 3, { 0 }}, - { 109, 1, 6, 9, { 0 }}, - { 110, 1, 6, 7, { 0 }}, - { 111, 1, 6, 7, { 0 }}, - { 112, 1, 6, 7, { 0 }}, - { 113, 1, 6, 7, { 0 }}, - { 114, 1, 6, 6, { 0 }}, - { 115, 1, 6, 7, { 0 }}, - { 116, 1, 3, 5, { 0 }}, - { 117, 1, 6, 7, { 0 }}, - { 118, 1, 6, 7, { 0 }}, - { 119, 1, 6, 9, { 0 }}, - { 120, 1, 6, 7, { 0 }}, - { 121, 1, 6, 7, { 0 }}, - { 122, 1, 6, 7, { 0 }}, - { 123, 1, 2, 5, { 0 }}, - { 124, 1, 1, 3, { 0 }}, - { 125, 1, 2, 5, { 0 }}, - { 126, 1, 8, 7, { 0 }}, - { 161, 1, 3, 3, { 0 }}, - { 162, 1, 3, 7, { 0 }}, - { 163, 1, 3, 7, { 0 }}, - { 8364, 1, 3, 7, { 0 }}, - { 165, 1, 3, 7, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 0, 0, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 1, 3, 9, { 0 }}, - { 170, 0, 0, 0, { 0 }}, - { 171, 0, 0, 0, { 0 }}, - { 172, 1, 8, 7, { 0 }}, - { 174, 1, 3, 9, { 0 }}, - { 175, 1, 1, 7, { 0 }}, - { 176, 1, 0, 5, { 0 }}, - { 177, 1, 7, 7, { 0 }}, - { 178, 0, 0, 0, { 0 }}, - { 179, 0, 0, 0, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 1, 6, 7, { 0 }}, - { 182, 1, 3, 9, { 0 }}, - { 183, 1, 8, 3, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 0, 0, { 0 }}, - { 186, 0, 0, 0, { 0 }}, - { 187, 0, 0, 0, { 0 }}, - { 338, 0, 0, 0, { 0 }}, - { 339, 0, 0, 0, { 0 }}, - { 376, 1, 1, 7, { 0 }}, - { 191, 1, 3, 7, { 0 }}, - { 192, 1, 0, 7, { 0 }}, - { 193, 1, 0, 7, { 0 }}, - { 194, 1, 0, 7, { 0 }}, - { 195, 1, 0, 7, { 0 }}, - { 196, 1, 1, 7, { 0 }}, - { 197, 1, 1, 7, { 0 }}, - { 198, 1, 3, 11, { 0 }}, - { 199, 1, 3, 7, { 0 }}, - { 200, 1, 0, 7, { 0 }}, - { 201, 1, 0, 7, { 0 }}, - { 202, 1, 0, 7, { 0 }}, - { 203, 1, 1, 7, { 0 }}, - { 204, 0, 0, 3, { 0 }}, - { 205, 1, 0, 3, { 0 }}, - { 206, 0, 0, 3, { 0 }}, - { 207, 0, 1, 3, { 0 }}, - { 208, 1, 3, 7, { 0 }}, - { 209, 1, 0, 7, { 0 }}, - { 210, 1, 0, 7, { 0 }}, - { 211, 1, 0, 7, { 0 }}, - { 212, 1, 0, 7, { 0 }}, - { 213, 1, 0, 7, { 0 }}, - { 214, 1, 1, 7, { 0 }}, - { 215, 1, 7, 7, { 0 }}, - { 216, 1, 2, 7, { 0 }}, - { 217, 1, 0, 7, { 0 }}, - { 218, 1, 0, 7, { 0 }}, - { 219, 1, 0, 7, { 0 }}, - { 220, 1, 1, 7, { 0 }}, - { 221, 1, 0, 7, { 0 }}, - { 222, 1, 3, 7, { 0 }}, - { 223, 1, 3, 7, { 0 }}, - { 224, 1, 3, 7, { 0 }}, - { 225, 1, 3, 7, { 0 }}, - { 226, 1, 3, 7, { 0 }}, - { 227, 1, 3, 7, { 0 }}, - { 228, 1, 4, 7, { 0 }}, - { 229, 1, 4, 7, { 0 }}, - { 230, 1, 6, 11, { 0 }}, - { 231, 1, 6, 7, { 0 }}, - { 232, 1, 3, 7, { 0 }}, - { 233, 1, 3, 7, { 0 }}, - { 234, 1, 3, 7, { 0 }}, - { 235, 1, 4, 7, { 0 }}, - { 236, 0, 3, 3, { 0 }}, - { 237, 1, 3, 3, { 0 }}, - { 238, 0, 3, 3, { 0 }}, - { 239, 0, 4, 3, { 0 }}, - { 240, 1, 3, 7, { 0 }}, - { 241, 1, 3, 7, { 0 }}, - { 242, 1, 3, 7, { 0 }}, - { 243, 1, 3, 7, { 0 }}, - { 244, 1, 3, 7, { 0 }}, - { 245, 1, 3, 7, { 0 }}, - { 246, 1, 4, 7, { 0 }}, - { 247, 1, 7, 7, { 0 }}, - { 248, 1, 5, 7, { 0 }}, - { 249, 1, 3, 7, { 0 }}, - { 250, 1, 3, 7, { 0 }}, - { 251, 1, 3, 7, { 0 }}, - { 252, 1, 4, 7, { 0 }}, - { 253, 1, 3, 7, { 0 }}, - { 254, 1, 6, 6, { 0 }}, - { 255, 1, 4, 7, { 0 }}, -}; - -// Style loading function: Terminal -static void GuiLoadStyleTerminal(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < TERMINAL_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(terminalStyleProps[i].controlId, terminalStyleProps[i].propertyId, terminalStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int terminalFontDataSize = 0; - unsigned char *data = DecompressData(terminalFontData, TERMINAL_STYLE_FONT_ATLAS_COMP_SIZE, &terminalFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, terminalFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, terminalFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/icons/raygui_icons.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/icons/raygui_icons.h deleted file mode 100644 index e491101..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/icons/raygui_icons.h +++ /dev/null @@ -1,547 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// raygui Icons exporter v1.1 - Icons data exported as a values array // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2019-2022 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -#define RAYGUI_ICON_SIZE 16 // Size of icons (squared) -#define RAYGUI_ICON_MAX_ICONS 256 // Maximum number of icons -#define RAYGUI_ICON_MAX_NAME_LENGTH 32 // Maximum length of icon name id - -// Icons data is defined by bit array (every bit represents one pixel) -// Those arrays are stored as unsigned int data arrays, so every array -// element defines 32 pixels (bits) of information -// Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) -#define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) - -//---------------------------------------------------------------------------------- -// Icons enumeration -//---------------------------------------------------------------------------------- -typedef enum { - ICON_NONE = 0, - ICON_FOLDER_FILE_OPEN = 1, - ICON_FILE_SAVE_CLASSIC = 2, - ICON_FOLDER_OPEN = 3, - ICON_FOLDER_SAVE = 4, - ICON_FILE_OPEN = 5, - ICON_FILE_SAVE = 6, - ICON_FILE_EXPORT = 7, - ICON_FILE_ADD = 8, - ICON_FILE_DELETE = 9, - ICON_FILETYPE_TEXT = 10, - ICON_FILETYPE_AUDIO = 11, - ICON_FILETYPE_IMAGE = 12, - ICON_FILETYPE_PLAY = 13, - ICON_FILETYPE_VIDEO = 14, - ICON_FILETYPE_INFO = 15, - ICON_FILE_COPY = 16, - ICON_FILE_CUT = 17, - ICON_FILE_PASTE = 18, - ICON_CURSOR_HAND = 19, - ICON_CURSOR_POINTER = 20, - ICON_CURSOR_CLASSIC = 21, - ICON_PENCIL = 22, - ICON_PENCIL_BIG = 23, - ICON_BRUSH_CLASSIC = 24, - ICON_BRUSH_PAINTER = 25, - ICON_WATER_DROP = 26, - ICON_COLOR_PICKER = 27, - ICON_RUBBER = 28, - ICON_COLOR_BUCKET = 29, - ICON_TEXT_T = 30, - ICON_TEXT_A = 31, - ICON_SCALE = 32, - ICON_RESIZE = 33, - ICON_FILTER_POINT = 34, - ICON_FILTER_BILINEAR = 35, - ICON_CROP = 36, - ICON_CROP_ALPHA = 37, - ICON_SQUARE_TOGGLE = 38, - ICON_SYMMETRY = 39, - ICON_SYMMETRY_HORIZONTAL = 40, - ICON_SYMMETRY_VERTICAL = 41, - ICON_LENS = 42, - ICON_LENS_BIG = 43, - ICON_EYE_ON = 44, - ICON_EYE_OFF = 45, - ICON_FILTER_TOP = 46, - ICON_FILTER = 47, - ICON_TARGET_POINT = 48, - ICON_TARGET_SMALL = 49, - ICON_TARGET_BIG = 50, - ICON_TARGET_MOVE = 51, - ICON_CURSOR_MOVE = 52, - ICON_CURSOR_SCALE = 53, - ICON_CURSOR_SCALE_RIGHT = 54, - ICON_CURSOR_SCALE_LEFT = 55, - ICON_UNDO = 56, - ICON_REDO = 57, - ICON_REREDO = 58, - ICON_MUTATE = 59, - ICON_ROTATE = 60, - ICON_REPEAT = 61, - ICON_SHUFFLE = 62, - ICON_EMPTYBOX = 63, - ICON_TARGET = 64, - ICON_TARGET_SMALL_FILL = 65, - ICON_TARGET_BIG_FILL = 66, - ICON_TARGET_MOVE_FILL = 67, - ICON_CURSOR_MOVE_FILL = 68, - ICON_CURSOR_SCALE_FILL = 69, - ICON_CURSOR_SCALE_RIGHT_FILL = 70, - ICON_CURSOR_SCALE_LEFT_FILL = 71, - ICON_UNDO_FILL = 72, - ICON_REDO_FILL = 73, - ICON_REREDO_FILL = 74, - ICON_MUTATE_FILL = 75, - ICON_ROTATE_FILL = 76, - ICON_REPEAT_FILL = 77, - ICON_SHUFFLE_FILL = 78, - ICON_EMPTYBOX_SMALL = 79, - ICON_BOX = 80, - ICON_BOX_TOP = 81, - ICON_BOX_TOP_RIGHT = 82, - ICON_BOX_RIGHT = 83, - ICON_BOX_BOTTOM_RIGHT = 84, - ICON_BOX_BOTTOM = 85, - ICON_BOX_BOTTOM_LEFT = 86, - ICON_BOX_LEFT = 87, - ICON_BOX_TOP_LEFT = 88, - ICON_BOX_CENTER = 89, - ICON_BOX_CIRCLE_MASK = 90, - ICON_POT = 91, - ICON_ALPHA_MULTIPLY = 92, - ICON_ALPHA_CLEAR = 93, - ICON_DITHERING = 94, - ICON_MIPMAPS = 95, - ICON_BOX_GRID = 96, - ICON_GRID = 97, - ICON_BOX_CORNERS_SMALL = 98, - ICON_BOX_CORNERS_BIG = 99, - ICON_FOUR_BOXES = 100, - ICON_GRID_FILL = 101, - ICON_BOX_MULTISIZE = 102, - ICON_ZOOM_SMALL = 103, - ICON_ZOOM_MEDIUM = 104, - ICON_ZOOM_BIG = 105, - ICON_ZOOM_ALL = 106, - ICON_ZOOM_CENTER = 107, - ICON_BOX_DOTS_SMALL = 108, - ICON_BOX_DOTS_BIG = 109, - ICON_BOX_CONCENTRIC = 110, - ICON_BOX_GRID_BIG = 111, - ICON_OK_TICK = 112, - ICON_CROSS = 113, - ICON_ARROW_LEFT = 114, - ICON_ARROW_RIGHT = 115, - ICON_ARROW_DOWN = 116, - ICON_ARROW_UP = 117, - ICON_ARROW_LEFT_FILL = 118, - ICON_ARROW_RIGHT_FILL = 119, - ICON_ARROW_DOWN_FILL = 120, - ICON_ARROW_UP_FILL = 121, - ICON_AUDIO = 122, - ICON_FX = 123, - ICON_WAVE = 124, - ICON_WAVE_SINUS = 125, - ICON_WAVE_SQUARE = 126, - ICON_WAVE_TRIANGULAR = 127, - ICON_CROSS_SMALL = 128, - ICON_PLAYER_PREVIOUS = 129, - ICON_PLAYER_PLAY_BACK = 130, - ICON_PLAYER_PLAY = 131, - ICON_PLAYER_PAUSE = 132, - ICON_PLAYER_STOP = 133, - ICON_PLAYER_NEXT = 134, - ICON_PLAYER_RECORD = 135, - ICON_MAGNET = 136, - ICON_LOCK_CLOSE = 137, - ICON_LOCK_OPEN = 138, - ICON_CLOCK = 139, - ICON_TOOLS = 140, - ICON_GEAR = 141, - ICON_GEAR_BIG = 142, - ICON_BIN = 143, - ICON_HAND_POINTER = 144, - ICON_LASER = 145, - ICON_COIN = 146, - ICON_EXPLOSION = 147, - ICON_1UP = 148, - ICON_PLAYER = 149, - ICON_PLAYER_JUMP = 150, - ICON_KEY = 151, - ICON_DEMON = 152, - ICON_TEXT_POPUP = 153, - ICON_GEAR_EX = 154, - ICON_CRACK = 155, - ICON_CRACK_POINTS = 156, - ICON_STAR = 157, - ICON_DOOR = 158, - ICON_EXIT = 159, - ICON_MODE_2D = 160, - ICON_MODE_3D = 161, - ICON_CUBE = 162, - ICON_CUBE_FACE_TOP = 163, - ICON_CUBE_FACE_LEFT = 164, - ICON_CUBE_FACE_FRONT = 165, - ICON_CUBE_FACE_BOTTOM = 166, - ICON_CUBE_FACE_RIGHT = 167, - ICON_CUBE_FACE_BACK = 168, - ICON_CAMERA = 169, - ICON_SPECIAL = 170, - ICON_LINK_NET = 171, - ICON_LINK_BOXES = 172, - ICON_LINK_MULTI = 173, - ICON_LINK = 174, - ICON_LINK_BROKE = 175, - ICON_TEXT_NOTES = 176, - ICON_NOTEBOOK = 177, - ICON_SUITCASE = 178, - ICON_SUITCASE_ZIP = 179, - ICON_MAILBOX = 180, - ICON_MONITOR = 181, - ICON_PRINTER = 182, - ICON_PHOTO_CAMERA = 183, - ICON_PHOTO_CAMERA_FLASH = 184, - ICON_HOUSE = 185, - ICON_HEART = 186, - ICON_CORNER = 187, - ICON_VERTICAL_BARS = 188, - ICON_VERTICAL_BARS_FILL = 189, - ICON_LIFE_BARS = 190, - ICON_INFO = 191, - ICON_CROSSLINE = 192, - ICON_HELP = 193, - ICON_FILETYPE_ALPHA = 194, - ICON_FILETYPE_HOME = 195, - ICON_LAYERS_VISIBLE = 196, - ICON_LAYERS = 197, - ICON_WINDOW = 198, - ICON_HIDPI = 199, - ICON_FILETYPE_BINARY = 200, - ICON_HEX = 201, - ICON_SHIELD = 202, - ICON_FILE_NEW = 203, - ICON_FOLDER_ADD = 204, - ICON_ALARM = 205, - ICON_CPU = 206, - ICON_ROM = 207, - ICON_STEP_OVER = 208, - ICON_STEP_INTO = 209, - ICON_STEP_OUT = 210, - ICON_RESTART = 211, - ICON_BREAKPOINT_ON = 212, - ICON_BREAKPOINT_OFF = 213, - ICON_BURGER_MENU = 214, - ICON_CASE_SENSITIVE = 215, - ICON_REG_EXP = 216, - ICON_217 = 217, - ICON_218 = 218, - ICON_219 = 219, - ICON_220 = 220, - ICON_221 = 221, - ICON_222 = 222, - ICON_223 = 223, - ICON_224 = 224, - ICON_225 = 225, - ICON_226 = 226, - ICON_227 = 227, - ICON_228 = 228, - ICON_229 = 229, - ICON_230 = 230, - ICON_231 = 231, - ICON_232 = 232, - ICON_233 = 233, - ICON_234 = 234, - ICON_235 = 235, - ICON_236 = 236, - ICON_237 = 237, - ICON_238 = 238, - ICON_239 = 239, - ICON_240 = 240, - ICON_241 = 241, - ICON_242 = 242, - ICON_243 = 243, - ICON_244 = 244, - ICON_245 = 245, - ICON_246 = 246, - ICON_247 = 247, - ICON_248 = 248, - ICON_249 = 249, - ICON_250 = 250, - ICON_251 = 251, - ICON_252 = 252, - ICON_253 = 253, - ICON_254 = 254, - ICON_255 = 255, -} guiIconName; - -//---------------------------------------------------------------------------------- -// Icons data -//---------------------------------------------------------------------------------- -static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_NONE - 0x3ff80000, 0x2f082008, 0x2042207e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x00007ffe, // ICON_FOLDER_FILE_OPEN - 0x3ffe0000, 0x44226422, 0x400247e2, 0x5ffa4002, 0x57ea500a, 0x500a500a, 0x40025ffa, 0x00007ffe, // ICON_FILE_SAVE_CLASSIC - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024002, 0x44424282, 0x793e4102, 0x00000100, // ICON_FOLDER_OPEN - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024102, 0x44424102, 0x793e4282, 0x00000000, // ICON_FOLDER_SAVE - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x24442284, 0x21042104, 0x20042104, 0x00003ffc, // ICON_FILE_OPEN - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x21042104, 0x22842444, 0x20042104, 0x00003ffc, // ICON_FILE_SAVE - 0x3ff00000, 0x201c2010, 0x00042004, 0x20041004, 0x20844784, 0x00841384, 0x20042784, 0x00003ffc, // ICON_FILE_EXPORT - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x22042204, 0x22042f84, 0x20042204, 0x00003ffc, // ICON_FILE_ADD - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x25042884, 0x25042204, 0x20042884, 0x00003ffc, // ICON_FILE_DELETE - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_FILETYPE_TEXT - 0x3ff00000, 0x201c2010, 0x27042004, 0x244424c4, 0x26442444, 0x20642664, 0x20042004, 0x00003ffc, // ICON_FILETYPE_AUDIO - 0x3ff00000, 0x201c2010, 0x26042604, 0x20042004, 0x35442884, 0x2414222c, 0x20042004, 0x00003ffc, // ICON_FILETYPE_IMAGE - 0x3ff00000, 0x201c2010, 0x20c42004, 0x22442144, 0x22442444, 0x20c42144, 0x20042004, 0x00003ffc, // ICON_FILETYPE_PLAY - 0x3ff00000, 0x3ffc2ff0, 0x3f3c2ff4, 0x3dbc2eb4, 0x3dbc2bb4, 0x3f3c2eb4, 0x3ffc2ff4, 0x00002ff4, // ICON_FILETYPE_VIDEO - 0x3ff00000, 0x201c2010, 0x21842184, 0x21842004, 0x21842184, 0x21842184, 0x20042184, 0x00003ffc, // ICON_FILETYPE_INFO - 0x0ff00000, 0x381c0810, 0x28042804, 0x28042804, 0x28042804, 0x28042804, 0x20102ffc, 0x00003ff0, // ICON_FILE_COPY - 0x00000000, 0x701c0000, 0x079c1e14, 0x55a000f0, 0x079c00f0, 0x701c1e14, 0x00000000, 0x00000000, // ICON_FILE_CUT - 0x01c00000, 0x13e41bec, 0x3f841004, 0x204420c4, 0x20442044, 0x20442044, 0x207c2044, 0x00003fc0, // ICON_FILE_PASTE - 0x00000000, 0x3aa00fe0, 0x2abc2aa0, 0x2aa42aa4, 0x20042aa4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_CURSOR_HAND - 0x00000000, 0x003c000c, 0x030800c8, 0x30100c10, 0x10202020, 0x04400840, 0x01800280, 0x00000000, // ICON_CURSOR_POINTER - 0x00000000, 0x00180000, 0x01f00078, 0x03e007f0, 0x07c003e0, 0x04000e40, 0x00000000, 0x00000000, // ICON_CURSOR_CLASSIC - 0x00000000, 0x04000000, 0x11000a00, 0x04400a80, 0x01100220, 0x00580088, 0x00000038, 0x00000000, // ICON_PENCIL - 0x04000000, 0x15000a00, 0x50402880, 0x14102820, 0x05040a08, 0x015c028c, 0x007c00bc, 0x00000000, // ICON_PENCIL_BIG - 0x01c00000, 0x01400140, 0x01400140, 0x0ff80140, 0x0ff80808, 0x0aa80808, 0x0aa80aa8, 0x00000ff8, // ICON_BRUSH_CLASSIC - 0x1ffc0000, 0x5ffc7ffe, 0x40004000, 0x00807f80, 0x01c001c0, 0x01c001c0, 0x01c001c0, 0x00000080, // ICON_BRUSH_PAINTER - 0x00000000, 0x00800000, 0x01c00080, 0x03e001c0, 0x07f003e0, 0x036006f0, 0x000001c0, 0x00000000, // ICON_WATER_DROP - 0x00000000, 0x3e003800, 0x1f803f80, 0x0c201e40, 0x02080c10, 0x00840104, 0x00380044, 0x00000000, // ICON_COLOR_PICKER - 0x00000000, 0x07800300, 0x1fe00fc0, 0x3f883fd0, 0x0e021f04, 0x02040402, 0x00f00108, 0x00000000, // ICON_RUBBER - 0x00c00000, 0x02800140, 0x08200440, 0x20081010, 0x2ffe3004, 0x03f807fc, 0x00e001f0, 0x00000040, // ICON_COLOR_BUCKET - 0x00000000, 0x21843ffc, 0x01800180, 0x01800180, 0x01800180, 0x01800180, 0x03c00180, 0x00000000, // ICON_TEXT_T - 0x00800000, 0x01400180, 0x06200340, 0x0c100620, 0x1ff80c10, 0x380c1808, 0x70067004, 0x0000f80f, // ICON_TEXT_A - 0x78000000, 0x50004000, 0x00004800, 0x03c003c0, 0x03c003c0, 0x00100000, 0x0002000a, 0x0000000e, // ICON_SCALE - 0x75560000, 0x5e004002, 0x54001002, 0x41001202, 0x408200fe, 0x40820082, 0x40820082, 0x00006afe, // ICON_RESIZE - 0x00000000, 0x3f003f00, 0x3f003f00, 0x3f003f00, 0x00400080, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_POINT - 0x6d800000, 0x00004080, 0x40804080, 0x40800000, 0x00406d80, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_BILINEAR - 0x40080000, 0x1ffe2008, 0x14081008, 0x11081208, 0x10481088, 0x10081028, 0x10047ff8, 0x00001002, // ICON_CROP - 0x00100000, 0x3ffc0010, 0x2ab03550, 0x22b02550, 0x20b02150, 0x20302050, 0x2000fff0, 0x00002000, // ICON_CROP_ALPHA - 0x40000000, 0x1ff82000, 0x04082808, 0x01082208, 0x00482088, 0x00182028, 0x35542008, 0x00000002, // ICON_SQUARE_TOGGLE - 0x00000000, 0x02800280, 0x06c006c0, 0x0ea00ee0, 0x1e901eb0, 0x3e883e98, 0x7efc7e8c, 0x00000000, // ICON_SYMMETRY - 0x01000000, 0x05600100, 0x1d480d50, 0x7d423d44, 0x3d447d42, 0x0d501d48, 0x01000560, 0x00000100, // ICON_SYMMETRY_HORIZONTAL - 0x01800000, 0x04200240, 0x10080810, 0x00001ff8, 0x00007ffe, 0x0ff01ff8, 0x03c007e0, 0x00000180, // ICON_SYMMETRY_VERTICAL - 0x00000000, 0x010800f0, 0x02040204, 0x02040204, 0x07f00308, 0x1c000e00, 0x30003800, 0x00000000, // ICON_LENS - 0x00000000, 0x061803f0, 0x08240c0c, 0x08040814, 0x0c0c0804, 0x23f01618, 0x18002400, 0x00000000, // ICON_LENS_BIG - 0x00000000, 0x00000000, 0x1c7007c0, 0x638e3398, 0x1c703398, 0x000007c0, 0x00000000, 0x00000000, // ICON_EYE_ON - 0x00000000, 0x10002000, 0x04700fc0, 0x610e3218, 0x1c703098, 0x001007a0, 0x00000008, 0x00000000, // ICON_EYE_OFF - 0x00000000, 0x00007ffc, 0x40047ffc, 0x10102008, 0x04400820, 0x02800280, 0x02800280, 0x00000100, // ICON_FILTER_TOP - 0x00000000, 0x40027ffe, 0x10082004, 0x04200810, 0x02400240, 0x02400240, 0x01400240, 0x000000c0, // ICON_FILTER - 0x00800000, 0x00800080, 0x00000080, 0x3c9e0000, 0x00000000, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_POINT - 0x00800000, 0x00800080, 0x00800080, 0x3f7e01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL - 0x00800000, 0x00800080, 0x03e00080, 0x3e3e0220, 0x03e00220, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG - 0x01000000, 0x04400280, 0x01000100, 0x43842008, 0x43849ab2, 0x01002008, 0x04400100, 0x01000280, // ICON_TARGET_MOVE - 0x01000000, 0x04400280, 0x01000100, 0x41042108, 0x41049ff2, 0x01002108, 0x04400100, 0x01000280, // ICON_CURSOR_MOVE - 0x781e0000, 0x500a4002, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x4002500a, 0x0000781e, // ICON_CURSOR_SCALE - 0x00000000, 0x20003c00, 0x24002800, 0x01000200, 0x00400080, 0x00140024, 0x003c0004, 0x00000000, // ICON_CURSOR_SCALE_RIGHT - 0x00000000, 0x0004003c, 0x00240014, 0x00800040, 0x02000100, 0x28002400, 0x3c002000, 0x00000000, // ICON_CURSOR_SCALE_LEFT - 0x00000000, 0x00100020, 0x10101fc8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO - 0x00000000, 0x08000400, 0x080813f8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3f902020, 0x00400020, 0x00000000, // ICON_REREDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3fc82010, 0x00200010, 0x00000000, // ICON_MUTATE - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18101020, 0x00100fc8, 0x00000020, // ICON_ROTATE - 0x00000000, 0x04000200, 0x240429fc, 0x20042204, 0x20442004, 0x3f942024, 0x00400020, 0x00000000, // ICON_REPEAT - 0x00000000, 0x20001000, 0x22104c0e, 0x00801120, 0x11200040, 0x4c0e2210, 0x10002000, 0x00000000, // ICON_SHUFFLE - 0x7ffe0000, 0x50024002, 0x44024802, 0x41024202, 0x40424082, 0x40124022, 0x4002400a, 0x00007ffe, // ICON_EMPTYBOX - 0x00800000, 0x03e00080, 0x08080490, 0x3c9e0808, 0x08080808, 0x03e00490, 0x00800080, 0x00000000, // ICON_TARGET - 0x00800000, 0x00800080, 0x00800080, 0x3ffe01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL_FILL - 0x00800000, 0x00800080, 0x03e00080, 0x3ffe03e0, 0x03e003e0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x638c2008, 0x638cfbbe, 0x01002008, 0x07c00100, 0x01000380, // ICON_TARGET_MOVE_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x610c2108, 0x610cfffe, 0x01002108, 0x07c00100, 0x01000380, // ICON_CURSOR_MOVE_FILL - 0x781e0000, 0x6006700e, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x700e6006, 0x0000781e, // ICON_CURSOR_SCALE_FILL - 0x00000000, 0x38003c00, 0x24003000, 0x01000200, 0x00400080, 0x000c0024, 0x003c001c, 0x00000000, // ICON_CURSOR_SCALE_RIGHT_FILL - 0x00000000, 0x001c003c, 0x0024000c, 0x00800040, 0x02000100, 0x30002400, 0x3c003800, 0x00000000, // ICON_CURSOR_SCALE_LEFT_FILL - 0x00000000, 0x00300020, 0x10301ff8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO_FILL - 0x00000000, 0x0c000400, 0x0c081ff8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3ff02060, 0x00400060, 0x00000000, // ICON_REREDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3ff82030, 0x00200030, 0x00000000, // ICON_MUTATE_FILL - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18301020, 0x00300ff8, 0x00000020, // ICON_ROTATE_FILL - 0x00000000, 0x06000200, 0x26042ffc, 0x20042204, 0x20442004, 0x3ff42064, 0x00400060, 0x00000000, // ICON_REPEAT_FILL - 0x00000000, 0x30001000, 0x32107c0e, 0x00801120, 0x11200040, 0x7c0e3210, 0x10003000, 0x00000000, // ICON_SHUFFLE_FILL - 0x00000000, 0x30043ffc, 0x24042804, 0x21042204, 0x20442084, 0x20142024, 0x3ffc200c, 0x00000000, // ICON_EMPTYBOX_SMALL - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX - 0x00000000, 0x23c43ffc, 0x23c423c4, 0x200423c4, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP - 0x00000000, 0x3e043ffc, 0x3e043e04, 0x20043e04, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x3e043e04, 0x3e043e04, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x3e042004, 0x3e043e04, 0x3ffc3e04, 0x00000000, // ICON_BOX_BOTTOM_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x23c42004, 0x23c423c4, 0x3ffc23c4, 0x00000000, // ICON_BOX_BOTTOM - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x207c2004, 0x207c207c, 0x3ffc207c, 0x00000000, // ICON_BOX_BOTTOM_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x207c207c, 0x207c207c, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_LEFT - 0x00000000, 0x207c3ffc, 0x207c207c, 0x2004207c, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x23c423c4, 0x23c423c4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_CENTER - 0x7ffe0000, 0x40024002, 0x47e24182, 0x4ff247e2, 0x47e24ff2, 0x418247e2, 0x40024002, 0x00007ffe, // ICON_BOX_CIRCLE_MASK - 0x7fff0000, 0x40014001, 0x40014001, 0x49555ddd, 0x4945495d, 0x400149c5, 0x40014001, 0x00007fff, // ICON_POT - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x404e40ce, 0x48125432, 0x4006540e, 0x00007ffe, // ICON_ALPHA_MULTIPLY - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x5c4e40ce, 0x44124432, 0x40065c0e, 0x00007ffe, // ICON_ALPHA_CLEAR - 0x7ffe0000, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x00007ffe, // ICON_DITHERING - 0x07fe0000, 0x1ffa0002, 0x7fea000a, 0x402a402a, 0x5b2a512a, 0x5128552a, 0x40205128, 0x00007fe0, // ICON_MIPMAPS - 0x00000000, 0x1ff80000, 0x12481248, 0x12481ff8, 0x1ff81248, 0x12481248, 0x00001ff8, 0x00000000, // ICON_BOX_GRID - 0x12480000, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x00001248, // ICON_GRID - 0x00000000, 0x1c380000, 0x1c3817e8, 0x08100810, 0x08100810, 0x17e81c38, 0x00001c38, 0x00000000, // ICON_BOX_CORNERS_SMALL - 0x700e0000, 0x700e5ffa, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x5ffa700e, 0x0000700e, // ICON_BOX_CORNERS_BIG - 0x3f7e0000, 0x21422142, 0x21422142, 0x00003f7e, 0x21423f7e, 0x21422142, 0x3f7e2142, 0x00000000, // ICON_FOUR_BOXES - 0x00000000, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x00000000, // ICON_GRID_FILL - 0x7ffe0000, 0x7ffe7ffe, 0x77fe7000, 0x77fe77fe, 0x777e7700, 0x777e777e, 0x777e777e, 0x0000777e, // ICON_BOX_MULTISIZE - 0x781e0000, 0x40024002, 0x00004002, 0x01800000, 0x00000180, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_SMALL - 0x781e0000, 0x40024002, 0x00004002, 0x03c003c0, 0x03c003c0, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_MEDIUM - 0x781e0000, 0x40024002, 0x07e04002, 0x07e007e0, 0x07e007e0, 0x400207e0, 0x40024002, 0x0000781e, // ICON_ZOOM_BIG - 0x781e0000, 0x5ffa4002, 0x1ff85ffa, 0x1ff81ff8, 0x1ff81ff8, 0x5ffa1ff8, 0x40025ffa, 0x0000781e, // ICON_ZOOM_ALL - 0x00000000, 0x2004381c, 0x00002004, 0x00000000, 0x00000000, 0x20040000, 0x381c2004, 0x00000000, // ICON_ZOOM_CENTER - 0x00000000, 0x1db80000, 0x10081008, 0x10080000, 0x00001008, 0x10081008, 0x00001db8, 0x00000000, // ICON_BOX_DOTS_SMALL - 0x35560000, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x35562002, 0x00000000, // ICON_BOX_DOTS_BIG - 0x7ffe0000, 0x40024002, 0x48124ff2, 0x49924812, 0x48124992, 0x4ff24812, 0x40024002, 0x00007ffe, // ICON_BOX_CONCENTRIC - 0x00000000, 0x10841ffc, 0x10841084, 0x1ffc1084, 0x10841084, 0x10841084, 0x00001ffc, 0x00000000, // ICON_BOX_GRID_BIG - 0x00000000, 0x00000000, 0x10000000, 0x04000800, 0x01040200, 0x00500088, 0x00000020, 0x00000000, // ICON_OK_TICK - 0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // ICON_CROSS - 0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // ICON_ARROW_LEFT - 0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // ICON_ARROW_RIGHT - 0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // ICON_ARROW_DOWN - 0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP - 0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // ICON_ARROW_LEFT_FILL - 0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // ICON_ARROW_RIGHT_FILL - 0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // ICON_ARROW_DOWN_FILL - 0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP_FILL - 0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // ICON_AUDIO - 0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // ICON_FX - 0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // ICON_WAVE - 0x00000000, 0x00600000, 0x01080090, 0x02040108, 0x42044204, 0x24022402, 0x00001800, 0x00000000, // ICON_WAVE_SINUS - 0x00000000, 0x07f80000, 0x04080408, 0x04080408, 0x04080408, 0x7c0e0408, 0x00000000, 0x00000000, // ICON_WAVE_SQUARE - 0x00000000, 0x00000000, 0x00a00040, 0x22084110, 0x08021404, 0x00000000, 0x00000000, 0x00000000, // ICON_WAVE_TRIANGULAR - 0x00000000, 0x00000000, 0x04200000, 0x01800240, 0x02400180, 0x00000420, 0x00000000, 0x00000000, // ICON_CROSS_SMALL - 0x00000000, 0x18380000, 0x12281428, 0x10a81128, 0x112810a8, 0x14281228, 0x00001838, 0x00000000, // ICON_PLAYER_PREVIOUS - 0x00000000, 0x18000000, 0x11801600, 0x10181060, 0x10601018, 0x16001180, 0x00001800, 0x00000000, // ICON_PLAYER_PLAY_BACK - 0x00000000, 0x00180000, 0x01880068, 0x18080608, 0x06081808, 0x00680188, 0x00000018, 0x00000000, // ICON_PLAYER_PLAY - 0x00000000, 0x1e780000, 0x12481248, 0x12481248, 0x12481248, 0x12481248, 0x00001e78, 0x00000000, // ICON_PLAYER_PAUSE - 0x00000000, 0x1ff80000, 0x10081008, 0x10081008, 0x10081008, 0x10081008, 0x00001ff8, 0x00000000, // ICON_PLAYER_STOP - 0x00000000, 0x1c180000, 0x14481428, 0x15081488, 0x14881508, 0x14281448, 0x00001c18, 0x00000000, // ICON_PLAYER_NEXT - 0x00000000, 0x03c00000, 0x08100420, 0x10081008, 0x10081008, 0x04200810, 0x000003c0, 0x00000000, // ICON_PLAYER_RECORD - 0x00000000, 0x0c3007e0, 0x13c81818, 0x14281668, 0x14281428, 0x1c381c38, 0x08102244, 0x00000000, // ICON_MAGNET - 0x07c00000, 0x08200820, 0x3ff80820, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_CLOSE - 0x07c00000, 0x08000800, 0x3ff80800, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_OPEN - 0x01c00000, 0x0c180770, 0x3086188c, 0x60832082, 0x60034781, 0x30062002, 0x0c18180c, 0x01c00770, // ICON_CLOCK - 0x0a200000, 0x1b201b20, 0x04200e20, 0x04200420, 0x04700420, 0x0e700e70, 0x0e700e70, 0x04200e70, // ICON_TOOLS - 0x01800000, 0x3bdc318c, 0x0ff01ff8, 0x7c3e1e78, 0x1e787c3e, 0x1ff80ff0, 0x318c3bdc, 0x00000180, // ICON_GEAR - 0x01800000, 0x3ffc318c, 0x1c381ff8, 0x781e1818, 0x1818781e, 0x1ff81c38, 0x318c3ffc, 0x00000180, // ICON_GEAR_BIG - 0x00000000, 0x08080ff8, 0x08081ffc, 0x0aa80aa8, 0x0aa80aa8, 0x0aa80aa8, 0x08080aa8, 0x00000ff8, // ICON_BIN - 0x00000000, 0x00000000, 0x20043ffc, 0x08043f84, 0x04040f84, 0x04040784, 0x000007fc, 0x00000000, // ICON_HAND_POINTER - 0x00000000, 0x24400400, 0x00001480, 0x6efe0e00, 0x00000e00, 0x24401480, 0x00000400, 0x00000000, // ICON_LASER - 0x00000000, 0x03c00000, 0x08300460, 0x11181118, 0x11181118, 0x04600830, 0x000003c0, 0x00000000, // ICON_COIN - 0x00000000, 0x10880080, 0x06c00810, 0x366c07e0, 0x07e00240, 0x00001768, 0x04200240, 0x00000000, // ICON_EXPLOSION - 0x00000000, 0x3d280000, 0x2528252c, 0x3d282528, 0x05280528, 0x05e80528, 0x00000000, 0x00000000, // ICON_1UP - 0x01800000, 0x03c003c0, 0x018003c0, 0x0ff007e0, 0x0bd00bd0, 0x0a500bd0, 0x02400240, 0x02400240, // ICON_PLAYER - 0x01800000, 0x03c003c0, 0x118013c0, 0x03c81ff8, 0x07c003c8, 0x04400440, 0x0c080478, 0x00000000, // ICON_PLAYER_JUMP - 0x3ff80000, 0x30183ff8, 0x30183018, 0x3ff83ff8, 0x03000300, 0x03c003c0, 0x03e00300, 0x000003e0, // ICON_KEY - 0x3ff80000, 0x3ff83ff8, 0x33983ff8, 0x3ff83398, 0x3ff83ff8, 0x00000540, 0x0fe00aa0, 0x00000fe0, // ICON_DEMON - 0x00000000, 0x0ff00000, 0x20041008, 0x25442004, 0x10082004, 0x06000bf0, 0x00000300, 0x00000000, // ICON_TEXT_POPUP - 0x00000000, 0x11440000, 0x07f00be8, 0x1c1c0e38, 0x1c1c0c18, 0x07f00e38, 0x11440be8, 0x00000000, // ICON_GEAR_EX - 0x00000000, 0x20080000, 0x0c601010, 0x07c00fe0, 0x07c007c0, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK - 0x00000000, 0x20080000, 0x0c601010, 0x04400fe0, 0x04405554, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK_POINTS - 0x00000000, 0x00800080, 0x01c001c0, 0x1ffc3ffe, 0x03e007f0, 0x07f003e0, 0x0c180770, 0x00000808, // ICON_STAR - 0x0ff00000, 0x08180810, 0x08100818, 0x0a100810, 0x08180810, 0x08100818, 0x08100810, 0x00001ff8, // ICON_DOOR - 0x0ff00000, 0x08100810, 0x08100810, 0x10100010, 0x4f902010, 0x10102010, 0x08100010, 0x00000ff0, // ICON_EXIT - 0x00040000, 0x001f000e, 0x0ef40004, 0x12f41284, 0x0ef41214, 0x10040004, 0x7ffc3004, 0x10003000, // ICON_MODE_2D - 0x78040000, 0x501f600e, 0x0ef44004, 0x12f41284, 0x0ef41284, 0x10140004, 0x7ffc300c, 0x10003000, // ICON_MODE_3D - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE - 0x7fe00000, 0x5ff87ff0, 0x47fe4ffc, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_TOP - 0x7fe00000, 0x50386030, 0x47fe483c, 0x443e443e, 0x443e443e, 0x241e75fe, 0x0c06140e, 0x000007fe, // ICON_CUBE_FACE_LEFT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x47fe47fe, 0x47fe47fe, 0x27fe77fe, 0x0ffe17fe, 0x000007fe, // ICON_CUBE_FACE_FRONT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x3ff27fe2, 0x0ffe1ffa, 0x000007fe, // ICON_CUBE_FACE_BOTTOM - 0x7fe00000, 0x70286030, 0x7ffe7804, 0x7c227c02, 0x7c227c22, 0x3c127de2, 0x0c061c0a, 0x000007fe, // ICON_CUBE_FACE_RIGHT - 0x7fe00000, 0x7fe87ff0, 0x7ffe7fe4, 0x7fe27fe2, 0x7fe27fe2, 0x24127fe2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_BACK - 0x00000000, 0x2a0233fe, 0x22022602, 0x22022202, 0x2a022602, 0x00a033fe, 0x02080110, 0x00000000, // ICON_CAMERA - 0x00000000, 0x200c3ffc, 0x000c000c, 0x3ffc000c, 0x30003000, 0x30003000, 0x3ffc3004, 0x00000000, // ICON_SPECIAL - 0x00000000, 0x0022003e, 0x012201e2, 0x0100013e, 0x01000100, 0x79000100, 0x4f004900, 0x00007800, // ICON_LINK_NET - 0x00000000, 0x44007c00, 0x45004600, 0x00627cbe, 0x00620022, 0x45007cbe, 0x44004600, 0x00007c00, // ICON_LINK_BOXES - 0x00000000, 0x0044007c, 0x0010007c, 0x3f100010, 0x3f1021f0, 0x3f100010, 0x3f0021f0, 0x00000000, // ICON_LINK_MULTI - 0x00000000, 0x0044007c, 0x00440044, 0x0010007c, 0x00100010, 0x44107c10, 0x440047f0, 0x00007c00, // ICON_LINK - 0x00000000, 0x0044007c, 0x00440044, 0x0000007c, 0x00000010, 0x44007c10, 0x44004550, 0x00007c00, // ICON_LINK_BROKE - 0x02a00000, 0x22a43ffc, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_TEXT_NOTES - 0x3ffc0000, 0x20042004, 0x245e27c4, 0x27c42444, 0x2004201e, 0x201e2004, 0x20042004, 0x00003ffc, // ICON_NOTEBOOK - 0x00000000, 0x07e00000, 0x04200420, 0x24243ffc, 0x24242424, 0x24242424, 0x3ffc2424, 0x00000000, // ICON_SUITCASE - 0x00000000, 0x0fe00000, 0x08200820, 0x40047ffc, 0x7ffc5554, 0x40045554, 0x7ffc4004, 0x00000000, // ICON_SUITCASE_ZIP - 0x00000000, 0x20043ffc, 0x3ffc2004, 0x13c81008, 0x100813c8, 0x10081008, 0x1ff81008, 0x00000000, // ICON_MAILBOX - 0x00000000, 0x40027ffe, 0x5ffa5ffa, 0x5ffa5ffa, 0x40025ffa, 0x03c07ffe, 0x1ff81ff8, 0x00000000, // ICON_MONITOR - 0x0ff00000, 0x6bfe7ffe, 0x7ffe7ffe, 0x68167ffe, 0x08106816, 0x08100810, 0x0ff00810, 0x00000000, // ICON_PRINTER - 0x3ff80000, 0xfffe2008, 0x870a8002, 0x904a888a, 0x904a904a, 0x870a888a, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA - 0x0fc00000, 0xfcfe0cd8, 0x8002fffe, 0x84428382, 0x84428442, 0x80028382, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA_FLASH - 0x00000000, 0x02400180, 0x08100420, 0x20041008, 0x23c42004, 0x22442244, 0x3ffc2244, 0x00000000, // ICON_HOUSE - 0x00000000, 0x1c700000, 0x3ff83ef8, 0x3ff83ff8, 0x0fe01ff0, 0x038007c0, 0x00000100, 0x00000000, // ICON_HEART - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0xe000c000, // ICON_CORNER - 0x00000000, 0x14001c00, 0x15c01400, 0x15401540, 0x155c1540, 0x15541554, 0x1ddc1554, 0x00000000, // ICON_VERTICAL_BARS - 0x00000000, 0x03000300, 0x1b001b00, 0x1b601b60, 0x1b6c1b60, 0x1b6c1b6c, 0x1b6c1b6c, 0x00000000, // ICON_VERTICAL_BARS_FILL - 0x00000000, 0x00000000, 0x403e7ffe, 0x7ffe403e, 0x7ffe0000, 0x43fe43fe, 0x00007ffe, 0x00000000, // ICON_LIFE_BARS - 0x7ffc0000, 0x43844004, 0x43844284, 0x43844004, 0x42844284, 0x42844284, 0x40044384, 0x00007ffc, // ICON_INFO - 0x40008000, 0x10002000, 0x04000800, 0x01000200, 0x00400080, 0x00100020, 0x00040008, 0x00010002, // ICON_CROSSLINE - 0x00000000, 0x1ff01ff0, 0x18301830, 0x1f001830, 0x03001f00, 0x00000300, 0x03000300, 0x00000000, // ICON_HELP - 0x3ff00000, 0x2abc3550, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x00003ffc, // ICON_FILETYPE_ALPHA - 0x3ff00000, 0x201c2010, 0x22442184, 0x28142424, 0x29942814, 0x2ff42994, 0x20042004, 0x00003ffc, // ICON_FILETYPE_HOME - 0x07fe0000, 0x04020402, 0x7fe20402, 0x44224422, 0x44224422, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS_VISIBLE - 0x07fe0000, 0x04020402, 0x7c020402, 0x44024402, 0x44024402, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS - 0x00000000, 0x40027ffe, 0x7ffe4002, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_WINDOW - 0x09100000, 0x09f00910, 0x09100910, 0x00000910, 0x24a2779e, 0x27a224a2, 0x709e20a2, 0x00000000, // ICON_HIDPI - 0x3ff00000, 0x201c2010, 0x2a842e84, 0x2e842a84, 0x2ba42004, 0x2aa42aa4, 0x20042ba4, 0x00003ffc, // ICON_FILETYPE_BINARY - 0x00000000, 0x00000000, 0x00120012, 0x4a5e4bd2, 0x485233d2, 0x00004bd2, 0x00000000, 0x00000000, // ICON_HEX - 0x01800000, 0x381c0660, 0x23c42004, 0x23c42044, 0x13c82204, 0x08101008, 0x02400420, 0x00000180, // ICON_SHIELD - 0x007e0000, 0x20023fc2, 0x40227fe2, 0x400a403a, 0x400a400a, 0x400a400a, 0x4008400e, 0x00007ff8, // ICON_FILE_NEW - 0x00000000, 0x0042007e, 0x40027fc2, 0x44024002, 0x5f024402, 0x44024402, 0x7ffe4002, 0x00000000, // ICON_FOLDER_ADD - 0x44220000, 0x12482244, 0xf3cf0000, 0x14280420, 0x48122424, 0x08100810, 0x1ff81008, 0x03c00420, // ICON_ALARM - 0x0aa00000, 0x1ff80aa0, 0x1068700e, 0x1008706e, 0x1008700e, 0x1008700e, 0x0aa01ff8, 0x00000aa0, // ICON_CPU - 0x07e00000, 0x04201db8, 0x04a01c38, 0x04a01d38, 0x04a01d38, 0x04a01d38, 0x04201d38, 0x000007e0, // ICON_ROM - 0x00000000, 0x03c00000, 0x3c382ff0, 0x3c04380c, 0x01800000, 0x03c003c0, 0x00000180, 0x00000000, // ICON_STEP_OVER - 0x01800000, 0x01800180, 0x01800180, 0x03c007e0, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_INTO - 0x01800000, 0x07e003c0, 0x01800180, 0x01800180, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_OUT - 0x00000000, 0x0ff003c0, 0x181c1c34, 0x303c301c, 0x30003000, 0x1c301800, 0x03c00ff0, 0x00000000, // ICON_RESTART - 0x00000000, 0x00000000, 0x07e003c0, 0x0ff00ff0, 0x0ff00ff0, 0x03c007e0, 0x00000000, 0x00000000, // ICON_BREAKPOINT_ON - 0x00000000, 0x00000000, 0x042003c0, 0x08100810, 0x08100810, 0x03c00420, 0x00000000, 0x00000000, // ICON_BREAKPOINT_OFF - 0x00000000, 0x00000000, 0x1ff81ff8, 0x1ff80000, 0x00001ff8, 0x1ff81ff8, 0x00000000, 0x00000000, // ICON_BURGER_MENU - 0x00000000, 0x00000000, 0x00880070, 0x0c880088, 0x1e8810f8, 0x3e881288, 0x00000000, 0x00000000, // ICON_CASE_SENSITIVE - 0x00000000, 0x02000000, 0x07000a80, 0x07001fc0, 0x02000a80, 0x00300030, 0x00000000, 0x00000000, // ICON_REG_EXP - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_217 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_218 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_219 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_220 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_221 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_222 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_223 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_224 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_225 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_226 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_227 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_228 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_229 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_230 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_231 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_232 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_233 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_234 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_235 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_236 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_237 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_238 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_239 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_240 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_241 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_242 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_243 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_244 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_245 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_246 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_247 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_248 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_249 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_250 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_251 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_252 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_253 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_254 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_255 -}; diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/icons/raygui_icons.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/icons/raygui_icons.png deleted file mode 100644 index bb555f7..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/icons/raygui_icons.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/icons/raygui_icons.rgi b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/icons/raygui_icons.rgi deleted file mode 100644 index 949dbea..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/icons/raygui_icons.rgi and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/raygui_controls_panel.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/raygui_controls_panel.png deleted file mode 100644 index 50dbc9c..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/raygui_controls_panel.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/raygui_ricons.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/raygui_ricons.png deleted file mode 100644 index d269476..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/raygui_ricons.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/raygui_style_table_multi.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/raygui_style_table_multi.png deleted file mode 100644 index ab41b5d..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/raygui_style_table_multi.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguiicons_v100.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguiicons_v100.png deleted file mode 100644 index 4d29b1e..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguiicons_v100.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguilayout_v220.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguilayout_v220.png deleted file mode 100644 index 2318fd0..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguilayout_v220.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguistyler_v210.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguistyler_v210.png deleted file mode 100644 index abf4838..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguistyler_v210.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguistyler_v300.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguistyler_v300.png deleted file mode 100644 index 82bbcb0..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/images/rguistyler_v300.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui.ico b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui.ico deleted file mode 100644 index cc8498b..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui.ico and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_128x128.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_128x128.png deleted file mode 100644 index d22ea7d..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_128x128.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_16x16.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_16x16.png deleted file mode 100644 index 0e9c485..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_16x16.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_24x24.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_24x24.png deleted file mode 100644 index 4cea8e0..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_24x24.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_256x256.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_256x256.png deleted file mode 100644 index 75a76a0..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_256x256.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_32x32.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_32x32.png deleted file mode 100644 index d56878a..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_32x32.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_48x48.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_48x48.png deleted file mode 100644 index 863e07f..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_48x48.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_512x512.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_512x512.png deleted file mode 100644 index bde5703..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_512x512.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_64x64.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_64x64.png deleted file mode 100644 index c72b09d..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_64x64.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_96x96.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_96x96.png deleted file mode 100644 index d0098c7..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/logo/raygui_96x96.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/CMake/CMakeLists.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/CMake/CMakeLists.txt deleted file mode 100644 index 046f6e3..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/CMake/CMakeLists.txt +++ /dev/null @@ -1,76 +0,0 @@ -cmake_minimum_required(VERSION 3.11) -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) - -project(raygui C) - -# Config options -option(BUILD_RAYGUI_EXAMPLES "Build the examples." OFF) - -# Force building examples if building in the root as standalone. -if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) - set(BUILD_RAYGUI_EXAMPLES TRUE) -endif() - -# Directory Variables -set(RAYGUI_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..) -set(RAYGUI_SRC ${RAYGUI_ROOT}/src) -set(RAYGUI_EXAMPLES ${RAYGUI_ROOT}/examples) - -# raygui -add_library(raygui INTERFACE) -file(GLOB sources ${RAYGUI_SRC}/*.h) -set(RAYGUI_HEADERS ${sources}) -install(FILES - ${RAYGUI_HEADERS} DESTINATION include -) -target_include_directories(raygui INTERFACE ${RAYGUI_SRC}) - -# Examples -if(${BUILD_RAYGUI_EXAMPLES}) - find_package(Raylib) - - # Get the sources together - set(example_dirs - animation_curve - controls_test_suite - custom_file_dialog - custom_sliders - image_exporter - image_importer_raw - portable_window - property_list - scroll_panel - style_selector - ) - - set(example_sources) - set(example_resources) - - foreach(example_dir ${example_dirs}) - # Get the .c files - file(GLOB sources ${RAYGUI_EXAMPLES}/${example_dir}/*.c) - list(APPEND example_sources ${sources}) - - # Any any resources - file(GLOB resources ${RAYGUI_EXAMPLES}/${example_dir}/resources/*) - list(APPEND example_resources ${resources}) - endforeach() - - # Do each example - foreach(example_source ${example_sources}) - # Create the basename for the example - get_filename_component(example_name ${example_source} NAME) - string(REPLACE ".c" "${OUTPUT_EXT}" example_name ${example_name}) - - # Setup the example - add_executable(${example_name} ${example_source}) - - target_link_libraries(${example_name} PUBLIC raylib raygui) - - string(REGEX MATCH ".*/.*/" resources_dir ${example_source}) - string(APPEND resources_dir "resources") - endforeach() - - # Copy all of the resource files to the destination - file(COPY ${example_resources} DESTINATION "resources/") -endif() diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/CMake/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/CMake/README.md deleted file mode 100644 index b384a8d..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/CMake/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# raygui CMake Definitions - -This provides CMake definition files for raygui. - -## Usage - -``` -cd projects/CMake -mkdir build -cd build -cmake .. -make -``` \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/CMake/cmake/FindRaylib.cmake b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/CMake/cmake/FindRaylib.cmake deleted file mode 100644 index c8c3a64..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/CMake/cmake/FindRaylib.cmake +++ /dev/null @@ -1,17 +0,0 @@ -find_package(raylib 4.5.0 QUIET CONFIG) -if (NOT raylib_FOUND) - include(FetchContent) - FetchContent_Declare( - raylib - GIT_REPOSITORY https://github.com/raysan5/raylib.git - GIT_TAG 4.5.0 - ) - FetchContent_GetProperties(raylib) - if (NOT raylib_POPULATED) # Have we downloaded raylib yet? - set(FETCHCONTENT_QUIET NO) - FetchContent_Populate(raylib) - set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) # don't build the supplied examples - set(BUILD_GAMES OFF CACHE BOOL "" FORCE) # or games - add_subdirectory(${raylib_SOURCE_DIR} ${raylib_BINARY_DIR}) - endif() -endif() diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/animation_curve.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/animation_curve.vcxproj deleted file mode 100644 index 8e90f64..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/animation_curve.vcxproj +++ /dev/null @@ -1,363 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {50A98C3D-C898-4830-A00B-3F78DC2E742B} - Win32Proj - style_selector - animation_curve - 10.0 - - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - /FS %(AdditionalOptions) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - {e89d61ac-55de-4482-afd4-df7242ebc859} - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/controls_test_suite.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/controls_test_suite.vcxproj deleted file mode 100644 index e9a5715..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/controls_test_suite.vcxproj +++ /dev/null @@ -1,360 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} - Win32Proj - controls_test_suite - controls_test_suite - 10.0 - - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - /FS %(AdditionalOptions) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - {e89d61ac-55de-4482-afd4-df7242ebc859} - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/custom_file_dialog.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/custom_file_dialog.vcxproj deleted file mode 100644 index fcf7fe8..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/custom_file_dialog.vcxproj +++ /dev/null @@ -1,363 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A} - Win32Proj - custom_file_dialog - custom_file_dialog - 10.0 - - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - /FS %(AdditionalOptions) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - {e89d61ac-55de-4482-afd4-df7242ebc859} - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/image_exporter.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/image_exporter.vcxproj deleted file mode 100644 index a1bc4db..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/image_exporter.vcxproj +++ /dev/null @@ -1,360 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {67B2B88C-EA52-403F-A596-5107008C71F2} - Win32Proj - image_exporter - image_exporter - 10.0 - - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - /FS %(AdditionalOptions) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - {e89d61ac-55de-4482-afd4-df7242ebc859} - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/image_importer_raw.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/image_importer_raw.vcxproj deleted file mode 100644 index 69f2a90..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/image_importer_raw.vcxproj +++ /dev/null @@ -1,360 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {6628D753-270D-418D-A87F-6E2E63B9E3D0} - Win32Proj - image_importer_raw - image_importer_raw - 10.0 - - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - /FS %(AdditionalOptions) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - {e89d61ac-55de-4482-afd4-df7242ebc859} - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/portable_window.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/portable_window.vcxproj deleted file mode 100644 index 508ac84..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/portable_window.vcxproj +++ /dev/null @@ -1,360 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8} - Win32Proj - portable_window - portable_window - 10.0 - - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - /FS %(AdditionalOptions) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - {e89d61ac-55de-4482-afd4-df7242ebc859} - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/property_list.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/property_list.vcxproj deleted file mode 100644 index 9bfa63f..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/property_list.vcxproj +++ /dev/null @@ -1,360 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {D28301C9-C293-4F41-9F58-F2609F33134E} - Win32Proj - property_list - property_list - 10.0 - - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - /FS %(AdditionalOptions) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - {e89d61ac-55de-4482-afd4-df7242ebc859} - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/scroll_panel.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/scroll_panel.vcxproj deleted file mode 100644 index 365d029..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/scroll_panel.vcxproj +++ /dev/null @@ -1,360 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87} - Win32Proj - scroll_panel - scroll_panel - 10.0 - - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - /FS %(AdditionalOptions) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - {e89d61ac-55de-4482-afd4-df7242ebc859} - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/style_selector.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/style_selector.vcxproj deleted file mode 100644 index 90da635..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/style_selector.vcxproj +++ /dev/null @@ -1,360 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430} - Win32Proj - style_selector - style_selector - 10.0 - - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - true - $(DefaultPlatformToolset) - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - Application - false - $(DefaultPlatformToolset) - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - true - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - /FS %(AdditionalOptions) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - CompileAsC - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - - - Console - true - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - Copy Debug DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - MultiThreaded - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) - $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) - CompileAsC - true - - - Console - true - true - true - raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ - - - xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" - - - Copy Release DLL to output directory - - - - - {e89d61ac-55de-4482-afd4-df7242ebc859} - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/test.props b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/test.props deleted file mode 100644 index 664c501..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/examples/test.props +++ /dev/null @@ -1,27 +0,0 @@ -# -# Property types: -# b // Bool -# i // Int -# f // Float -# t // Text -# l // Select -# g // Section (Group) -# v2 // Vector 2D -# v3 // Vector 3D -# v4 // Vector 4D -# r // Rectangle -# c // Color -# - -b Bool 0 1 -g #102#SECTION 0 2 -i Int 0 123 0 0 1 -f Float 0 0.990000 0.000000 0.000000 1.000000 3 -t Text 0 Hello! 30 -l Select 0 ONE;TWO;THREE;FOUR 0 -i Int Range 0 32 0 100 1 -r Rect 0 0 0 100 200 -v2 Vec2 0 20.000000 20.000000 -v3 Vec3 0 12.000000 13.000000 14.000000 -v4 Vec4 0 14.000000 13.000000 14.000000 15.000000 -c Color 0 0 255 0 255 diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/raygui.sln b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/raygui.sln deleted file mode 100644 index e6c7b56..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/raygui.sln +++ /dev/null @@ -1,218 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31912.275 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "controls_test_suite", "examples\controls_test_suite.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raylib", "raylib\raylib.vcxproj", "{E89D61AC-55DE-4482-AFD4-DF7242EBC859}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_file_dialog", "examples\custom_file_dialog.vcxproj", "{E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "image_exporter", "examples\image_exporter.vcxproj", "{67B2B88C-EA52-403F-A596-5107008C71F2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "image_importer_raw", "examples\image_importer_raw.vcxproj", "{6628D753-270D-418D-A87F-6E2E63B9E3D0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portable_window", "examples\portable_window.vcxproj", "{FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "property_list", "examples\property_list.vcxproj", "{D28301C9-C293-4F41-9F58-F2609F33134E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scroll_panel", "examples\scroll_panel.vcxproj", "{56EE93DF-A3AF-4856-A4EC-E27358C6DA87}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{5DC256E9-D698-4D07-8AD7-DFDAE9125DE3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "style_selector", "examples\style_selector.vcxproj", "{BCF5E746-FDBF-4CAC-9B95-44FE9A498430}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "animation_curve", "examples\animation_curve.vcxproj", "{50A98C3D-C898-4830-A00B-3F78DC2E742B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug.DLL|x64 = Debug.DLL|x64 - Debug.DLL|x86 = Debug.DLL|x86 - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release.DLL|x64 = Release.DLL|x64 - Release.DLL|x86 = Release.DLL|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.ActiveCfg = Debug|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.Build.0 = Debug|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.ActiveCfg = Debug|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.Build.0 = Debug|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.ActiveCfg = Release|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.Build.0 = Release|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.ActiveCfg = Release|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.Build.0 = Release|Win32 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug|x64.ActiveCfg = Debug|x64 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug|x64.Build.0 = Debug|x64 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug|x86.ActiveCfg = Debug|Win32 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug|x86.Build.0 = Debug|Win32 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release|x64.ActiveCfg = Release|x64 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release|x64.Build.0 = Release|x64 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release|x86.ActiveCfg = Release|Win32 - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release|x86.Build.0 = Release|Win32 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug|x64.ActiveCfg = Debug|x64 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug|x64.Build.0 = Debug|x64 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug|x86.ActiveCfg = Debug|Win32 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug|x86.Build.0 = Debug|Win32 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Release|x64.ActiveCfg = Release|x64 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Release|x64.Build.0 = Release|x64 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Release|x86.ActiveCfg = Release|Win32 - {67B2B88C-EA52-403F-A596-5107008C71F2}.Release|x86.Build.0 = Release|Win32 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug|x64.ActiveCfg = Debug|x64 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug|x64.Build.0 = Debug|x64 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug|x86.ActiveCfg = Debug|Win32 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug|x86.Build.0 = Debug|Win32 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release|x64.ActiveCfg = Release|x64 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release|x64.Build.0 = Release|x64 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release|x86.ActiveCfg = Release|Win32 - {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release|x86.Build.0 = Release|Win32 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug|x64.ActiveCfg = Debug|x64 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug|x64.Build.0 = Debug|x64 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug|x86.ActiveCfg = Debug|Win32 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug|x86.Build.0 = Debug|Win32 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release|x64.ActiveCfg = Release|x64 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release|x64.Build.0 = Release|x64 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release|x86.ActiveCfg = Release|Win32 - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release|x86.Build.0 = Release|Win32 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug|x64.ActiveCfg = Debug|x64 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug|x64.Build.0 = Debug|x64 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug|x86.ActiveCfg = Debug|Win32 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug|x86.Build.0 = Debug|Win32 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Release|x64.ActiveCfg = Release|x64 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Release|x64.Build.0 = Release|x64 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Release|x86.ActiveCfg = Release|Win32 - {D28301C9-C293-4F41-9F58-F2609F33134E}.Release|x86.Build.0 = Release|Win32 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug|x64.ActiveCfg = Debug|x64 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug|x64.Build.0 = Debug|x64 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug|x86.ActiveCfg = Debug|Win32 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug|x86.Build.0 = Debug|Win32 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release|x64.ActiveCfg = Release|x64 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release|x64.Build.0 = Release|x64 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release|x86.ActiveCfg = Release|Win32 - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release|x86.Build.0 = Release|Win32 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug|x64.ActiveCfg = Debug|x64 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug|x64.Build.0 = Debug|x64 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug|x86.ActiveCfg = Debug|Win32 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug|x86.Build.0 = Debug|Win32 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release|x64.ActiveCfg = Release|x64 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release|x64.Build.0 = Release|x64 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release|x86.ActiveCfg = Release|Win32 - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release|x86.Build.0 = Release|Win32 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Debug|x64.ActiveCfg = Debug|x64 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Debug|x64.Build.0 = Debug|x64 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Debug|x86.ActiveCfg = Debug|Win32 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Debug|x86.Build.0 = Debug|Win32 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Release|x64.ActiveCfg = Release|x64 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Release|x64.Build.0 = Release|x64 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Release|x86.ActiveCfg = Release|Win32 - {50A98C3D-C898-4830-A00B-3F78DC2E742B}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} - {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} - {67B2B88C-EA52-403F-A596-5107008C71F2} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} - {6628D753-270D-418D-A87F-6E2E63B9E3D0} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} - {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} - {D28301C9-C293-4F41-9F58-F2609F33134E} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} - {56EE93DF-A3AF-4856-A4EC-E27358C6DA87} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} - {BCF5E746-FDBF-4CAC-9B95-44FE9A498430} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} - {50A98C3D-C898-4830-A00B-3F78DC2E742B} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} - EndGlobalSection -EndGlobal diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/raylib/raylib.vcxproj b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/raylib/raylib.vcxproj deleted file mode 100644 index 3e44eaa..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/projects/VS2022/raylib/raylib.vcxproj +++ /dev/null @@ -1,340 +0,0 @@ - - - - - Debug.DLL - Win32 - - - Debug.DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release.DLL - Win32 - - - Release.DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - {E89D61AC-55DE-4482-AFD4-DF7242EBC859} - Win32Proj - raylib - 10.0 - - - - StaticLibrary - true - $(DefaultPlatformToolset) - Unicode - - - StaticLibrary - true - $(DefaultPlatformToolset) - Unicode - - - DynamicLibrary - true - $(DefaultPlatformToolset) - Unicode - - - DynamicLibrary - true - $(DefaultPlatformToolset) - Unicode - - - StaticLibrary - false - $(DefaultPlatformToolset) - Unicode - - - StaticLibrary - false - $(DefaultPlatformToolset) - Unicode - - - DynamicLibrary - false - $(DefaultPlatformToolset) - Unicode - - - DynamicLibrary - false - $(DefaultPlatformToolset) - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - - - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - - - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - - - $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ - $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP - CompileAsC - $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include - - - Windows - - - %(AdditionalLibraryDirectories) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP - CompileAsC - $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include - - - Windows - - - %(AdditionalLibraryDirectories) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED - CompileAsC - $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include - MultiThreadedDebug - - - Windows - kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - %(AdditionalLibraryDirectories) - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED - CompileAsC - $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include - MultiThreadedDebug - - - Windows - kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - %(AdditionalLibraryDirectories) - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP - $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include - CompileAsC - MultiThreaded - - - Windows - true - true - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP - $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include - CompileAsC - - MultiThreaded - - - Windows - true - true - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED - $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include - CompileAsC - MultiThreaded - - - Windows - true - true - kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED - $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include - CompileAsC - MultiThreaded - - - - Windows - true - true - kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/src/raygui.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/src/raygui.h deleted file mode 100644 index 72f7108..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/src/raygui.h +++ /dev/null @@ -1,6052 +0,0 @@ -/******************************************************************************************* -* -* raygui v5.0 - A simple and easy-to-use immediate-mode gui library -* -* DESCRIPTION: -* raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also -* available as a standalone library, as long as input and drawing functions are provided -* -* FEATURES: -* - Immediate-mode gui, minimal retained data -* - +25 controls provided (basic and advanced) -* - Styling system for colors, font and metrics -* - Icons supported, embedded as a 1-bit icons pack -* - Standalone mode option (custom input/graphics backend) -* - Multiple support tools provided for raygui development -* -* POSSIBLE IMPROVEMENTS: -* - Better standalone mode API for easy plug of custom backends -* - Externalize required inputs, allow user easier customization -* -* LIMITATIONS: -* - No editable multi-line word-wraped text box supported -* - No auto-layout mechanism, up to the user to define controls position and size -* - Standalone mode requires library modification and some user work to plug another backend -* -* NOTES: -* - WARNING: GuiLoadStyle() and GuiLoadStyle{Custom}() functions, allocate memory for -* font atlas recs and glyphs, freeing that memory is (usually) up to the user, -* no unload function is explicitly provided... but note that GuiLoadStyleDefault() unloads -* by default any previously loaded font (texture, recs, glyphs) -* - Global UI alpha (guiAlpha) is applied inside GuiDrawRectangle() and GuiDrawText() functions -* -* CONTROLS PROVIDED: -* # Container/separators Controls -* - WindowBox --> StatusBar, Panel -* - GroupBox --> Line -* - Line -* - Panel --> StatusBar -* - ScrollPanel --> StatusBar -* - TabBar --> Button -* -* # Basic Controls -* - Label -* - LabelButton --> Label -* - Button -* - Toggle -* - ToggleGroup --> Toggle -* - ToggleSlider -* - CheckBox -* - ComboBox -* - DropdownBox -* - TextBox -* - ValueBox --> TextBox -* - Spinner --> Button, ValueBox -* - Slider -* - SliderBar --> Slider -* - ProgressBar -* - StatusBar -* - DummyRec -* - Grid -* -* # Advance Controls -* - ListView -* - ColorPicker --> ColorPanel, ColorBarHue -* - MessageBox --> Window, Label, Button -* - TextInputBox --> Window, Label, TextBox, Button -* -* It also provides a set of functions for styling the controls based on its properties (size, color) -* -* -* RAYGUI STYLE (guiStyle): -* raygui uses a global data array for all gui style properties (allocated on data segment by default), -* when a new style is loaded, it is loaded over the global style... but a default gui style could always be -* recovered with GuiLoadStyleDefault() function, that overwrites the current style to the default one -* -* The global style array size is fixed and depends on the number of controls and properties: -* -* static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)]; -* -* guiStyle size is by default: 16*(16 + 8) = 384 int = 384*4 bytes = 1536 bytes = 1.5 KB -* -* Note that the first set of BASE properties (by default guiStyle[0..15]) belong to the generic style -* used for all controls, when any of those base values is set, it is automatically populated to all -* controls, so, specific control values overwriting generic style should be set after base values -* -* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), -* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) -* Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR -* -* Custom control properties can be defined using the EXTENDED properties for each independent control. -* -* TOOL: rGuiStyler is a visual tool to customize raygui style: github.com/raysan5/rguistyler -* -* -* RAYGUI ICONS (guiIcons): -* raygui could use a global array containing icons data (allocated on data segment by default), -* a custom icons set could be loaded over this array using GuiLoadIcons(), but loaded icons set -* must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS will be loaded -* -* Every icon is codified in binary form, using 1 bit per pixel, so, every 16x16 icon -* requires 8 integers (16*16/32) to be stored in memory. -* -* When the icon is draw, actually one quad per pixel is drawn if the bit for that pixel is set -* -* The global icons array size is fixed and depends on the number of icons and size: -* -* static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS]; -* -* guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB -* -* TOOL: rGuiIcons is a visual tool to customize/create raygui icons: github.com/raysan5/rguiicons -* -* RAYGUI LAYOUT: -* raygui currently does not provide an auto-layout mechanism like other libraries, -* layouts must be defined manually on controls drawing, providing the right bounds Rectangle for it -* -* TOOL: rGuiLayout is a visual tool to create raygui layouts: github.com/raysan5/rguilayout -* -* CONFIGURATION: -* #define RAYGUI_IMPLEMENTATION -* Generates the implementation of the library into the included file -* If not defined, the library is in header only mode and can be included in other headers -* or source files without problems. But only ONE file should hold the implementation -* -* #define RAYGUI_STANDALONE -* Avoid raylib.h header inclusion in this file. Data types defined on raylib are defined -* internally in the library and input management and drawing functions must be provided by -* the user (check library implementation for further details) -* -* #define RAYGUI_NO_ICONS -* Avoid including embedded ricons data (256 icons, 16x16 pixels, 1-bit per pixel, 2KB) -* -* #define RAYGUI_CUSTOM_ICONS -* Includes custom ricons.h header defining a set of custom icons, -* this file can be generated using rGuiIcons tool -* -* #define RAYGUI_DEBUG_RECS_BOUNDS -* Draw control bounds rectangles for debug -* -* #define RAYGUI_DEBUG_TEXT_BOUNDS -* Draw text bounds rectangles for debug -* -* VERSIONS HISTORY: -* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) -* ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes -* ADDED: GuiValueBoxFloat() -* ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP -* ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH -* ADDED: GuiLoadIconsFromMemory() -* ADDED: Multiple new icons -* ADDED: Macros for inputs customization, raylib decoupling -* REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties -* REMOVED: GuiSliderPro(), functionality was redundant -* REVIEWED: Controls using text labels to use LABEL properties -* REVIEWED: Replaced sprintf() by snprintf() for more safety -* REVIEWED: GuiTabBar(), close tab with mouse middle button -* REVIEWED: GuiScrollPanel(), scroll speed proportional to content -* REVIEWED: GuiDropdownBox(), support roll up and hidden arrow -* REVIEWED: GuiTextBox(), cursor position initialization -* REVIEWED: GuiSliderPro(), control value change check -* REVIEWED: GuiGrid(), simplified implementation -* REVIEWED: GuiIconText(), increase buffer size and reviewed padding -* REVIEWED: GuiDrawText(), improved wrap mode drawing -* REVIEWED: GuiScrollBar(), minor tweaks -* REVIEWED: GuiProgressBar(), improved borders computing -* REVIEWED: GuiTextBox(), multiple improvements: autocursor and more -* REVIEWED: Functions descriptions, removed wrong return value reference -* REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion -* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing -* -* 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() -* ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() -* ADDED: Multiple new icons, mostly compiler related -* ADDED: New DEFAULT properties: TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE -* ADDED: New enum values: GuiTextAlignment, GuiTextAlignmentVertical, GuiTextWrapMode -* ADDED: Support loading styles with custom font charset from external file -* REDESIGNED: GuiTextBox(), support mouse cursor positioning -* REDESIGNED: GuiDrawText(), support multiline and word-wrap modes (read only) -* REDESIGNED: GuiProgressBar() to be more visual, progress affects border color -* REDESIGNED: Global alpha consideration moved to GuiDrawRectangle() and GuiDrawText() -* REDESIGNED: GuiScrollPanel(), get parameters by reference and return result value -* REDESIGNED: GuiToggleGroup(), get parameters by reference and return result value -* REDESIGNED: GuiComboBox(), get parameters by reference and return result value -* REDESIGNED: GuiCheckBox(), get parameters by reference and return result value -* REDESIGNED: GuiSlider(), get parameters by reference and return result value -* REDESIGNED: GuiSliderBar(), get parameters by reference and return result value -* REDESIGNED: GuiProgressBar(), get parameters by reference and return result value -* REDESIGNED: GuiListView(), get parameters by reference and return result value -* REDESIGNED: GuiColorPicker(), get parameters by reference and return result value -* REDESIGNED: GuiColorPanel(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarAlpha(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarHue(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), added extra parameter -* REDESIGNED: GuiListViewEx(), change parameters order -* REDESIGNED: All controls return result as int value -* REVIEWED: GuiScrollPanel() to avoid smallish scroll-bars -* REVIEWED: All examples and specially controls_test_suite -* RENAMED: gui_file_dialog module to gui_window_file_dialog -* UPDATED: All styles to include ISO-8859-15 charset (as much as possible) -* -* 3.6 (10-May-2023) ADDED: New icon: SAND_TIMER -* ADDED: GuiLoadStyleFromMemory() (binary only) -* REVIEWED: GuiScrollBar() horizontal movement key -* REVIEWED: GuiTextBox() crash on cursor movement -* REVIEWED: GuiTextBox(), additional inputs support -* REVIEWED: GuiLabelButton(), avoid text cut -* REVIEWED: GuiTextInputBox(), password input -* REVIEWED: Local GetCodepointNext(), aligned with raylib -* REDESIGNED: GuiSlider*()/GuiScrollBar() to support out-of-bounds -* -* 3.5 (20-Apr-2023) ADDED: GuiTabBar(), based on GuiToggle() -* ADDED: Helper functions to split text in separate lines -* ADDED: Multiple new icons, useful for code editing tools -* REMOVED: Unneeded icon editing functions -* REMOVED: GuiTextBoxMulti(), very limited and broken -* REMOVED: MeasureTextEx() dependency, logic directly implemented -* REMOVED: DrawTextEx() dependency, logic directly implemented -* REVIEWED: GuiScrollBar(), improve mouse-click behaviour -* REVIEWED: Library header info, more info, better organized -* REDESIGNED: GuiTextBox() to support cursor movement -* REDESIGNED: GuiDrawText() to divide drawing by lines -* -* 3.2 (22-May-2022) RENAMED: Some enum values, for unification, avoiding prefixes -* REMOVED: GuiScrollBar(), only internal -* REDESIGNED: GuiPanel() to support text parameter -* REDESIGNED: GuiScrollPanel() to support text parameter -* REDESIGNED: GuiColorPicker() to support text parameter -* REDESIGNED: GuiColorPanel() to support text parameter -* REDESIGNED: GuiColorBarAlpha() to support text parameter -* REDESIGNED: GuiColorBarHue() to support text parameter -* REDESIGNED: GuiTextInputBox() to support password -* -* 3.1 (12-Jan-2022) REVIEWED: Default style for consistency (aligned with rGuiLayout v2.5 tool) -* REVIEWED: GuiLoadStyle() to support compressed font atlas image data and unload previous textures -* REVIEWED: External icons usage logic -* REVIEWED: GuiLine() for centered alignment when including text -* RENAMED: Multiple controls properties definitions to prepend RAYGUI_ -* RENAMED: RICON_ references to RAYGUI_ICON_ for library consistency -* Projects updated and multiple tweaks -* -* 3.0 (04-Nov-2021) Integrated ricons data to avoid external file -* REDESIGNED: GuiTextBoxMulti() -* REMOVED: GuiImageButton*() -* Multiple minor tweaks and bugs corrected -* -* 2.9 (17-Mar-2021) REMOVED: Tooltip API -* 2.8 (03-May-2020) Centralized rectangles drawing to GuiDrawRectangle() -* 2.7 (20-Feb-2020) ADDED: Possible tooltips API -* 2.6 (09-Sep-2019) ADDED: GuiTextInputBox() -* REDESIGNED: GuiListView*(), GuiDropdownBox(), GuiSlider*(), GuiProgressBar(), GuiMessageBox() -* REVIEWED: GuiTextBox(), GuiSpinner(), GuiValueBox(), GuiLoadStyle() -* Replaced property INNER_PADDING by TEXT_PADDING, renamed some properties -* ADDED: 8 new custom styles ready to use -* Multiple minor tweaks and bugs corrected -* -* 2.5 (28-May-2019) Implemented extended GuiTextBox(), GuiValueBox(), GuiSpinner() -* 2.3 (29-Apr-2019) ADDED: rIcons auxiliar library and support for it, multiple controls reviewed -* Refactor all controls drawing mechanism to use control state -* 2.2 (05-Feb-2019) ADDED: GuiScrollBar(), GuiScrollPanel(), reviewed GuiListView(), removed Gui*Ex() controls -* 2.1 (26-Dec-2018) REDESIGNED: GuiCheckBox(), GuiComboBox(), GuiDropdownBox(), GuiToggleGroup() > Use combined text string -* REDESIGNED: Style system (breaking change) -* 2.0 (08-Nov-2018) ADDED: Support controls guiLock and custom fonts -* REVIEWED: GuiComboBox(), GuiListView()... -* 1.9 (09-Oct-2018) REVIEWED: GuiGrid(), GuiTextBox(), GuiTextBoxMulti(), GuiValueBox()... -* 1.8 (01-May-2018) Lot of rework and redesign to align with rGuiStyler and rGuiLayout -* 1.5 (21-Jun-2017) Working in an improved styles system -* 1.4 (15-Jun-2017) Rewritten all GUI functions (removed useless ones) -* 1.3 (12-Jun-2017) Complete redesign of style system -* 1.1 (01-Jun-2017) Complete review of the library -* 1.0 (07-Jun-2016) Converted to header-only by Ramon Santamaria -* 0.9 (07-Mar-2016) Reviewed and tested by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria -* 0.8 (27-Aug-2015) Initial release. Implemented by Kevin Gato, Daniel Nicolás and Ramon Santamaria -* -* DEPENDENCIES: -* raylib 5.6-dev - Inputs reading (keyboard/mouse), shapes drawing, font loading and text drawing -* -* STANDALONE MODE: -* By default raygui depends on raylib mostly for the inputs and the drawing functionality but that dependency can be disabled -* with the config flag RAYGUI_STANDALONE. In that case is up to the user to provide another backend to cover library needs -* -* The following functions should be redefined for a custom backend: -* -* - Vector2 GetMousePosition(void); -* - float GetMouseWheelMove(void); -* - bool IsMouseButtonDown(int button); -* - bool IsMouseButtonPressed(int button); -* - bool IsMouseButtonReleased(int button); -* - bool IsKeyDown(int key); -* - bool IsKeyPressed(int key); -* - int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() -* -* - void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() -* - void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() -* -* - Font GetFontDefault(void); // -- GuiLoadStyleDefault() -* - Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle() -* - Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image -* - void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) -* - char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data -* - void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data -* - const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs -* - int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list -* - void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list -* - unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() -* -* CONTRIBUTORS: -* Ramon Santamaria: Supervision, review, redesign, update and maintenance -* Vlad Adrian: Complete rewrite of GuiTextBox() to support extended features (2019) -* Sergio Martinez: Review, testing (2015) and redesign of multiple controls (2018) -* Adria Arranz: Testing and implementation of additional controls (2018) -* Jordi Jorba: Testing and implementation of additional controls (2018) -* Albert Martos: Review and testing of the library (2015) -* Ian Eito: Review and testing of the library (2015) -* Kevin Gato: Initial implementation of basic components (2014) -* Daniel Nicolas: Initial implementation of basic components (2014) -* -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) -* -* 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. -* -**********************************************************************************************/ - -#ifndef RAYGUI_H -#define RAYGUI_H - -#define RAYGUI_VERSION_MAJOR 4 -#define RAYGUI_VERSION_MINOR 5 -#define RAYGUI_VERSION_PATCH 0 -#define RAYGUI_VERSION "5.0-dev" - -#if !defined(RAYGUI_STANDALONE) - #include "raylib.h" -#endif - -// Function specifiers in case library is build/used as a shared library (Windows) -// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll -#if defined(_WIN32) - #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) - #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) - #endif - #if !defined(_CRT_SECURE_NO_WARNINGS) - #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC - #endif -#endif - -// Function specifiers definition -#ifndef RAYGUIAPI - #define RAYGUIAPI // Functions defined as 'extern' by default (implicit specifiers) -#endif - -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -// Simple log system to avoid printf() calls if required -// NOTE: Avoiding those calls, also avoids const strings memory usage -#define RAYGUI_SUPPORT_LOG_INFO -#if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) -#else - #define RAYGUI_LOG(...) -#endif - -// Macros to define required UI inputs, including mapping to gamepad controls -// TODO: Define additionally required macros for missing inputs -#if !defined(GUI_BUTTON_DOWN) - #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -#if !defined(GUI_BUTTON_DOWN_ALT) - // Mapping to alternative button down pressed - #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) -#endif -#if !defined(GUI_BUTTON_PRESSED) - #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) -#if !defined(GUI_BUTTON_RELEASED) - #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -#if !defined(GUI_SCROLL_DELTA) - // Mapping to scroll delta changes - // TODO: Review inconsistencies between platforms - #if defined(PLATFORM_WEB) - // NOTE: Gamepad axis triggers not detected on web platform - #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) - #else - #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) - #endif -#endif -#if !defined(GUI_POINTER_POSITION) - #define GUI_POINTER_POSITION GetMousePosition() -#endif -#if !defined(GUI_KEY_DOWN) - #define GUI_KEY_DOWN(key) IsKeyDown(key) -#endif -#if !defined(GUI_KEY_PRESSED) - #define GUI_KEY_PRESSED(key) IsKeyPressed(key) -#endif -#if !defined(GUI_INPUT_KEY) - #define GUI_INPUT_KEY GetCharPressed() -#endif - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -// NOTE: Some types are required for RAYGUI_STANDALONE usage -//---------------------------------------------------------------------------------- -#if defined(RAYGUI_STANDALONE) - #ifndef __cplusplus - // Boolean type - #ifndef true - typedef enum { false, true } bool; - #endif - #endif - - // Vector2 type - typedef struct Vector2 { - float x; - float y; - } Vector2; - - // Vector3 type // -- ConvertHSVtoRGB(), ConvertRGBtoHSV() - typedef struct Vector3 { - float x; - float y; - float z; - } Vector3; - - // Color type, RGBA (32bit) - typedef struct Color { - unsigned char r; - unsigned char g; - unsigned char b; - unsigned char a; - } Color; - - // Rectangle type - typedef struct Rectangle { - float x; - float y; - float width; - float height; - } Rectangle; - - // TODO: Texture2D type is very coupled to raylib, required by Font type - // It should be redesigned to be provided by user - typedef struct Texture { - unsigned int id; // OpenGL texture id - int width; // Texture base width - int height; // Texture base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) - } Texture; - - // Texture2D, same as Texture - typedef Texture Texture2D; - - // Image, pixel data stored in CPU memory (RAM) - typedef struct Image { - void *data; // Image raw data - int width; // Image base width - int height; // Image base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) - } Image; - - // GlyphInfo, font characters glyphs info - typedef struct GlyphInfo { - int value; // Character value (Unicode) - int offsetX; // Character offset X when drawing - int offsetY; // Character offset Y when drawing - int advanceX; // Character advance position X - Image image; // Character image data - } GlyphInfo; - - // TODO: Font type is very coupled to raylib, mostly required by GuiLoadStyle() - // It should be redesigned to be provided by user - typedef struct Font { - int baseSize; // Base size (default chars height) - int glyphCount; // Number of glyph characters - int glyphPadding; // Padding around the glyph characters - Texture2D texture; // Texture atlas containing the glyphs - Rectangle *recs; // Rectangles in texture for the glyphs - GlyphInfo *glyphs; // Glyphs info data - } Font; -#endif - -// Style property -// NOTE: Used when exporting style as code for convenience -typedef struct GuiStyleProp { - unsigned short controlId; // Control identifier - unsigned short propertyId; // Property identifier - int propertyValue; // Property value -} GuiStyleProp; - -/* -// Controls text style -NOT USED- -// NOTE: Text style is defined by control -typedef struct GuiTextStyle { - unsigned int size; - int charSpacing; - int lineSpacing; - int alignmentH; - int alignmentV; - int padding; -} GuiTextStyle; -*/ - -// Gui control state -typedef enum { - STATE_NORMAL = 0, - STATE_FOCUSED, - STATE_PRESSED, - STATE_DISABLED -} GuiState; - -// Gui control text alignment -typedef enum { - TEXT_ALIGN_LEFT = 0, - TEXT_ALIGN_CENTER, - TEXT_ALIGN_RIGHT -} GuiTextAlignment; - -// Gui control text alignment vertical -// NOTE: Text vertical position inside the text bounds -typedef enum { - TEXT_ALIGN_TOP = 0, - TEXT_ALIGN_MIDDLE, - TEXT_ALIGN_BOTTOM -} GuiTextAlignmentVertical; - -// Gui control text wrap mode -// NOTE: Useful for multiline text -typedef enum { - TEXT_WRAP_NONE = 0, - TEXT_WRAP_CHAR, - TEXT_WRAP_WORD -} GuiTextWrapMode; - -// Gui controls -typedef enum { - // Default -> populates to all controls when set - DEFAULT = 0, - - // Basic controls - LABEL, // Used also for: LABELBUTTON - BUTTON, - TOGGLE, // Used also for: TOGGLEGROUP - SLIDER, // Used also for: SLIDERBAR, TOGGLESLIDER - PROGRESSBAR, - CHECKBOX, - COMBOBOX, - DROPDOWNBOX, - TEXTBOX, // Used also for: TEXTBOXMULTI - VALUEBOX, - CONTROL11, - LISTVIEW, - COLORPICKER, - SCROLLBAR, - STATUSBAR -} GuiControl; - -// Gui base properties for every control -// NOTE: RAYGUI_MAX_PROPS_BASE properties (by default 16 properties) -typedef enum { - BORDER_COLOR_NORMAL = 0, // Control border color in STATE_NORMAL - BASE_COLOR_NORMAL, // Control base color in STATE_NORMAL - TEXT_COLOR_NORMAL, // Control text color in STATE_NORMAL - BORDER_COLOR_FOCUSED, // Control border color in STATE_FOCUSED - BASE_COLOR_FOCUSED, // Control base color in STATE_FOCUSED - TEXT_COLOR_FOCUSED, // Control text color in STATE_FOCUSED - BORDER_COLOR_PRESSED, // Control border color in STATE_PRESSED - BASE_COLOR_PRESSED, // Control base color in STATE_PRESSED - TEXT_COLOR_PRESSED, // Control text color in STATE_PRESSED - BORDER_COLOR_DISABLED, // Control border color in STATE_DISABLED - BASE_COLOR_DISABLED, // Control base color in STATE_DISABLED - TEXT_COLOR_DISABLED, // Control text color in STATE_DISABLED - BORDER_WIDTH = 12, // Control border size, 0 for no border - //TEXT_SIZE, // Control text size (glyphs max height) -> GLOBAL for all controls - //TEXT_SPACING, // Control text spacing between glyphs -> GLOBAL for all controls - //TEXT_LINE_SPACING, // Control text spacing between lines -> GLOBAL for all controls - TEXT_PADDING = 13, // Control text padding, not considering border - TEXT_ALIGNMENT = 14, // Control text horizontal alignment inside control text bound (after border and padding) - //TEXT_WRAP_MODE // Control text wrap-mode inside text bounds -> GLOBAL for all controls -} GuiControlProperty; - -// TODO: Which text styling properties should be global or per-control? -// At this moment TEXT_PADDING and TEXT_ALIGNMENT is configured and saved per control while -// TEXT_SIZE, TEXT_SPACING, TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE are global and -// should be configured by user as needed while defining the UI layout - -// Gui extended properties depend on control -// NOTE: RAYGUI_MAX_PROPS_EXTENDED properties (by default, max 8 properties) -//---------------------------------------------------------------------------------- -// DEFAULT extended properties -// NOTE: Those properties are common to all controls or global -// WARNING: Only 8 slots vailable for those properties by default -typedef enum { - TEXT_SIZE = 16, // Text size (glyphs max height) - TEXT_SPACING, // Text spacing between glyphs - LINE_COLOR, // Line control color - BACKGROUND_COLOR, // Background color - TEXT_LINE_SPACING, // Text spacing between lines - TEXT_ALIGNMENT_VERTICAL, // Text vertical alignment inside text bounds (after border and padding) - TEXT_WRAP_MODE // Text wrap-mode inside text bounds - //TEXT_DECORATION // Text decoration: 0-None, 1-Underline, 2-Line-through, 3-Overline - //TEXT_DECORATION_THICK // Text decoration line thickness -} GuiDefaultProperty; - -// Other possible text properties: -// TEXT_WEIGHT // Normal, Italic, Bold -> Requires specific font change -// TEXT_INDENT // Text indentation -> Now using TEXT_PADDING... - -// Label -//typedef enum { } GuiLabelProperty; - -// Button/Spinner -//typedef enum { } GuiButtonProperty; - -// Toggle/ToggleGroup -typedef enum { - GROUP_PADDING = 16, // ToggleGroup separation between toggles -} GuiToggleProperty; - -// Slider/SliderBar -typedef enum { - SLIDER_WIDTH = 16, // Slider size of internal bar - SLIDER_PADDING // Slider/SliderBar internal bar padding -} GuiSliderProperty; - -// ProgressBar -typedef enum { - PROGRESS_PADDING = 16, // ProgressBar internal padding - PROGRESS_SIDE, // ProgressBar increment side: 0-left->right, 1-right-left -} GuiProgressBarProperty; - -// ScrollBar -typedef enum { - ARROWS_SIZE = 16, // ScrollBar arrows size - ARROWS_VISIBLE, // ScrollBar arrows visible - SCROLL_SLIDER_PADDING, // ScrollBar slider internal padding - SCROLL_SLIDER_SIZE, // ScrollBar slider size - SCROLL_PADDING, // ScrollBar scroll padding from arrows - SCROLL_SPEED, // ScrollBar scrolling speed -} GuiScrollBarProperty; - -// CheckBox -typedef enum { - CHECK_PADDING = 16 // CheckBox internal check padding -} GuiCheckBoxProperty; - -// ComboBox -typedef enum { - COMBO_BUTTON_WIDTH = 16, // ComboBox right button width - COMBO_BUTTON_SPACING // ComboBox button separation -} GuiComboBoxProperty; - -// DropdownBox -typedef enum { - ARROW_PADDING = 16, // DropdownBox arrow separation from border and items - DROPDOWN_ITEMS_SPACING, // DropdownBox items separation - DROPDOWN_ARROW_HIDDEN, // DropdownBox arrow hidden - DROPDOWN_ROLL_UP // DropdownBox roll up flag (default rolls down) -} GuiDropdownBoxProperty; - -// TextBox/TextBoxMulti/ValueBox/Spinner -typedef enum { - TEXT_READONLY = 16, // TextBox in read-only mode: 0-text editable, 1-text no-editable -} GuiTextBoxProperty; - -// ValueBox/Spinner -typedef enum { - SPINNER_BUTTON_WIDTH = 16, // Spinner left/right buttons width - SPINNER_BUTTON_SPACING, // Spinner buttons separation -} GuiValueBoxProperty; - -// Control11 -//typedef enum { } GuiControl11Property; - -// ListView -typedef enum { - LIST_ITEMS_HEIGHT = 16, // ListView items height - LIST_ITEMS_SPACING, // ListView items separation - SCROLLBAR_WIDTH, // ListView scrollbar size (usually width) - SCROLLBAR_SIDE, // ListView scrollbar side (0-SCROLLBAR_LEFT_SIDE, 1-SCROLLBAR_RIGHT_SIDE) - LIST_ITEMS_BORDER_NORMAL, // ListView items border enabled in normal state - LIST_ITEMS_BORDER_WIDTH // ListView items border width -} GuiListViewProperty; - -// ColorPicker -typedef enum { - COLOR_SELECTOR_SIZE = 16, - HUEBAR_WIDTH, // ColorPicker right hue bar width - HUEBAR_PADDING, // ColorPicker right hue bar separation from panel - HUEBAR_SELECTOR_HEIGHT, // ColorPicker right hue bar selector height - HUEBAR_SELECTOR_OVERFLOW // ColorPicker right hue bar selector overflow -} GuiColorPickerProperty; - -#define SCROLLBAR_LEFT_SIDE 0 -#define SCROLLBAR_RIGHT_SIDE 1 - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -// ... - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- - -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif - -// Global gui state control functions -RAYGUIAPI void GuiEnable(void); // Enable gui controls (global state) -RAYGUIAPI void GuiDisable(void); // Disable gui controls (global state) -RAYGUIAPI void GuiLock(void); // Lock gui controls (global state) -RAYGUIAPI void GuiUnlock(void); // Unlock gui controls (global state) -RAYGUIAPI bool GuiIsLocked(void); // Check if gui is locked (global state) -RAYGUIAPI void GuiSetAlpha(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f -RAYGUIAPI void GuiSetState(int state); // Set gui state (global state) -RAYGUIAPI int GuiGetState(void); // Get gui state (global state) - -// Font set/get functions -RAYGUIAPI void GuiSetFont(Font font); // Set gui custom font (global state) -RAYGUIAPI Font GuiGetFont(void); // Get gui custom font (global state) - -// Style set/get functions -RAYGUIAPI void GuiSetStyle(int control, int property, int value); // Set one style property -RAYGUIAPI int GuiGetStyle(int control, int property); // Get one style property - -// Styles loading functions -RAYGUIAPI void GuiLoadStyle(const char *fileName); // Load style file over global style variable (.rgs) -RAYGUIAPI void GuiLoadStyleDefault(void); // Load style default over global style - -// Tooltips management functions -RAYGUIAPI void GuiEnableTooltip(void); // Enable gui tooltips (global state) -RAYGUIAPI void GuiDisableTooltip(void); // Disable gui tooltips (global state) -RAYGUIAPI void GuiSetTooltip(const char *tooltip); // Set tooltip string - -// Icons functionality -RAYGUIAPI const char *GuiIconText(int iconId, const char *text); // Get text with icon id prepended (if supported) -#if !defined(RAYGUI_NO_ICONS) -RAYGUIAPI void GuiSetIconScale(int scale); // Set default icon drawing size -RAYGUIAPI unsigned int *GuiGetIcons(void); // Get raygui icons data pointer -RAYGUIAPI char **GuiLoadIcons(const char *fileName, bool loadIconsName); // Load raygui icons file (.rgi) into internal icons data -RAYGUIAPI void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color); // Draw icon using pixel size at specified position -#endif - -// Utility functions -RAYGUIAPI int GuiGetTextWidth(const char *text); // Get text width considering gui style and icon size (if required) - -// Controls -//---------------------------------------------------------------------------------------------------------- -// Container/separator controls, useful for controls organization -RAYGUIAPI int GuiWindowBox(Rectangle bounds, const char *title); // Window Box control, shows a window that can be closed -RAYGUIAPI int GuiGroupBox(Rectangle bounds, const char *text); // Group Box control with text name -RAYGUIAPI int GuiLine(Rectangle bounds, const char *text); // Line separator control, could contain text -RAYGUIAPI int GuiPanel(Rectangle bounds, const char *text); // Panel control, useful to group controls -RAYGUIAPI int GuiTabBar(Rectangle bounds, char **text, int count, int *active); // Tab Bar control, returns TAB to be closed or -1 -RAYGUIAPI int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view); // Scroll Panel control - -// Basic controls set -RAYGUIAPI int GuiLabel(Rectangle bounds, const char *text); // Label control -RAYGUIAPI int GuiButton(Rectangle bounds, const char *text); // Button control, returns true when clicked -RAYGUIAPI int GuiLabelButton(Rectangle bounds, const char *text); // Label button control, returns true when clicked -RAYGUIAPI int GuiToggle(Rectangle bounds, const char *text, bool *active); // Toggle Button control -RAYGUIAPI int GuiToggleGroup(Rectangle bounds, const char *text, int *active); // Toggle Group control -RAYGUIAPI int GuiToggleSlider(Rectangle bounds, const char *text, int *active); // Toggle Slider control -RAYGUIAPI int GuiCheckBox(Rectangle bounds, const char *text, bool *checked); // Check Box control, returns true when active -RAYGUIAPI int GuiComboBox(Rectangle bounds, const char *text, int *active); // Combo Box control - -RAYGUIAPI int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode); // Dropdown Box control -RAYGUIAPI int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Spinner control -RAYGUIAPI int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Value Box control, updates input text with numbers -RAYGUIAPI int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode); // Value box control for float values -RAYGUIAPI int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode); // Text Box control, updates input text - -RAYGUIAPI int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider control -RAYGUIAPI int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider Bar control -RAYGUIAPI int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Progress Bar control -RAYGUIAPI int GuiStatusBar(Rectangle bounds, const char *text); // Status Bar control, shows info text -RAYGUIAPI int GuiDummyRec(Rectangle bounds, const char *text); // Dummy control for placeholders -RAYGUIAPI int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell); // Grid control - -// Advance controls set -RAYGUIAPI int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active); // List View control -RAYGUIAPI int GuiListViewEx(Rectangle bounds, char **text, int count, int *scrollIndex, int *active, int *focus); // List View with extended parameters -RAYGUIAPI int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons); // Message Box control, displays a message -RAYGUIAPI int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive); // Text Input Box control, ask for text, supports secret -RAYGUIAPI int GuiColorPicker(Rectangle bounds, const char *text, Color *color); // Color Picker control (multiple color controls) -RAYGUIAPI int GuiColorPanel(Rectangle bounds, const char *text, Color *color); // Color Panel control -RAYGUIAPI int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha); // Color Bar Alpha control -RAYGUIAPI int GuiColorBarHue(Rectangle bounds, const char *text, float *value); // Color Bar Hue control -RAYGUIAPI int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Picker control that avoids conversion to RGB on each call (multiple color controls) -RAYGUIAPI int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV() -//---------------------------------------------------------------------------------------------------------- - -#if !defined(RAYGUI_NO_ICONS) - -#if !defined(RAYGUI_CUSTOM_ICONS) -//---------------------------------------------------------------------------------- -// Icons enumeration -//---------------------------------------------------------------------------------- -typedef enum { - ICON_NONE = 0, - ICON_FOLDER_FILE_OPEN = 1, - ICON_FILE_SAVE_CLASSIC = 2, - ICON_FOLDER_OPEN = 3, - ICON_FOLDER_SAVE = 4, - ICON_FILE_OPEN = 5, - ICON_FILE_SAVE = 6, - ICON_FILE_EXPORT = 7, - ICON_FILE_ADD = 8, - ICON_FILE_DELETE = 9, - ICON_FILETYPE_TEXT = 10, - ICON_FILETYPE_AUDIO = 11, - ICON_FILETYPE_IMAGE = 12, - ICON_FILETYPE_PLAY = 13, - ICON_FILETYPE_VIDEO = 14, - ICON_FILETYPE_INFO = 15, - ICON_FILE_COPY = 16, - ICON_FILE_CUT = 17, - ICON_FILE_PASTE = 18, - ICON_CURSOR_HAND = 19, - ICON_CURSOR_POINTER = 20, - ICON_CURSOR_CLASSIC = 21, - ICON_PENCIL = 22, - ICON_PENCIL_BIG = 23, - ICON_BRUSH_CLASSIC = 24, - ICON_BRUSH_PAINTER = 25, - ICON_WATER_DROP = 26, - ICON_COLOR_PICKER = 27, - ICON_RUBBER = 28, - ICON_COLOR_BUCKET = 29, - ICON_TEXT_T = 30, - ICON_TEXT_A = 31, - ICON_SCALE = 32, - ICON_RESIZE = 33, - ICON_FILTER_POINT = 34, - ICON_FILTER_BILINEAR = 35, - ICON_CROP = 36, - ICON_CROP_ALPHA = 37, - ICON_SQUARE_TOGGLE = 38, - ICON_SYMMETRY = 39, - ICON_SYMMETRY_HORIZONTAL = 40, - ICON_SYMMETRY_VERTICAL = 41, - ICON_LENS = 42, - ICON_LENS_BIG = 43, - ICON_EYE_ON = 44, - ICON_EYE_OFF = 45, - ICON_FILTER_TOP = 46, - ICON_FILTER = 47, - ICON_TARGET_POINT = 48, - ICON_TARGET_SMALL = 49, - ICON_TARGET_BIG = 50, - ICON_TARGET_MOVE = 51, - ICON_CURSOR_MOVE = 52, - ICON_CURSOR_SCALE = 53, - ICON_CURSOR_SCALE_RIGHT = 54, - ICON_CURSOR_SCALE_LEFT = 55, - ICON_UNDO = 56, - ICON_REDO = 57, - ICON_REREDO = 58, - ICON_MUTATE = 59, - ICON_ROTATE = 60, - ICON_REPEAT = 61, - ICON_SHUFFLE = 62, - ICON_EMPTYBOX = 63, - ICON_TARGET = 64, - ICON_TARGET_SMALL_FILL = 65, - ICON_TARGET_BIG_FILL = 66, - ICON_TARGET_MOVE_FILL = 67, - ICON_CURSOR_MOVE_FILL = 68, - ICON_CURSOR_SCALE_FILL = 69, - ICON_CURSOR_SCALE_RIGHT_FILL = 70, - ICON_CURSOR_SCALE_LEFT_FILL = 71, - ICON_UNDO_FILL = 72, - ICON_REDO_FILL = 73, - ICON_REREDO_FILL = 74, - ICON_MUTATE_FILL = 75, - ICON_ROTATE_FILL = 76, - ICON_REPEAT_FILL = 77, - ICON_SHUFFLE_FILL = 78, - ICON_EMPTYBOX_SMALL = 79, - ICON_BOX = 80, - ICON_BOX_TOP = 81, - ICON_BOX_TOP_RIGHT = 82, - ICON_BOX_RIGHT = 83, - ICON_BOX_BOTTOM_RIGHT = 84, - ICON_BOX_BOTTOM = 85, - ICON_BOX_BOTTOM_LEFT = 86, - ICON_BOX_LEFT = 87, - ICON_BOX_TOP_LEFT = 88, - ICON_BOX_CENTER = 89, - ICON_BOX_CIRCLE_MASK = 90, - ICON_POT = 91, - ICON_ALPHA_MULTIPLY = 92, - ICON_ALPHA_CLEAR = 93, - ICON_DITHERING = 94, - ICON_MIPMAPS = 95, - ICON_BOX_GRID = 96, - ICON_GRID = 97, - ICON_BOX_CORNERS_SMALL = 98, - ICON_BOX_CORNERS_BIG = 99, - ICON_FOUR_BOXES = 100, - ICON_GRID_FILL = 101, - ICON_BOX_MULTISIZE = 102, - ICON_ZOOM_SMALL = 103, - ICON_ZOOM_MEDIUM = 104, - ICON_ZOOM_BIG = 105, - ICON_ZOOM_ALL = 106, - ICON_ZOOM_CENTER = 107, - ICON_BOX_DOTS_SMALL = 108, - ICON_BOX_DOTS_BIG = 109, - ICON_BOX_CONCENTRIC = 110, - ICON_BOX_GRID_BIG = 111, - ICON_OK_TICK = 112, - ICON_CROSS = 113, - ICON_ARROW_LEFT = 114, - ICON_ARROW_RIGHT = 115, - ICON_ARROW_DOWN = 116, - ICON_ARROW_UP = 117, - ICON_ARROW_LEFT_FILL = 118, - ICON_ARROW_RIGHT_FILL = 119, - ICON_ARROW_DOWN_FILL = 120, - ICON_ARROW_UP_FILL = 121, - ICON_AUDIO = 122, - ICON_FX = 123, - ICON_WAVE = 124, - ICON_WAVE_SINUS = 125, - ICON_WAVE_SQUARE = 126, - ICON_WAVE_TRIANGULAR = 127, - ICON_CROSS_SMALL = 128, - ICON_PLAYER_PREVIOUS = 129, - ICON_PLAYER_PLAY_BACK = 130, - ICON_PLAYER_PLAY = 131, - ICON_PLAYER_PAUSE = 132, - ICON_PLAYER_STOP = 133, - ICON_PLAYER_NEXT = 134, - ICON_PLAYER_RECORD = 135, - ICON_MAGNET = 136, - ICON_LOCK_CLOSE = 137, - ICON_LOCK_OPEN = 138, - ICON_CLOCK = 139, - ICON_TOOLS = 140, - ICON_GEAR = 141, - ICON_GEAR_BIG = 142, - ICON_BIN = 143, - ICON_HAND_POINTER = 144, - ICON_LASER = 145, - ICON_COIN = 146, - ICON_EXPLOSION = 147, - ICON_1UP = 148, - ICON_PLAYER = 149, - ICON_PLAYER_JUMP = 150, - ICON_KEY = 151, - ICON_DEMON = 152, - ICON_TEXT_POPUP = 153, - ICON_GEAR_EX = 154, - ICON_CRACK = 155, - ICON_CRACK_POINTS = 156, - ICON_STAR = 157, - ICON_DOOR = 158, - ICON_EXIT = 159, - ICON_MODE_2D = 160, - ICON_MODE_3D = 161, - ICON_CUBE = 162, - ICON_CUBE_FACE_TOP = 163, - ICON_CUBE_FACE_LEFT = 164, - ICON_CUBE_FACE_FRONT = 165, - ICON_CUBE_FACE_BOTTOM = 166, - ICON_CUBE_FACE_RIGHT = 167, - ICON_CUBE_FACE_BACK = 168, - ICON_CAMERA = 169, - ICON_SPECIAL = 170, - ICON_LINK_NET = 171, - ICON_LINK_BOXES = 172, - ICON_LINK_MULTI = 173, - ICON_LINK = 174, - ICON_LINK_BROKE = 175, - ICON_TEXT_NOTES = 176, - ICON_NOTEBOOK = 177, - ICON_SUITCASE = 178, - ICON_SUITCASE_ZIP = 179, - ICON_MAILBOX = 180, - ICON_MONITOR = 181, - ICON_PRINTER = 182, - ICON_PHOTO_CAMERA = 183, - ICON_PHOTO_CAMERA_FLASH = 184, - ICON_HOUSE = 185, - ICON_HEART = 186, - ICON_CORNER = 187, - ICON_VERTICAL_BARS = 188, - ICON_VERTICAL_BARS_FILL = 189, - ICON_LIFE_BARS = 190, - ICON_INFO = 191, - ICON_CROSSLINE = 192, - ICON_HELP = 193, - ICON_FILETYPE_ALPHA = 194, - ICON_FILETYPE_HOME = 195, - ICON_LAYERS_VISIBLE = 196, - ICON_LAYERS = 197, - ICON_WINDOW = 198, - ICON_HIDPI = 199, - ICON_FILETYPE_BINARY = 200, - ICON_HEX = 201, - ICON_SHIELD = 202, - ICON_FILE_NEW = 203, - ICON_FOLDER_ADD = 204, - ICON_ALARM = 205, - ICON_CPU = 206, - ICON_ROM = 207, - ICON_STEP_OVER = 208, - ICON_STEP_INTO = 209, - ICON_STEP_OUT = 210, - ICON_RESTART = 211, - ICON_BREAKPOINT_ON = 212, - ICON_BREAKPOINT_OFF = 213, - ICON_BURGER_MENU = 214, - ICON_CASE_SENSITIVE = 215, - ICON_REG_EXP = 216, - ICON_FOLDER = 217, - ICON_FILE = 218, - ICON_SAND_TIMER = 219, - ICON_WARNING = 220, - ICON_HELP_BOX = 221, - ICON_INFO_BOX = 222, - ICON_PRIORITY = 223, - ICON_LAYERS_ISO = 224, - ICON_LAYERS2 = 225, - ICON_MLAYERS = 226, - ICON_MAPS = 227, - ICON_HOT = 228, - ICON_LABEL = 229, - ICON_NAME_ID = 230, - ICON_SLICING = 231, - ICON_MANUAL_CONTROL = 232, - ICON_COLLISION = 233, - ICON_CIRCLE_ADD = 234, - ICON_CIRCLE_ADD_FILL = 235, - ICON_CIRCLE_WARNING = 236, - ICON_CIRCLE_WARNING_FILL = 237, - ICON_BOX_MORE = 238, - ICON_BOX_MORE_FILL = 239, - ICON_BOX_MINUS = 240, - ICON_BOX_MINUS_FILL = 241, - ICON_UNION = 242, - ICON_INTERSECTION = 243, - ICON_DIFFERENCE = 244, - ICON_SPHERE = 245, - ICON_CYLINDER = 246, - ICON_CONE = 247, - ICON_ELLIPSOID = 248, - ICON_CAPSULE = 249, - ICON_250 = 250, - ICON_251 = 251, - ICON_252 = 252, - ICON_253 = 253, - ICON_254 = 254, - ICON_255 = 255 -} GuiIconName; -#endif - -#endif - -#if defined(__cplusplus) -} // Prevents name mangling of functions -#endif - -#endif // RAYGUI_H - -/*********************************************************************************** -* -* RAYGUI IMPLEMENTATION -* -************************************************************************************/ - -#if defined(RAYGUI_IMPLEMENTATION) - -#include // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf(), snprintf(), vsprintf() [GuiLoadStyle(), GuiLoadIcons()] -#include // Required for: strlen() [GuiTextBox(), GuiValueBox()], memset(), memcpy() -#include // Required for: va_list, va_start(), vfprintf(), va_end() [TextFormat()] -#include // Required for: roundf() [GuiColorPicker()] -#include // Required for: isspace() [GuiTextBox()] - -// Allow custom memory allocators -#if defined(RAYGUI_MALLOC) || defined(RAYGUI_CALLOC) || defined(RAYGUI_FREE) - #if !defined(RAYGUI_MALLOC) || !defined(RAYGUI_CALLOC) || !defined(RAYGUI_FREE) - #error "RAYGUI: if RAYGUI_MALLOC, RAYGUI_CALLOC, or RAYGUI_FREE is customized, all three must be customized" - #endif -#else - #include // Required for: malloc(), calloc(), free() [GuiLoadStyle(), GuiLoadIcons()] - - #define RAYGUI_MALLOC(sz) malloc(sz) - #define RAYGUI_CALLOC(n,sz) calloc(n,sz) - #define RAYGUI_FREE(p) free(p) -#endif - -#ifdef __cplusplus - #define RAYGUI_CLITERAL(name) name -#else - #define RAYGUI_CLITERAL(name) (name) -#endif - -// Check if two rectangles are equal, used to validate a slider bounds as an id -#ifndef CHECK_BOUNDS_ID - #define CHECK_BOUNDS_ID(src, dst) (((int)src.x == (int)dst.x) && ((int)src.y == (int)dst.y) && ((int)src.width == (int)dst.width) && ((int)src.height == (int)dst.height)) -#endif - -#if !defined(RAYGUI_NO_ICONS) && !defined(RAYGUI_CUSTOM_ICONS) - -// Embedded icons, no external file provided -#define RAYGUI_ICON_SIZE 16 // Size of icons in pixels (squared) -#define RAYGUI_ICON_MAX_ICONS 256 // Maximum number of icons -#define RAYGUI_ICON_MAX_NAME_LENGTH 32 // Maximum length of icon name id - -// Icons data is defined by bit array (every bit represents one pixel) -// Those arrays are stored as unsigned int data arrays, so, -// every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) -// NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) -#define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) - -//---------------------------------------------------------------------------------- -// Icons data for all gui possible icons (allocated on data segment by default) -// -// NOTE 1: Every icon is codified in binary form, using 1 bit per pixel, so, -// every 16x16 icon requires 8 integers (16*16/32) to be stored -// -// NOTE 2: A different icon set could be loaded over this array using GuiLoadIcons(), -// but loaded icons set must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS -// -// guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB -//---------------------------------------------------------------------------------- -static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_NONE - 0x3ff80000, 0x2f082008, 0x2042207e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x00007ffe, // ICON_FOLDER_FILE_OPEN - 0x3ffe0000, 0x44226422, 0x400247e2, 0x5ffa4002, 0x57ea500a, 0x500a500a, 0x40025ffa, 0x00007ffe, // ICON_FILE_SAVE_CLASSIC - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024002, 0x44424282, 0x793e4102, 0x00000100, // ICON_FOLDER_OPEN - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024102, 0x44424102, 0x793e4282, 0x00000000, // ICON_FOLDER_SAVE - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x24442284, 0x21042104, 0x20042104, 0x00003ffc, // ICON_FILE_OPEN - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x21042104, 0x22842444, 0x20042104, 0x00003ffc, // ICON_FILE_SAVE - 0x3ff00000, 0x201c2010, 0x00042004, 0x20041004, 0x20844784, 0x00841384, 0x20042784, 0x00003ffc, // ICON_FILE_EXPORT - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x22042204, 0x22042f84, 0x20042204, 0x00003ffc, // ICON_FILE_ADD - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x25042884, 0x25042204, 0x20042884, 0x00003ffc, // ICON_FILE_DELETE - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_FILETYPE_TEXT - 0x3ff00000, 0x201c2010, 0x27042004, 0x244424c4, 0x26442444, 0x20642664, 0x20042004, 0x00003ffc, // ICON_FILETYPE_AUDIO - 0x3ff00000, 0x201c2010, 0x26042604, 0x20042004, 0x35442884, 0x2414222c, 0x20042004, 0x00003ffc, // ICON_FILETYPE_IMAGE - 0x3ff00000, 0x201c2010, 0x20c42004, 0x22442144, 0x22442444, 0x20c42144, 0x20042004, 0x00003ffc, // ICON_FILETYPE_PLAY - 0x3ff00000, 0x3ffc2ff0, 0x3f3c2ff4, 0x3dbc2eb4, 0x3dbc2bb4, 0x3f3c2eb4, 0x3ffc2ff4, 0x00002ff4, // ICON_FILETYPE_VIDEO - 0x3ff00000, 0x201c2010, 0x21842184, 0x21842004, 0x21842184, 0x21842184, 0x20042184, 0x00003ffc, // ICON_FILETYPE_INFO - 0x0ff00000, 0x381c0810, 0x28042804, 0x28042804, 0x28042804, 0x28042804, 0x20102ffc, 0x00003ff0, // ICON_FILE_COPY - 0x00000000, 0x701c0000, 0x079c1e14, 0x55a000f0, 0x079c00f0, 0x701c1e14, 0x00000000, 0x00000000, // ICON_FILE_CUT - 0x01c00000, 0x13e41bec, 0x3f841004, 0x204420c4, 0x20442044, 0x20442044, 0x207c2044, 0x00003fc0, // ICON_FILE_PASTE - 0x00000000, 0x3aa00fe0, 0x2abc2aa0, 0x2aa42aa4, 0x20042aa4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_CURSOR_HAND - 0x00000000, 0x003c000c, 0x030800c8, 0x30100c10, 0x10202020, 0x04400840, 0x01800280, 0x00000000, // ICON_CURSOR_POINTER - 0x00000000, 0x00180000, 0x01f00078, 0x03e007f0, 0x07c003e0, 0x04000e40, 0x00000000, 0x00000000, // ICON_CURSOR_CLASSIC - 0x00000000, 0x04000000, 0x11000a00, 0x04400a80, 0x01100220, 0x00580088, 0x00000038, 0x00000000, // ICON_PENCIL - 0x04000000, 0x15000a00, 0x50402880, 0x14102820, 0x05040a08, 0x015c028c, 0x007c00bc, 0x00000000, // ICON_PENCIL_BIG - 0x01c00000, 0x01400140, 0x01400140, 0x0ff80140, 0x0ff80808, 0x0aa80808, 0x0aa80aa8, 0x00000ff8, // ICON_BRUSH_CLASSIC - 0x1ffc0000, 0x5ffc7ffe, 0x40004000, 0x00807f80, 0x01c001c0, 0x01c001c0, 0x01c001c0, 0x00000080, // ICON_BRUSH_PAINTER - 0x00000000, 0x00800000, 0x01c00080, 0x03e001c0, 0x07f003e0, 0x036006f0, 0x000001c0, 0x00000000, // ICON_WATER_DROP - 0x00000000, 0x3e003800, 0x1f803f80, 0x0c201e40, 0x02080c10, 0x00840104, 0x00380044, 0x00000000, // ICON_COLOR_PICKER - 0x00000000, 0x07800300, 0x1fe00fc0, 0x3f883fd0, 0x0e021f04, 0x02040402, 0x00f00108, 0x00000000, // ICON_RUBBER - 0x00c00000, 0x02800140, 0x08200440, 0x20081010, 0x2ffe3004, 0x03f807fc, 0x00e001f0, 0x00000040, // ICON_COLOR_BUCKET - 0x00000000, 0x21843ffc, 0x01800180, 0x01800180, 0x01800180, 0x01800180, 0x03c00180, 0x00000000, // ICON_TEXT_T - 0x00800000, 0x01400180, 0x06200340, 0x0c100620, 0x1ff80c10, 0x380c1808, 0x70067004, 0x0000f80f, // ICON_TEXT_A - 0x78000000, 0x50004000, 0x00004800, 0x03c003c0, 0x03c003c0, 0x00100000, 0x0002000a, 0x0000000e, // ICON_SCALE - 0x75560000, 0x5e004002, 0x54001002, 0x41001202, 0x408200fe, 0x40820082, 0x40820082, 0x00006afe, // ICON_RESIZE - 0x00000000, 0x3f003f00, 0x3f003f00, 0x3f003f00, 0x00400080, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_POINT - 0x6d800000, 0x00004080, 0x40804080, 0x40800000, 0x00406d80, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_BILINEAR - 0x40080000, 0x1ffe2008, 0x14081008, 0x11081208, 0x10481088, 0x10081028, 0x10047ff8, 0x00001002, // ICON_CROP - 0x00100000, 0x3ffc0010, 0x2ab03550, 0x22b02550, 0x20b02150, 0x20302050, 0x2000fff0, 0x00002000, // ICON_CROP_ALPHA - 0x40000000, 0x1ff82000, 0x04082808, 0x01082208, 0x00482088, 0x00182028, 0x35542008, 0x00000002, // ICON_SQUARE_TOGGLE - 0x00000000, 0x02800280, 0x06c006c0, 0x0ea00ee0, 0x1e901eb0, 0x3e883e98, 0x7efc7e8c, 0x00000000, // ICON_SYMMETRY - 0x01000000, 0x05600100, 0x1d480d50, 0x7d423d44, 0x3d447d42, 0x0d501d48, 0x01000560, 0x00000100, // ICON_SYMMETRY_HORIZONTAL - 0x01800000, 0x04200240, 0x10080810, 0x00001ff8, 0x00007ffe, 0x0ff01ff8, 0x03c007e0, 0x00000180, // ICON_SYMMETRY_VERTICAL - 0x00000000, 0x010800f0, 0x02040204, 0x02040204, 0x07f00308, 0x1c000e00, 0x30003800, 0x00000000, // ICON_LENS - 0x00000000, 0x061803f0, 0x08240c0c, 0x08040814, 0x0c0c0804, 0x23f01618, 0x18002400, 0x00000000, // ICON_LENS_BIG - 0x00000000, 0x00000000, 0x1c7007c0, 0x638e3398, 0x1c703398, 0x000007c0, 0x00000000, 0x00000000, // ICON_EYE_ON - 0x00000000, 0x10002000, 0x04700fc0, 0x610e3218, 0x1c703098, 0x001007a0, 0x00000008, 0x00000000, // ICON_EYE_OFF - 0x00000000, 0x00007ffc, 0x40047ffc, 0x10102008, 0x04400820, 0x02800280, 0x02800280, 0x00000100, // ICON_FILTER_TOP - 0x00000000, 0x40027ffe, 0x10082004, 0x04200810, 0x02400240, 0x02400240, 0x01400240, 0x000000c0, // ICON_FILTER - 0x00800000, 0x00800080, 0x00000080, 0x3c9e0000, 0x00000000, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_POINT - 0x00800000, 0x00800080, 0x00800080, 0x3f7e01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL - 0x00800000, 0x00800080, 0x03e00080, 0x3e3e0220, 0x03e00220, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG - 0x01000000, 0x04400280, 0x01000100, 0x43842008, 0x43849ab2, 0x01002008, 0x04400100, 0x01000280, // ICON_TARGET_MOVE - 0x01000000, 0x04400280, 0x01000100, 0x41042108, 0x41049ff2, 0x01002108, 0x04400100, 0x01000280, // ICON_CURSOR_MOVE - 0x781e0000, 0x500a4002, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x4002500a, 0x0000781e, // ICON_CURSOR_SCALE - 0x00000000, 0x20003c00, 0x24002800, 0x01000200, 0x00400080, 0x00140024, 0x003c0004, 0x00000000, // ICON_CURSOR_SCALE_RIGHT - 0x00000000, 0x0004003c, 0x00240014, 0x00800040, 0x02000100, 0x28002400, 0x3c002000, 0x00000000, // ICON_CURSOR_SCALE_LEFT - 0x00000000, 0x00100020, 0x10101fc8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO - 0x00000000, 0x08000400, 0x080813f8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3f902020, 0x00400020, 0x00000000, // ICON_REREDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3fc82010, 0x00200010, 0x00000000, // ICON_MUTATE - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18101020, 0x00100fc8, 0x00000020, // ICON_ROTATE - 0x00000000, 0x04000200, 0x240429fc, 0x20042204, 0x20442004, 0x3f942024, 0x00400020, 0x00000000, // ICON_REPEAT - 0x00000000, 0x20001000, 0x22104c0e, 0x00801120, 0x11200040, 0x4c0e2210, 0x10002000, 0x00000000, // ICON_SHUFFLE - 0x7ffe0000, 0x50024002, 0x44024802, 0x41024202, 0x40424082, 0x40124022, 0x4002400a, 0x00007ffe, // ICON_EMPTYBOX - 0x00800000, 0x03e00080, 0x08080490, 0x3c9e0808, 0x08080808, 0x03e00490, 0x00800080, 0x00000000, // ICON_TARGET - 0x00800000, 0x00800080, 0x00800080, 0x3ffe01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL_FILL - 0x00800000, 0x00800080, 0x03e00080, 0x3ffe03e0, 0x03e003e0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x638c2008, 0x638cfbbe, 0x01002008, 0x07c00100, 0x01000380, // ICON_TARGET_MOVE_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x610c2108, 0x610cfffe, 0x01002108, 0x07c00100, 0x01000380, // ICON_CURSOR_MOVE_FILL - 0x781e0000, 0x6006700e, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x700e6006, 0x0000781e, // ICON_CURSOR_SCALE_FILL - 0x00000000, 0x38003c00, 0x24003000, 0x01000200, 0x00400080, 0x000c0024, 0x003c001c, 0x00000000, // ICON_CURSOR_SCALE_RIGHT_FILL - 0x00000000, 0x001c003c, 0x0024000c, 0x00800040, 0x02000100, 0x30002400, 0x3c003800, 0x00000000, // ICON_CURSOR_SCALE_LEFT_FILL - 0x00000000, 0x00300020, 0x10301ff8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO_FILL - 0x00000000, 0x0c000400, 0x0c081ff8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3ff02060, 0x00400060, 0x00000000, // ICON_REREDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3ff82030, 0x00200030, 0x00000000, // ICON_MUTATE_FILL - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18301020, 0x00300ff8, 0x00000020, // ICON_ROTATE_FILL - 0x00000000, 0x06000200, 0x26042ffc, 0x20042204, 0x20442004, 0x3ff42064, 0x00400060, 0x00000000, // ICON_REPEAT_FILL - 0x00000000, 0x30001000, 0x32107c0e, 0x00801120, 0x11200040, 0x7c0e3210, 0x10003000, 0x00000000, // ICON_SHUFFLE_FILL - 0x00000000, 0x30043ffc, 0x24042804, 0x21042204, 0x20442084, 0x20142024, 0x3ffc200c, 0x00000000, // ICON_EMPTYBOX_SMALL - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX - 0x00000000, 0x23c43ffc, 0x23c423c4, 0x200423c4, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP - 0x00000000, 0x3e043ffc, 0x3e043e04, 0x20043e04, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x3e043e04, 0x3e043e04, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x3e042004, 0x3e043e04, 0x3ffc3e04, 0x00000000, // ICON_BOX_BOTTOM_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x23c42004, 0x23c423c4, 0x3ffc23c4, 0x00000000, // ICON_BOX_BOTTOM - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x207c2004, 0x207c207c, 0x3ffc207c, 0x00000000, // ICON_BOX_BOTTOM_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x207c207c, 0x207c207c, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_LEFT - 0x00000000, 0x207c3ffc, 0x207c207c, 0x2004207c, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x23c423c4, 0x23c423c4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_CENTER - 0x7ffe0000, 0x40024002, 0x47e24182, 0x4ff247e2, 0x47e24ff2, 0x418247e2, 0x40024002, 0x00007ffe, // ICON_BOX_CIRCLE_MASK - 0x7fff0000, 0x40014001, 0x40014001, 0x49555ddd, 0x4945495d, 0x400149c5, 0x40014001, 0x00007fff, // ICON_POT - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x404e40ce, 0x48125432, 0x4006540e, 0x00007ffe, // ICON_ALPHA_MULTIPLY - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x5c4e40ce, 0x44124432, 0x40065c0e, 0x00007ffe, // ICON_ALPHA_CLEAR - 0x7ffe0000, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x00007ffe, // ICON_DITHERING - 0x07fe0000, 0x1ffa0002, 0x7fea000a, 0x402a402a, 0x5b2a512a, 0x5128552a, 0x40205128, 0x00007fe0, // ICON_MIPMAPS - 0x00000000, 0x1ff80000, 0x12481248, 0x12481ff8, 0x1ff81248, 0x12481248, 0x00001ff8, 0x00000000, // ICON_BOX_GRID - 0x12480000, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x00001248, // ICON_GRID - 0x00000000, 0x1c380000, 0x1c3817e8, 0x08100810, 0x08100810, 0x17e81c38, 0x00001c38, 0x00000000, // ICON_BOX_CORNERS_SMALL - 0x700e0000, 0x700e5ffa, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x5ffa700e, 0x0000700e, // ICON_BOX_CORNERS_BIG - 0x3f7e0000, 0x21422142, 0x21422142, 0x00003f7e, 0x21423f7e, 0x21422142, 0x3f7e2142, 0x00000000, // ICON_FOUR_BOXES - 0x00000000, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x00000000, // ICON_GRID_FILL - 0x7ffe0000, 0x7ffe7ffe, 0x77fe7000, 0x77fe77fe, 0x777e7700, 0x777e777e, 0x777e777e, 0x0000777e, // ICON_BOX_MULTISIZE - 0x781e0000, 0x40024002, 0x00004002, 0x01800000, 0x00000180, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_SMALL - 0x781e0000, 0x40024002, 0x00004002, 0x03c003c0, 0x03c003c0, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_MEDIUM - 0x781e0000, 0x40024002, 0x07e04002, 0x07e007e0, 0x07e007e0, 0x400207e0, 0x40024002, 0x0000781e, // ICON_ZOOM_BIG - 0x781e0000, 0x5ffa4002, 0x1ff85ffa, 0x1ff81ff8, 0x1ff81ff8, 0x5ffa1ff8, 0x40025ffa, 0x0000781e, // ICON_ZOOM_ALL - 0x00000000, 0x2004381c, 0x00002004, 0x00000000, 0x00000000, 0x20040000, 0x381c2004, 0x00000000, // ICON_ZOOM_CENTER - 0x00000000, 0x1db80000, 0x10081008, 0x10080000, 0x00001008, 0x10081008, 0x00001db8, 0x00000000, // ICON_BOX_DOTS_SMALL - 0x35560000, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x35562002, 0x00000000, // ICON_BOX_DOTS_BIG - 0x7ffe0000, 0x40024002, 0x48124ff2, 0x49924812, 0x48124992, 0x4ff24812, 0x40024002, 0x00007ffe, // ICON_BOX_CONCENTRIC - 0x00000000, 0x10841ffc, 0x10841084, 0x1ffc1084, 0x10841084, 0x10841084, 0x00001ffc, 0x00000000, // ICON_BOX_GRID_BIG - 0x00000000, 0x00000000, 0x10000000, 0x04000800, 0x01040200, 0x00500088, 0x00000020, 0x00000000, // ICON_OK_TICK - 0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // ICON_CROSS - 0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // ICON_ARROW_LEFT - 0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // ICON_ARROW_RIGHT - 0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // ICON_ARROW_DOWN - 0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP - 0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // ICON_ARROW_LEFT_FILL - 0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // ICON_ARROW_RIGHT_FILL - 0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // ICON_ARROW_DOWN_FILL - 0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP_FILL - 0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // ICON_AUDIO - 0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // ICON_FX - 0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // ICON_WAVE - 0x00000000, 0x00600000, 0x01080090, 0x02040108, 0x42044204, 0x24022402, 0x00001800, 0x00000000, // ICON_WAVE_SINUS - 0x00000000, 0x07f80000, 0x04080408, 0x04080408, 0x04080408, 0x7c0e0408, 0x00000000, 0x00000000, // ICON_WAVE_SQUARE - 0x00000000, 0x00000000, 0x00a00040, 0x22084110, 0x08021404, 0x00000000, 0x00000000, 0x00000000, // ICON_WAVE_TRIANGULAR - 0x00000000, 0x00000000, 0x04200000, 0x01800240, 0x02400180, 0x00000420, 0x00000000, 0x00000000, // ICON_CROSS_SMALL - 0x00000000, 0x18380000, 0x12281428, 0x10a81128, 0x112810a8, 0x14281228, 0x00001838, 0x00000000, // ICON_PLAYER_PREVIOUS - 0x00000000, 0x18000000, 0x11801600, 0x10181060, 0x10601018, 0x16001180, 0x00001800, 0x00000000, // ICON_PLAYER_PLAY_BACK - 0x00000000, 0x00180000, 0x01880068, 0x18080608, 0x06081808, 0x00680188, 0x00000018, 0x00000000, // ICON_PLAYER_PLAY - 0x00000000, 0x1e780000, 0x12481248, 0x12481248, 0x12481248, 0x12481248, 0x00001e78, 0x00000000, // ICON_PLAYER_PAUSE - 0x00000000, 0x1ff80000, 0x10081008, 0x10081008, 0x10081008, 0x10081008, 0x00001ff8, 0x00000000, // ICON_PLAYER_STOP - 0x00000000, 0x1c180000, 0x14481428, 0x15081488, 0x14881508, 0x14281448, 0x00001c18, 0x00000000, // ICON_PLAYER_NEXT - 0x00000000, 0x03c00000, 0x08100420, 0x10081008, 0x10081008, 0x04200810, 0x000003c0, 0x00000000, // ICON_PLAYER_RECORD - 0x00000000, 0x0c3007e0, 0x13c81818, 0x14281668, 0x14281428, 0x1c381c38, 0x08102244, 0x00000000, // ICON_MAGNET - 0x07c00000, 0x08200820, 0x3ff80820, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_CLOSE - 0x07c00000, 0x08000800, 0x3ff80800, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_OPEN - 0x01c00000, 0x0c180770, 0x3086188c, 0x60832082, 0x60034781, 0x30062002, 0x0c18180c, 0x01c00770, // ICON_CLOCK - 0x0a200000, 0x1b201b20, 0x04200e20, 0x04200420, 0x04700420, 0x0e700e70, 0x0e700e70, 0x04200e70, // ICON_TOOLS - 0x01800000, 0x3bdc318c, 0x0ff01ff8, 0x7c3e1e78, 0x1e787c3e, 0x1ff80ff0, 0x318c3bdc, 0x00000180, // ICON_GEAR - 0x01800000, 0x3ffc318c, 0x1c381ff8, 0x781e1818, 0x1818781e, 0x1ff81c38, 0x318c3ffc, 0x00000180, // ICON_GEAR_BIG - 0x00000000, 0x08080ff8, 0x08081ffc, 0x0aa80aa8, 0x0aa80aa8, 0x0aa80aa8, 0x08080aa8, 0x00000ff8, // ICON_BIN - 0x00000000, 0x00000000, 0x20043ffc, 0x08043f84, 0x04040f84, 0x04040784, 0x000007fc, 0x00000000, // ICON_HAND_POINTER - 0x00000000, 0x24400400, 0x00001480, 0x6efe0e00, 0x00000e00, 0x24401480, 0x00000400, 0x00000000, // ICON_LASER - 0x00000000, 0x03c00000, 0x08300460, 0x11181118, 0x11181118, 0x04600830, 0x000003c0, 0x00000000, // ICON_COIN - 0x00000000, 0x10880080, 0x06c00810, 0x366c07e0, 0x07e00240, 0x00001768, 0x04200240, 0x00000000, // ICON_EXPLOSION - 0x00000000, 0x3d280000, 0x2528252c, 0x3d282528, 0x05280528, 0x05e80528, 0x00000000, 0x00000000, // ICON_1UP - 0x01800000, 0x03c003c0, 0x018003c0, 0x0ff007e0, 0x0bd00bd0, 0x0a500bd0, 0x02400240, 0x02400240, // ICON_PLAYER - 0x01800000, 0x03c003c0, 0x118013c0, 0x03c81ff8, 0x07c003c8, 0x04400440, 0x0c080478, 0x00000000, // ICON_PLAYER_JUMP - 0x3ff80000, 0x30183ff8, 0x30183018, 0x3ff83ff8, 0x03000300, 0x03c003c0, 0x03e00300, 0x000003e0, // ICON_KEY - 0x3ff80000, 0x3ff83ff8, 0x33983ff8, 0x3ff83398, 0x3ff83ff8, 0x00000540, 0x0fe00aa0, 0x00000fe0, // ICON_DEMON - 0x00000000, 0x0ff00000, 0x20041008, 0x25442004, 0x10082004, 0x06000bf0, 0x00000300, 0x00000000, // ICON_TEXT_POPUP - 0x00000000, 0x11440000, 0x07f00be8, 0x1c1c0e38, 0x1c1c0c18, 0x07f00e38, 0x11440be8, 0x00000000, // ICON_GEAR_EX - 0x00000000, 0x20080000, 0x0c601010, 0x07c00fe0, 0x07c007c0, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK - 0x00000000, 0x20080000, 0x0c601010, 0x04400fe0, 0x04405554, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK_POINTS - 0x00000000, 0x00800080, 0x01c001c0, 0x1ffc3ffe, 0x03e007f0, 0x07f003e0, 0x0c180770, 0x00000808, // ICON_STAR - 0x0ff00000, 0x08180810, 0x08100818, 0x0a100810, 0x08180810, 0x08100818, 0x08100810, 0x00001ff8, // ICON_DOOR - 0x0ff00000, 0x08100810, 0x08100810, 0x10100010, 0x4f902010, 0x10102010, 0x08100010, 0x00000ff0, // ICON_EXIT - 0x00040000, 0x001f000e, 0x0ef40004, 0x12f41284, 0x0ef41214, 0x10040004, 0x7ffc3004, 0x10003000, // ICON_MODE_2D - 0x78040000, 0x501f600e, 0x0ef44004, 0x12f41284, 0x0ef41284, 0x10140004, 0x7ffc300c, 0x10003000, // ICON_MODE_3D - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE - 0x7fe00000, 0x5ff87ff0, 0x47fe4ffc, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_TOP - 0x7fe00000, 0x50386030, 0x47c2483c, 0x443e443e, 0x443e443e, 0x241e75fe, 0x0c06140e, 0x000007fe, // ICON_CUBE_FACE_LEFT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x47fe47fe, 0x47fe47fe, 0x27fe77fe, 0x0ffe17fe, 0x000007fe, // ICON_CUBE_FACE_FRONT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x3bf27be2, 0x0bfe1bfa, 0x000007fe, // ICON_CUBE_FACE_BOTTOM - 0x7fe00000, 0x70286030, 0x7ffe7804, 0x7c227c02, 0x7c227c22, 0x3c127de2, 0x0c061c0a, 0x000007fe, // ICON_CUBE_FACE_RIGHT - 0x7fe00000, 0x6fe85ff0, 0x781e77e4, 0x7be27be2, 0x7be27be2, 0x24127be2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_BACK - 0x00000000, 0x2a0233fe, 0x22022602, 0x22022202, 0x2a022602, 0x00a033fe, 0x02080110, 0x00000000, // ICON_CAMERA - 0x00000000, 0x200c3ffc, 0x000c000c, 0x3ffc000c, 0x30003000, 0x30003000, 0x3ffc3004, 0x00000000, // ICON_SPECIAL - 0x00000000, 0x0022003e, 0x012201e2, 0x0100013e, 0x01000100, 0x79000100, 0x4f004900, 0x00007800, // ICON_LINK_NET - 0x00000000, 0x44007c00, 0x45004600, 0x00627cbe, 0x00620022, 0x45007cbe, 0x44004600, 0x00007c00, // ICON_LINK_BOXES - 0x00000000, 0x0044007c, 0x0010007c, 0x3f100010, 0x3f1021f0, 0x3f100010, 0x3f0021f0, 0x00000000, // ICON_LINK_MULTI - 0x00000000, 0x0044007c, 0x00440044, 0x0010007c, 0x00100010, 0x44107c10, 0x440047f0, 0x00007c00, // ICON_LINK - 0x00000000, 0x0044007c, 0x00440044, 0x0000007c, 0x00000010, 0x44007c10, 0x44004550, 0x00007c00, // ICON_LINK_BROKE - 0x02a00000, 0x22a43ffc, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_TEXT_NOTES - 0x3ffc0000, 0x20042004, 0x245e27c4, 0x27c42444, 0x2004201e, 0x201e2004, 0x20042004, 0x00003ffc, // ICON_NOTEBOOK - 0x00000000, 0x07e00000, 0x04200420, 0x24243ffc, 0x24242424, 0x24242424, 0x3ffc2424, 0x00000000, // ICON_SUITCASE - 0x00000000, 0x0fe00000, 0x08200820, 0x40047ffc, 0x7ffc5554, 0x40045554, 0x7ffc4004, 0x00000000, // ICON_SUITCASE_ZIP - 0x00000000, 0x20043ffc, 0x3ffc2004, 0x13c81008, 0x100813c8, 0x10081008, 0x1ff81008, 0x00000000, // ICON_MAILBOX - 0x00000000, 0x40027ffe, 0x5ffa5ffa, 0x5ffa5ffa, 0x40025ffa, 0x03c07ffe, 0x1ff81ff8, 0x00000000, // ICON_MONITOR - 0x0ff00000, 0x6bfe7ffe, 0x7ffe7ffe, 0x68167ffe, 0x08106816, 0x08100810, 0x0ff00810, 0x00000000, // ICON_PRINTER - 0x3ff80000, 0xfffe2008, 0x870a8002, 0x904a888a, 0x904a904a, 0x870a888a, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA - 0x0fc00000, 0xfcfe0cd8, 0x8002fffe, 0x84428382, 0x84428442, 0x80028382, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA_FLASH - 0x00000000, 0x02400180, 0x08100420, 0x20041008, 0x23c42004, 0x22442244, 0x3ffc2244, 0x00000000, // ICON_HOUSE - 0x00000000, 0x1c700000, 0x3ff83ef8, 0x3ff83ff8, 0x0fe01ff0, 0x038007c0, 0x00000100, 0x00000000, // ICON_HEART - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0xe000c000, // ICON_CORNER - 0x00000000, 0x14001c00, 0x15c01400, 0x15401540, 0x155c1540, 0x15541554, 0x1ddc1554, 0x00000000, // ICON_VERTICAL_BARS - 0x00000000, 0x03000300, 0x1b001b00, 0x1b601b60, 0x1b6c1b60, 0x1b6c1b6c, 0x1b6c1b6c, 0x00000000, // ICON_VERTICAL_BARS_FILL - 0x00000000, 0x00000000, 0x403e7ffe, 0x7ffe403e, 0x7ffe0000, 0x43fe43fe, 0x00007ffe, 0x00000000, // ICON_LIFE_BARS - 0x7ffc0000, 0x43844004, 0x43844284, 0x43844004, 0x42844284, 0x42844284, 0x40044384, 0x00007ffc, // ICON_INFO - 0x40008000, 0x10002000, 0x04000800, 0x01000200, 0x00400080, 0x00100020, 0x00040008, 0x00010002, // ICON_CROSSLINE - 0x00000000, 0x1ff01ff0, 0x18301830, 0x1f001830, 0x03001f00, 0x00000300, 0x03000300, 0x00000000, // ICON_HELP - 0x3ff00000, 0x2abc3550, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x00003ffc, // ICON_FILETYPE_ALPHA - 0x3ff00000, 0x201c2010, 0x22442184, 0x28142424, 0x29942814, 0x2ff42994, 0x20042004, 0x00003ffc, // ICON_FILETYPE_HOME - 0x07fe0000, 0x04020402, 0x7fe20402, 0x44224422, 0x44224422, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS_VISIBLE - 0x07fe0000, 0x04020402, 0x7c020402, 0x44024402, 0x44024402, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS - 0x00000000, 0x40027ffe, 0x7ffe4002, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_WINDOW - 0x09100000, 0x09f00910, 0x09100910, 0x00000910, 0x24a2779e, 0x27a224a2, 0x709e20a2, 0x00000000, // ICON_HIDPI - 0x3ff00000, 0x201c2010, 0x2a842e84, 0x2e842a84, 0x2ba42004, 0x2aa42aa4, 0x20042ba4, 0x00003ffc, // ICON_FILETYPE_BINARY - 0x00000000, 0x00000000, 0x00120012, 0x4a5e4bd2, 0x485233d2, 0x00004bd2, 0x00000000, 0x00000000, // ICON_HEX - 0x01800000, 0x381c0660, 0x23c42004, 0x23c42044, 0x13c82204, 0x08101008, 0x02400420, 0x00000180, // ICON_SHIELD - 0x007e0000, 0x20023fc2, 0x40227fe2, 0x400a403a, 0x400a400a, 0x400a400a, 0x4008400e, 0x00007ff8, // ICON_FILE_NEW - 0x00000000, 0x0042007e, 0x40027fc2, 0x44024002, 0x5f024402, 0x44024402, 0x7ffe4002, 0x00000000, // ICON_FOLDER_ADD - 0x44220000, 0x12482244, 0xf3cf0000, 0x14280420, 0x48122424, 0x08100810, 0x1ff81008, 0x03c00420, // ICON_ALARM - 0x0aa00000, 0x1ff80aa0, 0x1068700e, 0x1008706e, 0x1008700e, 0x1008700e, 0x0aa01ff8, 0x00000aa0, // ICON_CPU - 0x07e00000, 0x04201db8, 0x04a01c38, 0x04a01d38, 0x04a01d38, 0x04a01d38, 0x04201d38, 0x000007e0, // ICON_ROM - 0x00000000, 0x03c00000, 0x3c382ff0, 0x3c04380c, 0x01800000, 0x03c003c0, 0x00000180, 0x00000000, // ICON_STEP_OVER - 0x01800000, 0x01800180, 0x01800180, 0x03c007e0, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_INTO - 0x01800000, 0x07e003c0, 0x01800180, 0x01800180, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_OUT - 0x00000000, 0x0ff003c0, 0x181c1c34, 0x303c301c, 0x30003000, 0x1c301800, 0x03c00ff0, 0x00000000, // ICON_RESTART - 0x00000000, 0x00000000, 0x07e003c0, 0x0ff00ff0, 0x0ff00ff0, 0x03c007e0, 0x00000000, 0x00000000, // ICON_BREAKPOINT_ON - 0x00000000, 0x00000000, 0x042003c0, 0x08100810, 0x08100810, 0x03c00420, 0x00000000, 0x00000000, // ICON_BREAKPOINT_OFF - 0x00000000, 0x00000000, 0x1ff81ff8, 0x1ff80000, 0x00001ff8, 0x1ff81ff8, 0x00000000, 0x00000000, // ICON_BURGER_MENU - 0x00000000, 0x00000000, 0x00880070, 0x0c880088, 0x1e8810f8, 0x3e881288, 0x00000000, 0x00000000, // ICON_CASE_SENSITIVE - 0x00000000, 0x02000000, 0x07000a80, 0x07001fc0, 0x02000a80, 0x00300030, 0x00000000, 0x00000000, // ICON_REG_EXP - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_FOLDER - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x00003ffc, // ICON_FILE - 0x1ff00000, 0x20082008, 0x17d02fe8, 0x05400ba0, 0x09200540, 0x23881010, 0x2fe827c8, 0x00001ff0, // ICON_SAND_TIMER - 0x01800000, 0x02400240, 0x05a00420, 0x09900990, 0x11881188, 0x21842004, 0x40024182, 0x00003ffc, // ICON_WARNING - 0x7ffe0000, 0x4ff24002, 0x4c324ff2, 0x4f824c02, 0x41824f82, 0x41824002, 0x40024182, 0x00007ffe, // ICON_HELP_BOX - 0x7ffe0000, 0x41824002, 0x40024182, 0x41824182, 0x41824182, 0x41824182, 0x40024182, 0x00007ffe, // ICON_INFO_BOX - 0x01800000, 0x04200240, 0x10080810, 0x7bde2004, 0x0a500a50, 0x08500bd0, 0x08100850, 0x00000ff0, // ICON_PRIORITY - 0x01800000, 0x18180660, 0x80016006, 0x98196006, 0x99996666, 0x19986666, 0x01800660, 0x00000000, // ICON_LAYERS_ISO - 0x07fe0000, 0x1c020402, 0x74021402, 0x54025402, 0x54025402, 0x500857fe, 0x40205ff8, 0x00007fe0, // ICON_LAYERS2 - 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x422a422a, 0x422e422a, 0x40384e28, 0x00007fe0, // ICON_MLAYERS - 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x5b2a512a, 0x512e552a, 0x40385128, 0x00007fe0, // ICON_MAPS - 0x04200000, 0x1cf00c60, 0x11f019f0, 0x0f3807b8, 0x1e3c0f3c, 0x1c1c1e1c, 0x1e3c1c1c, 0x00000f70, // ICON_HOT - 0x00000000, 0x20803f00, 0x2a202e40, 0x20082e10, 0x08021004, 0x02040402, 0x00900108, 0x00000060, // ICON_LABEL - 0x00000000, 0x042007e0, 0x47e27c3e, 0x4ffa4002, 0x47fa4002, 0x4ffa4002, 0x7ffe4002, 0x00000000, // ICON_NAME_ID - 0x7fe00000, 0x402e4020, 0x43ce5e0a, 0x40504078, 0x438e4078, 0x402e5e0a, 0x7fe04020, 0x00000000, // ICON_SLICING - 0x00000000, 0x40027ffe, 0x47c24002, 0x55425d42, 0x55725542, 0x50125552, 0x10105016, 0x00001ff0, // ICON_MANUAL_CONTROL - 0x7ffe0000, 0x43c24002, 0x48124422, 0x500a500a, 0x500a500a, 0x44224812, 0x400243c2, 0x00007ffe, // ICON_COLLISION - 0x03c00000, 0x10080c30, 0x21842184, 0x4ff24182, 0x41824ff2, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_ADD - 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x700e7e7e, 0x7e7e700e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_ADD_FILL - 0x03c00000, 0x10080c30, 0x21842184, 0x41824182, 0x40024182, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_WARNING - 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x7e7e7e7e, 0x7ffe7e7e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_WARNING_FILL - 0x00000000, 0x10041ffc, 0x10841004, 0x13e41084, 0x10841084, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MORE - 0x00000000, 0x1ffc1ffc, 0x1f7c1ffc, 0x1c1c1f7c, 0x1f7c1f7c, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MORE_FILL - 0x00000000, 0x1ffc1ffc, 0x1ffc1ffc, 0x1c1c1ffc, 0x1ffc1ffc, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS - 0x00000000, 0x10041ffc, 0x10041004, 0x13e41004, 0x10041004, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS_FILL - 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x55766eba, 0x55766eaa, 0x55606ffe, 0x55606aa0, 0x00007fe0, // ICON_UNION - 0x07fe0000, 0x04020402, 0x7fe20402, 0x456246a2, 0x456246a2, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_INTERSECTION - 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x4436442a, 0x4436442a, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_DIFFERENCE - 0x03c00000, 0x10080c30, 0x20042004, 0x60064002, 0x47e2581a, 0x20042004, 0x0c301008, 0x000003c0, // ICON_SPHERE - 0x03e00000, 0x08080410, 0x0c180808, 0x08080be8, 0x08080808, 0x08080808, 0x04100808, 0x000003e0, // ICON_CYLINDER - 0x00800000, 0x01400140, 0x02200220, 0x04100410, 0x08080808, 0x1c1c13e4, 0x08081004, 0x000007f0, // ICON_CONE - 0x00000000, 0x07e00000, 0x20841918, 0x40824082, 0x40824082, 0x19182084, 0x000007e0, 0x00000000, // ICON_ELLIPSOID - 0x00000000, 0x00000000, 0x20041ff8, 0x40024002, 0x40024002, 0x1ff82004, 0x00000000, 0x00000000, // ICON_CAPSULE - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_250 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_251 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_252 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_253 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_254 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_255 -}; - -// NOTE: A pointer to current icons array should be defined -static unsigned int *guiIconsPtr = guiIcons; - -#endif // !RAYGUI_NO_ICONS && !RAYGUI_CUSTOM_ICONS - -#ifndef RAYGUI_ICON_SIZE - #define RAYGUI_ICON_SIZE 0 -#endif - -// WARNING: Those values define the total size of the style data array, -// if changed, previous saved styles could become incompatible -#define RAYGUI_MAX_CONTROLS 16 // Maximum number of controls -#define RAYGUI_MAX_PROPS_BASE 16 // Maximum number of base properties -#define RAYGUI_MAX_PROPS_EXTENDED 8 // Maximum number of extended properties - -//---------------------------------------------------------------------------------- -// Module Types and Structures Definition -//---------------------------------------------------------------------------------- -// Gui control property style color element -typedef enum { BORDER = 0, BASE, TEXT, OTHER } GuiPropertyElement; - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -static GuiState guiState = STATE_NORMAL; // Gui global state, if !STATE_NORMAL, forces defined state - -static Font guiFont = { 0 }; // Gui current font (WARNING: highly coupled to raylib) -static bool guiLocked = false; // Gui lock state (no inputs processed) -static float guiAlpha = 1.0f; // Gui controls transparency - -static unsigned int guiIconScale = 1; // Gui icon default scale (if icons enabled) - -static bool guiTooltip = false; // Tooltip enabled/disabled -static const char *guiTooltipPtr = NULL; // Tooltip string pointer (string provided by user) - -static bool guiControlExclusiveMode = false; // Gui control exclusive mode (no inputs processed except current control) -static Rectangle guiControlExclusiveRec = { 0 }; // Gui control exclusive bounds rectangle, used as an unique identifier - -static int textBoxCursorIndex = 0; // Cursor index, shared by all GuiTextBox*() -//static int blinkCursorFrameCounter = 0; // Frame counter for cursor blinking -static int autoCursorCounter = 0; // Frame counter for automatic repeated cursor movement on key-down (cooldown and delay) - -//---------------------------------------------------------------------------------- -// Style data array for all gui style properties (allocated on data segment by default) -// -// NOTE 1: First set of BASE properties are generic to all controls but could be individually -// overwritten per control, first set of EXTENDED properties are generic to all controls and -// can not be overwritten individually but custom EXTENDED properties can be used by control -// -// NOTE 2: A new style set could be loaded over this array using GuiLoadStyle(), -// but default gui style could always be recovered with GuiLoadStyleDefault() -// -// guiStyle size is by default: 16*(16 + 8) = 384*4 = 1536 bytes = 1.5 KB -//---------------------------------------------------------------------------------- -static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)] = { 0 }; - -static bool guiStyleLoaded = false; // Style loaded flag for lazy style initialization - -//---------------------------------------------------------------------------------- -// Standalone Mode Functions Declaration -// -// NOTE: raygui depend on some raylib input and drawing functions -// To use raygui as standalone library, below functions must be defined by the user -//---------------------------------------------------------------------------------- -#if defined(RAYGUI_STANDALONE) - -#define KEY_RIGHT 262 -#define KEY_LEFT 263 -#define KEY_DOWN 264 -#define KEY_UP 265 -#define KEY_BACKSPACE 259 -#define KEY_ENTER 257 - -#define MOUSE_LEFT_BUTTON 0 - -// Input required functions -//------------------------------------------------------------------------------- -static Vector2 GetMousePosition(void); -static float GetMouseWheelMove(void); -static bool IsMouseButtonDown(int button); -static bool IsMouseButtonPressed(int button); -static bool IsMouseButtonReleased(int button); - -static bool IsKeyDown(int key); -static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() -//------------------------------------------------------------------------------- - -// Drawing required functions -//------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() -static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() -//------------------------------------------------------------------------------- - -// Text required functions -//------------------------------------------------------------------------------- -static Font GetFontDefault(void); // -- GuiLoadStyleDefault() -static Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle(), load font - -static Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image -static void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) - -static char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data -static void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data - -static const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs - -static int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list -static void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list - -static unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() -//------------------------------------------------------------------------------- - -// raylib functions already implemented in raygui -//------------------------------------------------------------------------------- -static Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value -static int ColorToInt(Color color); // Returns hexadecimal value for a Color -static bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle -static const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed' -static char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings -static int TextToInteger(const char *text); // Get integer value from text -static float TextToFloat(const char *text); // Get float value from text - -static int GetCodepointNext(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded text -static const char *CodepointToUTF8(int codepoint, int *byteSize); // Encode codepoint into UTF-8 text (char array size returned as parameter) - -static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2); // Draw rectangle vertical gradient -//------------------------------------------------------------------------------- - -#endif // RAYGUI_STANDALONE - -//---------------------------------------------------------------------------------- -// Module Internal Functions Declaration -//---------------------------------------------------------------------------------- -static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize); // Load style from memory (binary only) - -static Rectangle GetTextBounds(int control, Rectangle bounds); // Get text bounds considering control bounds -static const char *GetTextIcon(const char *text, int *iconId); // Get text icon if provided and move text cursor - -static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint); // Gui draw text using default font -static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color); // Gui draw rectangle using default raygui style - -static char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow); // Split controls text into multiple strings -static Vector3 ConvertHSVtoRGB(Vector3 hsv); // Convert color data from HSV to RGB -static Vector3 ConvertRGBtoHSV(Vector3 rgb); // Convert color data from RGB to HSV - -static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue); // Scroll bar control, used by GuiScrollPanel() -static void GuiTooltip(Rectangle controlRec); // Draw tooltip using control rec position - -static Color GuiFade(Color color, float alpha); // Fade color by an alpha factor - -//---------------------------------------------------------------------------------- -// Gui Setup Functions Definition -//---------------------------------------------------------------------------------- -// Enable gui global state -// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups -void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } - -// Disable gui global state -// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups -void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } - -// Lock gui global state -void GuiLock(void) { guiLocked = true; } - -// Unlock gui global state -void GuiUnlock(void) { guiLocked = false; } - -// Check if gui is locked (global state) -bool GuiIsLocked(void) { return guiLocked; } - -// Set gui controls alpha global state -void GuiSetAlpha(float alpha) -{ - if (alpha < 0.0f) alpha = 0.0f; - else if (alpha > 1.0f) alpha = 1.0f; - - guiAlpha = alpha; -} - -// Set gui state (global state) -void GuiSetState(int state) { guiState = (GuiState)state; } - -// Get gui state (global state) -int GuiGetState(void) { return guiState; } - -// Set custom gui font -// NOTE: Font loading/unloading is external to raygui -void GuiSetFont(Font font) -{ - if (font.texture.id > 0) - { - // NOTE: If a font is tried to be set but default style has not been lazily loaded first, - // it will be overwritten, so default style loading needs to be forced first - if (!guiStyleLoaded) GuiLoadStyleDefault(); - - guiFont = font; - } -} - -// Get custom gui font -Font GuiGetFont(void) -{ - return guiFont; -} - -// Set control style property value -void GuiSetStyle(int control, int property, int value) -{ - if (!guiStyleLoaded) GuiLoadStyleDefault(); - guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; - - // Default properties are propagated to all controls - if ((control == 0) && (property < RAYGUI_MAX_PROPS_BASE)) - { - for (int i = 1; i < RAYGUI_MAX_CONTROLS; i++) guiStyle[i*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; - } -} - -// Get control style property value -int GuiGetStyle(int control, int property) -{ - if (!guiStyleLoaded) GuiLoadStyleDefault(); - return guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property]; -} - -//---------------------------------------------------------------------------------- -// Gui Controls Functions Definition -//---------------------------------------------------------------------------------- - -// Window Box control -int GuiWindowBox(Rectangle bounds, const char *title) -{ - // Window title bar height (including borders) - // NOTE: This define is also used by GuiMessageBox() and GuiTextInputBox() - #if !defined(RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT) - #define RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT 24 - #endif - - #if !defined(RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT) - #define RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT 18 - #endif - - int result = 0; - //GuiState state = guiState; - - int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; - int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); - - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; - if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; - - const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, - statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; - - // Update control - //-------------------------------------------------------------------- - // NOTE: Logic is directly managed by button - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiPanel(windowPanel, NULL); // Draw window base - GuiStatusBar(statusBar, title); // Draw window header as status bar - - // Draw window close button - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); -#if defined(RAYGUI_NO_ICONS) - result = GuiButton(closeButtonRec, "x"); -#else - result = GuiButton(closeButtonRec, GuiIconText(ICON_CROSS_SMALL, NULL)); -#endif - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); - //-------------------------------------------------------------------- - - return result; // Window close button clicked: result = 1 -} - -// Group Box control with text name -int GuiGroupBox(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_GROUPBOX_LINE_THICK) - #define RAYGUI_GROUPBOX_LINE_THICK 1 - #endif - - int result = 0; - GuiState state = guiState; - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, RAYGUI_GROUPBOX_LINE_THICK }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - 1, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - - GuiLine(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y - GuiGetStyle(DEFAULT, TEXT_SIZE)/2, bounds.width, (float)GuiGetStyle(DEFAULT, TEXT_SIZE) }, text); - //-------------------------------------------------------------------- - - return result; -} - -// Line control -int GuiLine(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_LINE_MARGIN_TEXT) - #define RAYGUI_LINE_MARGIN_TEXT 12 - #endif - #if !defined(RAYGUI_LINE_TEXT_PADDING) - #define RAYGUI_LINE_TEXT_PADDING 4 - #endif - - int result = 0; - GuiState state = guiState; - - Color color = GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)); - - // Draw control - //-------------------------------------------------------------------- - if (text == NULL) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, bounds.width, 1 }, 0, BLANK, color); - else - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = bounds.height; - textBounds.x = bounds.x + RAYGUI_LINE_MARGIN_TEXT; - textBounds.y = bounds.y; - - // Draw line with embedded text label: "--- text --------------" - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); - GuiDrawText(text, textBounds, TEXT_ALIGN_LEFT, color); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + 12 + textBounds.width + 4, bounds.y + bounds.height/2, bounds.width - textBounds.width - RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); - } - //-------------------------------------------------------------------- - - return result; -} - -// Panel control -int GuiPanel(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_PANEL_BORDER_WIDTH) - #define RAYGUI_PANEL_BORDER_WIDTH 1 - #endif - - int result = 0; - GuiState state = guiState; - - // Text will be drawn as a header bar (if provided) - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; - if ((text != NULL) && (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f)) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; - - if (text != NULL) - { - // Move panel bounds after the header bar - bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - } - - // Draw control - //-------------------------------------------------------------------- - if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar - - GuiDrawRectangle(bounds, RAYGUI_PANEL_BORDER_WIDTH, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)), - GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BASE_COLOR_DISABLED : (int)BACKGROUND_COLOR))); - //-------------------------------------------------------------------- - - return result; -} - -// Tab Bar control -// NOTE: Using GuiToggle() for the TABS -int GuiTabBar(Rectangle bounds, char **text, int count, int *active) -{ - #define RAYGUI_TABBAR_ITEM_WIDTH 148 - - int result = -1; - //GuiState state = guiState; - - Rectangle tabBounds = { bounds.x, bounds.y, RAYGUI_TABBAR_ITEM_WIDTH, bounds.height }; - - if (*active < 0) *active = 0; - else if (*active > count - 1) *active = count - 1; - - int offsetX = 0; // Required in case tabs go out of screen - offsetX = (*active + 2)*RAYGUI_TABBAR_ITEM_WIDTH - GetScreenWidth(); - if (offsetX < 0) offsetX = 0; - - bool toggle = false; // Required for individual toggles - - // Draw control - //-------------------------------------------------------------------- - for (int i = 0; i < count; i++) - { - tabBounds.x = bounds.x + (RAYGUI_TABBAR_ITEM_WIDTH + 4)*i - offsetX; - - if (tabBounds.x < GetScreenWidth()) - { - // Draw tabs as toggle controls - int textAlignment = GuiGetStyle(TOGGLE, TEXT_ALIGNMENT); - int textPadding = GuiGetStyle(TOGGLE, TEXT_PADDING); - GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(TOGGLE, TEXT_PADDING, 8); - - if (i == (*active)) - { - toggle = true; - GuiToggle(tabBounds, text[i], &toggle); - } - else - { - toggle = false; - GuiToggle(tabBounds, text[i], &toggle); - if (toggle) *active = i; - } - - // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; - - GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); - GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); - - // Draw tab close button - // NOTE: Only draw close button for current tab: if (CheckCollisionPointRec(mousePosition, tabBounds)) - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); -#if defined(RAYGUI_NO_ICONS) - if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, "x")) result = i; -#else - if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, GuiIconText(ICON_CROSS_SMALL, NULL))) result = i; -#endif - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); - } - } - - // Draw tab-bar bottom line - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, 1 }, 0, BLANK, GetColor(GuiGetStyle(TOGGLE, BORDER_COLOR_NORMAL))); - //-------------------------------------------------------------------- - - return result; // Return as result the current TAB closing requested -} - -// Scroll Panel control -int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view) -{ - #define RAYGUI_MIN_SCROLLBAR_WIDTH 40 - #define RAYGUI_MIN_SCROLLBAR_HEIGHT 40 - #define RAYGUI_MIN_MOUSE_WHEEL_SPEED 20 - - int result = 0; - GuiState state = guiState; - - Rectangle temp = { 0 }; - if (view == NULL) view = &temp; - - Vector2 scrollPos = { 0.0f, 0.0f }; - if (scroll != NULL) scrollPos = *scroll; - - // Text will be drawn as a header bar (if provided) - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; - if (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; - - if (text != NULL) - { - // Move panel bounds after the header bar - bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + 1; - } - - bool hasHorizontalScrollBar = (content.width > bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; - bool hasVerticalScrollBar = (content.height > bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; - - // Recheck to account for the other scrollbar being visible - if (!hasHorizontalScrollBar) hasHorizontalScrollBar = (hasVerticalScrollBar && (content.width > (bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; - if (!hasVerticalScrollBar) hasVerticalScrollBar = (hasHorizontalScrollBar && (content.height > (bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; - - int horizontalScrollBarWidth = hasHorizontalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; - int verticalScrollBarWidth = hasVerticalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; - Rectangle horizontalScrollBar = { - (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + verticalScrollBarWidth : (float)bounds.x) + GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)bounds.y + bounds.height - horizontalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)bounds.width - verticalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)horizontalScrollBarWidth - }; - Rectangle verticalScrollBar = { - (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)bounds.x + bounds.width - verticalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH)), - (float)bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)verticalScrollBarWidth, - (float)bounds.height - horizontalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - }; - - // Make sure scroll bars have a minimum width/height - if (horizontalScrollBar.width < RAYGUI_MIN_SCROLLBAR_WIDTH) horizontalScrollBar.width = RAYGUI_MIN_SCROLLBAR_WIDTH; - if (verticalScrollBar.height < RAYGUI_MIN_SCROLLBAR_HEIGHT) verticalScrollBar.height = RAYGUI_MIN_SCROLLBAR_HEIGHT; - - // Calculate view area (area without the scrollbars) - *view = (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? - RAYGUI_CLITERAL(Rectangle){ bounds.x + verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth } : - RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth }; - - // Clip view area to the actual content size - if (view->width > content.width) view->width = content.width; - if (view->height > content.height) view->height = content.height; - - float horizontalMin = hasHorizontalScrollBar? ((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH); - float horizontalMax = hasHorizontalScrollBar? content.width - bounds.width + (float)verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH) - (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)verticalScrollBarWidth : 0) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); - float verticalMin = hasVerticalScrollBar? 0.0f : -1.0f; - float verticalMax = hasVerticalScrollBar? content.height - bounds.height + (float)horizontalScrollBarWidth + (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - -#if defined(SUPPORT_SCROLLBAR_KEY_INPUT) - if (hasHorizontalScrollBar) - { - if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - } - - if (hasVerticalScrollBar) - { - if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - } -#endif - float scrollDelta = GUI_SCROLL_DELTA; - - // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - - // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; - else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll - } - } - - // Normalize scroll values - if (scrollPos.x > -horizontalMin) scrollPos.x = -horizontalMin; - if (scrollPos.x < -horizontalMax) scrollPos.x = -horizontalMax; - if (scrollPos.y > -verticalMin) scrollPos.y = -verticalMin; - if (scrollPos.y < -verticalMax) scrollPos.y = -verticalMax; - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar - - GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background - - // Save size of the scrollbar slider - const int slider = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); - - // Draw horizontal scrollbar if visible - if (hasHorizontalScrollBar) - { - // Change scrollbar slider size to show the diff in size between the content width and the widget width - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth)/(int)content.width)*((int)bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth))); - scrollPos.x = (float)-GuiScrollBar(horizontalScrollBar, (int)-scrollPos.x, (int)horizontalMin, (int)horizontalMax); - } - else scrollPos.x = 0.0f; - - // Draw vertical scrollbar if visible - if (hasVerticalScrollBar) - { - // Change scrollbar slider size to show the diff in size between the content height and the widget height - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth)/(int)content.height)*((int)bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth))); - scrollPos.y = (float)-GuiScrollBar(verticalScrollBar, (int)-scrollPos.y, (int)verticalMin, (int)verticalMax); - } - else scrollPos.y = 0.0f; - - // Draw detail corner rectangle if both scroll bars are visible - if (hasHorizontalScrollBar && hasVerticalScrollBar) - { - Rectangle corner = { (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) + 2) : (horizontalScrollBar.x + horizontalScrollBar.width + 2), verticalScrollBar.y + verticalScrollBar.height + 2, (float)horizontalScrollBarWidth - 4, (float)verticalScrollBarWidth - 4 }; - GuiDrawRectangle(corner, 0, BLANK, GetColor(GuiGetStyle(LISTVIEW, TEXT + (state*3)))); - } - - // Draw scrollbar lines depending on current state - GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + (state*3))), BLANK); - - // Set scrollbar slider size back to the way it was before - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, slider); - //-------------------------------------------------------------------- - - if (scroll != NULL) *scroll = scrollPos; - - return result; -} - -// Label control -int GuiLabel(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - //... - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Button control, returns true when clicked -int GuiButton(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) result = 1; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(BUTTON, BORDER_WIDTH), GetColor(GuiGetStyle(BUTTON, BORDER + (state*3))), GetColor(GuiGetStyle(BUTTON, BASE + (state*3)))); - GuiDrawText(text, GetTextBounds(BUTTON, bounds), GuiGetStyle(BUTTON, TEXT_ALIGNMENT), GetColor(GuiGetStyle(BUTTON, TEXT + (state*3)))); - - if (state == STATE_FOCUSED) GuiTooltip(bounds); - //------------------------------------------------------------------ - - return result; // Button pressed: result = 1 -} - -// Label button control -int GuiLabelButton(Rectangle bounds, const char *text) -{ - GuiState state = guiState; - bool pressed = false; - - // NOTE: Force bounds.width to be all text - float textWidth = (float)GuiGetTextWidth(text); - if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check checkbox state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) pressed = true; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return pressed; -} - -// Toggle Button control -int GuiToggle(Rectangle bounds, const char *text, bool *active) -{ - int result = 0; - GuiState state = guiState; - - bool temp = false; - if (active == NULL) active = &temp; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check toggle button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else if (GUI_BUTTON_RELEASED) - { - state = STATE_NORMAL; - *active = !(*active); - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_NORMAL) - { - GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, ((*active)? BORDER_COLOR_PRESSED : (BORDER + state*3)))), GetColor(GuiGetStyle(TOGGLE, ((*active)? BASE_COLOR_PRESSED : (BASE + state*3))))); - GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, ((*active)? TEXT_COLOR_PRESSED : (TEXT + state*3))))); - } - else - { - GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + state*3)), GetColor(GuiGetStyle(TOGGLE, BASE + state*3))); - GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, TEXT + state*3))); - } - - if (state == STATE_FOCUSED) GuiTooltip(bounds); - //-------------------------------------------------------------------- - - return result; -} - -// Toggle Group control -int GuiToggleGroup(Rectangle bounds, const char *text, int *active) -{ - #if !defined(RAYGUI_TOGGLEGROUP_MAX_ITEMS) - #define RAYGUI_TOGGLEGROUP_MAX_ITEMS 32 - #endif - - int result = 0; - float initBoundsX = bounds.x; - - int temp = 0; - if (active == NULL) active = &temp; - - bool toggle = false; // Required for individual toggles - - // Get substrings items from text (items pointers) - int rows[RAYGUI_TOGGLEGROUP_MAX_ITEMS] = { 0 }; - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, rows); - - int prevRow = rows[0]; - - for (int i = 0; i < itemCount; i++) - { - if (prevRow != rows[i]) - { - bounds.x = initBoundsX; - bounds.y += (bounds.height + GuiGetStyle(TOGGLE, GROUP_PADDING)); - prevRow = rows[i]; - } - - if (i == (*active)) - { - toggle = true; - GuiToggle(bounds, items[i], &toggle); - } - else - { - toggle = false; - GuiToggle(bounds, items[i], &toggle); - if (toggle) *active = i; - } - - bounds.x += (bounds.width + GuiGetStyle(TOGGLE, GROUP_PADDING)); - } - - return result; -} - -// Toggle Slider control extended -int GuiToggleSlider(Rectangle bounds, const char *text, int *active) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - //bool toggle = false; // Required for individual toggles - - // Get substrings items from text (items pointers) - int itemCount = 0; - char **items = NULL; - - if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); - - Rectangle slider = { - 0, // Calculated later depending on the active toggle - bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - (bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - (itemCount + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING))/itemCount, - bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else if (GUI_BUTTON_RELEASED) - { - state = STATE_PRESSED; - (*active)++; - result = 1; - } - else state = STATE_FOCUSED; - } - - if ((*active) && (state != STATE_FOCUSED)) state = STATE_PRESSED; - } - - if (*active >= itemCount) *active = 0; - slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH) + (*active + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING) + (*active)*slider.width; - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + (state*3))), - GetColor(GuiGetStyle(TOGGLE, BASE_COLOR_NORMAL))); - - // Draw internal slider - if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_FOCUSED))); - else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - - // Draw text in slider - if (text != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(text); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = slider.x + slider.width/2 - textBounds.width/2; - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(items[*active], textBounds, GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(TOGGLE, TEXT + (state*3))), guiAlpha)); - } - //-------------------------------------------------------------------- - - return result; -} - -// Check Box control, returns 1 when state changed -int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) -{ - int result = 0; - GuiState state = guiState; - - bool temp = false; - if (checked == NULL) checked = &temp; - - Rectangle textBounds = { 0 }; - - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(CHECKBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - Rectangle totalBounds = { - (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, - bounds.y, - bounds.width + textBounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING), - bounds.height, - }; - - // Check checkbox state - if (CheckCollisionPointRec(mousePoint, totalBounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) - { - *checked = !(*checked); - result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(CHECKBOX, BORDER_WIDTH), GetColor(GuiGetStyle(CHECKBOX, BORDER + (state*3))), BLANK); - - if (*checked) - { - Rectangle check = { bounds.x + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), - bounds.y + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), - bounds.width - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)), - bounds.height - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)) }; - GuiDrawRectangle(check, 0, BLANK, GetColor(GuiGetStyle(CHECKBOX, TEXT + state*3))); - } - - GuiDrawText(text, textBounds, (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Combo Box control -int GuiComboBox(Rectangle bounds, const char *text, int *active) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - bounds.width -= (GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH) + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING)); - - Rectangle selector = { (float)bounds.x + bounds.width + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING), - (float)bounds.y, (float)GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH), (float)bounds.height }; - - // Get substrings items from text (items pointers, lengths and count) - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, NULL); - - if (*active < 0) *active = 0; - else if (*active > (itemCount - 1)) *active = itemCount - 1; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (CheckCollisionPointRec(mousePoint, bounds) || - CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_PRESSED) - { - *active += 1; - if (*active >= itemCount) *active = 0; // Cyclic combobox - } - - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - // Draw combo box main - GuiDrawRectangle(bounds, GuiGetStyle(COMBOBOX, BORDER_WIDTH), GetColor(GuiGetStyle(COMBOBOX, BORDER + (state*3))), GetColor(GuiGetStyle(COMBOBOX, BASE + (state*3)))); - GuiDrawText(items[*active], GetTextBounds(COMBOBOX, bounds), GuiGetStyle(COMBOBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(COMBOBOX, TEXT + (state*3)))); - - // Draw selector using a custom button - // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - GuiButton(selector, TextFormat("%i/%i", *active + 1, itemCount)); - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - //-------------------------------------------------------------------- - - return result; -} - -// Dropdown Box control -// NOTE: Returns mouse click -int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - int itemSelected = *active; - int itemFocused = -1; - - int direction = 0; // Dropdown box open direction: down (default) - if (GuiGetStyle(DROPDOWNBOX, DROPDOWN_ROLL_UP) == 1) direction = 1; // Up - - // Get substrings items from text (items pointers, lengths and count) - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, NULL); - - Rectangle boundsOpen = bounds; - boundsOpen.height = (itemCount + 1)*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - if (direction == 1) boundsOpen.y -= itemCount*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)) + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING); - - Rectangle itemBounds = bounds; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (editMode) - { - state = STATE_PRESSED; - - // Check if mouse has been pressed or released outside limits - if (!CheckCollisionPointRec(mousePoint, boundsOpen)) - { - if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; - } - - // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; - - // Check focused and selected item - for (int i = 0; i < itemCount; i++) - { - // Update item rectangle y position for next item - if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - - if (CheckCollisionPointRec(mousePoint, itemBounds)) - { - itemFocused = i; - if (GUI_BUTTON_RELEASED) - { - itemSelected = i; - result = 1; // Item selected - } - break; - } - } - - itemBounds = bounds; - } - else - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_PRESSED) - { - result = 1; - state = STATE_PRESSED; - } - else state = STATE_FOCUSED; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (editMode) GuiPanel(boundsOpen, NULL); - - GuiDrawRectangle(bounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER + state*3)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE + state*3))); - GuiDrawText(items[itemSelected], GetTextBounds(DROPDOWNBOX, bounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + state*3))); - - if (editMode) - { - // Draw visible items - for (int i = 0; i < itemCount; i++) - { - // Update item rectangle y position for next item - if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - - if (i == itemSelected) - { - GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_PRESSED))); - GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_PRESSED))); - } - else if (i == itemFocused) - { - GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_FOCUSED))); - GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_FOCUSED))); - } - else GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_NORMAL))); - } - } - - if (!GuiGetStyle(DROPDOWNBOX, DROPDOWN_ARROW_HIDDEN)) - { - // Draw arrows (using icon if available) -#if defined(RAYGUI_NO_ICONS) - GuiDrawText("v", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 2, 10, 10 }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); -#else - GuiDrawText(direction? "#121#" : "#120#", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 6, 10, 10 }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); // ICON_ARROW_DOWN_FILL -#endif - } - //-------------------------------------------------------------------- - - *active = itemSelected; - - // TODO: Use result to return more internal states: mouse-press out-of-bounds, mouse-press over selected-item... - return result; // Mouse click: result = 1 -} - -// Text Box control -// NOTE: Returns true on ENTER pressed (useful for data validation) -int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) -{ - #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) - #define RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN 20 // Frames to wait for autocursor movement - #endif - #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) - #define RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY 1 // Frames delay for autocursor movement - #endif - - int result = 0; - GuiState state = guiState; - - bool multiline = false; // TODO: Consider multiline text input - int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); - - Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); - int textLength = (text != NULL)? (int)strlen(text) : 0; // Get current text length - int thisCursorIndex = textBoxCursorIndex; - if (thisCursorIndex > textLength) thisCursorIndex = textLength; - int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box - - // Cursor rectangle - // NOTE: Position X value should be updated - Rectangle cursor = { - textBounds.x + textWidth + GuiGetStyle(DEFAULT, TEXT_SPACING), - textBounds.y + textBounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE), - 2, - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)*2 - }; - - if (cursor.height >= bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; - if (cursor.y < (bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH))) cursor.y = bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH); - - // Mouse cursor rectangle - // NOTE: Initialized outside of screen - Rectangle mouseCursor = cursor; - mouseCursor.x = -1; - mouseCursor.width = 1; - - // Blink-cursor frame counter - //if (!autoCursorMode) blinkCursorFrameCounter++; - //else blinkCursorFrameCounter = 0; - - // Update control - //-------------------------------------------------------------------- - // WARNING: Text editing is only supported under certain conditions: - if ((state != STATE_DISABLED) && // Control not disabled - !GuiGetStyle(TEXTBOX, TEXT_READONLY) && // TextBox not on read-only mode - !guiLocked && // Gui not locked - !guiControlExclusiveMode && // No gui slider on dragging - (wrapMode == TEXT_WRAP_NONE)) // No wrap mode - { - Vector2 mousePosition = GUI_POINTER_POSITION; - - if (editMode) - { - // GLOBAL: Auto-cursor movement logic - // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; - else autoCursorCounter = 0; - - bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); - - state = STATE_PRESSED; - - if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; - - // If text does not fit in the textbox and current cursor position is out of bounds, - // adding an index offset to text for drawing only what requires depending on cursor - while (textWidth >= textBounds.width) - { - int nextCodepointSize = 0; - GetCodepointNext(text + textIndexOffset, &nextCodepointSize); - - textIndexOffset += nextCodepointSize; - - textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); - } - - int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint - if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; - - // Encode codepoint as UTF-8 - int codepointSize = 0; - const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); - - // Handle text paste action - if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - const char *pasteText = GetClipboardText(); - if (pasteText != NULL) - { - int pasteLength = 0; - int pasteCodepoint; - int pasteCodepointSize; - - // Count how many codepoints to copy, stopping at the first unwanted control character - while (true) - { - pasteCodepoint = GetCodepointNext(pasteText + pasteLength, &pasteCodepointSize); - if (textLength + pasteLength + pasteCodepointSize >= textSize) break; - if (!(multiline && (pasteCodepoint == (int)'\n')) && !(pasteCodepoint >= 32)) break; - pasteLength += pasteCodepointSize; - } - - if (pasteLength > 0) - { - // Move forward data from cursor position - for (int i = textLength + pasteLength; i > textBoxCursorIndex; i--) text[i] = text[i - pasteLength]; - - // Paste data in at cursor - for (int i = 0; i < pasteLength; i++) text[textBoxCursorIndex + i] = pasteText[i]; - - textBoxCursorIndex += pasteLength; - textLength += pasteLength; - text[textLength] = '\0'; - } - } - } - else if (((multiline && (codepoint == (int)'\n')) || (codepoint >= 32)) && ((textLength + codepointSize) < textSize)) - { - // Adding codepoint to text, at current cursor position - - // Move forward data from cursor position - for (int i = (textLength + codepointSize); i > textBoxCursorIndex; i--) text[i] = text[i - codepointSize]; - - // Add new codepoint in current cursor position - for (int i = 0; i < codepointSize; i++) text[textBoxCursorIndex + i] = charEncoded[i]; - - textBoxCursorIndex += codepointSize; - textLength += codepointSize; - - // Make sure text last character is EOL - text[textLength] = '\0'; - } - - // Move cursor to start - if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; - - // Move cursor to end - if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; - - // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - int accCodepointSize = 0; - int nextCodepointSize; - int nextCodepoint; - - // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - bool puctuation = ispunct(nextCodepoint & 0xff); - while (offset < textLength) - { - if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) - break; - offset += nextCodepointSize; - accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Check whitespace to delete (ASCII only) - while (offset < textLength) - { - if (!isspace(nextCodepoint & 0xff)) break; - - offset += nextCodepointSize; - accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Move text after cursor forward (including final null terminator) - for (int i = offset; i <= textLength; i++) text[i - accCodepointSize] = text[i]; - - textLength -= accCodepointSize; - } - else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) - { - // Delete single codepoint from text, after current cursor position - - int nextCodepointSize = 0; - GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex + nextCodepointSize; i <= textLength; i++) text[i - nextCodepointSize] = text[i]; - - textLength -= nextCodepointSize; - } - - // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - int accCodepointSize = 0; - int prevCodepointSize = 0; - int prevCodepoint = 0; - - // Check whitespace to delete (ASCII only) - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if (!isspace(prevCodepoint & 0xff)) break; - - offset -= prevCodepointSize; - accCodepointSize += prevCodepointSize; - } - - // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - bool puctuation = ispunct(prevCodepoint & 0xff); - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; - - offset -= prevCodepointSize; - accCodepointSize += prevCodepointSize; - } - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - accCodepointSize] = text[i]; - - textLength -= accCodepointSize; - textBoxCursorIndex -= accCodepointSize; - } - else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) - { - // Delete single codepoint from text, before current cursor position - - int prevCodepointSize = 0; - - GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - prevCodepointSize] = text[i]; - - textLength -= prevCodepointSize; - textBoxCursorIndex -= prevCodepointSize; - } - - // Move cursor position with keys - if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - //int accCodepointSize = 0; - int prevCodepointSize = 0; - int prevCodepoint = 0; - - // Check whitespace to skip (ASCII only) - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if (!isspace(prevCodepoint & 0xff)) break; - - offset -= prevCodepointSize; - //accCodepointSize += prevCodepointSize; - } - - // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - bool puctuation = ispunct(prevCodepoint & 0xff); - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; - - offset -= prevCodepointSize; - //accCodepointSize += prevCodepointSize; - } - - textBoxCursorIndex = offset; - } - else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) - { - int prevCodepointSize = 0; - GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); - - textBoxCursorIndex -= prevCodepointSize; - } - else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - //int accCodepointSize = 0; - int nextCodepointSize; - int nextCodepoint; - - // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - bool puctuation = ispunct(nextCodepoint & 0xff); - while (offset < textLength) - { - if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) break; - - offset += nextCodepointSize; - //accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Check whitespace to skip (ASCII only) - while (offset < textLength) - { - if (!isspace(nextCodepoint & 0xff)) break; - - offset += nextCodepointSize; - //accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - textBoxCursorIndex = offset; - } - else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) - { - int nextCodepointSize = 0; - GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); - - textBoxCursorIndex += nextCodepointSize; - } - - // Move cursor position with mouse - if (CheckCollisionPointRec(mousePosition, textBounds)) // Mouse hover text - { - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/(float)guiFont.baseSize; - int codepointIndex = 0; - float glyphWidth = 0.0f; - float widthToMouseX = 0; - int mouseCursorIndex = 0; - - for (int i = textIndexOffset; i < textLength; i += codepointSize) - { - codepoint = GetCodepointNext(&text[i], &codepointSize); - codepointIndex = GetGlyphIndex(guiFont, codepoint); - - if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); - else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); - - if (mousePosition.x <= (textBounds.x + (widthToMouseX + glyphWidth/2))) - { - mouseCursor.x = textBounds.x + widthToMouseX; - mouseCursorIndex = i; - break; - } - - widthToMouseX += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - - // Check if mouse cursor is at the last position - int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) - { - mouseCursor.x = textBounds.x + textEndWidth; - mouseCursorIndex = textLength; - } - - // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) - { - cursor.x = mouseCursor.x; - textBoxCursorIndex = mouseCursorIndex; - } - } - else mouseCursor.x = -1; - - // Recalculate cursor position.y depending on textBoxCursorIndex - cursor.x = bounds.x + GuiGetStyle(TEXTBOX, TEXT_PADDING) + GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex) + GuiGetStyle(DEFAULT, TEXT_SPACING); - //if (multiline) cursor.y = GetTextLines() - - // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) - { - textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index - autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes - result = 1; - } - } - else - { - if (CheckCollisionPointRec(mousePosition, bounds)) - { - state = STATE_FOCUSED; - - if (GUI_BUTTON_PRESSED) - { - textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text - autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes - result = 1; - } - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_PRESSED) - { - GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED))); - } - else if (state == STATE_DISABLED) - { - GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED))); - } - else GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), BLANK); - - // Draw text considering index offset if required - // NOTE: Text index offset depends on cursor position - GuiDrawText(text + textIndexOffset, textBounds, GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TEXTBOX, TEXT + (state*3)))); - - // Draw cursor - if (editMode && !GuiGetStyle(TEXTBOX, TEXT_READONLY)) - { - //if (autoCursorMode || ((blinkCursorFrameCounter/40)%2 == 0)) - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); - - // Draw mouse position cursor (if required) - if (mouseCursor.x >= 0) GuiDrawRectangle(mouseCursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); - } - else if (state == STATE_FOCUSED) GuiTooltip(bounds); - //-------------------------------------------------------------------- - - return result; // Mouse button pressed: result = 1 -} - -/* -// Text Box control with multiple lines and word-wrap -// NOTE: This text-box is readonly, no editing supported by default -bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode) -{ - bool pressed = false; - - GuiSetStyle(TEXTBOX, TEXT_READONLY, 1); - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_WORD); // WARNING: If wrap mode enabled, text editing is not supported - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_TOP); - - // TODO: Implement methods to calculate cursor position properly - pressed = GuiTextBox(bounds, text, textSize, editMode); - - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_NONE); - GuiSetStyle(TEXTBOX, TEXT_READONLY, 0); - - return pressed; -} -*/ - -// Spinner control, returns selected value -int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) -{ - int result = 1; - GuiState state = guiState; - - int tempValue = *value; - - Rectangle valueBoxBounds = { - bounds.x + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING), - bounds.y, - bounds.width - 2*(GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING)), bounds.height }; - Rectangle leftButtonBound = { (float)bounds.x, (float)bounds.y, (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - Rectangle rightButtonBound = { (float)bounds.x + bounds.width - GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.y, - (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check spinner state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - -#if defined(RAYGUI_NO_ICONS) - if (GuiButton(leftButtonBound, "<")) tempValue--; - if (GuiButton(rightButtonBound, ">")) tempValue++; -#else - if (GuiButton(leftButtonBound, GuiIconText(ICON_ARROW_LEFT_FILL, NULL))) tempValue--; - if (GuiButton(rightButtonBound, GuiIconText(ICON_ARROW_RIGHT_FILL, NULL))) tempValue++; -#endif - - if (!editMode) - { - if (tempValue < minValue) tempValue = minValue; - if (tempValue > maxValue) tempValue = maxValue; - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - result = GuiValueBox(valueBoxBounds, NULL, &tempValue, minValue, maxValue, editMode); - - // Draw value selector custom buttons - // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, GuiGetStyle(VALUEBOX, BORDER_WIDTH)); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - - // Draw text label if provided - GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - *value = tempValue; - return result; -} - -// Value Box control, updates input text with numbers -// NOTE: Requires static variables: frameCounter -int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) -{ - #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) - #define RAYGUI_VALUEBOX_MAX_CHARS 32 - #endif - - int result = 0; - GuiState state = guiState; - - char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = { 0 }; - snprintf(textValue, RAYGUI_VALUEBOX_MAX_CHARS + 1, "%i", *value); - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - bool valueHasChanged = false; - - if (editMode) - { - state = STATE_PRESSED; - - int keyCount = (int)strlen(textValue); - - // Add or remove minus symbol - if (GUI_KEY_PRESSED(KEY_MINUS)) - { - if (textValue[0] == '-') - { - for (int i = 0 ; i < keyCount; i++) textValue[i] = textValue[i + 1]; - - keyCount--; - valueHasChanged = true; - } - else if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) - { - if (keyCount == 0) - { - textValue[0] = '0'; - textValue[1] = '\0'; - keyCount++; - } - - for (int i = keyCount ; i > -1; i--) textValue[i + 1] = textValue[i]; - - textValue[0] = '-'; - keyCount++; - valueHasChanged = true; - } - } - - // Add new digit to text value - if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) - { - int key = GUI_INPUT_KEY; - - // Only allow keys in range [48..57] - if ((key >= 48) && (key <= 57)) - { - textValue[keyCount] = (char)key; - keyCount++; - valueHasChanged = true; - } - } - - // Delete text - if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) - { - keyCount--; - textValue[keyCount] = '\0'; - valueHasChanged = true; - } - - if (valueHasChanged) *value = TextToInteger(textValue); - - // NOTE: Values are not clamped until user input finishes - //if (*value > maxValue) *value = maxValue; - //else if (*value < minValue) *value = minValue; - - if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) - { - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - - result = 1; - } - } - else - { - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - if (GUI_BUTTON_PRESSED) result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - Color baseColor = BLANK; - if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); - else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); - - GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); - GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); - - // Draw cursor rectangle - if (editMode) - { - // NOTE: ValueBox internal text is always centered - Rectangle cursor = { bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, - bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH) + 2, - 2, bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2 - 4 }; - if (cursor.height > bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); - } - - // Draw text label if provided - GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Floating point Value Box control, updates input val_str with numbers -// NOTE: Requires static variables: frameCounter -int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode) -{ - #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) - #define RAYGUI_VALUEBOX_MAX_CHARS 32 - #endif - - int result = 0; - GuiState state = guiState; - - //char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = "\0"; - //snprintf(textValue, sizeof(textValue), "%2.2f", *value); - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - bool valueHasChanged = false; - - if (editMode) - { - state = STATE_PRESSED; - - int keyCount = (int)strlen(textValue); - - // Add or remove minus symbol - if (GUI_KEY_PRESSED(KEY_MINUS)) - { - if (textValue[0] == '-') - { - for (int i = 0; i < keyCount; i++) textValue[i] = textValue[i + 1]; - - keyCount--; - valueHasChanged = true; - } - else if (keyCount < (RAYGUI_VALUEBOX_MAX_CHARS - 1)) - { - if (keyCount == 0) - { - textValue[0] = '0'; - textValue[1] = '\0'; - keyCount++; - } - - for (int i = keyCount; i > -1; i--) textValue[i + 1] = textValue[i]; - - textValue[0] = '-'; - keyCount++; - valueHasChanged = true; - } - } - - // Only allow keys in range [48..57] - if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) - { - if (GuiGetTextWidth(textValue) < bounds.width) - { - int key = GUI_INPUT_KEY; - if (((key >= 48) && (key <= 57)) || - (key == '.') || - ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position - ((keyCount == 0) && (key == '-'))) - { - textValue[keyCount] = (char)key; - keyCount++; - - valueHasChanged = true; - } - } - } - - // Pressed backspace - if (GUI_KEY_PRESSED(KEY_BACKSPACE)) - { - if (keyCount > 0) - { - keyCount--; - textValue[keyCount] = '\0'; - valueHasChanged = true; - } - } - - if (valueHasChanged) *value = TextToFloat(textValue); - - if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; - } - else - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - if (GUI_BUTTON_PRESSED) result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - Color baseColor = BLANK; - if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); - else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); - - GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); - GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); - - // Draw cursor - if (editMode) - { - // NOTE: ValueBox internal text is always centered - Rectangle cursor = {bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, - bounds.y + 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), 4, - bounds.height - 4*GuiGetStyle(VALUEBOX, BORDER_WIDTH)}; - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); - } - - // Draw text label if provided - GuiDrawText(text, textBounds, - (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, - GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Slider control with pro parameters -// NOTE: Other GuiSlider*() controls use this one -int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - GuiState state = guiState; - - float temp = (maxValue - minValue)/2.0f; - if (value == NULL) value = &temp; - float oldValue = *value; - - int sliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); - - Rectangle slider = { bounds.x, bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - 0, bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - // Get equivalent value and slider position from mousePosition.x - *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - if (!CheckCollisionPointRec(mousePoint, slider)) - { - // Get equivalent value and slider position from mousePosition.x - *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; - } - } - else state = STATE_FOCUSED; - } - - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - } - - // Control value change check - if (oldValue == *value) result = 0; - else result = 1; - - // Slider bar limits check - float sliderValue = (((*value - minValue)/(maxValue - minValue))*(bounds.width - sliderWidth - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))); - if (sliderWidth > 0) // Slider - { - slider.x += sliderValue; - slider.width = (float)sliderWidth; - if (slider.x <= (bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH); - else if ((slider.x + slider.width) >= (bounds.x + bounds.width)) slider.x = bounds.x + bounds.width - slider.width - GuiGetStyle(SLIDER, BORDER_WIDTH); - } - else if (sliderWidth == 0) // SliderBar - { - slider.x += GuiGetStyle(SLIDER, BORDER_WIDTH); - slider.width = sliderValue; - if (slider.width > bounds.width) slider.width = bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH); - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), GetColor(GuiGetStyle(SLIDER, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); - - // Draw slider internal bar (depends on state) - if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED))); - else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_PRESSED))); - else if (state == STATE_DISABLED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_DISABLED))); - - // Draw left/right text if provided - if (textLeft != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textLeft); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x - textBounds.width - GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - - if (textRight != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textRight); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - //-------------------------------------------------------------------- - - return result; -} - -// Slider Bar control extended, returns selected value -int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - int preSliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); - GuiSetStyle(SLIDER, SLIDER_WIDTH, 0); - result = GuiSlider(bounds, textLeft, textRight, value, minValue, maxValue); - GuiSetStyle(SLIDER, SLIDER_WIDTH, preSliderWidth); - - return result; -} - -// Progress Bar control extended, shows current progress value -int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - GuiState state = guiState; - - float temp = (maxValue - minValue)/2.0f; - if (value == NULL) value = &temp; - - // Progress bar - Rectangle progress = { bounds.x + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), - bounds.y + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) + GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING), 0, - bounds.height - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - 2*GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING) -1 }; - - // Update control - //-------------------------------------------------------------------- - if (*value > maxValue) *value = maxValue; - - // WARNING: Working with floats could lead to rounding issues - if ((state != STATE_DISABLED)) progress.width = ((float)*value/(maxValue - minValue))*(bounds.width - 2*GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)); - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_DISABLED) - { - GuiDrawRectangle(bounds, GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(PROGRESSBAR, BORDER + (state*3))), BLANK); - } - else - { - if (*value > minValue) - { - // Draw progress bar with colored border, more visual - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height - 2 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - } - else GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - - if (*value >= maxValue) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1}, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - else - { - // Draw borders not yet reached by value - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y + bounds.height - 1, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - } - - // Draw slider internal progress bar (depends on state) - if (GuiGetStyle(PROGRESSBAR, PROGRESS_SIDE) == 0) // Left-->Right - { - GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); - } - else // Right-->Left - { - progress.x = bounds.x + bounds.width - progress.width - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH); - GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); - } - } - - // Draw left/right text if provided - if (textLeft != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textLeft); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x - textBounds.width - GuiGetStyle(PROGRESSBAR, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - - if (textRight != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textRight); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(PROGRESSBAR, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - //-------------------------------------------------------------------- - - return result; -} - -// Status Bar control -int GuiStatusBar(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(STATUSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(STATUSBAR, BORDER + (state*3))), GetColor(GuiGetStyle(STATUSBAR, BASE + (state*3)))); - GuiDrawText(text, GetTextBounds(STATUSBAR, bounds), GuiGetStyle(STATUSBAR, TEXT_ALIGNMENT), GetColor(GuiGetStyle(STATUSBAR, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Dummy rectangle control, intended for placeholding -int GuiDummyRec(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); - GuiDrawText(text, GetTextBounds(DEFAULT, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(BUTTON, (state != STATE_DISABLED)? TEXT_COLOR_NORMAL : TEXT_COLOR_DISABLED))); - //------------------------------------------------------------------ - - return result; -} - -// List View control -int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active) -{ - int result = 0; - int itemCount = 0; - char **items = NULL; - - if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); - - result = GuiListViewEx(bounds, items, itemCount, scrollIndex, active, NULL); - - return result; -} - -// List View control with extended parameters -int GuiListViewEx(Rectangle bounds, char **text, int count, int *scrollIndex, int *active, int *focus) -{ - int result = 0; - GuiState state = guiState; - - int itemFocused = (focus == NULL)? -1 : *focus; - int itemSelected = (active == NULL)? -1 : *active; - - // Check if scroll bar is needed - bool useScrollBar = false; - if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; - - // Define base item rectangle [0] - Rectangle itemBounds = { 0 }; - itemBounds.x = bounds.x + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING); - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.width = bounds.width - 2*GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) - GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.height = (float)GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - if (useScrollBar) itemBounds.width -= GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); - - // Get items on the list - int visibleItems = (int)bounds.height/(GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - if (visibleItems > count) visibleItems = count; - - int startIndex = (scrollIndex == NULL)? 0 : *scrollIndex; - if ((startIndex < 0) || (startIndex > (count - visibleItems))) startIndex = 0; - int endIndex = startIndex + visibleItems; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check mouse inside list view - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - - // Check focused and selected item - for (int i = 0; i < visibleItems; i++) - { - if (CheckCollisionPointRec(mousePoint, itemBounds)) - { - itemFocused = startIndex + i; - if (GUI_BUTTON_PRESSED) - { - if (itemSelected == (startIndex + i)) itemSelected = -1; - else itemSelected = startIndex + i; - } - break; - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - } - - if (useScrollBar) - { - float scrollDelta = GUI_SCROLL_DELTA; - startIndex -= (int)scrollDelta; - - if (startIndex < 0) startIndex = 0; - else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; - - endIndex = startIndex + visibleItems; - if (endIndex > count) endIndex = count; - } - } - else itemFocused = -1; - - // Reset item rectangle y to [0] - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background - - // Draw visible items - for (int i = 0; ((i < visibleItems) && (text != NULL)); i++) - { - if (GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL)) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_NORMAL)), BLANK); - - if (state == STATE_DISABLED) - { - if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); - } - else - { - if (((startIndex + i) == itemSelected) && (active != NULL)) - { - // Draw item selected - GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); - } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned - { - // Draw item focused - GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); - } - else - { - // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); - } - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - } - - if (useScrollBar) - { - Rectangle scrollBarBounds = { - bounds.x + bounds.width - GuiGetStyle(LISTVIEW, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.y + GuiGetStyle(LISTVIEW, BORDER_WIDTH), (float)GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - }; - - // Calculate percentage of visible items and apply same percentage to scrollbar - float percentVisible = (float)(endIndex - startIndex)/count; - float sliderSize = bounds.height*percentVisible; - - int prevSliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); // Save default slider size - int prevScrollSpeed = GuiGetStyle(SCROLLBAR, SCROLL_SPEED); // Save default scroll speed - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)sliderSize); // Change slider size - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, count - visibleItems); // Change scroll speed - - startIndex = GuiScrollBar(scrollBarBounds, startIndex, 0, count - visibleItems); - - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, prevScrollSpeed); // Reset scroll speed to default - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, prevSliderSize); // Reset slider size to default - } - //-------------------------------------------------------------------- - - if (active != NULL) *active = itemSelected; - if (focus != NULL) *focus = itemFocused; - if (scrollIndex != NULL) *scrollIndex = startIndex; - - return result; -} - -// Color Panel control - Color (RGBA) variant -int GuiColorPanel(Rectangle bounds, const char *text, Color *color) -{ - int result = 0; - - Vector3 vcolor = { (float)color->r/255.0f, (float)color->g/255.0f, (float)color->b/255.0f }; - Vector3 hsv = ConvertRGBtoHSV(vcolor); - Vector3 prevHsv = hsv; // workaround to see if GuiColorPanelHSV modifies the hsv - - GuiColorPanelHSV(bounds, text, &hsv); - - // Check if the hsv was changed, only then change the color - // This is required, because the Color->HSV->Color conversion has precision errors - // Thus the assignment from HSV to Color should only be made, if the HSV has a new user-entered value - // Otherwise GuiColorPanel would often modify it's color without user input - // TODO: GuiColorPanelHSV could return 1 if the slider was dragged, to simplify this check - if (hsv.x != prevHsv.x || hsv.y != prevHsv.y || hsv.z != prevHsv.z) - { - Vector3 rgb = ConvertHSVtoRGB(hsv); - - // NOTE: Vector3ToColor() only available on raylib 1.8.1 - *color = RAYGUI_CLITERAL(Color){ (unsigned char)(255.0f*rgb.x), - (unsigned char)(255.0f*rgb.y), - (unsigned char)(255.0f*rgb.z), - color->a }; - } - return result; -} - -// Color Bar Alpha control -// NOTE: Returns alpha value normalized [0..1] -int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) -{ - #if !defined(RAYGUI_COLORBARALPHA_CHECKED_SIZE) - #define RAYGUI_COLORBARALPHA_CHECKED_SIZE 10 - #endif - - int result = 0; - GuiState state = guiState; - Rectangle selector = { (float)bounds.x + (*alpha)*bounds.width - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, - (float)bounds.y - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), - (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT), - (float)bounds.height + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2 }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - *alpha = (mousePoint.x - bounds.x)/bounds.width; - if (*alpha <= 0.0f) *alpha = 0.0f; - if (*alpha >= 1.0f) *alpha = 1.0f; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - *alpha = (mousePoint.x - bounds.x)/bounds.width; - if (*alpha <= 0.0f) *alpha = 0.0f; - if (*alpha >= 1.0f) *alpha = 1.0f; - //selector.x = bounds.x + (int)(((alpha - 0)/(100 - 0))*(bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))) - selector.width/2; - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - // Draw alpha bar: checked background - if (state != STATE_DISABLED) - { - int checksX = (int)bounds.width/RAYGUI_COLORBARALPHA_CHECKED_SIZE; - int checksY = (int)bounds.height/RAYGUI_COLORBARALPHA_CHECKED_SIZE; - - for (int x = 0; x < checksX; x++) - { - for (int y = 0; y < checksY; y++) - { - Rectangle check = { bounds.x + x*RAYGUI_COLORBARALPHA_CHECKED_SIZE, bounds.y + y*RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE }; - GuiDrawRectangle(check, 0, BLANK, ((x + y)%2)? Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.4f) : Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.4f)); - } - } - - DrawRectangleGradientEx(bounds, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha)); - } - else DrawRectangleGradientEx(bounds, Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - - // Draw alpha bar: selector - GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); - //-------------------------------------------------------------------- - - return result; -} - -// Color Bar Hue control -// Returns hue value normalized [0..1] -// NOTE: Other similar bars (for reference): -// Color GuiColorBarSat() [WHITE->color] -// Color GuiColorBarValue() [BLACK->color], HSV/HSL -// float GuiColorBarLuminance() [BLACK->WHITE] -int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) -{ - int result = 0; - GuiState state = guiState; - Rectangle selector = { (float)bounds.x - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), (float)bounds.y + (*hue)/360.0f*bounds.height - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, (float)bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2, (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - *hue = (mousePoint.y - bounds.y)*360/bounds.height; - if (*hue <= 0.0f) *hue = 0.0f; - if (*hue >= 359.0f) *hue = 359.0f; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - *hue = (mousePoint.y - bounds.y)*360/bounds.height; - if (*hue <= 0.0f) *hue = 0.0f; - if (*hue >= 359.0f) *hue = 359.0f; - - } - else state = STATE_FOCUSED; - - /*if (GUI_KEY_DOWN(KEY_UP)) - { - hue -= 2.0f; - if (hue <= 0.0f) hue = 0.0f; - } - else if (GUI_KEY_DOWN(KEY_DOWN)) - { - hue += 2.0f; - if (hue >= 360.0f) hue = 360.0f; - }*/ - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state != STATE_DISABLED) - { - // Draw hue bar:color bars - // TODO: Use directly DrawRectangleGradientEx(bounds, color1, color2, color2, color1); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + bounds.height/6), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 2*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 3*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 4*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 5*(bounds.height/6)), (int)bounds.width, (int)(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha)); - } - else DrawRectangleGradientV((int)bounds.x, (int)bounds.y, (int)bounds.width, (int)bounds.height, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - - // Draw hue bar: selector - GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); - //-------------------------------------------------------------------- - - return result; -} - -// Color Picker control -// NOTE: It's divided in multiple controls: -// Color GuiColorPanel(Rectangle bounds, Color color) -// float GuiColorBarAlpha(Rectangle bounds, float alpha) -// float GuiColorBarHue(Rectangle bounds, float value) -// NOTE: bounds define GuiColorPanel() size -// NOTE: this picker converts RGB to HSV, which can cause the Hue control to jump. If you have this problem, consider using the HSV variant instead -int GuiColorPicker(Rectangle bounds, const char *text, Color *color) -{ - int result = 0; - - Color temp = { 200, 0, 0, 255 }; - if (color == NULL) color = &temp; - - GuiColorPanel(bounds, NULL, color); - - Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; - //Rectangle boundsAlpha = { bounds.x, bounds.y + bounds.height + GuiGetStyle(COLORPICKER, BARS_PADDING), bounds.width, GuiGetStyle(COLORPICKER, BARS_THICK) }; - - // NOTE: this conversion can cause low hue-resolution, if the r, g and b value are very similar, which causes the hue bar to shift around when only the GuiColorPanel is used - Vector3 hsv = ConvertRGBtoHSV(RAYGUI_CLITERAL(Vector3){ (*color).r/255.0f, (*color).g/255.0f, (*color).b/255.0f }); - - GuiColorBarHue(boundsHue, NULL, &hsv.x); - - //color.a = (unsigned char)(GuiColorBarAlpha(boundsAlpha, (float)color.a/255.0f)*255.0f); - Vector3 rgb = ConvertHSVtoRGB(hsv); - - *color = RAYGUI_CLITERAL(Color){ (unsigned char)roundf(rgb.x*255.0f), (unsigned char)roundf(rgb.y*255.0f), (unsigned char)roundf(rgb.z*255.0f), (*color).a }; - - return result; -} - -// Color Picker control that avoids conversion to RGB and back to HSV on each call, thus avoiding jittering -// The user can call ConvertHSVtoRGB() to convert *colorHsv value to RGB -// NOTE: It's divided in multiple controls: -// int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -// int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) -// float GuiColorBarHue(Rectangle bounds, float value) -// NOTE: bounds define GuiColorPanelHSV() size -int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -{ - int result = 0; - - Vector3 tempHsv = { 0 }; - - if (colorHsv == NULL) - { - const Vector3 tempColor = { 200.0f/255.0f, 0.0f, 0.0f }; - tempHsv = ConvertRGBtoHSV(tempColor); - colorHsv = &tempHsv; - } - - GuiColorPanelHSV(bounds, NULL, colorHsv); - - const Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; - - GuiColorBarHue(boundsHue, NULL, &colorHsv->x); - - return result; -} - -// Color Panel control - HSV variant -int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -{ - int result = 0; - GuiState state = guiState; - Vector2 pickerSelector = { 0 }; - - const Color colWhite = { 255, 255, 255, 255 }; - const Color colBlack = { 0, 0, 0, 255 }; - - pickerSelector.x = bounds.x + (float)colorHsv->y*bounds.width; // HSV: Saturation - pickerSelector.y = bounds.y + (1.0f - (float)colorHsv->z)*bounds.height; // HSV: Value - - Vector3 maxHue = { colorHsv->x, 1.0f, 1.0f }; - Vector3 rgbHue = ConvertHSVtoRGB(maxHue); - Color maxHueCol = { (unsigned char)(255.0f*rgbHue.x), - (unsigned char)(255.0f*rgbHue.y), - (unsigned char)(255.0f*rgbHue.z), 255 }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - pickerSelector = mousePoint; - - if (pickerSelector.x < bounds.x) pickerSelector.x = bounds.x; - if (pickerSelector.x > bounds.x + bounds.width) pickerSelector.x = bounds.x + bounds.width; - if (pickerSelector.y < bounds.y) pickerSelector.y = bounds.y; - if (pickerSelector.y > bounds.y + bounds.height) pickerSelector.y = bounds.y + bounds.height; - - // Calculate color from picker - Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; - - colorPick.x /= (float)bounds.width; // Get normalized value on x - colorPick.y /= (float)bounds.height; // Get normalized value on y - - colorHsv->y = colorPick.x; - colorHsv->z = 1.0f - colorPick.y; - - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; - pickerSelector = mousePoint; - - // Calculate color from picker - Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; - - colorPick.x /= (float)bounds.width; // Get normalized value on x - colorPick.y /= (float)bounds.height; // Get normalized value on y - - colorHsv->y = colorPick.x; - colorHsv->z = 1.0f - colorPick.y; - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state != STATE_DISABLED) - { - DrawRectangleGradientEx(bounds, Fade(colWhite, guiAlpha), Fade(colWhite, guiAlpha), Fade(maxHueCol, guiAlpha), Fade(maxHueCol, guiAlpha)); - DrawRectangleGradientEx(bounds, Fade(colBlack, 0), Fade(colBlack, guiAlpha), Fade(colBlack, guiAlpha), Fade(colBlack, 0)); - - // Draw color picker: selector - Rectangle selector = { pickerSelector.x - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, pickerSelector.y - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE), (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE) }; - GuiDrawRectangle(selector, 0, BLANK, colWhite); - } - else - { - DrawRectangleGradientEx(bounds, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.6f), guiAlpha)); - } - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - //-------------------------------------------------------------------- - - return result; -} - -// Message Box control -int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons) -{ - #if !defined(RAYGUI_MESSAGEBOX_BUTTON_HEIGHT) - #define RAYGUI_MESSAGEBOX_BUTTON_HEIGHT 24 - #endif - #if !defined(RAYGUI_MESSAGEBOX_BUTTON_PADDING) - #define RAYGUI_MESSAGEBOX_BUTTON_PADDING 12 - #endif - - int result = -1; // Returns clicked button from buttons list, 0 refers to closed window button - - int buttonCount = 0; - char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); - Rectangle buttonBounds = { 0 }; - buttonBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - buttonBounds.y = bounds.y + bounds.height - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT - RAYGUI_MESSAGEBOX_BUTTON_PADDING; - buttonBounds.width = (bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; - buttonBounds.height = RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; - - //int textWidth = GuiGetTextWidth(message) + 2; - - Rectangle textBounds = { 0 }; - textBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - textBounds.width = bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*2; - textBounds.height = bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 3*RAYGUI_MESSAGEBOX_BUTTON_PADDING - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; - - // Draw control - //-------------------------------------------------------------------- - if (GuiWindowBox(bounds, title)) result = 0; - - int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(textBounds, message); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); - - prevTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - for (int i = 0; i < buttonCount; i++) - { - if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; - buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); - } - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevTextAlignment); - //-------------------------------------------------------------------- - - return result; -} - -// Text Input Box control, ask for text -int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive) -{ - #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT) - #define RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT 24 - #endif - #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_PADDING) - #define RAYGUI_TEXTINPUTBOX_BUTTON_PADDING 12 - #endif - #if !defined(RAYGUI_TEXTINPUTBOX_HEIGHT) - #define RAYGUI_TEXTINPUTBOX_HEIGHT 26 - #endif - - // Used to enable text edit mode - // WARNING: No more than one GuiTextInputBox() should be open at the same time - static bool textEditMode = false; - - int result = -1; - - int buttonCount = 0; - char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); - Rectangle buttonBounds = { 0 }; - buttonBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - buttonBounds.y = bounds.y + bounds.height - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - buttonBounds.width = (bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; - buttonBounds.height = RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT; - - int messageInputHeight = (int)bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - 2*RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - - Rectangle textBounds = { 0 }; - if (message != NULL) - { - int textSize = GuiGetTextWidth(message) + 2; - - textBounds.x = bounds.x + bounds.width/2 - textSize/2; - textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + messageInputHeight/4 - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - textBounds.width = (float)textSize; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - } - - Rectangle textBoxBounds = { 0 }; - textBoxBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - textBoxBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - RAYGUI_TEXTINPUTBOX_HEIGHT/2; - if (message == NULL) textBoxBounds.y = bounds.y + 24 + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - else textBoxBounds.y += (messageInputHeight/2 + messageInputHeight/4); - textBoxBounds.width = bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*2; - textBoxBounds.height = RAYGUI_TEXTINPUTBOX_HEIGHT; - - // Draw control - //-------------------------------------------------------------------- - if (GuiWindowBox(bounds, title)) result = 0; - - // Draw message if available - if (message != NULL) - { - int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(textBounds, message); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); - } - - int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - - if (secretViewActive != NULL) - { - static char stars[] = "****************"; - if (GuiTextBox(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x, textBoxBounds.y, textBoxBounds.width - 4 - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.height }, - ((*secretViewActive == 1) || textEditMode)? text : stars, textMaxSize, textEditMode)) textEditMode = !textEditMode; - - GuiToggle(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x + textBoxBounds.width - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.y, RAYGUI_TEXTINPUTBOX_HEIGHT, RAYGUI_TEXTINPUTBOX_HEIGHT }, (*secretViewActive == 1)? "#44#" : "#45#", secretViewActive); - } - else - { - if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; - } - - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); - - int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - for (int i = 0; i < buttonCount; i++) - { - if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; - buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); - } - - if (result >= 0) textEditMode = false; - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevBtnTextAlignment); - //-------------------------------------------------------------------- - - return result; // Result is the pressed button index -} - -// Grid control -// NOTE: Returns grid mouse-hover selected cell -// About drawing lines at subpixel spacing, simple put, not easy solution: -// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster -int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) -{ - // Grid lines alpha amount - #if !defined(RAYGUI_GRID_ALPHA) - #define RAYGUI_GRID_ALPHA 0.15f - #endif - - int result = 0; - GuiState state = guiState; - - Vector2 mousePoint = GUI_POINTER_POSITION; - Vector2 currentMouseCell = { -1, -1 }; - - float spaceWidth = spacing/(float)subdivs; - int linesV = (int)(bounds.width/spaceWidth) + 1; - int linesH = (int)(bounds.height/spaceWidth) + 1; - - int color = GuiGetStyle(DEFAULT, LINE_COLOR); - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - // NOTE: Cell values must be the upper left of the cell the mouse is in - currentMouseCell.x = floorf((mousePoint.x - bounds.x)/spacing); - currentMouseCell.y = floorf((mousePoint.y - bounds.y)/spacing); - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_DISABLED) color = GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED); - - if (subdivs > 0) - { - // Draw vertical grid lines - for (int i = 0; i < linesV; i++) - { - Rectangle lineV = { bounds.x + spacing*i/subdivs, bounds.y, 1, bounds.height + 1 }; - GuiDrawRectangle(lineV, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); - } - - // Draw horizontal grid lines - for (int i = 0; i < linesH; i++) - { - Rectangle lineH = { bounds.x, bounds.y + spacing*i/subdivs, bounds.width + 1, 1 }; - GuiDrawRectangle(lineH, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); - } - } - - if (mouseCell != NULL) *mouseCell = currentMouseCell; - return result; -} - -//---------------------------------------------------------------------------------- -// Tooltip management functions -// NOTE: Tooltips requires some global variables: tooltipPtr -//---------------------------------------------------------------------------------- -// Enable gui tooltips (global state) -void GuiEnableTooltip(void) { guiTooltip = true; } - -// Disable gui tooltips (global state) -void GuiDisableTooltip(void) { guiTooltip = false; } - -// Set tooltip string -void GuiSetTooltip(const char *tooltip) { guiTooltipPtr = tooltip; } - -//---------------------------------------------------------------------------------- -// Styles loading functions -//---------------------------------------------------------------------------------- - -// Load raygui style file (.rgs) -// NOTE: By default a binary file is expected, that file could contain a custom font, -// in that case, custom font image atlas is GRAY+ALPHA and pixel data can be compressed (DEFLATE) -void GuiLoadStyle(const char *fileName) -{ - #define MAX_LINE_BUFFER_SIZE 256 - - bool tryBinary = false; - if (!guiStyleLoaded) GuiLoadStyleDefault(); - - // Try reading the files as text file first - FILE *rgsFile = fopen(fileName, "rt"); - - if (rgsFile != NULL) - { - char buffer[MAX_LINE_BUFFER_SIZE] = { 0 }; - fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); - - if (buffer[0] == '#') - { - int controlId = 0; - int propertyId = 0; - unsigned int propertyValue = 0; - - while (!feof(rgsFile)) - { - switch (buffer[0]) - { - case 'p': - { - // Style property: p - - sscanf(buffer, "p %d %d 0x%x", &controlId, &propertyId, &propertyValue); - GuiSetStyle(controlId, propertyId, (int)propertyValue); - - } break; - case 'f': - { - // Style font: f - - int fontSize = 0; - char charmapFileName[256] = { 0 }; - char fontFileName[256] = { 0 }; - sscanf(buffer, "f %d %s %[^\r\n]s", &fontSize, charmapFileName, fontFileName); - - Font font = { 0 }; - int *codepoints = NULL; - int codepointCount = 0; - - if (charmapFileName[0] != '0') - { - // Load text data from file - // NOTE: Expected an UTF-8 array of codepoints, no separation - char *textData = LoadFileText(TextFormat("%s/%s", GetDirectoryPath(fileName), charmapFileName)); - codepoints = LoadCodepoints(textData, &codepointCount); - UnloadFileText(textData); - } - - if (fontFileName[0] != '\0') - { - // In case a font is already loaded and it is not default internal font, unload it - if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); - - if (codepointCount > 0) font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, codepoints, codepointCount); - else font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, NULL, 0); // Default to 95 standard codepoints - } - - // If font texture not properly loaded, revert to default font and size/spacing - if (font.texture.id == 0) - { - font = GetFontDefault(); - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); - } - - UnloadCodepoints(codepoints); - - if ((font.texture.id > 0) && (font.glyphCount > 0)) GuiSetFont(font); - - } break; - default: break; - } - - fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); - } - } - else tryBinary = true; - - fclose(rgsFile); - } - - if (tryBinary) - { - rgsFile = fopen(fileName, "rb"); - - if (rgsFile != NULL) - { - fseek(rgsFile, 0, SEEK_END); - int fileDataSize = ftell(rgsFile); - fseek(rgsFile, 0, SEEK_SET); - - if (fileDataSize > 0) - { - unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - if (fileData != NULL) - { - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - - GuiLoadStyleFromMemory(fileData, fileDataSize); - - RAYGUI_FREE(fileData); - } - } - - fclose(rgsFile); - } - } -} - -// Load style default over global style -void GuiLoadStyleDefault(void) -{ - // Setting this flag first to avoid cyclic function calls - // when calling GuiSetStyle() and GuiGetStyle() - guiStyleLoaded = true; - - // Initialize default LIGHT style property values - // WARNING: Default value are applied to all controls on set but - // they can be overwritten later on for every custom control - GuiSetStyle(DEFAULT, BORDER_COLOR_NORMAL, 0x838383ff); - GuiSetStyle(DEFAULT, BASE_COLOR_NORMAL, 0xc9c9c9ff); - GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0x686868ff); - GuiSetStyle(DEFAULT, BORDER_COLOR_FOCUSED, 0x5bb2d9ff); - GuiSetStyle(DEFAULT, BASE_COLOR_FOCUSED, 0xc9effeff); - GuiSetStyle(DEFAULT, TEXT_COLOR_FOCUSED, 0x6c9bbcff); - GuiSetStyle(DEFAULT, BORDER_COLOR_PRESSED, 0x0492c7ff); - GuiSetStyle(DEFAULT, BASE_COLOR_PRESSED, 0x97e8ffff); - GuiSetStyle(DEFAULT, TEXT_COLOR_PRESSED, 0x368bafff); - GuiSetStyle(DEFAULT, BORDER_COLOR_DISABLED, 0xb5c1c2ff); - GuiSetStyle(DEFAULT, BASE_COLOR_DISABLED, 0xe6e9e9ff); - GuiSetStyle(DEFAULT, TEXT_COLOR_DISABLED, 0xaeb7b8ff); - GuiSetStyle(DEFAULT, BORDER_WIDTH, 1); - GuiSetStyle(DEFAULT, TEXT_PADDING, 0); - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - // Initialize default extended property values - // NOTE: By default, extended property values are initialized to 0 - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); // DEFAULT, shared by all controls - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls - GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds - - // Initialize control-specific property values - // NOTE: Those properties are in default list but require specific values by control type - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 2); - GuiSetStyle(SLIDER, TEXT_PADDING, 4); - GuiSetStyle(PROGRESSBAR, TEXT_PADDING, 4); - GuiSetStyle(CHECKBOX, TEXT_PADDING, 4); - GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_RIGHT); - GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 0); - GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiSetStyle(TEXTBOX, TEXT_PADDING, 4); - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(VALUEBOX, TEXT_PADDING, 0); - GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(STATUSBAR, TEXT_PADDING, 8); - GuiSetStyle(STATUSBAR, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - - // Initialize extended property values - // NOTE: By default, extended property values are initialized to 0 - GuiSetStyle(TOGGLE, GROUP_PADDING, 2); - GuiSetStyle(SLIDER, SLIDER_WIDTH, 16); - GuiSetStyle(SLIDER, SLIDER_PADDING, 1); - GuiSetStyle(PROGRESSBAR, PROGRESS_PADDING, 1); - GuiSetStyle(CHECKBOX, CHECK_PADDING, 1); - GuiSetStyle(COMBOBOX, COMBO_BUTTON_WIDTH, 32); - GuiSetStyle(COMBOBOX, COMBO_BUTTON_SPACING, 2); - GuiSetStyle(DROPDOWNBOX, ARROW_PADDING, 16); - GuiSetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING, 2); - GuiSetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH, 24); - GuiSetStyle(VALUEBOX, SPINNER_BUTTON_SPACING, 2); - GuiSetStyle(SCROLLBAR, BORDER_WIDTH, 0); - GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, 0); - GuiSetStyle(SCROLLBAR, ARROWS_SIZE, 6); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING, 0); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, 16); - GuiSetStyle(SCROLLBAR, SCROLL_PADDING, 0); - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, 12); - GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, 28); - GuiSetStyle(LISTVIEW, LIST_ITEMS_SPACING, 2); - GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH, 1); - GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, 12); - GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_RIGHT_SIDE); - GuiSetStyle(COLORPICKER, COLOR_SELECTOR_SIZE, 8); - GuiSetStyle(COLORPICKER, HUEBAR_WIDTH, 16); - GuiSetStyle(COLORPICKER, HUEBAR_PADDING, 8); - GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT, 8); - GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW, 2); - - if (guiFont.texture.id != GetFontDefault().texture.id) - { - // Unload previous font texture - UnloadTexture(guiFont.texture); - RAYGUI_FREE(guiFont.recs); - RAYGUI_FREE(guiFont.glyphs); - guiFont.recs = NULL; - guiFont.glyphs = NULL; - - // Setup default raylib font - guiFont = GetFontDefault(); - - // NOTE: Default raylib font character 95 is a white square - Rectangle whiteChar = guiFont.recs[95]; - - // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering - SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); - } -} - -// Get text with icon id prepended -// NOTE: Useful to add icons by name id (enum) instead of -// a number that can change between ricon versions -const char *GuiIconText(int iconId, const char *text) -{ -#if defined(RAYGUI_NO_ICONS) - return NULL; -#else - static char buffer[1024] = { 0 }; - static char iconBuffer[16] = { 0 }; - - if (text != NULL) - { - memset(buffer, 0, 1024); - snprintf(buffer, 1024, "#%03i#", iconId); - - for (int i = 5; i < 1024; i++) - { - buffer[i] = text[i - 5]; - if (text[i - 5] == '\0') break; - } - - return buffer; - } - else - { - snprintf(iconBuffer, 16, "#%03i#", iconId); - - return iconBuffer; - } -#endif -} - -#if !defined(RAYGUI_NO_ICONS) -// Get full icons data pointer -unsigned int *GuiGetIcons(void) { return guiIconsPtr; } - -// Load raygui icons file (.rgi) -// NOTE: In case nameIds are required, they can be requested with loadIconsName, -// they are returned as a guiIconsName[iconCount][RAYGUI_ICON_MAX_NAME_LENGTH], -// WARNING: guiIconsName[]][] memory should be manually freed! -char **GuiLoadIcons(const char *fileName, bool loadIconsName) -{ - // Style File Structure (.rgi) - // ------------------------------------------------------ - // Offset | Size | Type | Description - // ------------------------------------------------------ - // 0 | 4 | char | Signature: "rGI " - // 4 | 2 | short | Version: 100 - // 6 | 2 | short | reserved - - // 8 | 2 | short | Num icons (N) - // 10 | 2 | short | Icons size (Options: 16, 32, 64) (S) - - // Icons name id (32 bytes per name id) - // foreach (icon) - // { - // 12+32*i | 32 | char | Icon NameId - // } - - // Icons data: One bit per pixel, stored as unsigned int array (depends on icon size) - // S*S pixels/32bit per unsigned int = K unsigned int per icon - // foreach (icon) - // { - // ... | K | unsigned int | Icon Data - // } - - FILE *rgiFile = fopen(fileName, "rb"); - - char **guiIconsName = NULL; - - if (rgiFile != NULL) - { - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - short iconCount = 0; - short iconSize = 0; - - fread(signature, 1, 4, rgiFile); - fread(&version, sizeof(short), 1, rgiFile); - fread(&reserved, sizeof(short), 1, rgiFile); - fread(&iconCount, sizeof(short), 1, rgiFile); - fread(&iconSize, sizeof(short), 1, rgiFile); - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'I') && - (signature[3] == ' ')) - { - if (loadIconsName) - { - guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); - for (int i = 0; i < iconCount; i++) - { - guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); - fread(guiIconsName[i], 1, RAYGUI_ICON_MAX_NAME_LENGTH, rgiFile); - } - } - else fseek(rgiFile, iconCount*RAYGUI_ICON_MAX_NAME_LENGTH, SEEK_CUR); - - // Read icons data directly over internal icons array - fread(guiIconsPtr, sizeof(unsigned int), (int)iconCount*((int)iconSize*(int)iconSize/32), rgiFile); - } - - fclose(rgiFile); - } - - return guiIconsName; -} - -// Load icons from memory -// WARNING: Binary files only -char **GuiLoadIconsFromMemory(const unsigned char *fileData, int dataSize, bool loadIconsName) -{ - unsigned char *fileDataPtr = (unsigned char *)fileData; - char **guiIconsName = NULL; - - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - short iconCount = 0; - short iconSize = 0; - - memcpy(signature, fileDataPtr, 4); - memcpy(&version, fileDataPtr + 4, sizeof(short)); - memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); - memcpy(&iconCount, fileDataPtr + 4 + 2 + 2, sizeof(short)); - memcpy(&iconSize, fileDataPtr + 4 + 2 + 2 + 2, sizeof(short)); - fileDataPtr += 12; - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'I') && - (signature[3] == ' ')) - { - if (loadIconsName) - { - guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); - for (int i = 0; i < iconCount; i++) - { - guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); - memcpy(guiIconsName[i], fileDataPtr, RAYGUI_ICON_MAX_NAME_LENGTH); - fileDataPtr += RAYGUI_ICON_MAX_NAME_LENGTH; - } - } - else - { - // Skip icon name data if not required - fileDataPtr += iconCount*RAYGUI_ICON_MAX_NAME_LENGTH; - } - - int iconDataSize = iconCount*((int)iconSize*(int)iconSize/32)*(int)sizeof(unsigned int); - guiIconsPtr = (unsigned int *)RAYGUI_CALLOC(iconDataSize, 1); - - memcpy(guiIconsPtr, fileDataPtr, iconDataSize); - } - - return guiIconsName; -} - -// Draw selected icon using rectangles pixel-by-pixel -void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color) -{ - #define BIT_CHECK(a,b) ((a) & (1u<<(b))) - - for (int i = 0, y = 0; i < RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32; i++) - { - for (int k = 0; k < 32; k++) - { - if (BIT_CHECK(guiIconsPtr[iconId*RAYGUI_ICON_DATA_ELEMENTS + i], k)) - { - #if !defined(RAYGUI_STANDALONE) - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ (float)posX + (k%RAYGUI_ICON_SIZE)*pixelSize, (float)posY + y*pixelSize, (float)pixelSize, (float)pixelSize }, 0, BLANK, color); - #endif - } - - if ((k == 15) || (k == 31)) y++; - } - } -} - -// Set icon drawing size -void GuiSetIconScale(int scale) -{ - if (scale >= 1) guiIconScale = scale; -} - -// Get text width considering gui style and icon size (if required) -int GuiGetTextWidth(const char *text) -{ - #if !defined(ICON_TEXT_PADDING) - #define ICON_TEXT_PADDING 4 - #endif - - Vector2 textSize = { 0 }; - int textIconOffset = 0; - - if ((text != NULL) && (text[0] != '\0')) - { - if (text[0] == '#') - { - for (int i = 1; (i < 5) && (text[i] != '\0'); i++) - { - if (text[i] == '#') - { - textIconOffset = i; - break; - } - } - } - - text += textIconOffset; - - // Make sure guiFont is set, GuiGetStyle() initializes it lazynessly - float fontSize = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - - // Custom MeasureText() implementation - if ((guiFont.texture.id > 0) && (text != NULL)) - { - // Get size in bytes of text, considering end of line and line break - int size = 0; - for (int i = 0; i < MAX_LINE_BUFFER_SIZE; i++) - { - if ((text[i] != '\0') && (text[i] != '\n')) size++; - else break; - } - - float scaleFactor = fontSize/(float)guiFont.baseSize; - textSize.y = (float)guiFont.baseSize*scaleFactor; - float glyphWidth = 0.0f; - - for (int i = 0, codepointSize = 0; i < size; i += codepointSize) - { - int codepoint = GetCodepointNext(&text[i], &codepointSize); - int codepointIndex = GetGlyphIndex(guiFont, codepoint); - - if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); - else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); - - textSize.x += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - } - - if (textIconOffset > 0) textSize.x += (RAYGUI_ICON_SIZE + ICON_TEXT_PADDING); - } - - return (int)textSize.x; -} - -#endif // !RAYGUI_NO_ICONS - -//---------------------------------------------------------------------------------- -// Module Internal Functions Definition -//---------------------------------------------------------------------------------- -// Load style from memory -// WARNING: Binary files only -static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize) -{ - unsigned char *fileDataPtr = (unsigned char *)fileData; - - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - int propertyCount = 0; - - memcpy(signature, fileDataPtr, 4); - memcpy(&version, fileDataPtr + 4, sizeof(short)); - memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); - memcpy(&propertyCount, fileDataPtr + 4 + 2 + 2, sizeof(int)); - fileDataPtr += 12; - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'S') && - (signature[3] == ' ')) - { - short controlId = 0; - short propertyId = 0; - unsigned int propertyValue = 0; - - for (int i = 0; i < propertyCount; i++) - { - memcpy(&controlId, fileDataPtr, sizeof(short)); - memcpy(&propertyId, fileDataPtr + 2, sizeof(short)); - memcpy(&propertyValue, fileDataPtr + 2 + 2, sizeof(unsigned int)); - fileDataPtr += 8; - - if (controlId == 0) // DEFAULT control - { - // If a DEFAULT property is loaded, it is propagated to all controls - // NOTE: All DEFAULT properties should be defined first in the file - GuiSetStyle(0, (int)propertyId, propertyValue); - - if (propertyId < RAYGUI_MAX_PROPS_BASE) for (int j = 1; j < RAYGUI_MAX_CONTROLS; j++) GuiSetStyle(j, (int)propertyId, propertyValue); - } - else GuiSetStyle((int)controlId, (int)propertyId, propertyValue); - } - - // Font loading is highly dependant on raylib API to load font data and image - -#if !defined(RAYGUI_STANDALONE) - // Load custom font if available - int fontDataSize = 0; - memcpy(&fontDataSize, fileDataPtr, sizeof(int)); - fileDataPtr += 4; - - if (fontDataSize > 0) - { - Font font = { 0 }; - int fontType = 0; // 0-Normal, 1-SDF - - memcpy(&font.baseSize, fileDataPtr, sizeof(int)); - memcpy(&font.glyphCount, fileDataPtr + 4, sizeof(int)); - memcpy(&fontType, fileDataPtr + 4 + 4, sizeof(int)); - fileDataPtr += 12; - - // Load font white rectangle - Rectangle fontWhiteRec = { 0 }; - memcpy(&fontWhiteRec, fileDataPtr, sizeof(Rectangle)); - fileDataPtr += 16; - - // Load font image parameters - int fontImageUncompSize = 0; - int fontImageCompSize = 0; - memcpy(&fontImageUncompSize, fileDataPtr, sizeof(int)); - memcpy(&fontImageCompSize, fileDataPtr + 4, sizeof(int)); - fileDataPtr += 8; - - Image imFont = { 0 }; - imFont.mipmaps = 1; - memcpy(&imFont.width, fileDataPtr, sizeof(int)); - memcpy(&imFont.height, fileDataPtr + 4, sizeof(int)); - memcpy(&imFont.format, fileDataPtr + 4 + 4, sizeof(int)); - fileDataPtr += 12; - - if ((fontImageCompSize > 0) && (fontImageCompSize != fontImageUncompSize)) - { - // Compressed font atlas image data (DEFLATE), it requires DecompressData() - int dataUncompSize = 0; - unsigned char *compData = (unsigned char *)RAYGUI_CALLOC(fontImageCompSize, sizeof(unsigned char)); - memcpy(compData, fileDataPtr, fontImageCompSize); - fileDataPtr += fontImageCompSize; - - imFont.data = DecompressData(compData, fontImageCompSize, &dataUncompSize); - - // Security check, dataUncompSize must match the provided fontImageUncompSize - if (dataUncompSize != fontImageUncompSize) RAYGUI_LOG("WARNING: Uncompressed font atlas image data could be corrupted"); - - RAYGUI_FREE(compData); - } - else - { - // Font atlas image data is not compressed - imFont.data = (unsigned char *)RAYGUI_CALLOC(fontImageUncompSize, sizeof(unsigned char)); - memcpy(imFont.data, fileDataPtr, fontImageUncompSize); - fileDataPtr += fontImageUncompSize; - } - - if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); - font.texture = LoadTextureFromImage(imFont); - - RAYGUI_FREE(imFont.data); - - // Validate font atlas texture was loaded correctly - if (font.texture.id != 0) - { - // Load font recs data - int recsDataSize = font.glyphCount*sizeof(Rectangle); - int recsDataCompressedSize = 0; - - // WARNING: Version 400 adds the compression size parameter - if (version >= 400) - { - // RGS files version 400 support compressed recs data - memcpy(&recsDataCompressedSize, fileDataPtr, sizeof(int)); - fileDataPtr += sizeof(int); - } - - if ((recsDataCompressedSize > 0) && (recsDataCompressedSize != recsDataSize)) - { - // Recs data is compressed, uncompress it - unsigned char *recsDataCompressed = (unsigned char *)RAYGUI_CALLOC(recsDataCompressedSize, sizeof(unsigned char)); - - memcpy(recsDataCompressed, fileDataPtr, recsDataCompressedSize); - fileDataPtr += recsDataCompressedSize; - - int recsDataUncompSize = 0; - font.recs = (Rectangle *)DecompressData(recsDataCompressed, recsDataCompressedSize, &recsDataUncompSize); - - // Security check, data uncompressed size must match the expected original data size - if (recsDataUncompSize != recsDataSize) RAYGUI_LOG("WARNING: Uncompressed font recs data could be corrupted"); - - RAYGUI_FREE(recsDataCompressed); - } - else - { - // Recs data is uncompressed - font.recs = (Rectangle *)RAYGUI_CALLOC(font.glyphCount, sizeof(Rectangle)); - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.recs[i], fileDataPtr, sizeof(Rectangle)); - fileDataPtr += sizeof(Rectangle); - } - } - - // Load font glyphs info data - int glyphsDataSize = font.glyphCount*16; // 16 bytes data per glyph - int glyphsDataCompressedSize = 0; - - // WARNING: Version 400 adds the compression size parameter - if (version >= 400) - { - // RGS files version 400 support compressed glyphs data - memcpy(&glyphsDataCompressedSize, fileDataPtr, sizeof(int)); - fileDataPtr += sizeof(int); - } - - // Allocate required glyphs space to fill with data - font.glyphs = (GlyphInfo *)RAYGUI_CALLOC(font.glyphCount, sizeof(GlyphInfo)); - - if ((glyphsDataCompressedSize > 0) && (glyphsDataCompressedSize != glyphsDataSize)) - { - // Glyphs data is compressed, uncompress it - unsigned char *glypsDataCompressed = (unsigned char *)RAYGUI_CALLOC(glyphsDataCompressedSize, sizeof(unsigned char)); - - memcpy(glypsDataCompressed, fileDataPtr, glyphsDataCompressedSize); - fileDataPtr += glyphsDataCompressedSize; - - int glyphsDataUncompSize = 0; - unsigned char *glyphsDataUncomp = DecompressData(glypsDataCompressed, glyphsDataCompressedSize, &glyphsDataUncompSize); - - // Security check, data uncompressed size must match the expected original data size - if (glyphsDataUncompSize != glyphsDataSize) RAYGUI_LOG("WARNING: Uncompressed font glyphs data could be corrupted"); - - unsigned char *glyphsDataUncompPtr = glyphsDataUncomp; - - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.glyphs[i].value, glyphsDataUncompPtr, sizeof(int)); - memcpy(&font.glyphs[i].offsetX, glyphsDataUncompPtr + 4, sizeof(int)); - memcpy(&font.glyphs[i].offsetY, glyphsDataUncompPtr + 8, sizeof(int)); - memcpy(&font.glyphs[i].advanceX, glyphsDataUncompPtr + 12, sizeof(int)); - glyphsDataUncompPtr += 16; - } - - RAYGUI_FREE(glypsDataCompressed); - RAYGUI_FREE(glyphsDataUncomp); - } - else - { - // Glyphs data is uncompressed - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.glyphs[i].value, fileDataPtr, sizeof(int)); - memcpy(&font.glyphs[i].offsetX, fileDataPtr + 4, sizeof(int)); - memcpy(&font.glyphs[i].offsetY, fileDataPtr + 8, sizeof(int)); - memcpy(&font.glyphs[i].advanceX, fileDataPtr + 12, sizeof(int)); - fileDataPtr += 16; - } - } - } - else font = GetFontDefault(); // Fallback in case of errors loading font atlas texture - - GuiSetFont(font); - - // Set font texture source rectangle to be used as white texture to draw shapes - // NOTE: It makes possible to draw shapes and text (full UI) in a single draw call - if ((fontWhiteRec.x > 0) && - (fontWhiteRec.y > 0) && - (fontWhiteRec.width > 0) && - (fontWhiteRec.height > 0)) SetShapesTexture(font.texture, fontWhiteRec); - } -#endif - } -} - -// Get text bounds considering control bounds -static Rectangle GetTextBounds(int control, Rectangle bounds) -{ - Rectangle textBounds = bounds; - - textBounds.x = bounds.x + GuiGetStyle(control, BORDER_WIDTH); - textBounds.y = bounds.y + GuiGetStyle(control, BORDER_WIDTH) + GuiGetStyle(control, TEXT_PADDING); - textBounds.width = bounds.width - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); - textBounds.height = bounds.height - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); // NOTE: Text is processed line per line! - - // Depending on control, TEXT_PADDING and TEXT_ALIGNMENT properties could affect the text-bounds - switch (control) - { - case COMBOBOX: - case DROPDOWNBOX: - case LISTVIEW: - // TODO: Special cases (no label): COMBOBOX, DROPDOWNBOX, LISTVIEW - case SLIDER: - case CHECKBOX: - case VALUEBOX: - case CONTROL11: - // TODO: More special cases (label on side): SLIDER, CHECKBOX, VALUEBOX, SPINNER - default: - { - // TODO: WARNING: TEXT_ALIGNMENT is already considered in GuiDrawText() - if (GuiGetStyle(control, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT) textBounds.x -= GuiGetStyle(control, TEXT_PADDING); - else textBounds.x += GuiGetStyle(control, TEXT_PADDING); - } - break; - } - - return textBounds; -} - -// Get text icon if provided and move text cursor -// NOTE: Up to #999# values supported for iconId -static const char *GetTextIcon(const char *text, int *iconId) -{ -#if !defined(RAYGUI_NO_ICONS) - *iconId = -1; - if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found - { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' - - int pos = 1; - while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) - { - iconValue[pos - 1] = text[pos]; - pos++; - } - - if (text[pos] == '#') - { - *iconId = TextToInteger(iconValue); - - // Move text pointer after icon - // WARNING: If only icon provided, it could point to EOL character: '\0' - if (*iconId >= 0) text += (pos + 1); - } - } -#endif - - return text; -} - -// Get text divided into lines (by line-breaks '\n') -// WARNING: It returns pointers to new lines but it does not add NULL ('\0') terminator! -static const char **GetTextLines(const char *text, int *count) -{ - #define RAYGUI_MAX_TEXT_LINES 128 - - static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; - for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - - int textLength = (int)strlen(text); - - lines[0] = text; - *count = 1; - - for (int i = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) - { - if ((text[i] == '\n') && ((i + 1) < textLength)) - { - lines[*count] = &text[i + 1]; - *count += 1; - } - } - - return lines; -} - -// Get text width to next space for provided string -static float GetNextSpaceWidth(const char *text, int *nextSpaceIndex) -{ - float width = 0; - int codepointByteCount = 0; - int codepoint = 0; - int index = 0; - float glyphWidth = 0; - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; - - for (int i = 0; text[i] != '\0'; i++) - { - if (text[i] != ' ') - { - codepoint = GetCodepoint(&text[i], &codepointByteCount); - index = GetGlyphIndex(guiFont, codepoint); - glyphWidth = (guiFont.glyphs[index].advanceX == 0)? guiFont.recs[index].width*scaleFactor : guiFont.glyphs[index].advanceX*scaleFactor; - width += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - else - { - *nextSpaceIndex = i; - break; - } - } - - return width; -} - -// Gui draw text using default font -static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint) -{ - #define TEXT_VALIGN_PIXEL_OFFSET(h) ((int)h%2) // Vertical alignment for pixel perfect - - #if !defined(ICON_TEXT_PADDING) - #define ICON_TEXT_PADDING 4 - #endif - - if ((text == NULL) || (text[0] == '\0')) return; // Security check - - // PROCEDURE: - // - Text is processed line per line - // - For every line, horizontal alignment is defined - // - For all text, vertical alignment is defined (multiline text only) - // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) - - // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: GuiTextSplit() function can't be used now because it can have already been used - // before the GuiDrawText() call and its buffer is static, it would be overriden :( - int lineCount = 0; - const char **lines = GetTextLines(text, &lineCount); - - // Text style variables - //int alignment = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT); - int alignmentVertical = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL); - int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing - - // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - float posOffsetY = 0.0f; - - for (int i = 0; i < lineCount; i++) - { - int iconId = 0; - lines[i] = GetTextIcon(lines[i], &iconId); // Check text for icon and move cursor - - // Get text position depending on alignment and iconId - //--------------------------------------------------------------------------------- - Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; - float textBoundsWidthOffset = 0.0f; - - // NOTE: Get text size after icon has been processed - // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? - int textSizeX = GuiGetTextWidth(lines[i]); - - // If text requires an icon, add size to measure - if (iconId >= 0) - { - textSizeX += RAYGUI_ICON_SIZE*guiIconScale; - - // WARNING: If only icon provided, text could be pointing to EOF character: '\0' -#if !defined(RAYGUI_NO_ICONS) - if ((lines[i] != NULL) && (lines[i][0] != '\0')) textSizeX += ICON_TEXT_PADDING; -#endif - } - - // Check guiTextAlign global variables - switch (alignment) - { - case TEXT_ALIGN_LEFT: textBoundsPosition.x = textBounds.x; break; - case TEXT_ALIGN_CENTER: textBoundsPosition.x = textBounds.x + textBounds.width/2 - textSizeX/2; break; - case TEXT_ALIGN_RIGHT: textBoundsPosition.x = textBounds.x + textBounds.width - textSizeX; break; - default: break; - } - - if (textSizeX > textBounds.width && (lines[i] != NULL) && (lines[i][0] != '\0')) textBoundsPosition.x = textBounds.x; - - switch (alignmentVertical) - { - // Only valid in case of wordWrap = 0; - case TEXT_ALIGN_TOP: textBoundsPosition.y = textBounds.y + posOffsetY; break; - case TEXT_ALIGN_MIDDLE: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height/2 - totalHeight/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; - case TEXT_ALIGN_BOTTOM: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height - totalHeight + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; - default: break; - } - - // NOTE: Make sure getting pixel-perfect coordinates, - // In case of decimals, it could result in text positioning artifacts - textBoundsPosition.x = (float)((int)textBoundsPosition.x); - textBoundsPosition.y = (float)((int)textBoundsPosition.y); - //--------------------------------------------------------------------------------- - - // Draw text (with icon if available) - //--------------------------------------------------------------------------------- -#if !defined(RAYGUI_NO_ICONS) - if (iconId >= 0) - { - // NOTE: Considering icon height, probably different than text size - GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); - textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); - textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); - } -#endif - // Get size in bytes of text, - // considering end of line and line break - int lineSize = 0; - for (int c = 0; (lines[i][c] != '\0') && (lines[i][c] != '\n') && (lines[i][c] != '\r'); c++, lineSize++){ } - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; - - int lastSpaceIndex = 0; - bool tempWrapCharMode = false; - - int textOffsetY = 0; - float textOffsetX = 0.0f; - float glyphWidth = 0; - - int ellipsisWidth = GuiGetTextWidth("..."); - bool textOverflow = false; - for (int c = 0, codepointSize = 0; c < lineSize; c += codepointSize) - { - int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); - int index = GetGlyphIndex(guiFont, codepoint); - - // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte - if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size - - // Get glyph width to check if it goes out of bounds - if (guiFont.glyphs[index].advanceX == 0) glyphWidth = ((float)guiFont.recs[index].width*scaleFactor); - else glyphWidth = (float)guiFont.glyphs[index].advanceX*scaleFactor; - - // Wrap mode text measuring, to validate if - // it can be drawn or a new line is required - if (wrapMode == TEXT_WRAP_CHAR) - { - // Jump to next line if current character reach end of the box limits - if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) - { - textOffsetX = 0.0f; - textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - - if (tempWrapCharMode) // Wrap at char level when too long words - { - wrapMode = TEXT_WRAP_WORD; - tempWrapCharMode = false; - } - } - } - else if (wrapMode == TEXT_WRAP_WORD) - { - if (codepoint == 32) lastSpaceIndex = c; - - // Get width to next space in line - int nextSpaceIndex = 0; - float nextSpaceWidth = GetNextSpaceWidth(lines[i] + c, &nextSpaceIndex); - - int nextSpaceIndex2 = 0; - float nextWordSize = GetNextSpaceWidth(lines[i] + lastSpaceIndex + 1, &nextSpaceIndex2); - - if (nextWordSize > textBounds.width - textBoundsWidthOffset) - { - // Considering the case the next word is longer than bounds - tempWrapCharMode = true; - wrapMode = TEXT_WRAP_CHAR; - } - else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) - { - textOffsetX = 0.0f; - textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - } - } - - if (codepoint == '\n') break; // WARNING: Lines are already processed manually, no need to keep drawing after this codepoint - else - { - // TODO: There are multiple types of spaces in Unicode, - // maybe it's a good idea to add support for more: http://jkorpela.fi/chars/spaces.html - if ((codepoint != ' ') && (codepoint != '\t')) // Do not draw codepoints with no glyph - { - if (wrapMode == TEXT_WRAP_NONE) - { - // Draw only required text glyphs fitting the textBounds.width - if (textSizeX > textBounds.width) - { - if (textOffsetX <= (textBounds.width - glyphWidth - textBoundsWidthOffset - ellipsisWidth)) - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - else if (!textOverflow) - { - textOverflow = true; - - for (int j = 0; j < ellipsisWidth; j += ellipsisWidth/3) - { - DrawTextCodepoint(guiFont, '.', RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX + j, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - } - else - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) - { - // Draw only glyphs inside the bounds - if ((textBoundsPosition.y + textOffsetY) <= (textBounds.y + textBounds.height - GuiGetStyle(DEFAULT, TEXT_SIZE))) - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - } - - if (guiFont.glyphs[index].advanceX == 0) textOffsetX += ((float)guiFont.recs[index].width*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - else textOffsetX += ((float)guiFont.glyphs[index].advanceX*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - } - - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) - posOffsetY += (textOffsetY + GuiGetStyle(DEFAULT, TEXT_SIZE)); - //--------------------------------------------------------------------------------- - } - -#if defined(RAYGUI_DEBUG_TEXT_BOUNDS) - GuiDrawRectangle(textBounds, 0, WHITE, Fade(BLUE, 0.4f)); -#endif -} - -// Gui draw rectangle using default raygui plain style with borders -static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color) -{ - if (color.a > 0) - { - // Draw rectangle filled with color - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, GuiFade(color, guiAlpha)); - } - - if (borderWidth > 0) - { - // Draw rectangle border lines with color - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x + (int)rec.width - borderWidth, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x, (int)rec.y + (int)rec.height - borderWidth, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); - } - -#if defined(RAYGUI_DEBUG_RECS_BOUNDS) - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, Fade(RED, 0.4f)); -#endif -} - -// Draw tooltip using control bounds -static void GuiTooltip(Rectangle controlRec) -{ - if (!guiLocked && guiTooltip && (guiTooltipPtr != NULL) && !guiControlExclusiveMode) - { - Vector2 textSize = MeasureTextEx(GuiGetFont(), guiTooltipPtr, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - - if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - - int lineCount = 0; - GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count - if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) - controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); - - // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); - - int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); - int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_PADDING, 0); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); - GuiSetStyle(LABEL, TEXT_PADDING, textPadding); - } -} - -// Split controls text into multiple strings -// Also check for multiple columns (required by GuiToggleGroup()) -static char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow) -{ - // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) - // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, - // all used memory is static... it has some limitations: - // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS - // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE - // NOTE: Those definitions could be externally provided if required - - // TODO: HACK: GuiTextSplit() - Review how textRows are returned to user - // textRow is an externally provided array of integers that stores row number for every splitted string - - #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) - #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 - #endif - #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) - #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 - #endif - - static char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; // String pointers array (points to buffer data) - static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; // Buffer data (text input copy with '\0' added) - memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); - - result[0] = buffer; - int counter = 1; - - if (textRow != NULL) textRow[0] = 0; - - // Count how many substrings text contains and point to every one of them - for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) - { - buffer[i] = text[i]; - if (buffer[i] == '\0') break; - else if ((buffer[i] == delimiter) || (buffer[i] == '\n')) - { - result[counter] = buffer + i + 1; - - if (textRow != NULL) - { - if (buffer[i] == '\n') textRow[counter] = textRow[counter - 1] + 1; - else textRow[counter] = textRow[counter - 1]; - } - - buffer[i] = '\0'; // Set an end of string at this point - - counter++; - if (counter >= RAYGUI_TEXTSPLIT_MAX_ITEMS) break; - } - } - - *count = counter; - - return result; -} - -// Convert color data from RGB to HSV -// NOTE: Color data should be passed normalized -static Vector3 ConvertRGBtoHSV(Vector3 rgb) -{ - Vector3 hsv = { 0 }; - float min = 0.0f; - float max = 0.0f; - float delta = 0.0f; - - min = (rgb.x < rgb.y)? rgb.x : rgb.y; - min = (min < rgb.z)? min : rgb.z; - - max = (rgb.x > rgb.y)? rgb.x : rgb.y; - max = (max > rgb.z)? max : rgb.z; - - hsv.z = max; // Value - delta = max - min; - - if (delta < 0.00001f) - { - hsv.y = 0.0f; - hsv.x = 0.0f; // Undefined, maybe NAN? - return hsv; - } - - if (max > 0.0f) - { - // NOTE: If max is 0, this divide would cause a crash - hsv.y = (delta/max); // Saturation - } - else - { - // NOTE: If max is 0, then r = g = b = 0, s = 0, h is undefined - hsv.y = 0.0f; - hsv.x = 0.0f; // Undefined, maybe NAN? - return hsv; - } - - // NOTE: Comparing float values could not work properly - if (rgb.x >= max) hsv.x = (rgb.y - rgb.z)/delta; // Between yellow & magenta - else - { - if (rgb.y >= max) hsv.x = 2.0f + (rgb.z - rgb.x)/delta; // Between cyan & yellow - else hsv.x = 4.0f + (rgb.x - rgb.y)/delta; // Between magenta & cyan - } - - hsv.x *= 60.0f; // Convert to degrees - - if (hsv.x < 0.0f) hsv.x += 360.0f; - - return hsv; -} - -// Convert color data from HSV to RGB -// NOTE: Color data should be passed normalized -static Vector3 ConvertHSVtoRGB(Vector3 hsv) -{ - Vector3 rgb = { 0 }; - float hh = 0.0f, p = 0.0f, q = 0.0f, t = 0.0f, ff = 0.0f; - long i = 0; - - // NOTE: Comparing float values could not work properly - if (hsv.y <= 0.0f) - { - rgb.x = hsv.z; - rgb.y = hsv.z; - rgb.z = hsv.z; - return rgb; - } - - hh = hsv.x; - if (hh >= 360.0f) hh = 0.0f; - hh /= 60.0f; - - i = (long)hh; - ff = hh - i; - p = hsv.z*(1.0f - hsv.y); - q = hsv.z*(1.0f - (hsv.y*ff)); - t = hsv.z*(1.0f - (hsv.y*(1.0f - ff))); - - switch (i) - { - case 0: - { - rgb.x = hsv.z; - rgb.y = t; - rgb.z = p; - } break; - case 1: - { - rgb.x = q; - rgb.y = hsv.z; - rgb.z = p; - } break; - case 2: - { - rgb.x = p; - rgb.y = hsv.z; - rgb.z = t; - } break; - case 3: - { - rgb.x = p; - rgb.y = q; - rgb.z = hsv.z; - } break; - case 4: - { - rgb.x = t; - rgb.y = p; - rgb.z = hsv.z; - } break; - case 5: - default: - { - rgb.x = hsv.z; - rgb.y = p; - rgb.z = q; - } break; - } - - return rgb; -} - -// Scroll bar control (used by GuiScrollPanel()) -static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) -{ - GuiState state = guiState; - - // Is the scrollbar horizontal or vertical? - bool isVertical = (bounds.width > bounds.height)? false : true; - - // The size (width or height depending on scrollbar type) of the spinner buttons - const int spinnerSize = GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)? - (isVertical? (int)bounds.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) : - (int)bounds.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH)) : 0; - - // Arrow buttons [<] [>] [∧] [∨] - Rectangle arrowUpLeft = { 0 }; - Rectangle arrowDownRight = { 0 }; - - // Actual area of the scrollbar excluding the arrow buttons - Rectangle scrollbar = { 0 }; - - // Slider bar that moves --[///]----- - Rectangle slider = { 0 }; - - // Normalize value - if (value > maxValue) value = maxValue; - if (value < minValue) value = minValue; - - int valueRange = maxValue - minValue; - if (valueRange <= 0) valueRange = 1; - - int sliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); - if (sliderSize < 1) sliderSize = 1; // TODO: Consider a minimum slider size - - // Calculate rectangles for all of the components - arrowUpLeft = RAYGUI_CLITERAL(Rectangle){ - (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), - (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), - (float)spinnerSize, (float)spinnerSize }; - - if (isVertical) - { - arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + bounds.height - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; - scrollbar = RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), arrowUpLeft.y + arrowUpLeft.height, bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)), bounds.height - arrowUpLeft.height - arrowDownRight.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) }; - - // Make sure the slider won't get outside of the scrollbar - sliderSize = (sliderSize >= scrollbar.height)? ((int)scrollbar.height - 2) : sliderSize; - slider = RAYGUI_CLITERAL(Rectangle){ - bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), - scrollbar.y + (int)(((float)(value - minValue)/valueRange)*(scrollbar.height - sliderSize)), - bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)), - (float)sliderSize }; - } - else // horizontal - { - arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + bounds.width - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; - scrollbar = RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x + arrowUpLeft.width, bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), bounds.width - arrowUpLeft.width - arrowDownRight.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH), bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)) }; - - // Make sure the slider won't get outside of the scrollbar - sliderSize = (sliderSize >= scrollbar.width)? ((int)scrollbar.width - 2) : sliderSize; - slider = RAYGUI_CLITERAL(Rectangle){ - scrollbar.x + (int)(((float)(value - minValue)/valueRange)*(scrollbar.width - sliderSize)), - bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), - (float)sliderSize, - bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)) }; - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN && - !CheckCollisionPointRec(mousePoint, arrowUpLeft) && - !CheckCollisionPointRec(mousePoint, arrowDownRight)) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); - else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - - // Handle mouse wheel - float scrollDelta = GUI_SCROLL_DELTA; - if (scrollDelta != 0) value += (int)scrollDelta; - - // Handle mouse button down - if (GUI_BUTTON_PRESSED) - { - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - // Check arrows click - if (CheckCollisionPointRec(mousePoint, arrowUpLeft)) value -= valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - else if (CheckCollisionPointRec(mousePoint, arrowDownRight)) value += valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - else if (!CheckCollisionPointRec(mousePoint, slider)) - { - // If click on scrollbar position but not on slider, place slider directly on that position - if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); - else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); - } - - state = STATE_PRESSED; - } - - // Keyboard control on mouse hover scrollbar - /* - if (isVertical) - { - if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; - else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; - } - else - { - if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; - else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; - } - */ - } - - // Normalize value - if (value > maxValue) value = maxValue; - if (value < minValue) value = minValue; - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SCROLLBAR, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED))); // Draw the background - - GuiDrawRectangle(scrollbar, 0, BLANK, GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL))); // Draw the scrollbar active area background - GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BORDER + state*3))); // Draw the slider bar - - // Draw arrows (using icon if available) - if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)) - { -#if defined(RAYGUI_NO_ICONS) - GuiDrawText(isVertical? "^" : "<", - RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); - GuiDrawText(isVertical? "v" : ">", - RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); -#else - GuiDrawText(isVertical? "#121#" : "#118#", - RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_UP_FILL / ICON_ARROW_LEFT_FILL - GuiDrawText(isVertical? "#120#" : "#119#", - RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_DOWN_FILL / ICON_ARROW_RIGHT_FILL -#endif - } - //-------------------------------------------------------------------- - - return value; -} - -// Color fade-in or fade-out, alpha goes from 0.0f to 1.0f -// WARNING: It multiplies current alpha by alpha scale factor -static Color GuiFade(Color color, float alpha) -{ - if (alpha < 0.0f) alpha = 0.0f; - else if (alpha > 1.0f) alpha = 1.0f; - - Color result = { color.r, color.g, color.b, (unsigned char)(color.a*alpha) }; - - return result; -} - -#if defined(RAYGUI_STANDALONE) -// Returns a Color struct from hexadecimal value -static Color GetColor(int hexValue) -{ - Color color; - - color.r = (unsigned char)(hexValue >> 24) & 0xff; - color.g = (unsigned char)(hexValue >> 16) & 0xff; - color.b = (unsigned char)(hexValue >> 8) & 0xff; - color.a = (unsigned char)hexValue & 0xff; - - return color; -} - -// Returns hexadecimal value for a Color -static int ColorToInt(Color color) -{ - return (((int)color.r << 24) | ((int)color.g << 16) | ((int)color.b << 8) | (int)color.a); -} - -// Check if point is inside rectangle -static bool CheckCollisionPointRec(Vector2 point, Rectangle rec) -{ - bool collision = false; - - if ((point.x >= rec.x) && (point.x <= (rec.x + rec.width)) && - (point.y >= rec.y) && (point.y <= (rec.y + rec.height))) collision = true; - - return collision; -} - -// Formatting of text with variables to 'embed' -static const char *TextFormat(const char *text, ...) -{ - #if !defined(RAYGUI_TEXTFORMAT_MAX_SIZE) - #define RAYGUI_TEXTFORMAT_MAX_SIZE 256 - #endif - - static char buffer[RAYGUI_TEXTFORMAT_MAX_SIZE]; - - va_list args; - va_start(args, text); - vsnprintf(buffer, RAYGUI_TEXTFORMAT_MAX_SIZE, text, args); - va_end(args); - - return buffer; -} - -// Draw rectangle with vertical gradient fill color -// NOTE: This function is only used by GuiColorPicker() -static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2) -{ - Rectangle bounds = { (float)posX, (float)posY, (float)width, (float)height }; - DrawRectangleGradientEx(bounds, color1, color2, color2, color1); -} - -// Split string into multiple strings -char **TextSplit(const char *text, char delimiter, int *count) -{ - // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) - // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, - // all used memory is static... it has some limitations: - // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS - // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE - - #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) - #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 - #endif - #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) - #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 - #endif - - static const char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; - static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; - memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); - - result[0] = buffer; - int counter = 0; - - if (text != NULL) - { - counter = 1; - - // Count how many substrings text contains and point to every one of them - for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) - { - buffer[i] = text[i]; - if (buffer[i] == '\0') break; - else if (buffer[i] == delimiter) - { - buffer[i] = '\0'; // Set an end of string at this point - result[counter] = buffer + i + 1; - counter++; - - if (counter == RAYGUI_TEXTSPLIT_MAX_ITEMS) break; - } - } - } - - *count = counter; - return result; -} - -// Get integer value from text -// NOTE: This function replaces atoi() [stdlib.h] -static int TextToInteger(const char *text) -{ - int value = 0; - int sign = 1; - - if ((text[0] == '+') || (text[0] == '-')) - { - if (text[0] == '-') sign = -1; - text++; - } - - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); - - return value*sign; -} - -// Get float value from text -// NOTE: This function replaces atof() [stdlib.h] -// WARNING: Only '.' character is understood as decimal point -static float TextToFloat(const char *text) -{ - float value = 0.0f; - float sign = 1.0f; - - if ((text[0] == '+') || (text[0] == '-')) - { - if (text[0] == '-') sign = -1.0f; - text++; - } - - int i = 0; - for (; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10.0f + (float)(text[i] - '0'); - - if (text[i++] != '.') value *= sign; - else - { - float divisor = 10.0f; - for (; ((text[i] >= '0') && (text[i] <= '9')); i++) - { - value += ((float)(text[i] - '0'))/divisor; - divisor = divisor*10.0f; - } - } - - return value; -} - -// Encode codepoint into UTF-8 text (char array size returned as parameter) -static const char *CodepointToUTF8(int codepoint, int *byteSize) -{ - static char utf8[6] = { 0 }; - int size = 0; - - if (codepoint <= 0x7f) - { - utf8[0] = (char)codepoint; - size = 1; - } - else if (codepoint <= 0x7ff) - { - utf8[0] = (char)(((codepoint >> 6) & 0x1f) | 0xc0); - utf8[1] = (char)((codepoint & 0x3f) | 0x80); - size = 2; - } - else if (codepoint <= 0xffff) - { - utf8[0] = (char)(((codepoint >> 12) & 0x0f) | 0xe0); - utf8[1] = (char)(((codepoint >> 6) & 0x3f) | 0x80); - utf8[2] = (char)((codepoint & 0x3f) | 0x80); - size = 3; - } - else if (codepoint <= 0x10ffff) - { - utf8[0] = (char)(((codepoint >> 18) & 0x07) | 0xf0); - utf8[1] = (char)(((codepoint >> 12) & 0x3f) | 0x80); - utf8[2] = (char)(((codepoint >> 6) & 0x3f) | 0x80); - utf8[3] = (char)((codepoint & 0x3f) | 0x80); - size = 4; - } - - *byteSize = size; - - return utf8; -} - -// Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint -// Total number of bytes processed are returned as a parameter -// NOTE: The standard says U+FFFD should be returned in case of errors -// but that character is not supported by the default font in raylib -static int GetCodepointNext(const char *text, int *codepointSize) -{ - const char *ptr = text; - int codepoint = 0x3f; // Codepoint (defaults to '?') - *codepointSize = 1; - - // Get current codepoint and bytes processed - if (0xf0 == (0xf8 & ptr[0])) - { - // 4 byte UTF-8 codepoint - if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80) || ((ptr[3] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks - codepoint = ((0x07 & ptr[0]) << 18) | ((0x3f & ptr[1]) << 12) | ((0x3f & ptr[2]) << 6) | (0x3f & ptr[3]); - *codepointSize = 4; - } - else if (0xe0 == (0xf0 & ptr[0])) - { - // 3 byte UTF-8 codepoint - if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks - codepoint = ((0x0f & ptr[0]) << 12) | ((0x3f & ptr[1]) << 6) | (0x3f & ptr[2]); - *codepointSize = 3; - } - else if (0xc0 == (0xe0 & ptr[0])) - { - // 2 byte UTF-8 codepoint - if ((ptr[1] & 0xC0) ^ 0x80) { return codepoint; } //10xxxxxx checks - codepoint = ((0x1f & ptr[0]) << 6) | (0x3f & ptr[1]); - *codepointSize = 2; - } - else if (0x00 == (0x80 & ptr[0])) - { - // 1 byte UTF-8 codepoint - codepoint = ptr[0]; - *codepointSize = 1; - } - - return codepoint; -} -#endif // RAYGUI_STANDALONE - -#endif // RAYGUI_IMPLEMENTATION diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/README.md deleted file mode 100644 index d20b82e..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# raygui styles - -`raygui` comes with **several custom UI styles** carefully designed for the best visual experience. Those styles have been created using [rGuiStyler](https://raylibtech.itch.io/rguistyler) tool and they complement internal [default style](default), always available by `raygui`. - -## styles usage - -To use those styles with your `raygui` development, you need to call `GuiLoadStyle()` function at initialization, passing the `.rgs` file to load. Note that `.rgs` is by default a binary file containing the style required font data (glyphs data + glyph atlas image data). - -Styles can also be embedded in the code if desired, `.h` files are provided with every style containing all the required style data, including the font data. To embed those fonts just add the `.h` to your project and call the required function as specified in the header info. - -Here it is a quick overview of those styles, you can navigate to each directory for additional information. - -#### 1. style: [default](default) -![default style](default/style_default.png) - -#### 2. style: [dark](dark) -![dark style](dark/style_dark.png) - -#### 3. style: [bluish](bluish) -![bluish style](bluish/style_bluish.png) - -#### 4. style: [candy](candy) -![candy style](candy/style_candy.png) - -#### 5. style: [cherry](cherry) -![cherry style](cherry/style_cherry.png) - -#### 6. style: [cyber](cyber) -![cyber style](cyber/style_cyber.png) - -#### 7. style: [jungle](jungle) -![jungle style](jungle/style_jungle.png) - -#### 8. style: [lavanda](lavanda) -![lavanda style](lavanda/style_lavanda.png) - -#### 9. style: [terminal](terminal) -![terminal style](terminal/style_terminal.png) - -#### 10. style: [sunny](sunny) -![sunny style](sunny/style_sunny.png) - -#### 11. style: [ashes](ashes) -![ashes style](ashes/style_ashes.png) - -#### 12. enefete: [enefete](enefete) -![enefete style](enefete/style_enefete.png) - -#### 13. amber: [amber](amber) -![amber style](amber/style_amber.png) - - -*NOTE: Those styles require raylib 5.5 and raygui 4.5* diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/README.md deleted file mode 100644 index 6c60ed2..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/README.md +++ /dev/null @@ -1,33 +0,0 @@ -## style: amber - -Amber accenture and charcoal tones with a light font for nice visuals. - -![amber style table](style_amber.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_amber.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_amber.h` | Embeddable style as code file, self-contained, includes font data | -| `style_amber.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![amber style screen](screenshot.png) - -## about font - -"Hello World" font by Anthony Gross -``` -CATEGORY: Monospace -LANGUAGE SUPPORT: Latin Extended -FORMAT: TTF -LICENSE: Free for personal and commercial use, SIL Open Font License -``` - -This font is licensed under the Open Font License. More info: https://www.dafont.com/es/hello-world.font - -_The style font is optimized to look best at 16px, if you require different sizing please open the style in rGuiStyler and edit it._ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/hello-world.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/hello-world.ttf deleted file mode 100644 index 7d190b8..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/hello-world.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/screenshot.old.png deleted file mode 100644 index 80a38df..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/screenshot.png deleted file mode 100644 index 3c682e9..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/style_amber.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/style_amber.h deleted file mode 100644 index abec1e3..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/style_amber.h +++ /dev/null @@ -1,608 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleAmber(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define AMBER_STYLE_PROPS_COUNT 18 - -// Custom style name: Amber -static const GuiStyleProp amberStyleProps[AMBER_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x898988ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x292929ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xd4d4d4ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xeb891dff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x292929ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xffffffff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xf1cf9dff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xf39333ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x191410ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x6a6a6aff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x818181ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x606060ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 18, (int)0xef922aff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x333333ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING - { 1, 8, (int)0xe7e0d4ff }, // LABEL_TEXT_COLOR_PRESSED - { 4, 8, (int)0xf1cf9dff }, // SLIDER_TEXT_COLOR_PRESSED -}; - -// WARNING: This style uses a custom font: "hello-world.ttf" (size: 16, spacing: 1) - -#define AMBER_STYLE_FONT_ATLAS_COMP_SIZE 2605 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char amberFontData[AMBER_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x8b, 0x8e, 0x9c, 0xb8, 0x12, 0x00, 0x50, 0xf8, 0xff, 0x7f, 0x76, 0x5d, 0xe9, 0x66, 0xb3, 0xd2, 0xee, 0x8e, 0x6d, - 0xaa, 0x30, 0x8f, 0xee, 0x9c, 0x1c, 0x45, 0x91, 0x9a, 0x34, 0x18, 0xdb, 0x85, 0x0d, 0x33, 0x94, 0x63, 0x03, 0x00, 0x00, - 0x00, 0x88, 0x2d, 0x5a, 0xe7, 0xb3, 0xcc, 0xe7, 0x5b, 0xf7, 0xf3, 0xf6, 0xd7, 0xe7, 0x6d, 0xb0, 0xed, 0xe8, 0xbe, 0xfa, - 0x65, 0xda, 0x92, 0xfb, 0x89, 0xee, 0x37, 0xe2, 0x87, 0x4f, 0x7e, 0xff, 0xc9, 0xec, 0xa7, 0x77, 0xbe, 0xf9, 0xda, 0xcb, - 0x6e, 0x19, 0x1f, 0xbd, 0x25, 0x4b, 0x56, 0xff, 0xce, 0xd1, 0x7a, 0xcf, 0xd4, 0xe1, 0xef, 0x3f, 0x2d, 0xb1, 0x97, 0x71, - 0x79, 0x7e, 0xde, 0xdb, 0x36, 0x39, 0xeb, 0xdc, 0x79, 0xb7, 0xe9, 0x96, 0xda, 0xb7, 0xd6, 0xc4, 0x7f, 0xaf, 0x4d, 0x32, - 0x9f, 0x6f, 0xdd, 0x7a, 0xfc, 0x15, 0x37, 0xbd, 0xb8, 0xdd, 0x13, 0xfd, 0xa4, 0x17, 0x23, 0xfb, 0x20, 0xca, 0x23, 0xb5, - 0xff, 0x71, 0x2f, 0x5a, 0x71, 0x4d, 0xed, 0x95, 0xf6, 0xe7, 0xab, 0x4b, 0xff, 0x1b, 0x6d, 0x78, 0xe6, 0xb5, 0x6b, 0x55, - 0xbf, 0x1e, 0xf7, 0x1f, 0xbe, 0x5b, 0x2b, 0xdb, 0xf1, 0x72, 0x45, 0xba, 0x2d, 0x62, 0xd8, 0x6b, 0xf6, 0xee, 0x35, 0x23, - 0x77, 0x76, 0x51, 0x38, 0xef, 0x98, 0x6c, 0xd9, 0x52, 0xa3, 0x5a, 0x5b, 0x3c, 0xfe, 0xaf, 0x88, 0xff, 0xf8, 0x7f, 0x2d, - 0xee, 0xa9, 0xf1, 0x36, 0x92, 0x65, 0xca, 0x47, 0xed, 0xde, 0x39, 0x6e, 0x7f, 0x3c, 0xbf, 0xba, 0x4e, 0x7b, 0xdb, 0xf6, - 0x42, 0x6d, 0xf4, 0xb6, 0xb4, 0xee, 0x79, 0x6f, 0xe5, 0xab, 0x5e, 0x24, 0xce, 0x26, 0x4e, 0x5f, 0x4b, 0x63, 0xd0, 0xd2, - 0xe3, 0xb6, 0x8b, 0x74, 0x49, 0xa3, 0xf0, 0x9d, 0xf1, 0x96, 0x6d, 0xe9, 0x77, 0xae, 0x1b, 0xa3, 0xf2, 0xfb, 0x1b, 0xcf, - 0xbe, 0xa2, 0x18, 0x0f, 0xe7, 0xcb, 0xb9, 0xa7, 0xaf, 0x89, 0x71, 0xf1, 0x3d, 0x55, 0x36, 0xfe, 0xb7, 0x85, 0xf1, 0x1f, - 0xe9, 0xfa, 0xbe, 0x2f, 0xfe, 0x9f, 0x18, 0xff, 0xb7, 0x49, 0xfc, 0x6f, 0xe2, 0x3f, 0xf5, 0x7f, 0x73, 0xf7, 0x05, 0xe3, - 0x71, 0x3b, 0x12, 0xf3, 0x99, 0x58, 0x18, 0xcf, 0x71, 0x7b, 0xf4, 0x8f, 0x7a, 0x5b, 0x65, 0x26, 0xd8, 0xbf, 0xdf, 0xea, - 0xc7, 0xd9, 0xe8, 0x1e, 0x2d, 0xd2, 0x33, 0xce, 0xd1, 0xdd, 0x55, 0xe6, 0x79, 0x49, 0x2c, 0xeb, 0x99, 0x5b, 0x29, 0xfe, - 0x23, 0xf5, 0xcc, 0x27, 0x26, 0x35, 0x9f, 0x8d, 0xff, 0x18, 0x5c, 0xff, 0x46, 0xfd, 0x28, 0x2e, 0xbd, 0xff, 0xcf, 0xc6, - 0xff, 0x36, 0x99, 0x95, 0x6d, 0xa9, 0x9e, 0x5a, 0x29, 0x65, 0x7b, 0xd1, 0x13, 0xd5, 0x95, 0xf1, 0x1f, 0xc9, 0xb3, 0x8e, - 0x03, 0x4f, 0xc3, 0x7a, 0xc7, 0xa8, 0xdc, 0xbd, 0xb5, 0x93, 0xfd, 0x2a, 0x1e, 0x6c, 0x93, 0x33, 0x23, 0x76, 0x7b, 0x7c, - 0xfc, 0x8f, 0xc7, 0xe6, 0xff, 0x91, 0x9e, 0x1b, 0x5c, 0x1f, 0xff, 0xf1, 0xf2, 0xe8, 0xaf, 0xcd, 0xff, 0xa3, 0x38, 0x2f, - 0x8f, 0x45, 0x73, 0xf9, 0xea, 0xdd, 0xcc, 0xbb, 0x5a, 0x64, 0x9b, 0x3e, 0x4f, 0xf8, 0xc4, 0xf9, 0x7f, 0x3c, 0x54, 0x8f, - 0x51, 0xb8, 0x37, 0x10, 0xff, 0x95, 0xf8, 0xaf, 0xcd, 0x69, 0x67, 0x4f, 0x37, 0x63, 0xe9, 0x95, 0xe9, 0xb3, 0xe3, 0xbf, - 0x1e, 0xb1, 0xe2, 0xff, 0xe8, 0xdc, 0x36, 0x86, 0xcf, 0x65, 0x63, 0x49, 0x1b, 0x7e, 0xc6, 0x58, 0xb3, 0x2e, 0xfe, 0xe3, - 0xc4, 0x5d, 0xc3, 0x9f, 0x18, 0xff, 0xdb, 0x8d, 0xf1, 0x1f, 0x5f, 0x3b, 0xff, 0xaf, 0xdc, 0xff, 0xc7, 0xf0, 0x27, 0xd2, - 0xb1, 0x68, 0x06, 0xf0, 0xfe, 0xd1, 0xbf, 0xf2, 0xb4, 0x67, 0xfc, 0x9b, 0x47, 0x91, 0xfe, 0xb9, 0x40, 0xe5, 0x69, 0xd3, - 0x6c, 0xee, 0xbc, 0xa5, 0xcb, 0xf6, 0xe9, 0xe3, 0x7f, 0xfe, 0xbc, 0x63, 0xba, 0x25, 0x0a, 0xfd, 0xe8, 0x6d, 0xd7, 0xd7, - 0x78, 0x7c, 0x64, 0x05, 0xbe, 0x97, 0xf8, 0x07, 0x57, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x77, 0x6a, 0xff, 0xfa, 0xf7, 0x9f, 0xdb, 0xda, 0x8f, 0xd9, 0x8c, 0x5b, 0x77, 0x4b, 0x6f, 0x5f, 0xad, - 0x70, 0xfc, 0x7c, 0xc9, 0x56, 0xe7, 0x60, 0xdf, 0x06, 0x67, 0x5a, 0xaf, 0x83, 0xeb, 0xb7, 0x8c, 0x4b, 0x9d, 0x69, 0x9b, - 0x7e, 0xbd, 0x6c, 0xa9, 0x77, 0x92, 0x73, 0x79, 0x02, 0xdb, 0xe4, 0x0d, 0xd7, 0xec, 0xba, 0x0e, 0xb3, 0x1c, 0x86, 0x99, - 0xcc, 0x87, 0xed, 0x50, 0x34, 0xcd, 0x3f, 0xcf, 0x96, 0x67, 0x1b, 0x66, 0xc5, 0x8c, 0x72, 0xde, 0xbf, 0x5a, 0xee, 0xe9, - 0x3d, 0x99, 0xf9, 0x69, 0xf4, 0x3e, 0x7a, 0x4b, 0x67, 0x67, 0xbe, 0x2b, 0x07, 0xfb, 0xa8, 0x3e, 0xf7, 0x74, 0xf6, 0x8b, - 0xca, 0x96, 0xbd, 0xbb, 0xae, 0xca, 0x2c, 0xd7, 0xc3, 0x7e, 0xb8, 0x15, 0x46, 0x39, 0x92, 0xf7, 0x6e, 0x1e, 0xf1, 0x5c, - 0x5f, 0x5b, 0x95, 0xfb, 0x3e, 0xa6, 0x25, 0x8e, 0xe4, 0x77, 0xda, 0xf0, 0x38, 0x71, 0xd9, 0x3b, 0x65, 0x91, 0xac, 0xad, - 0xed, 0xef, 0x1c, 0x1b, 0xb9, 0xba, 0x3c, 0x13, 0xff, 0x95, 0xfc, 0xd2, 0x5b, 0x3a, 0x03, 0xea, 0xde, 0xc9, 0x4b, 0xff, - 0xfb, 0x7a, 0x76, 0x57, 0xa6, 0x95, 0x6c, 0x5b, 0xdf, 0x11, 0xff, 0xf3, 0xdc, 0x69, 0x91, 0x1a, 0x07, 0xf3, 0x7d, 0xf1, - 0x89, 0xdc, 0x0d, 0x77, 0xe5, 0x23, 0x3f, 0xd3, 0x8a, 0x57, 0xc6, 0x7f, 0x3e, 0x4f, 0x6c, 0x3d, 0xf3, 0xcf, 0xfa, 0xf8, - 0xcf, 0xe7, 0xab, 0x8a, 0x6e, 0x3e, 0x15, 0xf1, 0x5f, 0x8d, 0xff, 0xf8, 0x80, 0xf8, 0x5f, 0x99, 0x49, 0x7b, 0xb6, 0xb7, - 0x48, 0x65, 0x3e, 0x9f, 0x65, 0xf9, 0x69, 0x83, 0xb9, 0xec, 0xb1, 0xbb, 0x8f, 0x38, 0x30, 0xff, 0xb8, 0x27, 0xfe, 0x67, - 0x99, 0x7b, 0x73, 0xfd, 0xab, 0xba, 0x9f, 0x55, 0x6b, 0x30, 0xcc, 0x7a, 0x4e, 0xb6, 0x45, 0x23, 0xb9, 0x52, 0xe0, 0xea, - 0xf8, 0x1f, 0x47, 0x6d, 0xad, 0x6c, 0xdb, 0xd2, 0x11, 0xf7, 0xec, 0x08, 0x18, 0x4b, 0xef, 0x0c, 0xee, 0xb9, 0x8a, 0xef, - 0xa7, 0x57, 0x8f, 0x8b, 0xe1, 0x1d, 0xe6, 0xba, 0xbe, 0x75, 0xef, 0xf8, 0x1f, 0x8b, 0xf3, 0xa9, 0xc7, 0x8d, 0x99, 0x56, - 0xf3, 0xab, 0x5c, 0x64, 0xeb, 0xb3, 0x92, 0x23, 0x35, 0x9f, 0x55, 0xf9, 0x5b, 0xe2, 0xff, 0xfa, 0x2d, 0xeb, 0x23, 0x2d, - 0x17, 0xff, 0x71, 0xc3, 0xdc, 0xf2, 0x13, 0xe6, 0xff, 0xdb, 0x30, 0x5f, 0xfd, 0x5d, 0xf1, 0x5f, 0x6d, 0x8d, 0x6b, 0xe3, - 0x3f, 0x0a, 0xf3, 0xf6, 0x95, 0xf3, 0xfc, 0x67, 0xe6, 0xff, 0xe3, 0x31, 0x26, 0xd2, 0xf5, 0x5e, 0xcd, 0x61, 0x7a, 0x65, - 0xfc, 0xc7, 0x2d, 0xf7, 0x96, 0xf7, 0xc7, 0xff, 0xda, 0xb8, 0x5c, 0x1b, 0xff, 0x2b, 0xd7, 0xab, 0x10, 0xff, 0xf7, 0xcf, - 0x0c, 0xd6, 0x7e, 0xa7, 0x72, 0x77, 0xf0, 0xe4, 0xf8, 0x7f, 0x7f, 0x5d, 0x3f, 0x1f, 0xff, 0x2b, 0xe7, 0xff, 0xf1, 0x70, - 0xfc, 0x57, 0xd6, 0xff, 0xba, 0x67, 0x96, 0x2f, 0xfe, 0x9f, 0x88, 0xff, 0x37, 0xd4, 0x7a, 0x7e, 0xde, 0x34, 0x7f, 0x5a, - 0x98, 0x5b, 0x35, 0xb1, 0xf6, 0x54, 0x3c, 0x8a, 0x2b, 0x87, 0x47, 0xa1, 0xd4, 0x95, 0x99, 0xe3, 0xb6, 0xe4, 0x5e, 0xbe, - 0x76, 0x35, 0xa9, 0x64, 0x8e, 0xaf, 0xae, 0x33, 0x76, 0xe7, 0x7d, 0xc1, 0x35, 0xdf, 0xca, 0xb5, 0x62, 0x4c, 0xeb, 0x7e, - 0xc5, 0x75, 0x64, 0x7b, 0x61, 0x16, 0x7f, 0x3e, 0x5d, 0xdc, 0xf4, 0x1d, 0xd4, 0x22, 0xe2, 0x1f, 0xb5, 0xc8, 0x9b, 0x7a, - 0x61, 0x24, 0xef, 0xa9, 0xcd, 0x42, 0xd7, 0xd4, 0xba, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x56, 0xfd, 0x7e, 0x72, 0x36, 0xa7, 0xf8, 0x28, 0x6f, 0x62, 0x7e, 0x7f, 0xb3, 0x2c, 0x68, 0xed, 0xc1, 0x2d, 0xa3, - 0x5a, 0x68, 0x07, 0xcf, 0xa6, 0x25, 0xf3, 0xbc, 0xf5, 0xeb, 0xa4, 0x9f, 0x5f, 0xbe, 0x25, 0xb7, 0xb5, 0xc9, 0x1e, 0x8f, - 0xee, 0xfd, 0x78, 0x1b, 0xf7, 0xb3, 0xa8, 0xe5, 0xea, 0xbd, 0x9f, 0x99, 0xbf, 0x25, 0x57, 0x2c, 0x98, 0xd5, 0xe8, 0x96, - 0x68, 0xc9, 0x23, 0xbd, 0x69, 0xb4, 0xd6, 0xc4, 0xd1, 0x76, 0x38, 0x7a, 0x0e, 0x71, 0xf0, 0xad, 0xa3, 0x59, 0xae, 0xc5, - 0xd1, 0x96, 0x4c, 0x56, 0xa3, 0x33, 0xb9, 0x27, 0x56, 0xe6, 0xd2, 0x5d, 0x95, 0x4b, 0x3f, 0x97, 0xbb, 0x71, 0x1f, 0xb6, - 0x51, 0x9c, 0xbc, 0x52, 0xb7, 0xc1, 0x31, 0x5a, 0x21, 0xef, 0xc3, 0xf1, 0xbd, 0x1f, 0x6f, 0xe3, 0x3d, 0x9d, 0xdd, 0x64, - 0x65, 0xfe, 0xfd, 0x96, 0xce, 0xd8, 0xb9, 0x27, 0x57, 0xc4, 0x38, 0x9e, 0x4f, 0x62, 0x4f, 0x67, 0xae, 0x98, 0xf5, 0xc3, - 0xfd, 0xc4, 0x15, 0xe0, 0xce, 0xfc, 0x3b, 0x6f, 0x88, 0xff, 0x55, 0xb9, 0xb4, 0xaf, 0xce, 0xca, 0xd3, 0xba, 0xa5, 0x6f, - 0x17, 0xd7, 0x6d, 0x3d, 0xe2, 0x62, 0x98, 0x01, 0x23, 0xca, 0x63, 0xd4, 0xd1, 0x63, 0x8c, 0x22, 0x67, 0xb4, 0x62, 0xd1, - 0xf1, 0xeb, 0x66, 0x2c, 0x88, 0xff, 0x33, 0x6f, 0x03, 0x1f, 0x1f, 0x5b, 0x8e, 0xd6, 0xef, 0x7d, 0x19, 0xf3, 0xc7, 0x39, - 0xd8, 0x73, 0x59, 0xd8, 0x57, 0x67, 0xcc, 0x59, 0x17, 0xe7, 0xab, 0xf2, 0xe8, 0xe4, 0xa2, 0x25, 0xd2, 0xf3, 0xf1, 0x4c, - 0xfc, 0xc7, 0xe1, 0xd9, 0x7f, 0x36, 0x9f, 0x4d, 0x3e, 0x1a, 0x62, 0xf1, 0x1b, 0xb5, 0xfd, 0xf2, 0xb6, 0x8b, 0xc6, 0xff, - 0xd5, 0xf1, 0xbf, 0x9d, 0x88, 0xfe, 0x7b, 0x57, 0xcc, 0xd8, 0x8a, 0xeb, 0x52, 0x5c, 0x9d, 0x4b, 0x33, 0x0a, 0x65, 0x7b, - 0x2e, 0xfe, 0xb3, 0x2b, 0x18, 0x8c, 0x8e, 0xd0, 0x0e, 0x97, 0xa4, 0x5d, 0x14, 0x9b, 0x51, 0xec, 0xd5, 0xf1, 0x48, 0x66, - 0x8e, 0x73, 0xe3, 0xff, 0x76, 0x3a, 0xfe, 0xd7, 0xd7, 0xab, 0xf8, 0xaf, 0xcf, 0x67, 0xee, 0x8d, 0xff, 0xad, 0xb0, 0x4e, - 0x4b, 0x14, 0x66, 0x5d, 0xf5, 0x2b, 0xc0, 0x5d, 0xfd, 0xfa, 0xed, 0xcf, 0xd3, 0x67, 0xfd, 0xe0, 0x5d, 0xe7, 0x30, 0xeb, - 0x21, 0x99, 0x7e, 0x15, 0x93, 0xa3, 0xe4, 0xef, 0x8d, 0x2b, 0x7d, 0x7e, 0x2b, 0x66, 0x88, 0xaf, 0xe4, 0x2d, 0x3d, 0x7f, - 0xbf, 0x70, 0xfe, 0x2a, 0x52, 0x5d, 0xbf, 0x2b, 0x4e, 0xf7, 0x91, 0x4c, 0x7b, 0xad, 0xed, 0xaf, 0xef, 0xbd, 0x0e, 0xcc, - 0xb3, 0xc6, 0x7e, 0x46, 0x3e, 0xa0, 0xb8, 0xed, 0x5a, 0xfc, 0x96, 0xfa, 0x88, 0x45, 0x77, 0x8e, 0x57, 0x8d, 0xff, 0x6b, - 0x9f, 0xad, 0x66, 0xe3, 0xe8, 0xfb, 0xb2, 0x58, 0xc5, 0x25, 0xd7, 0x92, 0x58, 0x7a, 0xbf, 0x23, 0xfe, 0xc5, 0xff, 0x15, - 0xf1, 0x7f, 0xfc, 0x18, 0xf1, 0xb5, 0xf1, 0xff, 0x44, 0x2f, 0x12, 0xff, 0x67, 0xe6, 0x97, 0x6f, 0x9a, 0x51, 0x5e, 0x1b, - 0xff, 0xeb, 0xc6, 0xb1, 0xca, 0x7d, 0xd7, 0x9b, 0x5a, 0x47, 0xfc, 0xf3, 0x49, 0xed, 0xfc, 0x9e, 0x75, 0x34, 0x00, 0xf1, - 0x0f, 0x5c, 0x33, 0xef, 0x3e, 0xf6, 0x93, 0x7b, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x59, 0xad, 0x9b, 0x59, 0x3c, 0xba, 0x59, 0xcc, 0xff, 0xf9, 0xef, 0xcf, 0x5b, 0x9f, 0x3d, 0x9f, 0x2d, 0x55, 0xb6, - 0x36, 0xcc, 0xf8, 0xde, 0x1e, 0x2e, 0xf5, 0x95, 0x47, 0x68, 0xb7, 0x9d, 0xe1, 0xda, 0x5a, 0xe9, 0xbd, 0x47, 0xdb, 0x6e, - 0xa8, 0xc9, 0x5a, 0x7b, 0xb5, 0xe1, 0xb6, 0x96, 0xee, 0xb3, 0xb5, 0x2d, 0xff, 0xfd, 0x9f, 0xfb, 0xb0, 0x86, 0xf7, 0x64, - 0x5e, 0xde, 0xda, 0x9b, 0xd1, 0xb5, 0x6c, 0x5a, 0x3f, 0x6f, 0xdb, 0xff, 0xfa, 0xdb, 0xdb, 0x96, 0xa9, 0x83, 0x71, 0xee, - 0xfb, 0x95, 0xe7, 0x33, 0x2a, 0xf5, 0x9a, 0x0c, 0xc4, 0x3f, 0x1f, 0x21, 0x06, 0x67, 0x18, 0xa5, 0x6c, 0x66, 0x77, 0xb5, - 0x65, 0x6f, 0x4d, 0x86, 0xbd, 0xb0, 0xda, 0xca, 0x1d, 0xed, 0x15, 0xa5, 0xf5, 0x1b, 0xb6, 0x49, 0xdf, 0xcc, 0xf5, 0xe7, - 0x4c, 0xdd, 0x8f, 0xf2, 0xcd, 0x8e, 0xce, 0xb3, 0x7f, 0xe4, 0xfe, 0x99, 0xec, 0xc9, 0x33, 0xf9, 0xf5, 0xf9, 0x9e, 0xbc, - 0x96, 0xb6, 0xc1, 0x3c, 0xa7, 0xf2, 0xd6, 0xee, 0xca, 0xf3, 0x19, 0x8d, 0xc3, 0xfd, 0x3a, 0xc8, 0x1f, 0xe3, 0x78, 0x5b, - 0x8e, 0xea, 0xf8, 0xf9, 0xb6, 0x1c, 0xf5, 0xcc, 0x48, 0x47, 0x52, 0xbe, 0xcc, 0xfd, 0xbe, 0xde, 0xdb, 0xdb, 0x6c, 0x3d, - 0x9d, 0x67, 0xde, 0x11, 0x9f, 0xc5, 0x7f, 0xa4, 0xe3, 0x7f, 0xbc, 0x0a, 0xcc, 0xf1, 0x4f, 0x47, 0x57, 0xd9, 0x7d, 0x30, - 0x96, 0xf7, 0x6a, 0xb9, 0x0d, 0xeb, 0xbf, 0xf6, 0xd6, 0xfe, 0xaa, 0xf3, 0xa9, 0x1c, 0x67, 0x4f, 0xd7, 0x59, 0x2e, 0x2b, - 0xea, 0x3e, 0x3c, 0x93, 0x67, 0xdb, 0x72, 0xd4, 0x9b, 0xdb, 0x20, 0x4b, 0xff, 0xea, 0xf6, 0x8a, 0xc4, 0xde, 0xaa, 0x6b, - 0xd6, 0x8c, 0xd6, 0xe0, 0xcb, 0x6e, 0xe9, 0x45, 0x79, 0x65, 0xf6, 0x97, 0x9d, 0x13, 0xe7, 0xc7, 0xe5, 0xea, 0x58, 0xbe, - 0xa5, 0xb3, 0x96, 0xcf, 0x56, 0xc9, 0xc8, 0x8c, 0xd8, 0x95, 0x2d, 0x51, 0xb8, 0x37, 0x6c, 0xe9, 0x27, 0x16, 0xa3, 0x9c, - 0xe2, 0x91, 0x1c, 0xe3, 0x9e, 0x6d, 0xcb, 0xd9, 0x68, 0x96, 0x39, 0x9b, 0xca, 0x96, 0xd1, 0xac, 0xa9, 0xff, 0x9d, 0xfc, - 0xca, 0x98, 0x67, 0x56, 0xe7, 0x6b, 0x97, 0xcd, 0xff, 0xe7, 0x39, 0xb6, 0xd7, 0x8c, 0xcb, 0xd5, 0xb1, 0x7c, 0x2b, 0xac, - 0x5a, 0x10, 0x97, 0xdf, 0x31, 0x56, 0x57, 0x47, 0xdb, 0xbb, 0xf7, 0xc6, 0xb9, 0xcf, 0xab, 0x6b, 0x1f, 0xc4, 0x0b, 0xdb, - 0x32, 0x1f, 0xff, 0xd7, 0xac, 0x73, 0xb1, 0x76, 0x6d, 0xbc, 0x76, 0x5b, 0x9f, 0x3a, 0x3e, 0xca, 0xaf, 0x5e, 0xe5, 0xee, - 0xfa, 0x5a, 0xae, 0xe5, 0xf2, 0x7f, 0x3a, 0xfe, 0x63, 0xe1, 0x8a, 0x02, 0xab, 0xe2, 0xbf, 0xbd, 0x24, 0x62, 0xfe, 0x94, - 0xf8, 0xcf, 0xad, 0xc2, 0x11, 0xa5, 0x95, 0x3b, 0x32, 0x31, 0x9e, 0x7f, 0x96, 0xff, 0x9e, 0x5a, 0xfe, 0x9e, 0xf1, 0xff, - 0xb9, 0xf8, 0x8f, 0x0f, 0x8c, 0xff, 0xf7, 0x96, 0xf9, 0xf9, 0xb1, 0xf1, 0xd9, 0xf8, 0xaf, 0x8c, 0xcb, 0xf5, 0x75, 0x79, - 0xd6, 0xc6, 0x7f, 0x24, 0x46, 0xec, 0xf5, 0x99, 0xb8, 0x9f, 0x8a, 0xff, 0xf7, 0x8e, 0xa5, 0xb3, 0xba, 0x7a, 0xb2, 0x64, - 0xb3, 0x55, 0xe6, 0xdf, 0x15, 0xff, 0xd5, 0x15, 0x55, 0x23, 0x39, 0x93, 0x7d, 0xff, 0xf8, 0x1f, 0xa9, 0x35, 0xf7, 0xbe, - 0x67, 0xfc, 0x8f, 0xc9, 0xda, 0xbc, 0x9f, 0x37, 0xff, 0x8f, 0x47, 0x63, 0x2c, 0x4a, 0x2b, 0xc9, 0x66, 0x57, 0xda, 0x5b, - 0x35, 0xff, 0xbf, 0xf3, 0xe7, 0x8c, 0x9f, 0x36, 0x9b, 0x3c, 0xf7, 0xa4, 0xe3, 0x33, 0xe2, 0x7f, 0x3e, 0x92, 0x7e, 0x5e, - 0x8b, 0x3d, 0x3d, 0xc6, 0xca, 0xf6, 0xfc, 0x4d, 0xf1, 0xbf, 0xdd, 0x32, 0xfe, 0x57, 0x57, 0x3a, 0xcd, 0xfe, 0xfe, 0xd9, - 0x27, 0xc5, 0xff, 0xca, 0x95, 0x87, 0xee, 0x2c, 0x99, 0xf8, 0x7f, 0xdb, 0x3d, 0xce, 0x8a, 0x92, 0xdf, 0xf5, 0x13, 0x99, - 0xbb, 0xc7, 0xf9, 0xf7, 0x5e, 0xb1, 0xdf, 0xdb, 0xff, 0xaa, 0xbf, 0xe7, 0x2e, 0xfe, 0x3f, 0x2f, 0xfe, 0xb3, 0x23, 0x76, - 0x65, 0xcb, 0xfc, 0x48, 0xe7, 0x3f, 0x5f, 0xd7, 0x62, 0xeb, 0x9f, 0x7e, 0xde, 0x71, 0xb7, 0x7a, 0x5f, 0xc9, 0xc4, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xad, 0x36, 0xcc, 0xe4, 0x9f, 0xcd, 0x4a, 0x3e, 0xca, 0x0c, - 0x18, 0xb7, 0xe4, 0x38, 0xaf, 0xe6, 0xff, 0x3f, 0xfe, 0x79, 0xbe, 0xc6, 0x2a, 0x65, 0x5a, 0x7b, 0xee, 0x6d, 0xd2, 0x66, - 0x3f, 0x7f, 0xde, 0x0a, 0xab, 0x3c, 0xdc, 0xd1, 0x62, 0xad, 0xd4, 0x9f, 0xf9, 0xa9, 0xb6, 0xf6, 0x85, 0xb5, 0x35, 0x5b, - 0x33, 0xe0, 0x99, 0x1c, 0xe7, 0xb3, 0xe3, 0xb4, 0x45, 0xc7, 0x18, 0x67, 0xb8, 0xce, 0x95, 0xa9, 0x72, 0xee, 0xeb, 0xdb, - 0xb2, 0x5f, 0x8a, 0x7b, 0x5a, 0xac, 0xf9, 0x0d, 0xfb, 0x47, 0xdf, 0xd9, 0xa9, 0x64, 0x18, 0x8e, 0x64, 0xf6, 0xa3, 0xfb, - 0x4a, 0xbd, 0xee, 0x08, 0xfd, 0xab, 0xd8, 0xfe, 0xd2, 0xb1, 0x67, 0x9c, 0x7b, 0x76, 0x94, 0x15, 0xb1, 0xdd, 0xf4, 0x66, - 0x58, 0x4b, 0xbf, 0xcb, 0xd3, 0x16, 0xed, 0x4d, 0x94, 0xaf, 0xca, 0x3d, 0xbc, 0x4d, 0xf3, 0x72, 0xad, 0xba, 0xce, 0xe4, - 0x4b, 0xbd, 0x0d, 0xf6, 0x95, 0xfb, 0x7c, 0x4b, 0xe6, 0x6a, 0x89, 0xc5, 0x59, 0xdc, 0xd7, 0xd6, 0xca, 0x36, 0xb9, 0x8e, - 0x47, 0x22, 0xc6, 0xce, 0x6c, 0xc9, 0x1f, 0xe7, 0x6d, 0x6b, 0x69, 0x7c, 0xee, 0x7b, 0xb9, 0xfb, 0xa2, 0xdc, 0xc3, 0xf5, - 0x4c, 0x9a, 0xab, 0x72, 0x9c, 0xd7, 0x32, 0xb3, 0xac, 0xcb, 0xa4, 0xb7, 0x77, 0xfb, 0xf1, 0xda, 0x33, 0xbc, 0xbe, 0x56, - 0x3e, 0x21, 0x97, 0xee, 0x1b, 0xdf, 0x0c, 0xff, 0xec, 0xf7, 0xf3, 0x8f, 0x8c, 0x67, 0xdb, 0x74, 0xce, 0xf8, 0x64, 0xfb, - 0x5f, 0x9f, 0x49, 0x67, 0xfb, 0xc8, 0x0c, 0x87, 0x5b, 0x39, 0x03, 0x98, 0xf8, 0xff, 0xf6, 0xf9, 0x7f, 0xdc, 0x90, 0x17, - 0x69, 0x76, 0x2d, 0x59, 0x9b, 0xff, 0x77, 0x13, 0xff, 0x27, 0xa3, 0xe2, 0xf9, 0x5c, 0x9a, 0xf3, 0xab, 0xfc, 0x26, 0xfe, - 0x17, 0x8d, 0xfb, 0xdf, 0x96, 0x49, 0xd3, 0xf8, 0x7f, 0x5d, 0x54, 0x7c, 0xea, 0x5a, 0x1a, 0x6c, 0x85, 0xb1, 0x7c, 0x65, - 0x86, 0xe1, 0xb8, 0xe1, 0x0a, 0x54, 0xc9, 0xcc, 0x98, 0xff, 0xfc, 0xd3, 0xa2, 0x7c, 0x65, 0x8e, 0xad, 0x6b, 0xca, 0xb6, - 0x26, 0xfe, 0xdf, 0x99, 0xfd, 0xfa, 0x13, 0xe7, 0xff, 0xf7, 0x3c, 0x63, 0xd8, 0x6e, 0xce, 0xcc, 0x16, 0x4b, 0x3e, 0xdf, - 0x92, 0x77, 0x38, 0x2b, 0xef, 0x97, 0x9e, 0xcf, 0xa4, 0x77, 0x5f, 0x56, 0xfa, 0xda, 0x5d, 0x9e, 0xf1, 0x1f, 0xbe, 0xfb, - 0xd9, 0xb4, 0xf8, 0x07, 0xf1, 0x6f, 0xf6, 0x0f, 0xee, 0x4c, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xc7, 0xaf, 0x3f, 0xea, 0x01, 0xc4, 0x3f, 0xf0, 0xc7, - 0xc5, 0xff, 0xff, 0x00 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle amberFontRecs[189] = { - { 4, 4, 5 , 16 }, - { 17, 4, 2 , 10 }, - { 27, 4, 4 , 4 }, - { 39, 4, 5 , 10 }, - { 52, 4, 5 , 11 }, - { 65, 4, 5 , 10 }, - { 78, 4, 5 , 10 }, - { 91, 4, 2 , 4 }, - { 101, 4, 4 , 13 }, - { 113, 4, 5 , 13 }, - { 126, 4, 4 , 4 }, - { 138, 4, 5 , 6 }, - { 151, 4, 3 , 2 }, - { 162, 4, 5 , 2 }, - { 175, 4, 2 , 1 }, - { 185, 4, 5 , 10 }, - { 198, 4, 5 , 10 }, - { 211, 4, 4 , 10 }, - { 223, 4, 5 , 10 }, - { 236, 4, 5 , 10 }, - { 249, 4, 5 , 10 }, - { 262, 4, 5 , 10 }, - { 275, 4, 5 , 10 }, - { 288, 4, 5 , 10 }, - { 301, 4, 5 , 10 }, - { 314, 4, 5 , 10 }, - { 327, 4, 2 , 6 }, - { 337, 4, 2 , 6 }, - { 347, 4, 5 , 6 }, - { 360, 4, 5 , 4 }, - { 373, 4, 5 , 6 }, - { 386, 4, 5 , 10 }, - { 399, 4, 5 , 7 }, - { 412, 4, 5 , 10 }, - { 425, 4, 5 , 10 }, - { 438, 4, 5 , 10 }, - { 451, 4, 5 , 10 }, - { 464, 4, 5 , 10 }, - { 477, 4, 5 , 10 }, - { 490, 4, 5 , 10 }, - { 4, 28, 5 , 10 }, - { 17, 28, 4 , 10 }, - { 29, 28, 5 , 10 }, - { 42, 28, 5 , 10 }, - { 55, 28, 5 , 10 }, - { 68, 28, 5 , 10 }, - { 81, 28, 5 , 10 }, - { 94, 28, 5 , 10 }, - { 107, 28, 5 , 10 }, - { 120, 28, 5 , 10 }, - { 133, 28, 5 , 10 }, - { 146, 28, 5 , 10 }, - { 159, 28, 5 , 10 }, - { 172, 28, 5 , 10 }, - { 185, 28, 5 , 10 }, - { 198, 28, 5 , 10 }, - { 211, 28, 5 , 10 }, - { 224, 28, 5 , 10 }, - { 237, 28, 5 , 10 }, - { 250, 28, 3 , 13 }, - { 261, 28, 5 , 10 }, - { 274, 28, 3 , 13 }, - { 285, 28, 4 , 3 }, - { 297, 28, 5 , 1 }, - { 310, 28, 3 , 3 }, - { 321, 28, 5 , 7 }, - { 334, 28, 5 , 10 }, - { 347, 28, 5 , 7 }, - { 360, 28, 5 , 10 }, - { 373, 28, 5 , 7 }, - { 386, 28, 5 , 10 }, - { 399, 28, 5 , 10 }, - { 412, 28, 5 , 10 }, - { 425, 28, 4 , 10 }, - { 437, 28, 3 , 13 }, - { 448, 28, 5 , 10 }, - { 461, 28, 5 , 10 }, - { 474, 28, 5 , 7 }, - { 487, 28, 5 , 7 }, - { 4, 52, 5 , 7 }, - { 17, 52, 5 , 10 }, - { 30, 52, 5 , 10 }, - { 43, 52, 5 , 7 }, - { 56, 52, 5 , 7 }, - { 69, 52, 5 , 10 }, - { 82, 52, 5 , 7 }, - { 95, 52, 5 , 7 }, - { 108, 52, 5 , 7 }, - { 121, 52, 5 , 7 }, - { 134, 52, 5 , 10 }, - { 147, 52, 5 , 7 }, - { 160, 52, 4 , 13 }, - { 172, 52, 2 , 13 }, - { 182, 52, 4 , 13 }, - { 194, 52, 5 , 4 }, - { 207, 52, 2 , 9 }, - { 217, 52, 5 , 7 }, - { 230, 52, 5 , 10 }, - { 243, 52, 5 , 10 }, - { 256, 52, 5 , 10 }, - { 269, 52, 0 , 0 }, - { 277, 52, 5 , 10 }, - { 290, 52, 0 , 0 }, - { 298, 52, 5 , 7 }, - { 311, 52, 3 , 5 }, - { 322, 52, 5 , 5 }, - { 335, 52, 5 , 3 }, - { 348, 52, 5 , 7 }, - { 361, 52, 5 , 2 }, - { 374, 52, 4 , 4 }, - { 386, 52, 5 , 8 }, - { 399, 52, 3 , 5 }, - { 410, 52, 3 , 6 }, - { 421, 52, 0 , 0 }, - { 429, 52, 5 , 10 }, - { 442, 52, 5 , 10 }, - { 455, 52, 2 , 3 }, - { 465, 52, 0 , 0 }, - { 473, 52, 3 , 5 }, - { 484, 52, 4 , 4 }, - { 496, 52, 5 , 5 }, - { 4, 76, 5 , 10 }, - { 17, 76, 5 , 7 }, - { 30, 76, 5 , 10 }, - { 43, 76, 5 , 10 }, - { 56, 76, 5 , 14 }, - { 69, 76, 5 , 14 }, - { 82, 76, 5 , 14 }, - { 95, 76, 5 , 14 }, - { 108, 76, 5 , 12 }, - { 121, 76, 5 , 12 }, - { 134, 76, 5 , 10 }, - { 147, 76, 5 , 13 }, - { 160, 76, 5 , 14 }, - { 173, 76, 5 , 14 }, - { 186, 76, 5 , 14 }, - { 199, 76, 5 , 12 }, - { 212, 76, 4 , 14 }, - { 224, 76, 4 , 14 }, - { 236, 76, 4 , 14 }, - { 248, 76, 4 , 12 }, - { 260, 76, 5 , 10 }, - { 273, 76, 5 , 14 }, - { 286, 76, 5 , 14 }, - { 299, 76, 5 , 14 }, - { 312, 76, 5 , 14 }, - { 325, 76, 5 , 14 }, - { 338, 76, 5 , 12 }, - { 351, 76, 4 , 3 }, - { 363, 76, 5 , 10 }, - { 376, 76, 5 , 14 }, - { 389, 76, 5 , 14 }, - { 402, 76, 5 , 14 }, - { 415, 76, 5 , 12 }, - { 428, 76, 5 , 14 }, - { 441, 76, 5 , 10 }, - { 454, 76, 5 , 10 }, - { 467, 76, 5 , 10 }, - { 480, 76, 5 , 10 }, - { 493, 76, 5 , 10 }, - { 4, 100, 5 , 10 }, - { 17, 100, 5 , 9 }, - { 30, 100, 5 , 9 }, - { 43, 100, 5 , 7 }, - { 56, 100, 5 , 10 }, - { 69, 100, 5 , 10 }, - { 82, 100, 5 , 10 }, - { 95, 100, 5 , 10 }, - { 108, 100, 5 , 9 }, - { 121, 100, 4 , 10 }, - { 133, 100, 4 , 10 }, - { 145, 100, 4 , 10 }, - { 157, 100, 4 , 9 }, - { 169, 100, 5 , 10 }, - { 182, 100, 5 , 10 }, - { 195, 100, 5 , 10 }, - { 208, 100, 5 , 10 }, - { 221, 100, 5 , 10 }, - { 234, 100, 5 , 10 }, - { 247, 100, 5 , 9 }, - { 260, 100, 5 , 6 }, - { 273, 100, 5 , 7 }, - { 286, 100, 5 , 10 }, - { 299, 100, 5 , 10 }, - { 312, 100, 5 , 10 }, - { 325, 100, 5 , 9 }, - { 338, 100, 5 , 13 }, - { 351, 100, 5 , 10 }, - { 364, 100, 5 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo amberFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 1, 3, 5, { 0 }}, - { 34, 0, 3, 5, { 0 }}, - { 35, 0, 3, 5, { 0 }}, - { 36, 0, 3, 5, { 0 }}, - { 37, 0, 3, 5, { 0 }}, - { 38, 0, 3, 5, { 0 }}, - { 39, 1, 4, 5, { 0 }}, - { 40, 0, 3, 5, { 0 }}, - { 41, 0, 3, 5, { 0 }}, - { 42, 0, 3, 5, { 0 }}, - { 43, 0, 7, 5, { 0 }}, - { 44, 0, 12, 5, { 0 }}, - { 45, 0, 9, 5, { 0 }}, - { 46, 1, 12, 5, { 0 }}, - { 47, 0, 3, 5, { 0 }}, - { 48, 0, 3, 5, { 0 }}, - { 49, 0, 3, 5, { 0 }}, - { 50, 0, 3, 5, { 0 }}, - { 51, 0, 3, 5, { 0 }}, - { 52, 0, 3, 5, { 0 }}, - { 53, 0, 3, 5, { 0 }}, - { 54, 0, 3, 5, { 0 }}, - { 55, 0, 3, 5, { 0 }}, - { 56, 0, 3, 5, { 0 }}, - { 57, 0, 3, 5, { 0 }}, - { 58, 0, 7, 5, { 0 }}, - { 59, 0, 7, 5, { 0 }}, - { 60, 0, 7, 5, { 0 }}, - { 61, 0, 8, 5, { 0 }}, - { 62, 0, 7, 5, { 0 }}, - { 63, 0, 3, 5, { 0 }}, - { 64, 0, 6, 5, { 0 }}, - { 65, 0, 3, 5, { 0 }}, - { 66, 0, 3, 5, { 0 }}, - { 67, 0, 3, 5, { 0 }}, - { 68, 0, 3, 5, { 0 }}, - { 69, 0, 3, 5, { 0 }}, - { 70, 0, 3, 5, { 0 }}, - { 71, 0, 3, 5, { 0 }}, - { 72, 0, 3, 5, { 0 }}, - { 73, 0, 3, 5, { 0 }}, - { 74, 0, 3, 5, { 0 }}, - { 75, 0, 3, 5, { 0 }}, - { 76, 0, 3, 5, { 0 }}, - { 77, 0, 3, 5, { 0 }}, - { 78, 0, 3, 5, { 0 }}, - { 79, 0, 3, 5, { 0 }}, - { 80, 0, 3, 5, { 0 }}, - { 81, 0, 3, 5, { 0 }}, - { 82, 0, 3, 5, { 0 }}, - { 83, 0, 3, 5, { 0 }}, - { 84, 0, 3, 5, { 0 }}, - { 85, 0, 3, 5, { 0 }}, - { 86, 0, 3, 5, { 0 }}, - { 87, 0, 3, 5, { 0 }}, - { 88, 0, 3, 5, { 0 }}, - { 89, 0, 3, 5, { 0 }}, - { 90, 0, 3, 5, { 0 }}, - { 91, 0, 3, 5, { 0 }}, - { 92, 0, 3, 5, { 0 }}, - { 93, 0, 3, 5, { 0 }}, - { 94, 0, 3, 5, { 0 }}, - { 95, 0, 12, 5, { 0 }}, - { 96, 1, 4, 5, { 0 }}, - { 97, 0, 6, 5, { 0 }}, - { 98, 0, 3, 5, { 0 }}, - { 99, 0, 6, 5, { 0 }}, - { 100, 0, 3, 5, { 0 }}, - { 101, 0, 6, 5, { 0 }}, - { 102, 0, 3, 5, { 0 }}, - { 103, 0, 6, 5, { 0 }}, - { 104, 0, 3, 5, { 0 }}, - { 105, 0, 3, 5, { 0 }}, - { 106, 0, 3, 5, { 0 }}, - { 107, 0, 3, 5, { 0 }}, - { 108, 0, 3, 5, { 0 }}, - { 109, 0, 6, 5, { 0 }}, - { 110, 0, 6, 5, { 0 }}, - { 111, 0, 6, 5, { 0 }}, - { 112, 0, 6, 5, { 0 }}, - { 113, 0, 6, 5, { 0 }}, - { 114, 0, 6, 5, { 0 }}, - { 115, 0, 6, 5, { 0 }}, - { 116, 0, 3, 5, { 0 }}, - { 117, 0, 6, 5, { 0 }}, - { 118, 0, 6, 5, { 0 }}, - { 119, 0, 6, 5, { 0 }}, - { 120, 0, 6, 5, { 0 }}, - { 121, 0, 6, 5, { 0 }}, - { 122, 0, 6, 5, { 0 }}, - { 123, 0, 3, 5, { 0 }}, - { 124, 1, 3, 5, { 0 }}, - { 125, 0, 3, 5, { 0 }}, - { 126, 0, 8, 5, { 0 }}, - { 161, 1, 4, 5, { 0 }}, - { 162, 0, 6, 5, { 0 }}, - { 163, 0, 3, 5, { 0 }}, - { 8364, 0, 3, 5, { 0 }}, - { 165, 0, 3, 5, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 3, 5, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 0, 6, 5, { 0 }}, - { 170, 2, 3, 5, { 0 }}, - { 171, 0, 8, 5, { 0 }}, - { 172, 0, 6, 5, { 0 }}, - { 174, 0, 6, 5, { 0 }}, - { 175, 0, 3, 5, { 0 }}, - { 176, 1, 3, 5, { 0 }}, - { 177, 0, 5, 5, { 0 }}, - { 178, 2, 3, 5, { 0 }}, - { 179, 2, 3, 5, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 6, 5, { 0 }}, - { 182, 0, 3, 5, { 0 }}, - { 183, 1, 6, 5, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 3, 5, { 0 }}, - { 186, 0, 3, 5, { 0 }}, - { 187, 0, 8, 5, { 0 }}, - { 338, 0, 3, 5, { 0 }}, - { 339, 0, 6, 5, { 0 }}, - { 376, 0, 3, 5, { 0 }}, - { 191, 0, 3, 5, { 0 }}, - { 192, 0, -1, 5, { 0 }}, - { 193, 0, -1, 5, { 0 }}, - { 194, 0, -1, 5, { 0 }}, - { 195, 0, -1, 5, { 0 }}, - { 196, 0, 1, 5, { 0 }}, - { 197, 0, 1, 5, { 0 }}, - { 198, 0, 3, 5, { 0 }}, - { 199, 0, 3, 5, { 0 }}, - { 200, 0, -1, 5, { 0 }}, - { 201, 0, -1, 5, { 0 }}, - { 202, 0, -1, 5, { 0 }}, - { 203, 0, 1, 5, { 0 }}, - { 204, 0, -1, 5, { 0 }}, - { 205, 0, -1, 5, { 0 }}, - { 206, 0, -1, 5, { 0 }}, - { 207, 0, 1, 5, { 0 }}, - { 208, 0, 3, 5, { 0 }}, - { 209, 0, -1, 5, { 0 }}, - { 210, 0, -1, 5, { 0 }}, - { 211, 0, -1, 5, { 0 }}, - { 212, 0, -1, 5, { 0 }}, - { 213, 0, -1, 5, { 0 }}, - { 214, 0, 1, 5, { 0 }}, - { 215, 0, 10, 5, { 0 }}, - { 216, 0, 3, 5, { 0 }}, - { 217, 0, -1, 5, { 0 }}, - { 218, 0, -1, 5, { 0 }}, - { 219, 0, -1, 5, { 0 }}, - { 220, 0, 1, 5, { 0 }}, - { 221, 0, -1, 5, { 0 }}, - { 222, 0, 3, 5, { 0 }}, - { 223, 0, 3, 5, { 0 }}, - { 224, 0, 3, 5, { 0 }}, - { 225, 0, 3, 5, { 0 }}, - { 226, 0, 3, 5, { 0 }}, - { 227, 0, 3, 5, { 0 }}, - { 228, 0, 4, 5, { 0 }}, - { 229, 0, 4, 5, { 0 }}, - { 230, 0, 6, 5, { 0 }}, - { 231, 0, 6, 5, { 0 }}, - { 232, 0, 3, 5, { 0 }}, - { 233, 0, 3, 5, { 0 }}, - { 234, 0, 3, 5, { 0 }}, - { 235, 0, 4, 5, { 0 }}, - { 236, 0, 3, 5, { 0 }}, - { 237, 0, 3, 5, { 0 }}, - { 238, 0, 3, 5, { 0 }}, - { 239, 0, 4, 5, { 0 }}, - { 240, 0, 3, 5, { 0 }}, - { 241, 0, 3, 5, { 0 }}, - { 242, 0, 3, 5, { 0 }}, - { 243, 0, 3, 5, { 0 }}, - { 244, 0, 3, 5, { 0 }}, - { 245, 0, 3, 5, { 0 }}, - { 246, 0, 4, 5, { 0 }}, - { 247, 0, 7, 5, { 0 }}, - { 248, 0, 6, 5, { 0 }}, - { 249, 0, 3, 5, { 0 }}, - { 250, 0, 3, 5, { 0 }}, - { 251, 0, 3, 5, { 0 }}, - { 252, 0, 4, 5, { 0 }}, - { 253, 0, 3, 5, { 0 }}, - { 254, 0, 3, 5, { 0 }}, - { 255, 0, 4, 5, { 0 }}, -}; - -// Style loading function: Amber -static void GuiLoadStyleAmber(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < AMBER_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(amberStyleProps[i].controlId, amberStyleProps[i].propertyId, amberStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int amberFontDataSize = 0; - unsigned char *data = DecompressData(amberFontData, AMBER_STYLE_FONT_ATLAS_COMP_SIZE, &amberFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, amberFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, amberFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/style_amber.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/style_amber.png deleted file mode 100644 index c428155..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/style_amber.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/style_amber.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/style_amber.rgs deleted file mode 100644 index 44d806e..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/amber/style_amber.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/README.md deleted file mode 100644 index b1d4de5..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: ashes - -What once was life now is ashes, just as slight reminiscense covers the ground, a gray sequence of tones that reminds to a distant past. - -![ashes style table](style_ashes.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_ashes.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_ashes.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_ashes.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_ashes.h` | Embeddable style as code file, self-contained, includes font data | -| `style_ashes.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![ashes style screen](screenshot.png) - -## about font - -"V5 Loxica Lixera" font by vFive Digital (Roberto Christen). - -100% free font, downloaded from dafont.com: [v5loxica-lixera](https://www.dafont.com/v5loxica-lixera.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/font_readme.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/font_readme.txt deleted file mode 100644 index 1a6b338..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/font_readme.txt +++ /dev/null @@ -1,51 +0,0 @@ - -V5 Loxica ---------------- -Instructions: - - -++ Loxica (LIXERA) ++ - -For screen use, set at 16pt. Turn -antialiasing off. Set tracking to zero -for best results. - -++ Loxica (ROBUSTA) ++ - -For screen use, set at 18pt. Turn -antialiasing off. Set tracking to zero -for best results. - - -Notes: - -1. These faces do not contain any hinting -information since they were built for use -at the sizes listed above. Naturally, for -print use you are free to experiment. - -2. Although the intended size for _lixera_ -is 16pt (vs. 18pt for _robusta_), they share -the same optical size (where lixera is the -regular weight, and robusta is the bold). - -3. Pronounciation: "lo-hee-ka lee-he-ra", and -"lo-hee-ka ro-bus-ta." - - - ---------------- -Usage: This is a free font--you may use -this and other V5 fonts at will. It may not -be sold, altered, or improperly credited, -however. All I ask is that you kindly inform -me if you find this font useful, and where -you've used it. - -Enjoy, - -©2000 -Roberto Christen -rob@vfive.com - - diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/screenshot.old.png deleted file mode 100644 index fb20893..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/screenshot.png deleted file mode 100644 index d7bb693..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.h deleted file mode 100644 index 9774760..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.h +++ /dev/null @@ -1,565 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleAshes(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define ASHES_STYLE_PROPS_COUNT 16 - -// Custom style name: Ashes -static const GuiStyleProp ashesStyleProps[ASHES_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0xf0f0f0ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x868686ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xe6e6e6ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0x929999ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xeaeaeaff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x98a1a8ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x3f3f3fff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xf6f6f6ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x414141ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x8b8b8bff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x777777ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x959595ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 18, (int)0x9dadb1ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x6b6b6bff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "v5loxical.ttf" (size: 16, spacing: 1) - -#define ASHES_STYLE_FONT_ATLAS_COMP_SIZE 1800 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char ashesFontData[ASHES_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0x9d, 0x51, 0xb6, 0xa4, 0x36, 0x0c, 0x44, 0xbd, 0xff, 0x4d, 0x57, 0xbe, 0x72, 0x32, 0xc9, 0x49, 0x83, 0x25, 0x97, 0xb0, - 0x0c, 0x77, 0xee, 0x5f, 0xbf, 0x1e, 0x1a, 0x5c, 0xc8, 0x06, 0xbb, 0x24, 0x6b, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfd, - 0xef, 0x27, 0xfa, 0xf9, 0x4d, 0x4d, 0x1f, 0xe7, 0xdf, 0x9f, 0xeb, 0xc7, 0x5f, 0x63, 0xc7, 0xd3, 0xf4, 0xef, 0x66, 0xfe, - 0xa2, 0xff, 0x3d, 0x3f, 0x2d, 0xff, 0xaa, 0xa6, 0xaf, 0xe6, 0xea, 0xbb, 0x57, 0xbf, 0xa9, 0xa6, 0xfa, 0xeb, 0xe2, 0x78, - 0xd7, 0x47, 0xd4, 0xc2, 0x3d, 0x31, 0xf7, 0xbb, 0xf3, 0x9a, 0xae, 0xb7, 0xe7, 0xaf, 0x7b, 0x6b, 0xfe, 0xbb, 0xf7, 0x6d, - 0x5c, 0xab, 0xff, 0x9f, 0xff, 0xc6, 0x8f, 0xbf, 0xe6, 0x34, 0xae, 0x89, 0xf4, 0xeb, 0x33, 0x95, 0x49, 0xed, 0xf9, 0xbb, - 0x56, 0x4b, 0xfd, 0x50, 0xe6, 0xe8, 0xf9, 0x33, 0x1e, 0x41, 0xb5, 0x74, 0x73, 0x17, 0x2a, 0x7c, 0xc4, 0xd5, 0xfe, 0x3c, - 0x13, 0xff, 0x5d, 0xf4, 0xcf, 0xdd, 0xcd, 0x6a, 0xa0, 0x7f, 0x46, 0x39, 0x19, 0xce, 0x54, 0xa6, 0xf1, 0xbf, 0x42, 0xfd, - 0xa8, 0xfe, 0x32, 0xb6, 0x80, 0x53, 0xff, 0x6c, 0xff, 0x9f, 0xe9, 0xff, 0x46, 0x13, 0x3d, 0x9f, 0xd7, 0x5f, 0x8f, 0xb7, - 0x80, 0x23, 0xfe, 0xc7, 0x6d, 0x6f, 0xab, 0x9b, 0xa7, 0x1a, 0xbd, 0x40, 0x7f, 0xc7, 0xfd, 0x9f, 0x1d, 0x29, 0xfb, 0x8e, - 0xff, 0x9a, 0xe8, 0xeb, 0xf4, 0x8a, 0xf8, 0x8f, 0x8f, 0x72, 0xf3, 0xef, 0x9b, 0x77, 0x23, 0xa5, 0xb6, 0x5f, 0x7b, 0xee, - 0x09, 0xe4, 0xef, 0xff, 0x77, 0x7e, 0xfc, 0x77, 0x19, 0x83, 0x76, 0x9d, 0xb7, 0xb6, 0xc6, 0x17, 0xfa, 0x7f, 0xe1, 0xfa, - 0x45, 0xcb, 0x73, 0x97, 0xa1, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xca, 0x59, - 0x10, 0x77, 0x22, 0x68, 0xd9, 0xe3, 0xe6, 0xf1, 0xdf, 0x2b, 0xdc, 0x02, 0x19, 0xdf, 0xfd, 0xaf, 0xf3, 0x8a, 0x7d, 0x7f, - 0x84, 0x3d, 0x75, 0x4a, 0xae, 0x83, 0x29, 0xed, 0xea, 0x5a, 0x77, 0xa8, 0x57, 0xac, 0x20, 0xe7, 0xbd, 0x76, 0x11, 0x8f, - 0xae, 0x4c, 0x3e, 0x2d, 0x99, 0x73, 0x54, 0xdc, 0xfa, 0x8f, 0xed, 0xfa, 0xab, 0xd4, 0x0f, 0xa2, 0x1b, 0xbf, 0xd9, 0x17, - 0xf4, 0xcf, 0x3a, 0x77, 0x23, 0xfd, 0xbc, 0xec, 0xde, 0xc9, 0xf8, 0xf9, 0xdd, 0xe7, 0x03, 0x7c, 0x51, 0xff, 0x11, 0x8e, - 0xdb, 0x78, 0x0f, 0x3b, 0x3b, 0x52, 0x6b, 0x63, 0xfc, 0x5f, 0x8d, 0xdb, 0x0a, 0x44, 0x4d, 0x54, 0x9d, 0xd8, 0xef, 0xfe, - 0x73, 0xae, 0xeb, 0x4f, 0x44, 0x4f, 0xe9, 0x3f, 0x16, 0x7d, 0x9c, 0xb2, 0xf5, 0x18, 0xd9, 0x71, 0xae, 0x5f, 0xfc, 0xbb, - 0x9f, 0xff, 0xea, 0xf4, 0x97, 0xc1, 0x8d, 0xa5, 0x52, 0x2f, 0x68, 0x26, 0x47, 0xe5, 0x3d, 0xfa, 0x67, 0xde, 0x70, 0x3c, - 0xc7, 0x39, 0xc1, 0x87, 0xfa, 0x05, 0xfd, 0x01, 0xfd, 0xf1, 0xa1, 0x67, 0x9e, 0xdb, 0xea, 0xe6, 0x7f, 0x14, 0xee, 0xaf, - 0xd1, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xeb, 0xdb, 0xd9, 0x2a, - 0xe0, 0x8e, 0xef, 0x67, 0x7f, 0x41, 0x36, 0xc7, 0xa7, 0xcf, 0x3f, 0xfa, 0x7b, 0xfd, 0xd8, 0x91, 0xeb, 0x50, 0xa7, 0xff, - 0xb0, 0xbb, 0x68, 0xe3, 0x9e, 0xb4, 0x78, 0x7d, 0xfc, 0xd1, 0x4c, 0xff, 0x11, 0x68, 0x77, 0x15, 0xe6, 0x4c, 0xa0, 0x7f, - 0x7f, 0xfd, 0x7d, 0x95, 0x2f, 0xdf, 0xae, 0xff, 0x38, 0x4a, 0xff, 0xb5, 0x1d, 0x01, 0x5c, 0xfa, 0xe7, 0xfd, 0xed, 0xae, - 0x51, 0x70, 0x3d, 0xc7, 0x60, 0xa4, 0x77, 0x12, 0x72, 0xe9, 0x3f, 0x12, 0x79, 0x7f, 0x0e, 0x6f, 0xfc, 0x1b, 0xe2, 0x7f, - 0x18, 0xe2, 0x7f, 0x34, 0xed, 0xff, 0x87, 0xc9, 0x0f, 0x8a, 0xfe, 0xdf, 0xd6, 0xdf, 0x53, 0xfb, 0xf8, 0xbd, 0xfa, 0x77, - 0x7d, 0xfe, 0x43, 0xff, 0x13, 0xf5, 0x97, 0xed, 0xca, 0x7d, 0xfa, 0xaf, 0x66, 0x4d, 0x7a, 0x9e, 0xb4, 0x94, 0x7e, 0x6e, - 0x57, 0x38, 0x57, 0x2b, 0x9e, 0x7d, 0xea, 0xc8, 0x14, 0xbc, 0xab, 0x10, 0x11, 0x9b, 0x4d, 0x8a, 0x56, 0xd7, 0xa8, 0xd3, - 0xff, 0xcc, 0x8a, 0x25, 0xcc, 0xd0, 0x56, 0x64, 0xbb, 0xc0, 0x3b, 0xee, 0xf9, 0x2f, 0x46, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xad, 0x84, 0xc7, 0x56, 0x23, 0x5d, 0x6b, 0xb9, 0xc3, 0xb2, 0xbb, 0x80, - 0x0c, 0xeb, 0xeb, 0x6b, 0xff, 0x5f, 0x7f, 0xac, 0x0c, 0xbb, 0x72, 0x1c, 0x1c, 0x9f, 0xcf, 0x3a, 0x1b, 0x32, 0xeb, 0x8b, - 0x55, 0x8e, 0x06, 0x25, 0x7c, 0xd1, 0x15, 0xeb, 0xe2, 0x0a, 0xaf, 0xc1, 0xef, 0xf2, 0x44, 0x2b, 0x78, 0x45, 0xb2, 0xac, - 0x51, 0x3a, 0x9c, 0xc4, 0x5a, 0x76, 0x0a, 0xc7, 0x7d, 0xc2, 0x2a, 0xb8, 0x0f, 0xcf, 0xd0, 0xdf, 0x3b, 0x86, 0x54, 0x45, - 0xae, 0x37, 0xfe, 0xb5, 0xa0, 0x7f, 0x74, 0x37, 0x1b, 0xf4, 0xf7, 0xe8, 0x1f, 0x7b, 0x12, 0xa9, 0xd3, 0x9f, 0xf8, 0xdf, - 0x17, 0xff, 0xab, 0x1e, 0x3e, 0xf4, 0xff, 0x86, 0xfe, 0x32, 0xd5, 0xe1, 0x46, 0xff, 0x75, 0x8f, 0x5a, 0xcc, 0x01, 0xeb, - 0x72, 0x0a, 0xf7, 0x89, 0xff, 0x61, 0xf3, 0x44, 0xfb, 0x2a, 0x88, 0x77, 0xe8, 0x17, 0x1c, 0xdf, 0xee, 0x3d, 0xfe, 0x3f, - 0xe9, 0x00, 0xee, 0xec, 0xf7, 0xac, 0xf4, 0xae, 0x76, 0xd1, 0xbf, 0x5e, 0x81, 0x73, 0xf5, 0x3f, 0x37, 0x47, 0xa0, 0x53, - 0xab, 0xa2, 0x7f, 0xff, 0xac, 0x0b, 0xa0, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, - 0x3c, 0xd3, 0x9d, 0xf3, 0x4f, 0xc8, 0xe4, 0x82, 0x88, 0xfa, 0x00, 0xc7, 0x74, 0x8d, 0x7c, 0xa5, 0x9c, 0xc7, 0xab, 0xbe, - 0x93, 0xbb, 0x56, 0x96, 0x71, 0x45, 0x42, 0x97, 0xad, 0x54, 0xeb, 0xcf, 0xda, 0x55, 0x1f, 0x3d, 0x53, 0xe3, 0x71, 0x25, - 0x0b, 0xc2, 0xed, 0x3b, 0x90, 0xcd, 0x19, 0xa3, 0xe0, 0xfa, 0xa5, 0xcb, 0x87, 0x9f, 0xd3, 0x3f, 0xee, 0x1a, 0xab, 0xfb, - 0xd4, 0x91, 0x8b, 0x94, 0xcd, 0x1b, 0x91, 0x6d, 0x2d, 0x5a, 0x97, 0xf9, 0x4f, 0xbb, 0xfa, 0xff, 0xea, 0xfa, 0xf8, 0x4f, - 0xea, 0x1f, 0xf7, 0x00, 0x5d, 0x8f, 0x5a, 0x6b, 0x3a, 0x5d, 0x1d, 0x4f, 0xcb, 0x57, 0xd9, 0x4f, 0x7f, 0x5f, 0x8d, 0x6f, - 0x6f, 0xcb, 0xdc, 0xab, 0xbc, 0x16, 0xd9, 0x91, 0xfe, 0x5f, 0xe1, 0xfe, 0xdf, 0x93, 0x59, 0x51, 0xef, 0x82, 0x7e, 0x7e, - 0x7f, 0x04, 0x19, 0x7a, 0xf9, 0xbb, 0x2c, 0x58, 0xa1, 0x7f, 0x59, 0x1e, 0x48, 0x07, 0xfd, 0xaf, 0x9f, 0xc7, 0x65, 0x75, - 0x24, 0xd5, 0x8e, 0xff, 0xf9, 0x7a, 0xda, 0xae, 0x3a, 0xe3, 0x8e, 0x7d, 0x53, 0x6a, 0xfa, 0xff, 0xda, 0xf8, 0x1f, 0x45, - 0xcf, 0xff, 0x9d, 0xbd, 0x8f, 0x2e, 0x27, 0xf8, 0xb3, 0xcf, 0x7f, 0x9e, 0xf7, 0x99, 0x7c, 0x66, 0x44, 0xec, 0xfd, 0xbf, - 0xb3, 0x03, 0xb2, 0xa7, 0xfe, 0xf1, 0x3d, 0x25, 0x73, 0xfd, 0xe6, 0xb7, 0x1d, 0xa9, 0xeb, 0x7b, 0x58, 0x56, 0xf6, 0x6d, - 0x78, 0x83, 0x4f, 0xbd, 0x63, 0xde, 0x97, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xf3, 0xc8, 0xac, 0xae, 0x38, 0x2b, 0x51, 0x01, 0xdc, 0xb7, 0x6e, 0x73, 0xe7, 0x2f, 0xd1, 0x42, 0x2d, 0xb7, 0x4c, - 0x1d, 0xe8, 0x2b, 0x77, 0x8c, 0x82, 0xde, 0x19, 0xdf, 0xba, 0x94, 0x16, 0xd5, 0xcf, 0xfa, 0xaa, 0x64, 0x73, 0xd1, 0x64, - 0xdc, 0x6d, 0x0a, 0xd6, 0x88, 0x9f, 0xcb, 0x36, 0xf1, 0xf9, 0x42, 0xee, 0xbd, 0xf3, 0x75, 0xeb, 0xa6, 0x0a, 0xc6, 0x81, - 0x42, 0x8e, 0xb3, 0xdf, 0x6d, 0xb5, 0x1e, 0x95, 0xeb, 0xfa, 0xe7, 0xe3, 0x5f, 0xb6, 0xba, 0xf6, 0x59, 0xfd, 0x73, 0x11, - 0xb2, 0x1e, 0xff, 0x4a, 0x65, 0xd0, 0x54, 0x79, 0x76, 0x56, 0xf5, 0x1f, 0x66, 0xfd, 0x9f, 0x8b, 0x7f, 0x6d, 0x18, 0xff, - 0xff, 0x1c, 0xa1, 0x64, 0xfb, 0xdd, 0x35, 0x9f, 0xe4, 0x1e, 0xfd, 0xb3, 0xde, 0x3f, 0xdd, 0xb8, 0x63, 0xf5, 0xa8, 0xb7, - 0x25, 0xdb, 0x83, 0xa8, 0xa1, 0x2f, 0xe6, 0x2e, 0xef, 0xac, 0x87, 0xc3, 0x71, 0xfd, 0x09, 0x7c, 0xa5, 0x87, 0x5c, 0xbd, - 0x6b, 0x9c, 0xfa, 0xbb, 0xbc, 0xab, 0xb3, 0xb1, 0x87, 0xfe, 0xde, 0xf7, 0xc7, 0x7e, 0xf1, 0x7f, 0xed, 0xbb, 0xed, 0xad, - 0x7f, 0xec, 0xfd, 0x4f, 0x9b, 0x5b, 0xb9, 0xa3, 0x3f, 0x59, 0xa9, 0x27, 0xd0, 0x3e, 0xfa, 0xef, 0x3a, 0xd6, 0xdb, 0xe7, - 0xb6, 0xba, 0xe8, 0x7f, 0x37, 0xff, 0x73, 0x5a, 0xc6, 0xc6, 0x49, 0xfa, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x71, 0x8d, 0x74, 0x76, 0x95, 0x51, 0x41, 0x27, 0xf1, 0x75, 0xa5, 0xb4, 0xeb, 0x7c, - 0x82, 0xaa, 0xab, 0x58, 0xdd, 0x1f, 0x3e, 0x5a, 0x1b, 0x55, 0x41, 0xb7, 0xa3, 0x4b, 0xab, 0xbc, 0x13, 0x53, 0x26, 0xef, - 0xab, 0xaf, 0xf2, 0xbf, 0xfb, 0x2a, 0x66, 0x75, 0x55, 0xc0, 0xd5, 0xee, 0x69, 0x4b, 0xd7, 0x55, 0xf6, 0xf1, 0x66, 0x0d, - 0xa3, 0xfe, 0xa7, 0xf6, 0xbc, 0xfb, 0x3d, 0x48, 0x6a, 0xf4, 0x79, 0x56, 0xff, 0xf8, 0x78, 0xb1, 0x3a, 0xbe, 0xac, 0xef, - 0x38, 0xa2, 0xcb, 0x2c, 0x98, 0xca, 0xb6, 0xf7, 0xf7, 0xcf, 0xbe, 0xcf, 0x65, 0xcb, 0x19, 0x74, 0xd6, 0x05, 0xf7, 0xeb, - 0xbf, 0xaf, 0x8d, 0x7b, 0xeb, 0xbf, 0x53, 0x67, 0xf4, 0x47, 0xff, 0xaf, 0xe9, 0x1f, 0xab, 0xb4, 0x5f, 0xff, 0x79, 0x4e, - 0xb7, 0xda, 0xd1, 0x9f, 0xf8, 0x27, 0xfe, 0xd1, 0xff, 0xc9, 0xcf, 0x63, 0x11, 0x7a, 0xaa, 0xfe, 0x2a, 0x9d, 0x33, 0x39, - 0x51, 0x7f, 0x5f, 0xde, 0x6d, 0x7f, 0xfd, 0x77, 0x69, 0x72, 0xb6, 0xfe, 0xe3, 0x35, 0xf1, 0x8f, 0xfe, 0xbe, 0x7a, 0x05, - 0xe7, 0xcd, 0xff, 0xe4, 0xb3, 0xd6, 0x9d, 0xf3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x5e, 0xff, 0xbf, 0xc2, 0xf3, 0xf6, 0x19, 0x27, 0x7a, 0xa5, 0x3f, 0x7f, 0x7e, 0x96, 0x5d, 0xa9, 0x19, 0xfa, 0xbd, 0x79, - 0x10, 0xb3, 0xd7, 0x91, 0x5d, 0x4d, 0x89, 0xd7, 0xac, 0x8e, 0xfa, 0x70, 0xea, 0xfd, 0xf9, 0x91, 0xbd, 0x0a, 0x1c, 0xfb, - 0x0e, 0x54, 0xe7, 0x41, 0x64, 0xf2, 0x51, 0x9e, 0xf2, 0x92, 0x5f, 0x57, 0x54, 0xed, 0xbc, 0xe2, 0x94, 0xe9, 0x3f, 0xb4, - 0xd1, 0x7f, 0x1f, 0xd5, 0x3f, 0xb7, 0x03, 0x80, 0xc2, 0x3d, 0xa5, 0xc2, 0xeb, 0x96, 0x3d, 0x56, 0x93, 0xcf, 0xa9, 0x91, - 0xaa, 0x54, 0xfc, 0xfb, 0x22, 0x22, 0x33, 0xfe, 0x9f, 0xa1, 0xbf, 0x8e, 0xca, 0x83, 0x89, 0xfa, 0xdd, 0x54, 0xac, 0x7f, - 0xd6, 0xb7, 0x70, 0x46, 0xfc, 0xf7, 0xf1, 0x9d, 0xe6, 0x47, 0x2a, 0xa1, 0xff, 0xad, 0xbe, 0xda, 0xe2, 0x20, 0x8a, 0x3b, - 0x5a, 0xd1, 0x3f, 0xf2, 0x16, 0xb5, 0xa2, 0x7f, 0x3f, 0x1f, 0x5c, 0xf6, 0xfd, 0xef, 0x9b, 0xfa, 0xaf, 0xc6, 0xff, 0x69, - 0x3e, 0xc8, 0xd8, 0x5e, 0x8b, 0x4f, 0xe9, 0xaf, 0x03, 0xf4, 0x57, 0xab, 0x11, 0xca, 0xe9, 0x83, 0xd5, 0x03, 0xcf, 0xff, - 0xf1, 0x99, 0xc4, 0x8e, 0xf1, 0x7f, 0xbe, 0xfe, 0x4f, 0xec, 0x90, 0xe8, 0xd9, 0xcf, 0xed, 0x0c, 0xfd, 0xbb, 0xbd, 0xff, - 0x79, 0xe7, 0x92, 0x9c, 0xf3, 0x3f, 0x67, 0x55, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0x72, 0x0e, 0xc0, 0xaa, 0x03, 0x5f, 0xcb, 0x2b, 0x55, 0x0a, 0x38, 0xf8, 0xd5, 0xc8, 0xbf, 0x3f, 0x26, 0x6b, 0x2c, - 0x57, 0x9c, 0xad, 0xa7, 0x5a, 0x7a, 0x55, 0x85, 0xfc, 0x61, 0xa9, 0x92, 0x1f, 0x73, 0x1f, 0x3f, 0xed, 0xdf, 0x5f, 0x5b, - 0x11, 0xdf, 0x9d, 0x0f, 0x51, 0xe1, 0x25, 0x7e, 0x3e, 0x1f, 0x61, 0xa7, 0x7f, 0xff, 0xae, 0x5a, 0xb9, 0x36, 0x65, 0x1b, - 0xb0, 0x1a, 0xda, 0x3d, 0xdb, 0xa4, 0x53, 0xfe, 0x9f, 0x67, 0xa5, 0x7d, 0x35, 0x4f, 0x49, 0x8b, 0x3d, 0xea, 0x2e, 0x87, - 0x81, 0x8e, 0xf5, 0x43, 0x7b, 0x8f, 0xfc, 0x8c, 0xfe, 0xe7, 0xf8, 0xb4, 0xd0, 0x1f, 0xfd, 0xd1, 0xff, 0xcb, 0xfa, 0xeb, - 0x00, 0xfd, 0x3d, 0xfb, 0x36, 0xa0, 0x7f, 0x27, 0x3f, 0x74, 0x34, 0xfe, 0x87, 0x25, 0xc3, 0x1c, 0xfd, 0xbb, 0xf8, 0xa1, - 0xd1, 0xbf, 0x4f, 0x9e, 0x46, 0x6f, 0xfd, 0xcf, 0x7b, 0xff, 0x1b, 0xc5, 0xb5, 0xd1, 0xdf, 0xe3, 0x87, 0x67, 0x0e, 0x88, - 0xf9, 0x27, 0x40, 0x7f, 0xf8, 0xa2, 0xf6, 0xa8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x7a, 0x16, - 0x01, 0xfd, 0x01, 0x00, 0x80, 0xfe, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0xb2, - 0x15, 0x0d, 0x68, 0x07, 0x7a, 0x01, 0x40, 0x7f, 0xc0, 0x39, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbb, 0x01, 0xfd, 0x61, 0xab, 0xfe, 0x7f, 0x01 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle ashesFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 1 , 10 }, - { 25, 4, 3 , 3 }, - { 36, 4, 6 , 8 }, - { 50, 4, 5 , 11 }, - { 63, 4, 7 , 8 }, - { 78, 4, 6 , 9 }, - { 92, 4, 1 , 3 }, - { 101, 4, 3 , 12 }, - { 112, 4, 3 , 12 }, - { 123, 4, 5 , 5 }, - { 136, 4, 5 , 5 }, - { 149, 4, 2 , 2 }, - { 159, 4, 4 , 1 }, - { 171, 4, 1 , 1 }, - { 180, 4, 5 , 10 }, - { 193, 4, 4 , 8 }, - { 205, 4, 2 , 8 }, - { 215, 4, 4 , 8 }, - { 227, 4, 4 , 8 }, - { 239, 4, 6 , 8 }, - { 4, 28, 4 , 8 }, - { 16, 28, 4 , 8 }, - { 28, 28, 4 , 8 }, - { 40, 28, 4 , 8 }, - { 52, 28, 4 , 8 }, - { 64, 28, 1 , 5 }, - { 73, 28, 2 , 6 }, - { 83, 28, 4 , 7 }, - { 95, 28, 4 , 4 }, - { 107, 28, 4 , 7 }, - { 119, 28, 4 , 10 }, - { 131, 28, 8 , 7 }, - { 147, 28, 4 , 10 }, - { 159, 28, 4 , 10 }, - { 171, 28, 4 , 10 }, - { 183, 28, 4 , 10 }, - { 195, 28, 4 , 10 }, - { 207, 28, 5 , 10 }, - { 220, 28, 4 , 10 }, - { 232, 28, 4 , 10 }, - { 244, 28, 1 , 10 }, - { 4, 52, 3 , 10 }, - { 15, 52, 4 , 10 }, - { 27, 52, 4 , 10 }, - { 39, 52, 7 , 10 }, - { 54, 52, 4 , 10 }, - { 66, 52, 4 , 10 }, - { 78, 52, 4 , 10 }, - { 90, 52, 5 , 11 }, - { 103, 52, 4 , 10 }, - { 115, 52, 4 , 10 }, - { 127, 52, 5 , 10 }, - { 140, 52, 4 , 10 }, - { 152, 52, 4 , 10 }, - { 164, 52, 7 , 10 }, - { 179, 52, 4 , 10 }, - { 191, 52, 4 , 10 }, - { 203, 52, 4 , 10 }, - { 215, 52, 2 , 12 }, - { 225, 52, 5 , 10 }, - { 238, 52, 2 , 12 }, - { 4, 76, 5 , 3 }, - { 17, 76, 5 , 1 }, - { 30, 76, 2 , 2 }, - { 40, 76, 4 , 8 }, - { 52, 76, 4 , 10 }, - { 64, 76, 3 , 8 }, - { 75, 76, 4 , 10 }, - { 87, 76, 4 , 8 }, - { 99, 76, 3 , 10 }, - { 110, 76, 5 , 11 }, - { 123, 76, 4 , 10 }, - { 135, 76, 1 , 10 }, - { 144, 76, 3 , 13 }, - { 155, 76, 4 , 10 }, - { 167, 76, 2 , 10 }, - { 177, 76, 7 , 8 }, - { 192, 76, 4 , 8 }, - { 204, 76, 4 , 8 }, - { 216, 76, 4 , 11 }, - { 228, 76, 4 , 11 }, - { 240, 76, 3 , 8 }, - { 4, 100, 4 , 8 }, - { 16, 100, 3 , 10 }, - { 27, 100, 4 , 8 }, - { 39, 100, 5 , 8 }, - { 52, 100, 7 , 8 }, - { 67, 100, 4 , 8 }, - { 79, 100, 4 , 11 }, - { 91, 100, 4 , 8 }, - { 103, 100, 4 , 12 }, - { 115, 100, 1 , 10 }, - { 124, 100, 4 , 12 }, - { 136, 100, 4 , 2 }, - { 148, 100, 1 , 10 }, - { 157, 100, 4 , 12 }, - { 169, 100, 5 , 10 }, - { 182, 100, 5 , 10 }, - { 195, 100, 5 , 10 }, - { 208, 100, 0 , 0 }, - { 216, 100, 4 , 10 }, - { 228, 100, 0 , 0 }, - { 236, 100, 7 , 9 }, - { 4, 124, 3 , 7 }, - { 15, 124, 6 , 5 }, - { 29, 124, 0 , 0 }, - { 37, 124, 7 , 9 }, - { 52, 124, 4 , 1 }, - { 64, 124, 3 , 5 }, - { 75, 124, 5 , 7 }, - { 88, 124, 3 , 5 }, - { 99, 124, 0 , 0 }, - { 107, 124, 0 , 0 }, - { 115, 124, 4 , 11 }, - { 127, 124, 6 , 10 }, - { 141, 124, 3 , 3 }, - { 152, 124, 0 , 0 }, - { 160, 124, 2 , 5 }, - { 170, 124, 3 , 5 }, - { 181, 124, 6 , 5 }, - { 195, 124, 7 , 10 }, - { 210, 124, 7 , 8 }, - { 225, 124, 0 , 0 }, - { 233, 124, 4 , 10 }, - { 4, 148, 4 , 13 }, - { 16, 148, 4 , 13 }, - { 28, 148, 4 , 13 }, - { 40, 148, 4 , 13 }, - { 52, 148, 4 , 13 }, - { 64, 148, 4 , 13 }, - { 76, 148, 7 , 10 }, - { 91, 148, 4 , 13 }, - { 103, 148, 4 , 13 }, - { 115, 148, 4 , 13 }, - { 127, 148, 4 , 13 }, - { 139, 148, 4 , 13 }, - { 151, 148, 2 , 13 }, - { 161, 148, 2 , 13 }, - { 171, 148, 3 , 13 }, - { 182, 148, 3 , 13 }, - { 193, 148, 5 , 10 }, - { 206, 148, 4 , 13 }, - { 218, 148, 4 , 13 }, - { 230, 148, 4 , 13 }, - { 242, 148, 4 , 13 }, - { 4, 172, 4 , 13 }, - { 16, 172, 4 , 13 }, - { 28, 172, 5 , 5 }, - { 41, 172, 6 , 12 }, - { 55, 172, 4 , 13 }, - { 67, 172, 4 , 13 }, - { 79, 172, 4 , 13 }, - { 91, 172, 4 , 13 }, - { 103, 172, 4 , 13 }, - { 115, 172, 0 , 0 }, - { 123, 172, 5 , 12 }, - { 136, 172, 4 , 12 }, - { 148, 172, 4 , 12 }, - { 160, 172, 4 , 12 }, - { 172, 172, 4 , 12 }, - { 184, 172, 4 , 12 }, - { 196, 172, 4 , 12 }, - { 208, 172, 7 , 8 }, - { 223, 172, 3 , 11 }, - { 234, 172, 4 , 12 }, - { 4, 196, 4 , 12 }, - { 16, 196, 4 , 12 }, - { 28, 196, 4 , 12 }, - { 40, 196, 3 , 12 }, - { 51, 196, 3 , 12 }, - { 62, 196, 3 , 12 }, - { 73, 196, 3 , 12 }, - { 84, 196, 0 , 0 }, - { 92, 196, 4 , 12 }, - { 104, 196, 4 , 12 }, - { 116, 196, 4 , 12 }, - { 128, 196, 4 , 12 }, - { 140, 196, 4 , 12 }, - { 152, 196, 4 , 12 }, - { 164, 196, 5 , 5 }, - { 177, 196, 6 , 10 }, - { 191, 196, 4 , 12 }, - { 203, 196, 4 , 12 }, - { 215, 196, 4 , 12 }, - { 227, 196, 4 , 12 }, - { 239, 196, 4 , 15 }, - { 4, 220, 0 , 0 }, - { 12, 220, 4 , 15 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo ashesFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 0, 3, 4, { 0 }}, - { 34, 0, 1, 5, { 0 }}, - { 35, 0, 4, 8, { 0 }}, - { 36, 0, 2, 7, { 0 }}, - { 37, 0, 5, 9, { 0 }}, - { 38, 0, 4, 8, { 0 }}, - { 39, 0, 1, 3, { 0 }}, - { 40, 0, 2, 5, { 0 }}, - { 41, 0, 2, 5, { 0 }}, - { 42, 0, 3, 7, { 0 }}, - { 43, 0, 6, 7, { 0 }}, - { 44, 0, 12, 4, { 0 }}, - { 45, 0, 9, 5, { 0 }}, - { 46, 0, 12, 3, { 0 }}, - { 47, 0, 3, 7, { 0 }}, - { 48, 0, 5, 6, { 0 }}, - { 49, 0, 5, 4, { 0 }}, - { 50, 0, 5, 6, { 0 }}, - { 51, 0, 5, 6, { 0 }}, - { 52, 0, 5, 8, { 0 }}, - { 53, 0, 5, 6, { 0 }}, - { 54, 0, 5, 6, { 0 }}, - { 55, 0, 5, 6, { 0 }}, - { 56, 0, 5, 6, { 0 }}, - { 57, 0, 5, 6, { 0 }}, - { 58, 0, 8, 3, { 0 }}, - { 59, 0, 8, 4, { 0 }}, - { 60, 0, 5, 6, { 0 }}, - { 61, 0, 7, 7, { 0 }}, - { 62, 0, 5, 6, { 0 }}, - { 63, 1, 3, 7, { 0 }}, - { 64, 0, 5, 10, { 0 }}, - { 65, 0, 3, 6, { 0 }}, - { 66, 0, 3, 6, { 0 }}, - { 67, 0, 3, 6, { 0 }}, - { 68, 0, 3, 6, { 0 }}, - { 69, 0, 3, 6, { 0 }}, - { 70, 0, 3, 6, { 0 }}, - { 71, 0, 3, 6, { 0 }}, - { 72, 0, 3, 6, { 0 }}, - { 73, 0, 3, 3, { 0 }}, - { 74, 0, 3, 5, { 0 }}, - { 75, 0, 3, 6, { 0 }}, - { 76, 0, 3, 6, { 0 }}, - { 77, 0, 3, 9, { 0 }}, - { 78, 0, 3, 6, { 0 }}, - { 79, 0, 3, 6, { 0 }}, - { 80, 0, 3, 6, { 0 }}, - { 81, 0, 3, 7, { 0 }}, - { 82, 0, 3, 6, { 0 }}, - { 83, 0, 3, 6, { 0 }}, - { 84, 0, 3, 6, { 0 }}, - { 85, 0, 3, 6, { 0 }}, - { 86, 0, 3, 6, { 0 }}, - { 87, 0, 3, 9, { 0 }}, - { 88, 0, 3, 6, { 0 }}, - { 89, 0, 3, 6, { 0 }}, - { 90, 0, 3, 6, { 0 }}, - { 91, 0, 2, 4, { 0 }}, - { 92, 0, 3, 7, { 0 }}, - { 93, 0, 2, 4, { 0 }}, - { 94, 0, 3, 7, { 0 }}, - { 95, 0, 12, 7, { 0 }}, - { 96, 0, 1, 4, { 0 }}, - { 97, 0, 5, 6, { 0 }}, - { 98, 0, 3, 6, { 0 }}, - { 99, 0, 5, 5, { 0 }}, - { 100, 0, 3, 6, { 0 }}, - { 101, 0, 5, 6, { 0 }}, - { 102, 0, 3, 5, { 0 }}, - { 103, 0, 5, 6, { 0 }}, - { 104, 0, 3, 6, { 0 }}, - { 105, 0, 3, 3, { 0 }}, - { 106, 0, 3, 5, { 0 }}, - { 107, 0, 3, 6, { 0 }}, - { 108, 0, 3, 4, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 6, { 0 }}, - { 111, 0, 5, 6, { 0 }}, - { 112, 0, 5, 6, { 0 }}, - { 113, 0, 5, 6, { 0 }}, - { 114, 0, 5, 5, { 0 }}, - { 115, 0, 5, 6, { 0 }}, - { 116, 0, 3, 5, { 0 }}, - { 117, 0, 5, 6, { 0 }}, - { 118, 0, 5, 7, { 0 }}, - { 119, 0, 5, 9, { 0 }}, - { 120, 0, 5, 6, { 0 }}, - { 121, 0, 5, 6, { 0 }}, - { 122, 0, 5, 6, { 0 }}, - { 123, 0, 2, 6, { 0 }}, - { 124, 0, 3, 3, { 0 }}, - { 125, 0, 2, 6, { 0 }}, - { 126, 0, 1, 6, { 0 }}, - { 161, 0, 4, 4, { 0 }}, - { 162, 0, 3, 6, { 0 }}, - { 163, 0, 3, 7, { 0 }}, - { 8364, 0, 3, 7, { 0 }}, - { 165, 0, 3, 7, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 3, 6, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 0, 1, 9, { 0 }}, - { 170, 0, 1, 5, { 0 }}, - { 171, 0, 6, 8, { 0 }}, - { 172, 0, 0, 0, { 0 }}, - { 174, 0, 1, 9, { 0 }}, - { 175, 0, 0, 6, { 0 }}, - { 176, 0, 1, 5, { 0 }}, - { 177, 0, 5, 7, { 0 }}, - { 178, 0, 1, 5, { 0 }}, - { 179, 0, 0, 0, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 5, 6, { 0 }}, - { 182, 0, 3, 8, { 0 }}, - { 183, 0, 7, 5, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 1, 4, { 0 }}, - { 186, 0, 1, 5, { 0 }}, - { 187, 0, 6, 8, { 0 }}, - { 338, 0, 3, 9, { 0 }}, - { 339, 0, 5, 9, { 0 }}, - { 376, 0, 0, 0, { 0 }}, - { 191, 0, 4, 6, { 0 }}, - { 192, 0, 0, 6, { 0 }}, - { 193, 0, 0, 6, { 0 }}, - { 194, 0, 0, 6, { 0 }}, - { 195, 0, 0, 6, { 0 }}, - { 196, 0, 0, 6, { 0 }}, - { 197, 0, 0, 6, { 0 }}, - { 198, 0, 3, 9, { 0 }}, - { 199, 0, 3, 6, { 0 }}, - { 200, 0, 0, 6, { 0 }}, - { 201, 0, 0, 6, { 0 }}, - { 202, 0, 0, 6, { 0 }}, - { 203, 0, 0, 6, { 0 }}, - { 204, 0, 0, 4, { 0 }}, - { 205, 0, 0, 4, { 0 }}, - { 206, 0, 0, 5, { 0 }}, - { 207, 0, 0, 5, { 0 }}, - { 208, 0, 3, 7, { 0 }}, - { 209, 0, 0, 6, { 0 }}, - { 210, 0, 0, 6, { 0 }}, - { 211, 0, 0, 6, { 0 }}, - { 212, 0, 0, 6, { 0 }}, - { 213, 0, 0, 6, { 0 }}, - { 214, 0, 0, 6, { 0 }}, - { 215, 0, 7, 7, { 0 }}, - { 216, 0, 2, 8, { 0 }}, - { 217, 0, 0, 6, { 0 }}, - { 218, 0, 0, 6, { 0 }}, - { 219, 0, 0, 6, { 0 }}, - { 220, 0, 0, 6, { 0 }}, - { 221, 0, 0, 6, { 0 }}, - { 222, 0, 0, 0, { 0 }}, - { 223, 0, 3, 7, { 0 }}, - { 224, 0, 1, 6, { 0 }}, - { 225, 0, 1, 6, { 0 }}, - { 226, 0, 1, 6, { 0 }}, - { 227, 0, 1, 6, { 0 }}, - { 228, 0, 1, 6, { 0 }}, - { 229, 0, 1, 6, { 0 }}, - { 230, 0, 5, 9, { 0 }}, - { 231, 0, 5, 5, { 0 }}, - { 232, 0, 1, 6, { 0 }}, - { 233, 0, 1, 6, { 0 }}, - { 234, 0, 1, 6, { 0 }}, - { 235, 0, 1, 6, { 0 }}, - { 236, 0, 1, 5, { 0 }}, - { 237, 0, 1, 5, { 0 }}, - { 238, 0, 1, 5, { 0 }}, - { 239, 0, 1, 5, { 0 }}, - { 240, 0, 0, 0, { 0 }}, - { 241, 0, 1, 6, { 0 }}, - { 242, 0, 1, 6, { 0 }}, - { 243, 0, 1, 6, { 0 }}, - { 244, 0, 1, 6, { 0 }}, - { 245, 0, 1, 6, { 0 }}, - { 246, 0, 1, 6, { 0 }}, - { 247, 0, 7, 7, { 0 }}, - { 248, 0, 4, 8, { 0 }}, - { 249, 0, 1, 6, { 0 }}, - { 250, 0, 1, 6, { 0 }}, - { 251, 0, 1, 6, { 0 }}, - { 252, 0, 1, 6, { 0 }}, - { 253, 0, 1, 6, { 0 }}, - { 254, 0, 0, 0, { 0 }}, - { 255, 0, 1, 6, { 0 }}, -}; - -// Style loading function: Ashes -static void GuiLoadStyleAshes(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < ASHES_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(ashesStyleProps[i].controlId, ashesStyleProps[i].propertyId, ashesStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int ashesFontDataSize = 0; - unsigned char *data = DecompressData(ashesFontData, ASHES_STYLE_FONT_ATLAS_COMP_SIZE, &ashesFontDataSize); - Image imFont = { data, 256, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, ashesFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, ashesFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 254, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.png deleted file mode 100644 index 2094965..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.rgs deleted file mode 100644 index 56fb93b..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.txt.rgs deleted file mode 100644 index c66a8b4..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/style_ashes.txt.rgs +++ /dev/null @@ -1,26 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 16 charset.txt v5loxical.ttf -p 00 00 0xf0f0f0ff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0x868686ff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0xe6e6e6ff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0x929999ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0xeaeaeaff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0x98a1a8ff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0x3f3f3fff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0xf6f6f6ff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0x414141ff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0x8b8b8bff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0x777777ff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x959595ff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x00000010 TEXT_SIZE -p 00 18 0x9dadb1ff LINE_COLOR -p 00 19 0x6b6b6bff BACKGROUND_COLOR -p 00 20 0x00000018 TEXT_LINE_SPACING diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/v5loxical.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/v5loxical.ttf deleted file mode 100644 index 61501cb..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/ashes/v5loxical.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/README.md deleted file mode 100644 index c8390b3..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: bluish - -Like a breeze, a slight touch of color cover the clear sky, a spacious and relaxing feeling. - -![bluish style table](style_bluish.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_bluish.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_bluish.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_bluish.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_bluish.h` | Embeddable style as code file, self-contained, includes font data | -| `style_bluish.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![bluish style screen](screenshot.png) - -## about font - -"Homespun BRK" font by AEnigma (Brian Kent). - -100% free font, downloaded from dafont.com: [homespun-brk](https://www.dafont.com/homespun-brk.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/font_readme.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/font_readme.txt deleted file mode 100644 index 8dd9bdc..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/font_readme.txt +++ /dev/null @@ -1,76 +0,0 @@ -_______________________________ -Homespun Created by Brian Kent -¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ -Thanks for Downloading Homespun. - -Homespun TT [.ttf] -Homespun [8pt] [.fon] - - - 'homespun.fon' is a Windows Bitmap Font (.fon). This font is best -used at 8pt. To use it at larger point sizes (for images), try using -a graphics program like Photoshop, Paint Shop Pro, or the Paint -program that comes with Windows. Type out your text at the recommended -point size [8pt], then resize the image. Set the color mode to 256 -or 2 colors so the edges don't get blured when resizing, then after you -have the text to the size that you want, then change back to a higher -color mode and edit the image. - - For programs that don't show Bitmap Fonts in the Font Selector, you -may be able to get the font to work by typing in: -homespun brk - - When using the TTF version, try using it with anti-aliasing off. - - -If you have any questions or comments, you can e-mail me at -kentpw@norwich.net - -You can visit my Webpage <ÆNIGMA GAMES & FONTS> at -http://www.aenigmafonts.com/ - -________________ -INSTALLING FONTS -¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - There's a couple of ways to install Fonts. The 'easy' way to -install fonts is to just Unzip/place the font file [.ttf] into your -Windows\Fonts directory (I always use this method). If you're unable -to do it the 'easy' way, then try to do it this way (for Windows -95/98/NT): - -1] Unzip the Font(s) to a folder (or somewhere, just remember where -you unzipped it) on your Computer. - -2] Next, click on the START button, then select SETTINGS then -CONTROL PANEL. - -3] When the Control Panel Window pops up, Double Click on FONTS. - -4] When the FONTS window pops up, select File then Install New Font... - -5] A Add Fonts window will pop up, just go to the folder that you -unzipped the Font(s) to, select the Font(s) and then click on OK. -Now the Font(s) are installed. - - Now you can use the Font(s) in programs that utilize Fonts. Make -sure that you install the font(s) first, then open up your apps -(so the app will recognize the font). Sometimes you'll have to -wait until your computer 'auto-refreshes' for programs to recognize -fonts (Windows is sometimes slow to do that). You can refresh your -computer quicker by going into Windows Explorer -or- My Computer and -press F5 (or in the menubar select VIEW then REFRESH). - - -__________ -DISCLAIMER -¯¯¯¯¯¯¯¯¯¯ --The font(s) in this zip file were created by me (Brian Kent). All -of my Fonts are Freeware, you can use them any way you want to -(Personal use, Commercial use, or whatever). - --If you have a Font related site and would like to offer my fonts on -your site, go right ahead. All I ask is that you keep this text file -intact with the Font. - --You may not Sell or Distribute my Fonts for profit or alter them in -any way without asking me first. [e-mail - kentpw@norwich.net] diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/homespun.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/homespun.ttf deleted file mode 100644 index 45c23e0..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/homespun.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/screenshot.old.png deleted file mode 100644 index ac09b88..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/screenshot.png deleted file mode 100644 index 0623192..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.h deleted file mode 100644 index d95ab8c..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.h +++ /dev/null @@ -1,610 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleBluish(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define BLUISH_STYLE_PROPS_COUNT 14 - -// Custom style name: Bluish -static const GuiStyleProp bluishStyleProps[BLUISH_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x5ca6a6ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0xb4e8f3ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x447e77ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0x5f8792ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xcdeff7ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x4c6c74ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x3b5b5fff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xeaffffff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x275057ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x96aaacff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0xc8d7d9ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x8c9c9eff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 18, (int)0x84adb7ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0xe8eef1ff }, // DEFAULT_BACKGROUND_COLOR -}; - -// WARNING: This style uses a custom font: "homespun.ttf" (size: 10, spacing: 1) - -#define BLUISH_STYLE_FONT_ATLAS_COMP_SIZE 2730 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char bluishFontData[BLUISH_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0x9d, 0xdb, 0x92, 0xdb, 0x38, 0x0c, 0x44, 0x45, 0xee, 0xff, 0xff, 0xf1, 0x90, 0xdc, 0xca, 0xc8, 0x33, 0xa9, 0x4d, 0xd4, - 0x10, 0x01, 0x41, 0x17, 0xef, 0x9c, 0x9c, 0x4a, 0x1e, 0x44, 0x8b, 0x26, 0x09, 0x4a, 0x76, 0x84, 0x76, 0x63, 0x2c, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0x51, 0xc5, 0xb1, 0x2a, 0x5f, 0x5d, 0x1d, 0x3d, 0xad, 0xc7, 0xab, 0xd1, 0xee, 0xeb, 0xad, 0x3a, - 0x7a, 0xb0, 0x5a, 0xec, 0xb6, 0x3f, 0x29, 0x2f, 0x32, 0x56, 0xb6, 0x7e, 0xaf, 0xc7, 0xf6, 0x2a, 0x79, 0x5e, 0x5f, 0x5d, - 0xb3, 0xd8, 0x66, 0x88, 0x63, 0x7d, 0x73, 0xbe, 0x63, 0x14, 0xd1, 0x52, 0xc7, 0x10, 0xe3, 0x19, 0x9f, 0x67, 0x6d, 0xf7, - 0x68, 0x9d, 0xb5, 0xf5, 0x1e, 0x6d, 0xa3, 0x8f, 0x26, 0x77, 0xc5, 0xaf, 0x77, 0x54, 0x2b, 0xd4, 0x45, 0x3c, 0xc7, 0xe6, - 0x6b, 0x57, 0xca, 0xd4, 0xab, 0xad, 0x77, 0x18, 0xa3, 0x8d, 0xf6, 0x5a, 0x8f, 0x3f, 0x67, 0x31, 0x5c, 0xaf, 0xd7, 0x2d, - 0xc7, 0xe3, 0xdf, 0x3f, 0xc7, 0x53, 0x36, 0xae, 0x83, 0x5f, 0xd1, 0xea, 0x22, 0x5e, 0x6a, 0x3c, 0xeb, 0xca, 0x95, 0xcd, - 0x1e, 0xad, 0xb3, 0x96, 0xe9, 0xd5, 0xde, 0x3e, 0x7f, 0x1d, 0xe9, 0xf6, 0x3c, 0xca, 0x67, 0xdb, 0xd6, 0xda, 0xb5, 0xa4, - 0xfb, 0xaa, 0x9a, 0xef, 0x62, 0x5e, 0x5b, 0xdb, 0xab, 0xd0, 0x5d, 0x2d, 0xc7, 0xe3, 0xaf, 0x77, 0xf4, 0x78, 0xfd, 0x55, - 0x33, 0x6b, 0x62, 0x3c, 0x45, 0xb4, 0xd8, 0x67, 0x1d, 0x89, 0x7f, 0x79, 0x8d, 0xb4, 0x8a, 0xeb, 0x79, 0x88, 0x2b, 0xfa, - 0xcc, 0xe8, 0xfb, 0xe3, 0x5f, 0x5e, 0x7b, 0xb5, 0x88, 0x4f, 0xa5, 0x6b, 0xe3, 0x5f, 0x5e, 0xf7, 0xff, 0x2a, 0x46, 0x5f, - 0x64, 0xf4, 0xf5, 0xdd, 0xd6, 0xf3, 0xb9, 0xea, 0xbb, 0xfe, 0xd7, 0x75, 0x56, 0x7b, 0xeb, 0xbc, 0xd8, 0xdb, 0xf3, 0xf5, - 0xc5, 0x7f, 0xc8, 0x4f, 0x9e, 0xaf, 0x5d, 0x7c, 0x74, 0x16, 0x3d, 0xe9, 0xfa, 0xef, 0x72, 0x3c, 0xe5, 0x75, 0xff, 0xdf, - 0x9e, 0xb3, 0xe7, 0x2a, 0xf4, 0xc4, 0x7f, 0x2f, 0xc6, 0x67, 0x5e, 0xfb, 0xba, 0x6f, 0x7f, 0xfc, 0xd7, 0x1e, 0xb7, 0xde, - 0xe5, 0xec, 0x5d, 0xbc, 0xb8, 0xbe, 0xff, 0x15, 0xe3, 0x3b, 0xcf, 0xd7, 0xde, 0xf1, 0xcc, 0x2f, 0x2b, 0xce, 0xd7, 0x33, - 0x76, 0x67, 0xe0, 0x89, 0x7f, 0x91, 0xab, 0x5a, 0x2e, 0xff, 0xfc, 0xb7, 0xe2, 0x6f, 0x8d, 0xd4, 0x8a, 0xbf, 0x6f, 0x16, - 0xc3, 0xf9, 0x1d, 0xfc, 0x79, 0xf1, 0x1f, 0xdf, 0xff, 0x1f, 0x9a, 0x9b, 0x9b, 0x7a, 0xbd, 0xd5, 0xd3, 0x3d, 0xb3, 0x8e, - 0x8c, 0xe7, 0x69, 0xb3, 0x80, 0x23, 0x7c, 0x04, 0xe2, 0xf8, 0x41, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd2, 0x54, 0x3e, 0x59, 0x0a, 0x93, 0xec, 0x96, 0x63, 0xaa, 0x20, 0xad, 0xce, 0xb1, 0x14, 0x49, 0xf6, 0x28, 0xaf, 0x5a, - 0x8f, 0xe5, 0x22, 0xcd, 0xcf, 0x08, 0x28, 0x52, 0xae, 0x6a, 0x69, 0xd3, 0x2a, 0x8c, 0xed, 0x6c, 0xae, 0x56, 0xe7, 0x74, - 0xb1, 0x56, 0x7b, 0xa3, 0xbc, 0x6e, 0x3d, 0x6a, 0x60, 0x74, 0x91, 0xa7, 0xe5, 0x63, 0x27, 0x3b, 0xd7, 0x5c, 0x2d, 0x7d, - 0x37, 0xd7, 0xe7, 0x53, 0xbe, 0x1c, 0xcb, 0xab, 0x5a, 0xea, 0x3c, 0xa5, 0xff, 0xb0, 0x46, 0xa9, 0x74, 0x15, 0x23, 0x3c, - 0xeb, 0x96, 0x7a, 0x4e, 0x0b, 0xc5, 0x5f, 0xcf, 0x4a, 0xe7, 0xe6, 0x6d, 0xd5, 0xa3, 0xee, 0xcd, 0xd7, 0x32, 0xaf, 0x3e, - 0x50, 0x31, 0xd6, 0x1a, 0x09, 0xaf, 0x76, 0x66, 0x18, 0xba, 0x8a, 0xbd, 0xb9, 0x35, 0x57, 0x6e, 0x72, 0xec, 0xac, 0xe1, - 0x71, 0xb5, 0xcc, 0x9c, 0x3a, 0xa3, 0x1b, 0xf3, 0xb5, 0x15, 0x26, 0xdd, 0x75, 0x4e, 0x4f, 0xd0, 0xab, 0x78, 0x77, 0x8f, - 0xa5, 0xc3, 0xe9, 0x46, 0xfc, 0xab, 0x73, 0x6e, 0x6b, 0x4b, 0x75, 0xe5, 0x82, 0xc7, 0xce, 0x1a, 0x1e, 0x57, 0xcb, 0xcc, - 0xad, 0x5f, 0x09, 0xdf, 0xb1, 0xb3, 0xce, 0x39, 0x6f, 0x07, 0x0c, 0x77, 0x3f, 0xe3, 0x7b, 0xa7, 0x66, 0xde, 0xff, 0x4b, - 0xe0, 0x13, 0xb9, 0x1c, 0xd6, 0x6a, 0xcc, 0xdf, 0xb1, 0x63, 0x0a, 0x93, 0xac, 0x73, 0x9e, 0xa5, 0xdd, 0x28, 0xc1, 0x3b, - 0xf6, 0x35, 0x2d, 0x67, 0xc4, 0x3f, 0xaa, 0x30, 0xe9, 0x69, 0xe7, 0x2c, 0x97, 0x6b, 0x7a, 0x86, 0xbc, 0xfe, 0xad, 0xf5, - 0xc8, 0x5c, 0x43, 0x4b, 0x07, 0x64, 0x8f, 0xe0, 0x27, 0xd0, 0x78, 0x66, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0xd0, 0xff, 0xd8, 0xea, 0x1b, 0x9f, 0x42, 0xc5, 0x56, 0xed, 0x78, 0x3d, 0x7a, 0xea, 0xe5, 0xaa, 0x9b, 0xec, - 0x96, 0xc8, 0x5a, 0xec, 0xb5, 0xf8, 0xce, 0xdc, 0x7f, 0xde, 0xad, 0x35, 0x25, 0xea, 0xa9, 0x76, 0xfb, 0x3c, 0x2b, 0x27, - 0xfb, 0x37, 0x76, 0x47, 0xb6, 0xfe, 0x5b, 0x1f, 0xa8, 0x4f, 0xb2, 0x94, 0x4b, 0x5f, 0x23, 0xcf, 0xcc, 0x16, 0xae, 0x2d, - 0x6d, 0x73, 0x2d, 0xa2, 0x39, 0xb4, 0x88, 0x0e, 0xc5, 0xce, 0x86, 0xe5, 0xc5, 0x3f, 0x3a, 0xe7, 0x6b, 0x5b, 0xbc, 0x3e, - 0x22, 0xcf, 0x8b, 0xbf, 0xa5, 0xf2, 0xc9, 0x8a, 0xff, 0x31, 0x1d, 0x4c, 0x5e, 0xfc, 0x23, 0x1a, 0x2e, 0x3d, 0x76, 0x4b, - 0x07, 0x75, 0x65, 0xfc, 0xb5, 0x8f, 0xd6, 0x4c, 0xfc, 0xfd, 0x2a, 0x1f, 0x7f, 0xfc, 0x8f, 0xe9, 0x60, 0xf2, 0xe2, 0x1f, - 0xd1, 0x70, 0x74, 0xc3, 0x2d, 0xaa, 0xbb, 0xbd, 0x47, 0xc6, 0x8e, 0xc6, 0xb0, 0x05, 0xe2, 0x5f, 0xe4, 0x18, 0x8f, 0xea, - 0x3f, 0x3d, 0xd7, 0x7f, 0x39, 0x4d, 0x07, 0x93, 0x7b, 0xff, 0xcf, 0x5a, 0x87, 0xb2, 0xa3, 0x3e, 0x2c, 0x01, 0xb5, 0x48, - 0x4f, 0x5e, 0x8b, 0x39, 0xbd, 0x43, 0x4e, 0xfc, 0x23, 0x7d, 0xcd, 0x9d, 0xe3, 0x8d, 0x7f, 0x09, 0xc4, 0x3f, 0x73, 0xec, - 0x76, 0xfc, 0x8b, 0xa1, 0x16, 0xd9, 0x3f, 0x27, 0x3b, 0xfe, 0x51, 0x55, 0x4b, 0x49, 0xec, 0x6b, 0x24, 0xc7, 0xdf, 0xaf, - 0x93, 0xc9, 0x1d, 0xbb, 0x1d, 0xff, 0xf8, 0xe8, 0xd6, 0x3f, 0xf5, 0x04, 0x0d, 0x3d, 0xe0, 0x38, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x2c, 0x46, 0x45, 0x2a, 0x5b, 0x65, 0x34, 0xaf, 0x16, 0xfa, 0x52, 0x50, 0x6c, - 0xeb, 0x27, 0x72, 0x9c, 0x7e, 0xf6, 0x6b, 0x77, 0x79, 0xdf, 0x47, 0xad, 0x56, 0x64, 0x6c, 0x67, 0xd7, 0x38, 0x9b, 0x53, - 0xf9, 0x58, 0xba, 0x17, 0xdf, 0x6f, 0x50, 0x95, 0x37, 0x4d, 0x15, 0x4e, 0x37, 0xde, 0xdf, 0xee, 0x5b, 0x5e, 0x15, 0xba, - 0x9f, 0x4c, 0x17, 0x8b, 0x21, 0xf7, 0xeb, 0x08, 0x8c, 0xad, 0x89, 0xa3, 0xaa, 0x8f, 0x1a, 0xfe, 0xa5, 0x74, 0xdc, 0xcb, - 0x61, 0xd6, 0x53, 0x49, 0x67, 0x0c, 0xd7, 0x5c, 0xb7, 0x77, 0x07, 0x74, 0x79, 0x8d, 0x6d, 0x8f, 0xb5, 0x4a, 0x7d, 0xcb, - 0x22, 0xab, 0x99, 0xf9, 0xbd, 0x6a, 0x86, 0xa8, 0x1a, 0x66, 0xe7, 0x8f, 0xd4, 0xd8, 0x54, 0xb5, 0xa4, 0x45, 0xf4, 0xd1, - 0xc2, 0xbf, 0x09, 0x1f, 0x3b, 0x75, 0xa4, 0x3c, 0x3d, 0x5b, 0x3b, 0xc0, 0xaa, 0xe4, 0xd6, 0x12, 0x6a, 0x95, 0xf8, 0xbd, - 0x6a, 0x2c, 0xe5, 0x81, 0xdd, 0x9b, 0xd7, 0x9b, 0x45, 0xef, 0x19, 0xdf, 0x9d, 0x21, 0xcb, 0x61, 0x66, 0xee, 0xce, 0x59, - 0x8c, 0x19, 0x2d, 0xee, 0x1d, 0x70, 0x6e, 0x25, 0x8f, 0xf3, 0x94, 0x07, 0xb3, 0xb3, 0xc8, 0xce, 0x2c, 0xcf, 0xc7, 0x7f, - 0x39, 0xe4, 0x09, 0x52, 0xc2, 0x5a, 0x19, 0xdf, 0x0e, 0x38, 0x3b, 0xfe, 0x67, 0x29, 0x0f, 0xb2, 0x1c, 0x38, 0xfa, 0x43, - 0xe3, 0xbf, 0xe7, 0x36, 0xe3, 0x8f, 0xa5, 0x5f, 0x31, 0xba, 0xdc, 0x72, 0x67, 0xc8, 0x3e, 0x67, 0x71, 0xff, 0x4f, 0xe6, - 0x19, 0xf1, 0x8f, 0x39, 0xd4, 0x14, 0xb7, 0x97, 0xd0, 0x5d, 0xf1, 0xf7, 0xd7, 0x91, 0x8a, 0x9d, 0x93, 0xaf, 0xbd, 0xbc, - 0x22, 0xfe, 0xf0, 0x3e, 0xce, 0x47, 0x0d, 0x7d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x29, 0xff, - 0xc1, 0xa3, 0x5e, 0xb9, 0xbf, 0xa5, 0xee, 0x64, 0xb5, 0x4a, 0xb8, 0xa5, 0xa4, 0xf5, 0x69, 0x69, 0x8c, 0x8e, 0xd6, 0x3c, - 0xfb, 0xea, 0xbb, 0x84, 0xd5, 0x3f, 0xbf, 0x73, 0xd0, 0xeb, 0xbf, 0x35, 0x29, 0xb3, 0x9e, 0xdf, 0x72, 0xfe, 0xaf, 0xf9, - 0xcf, 0xf0, 0x1b, 0xb0, 0x1c, 0x22, 0xea, 0xb4, 0xb6, 0xa2, 0xc9, 0x9c, 0x6a, 0x97, 0x9e, 0x01, 0x2d, 0x90, 0x83, 0xb8, - 0xdf, 0x65, 0xa7, 0x39, 0xeb, 0x50, 0xd5, 0x0b, 0x3d, 0x36, 0xfa, 0x8e, 0x1e, 0xc6, 0xa7, 0xa1, 0xd1, 0x1e, 0x0a, 0x8b, - 0xeb, 0xb5, 0xaa, 0x26, 0x51, 0x79, 0xcb, 0xf8, 0x2f, 0x4e, 0x6d, 0x5f, 0x9f, 0xf0, 0xcb, 0xc8, 0xf2, 0xd8, 0x28, 0x01, - 0x85, 0x4f, 0x31, 0xea, 0x8f, 0xf9, 0xe2, 0xaf, 0xaa, 0xd5, 0xf9, 0xef, 0x8d, 0x57, 0xb8, 0x6c, 0xe4, 0x57, 0xb0, 0xc9, - 0x73, 0xf3, 0xc8, 0xf7, 0xd8, 0xb0, 0x32, 0xe5, 0x5a, 0x57, 0xe9, 0x8b, 0xbf, 0xd7, 0xdb, 0xe1, 0x8a, 0xf8, 0x47, 0x6b, - 0xdb, 0xe4, 0x3a, 0x73, 0x94, 0x87, 0x78, 0x6c, 0x78, 0x1d, 0x42, 0x8e, 0xdf, 0xff, 0xb3, 0xf5, 0x08, 0x79, 0x99, 0xea, - 0x6b, 0x7c, 0x36, 0x22, 0x3a, 0x9d, 0xb3, 0x32, 0xf3, 0xfe, 0xec, 0xbc, 0x47, 0x5b, 0xd9, 0xdf, 0x2a, 0xfe, 0x4f, 0xd6, - 0xf6, 0x3c, 0x89, 0x33, 0x6b, 0x9e, 0xa1, 0xfe, 0x79, 0xd7, 0x3d, 0xcd, 0x1a, 0xfc, 0x6c, 0x95, 0x17, 0x6b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x38, 0x00, 0x2d, 0xd2, 0xd3, 0x66, 0xbe, 0x87, 0x9a, 0xe6, 0x2f, 0xb4, 0x77, - 0x4e, 0x75, 0xd6, 0x25, 0x2b, 0x6e, 0x7d, 0xce, 0xb1, 0xda, 0x63, 0xbe, 0x95, 0x8e, 0xf4, 0x35, 0xb7, 0x5e, 0x33, 0xfa, - 0x2f, 0x4b, 0x45, 0xd1, 0xa6, 0x9e, 0xae, 0x0f, 0xe3, 0x79, 0x76, 0xfb, 0x9c, 0xc3, 0x87, 0xb3, 0x7a, 0x96, 0x7d, 0x8e, - 0xaa, 0x08, 0xa6, 0xfa, 0x2b, 0x9f, 0x2a, 0x89, 0xe6, 0xd2, 0xe7, 0xec, 0xbf, 0x93, 0xfa, 0x4d, 0x77, 0x73, 0x57, 0x04, - 0xb0, 0xab, 0x88, 0x95, 0xc3, 0x1e, 0x3e, 0x31, 0xe7, 0x94, 0x35, 0xbf, 0xd6, 0xa6, 0xde, 0xbf, 0x1a, 0x2e, 0x32, 0x4d, - 0xea, 0x5f, 0xb4, 0xf7, 0x8b, 0x75, 0x4e, 0x79, 0x65, 0xfd, 0xea, 0xe6, 0xf5, 0xb2, 0xad, 0xc2, 0x2a, 0xa6, 0x37, 0x8d, - 0xd6, 0x09, 0x95, 0x5d, 0x5f, 0xa3, 0xad, 0xb5, 0xe8, 0xc2, 0x53, 0xa8, 0x8b, 0x2b, 0x4d, 0x8d, 0x5b, 0x1d, 0xcf, 0x8d, - 0xbf, 0x76, 0x41, 0x1a, 0x93, 0x33, 0xff, 0xad, 0x20, 0x2c, 0x8e, 0x3b, 0xa5, 0xe5, 0x7e, 0x54, 0x0c, 0xcf, 0xa6, 0x2e, - 0xe3, 0xa9, 0xaf, 0xbd, 0x2e, 0x77, 0xa7, 0xb5, 0x2e, 0x7d, 0x77, 0xe7, 0xa8, 0x5c, 0x70, 0x71, 0xad, 0x91, 0xaa, 0x14, - 0x78, 0xcd, 0xf5, 0xaf, 0x34, 0x14, 0x7d, 0x5a, 0x75, 0x62, 0xed, 0xed, 0x3d, 0xc7, 0x24, 0xbf, 0xe2, 0x73, 0x8d, 0xc7, - 0x76, 0xfc, 0x6b, 0x9a, 0x1a, 0x60, 0x7c, 0xaf, 0x68, 0x0f, 0x7e, 0xb2, 0xce, 0xdf, 0xff, 0xd5, 0x27, 0x70, 0x99, 0xdc, - 0xb5, 0xc7, 0xe2, 0x5f, 0x4c, 0xcf, 0x96, 0x72, 0xf0, 0xfa, 0xb7, 0xd4, 0x9b, 0xb6, 0xcb, 0x9a, 0xff, 0xfa, 0xef, 0x52, - 0x6d, 0xf7, 0xec, 0xf8, 0xab, 0x71, 0xcf, 0xce, 0xe7, 0x58, 0xfc, 0x6d, 0x85, 0xd2, 0x6c, 0xaf, 0xf6, 0xdc, 0x86, 0xeb, - 0xbb, 0x97, 0xf5, 0xad, 0xac, 0x7c, 0xbf, 0xa6, 0x5e, 0xe0, 0x1b, 0x74, 0xc5, 0x3b, 0xdd, 0xad, 0x83, 0xfa, 0x70, 0xd7, - 0xa9, 0xd2, 0xca, 0x39, 0x6f, 0x8d, 0xbc, 0xa8, 0x9e, 0x6e, 0x4c, 0x7f, 0x37, 0x39, 0xaa, 0x2d, 0xca, 0x7a, 0xa7, 0x71, - 0xa2, 0x5a, 0xe9, 0xc9, 0x3a, 0xa8, 0x98, 0xcb, 0xde, 0x7b, 0xeb, 0xba, 0xd0, 0x8c, 0xcc, 0xc4, 0x32, 0xa6, 0x9a, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xfa, 0xc7, 0xaa, 0x5c, 0x35, 0x77, 0xfe, 0xbc, 0x72, 0xa5, 0xc8, - 0x5e, 0xeb, 0x44, 0x05, 0xad, 0xe2, 0xd6, 0xbe, 0x54, 0xb7, 0xe6, 0xc9, 0x56, 0xe9, 0xe8, 0xe3, 0x79, 0xda, 0xa7, 0x88, - 0xea, 0x68, 0x09, 0x3f, 0xa3, 0x5e, 0xff, 0x34, 0xb3, 0x3e, 0x8f, 0xfd, 0xec, 0x71, 0x38, 0x54, 0x30, 0x5d, 0xd6, 0x7b, - 0x5a, 0xcf, 0x68, 0x32, 0x1f, 0x3c, 0x44, 0x46, 0xa8, 0x99, 0x39, 0x8c, 0x26, 0x8f, 0xff, 0x23, 0xa3, 0xfc, 0x21, 0xdd, - 0x7a, 0xb6, 0xcf, 0x1a, 0x9f, 0xc7, 0xbb, 0x6b, 0x6c, 0xc3, 0xac, 0xad, 0x36, 0x8c, 0x36, 0xa5, 0x08, 0xd0, 0x33, 0x9a, - 0x89, 0x7f, 0x39, 0x90, 0x37, 0x1d, 0x32, 0x4f, 0xbf, 0xad, 0xc4, 0xd2, 0x1e, 0x3a, 0x76, 0x9b, 0xd2, 0xc8, 0x2c, 0xa6, - 0x43, 0x96, 0xde, 0xb7, 0xde, 0x1d, 0xa3, 0x62, 0xd9, 0xa4, 0x5e, 0xc9, 0xd6, 0xbe, 0x54, 0x43, 0xe1, 0x60, 0xf9, 0x0c, - 0x79, 0x47, 0xfe, 0xa4, 0xf8, 0x77, 0xd3, 0xf7, 0x40, 0x6b, 0x48, 0xf6, 0x7c, 0x6e, 0xb4, 0xe2, 0xaa, 0x84, 0xee, 0xbe, - 0x39, 0x2d, 0xf6, 0x55, 0xde, 0x64, 0x86, 0xdb, 0x5a, 0x07, 0xfb, 0x53, 0x3c, 0xa2, 0x49, 0xe8, 0xa7, 0xc4, 0xbf, 0x06, - 0xf5, 0x56, 0x3e, 0xcf, 0x26, 0x3b, 0x8b, 0xa8, 0xfd, 0x9a, 0xae, 0x72, 0xae, 0x5b, 0x02, 0xb9, 0x4f, 0x4b, 0x4b, 0xb3, - 0x98, 0x15, 0xeb, 0xa2, 0x31, 0xec, 0x87, 0xe2, 0x7f, 0x44, 0xb9, 0xf2, 0xf7, 0x1d, 0xa3, 0x38, 0x73, 0xe7, 0x96, 0x8a, - 0x48, 0xaf, 0x56, 0xa4, 0xbe, 0xe3, 0x55, 0x2d, 0xd6, 0x3a, 0xd8, 0xfd, 0x1d, 0xd1, 0x25, 0xdd, 0xed, 0xa2, 0xf3, 0x75, - 0x8d, 0x77, 0xb7, 0x8b, 0x8e, 0xad, 0x15, 0xea, 0xb7, 0x3b, 0x57, 0xfa, 0xef, 0x19, 0x5d, 0x46, 0x59, 0x5f, 0x05, 0xfd, - 0xe0, 0x15, 0x7c, 0x7f, 0xfc, 0x63, 0xaa, 0x8f, 0x12, 0x50, 0x91, 0x5c, 0xeb, 0x69, 0xe8, 0x6f, 0xe9, 0xc6, 0x3a, 0x58, - 0xae, 0x51, 0x3f, 0x51, 0x49, 0x11, 0xaf, 0xd5, 0xf7, 0xcc, 0xf8, 0xef, 0x69, 0xf5, 0x2c, 0x2f, 0xd1, 0xfb, 0x9d, 0xd0, - 0x9e, 0xa4, 0x2f, 0xfa, 0x3f, 0xc6, 0xff, 0x1d, 0x15, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x64, 0x07, - 0x20, 0x5b, 0x6b, 0x52, 0x53, 0x74, 0x35, 0xfa, 0x68, 0x75, 0x7a, 0x12, 0x55, 0xf3, 0xac, 0x7b, 0xf5, 0x3e, 0xc5, 0x7c, - 0x3a, 0x7b, 0xfe, 0x98, 0xed, 0xe8, 0x7b, 0x15, 0x2f, 0x96, 0x16, 0xa2, 0xba, 0xde, 0xa5, 0x1a, 0xef, 0xf0, 0x21, 0x9e, - 0x74, 0xfa, 0x75, 0x38, 0xf7, 0xeb, 0x7d, 0x94, 0xa2, 0xa3, 0x1a, 0x1e, 0x2f, 0x99, 0x63, 0xb6, 0x15, 0x5c, 0x5e, 0xc5, - 0x8b, 0xa5, 0x36, 0xf0, 0xa9, 0x53, 0x9a, 0x68, 0xd1, 0xfd, 0xeb, 0x27, 0xdd, 0xcd, 0xf0, 0x0d, 0xba, 0x5b, 0xef, 0xa3, - 0x6b, 0x4e, 0x29, 0x1d, 0x48, 0x95, 0x3b, 0x60, 0x75, 0xb2, 0xaa, 0xae, 0x31, 0x2f, 0x01, 0xe5, 0x48, 0x44, 0xd7, 0xe2, - 0x75, 0x32, 0x53, 0xc7, 0x57, 0x0d, 0x9c, 0xf6, 0x24, 0xf2, 0x39, 0x0d, 0xdd, 0xaf, 0xf7, 0xe9, 0xa6, 0xcb, 0x54, 0x56, - 0xee, 0x20, 0xe2, 0x03, 0xb7, 0xe7, 0xcf, 0xe3, 0xab, 0xd5, 0xa7, 0x3c, 0x83, 0xbc, 0xc7, 0x17, 0xe9, 0xe3, 0x34, 0x8c, - 0xec, 0xf8, 0x13, 0x72, 0xf7, 0xbe, 0xac, 0xce, 0xaa, 0x7a, 0x18, 0x37, 0x66, 0x95, 0xb4, 0x72, 0x24, 0xd2, 0xb2, 0xec, - 0x54, 0x57, 0xcb, 0x3a, 0xfe, 0xdc, 0xdc, 0xbd, 0x37, 0xfe, 0xe3, 0xf6, 0xf8, 0xdb, 0x2a, 0x39, 0x5f, 0x0b, 0xf1, 0xf7, - 0xc6, 0xbf, 0x27, 0xde, 0xff, 0x63, 0xf1, 0xd7, 0x2a, 0x39, 0x7f, 0xcb, 0x15, 0xf1, 0x1f, 0x66, 0xe5, 0xbc, 0x77, 0x8b, - 0x7f, 0xb9, 0x59, 0x55, 0x90, 0x5b, 0xc5, 0xf3, 0xfc, 0xf8, 0xc7, 0x54, 0x1d, 0xe5, 0xe6, 0x16, 0xbf, 0x6e, 0xe3, 0x9a, - 0xf7, 0xcf, 0xaf, 0xe2, 0x79, 0xee, 0xf1, 0x68, 0xfc, 0xf3, 0xe7, 0x38, 0x52, 0x7c, 0xab, 0xda, 0x45, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x3f, 0x35, 0x49, 0x99, 0x12, 0x75, 0xa8, 0xb9, 0xd7, 0x73, 0xc7, 0xf2, 0x17, - 0xd2, 0x2d, 0xd9, 0x33, 0xf2, 0x6a, 0xaa, 0x72, 0x7c, 0x80, 0x2c, 0xcd, 0x40, 0x95, 0x1a, 0x1c, 0x7f, 0x06, 0xdc, 0xd6, - 0x06, 0xb5, 0x80, 0x06, 0xa7, 0x1a, 0x1a, 0x9c, 0xe6, 0xf2, 0xdc, 0xe8, 0x86, 0xbf, 0x90, 0xe5, 0xac, 0x90, 0x39, 0x23, - 0x3d, 0xee, 0x26, 0x76, 0x45, 0x13, 0x7a, 0xaa, 0x9a, 0x74, 0xfd, 0x6b, 0x9d, 0x49, 0x34, 0x03, 0x1e, 0xd3, 0xe0, 0x34, - 0x97, 0x06, 0xc7, 0xaa, 0x1d, 0x55, 0x77, 0x6a, 0x73, 0xe9, 0x9c, 0x4a, 0xae, 0x8b, 0x90, 0x6f, 0xdc, 0x7a, 0x05, 0xe6, - 0xf5, 0x54, 0xd7, 0xfd, 0x16, 0xb6, 0x08, 0xa5, 0x5b, 0xe4, 0x0e, 0x1b, 0x69, 0xd1, 0x7e, 0x10, 0x56, 0xcd, 0xbe, 0x48, - 0xfd, 0xa2, 0xdc, 0x71, 0x5b, 0x75, 0xf8, 0x8a, 0xc3, 0xd9, 0x2a, 0x33, 0x6b, 0x16, 0x73, 0xaf, 0xd9, 0xae, 0x97, 0x93, - 0x5b, 0x07, 0x48, 0xb7, 0x14, 0xe9, 0x91, 0x52, 0xcc, 0x4a, 0x54, 0xdd, 0x5d, 0x05, 0x27, 0x5b, 0x3b, 0x54, 0x0c, 0x95, - 0xe0, 0xfc, 0x7d, 0x29, 0x33, 0x6b, 0x16, 0x73, 0xaf, 0x59, 0x8c, 0xd5, 0x3f, 0xbf, 0x65, 0x84, 0xaa, 0x4a, 0xd9, 0x99, - 0xb3, 0x7e, 0x89, 0x8b, 0x50, 0x37, 0xf4, 0x36, 0x77, 0xc4, 0x7f, 0x7f, 0xbd, 0xfc, 0x77, 0x86, 0x6b, 0xae, 0x23, 0xef, - 0x0e, 0x8c, 0x7a, 0x6e, 0x44, 0x94, 0x93, 0x96, 0xc7, 0x99, 0xcf, 0x61, 0xed, 0xec, 0xf8, 0x97, 0x9d, 0xfb, 0xbf, 0x76, - 0xf1, 0x1a, 0xb7, 0x6a, 0x30, 0xfc, 0xf7, 0xeb, 0x3c, 0xdf, 0xbb, 0x23, 0x2d, 0x76, 0x1d, 0xbe, 0xf3, 0xe2, 0x9f, 0xa9, - 0x26, 0xb9, 0x56, 0x67, 0x32, 0x92, 0x94, 0x4e, 0x4f, 0x98, 0x91, 0x77, 0xa7, 0xe5, 0xc5, 0xff, 0xa7, 0xa8, 0x49, 0x50, - 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xcf, 0xd5, 0xff, 0xf8, 0x3c, 0x78, 0x9e, 0xec, 0xb3, 0x93, 0xe7, - 0x40, 0x94, 0xad, 0xe2, 0x89, 0xa9, 0xa9, 0x96, 0x03, 0x95, 0xbd, 0xe6, 0xf5, 0x3f, 0x4d, 0xaa, 0x5b, 0x54, 0xed, 0xaa, - 0x7a, 0x81, 0x22, 0x26, 0xa2, 0xf1, 0x51, 0x47, 0xad, 0xdc, 0xcf, 0x35, 0x2a, 0x1e, 0xdd, 0xdb, 0xd8, 0xd1, 0x66, 0xb5, - 0x93, 0x9f, 0x58, 0x16, 0x63, 0xf6, 0x55, 0xee, 0x98, 0xf6, 0x48, 0x8d, 0x4f, 0x44, 0x5d, 0x91, 0xab, 0xe2, 0xd1, 0x2b, - 0xda, 0xa4, 0xc2, 0xc0, 0xae, 0xbf, 0x58, 0x4e, 0x7f, 0x2e, 0xae, 0xc7, 0xdb, 0x6f, 0x54, 0xf2, 0x44, 0xb4, 0x32, 0xdd, - 0x54, 0xf1, 0x74, 0x57, 0xc4, 0x22, 0x2d, 0x7b, 0xd9, 0xd4, 0x92, 0xa8, 0xa6, 0x3b, 0x37, 0xfe, 0x11, 0x85, 0xc5, 0x13, - 0x7c, 0x76, 0x8a, 0xe1, 0x72, 0xf2, 0x8e, 0xb5, 0x60, 0xee, 0x8a, 0xff, 0x7b, 0xae, 0x98, 0xed, 0x4a, 0xf1, 0x6e, 0x51, - 0x1e, 0x41, 0xc5, 0x4a, 0x4e, 0xfc, 0x9f, 0xbd, 0x2e, 0x79, 0x3e, 0x1b, 0xd7, 0x8c, 0x2c, 0xa6, 0x09, 0xbb, 0x22, 0x63, - 0x3d, 0x12, 0xaf, 0x98, 0xbb, 0x35, 0x3e, 0x11, 0x9f, 0x8d, 0xab, 0xd4, 0x47, 0x51, 0x9d, 0xc5, 0x3d, 0x55, 0x9d, 0x62, - 0x57, 0xcc, 0xdd, 0x1a, 0x9f, 0x27, 0xab, 0x78, 0xfc, 0x6a, 0x3a, 0xad, 0x58, 0x87, 0x77, 0x43, 0xc7, 0xb2, 0xb1, 0x3a, - 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, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xd6, 0x3f, - 0xac, 0x03, 0xf1, 0x87, 0x1f, 0x1b, 0xff, 0x7f, 0x01 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle bluishFontRecs[189] = { - { 4, 4, 5 , 10 }, - { 17, 4, 2 , 8 }, - { 27, 4, 4 , 3 }, - { 39, 4, 6 , 8 }, - { 53, 4, 5 , 10 }, - { 66, 4, 6 , 8 }, - { 80, 4, 5 , 10 }, - { 93, 4, 2 , 3 }, - { 103, 4, 3 , 8 }, - { 114, 4, 3 , 8 }, - { 125, 4, 6 , 6 }, - { 139, 4, 6 , 6 }, - { 153, 4, 2 , 3 }, - { 163, 4, 5 , 2 }, - { 176, 4, 2 , 2 }, - { 186, 4, 6 , 8 }, - { 200, 4, 5 , 8 }, - { 213, 4, 3 , 8 }, - { 224, 4, 5 , 8 }, - { 237, 4, 5 , 8 }, - { 4, 22, 5 , 8 }, - { 17, 22, 5 , 8 }, - { 30, 22, 5 , 8 }, - { 43, 22, 5 , 8 }, - { 56, 22, 5 , 8 }, - { 69, 22, 5 , 8 }, - { 82, 22, 2 , 8 }, - { 92, 22, 2 , 9 }, - { 102, 22, 4 , 6 }, - { 114, 22, 5 , 4 }, - { 127, 22, 4 , 6 }, - { 139, 22, 5 , 8 }, - { 152, 22, 6 , 8 }, - { 166, 22, 5 , 8 }, - { 179, 22, 5 , 8 }, - { 192, 22, 5 , 8 }, - { 205, 22, 5 , 8 }, - { 218, 22, 5 , 8 }, - { 231, 22, 5 , 8 }, - { 4, 40, 5 , 8 }, - { 17, 40, 5 , 8 }, - { 30, 40, 4 , 8 }, - { 42, 40, 5 , 8 }, - { 55, 40, 5 , 8 }, - { 68, 40, 5 , 8 }, - { 81, 40, 8 , 8 }, - { 97, 40, 5 , 8 }, - { 110, 40, 5 , 8 }, - { 123, 40, 5 , 8 }, - { 136, 40, 5 , 9 }, - { 149, 40, 5 , 8 }, - { 162, 40, 5 , 8 }, - { 175, 40, 6 , 8 }, - { 189, 40, 5 , 8 }, - { 202, 40, 5 , 8 }, - { 215, 40, 8 , 8 }, - { 231, 40, 5 , 8 }, - { 4, 58, 5 , 8 }, - { 17, 58, 5 , 8 }, - { 30, 58, 3 , 8 }, - { 41, 58, 6 , 8 }, - { 55, 58, 3 , 8 }, - { 66, 58, 6 , 4 }, - { 80, 58, 5 , 1 }, - { 93, 58, 2 , 3 }, - { 103, 58, 5 , 6 }, - { 116, 58, 5 , 8 }, - { 129, 58, 5 , 6 }, - { 142, 58, 5 , 8 }, - { 155, 58, 5 , 6 }, - { 168, 58, 5 , 8 }, - { 181, 58, 5 , 7 }, - { 194, 58, 5 , 8 }, - { 207, 58, 2 , 8 }, - { 217, 58, 3 , 9 }, - { 228, 58, 5 , 8 }, - { 241, 58, 2 , 8 }, - { 4, 76, 8 , 6 }, - { 20, 76, 5 , 6 }, - { 33, 76, 5 , 6 }, - { 46, 76, 5 , 7 }, - { 59, 76, 5 , 7 }, - { 72, 76, 5 , 6 }, - { 85, 76, 5 , 6 }, - { 98, 76, 5 , 8 }, - { 111, 76, 5 , 6 }, - { 124, 76, 5 , 6 }, - { 137, 76, 8 , 6 }, - { 153, 76, 5 , 6 }, - { 166, 76, 5 , 7 }, - { 179, 76, 5 , 6 }, - { 192, 76, 4 , 8 }, - { 204, 76, 2 , 10 }, - { 214, 76, 4 , 8 }, - { 226, 76, 6 , 4 }, - { 240, 76, 2 , 8 }, - { 4, 94, 5 , 8 }, - { 17, 94, 5 , 8 }, - { 30, 94, 0 , 0 }, - { 38, 94, 6 , 8 }, - { 52, 94, 5 , 10 }, - { 65, 94, 5 , 10 }, - { 78, 94, 5 , 9 }, - { 91, 94, 7 , 8 }, - { 106, 94, 4 , 6 }, - { 118, 94, 5 , 4 }, - { 131, 94, 5 , 3 }, - { 144, 94, 7 , 8 }, - { 159, 94, 5 , 2 }, - { 172, 94, 4 , 4 }, - { 184, 94, 6 , 8 }, - { 198, 94, 4 , 6 }, - { 210, 94, 4 , 6 }, - { 222, 94, 0 , 0 }, - { 230, 94, 5 , 9 }, - { 4, 112, 6 , 8 }, - { 18, 112, 2 , 2 }, - { 28, 112, 0 , 0 }, - { 36, 112, 3 , 6 }, - { 47, 112, 4 , 6 }, - { 59, 112, 5 , 4 }, - { 72, 112, 6 , 8 }, - { 86, 112, 6 , 6 }, - { 100, 112, 5 , 10 }, - { 113, 112, 5 , 8 }, - { 126, 112, 5 , 10 }, - { 139, 112, 5 , 10 }, - { 152, 112, 5 , 10 }, - { 165, 112, 5 , 10 }, - { 178, 112, 5 , 10 }, - { 191, 112, 5 , 10 }, - { 204, 112, 6 , 8 }, - { 218, 112, 5 , 9 }, - { 231, 112, 5 , 10 }, - { 4, 130, 5 , 10 }, - { 17, 130, 5 , 10 }, - { 30, 130, 5 , 10 }, - { 43, 130, 4 , 10 }, - { 55, 130, 4 , 10 }, - { 67, 130, 4 , 10 }, - { 79, 130, 4 , 10 }, - { 91, 130, 6 , 8 }, - { 105, 130, 5 , 10 }, - { 118, 130, 5 , 10 }, - { 131, 130, 5 , 10 }, - { 144, 130, 5 , 10 }, - { 157, 130, 5 , 10 }, - { 170, 130, 5 , 10 }, - { 183, 130, 4 , 4 }, - { 195, 130, 5 , 10 }, - { 208, 130, 5 , 10 }, - { 221, 130, 5 , 10 }, - { 234, 130, 5 , 10 }, - { 4, 148, 5 , 10 }, - { 17, 148, 5 , 10 }, - { 30, 148, 5 , 8 }, - { 43, 148, 5 , 8 }, - { 56, 148, 5 , 9 }, - { 69, 148, 5 , 9 }, - { 82, 148, 5 , 9 }, - { 95, 148, 5 , 9 }, - { 108, 148, 5 , 8 }, - { 121, 148, 5 , 10 }, - { 134, 148, 6 , 6 }, - { 148, 148, 5 , 7 }, - { 161, 148, 5 , 9 }, - { 174, 148, 5 , 9 }, - { 187, 148, 5 , 9 }, - { 200, 148, 5 , 8 }, - { 213, 148, 3 , 9 }, - { 224, 148, 3 , 9 }, - { 235, 148, 4 , 9 }, - { 4, 166, 4 , 8 }, - { 16, 166, 5 , 9 }, - { 29, 166, 5 , 9 }, - { 42, 166, 5 , 9 }, - { 55, 166, 5 , 9 }, - { 68, 166, 5 , 9 }, - { 81, 166, 5 , 9 }, - { 94, 166, 5 , 8 }, - { 107, 166, 4 , 6 }, - { 119, 166, 5 , 8 }, - { 132, 166, 5 , 9 }, - { 145, 166, 5 , 9 }, - { 158, 166, 5 , 9 }, - { 171, 166, 5 , 8 }, - { 184, 166, 5 , 10 }, - { 197, 166, 5 , 10 }, - { 210, 166, 5 , 9 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo bluishFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 1, 2, { 0 }}, - { 34, 0, 1, 4, { 0 }}, - { 35, 0, 1, 6, { 0 }}, - { 36, 0, 0, 5, { 0 }}, - { 37, 0, 1, 6, { 0 }}, - { 38, 0, 0, 5, { 0 }}, - { 39, 0, 1, 2, { 0 }}, - { 40, 0, 1, 3, { 0 }}, - { 41, 0, 1, 3, { 0 }}, - { 42, 0, 1, 6, { 0 }}, - { 43, 0, 2, 6, { 0 }}, - { 44, 0, 7, 2, { 0 }}, - { 45, 0, 4, 5, { 0 }}, - { 46, 0, 7, 2, { 0 }}, - { 47, 0, 1, 6, { 0 }}, - { 48, 0, 1, 5, { 0 }}, - { 49, 0, 1, 3, { 0 }}, - { 50, 0, 1, 5, { 0 }}, - { 51, 0, 1, 5, { 0 }}, - { 52, 0, 1, 5, { 0 }}, - { 53, 0, 1, 5, { 0 }}, - { 54, 0, 1, 5, { 0 }}, - { 55, 0, 1, 5, { 0 }}, - { 56, 0, 1, 5, { 0 }}, - { 57, 0, 1, 5, { 0 }}, - { 58, 0, 1, 2, { 0 }}, - { 59, 0, 1, 2, { 0 }}, - { 60, 0, 2, 4, { 0 }}, - { 61, 0, 3, 5, { 0 }}, - { 62, 0, 2, 4, { 0 }}, - { 63, 0, 1, 5, { 0 }}, - { 64, 0, 1, 6, { 0 }}, - { 65, 0, 1, 5, { 0 }}, - { 66, 0, 1, 5, { 0 }}, - { 67, 0, 1, 5, { 0 }}, - { 68, 0, 1, 5, { 0 }}, - { 69, 0, 1, 5, { 0 }}, - { 70, 0, 1, 5, { 0 }}, - { 71, 0, 1, 5, { 0 }}, - { 72, 0, 1, 5, { 0 }}, - { 73, 0, 1, 4, { 0 }}, - { 74, 0, 1, 5, { 0 }}, - { 75, 0, 1, 5, { 0 }}, - { 76, 0, 1, 5, { 0 }}, - { 77, 0, 1, 8, { 0 }}, - { 78, 0, 1, 5, { 0 }}, - { 79, 0, 1, 5, { 0 }}, - { 80, 0, 1, 5, { 0 }}, - { 81, 0, 1, 5, { 0 }}, - { 82, 0, 1, 5, { 0 }}, - { 83, 0, 1, 5, { 0 }}, - { 84, 0, 1, 6, { 0 }}, - { 85, 0, 1, 5, { 0 }}, - { 86, 0, 1, 5, { 0 }}, - { 87, 0, 1, 8, { 0 }}, - { 88, 0, 1, 5, { 0 }}, - { 89, 0, 1, 5, { 0 }}, - { 90, 0, 1, 5, { 0 }}, - { 91, 0, 1, 3, { 0 }}, - { 92, 0, 1, 6, { 0 }}, - { 93, 0, 1, 3, { 0 }}, - { 94, 0, 1, 6, { 0 }}, - { 95, 0, 9, 5, { 0 }}, - { 96, 0, 1, 2, { 0 }}, - { 97, 0, 3, 5, { 0 }}, - { 98, 0, 1, 5, { 0 }}, - { 99, 0, 3, 5, { 0 }}, - { 100, 0, 1, 5, { 0 }}, - { 101, 0, 3, 5, { 0 }}, - { 102, 0, 1, 5, { 0 }}, - { 103, 0, 3, 5, { 0 }}, - { 104, 0, 1, 5, { 0 }}, - { 105, 0, 1, 2, { 0 }}, - { 106, 0, 1, 3, { 0 }}, - { 107, 0, 1, 5, { 0 }}, - { 108, 0, 1, 2, { 0 }}, - { 109, 0, 3, 8, { 0 }}, - { 110, 0, 3, 5, { 0 }}, - { 111, 0, 3, 5, { 0 }}, - { 112, 0, 3, 5, { 0 }}, - { 113, 0, 3, 5, { 0 }}, - { 114, 0, 3, 5, { 0 }}, - { 115, 0, 3, 5, { 0 }}, - { 116, 0, 1, 5, { 0 }}, - { 117, 0, 3, 5, { 0 }}, - { 118, 0, 3, 5, { 0 }}, - { 119, 0, 3, 8, { 0 }}, - { 120, 0, 3, 5, { 0 }}, - { 121, 0, 3, 5, { 0 }}, - { 122, 0, 3, 5, { 0 }}, - { 123, 0, 1, 4, { 0 }}, - { 124, 0, 0, 2, { 0 }}, - { 125, 0, 1, 4, { 0 }}, - { 126, 0, 3, 6, { 0 }}, - { 161, 0, 1, 2, { 0 }}, - { 162, 0, 2, 5, { 0 }}, - { 163, 0, 1, 5, { 0 }}, - { 8364, 0, 0, 0, { 0 }}, - { 165, 0, 1, 6, { 0 }}, - { 352, 0, -1, 5, { 0 }}, - { 167, 0, 0, 5, { 0 }}, - { 353, 0, 0, 5, { 0 }}, - { 169, 0, 1, 7, { 0 }}, - { 170, 0, -1, 4, { 0 }}, - { 171, 0, 3, 5, { 0 }}, - { 172, 0, 4, 5, { 0 }}, - { 174, 0, 1, 7, { 0 }}, - { 175, 0, -1, 5, { 0 }}, - { 176, 0, -1, 4, { 0 }}, - { 177, 0, 1, 6, { 0 }}, - { 178, 0, -1, 4, { 0 }}, - { 179, 0, -1, 4, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 1, 5, { 0 }}, - { 182, 0, 1, 6, { 0 }}, - { 183, 0, 4, 2, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, -1, 3, { 0 }}, - { 186, 0, -1, 4, { 0 }}, - { 187, 0, 3, 5, { 0 }}, - { 338, 0, 1, 6, { 0 }}, - { 339, 0, 3, 6, { 0 }}, - { 376, 0, -1, 5, { 0 }}, - { 191, 0, 1, 5, { 0 }}, - { 192, 0, -1, 5, { 0 }}, - { 193, 0, -1, 5, { 0 }}, - { 194, 0, -1, 5, { 0 }}, - { 195, 0, -1, 5, { 0 }}, - { 196, 0, -1, 5, { 0 }}, - { 197, 0, -1, 5, { 0 }}, - { 198, 0, 1, 6, { 0 }}, - { 199, 0, 1, 5, { 0 }}, - { 200, 0, -1, 5, { 0 }}, - { 201, 0, -1, 5, { 0 }}, - { 202, 0, -1, 5, { 0 }}, - { 203, 0, -1, 5, { 0 }}, - { 204, 0, -1, 4, { 0 }}, - { 205, 0, -1, 4, { 0 }}, - { 206, 0, -1, 4, { 0 }}, - { 207, 0, -1, 4, { 0 }}, - { 208, 0, 1, 6, { 0 }}, - { 209, 0, -1, 5, { 0 }}, - { 210, 0, -1, 5, { 0 }}, - { 211, 0, -1, 5, { 0 }}, - { 212, 0, -1, 5, { 0 }}, - { 213, 0, -1, 5, { 0 }}, - { 214, 0, -1, 5, { 0 }}, - { 215, 0, 3, 4, { 0 }}, - { 216, 0, 0, 5, { 0 }}, - { 217, 0, -1, 5, { 0 }}, - { 218, 0, -1, 5, { 0 }}, - { 219, 0, -1, 5, { 0 }}, - { 220, 0, -1, 5, { 0 }}, - { 221, 0, -1, 5, { 0 }}, - { 222, 0, 1, 5, { 0 }}, - { 223, 0, 1, 5, { 0 }}, - { 224, 0, 0, 5, { 0 }}, - { 225, 0, 0, 5, { 0 }}, - { 226, 0, 0, 5, { 0 }}, - { 227, 0, 0, 5, { 0 }}, - { 228, 0, 1, 5, { 0 }}, - { 229, 0, -1, 5, { 0 }}, - { 230, 0, 3, 6, { 0 }}, - { 231, 0, 3, 5, { 0 }}, - { 232, 0, 0, 5, { 0 }}, - { 233, 0, 0, 5, { 0 }}, - { 234, 0, 0, 5, { 0 }}, - { 235, 0, 1, 5, { 0 }}, - { 236, 0, 0, 3, { 0 }}, - { 237, 0, 0, 2, { 0 }}, - { 238, 0, 0, 3, { 0 }}, - { 239, 0, 1, 3, { 0 }}, - { 240, 0, 0, 5, { 0 }}, - { 241, 0, 0, 5, { 0 }}, - { 242, 0, 0, 5, { 0 }}, - { 243, 0, 0, 5, { 0 }}, - { 244, 0, 0, 5, { 0 }}, - { 245, 0, 0, 5, { 0 }}, - { 246, 0, 1, 5, { 0 }}, - { 247, 0, 2, 4, { 0 }}, - { 248, 0, 2, 5, { 0 }}, - { 249, 0, 0, 5, { 0 }}, - { 250, 0, 0, 5, { 0 }}, - { 251, 0, 0, 5, { 0 }}, - { 252, 0, 1, 5, { 0 }}, - { 253, 0, 0, 5, { 0 }}, - { 254, 0, 0, 5, { 0 }}, - { 255, 0, 1, 5, { 0 }}, -}; - -// Style loading function: Bluish -static void GuiLoadStyleBluish(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < BLUISH_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(bluishStyleProps[i].controlId, bluishStyleProps[i].propertyId, bluishStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int bluishFontDataSize = 0; - unsigned char *data = DecompressData(bluishFontData, BLUISH_STYLE_FONT_ATLAS_COMP_SIZE, &bluishFontDataSize); - Image imFont = { data, 256, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 10; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, bluishFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, bluishFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 254, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.png deleted file mode 100644 index fff86b1..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.rgs deleted file mode 100644 index 5a27c6e..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.txt.rgs deleted file mode 100644 index f94aefc..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/bluish/style_bluish.txt.rgs +++ /dev/null @@ -1,24 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 10 charset.txt homespun.ttf -p 00 00 0x5ca6a6ff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0xb4e8f3ff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0x447e77ff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0x5f8792ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0xcdeff7ff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0x4c6c74ff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0x3b5b5fff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0xeaffffff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0x275057ff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0x96aaacff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0xc8d7d9ff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x8c9c9eff DEFAULT_TEXT_COLOR_DISABLED -p 00 18 0x84adb7ff LINE_COLOR -p 00 19 0xe8eef1ff BACKGROUND_COLOR diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/README.md deleted file mode 100644 index 712185d..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: candy - -Sweet, colorful, tasty! Enjoy this funfair ride and be careful with the witch of the candy house! - -![candy style table](style_candy.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_candy.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_candy.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_candy.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_candy.h` | Embeddable style as code file, self-contained, includes font data | -| `style_candy.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![candy style screen](screenshot.png) - -## about font - -"V5 Eastergothic" font by vFive Digital (Roberto Christen). - -100% free font, downloaded from dafont.com: [v5eastergothic](https://www.dafont.com/v5eastergothic.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/font_readme.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/font_readme.txt deleted file mode 100644 index cfd8cb2..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/font_readme.txt +++ /dev/null @@ -1,27 +0,0 @@ - -V5 Easter Gothic ----------------- -Instructions: - - -++ Easter Gothic ++ - -For screen use, set at 15pt or any multiple -of 15 (display). Turn antialiasing off. Set -tracking to 100 for best results. - ---------------- -Usage: This is a free font--you may use -this and other V5 fonts at will. It may not -be sold, altered, or improperly credited, -however. All I ask is that you kindly inform -me if you find this font useful, and where -you've used it. - -Enjoy, - -©2000 -Roberto Christen -rob@vfive.com - - diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/screenshot.old.png deleted file mode 100644 index 8d71945..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/screenshot.png deleted file mode 100644 index b68ec52..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.h deleted file mode 100644 index dc0351e..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.h +++ /dev/null @@ -1,582 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleCandy(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define CANDY_STYLE_PROPS_COUNT 17 - -// Custom style name: Candy -static const GuiStyleProp candyStyleProps[CANDY_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0xe58b68ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0xfeda96ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xe59b5fff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xee813fff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xfcd85bff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xfc6955ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xb34848ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xeb7272ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xbd4a4aff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x94795dff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0xc2a37aff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x9c8369ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x0000000f }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0xd77575ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0xfff5e1ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000007 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "v5easter.ttf" (size: 15, spacing: 0) - -#define CANDY_STYLE_FONT_ATLAS_COMP_SIZE 2110 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char candyFontData[CANDY_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x5b, 0x76, 0xa4, 0x36, 0x10, 0x00, 0x50, 0xad, 0x2b, 0xfb, 0xdf, 0x97, 0x72, 0x92, 0x7c, 0xe4, 0xcc, 0x8c, 0x1b, - 0x54, 0xa5, 0x12, 0x08, 0xfa, 0xfa, 0xfe, 0x19, 0xbb, 0x1b, 0x10, 0xa5, 0x07, 0xa0, 0x52, 0x6f, 0x00, 0x00, 0x00, 0xc0, - 0x97, 0xfb, 0xe7, 0xe7, 0xcf, 0xdf, 0xb5, 0x1f, 0x7e, 0xfb, 0xff, 0xdf, 0xf6, 0x1f, 0xb7, 0x1e, 0x6d, 0xc9, 0xff, 0xe7, - 0xf1, 0x9e, 0x8c, 0x7d, 0x42, 0x3b, 0xd8, 0x72, 0xbe, 0xcf, 0xbf, 0xff, 0xae, 0x97, 0x7c, 0xfb, 0xa7, 0xcf, 0x39, 0xdb, - 0xa3, 0xcc, 0xb6, 0xa3, 0x4f, 0xed, 0x07, 0xc7, 0xd4, 0x06, 0xb6, 0xf4, 0xd4, 0xd1, 0xf5, 0xe9, 0x52, 0x8d, 0x95, 0xce, - 0xf9, 0xf1, 0xb7, 0xf0, 0x31, 0xb6, 0x05, 0xdb, 0xfa, 0x64, 0x19, 0xaf, 0x8c, 0xff, 0xdf, 0x7f, 0x2a, 0xe3, 0xff, 0xf8, - 0x33, 0x67, 0xae, 0x89, 0xff, 0x8f, 0xa6, 0x17, 0xc4, 0x7f, 0xbc, 0x16, 0x39, 0x3e, 0x82, 0xcf, 0x57, 0x71, 0x0b, 0xff, - 0xcf, 0x79, 0xfd, 0x5a, 0xf9, 0xa9, 0x2b, 0xb7, 0x8d, 0x45, 0xed, 0xfc, 0x75, 0x7e, 0xb6, 0x37, 0x73, 0x65, 0x78, 0xe5, - 0xb6, 0xda, 0xf8, 0x3f, 0xfb, 0xdb, 0x6c, 0xcd, 0x9e, 0xef, 0x1d, 0x8c, 0xb6, 0xe6, 0x3d, 0x74, 0xed, 0x9f, 0xb7, 0x62, - 0x35, 0x67, 0x38, 0x7a, 0xc4, 0xc7, 0x75, 0xc9, 0xd9, 0xd6, 0xf9, 0x36, 0x37, 0x72, 0x6d, 0xdc, 0x71, 0x15, 0x9f, 0x97, - 0x66, 0x45, 0xbb, 0xd4, 0x7f, 0x39, 0xdb, 0xe2, 0x7f, 0xf4, 0xaa, 0xed, 0x8b, 0x5b, 0xda, 0x16, 0x6e, 0x69, 0x73, 0x7d, - 0x96, 0xba, 0x33, 0x5c, 0x15, 0xff, 0x7d, 0x22, 0xfa, 0x5b, 0xa2, 0xc7, 0x79, 0x5c, 0x6b, 0x9f, 0xed, 0x7f, 0xf6, 0x2a, - 0xa9, 0xbd, 0x66, 0x67, 0xe3, 0xff, 0xb8, 0x3f, 0xdc, 0x0e, 0xeb, 0x9b, 0xeb, 0x7a, 0x5c, 0x3b, 0xc5, 0x7f, 0xb6, 0x87, - 0x3c, 0x3e, 0xba, 0xa9, 0x6b, 0xff, 0xd7, 0xc7, 0xff, 0x59, 0x44, 0xf6, 0xe0, 0x48, 0xb5, 0xb6, 0x35, 0x1e, 0x19, 0x4f, - 0x67, 0x6b, 0xf4, 0xf8, 0x18, 0xf7, 0xfa, 0xfe, 0xff, 0xf9, 0xb8, 0xb1, 0x2f, 0x1b, 0x39, 0xd5, 0x47, 0xd8, 0xbe, 0xfd, - 0xff, 0xb1, 0x7e, 0xc1, 0x9a, 0xfe, 0xff, 0xd9, 0xf8, 0xbf, 0x5d, 0xde, 0xfa, 0x9f, 0x45, 0x56, 0xbe, 0xf4, 0x7b, 0xaa, - 0x07, 0x34, 0x77, 0x57, 0x21, 0x57, 0x9e, 0x73, 0xf1, 0xbf, 0xa2, 0x0f, 0x10, 0x1d, 0xfd, 0xbd, 0xa3, 0xff, 0x9f, 0x39, - 0x83, 0xd9, 0xfb, 0xcc, 0x55, 0x47, 0x16, 0xbf, 0xcf, 0x7f, 0xdf, 0x19, 0xab, 0xab, 0xe7, 0x67, 0xcf, 0x60, 0xfd, 0xa7, - 0xe6, 0x7a, 0xd5, 0xd1, 0xab, 0xb8, 0xdf, 0xfa, 0x6c, 0xac, 0x3f, 0xe2, 0xce, 0xe9, 0x15, 0xed, 0xff, 0xd9, 0xfd, 0xff, - 0x99, 0xbb, 0x03, 0xb1, 0x27, 0x1b, 0x7d, 0xc3, 0x6b, 0x45, 0xfc, 0x3f, 0xa5, 0x15, 0xab, 0xea, 0x55, 0xbb, 0xff, 0x97, - 0x79, 0xa6, 0x5d, 0xd1, 0x9f, 0x7b, 0x4a, 0xfc, 0xf7, 0x81, 0xda, 0x74, 0x7c, 0x4b, 0xfe, 0x89, 0xfb, 0xaa, 0xb7, 0x0a, - 0xce, 0x9e, 0x36, 0x5e, 0xf7, 0x14, 0x7b, 0xc7, 0xf8, 0x7f, 0xc6, 0xf3, 0xff, 0x3d, 0xce, 0xe5, 0xda, 0x91, 0xdc, 0x8e, - 0xf1, 0x0f, 0xdf, 0xf1, 0x36, 0xe1, 0x75, 0x6f, 0x2d, 0x8a, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x9e, 0x3e, 0x3b, 0x27, 0x9f, 0x21, 0x32, 0x36, 0xe7, 0xa6, 0x2f, 0xc9, 0x8b, 0x94, 0x9b, 0x1b, 0x7d, - 0x6d, 0x0e, 0xe7, 0x6c, 0xd6, 0xec, 0xb9, 0x79, 0xe1, 0x9f, 0xf3, 0x09, 0xcd, 0x7c, 0xee, 0xf1, 0x5c, 0xe4, 0xc8, 0xbc, - 0xec, 0x6c, 0xae, 0xf3, 0x68, 0x4e, 0xa0, 0x4c, 0xee, 0xa4, 0xd9, 0xdc, 0xe9, 0xf1, 0x23, 0xce, 0xcc, 0x60, 0x9d, 0x9d, - 0xf3, 0x76, 0x55, 0xc6, 0xe6, 0x6c, 0x9c, 0x8e, 0x65, 0xbd, 0xed, 0xe1, 0x4c, 0x75, 0xbb, 0xe5, 0x69, 0xa8, 0xce, 0x9a, - 0xb1, 0x32, 0xfe, 0xdb, 0x50, 0x6e, 0xec, 0xb1, 0xf9, 0xce, 0xbd, 0x70, 0x46, 0xfb, 0x75, 0x39, 0xf7, 0xda, 0x74, 0x99, - 0x44, 0x5b, 0xaa, 0xf7, 0xc7, 0x7f, 0xf6, 0xd8, 0xcf, 0xce, 0x6a, 0xdf, 0x36, 0x8b, 0xfd, 0x9d, 0xf1, 0x9f, 0xed, 0xdb, - 0x1d, 0xb7, 0x7c, 0xf1, 0x8c, 0x07, 0xd7, 0x64, 0xb4, 0xe9, 0x1b, 0xc5, 0x7f, 0xfc, 0xdb, 0x56, 0xce, 0x61, 0x9f, 0x6b, - 0x7b, 0x7b, 0x59, 0xfc, 0xe7, 0xfb, 0x3e, 0xbb, 0xb5, 0xf1, 0xb5, 0x59, 0x73, 0xd6, 0xc5, 0x7f, 0x2b, 0xcf, 0xca, 0xb4, - 0x67, 0xfc, 0x8f, 0xb4, 0x0f, 0x99, 0xb1, 0x41, 0xfc, 0x3f, 0xb3, 0x35, 0x6e, 0xf4, 0xdb, 0x32, 0xed, 0xff, 0xf1, 0x51, - 0x3e, 0xb9, 0xfd, 0xdf, 0x25, 0xfe, 0xdb, 0x56, 0xfd, 0xff, 0xd9, 0xab, 0x31, 0x16, 0xe7, 0xf7, 0xe5, 0x66, 0xdb, 0x7d, - 0x25, 0xa3, 0xc8, 0x19, 0x9f, 0xcd, 0x8e, 0x9c, 0xbd, 0xef, 0x50, 0xb9, 0x62, 0xd3, 0xb3, 0xee, 0x71, 0xb5, 0xaf, 0x1c, - 0xff, 0xe7, 0xef, 0xfb, 0x8a, 0xff, 0xd9, 0xfe, 0x74, 0xbb, 0x21, 0xfe, 0x57, 0x9d, 0xbb, 0x27, 0xc7, 0xff, 0x4c, 0xcf, - 0xef, 0xaa, 0xf8, 0x6f, 0x1f, 0x57, 0xa1, 0x9a, 0x8d, 0xff, 0xfc, 0xda, 0x38, 0xd1, 0x38, 0xef, 0x37, 0x3e, 0xdf, 0x5a, - 0x51, 0x07, 0xe6, 0x9f, 0x37, 0x34, 0xf1, 0xff, 0xa8, 0xf8, 0xbf, 0xbf, 0xfd, 0x1f, 0x5d, 0x5b, 0xf1, 0xbb, 0xe3, 0xbf, - 0x4d, 0xdd, 0xe3, 0x5b, 0xf1, 0x7f, 0xbb, 0xf5, 0xff, 0xab, 0xeb, 0xce, 0x6b, 0xeb, 0xd3, 0x75, 0x7d, 0xdc, 0xdc, 0xfd, - 0xa4, 0xdc, 0x6a, 0x06, 0xb9, 0xac, 0xd9, 0x6b, 0xae, 0xa9, 0x96, 0x5e, 0xc3, 0xab, 0x85, 0x6b, 0x00, 0xf1, 0xff, 0xeb, - 0x96, 0x75, 0xab, 0x23, 0xc3, 0xea, 0x78, 0x7a, 0x56, 0xfc, 0xcf, 0xbd, 0x69, 0x50, 0xbf, 0xda, 0x60, 0xbf, 0xa1, 0xfd, - 0x87, 0xb5, 0x4f, 0xd9, 0xeb, 0xfe, 0x9e, 0x8a, 0x3e, 0x3d, 0xf0, 0xbd, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x8d, 0x73, 0x05, 0x3e, 0xcf, 0xf2, 0x3c, 0xce, 0x82, 0xd1, 0x92, 0x59, 0xb0, 0xdb, 0x40, - 0xe6, 0xe4, 0x9e, 0xfc, 0xbe, 0xc8, 0x2c, 0xe5, 0xdd, 0x72, 0x11, 0x44, 0xf3, 0x23, 0x46, 0x72, 0x63, 0xb7, 0x70, 0x9e, - 0xaf, 0x6c, 0x16, 0x9b, 0x36, 0x99, 0x73, 0x34, 0x3f, 0xff, 0x2e, 0x3b, 0x83, 0x7a, 0x2c, 0xa3, 0xdb, 0xd8, 0xf7, 0xf4, - 0xa1, 0x19, 0x7e, 0xb3, 0xa5, 0x50, 0x3f, 0x27, 0xb1, 0x5d, 0x9e, 0x75, 0xe3, 0xde, 0x6c, 0x4c, 0x4f, 0xca, 0xb7, 0x1d, - 0xc9, 0xc3, 0x7b, 0x9e, 0xcf, 0x63, 0x3e, 0xfe, 0x47, 0x73, 0x0a, 0xf4, 0xc9, 0xac, 0x9f, 0xd1, 0xba, 0xe2, 0xf8, 0xbc, - 0x1c, 0xcd, 0x4d, 0x8e, 0x45, 0x7f, 0x76, 0xfe, 0xcd, 0xf9, 0x3e, 0xac, 0x9b, 0x51, 0xfd, 0x1d, 0xf1, 0x1f, 0xaf, 0x41, - 0x9f, 0x90, 0x6f, 0xbb, 0x15, 0xfc, 0xb6, 0x72, 0xe6, 0x7b, 0x36, 0xa7, 0x48, 0x36, 0xfe, 0x23, 0xb1, 0xf5, 0xb9, 0x96, - 0x6b, 0x03, 0x19, 0xd4, 0xe6, 0xbf, 0x27, 0x13, 0xff, 0x3d, 0x9c, 0x6d, 0x25, 0xdb, 0xfe, 0xc7, 0x5a, 0x97, 0x3d, 0xe3, - 0x3f, 0xd3, 0xe3, 0xec, 0x17, 0xc6, 0xff, 0x5c, 0x8e, 0xaf, 0x76, 0x79, 0xfc, 0xd7, 0xae, 0x53, 0x31, 0x36, 0x92, 0xa9, - 0xe8, 0x69, 0xff, 0x34, 0x3a, 0x3c, 0x1a, 0x19, 0xd5, 0xc5, 0x7f, 0xff, 0xe1, 0x1b, 0x57, 0xb5, 0xff, 0x55, 0x19, 0x55, - 0xfb, 0xc1, 0xfe, 0xbe, 0x21, 0xfe, 0xdb, 0x26, 0xfd, 0xff, 0xfa, 0xb5, 0xd4, 0xf6, 0x8c, 0xff, 0x78, 0x8f, 0x2b, 0xde, - 0x7a, 0xc5, 0xfa, 0x0a, 0xe7, 0x23, 0x80, 0x5e, 0x50, 0x03, 0xf4, 0xdf, 0xd6, 0xa3, 0xaa, 0x1a, 0x85, 0xc7, 0x56, 0x12, - 0xcb, 0xb5, 0xff, 0xfd, 0xb5, 0xed, 0x7f, 0xed, 0xf8, 0x7f, 0x55, 0x2e, 0xc2, 0xda, 0xf5, 0xb6, 0xaa, 0x72, 0x6d, 0xe6, - 0xfa, 0x5a, 0xd9, 0xf6, 0xff, 0xac, 0x77, 0x30, 0x13, 0xff, 0x6d, 0x32, 0x2e, 0x63, 0xf5, 0x4c, 0x7f, 0x54, 0x06, 0x8e, - 0x91, 0x35, 0xf2, 0xea, 0xae, 0xf4, 0xd1, 0x08, 0x8a, 0x6c, 0x9d, 0xcd, 0xaa, 0x36, 0xfe, 0xa4, 0x61, 0xa4, 0xa6, 0xfe, - 0xfc, 0x94, 0x62, 0xe4, 0xac, 0x54, 0x8c, 0x01, 0x77, 0xed, 0xff, 0xdf, 0xd3, 0xfe, 0x8f, 0xb4, 0xfe, 0x35, 0x79, 0xc8, - 0x7a, 0x79, 0xfe, 0x9d, 0x5e, 0xb8, 0x77, 0x75, 0x2d, 0xe4, 0x1d, 0x4f, 0x22, 0x57, 0xec, 0xd1, 0x7e, 0x59, 0xd2, 0x7a, - 0xf2, 0xce, 0xf1, 0x5e, 0xfd, 0xff, 0xfc, 0xd8, 0x2a, 0x32, 0xaa, 0xaf, 0x7b, 0xfe, 0x57, 0xdd, 0x96, 0x3e, 0x2b, 0xfb, - 0x96, 0xf8, 0xdf, 0xbb, 0x0c, 0xf6, 0x8a, 0xff, 0xd1, 0x55, 0xcc, 0x7b, 0xf9, 0x93, 0xf8, 0x67, 0xd4, 0xe0, 0xcf, 0x7d, - 0xff, 0xe7, 0xfa, 0x95, 0x47, 0xef, 0x8e, 0xff, 0xdd, 0x6a, 0x80, 0xaa, 0x15, 0xaf, 0xdb, 0xe2, 0x37, 0x43, 0xee, 0x3f, - 0x6b, 0x2b, 0x56, 0x08, 0x86, 0xb7, 0xbc, 0xbf, 0xd9, 0x5f, 0xdf, 0x6f, 0x7a, 0x62, 0x4f, 0x1b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xd5, 0xfc, 0xbf, 0x3e, 0x39, 0x37, 0x30, 0x97, 0x59, 0xa8, 0x9d, 0xce, - 0x30, 0xed, 0xe9, 0xbf, 0x89, 0x1c, 0x4b, 0x3e, 0x67, 0x45, 0x26, 0xe7, 0x76, 0x3b, 0xc9, 0x53, 0x53, 0x73, 0x6e, 0xae, - 0x39, 0xce, 0xf3, 0xdc, 0x7a, 0xb1, 0xeb, 0x22, 0x72, 0xa6, 0xce, 0x73, 0xa6, 0x5c, 0x77, 0x1e, 0xb2, 0xe5, 0xdd, 0x4f, - 0x66, 0x73, 0xf7, 0xc3, 0x4c, 0x35, 0x15, 0xb9, 0x54, 0xce, 0x3e, 0x3f, 0x9f, 0x79, 0xaf, 0x25, 0x32, 0xae, 0xf5, 0x3f, - 0x72, 0x39, 0xf5, 0xd4, 0xdf, 0x44, 0x4b, 0x3d, 0xb7, 0x6d, 0x24, 0xa7, 0x63, 0x5d, 0x9e, 0xe8, 0xcc, 0xb9, 0x59, 0x7f, - 0x9c, 0xf1, 0xeb, 0xa2, 0x17, 0x7d, 0xc3, 0x68, 0x1e, 0x92, 0xfd, 0xcb, 0xfb, 0x3c, 0x63, 0xec, 0x5c, 0x36, 0x85, 0xd5, - 0xf1, 0x1f, 0xcb, 0xb9, 0x1a, 0xc9, 0x2b, 0x56, 0x19, 0xff, 0x7b, 0xf5, 0xc7, 0xf2, 0xab, 0x41, 0x54, 0x65, 0xd8, 0x7f, - 0xc6, 0x2c, 0xdd, 0xfc, 0x4a, 0x04, 0xcf, 0x29, 0xef, 0xd5, 0xc7, 0x37, 0x52, 0x53, 0xce, 0xe5, 0x81, 0xb8, 0x2b, 0xfe, - 0xeb, 0xfa, 0xff, 0xd9, 0xfe, 0x74, 0x66, 0x0d, 0xa4, 0xd9, 0xdc, 0x89, 0x33, 0x2b, 0x89, 0x5c, 0x7d, 0x2c, 0x73, 0xa3, - 0x82, 0x91, 0x31, 0xeb, 0x0e, 0xe7, 0x61, 0xe6, 0x1c, 0xb5, 0xc9, 0x95, 0x16, 0xce, 0x23, 0xa0, 0x0f, 0x8c, 0x4f, 0xfa, - 0x64, 0x0d, 0x13, 0x2d, 0xd1, 0xf3, 0x73, 0x55, 0x5b, 0x2f, 0xe6, 0x3e, 0x6f, 0xd7, 0x6d, 0x7d, 0x62, 0x1c, 0x73, 0xef, - 0xca, 0x45, 0x35, 0xf1, 0x3f, 0xde, 0xab, 0xdd, 0xbd, 0x4c, 0xdb, 0xc0, 0x38, 0x79, 0xff, 0xf8, 0x8f, 0xc6, 0x61, 0x65, - 0x1f, 0x77, 0x36, 0x9b, 0xf4, 0x3d, 0xdb, 0xe6, 0x57, 0x26, 0xd9, 0xfd, 0xda, 0xbe, 0x3b, 0xfe, 0xd7, 0xac, 0xfe, 0x52, - 0x7d, 0x8e, 0xce, 0x46, 0x0d, 0x55, 0xed, 0xff, 0xd9, 0x08, 0xa4, 0x6f, 0x31, 0x2e, 0x1c, 0x8b, 0xed, 0xf8, 0xfd, 0xff, - 0xb9, 0x6b, 0x65, 0xc5, 0xb6, 0xf9, 0xeb, 0x76, 0xdf, 0x18, 0xdf, 0x25, 0xfe, 0x9f, 0x50, 0x47, 0xce, 0xb4, 0xda, 0xd1, - 0xf6, 0xbf, 0x5d, 0x18, 0xff, 0x35, 0x77, 0x2a, 0x7a, 0xe1, 0x8a, 0x76, 0x4f, 0xbf, 0x56, 0xe6, 0xef, 0xff, 0xad, 0x78, - 0x02, 0xb2, 0x73, 0xfb, 0x2f, 0xfe, 0x9f, 0x16, 0xff, 0xd9, 0x67, 0xfb, 0x33, 0xfd, 0x91, 0x67, 0x8e, 0xff, 0x6b, 0xef, - 0x43, 0x3d, 0xb5, 0xff, 0xff, 0xf4, 0x32, 0x9d, 0xeb, 0xb5, 0xcb, 0x90, 0xfc, 0x4d, 0x7d, 0x83, 0xd9, 0x3b, 0x9d, 0x6f, - 0x8b, 0xff, 0x77, 0x97, 0x69, 0xf5, 0x0a, 0xe9, 0x7c, 0x4b, 0xfc, 0xb7, 0x0b, 0xdb, 0xc4, 0xf8, 0xfb, 0x86, 0xdf, 0x17, - 0xff, 0xab, 0xde, 0x91, 0x10, 0xff, 0xcf, 0x8c, 0xff, 0xd5, 0x65, 0x7a, 0xed, 0x7b, 0x0e, 0x35, 0xef, 0xff, 0xad, 0x5a, - 0xf5, 0x65, 0x87, 0xe7, 0xff, 0xcf, 0x7d, 0xf7, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, - 0xfb, 0x3d, 0xf7, 0xd8, 0x96, 0xe3, 0xb9, 0x48, 0xb1, 0xec, 0x7b, 0xbb, 0x67, 0x63, 0x6e, 0xb2, 0x6f, 0x87, 0x4a, 0x7f, - 0xf4, 0x7c, 0xef, 0x54, 0xbe, 0x9f, 0x4b, 0xac, 0xdf, 0x5e, 0x66, 0xb1, 0x98, 0x8a, 0x1f, 0x67, 0xc5, 0xe7, 0xe4, 0xa3, - 0xff, 0xca, 0xac, 0xd4, 0xb2, 0x6f, 0xaf, 0xce, 0xbe, 0x1d, 0x39, 0xdf, 0xfb, 0x94, 0x6f, 0x7c, 0xbe, 0xd5, 0xb5, 0x65, - 0xb6, 0xd7, 0x6c, 0xbe, 0xaa, 0x19, 0x86, 0x7b, 0xcd, 0x54, 0xec, 0x13, 0x19, 0xd5, 0xbb, 0xec, 0xdb, 0x8f, 0xe8, 0xe7, - 0x56, 0xac, 0x8c, 0xf1, 0x9e, 0x98, 0xba, 0x7b, 0x86, 0xeb, 0x73, 0xb2, 0x31, 0x8f, 0xf5, 0x61, 0x72, 0xab, 0x25, 0xbd, - 0x27, 0xfb, 0xf6, 0x4f, 0xad, 0xdd, 0xb5, 0x33, 0x6a, 0xab, 0xca, 0xf7, 0x38, 0xc7, 0xee, 0xce, 0xd9, 0x1f, 0x9e, 0x17, - 0xff, 0xbb, 0x64, 0xa5, 0x6a, 0x27, 0x25, 0x9e, 0xbf, 0xae, 0xbe, 0x29, 0xfb, 0xee, 0x3b, 0x32, 0xa8, 0xf4, 0xad, 0xae, - 0xcd, 0x77, 0xc7, 0x7f, 0x26, 0x1e, 0x57, 0x6c, 0xab, 0xc9, 0x0c, 0xff, 0xed, 0xd9, 0x77, 0xdf, 0x13, 0xff, 0x4d, 0xfc, - 0xdf, 0xde, 0xff, 0xbf, 0x6e, 0xdb, 0x7c, 0xdf, 0x60, 0xc5, 0xfd, 0xff, 0xe7, 0x65, 0xdf, 0x7d, 0x53, 0xfb, 0xbf, 0x4b, - 0xc6, 0xc4, 0x68, 0x4c, 0xf5, 0x17, 0xc4, 0xff, 0x8e, 0xed, 0xa9, 0xec, 0x9b, 0xdf, 0x11, 0xff, 0x7d, 0xc3, 0xe3, 0xea, - 0x45, 0x75, 0xd7, 0x35, 0xd7, 0x57, 0xf4, 0x2e, 0xcb, 0x2e, 0x71, 0x51, 0x7d, 0x6f, 0x70, 0xfc, 0x09, 0xfb, 0x1b, 0xb3, - 0x6f, 0xbe, 0x35, 0xdb, 0xe6, 0xca, 0xfd, 0x6b, 0xe1, 0xb5, 0xf8, 0xf3, 0x4f, 0x68, 0x56, 0xd5, 0xa5, 0x15, 0x2b, 0x6f, - 0xef, 0x94, 0x8d, 0x51, 0xf6, 0xcd, 0x15, 0xcf, 0xa2, 0x9e, 0x9c, 0x6d, 0xf3, 0x3c, 0x56, 0xe3, 0xdb, 0xd6, 0xc7, 0xf4, - 0x55, 0x75, 0xe9, 0xfb, 0x72, 0x8f, 0xca, 0xa8, 0xca, 0x33, 0xde, 0xb7, 0xc9, 0xdd, 0xe7, 0xa8, 0xbd, 0xe6, 0x45, 0x0a, - 0xdc, 0xf5, 0x6e, 0x90, 0xb6, 0x8a, 0xdd, 0xfc, 0xe5, 0x1c, 0xe8, 0x7f, 0x02, 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, 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, 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, 0xff, 0xfa, 0xef, 0xc7, - 0x79, 0x00, 0xf1, 0x0f, 0x7c, 0x5d, 0xfc, 0xff, 0x0d }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle candyFontRecs[189] = { - { 4, 4, 3 , 15 }, - { 15, 4, 2 , 9 }, - { 25, 4, 3 , 2 }, - { 36, 4, 8 , 9 }, - { 52, 4, 6 , 11 }, - { 66, 4, 7 , 9 }, - { 81, 4, 7 , 9 }, - { 96, 4, 1 , 2 }, - { 105, 4, 3 , 11 }, - { 116, 4, 3 , 11 }, - { 127, 4, 7 , 7 }, - { 142, 4, 6 , 5 }, - { 156, 4, 2 , 3 }, - { 166, 4, 5 , 1 }, - { 179, 4, 2 , 2 }, - { 189, 4, 5 , 10 }, - { 202, 4, 6 , 9 }, - { 216, 4, 4 , 9 }, - { 228, 4, 6 , 9 }, - { 242, 4, 6 , 9 }, - { 256, 4, 7 , 9 }, - { 271, 4, 6 , 9 }, - { 285, 4, 6 , 9 }, - { 299, 4, 6 , 9 }, - { 313, 4, 6 , 9 }, - { 327, 4, 6 , 9 }, - { 341, 4, 2 , 6 }, - { 351, 4, 2 , 7 }, - { 361, 4, 4 , 6 }, - { 373, 4, 5 , 3 }, - { 386, 4, 4 , 6 }, - { 398, 4, 6 , 9 }, - { 412, 4, 8 , 7 }, - { 428, 4, 6 , 9 }, - { 442, 4, 6 , 9 }, - { 456, 4, 6 , 9 }, - { 470, 4, 6 , 9 }, - { 484, 4, 6 , 9 }, - { 4, 27, 6 , 9 }, - { 18, 27, 6 , 9 }, - { 32, 27, 6 , 9 }, - { 46, 27, 2 , 9 }, - { 56, 27, 6 , 9 }, - { 70, 27, 6 , 9 }, - { 84, 27, 6 , 9 }, - { 98, 27, 8 , 9 }, - { 114, 27, 6 , 9 }, - { 128, 27, 6 , 9 }, - { 142, 27, 6 , 9 }, - { 156, 27, 6 , 9 }, - { 170, 27, 6 , 9 }, - { 184, 27, 6 , 9 }, - { 198, 27, 6 , 9 }, - { 212, 27, 6 , 9 }, - { 226, 27, 6 , 9 }, - { 240, 27, 8 , 9 }, - { 256, 27, 6 , 9 }, - { 270, 27, 6 , 9 }, - { 284, 27, 6 , 9 }, - { 298, 27, 3 , 11 }, - { 309, 27, 5 , 10 }, - { 322, 27, 3 , 11 }, - { 333, 27, 6 , 4 }, - { 347, 27, 6 , 1 }, - { 361, 27, 3 , 2 }, - { 372, 27, 6 , 7 }, - { 386, 27, 6 , 10 }, - { 400, 27, 6 , 7 }, - { 414, 27, 6 , 10 }, - { 428, 27, 6 , 7 }, - { 442, 27, 5 , 10 }, - { 455, 27, 7 , 10 }, - { 470, 27, 6 , 10 }, - { 484, 27, 2 , 10 }, - { 494, 27, 2 , 12 }, - { 4, 50, 6 , 10 }, - { 18, 50, 3 , 10 }, - { 29, 50, 8 , 7 }, - { 45, 50, 6 , 7 }, - { 59, 50, 6 , 7 }, - { 73, 50, 6 , 10 }, - { 87, 50, 6 , 10 }, - { 101, 50, 6 , 7 }, - { 115, 50, 6 , 7 }, - { 129, 50, 3 , 10 }, - { 140, 50, 6 , 7 }, - { 154, 50, 6 , 7 }, - { 168, 50, 8 , 7 }, - { 184, 50, 6 , 7 }, - { 198, 50, 6 , 10 }, - { 212, 50, 6 , 7 }, - { 226, 50, 4 , 11 }, - { 238, 50, 1 , 11 }, - { 247, 50, 4 , 11 }, - { 259, 50, 6 , 2 }, - { 273, 50, 2 , 10 }, - { 283, 50, 6 , 11 }, - { 297, 50, 8 , 9 }, - { 313, 50, 7 , 9 }, - { 328, 50, 6 , 9 }, - { 342, 50, 0 , 0 }, - { 350, 50, 6 , 11 }, - { 364, 50, 0 , 0 }, - { 372, 50, 8 , 8 }, - { 388, 50, 5 , 7 }, - { 401, 50, 7 , 6 }, - { 416, 50, 0 , 0 }, - { 424, 50, 8 , 8 }, - { 440, 50, 6 , 1 }, - { 454, 50, 4 , 5 }, - { 466, 50, 6 , 7 }, - { 480, 50, 3 , 5 }, - { 491, 50, 3 , 5 }, - { 502, 50, 0 , 0 }, - { 4, 73, 6 , 9 }, - { 18, 73, 6 , 9 }, - { 32, 73, 4 , 4 }, - { 44, 73, 0 , 0 }, - { 52, 73, 2 , 5 }, - { 62, 73, 4 , 7 }, - { 74, 73, 7 , 6 }, - { 89, 73, 10 , 9 }, - { 107, 73, 10 , 7 }, - { 125, 73, 0 , 0 }, - { 133, 73, 6 , 9 }, - { 147, 73, 6 , 12 }, - { 161, 73, 6 , 12 }, - { 175, 73, 6 , 12 }, - { 189, 73, 6 , 12 }, - { 203, 73, 6 , 11 }, - { 217, 73, 6 , 12 }, - { 231, 73, 10 , 9 }, - { 249, 73, 6 , 12 }, - { 263, 73, 6 , 12 }, - { 277, 73, 6 , 12 }, - { 291, 73, 6 , 12 }, - { 305, 73, 6 , 11 }, - { 319, 73, 3 , 12 }, - { 330, 73, 3 , 12 }, - { 341, 73, 4 , 12 }, - { 353, 73, 4 , 11 }, - { 365, 73, 8 , 9 }, - { 381, 73, 6 , 12 }, - { 395, 73, 6 , 12 }, - { 409, 73, 6 , 12 }, - { 423, 73, 6 , 12 }, - { 437, 73, 6 , 12 }, - { 451, 73, 6 , 11 }, - { 465, 73, 5 , 5 }, - { 478, 73, 9 , 10 }, - { 495, 73, 6 , 12 }, - { 4, 96, 6 , 12 }, - { 18, 96, 6 , 12 }, - { 32, 96, 6 , 11 }, - { 46, 96, 6 , 12 }, - { 60, 96, 0 , 0 }, - { 68, 96, 6 , 10 }, - { 82, 96, 6 , 10 }, - { 96, 96, 6 , 10 }, - { 110, 96, 6 , 10 }, - { 124, 96, 6 , 10 }, - { 138, 96, 6 , 9 }, - { 152, 96, 6 , 11 }, - { 166, 96, 10 , 7 }, - { 184, 96, 6 , 10 }, - { 198, 96, 6 , 10 }, - { 212, 96, 6 , 10 }, - { 226, 96, 6 , 10 }, - { 240, 96, 6 , 9 }, - { 254, 96, 3 , 10 }, - { 265, 96, 3 , 10 }, - { 276, 96, 4 , 10 }, - { 288, 96, 4 , 9 }, - { 300, 96, 0 , 0 }, - { 308, 96, 6 , 13 }, - { 322, 96, 6 , 10 }, - { 336, 96, 6 , 10 }, - { 350, 96, 6 , 10 }, - { 364, 96, 6 , 10 }, - { 378, 96, 6 , 9 }, - { 392, 96, 0 , 0 }, - { 400, 96, 8 , 8 }, - { 416, 96, 6 , 10 }, - { 430, 96, 6 , 10 }, - { 444, 96, 6 , 10 }, - { 458, 96, 6 , 9 }, - { 472, 96, 6 , 13 }, - { 486, 96, 0 , 0 }, - { 494, 96, 6 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo candyFontGlyphs[189] = { - { 32, 0, 0, 3, { 0 }}, - { 33, 0, 3, 3, { 0 }}, - { 34, 0, 2, 4, { 0 }}, - { 35, 0, 3, 9, { 0 }}, - { 36, 0, 2, 7, { 0 }}, - { 37, 0, 3, 8, { 0 }}, - { 38, 0, 3, 8, { 0 }}, - { 39, 0, 2, 2, { 0 }}, - { 40, 1, 2, 5, { 0 }}, - { 41, 1, 2, 5, { 0 }}, - { 42, 0, 4, 8, { 0 }}, - { 43, 0, 6, 7, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 7, 6, { 0 }}, - { 46, 0, 10, 3, { 0 }}, - { 47, 1, 3, 7, { 0 }}, - { 48, 0, 3, 7, { 0 }}, - { 49, 0, 3, 5, { 0 }}, - { 50, 0, 3, 7, { 0 }}, - { 51, 0, 3, 7, { 0 }}, - { 52, 0, 3, 8, { 0 }}, - { 53, 0, 3, 7, { 0 }}, - { 54, 0, 3, 7, { 0 }}, - { 55, 0, 3, 7, { 0 }}, - { 56, 0, 3, 7, { 0 }}, - { 57, 0, 3, 7, { 0 }}, - { 58, 0, 6, 3, { 0 }}, - { 59, 0, 6, 3, { 0 }}, - { 60, 1, 5, 6, { 0 }}, - { 61, 1, 7, 7, { 0 }}, - { 62, 1, 5, 6, { 0 }}, - { 63, 0, 3, 7, { 0 }}, - { 64, 0, 4, 9, { 0 }}, - { 65, 0, 3, 7, { 0 }}, - { 66, 0, 3, 7, { 0 }}, - { 67, 0, 3, 7, { 0 }}, - { 68, 0, 3, 7, { 0 }}, - { 69, 0, 3, 7, { 0 }}, - { 70, 0, 3, 7, { 0 }}, - { 71, 0, 3, 7, { 0 }}, - { 72, 0, 3, 7, { 0 }}, - { 73, 0, 3, 3, { 0 }}, - { 74, 0, 3, 7, { 0 }}, - { 75, 0, 3, 7, { 0 }}, - { 76, 0, 3, 7, { 0 }}, - { 77, 0, 3, 9, { 0 }}, - { 78, 0, 3, 7, { 0 }}, - { 79, 0, 3, 7, { 0 }}, - { 80, 0, 3, 7, { 0 }}, - { 81, 0, 3, 7, { 0 }}, - { 82, 0, 3, 7, { 0 }}, - { 83, 0, 3, 7, { 0 }}, - { 84, 0, 3, 7, { 0 }}, - { 85, 0, 3, 7, { 0 }}, - { 86, 0, 3, 7, { 0 }}, - { 87, 0, 3, 9, { 0 }}, - { 88, 0, 3, 7, { 0 }}, - { 89, 0, 3, 7, { 0 }}, - { 90, 0, 3, 7, { 0 }}, - { 91, 1, 2, 5, { 0 }}, - { 92, 1, 3, 7, { 0 }}, - { 93, 1, 2, 5, { 0 }}, - { 94, 0, 3, 7, { 0 }}, - { 95, 0, 11, 7, { 0 }}, - { 96, 0, 0, 4, { 0 }}, - { 97, 0, 5, 7, { 0 }}, - { 98, 0, 2, 7, { 0 }}, - { 99, 0, 5, 7, { 0 }}, - { 100, 0, 2, 7, { 0 }}, - { 101, 0, 5, 7, { 0 }}, - { 102, 0, 2, 6, { 0 }}, - { 103, 0, 5, 7, { 0 }}, - { 104, 0, 2, 7, { 0 }}, - { 105, 0, 2, 3, { 0 }}, - { 106, 0, 2, 3, { 0 }}, - { 107, 0, 2, 7, { 0 }}, - { 108, 0, 2, 4, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 7, { 0 }}, - { 111, 0, 5, 7, { 0 }}, - { 112, 0, 5, 7, { 0 }}, - { 113, 0, 5, 7, { 0 }}, - { 114, 0, 5, 7, { 0 }}, - { 115, 0, 5, 7, { 0 }}, - { 116, 0, 2, 4, { 0 }}, - { 117, 0, 5, 7, { 0 }}, - { 118, 0, 5, 7, { 0 }}, - { 119, 0, 5, 9, { 0 }}, - { 120, 0, 5, 7, { 0 }}, - { 121, 0, 5, 7, { 0 }}, - { 122, 0, 5, 7, { 0 }}, - { 123, 1, 2, 6, { 0 }}, - { 124, 1, 2, 3, { 0 }}, - { 125, 1, 2, 6, { 0 }}, - { 126, 0, 0, 7, { 0 }}, - { 161, 0, 3, 3, { 0 }}, - { 162, 0, 2, 7, { 0 }}, - { 163, 0, 3, 9, { 0 }}, - { 8364, 0, 3, 8, { 0 }}, - { 165, 0, 3, 7, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 2, 7, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 0, 0, 9, { 0 }}, - { 170, 0, 0, 6, { 0 }}, - { 171, 1, 5, 9, { 0 }}, - { 172, 0, 0, 0, { 0 }}, - { 174, 0, 0, 9, { 0 }}, - { 175, 0, 0, 7, { 0 }}, - { 176, 0, 0, 5, { 0 }}, - { 177, 0, 4, 7, { 0 }}, - { 178, 0, 0, 4, { 0 }}, - { 179, 0, 0, 4, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 5, 7, { 0 }}, - { 182, 0, 3, 7, { 0 }}, - { 183, 0, 6, 5, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 0, 3, { 0 }}, - { 186, 0, 0, 5, { 0 }}, - { 187, 1, 5, 9, { 0 }}, - { 338, 0, 3, 11, { 0 }}, - { 339, 0, 5, 11, { 0 }}, - { 376, 0, 0, 0, { 0 }}, - { 191, 0, 4, 7, { 0 }}, - { 192, 0, 0, 7, { 0 }}, - { 193, 0, 0, 7, { 0 }}, - { 194, 0, 0, 7, { 0 }}, - { 195, 0, 0, 7, { 0 }}, - { 196, 0, 1, 7, { 0 }}, - { 197, 0, 0, 7, { 0 }}, - { 198, 0, 3, 11, { 0 }}, - { 199, 0, 3, 7, { 0 }}, - { 200, 0, 0, 7, { 0 }}, - { 201, 0, 0, 7, { 0 }}, - { 202, 0, 0, 7, { 0 }}, - { 203, 0, 1, 7, { 0 }}, - { 204, -1, 0, 3, { 0 }}, - { 205, 0, 0, 3, { 0 }}, - { 206, -1, 0, 3, { 0 }}, - { 207, -1, 1, 3, { 0 }}, - { 208, 0, 3, 9, { 0 }}, - { 209, 0, 0, 7, { 0 }}, - { 210, 0, 0, 7, { 0 }}, - { 211, 0, 0, 7, { 0 }}, - { 212, 0, 0, 7, { 0 }}, - { 213, 0, 0, 7, { 0 }}, - { 214, 0, 1, 7, { 0 }}, - { 215, 0, 7, 6, { 0 }}, - { 216, 0, 3, 10, { 0 }}, - { 217, 0, 0, 7, { 0 }}, - { 218, 0, 0, 7, { 0 }}, - { 219, 0, 0, 7, { 0 }}, - { 220, 0, 1, 7, { 0 }}, - { 221, 0, 0, 7, { 0 }}, - { 222, 0, 0, 0, { 0 }}, - { 223, 0, 3, 7, { 0 }}, - { 224, 0, 2, 7, { 0 }}, - { 225, 0, 2, 7, { 0 }}, - { 226, 0, 2, 7, { 0 }}, - { 227, 0, 2, 7, { 0 }}, - { 228, 0, 3, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 5, 11, { 0 }}, - { 231, 0, 5, 7, { 0 }}, - { 232, 0, 2, 7, { 0 }}, - { 233, 0, 2, 7, { 0 }}, - { 234, 0, 2, 7, { 0 }}, - { 235, 0, 3, 7, { 0 }}, - { 236, 0, 2, 4, { 0 }}, - { 237, 0, 2, 4, { 0 }}, - { 238, 0, 2, 4, { 0 }}, - { 239, 0, 3, 4, { 0 }}, - { 240, 0, 0, 0, { 0 }}, - { 241, 0, 2, 7, { 0 }}, - { 242, 0, 2, 7, { 0 }}, - { 243, 0, 2, 7, { 0 }}, - { 244, 0, 2, 7, { 0 }}, - { 245, 0, 2, 7, { 0 }}, - { 246, 0, 3, 7, { 0 }}, - { 247, 0, 0, 0, { 0 }}, - { 248, 0, 5, 9, { 0 }}, - { 249, 0, 2, 7, { 0 }}, - { 250, 0, 2, 7, { 0 }}, - { 251, 0, 2, 7, { 0 }}, - { 252, 0, 3, 7, { 0 }}, - { 253, 0, 2, 7, { 0 }}, - { 254, 0, 0, 0, { 0 }}, - { 255, 0, 3, 7, { 0 }}, -}; - -// Style loading function: Candy -static void GuiLoadStyleCandy(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < CANDY_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(candyStyleProps[i].controlId, candyStyleProps[i].propertyId, candyStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int candyFontDataSize = 0; - unsigned char *data = DecompressData(candyFontData, CANDY_STYLE_FONT_ATLAS_COMP_SIZE, &candyFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 15; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, candyFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, candyFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.png deleted file mode 100644 index cf5a770..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.rgs deleted file mode 100644 index f016522..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.txt.rgs deleted file mode 100644 index 69b6088..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/style_candy.txt.rgs +++ /dev/null @@ -1,27 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 15 charset.txt v5easter.ttf -p 00 00 0xe58b68ff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0xfeda96ff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0xe59b5fff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0xee813fff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0xfcd85bff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0xfc6955ff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0xb34848ff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0xeb7272ff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0xbd4a4aff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0x94795dff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0xc2a37aff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x9c8369ff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x0000000f TEXT_SIZE -p 00 17 0x00000000 TEXT_SPACING -p 00 18 0xd77575ff LINE_COLOR -p 00 19 0xfff5e1ff BACKGROUND_COLOR -p 00 20 0x00000016 TEXT_LINE_SPACING diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/v5easter.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/v5easter.ttf deleted file mode 100644 index 77a911a..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/candy/v5easter.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/README.md deleted file mode 100644 index 2830c03..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: cherry - -Sweet with a touch of liquour, covered in chocolate, just give it a try! Not suitable for every palate, only the most demanding. - -![cherry style table](style_cherry.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_cherry.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_cherry.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_cherry.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_cherry.h` | Embeddable style as code file, self-contained, includes font data | -| `style_cherry.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![cherry style screen](screenshot.png) - -## about font - -"Westington" font by Hazel Abbiati. - -100% free font, downloaded from dafont.com: [westington](https://www.dafont.com/westington.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/Westington.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/Westington.ttf deleted file mode 100644 index 68efae8..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/Westington.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/screenshot.old.png deleted file mode 100644 index 3c139e9..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/screenshot.png deleted file mode 100644 index 5c01e0b..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.h deleted file mode 100644 index dd8bdd7..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.h +++ /dev/null @@ -1,617 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleCherry(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define CHERRY_STYLE_PROPS_COUNT 17 - -// Custom style name: Cherry -static const GuiStyleProp cherryStyleProps[CHERRY_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0xda5757ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x753233ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xe17373ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xfaaa97ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xe06262ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xfdb4aaff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xe03c46ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x5b1e20ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xc2474fff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0xa19292ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x706060ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x9e8585ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x0000000f }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0xfb8170ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x3a1720ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000007 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "Westington.ttf" (size: 15, spacing: 0) - -#define CHERRY_STYLE_FONT_ATLAS_COMP_SIZE 2821 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char cherryFontData[CHERRY_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x59, 0x92, 0xdc, 0xba, 0x11, 0x05, 0x50, 0xee, 0x7f, 0xd3, 0xd7, 0xe1, 0x70, 0x84, 0xed, 0x27, 0xa9, 0x09, 0x20, - 0x91, 0x20, 0xab, 0x5b, 0x47, 0xe7, 0xaf, 0xa1, 0x1a, 0x38, 0x24, 0x26, 0x16, 0x12, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xf2, - 0xef, 0x7f, 0x5f, 0xfd, 0xf5, 0xcf, 0x65, 0xff, 0xff, 0xaa, 0xdc, 0xbe, 0x73, 0xfd, 0xb3, 0xb3, 0xf8, 0xae, 0x59, 0xf8, - 0x7f, 0xf9, 0xf2, 0xbb, 0x64, 0xfa, 0x33, 0xd7, 0x8f, 0x7b, 0xfd, 0x58, 0xef, 0xce, 0xfd, 0xfa, 0x31, 0x5c, 0x37, 0x9f, - 0xbf, 0xf6, 0xdd, 0x2a, 0xaf, 0xb9, 0x2f, 0x59, 0xbf, 0x7b, 0x3a, 0xae, 0xc8, 0xdc, 0x35, 0xb8, 0x3f, 0xa7, 0xd7, 0xf0, - 0x95, 0xeb, 0xef, 0x9c, 0xe1, 0x59, 0x1c, 0x7f, 0xab, 0xb5, 0x1a, 0xe0, 0xeb, 0xbf, 0x8e, 0xee, 0xa6, 0x14, 0xee, 0xab, - 0xff, 0xbd, 0x22, 0x8b, 0x65, 0xa3, 0xd7, 0xec, 0xdd, 0x57, 0x59, 0xa8, 0xa5, 0x2a, 0x57, 0x21, 0x8b, 0xe7, 0x61, 0xf5, - 0xdc, 0xa5, 0x54, 0xff, 0x8c, 0xbe, 0x6d, 0x5a, 0x8e, 0xe7, 0xae, 0x24, 0xd3, 0x7f, 0x1d, 0xbf, 0xa2, 0xf2, 0x6e, 0x33, - 0xf7, 0xd5, 0xdd, 0xab, 0xfb, 0xdf, 0x39, 0x53, 0xf7, 0xef, 0xd9, 0xf8, 0x1f, 0xd5, 0x97, 0xf7, 0xe7, 0xfb, 0xee, 0x28, - 0xf2, 0xdf, 0xde, 0x45, 0xed, 0xbe, 0xdb, 0x89, 0xf4, 0xdc, 0xdc, 0x9d, 0x29, 0x9e, 0x8d, 0xfa, 0xff, 0xbb, 0x8f, 0x97, - 0x14, 0x7b, 0x5e, 0x59, 0xb8, 0x4f, 0xb3, 0x54, 0xeb, 0xcd, 0xf4, 0x26, 0x2a, 0x35, 0xdd, 0x6e, 0x2f, 0x6a, 0xbf, 0xa7, - 0xfb, 0xf5, 0x35, 0xb8, 0x3b, 0xdf, 0x99, 0x3c, 0x82, 0x94, 0xe2, 0xff, 0x5a, 0xac, 0xb1, 0x9f, 0x8a, 0xff, 0x71, 0xac, - 0x8c, 0xe2, 0x29, 0xc3, 0x2b, 0x9c, 0x96, 0xef, 0x9f, 0x52, 0x8d, 0x76, 0x6a, 0x9c, 0x55, 0xbf, 0x7f, 0x66, 0xcf, 0x5e, - 0x06, 0xa3, 0xb9, 0xee, 0x5e, 0xe8, 0x7c, 0xaf, 0x2f, 0xc5, 0xda, 0x75, 0xa5, 0x8f, 0x9f, 0xad, 0xde, 0xfa, 0x28, 0x7e, - 0xb3, 0x5c, 0x17, 0x67, 0xa2, 0x3f, 0x74, 0xa2, 0x4f, 0xf2, 0x09, 0xf1, 0x9f, 0xc2, 0x08, 0xae, 0x5a, 0xc7, 0xa7, 0xa9, - 0x6d, 0xce, 0xa1, 0xfa, 0xb5, 0x3b, 0xfe, 0xd7, 0xcb, 0xc6, 0x91, 0x91, 0xd6, 0x71, 0x58, 0x4a, 0x23, 0xe9, 0x7a, 0x1b, - 0xbe, 0xfb, 0xda, 0xbb, 0xb9, 0xa2, 0x4c, 0xd4, 0x9e, 0x59, 0x9e, 0x01, 0xd8, 0x89, 0xff, 0xfe, 0xf1, 0x7f, 0x4a, 0xaf, - 0x98, 0xab, 0x8d, 0x6b, 0x35, 0x71, 0x16, 0xbe, 0x59, 0x9a, 0x6a, 0xb6, 0x1c, 0x9d, 0x65, 0xbd, 0x1a, 0xe3, 0xbf, 0x36, - 0x72, 0x4a, 0xdb, 0xdc, 0x44, 0x7d, 0xec, 0x96, 0xa6, 0xfb, 0x35, 0xad, 0xaf, 0xb8, 0x8f, 0xff, 0xbb, 0xf6, 0x7f, 0xbf, - 0xff, 0xff, 0x7e, 0xfb, 0xdf, 0x3d, 0xfa, 0x9f, 0x9f, 0xc5, 0x18, 0x9f, 0xd3, 0xe7, 0xe2, 0xff, 0x64, 0xdf, 0xbf, 0x36, - 0x96, 0x4f, 0x71, 0x9e, 0x32, 0x4d, 0x23, 0xf6, 0x94, 0x47, 0xe7, 0x69, 0x99, 0xd5, 0xe9, 0xab, 0xab, 0x53, 0xfe, 0x8c, - 0xfa, 0x3c, 0xf6, 0x4f, 0x1d, 0xff, 0x67, 0xe9, 0xd9, 0xc0, 0xb8, 0x6f, 0x75, 0x77, 0x66, 0xd2, 0x3e, 0xff, 0xf7, 0xde, - 0x53, 0xd6, 0xb5, 0x5a, 0x27, 0x85, 0x31, 0x76, 0x65, 0xd6, 0xbc, 0xfa, 0x34, 0xb1, 0xf3, 0xd9, 0xe4, 0xfb, 0xd7, 0xa9, - 0x3a, 0xd7, 0x98, 0x72, 0xed, 0x9e, 0x89, 0x67, 0x3f, 0xeb, 0xb3, 0x0a, 0x4f, 0xf5, 0xa6, 0x66, 0xe6, 0x62, 0xae, 0xe2, - 0xbc, 0x69, 0x0a, 0x3d, 0x9c, 0x4f, 0x8f, 0xff, 0x4f, 0xaa, 0x89, 0x3e, 0xf1, 0xf7, 0x27, 0x69, 0x1e, 0xe9, 0x77, 0x45, - 0x40, 0x26, 0x46, 0xe2, 0x57, 0xa1, 0x9e, 0xfe, 0x0e, 0xcf, 0xff, 0xc7, 0xf1, 0x5f, 0x1d, 0xff, 0x67, 0xea, 0xf7, 0x18, - 0x6b, 0xcf, 0x01, 0xf2, 0xe1, 0xad, 0xbf, 0x1a, 0xa0, 0x67, 0x4e, 0xfe, 0xe9, 0xfa, 0x39, 0x87, 0xc7, 0x85, 0x7f, 0xe3, - 0x75, 0x05, 0xf7, 0x0f, 0x20, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x5e, 0x37, - 0xb8, 0xbe, 0x16, 0xb1, 0x3b, 0x4b, 0x6b, 0xe5, 0xfd, 0x7e, 0x2f, 0x1d, 0xbd, 0x47, 0xf5, 0x68, 0x2b, 0xb9, 0xa0, 0x33, - 0xf5, 0xdd, 0xb3, 0xbc, 0xa2, 0x73, 0x74, 0x34, 0xf9, 0xc7, 0x1a, 0xd5, 0x99, 0x73, 0xba, 0x73, 0x5d, 0xc6, 0x99, 0x77, - 0x57, 0xf2, 0xfb, 0xae, 0xad, 0x06, 0x5e, 0x5d, 0x21, 0xd0, 0x99, 0xed, 0x60, 0xf6, 0xfa, 0x56, 0xee, 0xa8, 0x95, 0x4f, - 0xdb, 0x59, 0x8b, 0x78, 0x9f, 0x81, 0xf9, 0x1a, 0x66, 0x88, 0xee, 0xca, 0x51, 0x97, 0x8d, 0x35, 0xfb, 0xbf, 0xdf, 0xc9, - 0x95, 0x55, 0xdb, 0xe3, 0x7b, 0xaa, 0x92, 0x77, 0xa9, 0x9a, 0xb3, 0x39, 0x2d, 0x9f, 0x3b, 0xf3, 0xcd, 0xe6, 0x32, 0xfa, - 0xd4, 0x33, 0xb6, 0x5f, 0x8b, 0xfb, 0x30, 0xac, 0xad, 0xe5, 0xce, 0xf2, 0x5a, 0xf8, 0xb4, 0xe5, 0x8b, 0x48, 0xf1, 0x3d, - 0x6b, 0xf7, 0xda, 0x99, 0xec, 0x3f, 0xd5, 0x2c, 0x59, 0x67, 0xe2, 0x3f, 0xe5, 0xef, 0x92, 0xdb, 0x7b, 0xe2, 0x1a, 0x66, - 0x28, 0xaa, 0x66, 0x5e, 0xca, 0x46, 0xbd, 0x96, 0x8d, 0xb5, 0xee, 0x5d, 0xf1, 0xbf, 0x13, 0xe1, 0xb3, 0xf9, 0x7b, 0xd3, - 0xb2, 0xba, 0x7f, 0x25, 0x1b, 0x7a, 0xb5, 0x1f, 0xdc, 0x19, 0x21, 0x77, 0xc7, 0x9e, 0x8d, 0x33, 0x73, 0x26, 0xfe, 0xf3, - 0x01, 0xf1, 0xbf, 0x53, 0x17, 0x7d, 0xcf, 0xf8, 0x4f, 0x43, 0xed, 0x9c, 0xd2, 0x15, 0xfa, 0x3d, 0x76, 0x2b, 0x7b, 0x59, - 0x5c, 0xe5, 0x8c, 0xce, 0x69, 0x6e, 0x8f, 0x3a, 0xd6, 0x14, 0x3f, 0x19, 0xff, 0xeb, 0xf5, 0xcd, 0xa9, 0xf8, 0xbf, 0xdb, - 0xad, 0x23, 0xa5, 0xdd, 0x9e, 0xfa, 0xf6, 0xc1, 0x5a, 0xa9, 0x8b, 0x32, 0x9d, 0x5b, 0xb4, 0x12, 0xff, 0x19, 0xee, 0xa0, - 0x51, 0xd9, 0xb7, 0xa0, 0x9a, 0x0d, 0xb9, 0x23, 0xfe, 0xe7, 0xf3, 0x9b, 0x67, 0xb2, 0xee, 0xed, 0x88, 0xf3, 0x77, 0xe2, - 0x7f, 0x74, 0x05, 0x53, 0xcc, 0xd6, 0xb7, 0x9e, 0xe5, 0x7b, 0xfc, 0x69, 0xbd, 0x59, 0xd4, 0x67, 0xf6, 0x9a, 0xc9, 0x37, - 0x68, 0xff, 0xcf, 0xc7, 0x7f, 0xe5, 0x5d, 0x67, 0xe7, 0x66, 0xf2, 0x5a, 0xfc, 0x67, 0xbb, 0x85, 0x4f, 0xf3, 0xe8, 0xf2, - 0x8d, 0xbc, 0x5f, 0x33, 0xf3, 0x05, 0xb5, 0x18, 0x4f, 0xeb, 0x78, 0xa3, 0xf6, 0x69, 0x27, 0x7a, 0x98, 0xeb, 0xf1, 0x9f, - 0xa3, 0xe3, 0xff, 0x95, 0x4f, 0xa8, 0xf7, 0xff, 0xef, 0x3e, 0xbb, 0x77, 0xfe, 0xaf, 0x6b, 0xee, 0x69, 0xa6, 0xed, 0x4e, - 0x43, 0x2f, 0xe2, 0x7c, 0xcd, 0x90, 0xd7, 0x9e, 0x91, 0x55, 0x3e, 0xff, 0x44, 0x44, 0x56, 0x63, 0xab, 0x1a, 0xff, 0xbd, - 0xf3, 0xff, 0x1d, 0xf3, 0xcc, 0x73, 0x47, 0x9f, 0x42, 0xa4, 0xa6, 0x38, 0xbe, 0xca, 0xd6, 0x0c, 0x79, 0x36, 0xe2, 0x3f, - 0x0d, 0xf1, 0x7f, 0xf7, 0xfc, 0x6e, 0x37, 0xfe, 0x33, 0x78, 0xbe, 0x91, 0x6f, 0x13, 0xff, 0x29, 0xc5, 0x7f, 0x9a, 0x23, - 0x32, 0xe5, 0xd8, 0xba, 0x96, 0x9f, 0x4f, 0x9e, 0x79, 0xfe, 0x3f, 0x7e, 0xca, 0xba, 0xf3, 0x24, 0x79, 0xf6, 0x3b, 0xd5, - 0x7f, 0xed, 0x30, 0x3a, 0x4b, 0x59, 0x8e, 0xb0, 0x94, 0x72, 0xf3, 0xcf, 0x8f, 0xf9, 0xb2, 0xd9, 0x4a, 0x8d, 0x6b, 0x88, - 0x6a, 0x4e, 0xea, 0xd5, 0x7d, 0xd5, 0xf3, 0xfa, 0xbe, 0x36, 0xcf, 0xbc, 0x72, 0x67, 0xaf, 0x06, 0x39, 0x89, 0xf9, 0x19, - 0xbf, 0x49, 0x73, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xd6, 0x60, - 0xa6, 0x94, 0xd5, 0x6b, 0xf6, 0x7f, 0x55, 0x73, 0x90, 0xe5, 0x36, 0xcb, 0xf4, 0xda, 0x5a, 0xdf, 0x0c, 0x8f, 0xb1, 0x63, - 0xa5, 0xf4, 0xd9, 0x2c, 0xdc, 0xf3, 0xe7, 0xb6, 0x76, 0xf5, 0xb3, 0x98, 0xcf, 0x32, 0xed, 0x2b, 0xd3, 0xc7, 0xeb, 0xad, - 0xef, 0xd7, 0xd0, 0xd7, 0x5f, 0x77, 0x15, 0x56, 0x38, 0xaf, 0x5e, 0xad, 0x99, 0x5c, 0xf1, 0x6f, 0xd4, 0x15, 0xd7, 0x44, - 0x86, 0xbb, 0x9d, 0x1c, 0xfa, 0x77, 0xe7, 0xfe, 0xeb, 0xfb, 0xf5, 0xee, 0x7b, 0xf5, 0xe5, 0x2d, 0xbc, 0xb6, 0x33, 0xe8, - 0x5e, 0x8f, 0x64, 0xe1, 0xce, 0xe2, 0x7d, 0x38, 0xfb, 0x3f, 0x47, 0x59, 0x04, 0x53, 0xc8, 0xf4, 0x71, 0xee, 0x78, 0x67, - 0xf2, 0x3f, 0x8d, 0xf2, 0x3c, 0xfe, 0xf9, 0xef, 0x2b, 0xf7, 0x53, 0x2d, 0x67, 0x72, 0x06, 0xb9, 0x24, 0x7b, 0xd7, 0x5a, - 0xe7, 0xf6, 0x5e, 0x5d, 0xef, 0x47, 0x9c, 0xb9, 0xa2, 0xf5, 0xf8, 0x5f, 0x6f, 0x77, 0x4e, 0xc5, 0xff, 0x7e, 0x16, 0xde, - 0x9d, 0x1c, 0x3d, 0xfb, 0x7f, 0xbf, 0x6f, 0xfd, 0xaf, 0xe5, 0xde, 0xd9, 0xb5, 0x95, 0xeb, 0x76, 0x9c, 0x09, 0x67, 0x9c, - 0x61, 0x6a, 0xf5, 0x38, 0xae, 0xc5, 0xfc, 0xce, 0x9f, 0x13, 0xff, 0x57, 0x29, 0xfe, 0xaf, 0x0f, 0x8a, 0xff, 0xbb, 0x76, - 0xe7, 0x2a, 0xee, 0x27, 0x72, 0xd7, 0x33, 0xbb, 0x1a, 0xdb, 0x9c, 0xdf, 0x6b, 0xd5, 0x94, 0xfa, 0xc3, 0x29, 0x67, 0x4f, - 0x7c, 0x2b, 0x07, 0xd7, 0x78, 0x77, 0x93, 0x71, 0xdf, 0xbf, 0x56, 0x53, 0xd6, 0x32, 0x31, 0xdd, 0x8f, 0x28, 0xb2, 0xb4, - 0x3b, 0x41, 0x3d, 0x2f, 0x58, 0x0e, 0x64, 0x47, 0x59, 0xad, 0xe9, 0x53, 0xe8, 0xff, 0x5f, 0x5b, 0xfb, 0x48, 0x54, 0xf3, - 0x1e, 0xd7, 0x72, 0xac, 0xa7, 0xd0, 0xee, 0xcc, 0xc4, 0xdf, 0x5e, 0x16, 0xde, 0x4c, 0x8e, 0xb2, 0xae, 0xc5, 0x3a, 0xf2, - 0x6a, 0xab, 0x31, 0xd6, 0x7a, 0x98, 0xd9, 0x1a, 0x6d, 0xcd, 0xd4, 0x0d, 0x59, 0xdc, 0xab, 0xa1, 0xde, 0x5e, 0x54, 0xf2, - 0xc9, 0xd5, 0x6b, 0x80, 0xbc, 0x36, 0xff, 0x77, 0x15, 0x32, 0xd5, 0xaf, 0xe5, 0xe6, 0xab, 0xcc, 0xbd, 0x55, 0x8e, 0xaf, - 0x96, 0x73, 0x6f, 0x26, 0x6b, 0x7b, 0x4f, 0xfe, 0xe2, 0xd5, 0xf3, 0x73, 0x4d, 0xcd, 0x6a, 0xe5, 0xa5, 0xf6, 0x7f, 0x3d, - 0x02, 0xe6, 0x76, 0xa5, 0xdc, 0xe9, 0xd5, 0x54, 0x33, 0x76, 0xf7, 0xf7, 0x7e, 0xde, 0x9f, 0xff, 0x5f, 0xcb, 0xe0, 0xfd, - 0x59, 0xd9, 0x59, 0xd3, 0xf0, 0x3f, 0xfa, 0x3e, 0xeb, 0xed, 0x67, 0x38, 0x39, 0x5a, 0xfb, 0xf7, 0xc6, 0x7f, 0x8a, 0xe3, - 0xc9, 0xd9, 0x7a, 0x38, 0x4b, 0x39, 0x87, 0xc7, 0xf3, 0x5b, 0xe7, 0xc6, 0x3f, 0x9f, 0x78, 0x3f, 0xed, 0xe4, 0xb2, 0x7f, - 0xf6, 0x7b, 0xe6, 0xb1, 0x1e, 0xd3, 0x89, 0xd9, 0x97, 0xe7, 0xce, 0xc4, 0xda, 0x31, 0xa5, 0xf1, 0x8e, 0xad, 0xcd, 0xff, - 0x65, 0x63, 0x8e, 0x6f, 0x77, 0xbf, 0xde, 0x14, 0x66, 0x15, 0xff, 0x86, 0x5f, 0x0a, 0x7c, 0x3d, 0x03, 0x91, 0xbf, 0x22, - 0xf7, 0xf0, 0x4f, 0x3c, 0xc6, 0x8e, 0xe7, 0xff, 0xd5, 0x7e, 0x53, 0x6d, 0xe7, 0x80, 0xb9, 0x79, 0x9f, 0xca, 0xfc, 0x6e, - 0x75, 0xcc, 0x08, 0x54, 0x9e, 0x31, 0x57, 0x76, 0x0e, 0xe8, 0x18, 0xc1, 0x65, 0xf9, 0xf9, 0x3f, 0xf0, 0x53, 0x6a, 0xa2, - 0xda, 0xbc, 0x22, 0xf0, 0xfd, 0x47, 0x3b, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0x9e, 0xbf, 0x88, 0x5e, 0x5f, 0xeb, 0xba, 0x9e, 0xeb, 0xb0, 0x9e, 0x71, 0x65, 0x76, 0x7d, 0xea, 0x55, 0xca, 0x1a, 0xb9, - 0x97, 0x9b, 0x66, 0x2e, 0x5b, 0x73, 0x3d, 0x5b, 0x5d, 0x35, 0x43, 0xd6, 0x5e, 0xe9, 0xf8, 0x95, 0xf5, 0x57, 0x5f, 0xd3, - 0xe7, 0x2d, 0xaf, 0x1c, 0x77, 0x16, 0x73, 0x18, 0xac, 0xdc, 0x53, 0xfd, 0xc7, 0xba, 0x77, 0x2e, 0xae, 0x62, 0x46, 0x9f, - 0x4a, 0xb6, 0xe3, 0x4a, 0xbc, 0xde, 0xe5, 0x3b, 0xcd, 0xe2, 0x67, 0x65, 0x39, 0xa7, 0xf3, 0xa8, 0x16, 0xc9, 0x60, 0xc5, - 0x68, 0x26, 0xd6, 0x9c, 0xee, 0xe5, 0x1b, 0xa8, 0x96, 0x8d, 0xaf, 0x7a, 0x3d, 0xcf, 0x49, 0x16, 0xeb, 0x8f, 0xb5, 0x1c, - 0x7d, 0x27, 0x8f, 0x7b, 0x7d, 0x0d, 0x73, 0x96, 0x73, 0x64, 0x5d, 0x8b, 0xad, 0x4d, 0x26, 0xda, 0x87, 0xea, 0xb9, 0x98, - 0x6d, 0x01, 0x57, 0xdb, 0xcd, 0xd5, 0x9a, 0xa4, 0x1a, 0xff, 0xd5, 0xcf, 0x3a, 0x13, 0xff, 0x77, 0xc7, 0x96, 0xdb, 0x9c, - 0x13, 0xd9, 0xcc, 0x6f, 0xf8, 0x6c, 0xaf, 0xb0, 0xa7, 0xfd, 0x4d, 0x71, 0x8d, 0xfe, 0xf9, 0x75, 0x81, 0xa7, 0x56, 0x07, - 0xd6, 0x73, 0x47, 0xbf, 0x71, 0x0f, 0xa4, 0x2d, 0x6b, 0xe4, 0x5c, 0x3e, 0xd6, 0xf5, 0xf8, 0x5f, 0x1d, 0x2f, 0xac, 0xe6, - 0x33, 0xcc, 0x44, 0xeb, 0x34, 0xdb, 0xfe, 0x67, 0xeb, 0xea, 0x3f, 0xdf, 0xff, 0xbf, 0x36, 0xda, 0xd0, 0xb9, 0xd1, 0xc1, - 0x6c, 0x1e, 0x8e, 0xd5, 0xbb, 0xa9, 0x5e, 0x3a, 0xce, 0x0d, 0xbc, 0xf7, 0xd7, 0xf1, 0xfd, 0x77, 0xf7, 0x4e, 0x95, 0x91, - 0x52, 0xb6, 0x33, 0x36, 0x65, 0xf9, 0x6c, 0xdc, 0x1f, 0xf5, 0x7a, 0xce, 0xe5, 0xd5, 0xf8, 0x1f, 0xd5, 0x26, 0x6b, 0x23, - 0xb8, 0x71, 0xfb, 0x3f, 0x93, 0x6b, 0x72, 0x6f, 0xb7, 0x8a, 0x1c, 0x89, 0xc3, 0x7a, 0xe9, 0xce, 0x4e, 0x27, 0x7f, 0xaa, - 0x13, 0x53, 0xae, 0x99, 0x72, 0xac, 0xf4, 0xc4, 0xf8, 0x7f, 0x9c, 0x71, 0x24, 0x85, 0x7c, 0x25, 0x3b, 0xa3, 0xa8, 0xdd, - 0xf6, 0xa5, 0xe3, 0xdd, 0xb2, 0xb5, 0x97, 0xc3, 0xb9, 0x6f, 0xdd, 0x31, 0xfe, 0x3f, 0x3b, 0xff, 0xb7, 0xbf, 0xe3, 0x58, - 0xcf, 0x6e, 0x45, 0xab, 0xb5, 0xd9, 0xaf, 0xe7, 0x22, 0x1f, 0xd2, 0xab, 0xa9, 0xd5, 0x0e, 0xfb, 0x7f, 0x1d, 0xcf, 0x59, - 0xe7, 0xa5, 0xf8, 0xef, 0x1d, 0x09, 0xe5, 0xc0, 0xfc, 0xe4, 0xf3, 0xd1, 0xbf, 0x32, 0xfe, 0xef, 0x98, 0x31, 0xab, 0xee, - 0x38, 0x72, 0xb6, 0xb4, 0xb2, 0xe3, 0xea, 0xfc, 0x3d, 0xf9, 0x44, 0x0b, 0xdf, 0xb5, 0x4f, 0xc2, 0x4f, 0x8d, 0xff, 0x37, - 0xf7, 0x18, 0xd9, 0x89, 0xff, 0xf3, 0x59, 0x9a, 0xf3, 0x87, 0x79, 0xbd, 0xdd, 0x4f, 0x1c, 0xed, 0x11, 0x9b, 0xf6, 0x38, - 0xdc, 0x8f, 0xe1, 0x9d, 0xd2, 0xb9, 0x7d, 0x78, 0x6a, 0x51, 0xba, 0x53, 0xfa, 0x56, 0xfb, 0x3f, 0x33, 0x0b, 0xf5, 0x74, - 0xfc, 0x77, 0xce, 0x86, 0xe6, 0x50, 0xeb, 0xb8, 0x3e, 0x9a, 0xe8, 0x9f, 0x1b, 0xed, 0xf8, 0xc4, 0x6a, 0xcb, 0xf0, 0x4e, - 0xff, 0xbf, 0xfe, 0xfb, 0x8b, 0x7f, 0xce, 0x66, 0xa5, 0x38, 0xab, 0xf5, 0x93, 0xc6, 0xff, 0xd7, 0xd4, 0xae, 0x51, 0x79, - 0x69, 0xfc, 0xff, 0x19, 0xaf, 0xff, 0x7b, 0x7f, 0x81, 0x75, 0x1d, 0x6e, 0x87, 0x9f, 0x2e, 0x3d, 0xdf, 0x63, 0xdc, 0x2b, - 0xcd, 0x2b, 0xed, 0xff, 0xdc, 0x48, 0xf4, 0xbd, 0xf8, 0xef, 0xea, 0x2f, 0xab, 0x09, 0x3a, 0xe7, 0x59, 0xde, 0x6d, 0xc3, - 0x6b, 0xbb, 0x38, 0xee, 0xfd, 0xda, 0x66, 0x76, 0x74, 0x50, 0x2b, 0xcd, 0xe1, 0xf1, 0xff, 0xee, 0x55, 0xae, 0x1c, 0xcf, - 0xa7, 0xc4, 0xbf, 0xbc, 0xea, 0xa7, 0xea, 0x8c, 0x4a, 0x1c, 0x3e, 0x15, 0xc3, 0xcf, 0xdf, 0x4d, 0x7b, 0xcf, 0xff, 0xd7, - 0xeb, 0xe8, 0xb5, 0xe7, 0xff, 0x3b, 0x2d, 0xc3, 0xd3, 0xcf, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xef, 0xb7, 0xfe, 0x6c, 0x9c, 0x99, 0xa6, 0x9e, 0xd5, 0x7b, 0x37, 0x2b, 0xc0, 0xde, 0x11, 0xa5, 0xb4, 0xf6, - 0x6c, 0x36, 0xb7, 0x75, 0xf7, 0xfa, 0xb4, 0x7a, 0x7e, 0xf0, 0x6c, 0xac, 0x3a, 0xac, 0xff, 0xba, 0xfc, 0xd4, 0x71, 0x9e, - 0xca, 0xc2, 0x55, 0xb9, 0x1f, 0x9e, 0xbb, 0x96, 0x69, 0xbf, 0xc2, 0xb3, 0xef, 0x51, 0xcd, 0x05, 0x9d, 0xa5, 0x1c, 0x10, - 0xab, 0x71, 0x96, 0xcd, 0x0c, 0xf5, 0xf5, 0xb5, 0x67, 0xb3, 0xb5, 0x4e, 0x6f, 0xe6, 0xea, 0x6c, 0xe4, 0x87, 0xae, 0x9f, - 0xa3, 0x9d, 0xd5, 0xa5, 0xdd, 0xc7, 0xb9, 0x7e, 0xc5, 0x3a, 0x72, 0x73, 0x67, 0xe3, 0xcc, 0x67, 0xf9, 0xcc, 0x64, 0x50, - 0x3b, 0xe5, 0x91, 0x75, 0xa5, 0xbd, 0x99, 0x0b, 0x56, 0x57, 0x34, 0x3e, 0xb7, 0xd6, 0xb6, 0xbe, 0x0a, 0x6c, 0x37, 0xbf, - 0xd5, 0x73, 0xfd, 0xb7, 0x6a, 0x5f, 0xe4, 0xd7, 0xa3, 0xcc, 0x07, 0xe4, 0x74, 0x38, 0xbb, 0x9a, 0xed, 0xcc, 0x5e, 0x23, - 0xe7, 0xbf, 0xe1, 0xde, 0xde, 0x21, 0x3b, 0x6b, 0x08, 0x53, 0xec, 0x51, 0x8d, 0x32, 0x1a, 0xdc, 0xc7, 0xe7, 0x6e, 0xf9, - 0x5c, 0x0e, 0xb8, 0x6b, 0x22, 0x33, 0x6d, 0x0a, 0xd9, 0x2f, 0x32, 0x58, 0xd7, 0xde, 0x5d, 0x56, 0xbb, 0x47, 0x67, 0xf2, - 0x96, 0xe7, 0xc0, 0x1d, 0x75, 0xbd, 0x98, 0x9b, 0xeb, 0x5a, 0x6e, 0x93, 0x53, 0x6c, 0x7b, 0x3b, 0x4b, 0x3a, 0xea, 0xe7, - 0x6a, 0x2f, 0x6f, 0xa6, 0x6c, 0x3d, 0xa3, 0xe1, 0x4c, 0xcf, 0xf2, 0x99, 0xf2, 0xf5, 0x5c, 0xe6, 0xb3, 0xd9, 0x6f, 0xf2, - 0x58, 0x59, 0xca, 0x77, 0xdb, 0x35, 0x91, 0x87, 0xff, 0xd4, 0x5d, 0xf3, 0x7c, 0x36, 0x8b, 0x4a, 0x0d, 0x5a, 0xcb, 0x91, - 0xf8, 0x5c, 0xc9, 0x6c, 0xae, 0x83, 0x13, 0x57, 0xeb, 0x2a, 0xde, 0x39, 0x9f, 0x11, 0xff, 0xb9, 0xbd, 0xe6, 0xd7, 0x56, - 0xdd, 0xd6, 0xdd, 0x2e, 0xce, 0xb4, 0x99, 0xf5, 0x7a, 0xa3, 0xfa, 0xb9, 0xb5, 0xac, 0x34, 0x73, 0xd9, 0x79, 0xae, 0xe9, - 0x91, 0x7e, 0x65, 0x8f, 0xca, 0x95, 0x4f, 0xad, 0xb4, 0x03, 0x4f, 0x95, 0x54, 0x46, 0x30, 0x4f, 0xc5, 0xff, 0x67, 0xb4, - 0xef, 0xb5, 0xdd, 0x0d, 0xc7, 0xe3, 0xff, 0x94, 0x7b, 0x45, 0xfd, 0x65, 0x29, 0xcf, 0xde, 0x74, 0xcc, 0x0b, 0xa5, 0xb5, - 0xec, 0x6a, 0x9a, 0x9f, 0xaf, 0xec, 0x66, 0xf7, 0xb9, 0xf1, 0x5f, 0xdd, 0x3b, 0xe6, 0xad, 0xf8, 0xcf, 0xc7, 0xb7, 0xff, - 0xeb, 0xbb, 0x9b, 0xfe, 0xf9, 0x19, 0x55, 0x4a, 0x3d, 0x8b, 0xce, 0xb2, 0xab, 0xb8, 0xef, 0xda, 0x6e, 0xaf, 0xf9, 0xc4, - 0xf8, 0x66, 0x36, 0x27, 0xf0, 0x93, 0xf1, 0x5f, 0xb9, 0x2a, 0xbd, 0x25, 0xbb, 0x33, 0x43, 0x6f, 0xb4, 0xff, 0xf3, 0xcf, - 0x0d, 0xde, 0x8a, 0xff, 0xea, 0xf3, 0xff, 0x99, 0xbd, 0x3c, 0x4f, 0xb4, 0x8c, 0x95, 0x96, 0xfc, 0xec, 0x3e, 0x09, 0x27, - 0xc6, 0x39, 0xa7, 0xdb, 0xff, 0xca, 0x78, 0xe4, 0x1a, 0xee, 0xfc, 0x7e, 0xba, 0xe4, 0xda, 0x9e, 0xf9, 0xfd, 0xb4, 0x19, - 0x99, 0xa7, 0xc6, 0xf7, 0x9f, 0xb5, 0xdf, 0xea, 0xf5, 0xda, 0xf3, 0xb4, 0x9f, 0x70, 0xac, 0x1d, 0x33, 0x00, 0xcf, 0x3f, - 0x73, 0xfc, 0xb4, 0x73, 0x57, 0xdd, 0x89, 0xe5, 0xb9, 0xef, 0xd3, 0x51, 0x3e, 0xf3, 0xbd, 0xe5, 0x4c, 0xe5, 0x6f, 0xfa, - 0xf5, 0xef, 0x67, 0xe5, 0x10, 0x1e, 0xff, 0x86, 0x76, 0xaf, 0xfc, 0xb9, 0xdf, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xa9, 0xdf, 0xde, 0xd7, 0xd7, 0xbd, 0x57, 0xd7, 0x7c, 0xf7, 0x67, 0xe2, 0x8e, 0x35, - 0x3c, 0xd0, 0xb6, 0x16, 0x34, 0x93, 0xb9, 0xe0, 0xba, 0x63, 0x31, 0x5b, 0x99, 0x4d, 0x80, 0xf9, 0x36, 0xff, 0x8d, 0x75, - 0x7e, 0xd5, 0xcf, 0xcd, 0x30, 0xf3, 0x82, 0x55, 0x7c, 0x30, 0x1f, 0xff, 0x19, 0xe6, 0x32, 0xea, 0x2e, 0xbd, 0x26, 0xb2, - 0x0b, 0x5c, 0x85, 0xfc, 0x55, 0xd1, 0x47, 0x80, 0xa5, 0xf8, 0x9f, 0xc9, 0xc8, 0xfd, 0x49, 0xa5, 0x29, 0xef, 0x3e, 0x06, - 0xfc, 0x79, 0x94, 0xfd, 0xbd, 0xe2, 0x7f, 0x27, 0x7f, 0x3d, 0xf0, 0x7e, 0xfc, 0xa7, 0x58, 0x5a, 0xcf, 0x15, 0x0b, 0xfc, - 0xda, 0xfb, 0x9f, 0x99, 0xfd, 0x4f, 0x7b, 0xe9, 0xd5, 0xb0, 0xc7, 0x44, 0xf5, 0xa9, 0x24, 0xd0, 0xf1, 0x7c, 0x70, 0xa7, - 0xb4, 0xfe, 0x9b, 0x84, 0x99, 0xe7, 0x19, 0xae, 0x1c, 0x7c, 0xff, 0xe7, 0x92, 0xb5, 0xfa, 0xca, 0x19, 0x84, 0xef, 0xdf, - 0xef, 0x70, 0x1e, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x79, 0xff, 0xf9, 0xe7, 0x3c, 0x80, 0xf8, 0x07, 0xfe, 0xba, 0xf8, 0xff, 0x17 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle cherryFontRecs[189] = { - { 4, 4, 5 , 15 }, - { 17, 4, 3 , 10 }, - { 28, 4, 5 , 2 }, - { 41, 4, 10 , 10 }, - { 59, 4, 7 , 11 }, - { 74, 4, 7 , 10 }, - { 89, 4, 8 , 10 }, - { 105, 4, 1 , 2 }, - { 114, 4, 3 , 10 }, - { 125, 4, 3 , 10 }, - { 136, 4, 3 , 3 }, - { 147, 4, 7 , 7 }, - { 162, 4, 2 , 2 }, - { 172, 4, 6 , 3 }, - { 186, 4, 1 , 1 }, - { 195, 4, 4 , 10 }, - { 207, 4, 5 , 8 }, - { 220, 4, 5 , 8 }, - { 233, 4, 5 , 8 }, - { 246, 4, 5 , 8 }, - { 259, 4, 5 , 8 }, - { 272, 4, 5 , 8 }, - { 285, 4, 5 , 8 }, - { 298, 4, 5 , 8 }, - { 311, 4, 5 , 8 }, - { 324, 4, 5 , 8 }, - { 337, 4, 3 , 10 }, - { 348, 4, 3 , 12 }, - { 359, 4, 6 , 7 }, - { 373, 4, 6 , 4 }, - { 387, 4, 6 , 7 }, - { 401, 4, 5 , 10 }, - { 414, 4, 8 , 10 }, - { 430, 4, 7 , 9 }, - { 445, 4, 7 , 9 }, - { 460, 4, 6 , 9 }, - { 474, 4, 6 , 9 }, - { 488, 4, 7 , 9 }, - { 4, 27, 6 , 9 }, - { 18, 27, 6 , 9 }, - { 32, 27, 7 , 9 }, - { 47, 27, 3 , 9 }, - { 58, 27, 6 , 9 }, - { 72, 27, 7 , 9 }, - { 87, 27, 7 , 9 }, - { 102, 27, 11 , 9 }, - { 121, 27, 8 , 9 }, - { 137, 27, 6 , 9 }, - { 151, 27, 6 , 9 }, - { 165, 27, 7 , 9 }, - { 180, 27, 7 , 9 }, - { 195, 27, 6 , 9 }, - { 209, 27, 7 , 9 }, - { 224, 27, 8 , 9 }, - { 240, 27, 9 , 9 }, - { 257, 27, 11 , 9 }, - { 276, 27, 7 , 9 }, - { 291, 27, 7 , 9 }, - { 306, 27, 7 , 9 }, - { 321, 27, 3 , 9 }, - { 332, 27, 4 , 10 }, - { 344, 27, 3 , 9 }, - { 355, 27, 3 , 3 }, - { 366, 27, 7 , 2 }, - { 381, 27, 2 , 2 }, - { 391, 27, 6 , 6 }, - { 405, 27, 6 , 9 }, - { 419, 27, 6 , 6 }, - { 433, 27, 6 , 9 }, - { 447, 27, 6 , 6 }, - { 461, 27, 5 , 9 }, - { 474, 27, 5 , 9 }, - { 487, 27, 7 , 9 }, - { 4, 50, 3 , 7 }, - { 15, 50, 3 , 8 }, - { 26, 50, 6 , 9 }, - { 40, 50, 4 , 9 }, - { 52, 50, 11 , 6 }, - { 71, 50, 7 , 6 }, - { 86, 50, 5 , 6 }, - { 99, 50, 6 , 8 }, - { 113, 50, 6 , 8 }, - { 127, 50, 5 , 6 }, - { 140, 50, 5 , 6 }, - { 153, 50, 5 , 9 }, - { 166, 50, 7 , 6 }, - { 181, 50, 7 , 6 }, - { 196, 50, 11 , 6 }, - { 215, 50, 7 , 6 }, - { 230, 50, 7 , 8 }, - { 245, 50, 6 , 6 }, - { 259, 50, 5 , 9 }, - { 272, 50, 1 , 9 }, - { 281, 50, 5 , 9 }, - { 294, 50, 7 , 3 }, - { 309, 50, 3 , 10 }, - { 320, 50, 7 , 10 }, - { 335, 50, 7 , 10 }, - { 350, 50, 6 , 9 }, - { 364, 50, 7 , 9 }, - { 379, 50, 6 , 12 }, - { 393, 50, 7 , 11 }, - { 408, 50, 5 , 9 }, - { 421, 50, 5 , 5 }, - { 434, 50, 4 , 5 }, - { 446, 50, 6 , 7 }, - { 460, 50, 6 , 3 }, - { 474, 50, 5 , 5 }, - { 487, 50, 6 , 1 }, - { 4, 73, 3 , 3 }, - { 15, 73, 7 , 10 }, - { 30, 73, 3 , 5 }, - { 41, 73, 3 , 5 }, - { 52, 73, 7 , 12 }, - { 67, 73, 6 , 8 }, - { 81, 73, 7 , 9 }, - { 96, 73, 2 , 3 }, - { 106, 73, 6 , 9 }, - { 120, 73, 3 , 5 }, - { 131, 73, 3 , 5 }, - { 142, 73, 6 , 7 }, - { 156, 73, 13 , 9 }, - { 177, 73, 10 , 6 }, - { 195, 73, 7 , 11 }, - { 210, 73, 5 , 10 }, - { 223, 73, 7 , 12 }, - { 238, 73, 7 , 12 }, - { 253, 73, 7 , 12 }, - { 268, 73, 7 , 12 }, - { 283, 73, 7 , 11 }, - { 298, 73, 7 , 11 }, - { 313, 73, 12 , 9 }, - { 333, 73, 6 , 11 }, - { 347, 73, 7 , 12 }, - { 362, 73, 7 , 12 }, - { 377, 73, 7 , 12 }, - { 392, 73, 7 , 11 }, - { 407, 73, 3 , 12 }, - { 418, 73, 3 , 12 }, - { 429, 73, 3 , 12 }, - { 440, 73, 3 , 11 }, - { 451, 73, 7 , 9 }, - { 466, 73, 8 , 12 }, - { 482, 73, 6 , 12 }, - { 496, 73, 6 , 12 }, - { 4, 96, 6 , 12 }, - { 18, 96, 6 , 12 }, - { 32, 96, 6 , 11 }, - { 46, 96, 5 , 5 }, - { 59, 96, 8 , 9 }, - { 75, 96, 8 , 12 }, - { 91, 96, 8 , 12 }, - { 107, 96, 8 , 12 }, - { 123, 96, 8 , 11 }, - { 139, 96, 7 , 12 }, - { 154, 96, 7 , 9 }, - { 169, 96, 8 , 9 }, - { 185, 96, 6 , 9 }, - { 199, 96, 6 , 9 }, - { 213, 96, 6 , 9 }, - { 227, 96, 6 , 9 }, - { 241, 96, 6 , 8 }, - { 255, 96, 6 , 10 }, - { 269, 96, 10 , 6 }, - { 287, 96, 6 , 8 }, - { 301, 96, 6 , 9 }, - { 315, 96, 6 , 9 }, - { 329, 96, 6 , 9 }, - { 343, 96, 6 , 8 }, - { 357, 96, 3 , 10 }, - { 368, 96, 3 , 10 }, - { 379, 96, 3 , 10 }, - { 390, 96, 3 , 9 }, - { 401, 96, 6 , 10 }, - { 415, 96, 7 , 9 }, - { 430, 96, 5 , 9 }, - { 443, 96, 5 , 9 }, - { 456, 96, 5 , 9 }, - { 469, 96, 5 , 9 }, - { 482, 96, 5 , 8 }, - { 495, 96, 7 , 9 }, - { 4, 119, 8 , 8 }, - { 20, 119, 7 , 9 }, - { 35, 119, 7 , 9 }, - { 50, 119, 7 , 9 }, - { 65, 119, 7 , 8 }, - { 80, 119, 7 , 11 }, - { 95, 119, 5 , 8 }, - { 108, 119, 7 , 10 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo cherryFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 2, 4, { 0 }}, - { 34, 0, 2, 6, { 0 }}, - { 35, 0, 2, 11, { 0 }}, - { 36, 0, 2, 8, { 0 }}, - { 37, 0, 2, 8, { 0 }}, - { 38, 0, 2, 9, { 0 }}, - { 39, 0, 2, 2, { 0 }}, - { 40, 0, 2, 4, { 0 }}, - { 41, 0, 2, 4, { 0 }}, - { 42, 0, 2, 4, { 0 }}, - { 43, 0, 4, 8, { 0 }}, - { 44, 0, 11, 3, { 0 }}, - { 45, 0, 6, 7, { 0 }}, - { 46, 0, 11, 2, { 0 }}, - { 47, 0, 2, 5, { 0 }}, - { 48, 0, 4, 6, { 0 }}, - { 49, 0, 4, 6, { 0 }}, - { 50, 0, 4, 6, { 0 }}, - { 51, 0, 4, 6, { 0 }}, - { 52, 0, 4, 6, { 0 }}, - { 53, 0, 4, 6, { 0 }}, - { 54, 0, 4, 6, { 0 }}, - { 55, 0, 4, 6, { 0 }}, - { 56, 0, 4, 6, { 0 }}, - { 57, 0, 4, 6, { 0 }}, - { 58, 0, 2, 4, { 0 }}, - { 59, 0, 2, 4, { 0 }}, - { 60, 0, 4, 7, { 0 }}, - { 61, 0, 5, 7, { 0 }}, - { 62, 0, 4, 7, { 0 }}, - { 63, 0, 2, 6, { 0 }}, - { 64, 0, 2, 9, { 0 }}, - { 65, 0, 3, 8, { 0 }}, - { 66, 0, 3, 8, { 0 }}, - { 67, 0, 3, 7, { 0 }}, - { 68, 0, 3, 7, { 0 }}, - { 69, 0, 3, 8, { 0 }}, - { 70, 0, 3, 7, { 0 }}, - { 71, 0, 3, 7, { 0 }}, - { 72, 0, 3, 8, { 0 }}, - { 73, 0, 3, 4, { 0 }}, - { 74, 0, 3, 7, { 0 }}, - { 75, 0, 3, 8, { 0 }}, - { 76, 0, 3, 8, { 0 }}, - { 77, 0, 3, 12, { 0 }}, - { 78, 0, 3, 9, { 0 }}, - { 79, 0, 3, 7, { 0 }}, - { 80, 0, 3, 7, { 0 }}, - { 81, 0, 3, 8, { 0 }}, - { 82, 0, 3, 8, { 0 }}, - { 83, 0, 3, 7, { 0 }}, - { 84, 0, 3, 8, { 0 }}, - { 85, 0, 3, 9, { 0 }}, - { 86, 0, 3, 10, { 0 }}, - { 87, 0, 3, 12, { 0 }}, - { 88, 0, 3, 8, { 0 }}, - { 89, 0, 3, 8, { 0 }}, - { 90, 0, 3, 8, { 0 }}, - { 91, 0, 3, 4, { 0 }}, - { 92, 0, 2, 5, { 0 }}, - { 93, 0, 3, 4, { 0 }}, - { 94, 0, 3, 4, { 0 }}, - { 95, 0, 10, 8, { 0 }}, - { 96, 0, 2, 3, { 0 }}, - { 97, 0, 6, 7, { 0 }}, - { 98, 0, 3, 7, { 0 }}, - { 99, 0, 6, 7, { 0 }}, - { 100, 0, 3, 7, { 0 }}, - { 101, 0, 6, 7, { 0 }}, - { 102, 0, 3, 6, { 0 }}, - { 103, 0, 5, 6, { 0 }}, - { 104, 0, 3, 8, { 0 }}, - { 105, 0, 5, 4, { 0 }}, - { 106, 0, 5, 4, { 0 }}, - { 107, 0, 3, 7, { 0 }}, - { 108, 0, 3, 5, { 0 }}, - { 109, 0, 6, 12, { 0 }}, - { 110, 0, 6, 8, { 0 }}, - { 111, 0, 6, 6, { 0 }}, - { 112, 0, 6, 7, { 0 }}, - { 113, 0, 6, 7, { 0 }}, - { 114, 0, 6, 6, { 0 }}, - { 115, 0, 6, 6, { 0 }}, - { 116, 0, 3, 6, { 0 }}, - { 117, 0, 6, 8, { 0 }}, - { 118, 0, 6, 8, { 0 }}, - { 119, 0, 6, 12, { 0 }}, - { 120, 0, 6, 8, { 0 }}, - { 121, 0, 6, 8, { 0 }}, - { 122, 0, 6, 7, { 0 }}, - { 123, 0, 3, 6, { 0 }}, - { 124, 0, 3, 2, { 0 }}, - { 125, 0, 3, 6, { 0 }}, - { 126, 0, 6, 8, { 0 }}, - { 161, 0, 4, 4, { 0 }}, - { 162, 0, 4, 8, { 0 }}, - { 163, 0, 2, 8, { 0 }}, - { 8364, 0, 3, 7, { 0 }}, - { 165, 0, 3, 8, { 0 }}, - { 352, 0, 0, 7, { 0 }}, - { 167, 0, 2, 8, { 0 }}, - { 353, 0, 3, 6, { 0 }}, - { 169, 0, 1, 6, { 0 }}, - { 170, 0, 2, 5, { 0 }}, - { 171, 0, 5, 7, { 0 }}, - { 172, 0, 6, 7, { 0 }}, - { 174, 0, 1, 6, { 0 }}, - { 175, 0, 2, 7, { 0 }}, - { 176, 0, 2, 4, { 0 }}, - { 177, 0, 3, 8, { 0 }}, - { 178, 0, 2, 4, { 0 }}, - { 179, 0, 2, 4, { 0 }}, - { 381, 0, 0, 8, { 0 }}, - { 181, 0, 6, 7, { 0 }}, - { 182, 0, 3, 8, { 0 }}, - { 183, 0, 6, 3, { 0 }}, - { 382, 0, 3, 7, { 0 }}, - { 185, 0, 2, 4, { 0 }}, - { 186, 0, 2, 4, { 0 }}, - { 187, 0, 5, 7, { 0 }}, - { 338, 0, 3, 14, { 0 }}, - { 339, 0, 6, 11, { 0 }}, - { 376, 0, 1, 8, { 0 }}, - { 191, 0, 4, 6, { 0 }}, - { 192, 0, 0, 8, { 0 }}, - { 193, 0, 0, 8, { 0 }}, - { 194, 0, 0, 8, { 0 }}, - { 195, 0, 0, 8, { 0 }}, - { 196, 0, 1, 8, { 0 }}, - { 197, 0, 1, 8, { 0 }}, - { 198, 0, 3, 13, { 0 }}, - { 199, 0, 3, 7, { 0 }}, - { 200, 0, 0, 8, { 0 }}, - { 201, 0, 0, 8, { 0 }}, - { 202, 0, 0, 8, { 0 }}, - { 203, 0, 1, 8, { 0 }}, - { 204, 0, 0, 4, { 0 }}, - { 205, 0, 0, 4, { 0 }}, - { 206, 0, 0, 4, { 0 }}, - { 207, 0, 1, 4, { 0 }}, - { 208, 0, 3, 8, { 0 }}, - { 209, 0, 0, 9, { 0 }}, - { 210, 0, 0, 7, { 0 }}, - { 211, 0, 0, 7, { 0 }}, - { 212, 0, 0, 7, { 0 }}, - { 213, 0, 0, 7, { 0 }}, - { 214, 0, 1, 7, { 0 }}, - { 215, 1, 5, 7, { 0 }}, - { 216, 0, 3, 9, { 0 }}, - { 217, 0, 0, 9, { 0 }}, - { 218, 0, 0, 9, { 0 }}, - { 219, 0, 0, 9, { 0 }}, - { 220, 0, 1, 9, { 0 }}, - { 221, 0, 0, 8, { 0 }}, - { 222, 0, 2, 8, { 0 }}, - { 223, 0, 3, 9, { 0 }}, - { 224, 0, 3, 7, { 0 }}, - { 225, 0, 3, 7, { 0 }}, - { 226, 0, 3, 7, { 0 }}, - { 227, 0, 3, 7, { 0 }}, - { 228, 0, 4, 7, { 0 }}, - { 229, 0, 2, 7, { 0 }}, - { 230, 0, 6, 11, { 0 }}, - { 231, 0, 6, 7, { 0 }}, - { 232, 0, 3, 7, { 0 }}, - { 233, 0, 3, 7, { 0 }}, - { 234, 0, 3, 7, { 0 }}, - { 235, 0, 4, 7, { 0 }}, - { 236, 0, 2, 4, { 0 }}, - { 237, 0, 2, 4, { 0 }}, - { 238, 0, 2, 4, { 0 }}, - { 239, 0, 3, 4, { 0 }}, - { 240, 0, 2, 7, { 0 }}, - { 241, 0, 3, 8, { 0 }}, - { 242, 0, 3, 6, { 0 }}, - { 243, 0, 3, 6, { 0 }}, - { 244, 0, 3, 6, { 0 }}, - { 245, 0, 3, 6, { 0 }}, - { 246, 0, 4, 6, { 0 }}, - { 247, 0, 3, 8, { 0 }}, - { 248, 0, 4, 9, { 0 }}, - { 249, 0, 3, 8, { 0 }}, - { 250, 0, 3, 8, { 0 }}, - { 251, 0, 3, 8, { 0 }}, - { 252, 0, 4, 8, { 0 }}, - { 253, 0, 3, 8, { 0 }}, - { 254, 0, 4, 6, { 0 }}, - { 255, 0, 4, 8, { 0 }}, -}; - -// Style loading function: Cherry -static void GuiLoadStyleCherry(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < CHERRY_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(cherryStyleProps[i].controlId, cherryStyleProps[i].propertyId, cherryStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int cherryFontDataSize = 0; - unsigned char *data = DecompressData(cherryFontData, CHERRY_STYLE_FONT_ATLAS_COMP_SIZE, &cherryFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 15; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, cherryFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, cherryFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.png deleted file mode 100644 index 2e54516..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.rgs deleted file mode 100644 index 7ef11a2..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.txt.rgs deleted file mode 100644 index 447c6d2..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cherry/style_cherry.txt.rgs +++ /dev/null @@ -1,27 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 15 charset.txt Westington.ttf -p 00 00 0xda5757ff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0x753233ff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0xe17373ff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0xfaaa97ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0xe06262ff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0xfdb4aaff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0xe03c46ff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0x5b1e20ff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0xc2474fff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0xa19292ff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0x706060ff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x9e8585ff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x0000000f TEXT_SIZE -p 00 17 0x00000000 TEXT_SPACING -p 00 18 0xfb8170ff LINE_COLOR -p 00 19 0x3a1720ff BACKGROUND_COLOR -p 00 20 0x00000016 TEXT_LINE_SPACING diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/Kyrou7Wide.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/Kyrou7Wide.ttf deleted file mode 100644 index 165c3e7..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/Kyrou7Wide.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/README.md deleted file mode 100644 index 12a5f4c..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: cyber - -Future is now! Neons and shadows, city never sleeps! Robots waiting in the corners and expensive vending machines! You got the style! - -![cyber style table](style_cyber.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_cyber.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_cyber.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_cyber.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_cyber.h` | Embeddable style as code file, self-contained, includes font data | -| `style_cyber.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![cyber style screen](screenshot.png) - -## about font - -"Grixel Kyrou 7 Wide" font by [Nikos Giannakopoulos](http://www.grixel.gr/). - -100% free font, downloaded from dafont.com: [grixel-kyrou-7-wide](https://www.dafont.com/grixel-kyrou-7-wide.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/font_readme.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/font_readme.txt deleted file mode 100644 index 45def0a..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/font_readme.txt +++ /dev/null @@ -1,36 +0,0 @@ -Thank you for downloading the free Grixel fonts. You can use them in your personal and commercial projects too. They include Western European, Central European, Turkish and Greek characters. They are Unicode TrueType fonts and are optimized to work in both Windows XP and Mac OS X platforms using Adobe Photoshop CS2 and Macromedia Flash 8. - - -Grixel fonts are under Creative Commons Attribution-NoDerivs 2.5 License which can be found here: - -http://creativecommons.org/licenses/by-nd/2.5/ - -=============================================================== -Attribution-NoDerivs 2.5 - -You are free: - - * to copy, distribute, display, and perform the work - * to make commercial use of the work - -Under the following conditions: - -by -Attribution. You must attribute the work in the manner specified by the author or licensor. - -nd -No Derivative Works. You may not alter, transform, or build upon this work. - - * For any reuse or distribution, you must make clear to others the license terms of this work. - * Any of these conditions can be waived if you get permission from the copyright holder. - -Your fair use and other rights are in no way affected by the above. -=============================================================== - - -In no event shall Nikos Giannakopoulos be held liable to you for any consequential or incidental damages, including any lost revenue, profits, goodwill or savings, or for any claim by any third party caused by using these fonts. - -Please read the UsageGuides.pdf before you use them. - - -Grixel - Greek pixel fonts | Nikos Giannakopoulos | www.grixel.gr \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/screenshot.old.png deleted file mode 100644 index 2ea08b5..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/screenshot.png deleted file mode 100644 index 58d5cfd..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.h deleted file mode 100644 index 5e7bf85..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.h +++ /dev/null @@ -1,592 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleCyber(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define CYBER_STYLE_PROPS_COUNT 17 - -// Custom style name: Cyber -static const GuiStyleProp cyberStyleProps[CYBER_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x2f7486ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x024658ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x51bfd3ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0x82cde0ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x3299b4ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xb6e1eaff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xeb7630ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xffbc51ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xd86f36ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x134b5aff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x02313dff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x17505fff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x0000000e }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x81c0d0ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x00222bff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000007 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "Kyrou7Wide.ttf" (size: 14, spacing: 0) - -#define CYBER_STYLE_FONT_ATLAS_COMP_SIZE 2306 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char cyberFontData[CYBER_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xdd, 0x72, 0xe3, 0x36, 0x12, 0x06, 0x50, 0x96, 0x6b, 0xdf, 0xff, 0x85, 0x1d, 0xec, 0xb7, 0xb5, 0x93, 0x4c, 0xe2, - 0xa9, 0x8c, 0x88, 0x7f, 0x8a, 0x92, 0xcf, 0x9c, 0xaa, 0xb9, 0x30, 0x2d, 0x89, 0x04, 0xd1, 0x40, 0x93, 0x34, 0x5a, 0x39, - 0x00, 0x00, 0x00, 0x00, 0x16, 0xcb, 0xc5, 0x9f, 0x96, 0xe6, 0x9f, 0xae, 0x3b, 0xa2, 0x9f, 0xff, 0x9e, 0x7b, 0xec, 0xfa, - 0x57, 0x7f, 0xbb, 0xe7, 0xe1, 0xb9, 0xd3, 0x9e, 0x5f, 0x7f, 0x92, 0xd3, 0xdf, 0xcd, 0x50, 0xeb, 0xa6, 0x7a, 0xc6, 0xce, - 0xcf, 0x4c, 0x5f, 0xbc, 0x3d, 0xde, 0x87, 0x74, 0xbf, 0x62, 0xe7, 0xc8, 0xf8, 0xf3, 0x5f, 0xe9, 0xea, 0xef, 0xe7, 0xbd, - 0xb8, 0xad, 0x97, 0xa7, 0xb2, 0x47, 0x69, 0xf8, 0x8d, 0xda, 0xeb, 0x8f, 0x89, 0xbd, 0x2f, 0x97, 0xce, 0x45, 0xa9, 0x8e, - 0x19, 0xc7, 0x86, 0xa3, 0xc9, 0xe4, 0xb9, 0xcc, 0xf4, 0x88, 0xd6, 0x1e, 0xff, 0xb5, 0x7e, 0x91, 0x7f, 0xfd, 0x7f, 0x0c, - 0x45, 0x5a, 0x36, 0xc6, 0xff, 0xd1, 0x35, 0xbe, 0xec, 0xcf, 0x8b, 0xd2, 0x10, 0xe9, 0xfd, 0xaf, 0x69, 0x3d, 0xda, 0xb1, - 0x11, 0x2f, 0xcd, 0xbf, 0x9b, 0xa1, 0x23, 0x5e, 0x75, 0x46, 0x7a, 0x47, 0xce, 0x5a, 0x6b, 0xec, 0x38, 0x9a, 0xaf, 0x3f, - 0xfb, 0x9c, 0x7c, 0x7d, 0xd9, 0x3e, 0x46, 0x96, 0x86, 0x96, 0x2a, 0xc3, 0x9f, 0x98, 0x81, 0x6c, 0x6e, 0xd5, 0xd9, 0xdf, - 0x9d, 0x17, 0x66, 0x38, 0x96, 0x32, 0x75, 0xf6, 0xce, 0x3f, 0x77, 0x74, 0xfe, 0xde, 0x3b, 0xe2, 0xf5, 0xe7, 0xfa, 0x59, - 0x34, 0x9a, 0x8f, 0x8d, 0x66, 0x3f, 0x5b, 0x2a, 0x1b, 0xe2, 0x77, 0xdd, 0x58, 0xbc, 0x32, 0x47, 0x9a, 0xc9, 0x3b, 0xcf, - 0xb6, 0x7d, 0xfe, 0xd0, 0xbe, 0x57, 0xaf, 0x32, 0xff, 0x67, 0xe2, 0xfc, 0x65, 0xa8, 0x9d, 0x6b, 0x39, 0x65, 0xeb, 0x11, - 0x9f, 0x7f, 0x7a, 0x19, 0x38, 0xe6, 0x8f, 0x94, 0xbf, 0x1d, 0x4b, 0x72, 0xda, 0x2c, 0x3c, 0x97, 0xe9, 0xbe, 0x56, 0xfa, - 0x33, 0x6e, 0xc7, 0x73, 0xe6, 0xe4, 0xbf, 0x3f, 0x94, 0xcd, 0xb9, 0xd8, 0x15, 0xf1, 0xff, 0xcf, 0x28, 0x96, 0x89, 0x88, - 0xcd, 0xe4, 0x0c, 0xb3, 0xf6, 0xfa, 0x7f, 0x5e, 0x99, 0x3a, 0x7f, 0x59, 0x7e, 0x55, 0xfb, 0x4f, 0xf4, 0x66, 0x28, 0x7f, - 0xc8, 0xb2, 0x51, 0xb6, 0x6c, 0xbc, 0x97, 0x9c, 0x4d, 0x59, 0xda, 0xa3, 0xf9, 0xff, 0xba, 0x6c, 0x67, 0xcf, 0xd5, 0x52, - 0xcf, 0xbd, 0xd3, 0xd1, 0xeb, 0xff, 0x34, 0x8e, 0x2e, 0xfb, 0xe2, 0xff, 0x7a, 0x7f, 0x4c, 0x9e, 0xbf, 0x5c, 0x7c, 0x7d, - 0xbe, 0xe6, 0x0a, 0x7d, 0x3c, 0xe3, 0xd9, 0x7b, 0xfd, 0x7f, 0xd5, 0x88, 0xb1, 0x23, 0xff, 0xcf, 0x8b, 0xe7, 0xff, 0x3d, - 0xf7, 0xff, 0xf3, 0x26, 0xf1, 0x9f, 0xe9, 0x27, 0x52, 0x59, 0x7e, 0x7f, 0xbe, 0x2d, 0xdb, 0x9d, 0x7b, 0xbe, 0x90, 0xa9, - 0x23, 0x5e, 0x75, 0x2f, 0x26, 0x8b, 0x7e, 0x37, 0x8d, 0xb3, 0xe2, 0xd8, 0xfd, 0xdd, 0xe7, 0xde, 0xff, 0xf7, 0xfc, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9e, 0xd5, 0x9d, 0xb9, 0xe0, 0x75, - 0x23, 0xab, 0x68, 0x67, 0x56, 0xdd, 0xce, 0xac, 0xd9, 0x1d, 0x7d, 0x65, 0xbd, 0x0e, 0xd1, 0xf8, 0x3a, 0xe3, 0xf6, 0x55, - 0xce, 0x7d, 0xeb, 0x86, 0xe7, 0xaa, 0xa3, 0xa4, 0xba, 0x8e, 0xbe, 0xad, 0x1e, 0x41, 0xbd, 0x76, 0x6b, 0xad, 0x92, 0xd5, - 0xfe, 0xda, 0xaf, 0x3b, 0x6b, 0x53, 0x66, 0xb8, 0x05, 0x7b, 0x56, 0xbf, 0xa7, 0xab, 0x3e, 0xc1, 0xe8, 0x3a, 0xf4, 0xeb, - 0xaa, 0x02, 0xce, 0xaf, 0x90, 0x3f, 0x7f, 0xe7, 0xb2, 0xfd, 0x28, 0xda, 0xf7, 0x38, 0x0b, 0xce, 0xd9, 0x8e, 0xf8, 0xcf, - 0x69, 0x45, 0x80, 0x5c, 0x58, 0xdb, 0x75, 0x5f, 0x25, 0xdc, 0x7d, 0x95, 0x76, 0xea, 0xf1, 0xdf, 0x5e, 0xb3, 0x39, 0x8b, - 0xa3, 0x35, 0xc3, 0xd1, 0xb3, 0x6a, 0x04, 0x18, 0x19, 0xb7, 0x56, 0xc4, 0xff, 0x68, 0xee, 0xf0, 0xda, 0xf1, 0x3f, 0x5a, - 0x4f, 0x2c, 0x27, 0xe7, 0x3d, 0x8d, 0x7d, 0xfb, 0x0e, 0xdb, 0x8f, 0x9b, 0xc6, 0x7f, 0x3d, 0xa6, 0x32, 0x5d, 0xa5, 0x78, - 0x5d, 0x7f, 0x5a, 0xa7, 0x34, 0x45, 0xe9, 0x58, 0x4d, 0xcf, 0x32, 0x3c, 0xb2, 0xec, 0xca, 0xff, 0x53, 0xb9, 0xf2, 0x48, - 0x53, 0x2e, 0xbb, 0x76, 0x8c, 0x6d, 0x1d, 0xb5, 0x1e, 0x57, 0x14, 0xab, 0xd5, 0x2b, 0x7c, 0xfe, 0xfc, 0x3e, 0x57, 0x4f, - 0xf9, 0x9a, 0xf8, 0x9f, 0x8f, 0xc4, 0x3c, 0x65, 0xce, 0x5a, 0x73, 0x6f, 0x22, 0x83, 0xf3, 0xd6, 0x9e, 0xd7, 0x5e, 0x31, - 0xff, 0xe7, 0xa5, 0xe6, 0xff, 0x96, 0xeb, 0xff, 0x2c, 0xb8, 0x7a, 0x1d, 0x6b, 0xb5, 0xd2, 0x7c, 0x2e, 0x77, 0xe4, 0xff, - 0x2d, 0x33, 0xfb, 0xfc, 0xfc, 0x3f, 0xb3, 0x35, 0xcd, 0xb3, 0xf0, 0xf5, 0xf1, 0xdf, 0x76, 0x4c, 0xb9, 0xf4, 0xb5, 0xaf, - 0x17, 0xff, 0xb9, 0xc5, 0xfd, 0xbf, 0x6c, 0xac, 0xcd, 0x9c, 0x25, 0xa3, 0xdb, 0x9e, 0xf8, 0x6f, 0xab, 0x87, 0x3e, 0x73, - 0xfd, 0x3f, 0x17, 0xe1, 0xf5, 0x08, 0xf8, 0x43, 0xfc, 0x2f, 0xca, 0xff, 0x57, 0xbd, 0xba, 0xff, 0x5e, 0xc9, 0xcc, 0x0c, - 0xda, 0x7e, 0x4c, 0x59, 0x9e, 0x7f, 0xcf, 0xd6, 0xf6, 0xdd, 0x9d, 0xff, 0xaf, 0x7a, 0xfd, 0x31, 0x7c, 0xde, 0xeb, 0x5b, - 0xe6, 0x7a, 0xe5, 0xf1, 0x84, 0x6f, 0x73, 0xd8, 0xfd, 0x7c, 0xcf, 0x77, 0x94, 0xbe, 0xdf, 0x53, 0x6c, 0x6d, 0x70, 0xef, - 0xe7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x5e, 0x65, 0x75, 0xbf, - 0x15, 0x53, 0x69, 0x58, 0x1f, 0xda, 0x52, 0x3f, 0xf3, 0xbc, 0xfa, 0xe6, 0xa3, 0x1a, 0x12, 0xa5, 0xa9, 0xf6, 0xe6, 0xaa, - 0xd6, 0x6c, 0xad, 0x83, 0x30, 0x5b, 0xa7, 0x73, 0xe4, 0xdd, 0x5b, 0x5a, 0xb9, 0xbe, 0xe6, 0x31, 0x95, 0x75, 0xc0, 0xc7, - 0xc2, 0x1e, 0x58, 0x5f, 0xf3, 0x9c, 0x89, 0x9a, 0x0b, 0x33, 0x55, 0x04, 0xb3, 0x71, 0x85, 0x69, 0x86, 0x5a, 0xa5, 0xbd, - 0x02, 0x47, 0xeb, 0xd6, 0x2c, 0xaa, 0xf2, 0xb0, 0xbb, 0x5f, 0xaf, 0xd8, 0xda, 0x5f, 0x47, 0xe1, 0x19, 0xf1, 0x7f, 0xde, - 0x43, 0xb2, 0xf8, 0x6c, 0xf7, 0xfd, 0xb4, 0x16, 0xfb, 0x8f, 0x6b, 0x2b, 0x7f, 0x34, 0xf6, 0x9b, 0x9e, 0xed, 0x99, 0x3e, - 0xcb, 0x99, 0xac, 0x84, 0x50, 0x3a, 0xe7, 0x9b, 0xf6, 0xe8, 0x9f, 0xeb, 0x79, 0xfb, 0x56, 0xc0, 0xbf, 0x53, 0xfc, 0x1f, - 0x83, 0x15, 0x0b, 0x77, 0xc7, 0xff, 0xd1, 0xb4, 0x4f, 0x59, 0x76, 0x44, 0xeb, 0xaa, 0x6f, 0x7f, 0x74, 0xe7, 0x58, 0x6b, - 0x6a, 0x59, 0xe5, 0xc2, 0x5a, 0x0f, 0xe9, 0xe8, 0x5d, 0xa3, 0x23, 0x40, 0x06, 0xe7, 0xff, 0xfe, 0x96, 0x5e, 0x95, 0x63, - 0xbc, 0x66, 0xfc, 0x8f, 0xb5, 0x66, 0x26, 0xce, 0xf0, 0xde, 0xf9, 0x7f, 0x65, 0xe5, 0xee, 0x91, 0xe8, 0x28, 0x0f, 0xde, - 0xa5, 0x0c, 0xcf, 0xce, 0xe3, 0x57, 0x07, 0x47, 0xd3, 0x77, 0x32, 0x94, 0xee, 0xd7, 0xe5, 0x97, 0xf8, 0xcc, 0x96, 0x6b, - 0xf4, 0x9c, 0xb4, 0xf0, 0x68, 0x35, 0xd2, 0xde, 0xf8, 0xcf, 0xa5, 0xf3, 0xff, 0xd1, 0xf8, 0xed, 0x19, 0xc7, 0xd0, 0xf9, - 0x3a, 0x06, 0xdf, 0x75, 0xfc, 0x95, 0xa9, 0xf6, 0xd8, 0x3d, 0xf5, 0x68, 0x57, 0x7e, 0x43, 0x47, 0x16, 0xf4, 0xdb, 0x54, - 0x3e, 0x21, 0x83, 0x39, 0x78, 0x6f, 0xe6, 0xdf, 0x33, 0xce, 0xa6, 0xe3, 0xce, 0x40, 0x4e, 0xc6, 0xc0, 0x6c, 0xca, 0xc1, - 0x57, 0xce, 0x83, 0x59, 0x9a, 0xaf, 0xed, 0xbb, 0xbb, 0xb8, 0x33, 0xa3, 0xbb, 0xe6, 0xdd, 0x9e, 0xd5, 0x26, 0x57, 0xce, - 0xff, 0xe9, 0xce, 0x76, 0x67, 0xe6, 0xff, 0x4c, 0xd7, 0xc9, 0xac, 0xe5, 0x7e, 0xc7, 0xed, 0xe6, 0xff, 0xb6, 0xd8, 0xcc, - 0xe5, 0xf9, 0xbf, 0xf8, 0xbf, 0xfa, 0x49, 0xcb, 0xf1, 0x12, 0xf1, 0xbf, 0xf7, 0xfa, 0x7f, 0xcd, 0x08, 0x32, 0x3a, 0xcb, - 0x1e, 0x9b, 0x9f, 0x11, 0x8c, 0xbf, 0x6a, 0x5f, 0xfc, 0x1f, 0xdf, 0xaa, 0x5a, 0xe3, 0xbb, 0xd5, 0xa6, 0x7c, 0x46, 0xfc, - 0xb7, 0xe4, 0xff, 0x19, 0xbc, 0xff, 0xdf, 0xfe, 0x0d, 0x5b, 0xe9, 0xca, 0x59, 0xda, 0xf3, 0x8e, 0xf7, 0xec, 0x11, 0xbc, - 0xf3, 0x88, 0x36, 0xf7, 0xfc, 0xff, 0x6e, 0x63, 0xf0, 0xdc, 0x77, 0xaa, 0x7c, 0xe7, 0xfe, 0xaf, 0xee, 0x32, 0xfe, 0x5a, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xd9, 0xeb, 0x16, 0x72, 0xe9, 0x7a, 0xf9, - 0xd1, 0xba, 0x75, 0xfd, 0x2b, 0x56, 0xb3, 0xa8, 0x65, 0xb2, 0xe8, 0x6c, 0x95, 0x86, 0xd5, 0xf9, 0x99, 0x6c, 0xf7, 0x4c, - 0xff, 0x4e, 0x1a, 0x56, 0x84, 0x65, 0xe8, 0x0c, 0xdf, 0x6f, 0xdd, 0xea, 0xcc, 0xaa, 0xc1, 0x2c, 0x6d, 0xdd, 0x95, 0xe7, - 0x3b, 0xd5, 0x6a, 0xd8, 0x5f, 0x95, 0xc1, 0xea, 0x2b, 0x19, 0x5a, 0x31, 0x99, 0xe1, 0xda, 0x04, 0xbd, 0xe3, 0x5d, 0x3a, - 0xdb, 0xac, 0xf7, 0x5c, 0x7f, 0x6d, 0xe3, 0xd6, 0x2a, 0x33, 0x5f, 0xb7, 0x97, 0xc1, 0x33, 0xfe, 0x91, 0xcf, 0xa9, 0x7e, - 0x9f, 0xe1, 0x11, 0xfa, 0x58, 0x52, 0xd7, 0xbb, 0xa5, 0x1a, 0x47, 0x69, 0x58, 0x43, 0x9f, 0xe9, 0xda, 0x60, 0x19, 0x6e, - 0x87, 0x95, 0x3d, 0x6f, 0xee, 0xd3, 0x6a, 0x6b, 0xb5, 0x33, 0x31, 0x83, 0x66, 0xb0, 0xfe, 0x5d, 0x26, 0x2b, 0x43, 0xe4, - 0x64, 0x8d, 0x77, 0xb6, 0xad, 0x6f, 0x4f, 0x67, 0xf4, 0xb7, 0x1f, 0x6f, 0x9a, 0xdb, 0xb4, 0xad, 0x5e, 0xf5, 0xc7, 0xed, - 0xb3, 0xd2, 0x32, 0x34, 0xdb, 0x8c, 0xb5, 0xe9, 0xd5, 0xf9, 0xc6, 0xdd, 0x6b, 0x7b, 0xd4, 0xab, 0x8f, 0xed, 0xbf, 0x36, - 0x18, 0xa9, 0xc5, 0xb2, 0x2e, 0xfe, 0xd3, 0x5d, 0x51, 0xaa, 0x4c, 0x5d, 0x75, 0xf4, 0xc5, 0x7f, 0xdb, 0xfb, 0x66, 0x68, - 0xfe, 0xaf, 0xc5, 0xdf, 0xde, 0xed, 0xb3, 0xd5, 0xf6, 0x47, 0xe3, 0xbf, 0xbf, 0x0f, 0x64, 0x43, 0x8d, 0xd4, 0x5a, 0x56, - 0x32, 0xb2, 0x65, 0xfe, 0x1a, 0x7b, 0x5f, 0xfc, 0x9f, 0xb5, 0xde, 0x6c, 0xbe, 0xb1, 0x6a, 0xfe, 0xcf, 0x74, 0xfe, 0xdf, - 0xda, 0x57, 0xd3, 0xfc, 0xfd, 0x42, 0x2d, 0x39, 0x55, 0x1e, 0xc6, 0x7e, 0xc9, 0x67, 0xf5, 0x9b, 0x32, 0x8e, 0xc1, 0x6f, - 0xc3, 0xd8, 0xbd, 0xbd, 0x67, 0xdc, 0x5e, 0x53, 0xb9, 0xf3, 0xfa, 0xad, 0x2b, 0xc6, 0xbe, 0x7b, 0xc4, 0x7f, 0x36, 0x65, - 0x3a, 0x99, 0x6a, 0xd7, 0x74, 0xed, 0xfb, 0x35, 0x77, 0x97, 0x72, 0x59, 0x55, 0xd1, 0xff, 0xc7, 0xfe, 0xc7, 0x70, 0x4e, - 0xbc, 0x7f, 0x7b, 0xeb, 0x38, 0x58, 0x2e, 0x98, 0xff, 0x77, 0xde, 0x01, 0x1d, 0xaf, 0x0a, 0x7f, 0x4d, 0xfc, 0x3f, 0xeb, - 0xda, 0xe8, 0xd8, 0x32, 0x36, 0xf6, 0xc6, 0x7f, 0x2e, 0x3e, 0x8e, 0xeb, 0xe2, 0xbf, 0x9c, 0x5e, 0x03, 0xa4, 0x23, 0xaf, - 0xdd, 0xb3, 0x7d, 0xe5, 0xf8, 0x32, 0xfb, 0xbd, 0x3f, 0xcf, 0xc9, 0xff, 0x9f, 0x1f, 0xff, 0x77, 0xbe, 0x43, 0x91, 0x37, - 0xba, 0x43, 0x93, 0x5f, 0xee, 0xb2, 0x5c, 0xf3, 0x3c, 0xf6, 0x3f, 0x29, 0x3f, 0x7c, 0x3e, 0xf8, 0x1e, 0xad, 0x7b, 0xe7, - 0xff, 0xbd, 0xf1, 0x3f, 0x73, 0xff, 0xff, 0xfb, 0xe6, 0xff, 0x77, 0xfe, 0x9b, 0x05, 0x7f, 0xb7, 0xb1, 0xb3, 0x9d, 0xee, - 0x1f, 0xdf, 0xeb, 0x47, 0xe6, 0xf2, 0xe0, 0x7a, 0xe8, 0xfb, 0xe6, 0xff, 0xf7, 0xff, 0x8b, 0x25, 0xd5, 0x56, 0xaf, 0xb8, - 0x26, 0xb9, 0xe3, 0xfd, 0xbd, 0xd5, 0xfd, 0xbd, 0x9c, 0xdc, 0x0b, 0xdd, 0x95, 0xff, 0x1f, 0x37, 0xbf, 0xff, 0x0f, 0xaf, - 0x39, 0x3e, 0x01, 0xe2, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7d, 0xff, 0x9a, 0x32, 0xc3, - 0xeb, 0x26, 0xf2, 0xa3, 0x96, 0xcc, 0xc7, 0xc4, 0x6a, 0xa4, 0x7d, 0x55, 0x64, 0xcf, 0x6b, 0x60, 0x7d, 0x4e, 0xfc, 0xfd, - 0xe8, 0xde, 0xe3, 0xca, 0xa2, 0xf5, 0xa3, 0xcf, 0x38, 0xb2, 0x0c, 0x9e, 0xab, 0xb9, 0xcf, 0xfc, 0x77, 0x55, 0xa4, 0x63, - 0xf9, 0x5a, 0xdf, 0xe3, 0xaf, 0xba, 0x49, 0xab, 0xcf, 0x48, 0xcf, 0xca, 0xc3, 0x7b, 0x55, 0x28, 0x2c, 0x3f, 0xda, 0x23, - 0xa7, 0x75, 0x24, 0xef, 0x5c, 0x45, 0xb6, 0x0c, 0x55, 0x97, 0xd9, 0x7f, 0x5c, 0x73, 0xf1, 0x90, 0x4a, 0x5d, 0xcf, 0xe7, - 0x54, 0xbb, 0xad, 0x9d, 0xab, 0xf3, 0x5a, 0xd8, 0xa5, 0x71, 0xbd, 0xfc, 0x79, 0x55, 0xe4, 0x4c, 0x8e, 0x7e, 0xf5, 0xe8, - 0xcf, 0xd0, 0xd1, 0xfd, 0xee, 0x8c, 0xa5, 0xf9, 0x13, 0xb2, 0xa8, 0x3a, 0xd7, 0x79, 0x6b, 0x94, 0x17, 0x5e, 0x29, 0x5c, - 0xba, 0xe2, 0x3f, 0x5f, 0x32, 0x84, 0xbc, 0xe0, 0xea, 0x96, 0xd6, 0xf1, 0xf8, 0xb5, 0x56, 0xce, 0xa4, 0x79, 0x45, 0xf8, - 0x4c, 0xc5, 0x1d, 0xeb, 0xa9, 0xda, 0x7b, 0x62, 0xbd, 0x9f, 0xde, 0xbb, 0x8a, 0xec, 0x67, 0xe5, 0xb8, 0xf2, 0xb2, 0xd5, - 0x6f, 0xda, 0x5a, 0x25, 0x03, 0xd9, 0xc1, 0xb3, 0xb6, 0x9e, 0x67, 0x71, 0xbf, 0x9b, 0xff, 0xc7, 0x32, 0x9b, 0x67, 0x1d, - 0x7b, 0xeb, 0xbe, 0x66, 0xcb, 0x95, 0x60, 0x4b, 0x4f, 0xc8, 0x69, 0xb6, 0xf5, 0x8a, 0x71, 0xd2, 0x92, 0x89, 0xde, 0x73, - 0xbf, 0xd3, 0xd8, 0x1b, 0x72, 0x92, 0x87, 0xdf, 0xb5, 0xee, 0xed, 0xcc, 0xa8, 0x94, 0x86, 0x2b, 0xfc, 0x96, 0xec, 0xa0, - 0x5c, 0xba, 0xf5, 0xae, 0xf1, 0xdf, 0x32, 0xff, 0xe7, 0x4d, 0xe3, 0xbf, 0xdc, 0x7c, 0xbf, 0xc7, 0xbf, 0xff, 0xac, 0x75, - 0xfe, 0xbf, 0xd7, 0xd6, 0x95, 0x19, 0xfc, 0xe3, 0xfb, 0x6d, 0xfb, 0x2a, 0x7d, 0xf6, 0xdf, 0x77, 0x7c, 0x8d, 0xf8, 0xbf, - 0xf3, 0x3c, 0x39, 0x1e, 0xff, 0x9f, 0x2f, 0xb0, 0xdf, 0x19, 0xba, 0xa3, 0x53, 0x8b, 0xff, 0x72, 0xcb, 0xad, 0x2b, 0x2b, - 0x5b, 0x8d, 0x3e, 0xab, 0xda, 0x59, 0xe9, 0xf3, 0xbe, 0xf1, 0xdf, 0x92, 0x2f, 0xbd, 0xea, 0x75, 0xf2, 0x31, 0x1d, 0x41, - 0x77, 0x8d, 0xff, 0xfa, 0x93, 0x87, 0xf1, 0x27, 0x64, 0xcf, 0xd8, 0x5a, 0x2e, 0xba, 0x83, 0xf7, 0xbc, 0x63, 0x7f, 0x5e, - 0xfc, 0xcf, 0x54, 0x28, 0x3c, 0xbf, 0xef, 0x72, 0x87, 0xeb, 0xe4, 0x1d, 0xf5, 0x10, 0xef, 0xb1, 0xdf, 0xd9, 0x34, 0x17, - 0xdd, 0xfb, 0x49, 0x8e, 0x3b, 0xf8, 0xf7, 0x7c, 0x6a, 0x30, 0xd6, 0x8f, 0x77, 0x6f, 0x7f, 0x56, 0x6f, 0xbc, 0x62, 0xbf, - 0x45, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x77, 0x5a, 0xc9, 0x93, 0xca, 0x2a, - 0xe0, 0xa3, 0xab, 0x76, 0xd1, 0xaf, 0x46, 0x6b, 0xa6, 0x66, 0x41, 0x95, 0xcc, 0x47, 0x6b, 0x6f, 0xca, 0xe5, 0x47, 0x73, - 0x4c, 0xbe, 0x33, 0x5c, 0xb5, 0x9a, 0xef, 0x77, 0xeb, 0xc5, 0x47, 0xfb, 0xfc, 0x68, 0xcd, 0xd4, 0xb9, 0x7a, 0xb1, 0xb5, - 0x95, 0xd2, 0x9f, 0x83, 0xe3, 0xd9, 0xae, 0x0a, 0xb0, 0x67, 0xef, 0x5c, 0xaf, 0xe7, 0x6b, 0x3d, 0x20, 0xf3, 0xd1, 0xff, - 0x1d, 0x7a, 0x50, 0xb6, 0xe5, 0x15, 0x3b, 0xf7, 0xf9, 0x43, 0x0f, 0xe5, 0x49, 0x39, 0x40, 0xdb, 0x5a, 0xf6, 0x72, 0xab, - 0xad, 0x8f, 0xf7, 0x39, 0x8d, 0x95, 0xfd, 0xee, 0xb5, 0x75, 0xa6, 0x9e, 0x2f, 0xb4, 0x5c, 0x11, 0xd7, 0xab, 0xa2, 0xbe, - 0xce, 0xd6, 0x96, 0xa3, 0x3d, 0xde, 0xe4, 0x58, 0xc5, 0x3f, 0xab, 0xe6, 0xfc, 0x77, 0xea, 0xf5, 0x99, 0x6a, 0x0b, 0xf1, - 0x8f, 0xf8, 0xff, 0x6e, 0xbd, 0x5e, 0xfc, 0xf3, 0x7d, 0xf3, 0xff, 0x32, 0x55, 0x2f, 0xfe, 0xb8, 0xd5, 0xd6, 0xf9, 0x6b, - 0xa1, 0xfb, 0x6c, 0xbd, 0x6b, 0x15, 0x44, 0xe0, 0x8a, 0x3b, 0xb0, 0x73, 0x4f, 0x70, 0x81, 0xd7, 0xc8, 0xc1, 0x46, 0xe2, - 0xda, 0xec, 0x0f, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8b, 0x3f, 0xff, 0x69, 0x07, 0x10, 0xff, 0xc0, - 0xb7, 0x8b, 0xff, 0xff, 0x01 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle cyberFontRecs[189] = { - { 4, 4, 4 , 14 }, - { 16, 4, 1 , 8 }, - { 25, 4, 4 , 3 }, - { 37, 4, 8 , 8 }, - { 53, 4, 8 , 9 }, - { 69, 4, 8 , 8 }, - { 85, 4, 8 , 8 }, - { 101, 4, 1 , 3 }, - { 110, 4, 4 , 9 }, - { 122, 4, 4 , 9 }, - { 134, 4, 5 , 6 }, - { 147, 4, 5 , 6 }, - { 160, 4, 2 , 2 }, - { 170, 4, 4 , 1 }, - { 182, 4, 1 , 1 }, - { 191, 4, 8 , 8 }, - { 207, 4, 8 , 8 }, - { 223, 4, 2 , 8 }, - { 233, 4, 8 , 8 }, - { 249, 4, 8 , 8 }, - { 265, 4, 8 , 8 }, - { 281, 4, 8 , 8 }, - { 297, 4, 8 , 8 }, - { 313, 4, 7 , 8 }, - { 328, 4, 8 , 8 }, - { 344, 4, 8 , 8 }, - { 360, 4, 1 , 4 }, - { 369, 4, 2 , 5 }, - { 379, 4, 4 , 8 }, - { 391, 4, 5 , 3 }, - { 404, 4, 4 , 8 }, - { 416, 4, 7 , 8 }, - { 431, 4, 8 , 8 }, - { 447, 4, 8 , 8 }, - { 463, 4, 8 , 8 }, - { 479, 4, 8 , 8 }, - { 495, 4, 8 , 8 }, - { 4, 26, 7 , 8 }, - { 19, 26, 7 , 8 }, - { 34, 26, 8 , 8 }, - { 50, 26, 8 , 8 }, - { 66, 26, 5 , 8 }, - { 79, 26, 7 , 8 }, - { 94, 26, 8 , 8 }, - { 110, 26, 7 , 8 }, - { 125, 26, 8 , 8 }, - { 141, 26, 8 , 8 }, - { 157, 26, 8 , 8 }, - { 173, 26, 8 , 8 }, - { 189, 26, 8 , 9 }, - { 205, 26, 8 , 8 }, - { 221, 26, 8 , 8 }, - { 237, 26, 8 , 8 }, - { 253, 26, 8 , 8 }, - { 269, 26, 8 , 8 }, - { 285, 26, 9 , 8 }, - { 302, 26, 8 , 8 }, - { 318, 26, 8 , 8 }, - { 334, 26, 8 , 8 }, - { 350, 26, 4 , 9 }, - { 362, 26, 8 , 8 }, - { 378, 26, 4 , 9 }, - { 390, 26, 4 , 3 }, - { 402, 26, 7 , 1 }, - { 417, 26, 2 , 3 }, - { 427, 26, 7 , 5 }, - { 442, 26, 7 , 8 }, - { 457, 26, 7 , 5 }, - { 472, 26, 7 , 8 }, - { 487, 26, 7 , 5 }, - { 4, 48, 4 , 8 }, - { 16, 48, 7 , 7 }, - { 31, 48, 7 , 8 }, - { 46, 48, 1 , 8 }, - { 55, 48, 3 , 10 }, - { 66, 48, 7 , 8 }, - { 81, 48, 4 , 8 }, - { 93, 48, 9 , 5 }, - { 110, 48, 7 , 5 }, - { 125, 48, 7 , 5 }, - { 140, 48, 7 , 7 }, - { 155, 48, 7 , 7 }, - { 170, 48, 5 , 5 }, - { 183, 48, 7 , 5 }, - { 198, 48, 5 , 8 }, - { 211, 48, 7 , 5 }, - { 226, 48, 7 , 5 }, - { 241, 48, 9 , 5 }, - { 258, 48, 7 , 5 }, - { 273, 48, 7 , 7 }, - { 288, 48, 7 , 5 }, - { 303, 48, 4 , 9 }, - { 315, 48, 1 , 9 }, - { 324, 48, 4 , 9 }, - { 336, 48, 8 , 2 }, - { 352, 48, 1 , 8 }, - { 361, 48, 7 , 8 }, - { 376, 48, 7 , 8 }, - { 391, 48, 8 , 9 }, - { 407, 48, 8 , 9 }, - { 423, 48, 8 , 10 }, - { 439, 48, 4 , 9 }, - { 451, 48, 7 , 8 }, - { 466, 48, 8 , 8 }, - { 482, 48, 7 , 6 }, - { 497, 48, 5 , 3 }, - { 4, 70, 5 , 3 }, - { 17, 70, 8 , 8 }, - { 33, 70, 0 , 0 }, - { 41, 70, 4 , 3 }, - { 53, 70, 8 , 6 }, - { 69, 70, 4 , 5 }, - { 81, 70, 4 , 5 }, - { 93, 70, 8 , 10 }, - { 109, 70, 7 , 7 }, - { 124, 70, 5 , 7 }, - { 137, 70, 1 , 1 }, - { 146, 70, 7 , 8 }, - { 161, 70, 2 , 5 }, - { 171, 70, 4 , 5 }, - { 183, 70, 5 , 3 }, - { 196, 70, 14 , 8 }, - { 218, 70, 13 , 5 }, - { 239, 70, 8 , 9 }, - { 255, 70, 7 , 8 }, - { 270, 70, 8 , 10 }, - { 286, 70, 8 , 10 }, - { 302, 70, 8 , 10 }, - { 318, 70, 8 , 10 }, - { 334, 70, 8 , 9 }, - { 350, 70, 8 , 12 }, - { 366, 70, 14 , 8 }, - { 388, 70, 8 , 10 }, - { 404, 70, 7 , 10 }, - { 419, 70, 7 , 10 }, - { 434, 70, 7 , 10 }, - { 449, 70, 7 , 9 }, - { 464, 70, 5 , 10 }, - { 477, 70, 5 , 10 }, - { 490, 70, 5 , 10 }, - { 4, 92, 5 , 9 }, - { 17, 92, 8 , 8 }, - { 33, 92, 8 , 10 }, - { 49, 92, 8 , 10 }, - { 65, 92, 8 , 10 }, - { 81, 92, 8 , 10 }, - { 97, 92, 8 , 10 }, - { 113, 92, 8 , 9 }, - { 129, 92, 4 , 4 }, - { 141, 92, 8 , 8 }, - { 157, 92, 8 , 10 }, - { 173, 92, 8 , 10 }, - { 189, 92, 8 , 10 }, - { 205, 92, 8 , 9 }, - { 221, 92, 8 , 10 }, - { 237, 92, 7 , 9 }, - { 252, 92, 7 , 9 }, - { 267, 92, 7 , 8 }, - { 282, 92, 7 , 8 }, - { 297, 92, 7 , 8 }, - { 312, 92, 7 , 8 }, - { 327, 92, 7 , 8 }, - { 342, 92, 7 , 9 }, - { 357, 92, 13 , 5 }, - { 378, 92, 7 , 7 }, - { 393, 92, 7 , 8 }, - { 408, 92, 7 , 8 }, - { 423, 92, 7 , 8 }, - { 438, 92, 7 , 8 }, - { 453, 92, 3 , 8 }, - { 464, 92, 2 , 8 }, - { 474, 92, 3 , 8 }, - { 485, 92, 3 , 8 }, - { 4, 114, 8 , 8 }, - { 20, 114, 7 , 8 }, - { 35, 114, 7 , 8 }, - { 50, 114, 7 , 8 }, - { 65, 114, 7 , 8 }, - { 80, 114, 7 , 8 }, - { 95, 114, 7 , 8 }, - { 110, 114, 5 , 6 }, - { 123, 114, 7 , 5 }, - { 138, 114, 7 , 8 }, - { 153, 114, 7 , 8 }, - { 168, 114, 7 , 8 }, - { 183, 114, 7 , 8 }, - { 198, 114, 7 , 10 }, - { 213, 114, 7 , 10 }, - { 228, 114, 7 , 10 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo cyberFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 0, 3, 2, { 0 }}, - { 34, 0, 3, 4, { 0 }}, - { 35, 0, 3, 8, { 0 }}, - { 36, 0, 3, 8, { 0 }}, - { 37, 0, 3, 8, { 0 }}, - { 38, 0, 3, 8, { 0 }}, - { 39, 0, 3, 2, { 0 }}, - { 40, 0, 3, 4, { 0 }}, - { 41, 0, 3, 4, { 0 }}, - { 42, 0, 4, 6, { 0 }}, - { 43, 0, 4, 6, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 7, 5, { 0 }}, - { 46, 0, 10, 2, { 0 }}, - { 47, 0, 3, 8, { 0 }}, - { 48, 0, 3, 8, { 0 }}, - { 49, 0, 3, 3, { 0 }}, - { 50, 0, 3, 8, { 0 }}, - { 51, 0, 3, 8, { 0 }}, - { 52, 0, 3, 8, { 0 }}, - { 53, 0, 3, 8, { 0 }}, - { 54, 0, 3, 8, { 0 }}, - { 55, 0, 3, 7, { 0 }}, - { 56, 0, 3, 8, { 0 }}, - { 57, 0, 3, 8, { 0 }}, - { 58, 0, 6, 2, { 0 }}, - { 59, 0, 6, 3, { 0 }}, - { 60, 0, 3, 5, { 0 }}, - { 61, 0, 6, 6, { 0 }}, - { 62, 0, 3, 5, { 0 }}, - { 63, 0, 3, 7, { 0 }}, - { 64, 0, 3, 8, { 0 }}, - { 65, 0, 3, 8, { 0 }}, - { 66, 0, 3, 8, { 0 }}, - { 67, 0, 3, 8, { 0 }}, - { 68, 0, 3, 8, { 0 }}, - { 69, 0, 3, 7, { 0 }}, - { 70, 0, 3, 7, { 0 }}, - { 71, 0, 3, 8, { 0 }}, - { 72, 0, 3, 8, { 0 }}, - { 73, 0, 3, 6, { 0 }}, - { 74, 0, 3, 7, { 0 }}, - { 75, 0, 3, 8, { 0 }}, - { 76, 0, 3, 7, { 0 }}, - { 77, 0, 3, 9, { 0 }}, - { 78, 0, 3, 8, { 0 }}, - { 79, 0, 3, 8, { 0 }}, - { 80, 0, 3, 8, { 0 }}, - { 81, 0, 3, 8, { 0 }}, - { 82, 0, 3, 8, { 0 }}, - { 83, 0, 3, 8, { 0 }}, - { 84, 0, 3, 8, { 0 }}, - { 85, 0, 3, 8, { 0 }}, - { 86, 0, 3, 8, { 0 }}, - { 87, 0, 3, 10, { 0 }}, - { 88, 0, 3, 8, { 0 }}, - { 89, 0, 3, 8, { 0 }}, - { 90, 0, 3, 8, { 0 }}, - { 91, 0, 3, 4, { 0 }}, - { 92, 0, 3, 8, { 0 }}, - { 93, 0, 3, 4, { 0 }}, - { 94, 0, 3, 4, { 0 }}, - { 95, 0, 11, 7, { 0 }}, - { 96, 0, 3, 3, { 0 }}, - { 97, 0, 6, 7, { 0 }}, - { 98, 0, 3, 7, { 0 }}, - { 99, 0, 6, 7, { 0 }}, - { 100, 0, 3, 7, { 0 }}, - { 101, 0, 6, 7, { 0 }}, - { 102, 0, 3, 5, { 0 }}, - { 103, 0, 6, 7, { 0 }}, - { 104, 0, 3, 7, { 0 }}, - { 105, 0, 3, 2, { 0 }}, - { 106, -2, 3, 2, { 0 }}, - { 107, 0, 3, 7, { 0 }}, - { 108, 0, 3, 4, { 0 }}, - { 109, 0, 6, 10, { 0 }}, - { 110, 0, 6, 7, { 0 }}, - { 111, 0, 6, 7, { 0 }}, - { 112, 0, 6, 7, { 0 }}, - { 113, 0, 6, 7, { 0 }}, - { 114, 0, 6, 6, { 0 }}, - { 115, 0, 6, 7, { 0 }}, - { 116, 0, 3, 6, { 0 }}, - { 117, 0, 6, 7, { 0 }}, - { 118, 0, 6, 7, { 0 }}, - { 119, 0, 6, 10, { 0 }}, - { 120, 0, 6, 7, { 0 }}, - { 121, 0, 6, 7, { 0 }}, - { 122, 0, 6, 7, { 0 }}, - { 123, 0, 3, 5, { 0 }}, - { 124, 0, 3, 2, { 0 }}, - { 125, 0, 3, 5, { 0 }}, - { 126, 0, 6, 8, { 0 }}, - { 161, 0, 3, 2, { 0 }}, - { 162, 0, 4, 7, { 0 }}, - { 163, 0, 3, 7, { 0 }}, - { 8364, 0, 3, 9, { 0 }}, - { 165, 0, 3, 8, { 0 }}, - { 352, 0, 1, 8, { 0 }}, - { 167, 0, 4, 5, { 0 }}, - { 353, 0, 3, 7, { 0 }}, - { 169, 0, 3, 9, { 0 }}, - { 170, 0, 3, 7, { 0 }}, - { 171, 0, 6, 6, { 0 }}, - { 172, 0, 7, 6, { 0 }}, - { 174, 0, 3, 9, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 0, 3, 4, { 0 }}, - { 177, 0, 6, 8, { 0 }}, - { 178, 0, 3, 4, { 0 }}, - { 179, 0, 3, 4, { 0 }}, - { 381, 0, 1, 8, { 0 }}, - { 181, 0, 6, 7, { 0 }}, - { 182, 0, 4, 6, { 0 }}, - { 183, 0, 7, 2, { 0 }}, - { 382, 0, 3, 7, { 0 }}, - { 185, 0, 3, 4, { 0 }}, - { 186, 0, 3, 5, { 0 }}, - { 187, 0, 6, 6, { 0 }}, - { 338, 0, 3, 14, { 0 }}, - { 339, 0, 6, 13, { 0 }}, - { 376, 0, 2, 8, { 0 }}, - { 191, 0, 3, 7, { 0 }}, - { 192, 0, 1, 8, { 0 }}, - { 193, 0, 1, 8, { 0 }}, - { 194, 0, 1, 8, { 0 }}, - { 195, 0, 1, 8, { 0 }}, - { 196, 0, 2, 8, { 0 }}, - { 197, 0, -1, 8, { 0 }}, - { 198, 0, 3, 14, { 0 }}, - { 199, 0, 3, 8, { 0 }}, - { 200, 0, 1, 7, { 0 }}, - { 201, 0, 1, 7, { 0 }}, - { 202, 0, 1, 7, { 0 }}, - { 203, 0, 2, 7, { 0 }}, - { 204, 0, 1, 6, { 0 }}, - { 205, 0, 1, 6, { 0 }}, - { 206, 0, 1, 6, { 0 }}, - { 207, 0, 2, 6, { 0 }}, - { 208, 0, 3, 9, { 0 }}, - { 209, 0, 1, 8, { 0 }}, - { 210, 0, 1, 8, { 0 }}, - { 211, 0, 1, 8, { 0 }}, - { 212, 0, 1, 8, { 0 }}, - { 213, 0, 1, 8, { 0 }}, - { 214, 0, 2, 8, { 0 }}, - { 215, 1, 6, 6, { 0 }}, - { 216, 0, 3, 8, { 0 }}, - { 217, 0, 1, 8, { 0 }}, - { 218, 0, 1, 8, { 0 }}, - { 219, 0, 1, 8, { 0 }}, - { 220, 0, 2, 8, { 0 }}, - { 221, 0, 1, 8, { 0 }}, - { 222, 0, 3, 7, { 0 }}, - { 223, 0, 3, 7, { 0 }}, - { 224, 0, 3, 7, { 0 }}, - { 225, 0, 3, 7, { 0 }}, - { 226, 0, 3, 7, { 0 }}, - { 227, 0, 3, 7, { 0 }}, - { 228, 0, 3, 7, { 0 }}, - { 229, 0, 2, 7, { 0 }}, - { 230, 0, 6, 13, { 0 }}, - { 231, 0, 6, 7, { 0 }}, - { 232, 0, 3, 7, { 0 }}, - { 233, 0, 3, 7, { 0 }}, - { 234, 0, 3, 7, { 0 }}, - { 235, 0, 3, 7, { 0 }}, - { 236, -1, 3, 2, { 0 }}, - { 237, 0, 3, 2, { 0 }}, - { 238, -1, 3, 2, { 0 }}, - { 239, -1, 3, 2, { 0 }}, - { 240, 0, 3, 8, { 0 }}, - { 241, 0, 3, 7, { 0 }}, - { 242, 0, 3, 7, { 0 }}, - { 243, 0, 3, 7, { 0 }}, - { 244, 0, 3, 7, { 0 }}, - { 245, 0, 3, 7, { 0 }}, - { 246, 0, 3, 7, { 0 }}, - { 247, 0, 4, 6, { 0 }}, - { 248, 0, 6, 7, { 0 }}, - { 249, 0, 3, 7, { 0 }}, - { 250, 0, 3, 7, { 0 }}, - { 251, 0, 3, 7, { 0 }}, - { 252, 0, 3, 7, { 0 }}, - { 253, 0, 3, 7, { 0 }}, - { 254, 0, 3, 7, { 0 }}, - { 255, 0, 3, 7, { 0 }}, -}; - -// Style loading function: Cyber -static void GuiLoadStyleCyber(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < CYBER_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(cyberStyleProps[i].controlId, cyberStyleProps[i].propertyId, cyberStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int cyberFontDataSize = 0; - unsigned char *data = DecompressData(cyberFontData, CYBER_STYLE_FONT_ATLAS_COMP_SIZE, &cyberFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 14; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, cyberFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, cyberFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.png deleted file mode 100644 index d4fd661..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.rgs deleted file mode 100644 index 142aeee..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.txt.rgs deleted file mode 100644 index 770213a..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/cyber/style_cyber.txt.rgs +++ /dev/null @@ -1,27 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 14 charset.txt Kyrou 7 Wide.ttf -p 00 00 0x2f7486ff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0x024658ff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0x51bfd3ff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0x82cde0ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0x3299b4ff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0xb6e1eaff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0xeb7630ff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0xffbc51ff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0xd86f36ff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0x134b5aff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0x02313dff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x17505fff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x0000000e TEXT_SIZE -p 00 17 0x00000000 TEXT_SPACING -p 00 18 0x81c0d0ff LINE_COLOR -p 00 19 0x00222bff BACKGROUND_COLOR -p 00 20 0x00000015 TEXT_LINE_SPACING diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/PixelOperator.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/PixelOperator.ttf deleted file mode 100644 index 34fe947..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/PixelOperator.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/README.md deleted file mode 100644 index c3595fc..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: dark - -Classical dark style with an extra high-def colour touch! Elegant and professional, perfect for the expensive tools! - -![dark style table](style_dark.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_dark.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_dark.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_dark.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_dark.h` | Embeddable style as code file, self-contained, includes font data | -| `style_dark.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![dark style screen](screenshot.png) - -## about font - -"Pixel Operator" font by de Jayvee Enaguas. - -CC0 1.0 Universal, downloaded from dafont.com: [pixel-operator](https://www.dafont.com/pixel-operator.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/font_LICENSE.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/font_LICENSE.txt deleted file mode 100644 index 0e259d4..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/font_LICENSE.txt +++ /dev/null @@ -1,121 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/screenshot.old.png deleted file mode 100644 index 712d30c..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/screenshot.png deleted file mode 100644 index cc9dbee..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.h deleted file mode 100644 index 500e56b..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.h +++ /dev/null @@ -1,589 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleDark(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define DARK_STYLE_PROPS_COUNT 23 - -// Custom style name: Dark -static const GuiStyleProp darkStyleProps[DARK_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x878787ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x2c2c2cff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xc3c3c3ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xe1e1e1ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x848484ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x181818ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x000000ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xefefefff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x202020ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x6a6a6aff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x818181ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x606060ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x9d9d9dff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x3c3c3cff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING - { 1, 5, (int)0xf7f7f7ff }, // LABEL_TEXT_COLOR_FOCUSED - { 1, 8, (int)0x898989ff }, // LABEL_TEXT_COLOR_PRESSED - { 4, 5, (int)0xb0b0b0ff }, // SLIDER_TEXT_COLOR_FOCUSED - { 5, 5, (int)0x848484ff }, // PROGRESSBAR_TEXT_COLOR_FOCUSED - { 9, 5, (int)0xf5f5f5ff }, // TEXTBOX_TEXT_COLOR_FOCUSED - { 10, 5, (int)0xf6f6f6ff }, // VALUEBOX_TEXT_COLOR_FOCUSED -}; - -// WARNING: This style uses a custom font: "PixelOperator.ttf" (size: 16, spacing: 0) - -#define DARK_STYLE_FONT_ATLAS_COMP_SIZE 2138 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char darkFontData[DARK_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xdb, 0x92, 0xa5, 0xba, 0x0d, 0x00, 0x50, 0xff, 0xff, 0x4f, 0x2b, 0x0f, 0xa9, 0x54, 0x32, 0x95, 0xd3, 0x80, 0x64, - 0xd9, 0x98, 0x9e, 0x35, 0xeb, 0xad, 0x77, 0x4f, 0xc3, 0x36, 0x96, 0x6f, 0x80, 0x1c, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xeb, - 0xc5, 0x3f, 0xfe, 0x24, 0x7e, 0xfc, 0xcd, 0x78, 0xfc, 0x77, 0xae, 0x7f, 0xfe, 0x9f, 0x4f, 0xe3, 0xe2, 0x58, 0xcf, 0xce, - 0x35, 0x7b, 0xdc, 0x48, 0x94, 0xc4, 0x3f, 0x9f, 0x5f, 0x3c, 0xfe, 0xbb, 0x3f, 0x7d, 0xbf, 0xfc, 0xef, 0x5f, 0xfd, 0xa5, - 0xeb, 0xb3, 0x8f, 0x54, 0xb9, 0xe7, 0xff, 0x4f, 0xee, 0x2a, 0xc6, 0x92, 0xb2, 0xbf, 0x3f, 0xbb, 0xfc, 0xb9, 0x77, 0xfe, - 0x9f, 0xb8, 0xf8, 0x3e, 0x95, 0xab, 0xf4, 0x24, 0xb6, 0x4e, 0x88, 0xff, 0x78, 0x14, 0x89, 0xd1, 0x5a, 0x73, 0xfe, 0x7b, - 0xd4, 0x68, 0x6c, 0xa9, 0xaa, 0x25, 0x79, 0x15, 0xe9, 0xf9, 0xf2, 0xb8, 0xaa, 0xfd, 0xf9, 0x16, 0x30, 0x5a, 0xbe, 0xcb, - 0x7c, 0x6d, 0x8c, 0xe9, 0xdf, 0x7e, 0x56, 0x93, 0x7a, 0xbe, 0xd5, 0xcc, 0x27, 0xa3, 0xe5, 0x2a, 0xbd, 0x11, 0xff, 0x51, - 0x6e, 0xa9, 0x22, 0x19, 0xd1, 0x1d, 0x25, 0x58, 0x69, 0x87, 0xc7, 0xc6, 0xf8, 0x8f, 0xd6, 0xb1, 0x4b, 0xb4, 0xd5, 0xb9, - 0x37, 0xe2, 0xff, 0xba, 0xd7, 0x1e, 0x2d, 0xf5, 0x26, 0x6e, 0xca, 0xa8, 0x37, 0x96, 0xd7, 0x8e, 0x53, 0x57, 0xc7, 0xff, - 0xf5, 0x6f, 0x66, 0xfb, 0xdb, 0x48, 0xf6, 0xdd, 0x1d, 0xe5, 0x54, 0xeb, 0xff, 0xfb, 0xcb, 0x31, 0x7e, 0xec, 0x9b, 0xab, - 0xe3, 0x90, 0x4c, 0x09, 0x47, 0x72, 0x76, 0x35, 0xdb, 0xc3, 0xbe, 0xd9, 0xff, 0x3f, 0x1b, 0x0b, 0x8a, 0xff, 0xb5, 0xf1, - 0x5f, 0xf9, 0x26, 0xf1, 0xf0, 0x0c, 0x2a, 0x7d, 0xe2, 0x38, 0x20, 0xfe, 0xb3, 0xed, 0xd0, 0x75, 0x59, 0x75, 0x8d, 0xe5, - 0xb3, 0xeb, 0x12, 0xcf, 0x66, 0xd8, 0xfb, 0x6a, 0x61, 0x7e, 0x6c, 0x94, 0x8f, 0xff, 0x7c, 0xeb, 0x79, 0xf7, 0xd7, 0xb2, - 0xa5, 0xfa, 0xf3, 0xcc, 0x6e, 0xbe, 0xc4, 0xf7, 0xc5, 0x7f, 0x14, 0xfa, 0x94, 0xf7, 0xe3, 0xb9, 0x27, 0xfe, 0xa3, 0xb0, - 0x72, 0x31, 0xda, 0x56, 0xf9, 0x6a, 0xeb, 0x12, 0x7d, 0x6b, 0x06, 0xef, 0x5f, 0x81, 0xfb, 0xf8, 0xbf, 0x9b, 0x0f, 0xbe, - 0xdf, 0xff, 0xc7, 0x11, 0xfd, 0x7f, 0x94, 0xd7, 0x86, 0x47, 0xa1, 0xf5, 0xfd, 0x5a, 0xfc, 0x47, 0x21, 0x66, 0xa2, 0x65, - 0x5e, 0x3e, 0x96, 0xac, 0xe5, 0xf5, 0xae, 0x19, 0xee, 0xb9, 0x5a, 0x77, 0xbd, 0x68, 0xd7, 0xac, 0xe6, 0x77, 0xc5, 0xff, - 0x68, 0xe8, 0xff, 0x9f, 0x8d, 0x01, 0x66, 0xbf, 0x47, 0x7c, 0xac, 0xf7, 0xef, 0x8c, 0xff, 0x5d, 0x2b, 0xf6, 0xeb, 0x6b, - 0x63, 0x1c, 0x71, 0x65, 0xac, 0xff, 0x77, 0x8e, 0xff, 0xeb, 0x6b, 0x00, 0xb9, 0x79, 0x4c, 0x1c, 0x1a, 0xfd, 0x95, 0x39, - 0x73, 0xd7, 0x1d, 0xfb, 0xde, 0xa7, 0x09, 0xa2, 0xf0, 0xac, 0x46, 0xcf, 0x2a, 0xce, 0xea, 0x6b, 0x90, 0xef, 0xff, 0x77, - 0xdd, 0xff, 0xbf, 0x1f, 0x73, 0x9f, 0xd1, 0xff, 0x8f, 0xdb, 0xde, 0xfd, 0x94, 0xf3, 0x01, 0xf6, 0xb6, 0x00, 0x21, 0xfa, - 0xc1, 0x73, 0xc4, 0x80, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x9f, 0xcf, - 0xef, 0xcf, 0x63, 0x90, 0xcf, 0x84, 0xbd, 0x3e, 0x03, 0xfb, 0x4c, 0x4e, 0xe0, 0x6a, 0x09, 0x75, 0xfd, 0xc5, 0xeb, 0xdc, - 0xf1, 0x99, 0x4c, 0x0b, 0xcf, 0x6b, 0x46, 0xa4, 0x77, 0x3f, 0xe8, 0xcc, 0x28, 0x50, 0xc9, 0x69, 0x30, 0x92, 0x75, 0xa2, - 0x37, 0x97, 0x52, 0xee, 0xec, 0xf7, 0xd4, 0xf8, 0x2f, 0xc4, 0xff, 0xfb, 0x9f, 0x8c, 0x42, 0xfe, 0x9e, 0x9d, 0xf1, 0x9f, - 0xad, 0x7b, 0xb5, 0xfc, 0xb8, 0x73, 0x7d, 0xc9, 0xee, 0x8c, 0x62, 0xd1, 0x78, 0x0d, 0xf7, 0xf5, 0xab, 0x7f, 0xe6, 0xd0, - 0xd9, 0x51, 0xaf, 0x67, 0xe2, 0x3f, 0x9b, 0xfb, 0x34, 0x2e, 0x5a, 0xe1, 0x73, 0xe2, 0x7f, 0x6c, 0x89, 0xff, 0xf8, 0x48, - 0xfc, 0x77, 0x67, 0x92, 0xe9, 0xca, 0x42, 0x5e, 0xc9, 0x7c, 0x93, 0xbf, 0x86, 0xf5, 0x0c, 0xbf, 0xd5, 0x1a, 0xf7, 0x9d, - 0xf8, 0xaf, 0xd4, 0xad, 0xeb, 0x3c, 0xab, 0xe2, 0xff, 0xbe, 0x6c, 0x2b, 0xbd, 0xc9, 0xfc, 0xcf, 0x7b, 0x22, 0x7f, 0x4f, - 0x1e, 0xdd, 0xbb, 0x7d, 0xb4, 0xd6, 0xd6, 0x95, 0xd9, 0xbe, 0xf2, 0x2b, 0xf1, 0x1f, 0xc5, 0xbf, 0x12, 0x37, 0x2d, 0x4a, - 0x6f, 0x06, 0xf6, 0x9e, 0xac, 0x6d, 0x7b, 0xe3, 0xbf, 0x7b, 0xdf, 0x9f, 0x33, 0xe2, 0xff, 0xfd, 0x3c, 0xba, 0xab, 0xe6, - 0x70, 0xbd, 0x7d, 0xe5, 0xef, 0xee, 0xff, 0xef, 0x5b, 0xc9, 0x1d, 0xf5, 0x63, 0xa6, 0xa7, 0x7f, 0xb3, 0xff, 0x7f, 0xef, - 0xe7, 0xef, 0xc6, 0x7f, 0x57, 0x6d, 0x8f, 0x8d, 0x23, 0x93, 0x6a, 0x5f, 0xb9, 0x73, 0x95, 0x6c, 0xf7, 0xfc, 0x7f, 0xd5, - 0x37, 0x1b, 0xe9, 0xd1, 0x44, 0x1c, 0x1b, 0xff, 0x33, 0xab, 0x90, 0xeb, 0xc6, 0x0b, 0xef, 0x8c, 0xff, 0x6b, 0xfb, 0xdb, - 0x56, 0x76, 0x05, 0x3c, 0xad, 0xff, 0xdf, 0x75, 0x97, 0x6c, 0x6c, 0x8e, 0xc9, 0xbd, 0xc7, 0xea, 0xdc, 0xa5, 0x2e, 0x9f, - 0xbf, 0x3f, 0x9a, 0x47, 0x78, 0x5f, 0x8f, 0xff, 0xfa, 0x2a, 0xff, 0x68, 0x5a, 0x95, 0x7c, 0x6f, 0xfc, 0xbf, 0x7b, 0xa7, - 0x93, 0xca, 0x51, 0x7a, 0xda, 0xdf, 0x67, 0x77, 0x85, 0x7b, 0x7b, 0x81, 0x9f, 0xef, 0x36, 0x44, 0x53, 0xcf, 0xd1, 0x95, - 0xbf, 0xff, 0xcf, 0x73, 0xcb, 0xef, 0x78, 0x96, 0xbf, 0x13, 0x1f, 0xc9, 0xfd, 0xf4, 0xdf, 0x88, 0xff, 0xca, 0x91, 0x2b, - 0xff, 0x2b, 0x7b, 0x0d, 0x3b, 0xe3, 0xff, 0xbd, 0x16, 0x40, 0xde, 0x4d, 0x38, 0x71, 0x14, 0x03, 0xfc, 0x9e, 0x16, 0xc0, - 0x0e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xee, 0x37, 0xb1, 0x7f, 0xce, - 0xcd, 0x55, 0xc9, 0x1a, 0x9f, 0x7f, 0x4f, 0x7a, 0x67, 0xc6, 0xfc, 0x71, 0x93, 0x85, 0xec, 0xfa, 0xb7, 0xfe, 0xfc, 0xa4, - 0x23, 0x1f, 0x6f, 0x34, 0xbe, 0xb5, 0x9e, 0xc9, 0xe5, 0x1d, 0x85, 0x6c, 0x03, 0x57, 0x6f, 0xc6, 0xe6, 0xae, 0x41, 0xee, - 0x18, 0xd1, 0x9e, 0xcf, 0x2c, 0xd2, 0xd9, 0x63, 0xfe, 0xf7, 0x9c, 0x9f, 0x67, 0xfa, 0x8d, 0xf2, 0x9b, 0xc6, 0x77, 0xb9, - 0xcc, 0xf2, 0xf9, 0x11, 0x2a, 0x39, 0xf3, 0xf2, 0x79, 0x36, 0x4f, 0xcf, 0x98, 0x3f, 0x9f, 0x79, 0x27, 0x6e, 0xea, 0xe4, - 0xf3, 0x5a, 0xfa, 0x24, 0x73, 0x44, 0x4f, 0x06, 0xa1, 0xda, 0x37, 0x8e, 0xe9, 0xda, 0x5a, 0xb9, 0xde, 0x99, 0x23, 0xc4, - 0xf4, 0xfb, 0xfc, 0x95, 0xfa, 0x1e, 0x93, 0xd7, 0xbd, 0xfe, 0x8d, 0x67, 0xb2, 0x10, 0x44, 0xa9, 0xa7, 0xeb, 0x2c, 0xc1, - 0xeb, 0x4f, 0xf2, 0x19, 0x33, 0xe3, 0x61, 0x7c, 0x75, 0xff, 0x74, 0x24, 0xdb, 0x9b, 0x4a, 0xbe, 0xba, 0x99, 0x5d, 0x33, - 0xe6, 0xc6, 0x88, 0xe3, 0x22, 0xbb, 0x52, 0x3e, 0xfa, 0x7f, 0xee, 0x6f, 0x62, 0x32, 0xfe, 0xa3, 0x98, 0x59, 0xa8, 0x1e, - 0x23, 0xd9, 0xf8, 0x9f, 0xbf, 0x0a, 0xbb, 0xe2, 0xbf, 0x92, 0xf5, 0xe0, 0xfd, 0x8c, 0xd9, 0xb5, 0x9e, 0x70, 0x6f, 0xfc, - 0xc7, 0x83, 0xf6, 0x6b, 0xa4, 0xe7, 0x2f, 0xa3, 0x90, 0xe1, 0xfc, 0xf9, 0xec, 0x22, 0x5a, 0xfb, 0xff, 0x71, 0x59, 0x26, - 0xf1, 0xc2, 0xf8, 0xbf, 0xb6, 0xdf, 0x5b, 0x2e, 0xfe, 0x67, 0x5a, 0xa7, 0xfd, 0xfd, 0x7f, 0xad, 0x5f, 0x3b, 0xb9, 0xff, - 0x7f, 0x27, 0x63, 0x76, 0x14, 0xe6, 0xd9, 0x95, 0xe3, 0xc6, 0xe4, 0xc8, 0xe0, 0xd9, 0x5c, 0x30, 0x1a, 0xe6, 0xab, 0x1d, - 0xf1, 0xdf, 0x3f, 0xc2, 0xae, 0xcc, 0xad, 0x6a, 0xfd, 0x7f, 0xb4, 0xce, 0xff, 0x23, 0xdd, 0xce, 0xcf, 0xc5, 0x7f, 0xe7, - 0x6e, 0x4b, 0x2b, 0x32, 0xe6, 0xe6, 0x77, 0x76, 0x7c, 0xab, 0xff, 0x1f, 0xa5, 0xfe, 0xbf, 0xd6, 0x7b, 0xcd, 0xd4, 0xca, - 0xd8, 0x90, 0xeb, 0x2e, 0x37, 0xfe, 0x5f, 0x3d, 0xca, 0xce, 0xcf, 0x28, 0x63, 0x53, 0xfb, 0xd4, 0x3d, 0xf7, 0xab, 0x45, - 0x4b, 0xa4, 0xc7, 0xd7, 0x3b, 0x33, 0xe6, 0x56, 0xd6, 0x9e, 0xcf, 0x8f, 0xff, 0xce, 0x3d, 0x4c, 0x2a, 0x77, 0x17, 0xa2, - 0xa1, 0x6f, 0x5e, 0xdd, 0xff, 0xcf, 0xce, 0xff, 0x2b, 0xb9, 0xf4, 0xf7, 0xac, 0xff, 0x8d, 0xa5, 0x6b, 0x3f, 0xd1, 0x7a, - 0x3f, 0x71, 0x1c, 0xd0, 0x7e, 0x77, 0x66, 0x89, 0x7f, 0x63, 0xfe, 0xdf, 0x95, 0x81, 0x7d, 0x94, 0xef, 0x09, 0xd5, 0xd7, - 0xff, 0x67, 0x6b, 0x60, 0x1c, 0xd3, 0xf7, 0x8f, 0xc7, 0x7b, 0xe8, 0xc4, 0x4b, 0xd1, 0x7f, 0x5a, 0xfc, 0x9f, 0xf2, 0x44, - 0x43, 0x47, 0xbb, 0x15, 0x2d, 0xad, 0x5b, 0x65, 0xdf, 0x96, 0xce, 0x71, 0xd4, 0xfc, 0xfc, 0x7f, 0xcd, 0xba, 0xfa, 0x1b, - 0xc7, 0x98, 0xb9, 0x23, 0x3b, 0x1f, 0xff, 0xb1, 0xbc, 0xe4, 0xe4, 0x23, 0xfe, 0x4e, 0x2b, 0x75, 0xde, 0xf1, 0xfe, 0xe6, - 0xda, 0x13, 0x1b, 0x9f, 0xb5, 0x13, 0xa1, 0xc4, 0xd1, 0xf3, 0x21, 0xd7, 0x03, 0xfe, 0xe6, 0xf9, 0xd0, 0xdf, 0xfa, 0x1c, - 0xbc, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x7d, 0x3b, 0xa4, 0x92, 0x59, - 0x72, 0x34, 0xbf, 0x8b, 0x9e, 0xcf, 0xad, 0x5f, 0x3d, 0xbb, 0xbb, 0xf7, 0xa5, 0x6b, 0xf9, 0x79, 0x6b, 0xe5, 0x34, 0x97, - 0x8f, 0x28, 0x97, 0x53, 0xed, 0x7e, 0xff, 0x83, 0x38, 0xf2, 0x6a, 0xde, 0x65, 0x75, 0x8d, 0x42, 0x3e, 0xd5, 0xce, 0xeb, - 0x35, 0x4a, 0x65, 0xb7, 0xab, 0x96, 0x3d, 0x7f, 0x3b, 0x34, 0x36, 0xbc, 0x4f, 0x59, 0x8b, 0x85, 0x5a, 0x6e, 0xc3, 0xb9, - 0xdc, 0x61, 0xb1, 0xf8, 0x9b, 0xe5, 0xca, 0x6f, 0x7e, 0x3f, 0x89, 0xfb, 0x6c, 0xab, 0xf1, 0xb9, 0xab, 0x59, 0xcd, 0xf8, - 0xde, 0x7d, 0xbd, 0xea, 0xb5, 0xe5, 0x84, 0x5a, 0xb6, 0x7e, 0x67, 0x89, 0x37, 0xde, 0x6e, 0xad, 0x66, 0xc4, 0x8d, 0xcf, - 0xbf, 0x73, 0x1a, 0x1f, 0xcd, 0x05, 0x50, 0xcb, 0x13, 0xb9, 0xeb, 0x5b, 0x55, 0x8e, 0x14, 0xa5, 0x3d, 0x9b, 0xc6, 0xf6, - 0xec, 0x10, 0xf9, 0xec, 0xe7, 0xa3, 0x94, 0xef, 0xb3, 0xfb, 0x93, 0xca, 0x15, 0xa9, 0xc7, 0xff, 0x55, 0x39, 0x55, 0x3e, - 0x99, 0xed, 0xff, 0xc7, 0xf2, 0x7d, 0x18, 0x4e, 0xb9, 0x9a, 0x77, 0xfd, 0x7f, 0xb4, 0xed, 0x98, 0xb4, 0xf7, 0x93, 0x1d, - 0xe5, 0xda, 0x11, 0x0b, 0xbb, 0xf6, 0xfb, 0x8b, 0x74, 0xad, 0x18, 0xe9, 0x1c, 0x7b, 0xf5, 0xd9, 0xd7, 0xae, 0x4f, 0x56, - 0xc4, 0x7f, 0x5c, 0xcc, 0x93, 0xbb, 0x77, 0x1d, 0xeb, 0xbe, 0x9a, 0x4f, 0x5a, 0x86, 0x2f, 0xc6, 0xff, 0x8e, 0xf8, 0x99, - 0x9d, 0xff, 0x47, 0x79, 0x37, 0x9d, 0x33, 0x6b, 0x4c, 0x3c, 0xcc, 0xe8, 0xfc, 0xdb, 0xe2, 0x7f, 0x6f, 0x19, 0x77, 0xb7, - 0xe6, 0xd7, 0x23, 0xec, 0xf1, 0xd1, 0xf8, 0x9f, 0xdd, 0xef, 0x6d, 0x7e, 0xee, 0x7a, 0xbf, 0xfe, 0xdf, 0xb9, 0xb2, 0x71, - 0x46, 0xfc, 0x9f, 0x12, 0xe5, 0xb9, 0x32, 0x5f, 0x1b, 0xff, 0xef, 0xc7, 0x50, 0x57, 0x1f, 0xf6, 0xde, 0xb9, 0x47, 0xdb, - 0xfc, 0xff, 0x7e, 0x97, 0xe4, 0xdc, 0xdd, 0x9d, 0xbd, 0xab, 0x49, 0x3b, 0x4b, 0xbd, 0x73, 0xcf, 0xe1, 0xa7, 0x63, 0x87, - 0xee, 0xf9, 0xee, 0x19, 0xfd, 0x7f, 0x88, 0xff, 0x05, 0x6b, 0xe1, 0x27, 0xf4, 0x92, 0xab, 0xee, 0xe5, 0xe5, 0xb3, 0xd8, - 0xf7, 0x7e, 0x32, 0x5b, 0x52, 0xf9, 0xfb, 0xff, 0x5f, 0x1f, 0xff, 0x3f, 0xd9, 0xe1, 0xe7, 0x5b, 0xf1, 0x1f, 0xc5, 0x15, - 0xc5, 0x33, 0xe2, 0x3f, 0x36, 0x8e, 0x6a, 0x57, 0xdc, 0xcb, 0x3f, 0x79, 0xfc, 0xdf, 0xbf, 0x13, 0xd4, 0xd7, 0xe3, 0xff, - 0x0b, 0x63, 0xe8, 0x35, 0x4f, 0xa1, 0xbc, 0x17, 0xff, 0x73, 0x77, 0x86, 0x4f, 0x1e, 0xff, 0x9f, 0x1e, 0xff, 0xb3, 0x57, - 0x25, 0x36, 0xcd, 0xff, 0x9f, 0x8e, 0x34, 0x7e, 0x7f, 0xfc, 0x8f, 0xad, 0x7b, 0xf7, 0xd7, 0xe7, 0x9b, 0xe3, 0xd0, 0x67, - 0x61, 0xce, 0x79, 0x8a, 0xe3, 0xfd, 0x99, 0xcd, 0xfc, 0xae, 0xa8, 0xeb, 0xef, 0xff, 0x8f, 0x65, 0xfd, 0x7f, 0xef, 0x93, - 0x2d, 0xbb, 0xee, 0xff, 0xef, 0x7d, 0xa2, 0xa8, 0xfb, 0x0c, 0xc5, 0xff, 0x37, 0xda, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x73, 0xf2, 0x2b, 0x72, 0xeb, 0xf7, 0xe7, 0xc3, 0x38, 0x3d, 0xb7, 0xfe, - 0xdd, 0xfb, 0x33, 0xe3, 0xd8, 0xdc, 0xfa, 0xe3, 0x51, 0x8e, 0xa2, 0xef, 0xe5, 0xd6, 0xf7, 0xee, 0xc7, 0xd3, 0xb7, 0x64, - 0xd6, 0xe5, 0xd6, 0xef, 0x7b, 0x87, 0xfa, 0xf4, 0xdc, 0xfa, 0xe3, 0x26, 0x13, 0xd1, 0xc9, 0xb9, 0xf5, 0xeb, 0x6f, 0x51, - 0x9d, 0x9a, 0x5b, 0x9f, 0xb5, 0xef, 0x4e, 0x3e, 0x6d, 0xfb, 0xe3, 0xc5, 0x6b, 0xf6, 0x46, 0x36, 0x84, 0x93, 0x6b, 0x64, - 0x3e, 0x5b, 0xd3, 0x8a, 0x16, 0xa5, 0xf3, 0x7d, 0xcd, 0xb3, 0x73, 0xeb, 0x7f, 0x3d, 0xc6, 0xeb, 0xd9, 0x58, 0xa3, 0x9c, - 0xf3, 0xbe, 0xef, 0x5d, 0xed, 0x48, 0x8d, 0x1b, 0xd7, 0xe6, 0xd6, 0xba, 0x6e, 0x47, 0xcf, 0xdd, 0x29, 0xe1, 0xdb, 0xb9, - 0xb5, 0xc5, 0x7f, 0x4f, 0xab, 0x1b, 0x4d, 0x51, 0xf7, 0xf4, 0x93, 0x7d, 0x59, 0x83, 0xfa, 0xe2, 0x3f, 0xda, 0x3f, 0xdb, - 0x9b, 0x5b, 0xab, 0xba, 0x9e, 0x20, 0xfe, 0x7f, 0x57, 0x3b, 0x90, 0x99, 0xd1, 0x3e, 0x29, 0xf7, 0x37, 0x6b, 0xc0, 0xce, - 0xdc, 0x5a, 0x5f, 0x8f, 0xff, 0x4a, 0xff, 0x20, 0xfe, 0x7f, 0xcf, 0xf8, 0xbf, 0xaf, 0x2f, 0xaf, 0xaf, 0xff, 0x7f, 0x79, - 0x6f, 0xad, 0xdf, 0x19, 0xff, 0x67, 0xe4, 0xd6, 0x15, 0xff, 0xef, 0x8c, 0xff, 0x6b, 0xfb, 0x13, 0xac, 0x58, 0xcd, 0xed, - 0x9d, 0x4d, 0x88, 0xff, 0xd5, 0x75, 0xe7, 0xa4, 0x9d, 0x21, 0xc4, 0x78, 0x7d, 0xfe, 0x5f, 0xdb, 0x13, 0xb4, 0xda, 0x02, - 0xec, 0xcb, 0xd5, 0xfa, 0x46, 0x6e, 0x7d, 0xb9, 0x75, 0x67, 0xae, 0xd7, 0xf5, 0xe8, 0xef, 0x9b, 0xf7, 0x63, 0x4e, 0x1f, - 0xff, 0xf7, 0xde, 0xab, 0xf9, 0xff, 0x35, 0xa5, 0xd5, 0x2b, 0xde, 0xab, 0xc6, 0xff, 0x2b, 0xda, 0xd8, 0x37, 0x4b, 0x63, - 0xcd, 0xbd, 0xa3, 0xfe, 0x33, 0x8c, 0xa6, 0xd1, 0x1f, 0xef, 0xb4, 0x1a, 0xb0, 0x66, 0x9c, 0xf1, 0x7e, 0x4b, 0x08, 0x7c, - 0xed, 0x49, 0x2e, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x93, 0xfc, 0xfb, 0x9f, 0x72, 0x00, 0xf1, 0x0f, 0xfc, 0x75, 0xf1, 0xff, 0x2f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle darkFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 1 , 9 }, - { 25, 4, 3 , 3 }, - { 36, 4, 6 , 9 }, - { 50, 4, 5 , 13 }, - { 63, 4, 7 , 9 }, - { 78, 4, 5 , 9 }, - { 91, 4, 1 , 3 }, - { 100, 4, 3 , 9 }, - { 111, 4, 3 , 9 }, - { 122, 4, 5 , 5 }, - { 135, 4, 5 , 5 }, - { 148, 4, 2 , 3 }, - { 158, 4, 4 , 1 }, - { 170, 4, 1 , 1 }, - { 179, 4, 3 , 9 }, - { 190, 4, 5 , 9 }, - { 203, 4, 3 , 9 }, - { 214, 4, 5 , 9 }, - { 227, 4, 5 , 9 }, - { 240, 4, 5 , 9 }, - { 253, 4, 5 , 9 }, - { 266, 4, 5 , 9 }, - { 279, 4, 5 , 9 }, - { 292, 4, 5 , 9 }, - { 305, 4, 5 , 9 }, - { 318, 4, 1 , 7 }, - { 327, 4, 2 , 9 }, - { 337, 4, 3 , 5 }, - { 348, 4, 4 , 3 }, - { 360, 4, 3 , 5 }, - { 371, 4, 5 , 9 }, - { 384, 4, 7 , 9 }, - { 399, 4, 5 , 9 }, - { 412, 4, 5 , 9 }, - { 425, 4, 5 , 9 }, - { 438, 4, 5 , 9 }, - { 451, 4, 5 , 9 }, - { 464, 4, 5 , 9 }, - { 477, 4, 5 , 9 }, - { 490, 4, 5 , 9 }, - { 4, 28, 1 , 9 }, - { 13, 28, 5 , 9 }, - { 26, 28, 5 , 9 }, - { 39, 28, 5 , 9 }, - { 52, 28, 7 , 9 }, - { 67, 28, 5 , 9 }, - { 80, 28, 5 , 9 }, - { 93, 28, 5 , 9 }, - { 106, 28, 5 , 9 }, - { 119, 28, 5 , 9 }, - { 132, 28, 5 , 9 }, - { 145, 28, 5 , 9 }, - { 158, 28, 5 , 9 }, - { 171, 28, 5 , 9 }, - { 184, 28, 7 , 9 }, - { 199, 28, 5 , 9 }, - { 212, 28, 5 , 9 }, - { 225, 28, 5 , 9 }, - { 238, 28, 3 , 9 }, - { 249, 28, 3 , 9 }, - { 260, 28, 3 , 9 }, - { 271, 28, 5 , 3 }, - { 284, 28, 5 , 1 }, - { 297, 28, 2 , 2 }, - { 307, 28, 5 , 7 }, - { 320, 28, 5 , 9 }, - { 333, 28, 5 , 7 }, - { 346, 28, 5 , 9 }, - { 359, 28, 5 , 7 }, - { 372, 28, 4 , 9 }, - { 384, 28, 5 , 9 }, - { 397, 28, 5 , 9 }, - { 410, 28, 1 , 9 }, - { 419, 28, 5 , 11 }, - { 432, 28, 5 , 9 }, - { 445, 28, 2 , 9 }, - { 455, 28, 7 , 7 }, - { 470, 28, 5 , 7 }, - { 483, 28, 5 , 7 }, - { 496, 28, 5 , 9 }, - { 4, 52, 5 , 9 }, - { 17, 52, 5 , 7 }, - { 30, 52, 5 , 7 }, - { 43, 52, 4 , 8 }, - { 55, 52, 5 , 7 }, - { 68, 52, 5 , 7 }, - { 81, 52, 7 , 7 }, - { 96, 52, 5 , 7 }, - { 109, 52, 5 , 9 }, - { 122, 52, 5 , 7 }, - { 135, 52, 4 , 9 }, - { 147, 52, 1 , 9 }, - { 156, 52, 4 , 9 }, - { 168, 52, 6 , 2 }, - { 182, 52, 1 , 9 }, - { 191, 52, 5 , 11 }, - { 204, 52, 6 , 9 }, - { 218, 52, 6 , 9 }, - { 232, 52, 5 , 9 }, - { 245, 52, 5 , 12 }, - { 258, 52, 0 , 0 }, - { 266, 52, 5 , 10 }, - { 279, 52, 7 , 9 }, - { 294, 52, 0 , 0 }, - { 302, 52, 6 , 5 }, - { 316, 52, 5 , 3 }, - { 329, 52, 7 , 9 }, - { 344, 52, 0 , 0 }, - { 352, 52, 4 , 4 }, - { 364, 52, 5 , 7 }, - { 377, 52, 0 , 0 }, - { 385, 52, 0 , 0 }, - { 393, 52, 5 , 12 }, - { 406, 52, 5 , 9 }, - { 419, 52, 7 , 9 }, - { 434, 52, 1 , 1 }, - { 443, 52, 5 , 10 }, - { 456, 52, 0 , 0 }, - { 464, 52, 0 , 0 }, - { 472, 52, 6 , 5 }, - { 486, 52, 9 , 9 }, - { 4, 76, 9 , 7 }, - { 21, 76, 5 , 11 }, - { 34, 76, 5 , 9 }, - { 47, 76, 5 , 12 }, - { 60, 76, 5 , 12 }, - { 73, 76, 5 , 12 }, - { 86, 76, 6 , 12 }, - { 100, 76, 5 , 11 }, - { 113, 76, 5 , 13 }, - { 126, 76, 9 , 9 }, - { 143, 76, 5 , 12 }, - { 156, 76, 5 , 12 }, - { 169, 76, 5 , 12 }, - { 182, 76, 5 , 12 }, - { 195, 76, 5 , 11 }, - { 208, 76, 2 , 12 }, - { 218, 76, 2 , 12 }, - { 228, 76, 3 , 12 }, - { 239, 76, 3 , 11 }, - { 250, 76, 6 , 9 }, - { 264, 76, 6 , 12 }, - { 278, 76, 5 , 12 }, - { 291, 76, 5 , 12 }, - { 304, 76, 5 , 12 }, - { 317, 76, 6 , 12 }, - { 331, 76, 5 , 11 }, - { 344, 76, 5 , 5 }, - { 357, 76, 7 , 9 }, - { 372, 76, 5 , 12 }, - { 385, 76, 5 , 12 }, - { 398, 76, 5 , 12 }, - { 411, 76, 5 , 11 }, - { 424, 76, 5 , 12 }, - { 437, 76, 5 , 9 }, - { 450, 76, 5 , 9 }, - { 463, 76, 5 , 10 }, - { 476, 76, 5 , 10 }, - { 489, 76, 5 , 10 }, - { 4, 100, 6 , 10 }, - { 18, 100, 5 , 9 }, - { 31, 100, 5 , 11 }, - { 44, 100, 9 , 7 }, - { 61, 100, 5 , 10 }, - { 74, 100, 5 , 10 }, - { 87, 100, 5 , 10 }, - { 100, 100, 5 , 10 }, - { 113, 100, 5 , 9 }, - { 126, 100, 2 , 10 }, - { 136, 100, 2 , 10 }, - { 146, 100, 3 , 10 }, - { 157, 100, 3 , 9 }, - { 168, 100, 6 , 9 }, - { 182, 100, 6 , 10 }, - { 196, 100, 5 , 10 }, - { 209, 100, 5 , 10 }, - { 222, 100, 5 , 10 }, - { 235, 100, 6 , 10 }, - { 249, 100, 5 , 9 }, - { 262, 100, 5 , 5 }, - { 275, 100, 7 , 7 }, - { 290, 100, 5 , 10 }, - { 303, 100, 5 , 10 }, - { 316, 100, 5 , 10 }, - { 329, 100, 5 , 9 }, - { 342, 100, 5 , 12 }, - { 355, 100, 5 , 11 }, - { 368, 100, 5 , 11 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo darkFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 2, 4, 5, { 0 }}, - { 34, 2, 4, 7, { 0 }}, - { 35, 1, 4, 8, { 0 }}, - { 36, 1, 2, 7, { 0 }}, - { 37, 1, 4, 9, { 0 }}, - { 38, 1, 4, 7, { 0 }}, - { 39, 2, 4, 5, { 0 }}, - { 40, 3, 4, 7, { 0 }}, - { 41, 1, 4, 7, { 0 }}, - { 42, 1, 4, 7, { 0 }}, - { 43, 1, 6, 7, { 0 }}, - { 44, 1, 12, 5, { 0 }}, - { 45, 1, 8, 6, { 0 }}, - { 46, 2, 12, 5, { 0 }}, - { 47, 1, 4, 5, { 0 }}, - { 48, 1, 4, 7, { 0 }}, - { 49, 2, 4, 7, { 0 }}, - { 50, 1, 4, 7, { 0 }}, - { 51, 1, 4, 7, { 0 }}, - { 52, 1, 4, 7, { 0 }}, - { 53, 1, 4, 7, { 0 }}, - { 54, 1, 4, 7, { 0 }}, - { 55, 1, 4, 7, { 0 }}, - { 56, 1, 4, 7, { 0 }}, - { 57, 1, 4, 7, { 0 }}, - { 58, 2, 6, 5, { 0 }}, - { 59, 1, 6, 5, { 0 }}, - { 60, 1, 6, 5, { 0 }}, - { 61, 1, 7, 6, { 0 }}, - { 62, 1, 6, 5, { 0 }}, - { 63, 1, 4, 7, { 0 }}, - { 64, 1, 4, 9, { 0 }}, - { 65, 1, 4, 7, { 0 }}, - { 66, 1, 4, 7, { 0 }}, - { 67, 1, 4, 7, { 0 }}, - { 68, 1, 4, 7, { 0 }}, - { 69, 1, 4, 7, { 0 }}, - { 70, 1, 4, 7, { 0 }}, - { 71, 1, 4, 7, { 0 }}, - { 72, 1, 4, 7, { 0 }}, - { 73, 2, 4, 5, { 0 }}, - { 74, 1, 4, 7, { 0 }}, - { 75, 1, 4, 7, { 0 }}, - { 76, 1, 4, 7, { 0 }}, - { 77, 1, 4, 9, { 0 }}, - { 78, 1, 4, 7, { 0 }}, - { 79, 1, 4, 7, { 0 }}, - { 80, 1, 4, 7, { 0 }}, - { 81, 1, 4, 7, { 0 }}, - { 82, 1, 4, 7, { 0 }}, - { 83, 1, 4, 7, { 0 }}, - { 84, 1, 4, 7, { 0 }}, - { 85, 1, 4, 7, { 0 }}, - { 86, 1, 4, 7, { 0 }}, - { 87, 1, 4, 9, { 0 }}, - { 88, 1, 4, 7, { 0 }}, - { 89, 1, 4, 7, { 0 }}, - { 90, 1, 4, 7, { 0 }}, - { 91, 3, 4, 7, { 0 }}, - { 92, 1, 4, 5, { 0 }}, - { 93, 1, 4, 7, { 0 }}, - { 94, 1, 4, 7, { 0 }}, - { 95, 0, 14, 5, { 0 }}, - { 96, 1, 4, 5, { 0 }}, - { 97, 1, 6, 7, { 0 }}, - { 98, 1, 4, 7, { 0 }}, - { 99, 1, 6, 7, { 0 }}, - { 100, 1, 4, 7, { 0 }}, - { 101, 1, 6, 7, { 0 }}, - { 102, 1, 4, 6, { 0 }}, - { 103, 1, 6, 7, { 0 }}, - { 104, 1, 4, 7, { 0 }}, - { 105, 2, 4, 5, { 0 }}, - { 106, 1, 4, 7, { 0 }}, - { 107, 1, 4, 7, { 0 }}, - { 108, 2, 4, 5, { 0 }}, - { 109, 1, 6, 9, { 0 }}, - { 110, 1, 6, 7, { 0 }}, - { 111, 1, 6, 7, { 0 }}, - { 112, 1, 6, 7, { 0 }}, - { 113, 1, 6, 7, { 0 }}, - { 114, 1, 6, 7, { 0 }}, - { 115, 1, 6, 7, { 0 }}, - { 116, 1, 5, 6, { 0 }}, - { 117, 1, 6, 7, { 0 }}, - { 118, 1, 6, 7, { 0 }}, - { 119, 1, 6, 9, { 0 }}, - { 120, 1, 6, 7, { 0 }}, - { 121, 1, 6, 7, { 0 }}, - { 122, 1, 6, 7, { 0 }}, - { 123, 2, 4, 7, { 0 }}, - { 124, 2, 4, 5, { 0 }}, - { 125, 1, 4, 7, { 0 }}, - { 126, 1, 4, 8, { 0 }}, - { 161, 2, 6, 5, { 0 }}, - { 162, 1, 4, 7, { 0 }}, - { 163, 1, 4, 8, { 0 }}, - { 8364, 1, 4, 8, { 0 }}, - { 165, 1, 4, 7, { 0 }}, - { 352, 1, 1, 7, { 0 }}, - { 167, 0, 0, 0, { 0 }}, - { 353, 1, 3, 7, { 0 }}, - { 169, 1, 4, 9, { 0 }}, - { 170, 0, 0, 0, { 0 }}, - { 171, 1, 6, 8, { 0 }}, - { 172, 1, 8, 7, { 0 }}, - { 174, 1, 4, 9, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 1, 4, 6, { 0 }}, - { 177, 1, 6, 7, { 0 }}, - { 178, 0, 0, 0, { 0 }}, - { 179, 0, 0, 0, { 0 }}, - { 381, 1, 1, 7, { 0 }}, - { 181, 1, 6, 7, { 0 }}, - { 182, 1, 4, 9, { 0 }}, - { 183, 2, 8, 5, { 0 }}, - { 382, 1, 3, 7, { 0 }}, - { 185, 0, 0, 0, { 0 }}, - { 186, 0, 0, 0, { 0 }}, - { 187, 1, 6, 8, { 0 }}, - { 338, 1, 4, 11, { 0 }}, - { 339, 1, 6, 11, { 0 }}, - { 376, 1, 2, 7, { 0 }}, - { 191, 1, 6, 7, { 0 }}, - { 192, 1, 1, 7, { 0 }}, - { 193, 1, 1, 7, { 0 }}, - { 194, 1, 1, 7, { 0 }}, - { 195, 1, 1, 7, { 0 }}, - { 196, 1, 2, 7, { 0 }}, - { 197, 1, 0, 7, { 0 }}, - { 198, 1, 4, 11, { 0 }}, - { 199, 1, 4, 7, { 0 }}, - { 200, 1, 1, 7, { 0 }}, - { 201, 1, 1, 7, { 0 }}, - { 202, 1, 1, 7, { 0 }}, - { 203, 1, 2, 7, { 0 }}, - { 204, 1, 1, 5, { 0 }}, - { 205, 2, 1, 5, { 0 }}, - { 206, 1, 1, 5, { 0 }}, - { 207, 1, 2, 5, { 0 }}, - { 208, 0, 4, 7, { 0 }}, - { 209, 1, 1, 7, { 0 }}, - { 210, 1, 1, 7, { 0 }}, - { 211, 1, 1, 7, { 0 }}, - { 212, 1, 1, 7, { 0 }}, - { 213, 1, 1, 7, { 0 }}, - { 214, 1, 2, 7, { 0 }}, - { 215, 1, 6, 7, { 0 }}, - { 216, 0, 4, 7, { 0 }}, - { 217, 1, 1, 7, { 0 }}, - { 218, 1, 1, 7, { 0 }}, - { 219, 1, 1, 7, { 0 }}, - { 220, 1, 2, 7, { 0 }}, - { 221, 1, 1, 7, { 0 }}, - { 222, 1, 4, 7, { 0 }}, - { 223, 1, 4, 7, { 0 }}, - { 224, 1, 3, 7, { 0 }}, - { 225, 1, 3, 7, { 0 }}, - { 226, 1, 3, 7, { 0 }}, - { 227, 1, 3, 7, { 0 }}, - { 228, 1, 4, 7, { 0 }}, - { 229, 1, 2, 7, { 0 }}, - { 230, 1, 6, 11, { 0 }}, - { 231, 1, 6, 7, { 0 }}, - { 232, 1, 3, 7, { 0 }}, - { 233, 1, 3, 7, { 0 }}, - { 234, 1, 3, 7, { 0 }}, - { 235, 1, 4, 7, { 0 }}, - { 236, 1, 3, 5, { 0 }}, - { 237, 2, 3, 5, { 0 }}, - { 238, 1, 3, 5, { 0 }}, - { 239, 1, 4, 5, { 0 }}, - { 240, 1, 4, 7, { 0 }}, - { 241, 1, 3, 7, { 0 }}, - { 242, 1, 3, 7, { 0 }}, - { 243, 1, 3, 7, { 0 }}, - { 244, 1, 3, 7, { 0 }}, - { 245, 1, 3, 7, { 0 }}, - { 246, 1, 4, 7, { 0 }}, - { 247, 1, 6, 7, { 0 }}, - { 248, 0, 6, 7, { 0 }}, - { 249, 1, 3, 7, { 0 }}, - { 250, 1, 3, 7, { 0 }}, - { 251, 1, 3, 7, { 0 }}, - { 252, 1, 4, 7, { 0 }}, - { 253, 1, 3, 7, { 0 }}, - { 254, 1, 4, 7, { 0 }}, - { 255, 1, 4, 7, { 0 }}, -}; - -// Style loading function: Dark -static void GuiLoadStyleDark(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < DARK_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(darkStyleProps[i].controlId, darkStyleProps[i].propertyId, darkStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int darkFontDataSize = 0; - unsigned char *data = DecompressData(darkFontData, DARK_STYLE_FONT_ATLAS_COMP_SIZE, &darkFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, darkFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, darkFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.png deleted file mode 100644 index 09d2439..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.rgs deleted file mode 100644 index 1e965d9..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.txt.rgs deleted file mode 100644 index 586cb0f..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/dark/style_dark.txt.rgs +++ /dev/null @@ -1,33 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 16 charset.txt PixelOperator.ttf -p 00 00 0x878787ff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0x2c2c2cff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0xc3c3c3ff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0xe1e1e1ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0x848484ff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0x181818ff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0x000000ff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0xefefefff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0x202020ff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0x6a6a6aff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0x818181ff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x606060ff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x00000010 TEXT_SIZE -p 00 17 0x00000000 TEXT_SPACING -p 00 18 0x9d9d9dff LINE_COLOR -p 00 19 0x3c3c3cff BACKGROUND_COLOR -p 00 20 0x00000018 TEXT_LINE_SPACING -p 01 05 0xf7f7f7ff LABEL_TEXT_COLOR_FOCUSED -p 01 08 0x898989ff LABEL_TEXT_COLOR_PRESSED -p 04 05 0xb0b0b0ff SLIDER_TEXT_COLOR_FOCUSED -p 05 05 0x848484ff PROGRESSBAR_TEXT_COLOR_FOCUSED -p 09 05 0xf5f5f5ff TEXTBOX_TEXT_COLOR_FOCUSED -p 10 05 0xf6f6f6ff VALUEBOX_TEXT_COLOR_FOCUSED diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/README.md deleted file mode 100644 index 5e0cef5..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/README.md +++ /dev/null @@ -1,22 +0,0 @@ -## style: default - -raylib style, simple and easy-to-use. Light colors, wide borders, a sophisticated touch. - -![default style table](style_default.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_default.txt.rgs` | Text style file, no font data, uses raylib default font | -| `style_default.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![default style screen](screenshot.png) - -## about font - -raylib font by Ramon Santamaria ([@raysan5](https://github.com/raysan5)). diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/screenshot.old.png deleted file mode 100644 index d26d948..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/screenshot.png deleted file mode 100644 index 0c35785..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/style_default.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/style_default.png deleted file mode 100644 index c62e4c3..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/style_default.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/style_default.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/style_default.txt.rgs deleted file mode 100644 index 0ee964f..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/default/style_default.txt.rgs +++ /dev/null @@ -1,10 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 10 charset.txt PixelOperator.ttf diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/GenericMobileSystemNuevo.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/GenericMobileSystemNuevo.ttf deleted file mode 100644 index 777a528..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/GenericMobileSystemNuevo.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/README.md deleted file mode 100644 index 897579d..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: enefete - -Inspired by money and pain, a desperate jump into the trendings train, a train to nowhere. Don't stare at it for too long! - -![enefete style table](style_enefete.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_enefete.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_enefete.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_enefete.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_enefete.h` | Embeddable style as code file, self-contained, includes font data | -| `style_enefete.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![enefete style screen](screenshot.png) - -## about font - -"Generic Mobile System" font by de Jayvee Enaguas. - -CC0 1.0 Universal, downloaded from dafont.com: [generic-mobile-system](https://www.dafont.com/generic-mobile-system.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/font_LICENSE.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/font_LICENSE.txt deleted file mode 100644 index 0e259d4..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/font_LICENSE.txt +++ /dev/null @@ -1,121 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/screenshot.old.png deleted file mode 100644 index 06f8143..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/screenshot.png deleted file mode 100644 index 46feea1..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.h deleted file mode 100644 index 3d80d4b..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.h +++ /dev/null @@ -1,598 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleEnefete(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define ENEFETE_STYLE_PROPS_COUNT 17 - -// Custom style name: Enefete -static const GuiStyleProp enefeteStyleProps[ENEFETE_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x1980d5ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x4df3ebff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x103e60ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xe7e2f7ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x23d4ddff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xf1f1f1ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x6413a6ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xea66d9ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x9f00bbff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x4b909eff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x73c7d0ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x448894ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x1d3f6cff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x29c9e5ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "GMSN.ttf" (size: 16, spacing: 0) - -#define ENEFETE_STYLE_FONT_ATLAS_COMP_SIZE 2434 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char enefeteFontData[ENEFETE_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x5b, 0x6e, 0xe4, 0x36, 0x10, 0x05, 0x50, 0xee, 0x7f, 0xa1, 0xd9, 0x06, 0x83, 0x20, 0x18, 0x24, 0xe3, 0xb1, 0x45, - 0xb2, 0xaa, 0xa8, 0x57, 0x9f, 0x1c, 0xe4, 0xc7, 0x1a, 0xb7, 0xd5, 0x94, 0xae, 0x44, 0x3d, 0x58, 0xec, 0x0d, 0x00, 0x00, - 0x00, 0xf8, 0x78, 0xff, 0xfc, 0xf7, 0xfd, 0xcf, 0xbe, 0x5b, 0x72, 0xbc, 0xec, 0xd7, 0xbf, 0x18, 0x2d, 0xe9, 0x3f, 0xae, - 0x49, 0x3f, 0x58, 0x36, 0xf7, 0xb7, 0x62, 0xeb, 0xd5, 0x97, 0xda, 0xa6, 0x1f, 0xb4, 0x5a, 0x4b, 0xff, 0xbc, 0x1d, 0xb6, - 0x7d, 0x0f, 0xb4, 0x5e, 0x3b, 0x5c, 0xe7, 0x9f, 0x7f, 0x73, 0xbc, 0xa4, 0x72, 0x3d, 0x57, 0xda, 0xb4, 0x72, 0xfb, 0xac, - 0xb4, 0x60, 0x5b, 0x5e, 0x7a, 0xdc, 0x52, 0x6d, 0xaa, 0x1d, 0xc7, 0x9f, 0xdc, 0x6f, 0x92, 0xff, 0xe3, 0x6f, 0xf3, 0x2b, - 0x83, 0x47, 0x5b, 0x7f, 0x7e, 0xdf, 0x68, 0xd3, 0xc7, 0x84, 0xff, 0xfe, 0x76, 0x5d, 0x42, 0xb3, 0x9f, 0xd2, 0x87, 0x47, - 0xc2, 0x95, 0x16, 0x3a, 0x6e, 0xbd, 0x16, 0xca, 0xc4, 0xe8, 0x33, 0x23, 0xeb, 0x32, 0xb3, 0x6c, 0x6e, 0xfd, 0x62, 0xfb, - 0xfc, 0xf8, 0xf3, 0x8e, 0xf7, 0xb4, 0xa3, 0x2d, 0x3c, 0xda, 0x73, 0x8f, 0xbf, 0xdf, 0xfa, 0x56, 0xcd, 0xa4, 0x7e, 0x4f, - 0xfe, 0xfb, 0xff, 0x72, 0xd6, 0x83, 0x19, 0xcc, 0x9f, 0x1b, 0xd6, 0xcf, 0x0a, 0xc7, 0xc7, 0xac, 0x7d, 0x2d, 0x7c, 0xd4, - 0x4e, 0x3d, 0xb0, 0x0f, 0xaf, 0x6f, 0xb3, 0xe8, 0xdf, 0xd9, 0x91, 0xff, 0x8a, 0x14, 0xb7, 0x89, 0x33, 0x62, 0xa4, 0x4f, - 0x71, 0xdc, 0xe3, 0xcc, 0x27, 0x7c, 0xb4, 0x2e, 0x91, 0xfe, 0x4c, 0xbe, 0x2d, 0x57, 0xfb, 0x1c, 0xfb, 0xf2, 0x5f, 0x71, - 0xbe, 0x5d, 0x3f, 0x97, 0xec, 0x6b, 0xdf, 0x99, 0xf3, 0xf5, 0xfd, 0xf3, 0xbf, 0xfe, 0xdd, 0x2a, 0xf2, 0x5f, 0xb3, 0x55, - 0xd6, 0xf3, 0xdf, 0xe5, 0x7f, 0xfa, 0xfc, 0xff, 0x73, 0xab, 0xf7, 0xe0, 0xf5, 0x57, 0xfe, 0xaa, 0xbd, 0xaa, 0x9f, 0x7f, - 0x6d, 0xfe, 0x47, 0xd7, 0x83, 0x6d, 0x39, 0xff, 0xb1, 0xab, 0xcf, 0xc8, 0xd5, 0x46, 0x55, 0xff, 0x7f, 0x6f, 0xef, 0xe1, - 0xf8, 0xea, 0x31, 0x92, 0xf0, 0xb5, 0x7b, 0x1e, 0x35, 0x9f, 0x7c, 0x45, 0xfe, 0xdb, 0xc4, 0xda, 0xf4, 0xe1, 0xf5, 0xff, - 0xec, 0x11, 0x7e, 0x2d, 0xff, 0x75, 0xe7, 0x8e, 0x2b, 0xf3, 0xdf, 0x83, 0x77, 0xc4, 0xaa, 0xaf, 0xe3, 0xe3, 0xdf, 0x6d, - 0xed, 0xfe, 0xdc, 0x79, 0xd7, 0xff, 0xa3, 0x7e, 0x60, 0x26, 0xff, 0x9f, 0xd2, 0xff, 0x9f, 0xe9, 0x69, 0x8f, 0x5a, 0x71, - 0xfe, 0x78, 0x76, 0xc5, 0xd9, 0xfc, 0xda, 0xfc, 0xf7, 0xa9, 0x7b, 0xd8, 0xf7, 0xce, 0x7f, 0x5b, 0xbe, 0xca, 0xab, 0xdc, - 0x77, 0xa3, 0x7b, 0xd4, 0x68, 0xcf, 0x9d, 0x39, 0xaa, 0xdd, 0x33, 0xff, 0xb1, 0xfd, 0xb9, 0x0f, 0x7b, 0xf9, 0x3d, 0x91, - 0xff, 0xf6, 0x9a, 0xfc, 0xf7, 0xe0, 0xdd, 0x8e, 0x9f, 0xfb, 0x7b, 0xb1, 0xfb, 0x71, 0x91, 0x9e, 0x7c, 0xa6, 0x8f, 0x52, - 0x95, 0xff, 0x7b, 0x6c, 0x49, 0xe7, 0xff, 0x8a, 0xfb, 0xff, 0xed, 0xb0, 0x87, 0xff, 0x59, 0xf9, 0x3f, 0x7e, 0xfe, 0xd7, - 0x6e, 0xff, 0xac, 0x2e, 0x9a, 0xff, 0x9a, 0xfb, 0xff, 0xe7, 0x1f, 0xad, 0x67, 0xae, 0x5c, 0x73, 0xf9, 0xbf, 0xd3, 0xf3, - 0xbf, 0xbd, 0xf9, 0x1f, 0x3d, 0xf5, 0x7e, 0x53, 0xff, 0xbf, 0xf2, 0x3e, 0x7e, 0xfc, 0x9d, 0x9b, 0x7d, 0xef, 0x14, 0xb5, - 0xd0, 0x9b, 0x5c, 0xf7, 0x4c, 0x7f, 0xf4, 0x39, 0x50, 0xee, 0x2e, 0xdd, 0xd5, 0xef, 0xff, 0xd4, 0xb7, 0xe0, 0x79, 0xeb, - 0xd3, 0x6f, 0xdc, 0x67, 0xe4, 0x5d, 0x6f, 0xc9, 0xda, 0xbb, 0xce, 0x7c, 0x3e, 0x1b, 0xff, 0x5b, 0xb6, 0x0f, 0x3b, 0xcf, - 0x6c, 0x5a, 0xe2, 0x19, 0xf7, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0xe3, - 0x17, 0x22, 0x63, 0x0d, 0xa3, 0x75, 0x08, 0x6a, 0xeb, 0x21, 0xf4, 0x2f, 0x75, 0x58, 0x57, 0x3f, 0x7b, 0x76, 0xac, 0x65, - 0x66, 0x9c, 0x66, 0xed, 0xef, 0x56, 0x55, 0x96, 0xa8, 0x1d, 0x79, 0x3e, 0xae, 0x77, 0xb3, 0x5a, 0xad, 0x39, 0x56, 0x05, - 0x6d, 0xbd, 0xa6, 0x79, 0xa6, 0x0e, 0x5f, 0xf5, 0xd8, 0xea, 0x9a, 0xfa, 0x68, 0xf3, 0x63, 0xde, 0x6b, 0x2a, 0x8d, 0xd4, - 0xe5, 0x7f, 0x7d, 0x3b, 0xf4, 0x2f, 0xeb, 0xd1, 0x2f, 0xa8, 0xc4, 0x50, 0xbf, 0x74, 0xee, 0xe7, 0x77, 0xca, 0xff, 0xec, - 0x31, 0x38, 0xbb, 0xf7, 0xc6, 0x47, 0xdc, 0x8d, 0xaa, 0x4f, 0x5c, 0x5f, 0x5b, 0xa5, 0x15, 0xd5, 0x47, 0xad, 0xcf, 0x7f, - 0x3b, 0xe9, 0xfc, 0x1f, 0xcd, 0x7f, 0x1f, 0xce, 0x66, 0x73, 0xdf, 0xfc, 0xaf, 0xd7, 0x9d, 0xc8, 0xfe, 0xd5, 0xdc, 0x4c, - 0x0e, 0xf1, 0x5a, 0xe3, 0xf9, 0xfc, 0xe7, 0x2a, 0x05, 0x9d, 0x7b, 0x6e, 0xbd, 0x3e, 0xff, 0xd1, 0x16, 0xb9, 0x2a, 0xff, - 0xf1, 0xbd, 0xa4, 0x0f, 0xab, 0x59, 0xdf, 0x31, 0xff, 0xfd, 0xe3, 0xf3, 0x5f, 0x5f, 0xcb, 0x37, 0x9a, 0x80, 0x48, 0x1d, - 0xf4, 0x99, 0xeb, 0xea, 0xd5, 0x2b, 0xbb, 0xf8, 0x75, 0x57, 0xf4, 0xfc, 0x3f, 0xfa, 0xfd, 0x99, 0x6f, 0x72, 0x75, 0xfe, - 0xdb, 0x30, 0xe1, 0x3d, 0x91, 0xd2, 0xf8, 0x1d, 0x90, 0x4c, 0xcd, 0xab, 0x6b, 0xf2, 0xdf, 0x42, 0x33, 0x06, 0xc6, 0xcf, - 0xf3, 0x77, 0xcf, 0x7f, 0xf5, 0xb5, 0x41, 0xf4, 0x8e, 0x41, 0xf5, 0x3a, 0xde, 0xef, 0xfa, 0xbf, 0x17, 0xf4, 0x12, 0x77, - 0xe4, 0x3f, 0xdb, 0x3e, 0xd1, 0x34, 0xc5, 0xf2, 0x3f, 0x7f, 0x76, 0x8f, 0xcd, 0x26, 0x10, 0x5b, 0xf6, 0xde, 0xfc, 0xd7, - 0xd6, 0x4f, 0x5d, 0xbf, 0x57, 0xfc, 0xa6, 0xfc, 0x47, 0xaf, 0xff, 0xe7, 0xaf, 0xb8, 0xee, 0x95, 0xff, 0x36, 0x31, 0x3f, - 0xcf, 0xd9, 0xf9, 0x1f, 0x55, 0x5b, 0x7d, 0x5b, 0xfe, 0xa3, 0xd9, 0x8a, 0xce, 0x67, 0xd4, 0xc2, 0x67, 0xba, 0xb7, 0x9f, - 0xff, 0xdb, 0x4b, 0xf3, 0x1f, 0x9f, 0x5f, 0xe6, 0x59, 0xf9, 0xaf, 0xee, 0x35, 0x5c, 0x5f, 0x57, 0x2f, 0x7a, 0xb7, 0x31, - 0x7e, 0x97, 0xf2, 0xdd, 0xfd, 0xff, 0xbe, 0xa1, 0x17, 0x9e, 0x7d, 0xfe, 0x7f, 0x55, 0xfe, 0x77, 0x3d, 0xff, 0x6b, 0xd3, - 0x73, 0xfe, 0xed, 0x5a, 0x2b, 0xf9, 0xaf, 0xce, 0x7f, 0xe5, 0xdc, 0x89, 0x6b, 0xff, 0xa2, 0xfa, 0xfd, 0x9f, 0xfa, 0x3b, - 0x69, 0xfb, 0xdf, 0xff, 0xd9, 0xd3, 0x3e, 0x6d, 0x6a, 0xc6, 0xb4, 0xf5, 0xbf, 0xda, 0x26, 0x67, 0x35, 0x8e, 0xad, 0x73, - 0xfd, 0xdb, 0x37, 0x77, 0xcf, 0x7f, 0xec, 0x6d, 0x83, 0xe8, 0x6f, 0xc6, 0x7f, 0xe3, 0x3e, 0x73, 0x81, 0x7d, 0xe6, 0x5b, - 0x94, 0x5a, 0xa1, 0xba, 0x85, 0xb4, 0x2a, 0x8e, 0x00, 0xef, 0x7a, 0xcf, 0x7c, 0xd7, 0xbf, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbc, 0xd1, 0x2b, 0xb3, 0x35, 0xb7, 0xff, 0xfc, 0x69, 0x0f, 0x8d, 0x77, - 0xed, 0xc9, 0xdf, 0xeb, 0xcb, 0x75, 0x30, 0xd6, 0xc6, 0x9d, 0x56, 0xd4, 0x60, 0xa8, 0xae, 0x23, 0x35, 0x6e, 0x97, 0xd9, - 0x2d, 0x3d, 0x1e, 0x49, 0xbc, 0xba, 0x87, 0x44, 0xc6, 0xf5, 0x64, 0x2a, 0xea, 0x64, 0xe6, 0x12, 0x88, 0x57, 0x42, 0x6c, - 0x8b, 0x9f, 0x1a, 0xdb, 0x6a, 0x91, 0xf1, 0xe1, 0x3b, 0xf3, 0x1f, 0xab, 0x2d, 0x79, 0x45, 0xa5, 0xb5, 0xf8, 0xde, 0x54, - 0xbb, 0x86, 0xf5, 0xad, 0x32, 0xb7, 0xb6, 0xb9, 0x9f, 0x67, 0xc6, 0xf4, 0xe7, 0x6a, 0x0f, 0xac, 0xb6, 0x44, 0x9f, 0xaa, - 0x96, 0xb2, 0xfa, 0x9b, 0x3f, 0xff, 0xde, 0xf1, 0xb2, 0x3e, 0x55, 0x39, 0x62, 0xed, 0x53, 0xbf, 0xff, 0xb7, 0xfb, 0x2a, - 0x27, 0xbc, 0x23, 0xff, 0x2d, 0x70, 0x94, 0x3d, 0x37, 0xff, 0xf1, 0xe3, 0x54, 0x2b, 0xac, 0xd2, 0xb3, 0x3e, 0x37, 0x46, - 0x64, 0xe4, 0x6e, 0xbe, 0x46, 0xd0, 0x19, 0x15, 0x35, 0xfe, 0xcc, 0xd7, 0xca, 0x56, 0x9b, 0x4b, 0xff, 0xf7, 0xc7, 0xb8, - 0x76, 0xd0, 0xdb, 0x9a, 0xcd, 0x7f, 0x0f, 0xd4, 0x1e, 0xa9, 0xa9, 0xc8, 0xf7, 0x9c, 0xfc, 0xcf, 0x5c, 0x6d, 0x9c, 0x97, - 0xff, 0xf1, 0xcf, 0xeb, 0xaa, 0x6a, 0x57, 0xd6, 0xda, 0x19, 0xd5, 0x5a, 0x6e, 0xa1, 0x2d, 0xd2, 0x83, 0xc7, 0x95, 0x5e, - 0x5c, 0xcf, 0xbc, 0x7f, 0xf9, 0x7f, 0xf6, 0x4c, 0x3d, 0x9b, 0xff, 0xd5, 0xbf, 0x78, 0x4d, 0xff, 0x7f, 0x65, 0x7f, 0x79, - 0x52, 0xfe, 0xdb, 0x54, 0x2d, 0xb2, 0x7b, 0x9f, 0xff, 0x2b, 0x6b, 0x6a, 0xd5, 0xe7, 0x3f, 0x96, 0xf0, 0xc8, 0xfe, 0x3e, - 0x3f, 0xe3, 0xc1, 0xda, 0x76, 0x1b, 0xf7, 0xf2, 0x7b, 0xa2, 0xff, 0x9f, 0xcf, 0x7f, 0x5d, 0x9f, 0x67, 0xed, 0xea, 0xf9, - 0x8a, 0xfc, 0xf7, 0x44, 0x65, 0xf4, 0xfd, 0xd7, 0xff, 0xa3, 0x7e, 0x62, 0xb4, 0x55, 0xea, 0xe7, 0xa6, 0xaa, 0xac, 0xb6, - 0xbd, 0x9a, 0xff, 0xcc, 0xf9, 0x3f, 0x7a, 0x1f, 0x22, 0xd3, 0x43, 0x5c, 0xbb, 0x1e, 0xcf, 0x1f, 0x01, 0xd6, 0xfa, 0xff, - 0x67, 0xdc, 0xff, 0xef, 0xa7, 0x5d, 0xff, 0xb7, 0xd4, 0x2c, 0x46, 0x95, 0xfd, 0xff, 0x96, 0xe8, 0x65, 0x66, 0x8e, 0x36, - 0x91, 0xd6, 0x5e, 0x6f, 0xb3, 0x2b, 0xcf, 0xff, 0xb9, 0xd9, 0xe6, 0xda, 0xb6, 0x7a, 0xa7, 0x91, 0xfe, 0xff, 0x9e, 0x14, - 0x56, 0xfc, 0xc5, 0xca, 0xeb, 0xff, 0xeb, 0xe7, 0x66, 0xc8, 0xe4, 0xff, 0xac, 0xde, 0xd3, 0xfe, 0x6f, 0x5e, 0x5b, 0x47, - 0xfa, 0x0e, 0xd7, 0xff, 0x91, 0xfb, 0xff, 0xd1, 0x9a, 0xc7, 0xe3, 0xb3, 0x71, 0xff, 0xf1, 0x0a, 0xff, 0xcc, 0xb3, 0xf1, - 0xf9, 0x47, 0x9c, 0xda, 0xeb, 0x7f, 0xf9, 0xdf, 0xf3, 0xdd, 0x2b, 0x6b, 0xe7, 0xee, 0xce, 0xff, 0x5c, 0xcf, 0x2a, 0x36, - 0x23, 0x62, 0x6e, 0xc6, 0xe4, 0xe8, 0x35, 0x5d, 0x3b, 0x75, 0x4f, 0x6f, 0x17, 0xf4, 0xfe, 0xab, 0x67, 0xe4, 0x79, 0xe7, - 0xfb, 0x50, 0xef, 0xf8, 0x06, 0x67, 0x1c, 0xcf, 0x7b, 0x61, 0xcf, 0x34, 0x7f, 0xff, 0x2f, 0x7e, 0xb4, 0x6a, 0x17, 0xd4, - 0x20, 0x3e, 0xfb, 0x2f, 0xc6, 0x9f, 0x56, 0x20, 0xff, 0x6b, 0xf9, 0xdf, 0xdf, 0x4b, 0xaa, 0x7a, 0x87, 0xe1, 0xd3, 0xf6, - 0x14, 0x2d, 0xf3, 0x29, 0xdb, 0x75, 0xfd, 0x4e, 0xef, 0x5b, 0x5a, 0xc2, 0x3e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x6b, 0xf4, 0x4f, 0xac, 0x9a, 0xc2, 0x6c, 0x2d, 0xab, 0xbe, 0x30, 0x3a, 0xb3, 0x0d, - 0xeb, 0x33, 0x67, 0x3f, 0xe7, 0xeb, 0xcc, 0x05, 0x7d, 0xf0, 0x2f, 0x5a, 0x60, 0x4d, 0x7b, 0x78, 0xac, 0xf1, 0xfa, 0x3c, - 0x0c, 0x5f, 0xd7, 0xb8, 0x25, 0x5a, 0x64, 0x3c, 0x92, 0x77, 0x7d, 0xc6, 0x86, 0xbd, 0xdf, 0xb9, 0xa6, 0x22, 0x7a, 0xa4, - 0xb6, 0xdf, 0x6c, 0x85, 0x92, 0xb3, 0x5b, 0x25, 0x33, 0x62, 0xbb, 0x05, 0x8e, 0x0d, 0xa3, 0x7a, 0x42, 0x2b, 0xb5, 0xba, - 0xd6, 0x8e, 0x4f, 0x73, 0x55, 0xf8, 0xd6, 0xc7, 0xa5, 0xcf, 0xd5, 0xf0, 0x6c, 0x1b, 0xeb, 0x5e, 0xaf, 0xef, 0xed, 0xf1, - 0xa4, 0xe4, 0x96, 0xce, 0x8d, 0xc7, 0xdf, 0xf1, 0x9d, 0xe3, 0x35, 0x6b, 0xe7, 0x3f, 0x27, 0x73, 0xf6, 0x1b, 0xa7, 0x74, - 0x4f, 0xab, 0xc4, 0xd2, 0x9f, 0xa9, 0x08, 0xb3, 0x9e, 0xff, 0x9a, 0xf5, 0x1e, 0xcf, 0x89, 0x10, 0x9b, 0x65, 0x63, 0xa6, - 0x86, 0xf7, 0xfb, 0xaa, 0x07, 0xe4, 0xf3, 0xff, 0xa9, 0x35, 0x17, 0x9e, 0xd4, 0x02, 0x7d, 0x31, 0x61, 0x33, 0xbd, 0xf8, - 0x9a, 0xfc, 0x8f, 0xe7, 0x4a, 0x3a, 0x3f, 0xff, 0x3d, 0xf4, 0x09, 0xf1, 0x9e, 0xdb, 0x1d, 0x97, 0xe6, 0xf2, 0x3f, 0xde, - 0x83, 0xf6, 0x2c, 0xad, 0x9a, 0x29, 0x29, 0x57, 0x87, 0xbc, 0x05, 0xaf, 0x1e, 0x32, 0x4b, 0x23, 0xb5, 0x11, 0x7a, 0xe8, - 0x6a, 0x64, 0xcf, 0xf9, 0x3f, 0x7f, 0xfd, 0x3f, 0xdf, 0x6f, 0x8b, 0xdf, 0x3f, 0xc8, 0xec, 0x4b, 0x3b, 0xfa, 0xe1, 0x67, - 0x2c, 0x8d, 0xd4, 0x86, 0xbb, 0x6a, 0xe9, 0xee, 0xfc, 0xf7, 0xdf, 0xe6, 0x4a, 0x3c, 0x4a, 0xd4, 0xfa, 0xd1, 0x21, 0x77, - 0x64, 0xd9, 0xdb, 0xd7, 0x59, 0xbd, 0xff, 0xb7, 0xba, 0x96, 0x75, 0x73, 0x99, 0x45, 0xab, 0x52, 0x7e, 0xfd, 0xfd, 0xba, - 0xf3, 0xff, 0xbe, 0xad, 0xbe, 0x77, 0x69, 0xe6, 0xee, 0xde, 0x5b, 0xf3, 0x3f, 0xd7, 0x6e, 0xef, 0xc8, 0xff, 0xb8, 0x7e, - 0x6b, 0x2f, 0xba, 0x4f, 0x71, 0xc6, 0x37, 0x9a, 0xad, 0xc0, 0x9f, 0x9b, 0x63, 0xf6, 0x4d, 0xf9, 0x6f, 0x45, 0xfd, 0xff, - 0x33, 0x97, 0xde, 0xa3, 0xff, 0xdf, 0x5f, 0x90, 0xff, 0xec, 0x73, 0x9d, 0x8a, 0x19, 0x8e, 0xcf, 0xce, 0x7f, 0xf6, 0x98, - 0x78, 0xaf, 0x6b, 0xe1, 0xec, 0xd2, 0x6c, 0xfe, 0x3f, 0xf5, 0xfc, 0xff, 0x86, 0xfc, 0xe7, 0x9f, 0x65, 0xaf, 0xdc, 0xff, - 0x3b, 0xef, 0x1d, 0x88, 0xbe, 0x31, 0xff, 0xed, 0x43, 0xcf, 0xff, 0x35, 0xf3, 0xca, 0x3f, 0x2d, 0xff, 0x33, 0x77, 0x99, - 0x9e, 0x9a, 0xff, 0x8a, 0x8c, 0x54, 0xdd, 0xff, 0xaf, 0x7f, 0x0b, 0x6a, 0x67, 0x75, 0xfa, 0xe7, 0x25, 0x7c, 0x9c, 0xff, - 0xc8, 0xfb, 0x3f, 0xef, 0xce, 0xff, 0xdc, 0xbb, 0x31, 0xcf, 0xce, 0x7f, 0x4f, 0xce, 0x4a, 0xf3, 0xce, 0xe7, 0xc3, 0xb1, - 0x39, 0xa6, 0x9f, 0x97, 0xff, 0xfc, 0x3b, 0x65, 0x6f, 0x7d, 0xfe, 0x97, 0x7b, 0x3b, 0xe0, 0x9a, 0xe7, 0x7f, 0x77, 0x7a, - 0xaf, 0x84, 0xb7, 0xbf, 0x55, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0xec, - 0xeb, 0xea, 0x88, 0x9d, 0xb9, 0x71, 0x62, 0xd7, 0x54, 0xbe, 0x8f, 0xd4, 0x29, 0x98, 0x59, 0x9f, 0x78, 0xf5, 0x83, 0x48, - 0xad, 0xfd, 0xa3, 0x6d, 0x13, 0xad, 0x38, 0x9e, 0xa9, 0x64, 0xb4, 0xeb, 0x3b, 0xae, 0xd7, 0x84, 0x9f, 0xff, 0x0b, 0x73, - 0x95, 0x1f, 0x63, 0xb9, 0xb8, 0xfb, 0xb6, 0x9e, 0x1b, 0xa5, 0xb9, 0xb3, 0x4e, 0x7c, 0x4f, 0xd6, 0x34, 0xaf, 0x5f, 0xab, - 0x6c, 0x95, 0xfe, 0xd8, 0x3a, 0x47, 0x5a, 0xb8, 0x27, 0xe6, 0x61, 0x69, 0x13, 0x7b, 0x52, 0x75, 0x75, 0x9f, 0xcc, 0xbc, - 0x1c, 0xf3, 0x47, 0xe4, 0xca, 0x8a, 0xfd, 0x2d, 0x51, 0xad, 0xff, 0x2e, 0xdb, 0xfa, 0xda, 0xf1, 0xb4, 0xe3, 0x75, 0x7e, - 0xce, 0x78, 0xdf, 0xb9, 0xd1, 0xe3, 0xcf, 0xf8, 0x36, 0x33, 0xc7, 0xb2, 0xf5, 0xea, 0x3c, 0xef, 0xac, 0xd9, 0xf0, 0xd9, - 0x63, 0x95, 0xb3, 0x95, 0x05, 0x46, 0xc7, 0xba, 0xe7, 0x54, 0xaf, 0xca, 0xd5, 0xbd, 0x9a, 0x69, 0xc5, 0xb3, 0x96, 0x1d, - 0xf9, 0x2b, 0x30, 0x0f, 0xdb, 0x95, 0xdf, 0x71, 0x7f, 0xc5, 0x8e, 0xe3, 0x5a, 0x22, 0xf7, 0xde, 0xd6, 0xd9, 0x1a, 0x59, - 0xd9, 0x4a, 0x30, 0xd1, 0xf3, 0xff, 0x53, 0xf3, 0x3f, 0x9a, 0x8b, 0xe0, 0xe7, 0x59, 0xc9, 0xce, 0x5b, 0x56, 0x31, 0x93, - 0xc1, 0xea, 0x15, 0xd0, 0x8e, 0x65, 0x57, 0x56, 0xec, 0x3a, 0xfb, 0xbb, 0xc6, 0xdb, 0xa8, 0xaa, 0x9f, 0x18, 0x9d, 0xb3, - 0x64, 0xb4, 0xec, 0xd3, 0xce, 0xff, 0xfd, 0xf2, 0x65, 0xf3, 0x47, 0xb1, 0xbb, 0xef, 0xdb, 0xfb, 0x67, 0xec, 0x78, 0x42, - 0xc6, 0x33, 0xb3, 0x4b, 0xed, 0xcc, 0xff, 0x3d, 0xeb, 0x1d, 0xf7, 0xd4, 0xb9, 0x31, 0x5b, 0xab, 0xef, 0x3e, 0xb9, 0xc9, - 0xcc, 0x64, 0x1c, 0x9b, 0xbf, 0xb9, 0x7a, 0x99, 0xfc, 0xdf, 0x3b, 0xff, 0x73, 0xf7, 0x56, 0xee, 0x57, 0xbd, 0x32, 0x3b, - 0x4b, 0xef, 0xfb, 0xfb, 0x8b, 0x7d, 0xc3, 0xd3, 0x9a, 0xba, 0xe7, 0x89, 0xf2, 0x7f, 0x97, 0xfe, 0xbf, 0xfc, 0xbf, 0x6f, - 0x7f, 0xe9, 0xa9, 0x4a, 0xe6, 0xfa, 0xff, 0xf2, 0xff, 0xe6, 0xfc, 0xf7, 0x47, 0x5c, 0xff, 0xef, 0xda, 0x5f, 0xde, 0x76, - 0xff, 0x3f, 0xfa, 0xb4, 0xf7, 0x29, 0xcf, 0x7a, 0xce, 0x78, 0xfe, 0xb7, 0xe7, 0x93, 0x77, 0x56, 0x43, 0x7f, 0xff, 0xf3, - 0xde, 0xa7, 0xd4, 0x83, 0xe7, 0xed, 0xfb, 0xa1, 0x36, 0x00, 0xf9, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x76, 0xbe, 0xa9, 0x7f, 0x66, 0xc5, 0xf7, 0xc8, 0xa8, 0xcf, 0xb9, 0xcf, 0x04, 0x62, 0x23, 0x75, 0xce, - 0xac, 0xf8, 0x9e, 0x1f, 0x9d, 0x6f, 0x5b, 0xc2, 0xfb, 0xc6, 0x8a, 0xcb, 0x36, 0xec, 0x49, 0x55, 0x7f, 0x48, 0x15, 0xa4, - 0x77, 0xcc, 0xcd, 0x01, 0xf2, 0xff, 0x94, 0x0a, 0x69, 0x20, 0xff, 0xf2, 0x0f, 0xf2, 0x2f, 0xff, 0x20, 0xff, 0xf2, 0x0f, - 0x6f, 0xbf, 0xff, 0x7f, 0xa7, 0x99, 0x6b, 0xf6, 0xd5, 0x29, 0x06, 0xcf, 0xfe, 0x63, 0x47, 0x87, 0xea, 0x65, 0x6d, 0x78, - 0xdc, 0xf0, 0x8c, 0x10, 0xce, 0xca, 0xff, 0x35, 0xcf, 0xf8, 0x57, 0xf3, 0xaf, 0xff, 0x0f, 0x6f, 0xba, 0x1a, 0x89, 0xbc, - 0xff, 0x27, 0xfd, 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, 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, - 0x70, 0x95, 0x7f, 0xff, 0xd3, 0x0e, 0x20, 0xff, 0xc0, 0xc7, 0xe5, 0xff, 0x6f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle enefeteFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 2 , 10 }, - { 26, 4, 5 , 3 }, - { 39, 4, 7 , 10 }, - { 54, 4, 7 , 13 }, - { 69, 4, 7 , 10 }, - { 84, 4, 7 , 10 }, - { 99, 4, 2 , 3 }, - { 109, 4, 3 , 12 }, - { 120, 4, 3 , 12 }, - { 131, 4, 5 , 6 }, - { 144, 4, 6 , 5 }, - { 158, 4, 2 , 4 }, - { 168, 4, 5 , 1 }, - { 181, 4, 2 , 2 }, - { 191, 4, 4 , 10 }, - { 203, 4, 6 , 10 }, - { 217, 4, 4 , 10 }, - { 229, 4, 6 , 10 }, - { 243, 4, 6 , 10 }, - { 257, 4, 6 , 10 }, - { 271, 4, 6 , 10 }, - { 285, 4, 6 , 10 }, - { 299, 4, 6 , 10 }, - { 313, 4, 6 , 10 }, - { 327, 4, 6 , 10 }, - { 341, 4, 2 , 6 }, - { 351, 4, 2 , 8 }, - { 361, 4, 7 , 7 }, - { 376, 4, 5 , 3 }, - { 389, 4, 7 , 7 }, - { 404, 4, 6 , 10 }, - { 418, 4, 7 , 12 }, - { 433, 4, 7 , 10 }, - { 448, 4, 7 , 10 }, - { 463, 4, 7 , 10 }, - { 478, 4, 7 , 10 }, - { 493, 4, 7 , 10 }, - { 4, 28, 7 , 10 }, - { 19, 28, 7 , 10 }, - { 34, 28, 7 , 10 }, - { 49, 28, 2 , 10 }, - { 59, 28, 5 , 10 }, - { 72, 28, 7 , 10 }, - { 87, 28, 6 , 10 }, - { 101, 28, 9 , 10 }, - { 118, 28, 7 , 10 }, - { 133, 28, 7 , 10 }, - { 148, 28, 7 , 10 }, - { 163, 28, 7 , 12 }, - { 178, 28, 7 , 10 }, - { 193, 28, 7 , 10 }, - { 208, 28, 6 , 10 }, - { 222, 28, 7 , 10 }, - { 237, 28, 7 , 10 }, - { 252, 28, 8 , 10 }, - { 268, 28, 7 , 10 }, - { 283, 28, 6 , 10 }, - { 297, 28, 7 , 10 }, - { 312, 28, 4 , 12 }, - { 324, 28, 4 , 10 }, - { 336, 28, 4 , 12 }, - { 348, 28, 6 , 3 }, - { 362, 28, 7 , 1 }, - { 377, 28, 4 , 3 }, - { 389, 28, 6 , 7 }, - { 403, 28, 6 , 10 }, - { 417, 28, 6 , 7 }, - { 431, 28, 6 , 10 }, - { 445, 28, 6 , 7 }, - { 459, 28, 4 , 10 }, - { 471, 28, 6 , 9 }, - { 485, 28, 6 , 10 }, - { 499, 28, 2 , 10 }, - { 4, 52, 5 , 12 }, - { 17, 52, 6 , 10 }, - { 31, 52, 3 , 10 }, - { 42, 52, 8 , 7 }, - { 58, 52, 6 , 7 }, - { 72, 52, 6 , 7 }, - { 86, 52, 6 , 9 }, - { 100, 52, 6 , 9 }, - { 114, 52, 5 , 7 }, - { 127, 52, 6 , 7 }, - { 141, 52, 4 , 10 }, - { 153, 52, 6 , 7 }, - { 167, 52, 6 , 7 }, - { 181, 52, 8 , 7 }, - { 197, 52, 6 , 7 }, - { 211, 52, 6 , 9 }, - { 225, 52, 6 , 7 }, - { 239, 52, 5 , 12 }, - { 252, 52, 2 , 12 }, - { 262, 52, 5 , 12 }, - { 275, 52, 7 , 3 }, - { 290, 52, 2 , 9 }, - { 300, 52, 6 , 11 }, - { 314, 52, 7 , 10 }, - { 329, 52, 7 , 9 }, - { 344, 52, 6 , 10 }, - { 358, 52, 7 , 11 }, - { 373, 52, 6 , 12 }, - { 387, 52, 6 , 10 }, - { 401, 52, 7 , 10 }, - { 416, 52, 5 , 5 }, - { 429, 52, 7 , 6 }, - { 444, 52, 6 , 3 }, - { 458, 52, 7 , 10 }, - { 473, 52, 0 , 0 }, - { 481, 52, 4 , 4 }, - { 493, 52, 6 , 7 }, - { 4, 76, 4 , 5 }, - { 16, 76, 4 , 5 }, - { 28, 76, 7 , 11 }, - { 43, 76, 6 , 9 }, - { 57, 76, 7 , 12 }, - { 72, 76, 2 , 2 }, - { 82, 76, 6 , 10 }, - { 96, 76, 3 , 5 }, - { 107, 76, 4 , 5 }, - { 119, 76, 7 , 6 }, - { 134, 76, 9 , 10 }, - { 151, 76, 8 , 7 }, - { 167, 76, 6 , 11 }, - { 181, 76, 6 , 11 }, - { 195, 76, 7 , 11 }, - { 210, 76, 7 , 11 }, - { 225, 76, 7 , 11 }, - { 240, 76, 7 , 11 }, - { 255, 76, 7 , 11 }, - { 270, 76, 7 , 11 }, - { 285, 76, 9 , 10 }, - { 302, 76, 7 , 12 }, - { 317, 76, 7 , 11 }, - { 332, 76, 7 , 11 }, - { 347, 76, 7 , 11 }, - { 362, 76, 7 , 11 }, - { 377, 76, 3 , 11 }, - { 388, 76, 3 , 11 }, - { 399, 76, 5 , 11 }, - { 412, 76, 5 , 11 }, - { 425, 76, 8 , 10 }, - { 441, 76, 7 , 11 }, - { 456, 76, 7 , 11 }, - { 471, 76, 7 , 11 }, - { 486, 76, 7 , 11 }, - { 4, 100, 7 , 11 }, - { 19, 100, 7 , 11 }, - { 34, 100, 7 , 7 }, - { 49, 100, 7 , 13 }, - { 64, 100, 7 , 11 }, - { 79, 100, 7 , 11 }, - { 94, 100, 7 , 11 }, - { 109, 100, 7 , 11 }, - { 124, 100, 6 , 11 }, - { 138, 100, 7 , 10 }, - { 153, 100, 7 , 10 }, - { 168, 100, 6 , 10 }, - { 182, 100, 6 , 10 }, - { 196, 100, 6 , 10 }, - { 210, 100, 6 , 10 }, - { 224, 100, 6 , 10 }, - { 238, 100, 6 , 11 }, - { 252, 100, 8 , 7 }, - { 268, 100, 6 , 9 }, - { 282, 100, 6 , 10 }, - { 296, 100, 6 , 10 }, - { 310, 100, 6 , 10 }, - { 324, 100, 6 , 10 }, - { 338, 100, 3 , 10 }, - { 349, 100, 3 , 10 }, - { 360, 100, 5 , 10 }, - { 373, 100, 5 , 10 }, - { 386, 100, 6 , 10 }, - { 400, 100, 6 , 10 }, - { 414, 100, 6 , 10 }, - { 428, 100, 6 , 10 }, - { 442, 100, 6 , 10 }, - { 456, 100, 6 , 10 }, - { 470, 100, 6 , 10 }, - { 484, 100, 6 , 7 }, - { 4, 124, 7 , 11 }, - { 19, 124, 6 , 10 }, - { 33, 124, 6 , 10 }, - { 47, 124, 6 , 10 }, - { 61, 124, 6 , 10 }, - { 75, 124, 6 , 12 }, - { 89, 124, 6 , 12 }, - { 103, 124, 6 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo enefeteFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 0, 2, 3, { 0 }}, - { 34, 0, 2, 6, { 0 }}, - { 35, 0, 2, 8, { 0 }}, - { 36, 0, 1, 8, { 0 }}, - { 37, 0, 2, 8, { 0 }}, - { 38, 0, 2, 8, { 0 }}, - { 39, 0, 2, 3, { 0 }}, - { 40, 0, 2, 4, { 0 }}, - { 41, 0, 2, 4, { 0 }}, - { 42, 0, 4, 6, { 0 }}, - { 43, 0, 6, 7, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 8, 6, { 0 }}, - { 46, 0, 10, 3, { 0 }}, - { 47, 0, 2, 5, { 0 }}, - { 48, 0, 2, 7, { 0 }}, - { 49, 0, 2, 7, { 0 }}, - { 50, 0, 2, 7, { 0 }}, - { 51, 0, 2, 7, { 0 }}, - { 52, 0, 2, 7, { 0 }}, - { 53, 0, 2, 7, { 0 }}, - { 54, 0, 2, 7, { 0 }}, - { 55, 0, 2, 7, { 0 }}, - { 56, 0, 2, 7, { 0 }}, - { 57, 0, 2, 7, { 0 }}, - { 58, 0, 4, 3, { 0 }}, - { 59, 0, 4, 3, { 0 }}, - { 60, 0, 4, 8, { 0 }}, - { 61, 0, 6, 6, { 0 }}, - { 62, 0, 4, 8, { 0 }}, - { 63, 0, 2, 7, { 0 }}, - { 64, 0, 2, 8, { 0 }}, - { 65, 0, 2, 8, { 0 }}, - { 66, 0, 2, 8, { 0 }}, - { 67, 0, 2, 8, { 0 }}, - { 68, 0, 2, 8, { 0 }}, - { 69, 0, 2, 8, { 0 }}, - { 70, 0, 2, 8, { 0 }}, - { 71, 0, 2, 8, { 0 }}, - { 72, 0, 2, 8, { 0 }}, - { 73, 0, 2, 3, { 0 }}, - { 74, 0, 2, 6, { 0 }}, - { 75, 0, 2, 8, { 0 }}, - { 76, 0, 2, 7, { 0 }}, - { 77, 0, 2, 10, { 0 }}, - { 78, 0, 2, 8, { 0 }}, - { 79, 0, 2, 8, { 0 }}, - { 80, 0, 2, 8, { 0 }}, - { 81, 0, 2, 8, { 0 }}, - { 82, 0, 2, 8, { 0 }}, - { 83, 0, 2, 8, { 0 }}, - { 84, 0, 2, 7, { 0 }}, - { 85, 0, 2, 8, { 0 }}, - { 86, 0, 2, 8, { 0 }}, - { 87, 0, 2, 9, { 0 }}, - { 88, 0, 2, 8, { 0 }}, - { 89, 0, 2, 7, { 0 }}, - { 90, 0, 2, 8, { 0 }}, - { 91, 0, 2, 5, { 0 }}, - { 92, 0, 2, 5, { 0 }}, - { 93, 0, 2, 5, { 0 }}, - { 94, 0, 2, 7, { 0 }}, - { 95, 0, 14, 8, { 0 }}, - { 96, 0, 2, 5, { 0 }}, - { 97, 0, 5, 7, { 0 }}, - { 98, 0, 2, 7, { 0 }}, - { 99, 0, 5, 7, { 0 }}, - { 100, 0, 2, 7, { 0 }}, - { 101, 0, 5, 7, { 0 }}, - { 102, 0, 2, 5, { 0 }}, - { 103, 0, 5, 7, { 0 }}, - { 104, 0, 2, 7, { 0 }}, - { 105, 0, 2, 3, { 0 }}, - { 106, 0, 2, 6, { 0 }}, - { 107, 0, 2, 7, { 0 }}, - { 108, 0, 2, 4, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 7, { 0 }}, - { 111, 0, 5, 7, { 0 }}, - { 112, 0, 5, 7, { 0 }}, - { 113, 0, 5, 7, { 0 }}, - { 114, 0, 5, 6, { 0 }}, - { 115, 0, 5, 7, { 0 }}, - { 116, 0, 2, 5, { 0 }}, - { 117, 0, 5, 7, { 0 }}, - { 118, 0, 5, 7, { 0 }}, - { 119, 0, 5, 9, { 0 }}, - { 120, 0, 5, 7, { 0 }}, - { 121, 0, 5, 7, { 0 }}, - { 122, 0, 5, 7, { 0 }}, - { 123, 0, 2, 6, { 0 }}, - { 124, 0, 2, 3, { 0 }}, - { 125, 0, 2, 6, { 0 }}, - { 126, 0, 6, 8, { 0 }}, - { 161, 0, 5, 3, { 0 }}, - { 162, 0, 3, 7, { 0 }}, - { 163, 0, 2, 8, { 0 }}, - { 8364, 0, 3, 8, { 0 }}, - { 165, 0, 2, 7, { 0 }}, - { 352, 0, 1, 8, { 0 }}, - { 167, 0, 2, 7, { 0 }}, - { 353, 0, 2, 7, { 0 }}, - { 169, 0, 2, 8, { 0 }}, - { 170, 0, 2, 6, { 0 }}, - { 171, 0, 6, 8, { 0 }}, - { 172, 0, 7, 7, { 0 }}, - { 174, 0, 2, 8, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 0, 2, 5, { 0 }}, - { 177, 0, 4, 7, { 0 }}, - { 178, 0, 2, 5, { 0 }}, - { 179, 0, 2, 5, { 0 }}, - { 381, 0, 1, 8, { 0 }}, - { 181, 0, 5, 7, { 0 }}, - { 182, 0, 2, 8, { 0 }}, - { 183, 0, 6, 3, { 0 }}, - { 382, 0, 2, 7, { 0 }}, - { 185, 0, 2, 4, { 0 }}, - { 186, 0, 2, 5, { 0 }}, - { 187, 0, 6, 8, { 0 }}, - { 338, 0, 2, 10, { 0 }}, - { 339, 0, 5, 9, { 0 }}, - { 376, 0, 1, 7, { 0 }}, - { 191, 0, 3, 7, { 0 }}, - { 192, 0, 1, 8, { 0 }}, - { 193, 0, 1, 8, { 0 }}, - { 194, 0, 1, 8, { 0 }}, - { 195, 0, 1, 8, { 0 }}, - { 196, 0, 1, 8, { 0 }}, - { 197, 0, 1, 8, { 0 }}, - { 198, 0, 2, 10, { 0 }}, - { 199, 0, 2, 8, { 0 }}, - { 200, 0, 1, 8, { 0 }}, - { 201, 0, 1, 8, { 0 }}, - { 202, 0, 1, 8, { 0 }}, - { 203, 0, 1, 8, { 0 }}, - { 204, 0, 1, 4, { 0 }}, - { 205, 0, 1, 4, { 0 }}, - { 206, 0, 1, 6, { 0 }}, - { 207, 0, 1, 6, { 0 }}, - { 208, 0, 2, 9, { 0 }}, - { 209, 0, 1, 8, { 0 }}, - { 210, 0, 1, 8, { 0 }}, - { 211, 0, 1, 8, { 0 }}, - { 212, 0, 1, 8, { 0 }}, - { 213, 0, 1, 8, { 0 }}, - { 214, 0, 1, 8, { 0 }}, - { 215, 0, 5, 8, { 0 }}, - { 216, 0, 1, 8, { 0 }}, - { 217, 0, 1, 8, { 0 }}, - { 218, 0, 1, 8, { 0 }}, - { 219, 0, 1, 8, { 0 }}, - { 220, 0, 1, 8, { 0 }}, - { 221, 0, 1, 7, { 0 }}, - { 222, 0, 2, 8, { 0 }}, - { 223, 0, 2, 8, { 0 }}, - { 224, 0, 2, 7, { 0 }}, - { 225, 0, 2, 7, { 0 }}, - { 226, 0, 2, 7, { 0 }}, - { 227, 0, 2, 7, { 0 }}, - { 228, 0, 2, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 5, 9, { 0 }}, - { 231, 0, 5, 7, { 0 }}, - { 232, 0, 2, 7, { 0 }}, - { 233, 0, 2, 7, { 0 }}, - { 234, 0, 2, 7, { 0 }}, - { 235, 0, 2, 7, { 0 }}, - { 236, 0, 2, 4, { 0 }}, - { 237, 0, 2, 4, { 0 }}, - { 238, 0, 2, 6, { 0 }}, - { 239, 0, 2, 6, { 0 }}, - { 240, 0, 2, 7, { 0 }}, - { 241, 0, 2, 7, { 0 }}, - { 242, 0, 2, 7, { 0 }}, - { 243, 0, 2, 7, { 0 }}, - { 244, 0, 2, 7, { 0 }}, - { 245, 0, 2, 7, { 0 }}, - { 246, 0, 2, 7, { 0 }}, - { 247, 0, 4, 7, { 0 }}, - { 248, 0, 3, 8, { 0 }}, - { 249, 0, 2, 7, { 0 }}, - { 250, 0, 2, 7, { 0 }}, - { 251, 0, 2, 7, { 0 }}, - { 252, 0, 2, 7, { 0 }}, - { 253, 0, 2, 7, { 0 }}, - { 254, 0, 2, 7, { 0 }}, - { 255, 0, 2, 7, { 0 }}, -}; - -// Style loading function: Enefete -static void GuiLoadStyleEnefete(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < ENEFETE_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(enefeteStyleProps[i].controlId, enefeteStyleProps[i].propertyId, enefeteStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int enefeteFontDataSize = 0; - unsigned char *data = DecompressData(enefeteFontData, ENEFETE_STYLE_FONT_ATLAS_COMP_SIZE, &enefeteFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, enefeteFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, enefeteFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.png deleted file mode 100644 index d40778c..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.rgs deleted file mode 100644 index 7eea922..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.txt.rgs deleted file mode 100644 index d879663..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/enefete/style_enefete.txt.rgs +++ /dev/null @@ -1,27 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 16 charset.txt GenericMobileSystemNuevo.ttf -p 00 00 0x1980d5ff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0x4df3ebff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0x103e60ff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0xe7e2f7ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0x23d4ddff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0xf1f1f1ff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0x6413a6ff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0xea66d9ff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0x9f00bbff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0x4b909eff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0x73c7d0ff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x448894ff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x00000010 TEXT_SIZE -p 00 17 0x00000000 TEXT_SPACING -p 00 18 0x1d3f6cff LINE_COLOR -p 00 19 0x29c9e5ff BACKGROUND_COLOR -p 00 20 0x00000018 TEXT_LINE_SPACING diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/PixelOperator.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/PixelOperator.ttf deleted file mode 100644 index 34fe947..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/PixelOperator.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/font_LICENSE.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/font_LICENSE.txt deleted file mode 100644 index 0e259d4..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/font_LICENSE.txt +++ /dev/null @@ -1,121 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/screenshot.png deleted file mode 100644 index 235d91c..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/style_genesis.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/style_genesis.h deleted file mode 100644 index a6e8eda..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/style_genesis.h +++ /dev/null @@ -1,589 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleGenesis(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define GENESIS_STYLE_PROPS_COUNT 23 - -// Custom style name: Genesis -static const GuiStyleProp genesisStyleProps[GENESIS_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x667384ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x181b1eff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xc2c8d0ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xd3dbdfff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xa7afb0ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x020202ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x181b1eff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xac3c3cff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xdededeff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x3e4550ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x2e353dff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x484f57ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x96a3b4ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x292c33ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING - { 1, 5, (int)0x97a9aeff }, // LABEL_TEXT_COLOR_FOCUSED - { 4, 5, (int)0xa69a9aff }, // SLIDER_TEXT_COLOR_FOCUSED - { 4, 6, (int)0xc3ccd5ff }, // SLIDER_BORDER_COLOR_PRESSED - { 6, 6, (int)0xa7aeb5ff }, // CHECKBOX_BORDER_COLOR_PRESSED - { 9, 5, (int)0xa9a5a5ff }, // TEXTBOX_TEXT_COLOR_FOCUSED - { 10, 5, (int)0xc9c7c7ff }, // VALUEBOX_TEXT_COLOR_FOCUSED -}; - -// WARNING: This style uses a custom font: "PixelOperator.ttf" (size: 16, spacing: 0) - -#define GENESIS_STYLE_FONT_ATLAS_COMP_SIZE 2138 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char genesisFontData[GENESIS_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xdb, 0x92, 0xa5, 0xba, 0x0d, 0x00, 0x50, 0xff, 0xff, 0x4f, 0x2b, 0x0f, 0xa9, 0x54, 0x32, 0x95, 0xd3, 0x80, 0x64, - 0xd9, 0x98, 0x9e, 0x35, 0xeb, 0xad, 0x77, 0x4f, 0xc3, 0x36, 0x96, 0x6f, 0x80, 0x1c, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xeb, - 0xc5, 0x3f, 0xfe, 0x24, 0x7e, 0xfc, 0xcd, 0x78, 0xfc, 0x77, 0xae, 0x7f, 0xfe, 0x9f, 0x4f, 0xe3, 0xe2, 0x58, 0xcf, 0xce, - 0x35, 0x7b, 0xdc, 0x48, 0x94, 0xc4, 0x3f, 0x9f, 0x5f, 0x3c, 0xfe, 0xbb, 0x3f, 0x7d, 0xbf, 0xfc, 0xef, 0x5f, 0xfd, 0xa5, - 0xeb, 0xb3, 0x8f, 0x54, 0xb9, 0xe7, 0xff, 0x4f, 0xee, 0x2a, 0xc6, 0x92, 0xb2, 0xbf, 0x3f, 0xbb, 0xfc, 0xb9, 0x77, 0xfe, - 0x9f, 0xb8, 0xf8, 0x3e, 0x95, 0xab, 0xf4, 0x24, 0xb6, 0x4e, 0x88, 0xff, 0x78, 0x14, 0x89, 0xd1, 0x5a, 0x73, 0xfe, 0x7b, - 0xd4, 0x68, 0x6c, 0xa9, 0xaa, 0x25, 0x79, 0x15, 0xe9, 0xf9, 0xf2, 0xb8, 0xaa, 0xfd, 0xf9, 0x16, 0x30, 0x5a, 0xbe, 0xcb, - 0x7c, 0x6d, 0x8c, 0xe9, 0xdf, 0x7e, 0x56, 0x93, 0x7a, 0xbe, 0xd5, 0xcc, 0x27, 0xa3, 0xe5, 0x2a, 0xbd, 0x11, 0xff, 0x51, - 0x6e, 0xa9, 0x22, 0x19, 0xd1, 0x1d, 0x25, 0x58, 0x69, 0x87, 0xc7, 0xc6, 0xf8, 0x8f, 0xd6, 0xb1, 0x4b, 0xb4, 0xd5, 0xb9, - 0x37, 0xe2, 0xff, 0xba, 0xd7, 0x1e, 0x2d, 0xf5, 0x26, 0x6e, 0xca, 0xa8, 0x37, 0x96, 0xd7, 0x8e, 0x53, 0x57, 0xc7, 0xff, - 0xf5, 0x6f, 0x66, 0xfb, 0xdb, 0x48, 0xf6, 0xdd, 0x1d, 0xe5, 0x54, 0xeb, 0xff, 0xfb, 0xcb, 0x31, 0x7e, 0xec, 0x9b, 0xab, - 0xe3, 0x90, 0x4c, 0x09, 0x47, 0x72, 0x76, 0x35, 0xdb, 0xc3, 0xbe, 0xd9, 0xff, 0x3f, 0x1b, 0x0b, 0x8a, 0xff, 0xb5, 0xf1, - 0x5f, 0xf9, 0x26, 0xf1, 0xf0, 0x0c, 0x2a, 0x7d, 0xe2, 0x38, 0x20, 0xfe, 0xb3, 0xed, 0xd0, 0x75, 0x59, 0x75, 0x8d, 0xe5, - 0xb3, 0xeb, 0x12, 0xcf, 0x66, 0xd8, 0xfb, 0x6a, 0x61, 0x7e, 0x6c, 0x94, 0x8f, 0xff, 0x7c, 0xeb, 0x79, 0xf7, 0xd7, 0xb2, - 0xa5, 0xfa, 0xf3, 0xcc, 0x6e, 0xbe, 0xc4, 0xf7, 0xc5, 0x7f, 0x14, 0xfa, 0x94, 0xf7, 0xe3, 0xb9, 0x27, 0xfe, 0xa3, 0xb0, - 0x72, 0x31, 0xda, 0x56, 0xf9, 0x6a, 0xeb, 0x12, 0x7d, 0x6b, 0x06, 0xef, 0x5f, 0x81, 0xfb, 0xf8, 0xbf, 0x9b, 0x0f, 0xbe, - 0xdf, 0xff, 0xc7, 0x11, 0xfd, 0x7f, 0x94, 0xd7, 0x86, 0x47, 0xa1, 0xf5, 0xfd, 0x5a, 0xfc, 0x47, 0x21, 0x66, 0xa2, 0x65, - 0x5e, 0x3e, 0x96, 0xac, 0xe5, 0xf5, 0xae, 0x19, 0xee, 0xb9, 0x5a, 0x77, 0xbd, 0x68, 0xd7, 0xac, 0xe6, 0x77, 0xc5, 0xff, - 0x68, 0xe8, 0xff, 0x9f, 0x8d, 0x01, 0x66, 0xbf, 0x47, 0x7c, 0xac, 0xf7, 0xef, 0x8c, 0xff, 0x5d, 0x2b, 0xf6, 0xeb, 0x6b, - 0x63, 0x1c, 0x71, 0x65, 0xac, 0xff, 0x77, 0x8e, 0xff, 0xeb, 0x6b, 0x00, 0xb9, 0x79, 0x4c, 0x1c, 0x1a, 0xfd, 0x95, 0x39, - 0x73, 0xd7, 0x1d, 0xfb, 0xde, 0xa7, 0x09, 0xa2, 0xf0, 0xac, 0x46, 0xcf, 0x2a, 0xce, 0xea, 0x6b, 0x90, 0xef, 0xff, 0x77, - 0xdd, 0xff, 0xbf, 0x1f, 0x73, 0x9f, 0xd1, 0xff, 0x8f, 0xdb, 0xde, 0xfd, 0x94, 0xf3, 0x01, 0xf6, 0xb6, 0x00, 0x21, 0xfa, - 0xc1, 0x73, 0xc4, 0x80, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x9f, 0xcf, - 0xef, 0xcf, 0x63, 0x90, 0xcf, 0x84, 0xbd, 0x3e, 0x03, 0xfb, 0x4c, 0x4e, 0xe0, 0x6a, 0x09, 0x75, 0xfd, 0xc5, 0xeb, 0xdc, - 0xf1, 0x99, 0x4c, 0x0b, 0xcf, 0x6b, 0x46, 0xa4, 0x77, 0x3f, 0xe8, 0xcc, 0x28, 0x50, 0xc9, 0x69, 0x30, 0x92, 0x75, 0xa2, - 0x37, 0x97, 0x52, 0xee, 0xec, 0xf7, 0xd4, 0xf8, 0x2f, 0xc4, 0xff, 0xfb, 0x9f, 0x8c, 0x42, 0xfe, 0x9e, 0x9d, 0xf1, 0x9f, - 0xad, 0x7b, 0xb5, 0xfc, 0xb8, 0x73, 0x7d, 0xc9, 0xee, 0x8c, 0x62, 0xd1, 0x78, 0x0d, 0xf7, 0xf5, 0xab, 0x7f, 0xe6, 0xd0, - 0xd9, 0x51, 0xaf, 0x67, 0xe2, 0x3f, 0x9b, 0xfb, 0x34, 0x2e, 0x5a, 0xe1, 0x73, 0xe2, 0x7f, 0x6c, 0x89, 0xff, 0xf8, 0x48, - 0xfc, 0x77, 0x67, 0x92, 0xe9, 0xca, 0x42, 0x5e, 0xc9, 0x7c, 0x93, 0xbf, 0x86, 0xf5, 0x0c, 0xbf, 0xd5, 0x1a, 0xf7, 0x9d, - 0xf8, 0xaf, 0xd4, 0xad, 0xeb, 0x3c, 0xab, 0xe2, 0xff, 0xbe, 0x6c, 0x2b, 0xbd, 0xc9, 0xfc, 0xcf, 0x7b, 0x22, 0x7f, 0x4f, - 0x1e, 0xdd, 0xbb, 0x7d, 0xb4, 0xd6, 0xd6, 0x95, 0xd9, 0xbe, 0xf2, 0x2b, 0xf1, 0x1f, 0xc5, 0xbf, 0x12, 0x37, 0x2d, 0x4a, - 0x6f, 0x06, 0xf6, 0x9e, 0xac, 0x6d, 0x7b, 0xe3, 0xbf, 0x7b, 0xdf, 0x9f, 0x33, 0xe2, 0xff, 0xfd, 0x3c, 0xba, 0xab, 0xe6, - 0x70, 0xbd, 0x7d, 0xe5, 0xef, 0xee, 0xff, 0xef, 0x5b, 0xc9, 0x1d, 0xf5, 0x63, 0xa6, 0xa7, 0x7f, 0xb3, 0xff, 0x7f, 0xef, - 0xe7, 0xef, 0xc6, 0x7f, 0x57, 0x6d, 0x8f, 0x8d, 0x23, 0x93, 0x6a, 0x5f, 0xb9, 0x73, 0x95, 0x6c, 0xf7, 0xfc, 0x7f, 0xd5, - 0x37, 0x1b, 0xe9, 0xd1, 0x44, 0x1c, 0x1b, 0xff, 0x33, 0xab, 0x90, 0xeb, 0xc6, 0x0b, 0xef, 0x8c, 0xff, 0x6b, 0xfb, 0xdb, - 0x56, 0x76, 0x05, 0x3c, 0xad, 0xff, 0xdf, 0x75, 0x97, 0x6c, 0x6c, 0x8e, 0xc9, 0xbd, 0xc7, 0xea, 0xdc, 0xa5, 0x2e, 0x9f, - 0xbf, 0x3f, 0x9a, 0x47, 0x78, 0x5f, 0x8f, 0xff, 0xfa, 0x2a, 0xff, 0x68, 0x5a, 0x95, 0x7c, 0x6f, 0xfc, 0xbf, 0x7b, 0xa7, - 0x93, 0xca, 0x51, 0x7a, 0xda, 0xdf, 0x67, 0x77, 0x85, 0x7b, 0x7b, 0x81, 0x9f, 0xef, 0x36, 0x44, 0x53, 0xcf, 0xd1, 0x95, - 0xbf, 0xff, 0xcf, 0x73, 0xcb, 0xef, 0x78, 0x96, 0xbf, 0x13, 0x1f, 0xc9, 0xfd, 0xf4, 0xdf, 0x88, 0xff, 0xca, 0x91, 0x2b, - 0xff, 0x2b, 0x7b, 0x0d, 0x3b, 0xe3, 0xff, 0xbd, 0x16, 0x40, 0xde, 0x4d, 0x38, 0x71, 0x14, 0x03, 0xfc, 0x9e, 0x16, 0xc0, - 0x0e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xee, 0x37, 0xb1, 0x7f, 0xce, - 0xcd, 0x55, 0xc9, 0x1a, 0x9f, 0x7f, 0x4f, 0x7a, 0x67, 0xc6, 0xfc, 0x71, 0x93, 0x85, 0xec, 0xfa, 0xb7, 0xfe, 0xfc, 0xa4, - 0x23, 0x1f, 0x6f, 0x34, 0xbe, 0xb5, 0x9e, 0xc9, 0xe5, 0x1d, 0x85, 0x6c, 0x03, 0x57, 0x6f, 0xc6, 0xe6, 0xae, 0x41, 0xee, - 0x18, 0xd1, 0x9e, 0xcf, 0x2c, 0xd2, 0xd9, 0x63, 0xfe, 0xf7, 0x9c, 0x9f, 0x67, 0xfa, 0x8d, 0xf2, 0x9b, 0xc6, 0x77, 0xb9, - 0xcc, 0xf2, 0xf9, 0x11, 0x2a, 0x39, 0xf3, 0xf2, 0x79, 0x36, 0x4f, 0xcf, 0x98, 0x3f, 0x9f, 0x79, 0x27, 0x6e, 0xea, 0xe4, - 0xf3, 0x5a, 0xfa, 0x24, 0x73, 0x44, 0x4f, 0x06, 0xa1, 0xda, 0x37, 0x8e, 0xe9, 0xda, 0x5a, 0xb9, 0xde, 0x99, 0x23, 0xc4, - 0xf4, 0xfb, 0xfc, 0x95, 0xfa, 0x1e, 0x93, 0xd7, 0xbd, 0xfe, 0x8d, 0x67, 0xb2, 0x10, 0x44, 0xa9, 0xa7, 0xeb, 0x2c, 0xc1, - 0xeb, 0x4f, 0xf2, 0x19, 0x33, 0xe3, 0x61, 0x7c, 0x75, 0xff, 0x74, 0x24, 0xdb, 0x9b, 0x4a, 0xbe, 0xba, 0x99, 0x5d, 0x33, - 0xe6, 0xc6, 0x88, 0xe3, 0x22, 0xbb, 0x52, 0x3e, 0xfa, 0x7f, 0xee, 0x6f, 0x62, 0x32, 0xfe, 0xa3, 0x98, 0x59, 0xa8, 0x1e, - 0x23, 0xd9, 0xf8, 0x9f, 0xbf, 0x0a, 0xbb, 0xe2, 0xbf, 0x92, 0xf5, 0xe0, 0xfd, 0x8c, 0xd9, 0xb5, 0x9e, 0x70, 0x6f, 0xfc, - 0xc7, 0x83, 0xf6, 0x6b, 0xa4, 0xe7, 0x2f, 0xa3, 0x90, 0xe1, 0xfc, 0xf9, 0xec, 0x22, 0x5a, 0xfb, 0xff, 0x71, 0x59, 0x26, - 0xf1, 0xc2, 0xf8, 0xbf, 0xb6, 0xdf, 0x5b, 0x2e, 0xfe, 0x67, 0x5a, 0xa7, 0xfd, 0xfd, 0x7f, 0xad, 0x5f, 0x3b, 0xb9, 0xff, - 0x7f, 0x27, 0x63, 0x76, 0x14, 0xe6, 0xd9, 0x95, 0xe3, 0xc6, 0xe4, 0xc8, 0xe0, 0xd9, 0x5c, 0x30, 0x1a, 0xe6, 0xab, 0x1d, - 0xf1, 0xdf, 0x3f, 0xc2, 0xae, 0xcc, 0xad, 0x6a, 0xfd, 0x7f, 0xb4, 0xce, 0xff, 0x23, 0xdd, 0xce, 0xcf, 0xc5, 0x7f, 0xe7, - 0x6e, 0x4b, 0x2b, 0x32, 0xe6, 0xe6, 0x77, 0x76, 0x7c, 0xab, 0xff, 0x1f, 0xa5, 0xfe, 0xbf, 0xd6, 0x7b, 0xcd, 0xd4, 0xca, - 0xd8, 0x90, 0xeb, 0x2e, 0x37, 0xfe, 0x5f, 0x3d, 0xca, 0xce, 0xcf, 0x28, 0x63, 0x53, 0xfb, 0xd4, 0x3d, 0xf7, 0xab, 0x45, - 0x4b, 0xa4, 0xc7, 0xd7, 0x3b, 0x33, 0xe6, 0x56, 0xd6, 0x9e, 0xcf, 0x8f, 0xff, 0xce, 0x3d, 0x4c, 0x2a, 0x77, 0x17, 0xa2, - 0xa1, 0x6f, 0x5e, 0xdd, 0xff, 0xcf, 0xce, 0xff, 0x2b, 0xb9, 0xf4, 0xf7, 0xac, 0xff, 0x8d, 0xa5, 0x6b, 0x3f, 0xd1, 0x7a, - 0x3f, 0x71, 0x1c, 0xd0, 0x7e, 0x77, 0x66, 0x89, 0x7f, 0x63, 0xfe, 0xdf, 0x95, 0x81, 0x7d, 0x94, 0xef, 0x09, 0xd5, 0xd7, - 0xff, 0x67, 0x6b, 0x60, 0x1c, 0xd3, 0xf7, 0x8f, 0xc7, 0x7b, 0xe8, 0xc4, 0x4b, 0xd1, 0x7f, 0x5a, 0xfc, 0x9f, 0xf2, 0x44, - 0x43, 0x47, 0xbb, 0x15, 0x2d, 0xad, 0x5b, 0x65, 0xdf, 0x96, 0xce, 0x71, 0xd4, 0xfc, 0xfc, 0x7f, 0xcd, 0xba, 0xfa, 0x1b, - 0xc7, 0x98, 0xb9, 0x23, 0x3b, 0x1f, 0xff, 0xb1, 0xbc, 0xe4, 0xe4, 0x23, 0xfe, 0x4e, 0x2b, 0x75, 0xde, 0xf1, 0xfe, 0xe6, - 0xda, 0x13, 0x1b, 0x9f, 0xb5, 0x13, 0xa1, 0xc4, 0xd1, 0xf3, 0x21, 0xd7, 0x03, 0xfe, 0xe6, 0xf9, 0xd0, 0xdf, 0xfa, 0x1c, - 0xbc, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x7d, 0x3b, 0xa4, 0x92, 0x59, - 0x72, 0x34, 0xbf, 0x8b, 0x9e, 0xcf, 0xad, 0x5f, 0x3d, 0xbb, 0xbb, 0xf7, 0xa5, 0x6b, 0xf9, 0x79, 0x6b, 0xe5, 0x34, 0x97, - 0x8f, 0x28, 0x97, 0x53, 0xed, 0x7e, 0xff, 0x83, 0x38, 0xf2, 0x6a, 0xde, 0x65, 0x75, 0x8d, 0x42, 0x3e, 0xd5, 0xce, 0xeb, - 0x35, 0x4a, 0x65, 0xb7, 0xab, 0x96, 0x3d, 0x7f, 0x3b, 0x34, 0x36, 0xbc, 0x4f, 0x59, 0x8b, 0x85, 0x5a, 0x6e, 0xc3, 0xb9, - 0xdc, 0x61, 0xb1, 0xf8, 0x9b, 0xe5, 0xca, 0x6f, 0x7e, 0x3f, 0x89, 0xfb, 0x6c, 0xab, 0xf1, 0xb9, 0xab, 0x59, 0xcd, 0xf8, - 0xde, 0x7d, 0xbd, 0xea, 0xb5, 0xe5, 0x84, 0x5a, 0xb6, 0x7e, 0x67, 0x89, 0x37, 0xde, 0x6e, 0xad, 0x66, 0xc4, 0x8d, 0xcf, - 0xbf, 0x73, 0x1a, 0x1f, 0xcd, 0x05, 0x50, 0xcb, 0x13, 0xb9, 0xeb, 0x5b, 0x55, 0x8e, 0x14, 0xa5, 0x3d, 0x9b, 0xc6, 0xf6, - 0xec, 0x10, 0xf9, 0xec, 0xe7, 0xa3, 0x94, 0xef, 0xb3, 0xfb, 0x93, 0xca, 0x15, 0xa9, 0xc7, 0xff, 0x55, 0x39, 0x55, 0x3e, - 0x99, 0xed, 0xff, 0xc7, 0xf2, 0x7d, 0x18, 0x4e, 0xb9, 0x9a, 0x77, 0xfd, 0x7f, 0xb4, 0xed, 0x98, 0xb4, 0xf7, 0x93, 0x1d, - 0xe5, 0xda, 0x11, 0x0b, 0xbb, 0xf6, 0xfb, 0x8b, 0x74, 0xad, 0x18, 0xe9, 0x1c, 0x7b, 0xf5, 0xd9, 0xd7, 0xae, 0x4f, 0x56, - 0xc4, 0x7f, 0x5c, 0xcc, 0x93, 0xbb, 0x77, 0x1d, 0xeb, 0xbe, 0x9a, 0x4f, 0x5a, 0x86, 0x2f, 0xc6, 0xff, 0x8e, 0xf8, 0x99, - 0x9d, 0xff, 0x47, 0x79, 0x37, 0x9d, 0x33, 0x6b, 0x4c, 0x3c, 0xcc, 0xe8, 0xfc, 0xdb, 0xe2, 0x7f, 0x6f, 0x19, 0x77, 0xb7, - 0xe6, 0xd7, 0x23, 0xec, 0xf1, 0xd1, 0xf8, 0x9f, 0xdd, 0xef, 0x6d, 0x7e, 0xee, 0x7a, 0xbf, 0xfe, 0xdf, 0xb9, 0xb2, 0x71, - 0x46, 0xfc, 0x9f, 0x12, 0xe5, 0xb9, 0x32, 0x5f, 0x1b, 0xff, 0xef, 0xc7, 0x50, 0x57, 0x1f, 0xf6, 0xde, 0xb9, 0x47, 0xdb, - 0xfc, 0xff, 0x7e, 0x97, 0xe4, 0xdc, 0xdd, 0x9d, 0xbd, 0xab, 0x49, 0x3b, 0x4b, 0xbd, 0x73, 0xcf, 0xe1, 0xa7, 0x63, 0x87, - 0xee, 0xf9, 0xee, 0x19, 0xfd, 0x7f, 0x88, 0xff, 0x05, 0x6b, 0xe1, 0x27, 0xf4, 0x92, 0xab, 0xee, 0xe5, 0xe5, 0xb3, 0xd8, - 0xf7, 0x7e, 0x32, 0x5b, 0x52, 0xf9, 0xfb, 0xff, 0x5f, 0x1f, 0xff, 0x3f, 0xd9, 0xe1, 0xe7, 0x5b, 0xf1, 0x1f, 0xc5, 0x15, - 0xc5, 0x33, 0xe2, 0x3f, 0x36, 0x8e, 0x6a, 0x57, 0xdc, 0xcb, 0x3f, 0x79, 0xfc, 0xdf, 0xbf, 0x13, 0xd4, 0xd7, 0xe3, 0xff, - 0x0b, 0x63, 0xe8, 0x35, 0x4f, 0xa1, 0xbc, 0x17, 0xff, 0x73, 0x77, 0x86, 0x4f, 0x1e, 0xff, 0x9f, 0x1e, 0xff, 0xb3, 0x57, - 0x25, 0x36, 0xcd, 0xff, 0x9f, 0x8e, 0x34, 0x7e, 0x7f, 0xfc, 0x8f, 0xad, 0x7b, 0xf7, 0xd7, 0xe7, 0x9b, 0xe3, 0xd0, 0x67, - 0x61, 0xce, 0x79, 0x8a, 0xe3, 0xfd, 0x99, 0xcd, 0xfc, 0xae, 0xa8, 0xeb, 0xef, 0xff, 0x8f, 0x65, 0xfd, 0x7f, 0xef, 0x93, - 0x2d, 0xbb, 0xee, 0xff, 0xef, 0x7d, 0xa2, 0xa8, 0xfb, 0x0c, 0xc5, 0xff, 0x37, 0xda, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x73, 0xf2, 0x2b, 0x72, 0xeb, 0xf7, 0xe7, 0xc3, 0x38, 0x3d, 0xb7, 0xfe, - 0xdd, 0xfb, 0x33, 0xe3, 0xd8, 0xdc, 0xfa, 0xe3, 0x51, 0x8e, 0xa2, 0xef, 0xe5, 0xd6, 0xf7, 0xee, 0xc7, 0xd3, 0xb7, 0x64, - 0xd6, 0xe5, 0xd6, 0xef, 0x7b, 0x87, 0xfa, 0xf4, 0xdc, 0xfa, 0xe3, 0x26, 0x13, 0xd1, 0xc9, 0xb9, 0xf5, 0xeb, 0x6f, 0x51, - 0x9d, 0x9a, 0x5b, 0x9f, 0xb5, 0xef, 0x4e, 0x3e, 0x6d, 0xfb, 0xe3, 0xc5, 0x6b, 0xf6, 0x46, 0x36, 0x84, 0x93, 0x6b, 0x64, - 0x3e, 0x5b, 0xd3, 0x8a, 0x16, 0xa5, 0xf3, 0x7d, 0xcd, 0xb3, 0x73, 0xeb, 0x7f, 0x3d, 0xc6, 0xeb, 0xd9, 0x58, 0xa3, 0x9c, - 0xf3, 0xbe, 0xef, 0x5d, 0xed, 0x48, 0x8d, 0x1b, 0xd7, 0xe6, 0xd6, 0xba, 0x6e, 0x47, 0xcf, 0xdd, 0x29, 0xe1, 0xdb, 0xb9, - 0xb5, 0xc5, 0x7f, 0x4f, 0xab, 0x1b, 0x4d, 0x51, 0xf7, 0xf4, 0x93, 0x7d, 0x59, 0x83, 0xfa, 0xe2, 0x3f, 0xda, 0x3f, 0xdb, - 0x9b, 0x5b, 0xab, 0xba, 0x9e, 0x20, 0xfe, 0x7f, 0x57, 0x3b, 0x90, 0x99, 0xd1, 0x3e, 0x29, 0xf7, 0x37, 0x6b, 0xc0, 0xce, - 0xdc, 0x5a, 0x5f, 0x8f, 0xff, 0x4a, 0xff, 0x20, 0xfe, 0x7f, 0xcf, 0xf8, 0xbf, 0xaf, 0x2f, 0xaf, 0xaf, 0xff, 0x7f, 0x79, - 0x6f, 0xad, 0xdf, 0x19, 0xff, 0x67, 0xe4, 0xd6, 0x15, 0xff, 0xef, 0x8c, 0xff, 0x6b, 0xfb, 0x13, 0xac, 0x58, 0xcd, 0xed, - 0x9d, 0x4d, 0x88, 0xff, 0xd5, 0x75, 0xe7, 0xa4, 0x9d, 0x21, 0xc4, 0x78, 0x7d, 0xfe, 0x5f, 0xdb, 0x13, 0xb4, 0xda, 0x02, - 0xec, 0xcb, 0xd5, 0xfa, 0x46, 0x6e, 0x7d, 0xb9, 0x75, 0x67, 0xae, 0xd7, 0xf5, 0xe8, 0xef, 0x9b, 0xf7, 0x63, 0x4e, 0x1f, - 0xff, 0xf7, 0xde, 0xab, 0xf9, 0xff, 0x35, 0xa5, 0xd5, 0x2b, 0xde, 0xab, 0xc6, 0xff, 0x2b, 0xda, 0xd8, 0x37, 0x4b, 0x63, - 0xcd, 0xbd, 0xa3, 0xfe, 0x33, 0x8c, 0xa6, 0xd1, 0x1f, 0xef, 0xb4, 0x1a, 0xb0, 0x66, 0x9c, 0xf1, 0x7e, 0x4b, 0x08, 0x7c, - 0xed, 0x49, 0x2e, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x93, 0xfc, 0xfb, 0x9f, 0x72, 0x00, 0xf1, 0x0f, 0xfc, 0x75, 0xf1, 0xff, 0x2f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle genesisFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 1 , 9 }, - { 25, 4, 3 , 3 }, - { 36, 4, 6 , 9 }, - { 50, 4, 5 , 13 }, - { 63, 4, 7 , 9 }, - { 78, 4, 5 , 9 }, - { 91, 4, 1 , 3 }, - { 100, 4, 3 , 9 }, - { 111, 4, 3 , 9 }, - { 122, 4, 5 , 5 }, - { 135, 4, 5 , 5 }, - { 148, 4, 2 , 3 }, - { 158, 4, 4 , 1 }, - { 170, 4, 1 , 1 }, - { 179, 4, 3 , 9 }, - { 190, 4, 5 , 9 }, - { 203, 4, 3 , 9 }, - { 214, 4, 5 , 9 }, - { 227, 4, 5 , 9 }, - { 240, 4, 5 , 9 }, - { 253, 4, 5 , 9 }, - { 266, 4, 5 , 9 }, - { 279, 4, 5 , 9 }, - { 292, 4, 5 , 9 }, - { 305, 4, 5 , 9 }, - { 318, 4, 1 , 7 }, - { 327, 4, 2 , 9 }, - { 337, 4, 3 , 5 }, - { 348, 4, 4 , 3 }, - { 360, 4, 3 , 5 }, - { 371, 4, 5 , 9 }, - { 384, 4, 7 , 9 }, - { 399, 4, 5 , 9 }, - { 412, 4, 5 , 9 }, - { 425, 4, 5 , 9 }, - { 438, 4, 5 , 9 }, - { 451, 4, 5 , 9 }, - { 464, 4, 5 , 9 }, - { 477, 4, 5 , 9 }, - { 490, 4, 5 , 9 }, - { 4, 28, 1 , 9 }, - { 13, 28, 5 , 9 }, - { 26, 28, 5 , 9 }, - { 39, 28, 5 , 9 }, - { 52, 28, 7 , 9 }, - { 67, 28, 5 , 9 }, - { 80, 28, 5 , 9 }, - { 93, 28, 5 , 9 }, - { 106, 28, 5 , 9 }, - { 119, 28, 5 , 9 }, - { 132, 28, 5 , 9 }, - { 145, 28, 5 , 9 }, - { 158, 28, 5 , 9 }, - { 171, 28, 5 , 9 }, - { 184, 28, 7 , 9 }, - { 199, 28, 5 , 9 }, - { 212, 28, 5 , 9 }, - { 225, 28, 5 , 9 }, - { 238, 28, 3 , 9 }, - { 249, 28, 3 , 9 }, - { 260, 28, 3 , 9 }, - { 271, 28, 5 , 3 }, - { 284, 28, 5 , 1 }, - { 297, 28, 2 , 2 }, - { 307, 28, 5 , 7 }, - { 320, 28, 5 , 9 }, - { 333, 28, 5 , 7 }, - { 346, 28, 5 , 9 }, - { 359, 28, 5 , 7 }, - { 372, 28, 4 , 9 }, - { 384, 28, 5 , 9 }, - { 397, 28, 5 , 9 }, - { 410, 28, 1 , 9 }, - { 419, 28, 5 , 11 }, - { 432, 28, 5 , 9 }, - { 445, 28, 2 , 9 }, - { 455, 28, 7 , 7 }, - { 470, 28, 5 , 7 }, - { 483, 28, 5 , 7 }, - { 496, 28, 5 , 9 }, - { 4, 52, 5 , 9 }, - { 17, 52, 5 , 7 }, - { 30, 52, 5 , 7 }, - { 43, 52, 4 , 8 }, - { 55, 52, 5 , 7 }, - { 68, 52, 5 , 7 }, - { 81, 52, 7 , 7 }, - { 96, 52, 5 , 7 }, - { 109, 52, 5 , 9 }, - { 122, 52, 5 , 7 }, - { 135, 52, 4 , 9 }, - { 147, 52, 1 , 9 }, - { 156, 52, 4 , 9 }, - { 168, 52, 6 , 2 }, - { 182, 52, 1 , 9 }, - { 191, 52, 5 , 11 }, - { 204, 52, 6 , 9 }, - { 218, 52, 6 , 9 }, - { 232, 52, 5 , 9 }, - { 245, 52, 5 , 12 }, - { 258, 52, 0 , 0 }, - { 266, 52, 5 , 10 }, - { 279, 52, 7 , 9 }, - { 294, 52, 0 , 0 }, - { 302, 52, 6 , 5 }, - { 316, 52, 5 , 3 }, - { 329, 52, 7 , 9 }, - { 344, 52, 0 , 0 }, - { 352, 52, 4 , 4 }, - { 364, 52, 5 , 7 }, - { 377, 52, 0 , 0 }, - { 385, 52, 0 , 0 }, - { 393, 52, 5 , 12 }, - { 406, 52, 5 , 9 }, - { 419, 52, 7 , 9 }, - { 434, 52, 1 , 1 }, - { 443, 52, 5 , 10 }, - { 456, 52, 0 , 0 }, - { 464, 52, 0 , 0 }, - { 472, 52, 6 , 5 }, - { 486, 52, 9 , 9 }, - { 4, 76, 9 , 7 }, - { 21, 76, 5 , 11 }, - { 34, 76, 5 , 9 }, - { 47, 76, 5 , 12 }, - { 60, 76, 5 , 12 }, - { 73, 76, 5 , 12 }, - { 86, 76, 6 , 12 }, - { 100, 76, 5 , 11 }, - { 113, 76, 5 , 13 }, - { 126, 76, 9 , 9 }, - { 143, 76, 5 , 12 }, - { 156, 76, 5 , 12 }, - { 169, 76, 5 , 12 }, - { 182, 76, 5 , 12 }, - { 195, 76, 5 , 11 }, - { 208, 76, 2 , 12 }, - { 218, 76, 2 , 12 }, - { 228, 76, 3 , 12 }, - { 239, 76, 3 , 11 }, - { 250, 76, 6 , 9 }, - { 264, 76, 6 , 12 }, - { 278, 76, 5 , 12 }, - { 291, 76, 5 , 12 }, - { 304, 76, 5 , 12 }, - { 317, 76, 6 , 12 }, - { 331, 76, 5 , 11 }, - { 344, 76, 5 , 5 }, - { 357, 76, 7 , 9 }, - { 372, 76, 5 , 12 }, - { 385, 76, 5 , 12 }, - { 398, 76, 5 , 12 }, - { 411, 76, 5 , 11 }, - { 424, 76, 5 , 12 }, - { 437, 76, 5 , 9 }, - { 450, 76, 5 , 9 }, - { 463, 76, 5 , 10 }, - { 476, 76, 5 , 10 }, - { 489, 76, 5 , 10 }, - { 4, 100, 6 , 10 }, - { 18, 100, 5 , 9 }, - { 31, 100, 5 , 11 }, - { 44, 100, 9 , 7 }, - { 61, 100, 5 , 10 }, - { 74, 100, 5 , 10 }, - { 87, 100, 5 , 10 }, - { 100, 100, 5 , 10 }, - { 113, 100, 5 , 9 }, - { 126, 100, 2 , 10 }, - { 136, 100, 2 , 10 }, - { 146, 100, 3 , 10 }, - { 157, 100, 3 , 9 }, - { 168, 100, 6 , 9 }, - { 182, 100, 6 , 10 }, - { 196, 100, 5 , 10 }, - { 209, 100, 5 , 10 }, - { 222, 100, 5 , 10 }, - { 235, 100, 6 , 10 }, - { 249, 100, 5 , 9 }, - { 262, 100, 5 , 5 }, - { 275, 100, 7 , 7 }, - { 290, 100, 5 , 10 }, - { 303, 100, 5 , 10 }, - { 316, 100, 5 , 10 }, - { 329, 100, 5 , 9 }, - { 342, 100, 5 , 12 }, - { 355, 100, 5 , 11 }, - { 368, 100, 5 , 11 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo genesisFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 2, 4, 5, { 0 }}, - { 34, 2, 4, 7, { 0 }}, - { 35, 1, 4, 8, { 0 }}, - { 36, 1, 2, 7, { 0 }}, - { 37, 1, 4, 9, { 0 }}, - { 38, 1, 4, 7, { 0 }}, - { 39, 2, 4, 5, { 0 }}, - { 40, 3, 4, 7, { 0 }}, - { 41, 1, 4, 7, { 0 }}, - { 42, 1, 4, 7, { 0 }}, - { 43, 1, 6, 7, { 0 }}, - { 44, 1, 12, 5, { 0 }}, - { 45, 1, 8, 6, { 0 }}, - { 46, 2, 12, 5, { 0 }}, - { 47, 1, 4, 5, { 0 }}, - { 48, 1, 4, 7, { 0 }}, - { 49, 2, 4, 7, { 0 }}, - { 50, 1, 4, 7, { 0 }}, - { 51, 1, 4, 7, { 0 }}, - { 52, 1, 4, 7, { 0 }}, - { 53, 1, 4, 7, { 0 }}, - { 54, 1, 4, 7, { 0 }}, - { 55, 1, 4, 7, { 0 }}, - { 56, 1, 4, 7, { 0 }}, - { 57, 1, 4, 7, { 0 }}, - { 58, 2, 6, 5, { 0 }}, - { 59, 1, 6, 5, { 0 }}, - { 60, 1, 6, 5, { 0 }}, - { 61, 1, 7, 6, { 0 }}, - { 62, 1, 6, 5, { 0 }}, - { 63, 1, 4, 7, { 0 }}, - { 64, 1, 4, 9, { 0 }}, - { 65, 1, 4, 7, { 0 }}, - { 66, 1, 4, 7, { 0 }}, - { 67, 1, 4, 7, { 0 }}, - { 68, 1, 4, 7, { 0 }}, - { 69, 1, 4, 7, { 0 }}, - { 70, 1, 4, 7, { 0 }}, - { 71, 1, 4, 7, { 0 }}, - { 72, 1, 4, 7, { 0 }}, - { 73, 2, 4, 5, { 0 }}, - { 74, 1, 4, 7, { 0 }}, - { 75, 1, 4, 7, { 0 }}, - { 76, 1, 4, 7, { 0 }}, - { 77, 1, 4, 9, { 0 }}, - { 78, 1, 4, 7, { 0 }}, - { 79, 1, 4, 7, { 0 }}, - { 80, 1, 4, 7, { 0 }}, - { 81, 1, 4, 7, { 0 }}, - { 82, 1, 4, 7, { 0 }}, - { 83, 1, 4, 7, { 0 }}, - { 84, 1, 4, 7, { 0 }}, - { 85, 1, 4, 7, { 0 }}, - { 86, 1, 4, 7, { 0 }}, - { 87, 1, 4, 9, { 0 }}, - { 88, 1, 4, 7, { 0 }}, - { 89, 1, 4, 7, { 0 }}, - { 90, 1, 4, 7, { 0 }}, - { 91, 3, 4, 7, { 0 }}, - { 92, 1, 4, 5, { 0 }}, - { 93, 1, 4, 7, { 0 }}, - { 94, 1, 4, 7, { 0 }}, - { 95, 0, 14, 5, { 0 }}, - { 96, 1, 4, 5, { 0 }}, - { 97, 1, 6, 7, { 0 }}, - { 98, 1, 4, 7, { 0 }}, - { 99, 1, 6, 7, { 0 }}, - { 100, 1, 4, 7, { 0 }}, - { 101, 1, 6, 7, { 0 }}, - { 102, 1, 4, 6, { 0 }}, - { 103, 1, 6, 7, { 0 }}, - { 104, 1, 4, 7, { 0 }}, - { 105, 2, 4, 5, { 0 }}, - { 106, 1, 4, 7, { 0 }}, - { 107, 1, 4, 7, { 0 }}, - { 108, 2, 4, 5, { 0 }}, - { 109, 1, 6, 9, { 0 }}, - { 110, 1, 6, 7, { 0 }}, - { 111, 1, 6, 7, { 0 }}, - { 112, 1, 6, 7, { 0 }}, - { 113, 1, 6, 7, { 0 }}, - { 114, 1, 6, 7, { 0 }}, - { 115, 1, 6, 7, { 0 }}, - { 116, 1, 5, 6, { 0 }}, - { 117, 1, 6, 7, { 0 }}, - { 118, 1, 6, 7, { 0 }}, - { 119, 1, 6, 9, { 0 }}, - { 120, 1, 6, 7, { 0 }}, - { 121, 1, 6, 7, { 0 }}, - { 122, 1, 6, 7, { 0 }}, - { 123, 2, 4, 7, { 0 }}, - { 124, 2, 4, 5, { 0 }}, - { 125, 1, 4, 7, { 0 }}, - { 126, 1, 4, 8, { 0 }}, - { 161, 2, 6, 5, { 0 }}, - { 162, 1, 4, 7, { 0 }}, - { 163, 1, 4, 8, { 0 }}, - { 8364, 1, 4, 8, { 0 }}, - { 165, 1, 4, 7, { 0 }}, - { 352, 1, 1, 7, { 0 }}, - { 167, 0, 0, 0, { 0 }}, - { 353, 1, 3, 7, { 0 }}, - { 169, 1, 4, 9, { 0 }}, - { 170, 0, 0, 0, { 0 }}, - { 171, 1, 6, 8, { 0 }}, - { 172, 1, 8, 7, { 0 }}, - { 174, 1, 4, 9, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 1, 4, 6, { 0 }}, - { 177, 1, 6, 7, { 0 }}, - { 178, 0, 0, 0, { 0 }}, - { 179, 0, 0, 0, { 0 }}, - { 381, 1, 1, 7, { 0 }}, - { 181, 1, 6, 7, { 0 }}, - { 182, 1, 4, 9, { 0 }}, - { 183, 2, 8, 5, { 0 }}, - { 382, 1, 3, 7, { 0 }}, - { 185, 0, 0, 0, { 0 }}, - { 186, 0, 0, 0, { 0 }}, - { 187, 1, 6, 8, { 0 }}, - { 338, 1, 4, 11, { 0 }}, - { 339, 1, 6, 11, { 0 }}, - { 376, 1, 2, 7, { 0 }}, - { 191, 1, 6, 7, { 0 }}, - { 192, 1, 1, 7, { 0 }}, - { 193, 1, 1, 7, { 0 }}, - { 194, 1, 1, 7, { 0 }}, - { 195, 1, 1, 7, { 0 }}, - { 196, 1, 2, 7, { 0 }}, - { 197, 1, 0, 7, { 0 }}, - { 198, 1, 4, 11, { 0 }}, - { 199, 1, 4, 7, { 0 }}, - { 200, 1, 1, 7, { 0 }}, - { 201, 1, 1, 7, { 0 }}, - { 202, 1, 1, 7, { 0 }}, - { 203, 1, 2, 7, { 0 }}, - { 204, 1, 1, 5, { 0 }}, - { 205, 2, 1, 5, { 0 }}, - { 206, 1, 1, 5, { 0 }}, - { 207, 1, 2, 5, { 0 }}, - { 208, 0, 4, 7, { 0 }}, - { 209, 1, 1, 7, { 0 }}, - { 210, 1, 1, 7, { 0 }}, - { 211, 1, 1, 7, { 0 }}, - { 212, 1, 1, 7, { 0 }}, - { 213, 1, 1, 7, { 0 }}, - { 214, 1, 2, 7, { 0 }}, - { 215, 1, 6, 7, { 0 }}, - { 216, 0, 4, 7, { 0 }}, - { 217, 1, 1, 7, { 0 }}, - { 218, 1, 1, 7, { 0 }}, - { 219, 1, 1, 7, { 0 }}, - { 220, 1, 2, 7, { 0 }}, - { 221, 1, 1, 7, { 0 }}, - { 222, 1, 4, 7, { 0 }}, - { 223, 1, 4, 7, { 0 }}, - { 224, 1, 3, 7, { 0 }}, - { 225, 1, 3, 7, { 0 }}, - { 226, 1, 3, 7, { 0 }}, - { 227, 1, 3, 7, { 0 }}, - { 228, 1, 4, 7, { 0 }}, - { 229, 1, 2, 7, { 0 }}, - { 230, 1, 6, 11, { 0 }}, - { 231, 1, 6, 7, { 0 }}, - { 232, 1, 3, 7, { 0 }}, - { 233, 1, 3, 7, { 0 }}, - { 234, 1, 3, 7, { 0 }}, - { 235, 1, 4, 7, { 0 }}, - { 236, 1, 3, 5, { 0 }}, - { 237, 2, 3, 5, { 0 }}, - { 238, 1, 3, 5, { 0 }}, - { 239, 1, 4, 5, { 0 }}, - { 240, 1, 4, 7, { 0 }}, - { 241, 1, 3, 7, { 0 }}, - { 242, 1, 3, 7, { 0 }}, - { 243, 1, 3, 7, { 0 }}, - { 244, 1, 3, 7, { 0 }}, - { 245, 1, 3, 7, { 0 }}, - { 246, 1, 4, 7, { 0 }}, - { 247, 1, 6, 7, { 0 }}, - { 248, 0, 6, 7, { 0 }}, - { 249, 1, 3, 7, { 0 }}, - { 250, 1, 3, 7, { 0 }}, - { 251, 1, 3, 7, { 0 }}, - { 252, 1, 4, 7, { 0 }}, - { 253, 1, 3, 7, { 0 }}, - { 254, 1, 4, 7, { 0 }}, - { 255, 1, 4, 7, { 0 }}, -}; - -// Style loading function: Genesis -static void GuiLoadStyleGenesis(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < GENESIS_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(genesisStyleProps[i].controlId, genesisStyleProps[i].propertyId, genesisStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int genesisFontDataSize = 0; - unsigned char *data = DecompressData(genesisFontData, GENESIS_STYLE_FONT_ATLAS_COMP_SIZE, &genesisFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, genesisFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, genesisFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/style_genesis.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/style_genesis.png deleted file mode 100644 index 37dfa85..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/style_genesis.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/style_genesis.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/style_genesis.rgs deleted file mode 100644 index 1d12f67..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/genesis/style_genesis.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/PixelIntv.otf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/PixelIntv.otf deleted file mode 100644 index e8c54a7..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/PixelIntv.otf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/README.md deleted file mode 100644 index da97773..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: jungle - -Sunset in the jungle, trees do not let to see the last rays of sun on the horizon, small creek in the path, mug on the shoes, a touch of danger and the adventure feeling, get into your jeep and drive with this style. - -![jungle style table](style_jungle.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_jungle.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_jungle.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_jungle.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_jungle.h` | Embeddable style as code file, self-contained, includes font data | -| `style_jungle.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![jungle style screen](screenshot.png) - -## about font - -"Pixel Intv" font by [Pixel Sagas](http://www.pixelsagas.com) (Neale and Shayna Davidson). - -100% free font, downloaded from dafont.com: [pixel-intv](https://www.dafont.com/pixel-intv.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/font_readme.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/font_readme.txt deleted file mode 100644 index b4e6c6e..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/font_readme.txt +++ /dev/null @@ -1,47 +0,0 @@ -Shareware/ Font License - -Pixel Sagas Freeware Fonts EULA (End User License Agreement) and Software Inclusion Agreement - -"Purchaser" and "User" may be used interchangeably in this agreement. - -"Pixel Sagas" and "Neale Davidson" may be used interchangeably in this agreement. These all refer to the intellectual and legal property of Neale Davidson. - -Usage - -Pixel Saga's Shareware Fonts are free to use for personal, non-commercial purposes. No payment is necessary to use Pixel Saga's Freeware Fonts for personal use, and there is no limit to the amount of prints, pages, or other medium to be produced using them. However, you cannot offer the font for commercial sale, or offer for direct download. The inclusion othe font name and/or site URL in the credits or documentation when it is used is appreciated, but this is not mandatory. - -Payment - -Payment is not required for the use of Pixel Saga's Shareware Fonts. Commercial use requires a modest fee which can be paid through the pixelsagas.com web site through Paypal.com's services. The transaction receipt for any shareware "commercial license" purchase will suffice as proof of license. - -Support - -Font installation help is available at http://www.pixelsagas.com. If you experience problems with any Pixel Saga's Freeware font (such as spacing issues or missing characters), please verify that you have the correct and current version of the fonts. In the case of Freeware fonts, downloading the font directly from the Pixel Sagas site will ensure that the font files have not been altered. - -Software Inclusion Agreement - -Pixel Saga's software products are protected by copyright laws and International copyright treaties, as well as other intellectual property laws and treaties. All Pixel Saga's software products are licensed, not sold. - -1) GRANT OF LICENSE - -This document grants the user the following rights: - -Installation and Use. The user may install and use an unlimited number of copies of the software product. The user may not offer Pixel Sagas freeware fonts for direct download unless the user has received explicit, written permission from Neale Davidson. Otherwise please direct users to the http://www.pixelsagas.com website. Pixel Sagas freeware fonts may, however, be embedded for web, publication, or general software use. - -2) WARRANTIES - -None - -Pixel Sagas expressly disclaims any warranty for the software product. The software product and any related documentation is provided "as is" without warranty of any kind, either express or implied, including, without limitation, the implied warranties or merchantability, fitness for a particular purpose, or non-infringement. The entire risk arising out of use or performance of the software product remains with the user. - -No Liability For Consequential Damages. - -In no event shall Neale Davidson or Pixel Sagas be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use this product, even if Pixel Sagas has been advised of the possibility of such damages. - -3) MISCELLANEOUS - -Should the user have any questions concerning this document or you desire to contact Neale Davidson for any reason, please email jaynz@pixelsagas.com . - -Governing Law - -This agreement is governed by and subject to the laws of the United States of America. diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/screenshot.old.png deleted file mode 100644 index a8a7dbb..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/screenshot.png deleted file mode 100644 index 2b378f3..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.h deleted file mode 100644 index 7311a6e..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.h +++ /dev/null @@ -1,579 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleJungle(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define JUNGLE_STYLE_PROPS_COUNT 17 - -// Custom style name: Jungle -static const GuiStyleProp jungleStyleProps[JUNGLE_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x60827dff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x2c3334ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x82a29fff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0x5f9aa8ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x334e57ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0x6aa9b8ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xa9cb8dff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x3b6357ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x97af81ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x5b6462ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x2c3334ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x666b69ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x0000000c }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x638465ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x2b3a3aff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000006 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "PixelIntv.otf" (size: 12, spacing: 0) - -#define JUNGLE_STYLE_FONT_ATLAS_COMP_SIZE 2059 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char jungleFontData[JUNGLE_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0x9d, 0xbd, 0x8e, 0x1d, 0x35, 0x18, 0x86, 0x8d, 0x39, 0x1d, 0x25, 0xa2, 0x00, 0x09, 0x91, 0x06, 0x89, 0x86, 0x86, 0x28, - 0x12, 0x74, 0x7b, 0x01, 0xd4, 0x08, 0x51, 0x20, 0x2a, 0x1a, 0xe0, 0x1e, 0xc8, 0x95, 0xa5, 0xa1, 0xe7, 0x06, 0xb8, 0x0b, - 0x2e, 0xe0, 0x8b, 0x36, 0x9b, 0xdd, 0xec, 0xee, 0x99, 0xb1, 0xfd, 0xfd, 0xd8, 0x9e, 0x9f, 0x67, 0x1f, 0x25, 0x52, 0xc6, - 0x67, 0x66, 0x6c, 0xbf, 0xb6, 0x67, 0x36, 0xdf, 0x7b, 0x3e, 0x4b, 0x02, 0x00, 0x00, 0x00, 0xb8, 0xe2, 0xf6, 0x67, 0xf9, - 0xd8, 0x52, 0x49, 0x7a, 0x5f, 0xd2, 0x7e, 0xad, 0xfb, 0xe3, 0x77, 0x25, 0x79, 0xf5, 0x13, 0xcb, 0x57, 0xcc, 0x2b, 0x75, - 0x58, 0xab, 0xf5, 0x7a, 0xcd, 0x92, 0xaa, 0x64, 0xfd, 0xfa, 0xeb, 0xfd, 0x95, 0x14, 0x6d, 0x78, 0xfa, 0x93, 0x14, 0x6d, - 0x29, 0x9f, 0xd7, 0x5b, 0xff, 0x72, 0x1f, 0xac, 0x97, 0xdd, 0xfd, 0xb9, 0xed, 0x89, 0xac, 0xb8, 0xe6, 0xfa, 0xe7, 0x93, - 0x6a, 0x04, 0xea, 0x47, 0x86, 0xae, 0x77, 0x4b, 0x9f, 0xae, 0xb5, 0x41, 0x94, 0x35, 0xb8, 0x3f, 0xde, 0x53, 0xff, 0xf4, - 0x70, 0x8f, 0xf6, 0xf9, 0x5f, 0x53, 0x45, 0xe4, 0xb2, 0xd8, 0x13, 0xa9, 0xa8, 0x4d, 0x36, 0xdc, 0x29, 0x62, 0x34, 0xa7, - 0xa0, 0xde, 0xcd, 0xc5, 0x36, 0x88, 0x41, 0x7f, 0xdb, 0x08, 0x8d, 0xba, 0x8e, 0x6d, 0xfe, 0xdf, 0x72, 0x79, 0x37, 0x02, - 0xca, 0x57, 0xf5, 0xd7, 0x38, 0x6a, 0xfe, 0xa7, 0xae, 0xea, 0x7b, 0xf4, 0x1f, 0xb1, 0xfe, 0x97, 0x3f, 0x5f, 0xee, 0xb3, - 0xe5, 0xeb, 0xe5, 0xf7, 0xf3, 0x5f, 0xff, 0xf4, 0x8c, 0xd0, 0x5f, 0xff, 0xfc, 0xef, 0xab, 0x7e, 0xc4, 0xfa, 0xbf, 0xc5, - 0xf7, 0xc8, 0xda, 0x73, 0x7c, 0x79, 0xec, 0x48, 0xf7, 0xf9, 0x3f, 0x83, 0x92, 0xfa, 0xb5, 0xf7, 0x3f, 0x71, 0xac, 0xb3, - 0xbd, 0xe7, 0xbf, 0xe5, 0x5a, 0xf7, 0x3d, 0x21, 0x86, 0xf9, 0xb9, 0x57, 0xfd, 0x4b, 0xea, 0x43, 0xc4, 0x5a, 0xa3, 0x79, - 0xca, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x33, 0x62, 0x52, 0x8e, 0xbf, 0x47, - 0x46, 0x22, 0x7b, 0x95, 0xb5, 0xbb, 0x0d, 0x34, 0xce, 0x95, 0x6c, 0xe8, 0xb1, 0x59, 0xfd, 0xd2, 0xcb, 0xed, 0x97, 0xd4, - 0xde, 0x8c, 0x96, 0xda, 0x58, 0xef, 0xe7, 0xd1, 0x3f, 0x2b, 0x63, 0xaf, 0x65, 0x87, 0xde, 0x9a, 0x9f, 0x71, 0x3d, 0x72, - 0xed, 0x6d, 0x9f, 0xb6, 0x4c, 0xb7, 0x02, 0xa4, 0x21, 0xf3, 0xbf, 0xcd, 0xc3, 0xd4, 0xc7, 0xdd, 0xb8, 0xec, 0x33, 0x2b, - 0xd5, 0xf5, 0xa2, 0x76, 0x14, 0x7e, 0x88, 0x36, 0xf7, 0x1d, 0xdf, 0xd1, 0xae, 0x4f, 0xab, 0xa3, 0xc4, 0x32, 0x26, 0x2d, - 0x0e, 0xd6, 0x88, 0xf5, 0x3f, 0x66, 0xfe, 0x97, 0xc6, 0xa9, 0x3c, 0xfb, 0x13, 0xb3, 0x8e, 0xcf, 0xd2, 0xbf, 0xc7, 0x5a, - 0x9d, 0x1a, 0x56, 0x05, 0x6b, 0x5d, 0x6c, 0xcf, 0x7f, 0x8b, 0x53, 0xa7, 0xe4, 0x56, 0xb2, 0xbf, 0x4f, 0xcd, 0x98, 0xff, - 0x9e, 0x39, 0x6e, 0x5b, 0xff, 0xcb, 0xfa, 0xc7, 0xb9, 0xdb, 0x64, 0xca, 0xdb, 0x74, 0xcb, 0x1c, 0xdb, 0xd6, 0xf3, 0x1f, - 0x22, 0xfd, 0x8c, 0xf3, 0x7e, 0x9f, 0x42, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xeb, 0xc7, 0x1b, 0xe5, 0x29, 0x91, 0xc6, 0x2c, 0x3e, 0xeb, 0x7e, 0xad, 0x51, 0x6e, 0xbd, 0xf1, 0xfd, 0x1d, 0xed, - 0xfb, 0x88, 0x88, 0x49, 0x5b, 0x32, 0x98, 0xf9, 0xbd, 0x88, 0xb2, 0x09, 0x47, 0x5e, 0x8f, 0x7e, 0x9b, 0xa9, 0xbf, 0xa5, - 0x3e, 0x76, 0xfd, 0xc5, 0x98, 0x61, 0xb0, 0x96, 0x19, 0x66, 0x5b, 0xfa, 0x5b, 0x5c, 0x07, 0x1e, 0xfd, 0xeb, 0x6b, 0x55, - 0x2a, 0xe8, 0xa1, 0x5f, 0xe3, 0xad, 0xfa, 0x8b, 0x31, 0xef, 0x63, 0x9f, 0xa7, 0x58, 0x1f, 0xfd, 0x2d, 0xfd, 0x76, 0x94, - 0xf5, 0xbf, 0x7e, 0xcd, 0x6c, 0x5c, 0xff, 0xa5, 0xba, 0xaa, 0x48, 0xb8, 0x1b, 0x55, 0x3f, 0xa7, 0x5a, 0xfb, 0xe7, 0xbc, - 0xfa, 0xa7, 0x2e, 0xfa, 0xf7, 0xb9, 0xe3, 0x7e, 0x9e, 0xff, 0x96, 0xec, 0xd5, 0x33, 0x7c, 0x6e, 0x3e, 0x6f, 0x78, 0xad, - 0x74, 0x44, 0xcf, 0xf4, 0x5b, 0xff, 0x71, 0x01, 0xee, 0xc7, 0x25, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x22, 0x46, 0x61, 0x8f, 0x9d, 0xf5, 0x88, 0x00, 0x5e, 0x1f, 0xcf, 0x0d, 0x31, 0xcc, 0xe7, 0xc7, - 0xf3, 0x8a, 0x63, 0x44, 0x94, 0x39, 0xff, 0x6c, 0xfb, 0xf1, 0xb6, 0xe6, 0x41, 0xb3, 0x3b, 0x08, 0x23, 0xe2, 0x80, 0xe3, - 0xf5, 0x4f, 0x4d, 0xf1, 0xd8, 0x6b, 0x25, 0xb3, 0xc1, 0x33, 0x94, 0x95, 0x19, 0x9f, 0x4a, 0x19, 0xa2, 0xf4, 0x6e, 0xa6, - 0x7a, 0x2f, 0x58, 0x72, 0xdd, 0xd5, 0xae, 0x66, 0xdb, 0xa1, 0xb8, 0xe4, 0x8e, 0xa9, 0x79, 0x59, 0xf4, 0x2d, 0xcf, 0xea, - 0xb6, 0xe5, 0x86, 0x35, 0xa0, 0xbf, 0x47, 0x3a, 0xa9, 0xe7, 0xa3, 0xcf, 0x77, 0xd7, 0x5f, 0xff, 0xd4, 0xe0, 0xf1, 0x8b, - 0x76, 0xa4, 0x48, 0x65, 0xf7, 0x5b, 0xcb, 0x08, 0xe8, 0xad, 0x7f, 0xad, 0xad, 0x76, 0x97, 0x50, 0x0a, 0x1d, 0x37, 0xd1, - 0xfa, 0xb7, 0x8c, 0xd3, 0xe8, 0x11, 0x6c, 0x19, 0x01, 0x63, 0xe6, 0xbf, 0xa8, 0xf5, 0x2f, 0xaf, 0x0d, 0xf1, 0xbd, 0x67, - 0x71, 0x01, 0xd9, 0x56, 0x14, 0xaf, 0x5b, 0xcd, 0xa2, 0x62, 0x36, 0xad, 0x1c, 0x23, 0xde, 0xa0, 0x6d, 0x7b, 0x55, 0x47, - 0x3b, 0x36, 0x6d, 0x3d, 0x31, 0x5e, 0x7f, 0x31, 0xef, 0xf8, 0x9d, 0x37, 0xb7, 0xfb, 0xb5, 0x6d, 0xd6, 0xd9, 0x1d, 0x7b, - 0xf1, 0xf3, 0x7f, 0x7b, 0xdf, 0x46, 0x1b, 0x71, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x39, 0x73, 0x14, 0xe8, 0x33, 0xd5, 0xd4, 0xcf, 0xb0, 0xee, 0x9d, 0x35, 0x72, 0xef, 0xdc, 0x5e, 0xfb, 0xdb, 0xd9, - 0xf3, 0x82, 0x49, 0x97, 0x1d, 0xe0, 0xe2, 0xe3, 0x66, 0xbe, 0x2c, 0x66, 0xb5, 0x1e, 0xb2, 0x66, 0xdc, 0xd2, 0x7a, 0x30, - 0x3c, 0xbe, 0x1e, 0xab, 0xe7, 0x23, 0xde, 0x87, 0x17, 0xe3, 0x6d, 0xb3, 0xcd, 0x7f, 0x9b, 0x2f, 0x64, 0x6b, 0xfa, 0xa7, - 0x41, 0xfe, 0x3c, 0x8f, 0xfe, 0xde, 0xdd, 0x9f, 0xed, 0x8e, 0x2c, 0x7d, 0xaf, 0x1e, 0x41, 0xff, 0x36, 0xf7, 0xae, 0xc5, - 0x47, 0x18, 0xed, 0xc3, 0x9b, 0xa5, 0xbf, 0x98, 0xf6, 0xce, 0xf5, 0xe8, 0xef, 0xf3, 0xcb, 0x8f, 0x9b, 0xff, 0xf6, 0x3b, - 0xa6, 0x2e, 0x3b, 0xa3, 0x7b, 0x67, 0xab, 0x2e, 0x53, 0xe3, 0x0c, 0xa7, 0x56, 0xbc, 0x5f, 0xae, 0x97, 0xb3, 0x6b, 0xae, - 0x7b, 0x31, 0xca, 0xbf, 0xea, 0xcd, 0xfe, 0x3d, 0x43, 0x7f, 0xbc, 0x63, 0xc7, 0x1e, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x8b, 0xe3, 0xc4, 0xed, 0x47, 0xa5, 0xcd, 0xea, 0x26, 0x8b, 0x19, 0x3d, - 0xac, 0xb9, 0x63, 0xb4, 0xde, 0x0a, 0x4d, 0xec, 0x5c, 0x13, 0xbb, 0xcc, 0x8f, 0x3e, 0x7b, 0xed, 0x83, 0xf8, 0x5e, 0x5e, - 0x3c, 0xf0, 0x52, 0x3e, 0x5b, 0xcd, 0x72, 0xb2, 0xd4, 0x33, 0xb5, 0x73, 0xcb, 0x77, 0xb6, 0x38, 0x00, 0x74, 0xb9, 0xda, - 0x74, 0x47, 0xb3, 0xb2, 0x9e, 0x16, 0xd7, 0x85, 0x2f, 0x43, 0x9f, 0xf5, 0xb3, 0xf9, 0x89, 0x92, 0x4f, 0x79, 0xf5, 0xa4, - 0x77, 0x5f, 0x2e, 0xf6, 0x78, 0x5e, 0xc9, 0x75, 0x54, 0x3b, 0xb7, 0x7c, 0x67, 0xad, 0xfe, 0x59, 0x9d, 0xab, 0x4d, 0xaf, - 0x4e, 0x8c, 0xaf, 0xd0, 0x96, 0x15, 0xc7, 0xa2, 0x7f, 0x5b, 0xfd, 0x1f, 0xaf, 0xac, 0xcf, 0x4b, 0x5f, 0x14, 0xfe, 0x75, - 0x77, 0xf6, 0xe5, 0xe1, 0x6f, 0xfd, 0xb9, 0xa5, 0x3b, 0xeb, 0x9d, 0x3c, 0x36, 0x17, 0x97, 0x77, 0x04, 0x44, 0x66, 0x53, - 0x4c, 0xae, 0x0c, 0xad, 0x36, 0xc7, 0x83, 0x3c, 0xd9, 0x5b, 0x5e, 0xab, 0x61, 0x69, 0xfe, 0xb7, 0xe9, 0xbf, 0x76, 0xe7, - 0x64, 0xf4, 0xc7, 0xc9, 0x46, 0xe6, 0x7f, 0x8f, 0xac, 0x78, 0xa2, 0x9a, 0x27, 0xad, 0x6b, 0x85, 0x67, 0xfe, 0x97, 0x9e, - 0xff, 0xf1, 0xfa, 0x5b, 0x5d, 0x70, 0xa3, 0xf5, 0x4f, 0x66, 0x9f, 0xaa, 0xf5, 0xad, 0xd1, 0xbe, 0x02, 0x94, 0x9f, 0xc2, - 0x75, 0xfd, 0xd7, 0xa9, 0xeb, 0x6f, 0x79, 0xfe, 0xcb, 0x4e, 0xf4, 0x4f, 0x0e, 0x67, 0x6d, 0x94, 0x1f, 0xd5, 0xff, 0xfe, - 0xdf, 0x53, 0x7f, 0xfd, 0xfb, 0x7f, 0xac, 0xb3, 0xd2, 0x96, 0xd5, 0x71, 0x4f, 0xdf, 0x94, 0xf3, 0xb7, 0xe6, 0xd7, 0x47, - 0xbf, 0xc3, 0xbd, 0x92, 0x1f, 0x86, 0x9d, 0x0b, 0x31, 0x8e, 0x57, 0x3c, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xb0, 0x75, 0xea, 0x5e, 0xb4, 0xcf, 0x17, 0xe3, 0x48, 0xb5, 0xf3, 0xbc, 0xe5, 0x5a, 0x97, 0xda, 0xd7, - 0xf2, 0xad, 0x7c, 0x79, 0x75, 0xf4, 0x8d, 0xbc, 0x91, 0xdf, 0xdc, 0x7d, 0x50, 0x2b, 0xbf, 0x8b, 0xb4, 0x2d, 0xc7, 0xdb, - 0x96, 0x7e, 0x2c, 0x9f, 0xd1, 0xc7, 0xb5, 0xdb, 0xa2, 0x7f, 0x35, 0x3f, 0xd9, 0x8f, 0x72, 0x23, 0x7f, 0x1a, 0xce, 0xf3, - 0x96, 0x6b, 0xf4, 0xff, 0x42, 0xfe, 0x93, 0x7f, 0xe5, 0xb5, 0x7c, 0xb5, 0x78, 0xd6, 0xdf, 0xee, 0x3e, 0xf0, 0xf8, 0xf5, - 0x34, 0x3b, 0x21, 0xc7, 0x45, 0x18, 0xdb, 0xa3, 0xff, 0xb5, 0x78, 0xf2, 0x2f, 0xf2, 0x91, 0xfc, 0xb4, 0xe0, 0x44, 0xab, - 0x9d, 0xe7, 0x2d, 0xd7, 0xe8, 0xff, 0x97, 0x88, 0xfc, 0x23, 0xbf, 0xcb, 0xc7, 0x57, 0x25, 0x37, 0x72, 0xd3, 0x70, 0x6d, - 0x7f, 0x5d, 0x2f, 0xef, 0xea, 0x75, 0x71, 0xee, 0x84, 0x1d, 0x39, 0xff, 0xa3, 0xfc, 0x04, 0x9f, 0xca, 0xcf, 0xf2, 0x5d, - 0x87, 0x3e, 0x8b, 0xd4, 0xff, 0x1b, 0xf9, 0x7f, 0x45, 0xff, 0x98, 0x3e, 0xf0, 0xf8, 0xf5, 0xae, 0xb5, 0x8d, 0x71, 0x16, - 0x48, 0x63, 0x26, 0x5d, 0x6f, 0xdb, 0x7b, 0xf5, 0x99, 0x45, 0xff, 0xf5, 0x36, 0x7d, 0x22, 0xaf, 0x27, 0xea, 0x5f, 0x7b, - 0xfe, 0x27, 0x45, 0xce, 0x58, 0x8d, 0x1b, 0x35, 0xc2, 0xa9, 0xb2, 0x27, 0xfd, 0x4b, 0xe5, 0x7f, 0x4c, 0xd4, 0x7f, 0x8c, - 0x6b, 0xa8, 0xfd, 0xba, 0xe8, 0xbf, 0x2d, 0xfd, 0x2d, 0xef, 0xf6, 0x9e, 0xf5, 0x50, 0x73, 0x2f, 0xab, 0x9f, 0xac, 0x76, - 0x9e, 0xb7, 0x5c, 0x8b, 0x47, 0xff, 0xd1, 0x75, 0xdd, 0x8f, 0x53, 0x11, 0xce, 0xed, 0x54, 0x05, 0xf4, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3d, 0x93, 0x2b, 0xb9, 0xdf, 0x72, 0xa1, 0xc4, 0xe2, 0x67, 0x68, 0xdb, 0x01, - 0x58, 0x8c, 0x39, 0x09, 0x73, 0x68, 0x3b, 0xeb, 0x6d, 0x19, 0x77, 0xbf, 0x52, 0xcb, 0x4b, 0x7a, 0xd4, 0xff, 0xbf, 0x38, - 0x17, 0x4a, 0xb2, 0x3a, 0x77, 0x9f, 0x6f, 0x07, 0x58, 0x9f, 0xb7, 0x21, 0x9b, 0x3c, 0x91, 0xa5, 0x76, 0x6e, 0xe7, 0x7e, - 0xe5, 0xb2, 0x3c, 0x24, 0xe7, 0xcb, 0xec, 0xb8, 0xc5, 0x99, 0x63, 0x1a, 0x52, 0x75, 0x41, 0x8f, 0xf3, 0x11, 0xf4, 0x2e, - 0xb3, 0xe6, 0xf9, 0xdc, 0x62, 0x5b, 0x22, 0xcb, 0xd6, 0xe7, 0xbf, 0x6d, 0x7e, 0xd8, 0xd7, 0x9b, 0xb1, 0x65, 0x1a, 0xdf, - 0xdb, 0xa8, 0xb2, 0xd1, 0xf7, 0x8c, 0xf2, 0x7c, 0x1d, 0x41, 0x7f, 0x4b, 0x86, 0xd0, 0xa3, 0xeb, 0x2f, 0xc1, 0x99, 0xf3, - 0x66, 0xae, 0x6f, 0xbe, 0x6b, 0xa7, 0x21, 0x65, 0x33, 0xf4, 0x6f, 0xd9, 0x23, 0x7e, 0xaf, 0xf3, 0x5f, 0x5b, 0xe7, 0xb3, - 0xcd, 0xff, 0xb6, 0xef, 0x47, 0x1c, 0x5d, 0x7f, 0x41, 0xff, 0x40, 0xcf, 0xd7, 0x1e, 0xe7, 0xff, 0x59, 0xdf, 0xff, 0xdb, - 0xc6, 0x21, 0x9e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe7, 0x61, 0xb3, 0x7a, 0x03, 0xdb, - 0xbc, 0x6f, 0xdb, 0xf0, 0xfd, 0x65, 0xd3, 0x6e, 0x62, 0xe5, 0x36, 0xd8, 0xbc, 0x64, 0x7e, 0xdf, 0x57, 0xbc, 0x87, 0xcd, - 0xda, 0xaf, 0xf6, 0x1c, 0x59, 0xa3, 0x7d, 0x7f, 0xa5, 0x5d, 0x71, 0xad, 0xbb, 0x4d, 0xdb, 0xc6, 0xf0, 0x7a, 0x1b, 0xf6, - 0xec, 0x01, 0x5c, 0x3a, 0x9e, 0x77, 0xb0, 0xfb, 0xd6, 0xac, 0xd8, 0xd7, 0x11, 0x62, 0x66, 0xa9, 0x5a, 0x92, 0x37, 0xef, - 0x53, 0xaa, 0x97, 0x8d, 0xf5, 0xa7, 0x1c, 0xc5, 0xff, 0x75, 0xf4, 0xb2, 0xf1, 0x8e, 0x81, 0x7d, 0xc5, 0xff, 0xf7, 0xa4, - 0xb1, 0xcd, 0xbf, 0xcb, 0xfc, 0xf7, 0x3c, 0xa7, 0xb6, 0x36, 0x36, 0xb4, 0x1e, 0xad, 0xda, 0xb3, 0xc1, 0x52, 0x76, 0x16, - 0xff, 0xcf, 0x96, 0xe6, 0xf8, 0x96, 0xde, 0xc3, 0xd0, 0xbf, 0x5f, 0x3d, 0x8f, 0xf2, 0x3d, 0xa4, 0xbd, 0xf8, 0xdb, 0xb6, - 0xd4, 0x86, 0xb3, 0x7f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xc1, 0x98, 0x3c, 0x7e, - 0x5b, 0x77, 0xf3, 0x8d, 0xbd, 0x9f, 0x3d, 0x8b, 0x5f, 0x0e, 0xd8, 0xf1, 0x37, 0xca, 0xab, 0xd7, 0xe2, 0x75, 0xb4, 0x46, - 0x57, 0x8e, 0x9c, 0xc5, 0x2f, 0x15, 0x47, 0x46, 0xd9, 0xcd, 0x69, 0x1b, 0xa7, 0x33, 0x63, 0x4a, 0xa2, 0x8e, 0x92, 0x1f, - 0xdf, 0x6d, 0x1d, 0x1f, 0x01, 0x8b, 0xa8, 0x4d, 0x6c, 0x99, 0xcf, 0xcb, 0x34, 0xc3, 0x75, 0xa8, 0xcd, 0x36, 0x63, 0x2d, - 0x6b, 0x73, 0x01, 0xce, 0x71, 0x01, 0xc4, 0x94, 0xf9, 0x9e, 0xff, 0x5b, 0x8b, 0xe6, 0xf7, 0xc9, 0xe2, 0xa6, 0x2f, 0xed, - 0xe3, 0xaa, 0x98, 0xe5, 0x3b, 0x4b, 0xa6, 0xdd, 0xab, 0x67, 0x44, 0xf3, 0x8f, 0xaf, 0xff, 0x2c, 0xdf, 0xd9, 0x39, 0xb3, - 0x78, 0xb5, 0x8c, 0xc4, 0x19, 0xf3, 0x7f, 0xbe, 0x8f, 0x67, 0x7b, 0x8e, 0xa4, 0xf1, 0xbd, 0x53, 0xd6, 0x7f, 0xbc, 0x1a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x67, 0x07, 0x60, 0xb4, 0x37, 0xd0, 0xe2, 0x7d, - 0x89, 0xce, 0x80, 0xe7, 0xc9, 0xe2, 0x27, 0x06, 0x5f, 0xdb, 0x3e, 0xfd, 0x48, 0x3d, 0xf6, 0xf8, 0x5d, 0xef, 0xbb, 0x1c, - 0xee, 0xfb, 0x8c, 0xcf, 0xe2, 0x97, 0x4e, 0xa4, 0xff, 0x48, 0x4f, 0x59, 0x29, 0x8b, 0xdb, 0x5e, 0xda, 0x70, 0x1e, 0x37, - 0x62, 0x7c, 0xc4, 0xd9, 0x93, 0x1d, 0xaf, 0x47, 0x99, 0xe5, 0xcc, 0x1e, 0xbb, 0x30, 0xcf, 0xd5, 0xbf, 0x8f, 0xa3, 0xce, - 0x32, 0xda, 0x46, 0xea, 0x3f, 0xcf, 0xfb, 0x74, 0x06, 0xfd, 0xad, 0x35, 0x41, 0x7f, 0xf4, 0xdf, 0x8a, 0xfe, 0x72, 0x12, - 0xfd, 0xb7, 0xe1, 0xff, 0x9b, 0x97, 0x6d, 0x58, 0xcc, 0xdf, 0x50, 0xe0, 0x5d, 0xff, 0x38, 0x2b, 0xa0, 0xf6, 0x1b, 0x4a, - 0xe8, 0x7f, 0xdc, 0xdf, 0x53, 0xf9, 0xdd, 0x10, 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, 0x3c, 0x90, 0xb9, 0x10, 0xfd, 0xd1, 0xff, 0xe4, 0xfa, 0xbf, 0x05 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle jungleFontRecs[189] = { - { 4, 4, 5 , 12 }, - { 17, 4, 2 , 7 }, - { 27, 4, 5 , 3 }, - { 40, 4, 5 , 5 }, - { 53, 4, 6 , 7 }, - { 67, 4, 7 , 7 }, - { 82, 4, 5 , 7 }, - { 95, 4, 3 , 3 }, - { 106, 4, 4 , 8 }, - { 118, 4, 4 , 8 }, - { 130, 4, 5 , 5 }, - { 143, 4, 5 , 5 }, - { 156, 4, 2 , 3 }, - { 166, 4, 5 , 1 }, - { 179, 4, 2 , 2 }, - { 189, 4, 7 , 7 }, - { 204, 4, 7 , 6 }, - { 219, 4, 6 , 6 }, - { 233, 4, 6 , 6 }, - { 4, 24, 6 , 6 }, - { 18, 24, 6 , 6 }, - { 32, 24, 6 , 6 }, - { 46, 24, 6 , 6 }, - { 60, 24, 6 , 6 }, - { 74, 24, 6 , 6 }, - { 88, 24, 6 , 6 }, - { 102, 24, 2 , 5 }, - { 112, 24, 2 , 6 }, - { 122, 24, 3 , 5 }, - { 133, 24, 5 , 3 }, - { 146, 24, 3 , 5 }, - { 157, 24, 6 , 7 }, - { 171, 24, 7 , 7 }, - { 186, 24, 6 , 7 }, - { 200, 24, 6 , 7 }, - { 214, 24, 6 , 7 }, - { 228, 24, 6 , 7 }, - { 4, 44, 6 , 7 }, - { 18, 44, 6 , 7 }, - { 32, 44, 6 , 7 }, - { 46, 44, 6 , 7 }, - { 60, 44, 6 , 7 }, - { 74, 44, 6 , 7 }, - { 88, 44, 6 , 7 }, - { 102, 44, 6 , 7 }, - { 116, 44, 7 , 7 }, - { 131, 44, 6 , 7 }, - { 145, 44, 6 , 7 }, - { 159, 44, 6 , 7 }, - { 173, 44, 7 , 8 }, - { 188, 44, 6 , 7 }, - { 202, 44, 6 , 7 }, - { 216, 44, 6 , 7 }, - { 230, 44, 6 , 7 }, - { 4, 64, 6 , 7 }, - { 18, 64, 7 , 7 }, - { 33, 64, 6 , 7 }, - { 47, 64, 6 , 7 }, - { 61, 64, 6 , 7 }, - { 75, 64, 4 , 8 }, - { 87, 64, 7 , 7 }, - { 102, 64, 4 , 8 }, - { 114, 64, 4 , 2 }, - { 126, 64, 6 , 1 }, - { 140, 64, 2 , 2 }, - { 150, 64, 6 , 5 }, - { 164, 64, 6 , 7 }, - { 178, 64, 6 , 5 }, - { 192, 64, 6 , 7 }, - { 206, 64, 6 , 5 }, - { 220, 64, 6 , 7 }, - { 234, 64, 6 , 7 }, - { 4, 84, 6 , 7 }, - { 18, 84, 6 , 7 }, - { 32, 84, 5 , 8 }, - { 45, 84, 6 , 7 }, - { 59, 84, 6 , 7 }, - { 73, 84, 7 , 5 }, - { 88, 84, 6 , 5 }, - { 102, 84, 6 , 5 }, - { 116, 84, 6 , 7 }, - { 130, 84, 6 , 7 }, - { 144, 84, 6 , 5 }, - { 158, 84, 6 , 5 }, - { 172, 84, 6 , 6 }, - { 186, 84, 6 , 5 }, - { 200, 84, 6 , 5 }, - { 214, 84, 7 , 5 }, - { 229, 84, 6 , 5 }, - { 4, 104, 6 , 7 }, - { 18, 104, 6 , 5 }, - { 32, 104, 4 , 8 }, - { 44, 104, 2 , 8 }, - { 54, 104, 4 , 8 }, - { 66, 104, 5 , 2 }, - { 79, 104, 2 , 7 }, - { 89, 104, 6 , 6 }, - { 103, 104, 6 , 7 }, - { 117, 104, 6 , 7 }, - { 131, 104, 6 , 7 }, - { 145, 104, 0 , 0 }, - { 153, 104, 6 , 9 }, - { 167, 104, 0 , 0 }, - { 175, 104, 7 , 7 }, - { 190, 104, 8 , 8 }, - { 206, 104, 6 , 5 }, - { 220, 104, 8 , 8 }, - { 236, 104, 7 , 7 }, - { 4, 124, 8 , 8 }, - { 20, 124, 4 , 4 }, - { 32, 124, 8 , 8 }, - { 48, 124, 8 , 8 }, - { 64, 124, 8 , 8 }, - { 80, 124, 0 , 0 }, - { 88, 124, 6 , 7 }, - { 102, 124, 5 , 8 }, - { 115, 124, 3 , 3 }, - { 126, 124, 0 , 0 }, - { 134, 124, 8 , 8 }, - { 150, 124, 8 , 8 }, - { 166, 124, 6 , 5 }, - { 180, 124, 10 , 7 }, - { 198, 124, 10 , 5 }, - { 216, 124, 0 , 0 }, - { 224, 124, 6 , 7 }, - { 238, 124, 6 , 10 }, - { 4, 144, 6 , 10 }, - { 18, 144, 6 , 10 }, - { 32, 144, 6 , 10 }, - { 46, 144, 6 , 10 }, - { 60, 144, 6 , 10 }, - { 74, 144, 10 , 7 }, - { 92, 144, 6 , 9 }, - { 106, 144, 6 , 10 }, - { 120, 144, 6 , 10 }, - { 134, 144, 6 , 10 }, - { 148, 144, 6 , 10 }, - { 162, 144, 6 , 10 }, - { 176, 144, 6 , 10 }, - { 190, 144, 6 , 10 }, - { 204, 144, 6 , 10 }, - { 218, 144, 6 , 7 }, - { 232, 144, 6 , 10 }, - { 4, 164, 6 , 10 }, - { 18, 164, 6 , 10 }, - { 32, 164, 6 , 10 }, - { 46, 164, 6 , 10 }, - { 60, 164, 6 , 10 }, - { 74, 164, 6 , 5 }, - { 88, 164, 6 , 7 }, - { 102, 164, 6 , 10 }, - { 116, 164, 6 , 10 }, - { 130, 164, 6 , 10 }, - { 144, 164, 6 , 10 }, - { 158, 164, 6 , 10 }, - { 172, 164, 6 , 7 }, - { 186, 164, 6 , 7 }, - { 200, 164, 6 , 8 }, - { 214, 164, 6 , 8 }, - { 228, 164, 6 , 8 }, - { 4, 184, 6 , 8 }, - { 18, 184, 6 , 8 }, - { 32, 184, 6 , 8 }, - { 46, 184, 9 , 5 }, - { 63, 184, 6 , 7 }, - { 77, 184, 6 , 8 }, - { 91, 184, 6 , 8 }, - { 105, 184, 6 , 8 }, - { 119, 184, 6 , 8 }, - { 133, 184, 6 , 8 }, - { 147, 184, 6 , 8 }, - { 161, 184, 6 , 8 }, - { 175, 184, 6 , 8 }, - { 189, 184, 6 , 7 }, - { 203, 184, 6 , 8 }, - { 217, 184, 6 , 8 }, - { 231, 184, 6 , 8 }, - { 4, 204, 6 , 8 }, - { 18, 204, 6 , 8 }, - { 32, 204, 6 , 8 }, - { 46, 204, 5 , 5 }, - { 59, 204, 6 , 5 }, - { 73, 204, 6 , 8 }, - { 87, 204, 6 , 8 }, - { 101, 204, 6 , 8 }, - { 115, 204, 6 , 8 }, - { 129, 204, 6 , 10 }, - { 143, 204, 6 , 9 }, - { 157, 204, 6 , 10 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo jungleFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 2, 3, { 0 }}, - { 34, 0, 2, 6, { 0 }}, - { 35, 0, 3, 6, { 0 }}, - { 36, 0, 2, 7, { 0 }}, - { 37, 0, 2, 8, { 0 }}, - { 38, 0, 2, 6, { 0 }}, - { 39, 0, 2, 4, { 0 }}, - { 40, 0, 2, 5, { 0 }}, - { 41, 0, 2, 5, { 0 }}, - { 42, 0, 2, 6, { 0 }}, - { 43, 0, 3, 6, { 0 }}, - { 44, 0, 7, 3, { 0 }}, - { 45, 0, 5, 6, { 0 }}, - { 46, 0, 7, 3, { 0 }}, - { 47, 0, 2, 8, { 0 }}, - { 48, 0, 3, 8, { 0 }}, - { 49, 0, 3, 7, { 0 }}, - { 50, 0, 3, 7, { 0 }}, - { 51, 0, 3, 7, { 0 }}, - { 52, 0, 3, 7, { 0 }}, - { 53, 0, 3, 7, { 0 }}, - { 54, 0, 3, 7, { 0 }}, - { 55, 0, 3, 7, { 0 }}, - { 56, 0, 3, 7, { 0 }}, - { 57, 0, 3, 7, { 0 }}, - { 58, 0, 4, 3, { 0 }}, - { 59, 0, 4, 3, { 0 }}, - { 60, 0, 3, 4, { 0 }}, - { 61, 0, 4, 6, { 0 }}, - { 62, 0, 3, 4, { 0 }}, - { 63, 0, 2, 7, { 0 }}, - { 64, 0, 2, 8, { 0 }}, - { 65, 0, 2, 7, { 0 }}, - { 66, 0, 2, 7, { 0 }}, - { 67, 0, 2, 7, { 0 }}, - { 68, 0, 2, 7, { 0 }}, - { 69, 0, 2, 7, { 0 }}, - { 70, 0, 2, 7, { 0 }}, - { 71, 0, 2, 7, { 0 }}, - { 72, 0, 2, 7, { 0 }}, - { 73, 0, 2, 7, { 0 }}, - { 74, 0, 2, 7, { 0 }}, - { 75, 0, 2, 7, { 0 }}, - { 76, 0, 2, 7, { 0 }}, - { 77, 0, 2, 8, { 0 }}, - { 78, 0, 2, 7, { 0 }}, - { 79, 0, 2, 7, { 0 }}, - { 80, 0, 2, 7, { 0 }}, - { 81, 0, 2, 7, { 0 }}, - { 82, 0, 2, 7, { 0 }}, - { 83, 0, 2, 7, { 0 }}, - { 84, 0, 2, 7, { 0 }}, - { 85, 0, 2, 7, { 0 }}, - { 86, 0, 2, 7, { 0 }}, - { 87, 0, 2, 8, { 0 }}, - { 88, 0, 2, 7, { 0 }}, - { 89, 0, 2, 7, { 0 }}, - { 90, 0, 2, 7, { 0 }}, - { 91, 0, 2, 5, { 0 }}, - { 92, 0, 2, 8, { 0 }}, - { 93, 0, 2, 5, { 0 }}, - { 94, 0, -1, 5, { 0 }}, - { 95, 0, 10, 7, { 0 }}, - { 96, 0, -1, 3, { 0 }}, - { 97, 0, 4, 7, { 0 }}, - { 98, 0, 2, 7, { 0 }}, - { 99, 0, 4, 7, { 0 }}, - { 100, 0, 2, 7, { 0 }}, - { 101, 0, 4, 7, { 0 }}, - { 102, 0, 2, 7, { 0 }}, - { 103, 0, 4, 7, { 0 }}, - { 104, 0, 2, 7, { 0 }}, - { 105, 0, 2, 7, { 0 }}, - { 106, 0, 2, 6, { 0 }}, - { 107, 0, 2, 7, { 0 }}, - { 108, 0, 2, 7, { 0 }}, - { 109, 0, 4, 8, { 0 }}, - { 110, 0, 4, 7, { 0 }}, - { 111, 0, 4, 7, { 0 }}, - { 112, 0, 4, 7, { 0 }}, - { 113, 0, 4, 7, { 0 }}, - { 114, 0, 4, 7, { 0 }}, - { 115, 0, 4, 7, { 0 }}, - { 116, 0, 3, 7, { 0 }}, - { 117, 0, 4, 7, { 0 }}, - { 118, 0, 4, 7, { 0 }}, - { 119, 0, 4, 8, { 0 }}, - { 120, 0, 4, 7, { 0 }}, - { 121, 0, 4, 7, { 0 }}, - { 122, 0, 4, 7, { 0 }}, - { 123, 0, 2, 5, { 0 }}, - { 124, 0, 2, 3, { 0 }}, - { 125, 0, 2, 5, { 0 }}, - { 126, 0, -1, 6, { 0 }}, - { 161, 0, 2, 3, { 0 }}, - { 162, 0, 3, 7, { 0 }}, - { 163, 0, 2, 7, { 0 }}, - { 8364, 0, 2, 7, { 0 }}, - { 165, 0, 2, 7, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 1, 7, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 0, 2, 8, { 0 }}, - { 170, 0, 1, 8, { 0 }}, - { 171, 0, 3, 7, { 0 }}, - { 172, 0, 1, 8, { 0 }}, - { 174, 0, 2, 8, { 0 }}, - { 175, 0, 1, 8, { 0 }}, - { 176, 0, 1, 2, { 0 }}, - { 177, 0, 1, 8, { 0 }}, - { 178, 0, 1, 8, { 0 }}, - { 179, 0, 1, 8, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 0, 4, 7, { 0 }}, - { 182, 0, 1, 4, { 0 }}, - { 183, 0, 4, 4, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 1, 8, { 0 }}, - { 186, 0, 1, 8, { 0 }}, - { 187, 0, 3, 7, { 0 }}, - { 338, 0, 2, 11, { 0 }}, - { 339, 0, 4, 11, { 0 }}, - { 376, 0, 0, 0, { 0 }}, - { 191, 0, 2, 7, { 0 }}, - { 192, 0, -1, 7, { 0 }}, - { 193, 0, -1, 7, { 0 }}, - { 194, 0, -1, 7, { 0 }}, - { 195, 0, -1, 7, { 0 }}, - { 196, 0, -1, 7, { 0 }}, - { 197, 0, -1, 7, { 0 }}, - { 198, 0, 2, 11, { 0 }}, - { 199, 0, 2, 7, { 0 }}, - { 200, 0, -1, 7, { 0 }}, - { 201, 0, -1, 7, { 0 }}, - { 202, 0, -1, 7, { 0 }}, - { 203, 0, -1, 7, { 0 }}, - { 204, 0, -1, 7, { 0 }}, - { 205, 0, -1, 7, { 0 }}, - { 206, 0, -1, 7, { 0 }}, - { 207, 0, -1, 7, { 0 }}, - { 208, 0, 2, 7, { 0 }}, - { 209, 0, -1, 7, { 0 }}, - { 210, 0, -1, 7, { 0 }}, - { 211, 0, -1, 7, { 0 }}, - { 212, 0, -1, 7, { 0 }}, - { 213, 0, -1, 7, { 0 }}, - { 214, 0, -1, 7, { 0 }}, - { 215, 0, 3, 7, { 0 }}, - { 216, 0, 2, 7, { 0 }}, - { 217, 0, -1, 7, { 0 }}, - { 218, 0, -1, 7, { 0 }}, - { 219, 0, -1, 7, { 0 }}, - { 220, 0, -1, 7, { 0 }}, - { 221, 0, -1, 7, { 0 }}, - { 222, 0, 2, 7, { 0 }}, - { 223, 0, 2, 7, { 0 }}, - { 224, 0, 1, 7, { 0 }}, - { 225, 0, 1, 7, { 0 }}, - { 226, 0, 1, 7, { 0 }}, - { 227, 0, 1, 7, { 0 }}, - { 228, 0, 1, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 4, 10, { 0 }}, - { 231, 0, 4, 7, { 0 }}, - { 232, 0, 1, 7, { 0 }}, - { 233, 0, 1, 7, { 0 }}, - { 234, 0, 1, 7, { 0 }}, - { 235, 0, 1, 7, { 0 }}, - { 236, 0, 1, 7, { 0 }}, - { 237, 0, 1, 7, { 0 }}, - { 238, 0, 1, 7, { 0 }}, - { 239, 0, 1, 7, { 0 }}, - { 240, 0, 2, 7, { 0 }}, - { 241, 0, 1, 7, { 0 }}, - { 242, 0, 1, 7, { 0 }}, - { 243, 0, 1, 7, { 0 }}, - { 244, 0, 1, 7, { 0 }}, - { 245, 0, 1, 7, { 0 }}, - { 246, 0, 1, 7, { 0 }}, - { 247, 0, 3, 6, { 0 }}, - { 248, 0, 4, 7, { 0 }}, - { 249, 0, 1, 7, { 0 }}, - { 250, 0, 1, 7, { 0 }}, - { 251, 0, 1, 7, { 0 }}, - { 252, 0, 1, 7, { 0 }}, - { 253, 0, 1, 7, { 0 }}, - { 254, 0, 2, 7, { 0 }}, - { 255, 0, 1, 7, { 0 }}, -}; - -// Style loading function: Jungle -static void GuiLoadStyleJungle(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < JUNGLE_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(jungleStyleProps[i].controlId, jungleStyleProps[i].propertyId, jungleStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int jungleFontDataSize = 0; - unsigned char *data = DecompressData(jungleFontData, JUNGLE_STYLE_FONT_ATLAS_COMP_SIZE, &jungleFontDataSize); - Image imFont = { data, 256, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 12; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, jungleFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, jungleFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 254, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.png deleted file mode 100644 index 61d93f9..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.rgs deleted file mode 100644 index 843867c..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.txt.rgs deleted file mode 100644 index 6901b7d..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/jungle/style_jungle.txt.rgs +++ /dev/null @@ -1,27 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 12 charset.txt Pixel Intv.otf -p 00 00 0x60827dff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0x2c3334ff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0x82a29fff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0x5f9aa8ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0x334e57ff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0x6aa9b8ff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0xa9cb8dff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0x3b6357ff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0x97af81ff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0x5b6462ff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0x2c3334ff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x666b69ff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x0000000c TEXT_SIZE -p 00 17 0x00000000 TEXT_SPACING -p 00 18 0x638465ff LINE_COLOR -p 00 19 0x2b3a3aff BACKGROUND_COLOR -p 00 20 0x00000012 TEXT_LINE_SPACING diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/Cartridge.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/Cartridge.ttf deleted file mode 100644 index 19d7280..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/Cartridge.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/README.md deleted file mode 100644 index b6519dd..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: lavanda - -Walking throught fields full of lavanda, it feels like a dream, a fantasy, just relax and close your eyes, could you feel it? - -![lavanda style table](style_lavanda.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_lavanda.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_lavanda.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_lavanda.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_lavanda.h` | Embeddable style as code file, self-contained, includes font data | -| `style_lavanda.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![lavanda style screen](screenshot.png) - -## about font - -"Cartridge" font by [jeti](https://fontenddev.com/) - -Licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), downloaded from dafont.com: [cartridge](https://www.dafont.com/cartridge.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/font_readme.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/font_readme.txt deleted file mode 100644 index c9ff454..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/font_readme.txt +++ /dev/null @@ -1,6 +0,0 @@ -Cartridge by jeti: A decorative, Art Nouveau-inspired font with a dainty, fantastical hand-lettered feel. - -You are free to use this font for personal or commercial projects, all I ask is that you include credit. - -Licensed under CC BY 4.0: https://creativecommons.org/licenses/by/4.0/ -More info: https://fontenddev.com/fonts/cartridge/ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/screenshot.old.png deleted file mode 100644 index f787e0f..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/screenshot.png deleted file mode 100644 index 544b3d1..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.h deleted file mode 100644 index 7e8902b..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.h +++ /dev/null @@ -1,607 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleLavanda(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define LAVANDA_STYLE_PROPS_COUNT 16 - -// Custom style name: Lavanda -static const GuiStyleProp lavandaStyleProps[LAVANDA_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0xab9bd3ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x3e4350ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xdadaf4ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xee84a0ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xf4b7c7ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xb7657bff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xd5c8dbff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x966ec0ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xd7ccf7ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x8fa2bdff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x6b798dff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x8292a9ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 18, (int)0x84adb7ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x5b5b81ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "Cartridge.ttf" (size: 16, spacing: 1) - -#define LAVANDA_STYLE_FONT_ATLAS_COMP_SIZE 2636 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char lavandaFontData[LAVANDA_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xdb, 0xd2, 0xa4, 0xba, 0x0d, 0x06, 0x50, 0xde, 0xff, 0xa5, 0xbf, 0x5c, 0xa4, 0x52, 0x49, 0xaa, 0x66, 0x63, 0x24, - 0x0b, 0x9a, 0xee, 0x59, 0xb3, 0xee, 0x7e, 0xa6, 0x4f, 0x06, 0xf9, 0x04, 0x96, 0x73, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, - 0xfc, 0x4b, 0x4e, 0xfe, 0x6f, 0x2e, 0xbf, 0xd3, 0x7f, 0xfe, 0x9e, 0xc5, 0xff, 0xf8, 0xff, 0xff, 0x75, 0xed, 0x7d, 0x73, - 0xf9, 0xf3, 0x3b, 0x47, 0xf2, 0xc7, 0xef, 0x97, 0x8d, 0xd7, 0xff, 0xd3, 0x3b, 0xd4, 0xff, 0xff, 0x7f, 0xff, 0x55, 0xca, - 0xf1, 0xfc, 0x35, 0x47, 0xf1, 0x73, 0xb2, 0xf8, 0x9c, 0xab, 0xbf, 0xb0, 0x56, 0xfa, 0xb5, 0x73, 0x9e, 0xd3, 0x2b, 0xb2, - 0xf3, 0xca, 0xf3, 0xd7, 0x1d, 0xe5, 0xb2, 0x3a, 0x96, 0x25, 0x5c, 0x3d, 0xcb, 0xef, 0x8b, 0xff, 0x5c, 0x78, 0xe5, 0xf9, - 0xf1, 0x6c, 0xd4, 0x09, 0xeb, 0x72, 0xac, 0xd6, 0x18, 0x3b, 0xa5, 0x7a, 0xf6, 0x1d, 0x2b, 0xff, 0xff, 0x5a, 0x6d, 0xbb, - 0x5f, 0x3b, 0xae, 0x4a, 0xbf, 0xfe, 0xad, 0xaf, 0x94, 0x5c, 0x06, 0xfe, 0x7f, 0x5a, 0xdf, 0x7e, 0xe2, 0xfa, 0xcf, 0xf6, - 0xb5, 0x7d, 0xa5, 0xad, 0x9c, 0xb8, 0x46, 0xab, 0xf1, 0x9f, 0x56, 0x8b, 0x90, 0x45, 0x99, 0xde, 0x1d, 0xff, 0x9d, 0x76, - 0x34, 0x37, 0x95, 0x6a, 0xb5, 0xbe, 0xad, 0x5f, 0x37, 0x29, 0xb6, 0xb4, 0xbd, 0xf8, 0x5f, 0x7f, 0x4e, 0xc6, 0xca, 0x6d, - 0xdd, 0x7b, 0xa9, 0x97, 0x76, 0xef, 0xb7, 0x75, 0x6b, 0x95, 0x34, 0x7a, 0x40, 0xfd, 0xfa, 0x7a, 0xaa, 0xc4, 0x6b, 0x51, - 0x7a, 0xa5, 0x75, 0xcb, 0x58, 0xbd, 0x9f, 0x72, 0x6b, 0x95, 0x47, 0xca, 0xf2, 0x68, 0xb7, 0x3a, 0xd5, 0x5f, 0x94, 0x72, - 0x5c, 0x56, 0xfa, 0xe5, 0xfd, 0xab, 0x30, 0xa5, 0xd1, 0x59, 0x6e, 0x6b, 0xff, 0xd7, 0xad, 0x71, 0x9a, 0x57, 0x72, 0xca, - 0x7d, 0x83, 0x94, 0x47, 0x95, 0xeb, 0x73, 0xbc, 0x1e, 0x8b, 0xcc, 0xc7, 0x7f, 0xaf, 0x1f, 0xf3, 0xa7, 0x72, 0xef, 0xf6, - 0x12, 0xe6, 0xeb, 0xc6, 0xb7, 0xc7, 0x7f, 0x1a, 0x7d, 0x8c, 0xea, 0x6b, 0x52, 0x9e, 0x7b, 0x39, 0x6f, 0x23, 0xaf, 0x5f, - 0x99, 0x19, 0xba, 0x26, 0x3b, 0xad, 0x41, 0x1a, 0xe3, 0xc5, 0xdd, 0x96, 0x7c, 0x7a, 0xce, 0xea, 0xc9, 0xf8, 0xcf, 0x85, - 0x19, 0x89, 0xd5, 0x95, 0x97, 0x65, 0x29, 0xe4, 0x86, 0xf6, 0xff, 0x0d, 0x73, 0xaa, 0x4f, 0xc5, 0x7f, 0x96, 0x73, 0x5b, - 0x13, 0xd7, 0x74, 0x46, 0xce, 0x43, 0x3e, 0x70, 0x16, 0xae, 0xc4, 0xff, 0xd1, 0x6c, 0xc9, 0x7f, 0x3b, 0xfe, 0x8f, 0x8b, - 0xbd, 0xf8, 0xa3, 0x31, 0x0b, 0xf8, 0x5b, 0xf1, 0x9f, 0x46, 0xcc, 0x64, 0x6c, 0x64, 0xde, 0xeb, 0x33, 0xcc, 0xc6, 0xff, - 0x7b, 0x6b, 0xe1, 0x55, 0xff, 0x3f, 0x17, 0xef, 0x30, 0xfd, 0x4e, 0xfc, 0x1f, 0xa3, 0xfd, 0xff, 0xf5, 0x15, 0x33, 0x31, - 0x6b, 0xf4, 0x77, 0xc4, 0x7f, 0x9a, 0xf5, 0x70, 0x06, 0x67, 0x6e, 0xbe, 0x39, 0xfe, 0x3b, 0xd1, 0x93, 0x76, 0x5d, 0x79, - 0xde, 0xba, 0xe5, 0xa4, 0xc7, 0x56, 0xad, 0x19, 0xee, 0x9e, 0xff, 0xef, 0xdf, 0xb7, 0xc9, 0xf6, 0xab, 0xf3, 0xf0, 0xf8, - 0xff, 0xb9, 0xf8, 0x3f, 0xca, 0x33, 0xd8, 0xe7, 0xf7, 0x5a, 0xea, 0xf5, 0x4f, 0x1a, 0xf7, 0xbb, 0x8f, 0x91, 0xdf, 0xf2, - 0xb6, 0xf3, 0x70, 0xed, 0x35, 0x29, 0xcf, 0x6d, 0x9c, 0xdf, 0x01, 0xfb, 0xe7, 0xd9, 0x88, 0xce, 0xbc, 0xec, 0xfb, 0xea, - 0xd8, 0xbc, 0xa6, 0x8d, 0xfd, 0x5b, 0x4a, 0x81, 0x67, 0x9e, 0x31, 0x40, 0xfc, 0x8b, 0x7f, 0x78, 0xfb, 0x73, 0xcb, 0xe2, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xdf, 0x5a, 0xa1, 0x57, 0x5b, 0x15, 0xbe, - 0x93, 0xcb, 0xb8, 0x93, 0x9d, 0x6e, 0xbd, 0x42, 0x3d, 0xad, 0x9c, 0x04, 0xbd, 0xd7, 0xe5, 0x34, 0x0b, 0x5a, 0x46, 0xf2, - 0x13, 0x74, 0xf3, 0x4e, 0x55, 0x32, 0x08, 0x54, 0xf7, 0x32, 0xe8, 0xee, 0x1b, 0x50, 0xfb, 0x8c, 0xce, 0x6a, 0xfd, 0x0c, - 0x65, 0x41, 0xe8, 0xe4, 0x16, 0xde, 0x5b, 0x95, 0x5a, 0xcf, 0xd1, 0xb6, 0x93, 0xf5, 0x23, 0xad, 0x55, 0x73, 0x93, 0xf1, - 0x9f, 0x4b, 0xb9, 0x0e, 0x3a, 0x19, 0x6a, 0x3a, 0x59, 0x6a, 0x32, 0x9c, 0x5f, 0xe7, 0x5a, 0x94, 0x5e, 0xcb, 0x39, 0x95, - 0xe2, 0x77, 0xaa, 0xef, 0xca, 0x90, 0x46, 0xa4, 0xd5, 0xca, 0xb0, 0xb3, 0x3e, 0x72, 0xa7, 0x55, 0xd9, 0xbb, 0x7a, 0x53, - 0xca, 0x45, 0x7c, 0x77, 0xde, 0x9d, 0x94, 0xe3, 0xe7, 0xd9, 0xf8, 0x4f, 0xe3, 0x17, 0xe5, 0x52, 0xce, 0xe5, 0x6e, 0x46, - 0xb6, 0x6e, 0x26, 0xa7, 0x5e, 0x16, 0x81, 0x7e, 0xfc, 0x5f, 0x3b, 0x03, 0xbf, 0x1d, 0xff, 0x3b, 0xfb, 0xc7, 0x4c, 0xc4, - 0x7f, 0xb6, 0x3f, 0x39, 0x23, 0xe5, 0x5a, 0x79, 0x97, 0x55, 0xfc, 0x3c, 0x19, 0xff, 0xfd, 0x8c, 0x85, 0x67, 0xbf, 0x38, - 0x5b, 0xf1, 0x3f, 0xf9, 0xba, 0xa3, 0x99, 0x5f, 0x6b, 0x3f, 0xfe, 0xd3, 0xec, 0xb9, 0xce, 0xf5, 0x3d, 0xa7, 0xf2, 0x06, - 0x77, 0xae, 0xcf, 0x5c, 0xc8, 0xd7, 0xbb, 0xdb, 0x33, 0xa8, 0xe5, 0xae, 0xce, 0xb2, 0x35, 0xde, 0x8d, 0xff, 0x3c, 0xd8, - 0xff, 0xaf, 0x8c, 0xc8, 0x32, 0xde, 0xfe, 0x7f, 0x57, 0xfc, 0xdf, 0xd5, 0xff, 0xbf, 0xd2, 0x92, 0x75, 0xf7, 0xf5, 0x7a, - 0x3a, 0xfe, 0xef, 0x98, 0x97, 0xca, 0x48, 0xcb, 0xd5, 0xaf, 0x31, 0xae, 0xf6, 0xff, 0x33, 0xb4, 0x2b, 0x55, 0x6f, 0xdc, - 0x92, 0x9b, 0xdb, 0xff, 0x34, 0x46, 0x4a, 0xbb, 0xf1, 0x7f, 0x5c, 0xca, 0x83, 0x9a, 0xe6, 0xb9, 0xae, 0xd4, 0xe1, 0x3b, - 0x3b, 0xef, 0xed, 0xf4, 0xe0, 0xd3, 0xdc, 0x79, 0x2e, 0x8d, 0x91, 0xea, 0x6f, 0xc4, 0xff, 0xce, 0x2e, 0x5d, 0x4f, 0xf5, - 0xdc, 0x8f, 0x0b, 0x6d, 0xde, 0x1b, 0xe3, 0x7f, 0x7e, 0xfe, 0x6f, 0xfd, 0x1d, 0xf2, 0xf0, 0xf8, 0x3f, 0x8d, 0x28, 0x7e, - 0x5f, 0xfc, 0xd7, 0xdb, 0xa3, 0x99, 0xfd, 0x90, 0xa7, 0x6b, 0x80, 0xce, 0xee, 0x99, 0x9d, 0x9d, 0x53, 0x53, 0xda, 0x89, - 0x6c, 0xae, 0x47, 0x32, 0xd5, 0xff, 0x7f, 0x2e, 0xfe, 0xd3, 0xba, 0x0e, 0x3b, 0xdf, 0xbf, 0xbf, 0x3b, 0x40, 0xb6, 0x5a, - 0x95, 0x8c, 0xc6, 0xff, 0xc4, 0x2c, 0x5d, 0xb7, 0x4e, 0x7a, 0x7e, 0x3f, 0xf4, 0xe7, 0xee, 0x59, 0xa7, 0xb9, 0xab, 0x5b, - 0x46, 0xee, 0x8c, 0x67, 0x64, 0x2e, 0x2d, 0x5b, 0xf1, 0xbf, 0x7f, 0x2e, 0xaa, 0xfb, 0x32, 0xae, 0xfb, 0xc6, 0xf5, 0x79, - 0x91, 0x6e, 0xfc, 0xf7, 0x32, 0xd4, 0x5f, 0xfd, 0x1d, 0xff, 0x3c, 0x57, 0x72, 0x8c, 0xdf, 0x91, 0x4e, 0xab, 0xae, 0xea, - 0xf6, 0x2c, 0xd2, 0xda, 0x35, 0xff, 0x7d, 0xf1, 0xff, 0x44, 0xad, 0x31, 0x33, 0xf3, 0xd9, 0xb9, 0x17, 0x99, 0xf2, 0x35, - 0x3d, 0x3d, 0xc2, 0xfa, 0xfc, 0x19, 0xbd, 0x6f, 0x47, 0xa3, 0x37, 0x65, 0xe3, 0x9d, 0x88, 0xff, 0xa3, 0x71, 0xbf, 0x62, - 0xff, 0x4e, 0xdf, 0x77, 0x66, 0x35, 0xce, 0x8d, 0x4f, 0x25, 0xcc, 0xbd, 0xbf, 0x67, 0x10, 0x3f, 0x17, 0x75, 0x7f, 0x6b, - 0xa9, 0xfd, 0x1d, 0xf1, 0xff, 0x4c, 0x8d, 0x3d, 0x3d, 0x12, 0x81, 0x4f, 0x8e, 0xa9, 0x33, 0x32, 0x02, 0xe7, 0xb7, 0xda, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa9, 0xf5, 0x63, 0x33, 0xf9, 0x89, 0xd6, - 0x6b, 0x9a, 0x6b, 0x2b, 0x21, 0xd2, 0x58, 0xaf, 0xbc, 0x97, 0x47, 0xbf, 0x9a, 0xd5, 0xe5, 0x7c, 0xbd, 0x4c, 0x2e, 0xae, - 0xa1, 0x59, 0xad, 0x10, 0xc9, 0xf6, 0x5a, 0xbc, 0xee, 0xae, 0x06, 0xab, 0x4f, 0xeb, 0x64, 0x65, 0x38, 0xdf, 0x4d, 0xa0, - 0xbb, 0x0f, 0xc0, 0x59, 0x96, 0x83, 0x94, 0x3f, 0xef, 0xec, 0x95, 0x29, 0xe7, 0x0a, 0x4b, 0x61, 0xed, 0x54, 0x5a, 0x57, - 0x68, 0x27, 0xa3, 0xc3, 0xff, 0x7e, 0x5e, 0xe5, 0x6c, 0x65, 0x79, 0xa5, 0x55, 0xb2, 0xf1, 0xd5, 0xf3, 0x9d, 0xac, 0x32, - 0x10, 0xf6, 0xf3, 0xe8, 0x67, 0x70, 0x05, 0x7e, 0x86, 0xfe, 0x5a, 0x59, 0x25, 0x96, 0xad, 0x3a, 0x3e, 0x43, 0x75, 0xed, - 0x6e, 0x79, 0xa5, 0x51, 0x73, 0xa7, 0x5d, 0xe3, 0x1f, 0xad, 0x0c, 0x09, 0x19, 0xc8, 0x08, 0x90, 0x56, 0x09, 0x9d, 0xb5, - 0x42, 0x69, 0xaf, 0x42, 0xac, 0x67, 0x39, 0x4a, 0xf9, 0x3b, 0x1e, 0x8d, 0x3c, 0xa8, 0xb3, 0xd9, 0x97, 0x76, 0xf6, 0xfd, - 0x98, 0xc9, 0x98, 0x39, 0xb5, 0x86, 0xbe, 0x97, 0x9b, 0xa9, 0xfe, 0xd9, 0x9d, 0xab, 0x2a, 0x1b, 0xbd, 0xd0, 0x14, 0x7f, - 0x5d, 0x2e, 0xb7, 0x71, 0x7f, 0x6e, 0xf5, 0xea, 0x71, 0x53, 0xcf, 0xa9, 0x34, 0x95, 0x3b, 0xe9, 0xae, 0xf8, 0x3f, 0xc6, - 0xb3, 0x9c, 0xf5, 0x7a, 0x21, 0xbb, 0x3d, 0xf5, 0xbd, 0xf8, 0x5f, 0xef, 0x52, 0xb4, 0x5f, 0xe3, 0xdf, 0x19, 0xff, 0xbd, - 0x5c, 0x88, 0x59, 0xf6, 0xba, 0xbb, 0x7b, 0xaf, 0xd5, 0xfa, 0xf1, 0x69, 0x67, 0x97, 0xed, 0xe5, 0xd1, 0xc8, 0x22, 0xb7, - 0x6c, 0x6f, 0xdd, 0xfe, 0x7e, 0xff, 0x7f, 0xdd, 0x8f, 0x3f, 0xab, 0x1b, 0xef, 0xc8, 0xff, 0x77, 0x7f, 0xfc, 0xd7, 0xb2, - 0x26, 0xf7, 0xda, 0xf0, 0x6b, 0x79, 0x74, 0x27, 0xb3, 0xdf, 0x7d, 0x2a, 0xfe, 0xeb, 0xe3, 0xea, 0xe9, 0x31, 0x45, 0xe7, - 0x0c, 0xe5, 0x42, 0x2e, 0xc3, 0xb4, 0xf2, 0xa7, 0x9e, 0x8f, 0x7a, 0x67, 0xb3, 0xf0, 0xdc, 0xf9, 0x3e, 0x57, 0xc6, 0x62, - 0xcf, 0xc5, 0x7f, 0x36, 0x46, 0xe0, 0x7b, 0xed, 0x56, 0x2e, 0xb7, 0x22, 0xf7, 0xc7, 0xff, 0xdc, 0x9e, 0x95, 0xfb, 0x79, - 0xfa, 0x7a, 0x7d, 0xfc, 0x6c, 0xcc, 0x82, 0x75, 0xce, 0xe8, 0xb5, 0xb9, 0x8e, 0x3c, 0x32, 0xeb, 0x9d, 0xad, 0xb8, 0xb9, - 0x7f, 0x4e, 0xbe, 0x36, 0x1b, 0x34, 0x1f, 0xff, 0x47, 0x71, 0xfc, 0x7d, 0x5c, 0xdc, 0xab, 0x63, 0x77, 0xdc, 0x9a, 0xad, - 0xfe, 0xf8, 0xec, 0x9c, 0x55, 0xfd, 0xbb, 0x3f, 0xdf, 0xff, 0xdf, 0xcb, 0x1a, 0x9b, 0x56, 0x3f, 0x38, 0x1b, 0x75, 0x69, - 0x27, 0xf3, 0xf2, 0x4e, 0x8c, 0x4d, 0xee, 0x53, 0x36, 0xf1, 0x1d, 0xcf, 0x47, 0x11, 0xd3, 0xf1, 0x5f, 0x2f, 0x85, 0x7c, - 0xb4, 0x1f, 0xd4, 0xbf, 0x5a, 0xfb, 0x11, 0x98, 0xc1, 0xb3, 0xf8, 0xfc, 0xfc, 0x5f, 0xda, 0x75, 0x5f, 0x36, 0x33, 0x9e, - 0x57, 0xdb, 0x8e, 0x67, 0xf3, 0x09, 0xe6, 0xa5, 0xf9, 0x0b, 0xfb, 0xb9, 0xff, 0xf3, 0x48, 0xa4, 0x4d, 0xe7, 0x9c, 0xbe, - 0xbf, 0x1e, 0xd9, 0xbb, 0x77, 0x96, 0xdb, 0xcf, 0x62, 0x6e, 0x7f, 0xf7, 0x2c, 0x9f, 0x33, 0xe8, 0xde, 0xdf, 0xc8, 0xe0, - 0xfd, 0x44, 0x8e, 0xad, 0x79, 0x9a, 0x7c, 0xf8, 0x3b, 0x1e, 0xce, 0xef, 0x43, 0xf1, 0xff, 0xe9, 0x72, 0xef, 0xcf, 0xd5, - 0xc9, 0x7a, 0xfb, 0xfd, 0xf1, 0xcf, 0x3b, 0xe3, 0xff, 0x78, 0x49, 0xfc, 0xf3, 0x7c, 0x0d, 0x2e, 0xfe, 0xdf, 0x77, 0x2e, - 0x77, 0x9f, 0xff, 0x7d, 0xfb, 0xaf, 0xd3, 0x96, 0xdf, 0x55, 0xaa, 0xca, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x58, 0xaf, 0x1c, 0xca, 0x50, 0x46, 0xa0, 0xe3, 0xff, 0x72, 0x97, 0xac, 0x73, 0x4d, 0x76, 0xf2, - 0xc6, 0xf7, 0x57, 0x53, 0xa5, 0x7d, 0x6c, 0x27, 0x17, 0x4b, 0x2e, 0xad, 0x00, 0xc9, 0xc8, 0x7e, 0x09, 0xfd, 0x52, 0x4a, - 0x29, 0x9b, 0x68, 0x25, 0x7f, 0x5b, 0x1a, 0x2b, 0x83, 0x7b, 0x59, 0x9f, 0x3e, 0x75, 0x9e, 0x57, 0x19, 0x57, 0xfa, 0xbf, - 0x26, 0x37, 0xac, 0x1e, 0xbc, 0xfa, 0x3d, 0x7a, 0x59, 0x58, 0x73, 0x69, 0xa5, 0x5b, 0xda, 0xb9, 0x5c, 0xfb, 0xeb, 0x29, - 0xd3, 0x5c, 0x4f, 0x99, 0xed, 0xd2, 0x5e, 0x45, 0x63, 0x2f, 0x5f, 0x6a, 0xb7, 0x8e, 0xdc, 0xcf, 0xf0, 0x9d, 0xed, 0x77, - 0xbe, 0xb2, 0x47, 0x41, 0xbe, 0xe8, 0x3c, 0x77, 0xeb, 0x86, 0xfe, 0xef, 0xcc, 0xed, 0xb1, 0xb3, 0x9b, 0xf9, 0xef, 0xca, - 0x55, 0xdf, 0xdb, 0x87, 0xe6, 0x8d, 0xab, 0x38, 0x77, 0xea, 0xf0, 0x6e, 0x1e, 0xb3, 0x6f, 0x58, 0xdf, 0x9b, 0x8f, 0xfe, - 0xae, 0xe7, 0xce, 0xf3, 0x3a, 0xcf, 0xe1, 0x1b, 0x7e, 0x6b, 0x25, 0xc3, 0x6b, 0xa7, 0xfd, 0xcf, 0xa5, 0xf2, 0xba, 0x92, - 0xdd, 0xb4, 0xb7, 0xeb, 0xd5, 0x67, 0x8e, 0x1e, 0x9b, 0xd9, 0xb6, 0x3a, 0xd9, 0xae, 0xcf, 0x77, 0xac, 0xaa, 0x1f, 0xd9, - 0x6d, 0xff, 0xbb, 0x7f, 0xed, 0xec, 0x43, 0xf4, 0x89, 0xf3, 0xdc, 0xdb, 0x1d, 0x2d, 0x8b, 0x51, 0xf7, 0x95, 0x32, 0xae, - 0x1d, 0xdb, 0xed, 0x25, 0xef, 0x8d, 0xff, 0xab, 0xed, 0xff, 0x51, 0xbe, 0xea, 0x77, 0x7a, 0xda, 0x6f, 0x3b, 0xba, 0x93, - 0x71, 0xf3, 0xa9, 0x23, 0x77, 0xc4, 0x7f, 0x4e, 0xb3, 0xf1, 0xe7, 0xd2, 0x2c, 0xc3, 0x4e, 0x66, 0xe7, 0xfa, 0xd1, 0x5c, - 0x2a, 0x8f, 0xf3, 0x36, 0xf4, 0xfb, 0xe2, 0x7f, 0xef, 0xbd, 0xd7, 0xf1, 0x5d, 0xcf, 0x50, 0x7b, 0xb4, 0xe7, 0xe1, 0xee, - 0x8b, 0xe1, 0xa3, 0xfd, 0xad, 0xf2, 0x9a, 0x28, 0xaf, 0xe5, 0x04, 0xbd, 0xbb, 0xfd, 0xbf, 0x96, 0xdd, 0xfc, 0x3d, 0x47, - 0xaf, 0xb5, 0x49, 0xef, 0x88, 0xff, 0xdc, 0x3a, 0x26, 0x4c, 0x69, 0xa6, 0xf5, 0x28, 0xee, 0x7d, 0x94, 0xd7, 0xb5, 0x0b, - 0xeb, 0x3d, 0x35, 0xae, 0xb4, 0x29, 0xb3, 0x11, 0xdb, 0x3b, 0xf2, 0xa6, 0xfe, 0xff, 0x2f, 0xc5, 0xff, 0x1d, 0x31, 0xfe, - 0x4c, 0xfc, 0xef, 0xf5, 0x00, 0xfa, 0xfb, 0x2d, 0x75, 0x6a, 0x86, 0x9d, 0xbd, 0x6d, 0x76, 0x8f, 0x76, 0x6b, 0x87, 0xfc, - 0xa1, 0x36, 0xec, 0xcd, 0xb4, 0x7e, 0x5b, 0xff, 0xff, 0xfc, 0xfe, 0x4f, 0xda, 0xf3, 0xcb, 0xef, 0x8b, 0xff, 0x7e, 0x0b, - 0x70, 0x4f, 0xfc, 0xe7, 0xc1, 0x79, 0xd2, 0xb4, 0x67, 0x3d, 0xd3, 0xb8, 0x6f, 0xfc, 0xc6, 0x71, 0x61, 0xe5, 0xec, 0x77, - 0xf6, 0xd0, 0xfc, 0xee, 0xf8, 0x5f, 0xcf, 0x2f, 0xfd, 0x4a, 0xff, 0x3f, 0x1b, 0xb3, 0xa0, 0xd3, 0xf1, 0xff, 0x3d, 0xf9, - 0x46, 0x33, 0x36, 0xee, 0xf8, 0xbe, 0x56, 0xa3, 0x1b, 0x57, 0x3b, 0xa3, 0x89, 0xeb, 0x73, 0xae, 0xcf, 0xec, 0x76, 0x92, - 0x57, 0x9d, 0xab, 0x3b, 0xee, 0x58, 0x7e, 0x66, 0xfe, 0xef, 0x5b, 0x22, 0x5f, 0xfc, 0xaf, 0xe6, 0xd0, 0xcf, 0xc7, 0xcf, - 0xb5, 0x23, 0x95, 0xe7, 0x0c, 0x3f, 0x17, 0xff, 0x9f, 0x9b, 0xe7, 0xb9, 0x67, 0x37, 0x93, 0xce, 0x33, 0x36, 0xc7, 0x2d, - 0xcf, 0xce, 0xbd, 0xef, 0x59, 0x8b, 0xe3, 0x0b, 0xe2, 0x7f, 0x66, 0x36, 0xb4, 0x53, 0x12, 0x59, 0xec, 0x8b, 0x9c, 0xe2, - 0x33, 0xd7, 0x77, 0xf5, 0xff, 0x67, 0x5b, 0xc5, 0x4f, 0x3e, 0xe7, 0xf1, 0xfc, 0x95, 0xde, 0x3d, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf6, 0xda, 0xba, 0x7a, 0xd6, 0xbd, 0x34, 0xd7, 0xef, 0xf6, 0xd7, - 0xa9, 0xd6, 0x77, 0x0d, 0xb8, 0xf2, 0x9e, 0x29, 0xaf, 0xbf, 0xa9, 0x7d, 0x52, 0xe5, 0x5b, 0xdf, 0x93, 0x75, 0xff, 0x58, - 0xe4, 0x18, 0xc8, 0xc8, 0x35, 0x91, 0x72, 0x4e, 0x87, 0xa3, 0x99, 0x95, 0x28, 0xe5, 0xab, 0x2e, 0x8d, 0xbf, 0xa7, 0xbc, - 0x32, 0xf3, 0x68, 0x7c, 0xef, 0x37, 0xaf, 0xb9, 0xef, 0x66, 0xf2, 0xec, 0xef, 0x50, 0x31, 0xbd, 0xea, 0x31, 0xcd, 0x3c, - 0xdc, 0x19, 0x5b, 0xef, 0x9a, 0x8d, 0x15, 0xcd, 0x9d, 0x48, 0xaf, 0xd4, 0xd7, 0x69, 0xc7, 0x46, 0xad, 0x3e, 0xcb, 0xe8, - 0x75, 0x3a, 0xb7, 0x43, 0x4c, 0x46, 0x33, 0x69, 0xbe, 0x79, 0x5d, 0x5e, 0x9a, 0xd9, 0x35, 0xf2, 0x05, 0xeb, 0x90, 0xb3, - 0xb1, 0x5b, 0x4a, 0x1a, 0x3b, 0x9d, 0x7c, 0x66, 0xa5, 0xf3, 0xde, 0x95, 0xf9, 0xce, 0x55, 0xa3, 0xd5, 0x7c, 0x6e, 0x4f, - 0x5d, 0x75, 0xbd, 0x9c, 0x1f, 0x19, 0x7f, 0xc7, 0x67, 0xe2, 0xbf, 0x93, 0x77, 0x37, 0xcb, 0x3e, 0xe5, 0xb3, 0xab, 0x9e, - 0xbb, 0xd9, 0xc6, 0xd2, 0xda, 0x6d, 0x60, 0xff, 0xef, 0x9f, 0xc8, 0xba, 0x73, 0x6f, 0xfb, 0x3f, 0xdf, 0xc7, 0xae, 0x66, - 0x38, 0xe8, 0x5d, 0xdd, 0xdd, 0x9d, 0x2e, 0xf2, 0x33, 0xf1, 0xbf, 0xce, 0xba, 0x98, 0x91, 0xd9, 0x84, 0x4f, 0x1c, 0x4b, - 0x73, 0xd7, 0xa7, 0x0c, 0x8d, 0x17, 0xd6, 0xb9, 0x2e, 0x9f, 0x88, 0xff, 0x9c, 0xf4, 0xce, 0xd3, 0xd8, 0xd9, 0x62, 0xea, - 0xef, 0x93, 0xb3, 0x15, 0xfd, 0x5d, 0x6b, 0xe6, 0xe2, 0x3f, 0xc3, 0x3b, 0xb0, 0xbd, 0x3d, 0xfe, 0xa7, 0x67, 0x00, 0xfa, - 0x31, 0x9e, 0xf6, 0x68, 0x6d, 0x62, 0x94, 0xdb, 0xf9, 0xfb, 0x73, 0x59, 0xf7, 0xcf, 0xf2, 0x2a, 0xa7, 0x75, 0x45, 0x64, - 0x60, 0x1e, 0x25, 0xed, 0x1e, 0xf6, 0xfd, 0xf1, 0xbf, 0xb3, 0xe7, 0x4f, 0xbe, 0x2e, 0xfe, 0x57, 0x35, 0x5a, 0x3d, 0xbf, - 0x6d, 0x5a, 0xb1, 0xda, 0x3b, 0x96, 0x8d, 0xd9, 0x9f, 0x2c, 0xb3, 0xe6, 0xdf, 0xd3, 0xfb, 0xaf, 0x7d, 0xdb, 0x99, 0xf8, - 0x9f, 0x89, 0xce, 0x4f, 0xc6, 0x7f, 0x36, 0xf6, 0x8e, 0x99, 0x6c, 0xdd, 0xd2, 0xcc, 0x14, 0x9a, 0x97, 0xce, 0xff, 0x75, - 0x46, 0x34, 0xf3, 0x7b, 0x75, 0xdc, 0x71, 0x6c, 0x6f, 0xe6, 0x2b, 0x37, 0x8e, 0x7d, 0x8f, 0x0f, 0xb4, 0xff, 0x13, 0x35, - 0xc3, 0x67, 0xdb, 0xff, 0x63, 0xf4, 0x7a, 0x5c, 0xff, 0xfa, 0x3c, 0xd0, 0xa3, 0x7c, 0x4b, 0xfc, 0xe7, 0x4b, 0xe3, 0xff, - 0xb8, 0xb0, 0xa3, 0xdc, 0x5b, 0x6b, 0x80, 0x3c, 0x3a, 0xfe, 0x7f, 0x57, 0xfc, 0xcf, 0xde, 0x01, 0xc9, 0xf2, 0x1e, 0x67, - 0x2d, 0xca, 0xd3, 0xb8, 0xd3, 0x98, 0xe2, 0x6e, 0x6a, 0xef, 0x79, 0xfe, 0x27, 0xcd, 0xd1, 0x49, 0x35, 0x1e, 0xef, 0x39, - 0x76, 0xcf, 0xac, 0x6b, 0xca, 0x73, 0x8a, 0x19, 0xb9, 0xce, 0x9f, 0xcc, 0xba, 0xbb, 0x1a, 0xc5, 0x3d, 0xff, 0xeb, 0x77, - 0xef, 0xa7, 0x66, 0xe8, 0xc8, 0xe4, 0xb3, 0x44, 0x6f, 0x79, 0x3a, 0x60, 0xfa, 0x1e, 0xda, 0x37, 0xe4, 0x21, 0xce, 0xcf, - 0x67, 0x4c, 0xbf, 0xef, 0xa9, 0x01, 0xee, 0xed, 0xe9, 0x7d, 0xcf, 0xb3, 0xc1, 0x88, 0x7e, 0xd6, 0xcf, 0xa8, 0xfc, 0xe6, - 0xef, 0x02, 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, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa6, 0xfd, 0xfb, 0x9f, 0x72, 0x00, 0xf1, 0x0f, 0xfc, 0x75, 0xf1, 0xff, 0x2f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle lavandaFontRecs[189] = { - { 4, 4, 5 , 16 }, - { 17, 4, 1 , 9 }, - { 26, 4, 3 , 3 }, - { 37, 4, 7 , 8 }, - { 52, 4, 5 , 11 }, - { 65, 4, 10 , 8 }, - { 83, 4, 7 , 9 }, - { 98, 4, 1 , 3 }, - { 107, 4, 3 , 12 }, - { 118, 4, 3 , 12 }, - { 129, 4, 5 , 4 }, - { 142, 4, 5 , 5 }, - { 155, 4, 2 , 3 }, - { 165, 4, 3 , 1 }, - { 176, 4, 1 , 1 }, - { 185, 4, 4 , 12 }, - { 197, 4, 5 , 9 }, - { 210, 4, 3 , 9 }, - { 221, 4, 5 , 9 }, - { 234, 4, 5 , 9 }, - { 247, 4, 5 , 9 }, - { 260, 4, 5 , 9 }, - { 273, 4, 5 , 9 }, - { 286, 4, 5 , 9 }, - { 299, 4, 5 , 9 }, - { 312, 4, 5 , 9 }, - { 325, 4, 1 , 4 }, - { 334, 4, 2 , 6 }, - { 344, 4, 4 , 5 }, - { 356, 4, 4 , 3 }, - { 368, 4, 4 , 5 }, - { 380, 4, 5 , 9 }, - { 393, 4, 7 , 10 }, - { 408, 4, 7 , 9 }, - { 423, 4, 6 , 9 }, - { 437, 4, 5 , 9 }, - { 450, 4, 6 , 9 }, - { 464, 4, 5 , 9 }, - { 477, 4, 5 , 9 }, - { 490, 4, 6 , 9 }, - { 4, 28, 5 , 10 }, - { 17, 28, 1 , 9 }, - { 26, 28, 6 , 9 }, - { 40, 28, 6 , 9 }, - { 54, 28, 5 , 9 }, - { 67, 28, 8 , 11 }, - { 83, 28, 6 , 10 }, - { 97, 28, 7 , 9 }, - { 112, 28, 5 , 9 }, - { 125, 28, 7 , 11 }, - { 140, 28, 5 , 9 }, - { 153, 28, 6 , 9 }, - { 167, 28, 7 , 9 }, - { 182, 28, 6 , 9 }, - { 196, 28, 6 , 10 }, - { 210, 28, 9 , 10 }, - { 227, 28, 6 , 11 }, - { 241, 28, 5 , 10 }, - { 254, 28, 5 , 9 }, - { 267, 28, 3 , 12 }, - { 278, 28, 4 , 12 }, - { 290, 28, 3 , 12 }, - { 301, 28, 5 , 4 }, - { 314, 28, 6 , 1 }, - { 328, 28, 3 , 3 }, - { 339, 28, 6 , 7 }, - { 353, 28, 5 , 9 }, - { 366, 28, 4 , 7 }, - { 378, 28, 5 , 10 }, - { 391, 28, 4 , 7 }, - { 403, 28, 3 , 10 }, - { 414, 28, 4 , 11 }, - { 426, 28, 5 , 11 }, - { 439, 28, 1 , 9 }, - { 448, 28, 5 , 12 }, - { 461, 28, 5 , 9 }, - { 474, 28, 1 , 9 }, - { 483, 28, 8 , 9 }, - { 4, 52, 5 , 9 }, - { 17, 52, 4 , 7 }, - { 29, 52, 5 , 10 }, - { 42, 52, 5 , 10 }, - { 55, 52, 5 , 7 }, - { 68, 52, 5 , 7 }, - { 81, 52, 3 , 9 }, - { 92, 52, 5 , 7 }, - { 105, 52, 5 , 8 }, - { 118, 52, 9 , 8 }, - { 135, 52, 5 , 9 }, - { 148, 52, 6 , 9 }, - { 162, 52, 4 , 7 }, - { 174, 52, 5 , 12 }, - { 187, 52, 1 , 12 }, - { 196, 52, 5 , 12 }, - { 209, 52, 6 , 2 }, - { 223, 52, 1 , 9 }, - { 232, 52, 5 , 10 }, - { 245, 52, 6 , 9 }, - { 259, 52, 7 , 9 }, - { 274, 52, 5 , 9 }, - { 287, 52, 6 , 12 }, - { 301, 52, 5 , 10 }, - { 314, 52, 5 , 10 }, - { 327, 52, 8 , 8 }, - { 343, 52, 4 , 7 }, - { 355, 52, 6 , 5 }, - { 369, 52, 6 , 3 }, - { 383, 52, 8 , 8 }, - { 399, 52, 5 , 1 }, - { 412, 52, 4 , 4 }, - { 424, 52, 5 , 7 }, - { 437, 52, 3 , 4 }, - { 448, 52, 3 , 4 }, - { 459, 52, 5 , 12 }, - { 472, 52, 5 , 10 }, - { 485, 52, 7 , 11 }, - { 500, 52, 1 , 1 }, - { 4, 76, 4 , 10 }, - { 16, 76, 2 , 4 }, - { 26, 76, 4 , 7 }, - { 38, 76, 6 , 5 }, - { 52, 76, 11 , 9 }, - { 71, 76, 7 , 7 }, - { 86, 76, 5 , 12 }, - { 99, 76, 5 , 9 }, - { 112, 76, 7 , 12 }, - { 127, 76, 7 , 12 }, - { 142, 76, 7 , 12 }, - { 157, 76, 7 , 12 }, - { 172, 76, 7 , 11 }, - { 187, 76, 7 , 12 }, - { 202, 76, 10 , 9 }, - { 220, 76, 5 , 12 }, - { 233, 76, 5 , 12 }, - { 246, 76, 5 , 12 }, - { 259, 76, 5 , 12 }, - { 272, 76, 5 , 11 }, - { 285, 76, 2 , 12 }, - { 295, 76, 2 , 12 }, - { 305, 76, 3 , 12 }, - { 316, 76, 3 , 11 }, - { 327, 76, 7 , 9 }, - { 342, 76, 6 , 12 }, - { 356, 76, 7 , 12 }, - { 371, 76, 7 , 12 }, - { 386, 76, 7 , 12 }, - { 401, 76, 7 , 12 }, - { 416, 76, 7 , 11 }, - { 431, 76, 5 , 5 }, - { 444, 76, 7 , 9 }, - { 459, 76, 6 , 12 }, - { 473, 76, 6 , 12 }, - { 487, 76, 6 , 12 }, - { 4, 100, 6 , 11 }, - { 18, 100, 5 , 13 }, - { 31, 100, 5 , 9 }, - { 44, 100, 5 , 11 }, - { 57, 100, 6 , 10 }, - { 71, 100, 6 , 10 }, - { 85, 100, 6 , 10 }, - { 99, 100, 6 , 10 }, - { 113, 100, 6 , 9 }, - { 127, 100, 6 , 11 }, - { 141, 100, 7 , 7 }, - { 156, 100, 4 , 10 }, - { 168, 100, 4 , 10 }, - { 180, 100, 4 , 10 }, - { 192, 100, 4 , 10 }, - { 204, 100, 4 , 9 }, - { 216, 100, 2 , 10 }, - { 226, 100, 2 , 10 }, - { 236, 100, 3 , 10 }, - { 247, 100, 3 , 9 }, - { 258, 100, 5 , 9 }, - { 271, 100, 5 , 12 }, - { 284, 100, 4 , 10 }, - { 296, 100, 4 , 10 }, - { 308, 100, 4 , 10 }, - { 320, 100, 5 , 10 }, - { 333, 100, 4 , 9 }, - { 345, 100, 5 , 5 }, - { 358, 100, 6 , 7 }, - { 372, 100, 5 , 10 }, - { 385, 100, 5 , 10 }, - { 398, 100, 5 , 10 }, - { 411, 100, 5 , 9 }, - { 424, 100, 6 , 12 }, - { 438, 100, 5 , 12 }, - { 451, 100, 6 , 11 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo lavandaFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 3, 2, { 0 }}, - { 34, 0, 3, 4, { 0 }}, - { 35, 0, 3, 8, { 0 }}, - { 36, 0, 2, 6, { 0 }}, - { 37, 0, 4, 11, { 0 }}, - { 38, 0, 3, 8, { 0 }}, - { 39, 0, 3, 2, { 0 }}, - { 40, 0, 2, 4, { 0 }}, - { 41, 0, 2, 4, { 0 }}, - { 42, 0, 3, 6, { 0 }}, - { 43, 0, 5, 6, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 7, 4, { 0 }}, - { 46, 0, 11, 2, { 0 }}, - { 47, 0, 2, 5, { 0 }}, - { 48, 0, 3, 6, { 0 }}, - { 49, 0, 3, 4, { 0 }}, - { 50, 0, 3, 6, { 0 }}, - { 51, 0, 3, 6, { 0 }}, - { 52, 0, 3, 6, { 0 }}, - { 53, 0, 3, 6, { 0 }}, - { 54, 0, 3, 6, { 0 }}, - { 55, 0, 3, 6, { 0 }}, - { 56, 0, 3, 6, { 0 }}, - { 57, 0, 3, 6, { 0 }}, - { 58, 0, 7, 2, { 0 }}, - { 59, 0, 7, 3, { 0 }}, - { 60, 0, 5, 5, { 0 }}, - { 61, 0, 6, 5, { 0 }}, - { 62, 0, 5, 5, { 0 }}, - { 63, 0, 3, 6, { 0 }}, - { 64, 0, 4, 8, { 0 }}, - { 65, 0, 3, 8, { 0 }}, - { 66, 0, 3, 7, { 0 }}, - { 67, 0, 3, 6, { 0 }}, - { 68, 0, 3, 7, { 0 }}, - { 69, 0, 3, 6, { 0 }}, - { 70, 0, 3, 6, { 0 }}, - { 71, 0, 3, 7, { 0 }}, - { 72, 0, 2, 6, { 0 }}, - { 73, 0, 3, 2, { 0 }}, - { 74, 0, 3, 7, { 0 }}, - { 75, 0, 3, 7, { 0 }}, - { 76, 0, 3, 6, { 0 }}, - { 77, 0, 3, 9, { 0 }}, - { 78, 0, 2, 7, { 0 }}, - { 79, 0, 3, 8, { 0 }}, - { 80, 0, 3, 6, { 0 }}, - { 81, 0, 3, 8, { 0 }}, - { 82, 0, 3, 6, { 0 }}, - { 83, 0, 3, 7, { 0 }}, - { 84, 0, 3, 8, { 0 }}, - { 85, 0, 3, 7, { 0 }}, - { 86, 0, 2, 7, { 0 }}, - { 87, 0, 2, 10, { 0 }}, - { 88, 0, 3, 7, { 0 }}, - { 89, 0, 3, 6, { 0 }}, - { 90, 0, 3, 6, { 0 }}, - { 91, 0, 2, 4, { 0 }}, - { 92, 0, 2, 5, { 0 }}, - { 93, 0, 2, 4, { 0 }}, - { 94, 0, 3, 6, { 0 }}, - { 95, 0, 13, 7, { 0 }}, - { 96, 0, 3, 4, { 0 }}, - { 97, 0, 5, 7, { 0 }}, - { 98, 0, 3, 6, { 0 }}, - { 99, 0, 5, 5, { 0 }}, - { 100, 0, 2, 6, { 0 }}, - { 101, 0, 5, 5, { 0 }}, - { 102, 0, 2, 4, { 0 }}, - { 103, 0, 4, 5, { 0 }}, - { 104, 0, 3, 6, { 0 }}, - { 105, 0, 3, 2, { 0 }}, - { 106, -1, 3, 5, { 0 }}, - { 107, 0, 3, 6, { 0 }}, - { 108, 0, 3, 2, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 6, { 0 }}, - { 111, 0, 5, 5, { 0 }}, - { 112, 0, 5, 6, { 0 }}, - { 113, 0, 5, 6, { 0 }}, - { 114, 0, 5, 6, { 0 }}, - { 115, 0, 5, 6, { 0 }}, - { 116, 0, 3, 4, { 0 }}, - { 117, 0, 5, 6, { 0 }}, - { 118, 0, 4, 6, { 0 }}, - { 119, 0, 4, 10, { 0 }}, - { 120, 0, 5, 6, { 0 }}, - { 121, -1, 5, 6, { 0 }}, - { 122, 0, 5, 5, { 0 }}, - { 123, 0, 2, 6, { 0 }}, - { 124, 0, 2, 2, { 0 }}, - { 125, 0, 2, 6, { 0 }}, - { 126, 0, 7, 7, { 0 }}, - { 161, 0, 5, 2, { 0 }}, - { 162, 0, 4, 6, { 0 }}, - { 163, 0, 3, 7, { 0 }}, - { 8364, 0, 3, 8, { 0 }}, - { 165, 0, 3, 6, { 0 }}, - { 352, 0, 0, 7, { 0 }}, - { 167, 0, 3, 6, { 0 }}, - { 353, 0, 2, 6, { 0 }}, - { 169, 0, 4, 9, { 0 }}, - { 170, 0, 3, 5, { 0 }}, - { 171, 0, 6, 7, { 0 }}, - { 172, 0, 6, 7, { 0 }}, - { 174, 0, 4, 9, { 0 }}, - { 175, 0, 2, 6, { 0 }}, - { 176, 0, 3, 5, { 0 }}, - { 177, 0, 5, 6, { 0 }}, - { 178, 0, 3, 4, { 0 }}, - { 179, 0, 3, 4, { 0 }}, - { 381, 0, 0, 6, { 0 }}, - { 181, 0, 5, 6, { 0 }}, - { 182, 0, 3, 8, { 0 }}, - { 183, 0, 7, 2, { 0 }}, - { 382, 0, 2, 5, { 0 }}, - { 185, 0, 3, 3, { 0 }}, - { 186, 0, 3, 5, { 0 }}, - { 187, 0, 6, 7, { 0 }}, - { 338, 0, 3, 12, { 0 }}, - { 339, 0, 5, 8, { 0 }}, - { 376, 0, 1, 6, { 0 }}, - { 191, 0, 5, 6, { 0 }}, - { 192, 0, 0, 8, { 0 }}, - { 193, 0, 0, 8, { 0 }}, - { 194, 0, 0, 8, { 0 }}, - { 195, 0, 0, 8, { 0 }}, - { 196, 0, 1, 8, { 0 }}, - { 197, 0, 0, 8, { 0 }}, - { 198, 0, 3, 11, { 0 }}, - { 199, 0, 3, 6, { 0 }}, - { 200, 0, 0, 6, { 0 }}, - { 201, 0, 0, 6, { 0 }}, - { 202, 0, 0, 6, { 0 }}, - { 203, 0, 1, 6, { 0 }}, - { 204, -1, 0, 2, { 0 }}, - { 205, 0, 0, 3, { 0 }}, - { 206, -1, 0, 3, { 0 }}, - { 207, -1, 1, 3, { 0 }}, - { 208, -1, 3, 7, { 0 }}, - { 209, 0, 0, 7, { 0 }}, - { 210, 0, 0, 8, { 0 }}, - { 211, 0, 0, 8, { 0 }}, - { 212, 0, 0, 8, { 0 }}, - { 213, 0, 0, 8, { 0 }}, - { 214, 0, 1, 8, { 0 }}, - { 215, 0, 5, 6, { 0 }}, - { 216, 0, 3, 8, { 0 }}, - { 217, 0, 0, 7, { 0 }}, - { 218, 0, 0, 7, { 0 }}, - { 219, 0, 0, 7, { 0 }}, - { 220, 0, 1, 7, { 0 }}, - { 221, 0, 0, 6, { 0 }}, - { 222, 0, 3, 6, { 0 }}, - { 223, 0, 3, 6, { 0 }}, - { 224, 0, 2, 7, { 0 }}, - { 225, 0, 2, 7, { 0 }}, - { 226, 0, 2, 7, { 0 }}, - { 227, 0, 2, 7, { 0 }}, - { 228, 0, 3, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 5, 8, { 0 }}, - { 231, 0, 5, 5, { 0 }}, - { 232, 0, 2, 5, { 0 }}, - { 233, 0, 2, 5, { 0 }}, - { 234, 0, 2, 5, { 0 }}, - { 235, 0, 3, 5, { 0 }}, - { 236, -1, 2, 2, { 0 }}, - { 237, 0, 2, 3, { 0 }}, - { 238, -1, 2, 3, { 0 }}, - { 239, -1, 3, 3, { 0 }}, - { 240, 0, 3, 6, { 0 }}, - { 241, 0, 2, 6, { 0 }}, - { 242, 0, 2, 5, { 0 }}, - { 243, 0, 2, 5, { 0 }}, - { 244, 0, 2, 5, { 0 }}, - { 245, 0, 2, 6, { 0 }}, - { 246, 0, 3, 5, { 0 }}, - { 247, 0, 5, 6, { 0 }}, - { 248, -1, 5, 6, { 0 }}, - { 249, 0, 2, 6, { 0 }}, - { 250, 0, 2, 6, { 0 }}, - { 251, 0, 2, 6, { 0 }}, - { 252, 0, 3, 6, { 0 }}, - { 253, -1, 2, 6, { 0 }}, - { 254, 0, 3, 6, { 0 }}, - { 255, -1, 3, 6, { 0 }}, -}; - -// Style loading function: Lavanda -static void GuiLoadStyleLavanda(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < LAVANDA_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(lavandaStyleProps[i].controlId, lavandaStyleProps[i].propertyId, lavandaStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int lavandaFontDataSize = 0; - unsigned char *data = DecompressData(lavandaFontData, LAVANDA_STYLE_FONT_ATLAS_COMP_SIZE, &lavandaFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, lavandaFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, lavandaFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.png deleted file mode 100644 index e554e71..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.rgs deleted file mode 100644 index 1a28c1c..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.txt.rgs deleted file mode 100644 index 33ee9bd..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/lavanda/style_lavanda.txt.rgs +++ /dev/null @@ -1,26 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 16 charset.txt Cartridge.ttf -p 00 00 0xab9bd3ff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0x3e4350ff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0xdadaf4ff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0xee84a0ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0xf4b7c7ff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0xb7657bff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0xd5c8dbff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0x966ec0ff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0xd7ccf7ff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0x8fa2bdff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0x6b798dff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x8292a9ff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x00000010 TEXT_SIZE -p 00 18 0x84adb7ff LINE_COLOR -p 00 19 0x5b5b81ff BACKGROUND_COLOR -p 00 20 0x00000018 TEXT_LINE_SPACING diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/2a03_memesbruh03.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/2a03_memesbruh03.ttf deleted file mode 100644 index 71f6e9d..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/2a03_memesbruh03.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/font_readme.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/font_readme.txt deleted file mode 100644 index 7689af6..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/font_readme.txt +++ /dev/null @@ -1,10 +0,0 @@ - -Every font made by MB03 is 100% free for personal & commercial use. -Including the font(s) in this archive. - - - -~ memesbruh03~ - -For more cool things, go to...: -https://memesbruh03.neocities.org/ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/screenshot.old.png deleted file mode 100644 index 1b6d207..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/screenshot.png deleted file mode 100644 index 5167ba7..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/style_rltech.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/style_rltech.h deleted file mode 100644 index 20e84f6..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/style_rltech.h +++ /dev/null @@ -1,572 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleRLTech(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define RLTECH_STYLE_PROPS_COUNT 15 - -// Custom style name: RLTech -static const GuiStyleProp rltechStyleProps[RLTECH_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x000000ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0xf5f5f5ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x000000ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xe10000ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xffffffff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xed0000ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xed0000ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x0f0f0fff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0xff2323ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0xcacacaff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0xe3e3e3ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0xb3b3b3ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 18, (int)0x352c2cff }, // DEFAULT_LINE_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "2a03.ttf" (size: 16, spacing: 1) - -#define RLTECH_STYLE_FONT_ATLAS_COMP_SIZE 1950 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char rltechFontData[RLTECH_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0xcb, 0x76, 0xc3, 0x2a, 0x12, 0x05, 0x50, 0xfe, 0xff, 0xa7, 0xab, 0x07, 0x77, 0xd0, 0x8f, 0xd5, 0xb1, 0xa0, 0x28, - 0x10, 0xd8, 0x3b, 0x7b, 0x16, 0xc7, 0xb6, 0x1e, 0x1c, 0x03, 0x8a, 0x29, 0x45, 0x03, 0x00, 0x00, 0x00, 0x88, 0xf8, 0xbf, - 0xbf, 0x89, 0x3f, 0xfe, 0x32, 0xba, 0x5f, 0xe5, 0x9f, 0xdf, 0xc6, 0x87, 0x67, 0xfd, 0xfb, 0xa7, 0xef, 0xf5, 0xa2, 0xf3, - 0x5d, 0xff, 0xfe, 0xfd, 0xdf, 0x5b, 0xd2, 0xbf, 0x6d, 0x15, 0xaf, 0x30, 0xfa, 0xd7, 0x9f, 0xb7, 0xa4, 0xea, 0xd5, 0x6a, - 0x1f, 0xd9, 0x77, 0xe4, 0x9f, 0xb7, 0x6e, 0xe7, 0xb1, 0x68, 0x9b, 0x8e, 0x6c, 0x0c, 0xb4, 0xfa, 0xb5, 0xf9, 0xff, 0xbc, - 0xad, 0xf1, 0x78, 0xee, 0x67, 0xb2, 0x9e, 0x7d, 0xcf, 0x8a, 0x23, 0xd7, 0xb7, 0xbd, 0x31, 0xf9, 0xd7, 0x77, 0x3e, 0x92, - 0x3d, 0x6a, 0xe3, 0x7f, 0xdf, 0x9b, 0x87, 0xda, 0x3d, 0x6e, 0xa5, 0xcf, 0x69, 0x8b, 0xdf, 0xa7, 0x22, 0xff, 0xcf, 0x29, - 0x1f, 0xef, 0xff, 0x33, 0x79, 0xea, 0x69, 0x11, 0xa3, 0x9f, 0xc3, 0xed, 0xf5, 0xfc, 0x67, 0x1e, 0xa9, 0x6d, 0x71, 0x6d, - 0x7b, 0xfe, 0xc7, 0x47, 0x85, 0xe3, 0xc7, 0x27, 0x3e, 0xb4, 0x41, 0xf9, 0x1f, 0x7b, 0x56, 0x66, 0x5e, 0x90, 0x1b, 0xa5, - 0xcf, 0x8d, 0xdc, 0x5b, 0xf2, 0x33, 0xa7, 0x32, 0xfd, 0xf2, 0xbf, 0xab, 0xff, 0xef, 0xe9, 0x31, 0xe4, 0x7f, 0xfe, 0x1c, - 0x64, 0xe6, 0x2a, 0x4f, 0xf9, 0x1f, 0xe9, 0x91, 0x6b, 0xc6, 0xf3, 0xa7, 0xe6, 0x3f, 0x3a, 0xe6, 0x8f, 0x6b, 0xe7, 0x95, - 0xad, 0xf4, 0x6a, 0xc2, 0x8a, 0x4f, 0x80, 0x78, 0x68, 0x9b, 0xe3, 0xfd, 0x7f, 0x66, 0x2e, 0x9f, 0xc9, 0xe5, 0xe8, 0x99, - 0xfd, 0xcf, 0x6d, 0x9f, 0xbd, 0x3e, 0xb2, 0xbe, 0xff, 0xcf, 0x5d, 0x1b, 0x1c, 0xed, 0x3d, 0x76, 0xf6, 0xe7, 0x6f, 0xe4, - 0x7f, 0xa6, 0xf5, 0xd7, 0xcc, 0x4a, 0x56, 0x3c, 0x67, 0xcf, 0x99, 0x8a, 0x87, 0x36, 0x79, 0x6f, 0xff, 0x1f, 0x17, 0x8c, - 0xff, 0xdb, 0xe3, 0x88, 0x7b, 0xf4, 0x4a, 0xe6, 0x5d, 0xf9, 0x5f, 0x77, 0x75, 0xf3, 0xde, 0xfc, 0xb7, 0x63, 0xf2, 0x3f, - 0x73, 0x25, 0xfd, 0x17, 0xf2, 0x5f, 0x71, 0xf4, 0x9f, 0xae, 0xd8, 0x44, 0xc1, 0xec, 0xf1, 0x37, 0xf2, 0xbf, 0x3a, 0xb1, - 0xbb, 0x5f, 0xed, 0xbc, 0xf3, 0x22, 0xff, 0x2b, 0x12, 0x14, 0x0f, 0xa3, 0x86, 0xf9, 0xd9, 0xe3, 0x7d, 0xf9, 0x1f, 0x99, - 0x45, 0x9e, 0x33, 0x63, 0xdf, 0x3b, 0xff, 0xdf, 0x73, 0x06, 0xce, 0xfd, 0xfe, 0x44, 0xe6, 0x6a, 0xdb, 0x69, 0xfd, 0xff, - 0x09, 0xbd, 0x2c, 0x20, 0xff, 0x80, 0xfc, 0x03, 0xbf, 0xb0, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7e, 0xe9, 0x3b, 0xf4, 0xb9, 0xd5, 0xc9, 0x77, 0xd6, 0xa6, 0x5f, 0x51, 0x11, 0xa6, 0xba, 0xb2, 0xf6, - 0xe7, 0xad, 0x1f, 0x59, 0x01, 0xdf, 0xb7, 0x6a, 0x2a, 0x06, 0xd7, 0xa9, 0xd7, 0xae, 0x6a, 0xcf, 0x54, 0x1f, 0x68, 0xa5, - 0xeb, 0xed, 0x67, 0x56, 0x9b, 0x44, 0x2a, 0x21, 0x2b, 0xaa, 0x37, 0xee, 0xca, 0x7f, 0x4f, 0xfb, 0x6d, 0x47, 0xd4, 0xa6, - 0xcf, 0xac, 0x26, 0x7c, 0x3f, 0xff, 0xa3, 0xad, 0x70, 0xbc, 0x2e, 0x76, 0xc5, 0xea, 0xcb, 0xf6, 0x6a, 0xf5, 0xe1, 0xfc, - 0x59, 0xac, 0x5c, 0x81, 0xba, 0xb7, 0x57, 0x98, 0xdd, 0x8f, 0xbf, 0x5e, 0x73, 0xae, 0xd6, 0xe9, 0x48, 0x15, 0x6e, 0xf9, - 0x7f, 0x3b, 0xff, 0xeb, 0x47, 0x94, 0xbb, 0xea, 0xdd, 0xc4, 0xf0, 0x1d, 0x41, 0x66, 0xee, 0x57, 0x14, 0x13, 0x7f, 0x7b, - 0x76, 0xfe, 0xb3, 0x6d, 0x2a, 0x1e, 0x3f, 0x55, 0xe4, 0xbf, 0x3d, 0xdc, 0x39, 0xa1, 0x0d, 0x56, 0x4e, 0xce, 0x56, 0x59, - 0xae, 0xcf, 0x7d, 0x65, 0x85, 0xaa, 0x48, 0x8e, 0xff, 0xab, 0xcf, 0x62, 0x55, 0x4f, 0x79, 0x53, 0xfe, 0xf3, 0x77, 0xd1, - 0xdb, 0x37, 0xe7, 0x7d, 0x7a, 0xce, 0xe8, 0x5c, 0x73, 0x6f, 0xfe, 0x2b, 0xef, 0x75, 0x73, 0x4e, 0xfe, 0x57, 0xce, 0x28, - 0xfb, 0xb6, 0x7f, 0x7f, 0xfe, 0xe3, 0x2b, 0xc7, 0xff, 0x71, 0x48, 0xfe, 0x2b, 0xdb, 0x5a, 0x4b, 0xe5, 0x71, 0x6f, 0xff, - 0xdf, 0x5e, 0xfc, 0xbd, 0xfc, 0x8f, 0xe7, 0x3f, 0xcc, 0xff, 0x5f, 0xcb, 0x7f, 0x5c, 0x9b, 0xff, 0x98, 0xd8, 0x92, 0xf9, - 0x47, 0xce, 0x1a, 0xff, 0x57, 0x3e, 0x27, 0x73, 0x47, 0xe0, 0x3b, 0xfa, 0xff, 0x6f, 0xb8, 0xfe, 0x5f, 0xff, 0x7e, 0x99, - 0x19, 0x74, 0x55, 0xfe, 0xfb, 0xe7, 0xf0, 0xbf, 0x92, 0xff, 0xcc, 0xc8, 0xa0, 0xf6, 0x39, 0xe3, 0xd7, 0x78, 0xf6, 0xcd, - 0xff, 0x77, 0x5d, 0x6b, 0x3d, 0xe3, 0xd3, 0x3a, 0x16, 0x5d, 0x83, 0xfd, 0xdf, 0x2b, 0xbd, 0x55, 0xfd, 0x46, 0xed, 0x7c, - 0x3c, 0xff, 0x5d, 0x88, 0x99, 0x3e, 0xec, 0xe4, 0xfc, 0x8f, 0xf7, 0x52, 0xb9, 0x9e, 0xed, 0x8d, 0xfc, 0xbf, 0x59, 0x87, - 0x52, 0xbd, 0x4b, 0x42, 0x9b, 0x59, 0xf2, 0x59, 0x72, 0xc3, 0x71, 0x93, 0x7f, 0xe4, 0x5f, 0xd6, 0xd0, 0x2e, 0xb5, 0x63, - 0xf9, 0xe7, 0x17, 0xdb, 0x65, 0xff, 0xc8, 0xf6, 0x84, 0x7b, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0xb5, 0xfe, 0x3f, 0x53, 0x6d, 0xe4, 0xf4, 0xfa, 0xb9, 0xa3, 0x2b, 0xf9, 0xfb, 0xd7, 0x74, 0x47, 0x41, - 0x55, 0xde, 0xe7, 0xaa, 0x85, 0x23, 0x35, 0x04, 0x62, 0xb8, 0x42, 0x7f, 0xcf, 0x73, 0x3e, 0xb7, 0x89, 0xbf, 0xf7, 0x36, - 0xd7, 0xc2, 0x9e, 0x1f, 0xef, 0x5f, 0xdb, 0x10, 0x43, 0xc7, 0x3c, 0x73, 0x8c, 0x3e, 0x9d, 0x8b, 0xb1, 0x7b, 0x28, 0xfc, - 0xfd, 0x2a, 0x63, 0x2d, 0x23, 0x3a, 0x57, 0x33, 0x55, 0x55, 0x6b, 0xbf, 0xb7, 0x7e, 0xf6, 0xfc, 0xef, 0x62, 0x7a, 0x15, - 0xfa, 0xf8, 0x31, 0xaf, 0xad, 0x21, 0xd4, 0xfb, 0x9c, 0xf1, 0xba, 0xc4, 0x63, 0x6d, 0x26, 0x26, 0x56, 0xdc, 0x45, 0x6a, - 0xbf, 0x63, 0xe2, 0x68, 0xf4, 0xf6, 0x3a, 0x23, 0x7b, 0x32, 0x5a, 0x51, 0x30, 0x77, 0xe4, 0xab, 0xf3, 0x9f, 0xa9, 0xbc, - 0x9e, 0xcf, 0x7f, 0x6d, 0xfd, 0xec, 0xb9, 0xfc, 0x8f, 0xb5, 0xed, 0x7c, 0x65, 0xe5, 0xf1, 0x4f, 0xba, 0x36, 0x38, 0x06, - 0xfa, 0x94, 0xaa, 0x4f, 0xf5, 0x96, 0xf2, 0xbd, 0x50, 0x0c, 0xbf, 0xdb, 0xf8, 0xda, 0xc6, 0x48, 0xf5, 0xf3, 0x51, 0x54, - 0xab, 0x2c, 0xb7, 0x27, 0xb3, 0xf9, 0x1f, 0xf9, 0xec, 0xad, 0xba, 0x5b, 0xd3, 0x29, 0xf5, 0xb3, 0x73, 0xa3, 0xef, 0x53, - 0xf3, 0xbf, 0xef, 0x6e, 0x66, 0x9f, 0x9e, 0x13, 0xcb, 0x7a, 0xa1, 0xbf, 0xdf, 0x2d, 0x0a, 0x57, 0xdc, 0xd7, 0x8c, 0x86, - 0x66, 0xee, 0x48, 0xb2, 0x62, 0x84, 0xb8, 0xbf, 0xff, 0x1f, 0xcf, 0xc6, 0x49, 0xfd, 0xff, 0x9a, 0x39, 0x41, 0x45, 0xfe, - 0x73, 0x33, 0x83, 0xf9, 0x2a, 0xed, 0xbd, 0xcf, 0x89, 0x8e, 0x54, 0xb4, 0x92, 0x4f, 0x80, 0xf8, 0xaf, 0xde, 0x77, 0x75, - 0xfe, 0xc7, 0xaf, 0x68, 0xe4, 0xae, 0x3a, 0x55, 0x54, 0x31, 0x3d, 0x61, 0xfe, 0x5f, 0x99, 0xff, 0x35, 0xf5, 0x73, 0xeb, - 0xaa, 0xc6, 0xaf, 0xc8, 0xff, 0x78, 0xca, 0x67, 0x7a, 0xf9, 0x3d, 0xf9, 0xaf, 0xbe, 0x2a, 0xbd, 0xa2, 0xff, 0xaf, 0xdf, - 0xc6, 0xb1, 0xeb, 0x7f, 0xb3, 0x2d, 0x67, 0xf7, 0xf5, 0xff, 0xca, 0xf1, 0xff, 0xde, 0xfa, 0xb9, 0x75, 0x79, 0x99, 0xad, - 0x9d, 0x5b, 0x73, 0xaf, 0x9e, 0xea, 0xfe, 0x3f, 0x77, 0x74, 0x32, 0xf3, 0xff, 0x53, 0xf2, 0x1f, 0x0b, 0xb6, 0x70, 0xbc, - 0x95, 0xc7, 0x82, 0xf4, 0xd7, 0xec, 0xd7, 0xda, 0x31, 0xd6, 0x39, 0x9f, 0xd1, 0xed, 0xf5, 0xfe, 0x3f, 0xf7, 0xd7, 0x95, - 0x23, 0x83, 0xcc, 0xbb, 0xc5, 0xd6, 0xb3, 0x1c, 0x07, 0xb7, 0xa9, 0x99, 0x2b, 0x09, 0x71, 0x6c, 0x8a, 0xa2, 0x74, 0x3c, - 0x21, 0xff, 0xad, 0xf8, 0xba, 0xfc, 0xf8, 0xf8, 0xa9, 0x25, 0xbf, 0x03, 0xd1, 0xba, 0xee, 0x5b, 0xbf, 0x6b, 0x54, 0x7a, - 0x62, 0xa5, 0xc2, 0xdc, 0x1d, 0xd5, 0x46, 0xae, 0xff, 0x9d, 0x9e, 0x94, 0x7b, 0xbf, 0xd5, 0xb4, 0x3b, 0xff, 0x77, 0x7d, - 0x06, 0x9e, 0x9a, 0xb8, 0x3b, 0x8e, 0x67, 0xbc, 0xda, 0x7a, 0x59, 0x33, 0xa7, 0xfb, 0xa5, 0xfc, 0xe3, 0x78, 0x3a, 0xb3, - 0xdf, 0x91, 0x7f, 0xbd, 0x88, 0xe3, 0x4a, 0xd5, 0xff, 0x74, 0x7c, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x70, 0xc6, 0x6a, 0x86, 0xde, 0x5a, 0xec, 0xa3, 0xd5, 0xaf, 0xf3, 0xab, 0xa5, 0xc7, 0x7e, 0x1f, 0xc3, - 0x95, 0xb9, 0x9f, 0xd6, 0xda, 0x57, 0xde, 0x01, 0x21, 0xbf, 0x5f, 0x99, 0x3a, 0x6b, 0x3d, 0xbf, 0x1b, 0xaf, 0x32, 0x10, - 0xa9, 0xf5, 0x50, 0xeb, 0xcf, 0x64, 0xee, 0x6e, 0x0f, 0x7b, 0xce, 0x53, 0x66, 0x15, 0x59, 0xfd, 0x56, 0x3f, 0x3f, 0xa3, - 0xbf, 0x5a, 0x5c, 0xbc, 0xb8, 0x92, 0xfa, 0x73, 0xcb, 0x88, 0xc4, 0xfb, 0xc7, 0xd4, 0x31, 0x59, 0xbd, 0x5f, 0xb3, 0x6b, - 0x95, 0xb2, 0x55, 0xa7, 0x62, 0xf0, 0x08, 0xdf, 0x79, 0x26, 0xf7, 0x9c, 0xa7, 0x7c, 0x0d, 0xb9, 0xd8, 0x50, 0x7f, 0xa0, - 0x22, 0xff, 0x31, 0xb9, 0x9f, 0xef, 0xac, 0xd6, 0x8c, 0xd4, 0x3d, 0x75, 0xf6, 0xee, 0xd3, 0xba, 0xb5, 0xa6, 0x91, 0x6c, - 0x0d, 0xa7, 0xae, 0xbb, 0x7d, 0x77, 0x7f, 0x6a, 0xef, 0xc2, 0xb0, 0xf3, 0x2c, 0x8c, 0xe4, 0x3f, 0xb7, 0xbd, 0x51, 0x98, - 0xcb, 0xda, 0x5a, 0xf7, 0xb9, 0xcf, 0xb3, 0xb6, 0xa0, 0xb6, 0xe6, 0x78, 0x0d, 0xd6, 0xb6, 0xa4, 0x82, 0x69, 0xed, 0x1d, - 0xd5, 0x76, 0x9d, 0xc9, 0xa7, 0xfe, 0x7f, 0x7d, 0xbb, 0xd8, 0xf7, 0x48, 0xbe, 0xda, 0x63, 0x5f, 0xba, 0x2b, 0x46, 0x08, - 0xcf, 0x33, 0xec, 0x5b, 0x8e, 0x72, 0xdd, 0x7d, 0xba, 0xaa, 0x1f, 0x59, 0x91, 0xff, 0xa7, 0xfa, 0xbe, 0x37, 0xe6, 0xe5, - 0xe9, 0xbe, 0x8c, 0xe7, 0x6e, 0x75, 0x94, 0xb7, 0x98, 0x56, 0x9c, 0xee, 0xfe, 0x7d, 0xbc, 0x2d, 0xff, 0xa7, 0xa4, 0xfc, - 0xac, 0xfe, 0xff, 0xd4, 0x24, 0x7d, 0x1e, 0x63, 0xdf, 0xf9, 0xa9, 0xb5, 0xa2, 0xc5, 0x64, 0xd3, 0x9d, 0xbf, 0x1a, 0x7e, - 0x42, 0xfe, 0xf7, 0xce, 0xff, 0xab, 0x1f, 0x99, 0xbb, 0x57, 0x71, 0xf5, 0xf8, 0xff, 0xcc, 0x91, 0x74, 0xbb, 0xb4, 0x97, - 0xd9, 0x73, 0x5f, 0x8b, 0xfa, 0x2b, 0x17, 0x35, 0xed, 0xe9, 0xbb, 0xe7, 0xff, 0x55, 0x8f, 0xdc, 0x30, 0xff, 0x97, 0xff, - 0x99, 0x94, 0xb7, 0xd7, 0x8e, 0x4e, 0xef, 0x7f, 0xf7, 0x67, 0xf2, 0xbf, 0x27, 0x97, 0xab, 0x1e, 0x59, 0x31, 0xe2, 0x39, - 0x7b, 0xfc, 0x7f, 0xe3, 0xf9, 0xaa, 0xbd, 0xc6, 0x5e, 0xbf, 0x6d, 0x99, 0xff, 0xe3, 0xd5, 0x6d, 0xf5, 0xae, 0xff, 0xce, - 0x54, 0x8d, 0x3b, 0x4e, 0x6e, 0x4f, 0x6b, 0xfe, 0x3b, 0x7b, 0x4e, 0xfe, 0xbf, 0xf9, 0x7c, 0x9d, 0x96, 0xff, 0xb6, 0xe9, - 0xbf, 0x4b, 0xf2, 0xbf, 0xa2, 0x3d, 0xc5, 0xd6, 0xf9, 0x7f, 0xc8, 0x7f, 0x71, 0x0b, 0xdf, 0xb9, 0x6d, 0xb1, 0x38, 0x4b, - 0x77, 0x7e, 0xef, 0xf8, 0xdc, 0xbe, 0x61, 0xff, 0xf7, 0x8d, 0x6a, 0xee, 0x56, 0xb4, 0xf2, 0xfb, 0x57, 0xef, 0x5f, 0xc9, - 0xb9, 0xf5, 0x3c, 0xa9, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x5b, 0xbb, - 0xa7, 0xa6, 0x7e, 0x2b, 0xaa, 0xa9, 0x3f, 0xfe, 0x48, 0xed, 0xfe, 0x46, 0xa2, 0x3a, 0x78, 0x14, 0xac, 0x48, 0x5c, 0x71, - 0x96, 0xc6, 0xce, 0x4a, 0xdf, 0xab, 0xfd, 0x7a, 0xfa, 0xd7, 0x57, 0x62, 0xef, 0x5f, 0xc3, 0x57, 0xb5, 0x7a, 0xf6, 0x94, - 0x9a, 0xfa, 0x2d, 0x75, 0x7c, 0xdf, 0xae, 0xa8, 0x3f, 0x7e, 0xfe, 0xda, 0x05, 0x15, 0xf5, 0x79, 0x6b, 0xed, 0xe4, 0x6c, - 0xfe, 0x77, 0x6c, 0xfd, 0xba, 0x71, 0xd4, 0x6d, 0x15, 0xf5, 0x9f, 0xea, 0xe6, 0xc4, 0xa1, 0x15, 0xf5, 0x2b, 0x5f, 0x4d, - 0x96, 0xa3, 0xb0, 0x0a, 0x71, 0xcf, 0xf8, 0x7f, 0xcf, 0x5a, 0xed, 0x18, 0x1a, 0x41, 0x56, 0xd5, 0xd4, 0x78, 0xb3, 0x02, - 0x62, 0xe5, 0x7d, 0x26, 0xce, 0xae, 0xa8, 0x7d, 0xc2, 0x1d, 0x35, 0xbe, 0xeb, 0x1a, 0x40, 0x2b, 0xcb, 0xff, 0xfc, 0xab, - 0xad, 0xaf, 0x15, 0xb2, 0xae, 0xa6, 0xfe, 0x7d, 0x15, 0xf5, 0x3e, 0xdd, 0x05, 0xf0, 0xfb, 0x2a, 0x6a, 0xcb, 0xff, 0xea, - 0x9e, 0xeb, 0x9c, 0xfc, 0xef, 0xac, 0xa9, 0xa5, 0xa2, 0xae, 0xfc, 0x7f, 0xdb, 0xf8, 0xbf, 0xe2, 0x9e, 0x3a, 0xef, 0x8f, - 0x7a, 0x9b, 0xfc, 0xa7, 0xf2, 0x7f, 0x77, 0x45, 0x67, 0x89, 0x3f, 0xf9, 0x38, 0x7f, 0x5f, 0x4d, 0xdd, 0xdf, 0x49, 0x85, - 0xfc, 0xff, 0x4e, 0xfe, 0xd7, 0x54, 0x6f, 0xfc, 0xc6, 0x9a, 0xba, 0x67, 0xf7, 0x97, 0x37, 0x56, 0xd4, 0x7d, 0x7f, 0x4f, - 0x5d, 0xff, 0xbf, 0x61, 0x8e, 0x72, 0x7a, 0x4d, 0x5d, 0x15, 0x75, 0x73, 0xdb, 0xb6, 0xe6, 0x3f, 0x56, 0xc0, 0xdd, 0x57, - 0xac, 0x63, 0xe2, 0x2a, 0x37, 0xf0, 0xad, 0xf9, 0x37, 0xfe, 0x87, 0xef, 0x9f, 0xb1, 0x3a, 0x3a, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xf8, 0xe7, 0xc7, - 0x71, 0x00, 0xf9, 0x07, 0x7e, 0x2e, 0xff, 0xff, 0x02 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle rltechFontRecs[189] = { - { 4, 4, 5 , 16 }, - { 17, 4, 1 , 9 }, - { 26, 4, 3 , 3 }, - { 37, 4, 5 , 7 }, - { 50, 4, 5 , 9 }, - { 63, 4, 7 , 9 }, - { 78, 4, 6 , 9 }, - { 92, 4, 1 , 3 }, - { 101, 4, 2 , 13 }, - { 111, 4, 2 , 13 }, - { 121, 4, 5 , 5 }, - { 134, 4, 5 , 5 }, - { 147, 4, 1 , 2 }, - { 156, 4, 5 , 1 }, - { 169, 4, 1 , 1 }, - { 178, 4, 3 , 9 }, - { 189, 4, 5 , 9 }, - { 202, 4, 2 , 9 }, - { 212, 4, 5 , 9 }, - { 225, 4, 5 , 9 }, - { 238, 4, 5 , 9 }, - { 251, 4, 5 , 9 }, - { 264, 4, 5 , 9 }, - { 277, 4, 5 , 9 }, - { 290, 4, 5 , 9 }, - { 303, 4, 5 , 9 }, - { 316, 4, 1 , 6 }, - { 325, 4, 1 , 7 }, - { 334, 4, 3 , 5 }, - { 345, 4, 5 , 3 }, - { 358, 4, 3 , 5 }, - { 369, 4, 5 , 9 }, - { 382, 4, 8 , 9 }, - { 398, 4, 5 , 9 }, - { 411, 4, 5 , 9 }, - { 424, 4, 5 , 9 }, - { 437, 4, 5 , 9 }, - { 450, 4, 5 , 9 }, - { 463, 4, 5 , 9 }, - { 476, 4, 5 , 9 }, - { 489, 4, 5 , 9 }, - { 502, 4, 1 , 9 }, - { 4, 28, 5 , 9 }, - { 17, 28, 5 , 9 }, - { 30, 28, 5 , 9 }, - { 43, 28, 9 , 9 }, - { 60, 28, 5 , 9 }, - { 73, 28, 5 , 9 }, - { 86, 28, 5 , 9 }, - { 99, 28, 5 , 9 }, - { 112, 28, 5 , 9 }, - { 125, 28, 5 , 9 }, - { 138, 28, 5 , 9 }, - { 151, 28, 5 , 9 }, - { 164, 28, 5 , 9 }, - { 177, 28, 9 , 9 }, - { 194, 28, 5 , 9 }, - { 207, 28, 5 , 9 }, - { 220, 28, 5 , 9 }, - { 233, 28, 3 , 13 }, - { 244, 28, 3 , 9 }, - { 255, 28, 3 , 13 }, - { 266, 28, 3 , 2 }, - { 277, 28, 6 , 1 }, - { 291, 28, 2 , 2 }, - { 301, 28, 5 , 7 }, - { 314, 28, 5 , 9 }, - { 327, 28, 5 , 7 }, - { 340, 28, 5 , 9 }, - { 353, 28, 5 , 7 }, - { 366, 28, 4 , 9 }, - { 378, 28, 5 , 10 }, - { 391, 28, 5 , 9 }, - { 404, 28, 1 , 9 }, - { 413, 28, 1 , 12 }, - { 422, 28, 5 , 9 }, - { 435, 28, 1 , 9 }, - { 444, 28, 9 , 7 }, - { 461, 28, 5 , 7 }, - { 474, 28, 5 , 7 }, - { 487, 28, 5 , 10 }, - { 4, 52, 5 , 10 }, - { 17, 52, 5 , 7 }, - { 30, 52, 5 , 7 }, - { 43, 52, 4 , 9 }, - { 55, 52, 5 , 7 }, - { 68, 52, 5 , 7 }, - { 81, 52, 9 , 7 }, - { 98, 52, 5 , 7 }, - { 111, 52, 5 , 10 }, - { 124, 52, 5 , 7 }, - { 137, 52, 3 , 13 }, - { 148, 52, 1 , 13 }, - { 157, 52, 3 , 13 }, - { 168, 52, 4 , 2 }, - { 180, 52, 1 , 9 }, - { 189, 52, 5 , 7 }, - { 202, 52, 5 , 9 }, - { 215, 52, 5 , 9 }, - { 228, 52, 5 , 9 }, - { 241, 52, 5 , 12 }, - { 254, 52, 5 , 9 }, - { 267, 52, 5 , 10 }, - { 280, 52, 8 , 9 }, - { 296, 52, 4 , 7 }, - { 308, 52, 6 , 5 }, - { 322, 52, 5 , 3 }, - { 335, 52, 8 , 9 }, - { 351, 52, 6 , 1 }, - { 365, 52, 3 , 3 }, - { 376, 52, 5 , 7 }, - { 389, 52, 4 , 5 }, - { 401, 52, 4 , 5 }, - { 413, 52, 5 , 12 }, - { 426, 52, 5 , 10 }, - { 439, 52, 6 , 9 }, - { 453, 52, 1 , 1 }, - { 462, 52, 5 , 10 }, - { 475, 52, 2 , 5 }, - { 485, 52, 4 , 7 }, - { 497, 52, 6 , 5 }, - { 4, 76, 9 , 9 }, - { 21, 76, 9 , 7 }, - { 38, 76, 5 , 11 }, - { 51, 76, 5 , 9 }, - { 64, 76, 5 , 12 }, - { 77, 76, 5 , 12 }, - { 90, 76, 5 , 12 }, - { 103, 76, 5 , 12 }, - { 116, 76, 5 , 11 }, - { 129, 76, 5 , 11 }, - { 142, 76, 9 , 9 }, - { 159, 76, 5 , 11 }, - { 172, 76, 5 , 12 }, - { 185, 76, 5 , 12 }, - { 198, 76, 5 , 12 }, - { 211, 76, 5 , 11 }, - { 224, 76, 2 , 12 }, - { 234, 76, 2 , 12 }, - { 244, 76, 3 , 12 }, - { 255, 76, 3 , 11 }, - { 266, 76, 6 , 9 }, - { 280, 76, 5 , 12 }, - { 293, 76, 5 , 12 }, - { 306, 76, 5 , 12 }, - { 319, 76, 5 , 12 }, - { 332, 76, 5 , 12 }, - { 345, 76, 5 , 11 }, - { 358, 76, 5 , 5 }, - { 371, 76, 5 , 9 }, - { 384, 76, 5 , 12 }, - { 397, 76, 5 , 12 }, - { 410, 76, 5 , 12 }, - { 423, 76, 5 , 11 }, - { 436, 76, 5 , 12 }, - { 449, 76, 5 , 9 }, - { 462, 76, 5 , 11 }, - { 475, 76, 5 , 10 }, - { 488, 76, 5 , 10 }, - { 4, 100, 5 , 10 }, - { 17, 100, 5 , 10 }, - { 30, 100, 5 , 9 }, - { 43, 100, 5 , 9 }, - { 56, 100, 9 , 7 }, - { 73, 100, 5 , 9 }, - { 86, 100, 5 , 10 }, - { 99, 100, 5 , 10 }, - { 112, 100, 5 , 10 }, - { 125, 100, 5 , 9 }, - { 138, 100, 2 , 10 }, - { 148, 100, 2 , 10 }, - { 158, 100, 3 , 10 }, - { 169, 100, 3 , 9 }, - { 180, 100, 5 , 9 }, - { 193, 100, 5 , 10 }, - { 206, 100, 5 , 10 }, - { 219, 100, 5 , 10 }, - { 232, 100, 5 , 10 }, - { 245, 100, 5 , 10 }, - { 258, 100, 5 , 9 }, - { 271, 100, 5 , 5 }, - { 284, 100, 5 , 7 }, - { 297, 100, 5 , 10 }, - { 310, 100, 5 , 10 }, - { 323, 100, 5 , 10 }, - { 336, 100, 5 , 9 }, - { 349, 100, 5 , 13 }, - { 362, 100, 5 , 13 }, - { 375, 100, 5 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo rltechFontGlyphs[189] = { - { 32, 0, 0, 5, { 0 }}, - { 33, 0, 3, 2, { 0 }}, - { 34, 0, 3, 4, { 0 }}, - { 35, 0, 3, 6, { 0 }}, - { 36, 0, 3, 6, { 0 }}, - { 37, 0, 3, 8, { 0 }}, - { 38, 0, 3, 7, { 0 }}, - { 39, 0, 3, 2, { 0 }}, - { 40, 0, 1, 2, { 0 }}, - { 41, -1, 1, 2, { 0 }}, - { 42, 0, 3, 6, { 0 }}, - { 43, 0, 5, 6, { 0 }}, - { 44, 0, 10, 2, { 0 }}, - { 45, 0, 8, 6, { 0 }}, - { 46, 0, 11, 2, { 0 }}, - { 47, 0, 3, 4, { 0 }}, - { 48, 0, 3, 6, { 0 }}, - { 49, 0, 3, 3, { 0 }}, - { 50, 0, 3, 6, { 0 }}, - { 51, 0, 3, 6, { 0 }}, - { 52, 0, 3, 6, { 0 }}, - { 53, 0, 3, 6, { 0 }}, - { 54, 0, 3, 6, { 0 }}, - { 55, 0, 3, 6, { 0 }}, - { 56, 0, 3, 6, { 0 }}, - { 57, 0, 3, 6, { 0 }}, - { 58, 0, 4, 2, { 0 }}, - { 59, 0, 4, 2, { 0 }}, - { 60, 0, 5, 4, { 0 }}, - { 61, 0, 6, 6, { 0 }}, - { 62, 0, 5, 4, { 0 }}, - { 63, 0, 3, 6, { 0 }}, - { 64, 0, 3, 9, { 0 }}, - { 65, 0, 3, 6, { 0 }}, - { 66, 0, 3, 6, { 0 }}, - { 67, 0, 3, 6, { 0 }}, - { 68, 0, 3, 6, { 0 }}, - { 69, 0, 3, 6, { 0 }}, - { 70, 0, 3, 6, { 0 }}, - { 71, 0, 3, 6, { 0 }}, - { 72, 0, 3, 6, { 0 }}, - { 73, 0, 3, 2, { 0 }}, - { 74, 0, 3, 6, { 0 }}, - { 75, 0, 3, 6, { 0 }}, - { 76, 0, 3, 6, { 0 }}, - { 77, 0, 3, 10, { 0 }}, - { 78, 0, 3, 6, { 0 }}, - { 79, 0, 3, 6, { 0 }}, - { 80, 0, 3, 6, { 0 }}, - { 81, 0, 3, 6, { 0 }}, - { 82, 0, 3, 6, { 0 }}, - { 83, 0, 3, 6, { 0 }}, - { 84, 0, 3, 6, { 0 }}, - { 85, 0, 3, 6, { 0 }}, - { 86, 0, 3, 6, { 0 }}, - { 87, 0, 3, 10, { 0 }}, - { 88, 0, 3, 6, { 0 }}, - { 89, 0, 3, 6, { 0 }}, - { 90, 0, 3, 6, { 0 }}, - { 91, 0, 1, 2, { 0 }}, - { 92, 0, 3, 4, { 0 }}, - { 93, -2, 1, 2, { 0 }}, - { 94, 0, 3, 4, { 0 }}, - { 95, 0, 12, 7, { 0 }}, - { 96, 0, 3, 3, { 0 }}, - { 97, 0, 5, 6, { 0 }}, - { 98, 0, 3, 6, { 0 }}, - { 99, 0, 5, 6, { 0 }}, - { 100, 0, 3, 6, { 0 }}, - { 101, 0, 5, 6, { 0 }}, - { 102, 0, 3, 5, { 0 }}, - { 103, 0, 5, 6, { 0 }}, - { 104, 0, 3, 6, { 0 }}, - { 105, 0, 3, 2, { 0 }}, - { 106, 0, 3, 2, { 0 }}, - { 107, 0, 3, 6, { 0 }}, - { 108, 0, 3, 2, { 0 }}, - { 109, 0, 5, 10, { 0 }}, - { 110, 0, 5, 6, { 0 }}, - { 111, 0, 5, 6, { 0 }}, - { 112, 0, 5, 6, { 0 }}, - { 113, 0, 5, 6, { 0 }}, - { 114, 0, 5, 6, { 0 }}, - { 115, 0, 5, 6, { 0 }}, - { 116, 0, 3, 5, { 0 }}, - { 117, 0, 5, 6, { 0 }}, - { 118, 0, 5, 6, { 0 }}, - { 119, 0, 5, 10, { 0 }}, - { 120, 0, 5, 6, { 0 }}, - { 121, 0, 5, 6, { 0 }}, - { 122, 0, 5, 6, { 0 }}, - { 123, 0, 1, 3, { 0 }}, - { 124, 0, 1, 2, { 0 }}, - { 125, -1, 1, 3, { 0 }}, - { 126, 0, 3, 5, { 0 }}, - { 161, 0, 6, 2, { 0 }}, - { 162, 0, 4, 6, { 0 }}, - { 163, 0, 3, 6, { 0 }}, - { 8364, 0, 3, 6, { 0 }}, - { 165, 0, 3, 6, { 0 }}, - { 352, 0, 0, 6, { 0 }}, - { 167, 0, 3, 6, { 0 }}, - { 353, 0, 2, 6, { 0 }}, - { 169, 0, 3, 9, { 0 }}, - { 170, 0, 3, 5, { 0 }}, - { 171, 0, 5, 7, { 0 }}, - { 172, 0, 6, 6, { 0 }}, - { 174, 0, 3, 9, { 0 }}, - { 175, 0, 2, 7, { 0 }}, - { 176, 0, 3, 4, { 0 }}, - { 177, 0, 4, 6, { 0 }}, - { 178, 0, 3, 5, { 0 }}, - { 179, 0, 3, 5, { 0 }}, - { 381, 0, 0, 6, { 0 }}, - { 181, 0, 5, 6, { 0 }}, - { 182, 0, 3, 7, { 0 }}, - { 183, 0, 7, 2, { 0 }}, - { 382, 0, 2, 6, { 0 }}, - { 185, 0, 3, 3, { 0 }}, - { 186, 0, 3, 5, { 0 }}, - { 187, 0, 5, 7, { 0 }}, - { 338, 0, 3, 10, { 0 }}, - { 339, 0, 5, 10, { 0 }}, - { 376, 0, 1, 6, { 0 }}, - { 191, 0, 6, 6, { 0 }}, - { 192, 0, 0, 6, { 0 }}, - { 193, 0, 0, 6, { 0 }}, - { 194, 0, 0, 6, { 0 }}, - { 195, 0, 0, 6, { 0 }}, - { 196, 0, 1, 6, { 0 }}, - { 197, 0, 1, 6, { 0 }}, - { 198, 0, 3, 10, { 0 }}, - { 199, 0, 3, 6, { 0 }}, - { 200, 0, 0, 6, { 0 }}, - { 201, 0, 0, 6, { 0 }}, - { 202, 0, 0, 6, { 0 }}, - { 203, 0, 1, 6, { 0 }}, - { 204, -1, 0, 2, { 0 }}, - { 205, 0, 0, 2, { 0 }}, - { 206, -1, 0, 2, { 0 }}, - { 207, -1, 1, 2, { 0 }}, - { 208, -1, 3, 6, { 0 }}, - { 209, 0, 0, 6, { 0 }}, - { 210, 0, 0, 6, { 0 }}, - { 211, 0, 0, 6, { 0 }}, - { 212, 0, 0, 6, { 0 }}, - { 213, 0, 0, 6, { 0 }}, - { 214, 0, 1, 6, { 0 }}, - { 215, 0, 5, 6, { 0 }}, - { 216, 0, 3, 6, { 0 }}, - { 217, 0, 0, 6, { 0 }}, - { 218, 0, 0, 6, { 0 }}, - { 219, 0, 0, 6, { 0 }}, - { 220, 0, 1, 6, { 0 }}, - { 221, 0, 0, 6, { 0 }}, - { 222, 0, 3, 6, { 0 }}, - { 223, 0, 3, 6, { 0 }}, - { 224, 0, 2, 6, { 0 }}, - { 225, 0, 2, 6, { 0 }}, - { 226, 0, 2, 6, { 0 }}, - { 227, 0, 2, 6, { 0 }}, - { 228, 0, 3, 6, { 0 }}, - { 229, 0, 3, 6, { 0 }}, - { 230, 0, 5, 10, { 0 }}, - { 231, 0, 5, 6, { 0 }}, - { 232, 0, 2, 6, { 0 }}, - { 233, 0, 2, 6, { 0 }}, - { 234, 0, 2, 6, { 0 }}, - { 235, 0, 3, 6, { 0 }}, - { 236, -1, 2, 2, { 0 }}, - { 237, 0, 2, 2, { 0 }}, - { 238, -1, 2, 2, { 0 }}, - { 239, -1, 3, 2, { 0 }}, - { 240, 0, 3, 6, { 0 }}, - { 241, 0, 2, 6, { 0 }}, - { 242, 0, 2, 6, { 0 }}, - { 243, 0, 2, 6, { 0 }}, - { 244, 0, 2, 6, { 0 }}, - { 245, 0, 2, 6, { 0 }}, - { 246, 0, 3, 6, { 0 }}, - { 247, 0, 5, 6, { 0 }}, - { 248, 0, 5, 6, { 0 }}, - { 249, 0, 2, 6, { 0 }}, - { 250, 0, 2, 6, { 0 }}, - { 251, 0, 2, 6, { 0 }}, - { 252, 0, 3, 6, { 0 }}, - { 253, 0, 2, 6, { 0 }}, - { 254, 0, 2, 6, { 0 }}, - { 255, 0, 3, 6, { 0 }}, -}; - -// Style loading function: RLTech -static void GuiLoadStyleRLTech(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < RLTECH_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(rltechStyleProps[i].controlId, rltechStyleProps[i].propertyId, rltechStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int rltechFontDataSize = 0; - unsigned char *data = DecompressData(rltechFontData, RLTECH_STYLE_FONT_ATLAS_COMP_SIZE, &rltechFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, rltechFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, rltechFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/style_rltech.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/style_rltech.png deleted file mode 100644 index b4a532f..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/style_rltech.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/style_rltech.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/style_rltech.rgs deleted file mode 100644 index 576d1ac..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/rltech/style_rltech.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/GenericMobileSystemNuevo.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/GenericMobileSystemNuevo.ttf deleted file mode 100644 index 777a528..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/GenericMobileSystemNuevo.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/README.md deleted file mode 100644 index 082c1a2..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: sunny - -Sweet, colorful, sunny! Inspired by the [Playdate](https://play.date/) console and its [pulp](https://play.date/pulp/) editor! - -![sunny style table](style_sunny.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_sunny.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_sunny.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_sunny.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_sunny.h` | Embeddable style as code file, self-contained, includes font data | -| `style_sunny.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![sunny style screen](screenshot.png) - -## about font - -"Generic Mobile System" font by Jayvee Enaguas (HarvettFox96). - -CC0 free font, downloaded from dafont.com: [generic-mobile-system](https://www.dafont.com/es/generic-mobile-system.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/font_LICENSE.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/font_LICENSE.txt deleted file mode 100644 index 60f42f6..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/font_LICENSE.txt +++ /dev/null @@ -1,160 +0,0 @@ -===| Description |=== - -Generic Mobile System is a raster proportional sans serif typeface, extracted from various generic/knockoff mobile devices, created with libre/free font editor software FontForge. - -Source files: https://notabug.org/HarvettFox96/ttf-genericmobile/ - -===| Update log |=== - -Version 20190323.02: - -- OS/2 and TeX metric fixes. -- Updated Panose. - -Version 20190323.01: - -- Added outline variant. -- Minor fixes. - -Version 20190103.03: - -- Minor bearing tweaks. (Clásico only) -- Minor fixes. - -Version 20190103.02: - -- Bearing tweaks from the different generic mobile phone as Cherry Mobile S5. (Clásico only) -- Minor fixes. - -Version 20190103.01: - -- Initial public release. - -===| Copyright/attribution notice |=== - -© 2009-2019 Jayvee Enaguas (HarvettFox96). Released under a libre/free public domain licence as Creative Commons Zero (CC0) 1.0. Applies worldwide countries including the Philippines, Spain, etc. - - -------------------------------------------------------------------------------- - -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/screenshot.old.png deleted file mode 100644 index 20151f8..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/screenshot.png deleted file mode 100644 index 301c27c..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.h deleted file mode 100644 index 639ce1a..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.h +++ /dev/null @@ -1,614 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleSunny(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define SUNNY_STYLE_PROPS_COUNT 33 - -// Custom style name: Sunny -static const GuiStyleProp sunnyStyleProps[SUNNY_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x9c760aff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x594006ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0xf6d519ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xf6ee89ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0xf5f3d1ff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xf4cd19ff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0xf7e580ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0xf7f2c1ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x52470aff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0xc0be92ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0xd3d3a1ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0xbcbc89ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0x725706ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0xf0be4bff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING - { 1, 2, (int)0x504506ff }, // LABEL_TEXT_COLOR_NORMAL - { 1, 5, (int)0xfdeb9bff }, // LABEL_TEXT_COLOR_FOCUSED - { 1, 8, (int)0xf5e8a4ff }, // LABEL_TEXT_COLOR_PRESSED - { 2, 2, (int)0xebc21fff }, // BUTTON_TEXT_COLOR_NORMAL - { 3, 2, (int)0xebc21fff }, // TOGGLE_TEXT_COLOR_NORMAL - { 4, 2, (int)0x81700fff }, // SLIDER_TEXT_COLOR_NORMAL - { 4, 5, (int)0xf4e49aff }, // SLIDER_TEXT_COLOR_FOCUSED - { 7, 2, (int)0xebc21fff }, // COMBOBOX_TEXT_COLOR_NORMAL - { 8, 2, (int)0xefd87bff }, // DROPDOWNBOX_TEXT_COLOR_NORMAL - { 8, 5, (int)0xd4b219ff }, // DROPDOWNBOX_TEXT_COLOR_FOCUSED - { 9, 2, (int)0x7a680bff }, // TEXTBOX_TEXT_COLOR_NORMAL - { 9, 5, (int)0xad931fff }, // TEXTBOX_TEXT_COLOR_FOCUSED - { 10, 2, (int)0x62570eff }, // VALUEBOX_TEXT_COLOR_NORMAL - { 10, 5, (int)0xf2df88ff }, // VALUEBOX_TEXT_COLOR_FOCUSED - { 12, 2, (int)0xf4e798ff }, // LISTVIEW_TEXT_COLOR_NORMAL - { 15, 2, (int)0xebc21fff }, // STATUSBAR_TEXT_COLOR_NORMAL -}; - -// WARNING: This style uses a custom font: "GMSN.ttf" (size: 16, spacing: 0) - -#define SUNNY_STYLE_FONT_ATLAS_COMP_SIZE 2434 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char sunnyFontData[SUNNY_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x5b, 0x6e, 0xe4, 0x36, 0x10, 0x05, 0x50, 0xee, 0x7f, 0xa1, 0xd9, 0x06, 0x83, 0x20, 0x18, 0x24, 0xe3, 0xb1, 0x45, - 0xb2, 0xaa, 0xa8, 0x57, 0x9f, 0x1c, 0xe4, 0xc7, 0x1a, 0xb7, 0xd5, 0x94, 0xae, 0x44, 0x3d, 0x58, 0xec, 0x0d, 0x00, 0x00, - 0x00, 0xf8, 0x78, 0xff, 0xfc, 0xf7, 0xfd, 0xcf, 0xbe, 0x5b, 0x72, 0xbc, 0xec, 0xd7, 0xbf, 0x18, 0x2d, 0xe9, 0x3f, 0xae, - 0x49, 0x3f, 0x58, 0x36, 0xf7, 0xb7, 0x62, 0xeb, 0xd5, 0x97, 0xda, 0xa6, 0x1f, 0xb4, 0x5a, 0x4b, 0xff, 0xbc, 0x1d, 0xb6, - 0x7d, 0x0f, 0xb4, 0x5e, 0x3b, 0x5c, 0xe7, 0x9f, 0x7f, 0x73, 0xbc, 0xa4, 0x72, 0x3d, 0x57, 0xda, 0xb4, 0x72, 0xfb, 0xac, - 0xb4, 0x60, 0x5b, 0x5e, 0x7a, 0xdc, 0x52, 0x6d, 0xaa, 0x1d, 0xc7, 0x9f, 0xdc, 0x6f, 0x92, 0xff, 0xe3, 0x6f, 0xf3, 0x2b, - 0x83, 0x47, 0x5b, 0x7f, 0x7e, 0xdf, 0x68, 0xd3, 0xc7, 0x84, 0xff, 0xfe, 0x76, 0x5d, 0x42, 0xb3, 0x9f, 0xd2, 0x87, 0x47, - 0xc2, 0x95, 0x16, 0x3a, 0x6e, 0xbd, 0x16, 0xca, 0xc4, 0xe8, 0x33, 0x23, 0xeb, 0x32, 0xb3, 0x6c, 0x6e, 0xfd, 0x62, 0xfb, - 0xfc, 0xf8, 0xf3, 0x8e, 0xf7, 0xb4, 0xa3, 0x2d, 0x3c, 0xda, 0x73, 0x8f, 0xbf, 0xdf, 0xfa, 0x56, 0xcd, 0xa4, 0x7e, 0x4f, - 0xfe, 0xfb, 0xff, 0x72, 0xd6, 0x83, 0x19, 0xcc, 0x9f, 0x1b, 0xd6, 0xcf, 0x0a, 0xc7, 0xc7, 0xac, 0x7d, 0x2d, 0x7c, 0xd4, - 0x4e, 0x3d, 0xb0, 0x0f, 0xaf, 0x6f, 0xb3, 0xe8, 0xdf, 0xd9, 0x91, 0xff, 0x8a, 0x14, 0xb7, 0x89, 0x33, 0x62, 0xa4, 0x4f, - 0x71, 0xdc, 0xe3, 0xcc, 0x27, 0x7c, 0xb4, 0x2e, 0x91, 0xfe, 0x4c, 0xbe, 0x2d, 0x57, 0xfb, 0x1c, 0xfb, 0xf2, 0x5f, 0x71, - 0xbe, 0x5d, 0x3f, 0x97, 0xec, 0x6b, 0xdf, 0x99, 0xf3, 0xf5, 0xfd, 0xf3, 0xbf, 0xfe, 0xdd, 0x2a, 0xf2, 0x5f, 0xb3, 0x55, - 0xd6, 0xf3, 0xdf, 0xe5, 0x7f, 0xfa, 0xfc, 0xff, 0x73, 0xab, 0xf7, 0xe0, 0xf5, 0x57, 0xfe, 0xaa, 0xbd, 0xaa, 0x9f, 0x7f, - 0x6d, 0xfe, 0x47, 0xd7, 0x83, 0x6d, 0x39, 0xff, 0xb1, 0xab, 0xcf, 0xc8, 0xd5, 0x46, 0x55, 0xff, 0x7f, 0x6f, 0xef, 0xe1, - 0xf8, 0xea, 0x31, 0x92, 0xf0, 0xb5, 0x7b, 0x1e, 0x35, 0x9f, 0x7c, 0x45, 0xfe, 0xdb, 0xc4, 0xda, 0xf4, 0xe1, 0xf5, 0xff, - 0xec, 0x11, 0x7e, 0x2d, 0xff, 0x75, 0xe7, 0x8e, 0x2b, 0xf3, 0xdf, 0x83, 0x77, 0xc4, 0xaa, 0xaf, 0xe3, 0xe3, 0xdf, 0x6d, - 0xed, 0xfe, 0xdc, 0x79, 0xd7, 0xff, 0xa3, 0x7e, 0x60, 0x26, 0xff, 0x9f, 0xd2, 0xff, 0x9f, 0xe9, 0x69, 0x8f, 0x5a, 0x71, - 0xfe, 0x78, 0x76, 0xc5, 0xd9, 0xfc, 0xda, 0xfc, 0xf7, 0xa9, 0x7b, 0xd8, 0xf7, 0xce, 0x7f, 0x5b, 0xbe, 0xca, 0xab, 0xdc, - 0x77, 0xa3, 0x7b, 0xd4, 0x68, 0xcf, 0x9d, 0x39, 0xaa, 0xdd, 0x33, 0xff, 0xb1, 0xfd, 0xb9, 0x0f, 0x7b, 0xf9, 0x3d, 0x91, - 0xff, 0xf6, 0x9a, 0xfc, 0xf7, 0xe0, 0xdd, 0x8e, 0x9f, 0xfb, 0x7b, 0xb1, 0xfb, 0x71, 0x91, 0x9e, 0x7c, 0xa6, 0x8f, 0x52, - 0x95, 0xff, 0x7b, 0x6c, 0x49, 0xe7, 0xff, 0x8a, 0xfb, 0xff, 0xed, 0xb0, 0x87, 0xff, 0x59, 0xf9, 0x3f, 0x7e, 0xfe, 0xd7, - 0x6e, 0xff, 0xac, 0x2e, 0x9a, 0xff, 0x9a, 0xfb, 0xff, 0xe7, 0x1f, 0xad, 0x67, 0xae, 0x5c, 0x73, 0xf9, 0xbf, 0xd3, 0xf3, - 0xbf, 0xbd, 0xf9, 0x1f, 0x3d, 0xf5, 0x7e, 0x53, 0xff, 0xbf, 0xf2, 0x3e, 0x7e, 0xfc, 0x9d, 0x9b, 0x7d, 0xef, 0x14, 0xb5, - 0xd0, 0x9b, 0x5c, 0xf7, 0x4c, 0x7f, 0xf4, 0x39, 0x50, 0xee, 0x2e, 0xdd, 0xd5, 0xef, 0xff, 0xd4, 0xb7, 0xe0, 0x79, 0xeb, - 0xd3, 0x6f, 0xdc, 0x67, 0xe4, 0x5d, 0x6f, 0xc9, 0xda, 0xbb, 0xce, 0x7c, 0x3e, 0x1b, 0xff, 0x5b, 0xb6, 0x0f, 0x3b, 0xcf, - 0x6c, 0x5a, 0xe2, 0x19, 0xf7, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0xe3, - 0x17, 0x22, 0x63, 0x0d, 0xa3, 0x75, 0x08, 0x6a, 0xeb, 0x21, 0xf4, 0x2f, 0x75, 0x58, 0x57, 0x3f, 0x7b, 0x76, 0xac, 0x65, - 0x66, 0x9c, 0x66, 0xed, 0xef, 0x56, 0x55, 0x96, 0xa8, 0x1d, 0x79, 0x3e, 0xae, 0x77, 0xb3, 0x5a, 0xad, 0x39, 0x56, 0x05, - 0x6d, 0xbd, 0xa6, 0x79, 0xa6, 0x0e, 0x5f, 0xf5, 0xd8, 0xea, 0x9a, 0xfa, 0x68, 0xf3, 0x63, 0xde, 0x6b, 0x2a, 0x8d, 0xd4, - 0xe5, 0x7f, 0x7d, 0x3b, 0xf4, 0x2f, 0xeb, 0xd1, 0x2f, 0xa8, 0xc4, 0x50, 0xbf, 0x74, 0xee, 0xe7, 0x77, 0xca, 0xff, 0xec, - 0x31, 0x38, 0xbb, 0xf7, 0xc6, 0x47, 0xdc, 0x8d, 0xaa, 0x4f, 0x5c, 0x5f, 0x5b, 0xa5, 0x15, 0xd5, 0x47, 0xad, 0xcf, 0x7f, - 0x3b, 0xe9, 0xfc, 0x1f, 0xcd, 0x7f, 0x1f, 0xce, 0x66, 0x73, 0xdf, 0xfc, 0xaf, 0xd7, 0x9d, 0xc8, 0xfe, 0xd5, 0xdc, 0x4c, - 0x0e, 0xf1, 0x5a, 0xe3, 0xf9, 0xfc, 0xe7, 0x2a, 0x05, 0x9d, 0x7b, 0x6e, 0xbd, 0x3e, 0xff, 0xd1, 0x16, 0xb9, 0x2a, 0xff, - 0xf1, 0xbd, 0xa4, 0x0f, 0xab, 0x59, 0xdf, 0x31, 0xff, 0xfd, 0xe3, 0xf3, 0x5f, 0x5f, 0xcb, 0x37, 0x9a, 0x80, 0x48, 0x1d, - 0xf4, 0x99, 0xeb, 0xea, 0xd5, 0x2b, 0xbb, 0xf8, 0x75, 0x57, 0xf4, 0xfc, 0x3f, 0xfa, 0xfd, 0x99, 0x6f, 0x72, 0x75, 0xfe, - 0xdb, 0x30, 0xe1, 0x3d, 0x91, 0xd2, 0xf8, 0x1d, 0x90, 0x4c, 0xcd, 0xab, 0x6b, 0xf2, 0xdf, 0x42, 0x33, 0x06, 0xc6, 0xcf, - 0xf3, 0x77, 0xcf, 0x7f, 0xf5, 0xb5, 0x41, 0xf4, 0x8e, 0x41, 0xf5, 0x3a, 0xde, 0xef, 0xfa, 0xbf, 0x17, 0xf4, 0x12, 0x77, - 0xe4, 0x3f, 0xdb, 0x3e, 0xd1, 0x34, 0xc5, 0xf2, 0x3f, 0x7f, 0x76, 0x8f, 0xcd, 0x26, 0x10, 0x5b, 0xf6, 0xde, 0xfc, 0xd7, - 0xd6, 0x4f, 0x5d, 0xbf, 0x57, 0xfc, 0xa6, 0xfc, 0x47, 0xaf, 0xff, 0xe7, 0xaf, 0xb8, 0xee, 0x95, 0xff, 0x36, 0x31, 0x3f, - 0xcf, 0xd9, 0xf9, 0x1f, 0x55, 0x5b, 0x7d, 0x5b, 0xfe, 0xa3, 0xd9, 0x8a, 0xce, 0x67, 0xd4, 0xc2, 0x67, 0xba, 0xb7, 0x9f, - 0xff, 0xdb, 0x4b, 0xf3, 0x1f, 0x9f, 0x5f, 0xe6, 0x59, 0xf9, 0xaf, 0xee, 0x35, 0x5c, 0x5f, 0x57, 0x2f, 0x7a, 0xb7, 0x31, - 0x7e, 0x97, 0xf2, 0xdd, 0xfd, 0xff, 0xbe, 0xa1, 0x17, 0x9e, 0x7d, 0xfe, 0x7f, 0x55, 0xfe, 0x77, 0x3d, 0xff, 0x6b, 0xd3, - 0x73, 0xfe, 0xed, 0x5a, 0x2b, 0xf9, 0xaf, 0xce, 0x7f, 0xe5, 0xdc, 0x89, 0x6b, 0xff, 0xa2, 0xfa, 0xfd, 0x9f, 0xfa, 0x3b, - 0x69, 0xfb, 0xdf, 0xff, 0xd9, 0xd3, 0x3e, 0x6d, 0x6a, 0xc6, 0xb4, 0xf5, 0xbf, 0xda, 0x26, 0x67, 0x35, 0x8e, 0xad, 0x73, - 0xfd, 0xdb, 0x37, 0x77, 0xcf, 0x7f, 0xec, 0x6d, 0x83, 0xe8, 0x6f, 0xc6, 0x7f, 0xe3, 0x3e, 0x73, 0x81, 0x7d, 0xe6, 0x5b, - 0x94, 0x5a, 0xa1, 0xba, 0x85, 0xb4, 0x2a, 0x8e, 0x00, 0xef, 0x7a, 0xcf, 0x7c, 0xd7, 0xbf, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbc, 0xd1, 0x2b, 0xb3, 0x35, 0xb7, 0xff, 0xfc, 0x69, 0x0f, 0x8d, 0x77, - 0xed, 0xc9, 0xdf, 0xeb, 0xcb, 0x75, 0x30, 0xd6, 0xc6, 0x9d, 0x56, 0xd4, 0x60, 0xa8, 0xae, 0x23, 0x35, 0x6e, 0x97, 0xd9, - 0x2d, 0x3d, 0x1e, 0x49, 0xbc, 0xba, 0x87, 0x44, 0xc6, 0xf5, 0x64, 0x2a, 0xea, 0x64, 0xe6, 0x12, 0x88, 0x57, 0x42, 0x6c, - 0x8b, 0x9f, 0x1a, 0xdb, 0x6a, 0x91, 0xf1, 0xe1, 0x3b, 0xf3, 0x1f, 0xab, 0x2d, 0x79, 0x45, 0xa5, 0xb5, 0xf8, 0xde, 0x54, - 0xbb, 0x86, 0xf5, 0xad, 0x32, 0xb7, 0xb6, 0xb9, 0x9f, 0x67, 0xc6, 0xf4, 0xe7, 0x6a, 0x0f, 0xac, 0xb6, 0x44, 0x9f, 0xaa, - 0x96, 0xb2, 0xfa, 0x9b, 0x3f, 0xff, 0xde, 0xf1, 0xb2, 0x3e, 0x55, 0x39, 0x62, 0xed, 0x53, 0xbf, 0xff, 0xb7, 0xfb, 0x2a, - 0x27, 0xbc, 0x23, 0xff, 0x2d, 0x70, 0x94, 0x3d, 0x37, 0xff, 0xf1, 0xe3, 0x54, 0x2b, 0xac, 0xd2, 0xb3, 0x3e, 0x37, 0x46, - 0x64, 0xe4, 0x6e, 0xbe, 0x46, 0xd0, 0x19, 0x15, 0x35, 0xfe, 0xcc, 0xd7, 0xca, 0x56, 0x9b, 0x4b, 0xff, 0xf7, 0xc7, 0xb8, - 0x76, 0xd0, 0xdb, 0x9a, 0xcd, 0x7f, 0x0f, 0xd4, 0x1e, 0xa9, 0xa9, 0xc8, 0xf7, 0x9c, 0xfc, 0xcf, 0x5c, 0x6d, 0x9c, 0x97, - 0xff, 0xf1, 0xcf, 0xeb, 0xaa, 0x6a, 0x57, 0xd6, 0xda, 0x19, 0xd5, 0x5a, 0x6e, 0xa1, 0x2d, 0xd2, 0x83, 0xc7, 0x95, 0x5e, - 0x5c, 0xcf, 0xbc, 0x7f, 0xf9, 0x7f, 0xf6, 0x4c, 0x3d, 0x9b, 0xff, 0xd5, 0xbf, 0x78, 0x4d, 0xff, 0x7f, 0x65, 0x7f, 0x79, - 0x52, 0xfe, 0xdb, 0x54, 0x2d, 0xb2, 0x7b, 0x9f, 0xff, 0x2b, 0x6b, 0x6a, 0xd5, 0xe7, 0x3f, 0x96, 0xf0, 0xc8, 0xfe, 0x3e, - 0x3f, 0xe3, 0xc1, 0xda, 0x76, 0x1b, 0xf7, 0xf2, 0x7b, 0xa2, 0xff, 0x9f, 0xcf, 0x7f, 0x5d, 0x9f, 0x67, 0xed, 0xea, 0xf9, - 0x8a, 0xfc, 0xf7, 0x44, 0x65, 0xf4, 0xfd, 0xd7, 0xff, 0xa3, 0x7e, 0x62, 0xb4, 0x55, 0xea, 0xe7, 0xa6, 0xaa, 0xac, 0xb6, - 0xbd, 0x9a, 0xff, 0xcc, 0xf9, 0x3f, 0x7a, 0x1f, 0x22, 0xd3, 0x43, 0x5c, 0xbb, 0x1e, 0xcf, 0x1f, 0x01, 0xd6, 0xfa, 0xff, - 0x67, 0xdc, 0xff, 0xef, 0xa7, 0x5d, 0xff, 0xb7, 0xd4, 0x2c, 0x46, 0x95, 0xfd, 0xff, 0x96, 0xe8, 0x65, 0x66, 0x8e, 0x36, - 0x91, 0xd6, 0x5e, 0x6f, 0xb3, 0x2b, 0xcf, 0xff, 0xb9, 0xd9, 0xe6, 0xda, 0xb6, 0x7a, 0xa7, 0x91, 0xfe, 0xff, 0x9e, 0x14, - 0x56, 0xfc, 0xc5, 0xca, 0xeb, 0xff, 0xeb, 0xe7, 0x66, 0xc8, 0xe4, 0xff, 0xac, 0xde, 0xd3, 0xfe, 0x6f, 0x5e, 0x5b, 0x47, - 0xfa, 0x0e, 0xd7, 0xff, 0x91, 0xfb, 0xff, 0xd1, 0x9a, 0xc7, 0xe3, 0xb3, 0x71, 0xff, 0xf1, 0x0a, 0xff, 0xcc, 0xb3, 0xf1, - 0xf9, 0x47, 0x9c, 0xda, 0xeb, 0x7f, 0xf9, 0xdf, 0xf3, 0xdd, 0x2b, 0x6b, 0xe7, 0xee, 0xce, 0xff, 0x5c, 0xcf, 0x2a, 0x36, - 0x23, 0x62, 0x6e, 0xc6, 0xe4, 0xe8, 0x35, 0x5d, 0x3b, 0x75, 0x4f, 0x6f, 0x17, 0xf4, 0xfe, 0xab, 0x67, 0xe4, 0x79, 0xe7, - 0xfb, 0x50, 0xef, 0xf8, 0x06, 0x67, 0x1c, 0xcf, 0x7b, 0x61, 0xcf, 0x34, 0x7f, 0xff, 0x2f, 0x7e, 0xb4, 0x6a, 0x17, 0xd4, - 0x20, 0x3e, 0xfb, 0x2f, 0xc6, 0x9f, 0x56, 0x20, 0xff, 0x6b, 0xf9, 0xdf, 0xdf, 0x4b, 0xaa, 0x7a, 0x87, 0xe1, 0xd3, 0xf6, - 0x14, 0x2d, 0xf3, 0x29, 0xdb, 0x75, 0xfd, 0x4e, 0xef, 0x5b, 0x5a, 0xc2, 0x3e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x6b, 0xf4, 0x4f, 0xac, 0x9a, 0xc2, 0x6c, 0x2d, 0xab, 0xbe, 0x30, 0x3a, 0xb3, 0x0d, - 0xeb, 0x33, 0x67, 0x3f, 0xe7, 0xeb, 0xcc, 0x05, 0x7d, 0xf0, 0x2f, 0x5a, 0x60, 0x4d, 0x7b, 0x78, 0xac, 0xf1, 0xfa, 0x3c, - 0x0c, 0x5f, 0xd7, 0xb8, 0x25, 0x5a, 0x64, 0x3c, 0x92, 0x77, 0x7d, 0xc6, 0x86, 0xbd, 0xdf, 0xb9, 0xa6, 0x22, 0x7a, 0xa4, - 0xb6, 0xdf, 0x6c, 0x85, 0x92, 0xb3, 0x5b, 0x25, 0x33, 0x62, 0xbb, 0x05, 0x8e, 0x0d, 0xa3, 0x7a, 0x42, 0x2b, 0xb5, 0xba, - 0xd6, 0x8e, 0x4f, 0x73, 0x55, 0xf8, 0xd6, 0xc7, 0xa5, 0xcf, 0xd5, 0xf0, 0x6c, 0x1b, 0xeb, 0x5e, 0xaf, 0xef, 0xed, 0xf1, - 0xa4, 0xe4, 0x96, 0xce, 0x8d, 0xc7, 0xdf, 0xf1, 0x9d, 0xe3, 0x35, 0x6b, 0xe7, 0x3f, 0x27, 0x73, 0xf6, 0x1b, 0xa7, 0x74, - 0x4f, 0xab, 0xc4, 0xd2, 0x9f, 0xa9, 0x08, 0xb3, 0x9e, 0xff, 0x9a, 0xf5, 0x1e, 0xcf, 0x89, 0x10, 0x9b, 0x65, 0x63, 0xa6, - 0x86, 0xf7, 0xfb, 0xaa, 0x07, 0xe4, 0xf3, 0xff, 0xa9, 0x35, 0x17, 0x9e, 0xd4, 0x02, 0x7d, 0x31, 0x61, 0x33, 0xbd, 0xf8, - 0x9a, 0xfc, 0x8f, 0xe7, 0x4a, 0x3a, 0x3f, 0xff, 0x3d, 0xf4, 0x09, 0xf1, 0x9e, 0xdb, 0x1d, 0x97, 0xe6, 0xf2, 0x3f, 0xde, - 0x83, 0xf6, 0x2c, 0xad, 0x9a, 0x29, 0x29, 0x57, 0x87, 0xbc, 0x05, 0xaf, 0x1e, 0x32, 0x4b, 0x23, 0xb5, 0x11, 0x7a, 0xe8, - 0x6a, 0x64, 0xcf, 0xf9, 0x3f, 0x7f, 0xfd, 0x3f, 0xdf, 0x6f, 0x8b, 0xdf, 0x3f, 0xc8, 0xec, 0x4b, 0x3b, 0xfa, 0xe1, 0x67, - 0x2c, 0x8d, 0xd4, 0x86, 0xbb, 0x6a, 0xe9, 0xee, 0xfc, 0xf7, 0xdf, 0xe6, 0x4a, 0x3c, 0x4a, 0xd4, 0xfa, 0xd1, 0x21, 0x77, - 0x64, 0xd9, 0xdb, 0xd7, 0x59, 0xbd, 0xff, 0xb7, 0xba, 0x96, 0x75, 0x73, 0x99, 0x45, 0xab, 0x52, 0x7e, 0xfd, 0xfd, 0xba, - 0xf3, 0xff, 0xbe, 0xad, 0xbe, 0x77, 0x69, 0xe6, 0xee, 0xde, 0x5b, 0xf3, 0x3f, 0xd7, 0x6e, 0xef, 0xc8, 0xff, 0xb8, 0x7e, - 0x6b, 0x2f, 0xba, 0x4f, 0x71, 0xc6, 0x37, 0x9a, 0xad, 0xc0, 0x9f, 0x9b, 0x63, 0xf6, 0x4d, 0xf9, 0x6f, 0x45, 0xfd, 0xff, - 0x33, 0x97, 0xde, 0xa3, 0xff, 0xdf, 0x5f, 0x90, 0xff, 0xec, 0x73, 0x9d, 0x8a, 0x19, 0x8e, 0xcf, 0xce, 0x7f, 0xf6, 0x98, - 0x78, 0xaf, 0x6b, 0xe1, 0xec, 0xd2, 0x6c, 0xfe, 0x3f, 0xf5, 0xfc, 0xff, 0x86, 0xfc, 0xe7, 0x9f, 0x65, 0xaf, 0xdc, 0xff, - 0x3b, 0xef, 0x1d, 0x88, 0xbe, 0x31, 0xff, 0xed, 0x43, 0xcf, 0xff, 0x35, 0xf3, 0xca, 0x3f, 0x2d, 0xff, 0x33, 0x77, 0x99, - 0x9e, 0x9a, 0xff, 0x8a, 0x8c, 0x54, 0xdd, 0xff, 0xaf, 0x7f, 0x0b, 0x6a, 0x67, 0x75, 0xfa, 0xe7, 0x25, 0x7c, 0x9c, 0xff, - 0xc8, 0xfb, 0x3f, 0xef, 0xce, 0xff, 0xdc, 0xbb, 0x31, 0xcf, 0xce, 0x7f, 0x4f, 0xce, 0x4a, 0xf3, 0xce, 0xe7, 0xc3, 0xb1, - 0x39, 0xa6, 0x9f, 0x97, 0xff, 0xfc, 0x3b, 0x65, 0x6f, 0x7d, 0xfe, 0x97, 0x7b, 0x3b, 0xe0, 0x9a, 0xe7, 0x7f, 0x77, 0x7a, - 0xaf, 0x84, 0xb7, 0xbf, 0x55, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0xec, - 0xeb, 0xea, 0x88, 0x9d, 0xb9, 0x71, 0x62, 0xd7, 0x54, 0xbe, 0x8f, 0xd4, 0x29, 0x98, 0x59, 0x9f, 0x78, 0xf5, 0x83, 0x48, - 0xad, 0xfd, 0xa3, 0x6d, 0x13, 0xad, 0x38, 0x9e, 0xa9, 0x64, 0xb4, 0xeb, 0x3b, 0xae, 0xd7, 0x84, 0x9f, 0xff, 0x0b, 0x73, - 0x95, 0x1f, 0x63, 0xb9, 0xb8, 0xfb, 0xb6, 0x9e, 0x1b, 0xa5, 0xb9, 0xb3, 0x4e, 0x7c, 0x4f, 0xd6, 0x34, 0xaf, 0x5f, 0xab, - 0x6c, 0x95, 0xfe, 0xd8, 0x3a, 0x47, 0x5a, 0xb8, 0x27, 0xe6, 0x61, 0x69, 0x13, 0x7b, 0x52, 0x75, 0x75, 0x9f, 0xcc, 0xbc, - 0x1c, 0xf3, 0x47, 0xe4, 0xca, 0x8a, 0xfd, 0x2d, 0x51, 0xad, 0xff, 0x2e, 0xdb, 0xfa, 0xda, 0xf1, 0xb4, 0xe3, 0x75, 0x7e, - 0xce, 0x78, 0xdf, 0xb9, 0xd1, 0xe3, 0xcf, 0xf8, 0x36, 0x33, 0xc7, 0xb2, 0xf5, 0xea, 0x3c, 0xef, 0xac, 0xd9, 0xf0, 0xd9, - 0x63, 0x95, 0xb3, 0x95, 0x05, 0x46, 0xc7, 0xba, 0xe7, 0x54, 0xaf, 0xca, 0xd5, 0xbd, 0x9a, 0x69, 0xc5, 0xb3, 0x96, 0x1d, - 0xf9, 0x2b, 0x30, 0x0f, 0xdb, 0x95, 0xdf, 0x71, 0x7f, 0xc5, 0x8e, 0xe3, 0x5a, 0x22, 0xf7, 0xde, 0xd6, 0xd9, 0x1a, 0x59, - 0xd9, 0x4a, 0x30, 0xd1, 0xf3, 0xff, 0x53, 0xf3, 0x3f, 0x9a, 0x8b, 0xe0, 0xe7, 0x59, 0xc9, 0xce, 0x5b, 0x56, 0x31, 0x93, - 0xc1, 0xea, 0x15, 0xd0, 0x8e, 0x65, 0x57, 0x56, 0xec, 0x3a, 0xfb, 0xbb, 0xc6, 0xdb, 0xa8, 0xaa, 0x9f, 0x18, 0x9d, 0xb3, - 0x64, 0xb4, 0xec, 0xd3, 0xce, 0xff, 0xfd, 0xf2, 0x65, 0xf3, 0x47, 0xb1, 0xbb, 0xef, 0xdb, 0xfb, 0x67, 0xec, 0x78, 0x42, - 0xc6, 0x33, 0xb3, 0x4b, 0xed, 0xcc, 0xff, 0x3d, 0xeb, 0x1d, 0xf7, 0xd4, 0xb9, 0x31, 0x5b, 0xab, 0xef, 0x3e, 0xb9, 0xc9, - 0xcc, 0x64, 0x1c, 0x9b, 0xbf, 0xb9, 0x7a, 0x99, 0xfc, 0xdf, 0x3b, 0xff, 0x73, 0xf7, 0x56, 0xee, 0x57, 0xbd, 0x32, 0x3b, - 0x4b, 0xef, 0xfb, 0xfb, 0x8b, 0x7d, 0xc3, 0xd3, 0x9a, 0xba, 0xe7, 0x89, 0xf2, 0x7f, 0x97, 0xfe, 0xbf, 0xfc, 0xbf, 0x6f, - 0x7f, 0xe9, 0xa9, 0x4a, 0xe6, 0xfa, 0xff, 0xf2, 0xff, 0xe6, 0xfc, 0xf7, 0x47, 0x5c, 0xff, 0xef, 0xda, 0x5f, 0xde, 0x76, - 0xff, 0x3f, 0xfa, 0xb4, 0xf7, 0x29, 0xcf, 0x7a, 0xce, 0x78, 0xfe, 0xb7, 0xe7, 0x93, 0x77, 0x56, 0x43, 0x7f, 0xff, 0xf3, - 0xde, 0xa7, 0xd4, 0x83, 0xe7, 0xed, 0xfb, 0xa1, 0x36, 0x00, 0xf9, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x76, 0xbe, 0xa9, 0x7f, 0x66, 0xc5, 0xf7, 0xc8, 0xa8, 0xcf, 0xb9, 0xcf, 0x04, 0x62, 0x23, 0x75, 0xce, - 0xac, 0xf8, 0x9e, 0x1f, 0x9d, 0x6f, 0x5b, 0xc2, 0xfb, 0xc6, 0x8a, 0xcb, 0x36, 0xec, 0x49, 0x55, 0x7f, 0x48, 0x15, 0xa4, - 0x77, 0xcc, 0xcd, 0x01, 0xf2, 0xff, 0x94, 0x0a, 0x69, 0x20, 0xff, 0xf2, 0x0f, 0xf2, 0x2f, 0xff, 0x20, 0xff, 0xf2, 0x0f, - 0x6f, 0xbf, 0xff, 0x7f, 0xa7, 0x99, 0x6b, 0xf6, 0xd5, 0x29, 0x06, 0xcf, 0xfe, 0x63, 0x47, 0x87, 0xea, 0x65, 0x6d, 0x78, - 0xdc, 0xf0, 0x8c, 0x10, 0xce, 0xca, 0xff, 0x35, 0xcf, 0xf8, 0x57, 0xf3, 0xaf, 0xff, 0x0f, 0x6f, 0xba, 0x1a, 0x89, 0xbc, - 0xff, 0x27, 0xfd, 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, 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, - 0x70, 0x95, 0x7f, 0xff, 0xd3, 0x0e, 0x20, 0xff, 0xc0, 0xc7, 0xe5, 0xff, 0x6f }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle sunnyFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 2 , 10 }, - { 26, 4, 5 , 3 }, - { 39, 4, 7 , 10 }, - { 54, 4, 7 , 13 }, - { 69, 4, 7 , 10 }, - { 84, 4, 7 , 10 }, - { 99, 4, 2 , 3 }, - { 109, 4, 3 , 12 }, - { 120, 4, 3 , 12 }, - { 131, 4, 5 , 6 }, - { 144, 4, 6 , 5 }, - { 158, 4, 2 , 4 }, - { 168, 4, 5 , 1 }, - { 181, 4, 2 , 2 }, - { 191, 4, 4 , 10 }, - { 203, 4, 6 , 10 }, - { 217, 4, 4 , 10 }, - { 229, 4, 6 , 10 }, - { 243, 4, 6 , 10 }, - { 257, 4, 6 , 10 }, - { 271, 4, 6 , 10 }, - { 285, 4, 6 , 10 }, - { 299, 4, 6 , 10 }, - { 313, 4, 6 , 10 }, - { 327, 4, 6 , 10 }, - { 341, 4, 2 , 6 }, - { 351, 4, 2 , 8 }, - { 361, 4, 7 , 7 }, - { 376, 4, 5 , 3 }, - { 389, 4, 7 , 7 }, - { 404, 4, 6 , 10 }, - { 418, 4, 7 , 12 }, - { 433, 4, 7 , 10 }, - { 448, 4, 7 , 10 }, - { 463, 4, 7 , 10 }, - { 478, 4, 7 , 10 }, - { 493, 4, 7 , 10 }, - { 4, 28, 7 , 10 }, - { 19, 28, 7 , 10 }, - { 34, 28, 7 , 10 }, - { 49, 28, 2 , 10 }, - { 59, 28, 5 , 10 }, - { 72, 28, 7 , 10 }, - { 87, 28, 6 , 10 }, - { 101, 28, 9 , 10 }, - { 118, 28, 7 , 10 }, - { 133, 28, 7 , 10 }, - { 148, 28, 7 , 10 }, - { 163, 28, 7 , 12 }, - { 178, 28, 7 , 10 }, - { 193, 28, 7 , 10 }, - { 208, 28, 6 , 10 }, - { 222, 28, 7 , 10 }, - { 237, 28, 7 , 10 }, - { 252, 28, 8 , 10 }, - { 268, 28, 7 , 10 }, - { 283, 28, 6 , 10 }, - { 297, 28, 7 , 10 }, - { 312, 28, 4 , 12 }, - { 324, 28, 4 , 10 }, - { 336, 28, 4 , 12 }, - { 348, 28, 6 , 3 }, - { 362, 28, 7 , 1 }, - { 377, 28, 4 , 3 }, - { 389, 28, 6 , 7 }, - { 403, 28, 6 , 10 }, - { 417, 28, 6 , 7 }, - { 431, 28, 6 , 10 }, - { 445, 28, 6 , 7 }, - { 459, 28, 4 , 10 }, - { 471, 28, 6 , 9 }, - { 485, 28, 6 , 10 }, - { 499, 28, 2 , 10 }, - { 4, 52, 5 , 12 }, - { 17, 52, 6 , 10 }, - { 31, 52, 3 , 10 }, - { 42, 52, 8 , 7 }, - { 58, 52, 6 , 7 }, - { 72, 52, 6 , 7 }, - { 86, 52, 6 , 9 }, - { 100, 52, 6 , 9 }, - { 114, 52, 5 , 7 }, - { 127, 52, 6 , 7 }, - { 141, 52, 4 , 10 }, - { 153, 52, 6 , 7 }, - { 167, 52, 6 , 7 }, - { 181, 52, 8 , 7 }, - { 197, 52, 6 , 7 }, - { 211, 52, 6 , 9 }, - { 225, 52, 6 , 7 }, - { 239, 52, 5 , 12 }, - { 252, 52, 2 , 12 }, - { 262, 52, 5 , 12 }, - { 275, 52, 7 , 3 }, - { 290, 52, 2 , 9 }, - { 300, 52, 6 , 11 }, - { 314, 52, 7 , 10 }, - { 329, 52, 7 , 9 }, - { 344, 52, 6 , 10 }, - { 358, 52, 7 , 11 }, - { 373, 52, 6 , 12 }, - { 387, 52, 6 , 10 }, - { 401, 52, 7 , 10 }, - { 416, 52, 5 , 5 }, - { 429, 52, 7 , 6 }, - { 444, 52, 6 , 3 }, - { 458, 52, 7 , 10 }, - { 473, 52, 0 , 0 }, - { 481, 52, 4 , 4 }, - { 493, 52, 6 , 7 }, - { 4, 76, 4 , 5 }, - { 16, 76, 4 , 5 }, - { 28, 76, 7 , 11 }, - { 43, 76, 6 , 9 }, - { 57, 76, 7 , 12 }, - { 72, 76, 2 , 2 }, - { 82, 76, 6 , 10 }, - { 96, 76, 3 , 5 }, - { 107, 76, 4 , 5 }, - { 119, 76, 7 , 6 }, - { 134, 76, 9 , 10 }, - { 151, 76, 8 , 7 }, - { 167, 76, 6 , 11 }, - { 181, 76, 6 , 11 }, - { 195, 76, 7 , 11 }, - { 210, 76, 7 , 11 }, - { 225, 76, 7 , 11 }, - { 240, 76, 7 , 11 }, - { 255, 76, 7 , 11 }, - { 270, 76, 7 , 11 }, - { 285, 76, 9 , 10 }, - { 302, 76, 7 , 12 }, - { 317, 76, 7 , 11 }, - { 332, 76, 7 , 11 }, - { 347, 76, 7 , 11 }, - { 362, 76, 7 , 11 }, - { 377, 76, 3 , 11 }, - { 388, 76, 3 , 11 }, - { 399, 76, 5 , 11 }, - { 412, 76, 5 , 11 }, - { 425, 76, 8 , 10 }, - { 441, 76, 7 , 11 }, - { 456, 76, 7 , 11 }, - { 471, 76, 7 , 11 }, - { 486, 76, 7 , 11 }, - { 4, 100, 7 , 11 }, - { 19, 100, 7 , 11 }, - { 34, 100, 7 , 7 }, - { 49, 100, 7 , 13 }, - { 64, 100, 7 , 11 }, - { 79, 100, 7 , 11 }, - { 94, 100, 7 , 11 }, - { 109, 100, 7 , 11 }, - { 124, 100, 6 , 11 }, - { 138, 100, 7 , 10 }, - { 153, 100, 7 , 10 }, - { 168, 100, 6 , 10 }, - { 182, 100, 6 , 10 }, - { 196, 100, 6 , 10 }, - { 210, 100, 6 , 10 }, - { 224, 100, 6 , 10 }, - { 238, 100, 6 , 11 }, - { 252, 100, 8 , 7 }, - { 268, 100, 6 , 9 }, - { 282, 100, 6 , 10 }, - { 296, 100, 6 , 10 }, - { 310, 100, 6 , 10 }, - { 324, 100, 6 , 10 }, - { 338, 100, 3 , 10 }, - { 349, 100, 3 , 10 }, - { 360, 100, 5 , 10 }, - { 373, 100, 5 , 10 }, - { 386, 100, 6 , 10 }, - { 400, 100, 6 , 10 }, - { 414, 100, 6 , 10 }, - { 428, 100, 6 , 10 }, - { 442, 100, 6 , 10 }, - { 456, 100, 6 , 10 }, - { 470, 100, 6 , 10 }, - { 484, 100, 6 , 7 }, - { 4, 124, 7 , 11 }, - { 19, 124, 6 , 10 }, - { 33, 124, 6 , 10 }, - { 47, 124, 6 , 10 }, - { 61, 124, 6 , 10 }, - { 75, 124, 6 , 12 }, - { 89, 124, 6 , 12 }, - { 103, 124, 6 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo sunnyFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 0, 2, 3, { 0 }}, - { 34, 0, 2, 6, { 0 }}, - { 35, 0, 2, 8, { 0 }}, - { 36, 0, 1, 8, { 0 }}, - { 37, 0, 2, 8, { 0 }}, - { 38, 0, 2, 8, { 0 }}, - { 39, 0, 2, 3, { 0 }}, - { 40, 0, 2, 4, { 0 }}, - { 41, 0, 2, 4, { 0 }}, - { 42, 0, 4, 6, { 0 }}, - { 43, 0, 6, 7, { 0 }}, - { 44, 0, 10, 3, { 0 }}, - { 45, 0, 8, 6, { 0 }}, - { 46, 0, 10, 3, { 0 }}, - { 47, 0, 2, 5, { 0 }}, - { 48, 0, 2, 7, { 0 }}, - { 49, 0, 2, 7, { 0 }}, - { 50, 0, 2, 7, { 0 }}, - { 51, 0, 2, 7, { 0 }}, - { 52, 0, 2, 7, { 0 }}, - { 53, 0, 2, 7, { 0 }}, - { 54, 0, 2, 7, { 0 }}, - { 55, 0, 2, 7, { 0 }}, - { 56, 0, 2, 7, { 0 }}, - { 57, 0, 2, 7, { 0 }}, - { 58, 0, 4, 3, { 0 }}, - { 59, 0, 4, 3, { 0 }}, - { 60, 0, 4, 8, { 0 }}, - { 61, 0, 6, 6, { 0 }}, - { 62, 0, 4, 8, { 0 }}, - { 63, 0, 2, 7, { 0 }}, - { 64, 0, 2, 8, { 0 }}, - { 65, 0, 2, 8, { 0 }}, - { 66, 0, 2, 8, { 0 }}, - { 67, 0, 2, 8, { 0 }}, - { 68, 0, 2, 8, { 0 }}, - { 69, 0, 2, 8, { 0 }}, - { 70, 0, 2, 8, { 0 }}, - { 71, 0, 2, 8, { 0 }}, - { 72, 0, 2, 8, { 0 }}, - { 73, 0, 2, 3, { 0 }}, - { 74, 0, 2, 6, { 0 }}, - { 75, 0, 2, 8, { 0 }}, - { 76, 0, 2, 7, { 0 }}, - { 77, 0, 2, 10, { 0 }}, - { 78, 0, 2, 8, { 0 }}, - { 79, 0, 2, 8, { 0 }}, - { 80, 0, 2, 8, { 0 }}, - { 81, 0, 2, 8, { 0 }}, - { 82, 0, 2, 8, { 0 }}, - { 83, 0, 2, 8, { 0 }}, - { 84, 0, 2, 7, { 0 }}, - { 85, 0, 2, 8, { 0 }}, - { 86, 0, 2, 8, { 0 }}, - { 87, 0, 2, 9, { 0 }}, - { 88, 0, 2, 8, { 0 }}, - { 89, 0, 2, 7, { 0 }}, - { 90, 0, 2, 8, { 0 }}, - { 91, 0, 2, 5, { 0 }}, - { 92, 0, 2, 5, { 0 }}, - { 93, 0, 2, 5, { 0 }}, - { 94, 0, 2, 7, { 0 }}, - { 95, 0, 14, 8, { 0 }}, - { 96, 0, 2, 5, { 0 }}, - { 97, 0, 5, 7, { 0 }}, - { 98, 0, 2, 7, { 0 }}, - { 99, 0, 5, 7, { 0 }}, - { 100, 0, 2, 7, { 0 }}, - { 101, 0, 5, 7, { 0 }}, - { 102, 0, 2, 5, { 0 }}, - { 103, 0, 5, 7, { 0 }}, - { 104, 0, 2, 7, { 0 }}, - { 105, 0, 2, 3, { 0 }}, - { 106, 0, 2, 6, { 0 }}, - { 107, 0, 2, 7, { 0 }}, - { 108, 0, 2, 4, { 0 }}, - { 109, 0, 5, 9, { 0 }}, - { 110, 0, 5, 7, { 0 }}, - { 111, 0, 5, 7, { 0 }}, - { 112, 0, 5, 7, { 0 }}, - { 113, 0, 5, 7, { 0 }}, - { 114, 0, 5, 6, { 0 }}, - { 115, 0, 5, 7, { 0 }}, - { 116, 0, 2, 5, { 0 }}, - { 117, 0, 5, 7, { 0 }}, - { 118, 0, 5, 7, { 0 }}, - { 119, 0, 5, 9, { 0 }}, - { 120, 0, 5, 7, { 0 }}, - { 121, 0, 5, 7, { 0 }}, - { 122, 0, 5, 7, { 0 }}, - { 123, 0, 2, 6, { 0 }}, - { 124, 0, 2, 3, { 0 }}, - { 125, 0, 2, 6, { 0 }}, - { 126, 0, 6, 8, { 0 }}, - { 161, 0, 5, 3, { 0 }}, - { 162, 0, 3, 7, { 0 }}, - { 163, 0, 2, 8, { 0 }}, - { 8364, 0, 3, 8, { 0 }}, - { 165, 0, 2, 7, { 0 }}, - { 352, 0, 1, 8, { 0 }}, - { 167, 0, 2, 7, { 0 }}, - { 353, 0, 2, 7, { 0 }}, - { 169, 0, 2, 8, { 0 }}, - { 170, 0, 2, 6, { 0 }}, - { 171, 0, 6, 8, { 0 }}, - { 172, 0, 7, 7, { 0 }}, - { 174, 0, 2, 8, { 0 }}, - { 175, 0, 0, 0, { 0 }}, - { 176, 0, 2, 5, { 0 }}, - { 177, 0, 4, 7, { 0 }}, - { 178, 0, 2, 5, { 0 }}, - { 179, 0, 2, 5, { 0 }}, - { 381, 0, 1, 8, { 0 }}, - { 181, 0, 5, 7, { 0 }}, - { 182, 0, 2, 8, { 0 }}, - { 183, 0, 6, 3, { 0 }}, - { 382, 0, 2, 7, { 0 }}, - { 185, 0, 2, 4, { 0 }}, - { 186, 0, 2, 5, { 0 }}, - { 187, 0, 6, 8, { 0 }}, - { 338, 0, 2, 10, { 0 }}, - { 339, 0, 5, 9, { 0 }}, - { 376, 0, 1, 7, { 0 }}, - { 191, 0, 3, 7, { 0 }}, - { 192, 0, 1, 8, { 0 }}, - { 193, 0, 1, 8, { 0 }}, - { 194, 0, 1, 8, { 0 }}, - { 195, 0, 1, 8, { 0 }}, - { 196, 0, 1, 8, { 0 }}, - { 197, 0, 1, 8, { 0 }}, - { 198, 0, 2, 10, { 0 }}, - { 199, 0, 2, 8, { 0 }}, - { 200, 0, 1, 8, { 0 }}, - { 201, 0, 1, 8, { 0 }}, - { 202, 0, 1, 8, { 0 }}, - { 203, 0, 1, 8, { 0 }}, - { 204, 0, 1, 4, { 0 }}, - { 205, 0, 1, 4, { 0 }}, - { 206, 0, 1, 6, { 0 }}, - { 207, 0, 1, 6, { 0 }}, - { 208, 0, 2, 9, { 0 }}, - { 209, 0, 1, 8, { 0 }}, - { 210, 0, 1, 8, { 0 }}, - { 211, 0, 1, 8, { 0 }}, - { 212, 0, 1, 8, { 0 }}, - { 213, 0, 1, 8, { 0 }}, - { 214, 0, 1, 8, { 0 }}, - { 215, 0, 5, 8, { 0 }}, - { 216, 0, 1, 8, { 0 }}, - { 217, 0, 1, 8, { 0 }}, - { 218, 0, 1, 8, { 0 }}, - { 219, 0, 1, 8, { 0 }}, - { 220, 0, 1, 8, { 0 }}, - { 221, 0, 1, 7, { 0 }}, - { 222, 0, 2, 8, { 0 }}, - { 223, 0, 2, 8, { 0 }}, - { 224, 0, 2, 7, { 0 }}, - { 225, 0, 2, 7, { 0 }}, - { 226, 0, 2, 7, { 0 }}, - { 227, 0, 2, 7, { 0 }}, - { 228, 0, 2, 7, { 0 }}, - { 229, 0, 1, 7, { 0 }}, - { 230, 0, 5, 9, { 0 }}, - { 231, 0, 5, 7, { 0 }}, - { 232, 0, 2, 7, { 0 }}, - { 233, 0, 2, 7, { 0 }}, - { 234, 0, 2, 7, { 0 }}, - { 235, 0, 2, 7, { 0 }}, - { 236, 0, 2, 4, { 0 }}, - { 237, 0, 2, 4, { 0 }}, - { 238, 0, 2, 6, { 0 }}, - { 239, 0, 2, 6, { 0 }}, - { 240, 0, 2, 7, { 0 }}, - { 241, 0, 2, 7, { 0 }}, - { 242, 0, 2, 7, { 0 }}, - { 243, 0, 2, 7, { 0 }}, - { 244, 0, 2, 7, { 0 }}, - { 245, 0, 2, 7, { 0 }}, - { 246, 0, 2, 7, { 0 }}, - { 247, 0, 4, 7, { 0 }}, - { 248, 0, 3, 8, { 0 }}, - { 249, 0, 2, 7, { 0 }}, - { 250, 0, 2, 7, { 0 }}, - { 251, 0, 2, 7, { 0 }}, - { 252, 0, 2, 7, { 0 }}, - { 253, 0, 2, 7, { 0 }}, - { 254, 0, 2, 7, { 0 }}, - { 255, 0, 2, 7, { 0 }}, -}; - -// Style loading function: Sunny -static void GuiLoadStyleSunny(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < SUNNY_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(sunnyStyleProps[i].controlId, sunnyStyleProps[i].propertyId, sunnyStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int sunnyFontDataSize = 0; - unsigned char *data = DecompressData(sunnyFontData, SUNNY_STYLE_FONT_ATLAS_COMP_SIZE, &sunnyFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, sunnyFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, sunnyFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.png deleted file mode 100644 index f826847..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.rgs deleted file mode 100644 index 5a53c50..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.txt.rgs deleted file mode 100644 index 4743798..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/sunny/style_sunny.txt.rgs +++ /dev/null @@ -1,43 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 16 charset.txt GenericMobileSystemNuevo.ttf -p 00 00 0x9c760aff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0x594006ff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0xf6d519ff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0xf6ee89ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0xf5f3d1ff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0xf4cd19ff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0xf7e580ff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0xf7f2c1ff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0x52470aff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0xc0be92ff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0xd3d3a1ff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0xbcbc89ff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x00000010 TEXT_SIZE -p 00 17 0x00000000 TEXT_SPACING -p 00 18 0x725706ff LINE_COLOR -p 00 19 0xf0be4bff BACKGROUND_COLOR -p 00 20 0x00000018 TEXT_LINE_SPACING -p 01 02 0x504506ff LABEL_TEXT_COLOR_NORMAL -p 01 05 0xfdeb9bff LABEL_TEXT_COLOR_FOCUSED -p 01 08 0xf5e8a4ff LABEL_TEXT_COLOR_PRESSED -p 02 02 0xebc21fff BUTTON_TEXT_COLOR_NORMAL -p 03 02 0xebc21fff TOGGLE_TEXT_COLOR_NORMAL -p 04 02 0x81700fff SLIDER_TEXT_COLOR_NORMAL -p 04 05 0xf4e49aff SLIDER_TEXT_COLOR_FOCUSED -p 07 02 0xebc21fff COMBOBOX_TEXT_COLOR_NORMAL -p 08 02 0xefd87bff DROPDOWNBOX_TEXT_COLOR_NORMAL -p 08 05 0xd4b219ff DROPDOWNBOX_TEXT_COLOR_FOCUSED -p 09 02 0x7a680bff TEXTBOX_TEXT_COLOR_NORMAL -p 09 05 0xad931fff TEXTBOX_TEXT_COLOR_FOCUSED -p 10 02 0x62570eff VALUEBOX_TEXT_COLOR_NORMAL -p 10 05 0xf2df88ff VALUEBOX_TEXT_COLOR_FOCUSED -p 12 02 0xf4e798ff LISTVIEW_TEXT_COLOR_NORMAL -p 15 02 0xebc21fff STATUSBAR_TEXT_COLOR_NORMAL diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/Mecha.ttf b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/Mecha.ttf deleted file mode 100644 index 928f63a..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/Mecha.ttf and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/README.md b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/README.md deleted file mode 100644 index a30bc1e..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## style: terminal - -Start your terminal and type your commands! Feel the connection the data flow, that's your style! - -![terminal style table](style_terminal.png) - -## style: provided files - -Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. - -| file name | description | -| :-------- | :---------- | -| `style_terminal.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | -| `style_terminal.txt.rgs` | Text style file, no font data, requires external font provided | -| `style_terminal.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | -| `style_terminal.h` | Embeddable style as code file, self-contained, includes font data | -| `style_terminal.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | - -## screenshot - -![terminal style screen](screenshot.png) - -## about font - -"Mecha" font by Captain Falcon. - -100% free font, downloaded from dafont.com: [mecha-cf](https://www.dafont.com/mecha-cf.font) diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/charset.txt b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/charset.txt deleted file mode 100644 index 611a673..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/charset.txt +++ /dev/null @@ -1 +0,0 @@ - !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/screenshot.old.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/screenshot.old.png deleted file mode 100644 index 55142e2..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/screenshot.old.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/screenshot.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/screenshot.png deleted file mode 100644 index 36d17a5..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/screenshot.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.h b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.h deleted file mode 100644 index d5e42f4..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.h +++ /dev/null @@ -1,569 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// // -// StyleAsCode exporter v2.0 - Style data exported as a values array // -// // -// USAGE: On init call: GuiLoadStyleTerminal(); // -// // -// more info and bugs-report: github.com/raysan5/raygui // -// feedback and support: ray[at]raylibtech.com // -// // -// Copyright (c) 2020-2025 raylib technologies (@raylibtech) // -// // -////////////////////////////////////////////////////////////////////////////////// - -#define TERMINAL_STYLE_PROPS_COUNT 17 - -// Custom style name: Terminal -static const GuiStyleProp terminalStyleProps[TERMINAL_STYLE_PROPS_COUNT] = { - { 0, 0, (int)0x1c8d00ff }, // DEFAULT_BORDER_COLOR_NORMAL - { 0, 1, (int)0x161313ff }, // DEFAULT_BASE_COLOR_NORMAL - { 0, 2, (int)0x38f620ff }, // DEFAULT_TEXT_COLOR_NORMAL - { 0, 3, (int)0xc3fbc6ff }, // DEFAULT_BORDER_COLOR_FOCUSED - { 0, 4, (int)0x43bf2eff }, // DEFAULT_BASE_COLOR_FOCUSED - { 0, 5, (int)0xdcfadcff }, // DEFAULT_TEXT_COLOR_FOCUSED - { 0, 6, (int)0x1f5b19ff }, // DEFAULT_BORDER_COLOR_PRESSED - { 0, 7, (int)0x43ff28ff }, // DEFAULT_BASE_COLOR_PRESSED - { 0, 8, (int)0x1e6f15ff }, // DEFAULT_TEXT_COLOR_PRESSED - { 0, 9, (int)0x223b22ff }, // DEFAULT_BORDER_COLOR_DISABLED - { 0, 10, (int)0x182c18ff }, // DEFAULT_BASE_COLOR_DISABLED - { 0, 11, (int)0x244125ff }, // DEFAULT_TEXT_COLOR_DISABLED - { 0, 16, (int)0x00000010 }, // DEFAULT_TEXT_SIZE - { 0, 17, (int)0x00000000 }, // DEFAULT_TEXT_SPACING - { 0, 18, (int)0xe6fce3ff }, // DEFAULT_LINE_COLOR - { 0, 19, (int)0x0c1505ff }, // DEFAULT_BACKGROUND_COLOR - { 0, 20, (int)0x00000008 }, // DEFAULT_TEXT_LINE_SPACING -}; - -// WARNING: This style uses a custom font: "Mecha.ttf" (size: 16, spacing: 0) - -#define TERMINAL_STYLE_FONT_ATLAS_COMP_SIZE 1860 - -// Font atlas image pixels data: DEFLATE compressed -static unsigned char terminalFontData[TERMINAL_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed, - 0xdd, 0x41, 0x92, 0xa4, 0x36, 0x10, 0x05, 0x50, 0xee, 0x7f, 0xe9, 0xf4, 0x62, 0x62, 0x16, 0x76, 0xb8, 0x1b, 0x94, 0x4a, - 0x89, 0x04, 0x9e, 0x5f, 0x78, 0xd3, 0xd5, 0x53, 0x4d, 0x01, 0xbf, 0x24, 0x84, 0x94, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x7c, - 0x5e, 0xfc, 0xef, 0x4f, 0xe2, 0xc7, 0xdf, 0x8c, 0xcb, 0xef, 0xf3, 0xe7, 0xa7, 0xf1, 0xe3, 0x5f, 0xf9, 0xfb, 0xdf, 0x95, - 0x77, 0xba, 0xfe, 0x5b, 0x31, 0xb4, 0x75, 0x73, 0x5b, 0x95, 0x7b, 0x9f, 0xd1, 0xdf, 0xfe, 0x7d, 0x7b, 0xaa, 0xde, 0xad, - 0xf6, 0x95, 0xb1, 0xb3, 0x23, 0xbf, 0xe7, 0xae, 0x6e, 0x61, 0x6c, 0xdf, 0x2b, 0xc7, 0xa6, 0x7d, 0x1c, 0x0d, 0xf2, 0x7f, - 0x7e, 0xcc, 0x46, 0xf2, 0x14, 0xe9, 0xf4, 0x8e, 0x7f, 0x3b, 0xad, 0xfc, 0x0e, 0x1d, 0xdd, 0xc6, 0xdc, 0x3e, 0x89, 0x92, - 0xf7, 0x9f, 0xf9, 0x3b, 0x51, 0xb6, 0xd7, 0x72, 0xff, 0x26, 0x86, 0xdb, 0x88, 0xf9, 0x4f, 0x78, 0xbe, 0x8f, 0x63, 0xd1, - 0x71, 0xef, 0x99, 0xff, 0xfc, 0x51, 0xcb, 0x9f, 0x29, 0x57, 0xb7, 0x3c, 0xd7, 0xa6, 0xaf, 0x3a, 0x27, 0xe5, 0xff, 0xec, - 0x9b, 0xfa, 0xe7, 0x16, 0xb4, 0xa2, 0xdd, 0x90, 0xff, 0x5c, 0x06, 0x62, 0x22, 0x47, 0xbb, 0xf2, 0x5f, 0xdb, 0xd6, 0xc8, - 0xff, 0x33, 0xda, 0xff, 0xb3, 0x6d, 0xff, 0xf7, 0x79, 0x2b, 0xff, 0xd9, 0xa3, 0x90, 0x6d, 0xff, 0x63, 0x7a, 0xfb, 0x3b, - 0xe7, 0x7f, 0x74, 0xdc, 0x43, 0xfe, 0xcf, 0xaf, 0xe8, 0x73, 0xbf, 0x7d, 0xb6, 0x27, 0xe4, 0x7f, 0x5d, 0xfe, 0x7f, 0xeb, - 0xb3, 0x9d, 0xf5, 0xf4, 0x76, 0xe4, 0xff, 0xd8, 0x9e, 0xff, 0xb3, 0xeb, 0xa8, 0xeb, 0xfb, 0x62, 0xc7, 0x08, 0xd4, 0x91, - 0x1c, 0xdb, 0x89, 0xc1, 0x0c, 0xdf, 0xd3, 0x0b, 0x3b, 0xcb, 0x7f, 0x66, 0x4f, 0x66, 0xf2, 0x7f, 0x76, 0x5c, 0x8e, 0x5f, - 0x7a, 0x30, 0xab, 0xf6, 0x7e, 0x45, 0xfe, 0x67, 0x46, 0xe4, 0x9e, 0x9d, 0xff, 0x38, 0xd9, 0x57, 0x31, 0x31, 0xbe, 0xb9, - 0xb3, 0xcf, 0x30, 0xd3, 0x4f, 0xeb, 0x7b, 0x1c, 0xde, 0xd3, 0xff, 0x8f, 0xd6, 0xed, 0xbf, 0xfc, 0xcf, 0x5d, 0xff, 0xbf, - 0x2d, 0xff, 0xb1, 0xfd, 0x58, 0xc5, 0x85, 0x33, 0x56, 0xfe, 0xe7, 0xf6, 0xf0, 0x79, 0x8f, 0x23, 0x16, 0x5d, 0xbf, 0x74, - 0xcd, 0x7f, 0xee, 0xd3, 0x7d, 0xb1, 0xfd, 0x8f, 0x1b, 0x8f, 0x8f, 0xfc, 0xaf, 0xd8, 0x9b, 0x23, 0x77, 0xd8, 0x66, 0xe7, - 0x2f, 0xc8, 0xbf, 0xfc, 0xcb, 0x7f, 0xef, 0xfe, 0x7f, 0x0c, 0x8e, 0xdc, 0xc6, 0xe3, 0xc7, 0xff, 0xe2, 0x52, 0x6f, 0x69, - 0x7e, 0xb6, 0xe0, 0x78, 0x9f, 0x2b, 0xf7, 0x6e, 0xf9, 0xd9, 0x75, 0x4f, 0xb9, 0xfe, 0xdf, 0x39, 0x93, 0xf2, 0x28, 0x99, - 0x87, 0xb2, 0x7e, 0xfe, 0xdf, 0x33, 0xe7, 0x28, 0x77, 0xcf, 0x3f, 0xb0, 0x7a, 0x95, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x65, 0x0d, 0x4d, 0x94, 0xad, 0x7b, 0x8c, 0x16, 0x95, 0xe7, 0xf7, 0xd4, 0x58, - 0xbf, 0xb6, 0x87, 0xaa, 0xde, 0x71, 0xec, 0x59, 0x02, 0x63, 0xeb, 0x30, 0x73, 0x2b, 0xff, 0x56, 0xaf, 0x6e, 0x9b, 0x59, - 0xdd, 0x58, 0xb3, 0x65, 0x15, 0xb5, 0x2d, 0xee, 0x49, 0xc7, 0xca, 0x75, 0xe2, 0x71, 0x69, 0x75, 0x70, 0x6d, 0x92, 0x56, - 0xaf, 0xd8, 0xce, 0xac, 0x7d, 0xdf, 0x99, 0xff, 0xb1, 0x33, 0x70, 0xfc, 0x73, 0x46, 0x62, 0x35, 0x55, 0x6d, 0x0d, 0x98, - 0x63, 0xe9, 0xb9, 0x19, 0x8b, 0xd6, 0x90, 0x8d, 0xef, 0x83, 0x3d, 0xe9, 0x90, 0xff, 0x2f, 0xe7, 0x3f, 0x57, 0x23, 0x7b, - 0xc7, 0xb3, 0x50, 0xe4, 0x5f, 0xfe, 0xe5, 0xff, 0xad, 0xf9, 0x8f, 0xe2, 0xfe, 0x77, 0xbe, 0x5a, 0x47, 0xcd, 0x95, 0x55, - 0x6d, 0x4a, 0xe4, 0x5f, 0xfe, 0x7f, 0xef, 0x6d, 0xc7, 0xc5, 0x56, 0x6c, 0xa4, 0xc5, 0xdb, 0x59, 0xb3, 0x64, 0x5f, 0x15, - 0xad, 0xd1, 0x6f, 0x93, 0x28, 0x4c, 0xf0, 0x57, 0xf2, 0x9f, 0xaf, 0x7b, 0xbe, 0x67, 0xdc, 0x2b, 0xb3, 0xe5, 0x99, 0xda, - 0x57, 0xf5, 0xf9, 0x3f, 0x7b, 0x1e, 0x42, 0xe6, 0xfb, 0xe9, 0x5b, 0xf9, 0x1f, 0xfd, 0x6c, 0xf2, 0x7f, 0x6c, 0x7e, 0xb6, - 0xcc, 0xfd, 0x35, 0x16, 0x23, 0xd9, 0xd2, 0x57, 0x6d, 0x75, 0xa4, 0x46, 0xdb, 0xaa, 0x7e, 0x9e, 0xab, 0xd2, 0xf8, 0xde, - 0xfc, 0x47, 0xc1, 0x7d, 0xae, 0xb9, 0x56, 0x52, 0xfe, 0xe5, 0xff, 0x98, 0xac, 0xc0, 0xdb, 0x3d, 0xff, 0x2b, 0xae, 0xbf, - 0x2b, 0x9f, 0xe6, 0xfa, 0xcc, 0xf6, 0xff, 0x59, 0xf7, 0xff, 0xbe, 0x92, 0xff, 0xb3, 0x63, 0x79, 0x77, 0xfe, 0x3b, 0xd5, - 0x4c, 0xcd, 0x8c, 0x30, 0xce, 0xfc, 0x9b, 0x8e, 0xf9, 0xdf, 0x35, 0x9f, 0x47, 0xfe, 0x77, 0xe5, 0xff, 0xe7, 0xa7, 0x8d, - 0xcb, 0x7f, 0xaf, 0xfc, 0xaf, 0xeb, 0xff, 0x3f, 0x3b, 0xff, 0xeb, 0x7a, 0x5f, 0xab, 0xfb, 0x73, 0xb5, 0x5b, 0x9e, 0x99, - 0x01, 0xf7, 0xdb, 0xfc, 0xbb, 0x48, 0x57, 0x6d, 0xaf, 0x98, 0x87, 0x37, 0x33, 0x3b, 0x68, 0xf7, 0x95, 0x41, 0xf5, 0xbf, - 0xa9, 0x1f, 0xb3, 0xe8, 0x9b, 0x7f, 0x78, 0x46, 0xfe, 0xbf, 0xb0, 0xaf, 0x71, 0x3c, 0xee, 0x69, 0x59, 0x57, 0xfe, 0x3e, - 0xce, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xd3, 0x2a, 0xac, 0xaa, 0xba, 0x8d, 0x3b, - 0xab, 0x65, 0xe4, 0xd6, 0xf9, 0xc5, 0xe5, 0xba, 0x2e, 0x99, 0x55, 0xe4, 0x23, 0x6b, 0xf9, 0x6a, 0xd6, 0x34, 0xe6, 0xcf, - 0x81, 0x48, 0xad, 0x96, 0x3b, 0x3f, 0x53, 0x32, 0x35, 0xec, 0xd7, 0xcd, 0xb6, 0xff, 0xbd, 0x7e, 0x43, 0xbe, 0x92, 0xc8, - 0xaa, 0xf5, 0x05, 0x75, 0xf5, 0x9f, 0x8e, 0x82, 0xd5, 0x8a, 0xd9, 0x35, 0xf4, 0xf7, 0xe6, 0x7f, 0x74, 0xf5, 0xdb, 0xf5, - 0x9f, 0x55, 0xd4, 0x5b, 0x89, 0xc4, 0xca, 0xbc, 0xca, 0xfc, 0x57, 0x9c, 0xe3, 0x51, 0xf6, 0xbe, 0xb1, 0xb8, 0x4e, 0xc1, - 0x95, 0x56, 0xe2, 0xd9, 0x6b, 0xa2, 0xe2, 0xd5, 0xf9, 0xaf, 0xad, 0x96, 0x5b, 0xff, 0x9d, 0x90, 0xaf, 0x4f, 0x70, 0x5f, - 0xfe, 0xff, 0x6e, 0x57, 0x75, 0xfe, 0x33, 0xef, 0x5b, 0x53, 0xd9, 0x6a, 0x2e, 0xff, 0x3d, 0x56, 0xf6, 0xc5, 0xf2, 0x9e, - 0x47, 0x26, 0xff, 0x63, 0xfd, 0xb6, 0x15, 0xf9, 0xcf, 0x57, 0xe6, 0x39, 0x36, 0x65, 0xfd, 0x28, 0x4e, 0xf9, 0xfa, 0xfc, - 0xd7, 0x9f, 0x69, 0xf1, 0x9f, 0xff, 0xbb, 0xac, 0xb6, 0x7d, 0x4b, 0xfe, 0x73, 0xd5, 0x69, 0x66, 0xf3, 0x9f, 0xbd, 0xe2, - 0xbd, 0xbb, 0xfd, 0x5f, 0x73, 0x4d, 0xb0, 0x3e, 0xff, 0x91, 0xaa, 0x0c, 0xde, 0x27, 0xff, 0xb1, 0x20, 0xb9, 0xf2, 0x9f, - 0x6d, 0x03, 0xdf, 0x90, 0xff, 0xea, 0xe7, 0x7c, 0x74, 0xc8, 0x7f, 0x6e, 0xc4, 0x2b, 0x4a, 0x73, 0x1a, 0xed, 0xdb, 0xff, - 0x63, 0xdb, 0xf8, 0x5f, 0xff, 0xfc, 0x47, 0x49, 0xbf, 0xf0, 0xce, 0xfc, 0xd7, 0x57, 0xcb, 0xcd, 0x56, 0x0d, 0xbc, 0x3e, - 0xd6, 0xd7, 0xa7, 0xfd, 0xaf, 0xbf, 0x1e, 0x5e, 0xd1, 0xfe, 0x1f, 0x0b, 0xee, 0x52, 0xac, 0xbf, 0xaa, 0xee, 0x9f, 0xff, - 0xaa, 0xeb, 0xc2, 0xcc, 0x73, 0x93, 0x46, 0xef, 0xff, 0xc5, 0xe9, 0x59, 0x3c, 0x7a, 0xe7, 0x68, 0x3c, 0x4f, 0x31, 0xf8, - 0xf4, 0xa2, 0xfe, 0xd7, 0xff, 0x95, 0xed, 0xff, 0x9a, 0x51, 0xef, 0xae, 0xa3, 0xe9, 0xd7, 0x9e, 0x2f, 0xde, 0x63, 0x8b, - 0xf3, 0x4f, 0xdc, 0x8a, 0xed, 0x57, 0x56, 0x7d, 0x8e, 0xf1, 0xfc, 0x67, 0x5f, 0x93, 0xff, 0x8a, 0x8a, 0xd3, 0xf5, 0xed, - 0xe1, 0xf7, 0xe6, 0xbc, 0xcc, 0xdc, 0x75, 0xef, 0xb1, 0xb5, 0xd5, 0xe7, 0xc5, 0x3b, 0xf2, 0x5f, 0xf7, 0xd9, 0x63, 0xc9, - 0xb7, 0x4a, 0xa6, 0x96, 0x77, 0x2c, 0x9f, 0x0f, 0x23, 0xff, 0xcf, 0xcd, 0x7f, 0xdc, 0x70, 0xcf, 0xf0, 0x58, 0x3c, 0x1e, - 0xdd, 0x61, 0x0f, 0xef, 0xcd, 0x3f, 0xfd, 0xce, 0x88, 0xee, 0xf9, 0x5f, 0x3f, 0x2f, 0xf4, 0xcb, 0xed, 0x81, 0x2a, 0xf9, - 0x3c, 0xf1, 0x5a, 0x56, 0xfe, 0x73, 0xfd, 0x96, 0xd9, 0xf9, 0xff, 0x20, 0xff, 0xdf, 0xdd, 0xeb, 0xd0, 0x7f, 0x76, 0x03, - 0xf2, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfb, 0x67, 0xbb, 0x45, 0x6a, 0x7d, 0x5b, 0x0c, 0x56, - 0x32, 0x88, 0x74, 0xa5, 0xf8, 0x6c, 0x7d, 0x8c, 0x18, 0x5c, 0xf7, 0x35, 0x5f, 0x37, 0xf8, 0xfa, 0xf3, 0x15, 0x66, 0xd6, - 0x0f, 0xae, 0x3f, 0x8e, 0x75, 0x15, 0xd6, 0xeb, 0x8f, 0x52, 0xe6, 0xef, 0x47, 0x79, 0xed, 0xb5, 0xfe, 0x99, 0x99, 0xdf, - 0xcf, 0x99, 0x95, 0xbe, 0xb5, 0x67, 0xd4, 0xb5, 0x63, 0x5b, 0xb7, 0xba, 0x33, 0x26, 0x92, 0x3e, 0x3e, 0x4f, 0xfb, 0xf7, - 0xaa, 0x9f, 0x5d, 0x8f, 0x63, 0x2e, 0x4b, 0x51, 0xba, 0x06, 0x37, 0xf7, 0xd7, 0x9f, 0xb6, 0xaf, 0xaf, 0x57, 0x01, 0xd8, - 0xdd, 0x5f, 0xc8, 0x3f, 0x35, 0x28, 0x6e, 0x9f, 0x8b, 0xbf, 0xae, 0xa2, 0x4e, 0x5d, 0xad, 0xe2, 0xbb, 0x8f, 0xe3, 0x71, - 0xfa, 0x0c, 0x93, 0x68, 0xb8, 0xbe, 0xe5, 0xac, 0xff, 0x18, 0x2d, 0xf7, 0x75, 0x5c, 0xee, 0x23, 0xe6, 0xf3, 0x9f, 0x7f, - 0x3e, 0x53, 0x14, 0x57, 0xe6, 0xcd, 0x57, 0xc7, 0xac, 0xde, 0xfa, 0x7c, 0xfb, 0x9f, 0xb9, 0x52, 0x88, 0xe5, 0x9f, 0xaa, - 0xf6, 0x3b, 0x39, 0x4e, 0x6a, 0xb9, 0xae, 0x3e, 0x2b, 0x56, 0xbc, 0x12, 0x1b, 0xce, 0xad, 0xdc, 0xf5, 0xde, 0xb5, 0x33, - 0x64, 0x26, 0xff, 0x7d, 0x8f, 0xcd, 0xd1, 0xe6, 0x95, 0xdd, 0xf9, 0x7f, 0xee, 0x2b, 0xef, 0xc9, 0x7f, 0x9f, 0xb3, 0xef, - 0xb7, 0xcf, 0x33, 0xfb, 0xac, 0xc2, 0x0e, 0x47, 0xe0, 0xac, 0x4e, 0xec, 0x5b, 0xf3, 0x1f, 0x3f, 0x8e, 0x0c, 0xf6, 0xff, - 0x4e, 0xfe, 0xb9, 0x5f, 0xf0, 0xb4, 0xfc, 0x57, 0xb6, 0xcb, 0x15, 0x6d, 0xf9, 0xde, 0x6b, 0x66, 0xed, 0xbf, 0xf6, 0xff, - 0xdb, 0xf9, 0xbf, 0xff, 0x2a, 0x6c, 0x6f, 0x66, 0xfa, 0xed, 0xb3, 0x3e, 0xf9, 0x1f, 0x19, 0xf3, 0x92, 0xff, 0xb7, 0xe7, - 0xff, 0x09, 0xdf, 0x4d, 0xb3, 0xf7, 0xff, 0xde, 0x31, 0xfe, 0x57, 0xf5, 0x8a, 0xf6, 0x7f, 0x6e, 0x8c, 0xfd, 0xee, 0x6d, - 0xcb, 0x1f, 0xf3, 0xb7, 0x1c, 0x85, 0xd1, 0x3e, 0x80, 0xfe, 0xbf, 0xfc, 0xbf, 0x27, 0xff, 0x47, 0x7a, 0xf6, 0xc1, 0xb3, - 0xae, 0x33, 0x46, 0x8e, 0xc7, 0x73, 0xf2, 0x5f, 0x79, 0xc7, 0xee, 0x29, 0xe3, 0x7f, 0x4f, 0xfb, 0x66, 0x78, 0x63, 0xfe, - 0xef, 0xbd, 0xd7, 0xda, 0x63, 0xe6, 0xef, 0x33, 0xfb, 0x32, 0x4f, 0xce, 0xff, 0xb3, 0xfb, 0x64, 0xc7, 0x6d, 0x57, 0x85, - 0x51, 0xb8, 0xa7, 0x79, 0x46, 0xfe, 0x63, 0x53, 0xfe, 0x47, 0xc6, 0x06, 0xde, 0x9d, 0xff, 0xf1, 0xd6, 0x2a, 0x6e, 0x1f, - 0x63, 0x96, 0xff, 0xbb, 0xf3, 0xbf, 0x7f, 0xeb, 0x77, 0xf5, 0xc4, 0x62, 0x49, 0xd2, 0xc7, 0x8f, 0xc9, 0x13, 0xfb, 0xa4, - 0x3b, 0xb7, 0x4d, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xef, 0xcc, 0x00, 0x1e, 0x7b, 0xb5, - 0x43, 0x05, 0xfd, 0x23, 0x5d, 0x6d, 0xbd, 0xee, 0xf3, 0x1e, 0x89, 0xaa, 0xee, 0x99, 0x6d, 0xe8, 0x5c, 0x41, 0xdf, 0xac, - 0xdb, 0xb7, 0x7e, 0x03, 0xf4, 0xae, 0xa0, 0x7f, 0x5e, 0xe5, 0x63, 0xfd, 0xe7, 0xad, 0x9c, 0x3f, 0xdf, 0xbb, 0x82, 0x7e, - 0xbf, 0xb5, 0xab, 0xf4, 0xfb, 0x26, 0xd9, 0x59, 0x41, 0x7f, 0xbc, 0xbf, 0x71, 0x6c, 0xdc, 0xae, 0x6c, 0x35, 0x83, 0xae, - 0x15, 0xf4, 0xbb, 0xaf, 0x05, 0xe3, 0xfe, 0xb5, 0x59, 0x63, 0xcf, 0xb4, 0xa8, 0xaa, 0xa0, 0xf1, 0xb4, 0x0a, 0xfa, 0x67, - 0x19, 0x7b, 0x52, 0x9d, 0x6c, 0xf9, 0xb7, 0xfe, 0xf7, 0xbe, 0xfc, 0xf7, 0xad, 0x93, 0x91, 0xad, 0x52, 0xd3, 0xbb, 0x82, - 0xa6, 0xfc, 0xcb, 0xbf, 0xfc, 0xaf, 0xaa, 0x91, 0x20, 0xff, 0x3c, 0x3d, 0xff, 0x3b, 0x2b, 0xe8, 0xa8, 0xa0, 0xb9, 0xbb, - 0x22, 0xd0, 0x21, 0xff, 0xae, 0xff, 0x1f, 0xf1, 0x04, 0x3d, 0xf9, 0x5f, 0xf3, 0x8a, 0xfc, 0x7f, 0xfd, 0xde, 0x9f, 0x0a, - 0xda, 0x2b, 0xf3, 0x1f, 0x4d, 0xc7, 0xff, 0xf6, 0xdf, 0xf1, 0xe1, 0x89, 0xf9, 0xd7, 0xff, 0xcf, 0xe7, 0xe2, 0xfe, 0x0a, - 0x9a, 0xf9, 0x34, 0xcb, 0xbf, 0xfe, 0x7f, 0xc5, 0xfc, 0x9f, 0x9a, 0xb6, 0x47, 0x05, 0xcd, 0xb9, 0x6d, 0x93, 0x7f, 0xd0, - 0x2b, 0xd4, 0xff, 0x07, 0xbd, 0x41, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xf9, 0xf3, 0x9f, 0xfd, 0x00, 0xf2, 0x0f, 0x7c, 0x2e, 0xff, 0xff, 0x00 }; - -// Font glyphs rectangles data (on atlas) -static const Rectangle terminalFontRecs[189] = { - { 4, 4, 4 , 16 }, - { 16, 4, 1 , 11 }, - { 25, 4, 3 , 3 }, - { 36, 4, 6 , 11 }, - { 50, 4, 5 , 11 }, - { 63, 4, 5 , 11 }, - { 76, 4, 5 , 11 }, - { 89, 4, 1 , 2 }, - { 98, 4, 2 , 13 }, - { 108, 4, 2 , 13 }, - { 118, 4, 3 , 3 }, - { 129, 4, 5 , 5 }, - { 142, 4, 1 , 3 }, - { 151, 4, 5 , 1 }, - { 164, 4, 1 , 1 }, - { 173, 4, 6 , 12 }, - { 187, 4, 5 , 11 }, - { 200, 4, 2 , 11 }, - { 210, 4, 5 , 11 }, - { 223, 4, 5 , 11 }, - { 236, 4, 5 , 11 }, - { 249, 4, 5 , 11 }, - { 262, 4, 5 , 11 }, - { 275, 4, 5 , 11 }, - { 288, 4, 5 , 11 }, - { 301, 4, 5 , 11 }, - { 314, 4, 1 , 8 }, - { 323, 4, 1 , 10 }, - { 332, 4, 4 , 5 }, - { 344, 4, 5 , 3 }, - { 357, 4, 4 , 5 }, - { 369, 4, 5 , 11 }, - { 382, 4, 11 , 11 }, - { 401, 4, 5 , 11 }, - { 414, 4, 5 , 11 }, - { 427, 4, 5 , 11 }, - { 440, 4, 5 , 11 }, - { 453, 4, 5 , 11 }, - { 466, 4, 5 , 11 }, - { 479, 4, 5 , 11 }, - { 492, 4, 5 , 11 }, - { 4, 28, 1 , 11 }, - { 13, 28, 5 , 11 }, - { 26, 28, 5 , 11 }, - { 39, 28, 5 , 11 }, - { 52, 28, 7 , 11 }, - { 67, 28, 5 , 11 }, - { 80, 28, 5 , 11 }, - { 93, 28, 5 , 11 }, - { 106, 28, 5 , 13 }, - { 119, 28, 5 , 11 }, - { 132, 28, 5 , 11 }, - { 145, 28, 5 , 11 }, - { 158, 28, 5 , 11 }, - { 171, 28, 5 , 11 }, - { 184, 28, 7 , 11 }, - { 199, 28, 5 , 11 }, - { 212, 28, 5 , 11 }, - { 225, 28, 5 , 11 }, - { 238, 28, 2 , 13 }, - { 248, 28, 6 , 12 }, - { 262, 28, 2 , 13 }, - { 272, 28, 5 , 4 }, - { 285, 28, 5 , 1 }, - { 298, 28, 2 , 2 }, - { 308, 28, 5 , 8 }, - { 321, 28, 5 , 11 }, - { 334, 28, 5 , 8 }, - { 347, 28, 5 , 11 }, - { 360, 28, 5 , 8 }, - { 373, 28, 4 , 11 }, - { 385, 28, 5 , 10 }, - { 398, 28, 5 , 11 }, - { 411, 28, 1 , 11 }, - { 420, 28, 1 , 13 }, - { 429, 28, 5 , 11 }, - { 442, 28, 1 , 11 }, - { 451, 28, 7 , 8 }, - { 466, 28, 5 , 8 }, - { 479, 28, 5 , 8 }, - { 492, 28, 5 , 10 }, - { 4, 52, 5 , 10 }, - { 17, 52, 4 , 8 }, - { 29, 52, 5 , 8 }, - { 42, 52, 3 , 11 }, - { 53, 52, 5 , 8 }, - { 66, 52, 5 , 8 }, - { 79, 52, 7 , 8 }, - { 94, 52, 5 , 8 }, - { 107, 52, 5 , 10 }, - { 120, 52, 5 , 8 }, - { 133, 52, 3 , 13 }, - { 144, 52, 1 , 15 }, - { 153, 52, 3 , 13 }, - { 164, 52, 5 , 3 }, - { 177, 52, 1 , 11 }, - { 186, 52, 5 , 11 }, - { 199, 52, 5 , 10 }, - { 212, 52, 5 , 10 }, - { 225, 52, 5 , 10 }, - { 238, 52, 0 , 0 }, - { 246, 52, 0 , 0 }, - { 254, 52, 0 , 0 }, - { 262, 52, 7 , 8 }, - { 277, 52, 0 , 0 }, - { 285, 52, 0 , 0 }, - { 293, 52, 5 , 3 }, - { 306, 52, 7 , 8 }, - { 321, 52, 5 , 1 }, - { 334, 52, 3 , 3 }, - { 345, 52, 5 , 7 }, - { 358, 52, 0 , 0 }, - { 366, 52, 0 , 0 }, - { 374, 52, 0 , 0 }, - { 382, 52, 5 , 10 }, - { 395, 52, 7 , 11 }, - { 410, 52, 1 , 1 }, - { 419, 52, 0 , 0 }, - { 427, 52, 0 , 0 }, - { 435, 52, 0 , 0 }, - { 443, 52, 0 , 0 }, - { 451, 52, 0 , 0 }, - { 459, 52, 0 , 0 }, - { 467, 52, 5 , 13 }, - { 480, 52, 5 , 11 }, - { 493, 52, 5 , 14 }, - { 4, 76, 5 , 14 }, - { 17, 76, 5 , 14 }, - { 30, 76, 5 , 14 }, - { 43, 76, 5 , 13 }, - { 56, 76, 5 , 13 }, - { 69, 76, 9 , 11 }, - { 86, 76, 5 , 13 }, - { 99, 76, 5 , 14 }, - { 112, 76, 5 , 14 }, - { 125, 76, 5 , 14 }, - { 138, 76, 5 , 13 }, - { 151, 76, 2 , 14 }, - { 161, 76, 2 , 14 }, - { 171, 76, 3 , 14 }, - { 182, 76, 3 , 13 }, - { 193, 76, 5 , 11 }, - { 206, 76, 5 , 14 }, - { 219, 76, 5 , 14 }, - { 232, 76, 5 , 14 }, - { 245, 76, 5 , 14 }, - { 258, 76, 5 , 14 }, - { 271, 76, 5 , 13 }, - { 284, 76, 5 , 5 }, - { 297, 76, 5 , 13 }, - { 310, 76, 5 , 14 }, - { 323, 76, 5 , 14 }, - { 336, 76, 5 , 14 }, - { 349, 76, 5 , 13 }, - { 362, 76, 5 , 14 }, - { 375, 76, 5 , 11 }, - { 388, 76, 5 , 11 }, - { 401, 76, 5 , 11 }, - { 414, 76, 5 , 11 }, - { 427, 76, 5 , 11 }, - { 440, 76, 5 , 11 }, - { 453, 76, 5 , 10 }, - { 466, 76, 5 , 10 }, - { 479, 76, 9 , 8 }, - { 496, 76, 5 , 10 }, - { 4, 100, 5 , 11 }, - { 17, 100, 5 , 11 }, - { 30, 100, 5 , 11 }, - { 43, 100, 5 , 10 }, - { 56, 100, 2 , 11 }, - { 66, 100, 2 , 11 }, - { 76, 100, 3 , 11 }, - { 87, 100, 3 , 10 }, - { 98, 100, 5 , 11 }, - { 111, 100, 5 , 11 }, - { 124, 100, 5 , 11 }, - { 137, 100, 5 , 11 }, - { 150, 100, 5 , 11 }, - { 163, 100, 5 , 11 }, - { 176, 100, 5 , 10 }, - { 189, 100, 5 , 5 }, - { 202, 100, 5 , 10 }, - { 215, 100, 5 , 11 }, - { 228, 100, 5 , 11 }, - { 241, 100, 5 , 11 }, - { 254, 100, 5 , 10 }, - { 267, 100, 5 , 13 }, - { 280, 100, 4 , 8 }, - { 292, 100, 5 , 12 }, -}; - -// Font glyphs info data -// NOTE: No glyphs.image data provided -static const GlyphInfo terminalFontGlyphs[189] = { - { 32, 0, 0, 4, { 0 }}, - { 33, 1, 3, 3, { 0 }}, - { 34, 1, 3, 5, { 0 }}, - { 35, 1, 3, 8, { 0 }}, - { 36, 1, 3, 7, { 0 }}, - { 37, 1, 3, 7, { 0 }}, - { 38, 1, 3, 7, { 0 }}, - { 39, 1, 3, 3, { 0 }}, - { 40, 1, 2, 4, { 0 }}, - { 41, 1, 2, 4, { 0 }}, - { 42, 1, 3, 5, { 0 }}, - { 43, 1, 7, 7, { 0 }}, - { 44, 1, 13, 3, { 0 }}, - { 45, 1, 9, 7, { 0 }}, - { 46, 1, 13, 3, { 0 }}, - { 47, 1, 2, 8, { 0 }}, - { 48, 1, 3, 7, { 0 }}, - { 49, 1, 3, 4, { 0 }}, - { 50, 1, 3, 7, { 0 }}, - { 51, 1, 3, 7, { 0 }}, - { 52, 1, 3, 7, { 0 }}, - { 53, 1, 3, 7, { 0 }}, - { 54, 1, 3, 7, { 0 }}, - { 55, 1, 3, 7, { 0 }}, - { 56, 1, 3, 7, { 0 }}, - { 57, 1, 3, 7, { 0 }}, - { 58, 1, 6, 3, { 0 }}, - { 59, 1, 6, 3, { 0 }}, - { 60, 1, 7, 6, { 0 }}, - { 61, 1, 8, 7, { 0 }}, - { 62, 1, 7, 6, { 0 }}, - { 63, 1, 3, 7, { 0 }}, - { 64, 2, 3, 15, { 0 }}, - { 65, 1, 3, 7, { 0 }}, - { 66, 1, 3, 7, { 0 }}, - { 67, 1, 3, 7, { 0 }}, - { 68, 1, 3, 7, { 0 }}, - { 69, 1, 3, 7, { 0 }}, - { 70, 1, 3, 7, { 0 }}, - { 71, 1, 3, 7, { 0 }}, - { 72, 1, 3, 7, { 0 }}, - { 73, 1, 3, 3, { 0 }}, - { 74, 1, 3, 7, { 0 }}, - { 75, 1, 3, 7, { 0 }}, - { 76, 1, 3, 7, { 0 }}, - { 77, 1, 3, 9, { 0 }}, - { 78, 1, 3, 7, { 0 }}, - { 79, 1, 3, 7, { 0 }}, - { 80, 1, 3, 7, { 0 }}, - { 81, 1, 3, 7, { 0 }}, - { 82, 1, 3, 7, { 0 }}, - { 83, 1, 3, 7, { 0 }}, - { 84, 1, 3, 7, { 0 }}, - { 85, 1, 3, 7, { 0 }}, - { 86, 1, 3, 7, { 0 }}, - { 87, 1, 3, 9, { 0 }}, - { 88, 1, 3, 7, { 0 }}, - { 89, 1, 3, 7, { 0 }}, - { 90, 1, 3, 7, { 0 }}, - { 91, 1, 2, 4, { 0 }}, - { 92, 1, 2, 8, { 0 }}, - { 93, 1, 2, 4, { 0 }}, - { 94, 1, 3, 7, { 0 }}, - { 95, 1, 15, 7, { 0 }}, - { 96, 1, 0, 4, { 0 }}, - { 97, 1, 6, 7, { 0 }}, - { 98, 1, 3, 7, { 0 }}, - { 99, 1, 6, 7, { 0 }}, - { 100, 1, 3, 7, { 0 }}, - { 101, 1, 6, 7, { 0 }}, - { 102, 1, 3, 6, { 0 }}, - { 103, 1, 6, 7, { 0 }}, - { 104, 1, 3, 7, { 0 }}, - { 105, 1, 3, 3, { 0 }}, - { 106, 1, 3, 3, { 0 }}, - { 107, 1, 3, 7, { 0 }}, - { 108, 1, 3, 3, { 0 }}, - { 109, 1, 6, 9, { 0 }}, - { 110, 1, 6, 7, { 0 }}, - { 111, 1, 6, 7, { 0 }}, - { 112, 1, 6, 7, { 0 }}, - { 113, 1, 6, 7, { 0 }}, - { 114, 1, 6, 6, { 0 }}, - { 115, 1, 6, 7, { 0 }}, - { 116, 1, 3, 5, { 0 }}, - { 117, 1, 6, 7, { 0 }}, - { 118, 1, 6, 7, { 0 }}, - { 119, 1, 6, 9, { 0 }}, - { 120, 1, 6, 7, { 0 }}, - { 121, 1, 6, 7, { 0 }}, - { 122, 1, 6, 7, { 0 }}, - { 123, 1, 2, 5, { 0 }}, - { 124, 1, 1, 3, { 0 }}, - { 125, 1, 2, 5, { 0 }}, - { 126, 1, 8, 7, { 0 }}, - { 161, 1, 3, 3, { 0 }}, - { 162, 1, 3, 7, { 0 }}, - { 163, 1, 3, 7, { 0 }}, - { 8364, 1, 3, 7, { 0 }}, - { 165, 1, 3, 7, { 0 }}, - { 352, 0, 0, 0, { 0 }}, - { 167, 0, 0, 0, { 0 }}, - { 353, 0, 0, 0, { 0 }}, - { 169, 1, 3, 9, { 0 }}, - { 170, 0, 0, 0, { 0 }}, - { 171, 0, 0, 0, { 0 }}, - { 172, 1, 8, 7, { 0 }}, - { 174, 1, 3, 9, { 0 }}, - { 175, 1, 1, 7, { 0 }}, - { 176, 1, 0, 5, { 0 }}, - { 177, 1, 7, 7, { 0 }}, - { 178, 0, 0, 0, { 0 }}, - { 179, 0, 0, 0, { 0 }}, - { 381, 0, 0, 0, { 0 }}, - { 181, 1, 6, 7, { 0 }}, - { 182, 1, 3, 9, { 0 }}, - { 183, 1, 8, 3, { 0 }}, - { 382, 0, 0, 0, { 0 }}, - { 185, 0, 0, 0, { 0 }}, - { 186, 0, 0, 0, { 0 }}, - { 187, 0, 0, 0, { 0 }}, - { 338, 0, 0, 0, { 0 }}, - { 339, 0, 0, 0, { 0 }}, - { 376, 1, 1, 7, { 0 }}, - { 191, 1, 3, 7, { 0 }}, - { 192, 1, 0, 7, { 0 }}, - { 193, 1, 0, 7, { 0 }}, - { 194, 1, 0, 7, { 0 }}, - { 195, 1, 0, 7, { 0 }}, - { 196, 1, 1, 7, { 0 }}, - { 197, 1, 1, 7, { 0 }}, - { 198, 1, 3, 11, { 0 }}, - { 199, 1, 3, 7, { 0 }}, - { 200, 1, 0, 7, { 0 }}, - { 201, 1, 0, 7, { 0 }}, - { 202, 1, 0, 7, { 0 }}, - { 203, 1, 1, 7, { 0 }}, - { 204, 0, 0, 3, { 0 }}, - { 205, 1, 0, 3, { 0 }}, - { 206, 0, 0, 3, { 0 }}, - { 207, 0, 1, 3, { 0 }}, - { 208, 1, 3, 7, { 0 }}, - { 209, 1, 0, 7, { 0 }}, - { 210, 1, 0, 7, { 0 }}, - { 211, 1, 0, 7, { 0 }}, - { 212, 1, 0, 7, { 0 }}, - { 213, 1, 0, 7, { 0 }}, - { 214, 1, 1, 7, { 0 }}, - { 215, 1, 7, 7, { 0 }}, - { 216, 1, 2, 7, { 0 }}, - { 217, 1, 0, 7, { 0 }}, - { 218, 1, 0, 7, { 0 }}, - { 219, 1, 0, 7, { 0 }}, - { 220, 1, 1, 7, { 0 }}, - { 221, 1, 0, 7, { 0 }}, - { 222, 1, 3, 7, { 0 }}, - { 223, 1, 3, 7, { 0 }}, - { 224, 1, 3, 7, { 0 }}, - { 225, 1, 3, 7, { 0 }}, - { 226, 1, 3, 7, { 0 }}, - { 227, 1, 3, 7, { 0 }}, - { 228, 1, 4, 7, { 0 }}, - { 229, 1, 4, 7, { 0 }}, - { 230, 1, 6, 11, { 0 }}, - { 231, 1, 6, 7, { 0 }}, - { 232, 1, 3, 7, { 0 }}, - { 233, 1, 3, 7, { 0 }}, - { 234, 1, 3, 7, { 0 }}, - { 235, 1, 4, 7, { 0 }}, - { 236, 0, 3, 3, { 0 }}, - { 237, 1, 3, 3, { 0 }}, - { 238, 0, 3, 3, { 0 }}, - { 239, 0, 4, 3, { 0 }}, - { 240, 1, 3, 7, { 0 }}, - { 241, 1, 3, 7, { 0 }}, - { 242, 1, 3, 7, { 0 }}, - { 243, 1, 3, 7, { 0 }}, - { 244, 1, 3, 7, { 0 }}, - { 245, 1, 3, 7, { 0 }}, - { 246, 1, 4, 7, { 0 }}, - { 247, 1, 7, 7, { 0 }}, - { 248, 1, 5, 7, { 0 }}, - { 249, 1, 3, 7, { 0 }}, - { 250, 1, 3, 7, { 0 }}, - { 251, 1, 3, 7, { 0 }}, - { 252, 1, 4, 7, { 0 }}, - { 253, 1, 3, 7, { 0 }}, - { 254, 1, 6, 6, { 0 }}, - { 255, 1, 4, 7, { 0 }}, -}; - -// Style loading function: Terminal -static void GuiLoadStyleTerminal(void) -{ - // Load style properties provided - // NOTE: Default properties are propagated - for (int i = 0; i < TERMINAL_STYLE_PROPS_COUNT; i++) - { - GuiSetStyle(terminalStyleProps[i].controlId, terminalStyleProps[i].propertyId, terminalStyleProps[i].propertyValue); - } - - // Custom font loading - // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function - int terminalFontDataSize = 0; - unsigned char *data = DecompressData(terminalFontData, TERMINAL_STYLE_FONT_ATLAS_COMP_SIZE, &terminalFontDataSize); - Image imFont = { data, 512, 256, 1, 2 }; - - Font font = { 0 }; - font.baseSize = 16; - font.glyphCount = 189; - - // Load texture from image - font.texture = LoadTextureFromImage(imFont); - UnloadImage(imFont); // Uncompressed image data can be unloaded from memory - - // Copy char recs data from global fontRecs - // NOTE: Required to avoid issues if trying to free font - font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle)); - memcpy(font.recs, terminalFontRecs, font.glyphCount*sizeof(Rectangle)); - - // Copy font char info data from global fontChars - // NOTE: Required to avoid issues if trying to free font - font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo)); - memcpy(font.glyphs, terminalFontGlyphs, font.glyphCount*sizeof(GlyphInfo)); - - GuiSetFont(font); - - // Setup a white rectangle on the font to be used on shapes drawing, - // it makes possible to draw shapes and text (full UI) in a single draw call - Rectangle fontWhiteRec = { 510, 254, 1, 1 }; - SetShapesTexture(font.texture, fontWhiteRec); - - //----------------------------------------------------------------- - - // TODO: Custom user style setup: Set specific properties here (if required) - // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT -} diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.png b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.png deleted file mode 100644 index 0b88867..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.png and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.rgs deleted file mode 100644 index 6cea868..0000000 Binary files a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.rgs and /dev/null differ diff --git a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.txt.rgs b/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.txt.rgs deleted file mode 100644 index fc996de..0000000 --- a/zig-pkg/N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF/styles/terminal/style_terminal.txt.rgs +++ /dev/null @@ -1,27 +0,0 @@ -# -# rgs style text file (v4.0) - raygui style file generated using rGuiStyler -# -# Provided info: -# f fontGenSize charsetFileName fontFileName -# p Property description -# -# WARNING: This style uses a custom font, must be provided with style file -# -f 16 charset.txt Mecha.ttf -p 00 00 0x1c8d00ff DEFAULT_BORDER_COLOR_NORMAL -p 00 01 0x161313ff DEFAULT_BASE_COLOR_NORMAL -p 00 02 0x38f620ff DEFAULT_TEXT_COLOR_NORMAL -p 00 03 0xc3fbc6ff DEFAULT_BORDER_COLOR_FOCUSED -p 00 04 0x43bf2eff DEFAULT_BASE_COLOR_FOCUSED -p 00 05 0xdcfadcff DEFAULT_TEXT_COLOR_FOCUSED -p 00 06 0x1f5b19ff DEFAULT_BORDER_COLOR_PRESSED -p 00 07 0x43ff28ff DEFAULT_BASE_COLOR_PRESSED -p 00 08 0x1e6f15ff DEFAULT_TEXT_COLOR_PRESSED -p 00 09 0x223b22ff DEFAULT_BORDER_COLOR_DISABLED -p 00 10 0x182c18ff DEFAULT_BASE_COLOR_DISABLED -p 00 11 0x244125ff DEFAULT_TEXT_COLOR_DISABLED -p 00 16 0x00000010 TEXT_SIZE -p 00 17 0x00000000 TEXT_SPACING -p 00 18 0xe6fce3ff LINE_COLOR -p 00 19 0x0c1505ff BACKGROUND_COLOR -p 00 20 0x00000018 TEXT_LINE_SPACING diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.circleci/config.yml b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.circleci/config.yml deleted file mode 100644 index aebb789..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.circleci/config.yml +++ /dev/null @@ -1,354 +0,0 @@ -version: 2.1 - -orbs: - win: circleci/windows@5.0 - -executors: - ubuntu: - docker: - - image: buildpack-deps:focal - mac_arm64: - environment: - EMSDK_NOTTY: "1" - # Without this, any `brew install` command will result in self-update of - # brew itself which takes more than 4 minutes. - HOMEBREW_NO_AUTO_UPDATE: "1" - macos: - xcode: "13.4.1" - resource_class: macos.m1.medium.gen1 - linux_arm64: - machine: - image: ubuntu-2004:2023.07.1 - resource_class: arm.medium - -commands: - setup-macos: - steps: - - checkout - - run: - name: Install CMake - command: brew install cmake - test-macos: - steps: - - run: - name: test.sh - command: test/test.sh - - run: - name: test.py - command: | - source emsdk_env.sh - test/test.py - test-bazel-linux: - steps: - - checkout - - run: - name: install bazelisk - command: | - wget https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-linux-amd64 - chmod +x bazelisk-linux-amd64 - mv bazelisk-linux-amd64 /usr/local/bin/bazel - - run: test/test_bazel.sh - test-bazel-mac: - steps: - - checkout - - run: - name: install bazelisk - command: | - brew install bazelisk - - run: test/test_bazel_mac.sh - test-bazel-windows: - steps: - - checkout - - run: - name: Download Bazelisk - shell: powershell.exe - command: | - $ProgressPreference = "SilentlyContinue" - Invoke-WebRequest -Uri https://github.com/bazelbuild/bazelisk/releases/download/v1.10.1/bazelisk-windows-amd64.exe -OutFile ( New-Item -Path "temp\bazel\bazel.exe" -Force ) - - run: - name: Run Tests - shell: powershell.exe - command: | - $env:Path += ";C:\Python27amd64;$pwd\temp\bazel" - .\test\test_bazel.ps1 - -jobs: - flake8: - executor: ubuntu - steps: - - checkout - - run: - name: install pip - command: | - apt-get update -q - apt-get install -q -y python3-pip - - run: python3 -m pip install --upgrade pip - - run: python3 -m pip install flake8==7.1.1 - - run: python3 -m flake8 --show-source --statistics --extend-exclude=./scripts - - test-linux: - executor: ubuntu - environment: - EMSDK_NOTTY: "1" - # This is needed because the old gcc-7 that is installed on debian/bionic - # generates warnings about unused variables when doing C++17 - # destructuring: - # https://github.com/WebAssembly/binaryen/issues/4353 - CXXFLAGS: "-Wno-unused-variable" - # I don't know why circleci VMs pretent to have 36 cores but its a lie. - EMSDK_NUM_CORES: "4" - steps: - - checkout - - run: - name: Install debian packages - command: apt-get update -q && apt-get install -q -y cmake build-essential openjdk-8-jre-headless ksh zsh - - run: test/test_node_path.sh - - run: test/test.sh - - run: test/test_source_env.sh - - run: - name: test.py - command: | - source emsdk_env.sh - test/test.py - test-linux-arm64: - executor: linux_arm64 - steps: - - checkout - - run: - name: Install debian packages - command: sudo apt-get update -q && sudo apt-get install -q cmake build-essential openjdk-8-jre-headless - - run: test/test.sh - test-mac-arm64: - executor: mac_arm64 - steps: - - setup-macos - - test-macos - test-windows: - executor: - name: win/server-2019 - shell: bash.exe - environment: - # We need python installed before we can test anytyhing. - # There seems to be undocument copy of python installed here. Hopefully - # if this disappears there will be another way of getting a re-installed - # version. - PYTHON_BIN: "C:\\Python27amd64" - PYTHONUNBUFFERED: "1" - EMSDK_NOTTY: "1" - steps: - - checkout - - run: - name: Add python to bash path - command: echo "export PATH=\"$PATH:/c/python27amd64/\"" >> $BASH_ENV - - run: - name: Install latest - shell: cmd.exe - command: test\test.bat - - run: - name: test.py - command: | - source emsdk_env.sh - python test/test.py - - - run: - name: flagless (process/shell) test - shell: powershell.exe - command: | - test/test_activation.ps1 - - - run: - name: --permanent test - shell: powershell.exe - command: | - $env:PERMANENT_FLAG="--permanent" - test/test_activation.ps1 - - - run: - name: --system test - shell: powershell.exe - command: | - $env:SYSTEM_FLAG="--system" - test/test_activation.ps1 - - - run: - name: Process/Shell PATH preservation test - shell: powershell.exe - command: | - test/test_path_preservation.ps1 - - - run: - name: User PATH preservation test - shell: powershell.exe - command: | - $env:PERMANENT_FLAG="--permanent" - test/test_path_preservation.ps1 - - - run: - name: System PATH preservation test - shell: powershell.exe - command: | - $env:SYSTEM_FLAG="--system" - test/test_path_preservation.ps1 - - build-docker-image-x64: - executor: ubuntu - steps: - - checkout - - run: - name: install docker - command: | - apt-get update -q - apt-get install -q -y ca-certificates curl gnupg lsb-release - mkdir -p /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update -q - apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin - - setup_remote_docker - # Build the `latest` version of EMSDK as docker image - - run: - name: build - command: make -C ./docker version=latest build - - run: - name: test - command: make -C ./docker version=latest test - - publish-docker-image-x64: - executor: ubuntu - steps: - - checkout - - run: - name: install docker - command: | - apt-get update -q - apt-get install -q -y ca-certificates curl gnupg lsb-release - mkdir -p /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update -q - apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin - - setup_remote_docker - - run: - name: build - command: make -C ./docker version=${CIRCLE_TAG} build - - run: - name: test - command: make -C ./docker version=${CIRCLE_TAG} test - - run: - name: push image - command: | - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" - make -C ./docker version=${CIRCLE_TAG} alias=latest push - - publish-docker-image-arm64: - executor: linux_arm64 - steps: - - checkout - - run: - name: build - command: make -C ./docker version=${CIRCLE_TAG} build - - run: - name: test - command: make -C ./docker version=${CIRCLE_TAG} test - - run: - name: push image - command: | - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" - make -C ./docker version=${CIRCLE_TAG} alias=${CIRCLE_TAG}-arm64 only_alias=true push - - test-bazel7-linux: - executor: ubuntu - environment: - USE_BAZEL_VERSION: "7.x" - steps: - - test-bazel-linux - - test-bazel-latest-linux: - executor: ubuntu - steps: - - test-bazel-linux - - test-bazel7-mac-arm64: - executor: mac_arm64 - environment: - USE_BAZEL_VERSION: "7.x" - steps: - - test-bazel-mac - - test-bazel-latest-mac-arm64: - executor: mac_arm64 - steps: - - test-bazel-mac - - test-bazel7-windows: - executor: - name: win/server-2019 - shell: powershell.exe -ExecutionPolicy Bypass - environment: - PYTHONUNBUFFERED: "1" - EMSDK_NOTTY: "1" - # For some reason version resolution with "7.x" does not work on Windows, - # so we have to specify a full version. - USE_BAZEL_VERSION: "7.6.1" - steps: - - test-bazel-windows - - test-bazel-latest-windows: - executor: - name: win/server-2019 - shell: powershell.exe -ExecutionPolicy Bypass - environment: - PYTHONUNBUFFERED: "1" - EMSDK_NOTTY: "1" - steps: - - test-bazel-windows - -workflows: - flake8: - jobs: - - flake8 - test-linux: - jobs: - - test-linux - test-linux-arm64: - jobs: - - test-linux-arm64 - test-mac-arm64: - jobs: - - test-mac-arm64 - test-windows: - jobs: - - test-windows - build-docker-image: - jobs: - - build-docker-image-x64 - - publish-docker-image-x64: - filters: - branches: - ignore: /.*/ - tags: - only: /.*/ - - publish-docker-image-arm64: - filters: - branches: - ignore: /.*/ - tags: - only: /.*/ - test-bazel7-linux: - jobs: - - test-bazel7-linux - test-bazel-latest-linux: - jobs: - - test-bazel-latest-linux - test-bazel7-mac-arm64: - jobs: - - test-bazel7-mac-arm64 - test-bazel-latest-mac-arm64: - jobs: - - test-bazel-latest-mac-arm64 - test-bazel7-windows: - jobs: - - test-bazel7-windows - test-bazel-latest-windows: - jobs: - - test-bazel-latest-windows diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.dockerignore b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.dockerignore deleted file mode 100644 index cf12f58..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.dockerignore +++ /dev/null @@ -1,21 +0,0 @@ -# Ignore everything -* - -# Allow the entrypoint/test script inside the Docker container -!/docker/entrypoint.sh -!/docker/test_dockerimage.sh - -# Allow license file -!LICENSE - -# Allow necessary build files in top-level directory -!emscripten-releases-tags.json -!emsdk -!emsdk.py -!emsdk_env.sh -!emsdk_manifest.json - -# Allow files required to install legacy versions -!legacy-binaryen-tags.txt -!legacy-emscripten-tags.txt -!llvm-tags-64bit.txt diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.flake8 b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.flake8 deleted file mode 100644 index ec94dda..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.flake8 +++ /dev/null @@ -1,24 +0,0 @@ -[flake8] -extend-exclude = - ./.*, - ./binaryen, - ./clang, - ./crunch, - ./downloads, - ./emscripten, - ./fastcomp-clang, - ./fastcomp, - ./git, - ./gnu, - ./llvm, - ./node, - ./python, - ./releases, - ./temp, - ./upstream, - -# E111: Indentation is not a multiple of four -# E114: Indentation is not a multiple of four (comment) -extend-ignore = E111, E114 - -max-line-length = 326 diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.github/stale.yml b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.github/stale.yml deleted file mode 100644 index 1807a00..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.github/stale.yml +++ /dev/null @@ -1,18 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 365 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 30 -# Issues with these labels will never be considered stale -exemptLabels: - - pinned - - security -# Label to use when marking an issue as stale -staleLabel: wontfix -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because there has been no - activity in the past year. It will be closed automatically if no further - activity occurs in the next 30 days. Feel free to re-open at any time if this - issue is still relevant. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.github/workflows/create-release.yml b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.github/workflows/create-release.yml deleted file mode 100644 index 265a361..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.github/workflows/create-release.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Create Release PR - -on: - workflow_dispatch: - inputs: - lto-sha: - required: true - type: string - nonlto-sha: - required: true - type: string - -jobs: - create-release-pr: - runs-on: ubuntu-latest - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - name: Run create_release.py - run: python3 scripts/create_release.py -r ${{ inputs.lto-sha }} -a ${{ inputs.nonlto-sha }} --gh-action - - name: Create PR - id: cpr - uses: peter-evans/create-pull-request@v6 - with: - token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} - title: Release ${{ env.RELEASE_VERSION }} - commit-message: | - Release ${{ env.RELEASE_VERSION }} - team-reviewers: release-reviewers - labels: release - body: | - With emscripten-releases revisions: - https://chromium.googlesource.com/emscripten-releases/+/${{ inputs.lto-sha }} (LTO) - https://chromium.googlesource.com/emscripten-releases/+/${{ inputs.nonlto-sha }} (asserts) - branch: release_${{ env.RELEASE_VERSION }} - delete-branch: true - - name: Enable auto-merge - run: gh pr merge --squash --auto "${{ steps.cpr.outputs.pull-request-number }}" - env: - GH_TOKEN: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.github/workflows/tag-release.yml b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.github/workflows/tag-release.yml deleted file mode 100644 index 1475e87..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.github/workflows/tag-release.yml +++ /dev/null @@ -1,78 +0,0 @@ -# When a release commit created by create-release.yml is landed, create the -# corresponding tag. -name: Create release tag - -on: - push: - paths: - - emscripten-releases-tags.json - - .github/workflows/tag-release.yml - branches: - - main - workflow_dispatch: - -jobs: - tag-release: - # Only activate for commits created by the create-release.yml workflow. - # The assumption is that when manual changes happen, we want to handle - # tagging manually too. - name: Check for release commit and create tag - # The author is emscripten-bot when triggered from Chromium CI, and github-actions when manually triggered. - if: ${{ github.event.head_commit.author.username == 'github-actions[bot]' || github.event.head_commit.author.username == 'emscripten-bot' }} - runs-on: ubuntu-latest - outputs: - is_release: ${{ steps.create-tag.outputs.result }} - steps: - - name: Match message and create tag - id: create-tag - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} - # A commit with the message of the form 'Release X.Y.Z' is expected - # to have been created by create_release.py and update the latest - # release in emscripten-releases-tags.json - script: | - const message = `${{ github.event.head_commit.message }}` - const regex = /Release ([0-9]+.[0-9]+.[0-9]+)/; - const match = message.match(regex); - let is_release = false; - if (match) { - const release = match[1]; - console.log(`Matched release ${release}`); - await github.rest.git.createRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: `refs/tags/${release}`, - sha: context.sha - }); - is_release = true; - } else { - console.log(`Commit message: '${message}' did not match pattern`); - } - return is_release; - - dispatch-emscripten-tag: - name: Dispatch workflow to tag emscripten repo - runs-on: ubuntu-latest - needs: tag-release - if: ${{ needs.tag-release.outputs.is_release == 'true' }} - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - name: Find emscripten revision - # get_emscripten_revision_info.py sets env.EMSCRIPTEN_HASH to the - # emscripten hash associated with the latest release in - # emscripten-releases-tags.json - run: python3 scripts/get_emscripten_revision_info.py - - name: Dispatch emscripten workflow - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} - script: | - await github.rest.actions.createWorkflowDispatch({ - owner: context.repo.owner, - repo: 'emscripten', - workflow_id: 'tag-release.yml', - ref: 'main', - inputs: { 'release-sha': '${{ env.EMSCRIPTEN_HASH }}' } - }); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.gitignore b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.gitignore deleted file mode 100644 index d181c30..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/.gitignore +++ /dev/null @@ -1,35 +0,0 @@ -*.pyc -__pycache__ - -# Support for --embedded configs -/.emscripten -/.emscripten.old -/.emscripten_cache -/.emscripten_cache__last_clear -/.emscripten_sanity -/.emscripten_sanity_wasm - -# Tags files that get generated at runtime -/emscripten-releases-tot.txt - -# File that get download/extracted by emsdk itself -/ccache -/gnu -/upstream -/fastcomp -/fastcomp-clang/ -/llvm -/ninja -/releases -/clang -/emscripten -/git -/node -/python -/temp -/downloads -/crunch -/java -/mingw -/spidermonkey -/binaryen diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/LICENSE b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/LICENSE deleted file mode 100644 index 1b8cf86..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2018 Emscripten authors (see AUTHORS in Emscripten) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ----------------------------------------------------------------------------- - -This is the MIT/Expat Licence. For more information see: - -1. http://www.opensource.org/licenses/mit-license.php - -2. http://en.wikipedia.org/wiki/MIT_License diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/README.md b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/README.md deleted file mode 100644 index c98222e..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/README.md +++ /dev/null @@ -1,245 +0,0 @@ -Emscripten SDK -============== - -[![CircleCI](https://circleci.com/gh/emscripten-core/emsdk/tree/main.svg?style=svg)](https://circleci.com/gh/emscripten-core/emsdk/tree/main) - -The Emscripten toolchain is distributed as a standalone Emscripten SDK. The SDK -provides all the required tools, such as Clang, Python and Node.js along with an -update mechanism that enables migrating to newer Emscripten versions as they are -released. - -You can also set up Emscripten from source, without the pre-built SDK, see -"Installing from Source" below. - -## Downloads / How do I get the latest Emscripten build? - -To get started with Emscripten development, see the [Emscripten website -documentation](https://emscripten.org/docs/getting_started/downloads.html). - -That explains how to use the emsdk to get the latest binary builds (without -compiling from source). Basically, that amounts to - -``` -git pull -./emsdk install latest -./emsdk activate latest -``` - -## SDK Concepts - -The Emscripten SDK is effectively a small package manager for tools that are -used in conjunction with Emscripten. The following glossary highlights the -important concepts to help understanding the internals of the SDK: - -* **Tool**: The basic unit of software bundled in the SDK. A Tool has a name and - a version. For example, 'clang-3.2-32bit' is a Tool that contains the 32-bit - version of the Clang v3.2 compiler. -* **SDK**: A set of tools. For example, 'sdk-1.5.6-32bit' is an SDK consisting - of the tools `clang-3.2-32bit`, `node-0.10.17-32bit`, `python-2.7.5.1-32bit` - and `emscripten-1.5.6`. -* **Active Tool/SDK**: Emscripten SDK stores compiler configuration in a file - called `.emscripten` within the emsdk directory. This file points to paths - for Emscripten, Python, Clang and so on. If the configuration file points to a - Tool in a specific directory, then that tool is denoted as being - **active**. This mechanism allows switching between different installed - tools and SDKs. -* **emsdk**: This is the name of the manager script that Emscripten SDK is - accessed through. Most operations are of the form `emsdk `. - -## System Requirements - -Using the emsdk pre-compiled packages requires only the minimal set of -dependencies lists below. When building from source a wider set of tools -include git, cmake, and a host compiler are required. See: -https://emscripten.org/docs/building_from_source/toolchain_what_is_needed.html. - -### Mac OS X - -- For Intel-based Macs, macOS 10.13 or newer. For ARM64 M1 based Macs, macOS - 11.0 or newer. -- `java`: For running closure compiler (optional). After installing emscripten - via emsdk, typing 'emcc --help' should pop up a OS X dialog "Java is not - installed. To open java, you need a Java SE 6 runtime. Would you like to - install one now?" that will automatically download a Java runtime to the - system. - -### Linux - -- `python`: Version 3.9.2 or above. -- `java`: For running closure compiler (optional) - -The emsdk pre-compiled binaries are built against Ubuntu/Focal 20.04 LTS and -therefore depend on system libraries compatible with versions of `glibc` and -`libstdc++` present in that release. If your linux distribution is very old -you may not be able to use the pre-compiled binaries packages. - -### Windows - -- `java`: For running closure compiler (optional) - -## Uninstalling the Emscripten SDK - -To remove the Emscripten SDK, simply delete the emsdk directory. - -## SDK Maintenance - -The following tasks are common with the Emscripten SDK: - -### How do I work the emsdk utility? - -Run `emsdk help` or just `emsdk` to get information about all available commands. - -### How do I check the installation status and version of the SDK and tools? - -To get a list of all currently installed tools and SDK versions, and all -available tools, run `emsdk list`. -* A line will be printed for each tool/SDK that is available for installation. -* The text `INSTALLED` will be shown for each tool that has already been - installed. -* If a tool/SDK is currently active, a star * will be shown next to it. -* If a tool/SDK is currently active, but the terminal your are calling emsdk - from does not have `PATH` and environment set up to utilize that tool, a star - in parentheses (\*) will be shown next to it. Run `emsdk_env.bat` (Windows) or - `source ./emsdk_env.sh` (Linux and OS X) to set up the environment for the - calling terminal. - -### How do I install a tool/SDK version? - -Run the command `emsdk install ` to download and install a new -tool or an SDK version. - -### How do I remove a tool or an SDK? - -Run the command `emsdk uninstall ` to delete the given tool or -SDK from the local hard drive completely. - -### How do I check for updates to the Emscripten SDK? - -`emsdk update` will fetch package information for all the new tools and -SDK versions. After that, run `emsdk install ` to install a new -version. - -### How do I install an old Emscripten compiler version? - -Emsdk contains a history of old compiler versions that you can use to maintain -your migration path. Type `emsdk list --old` to get a list of archived tool and -SDK versions, and `emsdk install ` to install it. - -### I want to build from source! - -Some Emsdk Tool and SDK targets refer to packages that are precompiled, and -no compilation is needed when installing them. Other Emsdk Tools and SDK -targets come "from source", meaning that they will fetch the source repositories -using git, and compile the package on demand. - -When you run `emsdk list`, it will group the Tools and SDKs under these two -categories. - -To obtain and build latest wasm SDK from source, run - -``` -emsdk install sdk-main-64bit -emsdk activate sdk-main-64bit -``` - -You can use this target for example to bootstrap developing patches to LLVM, -Binaryen or Emscripten. (After initial installation, use `git remote add` -in the cloned tree to add your own fork to push changes as patches) - -If you only intend to contribute to Emscripten repository, and not to LLVM -or Binaryen, you can also use precompiled versions of them, and only git -clone the Emscripten repository. For more details, see - -https://emscripten.org/docs/contributing/developers_guide.html?highlight=developer#setting-up - -### When working on git branches compiled from source, how do I update to a newer compiler version? - -Unlike tags and precompiled versions, a few of the SDK packages are based on -"moving" git branches and compiled from source (e.g. sdk-main, -sdk-main, emscripten-main, binaryen-main). Because of that, the -compiled versions will eventually go out of date as new commits are introduced -to the development branches. To update an old compiled installation of one of -this branches, simply reissue the "emsdk install" command on that tool/SDK. This -will `git pull` the latest changes to the branch and issue an incremental -recompilation of the target in question. This way you can keep calling `emsdk -install` to keep an Emscripten installation up to date with a given git branch. - -Note though that if the previously compiled branch is very old, sometimes CMake -gets confused and is unable to properly rebuild a project. This has happened in -the past e.g. when LLVM migrated to requiring a newer CMake version. In cases of -any odd compilation errors, it is advised to try deleting the intermediate build -directory to clear the build (e.g. "emsdk/clang/fastcomp/build_xxx/") before -reissuing `emsdk install`. - -### How do I change the currently active SDK version? - -You can toggle between different tools and SDK versions by running `emsdk -activate `. Activating a tool will set up `~/.emscripten` to -point to that particular tool. On Windows, you can pass the option `--permanent` to -the `activate` command to register the environment permanently for the current user. Use `--system` to do this for all users. - -### How do I track the latest Emscripten development with the SDK? - -A common and supported use case of the Emscripten SDK is to enable the workflow -where you directly interact with the github repositories. This allows you to -obtain new features and latest fixes immediately as they are pushed to the -github repository, without having to wait for release to be tagged. You do not -need a github account or a fork of Emscripten to do this. To switch to using the -latest git development branch `main`, run the following: - - emsdk install git-1.9.4 # Install git. Skip if the system already has it. - emsdk install sdk-main-64bit # Clone+pull the latest emscripten-core/emscripten/main. - emsdk activate sdk-main-64bit # Set the main SDK as the currently active one. - -### How do I use my own Emscripten github fork with the SDK? - -It is also possible to use your own fork of the Emscripten repository via the -SDK. This is achieved with standard git machinery, so if you are already -acquainted with working on multiple remotes in a git clone, these steps should -be familiar to you. This is useful in the case when you want to make your own -modifications to the Emscripten toolchain, but still keep using the SDK -environment and tools. To set up your own fork as the currently active -Emscripten toolchain, first install the `sdk-main` SDK like shown in the -previous section, and then run the following commands in the emsdk directory: - - cd emscripten/main - # Add a git remote link to your own repository. - git remote add myremote https://github.com/mygituseraccount/emscripten.git - # Obtain the changes in your link. - git fetch myremote - # Switch the emscripten-main tool to use your fork. - git checkout -b mymain --track myremote/main - -In this way you can utilize the Emscripten SDK tools while using your own git -fork. You can switch back and forth between remotes via the `git checkout` -command as usual. - -### How do I use Emscripten SDK with a custom version of python, java, node.js or some other tool? - -The provided Emscripten SDK targets are metapackages that refer to a specific -set of tools that have been tested to work together. For example, -`sdk-1.35.0-64bit` is an alias to the individual packages `clang-e1.35.0-64bit`, -`node-4.1.1-64bit`, `python-2.7.5.3-64bit` and `emscripten-1.35.0`. This means -that if you install this version of the SDK, both python and node.js will be -installed inside emsdk as well. If you want to use your own/system python or -node.js instead, you can opt to install emsdk by specifying the individual set -of packages that you want to use. For example, `emsdk install -clang-e1.35.0-64bit emscripten-1.35.0` will only install the Emscripten -LLVM/Clang compiler and the Emscripten frontend without supplying python and -node.js. - -### My installation fails with "fatal error: ld terminated with signal 9 [Killed]"? - -This may happen if the system runs out of memory. If you are attempting to build -one of the packages from source and are running in a virtual OS or may have -relatively little RAM and disk space available, then the build might fail. Try -feeding your computer more memory. Another thing to try is to force emsdk -install to build in a singlethreaded mode, which will require less RAM -simultaneously. To do this, pass the `-j1` flag to the `emsdk install` command. - -### How do I run Emscripten on 32-bit systems or non-x86-64 systems? - -Emscripten SDK releases are no longer packaged or maintained for 32-bit systems. -If you want to run Emscripten on a 32-bit system, you can try manually building -the compiler. Follow the steps in the above section "Building an Emscripten tag -or branch from source" to get started. diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/SECURITY.md b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/SECURITY.md deleted file mode 100644 index 4617728..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/SECURITY.md +++ /dev/null @@ -1,16 +0,0 @@ -# Security Policy - -If you have discovered a security vulnerability in this project, please report it -privately. **Do not disclose it as a public issue.** This gives us time to work with you -to fix the issue before public exposure, reducing the chance that the exploit will be -used before a patch is released. - -Please submit the report as a [security bug on the Chromium tracker](https://bugs.chromium.org/p/chromium/issues/entry?template=Security%20Bug). - -Please provide the following information in your report: - -- A description of the vulnerability and its impact -- How to reproduce the issue -- Make it clear that it's an Emscripten SDK bug. - -We ask that you give us 90 days to work on a fix before public exposure. diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/.bazelrc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/.bazelrc deleted file mode 100644 index fbd75a7..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/.bazelrc +++ /dev/null @@ -1 +0,0 @@ -build --incompatible_enable_cc_toolchain_resolution diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/.gitignore b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/.gitignore deleted file mode 100644 index a6ef824..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bazel-* diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/BUILD b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/BUILD deleted file mode 100644 index 387dc66..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -filegroup(name = "empty") - -platform( - name = "platform_wasm", - constraint_values = [ - "@platforms//cpu:wasm32", - "@platforms//os:emscripten", - ], -) - -platform( - name = "platform_wasi", - constraint_values = [ - "@platforms//cpu:wasm32", - "@platforms//os:wasi", - ], -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/MODULE.bazel b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/MODULE.bazel deleted file mode 100644 index 5240178..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/MODULE.bazel +++ /dev/null @@ -1,79 +0,0 @@ -module( - name = "emsdk", - version = "4.0.9", -) - -bazel_dep(name = "platforms", version = "0.0.11") -bazel_dep(name = "bazel_skylib", version = "1.7.1") -bazel_dep(name = "aspect_rules_js", version = "1.42.0") -bazel_dep(name = "rules_nodejs", version = "6.3.2") -bazel_dep(name = "rules_cc", version = "0.1.1") -bazel_dep(name = "rules_python", version = "1.3.0") - -python = use_extension("@rules_python//python/extensions:python.bzl", "python") -python.toolchain( - python_version = "3.13", -) - -node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") -node.toolchain(node_version = "20.18.0") -use_repo(node, "nodejs") - -emscripten_deps = use_extension( - "//:emscripten_deps.bzl", - "emscripten_deps", -) -use_repo(emscripten_deps, "emscripten_bin_linux") -use_repo(emscripten_deps, "emscripten_bin_linux_arm64") -use_repo(emscripten_deps, "emscripten_bin_mac") -use_repo(emscripten_deps, "emscripten_bin_mac_arm64") -use_repo(emscripten_deps, "emscripten_bin_win") - -npm = use_extension( - "@aspect_rules_js//npm:extensions.bzl", - "npm", -) -npm.npm_translate_lock( - name = "emscripten_npm_linux", - data = ["@emscripten_bin_linux//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_linux//:emscripten/package-lock.json", -) -npm.npm_translate_lock( - name = "emscripten_npm_linux_arm64", - data = ["@emscripten_bin_linux_arm64//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_linux_arm64//:emscripten/package-lock.json", -) -npm.npm_translate_lock( - name = "emscripten_npm_mac", - data = ["@emscripten_bin_mac//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_mac//:emscripten/package-lock.json", -) -npm.npm_translate_lock( - name = "emscripten_npm_mac_arm64", - data = ["@emscripten_bin_mac_arm64//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_mac_arm64//:emscripten/package-lock.json", -) -npm.npm_translate_lock( - name = "emscripten_npm_win", - data = ["@emscripten_bin_win//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_win//:emscripten/package-lock.json", -) -use_repo( - npm, - "emscripten_npm_linux", - "emscripten_npm_linux_arm64", - "emscripten_npm_mac", - "emscripten_npm_mac_arm64", - "emscripten_npm_win", -) - -emscripten_cache = use_extension("//:emscripten_cache.bzl", "emscripten_cache") -use_repo(emscripten_cache, "emscripten_cache") - -register_toolchains( - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_linux", - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_linux_arm64", - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_mac", - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_mac_arm64", - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_win", -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/MODULE.bazel.lock b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/MODULE.bazel.lock deleted file mode 100644 index 69ca244..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/MODULE.bazel.lock +++ /dev/null @@ -1,3696 +0,0 @@ -{ - "lockFileVersion": 18, - "registryFileHashes": { - "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", - "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", - "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", - "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/MODULE.bazel": "e4529e12d8cd5b828e2b5960d07d3ec032541740d419d7d5b859cabbf5b056f9", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/source.json": "80cb66069ad626e0921555cd2bf278286fd7763fae2450e564e351792e8303f4", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/MODULE.bazel": "f19e6b4a16f77f8cf3728eac1f60dbfd8e043517fd4f4dbf17a75a6c50936d62", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/source.json": "abbb3eac3b6af76b8ce230a9a901c6d08d93f4f5ffd55314bf630827dddee57e", - "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", - "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", - "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", - "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", - "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", - "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", - "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", - "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", - "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", - "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", - "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", - "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", - "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", - "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", - "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", - "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", - "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", - "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", - "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", - "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", - "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", - "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", - "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", - "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", - "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", - "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", - "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", - "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", - "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", - "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", - "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", - "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", - "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", - "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", - "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", - "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", - "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", - "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", - "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", - "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", - "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", - "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", - "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", - "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", - "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", - "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", - "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", - "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", - "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", - "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", - "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", - "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", - "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", - "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", - "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", - "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", - "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", - "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", - "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", - "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", - "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", - "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", - "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", - "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", - "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", - "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", - "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", - "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", - "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", - "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", - "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", - "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", - "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", - "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", - "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", - "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", - "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", - "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", - "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", - "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", - "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", - "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", - "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", - "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", - "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", - "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", - "https://bcr.bazel.build/modules/rules_python/1.3.0/source.json": "25932f917cd279c7baefa6cb1d3fa8750a7a29de522024449b19af6eab51f4a0", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", - "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", - "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", - "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", - "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", - "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", - "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", - "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", - "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", - "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", - "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", - "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" - }, - "selectedYankedVersions": {}, - "moduleExtensions": { - "//:emscripten_cache.bzl%emscripten_cache": { - "general": { - "bzlTransitiveDigest": "uqDvXmpTNqW4+ie/Fk+xC3TrFrKvL+9hNtoP51Kt2oo=", - "usagesDigest": "hMVKvInxunfDgmxewLpCIKhgZsrX3FDbi457LYnniZ8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_cache": { - "repoRuleId": "@@//:emscripten_cache.bzl%_emscripten_cache_repository", - "attributes": { - "configuration": [], - "targets": [] - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "//:emscripten_deps.bzl%emscripten_deps": { - "general": { - "bzlTransitiveDigest": "h0wQ3PSRx/Q9n+izTifYO8L728OTd9B5YbLOWcobVYE=", - "usagesDigest": "/x8y7Sw52S7o089fbMUUat1GlyVBrfKFc31+LteokYI=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_bin_linux": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_linux_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_mac": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_mac_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_win": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/clang++.exe\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/llvm-ar.exe\",\n \"bin/llvm-dwarfdump.exe\",\n \"bin/llvm-nm.exe\",\n \"bin/llvm-objcopy.exe\",\n \"bin/wasm-ctor-eval.exe\",\n \"bin/wasm-emscripten-finalize.exe\",\n \"bin/wasm-ld.exe\",\n \"bin/wasm-metadce.exe\",\n \"bin/wasm-opt.exe\",\n \"bin/wasm-split.exe\",\n \"bin/wasm2js.exe\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar.exe\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", - "strip_prefix": "install", - "type": "zip", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.zip" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "", - "bazel_tools", - "bazel_tools" - ], - [ - "bazel_tools", - "rules_cc", - "rules_cc+" - ] - ] - } - }, - "@@aspect_bazel_lib+//lib:extensions.bzl%toolchains": { - "general": { - "bzlTransitiveDigest": "nrCBrZBQH3Dq30TXMpPMV6lWpEDozX0S0kCia4Lrpj0=", - "usagesDigest": "1c7PNX163TGNqWzfejRnWpH/hiT4/GRG0kYxuez0Uz0=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "copy_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_directory" - } - }, - "copy_to_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_to_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_to_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_to_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_to_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_to_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_to_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_to_directory" - } - }, - "jq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "1.6" - } - }, - "jq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "1.6" - } - }, - "jq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "1.6" - } - }, - "jq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "1.6" - } - }, - "jq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", - "attributes": {} - }, - "jq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", - "attributes": { - "user_repository_name": "jq" - } - }, - "yq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "4.25.2" - } - }, - "yq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "4.25.2" - } - }, - "yq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "4.25.2" - } - }, - "yq_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "4.25.2" - } - }, - "yq_linux_s390x": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_s390x", - "version": "4.25.2" - } - }, - "yq_linux_ppc64le": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_ppc64le", - "version": "4.25.2" - } - }, - "yq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "4.25.2" - } - }, - "yq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", - "attributes": {} - }, - "yq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", - "attributes": { - "user_repository_name": "yq" - } - }, - "coreutils_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "0.0.16" - } - }, - "coreutils_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "0.0.16" - } - }, - "coreutils_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "0.0.16" - } - }, - "coreutils_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "0.0.16" - } - }, - "coreutils_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "0.0.16" - } - }, - "coreutils_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", - "attributes": { - "user_repository_name": "coreutils" - } - }, - "bsd_tar_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "bsd_tar_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "bsd_tar_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "bsd_tar_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "bsd_tar_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "bsd_tar_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", - "attributes": { - "user_repository_name": "bsd_tar" - } - }, - "expand_template_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "expand_template_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "expand_template_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "expand_template_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "expand_template_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "expand_template_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "expand_template_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_toolchains_repo", - "attributes": { - "user_repository_name": "expand_template" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { - "general": { - "bzlTransitiveDigest": "poAa/2uyrVSr9Hel1HD6GfFwqId27yXfePnG+3Dmt90=", - "usagesDigest": "yxkJioaKxOYkZAdkGoq2Cm79s4pW36Xwx7a8awQOU2E=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "pnpm": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "root_package": "", - "link_workspace": "", - "link_packages": {}, - "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", - "url": "", - "commit": "", - "patch_args": [ - "-p0" - ], - "patches": [], - "custom_postinstall": "", - "npm_auth": "", - "npm_auth_basic": "", - "npm_auth_username": "", - "npm_auth_password": "", - "lifecycle_hooks": [], - "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", - "generate_bzl_library_targets": false, - "extract_full_archive": true - } - }, - "pnpm__links": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "dev": false, - "root_package": "", - "link_packages": {}, - "deps": {}, - "transitive_closure": {}, - "lifecycle_build_target": false, - "lifecycle_hooks_env": [], - "lifecycle_hooks_execution_requirements": [ - "no-sandbox" - ], - "lifecycle_hooks_use_default_shell_env": false, - "bins": {}, - "package_visibility": [ - "//visibility:public" - ], - "replace_package": "" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ], - [ - "aspect_rules_js+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_rules_js+", - "bazel_features", - "bazel_features+" - ], - [ - "aspect_rules_js+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_rules_js+", - "bazel_tools", - "bazel_tools" - ], - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "bazel_features+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@pybind11_bazel+//:python_configure.bzl%extension": { - "general": { - "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", - "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", - "recordedFileInputs": { - "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" - }, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_python": { - "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", - "attributes": {} - }, - "pybind11": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@pybind11_bazel+//:pybind11.BUILD", - "strip_prefix": "pybind11-2.11.1", - "urls": [ - "https://github.com/pybind/pybind11/archive/v2.11.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "pybind11_bazel+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { - "general": { - "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", - "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "platforms": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" - ], - "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" - } - }, - "rules_python": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", - "strip_prefix": "rules_python-0.28.0", - "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" - } - }, - "bazel_skylib": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" - ] - } - }, - "com_google_absl": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" - ], - "strip_prefix": "abseil-cpp-20240116.1", - "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" - } - }, - "rules_fuzzing_oss_fuzz": { - "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", - "attributes": {} - }, - "honggfuzz": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", - "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", - "url": "https://github.com/google/honggfuzz/archive/2.5.zip", - "strip_prefix": "honggfuzz-2.5" - } - }, - "rules_fuzzing_jazzer": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" - } - }, - "rules_fuzzing_jazzer_api": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_fuzzing+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { - "general": { - "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", - "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "compatibility_proxy": { - "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_java+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { - "general": { - "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", - "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "com_github_jetbrains_kotlin_git": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", - "attributes": { - "urls": [ - "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" - ], - "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" - } - }, - "com_github_jetbrains_kotlin": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", - "attributes": { - "git_repository_name": "com_github_jetbrains_kotlin_git", - "compiler_version": "1.9.23" - } - }, - "com_github_google_ksp": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", - "attributes": { - "urls": [ - "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" - ], - "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", - "strip_version": "1.9.23-1.0.20" - } - }, - "com_github_pinterest_ktlint": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", - "attributes": { - "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", - "urls": [ - "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" - ], - "executable": true - } - }, - "rules_android": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", - "strip_prefix": "rules_android-0.1.1", - "urls": [ - "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_kotlin+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_nodejs+//nodejs:extensions.bzl%node": { - "general": { - "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", - "usagesDigest": "02fIHVSGNmq3/4pf3KaxTES2ZYYjuW75/2q5dmj9+p0=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "nodejs_linux_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_amd64" - } - }, - "nodejs_linux_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_arm64" - } - }, - "nodejs_linux_s390x": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_s390x" - } - }, - "nodejs_linux_ppc64le": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_ppc64le" - } - }, - "nodejs_darwin_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_amd64" - } - }, - "nodejs_darwin_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_arm64" - } - }, - "nodejs_windows_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "windows_amd64" - } - }, - "nodejs": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_host": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_toolchains": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", - "attributes": { - "user_node_repository_name": "nodejs" - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@rules_python+//python/extensions:pip.bzl%pip": { - "general": { - "bzlTransitiveDigest": "Y1+Nq7F10jItATWoJUqrIUjUtsCs4cqQw9XXIyl9S3A=", - "usagesDigest": "F5jSeup4ZspeKK83+fXZFbblRp0MSGdobyZdSKc8xP8=", - "recordedFileInputs": { - "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", - "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", - "@@rules_python+//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8", - "@@rules_python+//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", - "@@rules_python+//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76" - }, - "recordedDirentsInputs": {}, - "envVariables": { - "RULES_PYTHON_REPO_DEBUG": null, - "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null - }, - "generatedRepoSpecs": { - "pip_deps_310_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_310_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_311_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_311_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_312_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_312_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_38_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_38_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_39_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_39_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "setuptools<=70.3.0" - } - }, - "rules_fuzzing_py_deps_310_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_310_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_311_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_311_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_312_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_312_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_38_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_38_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_39_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_39_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "backports.tarfile-1.2.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", - "urls": [ - "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "backports_tarfile-1.2.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", - "urls": [ - "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "certifi-2024.8.30-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", - "urls": [ - "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_certifi_sdist_bec941d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "certifi-2024.8.30.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", - "urls": [ - "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", - "urls": [ - "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", - "urls": [ - "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", - "urls": [ - "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", - "urls": [ - "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", - "urls": [ - "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_sdist_1c39c601": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cffi-1.17.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", - "urls": [ - "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", - "urls": [ - "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", - "urls": [ - "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", - "urls": [ - "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", - "urls": [ - "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", - "urls": [ - "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", - "urls": [ - "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", - "urls": [ - "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", - "urls": [ - "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", - "urls": [ - "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", - "urls": [ - "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", - "urls": [ - "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "charset_normalizer-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", - "urls": [ - "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", - "urls": [ - "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", - "urls": [ - "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", - "urls": [ - "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", - "urls": [ - "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", - "urls": [ - "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", - "urls": [ - "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_sdist_315b9001": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cryptography-43.0.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", - "urls": [ - "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "docutils-0.21.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", - "urls": [ - "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "docutils-0.21.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", - "urls": [ - "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "idna-3.10-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", - "urls": [ - "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_idna_sdist_12f65c9b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "idna-3.10.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", - "urls": [ - "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "importlib_metadata-8.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", - "urls": [ - "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "importlib_metadata-8.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", - "urls": [ - "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.classes-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", - "urls": [ - "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco.classes-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", - "urls": [ - "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.context-6.0.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", - "urls": [ - "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_context-6.0.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", - "urls": [ - "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.functools-4.1.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", - "urls": [ - "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_functools-4.1.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", - "urls": [ - "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "jeepney-0.8.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", - "urls": [ - "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jeepney-0.8.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", - "urls": [ - "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "keyring-25.4.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", - "urls": [ - "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "keyring-25.4.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", - "urls": [ - "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "markdown_it_py-3.0.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", - "urls": [ - "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "markdown-it-py-3.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", - "urls": [ - "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "mdurl-0.1.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", - "urls": [ - "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "mdurl-0.1.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", - "urls": [ - "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "more_itertools-10.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", - "urls": [ - "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "more-itertools-10.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", - "urls": [ - "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", - "urls": [ - "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", - "urls": [ - "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", - "urls": [ - "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", - "urls": [ - "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", - "urls": [ - "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", - "urls": [ - "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", - "urls": [ - "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", - "urls": [ - "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", - "urls": [ - "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", - "urls": [ - "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", - "urls": [ - "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_sdist_94a16692": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "nh3-0.2.18.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", - "urls": [ - "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pkginfo-1.10.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", - "urls": [ - "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pkginfo-1.10.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", - "urls": [ - "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "pycparser-2.22-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", - "urls": [ - "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pycparser-2.22.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", - "urls": [ - "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pygments-2.18.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", - "urls": [ - "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pygments_sdist_786ff802": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pygments-2.18.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", - "urls": [ - "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", - "urls": [ - "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pywin32-ctypes-0.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", - "urls": [ - "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "readme_renderer-44.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", - "urls": [ - "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "readme_renderer-44.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", - "urls": [ - "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests-2.32.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", - "urls": [ - "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_sdist_55365417": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-2.32.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", - "urls": [ - "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", - "urls": [ - "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-toolbelt-1.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", - "urls": [ - "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", - "urls": [ - "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rfc3986-2.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", - "urls": [ - "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rich-13.9.4-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", - "urls": [ - "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rich_sdist_43959497": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rich-13.9.4.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", - "urls": [ - "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "SecretStorage-3.3.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", - "urls": [ - "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "SecretStorage-3.3.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", - "urls": [ - "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "twine-5.1.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", - "urls": [ - "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_twine_sdist_9aa08251": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "twine-5.1.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", - "urls": [ - "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "urllib3-2.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", - "urls": [ - "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "urllib3-2.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", - "urls": [ - "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "zipp-3.20.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", - "urls": [ - "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "zipp-3.20.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", - "urls": [ - "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" - ] - } - }, - "pip_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "pip_deps", - "extra_hub_aliases": {}, - "whl_map": { - "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", - "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "numpy", - "setuptools" - ], - "groups": {} - } - }, - "rules_fuzzing_py_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_fuzzing_py_deps", - "extra_hub_aliases": {}, - "whl_map": { - "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", - "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "absl_py", - "six" - ], - "groups": {} - } - }, - "rules_python_publish_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_python_publish_deps", - "extra_hub_aliases": {}, - "whl_map": { - "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", - "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", - "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", - "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", - "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", - "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", - "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", - "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", - "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", - "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", - "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", - "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", - "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", - "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", - "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", - "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", - "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", - "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", - "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", - "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" - }, - "packages": [ - "backports_tarfile", - "certifi", - "charset_normalizer", - "docutils", - "idna", - "importlib_metadata", - "jaraco_classes", - "jaraco_context", - "jaraco_functools", - "keyring", - "markdown_it_py", - "mdurl", - "more_itertools", - "nh3", - "pkginfo", - "pygments", - "readme_renderer", - "requests", - "requests_toolbelt", - "rfc3986", - "rich", - "twine", - "urllib3", - "zipp" - ], - "groups": {} - } - } - }, - "moduleExtensionMetadata": { - "useAllRepos": "NO", - "reproducible": false - }, - "recordedRepoMappingEntries": [ - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "rules_python+", - "bazel_features", - "bazel_features+" - ], - [ - "rules_python+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "rules_python+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_python+", - "pypi__build", - "rules_python++internal_deps+pypi__build" - ], - [ - "rules_python+", - "pypi__click", - "rules_python++internal_deps+pypi__click" - ], - [ - "rules_python+", - "pypi__colorama", - "rules_python++internal_deps+pypi__colorama" - ], - [ - "rules_python+", - "pypi__importlib_metadata", - "rules_python++internal_deps+pypi__importlib_metadata" - ], - [ - "rules_python+", - "pypi__installer", - "rules_python++internal_deps+pypi__installer" - ], - [ - "rules_python+", - "pypi__more_itertools", - "rules_python++internal_deps+pypi__more_itertools" - ], - [ - "rules_python+", - "pypi__packaging", - "rules_python++internal_deps+pypi__packaging" - ], - [ - "rules_python+", - "pypi__pep517", - "rules_python++internal_deps+pypi__pep517" - ], - [ - "rules_python+", - "pypi__pip", - "rules_python++internal_deps+pypi__pip" - ], - [ - "rules_python+", - "pypi__pip_tools", - "rules_python++internal_deps+pypi__pip_tools" - ], - [ - "rules_python+", - "pypi__pyproject_hooks", - "rules_python++internal_deps+pypi__pyproject_hooks" - ], - [ - "rules_python+", - "pypi__setuptools", - "rules_python++internal_deps+pypi__setuptools" - ], - [ - "rules_python+", - "pypi__tomli", - "rules_python++internal_deps+pypi__tomli" - ], - [ - "rules_python+", - "pypi__wheel", - "rules_python++internal_deps+pypi__wheel" - ], - [ - "rules_python+", - "pypi__zipp", - "rules_python++internal_deps+pypi__zipp" - ], - [ - "rules_python+", - "pythons_hub", - "rules_python++python+pythons_hub" - ], - [ - "rules_python++python+pythons_hub", - "python_3_10_host", - "rules_python++python+python_3_10_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_11_host", - "rules_python++python+python_3_11_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_12_host", - "rules_python++python+python_3_12_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_13_host", - "rules_python++python+python_3_13_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_8_host", - "rules_python++python+python_3_8_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_9_host", - "rules_python++python+python_3_9_host" - ] - ] - } - }, - "@@rules_python+//python/uv:uv.bzl%uv": { - "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "vJ5RHUxAnV24M5swNGiAnkdxMx3Hp/iOLmNANTC5Xc8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "uv": { - "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", - "attributes": { - "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", - "toolchain_names": [ - "none" - ], - "toolchain_implementations": { - "none": "'@@rules_python+//python:none'" - }, - "toolchain_compatible_with": { - "none": [ - "@platforms//:incompatible" - ] - }, - "toolchain_target_settings": {} - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_python+", - "platforms", - "platforms" - ] - ] - } - } - } -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/README.md b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/README.md deleted file mode 100644 index b53e6ec..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# Bazel Emscripten toolchain - -## Setup Instructions - -Support for depending on emsdk with a WORKSPACE file was removed and last available in [emsdk version 4.0.6](https://github.com/emscripten-core/emsdk/tree/24fc909c0da13ef641d5ae75e89b5a97f25e37aa). Now we only support inclusion as a bzlmod module. - -In your `MODULE.bazel` file, put: -```starlark -emsdk_version = "4.0.6" -bazel_dep(name = "emsdk", version = emsdk_version) -git_override( - module_name = "emsdk", - remote = "https://github.com/emscripten-core/emsdk.git", - strip_prefix = "bazel", - tag = emsdk_version, -) -``` - -You can use a different version of this SDK by changing it in your `MODULE.bazel` file. The Emscripten version is by default the same as the SDK version, but you can use a different one as well by adding to your `MODULE.bazel`: - -``` -emscripten_deps = use_extension( - "@emsdk//:emscripten_deps.bzl", - "emscripten_deps", -) -emscripten_deps.config(version = "4.0.1") -``` - -## Building - -Put the following line into your `.bazelrc`: - -``` -build --incompatible_enable_cc_toolchain_resolution -``` - -Then write a new rule wrapping your `cc_binary`. - -```starlark -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") - -cc_binary( - name = "hello-world", - srcs = ["hello-world.cc"], -) - -wasm_cc_binary( - name = "hello-world-wasm", - cc_target = ":hello-world", -) -``` - -Now you can run `bazel build :hello-world-wasm`. The result of this build will -be the individual files produced by emscripten. Note that some of these files -may be empty. This is because bazel has no concept of optional outputs for -rules. - -`wasm_cc_binary` uses transition to use emscripten toolchain on `cc_target` -and all of its dependencies, and does not require amending `.bazelrc`. This -is the preferred way, since it also unpacks the resulting tarball. - -The Emscripten cache shipped by default does not include LTO, 64-bit or PIC -builds of the system libraries and ports. If you wish to use these features you -will need to declare the cache in your `MODULE.bazel` as follows. Note -that the configuration consists of the same flags that can be passed to -embuilder. If `targets` is not set, all system libraries and ports will be -built, i.e., the `ALL` option to embuilder. - -```starlark -emscripten_cache = use_extension( - "@emsdk//:emscripten_cache.bzl", - "emscripten_cache", -) -emscripten_cache.configuration(flags = ["--lto"]) -emscripten_cache.targets(targets = [ - "crtbegin", - "libprintf_long_double-debug", - "libstubs-debug", - "libnoexit", - "libc-debug", - "libdlmalloc", - "libcompiler_rt", - "libc++-noexcept", - "libc++abi-debug-noexcept", - "libsockets" -]) -``` - -See `test_external/` for an example using [embind](https://emscripten.org/docs/porting/connecting_cpp_and_javascript/embind.html). diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/bazelrc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/bazelrc deleted file mode 100644 index d1c8aef..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/bazelrc +++ /dev/null @@ -1,2 +0,0 @@ -build:wasm --incompatible_enable_cc_toolchain_resolution -build:wasm --platforms=@emsdk//:platform_wasm diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_build_file.bzl b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_build_file.bzl deleted file mode 100644 index 0d7aff2..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_build_file.bzl +++ /dev/null @@ -1,93 +0,0 @@ -"""A templated build file for emscripten repositories""" - -EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE = """ -package(default_visibility = ['//visibility:public']) - -filegroup( - name = "all", - srcs = glob(["**"]), -) - -filegroup( - name = "includes", - srcs = glob([ - "emscripten/cache/sysroot/include/c++/v1/**", - "emscripten/cache/sysroot/include/compat/**", - "emscripten/cache/sysroot/include/**", - "lib/clang/**/include/**", - ]), -) - -filegroup( - name = "emcc_common", - srcs = [ - "emscripten/emcc.py", - "emscripten/embuilder.py", - "emscripten/emscripten-version.txt", - "emscripten/cache/sysroot_install.stamp", - "emscripten/src/settings.js", - "emscripten/src/settings_internal.js", - ] + glob( - include = [ - "emscripten/third_party/**", - "emscripten/tools/**", - ], - exclude = [ - "**/__pycache__/**", - ], - ), -) - -filegroup( - name = "compiler_files", - srcs = [ - "bin/clang{bin_extension}", - "bin/clang++{bin_extension}", - ":emcc_common", - ":includes", - ], -) - -filegroup( - name = "linker_files", - srcs = [ - "bin/clang{bin_extension}", - "bin/llvm-ar{bin_extension}", - "bin/llvm-dwarfdump{bin_extension}", - "bin/llvm-nm{bin_extension}", - "bin/llvm-objcopy{bin_extension}", - "bin/wasm-ctor-eval{bin_extension}", - "bin/wasm-emscripten-finalize{bin_extension}", - "bin/wasm-ld{bin_extension}", - "bin/wasm-metadce{bin_extension}", - "bin/wasm-opt{bin_extension}", - "bin/wasm-split{bin_extension}", - "bin/wasm2js{bin_extension}", - ":emcc_common", - ] + glob( - include = [ - "emscripten/cache/sysroot/lib/**", - "emscripten/node_modules/**", - "emscripten/src/**", - ], - ), -) - -filegroup( - name = "ar_files", - srcs = [ - "bin/llvm-ar{bin_extension}", - "emscripten/emar.py", - "emscripten/emscripten-version.txt", - "emscripten/src/settings.js", - "emscripten/src/settings_internal.js", - ] + glob( - include = [ - "emscripten/tools/**", - ], - exclude = [ - "**/__pycache__/**", - ], - ), -) -""" diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_cache.bzl b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_cache.bzl deleted file mode 100644 index 945c19c..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_cache.bzl +++ /dev/null @@ -1,113 +0,0 @@ -BUILD_FILE_CONTENT_TEMPLATE = """ -package(default_visibility = ['//visibility:public']) -exports_files(['emscripten_config']) -""" - -EMBUILDER_CONFIG_TEMPLATE = """ -CACHE = '{cache}' -BINARYEN_ROOT = '{binaryen_root}' -LLVM_ROOT = '{llvm_root}' -""" - -def get_root_and_script_ext(repository_ctx): - if repository_ctx.os.name.startswith("linux"): - if "amd64" in repository_ctx.os.arch or "x86_64" in repository_ctx.os.arch: - return (repository_ctx.path(Label("@emscripten_bin_linux//:BUILD.bazel")).dirname, "") - elif "aarch64" in repository_ctx.os.arch: - return (repository_ctx.path(Label("@emscripten_bin_linux_arm64//:BUILD.bazel")).dirname, "") - else: - fail("Unsupported architecture for Linux") - elif repository_ctx.os.name.startswith("mac"): - if "amd64" in repository_ctx.os.arch or "x86_64" in repository_ctx.os.arch: - return (repository_ctx.path(Label("@emscripten_bin_mac//:BUILD.bazel")).dirname, "") - elif "aarch64" in repository_ctx.os.arch: - return (repository_ctx.path(Label("@emscripten_bin_mac_arm64//:BUILD.bazel")).dirname, "") - else: - fail("Unsupported architecture for MacOS") - elif repository_ctx.os.name.startswith("windows"): - return (repository_ctx.path(Label("@emscripten_bin_win//:BUILD.bazel")).dirname, ".bat") - else: - fail("Unsupported operating system") - -def _emscripten_cache_repository_impl(repository_ctx): - # Read the default emscripten configuration file - default_config = repository_ctx.read( - repository_ctx.path( - Label("@emsdk//emscripten_toolchain:default_config"), - ), - ) - - if repository_ctx.attr.targets or repository_ctx.attr.configuration: - root, script_ext = get_root_and_script_ext(repository_ctx) - llvm_root = root.get_child("bin") - cache = repository_ctx.path("cache") - - # Create configuration file - embuilder_config_content = EMBUILDER_CONFIG_TEMPLATE.format( - cache = cache, - binaryen_root = root, - llvm_root = llvm_root, - ) - repository_ctx.file("embuilder_config", embuilder_config_content) - embuilder_config_path = repository_ctx.path("embuilder_config") - embuilder_path = "{}{}".format(root.get_child("emscripten").get_child("embuilder"), script_ext) - - # Prepare the command line - if repository_ctx.attr.targets: - targets = repository_ctx.attr.targets - else: - # If no targets are requested, build everything - targets = ["ALL"] - flags = ["--em-config", embuilder_config_path] + repository_ctx.attr.configuration - embuilder_args = [embuilder_path] + flags + ["build"] + targets - - # Run embuilder - repository_ctx.report_progress("Building secondary cache") - result = repository_ctx.execute( - embuilder_args, - quiet = True, - environment = { - "EM_IGNORE_SANITY": "1", - "EM_NODE_JS": "empty", - }, - ) - if result.return_code != 0: - fail("Embuilder exited with a non-zero return code") - - # Override Emscripten's cache with the secondary cache - default_config += "CACHE = '{}'\n".format(cache) - - # Create the configuration file for the toolchain and export - repository_ctx.file("emscripten_config", default_config) - repository_ctx.file("BUILD.bazel", BUILD_FILE_CONTENT_TEMPLATE) - -_emscripten_cache_repository = repository_rule( - implementation = _emscripten_cache_repository_impl, - attrs = { - "configuration": attr.string_list(), - "targets": attr.string_list(), - }, -) - -def _emscripten_cache_impl(ctx): - all_configuration = [] - all_targets = [] - for mod in ctx.modules: - for configuration in mod.tags.configuration: - all_configuration += configuration.flags - for targets in mod.tags.targets: - all_targets += targets.targets - - _emscripten_cache_repository( - name = "emscripten_cache", - configuration = all_configuration, - targets = all_targets, - ) - -emscripten_cache = module_extension( - tag_classes = { - "configuration": tag_class(attrs = {"flags": attr.string_list()}), - "targets": tag_class(attrs = {"targets": attr.string_list()}), - }, - implementation = _emscripten_cache_impl, -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_deps.bzl b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_deps.bzl deleted file mode 100644 index 79dca52..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_deps.bzl +++ /dev/null @@ -1,99 +0,0 @@ -load(":remote_emscripten_repository.bzl", "remote_emscripten_repository") -load(":revisions.bzl", "EMSCRIPTEN_TAGS") - -def _parse_version(v): - return [int(u) for u in v.split(".")] - -def _empty_repository_impl(ctx): - ctx.file("MODULE.bazel", """module(name = "{}")""".format(ctx.name)) - ctx.file("BUILD.bazel", "") - -_empty_repository = repository_rule( - implementation = _empty_repository_impl, -) - -def emscripten_repo_name(name): - return "emscripten_bin_{}".format(name) - -def _emscripten_deps_impl(ctx): - version = None - - for mod in ctx.modules: - for config in mod.tags.config: - if config.version and version != None: - fail("More than one emscripten version specified!") - version = config.version - if version == None: - version = "latest" - - if version == "latest": - version = reversed(sorted(EMSCRIPTEN_TAGS.keys(), key = _parse_version))[0] - - revision = EMSCRIPTEN_TAGS[version] - - emscripten_url = "https://storage.googleapis.com/webassembly/emscripten-releases-builds/{}/{}/wasm-binaries{}.{}" - - remote_emscripten_repository( - name = emscripten_repo_name("linux"), - bin_extension = "", - sha256 = revision.sha_linux, - strip_prefix = "install", - type = "tar.xz", - url = emscripten_url.format("linux", revision.hash, "", "tar.xz"), - ) - - # Not all versions have a linux/arm64 release: https://github.com/emscripten-core/emsdk/issues/547 - if hasattr(revision, "sha_linux_arm64"): - remote_emscripten_repository( - name = emscripten_repo_name("linux_arm64"), - bin_extension = "", - sha256 = revision.sha_linux_arm64, - strip_prefix = "install", - type = "tar.xz", - url = emscripten_url.format("linux", revision.hash, "-arm64", "tar.xz"), - ) - else: - _empty_repository( - name = emscripten_repo_name("linux_arm64"), - ) - - remote_emscripten_repository( - name = emscripten_repo_name("mac"), - bin_extension = "", - sha256 = revision.sha_mac, - strip_prefix = "install", - type = "tar.xz", - url = emscripten_url.format("mac", revision.hash, "", "tar.xz"), - ) - - remote_emscripten_repository( - name = emscripten_repo_name("mac_arm64"), - bin_extension = "", - sha256 = revision.sha_mac_arm64, - strip_prefix = "install", - type = "tar.xz", - url = emscripten_url.format("mac", revision.hash, "-arm64", "tar.xz"), - ) - - remote_emscripten_repository( - name = emscripten_repo_name("win"), - bin_extension = ".exe", - sha256 = revision.sha_win, - strip_prefix = "install", - type = "zip", - url = emscripten_url.format("win", revision.hash, "", "zip"), - ) - -emscripten_deps = module_extension( - tag_classes = { - "config": tag_class( - attrs = { - "version": attr.string( - doc = "Version to use. 'latest' to use latest.", - values = ["latest"] + EMSCRIPTEN_TAGS.keys(), - ), - }, - ), - }, - implementation = _emscripten_deps_impl, -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/BUILD.bazel b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/BUILD.bazel deleted file mode 100644 index ebbc2e9..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/BUILD.bazel +++ /dev/null @@ -1,43 +0,0 @@ -load("//:emscripten_deps.bzl", "emscripten_repo_name") -load("//:remote_emscripten_repository.bzl", "create_toolchains", "emscripten_toolchain_name") -load("@rules_python//python:py_binary.bzl", "py_binary") - -package(default_visibility = ["//visibility:public"]) - -# dlmalloc.bc is implicitly added by the emscripten toolchain -cc_library(name = "malloc") - -create_toolchains( - name = emscripten_toolchain_name("linux"), - repo_name = emscripten_repo_name("linux"), - exec_compatible_with = [ "@platforms//os:linux", "@platforms//cpu:x86_64"], -) - -create_toolchains( - name = emscripten_toolchain_name("linux_arm64"), - repo_name = emscripten_repo_name("linux_arm64"), - exec_compatible_with = ["@platforms//os:linux", "@platforms//cpu:arm64"], -) - -create_toolchains( - name = emscripten_toolchain_name("mac"), - repo_name = emscripten_repo_name("mac"), - exec_compatible_with = ["@platforms//os:macos", "@platforms//cpu:x86_64"], -) - -create_toolchains( - name = emscripten_toolchain_name("mac_arm64"), - repo_name = emscripten_repo_name("mac_arm64"), - exec_compatible_with = ["@platforms//os:macos", "@platforms//cpu:arm64"], -) - -create_toolchains( - name = emscripten_toolchain_name("win"), - repo_name = emscripten_repo_name("win"), - exec_compatible_with = ["@platforms//os:windows", "@platforms//cpu:x86_64"], -) - -py_binary( - name = "wasm_binary", - srcs = ["wasm_binary.py"], -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/default_config b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/default_config deleted file mode 100644 index 8107fe4..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/default_config +++ /dev/null @@ -1,16 +0,0 @@ -import os -import platform - -ROOT_DIR = os.environ["ROOT_DIR"] -EMSCRIPTEN_ROOT = os.environ["EMSCRIPTEN"] -BINARYEN_ROOT = os.path.join(ROOT_DIR, os.environ["EM_BIN_PATH"]) -LLVM_ROOT = os.path.join(BINARYEN_ROOT, "bin") -NODE_JS = os.path.join(ROOT_DIR, os.environ["NODE_JS_PATH"]) -FROZEN_CACHE = True - -# This works around an issue with Bazel RBE where the symlinks in node_modules/.bin -# are uploaded as the linked files, which means the cli.js cannot load its -# dependencies from the expected locations. -# See https://github.com/emscripten-core/emscripten/pull/16640 for more -CLOSURE_COMPILER = [NODE_JS, os.path.join(EMSCRIPTEN_ROOT, "node_modules", - "google-closure-compiler", "cli.js")] diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emar.bat b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emar.bat deleted file mode 100644 index c806808..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emar.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF - -call %~dp0\env.bat - -py -3 %EMSCRIPTEN%\emar.py %* diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emar.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emar.sh deleted file mode 100755 index b4ead6e..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emar.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -source $(dirname $0)/env.sh - -exec python3 $EMSCRIPTEN/emar.py "$@" diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc.bat b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc.bat deleted file mode 100644 index 4088bc4..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF - -call %~dp0\env.bat - -py -3 %EMSCRIPTEN%\emcc.py %* diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc.sh deleted file mode 100755 index 5fdaf9c..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -source $(dirname $0)/env.sh - -exec python3 $EMSCRIPTEN/emcc.py "$@" diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc_link.bat b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc_link.bat deleted file mode 100644 index f49cb0d..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc_link.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF - -call %~dp0\env.bat - -py -3 %~dp0\link_wrapper.py %* diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc_link.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc_link.sh deleted file mode 100755 index 44f3235..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/emcc_link.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -source $(dirname $0)/env.sh - -exec python3 $(dirname $0)/link_wrapper.py "$@" diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/env.bat b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/env.bat deleted file mode 100644 index c791ff7..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/env.bat +++ /dev/null @@ -1,6 +0,0 @@ -@ECHO OFF - -set ROOT_DIR=%EXT_BUILD_ROOT% -if "%ROOT_DIR%"=="" set ROOT_DIR=%CD% -set EMSCRIPTEN=%ROOT_DIR%\%EM_BIN_PATH%\emscripten -set EM_CONFIG=%ROOT_DIR%\%EM_CONFIG_PATH% diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/env.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/env.sh deleted file mode 100755 index b2a6bd6..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/env.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -export ROOT_DIR=${EXT_BUILD_ROOT:-$(pwd -P)} -export EMSCRIPTEN=$ROOT_DIR/$EM_BIN_PATH/emscripten -export EM_CONFIG=$ROOT_DIR/$EM_CONFIG_PATH diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/link_wrapper.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/link_wrapper.py deleted file mode 100755 index 6a6fe2f..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/link_wrapper.py +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env python -"""wrapper around emcc link step. - -This wrapper currently serves the following purposes. - -1. When building with --config=wasm the final output is multiple files, usually - at least one .js and one .wasm file. Since the cc_binary link step only - allows a single output, we must tar up the outputs into a single file. - -2. Add quotes around arguments that need them in the response file to work - around a bazel quirk. - -3. Ensure the external_debug_info section of the wasm points at the correct - bazel path. -""" - -from __future__ import print_function - -import argparse -import os -import subprocess -import sys - -# Only argument should be @path/to/parameter/file -assert sys.argv[1][0] == '@', sys.argv -param_filename = sys.argv[1][1:] -param_file_args = [line.strip() for line in open(param_filename, 'r').readlines()] - -# Re-write response file if needed. -if any(' ' in a for a in param_file_args): - new_param_filename = param_filename + '.modified' - with open(new_param_filename, 'w') as f: - for param in param_file_args: - if ' ' in param: - f.write('"%s"' % param) - else: - f.write(param) - f.write('\n') - sys.argv[1] = '@' + new_param_filename - -emcc_py = os.path.join(os.environ['EMSCRIPTEN'], 'emcc.py') -rtn = subprocess.call([sys.executable, emcc_py] + sys.argv[1:]) -if rtn != 0: - sys.exit(1) - -# Parse the arguments that we gave to the linker to determine what the output -# file is named and what the output format is. -parser = argparse.ArgumentParser(add_help=False) -parser.add_argument('-o') -parser.add_argument('--oformat') -options = parser.parse_known_args(param_file_args)[0] -output_file = options.o -oformat = options.oformat -outdir = os.path.normpath(os.path.dirname(output_file)) -base_name = os.path.basename(output_file) - -# The output file name is the name of the build rule that was built. -# Add an appropriate file extension based on --oformat. -if oformat is not None: - base_name_split = os.path.splitext(base_name) - - # If the output name has no extension, give it the appropriate extension. - if not base_name_split[1]: - os.replace(output_file, output_file + '.' + oformat) - - # If the output name does have an extension and it matches the output format, - # change the base_name so it doesn't have an extension. - elif base_name_split[1] == '.' + oformat: - base_name = base_name_split[0] - - # If the output name does have an extension and it does not match the output - # format, change the base_name so it doesn't have an extension and rename - # the output_file so it has the proper extension. - # Note that if you do something like name your build rule "foo.js" and pass - # "--oformat=html", emscripten will write to the same file for both the js and - # html output, overwriting the js output entirely with the html. - # Please don't do that. - else: - base_name = base_name_split[0] - os.replace(output_file, os.path.join(outdir, base_name + '.' + oformat)) - -files = [] -extensions = [ - '.js', - '.wasm', - '.wasm.map', - '.js.mem', - '.fetch.js', - '.worker.js', - '.data', - '.js.symbols', - '.wasm.debug.wasm', - '.html', - '.aw.js' -] - -for ext in extensions: - filename = base_name + ext - if os.path.exists(os.path.join(outdir, filename)): - files.append(filename) - -wasm_base = os.path.join(outdir, base_name + '.wasm') -if os.path.exists(wasm_base + '.debug.wasm') and os.path.exists(wasm_base): - # If we have a .wasm.debug.wasm file and a .wasm file, we need to rewrite the - # section in the .wasm file that refers to it. The path that's in there - # is the blaze output path; we want it to be just the filename. - - llvm_objcopy = os.path.join( - os.environ['EM_BIN_PATH'], 'bin/llvm-objcopy') - # First, check to make sure the .wasm file has the header that needs to be - # rewritten. - rtn = subprocess.call([ - llvm_objcopy, - '--dump-section=external_debug_info=/dev/null', - wasm_base], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - if rtn == 0: - # If llvm-objcopy did not return an error, the external_debug_info section - # must exist, so we're good to continue. - - # Next we need to convert length of the filename to LEB128. - # Start by converting the length of the filename to a bit string. - bit_string = '{0:b}'.format(len(base_name + '.wasm.debug.wasm')) - - # Pad the bit string with 0s so that its length is a multiple of 7. - while len(bit_string) % 7 != 0: - bit_string = '0' + bit_string - - # Break up our bit string into chunks of 7. - # We do this backwards because the final format is little-endian. - final_bytes = bytearray() - for i in reversed(range(0, len(bit_string), 7)): - binary_part = bit_string[i:i + 7] - if i != 0: - # Every chunk except the last one needs to be prepended with '1'. - # The length of each chunk is 7, so that one has an implicit '0'. - binary_part = '1' + binary_part - final_bytes.append(int(binary_part, 2)) - # Finally, add the actual filename. - final_bytes.extend((base_name + '.wasm.debug.wasm').encode()) - - # Write our length + filename bytes to a temp file. - with open(base_name + '_debugsection.tmp', 'wb+') as f: - f.write(final_bytes) - f.close() - - # First delete the old section. - subprocess.check_call([ - llvm_objcopy, - wasm_base, - '--remove-section=external_debug_info']) - # Rewrite section with the new size and filename from the temp file. - subprocess.check_call([ - llvm_objcopy, - wasm_base, - '--add-section=external_debug_info=' + base_name + '_debugsection.tmp']) - -# Make sure we have at least one output file. -if not len(files): - print('emcc.py did not appear to output any known files!') - sys.exit(1) - -# cc_binary must output exactly one file; put all the output files in a tarball. -cmd = ['tar', 'cf', base_name + '.tar'] + files -subprocess.check_call(cmd, cwd=outdir) -os.replace(os.path.join(outdir, base_name + '.tar'), output_file) - -sys.exit(0) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/toolchain.bzl b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/toolchain.bzl deleted file mode 100644 index ae2939f..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/toolchain.bzl +++ /dev/null @@ -1,1147 +0,0 @@ -"""This module encapsulates logic to create emscripten_cc_toolchain_config rule.""" - -load( - "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", - "action_config", - "env_entry", - "env_set", - "feature", - "feature_set", - "flag_group", - "tool", - "tool_path", - "variable_with_value", - "with_feature_set", - _flag_set = "flag_set", -) -load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES") - -def flag_set(flags = None, features = None, not_features = None, **kwargs): - """Extension to flag_set which allows for a "simple" form. - - The simple form allows specifying flags as a simple list instead of a flag_group - if enable_if or expand_if semantics are not required. - - Similarly, the simple form allows passing features/not_features if they are a simple - list of semantically "and" features. - (i.e. "asan" and "dbg", rather than "asan" or "dbg") - - Args: - flags: list, set of flags - features: list, set of features required to be enabled. - not_features: list, set of features required to not be enabled. - **kwargs: The rest of the args for flag_set. - - Returns: - flag_set - """ - if flags: - if kwargs.get("flag_groups"): - fail("Cannot set flags and flag_groups") - else: - kwargs["flag_groups"] = [flag_group(flags = flags)] - - if features or not_features: - if kwargs.get("with_features"): - fail("Cannot set features/not_feature and with_features") - kwargs["with_features"] = [with_feature_set( - features = features or [], - not_features = not_features or [], - )] - return _flag_set(**kwargs) - -CROSSTOOL_DEFAULT_WARNINGS = [ - "-Wall", -] - -def _impl(ctx): - target_cpu = ctx.attr.cpu - toolchain_identifier = "emscripten-" + target_cpu - target_system_name = target_cpu + "-unknown-emscripten" - - host_system_name = "i686-unknown-linux-gnu" - - target_libc = "musl/js" - - abi_version = "emscripten_syscalls" - - compiler = "emscripten" - abi_libc_version = "default" - - cc_target_os = "emscripten" - - emscripten_dir = ctx.attr.emscripten_binaries.label.workspace_root - - nodejs_path = ctx.file.nodejs_bin.path - - builtin_sysroot = emscripten_dir + "/emscripten/cache/sysroot" - - emcc_script = "emcc.%s" % ctx.attr.script_extension - emcc_link_script = "emcc_link.%s" % ctx.attr.script_extension - emar_script = "emar.%s" % ctx.attr.script_extension - - ################################################################ - # Tools - ################################################################ - clang_tool = tool(path = emcc_script) - clif_match_tool = tool(path = "dummy_clif_matcher") - link_tool = tool(path = emcc_link_script) - archive_tool = tool(path = emar_script) - strip_tool = tool(path = "NOT_USED_STRIP_TOOL") - - #### Legacy tool paths (much of this is redundant with action_configs, but - #### these are still used for some things) - tool_paths = [ - tool_path(name = "ar", path = emar_script), - tool_path(name = "cpp", path = "/bin/false"), - tool_path(name = "gcc", path = emcc_script), - tool_path(name = "gcov", path = "/bin/false"), - tool_path(name = "ld", path = emcc_link_script), - tool_path(name = "nm", path = "NOT_USED"), - tool_path(name = "objdump", path = "/bin/false"), - tool_path(name = "strip", path = "NOT_USED"), - ] - - ################################################################ - # Action Configs - ################################################################ - - cpp_compile_action = action_config( - action_name = ACTION_NAMES.cpp_compile, - tools = [clang_tool], - ) - - cpp_module_compile_action = action_config( - action_name = ACTION_NAMES.cpp_module_compile, - tools = [clang_tool], - ) - - cpp_module_codegen_action = action_config( - action_name = ACTION_NAMES.cpp_module_codegen, - tools = [clang_tool], - ) - - clif_match_action = action_config( - action_name = ACTION_NAMES.clif_match, - tools = [clif_match_tool], - ) - - cpp_link_dynamic_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_dynamic_library, - tools = [link_tool], - ) - - strip_action = action_config( - action_name = ACTION_NAMES.strip, - tools = [strip_tool], - ) - - preprocess_assemble_action = action_config( - action_name = ACTION_NAMES.preprocess_assemble, - tools = [clang_tool], - ) - - cpp_header_parsing_action = action_config( - action_name = ACTION_NAMES.cpp_header_parsing, - tools = [clang_tool], - ) - - cpp_link_static_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_static_library, - enabled = True, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = ["rcsD", "%{output_execpath}"], - expand_if_available = "output_execpath", - ), - ], - ), - flag_set( - flag_groups = [ - flag_group( - iterate_over = "libraries_to_link", - flag_groups = [ - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file", - ), - ), - flag_group( - flags = ["%{libraries_to_link.object_files}"], - iterate_over = "libraries_to_link.object_files", - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file_group", - ), - ), - ], - expand_if_available = "libraries_to_link", - ), - ], - ), - flag_set( - flag_groups = [ - flag_group( - flags = ["@%{linker_param_file}"], - expand_if_available = "linker_param_file", - ), - ], - ), - ], - tools = [archive_tool], - ) - - c_compile_action = action_config( - action_name = ACTION_NAMES.c_compile, - tools = [clang_tool], - ) - - linkstamp_compile_action = action_config( - action_name = ACTION_NAMES.linkstamp_compile, - tools = [clang_tool], - ) - - assemble_action = action_config( - action_name = ACTION_NAMES.assemble, - tools = [clang_tool], - ) - - cpp_link_executable_action = action_config( - action_name = ACTION_NAMES.cpp_link_executable, - tools = [link_tool], - ) - - cpp_link_nodeps_dynamic_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_nodeps_dynamic_library, - tools = [link_tool], - ) - - action_configs = [ - strip_action, - c_compile_action, - cpp_compile_action, - linkstamp_compile_action, - assemble_action, - preprocess_assemble_action, - cpp_header_parsing_action, - cpp_module_compile_action, - cpp_module_codegen_action, - cpp_link_executable_action, - cpp_link_dynamic_library_action, - cpp_link_nodeps_dynamic_library_action, - cpp_link_static_library_action, - clif_match_action, - ] - - all_compile_actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ACTION_NAMES.lto_backend, - ] - - all_cpp_compile_actions = [ - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ] - - preprocessor_compile_actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.clif_match, - ] - - all_link_actions = [ - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ] - - ################################################################ - # Features - ################################################################ - - features = [ - # This set of magic "feature"s are important configuration information for blaze. - feature(name = "no_legacy_features", enabled = True), - feature( - name = "has_configured_linker_path", - enabled = True, - ), - - # Blaze requests this feature by default, but we don't care. - feature(name = "dependency_file"), - - # Blaze requests this feature by default, but we don't care. - feature(name = "random_seed"), - - # Formerly "needsPic" attribute - feature(name = "supports_pic", enabled = False), - - # Blaze requests this feature by default. - # Blaze also tests if this feature is supported, before setting the "pic" build-variable. - feature(name = "pic"), - - # Blaze requests this feature by default. - # Blaze also tests if this feature is supported before setting preprocessor_defines - # (...but why?) - feature(name = "preprocessor_defines"), - - # Blaze requests this feature by default. - # Blaze also tests if this feature is supported before setting includes. (...but why?) - feature(name = "include_paths"), - - # Blaze tests if this feature is enabled in order to create implicit - # "nodeps" .so outputs from cc_library rules. - feature(name = "supports_dynamic_linker", enabled = False), - - # Blaze requests this feature when linking a cc_binary which is - # "dynamic" aka linked against nodeps-dynamic-library cc_library - # outputs. - feature(name = "dynamic_linking_mode"), - - #### Configuration features - feature( - name = "crosstool_cpu", - enabled = True, - implies = ["crosstool_cpu_" + target_cpu], - ), - feature( - name = "crosstool_cpu_asmjs", - provides = ["variant:crosstool_cpu"], - ), - feature( - name = "crosstool_cpu_wasm", - provides = ["variant:crosstool_cpu"], - ), - - # These 3 features will be automatically enabled by blaze in the - # corresponding build mode. - feature( - name = "opt", - provides = ["variant:crosstool_build_mode"], - ), - feature( - name = "dbg", - provides = ["variant:crosstool_build_mode"], - ), - feature( - name = "fastbuild", - provides = ["variant:crosstool_build_mode"], - ), - - # Feature to prevent 'command line too long' issues - feature( - name = "archive_param_file", - enabled = True, - ), - feature( - name = "compiler_param_file", - enabled = True, - ), - - #### User-settable features - - # Set if enabling exceptions. - feature(name = "exceptions"), - - # This feature overrides the default optimization to prefer execution speed - # over binary size (like clang -O3). - feature( - name = "optimized_for_speed", - provides = ["variant:crosstool_optimization_mode"], - ), - - # This feature overrides the default optimization to prefer binary size over - # execution speed (like clang -Oz). - feature( - name = "optimized_for_size", - provides = ["variant:crosstool_optimization_mode"], - ), - - # Convenience aliases / alt-spellings. - feature( - name = "optimize_for_speed", - implies = ["optimized_for_speed"], - ), - feature( - name = "optimize_for_size", - implies = ["optimized_for_size"], - ), - - # This feature allows easier use of profiling tools by preserving mangled - # C++ names. This does everything profiling_funcs does and more. - feature(name = "profiling"), - - # This feature emits only enough debug info for function names to appear - # in profiles. - feature(name = "profiling_funcs"), - - # This feature allows source maps to be generated. - feature( - name = "source_maps", - implies = ["full_debug_info"], - ), - feature( - name = "dwarf_debug_info", - implies = ["profiling"], - ), - - # Turns on full debug info (-g4). - feature(name = "full_debug_info"), - - # Enables the use of "Emscripten" Pthread implementation. - # https://kripken.github.io/emscripten-site/docs/porting/pthreads.html - # https://github.com/kripken/emscripten/wiki/Pthreads-with-WebAssembly - feature(name = "use_pthreads"), - - # If enabled, the runtime will exit when main() completes. - feature(name = "exit_runtime"), - - # Primarily for toolchain maintainers: - feature(name = "emcc_debug"), - feature(name = "emcc_debug_link"), - feature( - name = "llvm_backend", - requires = [feature_set(features = ["crosstool_cpu_wasm"])], - enabled = True, - ), - - # Remove once flag is flipped. - # See https://github.com/bazelbuild/bazel/issues/7687 - feature( - name = "do_not_split_linking_cmdline", - ), - - # Adds simd support, only available with the llvm backend. - feature( - name = "wasm_simd", - requires = [feature_set(features = ["llvm_backend"])], - ), - # Adds relaxed-simd support, only available with the llvm backend. - feature( - name = "wasm_relaxed_simd", - requires = [feature_set(features = ["llvm_backend"])], - ), - feature( - name = "precise_long_double_printf", - enabled = True, - ), - feature( - name = "wasm_warnings_as_errors", - enabled = False, - ), - - # ASan and UBSan. See also: - # https://emscripten.org/docs/debugging/Sanitizers.html - feature(name = "wasm_asan"), - feature(name = "wasm_ubsan"), - feature( - name = "output_format_js", - enabled = True, - ), - feature( - name = "wasm_standalone", - ), - ] - - crosstool_default_flag_sets = [ - # Compile, Link, and CC_FLAGS make variable - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ], - flag_groups = [ - flag_group( - flags = ["--sysroot=%{sysroot}"], - expand_if_available = "sysroot", - ), - ], - ), - # Compile + Link - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ], - # This forces color diagnostics even on Forge (where we don't have an - # attached terminal). - flags = [ - "-fdiagnostics-color", - ], - ), - # C++ compiles (and implicitly link) - flag_set( - actions = all_cpp_compile_actions, - flags = [ - "-fno-exceptions", - ], - not_features = ["exceptions"], - ), - flag_set( - actions = all_cpp_compile_actions, - flags = [ - "-fexceptions", - ], - features = ["exceptions"], - ), - # All compiles (and implicitly link) - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = [ - "-fno-strict-aliasing", - "-funsigned-char", - "-no-canonical-prefixes", - ], - ), - # Language Features - flag_set( - actions = all_cpp_compile_actions, - flags = ["-std=gnu++17", "-nostdinc", "-nostdinc++"], - ), - - # Emscripten-specific settings: - flag_set( - actions = all_compile_actions + all_link_actions, - flags = ["-s", "WASM=0"], - features = ["crosstool_cpu_asmjs"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-s", "USE_PTHREADS=1"], - features = ["use_pthreads"], - ), - flag_set( - actions = all_link_actions, - flags = ["-s", "EXIT_RUNTIME=1"], - features = ["exit_runtime"], - ), - flag_set( - actions = all_compile_actions + all_link_actions, - flags = ["-pthread"], - features = ["llvm_backend", "use_pthreads"], - ), - flag_set( - actions = all_compile_actions + all_link_actions, - flags = ["-msimd128"], - features = ["wasm_simd"], - ), - flag_set( - actions = all_compile_actions + all_link_actions, - flags = ["-msimd128", "-mrelaxed-simd"], - features = ["wasm_relaxed_simd"], - ), - flag_set( - actions = all_link_actions, - flags = ["-s", "PRINTF_LONG_DOUBLE=1"], - features = ["precise_long_double_printf"], - ), - flag_set( - actions = all_link_actions, - flags = ["--oformat=js"], - features = ["output_format_js"], - ), - - # Opt - flag_set( - actions = preprocessor_compile_actions, - flags = ["-DNDEBUG"], - features = ["opt"], - ), - flag_set( - actions = all_compile_actions, - flags = ["-fomit-frame-pointer"], - features = ["opt"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-O2"], - features = ["opt"], - ), - - # Users can override opt-level with semantic names... - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-Oz"], - features = ["optimized_for_size", "opt"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-O3"], - features = ["optimized_for_speed", "opt"], - ), - - # Fastbuild - flag_set( - actions = all_compile_actions, - flags = ["-fomit-frame-pointer"], - features = ["fastbuild"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-O0"], - features = ["fastbuild"], - ), - - # Dbg - flag_set( - actions = all_compile_actions, - flags = ["-fno-omit-frame-pointer"], - features = ["dbg"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-g", "-O0"], - features = ["dbg"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = [ - "-g", - "-fsanitize=address", - "-O1", - "-DADDRESS_SANITIZER=1", - "-fno-omit-frame-pointer", - ], - features = ["wasm_asan"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = [ - "-g4", - "-fsanitize=undefined", - "-O1", - "-DUNDEFINED_BEHAVIOR_SANITIZER=1", - "-fno-omit-frame-pointer", - "-fno-sanitize=vptr", - ], - features = ["wasm_ubsan"], - ), - - # Profiling provides full debug info and a special --profiling flag - # to control name mangling - flag_set( - actions = all_link_actions, - flags = ["--profiling"], - features = ["profiling"], - ), - flag_set( - actions = all_link_actions, - flags = ["--profiling_funcs"], - features = ["profiling_funcs"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-g4"], - features = ["full_debug_info"], - ), - flag_set( - actions = all_link_actions, - flags = ["-gseparate-dwarf"], - features = ["dwarf_debug_info"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-fdebug-compilation-dir=."], - features = ["dwarf_debug_info"], - ), - # Generic warning flag list - flag_set( - actions = all_compile_actions, - flags = CROSSTOOL_DEFAULT_WARNINGS, - ), - - # Defines and Includes and Paths and such - flag_set( - actions = all_compile_actions, - flag_groups = [ - flag_group(flags = ["-fPIC"], expand_if_available = "pic"), - ], - ), - flag_set( - actions = preprocessor_compile_actions, - flag_groups = [ - flag_group( - flags = ["-D%{preprocessor_defines}"], - iterate_over = "preprocessor_defines", - ), - ], - ), - flag_set( - actions = preprocessor_compile_actions, - flag_groups = [ - flag_group( - flags = ["-include", "%{includes}"], - iterate_over = "includes", - expand_if_available = "includes", - ), - ], - ), - flag_set( - actions = preprocessor_compile_actions, - flag_groups = [ - flag_group( - flags = ["-iquote", "%{quote_include_paths}"], - iterate_over = "quote_include_paths", - ), - flag_group( - flags = ["-I%{include_paths}"], - iterate_over = "include_paths", - ), - flag_group( - flags = ["-isystem", "%{system_include_paths}"], - iterate_over = "system_include_paths", - ), - ], - ), - - ## Linking options (not libs -- those go last) - - # Generic link options - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ], - flags = ["-shared"], - ), - - # Linker search paths and objects: - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - iterate_over = "runtime_library_search_directories", - flag_groups = [ - flag_group( - flags = [ - "-Wl,-rpath,$EXEC_ORIGIN/%{runtime_library_search_directories}", - ], - expand_if_true = "is_cc_test", - ), - flag_group( - flags = [ - "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}", - ], - expand_if_false = "is_cc_test", - ), - ], - expand_if_available = "runtime_library_search_directories", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["-L%{library_search_directories}"], - iterate_over = "library_search_directories", - expand_if_available = "library_search_directories", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - # This is actually a list of object files from the linkstamp steps - flags = ["%{linkstamp_paths}"], - iterate_over = "linkstamp_paths", - expand_if_available = "linkstamp_paths", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["@%{thinlto_param_file}"], - expand_if_available = "libraries_to_link", - expand_if_true = "thinlto_param_file", - ), - flag_group( - iterate_over = "libraries_to_link", - flag_groups = [ - flag_group( - flags = ["-Wl,--start-lib"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file_group", - ), - ), - flag_group( - flags = ["-Wl,-whole-archive"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["%{libraries_to_link.object_files}"], - iterate_over = "libraries_to_link.object_files", - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file_group", - ), - ), - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file", - ), - ), - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "interface_library", - ), - ), - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "static_library", - ), - ), - flag_group( - flags = ["-l%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "dynamic_library", - ), - ), - flag_group( - flags = ["-l:%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "versioned_dynamic_library", - ), - ), - flag_group( - flags = ["-Wl,-no-whole-archive"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["-Wl,--end-lib"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file_group", - ), - ), - ], - expand_if_available = "libraries_to_link", - ), - ], - ), - - # Configure the header parsing and preprocessing. - flag_set( - actions = [ACTION_NAMES.cpp_header_parsing], - flags = ["-xc++-header", "-fsyntax-only"], - features = ["parse_headers"], - ), - - # Note: user compile flags should be nearly last -- you probably - # don't want to put any more features after this! - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["%{user_compile_flags}"], - iterate_over = "user_compile_flags", - expand_if_available = "user_compile_flags", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["%{user_link_flags}"], - iterate_over = "user_link_flags", - expand_if_available = "user_link_flags", - ), - ], - ), - ## Options which need to go late -- after all the user options -- go here. - flag_set( - # One might hope that these options would only be needed for C++ - # compiles. But, sadly, users compile ".c" files with custom - # copts=["-x", "c++"], and expect that to be able to find C++ stdlib - # headers. It might be worth pondering how blaze could support this sort - # of use-case better. - actions = preprocessor_compile_actions + - [ACTION_NAMES.cc_flags_make_variable], - flags = [ - "-iwithsysroot" + "/include/c++/v1", - "-iwithsysroot" + "/include/compat", - "-iwithsysroot" + "/include", - "-isystem", - emscripten_dir + "/lib/clang/21/include", - ], - ), - # Inputs and outputs - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["-MD", "-MF", "%{dependency_file}"], - expand_if_available = "dependency_file", - ), - ], - ), - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["-c", "%{source_file}"], - expand_if_available = "source_file", - ), - ], - ), - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["-S"], - expand_if_available = "output_assembly_file", - ), - flag_group( - flags = ["-E"], - expand_if_available = "output_preprocess_file", - ), - flag_group( - flags = ["-o", "%{output_file}"], - expand_if_available = "output_file", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["-o", "%{output_execpath}"], - expand_if_available = "output_execpath", - ), - ], - ), - # And finally, the params file! - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["@%{linker_param_file}"], - expand_if_available = "linker_param_file", - ), - ], - ), - flag_set( - actions = all_compile_actions, - flags = [ - "-Wno-builtin-macro-redefined", - # Genrules may not escape quotes enough for these, so - # don't put them into $(CC_FLAGS): - '-D__DATE__="redacted"', - '-D__TIMESTAMP__="redacted"', - '-D__TIME__="redacted"', - ], - ), - flag_set( - actions = all_compile_actions, - flags = ["-Werror"], - features = ["wasm_warnings_as_errors"], - ), - flag_set( - actions = all_link_actions, - flags = ["-sSTANDALONE_WASM"], - features = ["wasm_standalone"], - ), - ] - - crosstool_default_env_sets = [ - # Globals - env_set( - actions = all_compile_actions + - all_link_actions + - [ACTION_NAMES.cpp_link_static_library], - env_entries = [ - env_entry( - key = "EM_BIN_PATH", - value = emscripten_dir, - ), - env_entry( - key = "EM_CONFIG_PATH", - value = ctx.file.em_config.path, - ), - env_entry( - key = "NODE_JS_PATH", - value = nodejs_path, - ), - ], - ), - # Use llvm backend. Off by default, enabled via --features=llvm_backend - env_set( - actions = all_compile_actions + - all_link_actions + - [ACTION_NAMES.cpp_link_static_library], - env_entries = [env_entry(key = "EMCC_WASM_BACKEND", value = "1")], - with_features = [with_feature_set(features = ["llvm_backend"])], - ), - # Debug compile and link. Off by default, enabled via --features=emcc_debug - env_set( - actions = all_compile_actions, - env_entries = [env_entry(key = "EMCC_DEBUG", value = "1")], - with_features = [with_feature_set(features = ["emcc_debug"])], - ), - - # Debug only link step. Off by default, enabled via --features=emcc_debug_link - env_set( - actions = all_link_actions, - env_entries = [env_entry(key = "EMCC_DEBUG", value = "1")], - with_features = [ - with_feature_set(features = ["emcc_debug"]), - with_feature_set(features = ["emcc_debug_link"]), - ], - ), - ] - - crosstool_default_flags_feature = feature( - name = "crosstool_default_flags", - enabled = True, - flag_sets = crosstool_default_flag_sets, - env_sets = crosstool_default_env_sets, - ) - - features.append(crosstool_default_flags_feature) - - cxx_builtin_include_directories = [ - emscripten_dir + "/emscripten/cache/sysroot/include/c++/v1", - emscripten_dir + "/emscripten/cache/sysroot/include/compat", - emscripten_dir + "/emscripten/cache/sysroot/include", - emscripten_dir + "/lib/clang/21/include", - ] - - artifact_name_patterns = [] - - make_variables = [] - - return cc_common.create_cc_toolchain_config_info( - ctx = ctx, - features = features, - action_configs = action_configs, - artifact_name_patterns = artifact_name_patterns, - cxx_builtin_include_directories = cxx_builtin_include_directories, - toolchain_identifier = toolchain_identifier, - host_system_name = host_system_name, - target_system_name = target_system_name, - target_cpu = target_cpu, - target_libc = target_libc, - compiler = compiler, - abi_version = abi_version, - abi_libc_version = abi_libc_version, - tool_paths = tool_paths, - make_variables = make_variables, - builtin_sysroot = builtin_sysroot, - cc_target_os = cc_target_os, - ) - -emscripten_cc_toolchain_config_rule = rule( - implementation = _impl, - attrs = { - "cpu": attr.string(mandatory = True, values = ["asmjs", "wasm"]), - "em_config": attr.label(mandatory = True, allow_single_file = True), - "emscripten_binaries": attr.label(mandatory = True, cfg = "exec"), - "nodejs_bin": attr.label(mandatory = True, allow_single_file = True), - "script_extension": attr.string(mandatory = True, values = ["sh", "bat"]), - }, - provides = [CcToolchainConfigInfo], -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/wasm_binary.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/wasm_binary.py deleted file mode 100644 index d7d6142..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/wasm_binary.py +++ /dev/null @@ -1,56 +0,0 @@ -"""Unpackages a bazel emscripten archive for use in a bazel BUILD rule. - -This script will take a tar archive containing the output of the emscripten -toolchain. This file contains any output files produced by a wasm_cc_binary or a -cc_binary built with --config=wasm. The files are extracted into the given -output paths. - -The contents of the archive are expected to match the given outputs extnames. - -This script and its accompanying Bazel rule should allow you to extract a -WebAssembly binary into a larger web application. -""" - -import argparse -import os -import tarfile - - -def ensure(f): - if not os.path.exists(f): - with open(f, 'w'): - pass - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--archive', help='The archive to extract from.') - parser.add_argument('--outputs', help='Comma separated list of files that should be extracted from the archive. Only the extname has to match a file in the archive.') - parser.add_argument('--allow_empty_outputs', help='If an output listed in --outputs does not exist, create it anyways.', action='store_true') - args = parser.parse_args() - - args.archive = os.path.normpath(args.archive) - args.outputs = args.outputs.split(",") - - tar = tarfile.open(args.archive) - - for member in tar.getmembers(): - extname = '.' + member.name.split('.', 1)[1] - for idx, output in enumerate(args.outputs): - if output.endswith(extname): - member_file = tar.extractfile(member) - with open(output, "wb") as output_file: - output_file.write(member_file.read()) - args.outputs.pop(idx) - break - - for output in args.outputs: - extname = '.' + output.split('.', 1)[1] - if args.allow_empty_outputs: - ensure(output) - else: - print("[ERROR] Archive does not contain file with extname: %s" % extname) - - -if __name__ == '__main__': - main() diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/wasm_cc_binary.bzl b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/wasm_cc_binary.bzl deleted file mode 100644 index 3cc6014..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/wasm_cc_binary.bzl +++ /dev/null @@ -1,231 +0,0 @@ -"""wasm_cc_binary rule for compiling C++ targets to WebAssembly. -""" - -def _wasm_transition_impl(settings, attr): - _ignore = (settings, attr) - - features = list(settings["//command_line_option:features"]) - linkopts = list(settings["//command_line_option:linkopt"]) - - if attr.threads == "emscripten": - # threads enabled - features.append("use_pthreads") - elif attr.threads == "off": - # threads disabled - features.append("-use_pthreads") - - if attr.exit_runtime == True: - features.append("exit_runtime") - - if attr.backend == "llvm": - features.append("llvm_backend") - elif attr.backend == "emscripten": - features.append("-llvm_backend") - - if attr.simd: - features.append("wasm_simd") - - platform = "@emsdk//:platform_wasm" - if attr.standalone: - platform = "@emsdk//:platform_wasi" - features.append("wasm_standalone") - - return { - "//command_line_option:compiler": "emscripten", - "//command_line_option:cpu": "wasm", - "//command_line_option:features": features, - "//command_line_option:dynamic_mode": "off", - "//command_line_option:linkopt": linkopts, - "//command_line_option:platforms": [platform], - # This is hardcoded to an empty cc_library because the malloc library - # is implicitly added by the emscripten toolchain - "//command_line_option:custom_malloc": "@emsdk//emscripten_toolchain:malloc", - } - -_wasm_transition = transition( - implementation = _wasm_transition_impl, - inputs = [ - "//command_line_option:features", - "//command_line_option:linkopt", - ], - outputs = [ - "//command_line_option:compiler", - "//command_line_option:cpu", - "//command_line_option:features", - "//command_line_option:dynamic_mode", - "//command_line_option:linkopt", - "//command_line_option:platforms", - "//command_line_option:custom_malloc", - ], -) - -_ALLOW_OUTPUT_EXTNAMES = [ - ".js", - ".wasm", - ".wasm.map", - ".worker.js", - ".js.mem", - ".data", - ".fetch.js", - ".js.symbols", - ".wasm.debug.wasm", - ".html", - ".aw.js", -] - -_WASM_BINARY_COMMON_ATTRS = { - "backend": attr.string( - default = "_default", - values = ["_default", "emscripten", "llvm"], - ), - "cc_target": attr.label( - cfg = _wasm_transition, - mandatory = True, - ), - "exit_runtime": attr.bool( - default = False, - ), - "threads": attr.string( - default = "_default", - values = ["_default", "emscripten", "off"], - ), - "simd": attr.bool( - default = False, - ), - "standalone": attr.bool( - default = False, - ), - "_allowlist_function_transition": attr.label( - default = "@bazel_tools//tools/allowlists/function_transition_allowlist", - ), - "_wasm_binary_extractor": attr.label( - executable = True, - allow_files = True, - cfg = "exec", - default = Label("@emsdk//emscripten_toolchain:wasm_binary"), - ), -} - -def _wasm_cc_binary_impl(ctx): - args = ctx.actions.args() - cc_target = ctx.attr.cc_target[0] - - for output in ctx.outputs.outputs: - valid_extname = False - for allowed_extname in _ALLOW_OUTPUT_EXTNAMES: - if output.path.endswith(allowed_extname): - valid_extname = True - break - if not valid_extname: - fail("Invalid output '{}'. Allowed extnames: {}".format(output.basename, ", ".join(_ALLOW_OUTPUT_EXTNAMES))) - - args.add_all("--archive", ctx.files.cc_target) - args.add_joined("--outputs", ctx.outputs.outputs, join_with = ",") - - ctx.actions.run( - inputs = ctx.files.cc_target, - outputs = ctx.outputs.outputs, - arguments = [args], - executable = ctx.executable._wasm_binary_extractor, - ) - - return [ - DefaultInfo( - files = depset(ctx.outputs.outputs), - # This is needed since rules like web_test usually have a data - # dependency on this target. - data_runfiles = ctx.runfiles(transitive_files = depset(ctx.outputs.outputs)), - ), - OutputGroupInfo(_wasm_tar = cc_target.files), - ] - -def _wasm_cc_binary_legacy_impl(ctx): - cc_target = ctx.attr.cc_target[0] - outputs = [ - ctx.outputs.loader, - ctx.outputs.wasm, - ctx.outputs.map, - ctx.outputs.mem, - ctx.outputs.fetch, - ctx.outputs.worker, - ctx.outputs.data, - ctx.outputs.symbols, - ctx.outputs.dwarf, - ctx.outputs.html, - ctx.outputs.audio_worklet, - ] - - args = ctx.actions.args() - args.add("--allow_empty_outputs") - args.add_all("--archive", ctx.files.cc_target) - args.add_joined("--outputs", outputs, join_with = ",") - - ctx.actions.run( - inputs = ctx.files.cc_target, - outputs = outputs, - arguments = [args], - executable = ctx.executable._wasm_binary_extractor, - ) - - return [ - DefaultInfo( - executable = ctx.outputs.wasm, - files = depset(outputs), - # This is needed since rules like web_test usually have a data - # dependency on this target. - data_runfiles = ctx.runfiles(transitive_files = depset(outputs)), - ), - OutputGroupInfo(_wasm_tar = cc_target.files), - ] - -_wasm_cc_binary = rule( - implementation = _wasm_cc_binary_impl, - attrs = dict( - _WASM_BINARY_COMMON_ATTRS, - outputs = attr.output_list( - allow_empty = False, - mandatory = True, - ), - ), -) - -def _wasm_binary_legacy_outputs(name, cc_target): - basename = cc_target.name - basename = basename.split(".")[0] - outputs = { - "loader": "{}/{}.js".format(name, basename), - "wasm": "{}/{}.wasm".format(name, basename), - "map": "{}/{}.wasm.map".format(name, basename), - "mem": "{}/{}.js.mem".format(name, basename), - "fetch": "{}/{}.fetch.js".format(name, basename), - "worker": "{}/{}.worker.js".format(name, basename), - "data": "{}/{}.data".format(name, basename), - "symbols": "{}/{}.js.symbols".format(name, basename), - "dwarf": "{}/{}.wasm.debug.wasm".format(name, basename), - "html": "{}/{}.html".format(name, basename), - "audio_worklet": "{}/{}.aw.js".format(name, basename) - } - - return outputs - -_wasm_cc_binary_legacy = rule( - implementation = _wasm_cc_binary_legacy_impl, - attrs = _WASM_BINARY_COMMON_ATTRS, - outputs = _wasm_binary_legacy_outputs, -) - -# Wraps a C++ Blaze target, extracting the appropriate files. -# -# This rule will transition to the emscripten toolchain in order -# to build the the cc_target as a WebAssembly binary. -# -# Args: -# name: The name of the rule. -# cc_target: The cc_binary or cc_library to extract files from. -def wasm_cc_binary(outputs = None, **kwargs): - # for backwards compatibility if no outputs are set the deprecated - # implementation is used. - if not outputs: - _wasm_cc_binary_legacy(**kwargs) - else: - _wasm_cc_binary(outputs = outputs, **kwargs) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/wasm_rules.bzl b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/wasm_rules.bzl deleted file mode 100644 index f8dce22..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/emscripten_toolchain/wasm_rules.bzl +++ /dev/null @@ -1,6 +0,0 @@ -"""Rules related to C++ and WebAssembly. -""" - -load(":wasm_cc_binary.bzl", _wasm_cc_binary = "wasm_cc_binary") - -wasm_cc_binary = _wasm_cc_binary diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/hello-world/BUILD b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/hello-world/BUILD deleted file mode 100644 index 07fbed5..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/hello-world/BUILD +++ /dev/null @@ -1,23 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") - -cc_binary( - name = "hello-world", - srcs = ["hello-world.cc"], -) - -cc_binary( - name = "hello-world-simd", - srcs = ["hello-world-simd.cc"], -) - -wasm_cc_binary( - name = "hello-world-wasm", - cc_target = ":hello-world", -) - -wasm_cc_binary( - name = "hello-world-wasm-simd", - cc_target = ":hello-world-simd", - simd = True, -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/hello-world/hello-world-simd.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/hello-world/hello-world-simd.cc deleted file mode 100644 index 649adab..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/hello-world/hello-world-simd.cc +++ /dev/null @@ -1,10 +0,0 @@ -#include - -void multiply_arrays(int* out, int* in_a, int* in_b, int size) { - for (int i = 0; i < size; i += 4) { - v128_t a = wasm_v128_load(&in_a[i]); - v128_t b = wasm_v128_load(&in_b[i]); - v128_t prod = wasm_i32x4_mul(a, b); - wasm_v128_store(&out[i], prod); - } -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/hello-world/hello-world.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/hello-world/hello-world.cc deleted file mode 100644 index ee72c53..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/hello-world/hello-world.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(int argc, char** argv) { - std::cout << "hello world!" << std::endl; - return 0; -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/remote_emscripten_repository.bzl b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/remote_emscripten_repository.bzl deleted file mode 100644 index 819a048..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/remote_emscripten_repository.bzl +++ /dev/null @@ -1,148 +0,0 @@ -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load(":emscripten_build_file.bzl", "EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE") -load(":revisions.bzl", "EMSCRIPTEN_TAGS") -load("//emscripten_toolchain:toolchain.bzl", "emscripten_cc_toolchain_config_rule") - -def remote_emscripten_repository( - name, - bin_extension, - **kwargs, -): - """Imports an Emscripten from an http archive - - Args: - name: A unique name for this Emscripten repository. - bin_extension: Extension for the binaries in this Emscripten repository - **kwargs: Args for http_archive. Refer to http_archive documentation for more info. - """ - http_archive( - name = name, - build_file_content = EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE.format(bin_extension = bin_extension), - **kwargs - ) - -def emscripten_toolchain_name(name): - return "emscripten_{}".format(name) - -def _get_name_and_target(name): - return name, ":" + name - -def create_toolchains(name, repo_name, exec_compatible_with): - """Creates toolchain definition for an Emscripten - - Register the toolchains defined by this macro via - `register_toolchains("//:cc-toolchain-wasm-")` - - Args: - name: A unique name for this Emscripten toolchain - repo_name: The name of the Emscripten repository for this toolchain - exec_compatible_with: Execute platform constraints for the Emscripten toolchain associated - with this repository. - **kwargs: Args for http_archive. Refer to http_archive documentation for more info. - """ - common_files_name, common_files_target = _get_name_and_target("common_files_" + name) - compiler_files_name, compiler_files_target = _get_name_and_target("compiler_files_" + name) - linker_files_name, linker_files_target = _get_name_and_target("linker_files_" + name) - ar_files_name, ar_files_target = _get_name_and_target("ar_files_" + name) - all_files_name, all_files_target = _get_name_and_target("all_files_" + name) - cc_wasm_name, cc_wasm_target = _get_name_and_target("cc-compiler-wasm-" + name) - - wasm_name = "wasm-" + name - - # These are file groups defined by the build_file_content on the Emscripten http_archive - remote_repo = "@{}//".format(repo_name) - repo_compiler_files_target = remote_repo + ":compiler_files" - repo_linker_files_target = remote_repo + ":linker_files" - repo_ar_files_target = remote_repo + ":ar_files" - - native.filegroup( - name = common_files_name, - srcs = [ - "@emscripten_cache//:emscripten_config", - "@emsdk//emscripten_toolchain:env.sh", - "@emsdk//emscripten_toolchain:env.bat", - "@nodejs//:node_files", - ], - ) - - native.filegroup( - name = compiler_files_name, - srcs = [ - "@emsdk//emscripten_toolchain:emcc.sh", - "@emsdk//emscripten_toolchain:emcc.bat", - repo_compiler_files_target, - common_files_target, - ], - ) - - native.filegroup( - name = linker_files_name, - srcs = [ - "@emsdk//emscripten_toolchain:emcc_link.sh", - "@emsdk//emscripten_toolchain:emcc_link.bat", - "link_wrapper.py", - repo_linker_files_target, - common_files_target, - ], - ) - - native.filegroup( - name = ar_files_name, - srcs = [ - "@emsdk//emscripten_toolchain:emar.sh", - "@emsdk//emscripten_toolchain:emar.bat", - repo_ar_files_target, - common_files_target, - ], - ) - - native.filegroup( - name = all_files_name, - srcs = [ - ar_files_target, - compiler_files_target, - linker_files_target, - ], - ) - - emscripten_cc_toolchain_config_rule( - name = wasm_name, - cpu = "wasm", - em_config = "@emscripten_cache//:emscripten_config", - emscripten_binaries = repo_compiler_files_target, - nodejs_bin = "@nodejs//:node", - script_extension = select({ - "@bazel_tools//src/conditions:host_windows": "bat", - "//conditions:default": "sh", - }), - ) - - native.cc_toolchain( - name = cc_wasm_name, - all_files = all_files_target, - ar_files = ar_files_target, - as_files = ":empty", - compiler_files = compiler_files_target, - dwp_files = ":empty", - linker_files = linker_files_target, - objcopy_files = ":empty", - strip_files = ":empty", - toolchain_config = wasm_name, - toolchain_identifier = "emscripten-wasm-" + name, - ) - - native.toolchain( - name = "cc-toolchain-wasm-" + name, - target_compatible_with = ["@platforms//cpu:wasm32"], - exec_compatible_with = exec_compatible_with, - toolchain = cc_wasm_target, - toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", - ) - - native.cc_toolchain_suite( - name = "everything-" + name, - toolchains = { - "wasm": cc_wasm_target, - "wasm|emscripten": cc_wasm_target, - }, - ) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/revisions.bzl b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/revisions.bzl deleted file mode 100644 index e954235..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/revisions.bzl +++ /dev/null @@ -1,773 +0,0 @@ -# This file is automatically updated by emsdk/scripts/update_bazel_workspace.py -# DO NOT MODIFY - -EMSCRIPTEN_TAGS = { - "4.0.9": struct( - hash = "cb2a69bce627bd2247624c71fc12907cb8785d2f", - sha_linux = "c6fd245138e6bbdd8349963cb4045c557d657e4be0ea44155375633c689c8be9", - sha_linux_arm64 = "872d7f5870f1bfc523a446ca66ab1b47009a96be33c398dbbb12a56597e46ab5", - sha_mac = "7efb0a6ddcb915aeca9f8685db909ae7799452894876fc1223a78d5c3288ff2d", - sha_mac_arm64 = "b97f3cda61211dd83b31ef9ea92e83d416a9422192cf3ee484fffe11e5d6e5b9", - sha_win = "e6e409ae564c041691f2fecd690431a9935401f8ab6afe284b222546887e84c5", - ), - "4.0.8": struct( - hash = "56f86607aeb458086e72f23188789be2ee0e971a", - sha_linux = "7b50b2b40f80d4531ae29a0a5b902eca41552e04815f59880a122ac81e8f269d", - sha_linux_arm64 = "d6e3ab0cdec2e6983235322f600f248d313bfce4a6a69ef16cdfdc330ff748b8", - sha_mac = "e1b2e6d4797338ed884f9d8a8419f93fc42cfcdea5e8a8b29fe13c6fd3fe7f7a", - sha_mac_arm64 = "115b207304d5471b77fc7649904111f3bb5ed7998ad192cba6cfc5fd0b2d78cb", - sha_win = "9ca65cb49287f448216c2eac12dacff9808ae827d5de267aaf2bd65f6d4f233e", - ), - "4.0.7": struct( - hash = "ef4e9cedeac3332e4738087567552063f4f250d3", - sha_linux = "60079078b1ecc4e96ab01c4189aceeff9049a1bb2544123295e9841b91a9410d", - sha_linux_arm64 = "caa10ae2d2b01eb290957e96636f0a6861e7305c8d991c762379542208415793", - sha_mac = "d588cc31b7db0d876f1d45f4d0c656d5e205d049c0bb27209cad04cfebe19309", - sha_mac_arm64 = "c0153cc053d8961e094447c3e706cb8f379c263bee64202fd78251fe018fb014", - sha_win = "7974b6e11164c2c94ddb252c9728d21de321094421f5d0856702e65c06751e54", - ), - "4.0.6": struct( - hash = "14767574a5c37ff9526a253a65ddbe0811cb3667", - sha_linux = "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", - sha_linux_arm64 = "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", - sha_mac = "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", - sha_mac_arm64 = "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", - sha_win = "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", - ), - "4.0.5": struct( - hash = "d7f8ff5e2ca3539c33fae81e98f7c56ef9fa1239", - sha_linux = "fdd4d9d6b37e845039b207baaef60cd98fb594ea13a3e6d622c2dcd8f2a48ac6", - sha_linux_arm64 = "0007aec32eee609b91f35c32481ec060ea7dac7151e36344bbcae419907f9240", - sha_mac = "f4e5a6c57ad9de59bff73463972213a299af2bb419dafbdd3959947fa801a342", - sha_mac_arm64 = "b8b93190fa17afe32a5eaa7120b807767b1c9d6e1d4ae6b9a2c6adb231758683", - sha_win = "3b8ed9e298a6d58fee841f5c3f1d3e7b2dff104cc7df314cd329f4c05d470be0", - ), - "4.0.4": struct( - hash = "ea71afcf5a172125179a07ff1731de6e81c92222", - sha_linux = "f05dab4a6a13a5fe6972e95e918d1483e687faf468e1a653deaa8d7956a97a3a", - sha_linux_arm64 = "95a421f304a7209c6f259754ad15aea5bbbbb1838139b51837aeb2c184fa4a89", - sha_mac = "d8b44aae37224ae76572ad84b60a2adaa126826332864fb689944d5130705d8d", - sha_mac_arm64 = "ade1c1a0c2e5893c6f74079beeae8b7e2a0c3f3b7ae88891064104fd985dfc2b", - sha_win = "342cf9dfb83e95bf678d07e460e093ea61a609d34b4603d9be06d4f31784409d", - ), - "4.0.3": struct( - hash = "de2109f0e5e7278d470da11de526aed16c527722", - sha_linux = "6480f51d0c24130424c696bf83e9774f42246a0109c8d48b59f4520fdfadb928", - sha_linux_arm64 = "76b1511d550b4f47276b93581ae5122063acbca7c960703637657388cf178636", - sha_mac = "f40851b816b31b3ca3214ebf61cc152625a05c24f43e2b13c2ad9b9e5dca73c0", - sha_mac_arm64 = "6d8ac5ad1f59f71de0927eb2c595dab2f21d9946ca293434359a6db2ab06a138", - sha_win = "3702e4a518057520d4ad9e7cd63a01a829770d090551e00f19f417f55b0170d3", - ), - "4.0.2": struct( - hash = "cc8eba40de8235f9c33d92463018f87b3edaa09e", - sha_linux = "3c0e3940240709388c24a4262680c18bb1d5979f2337abe53db00fb039606c44", - sha_linux_arm64 = "21ed0c31c1fc972e3509fcb140e0323061b5f2b173fe56d1f8961df2a37e4c11", - sha_mac = "e1bd96ec790968adf583d348158375b76ee0287e348954c3393c82565475b07b", - sha_mac_arm64 = "e5bf9a5efabc114b42636abcea07a1e02d3a9406cd399a29ccbc730586dce465", - sha_win = "78010f8e2f7bb6868bb20e3fc32e24d45e6fca749c388c2d25bea9845512338d", - ), - "4.0.1": struct( - hash = "5ff495a591978fdf8a16f2d172be3616f3150d1e", - sha_linux = "7b2b64b1bc15555696f78cbcb54c8d75832222d1578270ff5f56a8024c9a0dbc", - sha_linux_arm64 = "5c046a22b933de14be6b2522b75796afffe3940a19422eee483b7f3f1a226d66", - sha_mac = "d089eba9c3cad675bbd7d3318aec166ebe5ba984a6c5291136c09c68324d9818", - sha_mac_arm64 = "c8359b334bad71719e8d29e796ca7b63891e0305987b2572eb5a2f020e34f773", - sha_win = "9cf861339327f3657281c5c8c18aa723323acffe3b3d1c3807b9d4576d097e0e", - ), - "4.0.0": struct( - hash = "3ebc04a3dab24522a5bf8ced3ce3caea816558f6", - sha_linux = "6836988f0b7ee6ce3df5192dd4375b9eee55be78847ce31cf1d2abfb00f1e991", - sha_linux_arm64 = "d4e6e04b7e2fa1bdffc9c07ab4e0a3f66bde75adb06ebf9cc66a341907b17db4", - sha_mac = "4123e9ff6a699dac303c4fe22529ae0d618c118fcd8267df590363b0fc98c91d", - sha_mac_arm64 = "4b5fb7cc4f5f8526aaa41c8560a00ad6782b97cd3894d856beb635f05a825613", - sha_win = "6b1e5aee4b4a4274712566c845888bdf4eced09a5aaa64c1796cda57cd2854c4", - ), - "3.1.74": struct( - hash = "c2655005234810c7c42e02a18e4696554abe0352", - sha_linux = "a987bb4cded4f29437e8589accac204ce3c134feaaaf251bb97d0fdf450dce65", - sha_linux_arm64 = "c7fcc532eb7ee1dc7df0eacb49128ded12e4d55a973b8a2a5215da8bb6c4027c", - sha_mac = "04f848f40bd19220a43abde2dd1012d95bf1f89c618c0f631b83d18357e2bb65", - sha_mac_arm64 = "fc71758a5bfb02b8a5c2dd21d6bfc34aa3c64698f6105e204a1f4d11f6d67603", - sha_win = "603b0515e0367ee2718b2f360ef0194663d23a91236910d5f4a90ac4d745a4f2", - ), - "3.1.73": struct( - hash = "b363a836e75a245c548b7a6a021822d8c9e4c6df", - sha_linux = "4f3bc91cffec9096c3d3ccb11c222e1c2cb7734a0ff9a92d192e171849e68f28", - sha_linux_arm64 = "e6fb8a32889d4e4a3ac3e45d8012641369251ddd1255ada132ff6c70ab62b932", - sha_mac = "8d52ec080834f49996534de26772800dee048ec9bf148bb508be95887e267735", - sha_mac_arm64 = "58e6c984c5a1fb71e0871f0c3bb9e32d41e7553260c6eeb38800a4612623a99d", - sha_win = "d76003fad2146ad1f2289e8b251fbc359406ced0857f141a41f15149c2138302", - ), - "3.1.72": struct( - hash = "7a360458327cd24c2a7aab428bdbcb5bca8810e4", - sha_linux = "be094d6dd27c27a64116e9c0165d6cade5d329f5137e56696773e98e1df83fa7", - sha_linux_arm64 = "5dba64454809d72d53c432f3c91830d69d413ebd9dcd0ce18df5a79a3af235a6", - sha_mac = "52f713c118717814d2371912ab9019a3605b7d6acc627f3842e6aa7d3ffff7bf", - sha_mac_arm64 = "644593539684f59c635c7eae2e743f5e4e27b1d665f9c71c23dcefd4c2448b3c", - sha_win = "c72623fb68f109d8f122036f25b9fc75353bd1ce28995d9920277d4be4a1d99c", - ), - "3.1.71": struct( - hash = "7ee0f9488f152e9e9cf0d4d243970e03742f1a5c", - sha_linux = "43f87aa84a73697b905d2a13c89d016af8ec66bed792f37dd5a0059529abee12", - sha_linux_arm64 = "d25f5e57b2e7557df39cd9dec3b0283fb086f66c800af3d9a3f70f36c5fc6b14", - sha_mac = "8dac015c03c4f2e594d8bca25fe35d1e4d808aea81705121e852aff0464c4a9d", - sha_mac_arm64 = "a7797c3d210eda29f88eede261fc8f0aabf22c7b05214916b5b50a1271e9f0b8", - sha_win = "dfe77eaf22278ca975519f0497c8b336c86e52461c478060418fe67b39b6e87c", - ), - "3.1.70": struct( - hash = "6fa6145af41e835f3d13edf7d308c08e4573357a", - sha_linux = "c29b4a2c6addd5aafa613768d34273a23d8fcd1753c685ff61099506710cd8d7", - sha_linux_arm64 = "b13386975023a06f19057daef3896d480229b144d1e97f8764ed2f3e0fcb7d37", - sha_mac = "bc0edcaaaa19daeda9164d38d36c5f7d7b4b4e1eb7695ad58e776336c571fcc4", - sha_mac_arm64 = "e470d5eeb570850d66a79bd4c06064b9b3a1e90c7c2101e1a444ebcd6466fe5a", - sha_win = "f0118d71fd67583ddcfd39af2ed8bec3d18152fb6aadee085ebec5bcaf4ac4f5", - ), - "3.1.69": struct( - hash = "8fe01288bc35668c13316324336ea00195dfb814", - sha_linux = "24a786666e6f48ed3c3944b44df5cf146c45cf4faece4cb2686312a3d052a00c", - sha_linux_arm64 = "48e670501d215ac5b6b2680c900c517d9028dbc4de43be5dd6f25211a3640f2b", - sha_mac = "8503fe87dd2f30abff2550e9d6eb8aadeaf30fd3c6972d635b31e67f82e155f7", - sha_mac_arm64 = "995c7b3c84458edf6b8945e81405320c64a25dfe79eaa427fc1fe9a680f56b4f", - sha_win = "3839e0a581ae7b19156f004762a8221585e9a0d6237e468b13a878d1947636c5", - ), - "3.1.68": struct( - hash = "b52d8c9150dc7d4c8e4a7a08c7a9b4006c9abe49", - sha_linux = "1f2bcb47d85eb31d90fa797b3513221adc50f0656bb37f0962a40fd0f49fcf6a", - sha_linux_arm64 = "de346e7a489aa27a442215945d154d58a0d35c608b6150b2992af0e70c04e1c5", - sha_mac = "b180711544d783121370d2c894703f99d370a864ab147730f82fd59b88fa3481", - sha_mac_arm64 = "5e9b6242b56edc8cb404cbaf6c8bd7eb1f0f168b55b580bd92652f98c5d286f4", - sha_win = "824d37e8a0845f44e4c1111e8365640eea28944f1bdbd1e9e3fea0279b68baea", - ), - "3.1.67": struct( - hash = "4ae62984ea36ef0e5bfcbd0ed9b62f04bee6426a", - sha_linux = "535b64822916c80124363a5c7a5bd0cafd703f166d5155c0ad0e464e4a879091", - sha_linux_arm64 = "04c5f959702d8c1e5c000752b562271c224dee593e81144280840fed06e36cd9", - sha_mac = "692b8fdc79a47332ba9881966c72517eedf15b2da7bed37a535dfec55e6bbd9c", - sha_mac_arm64 = "ac26753f59fa9c8e92be9c91666014ad9400c91fbd37064105d1b5fcae503985", - sha_win = "8c6af8046ed47386018e42d18b53f57fad0926306dd4315d7f09dfae844b3dd3", - ), - "3.1.66": struct( - hash = "243eae09cf5c20c4fde51a620b92f483255c8214", - sha_linux = "b10eac37c978b28da2f1f34cdd8a7759c0ed5e5a2d8eb4f4e6790209de33dbf7", - sha_linux_arm64 = "9c78a470f74c24fc1fde2c8d86583ed98847b6cbdd87cd0b36ff2d6b4799d950", - sha_mac = "64fd0603ccbf949967cb0dfd8f1b0b25e018abf8bfe813b53596c4fc78751027", - sha_mac_arm64 = "fd6250f25101957f56086d292263379880c4b3329819a021008b2058f92ef67b", - sha_win = "b24f65a1a1111d8ace6ba47b55e07681cd0620f7bf711d1018ee262c9501defc", - ), - "3.1.65": struct( - hash = "fdcf56c75a1d27fdff6525a7e03423595485ca19", - sha_linux = "b2b7de13d37c4c5126e6c6a077e6019ebacc78ef1fb1b35b9035f03975f5ffaa", - sha_linux_arm64 = "f838af6495408f3c0a14d233171b4919b62e445c62805a22dea1875cb709a116", - sha_mac = "cc50b829a21a041979e0941cfd2047d30a06e3c4a8fd9f662ecdc12a0ab40535", - sha_mac_arm64 = "db4430db6a085d6ed5284917e632541dad3ce0a9464659fb674055247ad059d0", - sha_win = "e72ae4ec3231d9a492eadbf77ff28c13efd90307a69df04234792e67a001d05e", - ), - "3.1.64": struct( - hash = "fd61bacaf40131f74987e649a135f1dd559aff60", - sha_linux = "c39de24beca60fd580f6dff0eca0e275016042a30234588b19eda82397e299f3", - sha_linux_arm64 = "61b412135630a60c5517278dc83930e06f80fa286fcc2bb6366c4f620c86e4e0", - sha_mac = "2644772be398c8095621b3d0fe9ff2d122b18b7b0963c0eb702639d94dfb8e90", - sha_mac_arm64 = "47449057c345a09aa8750be1a357c364ffea9f8a066066cb341a7a2a14bac96a", - sha_win = "eb5b59afb420915daab4c383e5f73d456cc14776dce02fdc852c46522cda5531", - ), - "3.1.63": struct( - hash = "aeb36a44b29e8ca9f4c7efbb4735b69003ac2bb9", - sha_linux = "2a38ac1ea2fe3b7169879f0f666ea278f344cbb5db6e34421b9554939559109c", - sha_linux_arm64 = "f1dd5fe4cd22e89b1f5bfd216f1245f9f40f6ea76651a7f66e925a68ff6f18b8", - sha_mac = "7e192b84aecfade22817b5b38f0c69d1f795a9b990308188d39ed1d218692cd3", - sha_mac_arm64 = "751ef26a3682f5f23dfdc1c2f80cd0604a32cad61e6373c823de774722ecb9af", - sha_win = "947f8e867e781750d374d659644897f2345a133ad3d0f9ade23afcb81eeaddd3", - ), - "3.1.62": struct( - hash = "d52176ac8e07c47c1773bb2776ebd91e3886c3af", - sha_linux = "fd303a2b2a85c4b3ab8aa29595d70c5fde9df71c5254d56ed19d54e9ee98e881", - sha_linux_arm64 = "233c0df77644472cd322b45b2d7cf709e6c338799b46f6ec5d5f39ca4dbe8aef", - sha_mac = "d9cfef7ba8f44bf21be715244d0d5f909f1ccc2a481a301b3c01d12d1babc049", - sha_mac_arm64 = "de5484d60c858aaa8b93ba6485924adffe734cf4f8296765c089900cf9ce0701", - sha_win = "7455680bf9c19a26fe4868111ac01401023b0f92e862d3cabadf7950b87707fd", - ), - "3.1.61": struct( - hash = "28e4a74b579b4157bda5fc34f23c7d3905a8bd6c", - sha_linux = "e3e20e09219fd47a0019bb3252e17db4a00ded39b39b41634bc73f840a8ff2be", - sha_linux_arm64 = "a6b858601ca09fb7bb6ddf1a5ffb1a4130454c936ad046d45fef183037828c46", - sha_mac = "1fe69a3c42fb2857b80c8e77bfab780cb212ed7cf81ae57c0c4d235504df5269", - sha_mac_arm64 = "4ba702eea409e2d4bfabc73a68919217d3993e7585d95734e3e40a3c9ce1bd21", - sha_win = "bbafba849ff072a61dd34a8ffc0c85eed20a417854a3ca751b092e3565a92581", - ), - "3.1.60": struct( - hash = "87709b5747de5b1993fe314285528bf4b65c23e1", - sha_linux = "ff5eb062165920c7cb69935d396f13e9f8ca5b13f2d7f3af2759bcacb5e877e2", - sha_linux_arm64 = "2c291942df4868d3f65b31dd964bda9736bfddcd6a7886158963f797d1b45cf5", - sha_mac = "45586fab1bad65a4293ea8939dafb5ec711ba92ae7b4d1edbaae3b4486f398b5", - sha_mac_arm64 = "8dc27416a378ad07285d380f68717cfe0db1ea6252fdb1ad012af95e4d3f342e", - sha_win = "f3147ef2d4ca48ea2624039969fd0529d0bacb63bf49ee4809c681902768b973", - ), - "3.1.59": struct( - hash = "e20ee09a8a740544c4bc6de5d4ba5f81f74b74d6", - sha_linux = "ae59d1946cb92e1651cbb904fe824b3f07b39f42fa25f582116b5aaa226fa239", - sha_linux_arm64 = "25b918d6d5ee2af7ef6b28e089dc21d2dc419dca76c8079bb638cb20459eb9e5", - sha_mac = "af175bd559cb80459749e504da314af0163291f195461bf4d376d6980c4c60c3", - sha_mac_arm64 = "e17553bca5d00b30c920595e785281627e973f9e7e14c5dc0a73c355ccafe113", - sha_win = "bb54256fc3b7824cb75d5474f887d9bf8e1e63c15b351bdfbed898aa293ee4ab", - ), - "3.1.58": struct( - hash = "a4d4afb626c5010f6ccda4638b8d77579a63782e", - sha_linux = "b188249ecb939dadc679aaf2d3d9afd0fe19ab942f91b7bc926b4f252915dd1a", - sha_linux_arm64 = "4aedc8ca641b40d9bd82d85b1dc3458fe1afc9a132da06a09384a5f89c058969", - sha_mac = "2092aa4bef3b9f88d3f343b042a417ba617d4e04454656d8f2e101ba53f854e8", - sha_mac_arm64 = "7a9a15845257629b7602d15bdf7633a8e10472b0fa9b3d9ee7149938aa2f2039", - sha_win = "9fe76b6189566d56f0cf9aecbd23a006778530aa87184a900f5662e39ce7272a", - ), - "3.1.57": struct( - hash = "523b29e1b99a61069a2fa9f9d3cc9be1c4c53d4d", - sha_linux = "5bc444132258d4404d396f2044a4a334064ad0f1022555cad5ec72804a98ba5a", - sha_linux_arm64 = "f0022413afcc1610deff10921b3f5938bf4d01eba46ce96655f2295bdd84bd6a", - sha_mac = "31ddccb68c86f0a45332982938c49505158860ed4f7e8ccef72a48382e0e3c96", - sha_mac_arm64 = "cc5fdb65b339464f99b9c731cc63c233ec9577268886a856fa49f227ca2a56d1", - sha_win = "b53555420bb9b6e31c153e4c59427000ec692be17ae900f659a9b774d1ecebed", - ), - "3.1.56": struct( - hash = "9d106be887796484c4aaffc9dc45f48a8810f336", - sha_linux = "52338cca556002251e5e7d738adb1870d14331ddf463e613af02028b64e05a82", - sha_mac = "fc5cca6a9db571ecb2974bf0d4e12f1bc6068726271464586cf7e8723004b4c6", - sha_mac_arm64 = "aed728d09d801c4a33210505874ce066269292e7809a7d6a6414146be01545f1", - sha_win = "cd5fbe94fb0bcf01badc10eace48eddbca22b34f31229e3d70c68ade7bcdd571", - ), - "3.1.55": struct( - hash = "f5557e3b7166d05bddb5977e363ec48cd06e9d32", - sha_linux = "2a1cccc2f6db801219eb966d00af78a026af7822055064092387e7eba18e75ad", - sha_mac = "f1f8f4ebd086d0cd8bd54c41c6a0e86bbb26d7b8020484fef3dba67cd9e6906c", - sha_mac_arm64 = "7533b7a1beaa692a4f1e57b91c456b13e6bcc367dc9a414cb066350e8a2058c7", - sha_win = "204984cbb755f9aa09c21b49129d908f59617a60d5aebd8742097a9a2c196abb", - ), - "3.1.54": struct( - hash = "aa1588cd28c250a60457b5ed342557c762f416e3", - sha_linux = "5c8db804abe1ac7ddaa99a6997683cf9fa9004de655b32b5b612d59a94bd59d0", - sha_mac = "e6d2b8c6983767c7ced83d40b87081a221f05bab08d0fa4f0c6de652547c8a9f", - sha_mac_arm64 = "83764751ee5c7b42529e1df168695d4a51a23c9c165f3f90693baa9bd9256efa", - sha_win = "c0a1c9f3e1dfc9bb2e600501aea999f53b34a16f82da387317fdcae7e9c2a79b", - ), - "3.1.53": struct( - hash = "e5523d57a0e0dcf80f3b101bbc23613fcc3101aa", - sha_linux = "1025c0c738fbaedf3f8fcffee23bef71c8d04a95b30ea8a69a47231fb35d1c8b", - sha_mac = "318dc0cc51a237040bc1cb0a9e7d6c214196c8a100b50d0e298cf3ea7c365dbe", - sha_mac_arm64 = "e346ef588f7cfe1e41623de2257a11ecf8381fbd3bde63a8773b3a663411ea12", - sha_win = "af7f7175ab0b3c1e9121c713764e8ac1d970b6dbee8a84602b4a69cc5ec5940d", - ), - "3.1.52": struct( - hash = "ce2097fb81953331e65543c20b437475f218127c", - sha_linux = "1c0cd572067c6348cea5e347b9ef7c5460493ca3f0d84bb991689731d0e140ef", - sha_mac = "5d9c801f9cfe81337d65969e174e0b3ef4cf2b47eb548ff4695abe3a2e69ba70", - sha_mac_arm64 = "7ce8fef7542437c85412143cb59b13b8804bb06243a106d2d342c7d9132edc8e", - sha_win = "82ed01d965f5c2765191c67da5baecd2d3ce3f82a8cf30fc47fcd56d47826cf6", - ), - "3.1.51": struct( - hash = "4f416d92fbff66ce79901cfc8263768f1b25dd3e", - sha_linux = "09af08eb562cccf85770e4b8e368acb5accb1759fe3bc436b8fad80c27f90c79", - sha_mac = "b12201caf9ff2b981349edebd2d2c022ff000c74241ef96305b831abbd4f9450", - sha_mac_arm64 = "65fbee020cf965f9216607bad56215795529cbe8cef318fadcb33141dd6b5e82", - sha_win = "65c2d005a6be80723fa795ea724d4db9960601cf7d59d880f2882ecd45c8ad2b", - ), - "3.1.50": struct( - hash = "2ce4170cef5ce46f337f9fd907b614a8db772c7d", - sha_linux = "8822050b999286694cd4ffc7d959a8ea3137e3a910121d78b5377439ede9b598", - sha_mac = "39ce2f689be348b558df9c2c988b03472d43f8ac0827624397f7c0bb56a1e893", - sha_mac_arm64 = "5a9fa8de121db400bb46e716d861283b938ad87257d7c48f99dd5557100bd3ea", - sha_win = "29096f5596d93dbf620a9547fd1ecec8f54f3f52d49b13f09959d852310220db", - ), - "3.1.49": struct( - hash = "bd0a2e230466dadb36efc71aa7271f17c6c35420", - sha_linux = "18f452f8bdcd13e0d3a65c569180d1b83579775eadb8069cb32bca1f2e751751", - sha_mac = "c5275eab15e42abb3a42bbe1cfe38ee1b852febc78f65f5605b8972a7bee672f", - sha_mac_arm64 = "10a722e2c7dcc97236f70f2d68b23a7975800ebf27ec4fdf76deddf483b1c6d6", - sha_win = "4361fc18faaf70a2dc342c219b13c39a8196e9a48e6897d08c7b0dca6ba6525d", - ), - "3.1.48": struct( - hash = "694434b6d47c5f6eff2c8fbd9eeb016c977ae9dc", - sha_linux = "689fffcb60f93a60a7bb52cc205ead43ab31f252753cfef39ae2074f6a442634", - sha_mac = "8ac2a3f32b4cba0d84ca5a1fe1db883dbfc2731432833ab5a7e6967c5f4ab7dc", - sha_mac_arm64 = "10dd40f94fe5c5f8c4efc838d1623cafe98c629d4c7872ad8c15cd7b0836f281", - sha_win = "9276435ea7c402c18572a4301d6a26426eac73414b0ed5cb3e721044a50f651d", - ), - "3.1.47": struct( - hash = "39ade279e75e6d17dd6b7eb9fba2006e61fe966b", - sha_linux = "bdc50abe5c7d4b4f14acea4ec36b270e86770cea2da4b0c393b80a692dc7eb7a", - sha_mac = "6a3a116707037d75a967a7d971894d8ace74a2a230aa50ba55e88e7cd7b94953", - sha_mac_arm64 = "b13d228e6a1c89c13a1500fff07dcf093fb01fa621d458496d4a6d7f05cfd600", - sha_win = "66a6c4f0cda4ace14a86d3e59d20685d35211854d21670632b0566ac73638245", - ), - "3.1.46": struct( - hash = "21644188d5c473e92f1d7df2f9f60c758a78a486", - sha_linux = "75cbf14629b06e417b597d3f897ad7d881c53762380aca2f0dd85f1b15891511", - sha_mac = "06f45608381203d501141be632cab960aa105626c3a0f7a48657b79728103880", - sha_mac_arm64 = "c2a85b509a91663b390f77d51fba775421d42456211466fd3757f9dede7af9e4", - sha_win = "1ed3a3f36dee5d373ebea213fc723b3eeb7d6ba4c43da6a951ea0d76f265f234", - ), - "3.1.45": struct( - hash = "2b7c5fb8ffeac3315deb1f82ab7bf8da544f84a1", - sha_linux = "1c0576765f8b34603eead6f2bd4bc77bf68ea2f0a39ed4c144514103e85bc7d9", - sha_mac = "87f63ebb2f9807435016b238bbf46ccb94c919ec0786b46463cd788634391b0c", - sha_mac_arm64 = "29e698772c0e00c21ce120dd1db1586f5c65507168babff148c2e628add6e72a", - sha_win = "891d49f8828f715ef621d55fe202de4929bbdc89b69101fd33963571458a7f47", - ), - "3.1.44": struct( - hash = "b90507fcf011da61bacfca613569d882f7749552", - sha_linux = "5ffa2bab560a9cda6db6ee041a635d10e1ef26c8fc63675d682917b8d3d53263", - sha_mac = "291b2653f7576f8354f0267047e47a5ddef11223c89d5be399d04618f13b3832", - sha_mac_arm64 = "ad1625821b49ccbbe733596223fdf99fd786470d679f2c9dfabd4a1a7b929282", - sha_win = "8b61f60ef169b1c20207361067c40192c83b96cdbdb2f4cff21dfb20b9ee528d", - ), - "3.1.43": struct( - hash = "bf3c159888633d232c0507f4c76cc156a43c32dc", - sha_linux = "147a67a3454783b8c351780ec0111329d1e6fbb1d2fcdfe1c035e1c0997e0701", - sha_mac = "d84896c6d1ba0fbd9a5e5c5830b3ac4a02da5e683e9d8c7172f4c3ffdfaa0392", - sha_mac_arm64 = "d684f0bfc655f61e76cec29fdaad1668f3d21a229fdd908267f400691468328d", - sha_win = "a335f5f5b070cf354f1ca8e0afb23c06ae5f9ffb2c501124da7fcaea09a7db6d", - ), - "3.1.42": struct( - hash = "9d73bf4bd5b5c9ce6e51be0ed5ce6599fcb28e9e", - sha_linux = "aaa076e64dd511b0d874c348f8dab80a2f9ade0887ba74845fd02c40bbf9e68f", - sha_mac = "4715002394c5d444243c77ca231883eb999cf3313c4869cf0ae288d911f80f89", - sha_mac_arm64 = "84dede714edd81362ed2a2f79b91b1bd9cd544f219f937582e616d73bf0ea7f9", - sha_win = "4c704f4a4927aa537c2815a72915b7591c163ae8f0dbaedc167e810dd2a4a83d", - ), - "3.1.41": struct( - hash = "eb71265ef0ab905620015adbfedacf88c5dbf021", - sha_linux = "493ec8bd3f3ea3d6d616de01d6dac9c2af696978c6c44d453757ab2f8a666656", - sha_mac = "bb088e7b8f83b6bae02a0992eae61351e4e97bd033f8c8937cdaea0cb961ac9e", - sha_mac_arm64 = "aaba2de03a6dcc0db90e61e5e405a52aa47124e5ef21953d052ca015ce5ee773", - sha_win = "c7afbf2dfb6040990bd40bd72c726ada36e3e6f1985c4b62db7296465dd0778f", - ), - "3.1.40": struct( - hash = "c3122846bb040798aab975f61008c37eb19476de", - sha_linux = "5501e750c92f5a54b27ee101f6816e7416f154cb4181b73fd0be3faae947016c", - sha_mac = "052d6236ce49eaf3aa02b3c4d367b5ed4fb78209c1f1e64d48beb79e9c0b7131", - sha_mac_arm64 = "c8af68f904367938bac255f5e64ed271021b289bb135dc77ab3b58b87e1ea5b2", - sha_win = "3ec21ca18b56f7d3953da2e0d468154fcaaf30b5ac663d9ad00c41540923a099", - ), - "3.1.39": struct( - hash = "1b56b171b627af0841cf8d4d8c0160c6cb6d855f", - sha_linux = "7ec6e15a2da2701243f89af7744403ee011211e59e4f0a6fd8ced544e72e917d", - sha_mac = "dad7d270207aaffb8b8ef584cf0579bbad144879ea6f00ec9a8080adf22130dc", - sha_mac_arm64 = "c5e474ca661348d0339c785e25ad81845d49dab19d5e3e84eef2393e623e0bac", - sha_win = "a04f898b9d54dd2dc95fb697a92a1b65d07102a4cc36a02dea44c448fad83472", - ), - "3.1.38": struct( - hash = "03ecb526947f6a3702a0d083083799fe410d3893", - sha_linux = "e2812859fa32b6019f688dd66f2fa48efbfb5594da9a43b876fd4fe4ca474c20", - sha_mac = "a88c4b9eeb5dedb0d9af3b6b84bd45c486de567fbeba1675edb2d7d196e0013b", - sha_mac_arm64 = "0e5d1519ccc1163c13ee93d85f70ef6a520464f59ca3795c47cc7c44ab0f5f49", - sha_win = "bcdea031961a4f3c23008d53e083770d19751dd2a2aa71cacdea8462d09548be", - ), - "3.1.37": struct( - hash = "7c905cfc1ca6699f6ccb288ae174902cfbdcf0a2", - sha_linux = "9ff44ef69d3f389adcacbb9b95331da72cffdf6e9431c8beb6ebf7aedb77499c", - sha_mac = "accfe90322b6449933c3d8e1346024e2e2e3bef7b101942294f995b2c8e1b60f", - sha_mac_arm64 = "a0461e234c08bd7ddd7a86b49b52ccc853ebe4ce0fb5b4314e9de0193c32514a", - sha_win = "e026ea2570e747d0640829c62abddcdc14a4acffe31180110971750b80042d7a", - ), - "3.1.36": struct( - hash = "adedc0750c4a89b65bee866edab24298cb8d6677", - sha_linux = "55d3cc557a83716f7a7fe121a07dbd59ed4b5d425051e22c902570e3e0ea6c4c", - sha_mac = "6643fcef0f928cd730b894f0c2c3343eeef870576e43e56428a7a8247c7bc921", - sha_mac_arm64 = "2e8d9103cd0ba7a2b143927196a630b091b981006c908d7d36995a210a04d73b", - sha_win = "69a197f6fc153d9f98ced539564683cb13ff0ef144d3d4fbddf643e33b5f860c", - ), - "3.1.35": struct( - hash = "671550b5bdceee7bdb21493714f9a815aa5149a9", - sha_linux = "9d4b5dcb719d39e59b646ecf7c409db20c5cb6b9575f5362ffb49a9e66290819", - sha_mac = "01ea06c1f4a6c980bfdc812f9599a8ef424a975c89d5c288c9e6f2fa5e5ef5ad", - sha_mac_arm64 = "f6480ee21c80fe062e0f9d8555f8bdef621601634b9bd1e5ad07b90777ff5e4b", - sha_win = "cd26088365433ce1263a11898406c2f9284e55c2c7f23b26170c2a172c52f0b1", - ), - "3.1.34": struct( - hash = "2fdd6b9e5b67d5b62f84d0501a876513ff118ef1", - sha_linux = "dd3713f077072dcdb811f934d6685187daa47c424039e31cba83633c8d1681b1", - sha_mac = "3824609ee9b7c9919e29b19775d495a16778adb981867901f4bc503fe2f65d7d", - sha_mac_arm64 = "72728637171df46e7cd22f90537dd6faf1d4809ed1befc504ff96768c82f0e0f", - sha_win = "7538d1a1e0d586bd0723f595557551b05d724a5803132949a6fafb8b056af995", - ), - "3.1.33": struct( - hash = "49b960bd03b3a9da478a08541ce6eafe792a58a8", - sha_linux = "eab02b3f4b7c076974452ba602f908a36adf597afa15b16095b441f191ede1bb", - sha_linux_arm64 = "5e15af6affcf37c9ce6c304b4aeccb87a2758e1ef029dbc996f9d77d7444378e", - sha_mac = "b8dad3cddb19c1daf9dae99020bd17b903ae9649cfc58e433ea4951e758804de", - sha_mac_arm64 = "fbf03d06c7503f091191e440b8ea577d65b3261167cdb47359d053f12888974b", - sha_win = "031f951668eaeea39bd9363abb3f514efc3401506374984fa9b1d7ba3130a62f", - ), - "3.1.32": struct( - hash = "29ad1037cd6b99e5d8a1bd75bc188c1e9a6fda8d", - sha_linux = "25fa252e9fc674d1bcef35b3a10dd85024aa93c843b8067f8d917e5151968ffc", - sha_mac = "7881714e7738eb183b5a421bb2b907e96359e791ad0a622be6e7f5690a16b9d6", - sha_mac_arm64 = "04eede7352aca4b6fc1c111a8b31d00e8aa40547c3cd062ff9be4ffe1ed98d95", - sha_win = "22c3429eb1e6051bda46e9c02c14eca1ae3749ba8c411fbd5a3b51e3b9623161", - ), - "3.1.31": struct( - hash = "1eec24930cb2f56f6d9cd10ffcb031e27ea4157a", - sha_linux = "5952523c0c58cfc7c8839c1d3fe42ff34af5d8721231306ee432063dfacf96ca", - sha_mac = "13482cf3cb29f423f2037b9dc2b9e4ff72d0a49fcd471bbaa9b76d9f86f31d82", - sha_mac_arm64 = "654a35af16be5eeb2082e68fb36190fe76de28fa2da75ac0d2197482a203f39a", - sha_win = "493c29f5a505ccd9687036ee4c580d190b1c32b286be0e751a78e68997cec8b2", - ), - "3.1.30": struct( - hash = "dc1fdcfd3f5b9d29cb1ebdf15e6e845bef9b0cc1", - sha_linux = "151d7afdfb728e1e55ed1d100e4d3fbd20925fd65f3c3b9e093061a2c89dcac7", - sha_mac = "f0cdbc676c58bce7a65572418fb1521665ed522d7d05ae90f0764b77801982bb", - sha_mac_arm64 = "fca4eaf8ff528bb9308e5e8d0cf2709713b99fc19d55c6578a6c8f3e66182f55", - sha_win = "3001101622d98b2af3e5209154f60bbe341d32f6178307c6c723e84b5fe08bdc", - ), - "3.1.29": struct( - hash = "d949f1b99a477d4b0b54d95413df3688afa69d0a", - sha_linux = "d3f274446924c27082603170fab60ba78a2fb51360e5578fab4d9b5adab0fa9a", - sha_mac = "ed224c296efd22437f298f0fe0852613b0b1d48810b1b6d87b6b7e6beb589fe2", - sha_mac_arm64 = "af9bb86a7996bbbb36820e93dbc7f537ac23070e8730439b1e49792c4fc008e9", - sha_win = "6203f80273565a2ee6734bd33ad7bc6940ef709cbd593e70d6489e96c02ced25", - ), - "3.1.28": struct( - hash = "30b9e46ddcea66e91530559379089002d8b692cf", - sha_linux = "c23426d8b6d94cea702542c39e3bcef9439425dd4bd03bcc172e291dbbe5ed0d", - sha_mac = "4cfb918fe3233a2b31e5734e85b2a365e634f4e8a83c4390e8595cb98ae6bd8c", - sha_mac_arm64 = "a47f1f09bc7bbd4952cf54445d4fbfae53623ecbfecee0506a637665c7b4ea4c", - sha_win = "4388d230871d5b1e15c2fd0db21a792ab2836f23d860475fe183c03c5db75c8c", - ), - "3.1.27": struct( - hash = "48ce0b44015d0182fc8c27aa9fbc0a4474b55982", - sha_linux = "4dc872260c8f42a8e20c8612b2255adbd466fec54cfbe37b46eca4eb34a2b03f", - sha_mac = "40c3326147b162b8357efdc72476faaa6686338cff3e176680e361c2511453e8", - sha_mac_arm64 = "7b87610de966b84353c8c1ded8e12c034b5b913c093210ebd3b26320e2ac2990", - sha_win = "39bbfcb09ba7feb214518a67b1ff6d38bae065b416b4483834e4fdaef2316f8c", - ), - "3.1.26": struct( - hash = "4f68bb2a505c727bcf58195cf4da20592a6e92c8", - sha_linux = "82d24d5619c814ae99ef7243de428600c02e96dfc49c36e44753b1fce626766e", - sha_mac = "7b645979d8901f3153507561bbec10ecfeb197dca5914228715a74b760cf7eec", - sha_mac_arm64 = "d9c647fd70588bae71303a6c923df8a44ffe63e168b375d35bf6ceda21258fa1", - sha_win = "1ad49d69634ce2d1fe04614c18060a903c102e1dbc9dfdef3a03e52c189b4c92", - ), - "3.1.25": struct( - hash = "ff6babb041d0f31575cc16d15ef82c6222ca99b8", - sha_linux = "c5ae6b4525845ea36bde89cbf4e1d03de87a2658862d76c6a53bbf8de7c67ff5", - sha_mac = "d2581aaa7207f0d9dd9949247f0706bda8561e805d67aec166ed4f3b39c3a3fa", - sha_mac_arm64 = "dbcb76036a09248c2a839872c27b87b6d4ccc81e57add4e2a6f5e560a2c530fc", - sha_win = "3a86d98d934456a74ed06388c1487d95a0d5a3f31777636453f22e61d57d7fb1", - ), - "3.1.24": struct( - hash = "54217a0950bb1dafe8808cc6207d378e323f9d74", - sha_linux = "20e8e5bd745e3ad69c03bb877091d2fbb0c7db1eab309de8f185e9821aea40f4", - sha_mac = "cfb897a980dd51fceb02ff143ad0fd8e5d299db640c5646d1547d522194545f2", - sha_mac_arm64 = "e87b0727343051312f82a6653cad4682a518dd9cb6575844c0cd6505d520fab6", - sha_win = "a0ea07f9014a912f13176fdbbc1ee7ab08104d45e7ca7e1c237505579b63d530", - ), - "3.1.23": struct( - hash = "bfd5e63a44ba4c8568cd8ac87c27b35e40732bf4", - sha_linux = "3b8d9e163d6afc8569deca0ba1d4042f80da7a31e23cee006c3faa9cbf2fbc31", - sha_mac = "fd1c79475e47fd2f06ee9ba189e68309e443c2d3c56fd28163d1cd6f77047075", - sha_mac_arm64 = "66e57ee0962ec31056674b5681f91bd62f85b0bf1238a8d5b160660c0bf47292", - sha_win = "7c30b281abcc0ffb9e7575197f1ac0598a94c6cec36547b81554a97b792a9e75", - ), - "3.1.22": struct( - hash = "990cee04a21caafc75955d736fb45791a7f2aeee", - sha_linux = "a310ed9f16c97a91c72564ca5f85c412cb99429d8001825663fda1b28c00346e", - sha_mac = "b19afaf414178781c4c91ee711ec4d9063b9736719e45ca2e8b45c2258df16be", - sha_mac_arm64 = "7c8212abf77f0307b6ff848bf9c6212f870506df6d074349f76401f30f9fcefe", - sha_win = "2c0cfe267d47f390d7e35a83545b1d5043e4a7fb77b838ee19b0fce65035f55d", - ), - "3.1.21": struct( - hash = "a16a8bca2466eb144f7c93fa899c0272c8815dc3", - sha_linux = "7045ddb3b37a2cc63cb1cf976019a6a3b7f8dbdc71254db0eee5b0452f94e9e7", - sha_linux_arm64 = "2852c8b108ec748d52d31dab3f4854bc6022df008019daff1c7e31ac00363b3f", - sha_mac = "2a8d3d3ad721fec81ca1a4a581e4183b6e732e9905beb874531851846a05a367", - sha_mac_arm64 = "cf788a7bdc38bb40d01f94b2d46acafb0e2f02d8ee3b3d69541c114e467ee37f", - sha_win = "81518bba13f41717ffe6990b6d4a5af635d0c9d0f71a8d3bc0980cd0bc8f5f66", - ), - "3.1.20": struct( - hash = "d92c8639f406582d70a5dde27855f74ecf602f45", - sha_linux = "3b606d133489aac8cdfff4f99ff14a35563b1fafe658aa23f83694f77ed9467a", - sha_mac = "cc9ea1696bdb3f28778bac1cf4587a34e90830e1c64976cd205fd73e77566cd8", - sha_mac_arm64 = "b976410bf4fa1af9896be1c736634bfb56b2ef0f3386cd3cf39616ce47445cc0", - sha_win = "1e6806ee240ab838ae7eee618c57efc793195c62e4d167136507efcfa66d6c6d", - ), - "3.1.19": struct( - hash = "4c3772879a04140298c3abde90962d5567b5e2fc", - sha_linux = "18d4a5bb93371fe1d4586db9804f673fff0c510d98713ec25b6bda1a8457230d", - sha_mac = "6adb721340cb93b7a3efafbfd1d283842a39bb6f1390630b0806c8af26b66840", - sha_mac_arm64 = "429c9e3a79d32380f3dfee52b1001963edaa2e3035fce9f52ca87b08e1a2f26e", - sha_win = "0368eefb28f42799ce897020d0d10a4a27e1b69b650575d94deb268e402a3632", - ), - "3.1.18": struct( - hash = "49d45744895c7d7e28acd94a385d7ee361653b4a", - sha_linux = "6ef373c4ff3cdf33d7beecea47d4eaee7795693f8ca9469f33785cb9c54f40bb", - sha_mac = "ad0e645abdb6d3f0b6c6ad0ee70761010a712949c9b0b193aefc78ecbc3f1710", - sha_mac_arm64 = "68d0a1ec3e83e0415e24133c59e64206b83686712434c8c2e6792547cf654b1c", - sha_win = "96829a228f7c08fabd37833f7361614785aa39aa865beef06890ee8ede58dc66", - ), - "3.1.17": struct( - hash = "d27fef2070c86a218965da8b8b5df8b4425aa3bb", - sha_linux = "562b3ba75ce77a917317bc697febb38194e85cfe07f4fec308c3b29c621f8f13", - sha_mac = "8a2bee8ea434049e40663a6d78d1c3584e5c32196fd85d6a10f3192d2e3aba4e", - sha_mac_arm64 = "5f60d3f351d06d862e853a294642d24243d6cb197e34c2f2602d80555c2eb014", - sha_win = "90b2ade825e07bb05831090dd64b5f5b01a4169a84a3ddec85fcd60be3b246a5", - ), - "3.1.16": struct( - hash = "fb1baf00423818052359cf9126e94bc71c39feb5", - sha_linux = "bdce7e58833069a98d7e0b4fd9d6fea7394770ec10339cc95ed9fe52ba39f3a7", - sha_mac = "d05f4e997324d7f7d8561436677687d296893d6414f53930184fab272e4c6158", - sha_mac_arm64 = "36ab8da30698558a567c5c1c0e130b59f08cf4b29c9c5242f4ea60b449ecff17", - sha_win = "e1324c22c914ab7f62fe6d38a550de25b2232a723c80393fa8884a260c07766d", - ), - "3.1.15": struct( - hash = "568a46a9fb7e1f1686a6f7216b3dc976f28d2a79", - sha_linux = "737db513047d12e95a12f4fbe05314f3af79ac955d1ea43fc83626337e307edc", - sha_mac = "f8993371a1ff713203023f0283054a31df5342ca287debc4e16d04d97e069aee", - sha_mac_arm64 = "c61a8efa8543a6c44e394a0685e7d4facb4c7dbb210c4c32d311b0002c4dec99", - sha_win = "235592467a0be6a537e03fb587aaee230aa2c889f2785cb9754eb44bfbf747ed", - ), - "3.1.14": struct( - hash = "ade9d780ff17c88d81aa13860361743e3c1e1396", - sha_linux = "e2c43068fb1985592db42183a13f85bbd9518b3747746e0003d70c7d770a0b2f", - sha_mac = "567e9548f3fa7c1aa717821af4aaa7849a0f7217cb55eb7f66a06c898808fd96", - sha_mac_arm64 = "df8319aba8bc0d0c40ebec3c8f45e507c2a51a57df24826d4cab6f6cd75017ac", - sha_win = "6bfec6bf6a01e483a57e91f7223340a425f6ff711cbd32a08ed78002810d7882", - ), - "3.1.13": struct( - hash = "bc44364b561cfde15c243a54e3b96ea12d7ea284", - sha_linux = "290f04300465cbb7c8e920f9986128b3f287b14b93627b0c6d069d534860c1b4", - sha_mac = "72b209a3e5800be155cf5b29bdaceb18aefceeba68f35ac719a483bd27d85705", - sha_mac_arm64 = "2bf90ed73454f58b810e09a776a34ddf7395f9ee45580f3a8fea53f74ba7ede2", - sha_win = "07fd730289c26f72ae4037fd25f608f6b9d36f1950677229b6c7d392957db3d2", - ), - "3.1.12": struct( - hash = "a8c3b314d61e2bb98581d522f858132b2fc21488", - sha_linux = "ac8ae46b2fe2fbef07077cdeefc8288d2a73e3189958f32b36f2d17d868275d0", - sha_mac = "c33afddd7c8f7a5293cb427ef26eb65f51fa3121d0577568824174227aa37ef3", - sha_mac_arm64 = "253feff779385d2499764cd988175446e21db8cbb9952746e96969c2a763924c", - sha_win = "04015fb6a1b4ad4d7c16587a7eeaabf19c5b35097f3e28efa029c0c67547067c", - ), - "3.1.11": struct( - hash = "8c3a799341c01148692c52fda73bbba5e89c5727", - sha_linux = "ba52cfd784362530866c9d554ddc62cfa3f0690f44007c0b3b36e189bb579d5e", - sha_mac = "c46548425e0bf4acd3c4275aff6a463c90ff1faf283ae7f5237d8c17bf84d779", - sha_mac_arm64 = "c5ae40c468955ed02b86c54061278d2b4075b1230612bae5910f836aa9c200b3", - sha_win = "74481a1998236fd9d296f367584934d5ab8bbf174446ceb647f714031671de98", - ), - "3.1.10": struct( - hash = "8bd05c7221b4ce34d4bedec40b672d94e681a765", - sha_linux = "f5a937383b5c9fa15071a31d679a2ddd5c03bc8952cbbd5bfbf7c0a86c2dae5a", - sha_mac = "e73491f2787cbda75e718c3947916b57259164eddd9b2db16b9c876d3deb16a9", - sha_mac_arm64 = "d7485ce3b13f183484af5163d7bec79ece9a1fdc5845f8152e36270e6f90cfd9", - sha_win = "dd75061405bc902ecd983bd3e4cfd6931a866e1c9de602c4458280cbeb271720", - ), - "3.1.9": struct( - hash = "edabe25af34554d19c046078f853999b074259ca", - sha_linux = "89fa75c981e47ad19942b8236d2604b2666dfd516a08626aaa1bfb0d657c87bf", - sha_mac = "6c7f59dd84d1484f1dfa041d71cc79fc97db8d15834b6220e5868bd9bd373a24", - sha_mac_arm64 = "13a258de0daaa3c09a53e21a67414cbf5fa5706f955767fe791a059ed5eb90bf", - sha_win = "0857b03919b948558f9a57d15cf2b220852cc070359c386da0e6e4831c7ac5e0", - ), - "3.1.8": struct( - hash = "8c9e0a76ebed2c5e88a718d43e8b62452def3771", - sha_linux = "6b170777eb523e62972ad458e533b1853cd0c4e02f6f2cf4cd68e109499ccd9b", - sha_mac = "ede01fe160c3b8443f53f94dbad530e0e7e8197a1b874c7bb9038b187279080c", - sha_mac_arm64 = "9ecc8678f948875e7f64defeababc0320f98e103547f395c390c01d76e5a1d64", - sha_win = "039d27d4ae43b50d0858dbc4dcf412f572351e98e1056d7fdcdf2aab1740557e", - ), - "3.1.7": struct( - hash = "d0e637fe48197587d981f79e8114757731d0c2a9", - sha_linux = "d941738a3c755d6d530bab66d38325515b9dbaa588d2db2b8a63b2a8a1961e52", - sha_mac = "597aacdb25d422094427014d3a97e8b91ec80df2255a66e0986414bf71aaf37d", - sha_mac_arm64 = "a0b2db0269c55e854d1007a59f95b8e5f14d32309e76f985ea9afe481b2bd6e6", - sha_win = "cb44339db27b694862efb37539d41eaff7253c93c0882cf7d9aaf4afeaa82912", - ), - "3.1.6": struct( - hash = "8791c3e936141cbc2dd72d76290ea9b2726d39f3", - sha_linux = "f43dfe707dff18fa7a08dbfe2fa3f8d46afb65ccba9bbe554465d83d5d80e388", - sha_mac = "13a01080ff042560b9a9b1b2c9fc5f8c154710bc41db8bbd907a9e53c286afd0", - sha_mac_arm64 = "7ae97e85593b037c345b539e7f8b8952b82c001be982219060c83f0834bb6827", - sha_win = "e7005c0a5439e532cb64f34ba90405792288a1ed8845cdafcedd3de5af6fd3f2", - ), - "3.1.5": struct( - hash = "2dee36c7163f7394ab9341854ef5281501dd97d0", - sha_linux = "6641703b7da1805aa5a8488d231ae7fedfe27f1a5a33e7d05a2ee5902ab84180", - sha_mac = "9dba57f09702a7eed53f3f71cdd8a4ed1202ca5a5f4449249c2d98a285b26f75", - sha_mac_arm64 = "0093b4d47c9eb9c8bab5b3048c68855255b5e5a8bfd78f4183424009489327e6", - sha_win = "849edc42b494f670df4763dbc8ebbb5464ac28787482668c3f6e27588a77cb3a", - ), - "3.1.4": struct( - hash = "39e60dda6945cfcd6487725bdb1361ae7975173f", - sha_linux = "4a57c0d60eeb4e021de61c8497f0b595a0a9db0235f1640a528de752409f4fcf", - sha_mac = "f28a9a4f42f67de1d5c4d8a288f29e5082bbf4fcb172e0c6e248695163372478", - sha_mac_arm64 = "be35043edad7a7022f7b174e8efc90e2db54ba4fd71288760bea4db082835f56", - sha_win = "d97ff247bdfc7e839610cbcd87d30a65018f964d183d5b852b6021d43c5d199a", - ), - "3.1.3": struct( - hash = "2ddc66235392b37e5b33477fd86cbe01a14b8aa2", - sha_linux = "8b840819eb88f9178c11bad25859ce448a0559e485823a863a6add21380636ca", - sha_mac = "0cb3f9bfbcc744233eae9d20036155738409405eacf8a3d4f9beefc5919d809a", - sha_mac_arm64 = "ee2772f380419df17d154e00388a16bcddc78c7af035c16a2ee534d6ecf099aa", - sha_win = "c0549e1dbaa581ae66934c38beebd4250cd450cc2778e9a602cd9431bc81bc37", - ), - "3.1.2": struct( - hash = "6626e25d6d866cf283147ca68d54ac9326fe399f", - sha_linux = "4fb53364a2ba1de8978445aa26b2204bfd215b41da5d7df04f231040b197010a", - sha_mac = "a8e347accb1ff402d96a128912ac8cda1731611c9f89095fee0ad39a6a18bbc3", - sha_mac_arm64 = "4374f5c852d0403b0a3b0e9dc8a3856a340e9d82ecf0f20aa8b36c6179d31fc8", - sha_win = "e96f6ab8252fefa42f461676311d4c4e2d96fdc2e876ece07d9d7a49ef31aef0", - ), - "3.1.1": struct( - hash = "5ee64de9809592480da01372880ea11debd6c740", - sha_linux = "ba94c5ecabacbedc89665a742c37c4c132c739aea46aa66fd744cb72b260c870", - sha_mac = "8b5f8cec55af0e6816a08d8d1e8b873f96d0e0504fdd6e8deb2fc024957d1aa7", - sha_win = "6cbe976aff6155cf1c48707f0520b5aa6a7770860e9b1964bfca3e5923ce7225", - ), - "3.1.0": struct( - hash = "562e3a0af169e6dea5e6dbecac2255d67c2c8b94", - sha_linux = "0714344e32e244e6d44d9ea75937633ab1338e417a232fb66d6dcd7d4b704e8c", - sha_mac = "f6c1cad729ed799e1df09eacf5aa80cce9861d69ec6d9581c17e4ba8d9b064ce", - sha_win = "756c41cbcab4ae6077cca30834d16151392b8c19ab186c13d42d7d05d6d727cc", - ), - "3.0.1": struct( - hash = "91b7a67a486d2430e73423a38d950d8a550826ed", - sha_linux = "25fd430268596229c4ac38e188d7c2b31f75c2ec8172b1351d763e37c830c6af", - sha_mac = "52ec2204115b727cc4de38b5eeae147eead12b299b98e5a88653d12958cae4d4", - sha_win = "0e072736b471c9a07cdf534ba4da46b3b6545b63c8a6cbb0ef7d544251e15092", - ), - "3.0.0": struct( - hash = "7fbe748230f2ce99abbf975d9ad997699efb3153", - sha_linux = "10646b64daea15354f14f89f7e79937f420b77f31bda7c4b174de2474835950f", - sha_mac = "ebb17bc91c6a72ca06d17337d27aa1a2be4c9af4c68644c221712123f663b8ab", - sha_win = "0d4f2ff5d88a8eef5ed769ee4ffc5d5574143911d2e0079325cdc5206c9e9bb1", - ), - "2.0.34": struct( - hash = "d8fc1b92dbc0ce8d740a7adb937c5137ba4755e0", - sha_linux = "a6304e3a52c172eb178c6f9817d74aa3ee411e97ef00bcae0884377799c49954", - sha_mac = "975ae11000100362baf19d161fec04d82e1f7c9fb7d43c43864ddd65a47f1780", - sha_win = "8167a44bb895a0fdc153836bed91bf387be57f2dc1b8f103bf70e68923b61d39", - ), - "2.0.33": struct( - hash = "cef8850d57278271766fb2163eebcb07354018e7", - sha_linux = "958a0f4b1533e877c1a5ed3c13cb8baabc80e791d45858c2c94ac62325ada953", - sha_mac = "8ecb248653d44c3748e23c089cb9f0e3d4eee7cda13fdec27ec0113b896e34c4", - sha_mac_arm64 = "1ec6f3d7afa5e10f3af996e26d9c3a66f02ae49e48e512a4b5d6b7165c61290f", - sha_win = "6b6b2831f8b338488f787b4a8c34700277bf3988358dbb54426f017155603ac9", - ), - "2.0.32": struct( - hash = "74646397e3c5010824ad60d1de86c6bcbe334dff", - sha_linux = "236b3954e71d3bb30d347c655b9f47f2a091aa2e61046e1912c8da90152f4ca1", - sha_mac = "6a03267574534948e3b041e5d3e31bd757751ef17912eb6e90b96a47da03afb6", - sha_win = "2f8fbf0db097d67d0c364946faceec27c569c5c2d7b22068eef8db55645aba36", - ), - "2.0.31": struct( - hash = "597724ca3f6cd6e84bea73f1f519a3953b5c273d", - sha_linux = "ef70c7733aa0df41cb4c812f5a89bf6b2ed13ca8aa252872396c0be271156d9e", - sha_mac = "77e57c3e98758488ef676f8f58a85faa0bd65a1d326a91771ad83d7cb0e373ca", - sha_win = "541605b740afccd08a39f5ae815978f699f350d621a1b2dfba0763970b56aee4", - ), - "2.0.30": struct( - hash = "c69458f1bbf3ef5b8da4e934de210659cc9bca04", - sha_linux = "ee1c8270096a728966ae38af548047d1f64c18318e06ba75952e657136f02537", - sha_mac = "574a5819308eba6c8be6a780e26dff415a0e7178d3f44162dd8dca87eb40d4a7", - sha_win = "242d244f4f5f5af08e6e6ac9c143aebf1b7bb2a23fd2992350731e59acfee07c", - ), - "2.0.29": struct( - hash = "c2369dc425725fff86ba90a9007a4603ddf7941b", - sha_linux = "7df4a8f3e25820becadfa7f1fe0d78e764102ec3ee50c474ca1634ed90d48890", - sha_mac = "d998521ba95882a27792f0113ea2c972fbb891c240649f4c994f0260c0e1a213", - sha_win = "c64aa3f2af6503f6711b2322986a45784e00d7c7fe13ec3f5c4f740472d065a0", - ), - "2.0.28": struct( - hash = "866055ea639d64dfedc625d28ec981e47ce37168", - sha_linux = "7dca7704eb14e367bb67e9abc9eaf59e75f59b74e32422e04556de10897a9a86", - sha_mac = "370f76493e3805e2538290b698a381f04b6d78a77771e48fc0099cf89dad985f", - sha_win = "e913c50ea5f196d36971f7cf5b1cf9a9ca27ce0818aba56be3a66e31e95c0e5b", - ), - "2.0.27": struct( - hash = "1ac46e3b84955231ab4a4f4cbe0c7ac28c86b8cc", - sha_linux = "3e124e278de168cf22e03b93b2f14a65a86777e428cdaab7e5e1c2289eb41605", - sha_mac = "388262b9e1042ef9a3a1945d5a23dcd634c8042a225e8fdf80bcc2c1cb7e05cc", - sha_win = "762276a332432e717afb988310d21ae10e36facc1e05bfd77042a364fb43cc3c", - ), - "2.0.26": struct( - hash = "823d37b15d1ab61bc9ac0665ceef6951d3703842", - sha_linux = "996e16d368a99dd4dd12126acbcb8bea9a607b5257cc7b747c4afc2f036fd8cf", - sha_mac = "8b2d7e84cc449531e88034beb31da89a0b61ccaeaa1584ffb6da7842c6348fdc", - sha_win = "095e772764d7f8c0f8228bda4b8500ae43aac2303567da5cdc9f8623f70a5743", - ), - "2.0.25": struct( - hash = "f6f001b08fbb67935379cf13d17fd9bfdbaff791", - sha_linux = "06d8e2f3d4f4b35a57de9c15e62a559c941cfba1dd7ec02353d815904d912c3b", - sha_mac = "6541bf3a648aae7df84de424ff392dd1513ab5450203c84f72a6a03e321a301b", - sha_win = "267fbfa809ec0eb911c1962b1b9768675cb82228e694a5f9ef570232ee71db76", - ), - "2.0.24": struct( - hash = "6ab7fc5622a67e6111d07c4ba61c8d3c8fc33ed2", - sha_linux = "e5daa0e87f3afd2197e7975297cb0cd4c245edccb964ca5f1f32ee7d985bf440", - sha_mac = "e4b7f2a7b71d6ac4610ee7b14743570e0dfba3668dc6b4f984cbe7a135888527", - sha_win = "db2aad422a3ca2295be6101b0151eeee55dcea29ba1f31b4594c02ba46591cbe", - ), - "2.0.23": struct( - hash = "77b065ace39e6ab21446e13f92897f956c80476a", - sha_linux = "7713a9a5572d839aea9eaa84a7c4779d11c6c8818ee64a0f443b62081fae6d47", - sha_mac = "b793087462d581e25c8c267fca9d30519619e3272480862a56cc316a32c7afab", - sha_win = "b8885cbb41a39e4734861462e05ee58c7ff7562016a842bcee2603f229940e8b", - ), - "2.0.22": struct( - hash = "6465a9acb820207acf7da44661a7de52d0a1ae3c", - sha_linux = "c079781124e763c53c9fc73781fcee40296ce3314276836bc694f07bd331a859", - sha_mac = "ab95574dfc685b0300e37bea36aba413045bbfa2ab06b93eceb881670489eec1", - sha_win = "ba142e7e380596cba763e3a414de6511bcb86de48e4b48cf393b1ea449a24aaa", - ), - "2.0.21": struct( - hash = "72f4ec97fbc7ec16c15ae68a75b0a257b2835160", - sha_linux = "741264f33f96ba4b785ed0b133861ebdfefbaefab76ddcfe7bde6522829d6f70", - sha_mac = "b07c0d65ee7e2799170c6f3b2aacebfe070c2e4975088bcd1b3a4140fecd8418", - sha_win = "dc3cbf47aa4be52a92526f1790a013734ecbd407f7f36286ed0283c96355999a", - ), - "2.0.20": struct( - hash = "e0c15cd14170f407a9eb27fcbad22931dc67feb7", - sha_linux = "a196504fd1095836ca3961208338ff9e292be7729ea529bc19800aa7c966d34a", - sha_mac = "6cdbf17ed61486b38ea79d3f31d74483e7388d1e7468518dccba3f24e0ddd4c4", - sha_win = "4d22a32c219dbe18c55b635d014b9eaf7da60536171b7af37d9a8099fd33794b", - ), - "2.0.19": struct( - hash = "9b9ff2dabfb4a7fbacbc004c0bead12a60f9d05c", - sha_linux = "bd7c2a38ac88d219a1ab5003ddbf8fdc66a6ba55bc69f99077346edf2753b4ea", - sha_mac = "6cc44029c9052855a55938eb6496b5659da4b1ce9cb34502b740af5993a94f93", - sha_win = "a1fa8b1c387b9307f9b87c43dc83c0ff1bc04b9f29fbe4f39aff2dd946ca4b70", - ), - "2.0.18": struct( - hash = "c2ac7520fad29a7937ed60ab6a95b08eb374c7ba", - sha_linux = "e9f777de592f606b10104b2efe5179a7a8f44e3a9dffa1e3aaf73e05eb8893d7", - sha_mac = "86b1dd62e424e3788bf132292a694a25ca9b0875d06f50d0f5d424593697452c", - sha_win = "49ce07bda6be070251db44a08fcc05cae21ffdbd7522423a0c79bde635e87e28", - ), - "2.0.17": struct( - hash = "f5c45e60392b82f603e3a8039c62db294fab02d2", - sha_linux = "b40a4874057e4cace600f8ee9787dcbe236e3dc5b2fff5c2ecb0e867e426f99c", - sha_mac = "081f61abf7d5ac0ec31aaffc5550013d4093ea4ea39520b7a32b7448d2a6ee70", - sha_win = "45d06e597e6a1185a76200bd0481495e7298800a4805045d9cdbcce6311c91b2", - ), - "2.0.16": struct( - hash = "80d9674f2fafa6b9346d735c42d5c52b8cc8aa8e", - sha_linux = "e527638b224d9a30dc7e5fa4b9bd2eb2ab76ad306739ba8cacf5a5e333933a2a", - sha_mac = "061020eb0e3ee0611dc5a0008ccc7778168a4f838d49ca41c0aad8c52c1a01c9", - sha_win = "99364ed0388f928e0594f790662bf3a30c2894b0eff81797e1b64f62128561cb", - ), - "2.0.15": struct( - hash = "89202930a98fe7f9ed59b574469a9471b0bda7dd", - sha_linux = "7ff49fc63adf29970f6e7af1df445d7f554bdbbb2606db1cb5d3567ce69df1db", - sha_mac = "e35cced1514ad0da40584f8dd6f76aabf847ce0fa82c6dc8dd9442fb74ed6d0d", - sha_win = "31d5f8107c87833cea57edc57613bba4b36b16152772f744c5ad204594b4e666", - ), - "2.0.14": struct( - hash = "fc5562126762ab26c4757147a3b4c24e85a7289e", - sha_linux = "e466cd47ddd4bf0acd645412fdf08eda6d232484e48e5a2643e08062a7a4cf56", - sha_mac = "1c554c08459b7025638ca4eddba0d35babe8c26b202a70a74e9442d577896211", - sha_win = "428bc6094671937af96f26d803871fc5cd83d4d2b1c1df45fa6873a9bc5cac51", - ), - "2.0.13": struct( - hash = "ce0e4a4d1cab395ee5082a60ebb4f3891a94b256", - sha_linux = "8986ed886e111c661099c5147126b8a379a4040aab6a1f572fe01f0f9b99a343", - sha_mac = "88c91332c8c76fed14ebf0edc9a08f586012f54f04ad61e5b1b6d02bf96bdeab", - sha_win = "9fb3b945b7bd56e34d17ec04de4cce475f26c49d161aee9d9c0b8b1434591f88", - ), -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/.bazelrc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/.bazelrc deleted file mode 100644 index fbd75a7..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/.bazelrc +++ /dev/null @@ -1 +0,0 @@ -build --incompatible_enable_cc_toolchain_resolution diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/.gitignore b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/.gitignore deleted file mode 100644 index 3e67f78..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -bazel-bin -bazel-out -bazel-test_external -bazel-testlogs \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/BUILD b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/BUILD deleted file mode 100644 index e3a8e9e..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/BUILD +++ /dev/null @@ -1,66 +0,0 @@ -load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") - -cc_binary( - name = "hello-world", - srcs = ["hello-world.cc"], -) - -wasm_cc_binary( - name = "hello-world-wasm", - cc_target = ":hello-world", - outputs = [ - "hello-world.js", - "hello-world.wasm", - ], -) - -BASE_LINKOPTS = [ - "--bind", # Enable embind - "-sMODULARIZE", - "--pre-js", - "hello-embind-interface.js", -] - -RELEASE_OPTS = [ - "--closure=1", # Run the closure compiler - # Tell closure about the externs file, so as not to minify our JS public API. - "--closure-args=--externs=$(location hello-embind-externs.js)" -] - -DEBUG_OPTS = [ - "--closure=0", # Do not use closure -] - -config_setting( - name = "release_opts", - values = {"compilation_mode": "opt"}, -) - -config_setting( - name = "debug_opts", - values = {"compilation_mode": "dbg"}, -) - -cc_binary( - name = "hello-embind", - srcs = ["hello-embind.cc"], - features = ["emcc_debug_link"], - additional_linker_inputs = [ - "hello-embind-externs.js", - "hello-embind-interface.js", - ], - linkopts = select({ - ":debug_opts": BASE_LINKOPTS + DEBUG_OPTS, - ":release_opts": BASE_LINKOPTS + RELEASE_OPTS, - "//conditions:default": BASE_LINKOPTS + RELEASE_OPTS, - }), - # This target won't build successfully on its own because of missing emscripten - # headers etc. Therefore, we hide it from wildcards. - tags = ["manual"], -) - -wasm_cc_binary( - name = "hello-embind-wasm", - cc_target = ":hello-embind", -) - diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/MODULE.bazel b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/MODULE.bazel deleted file mode 100644 index 78fdaeb..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/MODULE.bazel +++ /dev/null @@ -1,6 +0,0 @@ -bazel_dep(name = "rules_cc", version = "0.1.1") -bazel_dep(name = "emsdk") -local_path_override( - module_name = "emsdk", - path = "..", -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/MODULE.bazel.lock b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/MODULE.bazel.lock deleted file mode 100644 index f374258..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/MODULE.bazel.lock +++ /dev/null @@ -1,3696 +0,0 @@ -{ - "lockFileVersion": 18, - "registryFileHashes": { - "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", - "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", - "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", - "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/MODULE.bazel": "e4529e12d8cd5b828e2b5960d07d3ec032541740d419d7d5b859cabbf5b056f9", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/source.json": "80cb66069ad626e0921555cd2bf278286fd7763fae2450e564e351792e8303f4", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/MODULE.bazel": "f19e6b4a16f77f8cf3728eac1f60dbfd8e043517fd4f4dbf17a75a6c50936d62", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/source.json": "abbb3eac3b6af76b8ce230a9a901c6d08d93f4f5ffd55314bf630827dddee57e", - "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", - "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", - "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", - "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", - "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", - "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", - "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", - "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", - "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", - "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", - "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", - "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", - "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", - "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", - "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", - "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", - "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", - "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", - "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", - "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", - "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", - "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", - "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", - "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", - "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", - "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", - "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", - "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", - "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", - "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", - "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", - "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", - "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", - "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", - "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", - "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", - "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", - "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", - "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", - "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", - "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", - "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", - "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", - "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", - "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", - "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", - "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", - "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", - "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", - "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", - "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", - "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", - "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", - "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", - "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", - "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", - "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", - "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", - "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", - "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", - "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", - "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", - "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", - "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", - "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", - "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", - "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", - "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", - "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", - "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", - "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", - "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", - "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", - "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", - "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", - "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", - "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", - "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", - "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", - "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", - "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", - "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", - "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", - "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", - "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", - "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", - "https://bcr.bazel.build/modules/rules_python/1.3.0/source.json": "25932f917cd279c7baefa6cb1d3fa8750a7a29de522024449b19af6eab51f4a0", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", - "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", - "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", - "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", - "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", - "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", - "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", - "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", - "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", - "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", - "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", - "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" - }, - "selectedYankedVersions": {}, - "moduleExtensions": { - "@@aspect_bazel_lib+//lib:extensions.bzl%toolchains": { - "general": { - "bzlTransitiveDigest": "nrCBrZBQH3Dq30TXMpPMV6lWpEDozX0S0kCia4Lrpj0=", - "usagesDigest": "1c7PNX163TGNqWzfejRnWpH/hiT4/GRG0kYxuez0Uz0=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "copy_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_directory" - } - }, - "copy_to_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_to_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_to_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_to_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_to_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_to_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_to_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_to_directory" - } - }, - "jq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "1.6" - } - }, - "jq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "1.6" - } - }, - "jq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "1.6" - } - }, - "jq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "1.6" - } - }, - "jq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", - "attributes": {} - }, - "jq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", - "attributes": { - "user_repository_name": "jq" - } - }, - "yq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "4.25.2" - } - }, - "yq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "4.25.2" - } - }, - "yq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "4.25.2" - } - }, - "yq_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "4.25.2" - } - }, - "yq_linux_s390x": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_s390x", - "version": "4.25.2" - } - }, - "yq_linux_ppc64le": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_ppc64le", - "version": "4.25.2" - } - }, - "yq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "4.25.2" - } - }, - "yq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", - "attributes": {} - }, - "yq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", - "attributes": { - "user_repository_name": "yq" - } - }, - "coreutils_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "0.0.16" - } - }, - "coreutils_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "0.0.16" - } - }, - "coreutils_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "0.0.16" - } - }, - "coreutils_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "0.0.16" - } - }, - "coreutils_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "0.0.16" - } - }, - "coreutils_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", - "attributes": { - "user_repository_name": "coreutils" - } - }, - "bsd_tar_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "bsd_tar_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "bsd_tar_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "bsd_tar_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "bsd_tar_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "bsd_tar_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", - "attributes": { - "user_repository_name": "bsd_tar" - } - }, - "expand_template_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "expand_template_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "expand_template_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "expand_template_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "expand_template_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "expand_template_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "expand_template_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_toolchains_repo", - "attributes": { - "user_repository_name": "expand_template" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { - "general": { - "bzlTransitiveDigest": "poAa/2uyrVSr9Hel1HD6GfFwqId27yXfePnG+3Dmt90=", - "usagesDigest": "yxkJioaKxOYkZAdkGoq2Cm79s4pW36Xwx7a8awQOU2E=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "pnpm": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "root_package": "", - "link_workspace": "", - "link_packages": {}, - "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", - "url": "", - "commit": "", - "patch_args": [ - "-p0" - ], - "patches": [], - "custom_postinstall": "", - "npm_auth": "", - "npm_auth_basic": "", - "npm_auth_username": "", - "npm_auth_password": "", - "lifecycle_hooks": [], - "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", - "generate_bzl_library_targets": false, - "extract_full_archive": true - } - }, - "pnpm__links": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "dev": false, - "root_package": "", - "link_packages": {}, - "deps": {}, - "transitive_closure": {}, - "lifecycle_build_target": false, - "lifecycle_hooks_env": [], - "lifecycle_hooks_execution_requirements": [ - "no-sandbox" - ], - "lifecycle_hooks_use_default_shell_env": false, - "bins": {}, - "package_visibility": [ - "//visibility:public" - ], - "replace_package": "" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ], - [ - "aspect_rules_js+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_rules_js+", - "bazel_features", - "bazel_features+" - ], - [ - "aspect_rules_js+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_rules_js+", - "bazel_tools", - "bazel_tools" - ], - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "bazel_features+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@emsdk+//:emscripten_cache.bzl%emscripten_cache": { - "general": { - "bzlTransitiveDigest": "uqDvXmpTNqW4+ie/Fk+xC3TrFrKvL+9hNtoP51Kt2oo=", - "usagesDigest": "d45w3mu98tmYO95D//utIzVG+p8OPeGUpN0TgQMnLHA=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_cache": { - "repoRuleId": "@@emsdk+//:emscripten_cache.bzl%_emscripten_cache_repository", - "attributes": { - "configuration": [], - "targets": [] - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@emsdk+//:emscripten_deps.bzl%emscripten_deps": { - "general": { - "bzlTransitiveDigest": "h0wQ3PSRx/Q9n+izTifYO8L728OTd9B5YbLOWcobVYE=", - "usagesDigest": "eqaMlu1tts7n29bG5zUl3DtA/9ARE+6aHrSK4X7kNno=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_bin_linux": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_linux_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_mac": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_mac_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_win": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/clang++.exe\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/llvm-ar.exe\",\n \"bin/llvm-dwarfdump.exe\",\n \"bin/llvm-nm.exe\",\n \"bin/llvm-objcopy.exe\",\n \"bin/wasm-ctor-eval.exe\",\n \"bin/wasm-emscripten-finalize.exe\",\n \"bin/wasm-ld.exe\",\n \"bin/wasm-metadce.exe\",\n \"bin/wasm-opt.exe\",\n \"bin/wasm-split.exe\",\n \"bin/wasm2js.exe\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar.exe\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", - "strip_prefix": "install", - "type": "zip", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.zip" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "bazel_tools", - "rules_cc", - "rules_cc+" - ], - [ - "emsdk+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@pybind11_bazel+//:python_configure.bzl%extension": { - "general": { - "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", - "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", - "recordedFileInputs": { - "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" - }, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_python": { - "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", - "attributes": {} - }, - "pybind11": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@pybind11_bazel+//:pybind11.BUILD", - "strip_prefix": "pybind11-2.11.1", - "urls": [ - "https://github.com/pybind/pybind11/archive/v2.11.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "pybind11_bazel+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { - "general": { - "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", - "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "platforms": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" - ], - "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" - } - }, - "rules_python": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", - "strip_prefix": "rules_python-0.28.0", - "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" - } - }, - "bazel_skylib": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" - ] - } - }, - "com_google_absl": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" - ], - "strip_prefix": "abseil-cpp-20240116.1", - "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" - } - }, - "rules_fuzzing_oss_fuzz": { - "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", - "attributes": {} - }, - "honggfuzz": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", - "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", - "url": "https://github.com/google/honggfuzz/archive/2.5.zip", - "strip_prefix": "honggfuzz-2.5" - } - }, - "rules_fuzzing_jazzer": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" - } - }, - "rules_fuzzing_jazzer_api": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_fuzzing+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { - "general": { - "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", - "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "compatibility_proxy": { - "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_java+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { - "general": { - "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", - "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "com_github_jetbrains_kotlin_git": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", - "attributes": { - "urls": [ - "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" - ], - "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" - } - }, - "com_github_jetbrains_kotlin": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", - "attributes": { - "git_repository_name": "com_github_jetbrains_kotlin_git", - "compiler_version": "1.9.23" - } - }, - "com_github_google_ksp": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", - "attributes": { - "urls": [ - "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" - ], - "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", - "strip_version": "1.9.23-1.0.20" - } - }, - "com_github_pinterest_ktlint": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", - "attributes": { - "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", - "urls": [ - "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" - ], - "executable": true - } - }, - "rules_android": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", - "strip_prefix": "rules_android-0.1.1", - "urls": [ - "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_kotlin+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_nodejs+//nodejs:extensions.bzl%node": { - "general": { - "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", - "usagesDigest": "m7d0VXcsX/qS6DKMUBtdgjQzP2eMRHqsE4wv7dzr71I=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "nodejs_linux_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_amd64" - } - }, - "nodejs_linux_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_arm64" - } - }, - "nodejs_linux_s390x": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_s390x" - } - }, - "nodejs_linux_ppc64le": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_ppc64le" - } - }, - "nodejs_darwin_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_amd64" - } - }, - "nodejs_darwin_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_arm64" - } - }, - "nodejs_windows_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "windows_amd64" - } - }, - "nodejs": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_host": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_toolchains": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", - "attributes": { - "user_node_repository_name": "nodejs" - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@rules_python+//python/extensions:pip.bzl%pip": { - "general": { - "bzlTransitiveDigest": "Jbed6zJUJ6E78XRyOlnG1ryhBDvVeikdntPW1D40S/E=", - "usagesDigest": "fztm9ST3ki9E77tct2ZwJe0w38LvfMY8mRYp+YHxXQE=", - "recordedFileInputs": { - "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", - "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", - "@@rules_python+//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8", - "@@rules_python+//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", - "@@rules_python+//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76" - }, - "recordedDirentsInputs": {}, - "envVariables": { - "RULES_PYTHON_REPO_DEBUG": null, - "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null - }, - "generatedRepoSpecs": { - "pip_deps_310_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_310_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_311_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_311_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_312_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_312_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_38_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_38_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_39_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_39_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "setuptools<=70.3.0" - } - }, - "rules_fuzzing_py_deps_310_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_310_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_311_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_311_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_312_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_312_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_38_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_38_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_39_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_39_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "backports.tarfile-1.2.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", - "urls": [ - "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "backports_tarfile-1.2.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", - "urls": [ - "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "certifi-2024.8.30-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", - "urls": [ - "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_certifi_sdist_bec941d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "certifi-2024.8.30.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", - "urls": [ - "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", - "urls": [ - "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", - "urls": [ - "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", - "urls": [ - "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", - "urls": [ - "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", - "urls": [ - "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_sdist_1c39c601": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cffi-1.17.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", - "urls": [ - "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", - "urls": [ - "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", - "urls": [ - "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", - "urls": [ - "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", - "urls": [ - "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", - "urls": [ - "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", - "urls": [ - "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", - "urls": [ - "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", - "urls": [ - "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", - "urls": [ - "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", - "urls": [ - "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", - "urls": [ - "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "charset_normalizer-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", - "urls": [ - "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", - "urls": [ - "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", - "urls": [ - "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", - "urls": [ - "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", - "urls": [ - "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", - "urls": [ - "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", - "urls": [ - "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_sdist_315b9001": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cryptography-43.0.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", - "urls": [ - "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "docutils-0.21.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", - "urls": [ - "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "docutils-0.21.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", - "urls": [ - "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "idna-3.10-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", - "urls": [ - "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_idna_sdist_12f65c9b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "idna-3.10.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", - "urls": [ - "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "importlib_metadata-8.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", - "urls": [ - "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "importlib_metadata-8.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", - "urls": [ - "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.classes-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", - "urls": [ - "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco.classes-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", - "urls": [ - "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.context-6.0.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", - "urls": [ - "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_context-6.0.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", - "urls": [ - "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.functools-4.1.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", - "urls": [ - "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_functools-4.1.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", - "urls": [ - "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "jeepney-0.8.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", - "urls": [ - "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jeepney-0.8.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", - "urls": [ - "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "keyring-25.4.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", - "urls": [ - "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "keyring-25.4.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", - "urls": [ - "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "markdown_it_py-3.0.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", - "urls": [ - "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "markdown-it-py-3.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", - "urls": [ - "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "mdurl-0.1.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", - "urls": [ - "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "mdurl-0.1.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", - "urls": [ - "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "more_itertools-10.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", - "urls": [ - "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "more-itertools-10.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", - "urls": [ - "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", - "urls": [ - "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", - "urls": [ - "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", - "urls": [ - "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", - "urls": [ - "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", - "urls": [ - "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", - "urls": [ - "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", - "urls": [ - "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", - "urls": [ - "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", - "urls": [ - "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", - "urls": [ - "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", - "urls": [ - "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_sdist_94a16692": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "nh3-0.2.18.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", - "urls": [ - "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pkginfo-1.10.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", - "urls": [ - "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pkginfo-1.10.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", - "urls": [ - "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "pycparser-2.22-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", - "urls": [ - "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pycparser-2.22.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", - "urls": [ - "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pygments-2.18.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", - "urls": [ - "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pygments_sdist_786ff802": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pygments-2.18.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", - "urls": [ - "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", - "urls": [ - "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pywin32-ctypes-0.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", - "urls": [ - "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "readme_renderer-44.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", - "urls": [ - "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "readme_renderer-44.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", - "urls": [ - "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests-2.32.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", - "urls": [ - "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_sdist_55365417": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-2.32.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", - "urls": [ - "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", - "urls": [ - "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-toolbelt-1.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", - "urls": [ - "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", - "urls": [ - "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rfc3986-2.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", - "urls": [ - "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rich-13.9.4-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", - "urls": [ - "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rich_sdist_43959497": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rich-13.9.4.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", - "urls": [ - "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "SecretStorage-3.3.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", - "urls": [ - "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "SecretStorage-3.3.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", - "urls": [ - "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "twine-5.1.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", - "urls": [ - "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_twine_sdist_9aa08251": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "twine-5.1.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", - "urls": [ - "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "urllib3-2.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", - "urls": [ - "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "urllib3-2.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", - "urls": [ - "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "zipp-3.20.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", - "urls": [ - "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "zipp-3.20.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", - "urls": [ - "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" - ] - } - }, - "pip_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "pip_deps", - "extra_hub_aliases": {}, - "whl_map": { - "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", - "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "numpy", - "setuptools" - ], - "groups": {} - } - }, - "rules_fuzzing_py_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_fuzzing_py_deps", - "extra_hub_aliases": {}, - "whl_map": { - "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", - "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "absl_py", - "six" - ], - "groups": {} - } - }, - "rules_python_publish_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_python_publish_deps", - "extra_hub_aliases": {}, - "whl_map": { - "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", - "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", - "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", - "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", - "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", - "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", - "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", - "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", - "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", - "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", - "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", - "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", - "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", - "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", - "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", - "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", - "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", - "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", - "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", - "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" - }, - "packages": [ - "backports_tarfile", - "certifi", - "charset_normalizer", - "docutils", - "idna", - "importlib_metadata", - "jaraco_classes", - "jaraco_context", - "jaraco_functools", - "keyring", - "markdown_it_py", - "mdurl", - "more_itertools", - "nh3", - "pkginfo", - "pygments", - "readme_renderer", - "requests", - "requests_toolbelt", - "rfc3986", - "rich", - "twine", - "urllib3", - "zipp" - ], - "groups": {} - } - } - }, - "moduleExtensionMetadata": { - "useAllRepos": "NO", - "reproducible": false - }, - "recordedRepoMappingEntries": [ - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "rules_python+", - "bazel_features", - "bazel_features+" - ], - [ - "rules_python+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "rules_python+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_python+", - "pypi__build", - "rules_python++internal_deps+pypi__build" - ], - [ - "rules_python+", - "pypi__click", - "rules_python++internal_deps+pypi__click" - ], - [ - "rules_python+", - "pypi__colorama", - "rules_python++internal_deps+pypi__colorama" - ], - [ - "rules_python+", - "pypi__importlib_metadata", - "rules_python++internal_deps+pypi__importlib_metadata" - ], - [ - "rules_python+", - "pypi__installer", - "rules_python++internal_deps+pypi__installer" - ], - [ - "rules_python+", - "pypi__more_itertools", - "rules_python++internal_deps+pypi__more_itertools" - ], - [ - "rules_python+", - "pypi__packaging", - "rules_python++internal_deps+pypi__packaging" - ], - [ - "rules_python+", - "pypi__pep517", - "rules_python++internal_deps+pypi__pep517" - ], - [ - "rules_python+", - "pypi__pip", - "rules_python++internal_deps+pypi__pip" - ], - [ - "rules_python+", - "pypi__pip_tools", - "rules_python++internal_deps+pypi__pip_tools" - ], - [ - "rules_python+", - "pypi__pyproject_hooks", - "rules_python++internal_deps+pypi__pyproject_hooks" - ], - [ - "rules_python+", - "pypi__setuptools", - "rules_python++internal_deps+pypi__setuptools" - ], - [ - "rules_python+", - "pypi__tomli", - "rules_python++internal_deps+pypi__tomli" - ], - [ - "rules_python+", - "pypi__wheel", - "rules_python++internal_deps+pypi__wheel" - ], - [ - "rules_python+", - "pypi__zipp", - "rules_python++internal_deps+pypi__zipp" - ], - [ - "rules_python+", - "pythons_hub", - "rules_python++python+pythons_hub" - ], - [ - "rules_python++python+pythons_hub", - "python_3_10_host", - "rules_python++python+python_3_10_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_11_host", - "rules_python++python+python_3_11_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_12_host", - "rules_python++python+python_3_12_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_13_host", - "rules_python++python+python_3_13_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_8_host", - "rules_python++python+python_3_8_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_9_host", - "rules_python++python+python_3_9_host" - ] - ] - } - }, - "@@rules_python+//python/uv:uv.bzl%uv": { - "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "vJ5RHUxAnV24M5swNGiAnkdxMx3Hp/iOLmNANTC5Xc8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "uv": { - "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", - "attributes": { - "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", - "toolchain_names": [ - "none" - ], - "toolchain_implementations": { - "none": "'@@rules_python+//python:none'" - }, - "toolchain_compatible_with": { - "none": [ - "@platforms//:incompatible" - ] - }, - "toolchain_target_settings": {} - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_python+", - "platforms", - "platforms" - ] - ] - } - } - } -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-embind-externs.js b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-embind-externs.js deleted file mode 100644 index 864d220..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-embind-externs.js +++ /dev/null @@ -1,2 +0,0 @@ -// This file prevents customJSFunctionToTestClosure from being minified by the Closure compiler. -Module.customJSFunctionToTestClosure = function() {} \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-embind-interface.js b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-embind-interface.js deleted file mode 100644 index ddc4d2f..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-embind-interface.js +++ /dev/null @@ -1,3 +0,0 @@ -Module.customJSFunctionToTestClosure = function(firstParam, secondParam) { - console.log("This function adds two numbers to get", firstParam + secondParam); -} \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-embind.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-embind.cc deleted file mode 100644 index d5bff5f..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-embind.cc +++ /dev/null @@ -1,16 +0,0 @@ -#include - -using namespace emscripten; - -class HelloClass { - public: - static std::string SayHello(const std::string &name) { - return "Yo! " + name; - }; -}; - -EMSCRIPTEN_BINDINGS(Hello) { - emscripten::class_("HelloClass") - .constructor<>() - .class_function("SayHello", &HelloClass::SayHello); -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-world.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-world.cc deleted file mode 100644 index ee72c53..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/hello-world.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(int argc, char** argv) { - std::cout << "hello world!" << std::endl; - return 0; -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/BUILD.bazel b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/BUILD.bazel deleted file mode 100644 index 4ffe247..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/BUILD.bazel +++ /dev/null @@ -1,61 +0,0 @@ -load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") - -_TEST_TARGETS = [ - "long_command_line_file01", - "long_command_line_file02", - "long_command_line_file03", - "long_command_line_file04", - "long_command_line_file05", - "long_command_line_file06", - "long_command_line_file07", - "long_command_line_file08", - "long_command_line_file09", - "long_command_line_file10", - "long_command_line_file11", - "long_command_line_file12", - "long_command_line_file13", - "long_command_line_file14", - "long_command_line_file15", - "long_command_line_file16", - "long_command_line_file17", - "long_command_line_file18", - "long_command_line_file19", - "long_command_line_file20", -] - -_TEST_TARGET_SUFFIXES = [ - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", -] - -[cc_library( - name = "{}_{}".format(target, suffix), - hdrs = ["include/{}.hh".format(target)], - # stripping include prefix to create more flags passed to emcc - strip_include_prefix = "include", - srcs = ["{}.cc".format(target)], -) for target in _TEST_TARGETS for suffix in _TEST_TARGET_SUFFIXES] - -cc_binary( - name = "long_command_line", - linkshared = True, - srcs = ["long_command_line.cc"], - deps = [":{}_{}".format(target, suffix) for target in _TEST_TARGETS for suffix in _TEST_TARGET_SUFFIXES], -) - -wasm_cc_binary( - name = "long_command_line_wasm", - cc_target = ":long_command_line", - outputs = [ - "long_command_line.js", - "long_command_line.wasm", - ], -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file01.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file01.hh deleted file mode 100644 index 8dd06ba..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file01.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f1(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file02.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file02.hh deleted file mode 100644 index 7a3a0ff..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file02.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f2(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file03.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file03.hh deleted file mode 100644 index 1688055..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file03.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f3(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file04.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file04.hh deleted file mode 100644 index 45ef1fc..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file04.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f4(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file05.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file05.hh deleted file mode 100644 index 707ad50..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file05.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f5(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file06.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file06.hh deleted file mode 100644 index 5d91450..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file06.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f6(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file07.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file07.hh deleted file mode 100644 index b0bf811..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file07.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f7(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file08.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file08.hh deleted file mode 100644 index 994b7ea..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file08.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f8(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file09.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file09.hh deleted file mode 100644 index 90c1958..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file09.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f9(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file10.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file10.hh deleted file mode 100644 index 6a43881..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file10.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f10(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file11.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file11.hh deleted file mode 100644 index 878c939..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file11.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f11(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file12.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file12.hh deleted file mode 100644 index b5e0bc3..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file12.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f12(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file13.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file13.hh deleted file mode 100644 index 634dcef..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file13.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f13(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file14.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file14.hh deleted file mode 100644 index 8fa9666..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file14.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f14(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file15.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file15.hh deleted file mode 100644 index 1f7b770..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file15.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f15(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file16.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file16.hh deleted file mode 100644 index c9fa2fc..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file16.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f16(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file17.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file17.hh deleted file mode 100644 index b959207..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file17.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f17(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file18.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file18.hh deleted file mode 100644 index af0bacf..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file18.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f18(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file19.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file19.hh deleted file mode 100644 index 0ac9b4b..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file19.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f19(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file20.hh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file20.hh deleted file mode 100644 index 0f10c73..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/include/long_command_line_file20.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f20(); diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line.cc deleted file mode 100644 index 1ae13ab..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line.cc +++ /dev/null @@ -1,43 +0,0 @@ -#include "long_command_line_file01.hh" -#include "long_command_line_file02.hh" -#include "long_command_line_file03.hh" -#include "long_command_line_file04.hh" -#include "long_command_line_file05.hh" -#include "long_command_line_file06.hh" -#include "long_command_line_file07.hh" -#include "long_command_line_file08.hh" -#include "long_command_line_file09.hh" -#include "long_command_line_file10.hh" -#include "long_command_line_file11.hh" -#include "long_command_line_file12.hh" -#include "long_command_line_file13.hh" -#include "long_command_line_file14.hh" -#include "long_command_line_file15.hh" -#include "long_command_line_file16.hh" -#include "long_command_line_file17.hh" -#include "long_command_line_file18.hh" -#include "long_command_line_file19.hh" -#include "long_command_line_file20.hh" - -int main() { - f1(); - f2(); - f3(); - f4(); - f5(); - f6(); - f7(); - f8(); - f9(); - f10(); - f11(); - f12(); - f13(); - f14(); - f15(); - f16(); - f17(); - f18(); - f19(); - f20(); -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file01.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file01.cc deleted file mode 100644 index 3bf8d4a..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file01.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file01.hh" - -#include - -void f1() { std::cout << "hello from f1()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file02.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file02.cc deleted file mode 100644 index b8ac814..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file02.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file02.hh" - -#include - -void f2() { std::cout << "hello from f2()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file03.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file03.cc deleted file mode 100644 index 294e777..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file03.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file03.hh" - -#include - -void f3() { std::cout << "hello from f3()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file04.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file04.cc deleted file mode 100644 index c0d537d..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file04.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file04.hh" - -#include - -void f4() { std::cout << "hello from f4()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file05.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file05.cc deleted file mode 100644 index 310e3e0..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file05.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file05.hh" - -#include - -void f5() { std::cout << "hello from f5()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file06.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file06.cc deleted file mode 100644 index 2c218fd..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file06.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file06.hh" - -#include - -void f6() { std::cout << "hello from f6()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file07.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file07.cc deleted file mode 100644 index c78dc40..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file07.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file07.hh" - -#include - -void f7() { std::cout << "hello from f7()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file08.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file08.cc deleted file mode 100644 index 1c2e10f..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file08.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file08.hh" - -#include - -void f8() { std::cout << "hello from f8()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file09.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file09.cc deleted file mode 100644 index 6c0028d..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file09.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file09.hh" - -#include - -void f9() { std::cout << "hello from f9()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file10.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file10.cc deleted file mode 100644 index 9f0be9c..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file10.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file10.hh" - -#include - -void f10() { std::cout << "hello from f10()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file11.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file11.cc deleted file mode 100644 index 2ef8f96..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file11.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file11.hh" - -#include - -void f11() { std::cout << "hello from f11()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file12.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file12.cc deleted file mode 100644 index 7634996..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file12.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file12.hh" - -#include - -void f12() { std::cout << "hello from f12()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file13.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file13.cc deleted file mode 100644 index bca66d0..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file13.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file13.hh" - -#include - -void f13() { std::cout << "hello from f13()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file14.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file14.cc deleted file mode 100644 index 543179f..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file14.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file14.hh" - -#include - -void f14() { std::cout << "hello from f14()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file15.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file15.cc deleted file mode 100644 index 28767ef..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file15.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file15.hh" - -#include - -void f15() { std::cout << "hello from f15()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file16.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file16.cc deleted file mode 100644 index ca7ff99..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file16.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file16.hh" - -#include - -void f16() { std::cout << "hello from f16()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file17.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file17.cc deleted file mode 100644 index 2230d36..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file17.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file17.hh" - -#include - -void f17() { std::cout << "hello from f17()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file18.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file18.cc deleted file mode 100644 index 822cd14..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file18.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file18.hh" - -#include - -void f18() { std::cout << "hello from f18()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file19.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file19.cc deleted file mode 100644 index b864064..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file19.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file19.hh" - -#include - -void f19() { std::cout << "hello from f19()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file20.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file20.cc deleted file mode 100644 index 0562be6..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_external/long_command_line/long_command_line_file20.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file20.hh" - -#include - -void f20() { std::cout << "hello from f20()\n"; } diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/.bazelrc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/.bazelrc deleted file mode 100644 index fbd75a7..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/.bazelrc +++ /dev/null @@ -1 +0,0 @@ -build --incompatible_enable_cc_toolchain_resolution diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/.gitignore b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/.gitignore deleted file mode 100644 index 9d50f0b..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -bazel-bin -bazel-out -bazel-test_secondary_lto_cache -bazel-testlogs \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/BUILD b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/BUILD deleted file mode 100644 index f364f37..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") - -cc_binary( - name = "hello-world", - srcs = ["hello-world.cc"], - linkopts = [ - "-sAUTO_NATIVE_LIBRARIES=0", - "-flto", - ], -) - -wasm_cc_binary( - name = "hello-world-wasm", - cc_target = ":hello-world", - outputs = [ - "hello-world.js", - "hello-world.wasm", - ], -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/MODULE.bazel b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/MODULE.bazel deleted file mode 100644 index 0fabdc8..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/MODULE.bazel +++ /dev/null @@ -1,25 +0,0 @@ -bazel_dep(name = "rules_cc", version = "0.1.1") -bazel_dep(name = "emsdk") -local_path_override( - module_name = "emsdk", - path = "..", -) - -emscripten_cache = use_extension( - "@emsdk//:emscripten_cache.bzl", - "emscripten_cache", -) -emscripten_cache.configuration(flags = ["--lto"]) -emscripten_cache.targets(targets = [ - "crtbegin", - "libprintf_long_double-debug", - "libstubs-debug", - "libnoexit", - "libc-debug", - "libdlmalloc", - "libcompiler_rt", - "libc++-noexcept", - "libc++abi-debug-noexcept", - "libsockets", - "libdlmalloc-debug", -]) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/MODULE.bazel.lock b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/MODULE.bazel.lock deleted file mode 100644 index a340fd7..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/MODULE.bazel.lock +++ /dev/null @@ -1,3710 +0,0 @@ -{ - "lockFileVersion": 18, - "registryFileHashes": { - "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", - "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", - "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", - "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/MODULE.bazel": "e4529e12d8cd5b828e2b5960d07d3ec032541740d419d7d5b859cabbf5b056f9", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/source.json": "80cb66069ad626e0921555cd2bf278286fd7763fae2450e564e351792e8303f4", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/MODULE.bazel": "f19e6b4a16f77f8cf3728eac1f60dbfd8e043517fd4f4dbf17a75a6c50936d62", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/source.json": "abbb3eac3b6af76b8ce230a9a901c6d08d93f4f5ffd55314bf630827dddee57e", - "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", - "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", - "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", - "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", - "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", - "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", - "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", - "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", - "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", - "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", - "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", - "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", - "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", - "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", - "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", - "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", - "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", - "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", - "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", - "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", - "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", - "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", - "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", - "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", - "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", - "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", - "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", - "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", - "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", - "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", - "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", - "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", - "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", - "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", - "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", - "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", - "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", - "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", - "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", - "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", - "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", - "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", - "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", - "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", - "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", - "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", - "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", - "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", - "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", - "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", - "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", - "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", - "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", - "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", - "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", - "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", - "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", - "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", - "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", - "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", - "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", - "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", - "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", - "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", - "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", - "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", - "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", - "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", - "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", - "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", - "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", - "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", - "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", - "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", - "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", - "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", - "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", - "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", - "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", - "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", - "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", - "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", - "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", - "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", - "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", - "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", - "https://bcr.bazel.build/modules/rules_python/1.3.0/source.json": "25932f917cd279c7baefa6cb1d3fa8750a7a29de522024449b19af6eab51f4a0", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", - "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", - "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", - "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", - "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", - "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", - "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", - "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", - "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", - "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", - "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", - "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" - }, - "selectedYankedVersions": {}, - "moduleExtensions": { - "@@aspect_bazel_lib+//lib:extensions.bzl%toolchains": { - "general": { - "bzlTransitiveDigest": "nrCBrZBQH3Dq30TXMpPMV6lWpEDozX0S0kCia4Lrpj0=", - "usagesDigest": "1c7PNX163TGNqWzfejRnWpH/hiT4/GRG0kYxuez0Uz0=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "copy_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_directory" - } - }, - "copy_to_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_to_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_to_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_to_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_to_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_to_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_to_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_to_directory" - } - }, - "jq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "1.6" - } - }, - "jq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "1.6" - } - }, - "jq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "1.6" - } - }, - "jq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "1.6" - } - }, - "jq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", - "attributes": {} - }, - "jq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", - "attributes": { - "user_repository_name": "jq" - } - }, - "yq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "4.25.2" - } - }, - "yq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "4.25.2" - } - }, - "yq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "4.25.2" - } - }, - "yq_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "4.25.2" - } - }, - "yq_linux_s390x": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_s390x", - "version": "4.25.2" - } - }, - "yq_linux_ppc64le": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_ppc64le", - "version": "4.25.2" - } - }, - "yq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "4.25.2" - } - }, - "yq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", - "attributes": {} - }, - "yq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", - "attributes": { - "user_repository_name": "yq" - } - }, - "coreutils_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "0.0.16" - } - }, - "coreutils_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "0.0.16" - } - }, - "coreutils_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "0.0.16" - } - }, - "coreutils_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "0.0.16" - } - }, - "coreutils_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "0.0.16" - } - }, - "coreutils_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", - "attributes": { - "user_repository_name": "coreutils" - } - }, - "bsd_tar_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "bsd_tar_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "bsd_tar_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "bsd_tar_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "bsd_tar_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "bsd_tar_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", - "attributes": { - "user_repository_name": "bsd_tar" - } - }, - "expand_template_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "expand_template_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "expand_template_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "expand_template_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "expand_template_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "expand_template_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "expand_template_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_toolchains_repo", - "attributes": { - "user_repository_name": "expand_template" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { - "general": { - "bzlTransitiveDigest": "poAa/2uyrVSr9Hel1HD6GfFwqId27yXfePnG+3Dmt90=", - "usagesDigest": "yxkJioaKxOYkZAdkGoq2Cm79s4pW36Xwx7a8awQOU2E=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "pnpm": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "root_package": "", - "link_workspace": "", - "link_packages": {}, - "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", - "url": "", - "commit": "", - "patch_args": [ - "-p0" - ], - "patches": [], - "custom_postinstall": "", - "npm_auth": "", - "npm_auth_basic": "", - "npm_auth_username": "", - "npm_auth_password": "", - "lifecycle_hooks": [], - "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", - "generate_bzl_library_targets": false, - "extract_full_archive": true - } - }, - "pnpm__links": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "dev": false, - "root_package": "", - "link_packages": {}, - "deps": {}, - "transitive_closure": {}, - "lifecycle_build_target": false, - "lifecycle_hooks_env": [], - "lifecycle_hooks_execution_requirements": [ - "no-sandbox" - ], - "lifecycle_hooks_use_default_shell_env": false, - "bins": {}, - "package_visibility": [ - "//visibility:public" - ], - "replace_package": "" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ], - [ - "aspect_rules_js+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_rules_js+", - "bazel_features", - "bazel_features+" - ], - [ - "aspect_rules_js+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_rules_js+", - "bazel_tools", - "bazel_tools" - ], - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "bazel_features+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@emsdk+//:emscripten_cache.bzl%emscripten_cache": { - "general": { - "bzlTransitiveDigest": "uqDvXmpTNqW4+ie/Fk+xC3TrFrKvL+9hNtoP51Kt2oo=", - "usagesDigest": "Es3QEMexQ1KNtrNtX+vNCqjkgkmUNeW2FQd1xCVcWs8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_cache": { - "repoRuleId": "@@emsdk+//:emscripten_cache.bzl%_emscripten_cache_repository", - "attributes": { - "configuration": [ - "--lto" - ], - "targets": [ - "crtbegin", - "libprintf_long_double-debug", - "libstubs-debug", - "libnoexit", - "libc-debug", - "libdlmalloc", - "libcompiler_rt", - "libc++-noexcept", - "libc++abi-debug-noexcept", - "libsockets", - "libdlmalloc-debug" - ] - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@emsdk+//:emscripten_deps.bzl%emscripten_deps": { - "general": { - "bzlTransitiveDigest": "h0wQ3PSRx/Q9n+izTifYO8L728OTd9B5YbLOWcobVYE=", - "usagesDigest": "eqaMlu1tts7n29bG5zUl3DtA/9ARE+6aHrSK4X7kNno=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_bin_linux": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_linux_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_mac": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_mac_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_win": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/clang++.exe\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/llvm-ar.exe\",\n \"bin/llvm-dwarfdump.exe\",\n \"bin/llvm-nm.exe\",\n \"bin/llvm-objcopy.exe\",\n \"bin/wasm-ctor-eval.exe\",\n \"bin/wasm-emscripten-finalize.exe\",\n \"bin/wasm-ld.exe\",\n \"bin/wasm-metadce.exe\",\n \"bin/wasm-opt.exe\",\n \"bin/wasm-split.exe\",\n \"bin/wasm2js.exe\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar.exe\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", - "strip_prefix": "install", - "type": "zip", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.zip" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "bazel_tools", - "rules_cc", - "rules_cc+" - ], - [ - "emsdk+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@pybind11_bazel+//:python_configure.bzl%extension": { - "general": { - "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", - "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", - "recordedFileInputs": { - "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" - }, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_python": { - "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", - "attributes": {} - }, - "pybind11": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@pybind11_bazel+//:pybind11.BUILD", - "strip_prefix": "pybind11-2.11.1", - "urls": [ - "https://github.com/pybind/pybind11/archive/v2.11.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "pybind11_bazel+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { - "general": { - "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", - "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "platforms": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" - ], - "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" - } - }, - "rules_python": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", - "strip_prefix": "rules_python-0.28.0", - "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" - } - }, - "bazel_skylib": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" - ] - } - }, - "com_google_absl": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" - ], - "strip_prefix": "abseil-cpp-20240116.1", - "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" - } - }, - "rules_fuzzing_oss_fuzz": { - "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", - "attributes": {} - }, - "honggfuzz": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", - "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", - "url": "https://github.com/google/honggfuzz/archive/2.5.zip", - "strip_prefix": "honggfuzz-2.5" - } - }, - "rules_fuzzing_jazzer": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" - } - }, - "rules_fuzzing_jazzer_api": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_fuzzing+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { - "general": { - "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", - "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "compatibility_proxy": { - "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_java+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { - "general": { - "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", - "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "com_github_jetbrains_kotlin_git": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", - "attributes": { - "urls": [ - "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" - ], - "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" - } - }, - "com_github_jetbrains_kotlin": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", - "attributes": { - "git_repository_name": "com_github_jetbrains_kotlin_git", - "compiler_version": "1.9.23" - } - }, - "com_github_google_ksp": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", - "attributes": { - "urls": [ - "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" - ], - "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", - "strip_version": "1.9.23-1.0.20" - } - }, - "com_github_pinterest_ktlint": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", - "attributes": { - "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", - "urls": [ - "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" - ], - "executable": true - } - }, - "rules_android": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", - "strip_prefix": "rules_android-0.1.1", - "urls": [ - "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_kotlin+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_nodejs+//nodejs:extensions.bzl%node": { - "general": { - "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", - "usagesDigest": "m7d0VXcsX/qS6DKMUBtdgjQzP2eMRHqsE4wv7dzr71I=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "nodejs_linux_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_amd64" - } - }, - "nodejs_linux_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_arm64" - } - }, - "nodejs_linux_s390x": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_s390x" - } - }, - "nodejs_linux_ppc64le": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_ppc64le" - } - }, - "nodejs_darwin_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_amd64" - } - }, - "nodejs_darwin_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_arm64" - } - }, - "nodejs_windows_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "windows_amd64" - } - }, - "nodejs": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_host": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_toolchains": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", - "attributes": { - "user_node_repository_name": "nodejs" - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@rules_python+//python/extensions:pip.bzl%pip": { - "general": { - "bzlTransitiveDigest": "Jbed6zJUJ6E78XRyOlnG1ryhBDvVeikdntPW1D40S/E=", - "usagesDigest": "fztm9ST3ki9E77tct2ZwJe0w38LvfMY8mRYp+YHxXQE=", - "recordedFileInputs": { - "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", - "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", - "@@rules_python+//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8", - "@@rules_python+//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", - "@@rules_python+//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76" - }, - "recordedDirentsInputs": {}, - "envVariables": { - "RULES_PYTHON_REPO_DEBUG": null, - "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null - }, - "generatedRepoSpecs": { - "pip_deps_310_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_310_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_311_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_311_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_312_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_312_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_38_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_38_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_39_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_39_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "setuptools<=70.3.0" - } - }, - "rules_fuzzing_py_deps_310_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_310_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_311_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_311_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_312_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_312_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_38_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_38_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_39_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_39_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "backports.tarfile-1.2.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", - "urls": [ - "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "backports_tarfile-1.2.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", - "urls": [ - "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "certifi-2024.8.30-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", - "urls": [ - "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_certifi_sdist_bec941d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "certifi-2024.8.30.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", - "urls": [ - "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", - "urls": [ - "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", - "urls": [ - "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", - "urls": [ - "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", - "urls": [ - "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", - "urls": [ - "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_sdist_1c39c601": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cffi-1.17.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", - "urls": [ - "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", - "urls": [ - "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", - "urls": [ - "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", - "urls": [ - "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", - "urls": [ - "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", - "urls": [ - "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", - "urls": [ - "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", - "urls": [ - "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", - "urls": [ - "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", - "urls": [ - "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", - "urls": [ - "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", - "urls": [ - "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "charset_normalizer-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", - "urls": [ - "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", - "urls": [ - "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", - "urls": [ - "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", - "urls": [ - "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", - "urls": [ - "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", - "urls": [ - "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", - "urls": [ - "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_sdist_315b9001": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cryptography-43.0.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", - "urls": [ - "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "docutils-0.21.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", - "urls": [ - "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "docutils-0.21.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", - "urls": [ - "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "idna-3.10-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", - "urls": [ - "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_idna_sdist_12f65c9b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "idna-3.10.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", - "urls": [ - "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "importlib_metadata-8.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", - "urls": [ - "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "importlib_metadata-8.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", - "urls": [ - "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.classes-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", - "urls": [ - "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco.classes-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", - "urls": [ - "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.context-6.0.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", - "urls": [ - "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_context-6.0.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", - "urls": [ - "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.functools-4.1.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", - "urls": [ - "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_functools-4.1.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", - "urls": [ - "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "jeepney-0.8.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", - "urls": [ - "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jeepney-0.8.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", - "urls": [ - "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "keyring-25.4.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", - "urls": [ - "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "keyring-25.4.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", - "urls": [ - "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "markdown_it_py-3.0.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", - "urls": [ - "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "markdown-it-py-3.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", - "urls": [ - "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "mdurl-0.1.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", - "urls": [ - "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "mdurl-0.1.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", - "urls": [ - "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "more_itertools-10.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", - "urls": [ - "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "more-itertools-10.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", - "urls": [ - "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", - "urls": [ - "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", - "urls": [ - "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", - "urls": [ - "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", - "urls": [ - "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", - "urls": [ - "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", - "urls": [ - "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", - "urls": [ - "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", - "urls": [ - "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", - "urls": [ - "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", - "urls": [ - "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", - "urls": [ - "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_sdist_94a16692": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "nh3-0.2.18.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", - "urls": [ - "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pkginfo-1.10.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", - "urls": [ - "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pkginfo-1.10.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", - "urls": [ - "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "pycparser-2.22-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", - "urls": [ - "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pycparser-2.22.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", - "urls": [ - "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pygments-2.18.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", - "urls": [ - "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pygments_sdist_786ff802": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pygments-2.18.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", - "urls": [ - "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", - "urls": [ - "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pywin32-ctypes-0.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", - "urls": [ - "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "readme_renderer-44.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", - "urls": [ - "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "readme_renderer-44.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", - "urls": [ - "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests-2.32.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", - "urls": [ - "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_sdist_55365417": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-2.32.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", - "urls": [ - "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", - "urls": [ - "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-toolbelt-1.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", - "urls": [ - "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", - "urls": [ - "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rfc3986-2.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", - "urls": [ - "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rich-13.9.4-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", - "urls": [ - "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rich_sdist_43959497": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rich-13.9.4.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", - "urls": [ - "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "SecretStorage-3.3.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", - "urls": [ - "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "SecretStorage-3.3.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", - "urls": [ - "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "twine-5.1.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", - "urls": [ - "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_twine_sdist_9aa08251": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "twine-5.1.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", - "urls": [ - "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "urllib3-2.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", - "urls": [ - "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "urllib3-2.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", - "urls": [ - "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "zipp-3.20.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", - "urls": [ - "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "zipp-3.20.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", - "urls": [ - "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" - ] - } - }, - "pip_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "pip_deps", - "extra_hub_aliases": {}, - "whl_map": { - "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", - "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "numpy", - "setuptools" - ], - "groups": {} - } - }, - "rules_fuzzing_py_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_fuzzing_py_deps", - "extra_hub_aliases": {}, - "whl_map": { - "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", - "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "absl_py", - "six" - ], - "groups": {} - } - }, - "rules_python_publish_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_python_publish_deps", - "extra_hub_aliases": {}, - "whl_map": { - "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", - "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", - "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", - "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", - "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", - "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", - "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", - "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", - "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", - "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", - "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", - "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", - "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", - "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", - "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", - "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", - "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", - "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", - "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", - "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" - }, - "packages": [ - "backports_tarfile", - "certifi", - "charset_normalizer", - "docutils", - "idna", - "importlib_metadata", - "jaraco_classes", - "jaraco_context", - "jaraco_functools", - "keyring", - "markdown_it_py", - "mdurl", - "more_itertools", - "nh3", - "pkginfo", - "pygments", - "readme_renderer", - "requests", - "requests_toolbelt", - "rfc3986", - "rich", - "twine", - "urllib3", - "zipp" - ], - "groups": {} - } - } - }, - "moduleExtensionMetadata": { - "useAllRepos": "NO", - "reproducible": false - }, - "recordedRepoMappingEntries": [ - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "rules_python+", - "bazel_features", - "bazel_features+" - ], - [ - "rules_python+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "rules_python+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_python+", - "pypi__build", - "rules_python++internal_deps+pypi__build" - ], - [ - "rules_python+", - "pypi__click", - "rules_python++internal_deps+pypi__click" - ], - [ - "rules_python+", - "pypi__colorama", - "rules_python++internal_deps+pypi__colorama" - ], - [ - "rules_python+", - "pypi__importlib_metadata", - "rules_python++internal_deps+pypi__importlib_metadata" - ], - [ - "rules_python+", - "pypi__installer", - "rules_python++internal_deps+pypi__installer" - ], - [ - "rules_python+", - "pypi__more_itertools", - "rules_python++internal_deps+pypi__more_itertools" - ], - [ - "rules_python+", - "pypi__packaging", - "rules_python++internal_deps+pypi__packaging" - ], - [ - "rules_python+", - "pypi__pep517", - "rules_python++internal_deps+pypi__pep517" - ], - [ - "rules_python+", - "pypi__pip", - "rules_python++internal_deps+pypi__pip" - ], - [ - "rules_python+", - "pypi__pip_tools", - "rules_python++internal_deps+pypi__pip_tools" - ], - [ - "rules_python+", - "pypi__pyproject_hooks", - "rules_python++internal_deps+pypi__pyproject_hooks" - ], - [ - "rules_python+", - "pypi__setuptools", - "rules_python++internal_deps+pypi__setuptools" - ], - [ - "rules_python+", - "pypi__tomli", - "rules_python++internal_deps+pypi__tomli" - ], - [ - "rules_python+", - "pypi__wheel", - "rules_python++internal_deps+pypi__wheel" - ], - [ - "rules_python+", - "pypi__zipp", - "rules_python++internal_deps+pypi__zipp" - ], - [ - "rules_python+", - "pythons_hub", - "rules_python++python+pythons_hub" - ], - [ - "rules_python++python+pythons_hub", - "python_3_10_host", - "rules_python++python+python_3_10_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_11_host", - "rules_python++python+python_3_11_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_12_host", - "rules_python++python+python_3_12_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_13_host", - "rules_python++python+python_3_13_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_8_host", - "rules_python++python+python_3_8_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_9_host", - "rules_python++python+python_3_9_host" - ] - ] - } - }, - "@@rules_python+//python/uv:uv.bzl%uv": { - "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "vJ5RHUxAnV24M5swNGiAnkdxMx3Hp/iOLmNANTC5Xc8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "uv": { - "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", - "attributes": { - "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", - "toolchain_names": [ - "none" - ], - "toolchain_implementations": { - "none": "'@@rules_python+//python:none'" - }, - "toolchain_compatible_with": { - "none": [ - "@platforms//:incompatible" - ] - }, - "toolchain_target_settings": {} - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_python+", - "platforms", - "platforms" - ] - ] - } - } - } -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/hello-world.cc b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/hello-world.cc deleted file mode 100644 index ee72c53..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/bazel/test_secondary_lto_cache/hello-world.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(int argc, char** argv) { - std::cout << "hello world!" << std::endl; - return 0; -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/Dockerfile b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/Dockerfile deleted file mode 100644 index 4e4667e..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/Dockerfile +++ /dev/null @@ -1,131 +0,0 @@ -FROM ubuntu:jammy AS stage_build - -ARG EMSCRIPTEN_VERSION=tot -ENV EMSDK /emsdk - -# ------------------------------------------------------------------------------ - -RUN echo "## Start building" \ - && echo "## Update and install packages" \ - && apt-get -qq -y update \ - && apt-get -qq install -y --no-install-recommends \ - binutils \ - build-essential \ - ca-certificates \ - file \ - git \ - python3 \ - python3-pip \ - && echo "## Done" - -# Copy the contents of this repository to the container -COPY . ${EMSDK} - -RUN echo "## Install Emscripten" \ - && cd ${EMSDK} \ - && ./emsdk install ${EMSCRIPTEN_VERSION} \ - && echo "## Done" - -# This generates configuration that contains all valid paths according to installed SDK -# TODO(sbc): We should be able to use just emcc -v here but it doesn't -# currently create the sanity file. -RUN cd ${EMSDK} \ - && echo "## Generate standard configuration" \ - && ./emsdk activate ${EMSCRIPTEN_VERSION} \ - && chmod 777 ${EMSDK}/upstream/emscripten \ - && chmod -R 777 ${EMSDK}/upstream/emscripten/cache \ - && echo "int main() { return 0; }" > hello.c \ - && ${EMSDK}/upstream/emscripten/emcc -c hello.c \ - && cat ${EMSDK}/upstream/emscripten/cache/sanity.txt \ - && echo "## Done" - -# Cleanup Emscripten installation and strip some symbols -RUN echo "## Aggressive optimization: Remove debug symbols" \ - && cd ${EMSDK} && . ./emsdk_env.sh \ - # Remove debugging symbols from embedded node (extra 7MB) - && strip -s `which node` \ - # Tests consume ~80MB disc space - && rm -fr ${EMSDK}/upstream/emscripten/tests \ - # strip out symbols from clang (~extra 50MB disc space) - && find ${EMSDK}/upstream/bin -type f -exec strip -s {} + || true \ - && echo "## Done" - -# ------------------------------------------------------------------------------ -# -------------------------------- STAGE DEPLOY -------------------------------- -# ------------------------------------------------------------------------------ - -FROM ubuntu:jammy AS stage_deploy - -COPY --from=stage_build /emsdk /emsdk - -# These fallback environment variables are intended for situations where the -# entrypoint is not utilized (as in a derived image) or overridden (e.g. when -# using `--entrypoint /bin/bash` in CLI). -# This corresponds to the env variables set during: `source ./emsdk_env.sh` -ENV EMSDK=/emsdk \ - PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/node/20.18.0_64bit/bin:${PATH}" - -# ------------------------------------------------------------------------------ -# Create a 'standard` 1000:1000 user -# Thanks to that this image can be executed as non-root user and created files -# will not require root access level on host machine Please note that this -# solution even if widely spread (i.e. Node.js uses it) is far from perfect as -# user 1000:1000 might not exist on host machine, and in this case running any -# docker image will cause other random problems (mostly due `$HOME` pointing to -# `/`) -RUN echo "## Create emscripten user (1000:1000)" \ - && groupadd --gid 1000 emscripten \ - && useradd --uid 1000 --gid emscripten --shell /bin/bash --create-home emscripten \ - && echo "## Done" - -# ------------------------------------------------------------------------------ - -RUN echo "## Update and install packages" \ - && apt-get -qq -y update \ - # Somewhere in here apt sets up tzdata which asks for your time zone and blocks - # waiting for the answer which you can't give as docker build doesn't read from - # the terminal. The env vars set here avoid the interactive prompt and set the TZ. - && DEBIAN_FRONTEND="noninteractive" TZ="America/San_Francisco" apt-get -qq install -y --no-install-recommends \ - sudo \ - libxml2 \ - ca-certificates \ - python3 \ - python3-pip \ - wget \ - curl \ - zip \ - unzip \ - git \ - git-lfs \ - ssh-client \ - build-essential \ - make \ - ant \ - libidn12 \ - cmake \ - openjdk-11-jre-headless \ - # Standard Cleanup on Debian images - && apt-get -y clean \ - && apt-get -y autoclean \ - && apt-get -y autoremove \ - && rm -rf /var/lib/apt/lists/* \ - && rm -rf /var/cache/debconf/*-old \ - && rm -rf /usr/share/doc/* \ - && rm -rf /usr/share/man/?? \ - && rm -rf /usr/share/man/??_* \ - && echo "## Done" - -# ------------------------------------------------------------------------------ -# Use commonly used /src as working directory -WORKDIR /src - -ENTRYPOINT ["/emsdk/docker/entrypoint.sh"] - -LABEL maintainer="kontakt@trzeci.eu" \ - org.label-schema.name="emscripten" \ - org.label-schema.description="The official container with Emscripten SDK" \ - org.label-schema.url="https://emscripten.org" \ - org.label-schema.vcs-url="https://github.com/emscripten-core/emsdk" \ - org.label-schema.docker.dockerfile="/docker/Dockerfile" - -# ------------------------------------------------------------------------------ diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/Makefile b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/Makefile deleted file mode 100644 index 749ecfe..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# A Makefile to build, test, tag and publish the Emscripten SDK Docker container. - -# Emscripten version to build: Should match the version that has been already released. -# i.e.: 1.39.18 -version = -alias = -only_alias = - -image_name ?= emscripten/emsdk - -.TEST: -ifndef version - $(error argument 'version' is not set. Please call `make version=SOME_VERSION ...`) -endif - -build: Dockerfile .TEST - cd .. && docker build --progress=plain --network host --build-arg=EMSCRIPTEN_VERSION=${version} -t ${image_name}:${version} -f docker/$< . - -test: test_dockerimage.sh .TEST - # test as non-root - # test fallback env variables by overriding the entrypoint - docker run --rm -u `id -u`:`id -g` -w /emsdk/docker --net=host --entrypoint /bin/bash ${image_name}:${version} $< - -push: .TEST -ifndef only_alias - docker push ${image_name}:${version} -endif -ifdef alias - docker tag ${image_name}:${version} ${image_name}:${alias} - docker push ${image_name}:${alias} -endif diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/README.md b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/README.md deleted file mode 100644 index 62e6c02..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# Dockerfile for EMSDK - -This Dockerfile builds a self-contained version of Emscripten SDK that enables Emscripten to be used without any -other installation on the host system. - -It is published at https://hub.docker.com/r/emscripten/emsdk. - -### Usage - -Simple usage of this container to compile a hello-world -```bash -# create helloworld.cpp -cat << EOF > helloworld.cpp -#include -int main() { - std::cout << "Hello World!" << std::endl; - return 0; -} -EOF -``` - -```bash -# compile with docker image -docker run \ - --rm \ - -v "$(pwd):$(pwd)" \ - -u $(id -u):$(id -g) \ - emscripten/emsdk \ - emcc helloworld.cpp -o helloworld.js - -# execute on host machine -node helloworld.js -``` - -Teardown of compilation command: - -|part|description| -|---|---| -|`docker run`| A standard command to run a command in a container| -|`--rm`|remove a container after execution (optimization)| -|`-v "$(pwd):$(pwd)"`|Mounting current folder from the host system into mirrored path on the container
TIP: This helps to investigate possible problem as we preserve exactly the same paths like in host. In such case modern editors (like Sublime, Atom, VS Code) let us to CTRL+Click on a problematic file | -|`-u $(id -u):$(id -g)`| Run the container as a non-root user with the same UID and GID as local user. Hence all files produced by this are accessible to non-root users| -|`emscripten/emsdk`|Get the latest tag of this container| -|`emcc helloworld.cpp -o helloworld.js`|Execute `emcc` command with following arguments inside container, effectively compile our source code| - - - -### Building Dockerfile - -This image has following optional arguments - -| arg | default value | description | -| --- | --- | --- | -| `EMSCRIPTEN_VERSION` | `tot`
(special case, tip-of-tree) | One of released version of Emscripten. For example `2.0.0`
Minimal supported version is **1.39.0** | - -**Building** - -This step will build Dockerfile as given tag on local machine -```bash -# using docker -docker build \ - --network host \ - --build-arg=EMSCRIPTEN_VERSION=1.39.17 \ - -t emscripten/emsdk:1.39.17 \ - -f docker/Dockerfile \ - . -``` -```bash -# using predefined make target -make version=1.39.17 build test -``` - -**Tagging** - -In case of using `docker build` command directly, given `--tag` should match version of released Emscripten (you can see list of non-legacy versions by executing `emsdk list`). - -**Pushing** - -This step will take local image and push to default docker registry. You need to make sure that you logged in docker cli (`docker login`) and you have rights to push to that registry. - -```bash -# using docker -docker push emscripten/emsdk:1.39.17 -``` -```bash -# using predefined make target -make version=1.39.17 push -``` - -In case of pushing the most recent version, this version should be also tagged as `latest` and pushed. -```bash -# using docker cli -docker tag emscripten/emsdk:1.39.17 emscripten/emsdk:latest -docker push emscripten/emsdk:latest - -```bash -# using make -make version=1.39.17 alias=latest push -``` - -### Extending - -If your project uses packages that this image doesn't provide you might want to: -* Contribute to this repo: Maybe your dependency is either non-intrusive or could be useful for other people -* Create custom image that bases on this image - -1. create own Dockerfile that holds: - ```dockerfile - # Point at any base image that you find suitable to extend. - FROM emscripten/emsdk:1.39.17 - - # Install required tools that are useful for your project i.e. ninja-build - RUN apt update && apt install -y ninja-build - ``` - -2. build it - ```bash - docker build -t extended_emscripten . - ``` - -3. test - ```bash - docker run --rm extended_emscripten ninja --version - # 1.10.0 - ``` diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/entrypoint.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/entrypoint.sh deleted file mode 100755 index ceadfc4..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/entrypoint.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -e - -# Set-up PATH and other environment variables -EMSDK_QUIET=1 source /emsdk/emsdk_env.sh - -exec "$@" diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/test_dockerimage.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/test_dockerimage.sh deleted file mode 100755 index 0964820..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/docker/test_dockerimage.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash -set -ex - -if [ $EUID -eq 0 ]; then - sudo -u nobody `which emcc` --version -fi - -which emsdk -node --version -npm --version -python3 --version -pip3 --version -em++ --version -emcc --version -java -version -cmake --version - -exit_code=0 - -# test emcc compilation -echo 'int main() { return 0; }' | emcc -o /tmp/main.js -xc - -node /tmp/main.js || exit_code=$? -if [ $exit_code -ne 0 ]; then - echo "Node exited with non-zero exit code: $exit_code" - exit $exit_code -fi - -# test embuilder -embuilder build zlib --force diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emcmdprompt.bat b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emcmdprompt.bat deleted file mode 100644 index 89803ae..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emcmdprompt.bat +++ /dev/null @@ -1 +0,0 @@ -@cmd /k call emsdk_env.bat \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emscripten-releases-tags.json b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emscripten-releases-tags.json deleted file mode 100644 index 012fe41..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emscripten-releases-tags.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "aliases": { - "latest": "4.0.9", - "latest-sdk": "latest", - "latest-arm64-linux": "latest", - "latest-64bit": "latest", - "sdk-latest-64bit": "latest", - "latest-upstream": "latest", - "latest-clang-upstream": "latest", - "latest-releases-upstream": "latest" - }, - "releases": { - "4.0.9": "cb2a69bce627bd2247624c71fc12907cb8785d2f", - "4.0.9-asserts": "27f1e0801c6ec5ea4d9a9e1d573eb1fead3525f1", - "4.0.8": "56f86607aeb458086e72f23188789be2ee0e971a", - "4.0.8-asserts": "ab275365d4057cf92d698ef99744d66cd8c7cba9", - "4.0.7": "ef4e9cedeac3332e4738087567552063f4f250d3", - "4.0.7-asserts": "4bef8973dc12f5f38022f323d67c16237bbd2962", - "4.0.6": "14767574a5c37ff9526a253a65ddbe0811cb3667", - "4.0.6-asserts": "4050eaf1fd8e1c191198ec4ba8c346c4f3da0dc8", - "4.0.5": "d7f8ff5e2ca3539c33fae81e98f7c56ef9fa1239", - "4.0.5-asserts": "71269375282224b2e662bbe009e2e3ebc40db67f", - "4.0.4": "ea71afcf5a172125179a07ff1731de6e81c92222", - "4.0.4-asserts": "5121692126f7c96d86a13dc8462e758813e30123", - "4.0.3": "de2109f0e5e7278d470da11de526aed16c527722", - "4.0.3-asserts": "bae6703fb819bd84fb4dfb5e87b41cf93b6d3f2b", - "4.0.2": "cc8eba40de8235f9c33d92463018f87b3edaa09e", - "4.0.2-asserts": "dc575ac9a214463b2b3503c11a1a31db665b4414", - "4.0.1": "5ff495a591978fdf8a16f2d172be3616f3150d1e", - "4.0.1-asserts": "c2e46b78d3dde701187d685f8c175f17425bee68", - "4.0.0": "3ebc04a3dab24522a5bf8ced3ce3caea816558f6", - "4.0.0-asserts": "912ac2d711bb343205f314564ed287d883a7d888", - "3.1.74": "c2655005234810c7c42e02a18e4696554abe0352", - "3.1.74-asserts": "88e95307accc1f4b247b86b7a0c0e6beaf07f844", - "3.1.73": "b363a836e75a245c548b7a6a021822d8c9e4c6df", - "3.1.73-asserts": "86f3e54628089634c6b73039955388296e920291", - "3.1.72": "7a360458327cd24c2a7aab428bdbcb5bca8810e4", - "3.1.72-asserts": "92d39398c0016e73821548a4cd9df3df1358f6d9", - "3.1.71": "7ee0f9488f152e9e9cf0d4d243970e03742f1a5c", - "3.1.71-asserts": "15b142643065fe241138c6785cb8e384504f76e8", - "3.1.70": "6fa6145af41e835f3d13edf7d308c08e4573357a", - "3.1.70-asserts": "11444ec05e2cc64ef42c4f33c6e3a2a7534694f2", - "3.1.69": "8fe01288bc35668c13316324336ea00195dfb814", - "3.1.69-asserts": "cf6f9d1b4026ec7aec33aceb68077c704b52b068", - "3.1.68": "b52d8c9150dc7d4c8e4a7a08c7a9b4006c9abe49", - "3.1.68-asserts": "1565c9e5a4547215a1b63013607bf7a1cbb3d9d3", - "3.1.67": "4ae62984ea36ef0e5bfcbd0ed9b62f04bee6426a", - "3.1.67-asserts": "7cfc00962efe07f2e2ff3383f59519dc5bea4f82", - "3.1.66": "243eae09cf5c20c4fde51a620b92f483255c8214", - "3.1.66-asserts": "c5d25114210455d19cb9232171824292005a5080", - "3.1.65": "fdcf56c75a1d27fdff6525a7e03423595485ca19", - "3.1.65-asserts": "3231fb47481b2248c31002cdd7324a9155135ce0", - "3.1.64": "fd61bacaf40131f74987e649a135f1dd559aff60", - "3.1.64-asserts": "42c1d51ceb8e41e70ce1d8dc1bc534c0f609c196", - "3.1.63": "aeb36a44b29e8ca9f4c7efbb4735b69003ac2bb9", - "3.1.63-asserts": "b0275806047b42f2f88998c5c8159aec90e195ab", - "3.1.62": "d52176ac8e07c47c1773bb2776ebd91e3886c3af", - "3.1.62-asserts": "9d9e7deac8b91fbdd8804045595e807f9d774a53", - "3.1.61": "28e4a74b579b4157bda5fc34f23c7d3905a8bd6c", - "3.1.61-asserts": "7fc912687ba2077b3aeae472b51c238b3d201c46", - "3.1.60": "87709b5747de5b1993fe314285528bf4b65c23e1", - "3.1.60-asserts": "e2388e8a528890b8f3ff7b9ab4f52dbe2aeb38b9", - "3.1.59": "e20ee09a8a740544c4bc6de5d4ba5f81f74b74d6", - "3.1.59-asserts": "10ae1e83ccce9f4a363bb2e3090ba8fc32d25851", - "3.1.58": "a4d4afb626c5010f6ccda4638b8d77579a63782e", - "3.1.58-asserts": "5bc1c7108d4d91db316b24a75593a37c1117c266", - "3.1.57": "523b29e1b99a61069a2fa9f9d3cc9be1c4c53d4d", - "3.1.57-asserts": "10b736eeeac0dae3fd5bc29c6b3e32f7f7adf941", - "3.1.56": "9d106be887796484c4aaffc9dc45f48a8810f336", - "3.1.56-asserts": "2b9c4b912b611dc51f9019e11371e3cdd36fa64e", - "3.1.55": "f5557e3b7166d05bddb5977e363ec48cd06e9d32", - "3.1.55-asserts": "eb23cc30563325fd6dc97fcf85ddf26489ab9110", - "3.1.54": "aa1588cd28c250a60457b5ed342557c762f416e3", - "3.1.54-asserts": "d525f56cb765ed6884a0c443dbb906b63b148915", - "3.1.53": "e5523d57a0e0dcf80f3b101bbc23613fcc3101aa", - "3.1.53-asserts": "152cef4e00fc17776576bcc57f53badd21b92509", - "3.1.52": "ce2097fb81953331e65543c20b437475f218127c", - "3.1.52-asserts": "49e9a37dd6d1d65aa92472d8908cb8b88092dfaf", - "3.1.51": "4f416d92fbff66ce79901cfc8263768f1b25dd3e", - "3.1.51-asserts": "9035c99beb760aa0ea381bdf11abf440d88bb451", - "3.1.50": "2ce4170cef5ce46f337f9fd907b614a8db772c7d", - "3.1.50-asserts": "0a6fe6ef5880bf5b035d396f3875fda9b7c4bb60", - "3.1.49": "bd0a2e230466dadb36efc71aa7271f17c6c35420", - "3.1.49-asserts": "4ea035c5bbd6168dae34c970b5f56d7aa4dcf952", - "3.1.48": "694434b6d47c5f6eff2c8fbd9eeb016c977ae9dc", - "3.1.48-asserts": "6e2b8a97c6db82089c3a405bc88ea9fb125deb16", - "3.1.47": "39ade279e75e6d17dd6b7eb9fba2006e61fe966b", - "3.1.47-asserts": "dc49d84ed226a5a30a5117cefc07c781f6c0d16e", - "3.1.46": "21644188d5c473e92f1d7df2f9f60c758a78a486", - "3.1.46-asserts": "3e09b252d0d5a8e045d2ca92c606bfb9874bddf8", - "3.1.45": "2b7c5fb8ffeac3315deb1f82ab7bf8da544f84a1", - "3.1.45-asserts": "2aec03dfd8ce68c95316116dafbe30e273f32a81", - "3.1.44": "b90507fcf011da61bacfca613569d882f7749552", - "3.1.44-asserts": "06d00b0c62e435b743aa37c67b4ab76bc8568c79", - "3.1.43": "bf3c159888633d232c0507f4c76cc156a43c32dc", - "3.1.43-asserts": "3ec53a819a5958665d6bb0ac895c99546921b6ef", - "3.1.42": "9d73bf4bd5b5c9ce6e51be0ed5ce6599fcb28e9e", - "3.1.42-asserts": "7a622e0b66ee095aea9766375a2774b68c8bd8ef", - "3.1.41": "eb71265ef0ab905620015adbfedacf88c5dbf021", - "3.1.41-asserts": "064607aeccaffd93175bb40c072271c0393d71a5", - "3.1.40": "c3122846bb040798aab975f61008c37eb19476de", - "3.1.40-asserts": "5b5daaaabaf7292736454e4f8a73fa79bd455af4", - "3.1.39": "1b56b171b627af0841cf8d4d8c0160c6cb6d855f", - "3.1.39-asserts": "5e237cc9d9f6020af9ba908692361aa71744af1d", - "3.1.38": "03ecb526947f6a3702a0d083083799fe410d3893", - "3.1.38-asserts": "f771c7a0b55bc5d89ecceedfe9521c2c04aa43ae", - "3.1.37": "7c905cfc1ca6699f6ccb288ae174902cfbdcf0a2", - "3.1.37-asserts": "323607efbcdf84886dab55a18d758fe4c7d71d1e", - "3.1.36": "adedc0750c4a89b65bee866edab24298cb8d6677", - "3.1.36-asserts": "fdd2824226a8b001df5697146b88be98920fc215", - "3.1.35": "671550b5bdceee7bdb21493714f9a815aa5149a9", - "3.1.35-asserts": "42481a713ae805eda34f6e3e7170384c426b1d73", - "3.1.34": "2fdd6b9e5b67d5b62f84d0501a876513ff118ef1", - "3.1.34-asserts": "385382932c18a1312fff88000c4f83c2b9d1bb44", - "3.1.33": "49b960bd03b3a9da478a08541ce6eafe792a58a8", - "3.1.33-asserts": "e3ca2c6756b75cf6c6daa40276de0f25218e04a7", - "3.1.32": "29ad1037cd6b99e5d8a1bd75bc188c1e9a6fda8d", - "3.1.32-asserts": "2811c849256ec5b62b4ec32fb8369e5f3c9a54b1", - "3.1.31": "1eec24930cb2f56f6d9cd10ffcb031e27ea4157a", - "3.1.31-asserts": "48488847a38bb9cfb36e7397bea21ab2bb062680", - "3.1.30": "dc1fdcfd3f5b9d29cb1ebdf15e6e845bef9b0cc1", - "3.1.30-asserts": "21cca44e843267533c3d0b258b46c37bd142a2d7", - "3.1.29": "d949f1b99a477d4b0b54d95413df3688afa69d0a", - "3.1.29-asserts": "9d1e32e66e4b5921efc1a45cdc68e8c522c42c32", - "3.1.28": "30b9e46ddcea66e91530559379089002d8b692cf", - "3.1.28-asserts": "19871a9ea4914d63749b8d4d170e27a8854cb565", - "3.1.27": "48ce0b44015d0182fc8c27aa9fbc0a4474b55982", - "3.1.27-asserts": "630810e5a312f57d17efbe384ed7e4299f796bc1", - "3.1.26": "4f68bb2a505c727bcf58195cf4da20592a6e92c8", - "3.1.26-asserts": "4e2ffe94b04dbadfbca1687ab458d306b3414d13", - "3.1.25": "ff6babb041d0f31575cc16d15ef82c6222ca99b8", - "3.1.25-asserts": "6b19d6a8c30d7b83ba2193625fc12cce9ae0206b", - "3.1.24": "54217a0950bb1dafe8808cc6207d378e323f9d74", - "3.1.24-asserts": "4c20c7393ca208c740c16a97dbf305ba52fea2bb", - "3.1.23": "bfd5e63a44ba4c8568cd8ac87c27b35e40732bf4", - "3.1.23-asserts": "77d2c744fe37fe0e22a51329fa23bab4b8ffa656", - "3.1.22": "990cee04a21caafc75955d736fb45791a7f2aeee", - "3.1.22-asserts": "d94fe69a037e93562d0bbe9d0372ce23f4ab1089", - "3.1.21": "a16a8bca2466eb144f7c93fa899c0272c8815dc3", - "3.1.21-asserts": "c7a387161b029621eb4d3dd57363b1393b4c50b2", - "3.1.20": "d92c8639f406582d70a5dde27855f74ecf602f45", - "3.1.20-asserts": "db0fd1cb7316675317d527b6ed4f4cc7005df9ec", - "3.1.19": "4c3772879a04140298c3abde90962d5567b5e2fc", - "3.1.19-asserts": "83c2ba526ec47139d29e1417ac23d15b37ead98a", - "3.1.18": "49d45744895c7d7e28acd94a385d7ee361653b4a", - "3.1.18-asserts": "cb7fa1dce4b04e35b78ec43499a7759f24c1e64d", - "3.1.17": "d27fef2070c86a218965da8b8b5df8b4425aa3bb", - "3.1.17-asserts": "19aab28a81be09863e86aba8ee4e20feaee31f6b", - "3.1.16": "fb1baf00423818052359cf9126e94bc71c39feb5", - "3.1.16-asserts": "61848bee5b330db5ad5f827352d453b5557757fa", - "3.1.15": "568a46a9fb7e1f1686a6f7216b3dc976f28d2a79", - "3.1.15-asserts": "a8a770a0a23d2279270bd28004c8c60b02d91fbb", - "3.1.14": "ade9d780ff17c88d81aa13860361743e3c1e1396", - "3.1.14-asserts": "b55548282b553fc0b922b82d97b80f256bf01d20", - "3.1.13": "bc44364b561cfde15c243a54e3b96ea12d7ea284", - "3.1.13-asserts": "6b8f75967b5d37fa898d217b560d571694eb5b13", - "3.1.12": "a8c3b314d61e2bb98581d522f858132b2fc21488", - "3.1.12-asserts": "0ec1936aa3cb809d96abfebcc5356cd0cb15f6b8", - "3.1.11": "8c3a799341c01148692c52fda73bbba5e89c5727", - "3.1.11-asserts": "4d27b98351e021e9b7d2681a84cbab5a0ddc7a88", - "3.1.10": "8bd05c7221b4ce34d4bedec40b672d94e681a765", - "3.1.10-asserts": "d9b20effb2d660936fb5be525744e941fd900bc6", - "3.1.9": "edabe25af34554d19c046078f853999b074259ca", - "3.1.9-asserts": "c751721b1dfa47c03ede0f0da89be453c79b34ef", - "3.1.8": "8c9e0a76ebed2c5e88a718d43e8b62452def3771", - "3.1.8-asserts": "d33ae3c8d16f04b004b76c1d7c1989d637aa36e0", - "3.1.7": "d0e637fe48197587d981f79e8114757731d0c2a9", - "3.1.7-asserts": "88f0cab4e7db846e171cbbbbf20cc1a51b8c779f", - "3.1.6": "8791c3e936141cbc2dd72d76290ea9b2726d39f3", - "3.1.6-asserts": "84fa976d87a29ea1734601b042f3c6809ecb89f0", - "3.1.5": "2dee36c7163f7394ab9341854ef5281501dd97d0", - "3.1.5-asserts": "e9b96739e70faf11bbb2f63addcef59f2b2c7b48", - "3.1.4": "39e60dda6945cfcd6487725bdb1361ae7975173f", - "3.1.4-asserts": "05edbd634e300fc79ce0f635251bd5bef375328b", - "3.1.3": "2ddc66235392b37e5b33477fd86cbe01a14b8aa2", - "3.1.3-asserts": "66aaf7da980346898a84e3e1b70477286e225eec", - "3.1.2": "6626e25d6d866cf283147ca68d54ac9326fe399f", - "3.1.2-asserts": "b5cb3731eeaf127ae73d5e24b56cf5f0cdbf16a6", - "3.1.1": "5ee64de9809592480da01372880ea11debd6c740", - "3.1.1-asserts": "9455ce6306d97c0b3854e88e1e2f66d4b8565daf", - "3.1.0": "562e3a0af169e6dea5e6dbecac2255d67c2c8b94", - "3.1.0-asserts": "1de2db691103282dad6b2037018db6ece54f57c6", - "3.0.1": "91b7a67a486d2430e73423a38d950d8a550826ed", - "3.0.1-asserts": "2a84a08e92ce8748015dfc3eee40ee35a853fed0", - "3.0.0": "7fbe748230f2ce99abbf975d9ad997699efb3153", - "3.0.0-asserts": "f1d65c26f502220e278d31e7621e99b673e28093", - "2.0.34": "d8fc1b92dbc0ce8d740a7adb937c5137ba4755e0", - "2.0.33": "cef8850d57278271766fb2163eebcb07354018e7", - "2.0.32": "74646397e3c5010824ad60d1de86c6bcbe334dff", - "2.0.31": "597724ca3f6cd6e84bea73f1f519a3953b5c273d", - "2.0.31-asserts": "c1065389ccf4a81e3c1af080316afd444788bc46", - "2.0.30": "c69458f1bbf3ef5b8da4e934de210659cc9bca04", - "2.0.30-asserts": "e13a2d74c5fa5f175ae7cffd4197fe7f78bea304", - "2.0.29": "c2369dc425725fff86ba90a9007a4603ddf7941b", - "2.0.29-lto": "439b7bd7da11e99065c84a60766e427b03be4206", - "2.0.28": "866055ea639d64dfedc625d28ec981e47ce37168", - "2.0.28-lto": "ac6ac36f7a02cec857bc1e543e55c686c5bd1256", - "2.0.27": "1ac46e3b84955231ab4a4f4cbe0c7ac28c86b8cc", - "2.0.27-lto": "79509f70be89d66b8441383de94b3e5a91dedc68", - "2.0.26": "823d37b15d1ab61bc9ac0665ceef6951d3703842", - "2.0.26-lto": "b92ba43f3ac92ab6f1ce6136a8c5969b68ba6968", - "2.0.25": "f6f001b08fbb67935379cf13d17fd9bfdbaff791", - "2.0.24": "6ab7fc5622a67e6111d07c4ba61c8d3c8fc33ed2", - "2.0.23": "77b065ace39e6ab21446e13f92897f956c80476a", - "2.0.23-lto": "3f6dbb899f61fab52e4574beb4f7c8382658aa20", - "2.0.22": "6465a9acb820207acf7da44661a7de52d0a1ae3c", - "2.0.21": "72f4ec97fbc7ec16c15ae68a75b0a257b2835160", - "2.0.20": "e0c15cd14170f407a9eb27fcbad22931dc67feb7", - "2.0.20-lto": "d1b26cd17e51c5c705eea69b9545975e3705c058", - "2.0.19": "9b9ff2dabfb4a7fbacbc004c0bead12a60f9d05c", - "2.0.19-lto": "4487f6c5107e7882ae2bad6d26c34ffdceb713f0", - "2.0.18": "c2ac7520fad29a7937ed60ab6a95b08eb374c7ba", - "2.0.17": "f5c45e60392b82f603e3a8039c62db294fab02d2", - "2.0.16": "80d9674f2fafa6b9346d735c42d5c52b8cc8aa8e", - "2.0.15": "89202930a98fe7f9ed59b574469a9471b0bda7dd", - "2.0.14": "fc5562126762ab26c4757147a3b4c24e85a7289e", - "2.0.13": "ce0e4a4d1cab395ee5082a60ebb4f3891a94b256", - "2.0.12": "dcf819a7821f8db0c8f15ac336fea8960ec204f5", - "2.0.11": "4764c5c323a474f7ba28ae991b0c9024fccca43c", - "2.0.10": "37fc7647c754ac9a28ad588c143b82286de0ef71", - "2.0.9": "d8e430f9a9b6e87502f826c39e7684852f59624f", - "2.0.8": "e4ed6c79f4db8b175d9bbe55869b697aba9bcf2a", - "2.0.7": "d7a29d82b320e471203b69d43aaf03b560eedc54", - "2.0.6": "4ba921c8c8fe2e8cae071ca9889d5c27f5debd87", - "2.0.5": "461f0f118d8d8e6cfd84e077f3eb010c17a39032", - "2.0.4": "eefeb3e623af023844ac477d70d1fd8a668f5110", - "2.0.3": "7a7f38ca19da152d4cd6da4776921a0f1e3f3e3f", - "2.0.2": "ede25d889a0abe63360d4c5d420087c8753b8bbe", - "2.0.1": "13e29bd55185e3c12802bc090b4507901856b2ba", - "2.0.0": "5974288502aab433d45f53511e961aaca4079d86", - "1.40.1": "536568644fd67d53778f6111fdd5f64ad3f4c539", - "1.40.0": "edf24e7233e0def312a08cc8dcec63a461155da1", - "1.39.20": "e7e39da9c81faecd9ecf44065cee864d76e4e34d", - "1.39.19": "665121d026cafc46c29b30d6d4c45ed73eedbb7e", - "1.39.18": "1914a1543f08cd8e41f44c2bb05f7a90d1920275", - "1.39.17": "9bc968c0e49b1c795ecddb87391b265911e2adcb", - "1.39.16": "ae5001fac3849895a873e422a2a80afc90f3b798", - "1.39.15": "3880c744c068986d4ee781a61f7b2e820043e11f", - "1.39.14": "574ad04affb82cc36a32dd89b2a87bea4fb30eba", - "1.39.13": "7b3cd38017f7c582cfa3ac24a9f12aa6a8dca51f", - "1.39.12": "e13b86d4dbd9a986525ef27d4ad8157949b9bc3a", - "1.39.11": "6584e2d88570ee55914db92a3bad84f99e5bdd82", - "1.39.10": "65d33d604d3fa0ebe03548378b898fc6608e9cb8", - "1.39.9": "122396dfad60e1b2a83ccefa74a1425a2e05b5cb", - "1.39.8": "9e60f34accb4627d7358223862a7e74291886ab6", - "1.39.7": "9a89fff28cc6f75e17976fce1904b280e4beb25d", - "1.39.6": "967836071d96d9b7894e492382f5fcb96423fc07", - "1.39.5": "b3ddcab6efd749d3ed937fb452ace4e39a825842", - "1.39.4": "8bb7b0bbbca74cc58741416cc955011f22ff5ccb", - "1.39.3": "b024b71038d1291ed7ec23ecd553bf2c0c8d6da6", - "1.39.2": "c630da9163a64e08de3dd948be0a0f7a175d285b", - "1.39.1": "40f3caabcef7b52bdde63d3883462414d7a25bec", - "1.39.0": "d57bfdd6d43181501bbd3fab502d57c9073ceb49", - "1.38.48": "1290d9deb93d67c4649999a8f2c8d9167d38dc04", - "1.38.47": "bc367c257409d676e71c5511383228b7aabf1689", - "1.38.46": "c89919d252f7cea00d944bdf3bd630cd3c7e7388", - "1.38.45": "f3030d9fffcc9e1287cb6b8e72982e94ece31d71", - "1.38.44": "e5fd171371c3dcb8806a337f2dfa9b70f598f456", - "1.38.43": "737d4a07be76c15124adf3c6ef2c218123f7a67f", - "1.38.42": "05f8c01394ddd0838d3cb484ba8ca97a3efc1ac9", - "1.38.41": "5c6785a63993ae7a4d5362b32b0be9c85138fb96", - "1.38.40": "7b4b328af02eafbc857b8ca1e3d9b12dddc56ef7", - "1.38.39": "f42b12c45fd3f4c20de1321402fbc28f8fd21df1", - "1.38.38": "80bff2784f8500c1305ca69ba1d9fc84df0e401c", - "1.38.37": "0ca6c49e30bc09c3ccefc867df4196a4b4183441", - "1.38.36": "d46be49c2aab975333423122239892bd46f52bba", - "1.38.35": "98f49919f25e06fa557cbcb1321d4c10e60c87ca", - "1.38.34": "048cf9424790cc525a7ea6da340820aae226f3b9", - "1.38.33": "3b8cff670e9233a6623563add831647e8689a86b" - } -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk deleted file mode 100755 index 78c0288..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# Copyright 2019 The Emscripten Authors. All rights reserved. -# Emscripten is available under two separate licenses, the MIT license and the -# University of Illinois/NCSA Open Source License. Both these licenses can be -# found in the LICENSE file. - -# Wrapper script that runs emsdk.py - -# First look for python bundled in Emsdk -if [ -z "$EMSDK_PYTHON" ]; then - PYTHON3="$(dirname "$0")/python/3.9.2-1_64bit/bin/python3" - if [ -f "$PYTHON3" ]; then - EMSDK_PYTHON="$PYTHON3" - - # When using our bundled python we never want the users - # PYTHONHOME or PYTHONPATH - # https://github.com/emscripten-core/emsdk/issues/598 - unset PYTHONHOME - unset PYTHONPATH - fi -fi - -# If bundled python is not found, look for `python3` in PATH. This is especially important on macOS (See: -# https://github.com/emscripten-core/emsdk/pull/273) -if [ -z "$EMSDK_PYTHON" ]; then - if PYTHON3="$(command -v python3 2>/dev/null)"; then - EMSDK_PYTHON=$PYTHON3 - fi -fi - -# Finally fall back to just looking for `python` in PATH -if [ -z "$EMSDK_PYTHON" ]; then - EMSDK_PYTHON=python -fi - -exec "$EMSDK_PYTHON" "$0.py" "$@" diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk.bat b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk.bat deleted file mode 100644 index d0c599d..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk.bat +++ /dev/null @@ -1,38 +0,0 @@ -@echo off - -:: Find python from an explicit location relative to the Emscripten SDK. - -setlocal - -:: When using our bundled python we never want the users -:: PYTHONHOME or PYTHONPATH -:: https://github.com/emscripten-core/emsdk/issues/598 -if exist "%~dp0python\3.9.2-1_64bit\python.exe" ( - set EMSDK_PY="%~dp0python\3.9.2-1_64bit\python.exe" - set PYTHONHOME= - set PYTHONPATH= - goto end -) - -if exist "%~dp0python\3.9.2-nuget_64bit\python.exe" ( - set EMSDK_PY="%~dp0python\3.9.2-nuget_64bit\python.exe" - set PYTHONHOME= - set PYTHONPATH= - goto end -) - -:: As a last resort, access from PATH. -set EMSDK_PY=python - -:end -call %EMSDK_PY% "%~dp0\emsdk.py" %* - -endlocal - -:: python is not able to set environment variables to the parent calling -:: process, so therefore have it craft a .bat file, which we invoke after -:: finishing python execution, to set up the environment variables -if exist "%~dp0\emsdk_set_env.bat" ( - call "%~dp0\emsdk_set_env.bat" > nul - del /F /Q "%~dp0\emsdk_set_env.bat" -) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk.ps1 b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk.ps1 deleted file mode 100644 index e9e6008..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk.ps1 +++ /dev/null @@ -1,35 +0,0 @@ -$ScriptDirectory = Split-Path -parent $PSCommandPath - -$PythonLocations = $( - "python\3.9.2-1_64bit\python.exe", - "python\3.9.2-nuget_64bit\python.exe" -) - -# Find python from an explicit location relative to the Emscripten SDK. -foreach ($Location in $PythonLocations) { - $FullLocation = Join-Path $ScriptDirectory $Location - if (Test-Path $FullLocation) { - $EMSDK_PY = $FullLocation - break - } -} - -# As a last resort, access from PATH. -if (-Not $EMSDK_PY) { - $EMSDK_PY = "python" -} - -# Tell EMSDK to create environment variable setter as a .ps1 file -$env:EMSDK_POWERSHELL = 1 - -& $EMSDK_PY "$ScriptDirectory/emsdk.py" $args - -# python is not able to set environment variables to the parent calling process, so -# therefore have it craft a .ps1 file, which we invoke after finishing python execution, -# to set up the environment variables -if (Test-Path $ScriptDirectory/emsdk_set_env.ps1) { - & $ScriptDirectory/emsdk_set_env.ps1 - Remove-Item $ScriptDirectory/emsdk_set_env.ps1 -} - -Remove-Item Env:\EMSDK_POWERSHELL diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk.py deleted file mode 100755 index f01ebf5..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk.py +++ /dev/null @@ -1,3088 +0,0 @@ -#!/usr/bin/env python -# Copyright 2019 The Emscripten Authors. All rights reserved. -# Emscripten is available under two separate licenses, the MIT license and the -# University of Illinois/NCSA Open Source License. Both these licenses can be -# found in the LICENSE file. - -from __future__ import print_function - -import copy -from collections import OrderedDict -import errno -import json -import multiprocessing -import os -import os.path -import platform -import re -import shutil -import stat -import subprocess -import sys -import sysconfig -import zipfile -if os.name == 'nt': - try: - import winreg - except ImportError: - # old python 2 name - import _winreg as winreg - import ctypes.wintypes - -if sys.version_info >= (3,): - from urllib.parse import urljoin - from urllib.request import urlopen - import functools -else: - from urlparse import urljoin - from urllib2 import urlopen - - -emsdk_packages_url = 'https://storage.googleapis.com/webassembly/emscripten-releases-builds/deps/' - -emscripten_releases_repo = 'https://chromium.googlesource.com/emscripten-releases' - -emscripten_releases_download_url_template = "https://storage.googleapis.com/webassembly/emscripten-releases-builds/%s/%s/wasm-binaries%s.%s" - -# This was previously `master.zip` but we are transitioning to `main` and -# `HEAD.zip` works for both cases. In future we could switch this to -# `main.zip` perhaps. -emsdk_zip_download_url = 'https://github.com/emscripten-core/emsdk/archive/HEAD.zip' - -download_dir = 'downloads/' - -extra_release_tag = None - -# Enable this to do very verbose printing about the different steps that are -# being run. Useful for debugging. -VERBOSE = int(os.getenv('EMSDK_VERBOSE', '0')) -QUIET = int(os.getenv('EMSDK_QUIET', '0')) -TTY_OUTPUT = not os.getenv('EMSDK_NOTTY', not sys.stdout.isatty()) - - -def info(msg): - if not QUIET: - print(msg, file=sys.stderr) - - -def errlog(msg): - print(msg, file=sys.stderr) - - -def exit_with_error(msg): - errlog('error: %s' % msg) - sys.exit(1) - - -WINDOWS = False -MINGW = False -MSYS = False -MACOS = False -LINUX = False - -if 'EMSDK_OS' in os.environ: - EMSDK_OS = os.environ['EMSDK_OS'] - if EMSDK_OS == 'windows': - WINDOWS = True - elif EMSDK_OS == 'linux': - LINUX = True - elif EMSDK_OS == 'macos': - MACOS = True - else: - assert False, 'EMSDK_OS must be one of: windows, linux, macos' -else: - if os.name == 'nt' or ('windows' in os.getenv('SYSTEMROOT', '').lower()) or ('windows' in os.getenv('COMSPEC', '').lower()): - WINDOWS = True - - if os.getenv('MSYSTEM'): - MSYS = True - # Some functions like os.path.normpath() exhibit different behavior between - # different versions of Python, so we need to distinguish between the MinGW - # and MSYS versions of Python - if sysconfig.get_platform() == 'mingw': - MINGW = True - if os.getenv('MSYSTEM') != 'MSYS' and os.getenv('MSYSTEM') != 'MINGW64': - # https://stackoverflow.com/questions/37460073/msys-vs-mingw-internal-environment-variables - errlog('Warning: MSYSTEM environment variable is present, and is set to "' + os.getenv('MSYSTEM') + '". This shell has not been tested with emsdk and may not work.') - - if platform.mac_ver()[0] != '': - MACOS = True - - if not MACOS and (platform.system() == 'Linux'): - LINUX = True - -UNIX = (MACOS or LINUX) - - -# Pick which shell of 4 shells to use -POWERSHELL = bool(os.getenv('EMSDK_POWERSHELL')) -CSH = bool(os.getenv('EMSDK_CSH')) -CMD = bool(os.getenv('EMSDK_CMD')) -BASH = bool(os.getenv('EMSDK_BASH')) -FISH = bool(os.getenv('EMSDK_FISH')) - -if WINDOWS and BASH: - MSYS = True - -if not CSH and not POWERSHELL and not BASH and not CMD and not FISH: - # Fall back to default of `cmd` on windows and `bash` otherwise - if WINDOWS and not MSYS: - CMD = True - else: - BASH = True - -if WINDOWS: - ENVPATH_SEPARATOR = ';' -else: - ENVPATH_SEPARATOR = ':' - -# platform.machine() may return AMD64 on windows, so standardize the case. -machine = os.getenv('EMSDK_ARCH', platform.machine().lower()) -if machine.startswith('x64') or machine.startswith('amd64') or machine.startswith('x86_64'): - ARCH = 'x86_64' -elif machine.endswith('86'): - ARCH = 'x86' -elif machine.startswith('aarch64') or machine.lower().startswith('arm64'): - if WINDOWS: - errlog('No support for Windows on Arm, fallback to x64') - ARCH = 'x86_64' - else: - ARCH = 'arm64' -elif machine.startswith('arm'): - ARCH = 'arm' -else: - exit_with_error('unknown machine architecture: ' + machine) - - -# Don't saturate all cores to not steal the whole system, but be aggressive. -CPU_CORES = int(os.getenv('EMSDK_NUM_CORES', max(multiprocessing.cpu_count() - 1, 1))) - -CMAKE_BUILD_TYPE_OVERRIDE = None - -# If true, perform a --shallow clone of git. -GIT_CLONE_SHALLOW = False - -# If true, LLVM backend is built with tests enabled, and Binaryen is built with -# Visual Studio static analyzer enabled. -BUILD_FOR_TESTING = False - -# If 'auto', assertions are decided by the build type -# (Release&MinSizeRel=disabled, Debug&RelWithDebInfo=enabled) -# Other valid values are 'ON' and 'OFF' -ENABLE_LLVM_ASSERTIONS = 'auto' - -# If true, keeps the downloaded archive files. -KEEP_DOWNLOADS = bool(os.getenv('EMSDK_KEEP_DOWNLOADS')) - - -def os_name(): - if WINDOWS: - return 'win' - elif LINUX: - return 'linux' - elif MACOS: - return 'mac' - else: - raise Exception('unknown OS') - - -def debug_print(msg): - if VERBOSE: - errlog(msg) - - -def to_unix_path(p): - return p.replace('\\', '/') - - -EMSDK_PATH = to_unix_path(os.path.dirname(os.path.realpath(__file__))) - -EMSDK_SET_ENV = "" -if POWERSHELL: - EMSDK_SET_ENV = os.path.join(EMSDK_PATH, 'emsdk_set_env.ps1') -else: - EMSDK_SET_ENV = os.path.join(EMSDK_PATH, 'emsdk_set_env.bat') - - -# Parses https://github.com/emscripten-core/emscripten/tree/d6aced8 to a pair (https://github.com/emscripten-core/emscripten, d6aced8) -def parse_github_url_and_refspec(url): - if not url: - return ('', '') - - if url.endswith(('/tree/', '/tree', '/commit/', '/commit')): - raise Exception('Malformed git URL and refspec ' + url + '!') - - if '/tree/' in url: - if url.endswith('/'): - raise Exception('Malformed git URL and refspec ' + url + '!') - return url.split('/tree/') - elif '/commit/' in url: - if url.endswith('/'): - raise Exception('Malformed git URL and refspec ' + url + '!') - return url.split('/commit/') - else: - return (url, 'main') # Assume the default branch is main in the absence of a refspec - - -ARCHIVE_SUFFIXES = ('zip', '.tar', '.gz', '.xz', '.tbz2', '.bz2') - - -# Finds the given executable 'program' in PATH. Operates like the Unix tool 'which'. -def which(program): - def is_exe(fpath): - return os.path.isfile(fpath) and (WINDOWS or os.access(fpath, os.X_OK)) - - fpath, fname = os.path.split(program) - if fpath: - if is_exe(program): - return program - else: - for path in os.environ["PATH"].split(os.pathsep): - path = path.strip('"') - exe_file = os.path.join(path, program) - if is_exe(exe_file): - return exe_file - - if WINDOWS and '.' not in fname: - if is_exe(exe_file + '.exe'): - return exe_file + '.exe' - if is_exe(exe_file + '.cmd'): - return exe_file + '.cmd' - if is_exe(exe_file + '.bat'): - return exe_file + '.bat' - - return None - - -def vswhere(version): - try: - program_files = os.getenv('ProgramFiles(x86)') - if not program_files: - program_files = os.environ['ProgramFiles'] - vswhere_path = os.path.join(program_files, 'Microsoft Visual Studio', 'Installer', 'vswhere.exe') - # Source: https://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2022 - tools_arch = 'ARM64' if ARCH == 'arm64' else 'x86.x64' - # The "-products *" allows detection of Build Tools, the "-prerelease" allows detection of Preview version - # of Visual Studio and Build Tools. - output = json.loads(subprocess.check_output([vswhere_path, '-latest', '-products', '*', '-prerelease', '-version', '[%s.0,%s.0)' % (version, version + 1), '-requires', 'Microsoft.VisualStudio.Component.VC.Tools.' + tools_arch, '-property', 'installationPath', '-format', 'json'])) - return str(output[0]['installationPath']) - except Exception: - return '' - - -def vs_filewhere(installation_path, platform, file): - try: - vcvarsall = os.path.join(installation_path, 'VC\\Auxiliary\\Build\\vcvarsall.bat') - env = subprocess.check_output('cmd /c "%s" %s & where %s' % (vcvarsall, platform, file)) - paths = [path[:-len(file)] for path in env.split('\r\n') if path.endswith(file)] - return paths[0] - except Exception: - return '' - - -CMAKE_GENERATOR = 'Unix Makefiles' -if WINDOWS: - # Detect which CMake generator to use when building on Windows - if '--mingw' in sys.argv: - CMAKE_GENERATOR = 'MinGW Makefiles' - elif '--vs2022' in sys.argv: - CMAKE_GENERATOR = 'Visual Studio 17' - elif '--vs2019' in sys.argv: - CMAKE_GENERATOR = 'Visual Studio 16' - elif len(vswhere(17)) > 0: - CMAKE_GENERATOR = 'Visual Studio 17' - elif len(vswhere(16)) > 0: - CMAKE_GENERATOR = 'Visual Studio 16' - elif which('mingw32-make') is not None and which('g++') is not None: - CMAKE_GENERATOR = 'MinGW Makefiles' - else: - # No detected generator - CMAKE_GENERATOR = '' - - -sys.argv = [a for a in sys.argv if a not in ('--mingw', '--vs2019', '--vs2022')] - - -# Computes a suitable path prefix to use when building with a given generator. -def cmake_generator_prefix(): - if CMAKE_GENERATOR == 'Visual Studio 17': - return '_vs2022' - if CMAKE_GENERATOR == 'Visual Studio 16': - return '_vs2019' - elif CMAKE_GENERATOR == 'MinGW Makefiles': - return '_mingw' - # Unix Makefiles do not specify a path prefix for backwards path compatibility - return '' - - -# Removes a directory tree even if it was readonly, and doesn't throw exception -# on failure. -def remove_tree(d): - debug_print('remove_tree(' + str(d) + ')') - if not os.path.exists(d): - return - try: - def remove_readonly_and_try_again(func, path, exc_info): - if not (os.stat(path).st_mode & stat.S_IWRITE): - os.chmod(path, stat.S_IWRITE) - func(path) - else: - raise - shutil.rmtree(d, onerror=remove_readonly_and_try_again) - except Exception as e: - debug_print('remove_tree threw an exception, ignoring: ' + str(e)) - - -def win_set_environment_variable_direct(key, value, system=True): - folder = None - try: - if system: - # Read globally from ALL USERS section. - folder = winreg.OpenKeyEx(winreg.HKEY_LOCAL_MACHINE, 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment', 0, winreg.KEY_ALL_ACCESS) - else: - # Register locally from CURRENT USER section. - folder = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, 'Environment', 0, winreg.KEY_ALL_ACCESS) - winreg.SetValueEx(folder, key, 0, winreg.REG_EXPAND_SZ, value) - debug_print('Set key=' + key + ' with value ' + value + ' in registry.') - return True - except Exception as e: - # 'Access is denied.' - if e.args[3] == 5: - exit_with_error('failed to set the environment variable \'' + key + '\'! Setting environment variables permanently requires administrator access. Please rerun this command with administrative privileges. This can be done for example by holding down the Ctrl and Shift keys while opening a command prompt in start menu.') - errlog('Failed to write environment variable ' + key + ':') - errlog(str(e)) - return False - finally: - if folder is not None: - folder.Close() - - -def win_get_environment_variable(key, system=True, user=True, fallback=True): - if (not system and not user and fallback): - # if no --system or --permanent flag is provided use shell's value - return os.environ[key] - try: - folder = None - try: - if system: - # Read globally from ALL USERS section. - folder = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment') - else: - # Register locally from CURRENT USER section. - folder = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Environment') - value = str(winreg.QueryValueEx(folder, key)[0]) - except Exception: - # If reading registry fails for some reason - read via os.environ. This has the drawback - # that expansion items such as %PROGRAMFILES% will have been expanded, so - # need to be precise not to set these back to system registry, or - # expansion items would be lost. - if fallback: - return os.environ[key] - return None - finally: - if folder is not None: - folder.Close() - - except Exception as e: - # this catch is if both the registry key threw an exception and the key is not in os.environ - if e.args[0] != 2: - # 'The system cannot find the file specified.' - errlog('Failed to read environment variable ' + key + ':') - errlog(str(e)) - return None - return value - - -def win_set_environment_variable(key, value, system, user): - debug_print('set ' + str(key) + '=' + str(value) + ', in system=' + str(system)) - previous_value = win_get_environment_variable(key, system=system, user=user) - if previous_value == value: - debug_print(' no need to set, since same value already exists.') - # No need to elevate UAC for nothing to set the same value, skip. - return False - - if not value: - try: - if system: - cmd = ['REG', 'DELETE', 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment', '/V', key, '/f'] - else: - cmd = ['REG', 'DELETE', 'HKCU\\Environment', '/V', key, '/f'] - debug_print(str(cmd)) - value = subprocess.call(cmd, stdout=subprocess.PIPE) - except Exception: - return False - return True - - try: - if win_set_environment_variable_direct(key, value, system): - return True - # Escape % signs so that we don't expand references to environment variables. - value = value.replace('%', '^%') - if len(value) >= 1024: - exit_with_error('the new environment variable ' + key + ' is more than 1024 characters long! A value this long cannot be set via command line: please add the environment variable specified above to system environment manually via Control Panel.') - cmd = ['SETX', key, value] - debug_print(str(cmd)) - retcode = subprocess.call(cmd, stdout=subprocess.PIPE) - if retcode != 0: - errlog('ERROR! Failed to set environment variable ' + key + '=' + value + '. You may need to set it manually.') - else: - return True - except Exception as e: - errlog('ERROR! Failed to set environment variable ' + key + '=' + value + ':') - errlog(str(e)) - errlog('You may need to set it manually.') - - return False - - -def win_set_environment_variables(env_vars_to_add, system, user): - if not env_vars_to_add: - return - - changed = False - - for key, value in env_vars_to_add: - if win_set_environment_variable(key, value, system, user): - if not changed: - changed = True - print('Setting global environment variables:') - - print(key + ' = ' + value) - - if not changed: - print('Global environment variables up to date') - return - - # if changes were made then we need to notify other processes - try: - HWND_BROADCAST = ctypes.wintypes.HWND(0xFFFF) # win32con.HWND_BROADCAST == 65535 - WM_SETTINGCHANGE = 0x001A # win32con.WM_SETTINGCHANGE == 26 - SMTO_BLOCK = 0x0001 # win32con.SMTO_BLOCK == 1 - ctypes.windll.user32.SendMessageTimeoutA( - HWND_BROADCAST, # hWnd: notify everyone - WM_SETTINGCHANGE, # Msg: registry changed - 0, # wParam: Must be 0 when setting changed is sent by users - 'Environment', # lParam: Specifically environment variables changed - SMTO_BLOCK, # fuFlags: Wait for message to be sent or timeout - 100) # uTimeout: 100ms - except Exception as e: - errlog('SendMessageTimeout failed with error: ' + str(e)) - - -def win_delete_environment_variable(key, system=True, user=True): - debug_print('win_delete_environment_variable(key=' + key + ', system=' + str(system) + ')') - return win_set_environment_variable(key, None, system, user) - - -# Returns the absolute pathname to the given path inside the Emscripten SDK. -def sdk_path(path): - if os.path.isabs(path): - return path - - return to_unix_path(os.path.join(EMSDK_PATH, path)) - - -# Removes a single file, suppressing exceptions on failure. -def rmfile(filename): - debug_print('rmfile(' + filename + ')') - if os.path.lexists(filename): - os.remove(filename) - - -# http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python -def mkdir_p(path): - debug_print('mkdir_p(' + path + ')') - try: - os.makedirs(path) - except OSError as exc: # Python >2.5 - if exc.errno != errno.EEXIST or not os.path.isdir(path): - raise - - -def is_nonempty_directory(path): - if not os.path.isdir(path): - return False - return len(os.listdir(path)) != 0 - - -def run(cmd, cwd=None, quiet=False): - debug_print('run(cmd=' + str(cmd) + ', cwd=' + str(cwd) + ')') - process = subprocess.Popen(cmd, cwd=cwd, env=os.environ.copy()) - process.communicate() - if process.returncode != 0 and not quiet: - errlog(str(cmd) + ' failed with error code ' + str(process.returncode) + '!') - return process.returncode - - -# http://pythonicprose.blogspot.fi/2009/10/python-extract-targz-archive.html -def untargz(source_filename, dest_dir): - print("Unpacking '" + source_filename + "' to '" + dest_dir + "'") - mkdir_p(dest_dir) - returncode = run(['tar', '-xvf' if VERBOSE else '-xf', sdk_path(source_filename), '--strip', '1'], cwd=dest_dir) - # tfile = tarfile.open(source_filename, 'r:gz') - # tfile.extractall(dest_dir) - return returncode == 0 - - -# On Windows, it is not possible to reference path names that are longer than -# ~260 characters, unless the path is referenced via a "\\?\" prefix. -# See https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath and http://stackoverflow.com/questions/3555527/python-win32-filename-length-workaround -# In that mode, forward slashes cannot be used as delimiters. -def fix_potentially_long_windows_pathname(pathname): - if not WINDOWS or MSYS: - return pathname - # Test if emsdk calls fix_potentially_long_windows_pathname() with long - # relative paths (which is problematic) - if not os.path.isabs(pathname) and len(pathname) > 200: - errlog('Warning: Seeing a relative path "' + pathname + '" which is dangerously long for being referenced as a short Windows path name. Refactor emsdk to be able to handle this!') - if pathname.startswith('\\\\?\\'): - return pathname - pathname = os.path.normpath(pathname.replace('/', '\\')) - if MINGW: - # MinGW versions of Python return normalized paths with backslashes - # converted to forward slashes, so we must use forward slashes in our - # prefix - return '//?/' + pathname - return '\\\\?\\' + pathname - - -# On windows, rename/move will fail if the destination exists, and there is no -# race-free way to do it. This method removes the destination if it exists, so -# the move always works -def move_with_overwrite(src, dest): - if os.path.exists(dest): - os.remove(dest) - os.rename(src, dest) - - -# http://stackoverflow.com/questions/12886768/simple-way-to-unzip-file-in-python-on-all-oses -def unzip(source_filename, dest_dir): - print("Unpacking '" + source_filename + "' to '" + dest_dir + "'") - mkdir_p(dest_dir) - common_subdir = None - try: - with zipfile.ZipFile(source_filename) as zf: - # Implement '--strip 1' behavior to unzipping by testing if all the files - # in the zip reside in a common subdirectory, and if so, we move the - # output tree at the end of uncompression step. - for member in zf.infolist(): - words = member.filename.split('/') - if len(words) > 1: # If there is a directory component? - if common_subdir is None: - common_subdir = words[0] - elif common_subdir != words[0]: - common_subdir = None - break - else: - common_subdir = None - break - - unzip_to_dir = dest_dir - if common_subdir: - unzip_to_dir = os.path.join(os.path.dirname(dest_dir), 'unzip_temp') - - # Now do the actual decompress. - for member in zf.infolist(): - zf.extract(member, fix_potentially_long_windows_pathname(unzip_to_dir)) - dst_filename = os.path.join(unzip_to_dir, member.filename) - - # See: https://stackoverflow.com/questions/42326428/zipfile-in-python-file-permission - unix_attributes = member.external_attr >> 16 - if unix_attributes: - os.chmod(dst_filename, unix_attributes) - - # Move the extracted file to its final location without the base - # directory name, if we are stripping that away. - if common_subdir: - if not member.filename.startswith(common_subdir): - raise Exception('Unexpected filename "' + member.filename + '"!') - stripped_filename = '.' + member.filename[len(common_subdir):] - final_dst_filename = os.path.join(dest_dir, stripped_filename) - # Check if a directory - if stripped_filename.endswith('/'): - d = fix_potentially_long_windows_pathname(final_dst_filename) - if not os.path.isdir(d): - os.mkdir(d) - else: - parent_dir = os.path.dirname(fix_potentially_long_windows_pathname(final_dst_filename)) - if parent_dir and not os.path.exists(parent_dir): - os.makedirs(parent_dir) - move_with_overwrite(fix_potentially_long_windows_pathname(dst_filename), fix_potentially_long_windows_pathname(final_dst_filename)) - - if common_subdir: - remove_tree(unzip_to_dir) - except zipfile.BadZipfile as e: - errlog("Unzipping file '" + source_filename + "' failed due to reason: " + str(e) + "! Removing the corrupted zip file.") - rmfile(source_filename) - return False - except Exception as e: - errlog("Unzipping file '" + source_filename + "' failed due to reason: " + str(e)) - return False - - return True - - -# This function interprets whether the given string looks like a path to a -# directory instead of a file, without looking at the actual filesystem. -# 'a/b/c' points to directory, so does 'a/b/c/', but 'a/b/c.x' is parsed as a -# filename -def path_points_to_directory(path): - if path == '.': - return True - last_slash = max(path.rfind('/'), path.rfind('\\')) - last_dot = path.rfind('.') - no_suffix = last_dot < last_slash or last_dot == -1 - if no_suffix: - return True - suffix = path[last_dot:] - # Very simple logic for the only file suffixes used by emsdk downloader. Other - # suffixes, like 'clang-3.2' are treated as dirs. - if suffix in ('.exe', '.zip', '.txt'): - return False - else: - return True - - -def get_content_length(download): - try: - meta = download.info() - if hasattr(meta, "getheaders") and hasattr(meta.getheaders, "Content-Length"): - return int(meta.getheaders("Content-Length")[0]) - elif hasattr(download, "getheader") and download.getheader('Content-Length'): - return int(download.getheader('Content-Length')) - elif hasattr(meta, "getheader") and meta.getheader('Content-Length'): - return int(meta.getheader('Content-Length')) - except Exception: - pass - - return 0 - - -def get_download_target(url, dstpath, filename_prefix=''): - file_name = filename_prefix + url.split('/')[-1] - if path_points_to_directory(dstpath): - file_name = os.path.join(dstpath, file_name) - else: - file_name = dstpath - - # Treat all relative destination paths as relative to the SDK root directory, - # not the current working directory. - file_name = sdk_path(file_name) - - return file_name - - -def download_with_curl(url, file_name): - print("Downloading: %s from %s" % (file_name, url)) - if not which('curl'): - exit_with_error('curl not found in PATH') - # -#: show progress bar - # -L: Follow HTTP 3XX redirections - # -f: Fail on HTTP errors - subprocess.check_call(['curl', '-#', '-f', '-L', '-o', file_name, url]) - - -def download_with_urllib(url, file_name): - u = urlopen(url) - file_size = get_content_length(u) - if file_size > 0: - print("Downloading: %s from %s, %s Bytes" % (file_name, url, file_size)) - else: - print("Downloading: %s from %s" % (file_name, url)) - - file_size_dl = 0 - # Draw a progress bar 80 chars wide (in non-TTY mode) - progress_max = 80 - 4 - progress_shown = 0 - block_sz = 256 * 1024 - if not TTY_OUTPUT: - print(' [', end='') - - with open(file_name, 'wb') as f: - while True: - buffer = u.read(block_sz) - if not buffer: - break - - file_size_dl += len(buffer) - f.write(buffer) - if file_size: - percent = file_size_dl * 100.0 / file_size - if TTY_OUTPUT: - status = r" %10d [%3.02f%%]" % (file_size_dl, percent) - print(status, end='\r') - else: - while progress_shown < progress_max * percent / 100: - print('-', end='') - sys.stdout.flush() - progress_shown += 1 - - if not TTY_OUTPUT: - print(']') - sys.stdout.flush() - - debug_print('finished downloading (%d bytes)' % file_size_dl) - - -# On success, returns the filename on the disk pointing to the destination file that was produced -# On failure, returns None. -def download_file(url, dstpath, download_even_if_exists=False, - filename_prefix='', silent=False): - debug_print('download_file(url=' + url + ', dstpath=' + dstpath + ')') - file_name = get_download_target(url, dstpath, filename_prefix) - - if os.path.exists(file_name) and not download_even_if_exists: - print("File '" + file_name + "' already downloaded, skipping.") - return file_name - - mkdir_p(os.path.dirname(file_name)) - - try: - # Use curl on macOS to avoid CERTIFICATE_VERIFY_FAILED issue with - # python's urllib: - # https://stackoverflow.com/questions/40684543/how-to-make-python-use-ca-certificates-from-mac-os-truststore - # Unlike on linux or windows, curl is always available on macOS systems. - if MACOS: - download_with_curl(url, file_name) - else: - download_with_urllib(url, file_name) - except Exception as e: - errlog("Error: Downloading URL '" + url + "': " + str(e)) - return None - except KeyboardInterrupt: - rmfile(file_name) - raise - - return file_name - - -def run_get_output(cmd, cwd=None): - debug_print('run_get_output(cmd=' + str(cmd) + ', cwd=' + str(cwd) + ')') - process = subprocess.Popen(cmd, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, env=os.environ.copy(), universal_newlines=True) - stdout, stderr = process.communicate() - return (process.returncode, stdout, stderr) - - -cached_git_executable = None - - -# must_succeed: If false, the search is performed silently without printing out -# errors if not found. Empty string is returned if git is not found. -# If true, the search is required to succeed, and the execution -# will terminate with sys.exit(1) if not found. -def GIT(must_succeed=True): - global cached_git_executable - if cached_git_executable is not None: - return cached_git_executable - # The order in the following is important, and specifies the preferred order - # of using the git tools. Primarily use git from emsdk if installed. If not, - # use system git. - gits = ['git/1.9.4/bin/git.exe', which('git')] - for git in gits: - try: - ret, stdout, stderr = run_get_output([git, '--version']) - if ret == 0: - cached_git_executable = git - return git - except Exception: - pass - if must_succeed: - if WINDOWS: - msg = "git executable was not found. Please install it by typing 'emsdk install git-1.9.4', or alternatively by installing it manually from http://git-scm.com/downloads . If you install git manually, remember to add it to PATH" - elif MACOS: - msg = "git executable was not found. Please install git for this operation! This can be done from http://git-scm.com/ , or by installing XCode and then the XCode Command Line Tools (see http://stackoverflow.com/questions/9329243/xcode-4-4-command-line-tools )" - elif LINUX: - msg = "git executable was not found. Please install git for this operation! This can be probably be done using your package manager, see http://git-scm.com/book/en/Getting-Started-Installing-Git" - else: - msg = "git executable was not found. Please install git for this operation!" - exit_with_error(msg) - # Not found - return '' - - -def git_repo_version(repo_path): - returncode, stdout, stderr = run_get_output([GIT(), 'log', '-n', '1', '--pretty="%aD %H"'], cwd=repo_path) - if returncode == 0: - return stdout.strip() - else: - return "" - - -def git_recent_commits(repo_path, n=20): - returncode, stdout, stderr = run_get_output([GIT(), 'log', '-n', str(n), '--pretty="%H"'], cwd=repo_path) - if returncode == 0: - return stdout.strip().replace('\r', '').replace('"', '').split('\n') - else: - return [] - - -def git_clone(url, dstpath, branch): - debug_print('git_clone(url=' + url + ', dstpath=' + dstpath + ')') - if os.path.isdir(os.path.join(dstpath, '.git')): - debug_print("Repository '" + url + "' already cloned to directory '" + dstpath + "', skipping.") - return True - mkdir_p(dstpath) - git_clone_args = ['--recurse-submodules', '--branch', branch] # Do not check out a branch (installer will issue a checkout command right after) - if GIT_CLONE_SHALLOW: - git_clone_args += ['--depth', '1'] - print('Cloning from ' + url + '...') - return run([GIT(), 'clone'] + git_clone_args + [url, dstpath]) == 0 - - -def git_pull(repo_path, branch_or_tag): - debug_print('git_pull(repo_path=' + repo_path + ', branch/tag=' + branch_or_tag + ')') - ret = run([GIT(), 'fetch', '--quiet', 'origin'], repo_path) - if ret != 0: - return False - try: - print("Fetching latest changes to the branch/tag '" + branch_or_tag + "' for '" + repo_path + "'...") - ret = run([GIT(), 'fetch', '--quiet', 'origin'], repo_path) - if ret != 0: - return False - # this line assumes that the user has not gone and manually messed with the - # repo and added new remotes to ambiguate the checkout. - ret = run([GIT(), 'checkout', '--recurse-submodules', '--quiet', branch_or_tag], repo_path) - if ret != 0: - return False - # Test if branch_or_tag is a branch, or if it is a tag that needs to be updated - target_is_tag = run([GIT(), 'symbolic-ref', '-q', 'HEAD'], repo_path, quiet=True) - if not target_is_tag: - # update branch to latest (not needed for tags) - # this line assumes that the user has not gone and made local changes to the repo - ret = run([GIT(), 'merge', '--ff-only', 'origin/' + branch_or_tag], repo_path) - if ret != 0: - return False - run([GIT(), 'submodule', 'update', '--init'], repo_path, quiet=True) - except Exception: - errlog('git operation failed!') - return False - print("Successfully updated and checked out branch/tag '" + branch_or_tag + "' on repository '" + repo_path + "'") - print("Current repository version: " + git_repo_version(repo_path)) - return True - - -def git_clone_checkout_and_pull(url, dstpath, branch): - debug_print('git_clone_checkout_and_pull(url=' + url + ', dstpath=' + dstpath + ', branch=' + branch + ')') - - # If the repository has already been cloned before, issue a pull operation. Otherwise do a new clone. - if os.path.isdir(os.path.join(dstpath, '.git')): - return git_pull(dstpath, branch) - else: - return git_clone(url, dstpath, branch) - - -# Each tool can have its own build type, or it can be overridden on the command -# line. -def decide_cmake_build_type(tool): - if CMAKE_BUILD_TYPE_OVERRIDE: - return CMAKE_BUILD_TYPE_OVERRIDE - else: - return tool.cmake_build_type - - -# The root directory of the build. -def llvm_build_dir(tool): - generator_suffix = cmake_generator_prefix() - bitness_suffix = '_32' if tool.bitness == 32 else '_64' - - if hasattr(tool, 'git_branch'): - build_dir = 'build_' + tool.git_branch.replace(os.sep, '-') + generator_suffix + bitness_suffix - else: - build_dir = 'build_' + tool.version + generator_suffix + bitness_suffix - return build_dir - - -def exe_suffix(filename): - if WINDOWS and not filename.endswith('.exe'): - filename += '.exe' - return filename - - -# The directory where the binaries are produced. (relative to the installation -# root directory of the tool) -def llvm_build_bin_dir(tool): - build_dir = llvm_build_dir(tool) - if WINDOWS and 'Visual Studio' in CMAKE_GENERATOR: - old_llvm_bin_dir = os.path.join(build_dir, 'bin', decide_cmake_build_type(tool)) - - new_llvm_bin_dir = None - default_cmake_build_type = decide_cmake_build_type(tool) - cmake_build_types = [default_cmake_build_type, 'Release', 'RelWithDebInfo', 'MinSizeRel', 'Debug'] - for build_type in cmake_build_types: - d = os.path.join(build_dir, build_type, 'bin') - if os.path.isfile(os.path.join(tool.installation_path(), d, exe_suffix('clang'))): - new_llvm_bin_dir = d - break - - if new_llvm_bin_dir and os.path.exists(os.path.join(tool.installation_path(), new_llvm_bin_dir)): - return new_llvm_bin_dir - elif os.path.exists(os.path.join(tool.installation_path(), old_llvm_bin_dir)): - return old_llvm_bin_dir - return os.path.join(build_dir, default_cmake_build_type, 'bin') - else: - return os.path.join(build_dir, 'bin') - - -def build_env(generator): - build_env = os.environ.copy() - - # To work around a build issue with older Mac OS X builds, add -stdlib=libc++ to all builds. - # See https://groups.google.com/forum/#!topic/emscripten-discuss/5Or6QIzkqf0 - if MACOS: - build_env['CXXFLAGS'] = ((build_env['CXXFLAGS'] + ' ') if hasattr(build_env, 'CXXFLAGS') else '') + '-stdlib=libc++' - if WINDOWS: - # MSBuild.exe has an internal mechanism to avoid N^2 oversubscription of threads in its two-tier build model, see - # https://devblogs.microsoft.com/cppblog/improved-parallelism-in-msbuild/ - build_env['UseMultiToolTask'] = 'true' - build_env['EnforceProcessCountAcrossBuilds'] = 'true' - return build_env - - -def make_build(build_root, build_type): - debug_print('make_build(build_root=' + build_root + ', build_type=' + build_type + ')') - if CPU_CORES > 1: - print('Performing a parallel build with ' + str(CPU_CORES) + ' cores.') - else: - print('Performing a singlethreaded build.') - - make = ['cmake', '--build', '.', '--config', build_type] - if 'Visual Studio' in CMAKE_GENERATOR: - # Visual Studio historically has had a two-tier problem in its build system design. A single MSBuild.exe instance only governs - # the build of a single project (.exe/.lib/.dll) in a solution. Passing the -j parameter above will only enable multiple MSBuild.exe - # instances to be spawned to build multiple projects in parallel, but each MSBuild.exe is still singlethreaded. - # To enable each MSBuild.exe instance to also compile several .cpp files in parallel inside a single project, pass the extra - # MSBuild.exe specific "Multi-ToolTask" (MTT) setting /p:CL_MPCount. This enables each MSBuild.exe to parallelize builds wide. - # This requires CMake 3.12 or newer. - make += ['-j', str(CPU_CORES), '--', '/p:CL_MPCount=' + str(CPU_CORES)] - else: - # Pass -j to native make, CMake might not support -j option. - make += ['--', '-j', str(CPU_CORES)] - - # Build - try: - print('Running build: ' + str(make)) - ret = subprocess.check_call(make, cwd=build_root, env=build_env(CMAKE_GENERATOR)) - if ret != 0: - errlog('Build failed with exit code ' + ret + '!') - errlog('Working directory: ' + build_root) - return False - except Exception as e: - errlog('Build failed due to exception!') - errlog('Working directory: ' + build_root) - errlog(str(e)) - return False - - return True - - -def cmake_configure(generator, build_root, src_root, build_type, extra_cmake_args=[]): - debug_print('cmake_configure(generator=' + str(generator) + ', build_root=' + str(build_root) + ', src_root=' + str(src_root) + ', build_type=' + str(build_type) + ', extra_cmake_args=' + str(extra_cmake_args) + ')') - # Configure - if not os.path.isdir(build_root): - # Create build output directory if it doesn't yet exist. - os.mkdir(build_root) - try: - if generator: - generator = ['-G', generator] - else: - generator = [] - - cmdline = ['cmake'] + generator + ['-DCMAKE_BUILD_TYPE=' + build_type, '-DPYTHON_EXECUTABLE=' + sys.executable] - # Target macOS 10.14 at minimum, to support widest range of Mac devices - # from "Early 2008" and newer: - # https://en.wikipedia.org/wiki/MacBook_(2006-2012)#Supported_operating_systems - cmdline += ['-DCMAKE_OSX_DEPLOYMENT_TARGET=10.14'] - cmdline += extra_cmake_args + [src_root] - - print('Running CMake: ' + str(cmdline)) - - # Specify the deployment target also as an env. var, since some Xcode versions - # read this instead of the CMake field. - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.14' - - def quote_parens(x): - if ' ' in x: - return '"' + x.replace('"', '\\"') + '"' - else: - return x - - # Create a file 'recmake.bat/sh' in the build root that user can call to - # manually recmake the build tree with the previous build params - open(os.path.join(build_root, 'recmake.' + ('bat' if WINDOWS else 'sh')), 'w').write(' '.join(map(quote_parens, cmdline))) - ret = subprocess.check_call(cmdline, cwd=build_root, env=build_env(CMAKE_GENERATOR)) - if ret != 0: - errlog('CMake invocation failed with exit code ' + ret + '!') - errlog('Working directory: ' + build_root) - return False - except OSError as e: - if e.errno == errno.ENOENT: - errlog(str(e)) - errlog('Could not run CMake, perhaps it has not been installed?') - if WINDOWS: - errlog('Installing this package requires CMake. Get it from http://www.cmake.org/') - elif LINUX: - errlog('Installing this package requires CMake. Get it via your system package manager (e.g. sudo apt-get install cmake), or from http://www.cmake.org/') - elif MACOS: - errlog('Installing this package requires CMake. Get it via a macOS package manager (Homebrew: "brew install cmake", or MacPorts: "sudo port install cmake"), or from http://www.cmake.org/') - return False - raise - except Exception as e: - errlog('CMake invocation failed due to exception!') - errlog('Working directory: ' + build_root) - errlog(str(e)) - return False - - return True - - -def xcode_sdk_version(): - try: - output = subprocess.check_output(['xcrun', '--show-sdk-version']) - if sys.version_info >= (3,): - output = output.decode('utf8') - return output.strip().split('.') - except Exception: - return subprocess.checkplatform.mac_ver()[0].split('.') - - -def cmake_target_platform(tool): - # Source: https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html#platform-selection - if hasattr(tool, 'arch'): - if tool.arch == 'arm64': - return 'ARM64' - elif tool.arch == 'x86_64': - return 'x64' - elif tool.arch == 'x86': - return 'Win32' - if ARCH == 'arm64': - return 'ARM64' - else: - return 'x64' if tool.bitness == 64 else 'Win32' - - -def cmake_host_platform(): - # Source: https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html#toolset-selection - arch_to_cmake_host_platform = { - 'arm64': 'ARM64', - 'arm': 'ARM', - 'x86_64': 'x64', - 'x86': 'x86' - } - return arch_to_cmake_host_platform[ARCH] - - -def get_generator_and_config_args(tool): - args = [] - cmake_generator = CMAKE_GENERATOR - if 'Visual Studio 16' in CMAKE_GENERATOR or 'Visual Studio 17' in CMAKE_GENERATOR: # VS2019 or VS2022 - # With Visual Studio 16 2019, CMake changed the way they specify target arch. - # Instead of appending it into the CMake generator line, it is specified - # with a -A arch parameter. - args += ['-A', cmake_target_platform(tool)] - args += ['-Thost=' + cmake_host_platform()] - elif 'Visual Studio' in CMAKE_GENERATOR and tool.bitness == 64: - cmake_generator += ' Win64' - args += ['-Thost=x64'] - return (cmake_generator, args) - - -def build_llvm(tool): - debug_print('build_llvm(' + str(tool) + ')') - llvm_root = tool.installation_path() - llvm_src_root = os.path.join(llvm_root, 'src') - success = git_clone_checkout_and_pull(tool.download_url(), llvm_src_root, tool.git_branch) - if not success: - return False - - build_dir = llvm_build_dir(tool) - build_root = os.path.join(llvm_root, build_dir) - - build_type = decide_cmake_build_type(tool) - - # Configure - tests_arg = 'ON' if BUILD_FOR_TESTING else 'OFF' - - enable_assertions = ENABLE_LLVM_ASSERTIONS.lower() == 'on' or (ENABLE_LLVM_ASSERTIONS == 'auto' and build_type.lower() != 'release' and build_type.lower() != 'minsizerel') - - if ARCH == 'x86' or ARCH == 'x86_64': - targets_to_build = 'WebAssembly;X86' - elif ARCH == 'arm': - targets_to_build = 'WebAssembly;ARM' - elif ARCH == 'arm64': - targets_to_build = 'WebAssembly;AArch64' - else: - targets_to_build = 'WebAssembly' - cmake_generator, args = get_generator_and_config_args(tool) - args += ['-DLLVM_TARGETS_TO_BUILD=' + targets_to_build, - '-DLLVM_INCLUDE_EXAMPLES=OFF', - '-DLLVM_INCLUDE_TESTS=' + tests_arg, - '-DCLANG_INCLUDE_TESTS=' + tests_arg, - '-DLLVM_ENABLE_ASSERTIONS=' + ('ON' if enable_assertions else 'OFF'), - # Disable optional LLVM dependencies, these can cause unwanted .so dependencies - # that prevent distributing the generated compiler for end users. - '-DLLVM_ENABLE_LIBXML2=OFF', '-DLLVM_ENABLE_TERMINFO=OFF', '-DLLDB_ENABLE_LIBEDIT=OFF', - '-DLLVM_ENABLE_LIBEDIT=OFF', '-DLLVM_ENABLE_LIBPFM=OFF'] - # LLVM build system bug: compiler-rt does not build on Windows. It insists on performing a CMake install step that writes to C:\Program Files. Attempting - # to reroute that to build_root directory then fails on an error - # file INSTALL cannot find - # "C:/code/emsdk/llvm/git/build_master_vs2017_64/$(Configuration)/lib/clang/10.0.0/lib/windows/clang_rt.ubsan_standalone-x86_64.lib". - # (there instead of $(Configuration), one would need ${CMAKE_BUILD_TYPE} ?) - # It looks like compiler-rt is not compatible to build on Windows? - args += ['-DLLVM_ENABLE_PROJECTS=clang;lld'] - # To enable widest possible chance of success for building, let the code - # compile through with older toolchains that are about to be deprecated by - # upstream LLVM. - args += ['-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON'] - - if os.getenv('LLVM_CMAKE_ARGS'): - extra_args = os.environ['LLVM_CMAKE_ARGS'].split(',') - print('Passing the following extra arguments to LLVM CMake configuration: ' + str(extra_args)) - args += extra_args - - cmakelists_dir = os.path.join(llvm_src_root, 'llvm') - success = cmake_configure(cmake_generator, build_root, cmakelists_dir, build_type, args) - if not success: - return False - - # Make - success = make_build(build_root, build_type) - return success - - -def build_ninja(tool): - debug_print('build_ninja(' + str(tool) + ')') - root = os.path.normpath(tool.installation_path()) - src_root = os.path.join(root, 'src') - success = git_clone_checkout_and_pull(tool.download_url(), src_root, tool.git_branch) - if not success: - return False - - build_dir = llvm_build_dir(tool) - build_root = os.path.join(root, build_dir) - - build_type = decide_cmake_build_type(tool) - - # Configure - cmake_generator, args = get_generator_and_config_args(tool) - - cmakelists_dir = os.path.join(src_root) - success = cmake_configure(cmake_generator, build_root, cmakelists_dir, build_type, args) - if not success: - return False - - # Make - success = make_build(build_root, build_type) - - if success: - bin_dir = os.path.join(root, 'bin') - mkdir_p(bin_dir) - exe_paths = [os.path.join(build_root, 'Release', 'ninja'), os.path.join(build_root, 'ninja')] - for e in exe_paths: - for s in ['.exe', '']: - ninja = e + s - if os.path.isfile(ninja): - dst = os.path.join(bin_dir, 'ninja' + s) - shutil.copyfile(ninja, dst) - os.chmod(dst, os.stat(dst).st_mode | stat.S_IEXEC) - - return success - - -def build_ccache(tool): - debug_print('build_ccache(' + str(tool) + ')') - root = os.path.normpath(tool.installation_path()) - src_root = os.path.join(root, 'src') - success = git_clone_checkout_and_pull(tool.download_url(), src_root, tool.git_branch) - if not success: - return False - - build_dir = llvm_build_dir(tool) - build_root = os.path.join(root, build_dir) - - build_type = decide_cmake_build_type(tool) - - # Configure - cmake_generator, args = get_generator_and_config_args(tool) - args += ['-DZSTD_FROM_INTERNET=ON'] - - cmakelists_dir = os.path.join(src_root) - success = cmake_configure(cmake_generator, build_root, cmakelists_dir, build_type, args) - if not success: - return False - - # Make - success = make_build(build_root, build_type) - - if success: - bin_dir = os.path.join(root, 'bin') - mkdir_p(bin_dir) - exe_paths = [os.path.join(build_root, 'Release', 'ccache'), os.path.join(build_root, 'ccache')] - for e in exe_paths: - for s in ['.exe', '']: - ccache = e + s - if os.path.isfile(ccache): - dst = os.path.join(bin_dir, 'ccache' + s) - shutil.copyfile(ccache, dst) - os.chmod(dst, os.stat(dst).st_mode | stat.S_IEXEC) - - cache_dir = os.path.join(root, 'cache') - open(os.path.join(root, 'emcc_ccache.conf'), 'w').write('''# Set maximum cache size to 10 GB: -max_size = 10G -cache_dir = %s -''' % cache_dir) - mkdir_p(cache_dir) - - return success - - -# Finds the newest installed version of a given tool -def find_latest_installed_tool(name): - for t in reversed(tools): - if t.id == name and t.is_installed(): - return t - - -# npm install in Emscripten root directory -def emscripten_npm_install(tool, directory): - node_tool = find_latest_installed_tool('node') - if not node_tool: - npm_fallback = which('npm') - if not npm_fallback: - errlog('Failed to find npm command!') - errlog('Running "npm ci" in installed Emscripten root directory ' + tool.installation_path() + ' is required!') - errlog('Please install node.js first!') - return False - node_path = os.path.dirname(npm_fallback) - else: - node_path = os.path.join(node_tool.installation_path(), 'bin') - - npm = os.path.join(node_path, 'npm' + ('.cmd' if WINDOWS else '')) - env = os.environ.copy() - env["PATH"] = node_path + os.pathsep + env["PATH"] - print('Running post-install step: npm ci ...') - try: - subprocess.check_output( - [npm, 'ci', '--production'], - cwd=directory, stderr=subprocess.STDOUT, env=env, - universal_newlines=True) - except subprocess.CalledProcessError as e: - errlog('Error running %s:\n%s' % (e.cmd, e.output)) - return False - - print('Done running: npm ci') - - if os.path.isfile(os.path.join(directory, 'bootstrap.py')): - try: - subprocess.check_output([sys.executable, os.path.join(directory, 'bootstrap.py')], - cwd=directory, stderr=subprocess.STDOUT, env=env, - universal_newlines=True) - except subprocess.CalledProcessError as e: - errlog('Error running %s:\n%s' % (e.cmd, e.output)) - return False - - print('Done running: Emscripten bootstrap') - return True - - -# Binaryen build scripts: -def binaryen_build_root(tool): - build_root = tool.installation_path().strip() - if build_root.endswith('/') or build_root.endswith('\\'): - build_root = build_root[:-1] - generator_prefix = cmake_generator_prefix() - build_root = build_root + generator_prefix + '_' + str(tool.bitness) + 'bit_binaryen' - return build_root - - -def uninstall_binaryen(tool): - debug_print('uninstall_binaryen(' + str(tool) + ')') - build_root = binaryen_build_root(tool) - print("Deleting path '" + build_root + "'") - remove_tree(build_root) - - -def is_binaryen_installed(tool): - build_root = binaryen_build_root(tool) - return os.path.exists(build_root) - - -def build_binaryen_tool(tool): - debug_print('build_binaryen_tool(' + str(tool) + ')') - src_root = tool.installation_path() - build_root = binaryen_build_root(tool) - build_type = decide_cmake_build_type(tool) - - # Configure - cmake_generator, args = get_generator_and_config_args(tool) - args += ['-DENABLE_WERROR=0'] # -Werror is not useful for end users - args += ['-DBUILD_TESTS=0'] # We don't want to build or run tests - - if 'Visual Studio' in CMAKE_GENERATOR: - if BUILD_FOR_TESTING: - args += ['-DRUN_STATIC_ANALYZER=1'] - - success = cmake_configure(cmake_generator, build_root, src_root, build_type, args) - if not success: - return False - - # Make - success = make_build(build_root, build_type) - - # Deploy scripts needed from source repository to build directory - remove_tree(os.path.join(build_root, 'scripts')) - shutil.copytree(os.path.join(src_root, 'scripts'), os.path.join(build_root, 'scripts')) - remove_tree(os.path.join(build_root, 'src', 'js')) - shutil.copytree(os.path.join(src_root, 'src', 'js'), os.path.join(build_root, 'src', 'js')) - - return success - - -def download_and_extract(archive, dest_dir, filename_prefix='', clobber=True): - debug_print('download_and_extract(archive=' + archive + ', dest_dir=' + dest_dir + ')') - - url = urljoin(emsdk_packages_url, archive) - - def try_download(url, silent=False): - return download_file(url, download_dir, not KEEP_DOWNLOADS, - filename_prefix, silent=silent) - - # Special hack for the wasm-binaries we transitioned from `.bzip2` to - # `.xz`, but we can't tell from the version/url which one to use, so - # try one and then fall back to the other. - success = False - if 'wasm-binaries' in archive and os.path.splitext(archive)[1] == '.xz': - success = try_download(url, silent=True) - if not success: - alt_url = url.replace('.tar.xz', '.tbz2') - success = try_download(alt_url, silent=True) - if success: - url = alt_url - - if not success: - success = try_download(url) - - if not success: - return False - - # Remove the old directory, since we have some SDKs that install into the - # same directory. If we didn't do this contents of the previous install - # could remain. - if clobber: - remove_tree(dest_dir) - - download_target = get_download_target(url, download_dir, filename_prefix) - if archive.endswith('.zip'): - return unzip(download_target, dest_dir) - else: - return untargz(download_target, dest_dir) - - -def to_native_path(p): - if WINDOWS and not MSYS: - return to_unix_path(p).replace('/', '\\') - else: - return to_unix_path(p) - - -# Finds and returns a list of the directories that need to be added to PATH for -# the given set of tools. -def get_required_path(active_tools): - path_add = [to_native_path(EMSDK_PATH)] - for tool in active_tools: - if hasattr(tool, 'activated_path'): - path = to_native_path(tool.expand_vars(tool.activated_path)) - # If the tool has an activated_path_skip attribute then we don't add - # the tools path to the users path if a program by that name is found - # in the existing PATH. This allows us to, for example, add our version - # node to the users PATH if, and only if, they don't already have a - # another version of node in their PATH. - if hasattr(tool, 'activated_path_skip'): - current_path = which(tool.activated_path_skip) - # We found an executable by this name in the current PATH, but we - # ignore our own version for this purpose. - if current_path and os.path.dirname(current_path) != path: - continue - path_add.append(path) - return path_add - - -# Returns the absolute path to the file '.emscripten' for the current user on -# this system. -EM_CONFIG_PATH = os.path.join(EMSDK_PATH, ".emscripten") -EM_CONFIG_DICT = {} - - -def parse_key_value(line): - if not line: - return ('', '') - eq = line.find('=') - if eq != -1: - key = line[0:eq].strip() - value = line[eq + 1:].strip() - return (key, value) - else: - return (key, '') - - -def load_em_config(): - EM_CONFIG_DICT.clear() - lines = [] - try: - lines = open(EM_CONFIG_PATH, "r").read().split('\n') - except Exception: - pass - for line in lines: - try: - key, value = parse_key_value(line) - if value != '': - EM_CONFIG_DICT[key] = value - except Exception: - pass - - -def find_emscripten_root(active_tools): - """Find the currently active emscripten root. - - If there is more than one tool that defines EMSCRIPTEN_ROOT (this - should not happen under normal circumstances), assume the last one takes - precedence. - """ - root = None - for tool in active_tools: - config = tool.activated_config() - if 'EMSCRIPTEN_ROOT' in config: - root = config['EMSCRIPTEN_ROOT'] - return root - - -# returns a tuple (string,string) of config files paths that need to used -# to activate emsdk env depending on $SHELL, defaults to bash. -def get_emsdk_shell_env_configs(): - default_emsdk_env = sdk_path('emsdk_env.sh') - default_shell_config_file = '$HOME/.bash_profile' - shell = os.getenv('SHELL', '') - if 'zsh' in shell: - return (default_emsdk_env, '$HOME/.zprofile') - elif 'csh' in shell: - return (sdk_path('emsdk_env.csh'), '$HOME/.cshrc') - elif 'fish' in shell: - return (sdk_path('emsdk_env.fish'), '$HOME/.config/fish/config.fish') - else: - return (default_emsdk_env, default_shell_config_file) - - -def generate_em_config(active_tools, permanently_activate, system): - cfg = 'import os\n' - cfg += "emsdk_path = os.path.dirname(os.getenv('EM_CONFIG')).replace('\\\\', '/')\n" - - # Different tools may provide the same activated configs; the latest to be - # activated is the relevant one. - activated_config = OrderedDict() - for tool in active_tools: - for name, value in tool.activated_config().items(): - activated_config[name] = value - - if 'NODE_JS' not in activated_config: - node_fallback = which('nodejs') - if not node_fallback: - node_fallback = 'node' - activated_config['NODE_JS'] = node_fallback - - for name, value in activated_config.items(): - cfg += name + " = '" + value + "'\n" - - emroot = find_emscripten_root(active_tools) - if emroot: - version = parse_emscripten_version(emroot) - # Older emscripten versions of emscripten depend on certain config - # keys that are no longer used. - # See https://github.com/emscripten-core/emscripten/pull/9469 - if version < [1, 38, 46]: - cfg += 'COMPILER_ENGINE = NODE_JS\n' - # See https://github.com/emscripten-core/emscripten/pull/9542 - if version < [1, 38, 48]: - cfg += 'JS_ENGINES = [NODE_JS]\n' - - cfg = cfg.replace("'" + EMSDK_PATH, "emsdk_path + '") - - if os.path.exists(EM_CONFIG_PATH): - backup_path = EM_CONFIG_PATH + ".old" - move_with_overwrite(EM_CONFIG_PATH, backup_path) - - with open(EM_CONFIG_PATH, "w") as text_file: - text_file.write(cfg) - - # Clear old emscripten content. - rmfile(os.path.join(EMSDK_PATH, ".emscripten_sanity")) - - path_add = get_required_path(active_tools) - - # Give some recommended next step, depending on the platform - if WINDOWS: - if not permanently_activate and not system: - print('Next steps:') - print('- Consider running `emsdk activate` with --permanent or --system') - print(' to have emsdk settings available on startup.') - else: - print('Next steps:') - print('- To conveniently access emsdk tools from the command line,') - print(' consider adding the following directories to your PATH:') - for p in path_add: - print(' ' + p) - print('- This can be done for the current shell by running:') - emsdk_env, shell_config_file = get_emsdk_shell_env_configs() - print(' source "%s"' % emsdk_env) - print('- Configure emsdk in your shell startup scripts by running:') - print(' echo \'source "%s"\' >> %s' % (emsdk_env, shell_config_file)) - - -def find_msbuild_dir(): - program_files = os.getenv('ProgramFiles', 'C:/Program Files') - program_files_x86 = os.getenv('ProgramFiles(x86)', 'C:/Program Files (x86)') - MSBUILDX86_DIR = os.path.join(program_files_x86, "MSBuild/Microsoft.Cpp/v4.0/Platforms") - MSBUILD_DIR = os.path.join(program_files, "MSBuild/Microsoft.Cpp/v4.0/Platforms") - if os.path.exists(MSBUILDX86_DIR): - return MSBUILDX86_DIR - if os.path.exists(MSBUILD_DIR): - return MSBUILD_DIR - # No MSbuild installed. - return '' - - -class Tool(object): - def __init__(self, data): - # Convert the dictionary representation of the tool in 'data' to members of - # this class for convenience. - for key, value in data.items(): - # Python2 compat, convert unicode to str - if sys.version_info < (3,) and isinstance(value, unicode): # noqa - value = value.encode('Latin-1') - setattr(self, key, value) - - # Cache the name ID of this Tool (these are read very often) - self.name = self.id - if self.version: - self.name += '-' + self.version - if hasattr(self, 'bitness'): - self.name += '-' + str(self.bitness) + 'bit' - - def __str__(self): - return self.name - - def __repr__(self): - return self.name - - def expand_vars(self, str): - if WINDOWS and '%MSBuildPlatformsDir%' in str: - str = str.replace('%MSBuildPlatformsDir%', find_msbuild_dir()) - if '%cmake_build_type_on_win%' in str: - str = str.replace('%cmake_build_type_on_win%', (decide_cmake_build_type(self) + '/') if WINDOWS else '') - if '%installation_dir%' in str: - str = str.replace('%installation_dir%', sdk_path(self.installation_dir())) - if '%generator_prefix%' in str: - str = str.replace('%generator_prefix%', cmake_generator_prefix()) - str = str.replace('%.exe%', '.exe' if WINDOWS else '') - if '%llvm_build_bin_dir%' in str: - str = str.replace('%llvm_build_bin_dir%', llvm_build_bin_dir(self)) - - return str - - # Return true if this tool requires building from source, and false if this is a precompiled tool. - def needs_compilation(self): - if hasattr(self, 'cmake_build_type'): - return True - - if hasattr(self, 'uses'): - for tool_name in self.uses: - tool = find_tool(tool_name) - if not tool: - debug_print('Tool ' + str(self) + ' depends on ' + tool_name + ' which does not exist!') - continue - if tool.needs_compilation(): - return True - - return False - - # Specifies the target path where this tool will be installed to. This could - # either be a directory or a filename (e.g. in case of node.js) - def installation_path(self): - if hasattr(self, 'install_path'): - pth = self.expand_vars(self.install_path) - return sdk_path(pth) - p = self.version - if hasattr(self, 'bitness') and (not hasattr(self, 'append_bitness') or self.append_bitness): - p += '_' + str(self.bitness) + 'bit' - return sdk_path(os.path.join(self.id, p)) - - # Specifies the target directory this tool will be installed to. - def installation_dir(self): - dir = self.installation_path() - if path_points_to_directory(dir): - return dir - else: - return os.path.dirname(dir) - - # Returns the configuration item that needs to be added to .emscripten to make - # this Tool active for the current user. - def activated_config(self): - if not hasattr(self, 'activated_cfg'): - return {} - config = OrderedDict() - expanded = to_unix_path(self.expand_vars(self.activated_cfg)) - for specific_cfg in expanded.split(';'): - name, value = specific_cfg.split('=') - config[name] = value.strip("'") - return config - - def activated_environment(self): - if hasattr(self, 'activated_env'): - return self.expand_vars(self.activated_env).split(';') - else: - return [] - - def compatible_with_this_arch(self): - if hasattr(self, 'arch'): - if self.arch != ARCH: - return False - return True - - def compatible_with_this_os(self): - if hasattr(self, 'os'): - if self.os == 'all': - return True - if self.compatible_with_this_arch() and ((WINDOWS and 'win' in self.os) or (LINUX and ('linux' in self.os or 'unix' in self.os)) or (MACOS and ('macos' in self.os or 'unix' in self.os))): - return True - else: - return False - else: - if not hasattr(self, 'macos_url') and not hasattr(self, 'windows_url') and not hasattr(self, 'unix_url') and not hasattr(self, 'linux_url'): - return True - - if MACOS and hasattr(self, 'macos_url') and self.compatible_with_this_arch(): - return True - - if LINUX and hasattr(self, 'linux_url') and self.compatible_with_this_arch(): - return True - - if WINDOWS and hasattr(self, 'windows_url') and self.compatible_with_this_arch(): - return True - - if UNIX and hasattr(self, 'unix_url'): - return True - - return hasattr(self, 'url') - - # the "version file" is a file inside install dirs that indicates the - # version installed there. this helps disambiguate when there is more than - # one version that may be installed to the same directory (which is used - # to avoid accumulating builds over time in some cases, with new builds - # overwriting the old) - def get_version_file_path(self): - return os.path.join(self.installation_path(), '.emsdk_version') - - def is_installed_version(self): - version_file_path = self.get_version_file_path() - if os.path.isfile(version_file_path): - with open(version_file_path, 'r') as version_file: - return version_file.read().strip() == self.name - return False - - def update_installed_version(self): - with open(self.get_version_file_path(), 'w') as version_file: - version_file.write(self.name + '\n') - return None - - def is_installed(self, skip_version_check=False): - # If this tool/sdk depends on other tools, require that all dependencies are - # installed for this tool to count as being installed. - if hasattr(self, 'uses'): - for tool_name in self.uses: - tool = find_tool(tool_name) - if tool is None: - errlog("Manifest error: No tool by name '" + tool_name + "' found! This may indicate an internal SDK error!") - return False - if not tool.is_installed(): - return False - - if self.download_url() is None: - # This tool does not contain downloadable elements, so it is installed by default. - return True - - content_exists = is_nonempty_directory(self.installation_path()) - - # For e.g. fastcomp clang from git repo, the activated PATH is the - # directory where the compiler is built to, and installation_path is - # the directory where the source tree exists. To distinguish between - # multiple packages sharing the same source (clang-main-32bit, - # clang-main-64bit, clang-main-32bit and clang-main-64bit each - # share the same git repo), require that in addition to the installation - # directory, each item in the activated PATH must exist. - if hasattr(self, 'activated_path') and not os.path.exists(self.expand_vars(self.activated_path)): - content_exists = False - - if hasattr(self, 'custom_is_installed_script'): - if self.custom_is_installed_script == 'is_binaryen_installed': - return is_binaryen_installed(self) - else: - raise Exception('Unknown custom_is_installed_script directive "' + self.custom_is_installed_script + '"!') - - return content_exists and (skip_version_check or self.is_installed_version()) - - def is_active(self): - if not self.is_installed(): - return False - - # All dependencies of this tool must be active as well. - deps = self.dependencies() - for tool in deps: - if not tool.is_active(): - return False - - activated_cfg = self.activated_config() - if not activated_cfg: - return len(deps) > 0 - - for key, value in activated_cfg.items(): - if key not in EM_CONFIG_DICT: - debug_print(str(self) + ' is not active, because key="' + key + '" does not exist in .emscripten') - return False - - # all paths are stored dynamically relative to the emsdk root, so - # normalize those first. - config_value = EM_CONFIG_DICT[key].replace("emsdk_path + '", "'" + EMSDK_PATH) - config_value = config_value.strip("'") - if config_value != value: - debug_print(str(self) + ' is not active, because key="' + key + '" has value "' + config_value + '" but should have value "' + value + '"') - return False - return True - - # Returns true if the system environment variables requires by this tool are currently active. - def is_env_active(self): - envs = self.activated_environment() - for env in envs: - key, value = parse_key_value(env) - if key not in os.environ or to_unix_path(os.environ[key]) != to_unix_path(value): - debug_print(str(self) + ' is not active, because environment variable key="' + key + '" has value "' + str(os.getenv(key)) + '" but should have value "' + value + '"') - return False - - if hasattr(self, 'activated_path'): - path = to_unix_path(self.expand_vars(self.activated_path)) - for p in path: - path_items = os.environ['PATH'].replace('\\', '/').split(ENVPATH_SEPARATOR) - if not normalized_contains(path_items, p): - debug_print(str(self) + ' is not active, because environment variable PATH item "' + p + '" is not present (PATH=' + os.environ['PATH'] + ')') - return False - return True - - # If this tool can be installed on this system, this function returns True. - # Otherwise, this function returns a string that describes the reason why this - # tool is not available. - def can_be_installed(self): - if hasattr(self, 'bitness'): - if self.bitness == 64 and not is_os_64bit(): - return "this tool is only provided for 64-bit OSes" - return True - - def download_url(self): - if WINDOWS and hasattr(self, 'windows_url'): - return self.windows_url - elif MACOS and hasattr(self, 'macos_url'): - return self.macos_url - elif LINUX and hasattr(self, 'linux_url'): - return self.linux_url - elif UNIX and hasattr(self, 'unix_url'): - return self.unix_url - elif hasattr(self, 'url'): - return self.url - else: - return None - - def install(self): - """Returns True if the Tool was installed of False if was skipped due to - already being installed. - """ - if self.can_be_installed() is not True: - exit_with_error("The tool '" + str(self) + "' is not available due to the reason: " + self.can_be_installed()) - - if self.id == 'sdk': - return self.install_sdk() - else: - return self.install_tool() - - def install_sdk(self): - """Returns True if any SDK component was installed of False all componented - were already installed. - """ - print("Installing SDK '" + str(self) + "'..") - installed = False - - for tool_name in self.uses: - tool = find_tool(tool_name) - if tool is None: - exit_with_error("manifest error: No tool by name '" + tool_name + "' found! This may indicate an internal SDK error!") - installed |= tool.install() - - if not installed: - print("All SDK components already installed: '" + str(self) + "'.") - return False - - if getattr(self, 'custom_install_script', None) == 'emscripten_npm_install': - # upstream tools have hardcoded paths that are not stored in emsdk_manifest.json registry - install_path = 'upstream' - emscripten_dir = os.path.join(EMSDK_PATH, install_path, 'emscripten') - # Older versions of the sdk did not include the node_modules directory - # and require `npm ci` to be run post-install - if not os.path.exists(os.path.join(emscripten_dir, 'node_modules')): - if not emscripten_npm_install(self, emscripten_dir): - exit_with_error('post-install step failed: emscripten_npm_install') - - print("Done installing SDK '" + str(self) + "'.") - return True - - def install_tool(self): - """Returns True if the SDK was installed of False if was skipped due to - already being installed. - """ - # Avoid doing a redundant reinstall of the tool, if it has already been installed. - # However all tools that are sourced directly from git branches do need to be - # installed every time when requested, since the install step is then used to git - # pull the tool to a newer version. - if self.is_installed() and not hasattr(self, 'git_branch'): - print("Skipped installing " + self.name + ", already installed.") - return False - - print("Installing tool '" + str(self) + "'..") - url = self.download_url() - - if hasattr(self, 'custom_install_script') and self.custom_install_script == 'build_llvm': - success = build_llvm(self) - elif hasattr(self, 'custom_install_script') and self.custom_install_script == 'build_ninja': - success = build_ninja(self) - elif hasattr(self, 'custom_install_script') and self.custom_install_script == 'build_ccache': - success = build_ccache(self) - elif hasattr(self, 'git_branch'): - success = git_clone_checkout_and_pull(url, self.installation_path(), self.git_branch) - elif url.endswith(ARCHIVE_SUFFIXES): - success = download_and_extract(url, self.installation_path(), - filename_prefix=getattr(self, 'download_prefix', '')) - else: - assert False, 'unhandled url type: ' + url - - if not success: - exit_with_error("installation failed!") - - if hasattr(self, 'custom_install_script'): - if self.custom_install_script == 'emscripten_npm_install': - success = emscripten_npm_install(self, self.installation_path()) - elif self.custom_install_script in ('build_llvm', 'build_ninja', 'build_ccache'): - # 'build_llvm' is a special one that does the download on its - # own, others do the download manually. - pass - elif self.custom_install_script == 'build_binaryen': - success = build_binaryen_tool(self) - else: - raise Exception('Unknown custom_install_script command "' + self.custom_install_script + '"!') - - if not success: - exit_with_error("installation failed!") - - # Install an emscripten-version.txt file if told to, and if there is one. - # (If this is not an actual release, but some other build, then we do not - # write anything.) - if hasattr(self, 'emscripten_releases_hash'): - emscripten_version_file_path = os.path.join(to_native_path(self.expand_vars(self.activated_path)), 'emscripten-version.txt') - version = get_emscripten_release_version(self.emscripten_releases_hash) - if version: - with open(emscripten_version_file_path, 'w') as f: - f.write('"%s"\n' % version) - - print("Done installing tool '" + str(self) + "'.") - - # Sanity check that the installation succeeded, and if so, remove unneeded - # leftover installation files. - if not self.is_installed(skip_version_check=True): - exit_with_error("installation of '" + str(self) + "' failed, but no error was detected. Either something went wrong with the installation, or this may indicate an internal emsdk error.") - - self.cleanup_temp_install_files() - self.update_installed_version() - return True - - def cleanup_temp_install_files(self): - if KEEP_DOWNLOADS: - return - url = self.download_url() - if url.endswith(ARCHIVE_SUFFIXES): - download_target = get_download_target(url, download_dir, getattr(self, 'download_prefix', '')) - debug_print("Deleting temporary download: " + download_target) - rmfile(download_target) - - def uninstall(self): - if not self.is_installed(): - print("Tool '" + str(self) + "' was not installed. No need to uninstall.") - return - print("Uninstalling tool '" + str(self) + "'..") - if hasattr(self, 'custom_uninstall_script'): - if self.custom_uninstall_script == 'uninstall_binaryen': - uninstall_binaryen(self) - else: - raise Exception('Unknown custom_uninstall_script directive "' + self.custom_uninstall_script + '"!') - print("Deleting path '" + self.installation_path() + "'") - remove_tree(self.installation_path()) - print("Done uninstalling '" + str(self) + "'.") - - def dependencies(self): - if not hasattr(self, 'uses'): - return [] - deps = [] - - for tool_name in self.uses: - tool = find_tool(tool_name) - if tool: - deps += [tool] - return deps - - def recursive_dependencies(self): - if not hasattr(self, 'uses'): - return [] - deps = [] - for tool_name in self.uses: - tool = find_tool(tool_name) - if tool: - deps += [tool] - deps += tool.recursive_dependencies() - return deps - - -# A global registry of all known Emscripten SDK tools available in the SDK manifest. -tools = [] -tools_map = {} - - -def add_tool(tool): - tool.is_sdk = False - tools.append(tool) - if find_tool(str(tool)): - raise Exception('Duplicate tool ' + str(tool) + '! Existing:\n{' + ', '.join("%s: %s" % item for item in vars(find_tool(str(tool))).items()) + '}, New:\n{' + ', '.join("%s: %s" % item for item in vars(tool).items()) + '}') - tools_map[str(tool)] = tool - - -# A global registry of all known SDK toolsets. -sdks = [] -sdks_map = {} - - -def add_sdk(sdk): - sdk.is_sdk = True - sdks.append(sdk) - if find_sdk(str(sdk)): - raise Exception('Duplicate sdk ' + str(sdk) + '! Existing:\n{' + ', '.join("%s: %s" % item for item in vars(find_sdk(str(sdk))).items()) + '}, New:\n{' + ', '.join("%s: %s" % item for item in vars(sdk).items()) + '}') - sdks_map[str(sdk)] = sdk - - -# N.B. In both tools and sdks list above, we take the convention that the newest -# items are at the back of the list (ascending chronological order) - -def find_tool(name): - return tools_map.get(name) - - -def find_sdk(name): - return sdks_map.get(name) - - -def is_os_64bit(): - return ARCH.endswith('64') - - -def find_latest_version(): - return resolve_sdk_aliases('latest') - - -def find_latest_hash(): - version = find_latest_version() - releases_info = load_releases_info() - return releases_info['releases'][version] - - -def resolve_sdk_aliases(name, verbose=False): - releases_info = load_releases_info() - while name in releases_info['aliases']: - if verbose: - print("Resolving SDK alias '%s' to '%s'" % (name, releases_info['aliases'][name])) - name = releases_info['aliases'][name] - return name - - -def find_latest_sdk(): - return 'sdk-releases-%s-64bit' % (find_latest_hash()) - - -def find_tot_sdk(): - debug_print('Fetching emscripten-releases repository...') - global extra_release_tag - extra_release_tag = get_emscripten_releases_tot() - return 'sdk-releases-%s-64bit' % (extra_release_tag) - - -def parse_emscripten_version(emscripten_root): - version_file = os.path.join(emscripten_root, 'emscripten-version.txt') - with open(version_file) as f: - version = f.read().strip() - version = version.strip('"').split('-')[0].split('.') - return [int(v) for v in version] - - -# Given a git hash in emscripten-releases, find the emscripten -# version for it. There may not be one if this is not the hash of -# a release, in which case we return None. -def get_emscripten_release_version(emscripten_releases_hash): - releases_info = load_releases_info() - for key, value in dict(releases_info['releases']).items(): - if value == emscripten_releases_hash: - return key.split('-')[0] - return None - - -# Get the tip-of-tree build identifier. -def get_emscripten_releases_tot(): - git_clone_checkout_and_pull(emscripten_releases_repo, sdk_path('releases'), 'main') - recent_releases = git_recent_commits(sdk_path('releases')) - # The recent releases are the latest hashes in the git repo. There - # may not be a build for the most recent ones yet; find the last - # that does. - arch = '' - if ARCH == 'arm64': - arch = '-arm64' - - def make_url(ext): - return emscripten_releases_download_url_template % ( - os_name(), - release, - arch, - ext, - ) - - for release in recent_releases: - make_url('tar.xz' if not WINDOWS else 'zip') - try: - urlopen(make_url('tar.xz' if not WINDOWS else 'zip')) - except Exception: - if not WINDOWS: - # Try the old `.tbz2` name - # TODO:remove this once tot builds are all using xz - try: - urlopen(make_url('tbz2')) - except Exception: - continue - else: - continue - return release - exit_with_error('failed to find build of any recent emsdk revision') - - -def get_release_hash(arg, releases_info): - return releases_info.get(arg, None) or releases_info.get('sdk-' + arg + '-64bit') - - -def version_key(ver): - return tuple(map(int, re.split('[._-]', ver)[:3])) - - -# A sort function that is compatible with both Python 2 and Python 3 using a -# custom comparison function. -def python_2_3_sorted(arr, cmp): - if sys.version_info >= (3,): - return sorted(arr, key=functools.cmp_to_key(cmp)) - else: - return sorted(arr, cmp=cmp) - - -def is_emsdk_sourced_from_github(): - return os.path.exists(os.path.join(EMSDK_PATH, '.git')) - - -def update_emsdk(): - if is_emsdk_sourced_from_github(): - errlog('You seem to have bootstrapped Emscripten SDK by cloning from GitHub. In this case, use "git pull" instead of "emsdk update" to update emsdk. (Not doing that automatically in case you have local changes)') - sys.exit(1) - if not download_and_extract(emsdk_zip_download_url, EMSDK_PATH, clobber=False): - sys.exit(1) - - -# Lists all legacy (pre-emscripten-releases) tagged versions directly in the Git -# repositories. These we can pull and compile from source. -def load_legacy_emscripten_tags(): - return open(sdk_path('legacy-emscripten-tags.txt'), 'r').read().split('\n') - - -def load_legacy_binaryen_tags(): - return open(sdk_path('legacy-binaryen-tags.txt'), 'r').read().split('\n') - - -def remove_prefix(s, prefix): - if s.startswith(prefix): - return s[len(prefix):] - else: - return s - - -def remove_suffix(s, suffix): - if s.endswith(suffix): - return s[:len(s) - len(suffix)] - else: - return s - - -# filename should be one of: 'llvm-precompiled-tags-32bit.txt', 'llvm-precompiled-tags-64bit.txt' -def load_file_index_list(filename): - items = open(sdk_path(filename)).read().splitlines() - items = [remove_suffix(remove_suffix(remove_prefix(x, 'emscripten-llvm-e'), '.tar.gz'), '.zip').strip() for x in items] - items = [x for x in items if 'latest' not in x and len(x) > 0] - - # Sort versions from oldest to newest (the default sort would be - # lexicographic, i.e. '1.37.1 < 1.37.10 < 1.37.2') - return sorted(items, key=version_key) - - -# Load the json info for emscripten-releases. -def load_releases_info(): - if not hasattr(load_releases_info, 'cached_info'): - try: - text = open(sdk_path('emscripten-releases-tags.json'), 'r').read() - load_releases_info.cached_info = json.loads(text) - except Exception as e: - print('Error parsing emscripten-releases-tags.json!') - exit_with_error(str(e)) - - return load_releases_info.cached_info - - -def get_installed_sdk_version(): - version_file = sdk_path(os.path.join('upstream', '.emsdk_version')) - if not os.path.exists(version_file): - return None - with open(version_file) as f: - version = f.read() - return version.split('-')[1] - - -# Get a list of tags for emscripten-releases. -def load_releases_tags(): - tags = [] - info = load_releases_info() - - for version, sha in sorted(info['releases'].items(), key=lambda x: version_key(x[0])): - tags.append(sha) - - if extra_release_tag: - tags.append(extra_release_tag) - - # Explicitly add the currently installed SDK version. This could be a custom - # version (installed explicitly) so it might not be part of the main list - # loaded above. - installed = get_installed_sdk_version() - if installed and installed not in tags: - tags.append(installed) - - return tags - - -def load_releases_versions(): - info = load_releases_info() - versions = list(info['releases'].keys()) - return versions - - -def is_string(s): - if sys.version_info[0] >= 3: - return isinstance(s, str) - return isinstance(s, basestring) # noqa - - -def load_sdk_manifest(): - try: - manifest = json.loads(open(sdk_path("emsdk_manifest.json"), "r").read()) - except Exception as e: - print('Error parsing emsdk_manifest.json!') - print(str(e)) - return - - emscripten_tags = load_legacy_emscripten_tags() - llvm_precompiled_tags_32bit = [] - llvm_precompiled_tags_64bit = load_file_index_list('llvm-tags-64bit.txt') - llvm_precompiled_tags = llvm_precompiled_tags_32bit + llvm_precompiled_tags_64bit - binaryen_tags = load_legacy_binaryen_tags() - releases_tags = load_releases_tags() - - def dependencies_exist(sdk): - for tool_name in sdk.uses: - tool = find_tool(tool_name) - if not tool: - debug_print('missing dependency: ' + tool_name) - return False - return True - - def cmp_version(ver, cmp_operand, reference): - if cmp_operand == '<=': - return version_key(ver) <= version_key(reference) - if cmp_operand == '<': - return version_key(ver) < version_key(reference) - if cmp_operand == '>=': - return version_key(ver) >= version_key(reference) - if cmp_operand == '>': - return version_key(ver) > version_key(reference) - if cmp_operand == '==': - return version_key(ver) == version_key(reference) - if cmp_operand == '!=': - return version_key(ver) != version_key(reference) - raise Exception('Invalid cmp_operand "' + cmp_operand + '"!') - - def passes_filters(param, ver, filters): - for v in filters: - if v[0] == param and not cmp_version(ver, v[1], v[2]): - return False - return True - - # A 'category parameter' is a %foo%-encoded identifier that specifies - # a class of tools instead of just one tool, e.g. %tag% - def expand_category_param(param, category_list, t, is_sdk): - for i, ver in enumerate(category_list): - if not ver.strip(): - continue - t2 = copy.copy(t) - found_param = False - for p, v in vars(t2).items(): - if is_string(v) and param in v: - t2.__dict__[p] = v.replace(param, ver) - found_param = True - if not found_param: - continue - t2.is_old = i < len(category_list) - 2 - if hasattr(t2, 'uses'): - t2.uses = [x.replace(param, ver) for x in t2.uses] - - # Filter out expanded tools by version requirements, such as ["tag", "<=", "1.37.22"] - if hasattr(t2, 'version_filter'): - passes = passes_filters(param, ver, t2.version_filter) - if not passes: - continue - - if is_sdk: - if dependencies_exist(t2): - if not find_sdk(t2.name): - add_sdk(t2) - else: - debug_print('SDK ' + str(t2) + ' already existed in manifest, not adding twice') - else: - if not find_tool(t2.name): - add_tool(t2) - else: - debug_print('Tool ' + str(t2) + ' already existed in manifest, not adding twice') - - for tool in manifest['tools']: - t = Tool(tool) - if t.compatible_with_this_os(): - if not hasattr(t, 'is_old'): - t.is_old = False - - # Expand the metapackages that refer to tags - if '%tag%' in t.version: - expand_category_param('%tag%', emscripten_tags, t, is_sdk=False) - elif '%precompiled_tag%' in t.version: - expand_category_param('%precompiled_tag%', llvm_precompiled_tags, t, is_sdk=False) - elif '%precompiled_tag32%' in t.version: - expand_category_param('%precompiled_tag32%', llvm_precompiled_tags_32bit, t, is_sdk=False) - elif '%precompiled_tag64%' in t.version: - expand_category_param('%precompiled_tag64%', llvm_precompiled_tags_64bit, t, is_sdk=False) - elif '%binaryen_tag%' in t.version: - expand_category_param('%binaryen_tag%', binaryen_tags, t, is_sdk=False) - elif '%releases-tag%' in t.version: - expand_category_param('%releases-tag%', releases_tags, t, is_sdk=False) - else: - add_tool(t) - - for sdk_str in manifest['sdks']: - sdk_str['id'] = 'sdk' - sdk = Tool(sdk_str) - if sdk.compatible_with_this_os(): - if not hasattr(sdk, 'is_old'): - sdk.is_old = False - - if '%tag%' in sdk.version: - expand_category_param('%tag%', emscripten_tags, sdk, is_sdk=True) - elif '%precompiled_tag%' in sdk.version: - expand_category_param('%precompiled_tag%', llvm_precompiled_tags, sdk, is_sdk=True) - elif '%precompiled_tag32%' in sdk.version: - expand_category_param('%precompiled_tag32%', llvm_precompiled_tags_32bit, sdk, is_sdk=True) - elif '%precompiled_tag64%' in sdk.version: - expand_category_param('%precompiled_tag64%', llvm_precompiled_tags_64bit, sdk, is_sdk=True) - elif '%releases-tag%' in sdk.version: - expand_category_param('%releases-tag%', releases_tags, sdk, is_sdk=True) - else: - add_sdk(sdk) - - -# Tests if the two given tools can be active at the same time. -# Currently only a simple check for name for same tool with different versions, -# possibly adds more logic in the future. -def can_simultaneously_activate(tool1, tool2): - return tool1.id != tool2.id - - -# Expands dependencies for each tool, and removes ones that don't exist. -def process_tool_list(tools_to_activate): - i = 0 - # Gather dependencies for each tool - while i < len(tools_to_activate): - tool = tools_to_activate[i] - deps = tool.recursive_dependencies() - tools_to_activate = tools_to_activate[:i] + deps + tools_to_activate[i:] - i += len(deps) + 1 - - for tool in tools_to_activate: - if not tool.is_installed(): - exit_with_error("error: tool is not installed and therefore cannot be activated: '%s'" % tool) - - # Remove conflicting tools - i = 0 - while i < len(tools_to_activate): - j = 0 - while j < i: - secondary_tool = tools_to_activate[j] - primary_tool = tools_to_activate[i] - if not can_simultaneously_activate(primary_tool, secondary_tool): - tools_to_activate.pop(j) - j -= 1 - i -= 1 - j += 1 - i += 1 - return tools_to_activate - - -def write_set_env_script(env_string): - assert CMD or POWERSHELL - open(EMSDK_SET_ENV, 'w').write(env_string) - - -# Reconfigure .emscripten to choose the currently activated toolset, set PATH -# and other environment variables. -# Returns the full list of deduced tools that are now active. -def set_active_tools(tools_to_activate, permanently_activate, system): - tools_to_activate = process_tool_list(tools_to_activate) - - if tools_to_activate: - tools = [x for x in tools_to_activate if not x.is_sdk] - print('Setting the following tools as active:\n ' + '\n '.join(map(lambda x: str(x), tools))) - print('') - - generate_em_config(tools_to_activate, permanently_activate, system) - - # Construct a .bat or .ps1 script that will be invoked to set env. vars and PATH - # We only do this on cmd or powershell since emsdk.bat/ps1 is able to modify the - # calling shell environment. On other shell `source emsdk_env.sh` is - # required. - if CMD or POWERSHELL: - # always set local environment variables since permanently activating will only set the registry settings and - # will not affect the current session - env_vars_to_add = get_env_vars_to_add(tools_to_activate, system, user=permanently_activate) - env_string = construct_env_with_vars(env_vars_to_add) - write_set_env_script(env_string) - - if WINDOWS and permanently_activate: - win_set_environment_variables(env_vars_to_add, system, user=permanently_activate) - - return tools_to_activate - - -def currently_active_sdk(): - for sdk in reversed(sdks): - if sdk.is_active(): - return sdk - return None - - -def currently_active_tools(): - active_tools = [] - for tool in tools: - if tool.is_active(): - active_tools += [tool] - return active_tools - - -# http://stackoverflow.com/questions/480214/how-do-you-remove-duplicates-from-a-list-in-python-whilst-preserving-order -def unique_items(seq): - seen = set() - seen_add = seen.add - return [x for x in seq if x not in seen and not seen_add(x)] - - -# Tests if a path is contained in the given list, but with separators normalized. -def normalized_contains(lst, elem): - elem = to_unix_path(elem) - for e in lst: - if elem == to_unix_path(e): - return True - return False - - -def to_msys_path(p): - p = to_unix_path(p) - new_path = re.sub(r'([a-zA-Z]):/(.*)', r'/\1/\2', p) - if len(new_path) > 3 and new_path[0] == '/' and new_path[2] == '/': - new_path = new_path[0] + new_path[1].lower() + new_path[2:] - return new_path - - -# Looks at the current PATH and adds and removes entries so that the PATH reflects -# the set of given active tools. -def adjusted_path(tools_to_activate, system=False, user=False): - # These directories should be added to PATH - path_add = get_required_path(tools_to_activate) - # These already exist. - if WINDOWS and not MSYS: - existing_path = win_get_environment_variable('PATH', system=system, user=user, fallback=True).split(ENVPATH_SEPARATOR) - else: - existing_path = os.environ['PATH'].split(ENVPATH_SEPARATOR) - - existing_emsdk_tools = [] - existing_nonemsdk_path = [] - for entry in existing_path: - if to_unix_path(entry).startswith(EMSDK_PATH): - existing_emsdk_tools.append(entry) - else: - existing_nonemsdk_path.append(entry) - - new_emsdk_tools = [] - kept_emsdk_tools = [] - for entry in path_add: - if not normalized_contains(existing_emsdk_tools, entry): - new_emsdk_tools.append(entry) - else: - kept_emsdk_tools.append(entry) - - whole_path = unique_items(new_emsdk_tools + kept_emsdk_tools + existing_nonemsdk_path) - - if MSYS: - # XXX Hack: If running native Windows Python in MSYS prompt where PATH - # entries look like "/c/Windows/System32", os.environ['PATH'] - # in Python will transform to show them as "C:\\Windows\\System32", so need - # to reconvert path delimiter back to forward slashes. - whole_path = [to_msys_path(p) for p in whole_path] - new_emsdk_tools = [to_msys_path(p) for p in new_emsdk_tools] - - separator = ':' if MSYS else ENVPATH_SEPARATOR - return (separator.join(whole_path), new_emsdk_tools) - - -def get_env_vars_to_add(tools_to_activate, system, user): - env_vars_to_add = [] - - newpath, added_path = adjusted_path(tools_to_activate, system, user) - - # Don't bother setting the path if there are no changes. - if os.environ['PATH'] != newpath: - env_vars_to_add += [('PATH', newpath)] - - if added_path: - info('Adding directories to PATH:') - for item in added_path: - info('PATH += ' + item) - info('') - - # A core variable EMSDK points to the root of Emscripten SDK directory. - env_vars_to_add += [('EMSDK', EMSDK_PATH)] - - for tool in tools_to_activate: - for env in tool.activated_environment(): - key, value = parse_key_value(env) - value = to_native_path(tool.expand_vars(value)) - env_vars_to_add += [(key, value)] - - emroot = find_emscripten_root(tools_to_activate) - if emroot: - # For older emscripten versions that don't use an embedded cache by - # default we need to export EM_CACHE. - # - # Sadly, we can't put this in the config file since those older versions - # also didn't read the `CACHE` key from the config file: - # - # History: - # - 'CACHE' config started being honored in 1.39.16 - # https://github.com/emscripten-core/emscripten/pull/11091 - # - Default to embedded cache also started in 1.39.16 - # https://github.com/emscripten-core/emscripten/pull/11126 - # - Emscripten supports automatically locating the embedded - # config in 1.39.13: - # https://github.com/emscripten-core/emscripten/pull/10935 - # - # Since setting EM_CACHE in the environment effects the entire machine - # we want to avoid this except when installing these older emscripten - # versions that really need it. - version = parse_emscripten_version(emroot) - if version < [1, 39, 16]: - em_cache_dir = os.path.join(emroot, 'cache') - env_vars_to_add += [('EM_CACHE', em_cache_dir)] - if version < [1, 39, 13]: - env_vars_to_add += [('EM_CONFIG', os.path.normpath(EM_CONFIG_PATH))] - - return env_vars_to_add - - -def construct_env(tools_to_activate, system, user): - info('Setting up EMSDK environment (suppress these messages with EMSDK_QUIET=1)') - return construct_env_with_vars(get_env_vars_to_add(tools_to_activate, system, user)) - - -def unset_env(key): - if POWERSHELL: - return 'Remove-Item env:%s\n' % key - if CMD: - return 'set %s=\n' % key - if CSH: - return 'unsetenv %s;\n' % key - if FISH: - return 'set -e %s;\n' % key - if BASH: - return 'unset %s;\n' % key - assert False - - -def construct_env_with_vars(env_vars_to_add): - env_string = '' - if env_vars_to_add: - info('Setting environment variables:') - - for key, value in env_vars_to_add: - # Don't set env vars which are already set to the correct value. - if key in os.environ and to_unix_path(os.environ[key]) == to_unix_path(value): - continue - info(key + ' = ' + value) - if POWERSHELL: - env_string += '$env:' + key + '="' + value + '"\n' - elif CMD: - env_string += 'SET ' + key + '=' + value + '\n' - elif CSH: - env_string += 'setenv ' + key + ' "' + value + '";\n' - elif FISH: - env_string += 'set -gx ' + key + ' "' + value + '";\n' - elif BASH: - env_string += 'export ' + key + '="' + value + '";\n' - else: - assert False - - if 'EMSDK_PYTHON' in env_vars_to_add: - # When using our bundled python we never want the user's - # PYTHONHOME or PYTHONPATH - # See https://github.com/emscripten-core/emsdk/issues/598 - env_string += unset_env('PYTHONHOME') - env_string += unset_env('PYTHONPATH') - - # Remove any environment variables that might have been set by old or - # inactive tools/sdks. For example, we set EM_CACHE for older versions - # of the SDK but we want to remove that from the current environment - # if no such tool is active. - # Ignore certain keys that are inputs to emsdk itself. - ignore_keys = set(['EMSDK_POWERSHELL', 'EMSDK_CSH', 'EMSDK_CMD', 'EMSDK_BASH', 'EMSDK_FISH', - 'EMSDK_NUM_CORES', 'EMSDK_NOTTY', 'EMSDK_KEEP_DOWNLOADS']) - env_keys_to_add = set(pair[0] for pair in env_vars_to_add) - for key in os.environ: - if key.startswith('EMSDK_') or key in ('EM_CACHE', 'EM_CONFIG'): - if key not in env_keys_to_add and key not in ignore_keys: - info('Clearing existing environment variable: %s' % key) - env_string += unset_env(key) - - return env_string - - -def error_on_missing_tool(name): - if name.endswith('-64bit') and not is_os_64bit(): - exit_with_error("'%s' is only provided for 64-bit OSes" % name) - else: - exit_with_error("tool or SDK not found: '%s'" % name) - - -def expand_sdk_name(name, activating): - if 'upstream-master' in name: - errlog('upstream-master SDK has been renamed main') - name = name.replace('upstream-master', 'main') - if 'fastcomp' in name: - exit_with_error('the fastcomp backend is no longer supported. Please use an older version of emsdk (for example 3.1.29) if you want to install the old fastcomp-based SDK') - if name in ('tot', 'sdk-tot', 'tot-upstream'): - if activating: - # When we are activating a tot release, assume that the currently - # installed SDK, if any, is the tot release we want to activate. - # Without this `install tot && activate tot` will race with the builders - # that are producing new builds. - installed = get_installed_sdk_version() - if installed: - debug_print('activating currently installed SDK; not updating tot version') - return 'sdk-releases-%s-64bit' % installed - return find_tot_sdk() - - if '-upstream' in name: - name = name.replace('-upstream', '') - - name = resolve_sdk_aliases(name, verbose=True) - - # check if it's a release handled by an emscripten-releases version, - # and if so use that by using the right hash. we support a few notations, - # x.y.z - # sdk-x.y.z-64bit - # TODO: support short notation for old builds too? - fullname = name - version = fullname.replace('sdk-', '').replace('releases-', '').replace('-64bit', '').replace('tag-', '') - sdk = 'sdk-' if not name.startswith('releases-') else '' - releases_info = load_releases_info()['releases'] - release_hash = get_release_hash(version, releases_info) - if release_hash: - # Known release hash - full_name = '%sreleases-%s-64bit' % (sdk, release_hash) - print("Resolving SDK version '%s' to '%s'" % (version, full_name)) - return full_name - - if len(version) == 40: - global extra_release_tag - extra_release_tag = version - return '%sreleases-%s-64bit' % (sdk, version) - - return name - - -def main(args): - if not args: - errlog("Missing command; Type 'emsdk help' to get a list of commands.") - return 1 - - debug_print('emsdk.py running under `%s`' % sys.executable) - cmd = args.pop(0) - - if cmd in ('help', '--help', '-h'): - print(' emsdk: Available commands:') - - print(''' - emsdk list [--old] [--uses] - Lists all available SDKs and tools and their - current installation status. With the --old - parameter, also historical versions are - shown. If --uses is passed, displays the - composition of different SDK packages and - dependencies. - - emsdk update - Updates emsdk to the newest version. If you have - bootstrapped emsdk via cloning directly from - GitHub, call "git pull" instead to update emsdk. - - emsdk install [options] ... - - Downloads and installs given tools or SDKs. - Options can contain: - - -j: Specifies the number of cores to use when - building the tool. Default: use one less - than the # of detected cores. - - --build=: Controls what kind of build of LLVM to - perform. Pass either 'Debug', 'Release', - 'MinSizeRel' or 'RelWithDebInfo'. Default: - 'Release'. - - --generator=: Specifies the CMake Generator to be used - during the build. Possible values are the - same as what your CMake supports and whether - the generator is valid depends on the tools - you have installed. Defaults to 'Unix Makefiles' - on *nix systems. If generator name is multiple - words, enclose with single or double quotes. - - --shallow: When installing tools from one of the git - development branches, this parameter can be - passed to perform a shallow git clone instead - of a full one. This reduces the amount of - network transfer that is needed. This option - should only be used when you are interested in - downloading one of the development branches, - but are not looking to develop Emscripten - yourself. Default: disabled, i.e. do a full - clone. - - --build-tests: If enabled, LLVM is built with internal tests - included. Pass this to enable running test - other.test_llvm_lit in the Emscripten test - suite. Default: disabled. - --enable-assertions: If specified, LLVM is built with assert() - checks enabled. Useful for development - purposes. Default: Enabled - --disable-assertions: Forces assertions off during the build. - - --vs2019/--vs2022: If building from source, overrides to build - using the specified compiler. When installing - precompiled packages, this has no effect. - Note: The same compiler specifier must be - passed to the emsdk activate command to - activate the desired version. - - Notes on building from source: - - To pass custom CMake directives when configuring - LLVM build, specify the environment variable - LLVM_CMAKE_ARGS="param1=value1,param2=value2" - in the environment where the build is invoked. - See README.md for details. - - --override-repository: Specifies the git URL to use for a given Tool. E.g. - --override-repository emscripten-main@https://github.com//emscripten/tree/ - - - emsdk uninstall - Removes the given tool or SDK from disk.''') - - if WINDOWS: - print(''' - emsdk activate [--permanent] [--system] [--build=type] [--vs2019/--vs2022] - - - Activates the given tool or SDK in the - environment of the current shell. - - - If the `--permanent` option is passed, then the environment - variables are set permanently for the current user. - - - If the `--system` option is passed, the registration - is done for all users of the system. - This needs admin privileges - (uses Machine environment variables). - - - If a custom compiler version was used to override - the compiler to use, pass the same --vs2019/--vs2022 - parameter here to choose which version to activate. - - emcmdprompt.bat - Spawns a new command prompt window with the - Emscripten environment active.''') - else: - print(''' emsdk activate [--build=type] - - - Activates the given tool or SDK in the - environment of the current shell.''') - - print(''' - Both commands 'install' and 'activate' accept an optional parameter - '--build=type', which can be used to override what kind of installation - or activation to perform. Possible values for type are Debug, Release, - MinSizeRel or RelWithDebInfo. Note: When overriding a custom build type, - be sure to match the same --build= option to both 'install' and - 'activate' commands and the invocation of 'emsdk_env', or otherwise - these commands will default to operating on the default build type - which is RelWithDebInfo.''') - - print(''' - - Environment: - EMSDK_KEEP_DOWNLOADS=1 - if you want to keep the downloaded archives. - EMSDK_NOTTY=1 - override isatty() result (mainly to log progress). - EMSDK_NUM_CORES=n - limit parallelism to n cores. - EMSDK_VERBOSE=1 - very verbose output, useful for debugging.''') - return 0 - - # Extracts a boolean command line argument from args and returns True if it was present - def extract_bool_arg(name): - if name in args: - args.remove(name) - return True - return False - - def extract_string_arg(name): - for i in range(len(args)): - if args[i] == name: - value = args[i + 1] - del args[i:i + 2] - return value - - arg_old = extract_bool_arg('--old') - arg_uses = extract_bool_arg('--uses') - arg_permanent = extract_bool_arg('--permanent') - arg_global = extract_bool_arg('--global') - arg_system = extract_bool_arg('--system') - if arg_global: - print('--global is deprecated. Use `--system` to set the environment variables for all users') - arg_system = True - if arg_system: - arg_permanent = True - if extract_bool_arg('--embedded'): - errlog('embedded mode is now the only mode available') - if extract_bool_arg('--no-embedded'): - errlog('embedded mode is now the only mode available') - return 1 - - arg_notty = extract_bool_arg('--notty') - if arg_notty: - global TTY_OUTPUT - TTY_OUTPUT = False - - # Replace meta-packages with the real package names. - if cmd in ('update', 'install', 'activate'): - activating = cmd == 'activate' - args = [expand_sdk_name(a, activating=activating) for a in args] - - load_em_config() - load_sdk_manifest() - - # Apply any overrides to git branch names to clone from. - forked_url = extract_string_arg('--override-repository') - while forked_url: - tool_name, url_and_refspec = forked_url.split('@') - t = find_tool(tool_name) - if not t: - errlog('Failed to find tool ' + tool_name + '!') - return False - else: - t.url, t.git_branch = parse_github_url_and_refspec(url_and_refspec) - debug_print('Reading git repository URL "' + t.url + '" and git branch "' + t.git_branch + '" for Tool "' + tool_name + '".') - - forked_url = extract_string_arg('--override-repository') - - # Process global args - for i in range(len(args)): - if args[i].startswith('--generator='): - build_generator = re.match(r'''^--generator=['"]?([^'"]+)['"]?$''', args[i]) - if build_generator: - global CMAKE_GENERATOR - CMAKE_GENERATOR = build_generator.group(1) - args[i] = '' - else: - errlog("Cannot parse CMake generator string: " + args[i] + ". Try wrapping generator string with quotes") - return 1 - elif args[i].startswith('--build='): - build_type = re.match(r'^--build=(.+)$', args[i]) - if build_type: - global CMAKE_BUILD_TYPE_OVERRIDE - build_type = build_type.group(1) - build_types = ['Debug', 'MinSizeRel', 'RelWithDebInfo', 'Release'] - try: - build_type_index = [x.lower() for x in build_types].index(build_type.lower()) - CMAKE_BUILD_TYPE_OVERRIDE = build_types[build_type_index] - args[i] = '' - except Exception: - errlog('Unknown CMake build type "' + build_type + '" specified! Please specify one of ' + str(build_types)) - return 1 - else: - errlog("Invalid command line parameter " + args[i] + ' specified!') - return 1 - args = [x for x in args if x] - - if cmd == 'list': - print('') - - def installed_sdk_text(name): - sdk = find_sdk(name) - return 'INSTALLED' if sdk and sdk.is_installed() else '' - - if (LINUX or MACOS or WINDOWS) and (ARCH == 'x86' or ARCH == 'x86_64'): - print('The *recommended* precompiled SDK download is %s (%s).' % (find_latest_version(), find_latest_hash())) - print() - print('To install/activate it use:') - print(' latest') - print('') - print('This is equivalent to installing/activating:') - print(' %s %s' % (find_latest_version(), installed_sdk_text(find_latest_sdk()))) - print('') - else: - print('Warning: your platform does not have precompiled SDKs available.') - print('You may install components from source.') - print('') - - print('All recent (non-legacy) installable versions are:') - releases_versions = sorted(load_releases_versions(), key=version_key, reverse=True) - releases_info = load_releases_info()['releases'] - for ver in releases_versions: - print(' %s %s' % (ver, installed_sdk_text('sdk-releases-%s-64bit' % get_release_hash(ver, releases_info)))) - print() - - # Use array to work around the lack of being able to mutate from enclosing - # function. - has_partially_active_tools = [False] - - if sdks: - def find_sdks(needs_compilation): - s = [] - for sdk in sdks: - if sdk.is_old and not arg_old: - continue - if sdk.needs_compilation() == needs_compilation: - s += [sdk] - return s - - def print_sdks(s): - for sdk in s: - installed = '\tINSTALLED' if sdk.is_installed() else '' - active = '*' if sdk.is_active() else ' ' - print(' ' + active + ' {0: <25}'.format(str(sdk)) + installed) - if arg_uses: - for dep in sdk.uses: - print(' - {0: <25}'.format(dep)) - print('') - print('The additional following precompiled SDKs are also available for download:') - print_sdks(find_sdks(False)) - - print('The following SDKs can be compiled from source:') - print_sdks(find_sdks(True)) - - if tools: - def find_tools(needs_compilation): - t = [] - for tool in tools: - if tool.is_old and not arg_old: - continue - if tool.needs_compilation() != needs_compilation: - continue - t += [tool] - return t - - def print_tools(t): - for tool in t: - if tool.is_old and not arg_old: - continue - if tool.can_be_installed() is True: - installed = '\tINSTALLED' if tool.is_installed() else '' - else: - installed = '\tNot available: ' + tool.can_be_installed() - tool_is_active = tool.is_active() - tool_is_env_active = tool_is_active and tool.is_env_active() - if tool_is_env_active: - active = ' * ' - elif tool_is_active: - active = '(*)' - has_partially_active_tools[0] = has_partially_active_tools[0] or True - else: - active = ' ' - print(' ' + active + ' {0: <25}'.format(str(tool)) + installed) - print('') - - print('The following precompiled tool packages are available for download:') - print_tools(find_tools(needs_compilation=False)) - print('The following tools can be compiled from source:') - print_tools(find_tools(needs_compilation=True)) - else: - if is_emsdk_sourced_from_github(): - print("There are no tools available. Run 'git pull' to fetch the latest set of tools.") - else: - print("There are no tools available. Run 'emsdk update' to fetch the latest set of tools.") - print('') - - print('Items marked with * are activated for the current user.') - if has_partially_active_tools[0]: - env_cmd = 'emsdk_env.bat' if WINDOWS else 'source ./emsdk_env.sh' - print('Items marked with (*) are selected for use, but your current shell environment is not configured to use them. Type "' + env_cmd + '" to set up your current shell to use them' + (', or call "emsdk activate --permanent " to permanently activate them.' if WINDOWS else '.')) - if not arg_old: - print('') - print("To access the historical archived versions, type 'emsdk list --old'") - - print('') - if is_emsdk_sourced_from_github(): - print('Run "git pull" to pull in the latest list.') - else: - print('Run "./emsdk update" to pull in the latest list.') - - return 0 - elif cmd == 'construct_env': - # Clean up old temp file up front, in case of failure later before we get - # to write out the new one. - tools_to_activate = currently_active_tools() - tools_to_activate = process_tool_list(tools_to_activate) - env_string = construct_env(tools_to_activate, arg_system, arg_permanent) - if CMD or POWERSHELL: - write_set_env_script(env_string) - else: - sys.stdout.write(env_string) - return 0 - elif cmd == 'update': - update_emsdk() - if WINDOWS: - # Clean up litter after old emsdk update which may have left this temp - # file around. - rmfile(sdk_path(EMSDK_SET_ENV)) - return 0 - elif cmd == 'update-tags': - errlog('`update-tags` is not longer needed. To install the latest tot release just run `install tot`') - return 0 - elif cmd == 'activate': - if arg_permanent: - print('Registering active Emscripten environment permanently') - print('') - - tools_to_activate = currently_active_tools() - for arg in args: - tool = find_tool(arg) - if tool is None: - tool = find_sdk(arg) - if tool is None: - error_on_missing_tool(arg) - tools_to_activate += [tool] - if not tools_to_activate: - errlog('No tools/SDKs specified to activate! Usage:\n emsdk activate tool/sdk1 [tool/sdk2] [...]') - return 1 - active_tools = set_active_tools(tools_to_activate, permanently_activate=arg_permanent, system=arg_system) - if not active_tools: - errlog('No tools/SDKs found to activate! Usage:\n emsdk activate tool/sdk1 [tool/sdk2] [...]') - return 1 - if WINDOWS and not arg_permanent: - errlog('The changes made to environment variables only apply to the currently running shell instance. Use the \'emsdk_env.bat\' to re-enter this environment later, or if you\'d like to register this environment permanently, rerun this command with the option --permanent.') - return 0 - elif cmd == 'install': - global BUILD_FOR_TESTING, ENABLE_LLVM_ASSERTIONS, CPU_CORES, GIT_CLONE_SHALLOW - - # Process args - for i in range(len(args)): - if args[i].startswith('-j'): - multicore = re.match(r'^-j(\d+)$', args[i]) - if multicore: - CPU_CORES = int(multicore.group(1)) - args[i] = '' - else: - errlog("Invalid command line parameter " + args[i] + ' specified!') - return 1 - elif args[i] == '--shallow': - GIT_CLONE_SHALLOW = True - args[i] = '' - elif args[i] == '--build-tests': - BUILD_FOR_TESTING = True - args[i] = '' - elif args[i] == '--enable-assertions': - ENABLE_LLVM_ASSERTIONS = 'ON' - args[i] = '' - elif args[i] == '--disable-assertions': - ENABLE_LLVM_ASSERTIONS = 'OFF' - args[i] = '' - args = [x for x in args if x] - if not args: - errlog("Missing parameter. Type 'emsdk install ' to install a tool or an SDK. Type 'emsdk list' to obtain a list of available tools. Type 'emsdk install latest' to automatically install the newest version of the SDK.") - return 1 - - if LINUX and ARCH == 'arm64' and args != ['latest']: - errlog('WARNING: arm64-linux binaries are not available for all releases.') - errlog('See https://github.com/emscripten-core/emsdk/issues/547') - - for t in args: - tool = find_tool(t) - if tool is None: - tool = find_sdk(t) - if tool is None: - error_on_missing_tool(t) - tool.install() - return 0 - elif cmd == 'uninstall': - if not args: - errlog("Syntax error. Call 'emsdk uninstall '. Call 'emsdk list' to obtain a list of available tools.") - return 1 - tool = find_tool(args[0]) - if tool is None: - errlog("Error: Tool by name '" + args[0] + "' was not found.") - return 1 - tool.uninstall() - return 0 - - errlog("Unknown command '" + cmd + "' given! Type 'emsdk help' to get a list of commands.") - return 1 - - -if __name__ == '__main__': - try: - sys.exit(main(sys.argv[1:])) - except KeyboardInterrupt: - exit_with_error('aborted by user, exiting') - sys.exit(1) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.bat b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.bat deleted file mode 100644 index c793321..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.bat +++ /dev/null @@ -1 +0,0 @@ -@call "%~dp0emsdk" construct_env diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.csh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.csh deleted file mode 100644 index 187d4c5..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.csh +++ /dev/null @@ -1,30 +0,0 @@ -# This script is sourced by the user and uses -# their shell. Try not to use tcshisms. - -# Do not execute this script without sourcing, -# because it won't have any effect then. -# That is, always run this script with -# -# source ./emsdk_env.csh -# -# instead of just plainly running with -# -# ./emsdk_env.csh -# -# which won't have any effect. -set SRC=($_) -if ("$SRC" == "") then - set SRC="$0" -else - set SRC="$SRC[1]" -endif -set CURDIR=`pwd` -setenv DIR `dirname "$SRC"` -unset SRC - -setenv EMSDK_CSH 1 - -eval `$DIR/emsdk construct_env` -unsetenv DIR - -unsetenv EMSDK_CSH diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.fish b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.fish deleted file mode 100644 index fbd3a06..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.fish +++ /dev/null @@ -1,14 +0,0 @@ -#In your Fish configuration, add this line: -#alias emsdk_setup ". /path/to/emsdk/emsdk_env.fish" -#Now, when you want to use the SDK, run this alias first to set up -#your environment. - -set -gx EMSDK_FISH 1 - -set -l script (status -f) -set -l dir (dirname $script) - -eval ($dir/emsdk construct_env) - -set -e -l script -set -e -l dir diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.ps1 b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.ps1 deleted file mode 100644 index ab5fc4d..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -$ScriptDirectory = Split-Path -parent $PSCommandPath -& "$ScriptDirectory/emsdk.ps1" construct_env diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.sh deleted file mode 100644 index 75229e2..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_env.sh +++ /dev/null @@ -1,73 +0,0 @@ -# This script is sourced by the user and uses -# their shell. -# -# This script tries to find its location but -# this does not work in every shell. -# -# It is known to work in bash, zsh and ksh -# -# Do not execute this script without sourcing, -# because it won't have any effect then. -# That is, always run this script with -# -# . /path/to/emsdk_env.sh -# -# or -# -# source /path/to/emsdk_env.sh -# -# instead of just plainly running with -# -# ./emsdk_env.sh -# -# which won't have any effect. - -CURRENT_SCRIPT= -DIR="." - -# use shell specific method to get the path -# to the current file being source'd. -# -# To add a shell, add another conditional below, -# then add tests to scripts/test_source_env.sh - -if [ -n "${BASH_SOURCE-}" ]; then - CURRENT_SCRIPT="$BASH_SOURCE" -elif [ -n "${ZSH_VERSION-}" ]; then - CURRENT_SCRIPT="${(%):-%x}" -elif [ -n "${KSH_VERSION-}" ]; then - CURRENT_SCRIPT=${.sh.file} -fi - -if [ -n "${CURRENT_SCRIPT-}" ]; then - DIR=$(dirname "$CURRENT_SCRIPT") - if [ -h "$CURRENT_SCRIPT" ]; then - # Now work out actual DIR since this is part of a symlink. - # Since we can't be sure that readlink or realpath - # are available, use tools more likely to be installed. - # (This will still fail if sed is not available.) - SYMDIR=$(dirname "$(ls -l "$CURRENT_SCRIPT" | sed -n "s/.*-> //p")") - if [ -z "$SYMDIR" ]; then - SYMDIR="." - fi - FULLDIR="$DIR/$SYMDIR" - DIR=$(cd "$FULLDIR" > /dev/null 2>&1; /bin/pwd) - unset SYMDIR - unset FULLDIR - fi -fi -unset CURRENT_SCRIPT - -if [ ! -f "$DIR/emsdk.py" ]; then - echo "Error: unable to determine 'emsdk' directory. Perhaps you are using a shell or" 1>&2 - echo " environment that this script does not support." 1>&2 - echo 1>&2 - echo "A possible solution is to source this script while in the 'emsdk' directory." 1>&2 - echo 1>&2 - unset DIR - return -fi - -# Force emsdk to use bash syntax so that this works in windows + bash too -eval `EMSDK_BASH=1 "$DIR/emsdk" construct_env` -unset DIR diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_manifest.json b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_manifest.json deleted file mode 100644 index fd43f59..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/emsdk_manifest.json +++ /dev/null @@ -1,405 +0,0 @@ -{ - "tools": [ - { - "id": "llvm-git", - "version": "main", - "bitness": 32, - "install_path": "llvm/git", - "git_branch": "main", - "url": "https://github.com/llvm/llvm-project.git", - "custom_install_script": "build_llvm", - "only_supports_wasm": true, - "activated_path": "%installation_dir%/%llvm_build_bin_dir%", - "activated_cfg": "LLVM_ROOT='%installation_dir%/%llvm_build_bin_dir%'", - "activated_env": "LLVM_ROOT=%installation_dir%/%llvm_build_bin_dir%;EMCC_WASM_BACKEND=1", - "cmake_build_type": "Release" - }, - { - "id": "llvm-git", - "version": "main", - "bitness": 64, - "install_path": "llvm/git", - "git_branch": "main", - "url": "https://github.com/llvm/llvm-project.git", - "custom_install_script": "build_llvm", - "only_supports_wasm": true, - "activated_path": "%installation_dir%/%llvm_build_bin_dir%", - "activated_cfg": "LLVM_ROOT='%installation_dir%/%llvm_build_bin_dir%'", - "activated_env": "LLVM_ROOT=%installation_dir%/%llvm_build_bin_dir%;EMCC_WASM_BACKEND=1", - "cmake_build_type": "Release" - }, - - { - "id": "releases", - "version": "%releases-tag%", - "bitness": 64, - "arch": "x86_64", - "linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries.tar.xz", - "macos_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries.tar.xz", - "windows_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/%releases-tag%/wasm-binaries.zip", - "download_prefix": "%releases-tag%-", - "install_path": "upstream", - "activated_path": "%installation_dir%/emscripten", - "activated_cfg": "LLVM_ROOT='%installation_dir%/bin';BINARYEN_ROOT='%installation_dir%';EMSCRIPTEN_ROOT='%installation_dir%/emscripten'", - "emscripten_releases_hash": "%releases-tag%" - }, - { - "id": "releases", - "version": "%releases-tag%", - "bitness": 64, - "arch": "arm64", - "macos_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries-arm64.tar.xz", - "linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries-arm64.tar.xz", - "download_prefix": "%releases-tag%-", - "install_path": "upstream", - "activated_path": "%installation_dir%/emscripten", - "activated_cfg": "LLVM_ROOT='%installation_dir%/bin';BINARYEN_ROOT='%installation_dir%';EMSCRIPTEN_ROOT='%installation_dir%/emscripten'", - "emscripten_releases_hash": "%releases-tag%" - }, - - { - "id": "node", - "version": "18.20.3", - "bitness": 32, - "arch": "x86", - "windows_url": "node-v18.20.3-win-x86.zip", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "18.20.3", - "arch": "arm", - "bitness": 32, - "linux_url": "node-v18.20.3-linux-armv7l.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "18.20.3", - "bitness": 64, - "arch": "x86_64", - "macos_url": "node-v18.20.3-darwin-x64.tar.gz", - "windows_url": "node-v18.20.3-win-x64.zip", - "linux_url": "node-v18.20.3-linux-x64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "18.20.3", - "arch": "arm64", - "bitness": 64, - "macos_url": "node-v18.20.3-darwin-arm64.tar.gz", - "linux_url": "node-v18.20.3-linux-arm64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - - - { - "id": "node", - "version": "20.18.0", - "bitness": 32, - "arch": "x86", - "windows_url": "node-v20.18.0-win-x86.zip", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "20.18.0", - "arch": "arm", - "bitness": 32, - "linux_url": "node-v20.18.0-linux-armv7l.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "20.18.0", - "bitness": 64, - "arch": "x86_64", - "macos_url": "node-v20.18.0-darwin-x64.tar.gz", - "windows_url": "node-v20.18.0-win-x64.zip", - "linux_url": "node-v20.18.0-linux-x64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "20.18.0", - "arch": "arm64", - "bitness": 64, - "windows_url": "node-v20.18.0-win-arm64.zip", - "macos_url": "node-v20.18.0-darwin-arm64.tar.gz", - "linux_url": "node-v20.18.0-linux-arm64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - - - { - "id": "python", - "version": "3.9.2-nuget", - "bitness": 64, - "arch": "x86_64", - "windows_url": "python-3.9.2-4-amd64+pywin32.zip", - "activated_cfg": "PYTHON='%installation_dir%/python.exe'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" - }, - { - "id": "python", - "version": "3.9.2", - "bitness": 64, - "arch": "x86_64", - "windows_url": "python-3.9.2-1-embed-amd64+pywin32.zip", - "activated_cfg": "PYTHON='%installation_dir%/python.exe'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" - }, - { - "id": "python", - "version": "3.9.2", - "bitness": 64, - "arch": "x86_64", - "macos_url": "python-3.9.2-3-macos-x86_64.tar.gz", - "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.9/site-packages/certifi/cacert.pem" - }, - { - "id": "python", - "version": "3.9.2", - "bitness": 64, - "arch": "arm64", - "macos_url": "python-3.9.2-1-macos-arm64.tar.gz", - "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.9/site-packages/certifi/cacert.pem" - }, - { - "id": "emscripten", - "version": "tag-%tag%", - "bitness": 32, - "append_bitness": false, - "windows_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.zip", - "unix_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.tar.gz", - "download_prefix": "emscripten-e", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%", - "custom_install_script": "emscripten_npm_install" - }, - { - "id": "emscripten", - "version": "tag-%tag%", - "bitness": 64, - "append_bitness": false, - "windows_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.zip", - "unix_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.tar.gz", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%", - "custom_install_script": "emscripten_npm_install" - }, - { - "id": "emscripten", - "version": "%precompiled_tag%", - "windows_url": "https://github.com/emscripten-core/emscripten/archive/%precompiled_tag%.zip", - "unix_url": "https://github.com/emscripten-core/emscripten/archive/%precompiled_tag%.tar.gz", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%" - }, - { - "id": "binaryen", - "version": "tag-%binaryen_tag%", - "bitness": 32, - "append_bitness": false, - "windows_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.zip", - "unix_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.tar.gz", - "download_prefix": "binaryen-e", - "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_64bit_binaryen'", - "activated_path": "%installation_dir%%generator_prefix%_64bit_binaryen/bin", - "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_64bit_binaryen", - "cmake_build_type": "Release", - "custom_install_script": "build_binaryen", - "custom_is_installed_script": "is_binaryen_installed", - "custom_uninstall_script": "uninstall_binaryen" - }, - { - "id": "binaryen", - "version": "tag-%binaryen_tag%", - "bitness": 64, - "append_bitness": false, - "windows_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.zip", - "unix_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.tar.gz", - "download_prefix": "binaryen-e", - "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_64bit_binaryen'", - "activated_path": "%installation_dir%%generator_prefix%_64bit_binaryen/bin", - "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_64bit_binaryen", - "cmake_build_type": "Release", - "custom_install_script": "build_binaryen", - "custom_is_installed_script": "is_binaryen_installed", - "custom_uninstall_script": "uninstall_binaryen" - }, - { - "id": "emscripten", - "version": "main", - "bitness": 32, - "append_bitness": false, - "url": "https://github.com/emscripten-core/emscripten.git", - "git_branch": "main", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%", - "cmake_build_type": "Release", - "custom_install_script": "emscripten_npm_install" - }, - { - "id": "emscripten", - "version": "main", - "bitness": 64, - "append_bitness": false, - "url": "https://github.com/emscripten-core/emscripten.git", - "git_branch": "main", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%", - "cmake_build_type": "Release", - "custom_install_script": "emscripten_npm_install" - }, - { - "id": "binaryen", - "version": "main", - "bitness": 32, - "append_bitness": false, - "url": "https://github.com/WebAssembly/binaryen.git", - "git_branch": "main", - "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_32bit_binaryen'", - "activated_path": "%installation_dir%%generator_prefix%_32bit_binaryen/bin", - "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_32bit_binaryen", - "cmake_build_type": "Release", - "custom_install_script": "build_binaryen", - "custom_is_installed_script": "is_binaryen_installed", - "custom_uninstall_script": "uninstall_binaryen" - }, - { - "id": "binaryen", - "version": "main", - "bitness": 64, - "append_bitness": false, - "url": "https://github.com/WebAssembly/binaryen.git", - "git_branch": "main", - "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_64bit_binaryen'", - "activated_path": "%installation_dir%%generator_prefix%_64bit_binaryen/bin", - "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_64bit_binaryen", - "cmake_build_type": "Release", - "custom_install_script": "build_binaryen", - "custom_is_installed_script": "is_binaryen_installed", - "custom_uninstall_script": "uninstall_binaryen" - }, - { - "id": "mingw", - "version": "7.1.0", - "bitness": 64, - "windows_url": "mingw_7.1.0_64bit.zip", - "activated_cfg": "MINGW_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%/bin" - }, - { - "id": "ninja", - "version": "git-release", - "bitness": 64, - "url": "https://github.com/ninja-build/ninja.git", - "git_branch": "release", - "activated_cfg": "NINJA=%installation_dir%/bin", - "activated_path": "%installation_dir%/bin", - "cmake_build_type": "Release", - "custom_install_script": "build_ninja" - }, - { - "id": "ccache", - "version": "git-emscripten", - "bitness": 64, - "url": "https://github.com/juj/ccache.git", - "git_branch": "emscripten", - "activated_path": "%installation_dir%/bin", - "activated_env": "_EMCC_CCACHE=1;CCACHE_CONFIGPATH=%installation_dir%/emcc_ccache.conf", - "cmake_build_type": "Release", - "custom_install_script": "build_ccache" - } - ], - - "sdks": [ - { - "version": "main", - "bitness": 64, - "uses": ["python-3.9.2-nuget-64bit", "llvm-git-main-64bit", "node-20.18.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], - "os": "win" - }, - { - "version": "main", - "bitness": 64, - "uses": ["python-3.9.2-64bit", "llvm-git-main-64bit", "node-20.18.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], - "os": "macos" - }, - { - "version": "main", - "bitness": 64, - "uses": ["llvm-git-main-64bit", "node-20.18.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], - "os": "linux" - }, - { - "version": "main", - "bitness": 32, - "uses": ["llvm-git-main-32bit", "emscripten-main-32bit", "binaryen-main-32bit"], - "os": "linux" - }, - { - "version": "releases-%releases-tag%", - "bitness": 64, - "uses": ["node-20.18.0-64bit", "releases-%releases-tag%-64bit"], - "os": "linux", - "custom_install_script": "emscripten_npm_install" - }, - { - "version": "releases-%releases-tag%", - "bitness": 64, - "uses": ["node-20.18.0-64bit", "python-3.9.2-64bit", "releases-%releases-tag%-64bit"], - "os": "macos", - "arch": "x86_64", - "custom_install_script": "emscripten_npm_install" - }, - { - "version": "releases-%releases-tag%", - "bitness": 64, - "uses": ["node-20.18.0-64bit", "python-3.9.2-64bit", "releases-%releases-tag%-64bit"], - "os": "macos", - "arch": "arm64", - "custom_install_script": "emscripten_npm_install" - }, - { - "version": "releases-%releases-tag%", - "bitness": 64, - "uses": ["node-20.18.0-64bit", "python-3.9.2-nuget-64bit", "releases-%releases-tag%-64bit"], - "os": "win", - "custom_install_script": "emscripten_npm_install" - } - ] -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/legacy-binaryen-tags.txt b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/legacy-binaryen-tags.txt deleted file mode 100644 index 06d436c..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/legacy-binaryen-tags.txt +++ /dev/null @@ -1,86 +0,0 @@ -1.36.2 -1.36.3 -1.36.4 -1.36.5 -1.36.6 -1.36.7 -1.36.8 -1.36.9 -1.36.10 -1.36.11 -1.36.12 -1.36.13 -1.36.14 -1.37.0 -1.37.1 -1.37.2 -1.37.3 -1.37.4 -1.37.5 -1.37.6 -1.37.7 -1.37.8 -1.37.9 -1.37.10 -1.37.11 -1.37.12 -1.37.13 -1.37.14 -1.37.15 -1.37.16 -1.37.17 -1.37.18 -1.37.19 -1.37.20 -1.37.21 -1.37.22 -1.37.23 -1.37.24 -1.37.25 -1.37.26 -1.37.27 -1.37.28 -1.37.29 -1.37.30 -1.37.31 -1.37.32 -1.37.33 -1.37.34 -1.37.35 -1.37.36 -1.37.37 -1.37.38 -1.37.39 -1.37.40 -1.38.0 -1.38.1 -1.38.2 -1.38.3 -1.38.4 -1.38.5 -1.38.6 -1.38.7 -1.38.8 -1.38.9 -1.38.10 -1.38.11 -1.38.12 -1.38.13 -1.38.14 -1.38.15 -1.38.16 -1.38.17 -1.38.18 -1.38.19 -1.38.20 -1.38.21 -1.38.22 -1.38.23 -1.38.24 -1.38.25 -1.38.26 -1.38.27 -1.38.28 -1.38.29 -1.38.30 -1.38.31 \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/legacy-emscripten-tags.txt b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/legacy-emscripten-tags.txt deleted file mode 100644 index 2006929..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/legacy-emscripten-tags.txt +++ /dev/null @@ -1,159 +0,0 @@ -1.28.2 -1.28.3 -1.29.0 -1.29.1 -1.29.2 -1.29.3 -1.29.4 -1.29.5 -1.29.6 -1.29.7 -1.29.8 -1.29.9 -1.29.10 -1.29.11 -1.29.12 -1.30.0 -1.30.1 -1.30.2 -1.30.3 -1.30.4 -1.30.5 -1.30.6 -1.31.0 -1.31.1 -1.31.2 -1.31.3 -1.32.0 -1.32.1 -1.32.2 -1.32.3 -1.32.4 -1.33.0 -1.33.1 -1.33.2 -1.34.0 -1.34.1 -1.34.2 -1.34.3 -1.34.4 -1.34.5 -1.34.6 -1.34.7 -1.34.8 -1.34.9 -1.34.10 -1.34.11 -1.34.12 -1.35.0 -1.35.1 -1.35.2 -1.35.3 -1.35.4 -1.35.5 -1.35.6 -1.35.7 -1.35.8 -1.35.9 -1.35.10 -1.35.11 -1.35.12 -1.35.13 -1.35.14 -1.35.15 -1.35.16 -1.35.17 -1.35.18 -1.35.19 -1.35.20 -1.35.21 -1.35.22 -1.35.23 -1.36.0 -1.36.1 -1.36.2 -1.36.3 -1.36.4 -1.36.5 -1.36.6 -1.36.7 -1.36.8 -1.36.9 -1.36.10 -1.36.11 -1.36.12 -1.36.13 -1.36.14 -1.37.0 -1.37.1 -1.37.2 -1.37.3 -1.37.4 -1.37.5 -1.37.6 -1.37.7 -1.37.8 -1.37.9 -1.37.10 -1.37.11 -1.37.12 -1.37.13 -1.37.14 -1.37.15 -1.37.16 -1.37.17 -1.37.18 -1.37.19 -1.37.20 -1.37.21 -1.37.22 -1.37.23 -1.37.24 -1.37.25 -1.37.26 -1.37.27 -1.37.28 -1.37.29 -1.37.30 -1.37.31 -1.37.32 -1.37.33 -1.37.34 -1.37.35 -1.37.36 -1.37.37 -1.37.38 -1.37.39 -1.37.40 -1.38.0 -1.38.1 -1.38.2 -1.38.3 -1.38.4 -1.38.5 -1.38.6 -1.38.7 -1.38.8 -1.38.9 -1.38.10 -1.38.11 -1.38.12 -1.38.13 -1.38.14 -1.38.15 -1.38.16 -1.38.17 -1.38.18 -1.38.19 -1.38.20 -1.38.21 -1.38.22 -1.38.23 -1.38.24 -1.38.25 -1.38.26 -1.38.27 -1.38.28 -1.38.29 -1.38.30 -1.38.31 \ No newline at end of file diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/llvm-tags-64bit.txt b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/llvm-tags-64bit.txt deleted file mode 100644 index 7920f38..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/llvm-tags-64bit.txt +++ /dev/null @@ -1,75 +0,0 @@ -emscripten-llvm-e1.38.9.tar.gz -emscripten-llvm-e1.38.8.tar.gz -emscripten-llvm-e1.38.7.tar.gz -emscripten-llvm-e1.38.6.tar.gz -emscripten-llvm-e1.38.5.tar.gz -emscripten-llvm-e1.38.4.tar.gz -emscripten-llvm-e1.38.31.tar.gz -emscripten-llvm-e1.38.30.tar.gz -emscripten-llvm-e1.38.3.tar.gz -emscripten-llvm-e1.38.29.tar.gz -emscripten-llvm-e1.38.28.tar.gz -emscripten-llvm-e1.38.27.tar.gz -emscripten-llvm-e1.38.26.tar.gz -emscripten-llvm-e1.38.25.tar.gz -emscripten-llvm-e1.38.24.tar.gz -emscripten-llvm-e1.38.23.tar.gz -emscripten-llvm-e1.38.22.tar.gz -emscripten-llvm-e1.38.21.tar.gz -emscripten-llvm-e1.38.20.tar.gz -emscripten-llvm-e1.38.2.tar.gz -emscripten-llvm-e1.38.19.tar.gz -emscripten-llvm-e1.38.18.tar.gz -emscripten-llvm-e1.38.17.tar.gz -emscripten-llvm-e1.38.16.tar.gz -emscripten-llvm-e1.38.15.tar.gz -emscripten-llvm-e1.38.14.tar.gz -emscripten-llvm-e1.38.13.tar.gz -emscripten-llvm-e1.38.12.tar.gz -emscripten-llvm-e1.38.11.tar.gz -emscripten-llvm-e1.38.10.tar.gz -emscripten-llvm-e1.38.1.tar.gz -emscripten-llvm-e1.38.0.tar.gz -emscripten-llvm-e1.37.9.tar.gz -emscripten-llvm-e1.37.8.tar.gz -emscripten-llvm-e1.37.7.tar.gz -emscripten-llvm-e1.37.6.tar.gz -emscripten-llvm-e1.37.5.tar.gz -emscripten-llvm-e1.37.40.tar.gz -emscripten-llvm-e1.37.4.tar.gz -emscripten-llvm-e1.37.39.tar.gz -emscripten-llvm-e1.37.38.tar.gz -emscripten-llvm-e1.37.37.tar.gz -emscripten-llvm-e1.37.36.tar.gz -emscripten-llvm-e1.37.35.tar.gz -emscripten-llvm-e1.37.34.tar.gz -emscripten-llvm-e1.37.33.tar.gz -emscripten-llvm-e1.37.32.tar.gz -emscripten-llvm-e1.37.31.tar.gz -emscripten-llvm-e1.37.30.tar.gz -emscripten-llvm-e1.37.3.tar.gz -emscripten-llvm-e1.37.29.tar.gz -emscripten-llvm-e1.37.28.tar.gz -emscripten-llvm-e1.37.27.tar.gz -emscripten-llvm-e1.37.26.tar.gz -emscripten-llvm-e1.37.25.tar.gz -emscripten-llvm-e1.37.24.tar.gz -emscripten-llvm-e1.37.23.tar.gz -emscripten-llvm-e1.37.22.tar.gz -emscripten-llvm-e1.37.21.tar.gz -emscripten-llvm-e1.37.20.tar.gz -emscripten-llvm-e1.37.2.tar.gz -emscripten-llvm-e1.37.19.tar.gz -emscripten-llvm-e1.37.18.tar.gz -emscripten-llvm-e1.37.17.tar.gz -emscripten-llvm-e1.37.16.tar.gz -emscripten-llvm-e1.37.15.tar.gz -emscripten-llvm-e1.37.14.tar.gz -emscripten-llvm-e1.37.13.tar.gz -emscripten-llvm-e1.37.12.tar.gz -emscripten-llvm-e1.37.11.tar.gz -emscripten-llvm-e1.37.10.tar.gz -emscripten-llvm-e1.37.1.tar.gz -emscripten-llvm-e1.37.0.tar.gz -emscripten-llvm-e1.36.14.tar.gz -emscripten-llvm-e1.36.13.tar.gz diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/create_release.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/create_release.py deleted file mode 100755 index 425f7d7..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/create_release.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import json -import os -import re -import subprocess -import sys -from collections import OrderedDict - -script_dir = os.path.dirname(os.path.abspath(__file__)) -root_dir = os.path.dirname(script_dir) -sys.path.append(root_dir) - -import emsdk # noqa - - -def version_key(version_string): - parts = re.split('[.-]', version_string) - key = [[int(part) for part in parts[:3]], -len(parts), parts[3:]] - return key - - -def main(): - if subprocess.check_output(['git', 'status', '--porcelain'], cwd=root_dir).strip(): - print('tree is not clean') - sys.exit(1) - - parser = argparse.ArgumentParser() - parser.add_argument('-r', '--release-hash') - parser.add_argument('-a', '--asserts-hash') - parser.add_argument('-v', '--new-version') - parser.add_argument('--gh-action', action='store_true') - options = parser.parse_args() - - release_info = emsdk.load_releases_info() - if options.new_version: - new_version = options.new_version - else: - new_version = version_key(release_info['aliases']['latest'])[0] - new_version[-1] += 1 - new_version = '.'.join(str(part) for part in new_version) - - asserts_hash = None - if options.release_hash: - new_hash = options.release_hash - asserts_hash = options.asserts_hash - else: - new_hash = emsdk.get_emscripten_releases_tot() - - print('Creating new release: %s -> %s' % (new_version, new_hash)) - release_info['releases'][new_version] = new_hash - if asserts_hash: - asserts_name = new_version + '-asserts' - release_info['releases'][asserts_name] = asserts_hash - - releases = [(k, v) for k, v in release_info['releases'].items()] - releases.sort(key=lambda pair: version_key(pair[0])) - - release_info['releases'] = OrderedDict(reversed(releases)) - release_info['aliases']['latest'] = new_version - - with open(os.path.join(root_dir, 'emscripten-releases-tags.json'), 'w') as f: - f.write(json.dumps(release_info, indent=2)) - f.write('\n') - - subprocess.check_call( - [sys.executable, os.path.join(script_dir, 'update_bazel_workspace.py')], - cwd=root_dir) - - branch_name = 'version_' + new_version - - if options.gh_action: # For GitHub Actions workflows - with open(os.environ['GITHUB_ENV'], 'a') as f: - f.write(f'RELEASE_VERSION={new_version}') - else: # Local use - # Create a new git branch - subprocess.check_call(['git', 'checkout', '-b', branch_name, 'origin/main'], cwd=root_dir) - - # Create auto-generated changes to the new git branch - subprocess.check_call(['git', 'add', '-u', '.'], cwd=root_dir) - subprocess.check_call(['git', 'commit', '-m', new_version], cwd=root_dir) - print('New release created in branch: `%s`' % branch_name) - - # Push new branch to origin - subprocess.check_call(['git', 'push', 'origin', branch_name], cwd=root_dir) - - return 0 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/get_emscripten_revision_info.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/get_emscripten_revision_info.py deleted file mode 100755 index d0ad76e..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/get_emscripten_revision_info.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python3 - -import json -import os -import subprocess -import sys - -EMSCRIPTEN_RELEASES_GIT = 'https://chromium.googlesource.com/emscripten-releases' -TAGFILE = 'emscripten-releases-tags.json' - - -def get_latest_hash(tagfile): - with open(tagfile) as f: - versions = json.load(f) - latest = versions['aliases']['latest'] - return versions['releases'][latest] - - -def get_latest_emscripten(tagfile): - latest = get_latest_hash(tagfile) - if not os.path.isdir('emscripten-releases'): - subprocess.run(['git', 'clone', EMSCRIPTEN_RELEASES_GIT, '--depth', - '100'], check=True) - # This will fail if the 'latest' revision is not within the most recent - # 100 commits; but that shouldn't happen because this script is intended - # to be run right after a release is added. - info = subprocess.run(['emscripten-releases/src/release-info.py', - 'emscripten-releases', latest], - stdout=subprocess.PIPE, check=True, text=True).stdout - for line in info.split('\n'): - tokens = line.split() - if len(tokens) and tokens[0] == 'emscripten': - return tokens[2] - - -if __name__ == '__main__': - emscripten_hash = get_latest_emscripten(TAGFILE) - print('Emscripten revision ' + emscripten_hash) - if 'GITHUB_ENV' in os.environ: - with open(os.environ['GITHUB_ENV'], 'a') as f: - f.write(f'EMSCRIPTEN_HASH={emscripten_hash}') - sys.exit(0) - print('Not a GitHub Action') - sys.exit(1) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/get_release_info.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/get_release_info.py deleted file mode 100755 index 016a0ae..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/get_release_info.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python3 - -import json -import sys - - -def get_latest(tagfile): - with open(tagfile) as f: - versions = json.load(f) - print(versions['aliases']['latest']) - return 0 - - -def get_hash(tagfile, version): - with open(tagfile) as f: - versions = json.load(f) - print(versions['releases'][version]) - return 0 - - -if __name__ == '__main__': - if sys.argv[2] == 'latest': - sys.exit(get_latest(sys.argv[1])) - if sys.argv[2] == 'hash': - sys.exit(get_hash(sys.argv[1], sys.argv[3])) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/update_bazel_workspace.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/update_bazel_workspace.py deleted file mode 100755 index 637c355..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/update_bazel_workspace.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env python3 -# This script will update emsdk/bazel/revisions.bzl to the latest version of -# emscripten. It reads emsdk/emscripten-releases-tags.json to get the latest -# version number. Then, it downloads the prebuilts for that version and computes -# the sha256sum for the archive. It then puts all this information into the -# emsdk/bazel/revisions.bzl file. - -import hashlib -import json -import os -import re -import requests -import sys - -STORAGE_URL = 'https://storage.googleapis.com/webassembly/emscripten-releases-builds' - -EMSDK_ROOT = os.path.dirname(os.path.dirname(__file__)) -RELEASES_TAGS_FILE = EMSDK_ROOT + '/emscripten-releases-tags.json' -BAZEL_REVISIONS_FILE = EMSDK_ROOT + '/bazel/revisions.bzl' -BAZEL_MODULE_FILE = EMSDK_ROOT + '/bazel/MODULE.bazel' - - -def get_latest_info(): - with open(RELEASES_TAGS_FILE) as f: - info = json.load(f) - latest = info['aliases']['latest'] - return latest, info['releases'][latest] - - -def get_sha(platform, archive_fmt, latest_hash, arch_suffix=''): - r = requests.get(f'{STORAGE_URL}/{platform}/{latest_hash}/wasm-binaries{arch_suffix}.{archive_fmt}') - r.raise_for_status() - print(f'Fetching {r.url}') - h = hashlib.new('sha256') - for chunk in r.iter_content(chunk_size=1024): - h.update(chunk) - return h.hexdigest() - - -def revisions_item(version, latest_hash): - return f'''\ - "{version}": struct( - hash = "{latest_hash}", - sha_linux = "{get_sha('linux', 'tar.xz', latest_hash)}", - sha_linux_arm64 = "{get_sha('linux', 'tar.xz', latest_hash, '-arm64')}", - sha_mac = "{get_sha('mac', 'tar.xz', latest_hash)}", - sha_mac_arm64 = "{get_sha('mac', 'tar.xz', latest_hash, '-arm64')}", - sha_win = "{get_sha('win', 'zip', latest_hash)}", - ), -''' - - -def insert_revision(item): - with open(BAZEL_REVISIONS_FILE, 'r') as f: - lines = f.readlines() - - lines.insert(lines.index('EMSCRIPTEN_TAGS = {\n') + 1, item) - - with open(BAZEL_REVISIONS_FILE, 'w') as f: - f.write(''.join(lines)) - - -def update_module_version(version): - with open(BAZEL_MODULE_FILE, 'r') as f: - content = f.read() - - pattern = r'(module\(\s*name = "emsdk",\s*version = )"\d+.\d+.\d+",\n\)' - # Verify that the pattern exists in the input since re.sub will - # will succeed either way. - assert re.search(pattern, content) - content = re.sub(pattern, fr'\1"{version}",\n)', content) - - with open(BAZEL_MODULE_FILE, 'w') as f: - f.write(content) - - -def main(argv): - version, latest_hash = get_latest_info() - update_module_version(version) - item = revisions_item(version, latest_hash) - print('inserting item:') - print(item) - insert_revision(item) - - -if __name__ == '__main__': - sys.exit(main(sys.argv)) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/update_node.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/update_node.py deleted file mode 100755 index 774c38a..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/update_node.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2020 The Emscripten Authors. All rights reserved. -# Emscripten is available under two separate licenses, the MIT license and the -# University of Illinois/NCSA Open Source License. Both these licenses can be -# found in the LICENSE file. - -"""Updates the node binaries that we cache store at -http://storage.google.com/webassembly. - -For the windows version we also alter the directory layout to add the 'bin' -directory. -""" - -import urllib.request -import subprocess -import sys -import os -import shutil -from zip import unzip_cmd, zip_cmd - -version = '20.18.0' -base = 'https://nodejs.org/dist/v20.18.0/' -upload_base = 'gs://webassembly/emscripten-releases-builds/deps/' - -suffixes = [ - '-win-x86.zip', - '-win-x64.zip', - '-win-arm64.zip', - '-darwin-x64.tar.gz', - '-darwin-arm64.tar.gz', - '-linux-x64.tar.xz', - '-linux-arm64.tar.xz', - '-linux-armv7l.tar.xz', -] - -for suffix in suffixes: - filename = 'node-v%s%s' % (version, suffix) - download_url = base + filename - print('Downloading: ' + download_url) - urllib.request.urlretrieve(download_url, filename) - - if '-win-' in suffix: - subprocess.check_call(unzip_cmd() + [filename]) - dirname = os.path.splitext(os.path.basename(filename))[0] - shutil.move(dirname, 'bin') - os.mkdir(dirname) - shutil.move('bin', dirname) - os.remove(filename) - subprocess.check_call(zip_cmd() + [filename, dirname]) - shutil.rmtree(dirname) - - if '--upload' in sys.argv: - upload_url = upload_base + filename - print('Uploading: ' + upload_url) - cmd = ['gsutil', 'cp', '-n', filename, upload_url] - print(' '.join(cmd)) - subprocess.check_call(cmd) - os.remove(filename) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/update_python.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/update_python.py deleted file mode 100755 index a37b701..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/update_python.py +++ /dev/null @@ -1,175 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2020 The Emscripten Authors. All rights reserved. -# Emscripten is available under two separate licenses, the MIT license and the -# University of Illinois/NCSA Open Source License. Both these licenses can be -# found in the LICENSE file. - -"""Updates the python binaries that we cache store at -http://storage.google.com/webassembly. - -We only supply binaries for windows and macOS, but we do it very different ways for those two OSes. - -Windows recipe: - 1. Download the "embeddable zip file" version of python from python.org - 2. Remove .pth file to work around https://bugs.python.org/issue34841 - 3. Download and install pywin32 in the `site-packages` directory - 4. Re-zip and upload to storage.google.com - -macOS recipe: - 1. Clone cpython - 2. Use homebrew to install and configure openssl (for static linking!) - 3. Build cpython from source and use `make install` to create archive. -""" - -import glob -import multiprocessing -import os -import platform -import urllib.request -import shutil -import subprocess -import sys -from subprocess import check_call -from zip import unzip_cmd, zip_cmd - -version = '3.9.2' -major_minor_version = '.'.join(version.split('.')[:2]) # e.g. '3.9.2' -> '3.9' -download_url = 'https://www.nuget.org/api/v2/package/python/%s' % version -# This is not part of official Python version, but a repackaging number appended by emsdk -# when a version of Python needs to be redownloaded. -revision = '4' - -pywin32_version = '227' -pywin32_base = 'https://github.com/mhammond/pywin32/releases/download/b%s/' % pywin32_version - -upload_base = 'gs://webassembly/emscripten-releases-builds/deps/' - - -def make_python_patch(): - pywin32_filename = 'pywin32-%s.win-amd64-py%s.exe' % (pywin32_version, major_minor_version) - filename = 'python-%s-amd64.zip' % (version) - out_filename = 'python-%s-%s-amd64+pywin32.zip' % (version, revision) - if not os.path.exists(pywin32_filename): - url = pywin32_base + pywin32_filename - print('Downloading pywin32: ' + url) - urllib.request.urlretrieve(url, pywin32_filename) - - if not os.path.exists(filename): - print(f'Downloading python: {download_url} to {filename}') - urllib.request.urlretrieve(download_url, filename) - - os.mkdir('python-nuget') - check_call(unzip_cmd() + [os.path.abspath(filename)], cwd='python-nuget') - os.remove(filename) - - os.mkdir('pywin32') - rtn = subprocess.call(unzip_cmd() + [os.path.abspath(pywin32_filename)], cwd='pywin32') - assert rtn in [0, 1] - - os.mkdir(os.path.join('python-nuget', 'lib')) - shutil.move(os.path.join('pywin32', 'PLATLIB'), os.path.join('python-nuget', 'toolss', 'Lib', 'site-packages')) - - check_call(zip_cmd() + [os.path.join('..', '..', out_filename), '.'], cwd='python-nuget/tools') - print('Created: %s' % out_filename) - - # cleanup if everything went fine - shutil.rmtree('python-nuget') - shutil.rmtree('pywin32') - - if '--upload' in sys.argv: - upload_url = upload_base + out_filename - print('Uploading: ' + upload_url) - cmd = ['gsutil', 'cp', '-n', out_filename, upload_url] - print(' '.join(cmd)) - check_call(cmd) - - -def build_python(): - if sys.platform.startswith('darwin'): - # Take some rather drastic steps to link openssl and liblzma statically - # and avoid linking libintl completely. - osname = 'macos' - check_call(['brew', 'install', 'openssl', 'xz', 'pkg-config']) - if platform.machine() == 'x86_64': - prefix = '/usr/local' - min_macos_version = '10.11' - elif platform.machine() == 'arm64': - prefix = '/opt/homebrew' - min_macos_version = '11.0' - - # Append '-x86_64' or '-arm64' depending on current arch. (TODO: Do - # this for Linux too, move this below?) - osname += '-' + platform.machine() - - for f in [os.path.join(prefix, 'lib', 'libintl.dylib'), - os.path.join(prefix, 'include', 'libintl.h'), - os.path.join(prefix, 'opt', 'xz', 'lib', 'liblzma.dylib'), - os.path.join(prefix, 'opt', 'openssl', 'lib', 'libssl.dylib'), - os.path.join(prefix, 'opt', 'openssl', 'lib', 'libcrypto.dylib')]: - if os.path.exists(f): - os.remove(f) - os.environ['PKG_CONFIG_PATH'] = os.path.join(prefix, 'opt', 'openssl', 'lib', 'pkgconfig') - else: - osname = 'linux' - - src_dir = 'cpython' - if not os.path.exists(src_dir): - check_call(['git', 'clone', 'https://github.com/python/cpython']) - check_call(['git', 'checkout', 'v' + version], cwd=src_dir) - - env = os.environ - if sys.platform.startswith('darwin'): - # Specify the min OS version we want the build to work on - min_macos_version_line = '-mmacosx-version-min=' + min_macos_version - build_flags = min_macos_version_line + ' -Werror=partial-availability' - # Build against latest SDK, but issue an error if using any API that would not work on the min OS version - env = env.copy() - env['MACOSX_DEPLOYMENT_TARGET'] = min_macos_version - configure_args = ['CFLAGS=' + build_flags, 'CXXFLAGS=' + build_flags, 'LDFLAGS=' + min_macos_version_line] - else: - configure_args = [] - check_call(['./configure'] + configure_args, cwd=src_dir, env=env) - check_call(['make', '-j', str(multiprocessing.cpu_count())], cwd=src_dir, env=env) - check_call(['make', 'install', 'DESTDIR=install'], cwd=src_dir, env=env) - - install_dir = os.path.join(src_dir, 'install') - - # Install requests module. This is needed in particular on macOS to ensure - # SSL certificates are available (certifi in installed and used by requests). - pybin = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'python3') - pip = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'pip3') - check_call([pybin, '-m', 'ensurepip', '--upgrade']) - check_call([pybin, pip, 'install', 'requests==2.32.3']) - - # Install psutil module. This is needed by emrun to track when browser - # process quits. - check_call([pybin, pip, 'install', 'psutil']) - - dirname = 'python-%s-%s' % (version, revision) - if os.path.isdir(dirname): - print('Erasing old build directory ' + dirname) - shutil.rmtree(dirname) - os.rename(os.path.join(install_dir, 'usr', 'local'), dirname) - tarball = 'python-%s-%s-%s.tar.gz' % (version, revision, osname) - shutil.rmtree(os.path.join(dirname, 'lib', 'python' + major_minor_version, 'test')) - shutil.rmtree(os.path.join(dirname, 'include')) - for lib in glob.glob(os.path.join(dirname, 'lib', 'lib*.a')): - os.remove(lib) - check_call(['tar', 'zcvf', tarball, dirname]) - - print('Created: %s' % tarball) - if '--upload' in sys.argv: - print('Uploading: ' + upload_base + tarball) - check_call(['gsutil', 'cp', '-n', tarball, upload_base + tarball]) - - -def main(): - if sys.platform.startswith('win') or '--win32' in sys.argv: - make_python_patch() - else: - build_python() - return 0 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/zip.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/zip.py deleted file mode 100644 index 1b52a81..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/scripts/zip.py +++ /dev/null @@ -1,19 +0,0 @@ -import os - - -def unzip_cmd(): - # Use 7-Zip if available (https://www.7-zip.org/) - sevenzip = os.path.join(os.getenv('ProgramFiles', ''), '7-Zip', '7z.exe') - if os.path.isfile(sevenzip): - return [sevenzip, 'x'] - # Fall back to 'unzip' tool - return ['unzip', '-q'] - - -def zip_cmd(): - # Use 7-Zip if available (https://www.7-zip.org/) - sevenzip = os.path.join(os.getenv('ProgramFiles', ''), '7-Zip', '7z.exe') - if os.path.isfile(sevenzip): - return [sevenzip, 'a', '-mx9'] - # Fall back to 'zip' tool - return ['zip', '-rq'] diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test.bat b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test.bat deleted file mode 100644 index c39bb3c..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test.bat +++ /dev/null @@ -1,7 +0,0 @@ -:: equivalent of test.sh as windows bat file -set PATH=%PATH%;%PYTHON_BIN% -CALL emsdk install latest -CALL emsdk activate latest -CALL emsdk_env.bat -CALL python -c "import sys; print(sys.executable)" -CALL emcc.bat -v diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test.py b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test.py deleted file mode 100755 index 6d57881..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test.py +++ /dev/null @@ -1,279 +0,0 @@ -#!/usr/bin/env python3 -import json -import os -import platform -import shutil -import subprocess -import sys -import tempfile -import unittest - -WINDOWS = sys.platform.startswith('win') -MACOS = sys.platform == 'darwin' -MACOS_ARM64 = MACOS and platform.machine() == 'arm64' - -emconfig = os.path.abspath('.emscripten') -assert os.path.exists(emconfig) - -upstream_emcc = os.path.join('upstream', 'emscripten', 'emcc') -emsdk = './emsdk' -if WINDOWS: - upstream_emcc += '.bat' - emsdk = 'emsdk.bat' -else: - emsdk = './emsdk' - -# Utilities - - -def listify(x): - if type(x) in {list, tuple}: - return x - return [x] - - -def check_call(cmd, **args): - if type(cmd) is not list: - cmd = cmd.split() - print('running: %s' % cmd) - args['universal_newlines'] = True - subprocess.check_call(cmd, **args) - - -def checked_call_with_output(cmd, expected=None, unexpected=None, stderr=None, env=None): - cmd = cmd.split(' ') - print('running: %s' % cmd) - try: - stdout = subprocess.check_output(cmd, stderr=stderr, universal_newlines=True, env=env) - except subprocess.CalledProcessError as e: - print(e.stderr) - print(e.stdout) - raise e - - if expected: - for x in listify(expected): - assert x in stdout, 'expected output missing: ' + stdout + '\n[[[' + x + ']]]' - if unexpected: - for x in listify(unexpected): - assert x not in stdout, 'unexpected output present: ' + stdout + '\n[[[' + x + ']]]' - - -def failing_call_with_output(cmd, expected, env=None): - proc = subprocess.Popen(cmd.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=env) - stdout, stderr = proc.communicate() - if WINDOWS: - print('warning: skipping part of failing_call_with_output() due to error codes not being propagated (see #592)') - else: - assert proc.returncode, 'call must have failed: ' + str([stdout, '\n========\n', stderr]) - assert expected in stdout or expected in stderr, 'call did not have the expected output: %s: %s' % (expected, str([stdout, '\n========\n', stderr])) - - -def hack_emsdk(marker, replacement): - with open('emsdk.py') as f: - src = f.read() - assert marker in src - src = src.replace(marker, replacement) - name = '__test_emsdk' - with open(name, 'w') as f: - f.write(src) - return name - - -# Set up - -TAGS = json.loads(open('emscripten-releases-tags.json').read()) - -# Tests - - -def do_lib_building(emcc): - cache_building_messages = ['generating system library: '] - - def do_build(args, is_expected=None): - unexpected = None - expected = None - if is_expected is True: - expected = cache_building_messages - elif is_expected is False: - unexpected = cache_building_messages - checked_call_with_output(emcc + ' hello_world.c' + args, - expected=expected, - unexpected=unexpected, - stderr=subprocess.STDOUT) - - # The emsdk ships all system libraries so we don't expect to see any - # cache population unless we explicly --clear-cache. - do_build('', is_expected=False) - check_call(emcc + ' --clear-cache') - do_build(' -O2', is_expected=True) - # Do another build at -O0. In nwers SDK versions this generates - # different libs, but not in older ones so don't assert here. - do_build('') - # Now verify that libs are *not* build - do_build(' -s WASM=0', is_expected=False) - do_build(' -O2 -s WASM=0', is_expected=False) - - -def run_emsdk(cmd): - if type(cmd) is not list: - cmd = cmd.split() - check_call([emsdk] + cmd) - - -class Emsdk(unittest.TestCase): - @classmethod - def setUpClass(cls): - with open('hello_world.c', 'w') as f: - f.write('''\ -#include - -int main() { - printf("Hello, world!\\n"); - return 0; -} -''') - - def setUp(self): - run_emsdk('install latest') - run_emsdk('activate latest') - - def test_unknown_arch(self): - env = os.environ.copy() - env['EMSDK_ARCH'] = 'mips' - failing_call_with_output(emsdk + ' install latest', - expected='unknown machine architecture: mips', - env=env) - - def test_wrong_bitness(self): - env = os.environ.copy() - env['EMSDK_ARCH'] = 'x86' - failing_call_with_output(emsdk + ' install sdk-latest-64bit', - expected='is only provided for 64-bit OSe', - env=env) - - def test_already_installed(self): - # Test we don't re-download unnecessarily - checked_call_with_output(emsdk + ' install latest', expected='already installed', unexpected='Downloading:') - - def test_list(self): - # Test we report installed tools properly. The latest version should be - # installed, but not some random old one. - checked_call_with_output(emsdk + ' list', expected=TAGS['aliases']['latest'] + ' INSTALLED', unexpected='1.39.15 INSTALLED:') - - def test_config_contents(self): - print('test .emscripten contents') - with open(emconfig) as f: - config = f.read() - assert 'upstream' in config - - def test_lib_building(self): - print('building proper system libraries') - do_lib_building(upstream_emcc) - - def test_redownload(self): - print('go back to using upstream') - run_emsdk('activate latest') - - # Test the normal tools like node don't re-download on re-install - print('another install must re-download') - checked_call_with_output(emsdk + ' uninstall node-20.18.0-64bit') - checked_call_with_output(emsdk + ' install node-20.18.0-64bit', expected='Downloading:', unexpected='already installed') - checked_call_with_output(emsdk + ' install node-20.18.0-64bit', unexpected='Downloading:', expected='already installed') - - def test_tot_upstream(self): - print('test update-tags') - run_emsdk('update-tags') - print('test tot-upstream') - run_emsdk('install tot-upstream') - with open(emconfig) as f: - config = f.read() - run_emsdk('activate tot-upstream') - with open(emconfig + '.old') as f: - old_config = f.read() - self.assertEqual(config, old_config) - # TODO; test on latest as well - check_call(upstream_emcc + ' hello_world.c') - - def test_closure(self): - # Specifically test with `--closure` so we know that node_modules is working - check_call(upstream_emcc + ' hello_world.c --closure=1') - - def test_specific_version(self): - if MACOS_ARM64: - self.skipTest('Old sdk versions do not have ARM64 binaries') - print('test specific release (new, short name)') - run_emsdk('install 1.38.33') - print('another install, but no need for re-download') - checked_call_with_output(emsdk + ' install 1.38.33', expected='Skipped', unexpected='Downloading:') - run_emsdk('activate 1.38.33') - - def test_specific_version_full(self): - if MACOS_ARM64: - self.skipTest('Old sdk versions do not have ARM64 binaries') - print('test specific release (new, full name)') - run_emsdk('install sdk-1.38.33-64bit') - run_emsdk('activate sdk-1.38.33-64bit') - print('test specific release (new, tag name)') - run_emsdk('install sdk-tag-1.38.33-64bit') - run_emsdk('activate sdk-tag-1.38.33-64bit') - - def test_binaryen_from_source(self): - if MACOS: - self.skipTest("https://github.com/WebAssembly/binaryen/issues/4299") - print('test binaryen source build') - run_emsdk(['install', '--build=Release', '--generator=Unix Makefiles', 'binaryen-main-64bit']) - - def test_no_32bit(self): - print('test 32-bit error') - emsdk_hacked = hack_emsdk('not is_os_64bit()', 'True') - failing_call_with_output('%s %s install latest' % (sys.executable, emsdk_hacked), - 'this tool is only provided for 64-bit OSes') - os.remove(emsdk_hacked) - - def test_update_no_git(self): - print('test non-git update') - - temp_dir = tempfile.mkdtemp() - for filename in os.listdir('.'): - if not filename.startswith('.') and not os.path.isdir(filename): - shutil.copy2(filename, os.path.join(temp_dir, filename)) - - olddir = os.getcwd() - try: - os.chdir(temp_dir) - run_emsdk('update') - - print('second time') - run_emsdk('update') - finally: - os.chdir(olddir) - - def test_install_arbitrary(self): - # Test that its possible to install arbrary emscripten-releases SDKs - run_emsdk('install 1b7f7bc6002a3ca73647f41fc10e1fac7f06f804') - - # Check that its not re-downloaded - checked_call_with_output(emsdk + ' install 1b7f7bc6002a3ca73647f41fc10e1fac7f06f804', expected='Skipped', unexpected='Downloading:') - - def test_install_tool(self): - # Test that its possible to install emscripten as tool instead of SDK - checked_call_with_output(emsdk + ' install releases-77b065ace39e6ab21446e13f92897f956c80476a', unexpected='Installing SDK') - - def test_activate_missing(self): - run_emsdk('install latest') - failing_call_with_output(emsdk + ' activate 2.0.1', expected="error: tool is not installed and therefore cannot be activated: 'releases-13e29bd55185e3c12802bc090b4507901856b2ba-64bit'") - - def test_keep_downloads(self): - env = os.environ.copy() - env['EMSDK_KEEP_DOWNLOADS'] = '1' - # With EMSDK_KEEP_DOWNLOADS the downloading should happen on the first - # install of 2.0.28, and again when we install 2.0.29, but not on the - # second install of 2.0.28 because the zip should already be local. - shutil.rmtree('downloads') - checked_call_with_output(emsdk + ' install 3.1.54', expected='Downloading:', env=env) - checked_call_with_output(emsdk + ' install 3.1.55', expected='Downloading:', env=env) - checked_call_with_output(emsdk + ' install 3.1.54', expected='already downloaded, skipping', unexpected='Downloading:', env=env) - - -if __name__ == '__main__': - unittest.main(verbosity=2) diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test.sh deleted file mode 100755 index 5033fd9..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash - -echo "test the standard workflow (as close as possible to how a user would do it, in the shell)" -echo "machine: $(uname -m)" -echo "kernel: $(uname -s)" - -set -x -set -e - -# Test that arbitrary (non-released) versions can be installed and -# activated. -# This test cannot run on linux-arm64 because only certain binaries -# get uploaded for this architecture. -if [[ !($(uname -s) == "Linux" && $(uname -m) == "aarch64") ]]; then - ./emsdk install sdk-upstream-1b7f7bc6002a3ca73647f41fc10e1fac7f06f804 - ./emsdk activate sdk-upstream-1b7f7bc6002a3ca73647f41fc10e1fac7f06f804 - source ./emsdk_env.sh - which emcc - emcc -v -fi - -# Install an older version of the SDK that requires EM_CACHE to be -# set in the environment, so that we can test it is later removed -# This test only runs on x64 because we didn't build arm binaries -# when this older version of the SDK was built. -if [[ $(uname -m) == "x86_64" ]]; then - ./emsdk install sdk-1.39.15 - ./emsdk activate sdk-1.39.15 - source ./emsdk_env.sh - which emcc - emcc -v - test -n "$EM_CACHE" -fi - -# Install the latest version of the SDK which is the expected precondition -# of test.py. -./emsdk install latest -./emsdk activate latest -source ./emsdk_env.sh --build=Release -# Test that EM_CACHE was unset -test -z "$EM_CACHE" - -# On mac and windows python3 should be in the path and point to the -# bundled version. -which python3 -which emcc -emcc -v diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_activation.ps1 b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_activation.ps1 deleted file mode 100644 index 31a2c8e..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_activation.ps1 +++ /dev/null @@ -1,88 +0,0 @@ -# This test installs emsdk and activates the latest toolchain using `--system` or `--permanent` flags, -# and checks if the environment variables and PATH are correctly updated. Set $env:SYSTEM_FLAG and $env:PERMANENT_FLAG to test each. -# If no flag is provided the process/shell values are tested. See the CI file for an example. - -refreshenv - -$repo_root = [System.IO.Path]::GetDirectoryName((resolve-path "$PSScriptRoot")) - -$PATH_USER_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "User") -$PATH_MACHINE_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") -$PATH_Process_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Process") - - -try { - - & "$repo_root/emsdk.ps1" install latest - - & "$repo_root/emsdk.ps1" activate latest $env:PERMANENT_FLAG $env:SYSTEM_FLAG - - if ($env:SYSTEM_FLAG) { - $env_type = "Machine" - } - elseif ($env:PERMANENT_FLAG) { - $env_type = "User" - } else { - $env_type = "Process" - } - - $EMSDK = [System.Environment]::GetEnvironmentVariable("EMSDK", $env_type) - $EMSDK_NODE = [System.Environment]::GetEnvironmentVariable("EMSDK_NODE", $env_type) - $EMSDK_PYTHON = [System.Environment]::GetEnvironmentVariable("EMSDK_PYTHON", $env_type) - $PATH = [System.Environment]::GetEnvironmentVariable("PATH", $env_type) - - if (!$EMSDK) { - throw "EMSDK is not set for the user" - } - if (!$EMSDK_NODE) { - throw "EMSDK_NODE is not set for the user" - } - if (!$EMSDK_PYTHON) { - throw "EMSDK_PYTHON is not set for the user" - } - - - $path_split = $PATH.Split(';') - - $EMSDK_Path = $path_split | Where-Object { $_ -like "$repo_root*" } - if (!$EMSDK_Path) { - throw "No path is added!" - } - - $EMSDK_UPSTREAM_Path = $path_split | Where-Object { $_ -like "$repo_root\upstream\emscripten*" } - if (!$EMSDK_UPSTREAM_Path) { - throw "$repo_root\\upstream\emscripten is not added to path." - } - - -} -finally { - # Recover pre-split PATH - refreshenv - - [Environment]::SetEnvironmentVariable("Path", $PATH_USER_BEFORE, "User") - try { - [Environment]::SetEnvironmentVariable("Path", $PATH_MACHINE_BEFORE, "Machine") - } - catch {} - - [Environment]::SetEnvironmentVariable("Path", $PATH_Process_BEFORE, "Process") - - # Recover pre activation env variables - [Environment]::SetEnvironmentVariable("EMSDK", $null, "User") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "User") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "User") - - try { - [Environment]::SetEnvironmentVariable("EMSDK", $null, "Machine") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Machine") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Machine") - } catch {} - - - [Environment]::SetEnvironmentVariable("EMSDK", $null, "Process") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Process") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Process") - - refreshenv -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_bazel.ps1 b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_bazel.ps1 deleted file mode 100644 index 5c20a15..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_bazel.ps1 +++ /dev/null @@ -1,30 +0,0 @@ -$ErrorActionPreference = 'Stop' - -Set-Location bazel - -bazel build //hello-world:hello-world-wasm -if (-not $?) { Exit $LastExitCode } - -bazel build //hello-world:hello-world-wasm-simd -if (-not $?) { Exit $LastExitCode } - -Set-Location test_external - -bazel build //:hello-world-wasm -if (-not $?) { Exit $LastExitCode } - -bazel build //long_command_line:long_command_line_wasm -if (-not $?) { Exit $LastExitCode } - -bazel build //:hello-embind-wasm --compilation_mode dbg # debug -if (-not $?) { Exit $LastExitCode } - -# Test use of the closure compiler -bazel build //:hello-embind-wasm --compilation_mode opt # release -if (-not $?) { Exit $LastExitCode } - -Set-Location ..\test_secondary_lto_cache - -bazel build //:hello-world-wasm -if (-not $?) { Exit $LastExitCode } - diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_bazel.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_bazel.sh deleted file mode 100755 index 682866f..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_bazel.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - -echo "test bazel" - -set -x -set -e - -# Get the latest version number from emscripten-releases-tag.json. -VER=$(scripts/get_release_info.py emscripten-releases-tags.json latest) - -# Based on the latest version number, get the commit hash for that version. -HASH=$(scripts/get_release_info.py emscripten-releases-tags.json hash ${VER}) - -FAILMSG="!!! scripts/update_bazel_workspace.py needs to be run !!!" - -# Ensure the WORKSPACE file is up to date with the latest version. -grep ${VER} bazel/revisions.bzl || (echo ${FAILMSG} && false) -grep ${HASH} bazel/revisions.bzl || (echo ${FAILMSG} && false) -grep ${VER} bazel/MODULE.bazel || (echo ${FAILMSG} && false) - -cd bazel -bazel build //hello-world:hello-world-wasm -bazel build //hello-world:hello-world-wasm-simd - -cd test_external -bazel build //:hello-world-wasm -bazel build //long_command_line:long_command_line_wasm -bazel build //:hello-embind-wasm --compilation_mode dbg # debug - -# Test use of the closure compiler -bazel build //:hello-embind-wasm --compilation_mode opt # release -# This function should not be minified if the externs file is loaded correctly. -grep "customJSFunctionToTestClosure" bazel-bin/hello-embind-wasm/hello-embind.js - -cd ../test_secondary_lto_cache -bazel build //:hello-world-wasm diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_bazel_mac.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_bazel_mac.sh deleted file mode 100755 index e27c657..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_bazel_mac.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash - -echo "test bazel" - -set -x -set -e - -# Get the latest version number from emscripten-releases-tag.json. -VER=$(scripts/get_release_info.py emscripten-releases-tags.json latest) - -# Based on the latest version number, get the commit hash for that version. -HASH=$(scripts/get_release_info.py emscripten-releases-tags.json hash ${VER}) - -FAILMSG="!!! scripts/update_bazel_workspace.py needs to be run !!!" - -# Ensure the WORKSPACE file is up to date with the latest version. -grep ${VER} bazel/revisions.bzl || (echo ${FAILMSG} && false) -grep ${HASH} bazel/revisions.bzl || (echo ${FAILMSG} && false) -grep ${VER} bazel/MODULE.bazel || (echo ${FAILMSG} && false) - -cd bazel -bazel build //hello-world:hello-world-wasm -bazel build //hello-world:hello-world-wasm-simd - -cd test_external -bazel build //long_command_line:long_command_line_wasm -bazel build //:hello-world-wasm - -cd ../test_secondary_lto_cache -bazel build //:hello-world-wasm - diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_node_path.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_node_path.sh deleted file mode 100755 index 582152b..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_node_path.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash - -echo "Test that node is added to that PATH if, and only if, it is not one already present". - -if [ -n "$EMSDK" ]; then - echo "EMSDK is already defined in this shell. Run tests in a shell without sourcing emsdk_env.sh first" - exit 1 -fi - -DIR=$(dirname "$BASH_SOURCE") -cd $DIR/.. - -./emsdk install latest -./emsdk activate latest - -if which node; then - echo "Test should be run without node in the path" - exit 1 -fi - -# Run emsdk_env.sh and confirm that node was added to the PATH -. emsdk_env.sh - -if ! which node; then - echo "node not found in path after emsdk_env.sh" - exit 1 -fi - -# Run emsdk_env.sh again and confirm that node is still in the PATH -. emsdk_env.sh - -if ! which node; then - echo "node not found in path after emsdk_env.sh" - exit 1 -fi diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_path_preservation.ps1 b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_path_preservation.ps1 deleted file mode 100644 index 0391b63..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_path_preservation.ps1 +++ /dev/null @@ -1,142 +0,0 @@ -# This test installs emsdk and activates the latest toolchain using `--system` or `--permanent` flags, -# and checks if parts of PATH are lost or overwritten. Set $env:SYSTEM_FLAG and $env:PERMANENT_FLAG to test each. -# If no flag is provided the process/shell values are tested. See the CI file for an example. - -refreshenv - -$repo_root = [System.IO.Path]::GetDirectoryName((resolve-path "$PSScriptRoot")) - -$PATH_USER_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "User") -$PATH_MACHINE_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") -$PATH_Process_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Process") - -try { - - - & "$repo_root/emsdk.ps1" install latest - - $esc = '--%' - & "$repo_root/emsdk.ps1" activate latest $esc $env:PERMANENT_FLAG $env:SYSTEM_FLAG - - $PATH_USER = [System.Environment]::GetEnvironmentVariable("PATH", "User") - $PATH_MACHINE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") - $PATH_Process = [System.Environment]::GetEnvironmentVariable("PATH", "Process") - - if ($env:SYSTEM_FLAG) { - echo "--system test............................." - $path_before_arr = $PATH_MACHINE_BEFORE.Split(';') - $path_arr = $PATH_MACHINE.Split(';') - } - elseif ($env:PERMANENT_FLAG) { - echo "--permanent test.........................." - $path_before_arr = $PATH_USER_BEFORE.Split(';') - $path_arr = $PATH_USER.Split(';') - } else { - echo "no flag test (shell/process).............." - $path_before_arr = $PATH_Process_BEFORE.Split(';') - $path_arr = $PATH_Process.Split(';') - } - - - $EMSDK_Path = $path_arr | Where-Object { $_ -like "$repo_root*" } - $EMSDK_NODE_Path = $path_arr | Where-Object { $_ -like "$repo_root\node*" } - $EMSDK_PYTHON_Path = $path_arr | Where-Object { $_ -like "$repo_root\python*" } - $EMSDK_JAVA_Path = $path_arr | Where-Object { $_ -like "$repo_root\java*" } - $EMSDK_UPSTREAM_Path = $path_arr | Where-Object { $_ -like "$repo_root\upstream\emscripten*" } - - $number_of_items = $path_arr.count - [System.Collections.ArrayList]$rest_of_path = @() - Foreach ($item in $path_arr) { - if ( - ($item -like "$repo_root*") -or - ($item -like "$repo_root\node*") -or - ($item -like "$repo_root\python*") -or - ($item -like "$repo_root\java*") -or - ($item -like "$repo_root\upstream\emscripten*") - ) { - echo "$item is on the PATH" - } - else { - $rest_of_path.add($item) | Out-Null - } - } - - # compare the PATHs before activation and after activation - if (Compare-Object -ReferenceObject $path_before_arr -DifferenceObject $rest_of_path ) { - echo "Old path is ............................." - echo $path_before_arr - echo "Current rest of path is ................." - echo $rest_of_path - throw "some parts of PATH are removed" - } - - # Compare the other untouched PATH - if ($env:SYSTEM_FLAG) { - if (Compare-Object -ReferenceObject $PATH_USER_BEFORE.Split(';') -DifferenceObject $PATH_USER.Split(';') ) { - echo "Old user path is ...................." - echo $PATH_USER_BEFORE - echo "Current user path is ................" - echo $PATH_USER - throw "User PATH are changed while --system had been provided" - } - } - elseif ($env:PERMANENT_FLAG) { - if (Compare-Object -ReferenceObject $PATH_MACHINE_BEFORE.Split(';') -DifferenceObject $PATH_MACHINE.Split(';') ) { - echo "Old machine path is.................." - echo $PATH_MACHINE_BEFORE - echo "Current machine path is.............." - echo $PATH_MACHINE - throw "MACHINE PATH are changed while --system was not provided" - } - } else { - if ( - (Compare-Object -ReferenceObject $PATH_MACHINE_BEFORE.Split(';') -DifferenceObject $PATH_MACHINE.Split(';')) -or - (Compare-Object -ReferenceObject $PATH_MACHINE_BEFORE.Split(';') -DifferenceObject $PATH_MACHINE.Split(';')) - ) { - echo "Old machine path is.................." - echo $PATH_MACHINE_BEFORE - echo "Current machine path is.............." - echo $PATH_MACHINE - echo "Old user path is ...................." - echo $PATH_USER_BEFORE - echo "Current user path is ................" - echo $PATH_USER - throw "MACHINE/USER PATH are changed while no flag was provided" - } - } - - - - -} -finally { - # Recover pre-split PATH - refreshenv - - [Environment]::SetEnvironmentVariable("Path", $PATH_USER_BEFORE, "User") - try { - [Environment]::SetEnvironmentVariable("Path", $PATH_MACHINE_BEFORE, "Machine") - } - catch {} - - [Environment]::SetEnvironmentVariable("Path", $PATH_Process_BEFORE, "Process") - - # Recover pre activation env variables - [Environment]::SetEnvironmentVariable("EMSDK", $null, "User") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "User") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "User") - - try { - [Environment]::SetEnvironmentVariable("EMSDK", $null, "Machine") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Machine") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Machine") - } catch {} - - - [Environment]::SetEnvironmentVariable("EMSDK", $null, "Process") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Process") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Process") - - refreshenv - -} diff --git a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_source_env.sh b/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_source_env.sh deleted file mode 100755 index 71a3e40..0000000 --- a/zig-pkg/N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ/test/test_source_env.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env bash - -echo "Test ability to source emsdk_env.sh in different shells" - -if [ -n "$EMSDK" ]; then - echo "EMSDK is already defined in this shell. Run tests in a shell without sourcing emsdk_env.sh first" - exit 1 -fi - -DIR=$(dirname "$BASH_SOURCE") - -# setup a symlink relative to the current dir -REL_LINK_DIR="$DIR/tmp" -if [ -d "$REL_LINK_DIR" ]; then - rm -rf "$REL_LINK_DIR" -fi -echo "Creating links in $REL_LINK_DIR" -mkdir -p "$REL_LINK_DIR" -(cd $DIR/.. && ln -s `pwd` "$REL_LINK_DIR/emsdk") -(cd $DIR/.. && ln -s `pwd`/emsdk_env.sh "$REL_LINK_DIR") - -# setup a symlink in an absolute directory -ABS_LINK_DIR="/tmp/emsdk_env_test" -if [ -d "$ABS_LINK_DIR" ]; then - rm -rf "$ABS_LINK_DIR" -fi -echo "Creating links in $ABS_LINK_DIR" -mkdir -p "$ABS_LINK_DIR" -(cd $DIR/.. && ln -s `pwd` "$ABS_LINK_DIR/emsdk") -(cd $DIR/.. && ln -s `pwd`/emsdk_env.sh "$ABS_LINK_DIR") - -PATH1="$DIR/../emsdk_env.sh" -PATH2="$REL_LINK_DIR/emsdk/emsdk_env.sh" -PATH3="$REL_LINK_DIR/emsdk_env.sh" -PATH4="$ABS_LINK_DIR/emsdk/emsdk_env.sh" -PATH5="$ABS_LINK_DIR/emsdk_env.sh" - -assert_emcc() { - current=$1 - cmd=$2 - value=$3 - if [ -z "$value" ] || [ "$value" == "false" ]; then - echo "FAILED: $current" - echo " unable to get EMSDK in $current using '$cmd'" - else - echo "SUCCESS: $current testing $cmd" - echo " -> EMSDK = $value" - fi -} - -test_bash() { - value=$(bash --rcfile <(echo $1)) - assert_emcc bash "$1" "$value" -} - -test_zsh() { - value=$(zsh -d -c "$1") - assert_emcc zsh "$1" "$value" -} - -test_ksh() { - value=$(ksh -c "$1") - assert_emcc ksh "$1" "$value" -} - -it_tests_direct_path() { - TEST_SCRIPT=". ${PATH1}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH1}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -it_tests_via_relative_dir_symlink() { - TEST_SCRIPT=". ${PATH2}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH2}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -it_tests_via_relative_file_symlink() { - TEST_SCRIPT=". ${PATH3}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH3}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -it_tests_via_absolute_dir_symlink() { - TEST_SCRIPT=". ${PATH4}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH4}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -it_tests_via_absolute_file_symlink() { - TEST_SCRIPT=". ${PATH5}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH5}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -run_bash_tests() { - it_tests_direct_path - it_tests_via_relative_dir_symlink - it_tests_via_relative_file_symlink - it_tests_via_absolute_dir_symlink - it_tests_via_absolute_file_symlink -} - -run_bash_tests - -rm -rf $REL_LINK_DIR -rm -rf $ABS_LINK_DIR diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/LICENSE b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/LICENSE deleted file mode 100644 index bc6f4b8..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -Copyright (c) 2013-2026 Ramon Santamaria (@raysan5) - -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. diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/build.zig b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/build.zig deleted file mode 100644 index eb1eb5c..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/build.zig +++ /dev/null @@ -1,790 +0,0 @@ -const std = @import("std"); -const builtin = @import("builtin"); - -pub const emsdk = struct { - const zemscripten = @import("zemscripten"); - - pub fn shell(raylib_dep: *std.Build.Dependency) std.Build.LazyPath { - return raylib_dep.path("src/shell.html"); - } - - pub const FlagsOptions = struct { - optimize: std.builtin.OptimizeMode, - asyncify: bool = true, - }; - - pub fn emccDefaultFlags(allocator: std.mem.Allocator, options: FlagsOptions) zemscripten.EmccFlags { - var emcc_flags = zemscripten.emccDefaultFlags(allocator, .{ - .optimize = options.optimize, - .fsanitize = true, - }); - - if (options.asyncify) - emcc_flags.put("-sASYNCIFY", {}) catch unreachable; - - return emcc_flags; - } - - pub const SettingsOptions = struct { - optimize: std.builtin.OptimizeMode, - es3: bool = false, - glfw3: bool = true, - memory_growth: bool = false, - total_memory: u32 = 134217728, - emsdk_allocator: zemscripten.EmsdkAllocator = .emmalloc, - }; - - pub fn emccDefaultSettings(allocator: std.mem.Allocator, options: SettingsOptions) zemscripten.EmccSettings { - var emcc_settings = zemscripten.emccDefaultSettings(allocator, .{ - .optimize = options.optimize, - .emsdk_allocator = options.emsdk_allocator, - }); - - if (options.es3) { - emcc_settings.put("FULL_ES3", "1") catch unreachable; - emcc_settings.put("MIN_WEBGL_VERSION", "2") catch unreachable; - emcc_settings.put("MAX_WEBGL_VERSION", "2") catch unreachable; - } - if (options.glfw3) { - emcc_settings.put("USE_GLFW", "3") catch unreachable; - } - - const total_memory = std.fmt.allocPrint(allocator, "{d}", .{options.total_memory}) catch unreachable; - - emcc_settings.put("EXPORTED_RUNTIME_METHODS", "['requestFullscreen']") catch unreachable; - emcc_settings.put("TOTAL_MEMORY", total_memory) catch unreachable; - emcc_settings.put("FORCE_FILESYSTEM", "1") catch unreachable; - emcc_settings.put("EXPORTED_RUNTIME_METHODS", "ccall") catch unreachable; - - if (options.memory_growth) - emcc_settings.put("ALLOW_MEMORY_GROWTH", "1") catch unreachable; - - return emcc_settings; - } - - pub fn emccStep(b: *std.Build, raylib: *std.Build.Step.Compile, wasm: *std.Build.Step.Compile, options: zemscripten.StepOptions) *std.Build.Step { - const activate_emsdk_step = zemscripten.activateEmsdkStep(b); - - const emsdk_dep = b.dependency("emsdk", .{}); - raylib.root_module.addIncludePath(emsdk_dep.path("upstream/emscripten/cache/sysroot/include")); - wasm.root_module.addIncludePath(emsdk_dep.path("upstream/emscripten/cache/sysroot/include")); - - const emcc_step = zemscripten.emccStep(b, wasm, options); - emcc_step.dependOn(activate_emsdk_step); - - return emcc_step; - } - - pub fn emrunStep( - b: *std.Build, - html_path: []const u8, - extra_args: []const []const u8, - ) *std.Build.Step { - return zemscripten.emrunStep(b, html_path, extra_args); - } -}; - -pub fn linkWindows(mod: *std.Build.Module, opengl: bool, comptime shcore: bool) void { - if (opengl) mod.linkSystemLibrary("opengl32", .{}); - mod.linkSystemLibrary("winmm", .{}); - mod.linkSystemLibrary("gdi32", .{}); - if (shcore) mod.linkSystemLibrary("shcore", .{}); -} - -fn findWaylandScanner(b: *std.Build) void { - _ = b.findProgram(&.{"wayland-scanner"}, &.{}) catch { - std.log.err( - \\ `wayland-scanner` may not be installed on the system. - \\ You can switch to X11 in your `build.zig` by changing `Options.linux_display_backend` - , .{}); - @panic("`wayland-scanner` not found"); - }; -} - -pub fn linkLinux(mod: *std.Build.Module, comptime display_backend: LinuxDisplayBackend) void { - if (display_backend == .None) { - mod.linkSystemLibrary("GL", .{}); - } - - if (display_backend == .X11) { - mod.linkSystemLibrary("X11", .{}); - mod.linkSystemLibrary("Xrandr", .{}); - mod.linkSystemLibrary("Xinerama", .{}); - mod.linkSystemLibrary("Xi", .{}); - mod.linkSystemLibrary("Xcursor", .{}); - } - - if (display_backend == .Wayland) { - mod.linkSystemLibrary("wayland-client", .{}); - mod.linkSystemLibrary("wayland-cursor", .{}); - mod.linkSystemLibrary("wayland-egl", .{}); - mod.linkSystemLibrary("xkbcommon", .{}); - } -} - -pub fn linkBSD(_: *std.Build, mod: *std.Build.Module) void { - mod.linkSystemLibrary("GL", .{}); -} - -pub fn linkMacOS(b: *std.Build, mod: *std.Build.Module) void { - // Include xcode_frameworks for cross compilation - if (b.lazyDependency("xcode_frameworks", .{})) |dep| { - mod.addSystemFrameworkPath(dep.path("Frameworks")); - mod.addSystemIncludePath(dep.path("include")); - mod.addLibraryPath(dep.path("lib")); - } - - mod.linkFramework("Foundation", .{}); - mod.linkFramework("CoreServices", .{}); - mod.linkFramework("CoreGraphics", .{}); - mod.linkFramework("AppKit", .{}); - mod.linkFramework("IOKit", .{}); -} - -fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile { - const raylib_mod = b.createModule(.{ - .optimize = optimize, - .target = target, - .link_libc = true, - }); - - const raylib = b.addLibrary(.{ - .name = "raylib", - .linkage = options.linkage, - .root_module = raylib_mod, - }); - - raylib_mod.addCMacro("_GNU_SOURCE", ""); - raylib_mod.addCMacro("GL_SILENCE_DEPRECATION", "199309L"); - - var arena: std.heap.ArenaAllocator = .init(b.allocator); - defer arena.deinit(); - - var raylib_flags_arr: std.array_list.Managed([]const u8) = .init(arena.allocator()); - var c_source_files: std.array_list.Managed([]const u8) = .init(arena.allocator()); - - try c_source_files.append("src/rcore.c"); - - if (target.result.os.tag == .emscripten) { - try raylib_flags_arr.append("-std=gnu99"); - } else { - try raylib_flags_arr.append("-std=c99"); - } - - if (options.linkage == .dynamic) { - raylib_mod.pic = true; - raylib_mod.addCMacro("BUILD_LIBTYPE_SHARED", ""); - } - - if (options.config.len > 0) { - // Splits a space-separated list of config flags into multiple flags - // - // Note: This means certain flags like `-x c++` won't be processed properly. - // `-xc++` or similar should be used when possible - var config_iter = std.mem.tokenizeScalar(u8, options.config, ' '); - - // Apply config flags supplied by the user - while (config_iter.next()) |config_flag| { - try raylib_flags_arr.append(config_flag); - } - } - - raylib_mod.addCMacro("SUPPORT_MODULE_RSHAPES", &.{@as(u8, @intFromBool(options.rshapes)) + 0x30}); - if (options.rshapes) { - try c_source_files.append("src/rshapes.c"); - } - raylib_mod.addCMacro("SUPPORT_MODULE_RTEXTURES", &.{@as(u8, @intFromBool(options.rtextures)) + 0x30}); - if (options.rtextures) { - try c_source_files.append("src/rtextures.c"); - } - raylib_mod.addCMacro("SUPPORT_MODULE_RTEXT", &.{@as(u8, @intFromBool(options.rtext)) + 0x30}); - if (options.rtext) { - try c_source_files.append("src/rtext.c"); - } - raylib_mod.addCMacro("SUPPORT_MODULE_RMODELS", &.{@as(u8, @intFromBool(options.rmodels)) + 0x30}); - if (options.rmodels) { - try c_source_files.append("src/rmodels.c"); - } - raylib_mod.addCMacro("SUPPORT_MODULE_RAUDIO", &.{@as(u8, @intFromBool(options.raudio)) + 0x30}); - if (options.raudio) { - try c_source_files.append("src/raudio.c"); - } - - raylib_mod.addIncludePath(b.path("src/platforms")); - switch (options.platform) { - .glfw => { - var opengl_version: OpenglVersion = options.opengl_version; - if (opengl_version == .gl_soft) { - @panic("The opengl version is not supported by this platform"); - } - - raylib_mod.addIncludePath(b.path("src/external/glfw/include")); - - if (target.result.os.tag != .emscripten) { - if (opengl_version == .auto) { - opengl_version = OpenglVersion.gl_3_3; - } - raylib_mod.addCMacro("PLATFORM_DESKTOP_GLFW", ""); - try c_source_files.append("src/rglfw.c"); - } - - switch (target.result.os.tag) { - .windows => linkWindows(raylib_mod, true, false), - .linux => { - if (target.result.abi.isAndroid()) { - @panic("Target is not supported with this platform"); - } - - linkLinux(raylib_mod, .None); - - if (options.linux_display_backend == .X11 or options.linux_display_backend == .Both) { - raylib_mod.addCMacro("_GLFW_X11", ""); - linkLinux(raylib_mod, .X11); - } - - if (options.linux_display_backend == .Wayland or options.linux_display_backend == .Both) { - findWaylandScanner(b); - - raylib_mod.addCMacro("_GLFW_WAYLAND", ""); - linkLinux(raylib_mod, .Wayland); - try waylandGenerate(b, raylib, "src/external/glfw/deps/wayland/", false); - } - }, - .freebsd, .openbsd, .netbsd, .dragonfly => linkBSD(b, raylib_mod), - .macos => { - // On macos rglfw.c include Objective-C files. - _ = c_source_files.pop(); - try raylib_flags_arr.append("-ObjC"); - raylib_mod.addCSourceFile(.{ - .file = b.path("src/rglfw.c"), - .flags = raylib_flags_arr.items, - }); - _ = raylib_flags_arr.pop(); - - linkMacOS(b, raylib_mod); - }, - .emscripten => { - switch (opengl_version) { - .auto => opengl_version = OpenglVersion.gles_2, - .gles_2, .gles_3, .gl_soft => {}, - else => @panic("opengl version not supported"), - } - - raylib_mod.addCMacro("PLATFORM_WEB", ""); - - const activate_emsdk_step = emsdk.zemscripten.activateEmsdkStep(b); - raylib.step.dependOn(activate_emsdk_step); - }, - else => @panic("Target is not supported with this platform"), - } - raylib_mod.addCMacro(opengl_version.toCMacroStr(), ""); - }, - .rgfw => { - var opengl_version: OpenglVersion = options.opengl_version; - - if (target.result.os.tag != .emscripten) { - if (opengl_version == .auto) { - opengl_version = OpenglVersion.gl_3_3; - } - raylib_mod.addCMacro("PLATFORM_DESKTOP_RGFW", ""); - } - - switch (target.result.os.tag) { - .windows => linkWindows(raylib_mod, true, false), - .linux => { - if (target.result.abi.isAndroid()) { - @panic("Target is not supported with this platform"); - } - - linkLinux(raylib_mod, .None); - - if (options.linux_display_backend == .X11 or options.linux_display_backend == .Both) { - raylib_mod.addCMacro("RGFW_X11", ""); - raylib_mod.addCMacro("RGFW_UNIX", ""); - - linkLinux(raylib_mod, .X11); - } - - if (options.linux_display_backend == .Wayland or options.linux_display_backend == .Both) { - findWaylandScanner(b); - - if (options.linux_display_backend != .Both) { - raylib_mod.addCMacro("RGFW_NO_X11", ""); - } - - raylib_mod.addCMacro("RGFW_WAYLAND", ""); - raylib_mod.addCMacro("EGLAPIENTRY", ""); - - linkLinux(raylib_mod, .Wayland); - - try waylandGenerate(b, raylib, "src/external/RGFW/deps/wayland/", true); - } - }, - .freebsd, .openbsd, .netbsd, .dragonfly => linkBSD(b, raylib_mod), - .macos => linkMacOS(b, raylib_mod), - .emscripten => { - switch (opengl_version) { - .auto => opengl_version = OpenglVersion.gles_2, - .gles_2, .gles_3, .gl_soft => {}, - else => @panic("opengl version not supported"), - } - - raylib_mod.addCMacro("PLATFORM_WEB_RGFW", ""); - const activate_emsdk_step = emsdk.zemscripten.activateEmsdkStep(b); - raylib.step.dependOn(activate_emsdk_step); - }, - else => @panic("Target is not supported with this platform"), - } - - raylib_mod.addCMacro(opengl_version.toCMacroStr(), ""); - }, - .sdl, .sdl2, .sdl3 => { - if (options.opengl_version == .auto) { - raylib_mod.addCMacro(OpenglVersion.gl_3_3.toCMacroStr(), ""); - } else { - raylib_mod.addCMacro(options.opengl_version.toCMacroStr(), ""); - } - - raylib_mod.addCMacro("PLATFORM_DESKTOP_SDL", ""); - - if (options.platform == .sdl2) { - raylib_mod.addCMacro("USING_SDL2_PACKAGE", ""); - } - if (options.platform == .sdl3) { - raylib_mod.addCMacro("USING_SDL3_PACKAGE", ""); - } - }, - .memory => { - if (options.opengl_version != .auto and options.opengl_version != .gl_soft) { - @panic("The opengl version is not supported by this platform"); - } - raylib_mod.addCMacro(OpenglVersion.gl_soft.toCMacroStr(), ""); - raylib_mod.addCMacro("PLATFORM_MEMORY", ""); - }, - .win32 => { - if (target.result.os.tag != .windows) { - @panic("Target is not supported with this platform"); - } - - if (options.opengl_version == .auto) { - raylib_mod.addCMacro(OpenglVersion.gl_3_3.toCMacroStr(), ""); - } else { - raylib_mod.addCMacro(options.opengl_version.toCMacroStr(), ""); - } - - raylib_mod.addCMacro("PLATFORM_DESKTOP_WIN32", ""); - - linkWindows(raylib_mod, options.opengl_version != .gl_soft, true); - }, - .drm => { - if (target.result.os.tag != .linux) { - @panic("Target is not supported with this platform"); - } - - raylib_mod.addCMacro("PLATFORM_DRM", ""); - raylib_mod.addCMacro("EGL_NO_X11", ""); - raylib_mod.addCMacro("DEFAULT_BATCH_BUFFER_ELEMENT", ""); - - try raylib_flags_arr.append("-Werror=implicit-function-declaration"); - - raylib_mod.linkSystemLibrary("libdrm", .{ .use_pkg_config = .force }); - raylib_mod.linkSystemLibrary("drm", .{}); - raylib_mod.linkSystemLibrary("gbm", .{}); - - switch (options.opengl_version) { - .auto, .gles_2 => { - raylib_mod.addCMacro(OpenglVersion.gles_2.toCMacroStr(), ""); - raylib_mod.linkSystemLibrary("GLESv2", .{}); - raylib_mod.linkSystemLibrary("EGL", .{}); - }, - .gl_soft => {}, - else => @panic("The opengl version is not supported by this platform"), - } - }, - .android => { - if (!target.result.abi.isAndroid()) { - @panic("Target is not supported with this platform"); - } - - raylib_mod.addCMacro("PLATFORM_ANDROID", ""); - - raylib_mod.linkSystemLibrary("EGL", .{}); - switch (options.opengl_version) { - .auto, .gles_2 => { - raylib_mod.addCMacro(OpenglVersion.gles_2.toCMacroStr(), ""); - raylib_mod.linkSystemLibrary("GLESv2", .{}); - }, - else => @panic("The opengl version is not supported by this platform"), - } - - //these are the only tag options per https://developer.android.com/ndk/guides/other_build_systems - const hostTuple = switch (builtin.target.os.tag) { - .linux => "linux-x86_64", - .windows => "windows-x86_64", - .macos => "darwin-x86_64", - else => @panic("unsupported host OS"), - }; - - const androidTriple = switch (target.result.cpu.arch) { - .x86 => "i686-linux-android", - .x86_64 => "x86_64-linux-android", - .arm => "arm-linux-androideabi", - .aarch64 => "aarch64-linux-android", - .riscv64 => "riscv64-linux-android", - else => error.InvalidAndroidTarget, - } catch @panic("invalid android target!"); - const androidNdkPathString: []const u8 = options.android_ndk; - if (androidNdkPathString.len < 1) @panic("no ndk path provided and ANDROID_NDK_HOME is not set"); - const androidApiLevel: []const u8 = options.android_api_version; - - const androidSysroot = try std.fs.path.join(b.allocator, &.{ androidNdkPathString, "/toolchains/llvm/prebuilt/", hostTuple, "/sysroot" }); - const androidLibPath = try std.fs.path.join(b.allocator, &.{ androidSysroot, "/usr/lib/", androidTriple }); - const androidApiSpecificPath = try std.fs.path.join(b.allocator, &.{ androidLibPath, androidApiLevel }); - const androidIncludePath = try std.fs.path.join(b.allocator, &.{ androidSysroot, "/usr/include" }); - const androidArchIncludePath = try std.fs.path.join(b.allocator, &.{ androidIncludePath, androidTriple }); - const androidAsmPath = try std.fs.path.join(b.allocator, &.{ androidIncludePath, "/asm-generic" }); - const androidGluePath = try std.fs.path.join(b.allocator, &.{ androidNdkPathString, "/sources/android/native_app_glue/" }); - - raylib_mod.addLibraryPath(.{ .cwd_relative = androidLibPath }); - raylib_mod.addLibraryPath(.{ .cwd_relative = androidApiSpecificPath }); - raylib_mod.addSystemIncludePath(.{ .cwd_relative = androidIncludePath }); - raylib_mod.addSystemIncludePath(.{ .cwd_relative = androidArchIncludePath }); - raylib_mod.addSystemIncludePath(.{ .cwd_relative = androidAsmPath }); - raylib_mod.addSystemIncludePath(.{ .cwd_relative = androidGluePath }); - - const libc_data = try std.fmt.allocPrint(b.allocator, - \\include_dir={0s}/sysroot/usr/include - \\sys_include_dir={0s}/sysroot/usr/include/aarch64-linux-android - \\crt_dir={0s}/sysroot/usr/lib/aarch64-linux-android/24 - \\static_lib_dir={0s}/sysroot/usr/lib/aarch64-linux-android/24 - \\msvc_lib_dir= - \\kernel32_lib_dir= - \\gcc_dir= - \\ - , .{androidNdkPathString}); - const write_step = b.addWriteFiles(); - const libcFile = write_step.add("android-libc.txt", libc_data); - raylib.setLibCFile(libcFile); - }, - } - - raylib_mod.addCSourceFiles(.{ - .files = c_source_files.items, - .flags = raylib_flags_arr.items, - }); - - return raylib; -} - -fn addRaygui(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, raylib: *std.Build.Step.Compile) void { - if (b.lazyDependency("raygui", .{ - .target = target, - .optimize = optimize, - .link_libc = true, - })) |raygui_dep| { - var gen_step = b.addWriteFiles(); - raylib.step.dependOn(&gen_step.step); - - const raygui_c_path = gen_step.add("raygui.c", "#define RAYGUI_IMPLEMENTATION\n#include \"raygui.h\"\n"); - raylib.root_module.addCSourceFile(.{ .file = raygui_c_path }); - raylib.root_module.addIncludePath(raygui_dep.path("src")); - raylib.root_module.addIncludePath(b.path("src")); - - raylib.installHeader(raygui_dep.path("src/raygui.h"), "raygui.h"); - - const c = b.addTranslateC(.{ - .root_source_file = raygui_dep.path("src/raygui.h"), - .target = target, - .optimize = optimize, - .link_libc = true, - }); - c.addIncludePath(b.path("src")); - const c_mod = c.createModule(); - c_mod.linkLibrary(raylib); - b.modules.put(b.graph.arena, "raygui", c_mod) catch @panic("OOM"); - } -} - -pub const Options = struct { - raudio: bool = true, - rmodels: bool = true, - rshapes: bool = true, - rtext: bool = true, - rtextures: bool = true, - raygui: bool = false, - platform: PlatformBackend = .glfw, - linkage: std.builtin.LinkMode = .static, - linux_display_backend: LinuxDisplayBackend = .X11, - opengl_version: OpenglVersion = .auto, - android_ndk: []const u8 = "", - android_api_version: []const u8 = "35", - /// config should be a list of space-separated cflags, eg, "-DSUPPORT_CUSTOM_FRAME_CONTROL" - config: []const u8 = &.{}, - - const defaults = Options{}; - - pub fn getOptions(b: *std.Build) Options { - return .{ - .platform = b.option(PlatformBackend, "platform", "Choose the platform backend for desktop target") orelse defaults.platform, - .raudio = b.option(bool, "raudio", "Compile with audio support") orelse defaults.raudio, - .rmodels = b.option(bool, "rmodels", "Compile with models support") orelse defaults.rmodels, - .rtext = b.option(bool, "rtext", "Compile with text support") orelse defaults.rtext, - .rtextures = b.option(bool, "rtextures", "Compile with textures support") orelse defaults.rtextures, - .rshapes = b.option(bool, "rshapes", "Compile with shapes support") orelse defaults.rshapes, - .raygui = b.option(bool, "raygui", "Include raygui") orelse defaults.raygui, - .linkage = b.option(std.builtin.LinkMode, "linkage", "Compile as shared or static library") orelse defaults.linkage, - .linux_display_backend = b.option(LinuxDisplayBackend, "linux_display_backend", "Linux display backend to use") orelse defaults.linux_display_backend, - .opengl_version = b.option(OpenglVersion, "opengl_version", "OpenGL version to use") orelse defaults.opengl_version, - .config = b.option([]const u8, "config", "Compile with custom define macros overriding config.h") orelse &.{}, - .android_ndk = b.option([]const u8, "android_ndk", "specify path to android ndk") orelse b.graph.environ_map.get("ANDROID_NDK_HOME") orelse "", - .android_api_version = b.option([]const u8, "android_api_version", "specify target android API level") orelse defaults.android_api_version, - }; - } -}; - -pub const OpenglVersion = enum { - auto, - gl_soft, - gl_1_1, - gl_2_1, - gl_3_3, - gl_4_3, - gles_2, - gles_3, - - pub fn toCMacroStr(self: @This()) []const u8 { - switch (self) { - .auto => @panic("OpenglVersion.auto cannot be turned into a C macro string"), - .gl_soft => return "GRAPHICS_API_OPENGL_SOFTWARE", - .gl_1_1 => return "GRAPHICS_API_OPENGL_11", - .gl_2_1 => return "GRAPHICS_API_OPENGL_21", - .gl_3_3 => return "GRAPHICS_API_OPENGL_33", - .gl_4_3 => return "GRAPHICS_API_OPENGL_43", - .gles_2 => return "GRAPHICS_API_OPENGL_ES2", - .gles_3 => return "GRAPHICS_API_OPENGL_ES3", - } - } -}; - -pub const LinuxDisplayBackend = enum { - None, - X11, - Wayland, - Both, -}; - -pub const PlatformBackend = enum { - glfw, - rgfw, - sdl, - sdl2, - sdl3, - memory, - win32, - drm, - android, -}; - -fn translateCMod( - comptime header: []const u8, - b: *std.Build, - target: std.Build.ResolvedTarget, - optimize: std.builtin.OptimizeMode, - raylib: *std.Build.Step.Compile, -) void { - const c = b.addTranslateC(.{ - .root_source_file = b.path("src/" ++ header ++ ".h"), - .target = target, - .optimize = optimize, - .link_libc = true, - }); - const c_mod = c.createModule(); - c_mod.linkLibrary(raylib); - b.modules.put(b.graph.arena, header, c_mod) catch @panic("OOM"); -} - -pub fn build(b: *std.Build) !void { - const target = b.standardTargetOptions(.{}); - const optimize = b.standardOptimizeOption(.{}); - const options: Options = .getOptions(b); - - const lib = try compileRaylib(b, target, optimize, options); - - lib.installHeader(b.path("src/raylib.h"), "raylib.h"); - lib.installHeader(b.path("src/rcamera.h"), "rcamera.h"); - lib.installHeader(b.path("src/raymath.h"), "raymath.h"); - lib.installHeader(b.path("src/rlgl.h"), "rlgl.h"); - - b.installArtifact(lib); - - translateCMod("raylib", b, target, optimize, lib); - translateCMod("rcamera", b, target, optimize, lib); - translateCMod("raymath", b, target, optimize, lib); - translateCMod("rlgl", b, target, optimize, lib); - - if (options.raygui) { - addRaygui(b, target, optimize, lib); - } - - const examples = b.step("examples", "build/install all examples"); - examples.dependOn(try addExamples("core", b, target, optimize, lib, options.platform)); - examples.dependOn(try addExamples("audio", b, target, optimize, lib, options.platform)); - examples.dependOn(try addExamples("models", b, target, optimize, lib, options.platform)); - examples.dependOn(try addExamples("shaders", b, target, optimize, lib, options.platform)); - examples.dependOn(try addExamples("shapes", b, target, optimize, lib, options.platform)); - examples.dependOn(try addExamples("text", b, target, optimize, lib, options.platform)); - examples.dependOn(try addExamples("textures", b, target, optimize, lib, options.platform)); - examples.dependOn(try addExamples("others", b, target, optimize, lib, options.platform)); -} - -fn addExamples( - comptime module: []const u8, - b: *std.Build, - target: std.Build.ResolvedTarget, - optimize: std.builtin.OptimizeMode, - raylib: *std.Build.Step.Compile, - platform: PlatformBackend, -) !*std.Build.Step { - const all = b.step(module, "All " ++ module ++ " examples"); - const module_subpath = b.pathJoin(&.{ "examples", module }); - - var dir = try b.build_root.handle.openDir(b.graph.io, module_subpath, .{ .iterate = true }); - defer dir.close(b.graph.io); - - var iter = dir.iterate(); - while (try iter.next(b.graph.io)) |entry| { - if (entry.kind != .file) continue; - - const filetype = std.fs.path.extension(entry.name); - if (!std.mem.eql(u8, filetype, ".c")) continue; - - const filename = std.fs.path.stem(entry.name); - const path = b.pathJoin(&.{ module_subpath, entry.name }); - - const exe_mod = b.createModule(.{ - .target = target, - .optimize = optimize, - .link_libc = true, - }); - exe_mod.addCSourceFile(.{ .file = b.path(path) }); - exe_mod.linkLibrary(raylib); - - if (platform == .sdl) { - exe_mod.linkSystemLibrary("SDL2", .{}); - exe_mod.linkSystemLibrary("SDL3", .{}); - } - if (platform == .sdl2) { - exe_mod.linkSystemLibrary("SDL2", .{}); - } - if (platform == .sdl3) { - exe_mod.linkSystemLibrary("SDL3", .{}); - } - - if (std.mem.eql(u8, filename, "rlgl_standalone")) { - if (platform != .glfw) continue; - exe_mod.addIncludePath(b.path("src")); - exe_mod.addIncludePath(b.path("src/external/glfw/include")); - } - if (std.mem.eql(u8, filename, "raylib_opengl_interop")) { - if (platform == .drm) continue; - if (target.result.os.tag == .macos) continue; - exe_mod.addIncludePath(b.path("src/external")); - } - - const run_step = b.step(filename, filename); - - // web exports are completely separate - if (target.query.os_tag == .emscripten) { - exe_mod.addCMacro("PLATFORM_WEB", ""); - - const wasm = b.addLibrary(.{ - .name = filename, - .root_module = exe_mod, - }); - - const install_dir: std.Build.InstallDir = .{ .custom = b.fmt("web/{s}/{s}", .{ module, filename }) }; - const emcc_flags = emsdk.emccDefaultFlags(b.allocator, .{ .optimize = optimize }); - const emcc_settings = emsdk.emccDefaultSettings(b.allocator, .{ .optimize = optimize }); - - const emcc_step = emsdk.emccStep(b, raylib, wasm, .{ - .optimize = optimize, - .flags = emcc_flags, - .settings = emcc_settings, - .shell_file_path = b.path("src/shell.html"), - .install_dir = install_dir, - }); - b.getInstallStep().dependOn(emcc_step); - - const html_filename = try std.fmt.allocPrint(b.allocator, "{s}.html", .{wasm.name}); - const emrun_step = emsdk.emrunStep( - b, - b.getInstallPath(install_dir, html_filename), - &.{}, - ); - - emrun_step.dependOn(emcc_step); - run_step.dependOn(emrun_step); - all.dependOn(emcc_step); - } else { - exe_mod.addCMacro("PLATFORM_DESKTOP", ""); - - const exe = b.addExecutable(.{ - .name = filename, - .root_module = exe_mod, - .use_lld = target.result.os.tag == .windows, - }); - b.installArtifact(exe); - - const install_cmd = b.addInstallArtifact(exe, .{ .dest_sub_path = b.fmt("{s}/{s}", .{ module, filename }) }); - - const run_cmd = b.addRunArtifact(exe); - run_cmd.cwd = b.path(module_subpath); - run_cmd.step.dependOn(&install_cmd.step); - - run_step.dependOn(&run_cmd.step); - all.dependOn(&install_cmd.step); - } - } - return all; -} - -fn waylandGenerate( - b: *std.Build, - raylib: *std.Build.Step.Compile, - comptime waylandDir: []const u8, - comptime source: bool, -) !void { - const dir = try b.build_root.handle.openDir(b.graph.io, waylandDir, .{ .iterate = true }); - defer dir.close(b.graph.io); - - var iter = dir.iterate(); - while (try iter.next(b.graph.io)) |entry| { - if (entry.kind != .file) continue; - const protocolDir = b.pathJoin(&.{ waylandDir, entry.name }); - - const filename = std.fs.path.stem(entry.name); - - const clientHeader = b.fmt("{s}-client-protocol.h", .{filename}); - const client_step = b.addSystemCommand(&.{ "wayland-scanner", "client-header" }); - client_step.addFileArg(b.path(protocolDir)); - raylib.root_module.addIncludePath(client_step.addOutputFileArg(clientHeader).dirname()); - raylib.step.dependOn(&client_step.step); - - if (comptime source) { - const privateCode = b.fmt("{s}-client-protocol-code.c", .{filename}); - const private_step = b.addSystemCommand(&.{ "wayland-scanner", "private-code" }); - private_step.addFileArg(b.path(protocolDir)); - raylib.root_module.addCSourceFile(.{ - .file = private_step.addOutputFileArg(privateCode), - .flags = &.{ "-std=c99", "-O2" }, - }); - raylib.step.dependOn(&private_step.step); - } else { - const privateCodeHeader = b.fmt("{s}-client-protocol-code.h", .{filename}); - const private_head_step = b.addSystemCommand(&.{ "wayland-scanner", "private-code" }); - private_head_step.addFileArg(b.path(protocolDir)); - raylib.root_module.addIncludePath(private_head_step.addOutputFileArg(privateCodeHeader).dirname()); - raylib.step.dependOn(&private_head_step.step); - } - } -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/build.zig.zon b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/build.zig.zon deleted file mode 100644 index 07a1f74..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/build.zig.zon +++ /dev/null @@ -1,36 +0,0 @@ -.{ - .name = .raylib, - .version = "6.0.0", - .minimum_zig_version = "0.16.0", - - .fingerprint = 0x13035e5cb8bc1ac2, // Changing this has security and trust implications. - - .dependencies = .{ - .xcode_frameworks = .{ - .url = "https://pkg.machengine.org/xcode-frameworks/8a1cfb373587ea4c9bb1468b7c986462d8d4e10e.tar.gz", - .hash = "N-V-__8AALShqgXkvqYU6f__FrA22SMWmi2TXCJjNTO1m8XJ", - .lazy = true, - }, - .raygui = .{ - .url = "git+https://github.com/raysan5/raygui#3b2855842ab578a034f827c38cf8f62c042fc983", - .hash = "N-V-__8AAHvybwBw1kyBGn0BW_s1RqIpycNjLf_XbE-fpLUF", - .lazy = true, - }, - .emsdk = .{ - .url = "git+https://github.com/emscripten-core/emsdk#4.0.9", - .hash = "N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ", - }, - .zemscripten = .{ - .url = "git+https://github.com/zig-gamedev/zemscripten#3fa4b778852226c7346bdcc3c1486e875a9a6d02", - .hash = "zemscripten-0.2.0-dev-sRlDqApRAACspTbAZnuNKWIzfWzSYgYkb2nWAXZ-tqqt", - }, - }, - - .paths = .{ - "build.zig", - "build.zig.zon", - "src", - "examples", - "LICENSE", - }, -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/CMakeLists.txt b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/CMakeLists.txt deleted file mode 100644 index ee5469e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/CMakeLists.txt +++ /dev/null @@ -1,211 +0,0 @@ -# Setup the project and settings -project(examples) - -# Directories that contain examples -set(example_dirs - audio - core - models - others - shaders - shapes - text - textures - ) - -# Next few lines will check for existence of symbols or header files -# They are needed for the physac example and threads examples -set(CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=199309L) -include(CheckSymbolExists) -check_symbol_exists(CLOCK_MONOTONIC time.h HAVE_CLOCK_MONOTONIC) -check_symbol_exists(QueryPerformanceCounter windows.h HAVE_QPC) -set(CMAKE_REQUIRED_DEFINITIONS) - -if (HAVE_QPC OR HAVE_CLOCK_MONOTONIC) - set(example_dirs ${example_dirs} physac) -endif () - -include(CheckIncludeFile) -CHECK_INCLUDE_FILE("stdatomic.h" HAVE_STDATOMIC_H) -set(CMAKE_THREAD_PREFER_PTHREAD TRUE) -find_package(Threads) -if (CMAKE_USE_PTHREADS_INIT AND HAVE_STDATOMIC_H) - add_if_flag_compiles("-std=c11" CMAKE_C_FLAGS) - if (THREADS_HAVE_PTHREAD_ARG) - add_if_flag_compiles("-pthread" CMAKE_C_FLAGS) - endif () - if (CMAKE_THREAD_LIBS_INIT) - link_libraries("${CMAKE_THREAD_LIBS_INIT}") - endif () -endif () - -if (APPLE AND NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0") - add_definitions(-DGL_SILENCE_DEPRECATION) - MESSAGE(AUTHOR_WARNING "OpenGL is deprecated starting with macOS 10.14 (Mojave)!") -endif () - -# Collect all source files and resource files -# into a CMake variable -set(example_sources) -set(example_resources) -foreach (example_dir ${example_dirs}) - # Get the .c files - file(GLOB sources ${example_dir}/*.c) - list(APPEND example_sources ${sources}) - - # Any any resources - file(GLOB resources ${example_dir}/resources/*) - list(APPEND example_resources ${resources}) -endforeach () - -if(NOT CMAKE_USE_PTHREADS_INIT OR NOT HAVE_STDATOMIC_H) - # Items requiring pthreads - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_loading_thread.c) -endif () - -if (${PLATFORM} MATCHES "Android") - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/rlgl_standalone.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/standard_lighting.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_3d_picking.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_vr_simulator.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_3d_camera_free.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_3d_camera_first_person.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_world_screen.c) - - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_mesh_picking.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_cubicmap.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_skybox.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_mesh_picking.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_mesh_generation.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_heightmap.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_billboard.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_rlgl_solar_system.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_rlgl_full_solar_system.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_solar_system.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_obj_viewer.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_animation.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_first_person_maze.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_magicavoxel_loading.c) - - - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_custom_uniform.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_model_shader.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_view_depth.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_postprocessing.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_raymarching.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_palette_switch.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_basic_lighting.c) - -elseif (${PLATFORM} MATCHES "Web") - set(example_sources) # clear example_sources - list(APPEND example_sources others/web_basic_window.c) - list(APPEND example_sources core/core_input_gestures_testbed.c) - -elseif ("${PLATFORM}" STREQUAL "DRM") - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/rlgl_standalone.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/raylib_opengl_interop.c) - -elseif ("${PLATFORM}" MATCHES "Memory") - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/raylib_opengl_interop.c) - -elseif ("${OPENGL_VERSION}" STREQUAL "Software") - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/rlgl_standalone.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/raylib_opengl_interop.c) - -elseif (NOT SUPPORT_GESTURES_SYSTEM) - # Items requiring gestures system - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/textures/textures_mouse_painting.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_basic_screen_manager.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_input_gestures_web.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_input_gestures.c) - -endif () - -# The rlgl_standalone example only targets desktop, without shared libraries. -if (BUILD_SHARED_LIBS OR NOT ${PLATFORM} MATCHES "Desktop") - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/rlgl_standalone.c) -endif() - -# The audio examples fail to link if raylib is built without raudio -if (NOT SUPPORT_MODULE_RAUDIO) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/audio/audio_mixed_processor.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/audio/audio_module_playing.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/audio/audio_music_stream.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/audio/audio_raw_stream.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/audio/audio_sound_loading.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/audio/audio_sound_multi.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/audio/audio_stream_effects.c) - - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/embedded_files_loading.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/textures/textures_sprite_button.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/textures/textures_sprite_explosion.c) -endif() - -include_directories(BEFORE SYSTEM others/external/include) - -if (NOT TARGET raylib) - find_package(raylib 2.0 REQUIRED) -endif () - -# Do each example -foreach (example_source ${example_sources}) - # Create the basename for the example - get_filename_component(example_name ${example_source} NAME) - string(REPLACE ".c" "" example_name ${example_name}) - - # Setup the example - add_executable(${example_name} ${example_source}) - - target_link_libraries(${example_name} raylib) - if (NOT WIN32) - target_link_libraries(${example_name} m) - endif() - - string(REGEX MATCH ".*/.*/" resources_dir ${example_source}) - string(APPEND resources_dir "resources") - - if (${PLATFORM} MATCHES "Web") - target_compile_options(${example_name} PRIVATE -Os) - target_link_options(${example_name} PRIVATE - -sALLOW_MEMORY_GROWTH=1 - -sEXPORTED_RUNTIME_METHODS=[requestFullscreen] - -sUSE_GLFW=3 - --shell-file "${CMAKE_SOURCE_DIR}/src/shell.html" - ) - set_target_properties(${example_name} PROPERTIES SUFFIX ".html") - - if (EXISTS ${resources_dir}) - # The local resources path needs to be mapped to /resources virtual path - string(APPEND resources_dir "@resources") - set_target_properties(${example_name} PROPERTIES LINK_FLAGS "--preload-file ${resources_dir}") - endif () - - if(${GRAPHICS} MATCHES "GRAPHICS_API_OPENGL_ES3") - target_link_options(${example_name} PUBLIC "-sMIN_WEBGL_VERSION=2") - target_link_options(${example_name} PUBLIC "-sMAX_WEBGL_VERSION=2") - endif() - - # Checks if OSX and links appropriate frameworks (Only required on MacOS) - if (APPLE) - target_link_libraries(${example_name} "-framework IOKit") - target_link_libraries(${example_name} "-framework Cocoa") - target_link_libraries(${example_name} "-framework OpenGL") - endif() - - elseif (${PLATFORM} MATCHES "RGFW") - if (APPLE) - target_link_libraries(${example_name} "-framework IOKit") - target_link_libraries(${example_name} "-framework Cocoa") - target_link_libraries(${example_name} "-framework OpenGL") - elseif (WIN32) - target_link_libraries(${example_name} "-lgdi32") - target_link_libraries(${example_name} "-lwinmm") - elseif (UNIX) - target_link_libraries(${example_name} "-lX11") - target_link_libraries(${example_name} "-lXrandr") - endif() - endif () -endforeach () - -# Copy all of the resource files to the destination -file(COPY ${example_resources} DESTINATION "resources/") diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/Makefile b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/Makefile deleted file mode 100644 index 334f596..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/Makefile +++ /dev/null @@ -1,808 +0,0 @@ -#************************************************************************************************** -# -# raylib makefile for multiple platforms -# -# This file supports building raylib examples for the following platforms: -# -# > PLATFORM_DESKTOP -# - Defaults to PLATFORM_DESKTOP_GLFW -# > PLATFORM_DESKTOP_GFLW (GLFW backend): -# - Windows (Win32, Win64) -# - Linux (X11/Wayland desktop mode) -# - macOS/OSX (x64, arm64) -# - FreeBSD, OpenBSD, NetBSD, DragonFly (X11 desktop) -# > PLATFORM_DESKTOP_SDL (SDL backend): -# - Windows (Win32, Win64) -# - Linux (X11/Wayland desktop mode) -# - Others (not tested) -# > PLATFORM_DESKTOP_RGFW (RGFW backend): -# - Windows (Win32, Win64) -# - Linux (X11 desktop mode) -# - macOS/OSX (x64, arm64 (not tested)) -# - Others (not tested) -# > PLATFORM_WEB_RGFW: -# - HTML5 (WebAssembly) -# > PLATFORM_WEB: -# - HTML5 (WebAssembly) -# > PLATFORM_DRM: -# - Raspberry Pi 0-5 (DRM/KMS) -# - Linux DRM subsystem (KMS mode) -# > PLATFORM_ANDROID: -# - Android (ARM, ARM64) -# -# Copyright (c) 2013-2026 Ramon Santamaria (@raysan5) -# -# 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. -# -#************************************************************************************************** - -.PHONY: all clean - -# Define required environment variables -#------------------------------------------------------------------------------------------------ -# Define target platform: PLATFORM_DESKTOP, PLATFORM_DESKTOP_SDL, PLATFORM_DRM, PLATFORM_ANDROID, PLATFORM_WEB, PLATFORM_WEB_RGFW -PLATFORM ?= PLATFORM_DESKTOP - -ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_DESKTOP_GLFW PLATFORM_DESKTOP_SDL PLATFORM_DESKTOP_RGFW)) - TARGET_PLATFORM := $(PLATFORM) - override PLATFORM = PLATFORM_DESKTOP -else - ifeq ($(PLATFORM), PLATFORM_DESKTOP) - TARGET_PLATFORM = PLATFORM_DESKTOP_GLFW - else - TARGET_PLATFORM = $(PLATFORM) - endif -endif - -# Define required raylib variables -PROJECT_NAME ?= raylib_examples -RAYLIB_VERSION ?= 6.0.0 -RAYLIB_PATH ?= .. - -# Define raylib source code path -RAYLIB_SRC_PATH ?= ../src - -# Locations of raylib.h and libraylib.a/libraylib.so -# NOTE: Those variables are only used for PLATFORM_OS: LINUX, BSD -DESTDIR ?= /usr/local -RAYLIB_INCLUDE_PATH ?= $(DESTDIR)/include -RAYLIB_LIB_PATH ?= $(DESTDIR)/lib - -# Library type compilation: STATIC (.a) or SHARED (.so/.dll) -RAYLIB_LIBTYPE ?= STATIC - -# Build mode for project: DEBUG or RELEASE -BUILD_MODE ?= RELEASE - -# Use external GLFW library instead of rglfw module -USE_EXTERNAL_GLFW ?= FALSE - -# Enable support for X11 by default on Linux when using GLFW -# NOTE: Wayland is disabled by default, only enable if you are sure -GLFW_LINUX_ENABLE_WAYLAND ?= FALSE -GLFW_LINUX_ENABLE_X11 ?= TRUE - -# Enable support for X11 by default on Linux when using RGFW -# NOTE: Wayland is disabled by default, only enable if you are sure -RGFW_LINUX_ENABLE_WAYLAND ?= FALSE -RGFW_LINUX_ENABLE_X11 ?= TRUE - -# PLATFORM_DESKTOP_SDL: It requires SDL library to be provided externally -# WARNING: Library is not included in raylib, it MUST be configured by users -SDL_INCLUDE_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/include -SDL_LIBRARY_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/lib -SDL_LIBRARIES ?= -lSDL2 -lSDL2main - -# Use Wayland display server protocol on Linux desktop (by default it uses X11 windowing system) -# NOTE: This variable is only used for PLATFORM_OS: LINUX -USE_WAYLAND_DISPLAY ?= FALSE - -# PLATFORM_WEB: Default properties -BUILD_WEB_ASYNCIFY ?= TRUE -BUILD_WEB_SHELL ?= $(RAYLIB_PATH)/src/minshell.html -BUILD_WEB_HEAP_SIZE ?= 134217728 -BUILD_WEB_RESOURCES ?= TRUE -BUILD_WEB_RESOURCES_PATH ?= $(dir $<)resources@resources -# Use WebGL2 backend (OpenGL 3.0) -# WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3 -BUILD_WEB_WEBGL2 ?= FALSE - -# Determine PLATFORM_OS when required -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW PLATFORM_DESKTOP_SDL PLATFORM_DESKTOP_RGFW PLATFORM_WEB PLATFORM_WEB_RGFW)) - # No uname.exe on MinGW!, but OS=Windows_NT on Windows! - # ifeq ($(UNAME),Msys) -> Windows - ifeq ($(OS),Windows_NT) - PLATFORM_OS = WINDOWS - else - UNAMEOS = $(shell uname) - ifeq ($(UNAMEOS),Linux) - PLATFORM_OS = LINUX - endif - ifeq ($(UNAMEOS),FreeBSD) - PLATFORM_OS = BSD - endif - ifeq ($(UNAMEOS),OpenBSD) - PLATFORM_OS = BSD - endif - ifeq ($(UNAMEOS),NetBSD) - PLATFORM_OS = BSD - endif - ifeq ($(UNAMEOS),DragonFly) - PLATFORM_OS = BSD - endif - ifeq ($(UNAMEOS),Darwin) - PLATFORM_OS = OSX - endif - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - UNAMEOS = $(shell uname) - ifeq ($(UNAMEOS),Linux) - PLATFORM_OS = LINUX - endif -endif - -# Default path for raylib on Raspberry Pi -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - RAYLIB_PATH ?= /home/pi/raylib -endif - -# Define raylib release directory for compiled library -RAYLIB_RELEASE_PATH ?= $(RAYLIB_PATH)/src - -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - ifeq ($(PLATFORM_OS),WINDOWS) - # Emscripten required variables - EMSDK_PATH ?= C:/raylib/emsdk - EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten - CLANG_PATH = $(EMSDK_PATH)/upstream/bin - PYTHON_PATH = $(EMSDK_PATH)/python/3.13.3_64bit - NODE_PATH = $(EMSDK_PATH)/node/22.16.0_64bit/bin - export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH) - endif -endif - -# Define default C compiler: CC -#------------------------------------------------------------------------------------------------ -CC = gcc - -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),OSX) - # OSX default compiler - CC = clang - endif - ifeq ($(PLATFORM_OS),BSD) - # FreeBSD, OpenBSD, NetBSD, DragonFly default compiler - CC = clang - endif -endif -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned - # to use emscripten.h and emscripten_set_main_loop() - CC = emcc -endif - -# Define default make program: MAKE -#------------------------------------------------------------------------------------------------ -MAKE ?= make - -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),WINDOWS) - MAKE = mingw32-make - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_ANDROID) - ifeq ($(PLATFORM_OS),WINDOWS) - MAKE = mingw32-make - endif -endif -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - ifeq ($(PLATFORM_OS),WINDOWS) - MAKE = mingw32-make - else - EMMAKE := $(shell command -v emmake) - ifneq (, $(EMMAKE)) - MAKE = $(EMMAKE) make - else - MAKE = mingw32-make - endif - endif -endif - -# Define compiler flags: CFLAGS -#------------------------------------------------------------------------------------------------ -# -O1 defines optimization level -# -g include debug information on compilation -# -s strip unnecessary data from build -# -Wall turns on most, but not all, compiler warnings -# -std=c99 defines C language mode (standard C from 1999 revision) -# -std=gnu99 defines C language mode (GNU C from 1999 revision) -# -Wno-missing-braces ignore invalid warning (GCC bug 53119) -# -Wno-unused-value ignore unused return values of some functions (i.e. fread()) -# -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS = -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wno-unused-result - -ifeq ($(BUILD_MODE),DEBUG) - CFLAGS += -g -D_DEBUG -else - ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) - CFLAGS += -O3 - else - CFLAGS += -Os - endif - else - CFLAGS += -O2 - endif -endif - -# Additional flags for compiler (if desired) -# -Wextra enables some extra warning flags that are not enabled by -Wall -# -Wmissing-prototypes warn if a global function is defined without a previous prototype declaration -# -Wstrict-prototypes warn if a function is declared or defined without specifying the argument types -# -Werror=implicit-function-declaration catch function calls without prior declaration -#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),LINUX) - ifeq ($(RAYLIB_LIBTYPE),STATIC) - CFLAGS += -D_DEFAULT_SOURCE - endif - ifeq ($(RAYLIB_LIBTYPE),SHARED) - # Explicitly enable runtime link to libraylib.so - CFLAGS += -Wl,-rpath,$(RAYLIB_RELEASE_PATH) - endif - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - CFLAGS += -std=gnu99 -DEGL_NO_X11 -endif - -# Define include paths for required headers: INCLUDE_PATHS -# NOTE: Some external/extras libraries could be required (stb, easings...) -#------------------------------------------------------------------------------------------------ -INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external $(EXTRA_INCLUDE_PATHS) - -# Define additional directories containing required header files -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),BSD) - INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) -I/usr/pkg/include -I/usr/X11R7/include - endif - ifeq ($(PLATFORM_OS),LINUX) - INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) - INCLUDE_PATHS += -I$(SDL_INCLUDE_PATH) -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) - INCLUDE_PATHS += -I/usr/include/libdrm -endif - -# Define library paths containing required libs: LDFLAGS -#------------------------------------------------------------------------------------------------ -LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) - -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),WINDOWS) - # NOTE: The resource .rc file contains windows executable icon and properties - LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data - # -Wl,--subsystem,windows hides the console window - ifeq ($(BUILD_MODE), RELEASE) - LDFLAGS += -Wl,--subsystem,windows - endif - endif - ifeq ($(PLATFORM_OS),LINUX) - LDFLAGS += -L$(RAYLIB_LIB_PATH) - endif - ifeq ($(PLATFORM_OS),BSD) - LDFLAGS += -Lsrc -L$(RAYLIB_LIB_PATH) - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) - ifeq ($(PLATFORM_OS),WINDOWS) - # NOTE: The resource .rc file contains windows executable icon and properties - LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data - # -Wl,--subsystem,windows hides the console window - ifeq ($(BUILD_MODE), RELEASE) - LDFLAGS += -Wl,--subsystem,windows - endif - endif - LDFLAGS += -L$(SDL_LIBRARY_PATH) -endif -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - # -Os # size optimization - # -O2 # optimization level 2, if used, also set --memory-init-file 0 - # -sUSE_GLFW=3 # Use glfw3 library (context/input management) - # -sALLOW_MEMORY_GROWTH=1 # to allow memory resizing -> WARNING: Audio buffers could FAIL! - # -sTOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) (67108864 = 64MB) - # -sUSE_PTHREADS=1 # multithreading support - # -sWASM=0 # disable Web Assembly, emitted by default - # -sASYNCIFY # lets synchronous C/C++ code interact with asynchronous JS - # -sFORCE_FILESYSTEM=1 # force filesystem to load/save files data - # -sASSERTIONS=1 # enable runtime checks for common memory allocation errors (-O1 and above turn it off) - # -sMINIFY_HTML=0 # minify generated html from shell.html - # --profiling # include information for code profiling - # --memory-init-file 0 # to avoid an external memory initialization code file (.mem) - # --preload-file resources # specify a resources folder for data compilation - # --source-map-base # allow debugging in browser with source map - # --shell-file shell.html # define a custom shell .html and output extension - LDFLAGS += -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sFORCE_FILESYSTEM=1 -sEXPORTED_RUNTIME_METHODS=ccall -sMINIFY_HTML=0 - - # Using GLFW3 library (instead of RGFW) - ifeq ($(TARGET_PLATFORM),PLATFORM_WEB) - LDFLAGS += -sUSE_GLFW=3 - endif - - # Build using asyncify - ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) - LDFLAGS += -sASYNCIFY - endif - - # NOTE: Flags required for WebGL 2.0 (OpenGL ES 3.0) - # WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3 - ifeq ($(BUILD_WEB_WEBGL2),TRUE) - LDFLAGS += -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 - endif - - # Add resources building if required - ifeq ($(BUILD_WEB_RESOURCES),TRUE) - LDFLAGS += --preload-file $(BUILD_WEB_RESOURCES_PATH) - endif - - # Add debug mode flags if required - ifeq ($(BUILD_MODE),DEBUG) - LDFLAGS += -sASSERTIONS=1 --profiling - endif - - # Define a custom shell .html and output extension - LDFLAGS += --shell-file $(BUILD_WEB_SHELL) - EXT = .html - - # NOTE: Simple raylib examples are compiled to be interpreter with asyncify, that way, - # we can compile same code for ALL platforms with no change required, but, working on bigger - # projects, code needs to be refactored to avoid a blocking while() loop, moving Update and Draw - # logic to a self contained function: UpdateDrawFrame(), check core_basic_window_web.c for reference. - -endif - -# Define libraries required on linking: LDLIBS -# NOTE: To link libraries (lib.so or lib.a), use -l -#------------------------------------------------------------------------------------------------ -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),WINDOWS) - # Libraries for Windows desktop compilation - # NOTE: WinMM library required to set high-res timer resolution - LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm - endif - ifeq ($(PLATFORM_OS),LINUX) - # Libraries for Debian GNU/Linux desktop compiling - # NOTE: Required packages: libegl1-mesa-dev - LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - - # On Wayland, additional libraries requires - ifeq ($(GLFW_LINUX_ENABLE_WAYLAND),TRUE) - LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon - endif - - ifeq ($(GLFW_LINUX_ENABLE_X11),TRUE) - # On X11, additional libraries required - LDLIBS += -lX11 - # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them - #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - endif - # Explicit link to libc - ifeq ($(RAYLIB_LIBTYPE),SHARED) - LDLIBS += -lc - endif - - # NOTE: On ARM 32bit arch, miniaudio requires atomics library - LDLIBS += -latomic - endif - ifeq ($(PLATFORM_OS),OSX) - # Libraries for OSX 10.9 desktop compiling - # NOTE: Required packages: libopenal-dev libegl1-mesa-dev - LDLIBS = -lraylib -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo - endif - ifeq ($(PLATFORM_OS),BSD) - # Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling - # NOTE: Required packages: mesa-libs - LDFLAGS += -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib - LDLIBS = -lraylib -lGL -lm -lpthread - - # On XWindow requires also below libraries - LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - endif - ifeq ($(USE_EXTERNAL_GLFW),TRUE) - # NOTE: It could require additional packages installed: libglfw3-dev - LDLIBS += -lglfw - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) - ifeq ($(PLATFORM_OS),WINDOWS) - # Libraries for Windows desktop compilation - LDLIBS = -lraylib $(SDL_LIBRARIES) -lopengl32 -lgdi32 - endif - ifeq ($(PLATFORM_OS),LINUX) - # Libraries for Debian GNU/Linux desktop compiling - # NOTE: Required packages: libegl1-mesa-dev - LDLIBS = -lraylib $(SDL_LIBRARIES) -lGL -lm -lpthread -ldl -lrt - - # On X11, addition libraries required - LDLIBS += -lX11 - # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them - #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - - # On Wayland, additional libraries requires - ifeq ($(USE_WAYLAND_DISPLAY),TRUE) - LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon - endif - - # Explicit link to libc - ifeq ($(RAYLIB_LIBTYPE),SHARED) - LDLIBS += -lc - endif - - # NOTE: On ARM 32bit arch, miniaudio requires atomics library - LDLIBS += -latomic - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_RGFW) - ifeq ($(PLATFORM_OS),WINDOWS) - # Libraries for Windows desktop compilation - LDFLAGS += -L..\src - LDLIBS = -lraylib -lgdi32 -lwinmm -lopengl32 - endif - ifeq ($(PLATFORM_OS),LINUX) - # Libraries for Debian GNU/Linux desktop compipling - # NOTE: Required packages: libegl1-mesa-dev - LDFLAGS += -L../src - LDLIBS = -lraylib -lm - - ifeq ($(RGFW_LINUX_ENABLE_X11),TRUE) - LDLIBS += -lGL -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor -lpthread -ldl -lrt - endif - - ifeq ($(RGFW_LINUX_ENABLE_WAYLAND),TRUE) - LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon - endif - - # Explicit link to libc - ifeq ($(RAYLIB_LIBTYPE),SHARED) - LDLIBS += -lc - endif - - # NOTE: On ARM 32bit arch, miniaudio requires atomics library - LDLIBS += -latomic - endif - ifeq ($(PLATFORM_OS),OSX) - # Libraries for Debian GNU/Linux desktop compiling - # NOTE: Required packages: libegl1-mesa-dev - LDFLAGS += -L../src - LDLIBS = -lraylib -lm - LDLIBS += -framework Foundation -framework AppKit -framework IOKit -framework OpenGL -framework CoreVideo - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - # Libraries for DRM compiling - # NOTE: Required packages: libasound2-dev (ALSA) - LDLIBS = -lraylib -lGLESv2 -lEGL -ldrm -lgbm -lpthread -lrt -lm -ldl -latomic - # TODO: Examples compilation does not define GRAPHICS, is it required? - #ifeq ($(GRAPHICS),GRAPHICS_API_OPENGL_ES2) - # LDLIBS += -lGLESv2 -lEGL - #endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_WIN32) - # Libraries for Windows desktop compilation - LDFLAGS += -L..\src - LDLIBS = -lraylib -lgdi32 -lwinmm -lshcore - ifneq ($(GRAPHICS),GRAPHICS_API_OPENGL_SOFTWARE) - LDLIBS += -lopengl32 - endif -endif -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - # Libraries for web (HTML5) compiling - LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.web.a -endif - -CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) - -# Define source code object files required -#------------------------------------------------------------------------------------------------ -#EXAMPLES_LIST_START -CORE = \ - core/core_2d_camera \ - core/core_2d_camera_mouse_zoom \ - core/core_2d_camera_platformer \ - core/core_2d_camera_split_screen \ - core/core_3d_camera_first_person \ - core/core_3d_camera_fps \ - core/core_3d_camera_free \ - core/core_3d_camera_mode \ - core/core_3d_camera_split_screen \ - core/core_3d_picking \ - core/core_automation_events \ - core/core_basic_screen_manager \ - core/core_basic_window \ - core/core_clipboard_text \ - core/core_compute_hash \ - core/core_custom_frame_control \ - core/core_custom_logging \ - core/core_delta_time \ - core/core_directory_files \ - core/core_drop_files \ - core/core_highdpi_demo \ - core/core_highdpi_testbed \ - core/core_input_actions \ - core/core_input_gamepad \ - core/core_input_gestures \ - core/core_input_gestures_testbed \ - core/core_input_keys \ - core/core_input_mouse \ - core/core_input_mouse_wheel \ - core/core_input_multitouch \ - core/core_input_virtual_controls \ - core/core_keyboard_testbed \ - core/core_monitor_detector \ - core/core_random_sequence \ - core/core_random_values \ - core/core_render_texture \ - core/core_scissor_test \ - core/core_screen_recording \ - core/core_smooth_pixelperfect \ - core/core_storage_values \ - core/core_text_file_loading \ - core/core_undo_redo \ - core/core_viewport_scaling \ - core/core_vr_simulator \ - core/core_window_flags \ - core/core_window_letterbox \ - core/core_window_should_close \ - core/core_window_web \ - core/core_world_screen - -SHAPES = \ - shapes/shapes_ball_physics \ - shapes/shapes_basic_shapes \ - shapes/shapes_bouncing_ball \ - shapes/shapes_bullet_hell \ - shapes/shapes_circle_sector_drawing \ - shapes/shapes_clock_of_clocks \ - shapes/shapes_collision_area \ - shapes/shapes_colors_palette \ - shapes/shapes_dashed_line \ - shapes/shapes_digital_clock \ - shapes/shapes_double_pendulum \ - shapes/shapes_easings_ball \ - shapes/shapes_easings_box \ - shapes/shapes_easings_rectangles \ - shapes/shapes_easings_testbed \ - shapes/shapes_following_eyes \ - shapes/shapes_hilbert_curve \ - shapes/shapes_kaleidoscope \ - shapes/shapes_lines_bezier \ - shapes/shapes_lines_drawing \ - shapes/shapes_logo_raylib \ - shapes/shapes_logo_raylib_anim \ - shapes/shapes_math_angle_rotation \ - shapes/shapes_math_sine_cosine \ - shapes/shapes_mouse_trail \ - shapes/shapes_penrose_tile \ - shapes/shapes_pie_chart \ - shapes/shapes_rectangle_advanced \ - shapes/shapes_rectangle_scaling \ - shapes/shapes_recursive_tree \ - shapes/shapes_ring_drawing \ - shapes/shapes_rlgl_color_wheel \ - shapes/shapes_rlgl_triangle \ - shapes/shapes_rounded_rectangle_drawing \ - shapes/shapes_simple_particles \ - shapes/shapes_splines_drawing \ - shapes/shapes_starfield_effect \ - shapes/shapes_top_down_lights \ - shapes/shapes_triangle_strip \ - shapes/shapes_vector_angle - -TEXTURES = \ - textures/textures_background_scrolling \ - textures/textures_blend_modes \ - textures/textures_bunnymark \ - textures/textures_cellular_automata \ - textures/textures_clipboard_image \ - textures/textures_fog_of_war \ - textures/textures_framebuffer_rendering \ - textures/textures_gif_player \ - textures/textures_image_channel \ - textures/textures_image_drawing \ - textures/textures_image_generation \ - textures/textures_image_kernel \ - textures/textures_image_loading \ - textures/textures_image_processing \ - textures/textures_image_rotate \ - textures/textures_image_text \ - textures/textures_logo_raylib \ - textures/textures_magnifying_glass \ - textures/textures_mouse_painting \ - textures/textures_npatch_drawing \ - textures/textures_particles_blending \ - textures/textures_polygon_drawing \ - textures/textures_raw_data \ - textures/textures_screen_buffer \ - textures/textures_sprite_animation \ - textures/textures_sprite_button \ - textures/textures_sprite_explosion \ - textures/textures_sprite_stacking \ - textures/textures_srcrec_dstrec \ - textures/textures_textured_curve \ - textures/textures_tiled_drawing \ - textures/textures_to_image - -TEXT = \ - text/text_3d_drawing \ - text/text_codepoints_loading \ - text/text_font_filters \ - text/text_font_loading \ - text/text_font_sdf \ - text/text_font_spritefont \ - text/text_format_text \ - text/text_inline_styling \ - text/text_input_box \ - text/text_rectangle_bounds \ - text/text_sprite_fonts \ - text/text_strings_management \ - text/text_unicode_emojis \ - text/text_unicode_ranges \ - text/text_words_alignment \ - text/text_writing_anim - -MODELS = \ - models/models_animation_blend_custom \ - models/models_animation_blending \ - models/models_animation_gpu_skinning \ - models/models_animation_timing \ - models/models_basic_voxel \ - models/models_billboard_rendering \ - models/models_bone_socket \ - models/models_box_collisions \ - models/models_cubicmap_rendering \ - models/models_decals \ - models/models_directional_billboard \ - models/models_first_person_maze \ - models/models_geometric_shapes \ - models/models_heightmap_rendering \ - models/models_loading \ - models/models_loading_gltf \ - models/models_loading_iqm \ - models/models_loading_m3d \ - models/models_loading_vox \ - models/models_mesh_generation \ - models/models_mesh_picking \ - models/models_orthographic_projection \ - models/models_point_rendering \ - models/models_rlgl_solar_system \ - models/models_rotating_cube \ - models/models_skybox_rendering \ - models/models_tesseract_view \ - models/models_textured_cube \ - models/models_waving_cubes \ - models/models_yaw_pitch_roll - -SHADERS = \ - shaders/shaders_ascii_rendering \ - shaders/shaders_basic_lighting \ - shaders/shaders_basic_pbr \ - shaders/shaders_cel_shading \ - shaders/shaders_color_correction \ - shaders/shaders_custom_uniform \ - shaders/shaders_deferred_rendering \ - shaders/shaders_depth_rendering \ - shaders/shaders_depth_writing \ - shaders/shaders_eratosthenes_sieve \ - shaders/shaders_fog_rendering \ - shaders/shaders_game_of_life \ - shaders/shaders_hot_reloading \ - shaders/shaders_hybrid_rendering \ - shaders/shaders_julia_set \ - shaders/shaders_lightmap_rendering \ - shaders/shaders_mandelbrot_set \ - shaders/shaders_mesh_instancing \ - shaders/shaders_model_shader \ - shaders/shaders_multi_sample2d \ - shaders/shaders_normalmap_rendering \ - shaders/shaders_palette_switch \ - shaders/shaders_postprocessing \ - shaders/shaders_raymarching_rendering \ - shaders/shaders_rlgl_compute \ - shaders/shaders_rounded_rectangle \ - shaders/shaders_shadowmap_rendering \ - shaders/shaders_shapes_textures \ - shaders/shaders_simple_mask \ - shaders/shaders_spotlight_rendering \ - shaders/shaders_texture_outline \ - shaders/shaders_texture_rendering \ - shaders/shaders_texture_tiling \ - shaders/shaders_texture_waves \ - shaders/shaders_vertex_displacement - -AUDIO = \ - audio/audio_mixed_processor \ - audio/audio_module_playing \ - audio/audio_music_stream \ - audio/audio_raw_stream \ - audio/audio_sound_loading \ - audio/audio_sound_multi \ - audio/audio_sound_positioning \ - audio/audio_spectrum_visualizer \ - audio/audio_stream_callback \ - audio/audio_stream_effects -#EXAMPLES_LIST_END - -# Define processes to execute -#------------------------------------------------------------------------------------------------ -# Default target entry -all: $(CORE) $(SHAPES) $(TEXT) $(TEXTURES) $(MODELS) $(SHADERS) $(AUDIO) - -core: $(CORE) -shapes: $(SHAPES) -textures: $(TEXTURES) -text: $(TEXT) -models: $(MODELS) -shaders: $(SHADERS) -audio: $(AUDIO) - -# Generic compilation pattern -# NOTE: Examples must be ready for Android compilation! -%: %.c -ifeq ($(TARGET_PLATFORM),PLATFORM_ANDROID) - $(MAKE) -f Makefile.Android PROJECT_NAME=$@ PROJECT_SOURCE_FILES=$< -else ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - $(MAKE) -f Makefile.Web $@ -else - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -D$(TARGET_PLATFORM) -endif - -# Clean everything -clean: -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),WINDOWS) - del *.o *.exe /s - endif - ifeq ($(PLATFORM_OS),BSD) - find . -type f -perm -ugo+x -delete - rm -fv *.o - endif - ifeq ($(PLATFORM_OS),LINUX) - find . -type f -executable -delete - rm -fv *.o - endif - ifeq ($(PLATFORM_OS),OSX) - find . -type f -perm +ugo+x -delete - rm -f *.o - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - find . -type f -executable -delete - rm -fv *.o -endif -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - ifeq ($(PLATFORM_OS),WINDOWS) - del *.wasm *.html *.js *.data - else - rm -f */*.wasm */*.html */*.js */*.data - endif -endif - @echo Cleaning done diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/Makefile.Android b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/Makefile.Android deleted file mode 100644 index 0d8da97..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/Makefile.Android +++ /dev/null @@ -1,412 +0,0 @@ -#************************************************************************************************** -# -# raylib makefile for Android project (APK building) -# -# Copyright (c) 2017-2026 Ramon Santamaria (@raysan5) -# -# 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 required raylib variables -PLATFORM ?= PLATFORM_ANDROID -RAYLIB_PATH ?= ..\.. - -# Define Android architecture (armeabi-v7a, arm64-v8a, x86, x86-64) and API version -# Starting in 2019 using ARM64 is mandatory for published apps, -# Starting on August 2020, minimum required target API is Android 10 (API level 29) -ANDROID_ARCH ?= ARM64 -ANDROID_API_VERSION = 29 - -# Android required path variables -# NOTE: Starting with Android NDK r21, no more toolchain generation is required, NDK is the toolchain on itself -ifeq ($(OS),Windows_NT) - ANDROID_NDK = C:/android-ndk - ANDROID_TOOLCHAIN = $(ANDROID_NDK)/toolchains/llvm/prebuilt/windows-x86_64 -else - ANDROID_NDK ?= /usr/lib/android/ndk - ANDROID_TOOLCHAIN = $(ANDROID_NDK)/toolchains/llvm/prebuilt/linux-x86_64 -endif - -ifeq ($(ANDROID_ARCH),ARM) - ANDROID_ARCH_NAME = armeabi-v7a -endif -ifeq ($(ANDROID_ARCH),ARM64) - ANDROID_ARCH_NAME = arm64-v8a -endif -ifeq ($(ANDROID_ARCH),x86) - ANDROID_ARCH_NAME = x86 -endif -ifeq ($(ANDROID_ARCH),x86_64) - ANDROID_ARCH_NAME = x86_64 -endif - -# Required path variables -# NOTE: JAVA_HOME must be set to JDK (using OpenJDK 13) -JAVA_HOME ?= C:/open-jdk -ANDROID_HOME ?= C:/android-sdk -ANDROID_BUILD_TOOLS ?= $(ANDROID_HOME)/build-tools/29.0.3 -ANDROID_PLATFORM_TOOLS = $(ANDROID_HOME)/platform-tools - -# Android project configuration variables -PROJECT_NAME ?= raylib_game -PROJECT_LIBRARY_NAME ?= main -PROJECT_BUILD_ID ?= android -PROJECT_BUILD_PATH ?= $(PROJECT_BUILD_ID).$(PROJECT_NAME) -PROJECT_RESOURCES_PATH ?= resources -PROJECT_SOURCE_FILES ?= raylib_game.c -NATIVE_APP_GLUE_PATH = $(ANDROID_NDK)/sources/android/native_app_glue - -# Some source files are placed in directories, when compiling to some -# output directory other than source, that directory must pre-exist. -# Here we get a list of required folders that need to be created on -# code output folder $(PROJECT_BUILD_PATH)\obj to avoid GCC errors. -PROJECT_SOURCE_DIRS = $(sort $(dir $(PROJECT_SOURCE_FILES))) - -# Android app configuration variables -APP_LABEL_NAME ?= rGame -APP_COMPANY_NAME ?= raylib -APP_PRODUCT_NAME ?= rgame -APP_VERSION_CODE ?= 1 -APP_VERSION_NAME ?= 1.0 -APP_ICON_LDPI ?= $(RAYLIB_PATH)/logo/raylib_36x36.png -APP_ICON_MDPI ?= $(RAYLIB_PATH)/logo/raylib_48x48.png -APP_ICON_HDPI ?= $(RAYLIB_PATH)/logo/raylib_72x72.png -APP_SCREEN_ORIENTATION ?= landscape -APP_KEYSTORE_PASS ?= raylib - -# Library type used for raylib: STATIC (.a) or SHARED (.so/.dll) -RAYLIB_LIBTYPE ?= STATIC - -# Library path for libraylib.a/libraylib.so -RAYLIB_LIB_PATH = $(RAYLIB_PATH)/src - -# Define copy command depending on OS -ifeq ($(OS),Windows_NT) - COPY_COMMAND ?= copy /Y -else - COPY_COMMAND ?= cp -f -endif - -# Shared libs must be added to APK if required -# NOTE: Generated NativeLoader.java automatically load those libraries -ifeq ($(RAYLIB_LIBTYPE),SHARED) - PROJECT_SHARED_LIBS = lib/$(ANDROID_ARCH_NAME)/libraylib.so -endif - -# Compiler and archiver -ifeq ($(ANDROID_ARCH),ARM) - CC = $(ANDROID_TOOLCHAIN)/bin/armv7a-linux-androideabi$(ANDROID_API_VERSION)-clang - AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar -endif -ifeq ($(ANDROID_ARCH),ARM64) - CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android$(ANDROID_API_VERSION)-clang - AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar -endif -ifeq ($(ANDROID_ARCH),x86) - CC = $(ANDROID_TOOLCHAIN)/bin/i686-linux-android$(ANDROID_API_VERSION)-clang - AR = $(ANDROID_TOOLCHAIN)/bin/i686-linux-android-ar -endif -ifeq ($(ANDROID_ARCH),x86_64) - CC = $(ANDROID_TOOLCHAIN)/bin/x86_64-linux-android$(ANDROID_API_VERSION)-clang - AR = $(ANDROID_TOOLCHAIN)/bin/x86_64-linux-android-ar -endif - -# Compiler flags for arquitecture -ifeq ($(ANDROID_ARCH),ARM) - CFLAGS = -std=c99 -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -endif -ifeq ($(ANDROID_ARCH),ARM64) - CFLAGS = -std=c99 -mfix-cortex-a53-835769 -endif -# Compilation functions attributes options -CFLAGS += -ffunction-sections -funwind-tables -fstack-protector-strong -fPIC -# Compiler options for the linker -CFLAGS += -Wall -Wa,--noexecstack -Wformat -Werror=format-security -no-canonical-prefixes -# Preprocessor macro definitions -CFLAGS += -DANDROID -DPLATFORM_ANDROID -D__ANDROID_API__=$(ANDROID_API_VERSION) - -# Paths containing required header files -INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(NATIVE_APP_GLUE_PATH) - -# Linker options -LDFLAGS = -Wl,-soname,lib$(PROJECT_LIBRARY_NAME).so -Wl,--exclude-libs,libatomic.a -LDFLAGS += -Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -# Force linking of library module to define symbol -LDFLAGS += -u ANativeActivity_onCreate -# Library paths containing required libs -LDFLAGS += -L. -L$(PROJECT_BUILD_PATH)/obj -L$(PROJECT_BUILD_PATH)/lib/$(ANDROID_ARCH_NAME) -L$(ANDROID_TOOLCHAIN)\sysroot\usr\lib - -# Define any libraries to link into executable -# if you want to link libraries (libname.so or libname.a), use the -lname -LDLIBS = -lm -lc -lraylib -llog -landroid -lEGL -lGLESv2 -lOpenSLES -ldl - -# Generate target objects list from PROJECT_SOURCE_FILES -OBJS = $(patsubst %.c, $(PROJECT_BUILD_PATH)/obj/%.o, $(PROJECT_SOURCE_FILES)) - -# Android APK building process... some steps required... -# NOTE: typing 'make' will invoke the default target entry called 'all' -# TODO: Use apksigner for APK signing, jarsigner is not recommended -all: create_temp_project_dirs \ - copy_project_required_libs \ - copy_project_resources \ - generate_loader_script \ - generate_android_manifest \ - generate_apk_keystore \ - config_project_package \ - compile_project_code \ - compile_project_class \ - compile_project_class_dex \ - create_project_apk_package \ - sign_project_apk_package \ - zipalign_project_apk_package - -# WARNING: About build signing process: -# - If using apksigner, zipalign must be used before the APK file has been signed. -# - If using jarsigner (not recommended), zipalign must be used after the APK file has been signed. -# REF: https://developer.android.com/tools/zipalign -# REF: https://developer.android.com/tools/apksigner - -# Create required temp directories for APK building -create_temp_project_dirs: -ifeq ($(OS),Windows_NT) - if not exist $(PROJECT_BUILD_PATH) mkdir $(PROJECT_BUILD_PATH) - if not exist $(PROJECT_BUILD_PATH)\obj mkdir $(PROJECT_BUILD_PATH)\obj - if not exist $(PROJECT_BUILD_PATH)\obj mkdir $(PROJECT_BUILD_PATH)\obj\src - if not exist $(PROJECT_BUILD_PATH)\src mkdir $(PROJECT_BUILD_PATH)\src - if not exist $(PROJECT_BUILD_PATH)\src\com mkdir $(PROJECT_BUILD_PATH)\src\com - if not exist $(PROJECT_BUILD_PATH)\src\com\$(APP_COMPANY_NAME) mkdir $(PROJECT_BUILD_PATH)\src\com\$(APP_COMPANY_NAME) - if not exist $(PROJECT_BUILD_PATH)\src\com\$(APP_COMPANY_NAME)\$(APP_PRODUCT_NAME) mkdir $(PROJECT_BUILD_PATH)\src\com\$(APP_COMPANY_NAME)\$(APP_PRODUCT_NAME) - if not exist $(PROJECT_BUILD_PATH)\lib mkdir $(PROJECT_BUILD_PATH)\lib - if not exist $(PROJECT_BUILD_PATH)\lib\$(ANDROID_ARCH_NAME) mkdir $(PROJECT_BUILD_PATH)\lib\$(ANDROID_ARCH_NAME) - if not exist $(PROJECT_BUILD_PATH)\bin mkdir $(PROJECT_BUILD_PATH)\bin - if not exist $(PROJECT_BUILD_PATH)\res mkdir $(PROJECT_BUILD_PATH)\res - if not exist $(PROJECT_BUILD_PATH)\res\drawable-ldpi mkdir $(PROJECT_BUILD_PATH)\res\drawable-ldpi - if not exist $(PROJECT_BUILD_PATH)\res\drawable-mdpi mkdir $(PROJECT_BUILD_PATH)\res\drawable-mdpi - if not exist $(PROJECT_BUILD_PATH)\res\drawable-hdpi mkdir $(PROJECT_BUILD_PATH)\res\drawable-hdpi - if not exist $(PROJECT_BUILD_PATH)\res\values mkdir $(PROJECT_BUILD_PATH)\res\values - if not exist $(PROJECT_BUILD_PATH)\assets mkdir $(PROJECT_BUILD_PATH)\assets - if not exist $(PROJECT_BUILD_PATH)\assets\$(PROJECT_RESOURCES_PATH) mkdir $(PROJECT_BUILD_PATH)\assets\$(PROJECT_RESOURCES_PATH) - if not exist $(PROJECT_BUILD_PATH)\obj\screens mkdir $(PROJECT_BUILD_PATH)\obj\screens -else - mkdir -p $(PROJECT_BUILD_PATH) - mkdir -p $(PROJECT_BUILD_PATH)/obj - mkdir -p $(PROJECT_BUILD_PATH)/obj/src - mkdir -p $(PROJECT_BUILD_PATH)/src - mkdir -p $(PROJECT_BUILD_PATH)/src/com - mkdir -p $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME) - mkdir -p $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME) - mkdir -p $(PROJECT_BUILD_PATH)/lib - mkdir -p $(PROJECT_BUILD_PATH)/lib/$(ANDROID_ARCH_NAME) - mkdir -p $(PROJECT_BUILD_PATH)/bin - mkdir -p $(PROJECT_BUILD_PATH)/res - mkdir -p $(PROJECT_BUILD_PATH)/res/drawable-ldpi - mkdir -p $(PROJECT_BUILD_PATH)/res/drawable-mdpi - mkdir -p $(PROJECT_BUILD_PATH)/res/drawable-hdpi - mkdir -p $(PROJECT_BUILD_PATH)/res/values - mkdir -p $(PROJECT_BUILD_PATH)/assets - mkdir -p $(PROJECT_BUILD_PATH)/assets/$(PROJECT_RESOURCES_PATH) - mkdir -p $(PROJECT_BUILD_PATH)/obj/screens -endif - $(foreach dir, $(PROJECT_SOURCE_DIRS), $(call create_dir, $(dir))) - -define create_dir - mkdir -p $(PROJECT_BUILD_PATH)/obj/$(1) -endef - -# Copy required shared libs for integration into APK -# NOTE: If using shared libs they are loaded by generated NativeLoader.java -copy_project_required_libs: -ifeq ($(RAYLIB_LIBTYPE),SHARED) - $(COPY_COMMAND) $(RAYLIB_LIB_PATH)/libraylib.so $(PROJECT_BUILD_PATH)/lib/$(ANDROID_ARCH_NAME)/libraylib.so -endif -ifeq ($(RAYLIB_LIBTYPE),STATIC) - $(COPY_COMMAND) $(RAYLIB_LIB_PATH)/libraylib.a $(PROJECT_BUILD_PATH)/lib/$(ANDROID_ARCH_NAME)/libraylib.a -endif - -# Copy project required resources: strings.xml, icon.png, assets -# NOTE: Required strings.xml is generated and game resources are copied to assets folder -copy_project_resources: - $(COPY_COMMAND) $(APP_ICON_LDPI) $(PROJECT_BUILD_PATH)/res/drawable-ldpi/icon.png - $(COPY_COMMAND) $(APP_ICON_MDPI) $(PROJECT_BUILD_PATH)/res/drawable-mdpi/icon.png - $(COPY_COMMAND) $(APP_ICON_HDPI) $(PROJECT_BUILD_PATH)/res/drawable-hdpi/icon.png -ifeq ($(OS),Windows_NT) - @echo ^ > $(PROJECT_BUILD_PATH)/res/values/strings.xml - @echo ^^$(APP_LABEL_NAME)^^ >> $(PROJECT_BUILD_PATH)/res/values/strings.xml - if exist $(PROJECT_RESOURCES_PATH) C:\Windows\System32\xcopy $(PROJECT_RESOURCES_PATH) $(PROJECT_BUILD_PATH)\assets\$(PROJECT_RESOURCES_PATH) /Y /E /F -else - @echo "" > $(PROJECT_BUILD_PATH)/res/values/strings.xml - @echo "$(APP_LABEL_NAME)" >> $(PROJECT_BUILD_PATH)/res/values/strings.xml - @[ -d "$(PROJECT_RESOURCES_PATH)" ] || cp -rf $(PROJECT_RESOURCES_PATH) $(PROJECT_BUILD_PATH)/assets/$(PROJECT_RESOURCES_PATH) -endif - -# Generate NativeLoader.java to load required shared libraries -# NOTE: Probably not the bet way to generate this file... but it works. -generate_loader_script: -ifeq ($(OS),Windows_NT) - @echo package com.$(APP_COMPANY_NAME).$(APP_PRODUCT_NAME); > $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo. >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo public class NativeLoader extends android.app.NativeActivity { >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo static { >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java -ifeq ($(RAYLIB_LIBTYPE),SHARED) - @echo System.loadLibrary("raylib"); >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java -endif - @echo System.loadLibrary("$(PROJECT_LIBRARY_NAME)"); >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo } >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo } >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java -else - @echo "package com.$(APP_COMPANY_NAME).$(APP_PRODUCT_NAME);" > $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo "" >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo "public class NativeLoader extends android.app.NativeActivity {" >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo " static {" >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java -ifeq ($(RAYLIB_LIBTYPE),SHARED) - @echo " System.loadLibrary(\"raylib\");" >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java -endif - @echo " System.loadLibrary(\"$(PROJECT_LIBRARY_NAME)\");" >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo " }" >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - @echo "}" >> $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java -endif - -# Generate AndroidManifest.xml with all the required options -# NOTE: Probably not the bet way to generate this file... but it works. -generate_android_manifest: -ifeq ($(OS),Windows_NT) - @echo ^ > $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo package="com.$(APP_COMPANY_NAME).$(APP_PRODUCT_NAME)" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo android:versionCode="$(APP_VERSION_CODE)" android:versionName="$(APP_VERSION_NAME)" ^> >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo android:configChanges="orientation|keyboardHidden|screenSize" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo android:screenOrientation="$(APP_SCREEN_ORIENTATION)" android:launchMode="singleTask" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo android:clearTaskOnLaunch="true"^> >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo ^ >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml -else - @echo "" > $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo "> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " package=\"com.$(APP_COMPANY_NAME).$(APP_PRODUCT_NAME)\" " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " android:versionCode=\"$(APP_VERSION_CODE)\" android:versionName=\"$(APP_VERSION_NAME)\" >" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " > $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " android:theme=\"@android:style/Theme.NoTitleBar.Fullscreen\"" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " android:configChanges=\"orientation|keyboardHidden|screenSize\"" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " android:screenOrientation=\"$(APP_SCREEN_ORIENTATION)\" android:launchMode=\"singleTask\"" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " android:clearTaskOnLaunch=\"true\">" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo " " >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml - @echo "" >> $(PROJECT_BUILD_PATH)/AndroidManifest.xml -endif - -# Generate storekey for APK signing: $(PROJECT_NAME).keystore -# NOTE: Configure here your Distinguished Names (-dname) if required! -generate_apk_keystore: -ifeq ($(OS),Windows_NT) - if not exist $(PROJECT_BUILD_PATH)/$(PROJECT_NAME).keystore $(JAVA_HOME)/bin/keytool -genkeypair -validity 10000 -dname "CN=$(APP_COMPANY_NAME),O=Android,C=ES" -keystore $(PROJECT_BUILD_PATH)/$(PROJECT_NAME).keystore -storepass $(APP_KEYSTORE_PASS) -keypass $(APP_KEYSTORE_PASS) -alias $(PROJECT_NAME)Key -keyalg RSA -else - @[ -f "$(PROJECT_BUILD_PATH)/$(PROJECT_NAME).keystore" ] || $(JAVA_HOME)/bin/keytool -genkeypair -validity 10000 -dname "CN=$(APP_COMPANY_NAME),O=Android,C=ES" -keystore $(PROJECT_BUILD_PATH)/$(PROJECT_NAME).keystore -storepass $(APP_KEYSTORE_PASS) -keypass $(APP_KEYSTORE_PASS) -alias $(PROJECT_NAME)Key -keyalg RSA -endif - -# Config project package and resource using AndroidManifest.xml and res/values/strings.xml -# NOTE: Generates resources file: src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/R.java -config_project_package: - $(ANDROID_BUILD_TOOLS)/aapt package -f -m -S $(PROJECT_BUILD_PATH)/res -J $(PROJECT_BUILD_PATH)/src -M $(PROJECT_BUILD_PATH)/AndroidManifest.xml -I $(ANDROID_HOME)/platforms/android-$(ANDROID_API_VERSION)/android.jar - -# Compile native_app_glue code as static library: obj/libnative_app_glue.a -compile_native_app_glue: - $(CC) -c $(NATIVE_APP_GLUE_PATH)/android_native_app_glue.c -o $(PROJECT_BUILD_PATH)/obj/native_app_glue.o $(CFLAGS) - $(AR) rcs $(PROJECT_BUILD_PATH)/obj/libnative_app_glue.a $(PROJECT_BUILD_PATH)/obj/native_app_glue.o - -# Compile project code into a shared library: lib/lib$(PROJECT_LIBRARY_NAME).so -compile_project_code: $(OBJS) - $(CC) -o $(PROJECT_BUILD_PATH)/lib/$(ANDROID_ARCH_NAME)/lib$(PROJECT_LIBRARY_NAME).so $(OBJS) -shared $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) - -# Compile all .c files required into object (.o) files -# NOTE: Those files will be linked into a shared library -$(PROJECT_BUILD_PATH)/obj/%.o:%.c - $(CC) -c $^ -o $@ $(INCLUDE_PATHS) $(CFLAGS) --sysroot=$(ANDROID_TOOLCHAIN)/sysroot - -# Compile project .java code into .class (Java bytecode) -compile_project_class: - $(JAVA_HOME)/bin/javac -verbose -source 1.7 -target 1.7 -d $(PROJECT_BUILD_PATH)/obj -bootclasspath $(JAVA_HOME)/jre/lib/rt.jar -classpath $(ANDROID_HOME)/platforms/android-$(ANDROID_API_VERSION)/android.jar -d $(PROJECT_BUILD_PATH)/obj $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/R.java $(PROJECT_BUILD_PATH)/src/com/$(APP_COMPANY_NAME)/$(APP_PRODUCT_NAME)/NativeLoader.java - -# Compile .class files into Dalvik executable bytecode (.dex) -# NOTE: Since Android 5.0, Dalvik interpreter (JIT) has been replaced by ART (AOT) -compile_project_class_dex: - $(ANDROID_BUILD_TOOLS)/dx --verbose --dex --output=$(PROJECT_BUILD_PATH)/bin/classes.dex $(PROJECT_BUILD_PATH)/obj - -# Create Android APK package: bin/$(PROJECT_NAME).unsigned.apk -# NOTE: Requires compiled classes.dex and lib$(PROJECT_LIBRARY_NAME).so -# NOTE: Use -A resources to define additional directory in which to find raw asset files -create_project_apk_package: - $(ANDROID_BUILD_TOOLS)/aapt package -f -M $(PROJECT_BUILD_PATH)/AndroidManifest.xml -S $(PROJECT_BUILD_PATH)/res -A $(PROJECT_BUILD_PATH)/assets -I $(ANDROID_HOME)/platforms/android-$(ANDROID_API_VERSION)/android.jar -F $(PROJECT_BUILD_PATH)/bin/$(PROJECT_NAME).unsigned.apk $(PROJECT_BUILD_PATH)/bin - cd $(PROJECT_BUILD_PATH) && $(ANDROID_BUILD_TOOLS)/aapt add bin/$(PROJECT_NAME).unsigned.apk lib/$(ANDROID_ARCH_NAME)/lib$(PROJECT_LIBRARY_NAME).so $(PROJECT_SHARED_LIBS) - -# Create signed APK package using generated Key: bin/$(PROJECT_NAME).signed.apk -sign_project_apk_package: - $(JAVA_HOME)/bin/jarsigner -keystore $(PROJECT_BUILD_PATH)/$(PROJECT_NAME).keystore -storepass $(APP_KEYSTORE_PASS) -keypass $(APP_KEYSTORE_PASS) -signedjar $(PROJECT_BUILD_PATH)/bin/$(PROJECT_NAME).signed.apk $(PROJECT_BUILD_PATH)/bin/$(PROJECT_NAME).unsigned.apk $(PROJECT_NAME)Key - -# Create zip-aligned APK package: $(PROJECT_NAME).apk -zipalign_project_apk_package: - $(ANDROID_BUILD_TOOLS)/zipalign -f 4 $(PROJECT_BUILD_PATH)/bin/$(PROJECT_NAME).signed.apk $(PROJECT_NAME).apk - -# Install $(PROJECT_NAME).apk to default emulator/device -# NOTE: Use -e (emulator) or -d (device) parameters if required -install: - $(ANDROID_PLATFORM_TOOLS)/adb install $(PROJECT_NAME).apk - -# Check supported ABI for the device (armeabi-v7a, arm64-v8a, x86, x86_64) -check_device_abi: - $(ANDROID_PLATFORM_TOOLS)/adb shell getprop ro.product.cpu.abi - -# Monitorize output log coming from device, only raylib tag -logcat: - $(ANDROID_PLATFORM_TOOLS)/adb logcat -c - $(ANDROID_PLATFORM_TOOLS)/adb logcat raylib:V *:S - -# Install and monitorize $(PROJECT_NAME).apk to default emulator/device -deploy: - $(ANDROID_PLATFORM_TOOLS)/adb install $(PROJECT_NAME).apk - $(ANDROID_PLATFORM_TOOLS)/adb logcat -c - $(ANDROID_PLATFORM_TOOLS)/adb logcat raylib:V *:S - -#$(ANDROID_PLATFORM_TOOLS)/adb logcat *:W - -# Clean everything -clean: -ifeq ($(OS),Windows_NT) - del $(PROJECT_BUILD_PATH)\* /f /s /q - rmdir $(PROJECT_BUILD_PATH) /s /q -else - rm -r $(PROJECT_BUILD_PATH) -endif - @echo Cleaning done diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/Makefile.Web b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/Makefile.Web deleted file mode 100644 index 709072b..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/Makefile.Web +++ /dev/null @@ -1,1634 +0,0 @@ -#************************************************************************************************** -# -# raylib makefile for multiple platforms -# -# This file supports building raylib examples for the following platforms: -# -# > PLATFORM_DESKTOP -# - Defaults to PLATFORM_DESKTOP_GLFW -# > PLATFORM_DESKTOP_GFLW (GLFW backend): -# - Windows (Win32, Win64) -# - Linux (X11/Wayland desktop mode) -# - macOS/OSX (x64, arm64) -# - FreeBSD, OpenBSD, NetBSD, DragonFly (X11 desktop) -# > PLATFORM_DESKTOP_SDL (SDL backend): -# - Windows (Win32, Win64) -# - Linux (X11/Wayland desktop mode) -# - Others (not tested) -# > PLATFORM_DESKTOP_RGFW (RGFW backend): -# - Windows (Win32, Win64) -# - Linux (X11 desktop mode) -# - macOS/OSX (x64, arm64 (not tested)) -# - Others (not tested) -# > PLATFORM_WEB_RGFW: -# - HTML5 (WebAssembly) -# > PLATFORM_WEB: -# - HTML5 (WebAssembly) -# > PLATFORM_DRM: -# - Raspberry Pi 0-5 (DRM/KMS) -# - Linux DRM subsystem (KMS mode) -# > PLATFORM_ANDROID: -# - Android (ARM, ARM64) -# -# Copyright (c) 2013-2026 Ramon Santamaria (@raysan5) -# -# 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. -# -#************************************************************************************************** - -.PHONY: all clean - -# Define required environment variables -#------------------------------------------------------------------------------------------------ -# Define target platform: PLATFORM_DESKTOP, PLATFORM_DESKTOP_SDL, PLATFORM_DRM, PLATFORM_ANDROID, PLATFORM_WEB, PLATFORM_WEB_RGFW -PLATFORM ?= PLATFORM_WEB - -ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_DESKTOP_GLFW PLATFORM_DESKTOP_SDL PLATFORM_DESKTOP_RGFW)) - TARGET_PLATFORM := $(PLATFORM) - override PLATFORM = PLATFORM_DESKTOP -else - ifeq ($(PLATFORM), PLATFORM_DESKTOP) - TARGET_PLATFORM = PLATFORM_DESKTOP_GLFW - else - TARGET_PLATFORM = $(PLATFORM) - endif -endif - -# Define required raylib variables -PROJECT_NAME ?= raylib_examples -RAYLIB_VERSION ?= 6.0.0 -RAYLIB_PATH ?= .. - -# Define raylib source code path -RAYLIB_SRC_PATH ?= ../src - -# Locations of raylib.h and libraylib.a/libraylib.so -# NOTE: Those variables are only used for PLATFORM_OS: LINUX, BSD -DESTDIR ?= /usr/local -RAYLIB_INCLUDE_PATH ?= $(DESTDIR)/include -RAYLIB_LIB_PATH ?= $(DESTDIR)/lib - -# Library type compilation: STATIC (.a) or SHARED (.so/.dll) -RAYLIB_LIBTYPE ?= STATIC - -# Build mode for project: DEBUG or RELEASE -BUILD_MODE ?= RELEASE - -# Use external GLFW library instead of rglfw module -USE_EXTERNAL_GLFW ?= FALSE - -# PLATFORM_DESKTOP_SDL: It requires SDL library to be provided externally -# WARNING: Library is not included in raylib, it MUST be configured by users -SDL_INCLUDE_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/include -SDL_LIBRARY_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/lib -SDL_LIBRARIES ?= -lSDL2 -lSDL2main - -# Use Wayland display server protocol on Linux desktop (by default it uses X11 windowing system) -# NOTE: This variable is only used for PLATFORM_OS: LINUX -USE_WAYLAND_DISPLAY ?= FALSE - -# PLATFORM_WEB: Default properties -BUILD_WEB_ASYNCIFY ?= TRUE -BUILD_WEB_SHELL ?= $(RAYLIB_PATH)/src/shell.html -BUILD_WEB_HEAP_SIZE ?= 134217728 -BUILD_WEB_RESOURCES ?= FALSE -BUILD_WEB_RESOURCES_PATH ?= $(dir $<)resources@resources -# Use WebGL2 backend (OpenGL 3.0) -# WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3 -BUILD_WEB_WEBGL2 ?= FALSE - -# Determine PLATFORM_OS when required -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW PLATFORM_DESKTOP_SDL PLATFORM_DESKTOP_RGFW PLATFORM_WEB PLATFORM_WEB_RGFW)) - # No uname.exe on MinGW!, but OS=Windows_NT on Windows! - # ifeq ($(UNAME),Msys) -> Windows - ifeq ($(OS),Windows_NT) - PLATFORM_OS = WINDOWS - else - UNAMEOS = $(shell uname) - ifeq ($(UNAMEOS),Linux) - PLATFORM_OS = LINUX - endif - ifeq ($(UNAMEOS),FreeBSD) - PLATFORM_OS = BSD - endif - ifeq ($(UNAMEOS),OpenBSD) - PLATFORM_OS = BSD - endif - ifeq ($(UNAMEOS),NetBSD) - PLATFORM_OS = BSD - endif - ifeq ($(UNAMEOS),DragonFly) - PLATFORM_OS = BSD - endif - ifeq ($(UNAMEOS),Darwin) - PLATFORM_OS = OSX - endif - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - UNAMEOS = $(shell uname) - ifeq ($(UNAMEOS),Linux) - PLATFORM_OS = LINUX - endif -endif - -# RAYLIB_PATH adjustment for LINUX platform -# TODO: Do we really need this? -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),LINUX) - RAYLIB_PREFIX ?= .. - RAYLIB_PATH = $(realpath $(RAYLIB_PREFIX)) - endif -endif - -# Default path for raylib on Raspberry Pi -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - RAYLIB_PATH ?= /home/pi/raylib -endif - -# Define raylib release directory for compiled library -RAYLIB_RELEASE_PATH ?= $(RAYLIB_PATH)/src - -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - ifeq ($(PLATFORM_OS),WINDOWS) - # Emscripten required variables - EMSDK_PATH ?= C:/raylib/emsdk - EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten - CLANG_PATH = $(EMSDK_PATH)/upstream/bin - PYTHON_PATH = $(EMSDK_PATH)/python/3.13.3_64bit - NODE_PATH = $(EMSDK_PATH)/node/22.16.0_64bit/bin - export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH) - endif -endif - -# Define default C compiler: CC -#------------------------------------------------------------------------------------------------ -CC = gcc - -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),OSX) - # OSX default compiler - CC = clang - endif - ifeq ($(PLATFORM_OS),BSD) - # FreeBSD, OpenBSD, NetBSD, DragonFly default compiler - CC = clang - endif -endif -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned - # to use emscripten.h and emscripten_set_main_loop() - CC = emcc -endif - -# Define default make program: MAKE -#------------------------------------------------------------------------------------------------ -MAKE ?= make - -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),WINDOWS) - MAKE = mingw32-make - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_ANDROID) - MAKE = mingw32-make -endif -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - ifeq ($(PLATFORM_OS),WINDOWS) - MAKE = mingw32-make - else - EMMAKE := $(shell command -v emmake) - ifneq (, $(EMMAKE)) - MAKE = $(EMMAKE) make - else - MAKE = mingw32-make - endif - endif -endif - -# Define compiler flags: CFLAGS -#------------------------------------------------------------------------------------------------ -# -O1 defines optimization level -# -g include debug information on compilation -# -s strip unnecessary data from build -# -Wall turns on most, but not all, compiler warnings -# -std=c99 defines C language mode (standard C from 1999 revision) -# -std=gnu99 defines C language mode (GNU C from 1999 revision) -# -Wno-missing-braces ignore invalid warning (GCC bug 53119) -# -Wno-unused-value ignore unused return values of some functions (i.e. fread()) -# -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS = -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result - -ifeq ($(BUILD_MODE),DEBUG) - CFLAGS += -g -D_DEBUG -else - ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) - CFLAGS += -O3 - else - CFLAGS += -Os - endif - else - CFLAGS += -O2 - endif -endif - -# Additional flags for compiler (if desired) -# -Wextra enables some extra warning flags that are not enabled by -Wall -# -Wmissing-prototypes warn if a global function is defined without a previous prototype declaration -# -Wstrict-prototypes warn if a function is declared or defined without specifying the argument types -# -Werror=implicit-function-declaration catch function calls without prior declaration -#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),LINUX) - ifeq ($(RAYLIB_LIBTYPE),STATIC) - CFLAGS += -D_DEFAULT_SOURCE - endif - ifeq ($(RAYLIB_LIBTYPE),SHARED) - # Explicitly enable runtime link to libraylib.so - CFLAGS += -Wl,-rpath,$(RAYLIB_RELEASE_PATH) - endif - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - CFLAGS += -std=gnu99 -DEGL_NO_X11 -endif - -# Define include paths for required headers: INCLUDE_PATHS -# NOTE: Some external/extras libraries could be required (stb, easings...) -#------------------------------------------------------------------------------------------------ -INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external $(EXTRA_INCLUDE_PATHS) - -# Define additional directories containing required header files -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),BSD) - INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) -I/usr/pkg/include -I/usr/X11R7/include - endif - ifeq ($(PLATFORM_OS),LINUX) - INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) - INCLUDE_PATHS += -I$(SDL_INCLUDE_PATH) -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) - INCLUDE_PATHS += -I/usr/include/libdrm -endif - -# Define library paths containing required libs: LDFLAGS -#------------------------------------------------------------------------------------------------ -LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src - -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),WINDOWS) - # NOTE: The resource .rc file contains windows executable icon and properties - LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data - # -Wl,--subsystem,windows hides the console window - ifeq ($(BUILD_MODE), RELEASE) - LDFLAGS += -Wl,--subsystem,windows - endif - endif - ifeq ($(PLATFORM_OS),LINUX) - LDFLAGS += -L$(RAYLIB_LIB_PATH) - endif - ifeq ($(PLATFORM_OS),BSD) - LDFLAGS += -Lsrc -L$(RAYLIB_LIB_PATH) - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) - ifeq ($(PLATFORM_OS),WINDOWS) - # NOTE: The resource .rc file contains windows executable icon and properties - LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data - # -Wl,--subsystem,windows hides the console window - ifeq ($(BUILD_MODE), RELEASE) - LDFLAGS += -Wl,--subsystem,windows - endif - endif - LDFLAGS += -L$(SDL_LIBRARY_PATH) -endif -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - # -Os # size optimization - # -O2 # optimization level 2, if used, also set --memory-init-file 0 - # -sUSE_GLFW=3 # Use glfw3 library (context/input management) - # -sALLOW_MEMORY_GROWTH=1 # to allow memory resizing -> WARNING: Audio buffers could FAIL! - # -sTOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) (67108864 = 64MB) - # -sUSE_PTHREADS=1 # multithreading support - # -sWASM=0 # disable Web Assembly, emitted by default - # -sASYNCIFY # lets synchronous C/C++ code interact with asynchronous JS - # -sFORCE_FILESYSTEM=1 # force filesystem to load/save files data - # -sASSERTIONS=1 # enable runtime checks for common memory allocation errors (-O1 and above turn it off) - # -sMINIFY_HTML=0 # minify generated html from shell.html - # --profiling # include information for code profiling - # --memory-init-file 0 # to avoid an external memory initialization code file (.mem) - # --preload-file resources # specify a resources folder for data compilation - # --source-map-base # allow debugging in browser with source map - # --shell-file shell.html # define a custom shell .html and output extension - LDFLAGS += -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sFORCE_FILESYSTEM=1 -sEXPORTED_RUNTIME_METHODS=ccall -sMINIFY_HTML=0 - - # Using GLFW3 library (instead of RGFW) - ifeq ($(TARGET_PLATFORM),PLATFORM_WEB) - LDFLAGS += -sUSE_GLFW=3 - endif - - # Build using asyncify - ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) - LDFLAGS += -sASYNCIFY - endif - - # NOTE: Flags required for WebGL 2.0 (OpenGL ES 3.0) - # WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3 - ifeq ($(BUILD_WEB_WEBGL2),TRUE) - LDFLAGS += -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 - endif - - # Add resources building if required - ifeq ($(BUILD_WEB_RESOURCES),TRUE) - LDFLAGS += --preload-file $(BUILD_WEB_RESOURCES_PATH) - endif - - # Add debug mode flags if required - ifeq ($(BUILD_MODE),DEBUG) - LDFLAGS += -sASSERTIONS=1 --profiling - endif - - # Define a custom shell .html and output extension - LDFLAGS += --shell-file $(BUILD_WEB_SHELL) - EXT = .html - - # NOTE: Simple raylib examples are compiled to be interpreter with asyncify, that way, - # we can compile same code for ALL platforms with no change required, but, working on bigger - # projects, code needs to be refactored to avoid a blocking while() loop, moving Update and Draw - # logic to a self contained function: UpdateDrawFrame(), check core_basic_window_web.c for reference. - -endif - -# Define libraries required on linking: LDLIBS -# NOTE: To link libraries (lib.so or lib.a), use -l -#------------------------------------------------------------------------------------------------ -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) - ifeq ($(PLATFORM_OS),WINDOWS) - # Libraries for Windows desktop compilation - # NOTE: WinMM library required to set high-res timer resolution - LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm - endif - ifeq ($(PLATFORM_OS),LINUX) - # Libraries for Debian GNU/Linux desktop compiling - # NOTE: Required packages: libegl1-mesa-dev - LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - - # On X11 requires also below libraries - LDLIBS += -lX11 - # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them - #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - - # On Wayland windowing system, additional libraries requires - ifeq ($(USE_WAYLAND_DISPLAY),TRUE) - LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon - endif - # Explicit link to libc - ifeq ($(RAYLIB_LIBTYPE),SHARED) - LDLIBS += -lc - endif - - # NOTE: On ARM 32bit arch, miniaudio requires atomics library - LDLIBS += -latomic - endif - ifeq ($(PLATFORM_OS),OSX) - # Libraries for OSX 10.9 desktop compiling - # NOTE: Required packages: libopenal-dev libegl1-mesa-dev - LDLIBS = -lraylib -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo - endif - ifeq ($(PLATFORM_OS),BSD) - # Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling - # NOTE: Required packages: mesa-libs - LDFLAGS += -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib - LDLIBS = -lraylib -lGL -lm -lpthread - - # On XWindow requires also below libraries - LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - endif - ifeq ($(USE_EXTERNAL_GLFW),TRUE) - # NOTE: It could require additional packages installed: libglfw3-dev - LDLIBS += -lglfw - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) - ifeq ($(PLATFORM_OS),WINDOWS) - # Libraries for Windows desktop compilation - LDLIBS = -lraylib $(SDL_LIBRARIES) -lopengl32 -lgdi32 - endif - ifeq ($(PLATFORM_OS),LINUX) - # Libraries for Debian GNU/Linux desktop compiling - # NOTE: Required packages: libegl1-mesa-dev - LDLIBS = -lraylib $(SDL_LIBRARIES) -lGL -lm -lpthread -ldl -lrt - - # On X11 requires also below libraries - LDLIBS += -lX11 - # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them - #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - - # On Wayland windowing system, additional libraries requires - ifeq ($(USE_WAYLAND_DISPLAY),TRUE) - LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon - endif - # Explicit link to libc - ifeq ($(RAYLIB_LIBTYPE),SHARED) - LDLIBS += -lc - endif - - # NOTE: On ARM 32bit arch, miniaudio requires atomics library - LDLIBS += -latomic - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_RGFW) - ifeq ($(PLATFORM_OS),WINDOWS) - # Libraries for Windows desktop compilation - LDFLAGS += -L..\src - LDLIBS = -lraylib -lgdi32 -lwinmm -lopengl32 - endif - ifeq ($(PLATFORM_OS),LINUX) - # Libraries for Debian GNU/Linux desktop compipling - # NOTE: Required packages: libegl1-mesa-dev - LDFLAGS += -L../src - LDLIBS = -lraylib -lGL -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor -lm -lpthread -ldl -lrt - - # Explicit link to libc - ifeq ($(RAYLIB_LIBTYPE),SHARED) - LDLIBS += -lc - endif - - # NOTE: On ARM 32bit arch, miniaudio requires atomics library - LDLIBS += -latomic - endif - ifeq ($(PLATFORM_OS),OSX) - # Libraries for Debian GNU/Linux desktop compiling - # NOTE: Required packages: libegl1-mesa-dev - LDFLAGS += -L../src - LDLIBS = -lraylib -lm - LDLIBS += -framework Foundation -framework AppKit -framework IOKit -framework OpenGL -framework CoreVideo - endif -endif -ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) - # Libraries for DRM compiling - # NOTE: Required packages: libasound2-dev (ALSA) - LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lgbm -ldrm -ldl -latomic -endif -ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - # Libraries for web (HTML5) compiling - LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.web.a -endif - -CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) - -# Define source code object files required -#------------------------------------------------------------------------------------------------ -#EXAMPLES_LIST_START -CORE = \ - core/core_2d_camera \ - core/core_2d_camera_mouse_zoom \ - core/core_2d_camera_platformer \ - core/core_2d_camera_split_screen \ - core/core_3d_camera_first_person \ - core/core_3d_camera_fps \ - core/core_3d_camera_free \ - core/core_3d_camera_mode \ - core/core_3d_camera_split_screen \ - core/core_3d_picking \ - core/core_automation_events \ - core/core_basic_screen_manager \ - core/core_basic_window \ - core/core_clipboard_text \ - core/core_compute_hash \ - core/core_custom_frame_control \ - core/core_custom_logging \ - core/core_delta_time \ - core/core_directory_files \ - core/core_drop_files \ - core/core_highdpi_demo \ - core/core_highdpi_testbed \ - core/core_input_actions \ - core/core_input_gamepad \ - core/core_input_gestures \ - core/core_input_gestures_testbed \ - core/core_input_keys \ - core/core_input_mouse \ - core/core_input_mouse_wheel \ - core/core_input_multitouch \ - core/core_input_virtual_controls \ - core/core_keyboard_testbed \ - core/core_monitor_detector \ - core/core_random_sequence \ - core/core_random_values \ - core/core_render_texture \ - core/core_scissor_test \ - core/core_screen_recording \ - core/core_smooth_pixelperfect \ - core/core_storage_values \ - core/core_text_file_loading \ - core/core_undo_redo \ - core/core_viewport_scaling \ - core/core_vr_simulator \ - core/core_window_flags \ - core/core_window_letterbox \ - core/core_window_should_close \ - core/core_window_web \ - core/core_world_screen - -SHAPES = \ - shapes/shapes_ball_physics \ - shapes/shapes_basic_shapes \ - shapes/shapes_bouncing_ball \ - shapes/shapes_bullet_hell \ - shapes/shapes_circle_sector_drawing \ - shapes/shapes_clock_of_clocks \ - shapes/shapes_collision_area \ - shapes/shapes_colors_palette \ - shapes/shapes_dashed_line \ - shapes/shapes_digital_clock \ - shapes/shapes_double_pendulum \ - shapes/shapes_easings_ball \ - shapes/shapes_easings_box \ - shapes/shapes_easings_rectangles \ - shapes/shapes_easings_testbed \ - shapes/shapes_following_eyes \ - shapes/shapes_hilbert_curve \ - shapes/shapes_kaleidoscope \ - shapes/shapes_lines_bezier \ - shapes/shapes_lines_drawing \ - shapes/shapes_logo_raylib \ - shapes/shapes_logo_raylib_anim \ - shapes/shapes_math_angle_rotation \ - shapes/shapes_math_sine_cosine \ - shapes/shapes_mouse_trail \ - shapes/shapes_penrose_tile \ - shapes/shapes_pie_chart \ - shapes/shapes_rectangle_advanced \ - shapes/shapes_rectangle_scaling \ - shapes/shapes_recursive_tree \ - shapes/shapes_ring_drawing \ - shapes/shapes_rlgl_color_wheel \ - shapes/shapes_rlgl_triangle \ - shapes/shapes_rounded_rectangle_drawing \ - shapes/shapes_simple_particles \ - shapes/shapes_splines_drawing \ - shapes/shapes_starfield_effect \ - shapes/shapes_top_down_lights \ - shapes/shapes_triangle_strip \ - shapes/shapes_vector_angle - -TEXTURES = \ - textures/textures_background_scrolling \ - textures/textures_blend_modes \ - textures/textures_bunnymark \ - textures/textures_cellular_automata \ - textures/textures_clipboard_image \ - textures/textures_fog_of_war \ - textures/textures_framebuffer_rendering \ - textures/textures_gif_player \ - textures/textures_image_channel \ - textures/textures_image_drawing \ - textures/textures_image_generation \ - textures/textures_image_kernel \ - textures/textures_image_loading \ - textures/textures_image_processing \ - textures/textures_image_rotate \ - textures/textures_image_text \ - textures/textures_logo_raylib \ - textures/textures_magnifying_glass \ - textures/textures_mouse_painting \ - textures/textures_npatch_drawing \ - textures/textures_particles_blending \ - textures/textures_polygon_drawing \ - textures/textures_raw_data \ - textures/textures_screen_buffer \ - textures/textures_sprite_animation \ - textures/textures_sprite_button \ - textures/textures_sprite_explosion \ - textures/textures_sprite_stacking \ - textures/textures_srcrec_dstrec \ - textures/textures_textured_curve \ - textures/textures_tiled_drawing \ - textures/textures_to_image - -TEXT = \ - text/text_3d_drawing \ - text/text_codepoints_loading \ - text/text_font_filters \ - text/text_font_loading \ - text/text_font_sdf \ - text/text_font_spritefont \ - text/text_format_text \ - text/text_inline_styling \ - text/text_input_box \ - text/text_rectangle_bounds \ - text/text_sprite_fonts \ - text/text_strings_management \ - text/text_unicode_emojis \ - text/text_unicode_ranges \ - text/text_words_alignment \ - text/text_writing_anim - -MODELS = \ - models/models_animation_blend_custom \ - models/models_animation_blending \ - models/models_animation_gpu_skinning \ - models/models_animation_timing \ - models/models_basic_voxel \ - models/models_billboard_rendering \ - models/models_bone_socket \ - models/models_box_collisions \ - models/models_cubicmap_rendering \ - models/models_decals \ - models/models_directional_billboard \ - models/models_first_person_maze \ - models/models_geometric_shapes \ - models/models_heightmap_rendering \ - models/models_loading \ - models/models_loading_gltf \ - models/models_loading_iqm \ - models/models_loading_m3d \ - models/models_loading_vox \ - models/models_mesh_generation \ - models/models_mesh_picking \ - models/models_orthographic_projection \ - models/models_point_rendering \ - models/models_rlgl_solar_system \ - models/models_rotating_cube \ - models/models_skybox_rendering \ - models/models_tesseract_view \ - models/models_textured_cube \ - models/models_waving_cubes \ - models/models_yaw_pitch_roll - -SHADERS = \ - shaders/shaders_ascii_rendering \ - shaders/shaders_basic_lighting \ - shaders/shaders_basic_pbr \ - shaders/shaders_cel_shading \ - shaders/shaders_color_correction \ - shaders/shaders_custom_uniform \ - shaders/shaders_deferred_rendering \ - shaders/shaders_depth_rendering \ - shaders/shaders_depth_writing \ - shaders/shaders_eratosthenes_sieve \ - shaders/shaders_fog_rendering \ - shaders/shaders_game_of_life \ - shaders/shaders_hot_reloading \ - shaders/shaders_hybrid_rendering \ - shaders/shaders_julia_set \ - shaders/shaders_lightmap_rendering \ - shaders/shaders_mandelbrot_set \ - shaders/shaders_mesh_instancing \ - shaders/shaders_model_shader \ - shaders/shaders_multi_sample2d \ - shaders/shaders_normalmap_rendering \ - shaders/shaders_palette_switch \ - shaders/shaders_postprocessing \ - shaders/shaders_raymarching_rendering \ - shaders/shaders_rlgl_compute \ - shaders/shaders_rounded_rectangle \ - shaders/shaders_shadowmap_rendering \ - shaders/shaders_shapes_textures \ - shaders/shaders_simple_mask \ - shaders/shaders_spotlight_rendering \ - shaders/shaders_texture_outline \ - shaders/shaders_texture_rendering \ - shaders/shaders_texture_tiling \ - shaders/shaders_texture_waves \ - shaders/shaders_vertex_displacement - -AUDIO = \ - audio/audio_mixed_processor \ - audio/audio_module_playing \ - audio/audio_music_stream \ - audio/audio_raw_stream \ - audio/audio_sound_loading \ - audio/audio_sound_multi \ - audio/audio_sound_positioning \ - audio/audio_spectrum_visualizer \ - audio/audio_stream_callback \ - audio/audio_stream_effects - -# Default target entry -all: $(CORE) $(SHAPES) $(TEXT) $(TEXTURES) $(MODELS) $(SHADERS) $(AUDIO) - -core: $(CORE) -shapes: $(SHAPES) -textures: $(TEXTURES) -text: $(TEXT) -models: $(MODELS) -shaders: $(SHADERS) -audio: $(AUDIO) - -# Compile CORE examples -core/core_2d_camera: core/core_2d_camera.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_2d_camera_mouse_zoom: core/core_2d_camera_mouse_zoom.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_2d_camera_platformer: core/core_2d_camera_platformer.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_2d_camera_split_screen: core/core_2d_camera_split_screen.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_3d_camera_first_person: core/core_3d_camera_first_person.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_3d_camera_fps: core/core_3d_camera_fps.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_3d_camera_free: core/core_3d_camera_free.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_3d_camera_mode: core/core_3d_camera_mode.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_3d_camera_split_screen: core/core_3d_camera_split_screen.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_3d_picking: core/core_3d_picking.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_automation_events: core/core_automation_events.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_basic_screen_manager: core/core_basic_screen_manager.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_basic_window: core/core_basic_window.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_clipboard_text: core/core_clipboard_text.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_compute_hash: core/core_compute_hash.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_custom_frame_control: core/core_custom_frame_control.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_custom_logging: core/core_custom_logging.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_delta_time: core/core_delta_time.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_directory_files: core/core_directory_files.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_drop_files: core/core_drop_files.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_highdpi_demo: core/core_highdpi_demo.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_highdpi_testbed: core/core_highdpi_testbed.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_input_actions: core/core_input_actions.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_input_gamepad: core/core_input_gamepad.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file core/resources/ps3.png@resources/ps3.png \ - --preload-file core/resources/xbox.png@resources/xbox.png - -core/core_input_gestures: core/core_input_gestures.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_input_gestures_testbed: core/core_input_gestures_testbed.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_input_keys: core/core_input_keys.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_input_mouse: core/core_input_mouse.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_input_mouse_wheel: core/core_input_mouse_wheel.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_input_multitouch: core/core_input_multitouch.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_input_virtual_controls: core/core_input_virtual_controls.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_keyboard_testbed: core/core_keyboard_testbed.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_monitor_detector: core/core_monitor_detector.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_random_sequence: core/core_random_sequence.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_random_values: core/core_random_values.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_render_texture: core/core_render_texture.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_scissor_test: core/core_scissor_test.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_screen_recording: core/core_screen_recording.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_smooth_pixelperfect: core/core_smooth_pixelperfect.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_storage_values: core/core_storage_values.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_text_file_loading: core/core_text_file_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file core/resources/text_file.txt@resources/text_file.txt - -core/core_undo_redo: core/core_undo_redo.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_viewport_scaling: core/core_viewport_scaling.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_vr_simulator: core/core_vr_simulator.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file core/resources/shaders/glsl100/distortion.fs@resources/shaders/glsl100/distortion.fs - -core/core_window_flags: core/core_window_flags.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_window_letterbox: core/core_window_letterbox.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_window_should_close: core/core_window_should_close.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_window_web: core/core_window_web.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -core/core_world_screen: core/core_world_screen.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -# Compile SHAPES examples -shapes/shapes_ball_physics: shapes/shapes_ball_physics.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_basic_shapes: shapes/shapes_basic_shapes.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_bouncing_ball: shapes/shapes_bouncing_ball.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_bullet_hell: shapes/shapes_bullet_hell.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_circle_sector_drawing: shapes/shapes_circle_sector_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_clock_of_clocks: shapes/shapes_clock_of_clocks.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_collision_area: shapes/shapes_collision_area.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_colors_palette: shapes/shapes_colors_palette.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_dashed_line: shapes/shapes_dashed_line.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_digital_clock: shapes/shapes_digital_clock.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_double_pendulum: shapes/shapes_double_pendulum.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_easings_ball: shapes/shapes_easings_ball.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_easings_box: shapes/shapes_easings_box.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_easings_rectangles: shapes/shapes_easings_rectangles.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_easings_testbed: shapes/shapes_easings_testbed.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_following_eyes: shapes/shapes_following_eyes.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_hilbert_curve: shapes/shapes_hilbert_curve.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_kaleidoscope: shapes/shapes_kaleidoscope.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_lines_bezier: shapes/shapes_lines_bezier.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_lines_drawing: shapes/shapes_lines_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_logo_raylib: shapes/shapes_logo_raylib.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_logo_raylib_anim: shapes/shapes_logo_raylib_anim.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_math_angle_rotation: shapes/shapes_math_angle_rotation.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_math_sine_cosine: shapes/shapes_math_sine_cosine.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_mouse_trail: shapes/shapes_mouse_trail.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_penrose_tile: shapes/shapes_penrose_tile.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_pie_chart: shapes/shapes_pie_chart.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_rectangle_advanced: shapes/shapes_rectangle_advanced.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_rectangle_scaling: shapes/shapes_rectangle_scaling.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_recursive_tree: shapes/shapes_recursive_tree.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_ring_drawing: shapes/shapes_ring_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_rlgl_color_wheel: shapes/shapes_rlgl_color_wheel.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_rlgl_triangle: shapes/shapes_rlgl_triangle.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_rounded_rectangle_drawing: shapes/shapes_rounded_rectangle_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_simple_particles: shapes/shapes_simple_particles.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_splines_drawing: shapes/shapes_splines_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_starfield_effect: shapes/shapes_starfield_effect.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_top_down_lights: shapes/shapes_top_down_lights.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_triangle_strip: shapes/shapes_triangle_strip.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shapes/shapes_vector_angle: shapes/shapes_vector_angle.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -# Compile TEXTURES examples -textures/textures_background_scrolling: textures/textures_background_scrolling.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/cyberpunk_street_background.png@resources/cyberpunk_street_background.png \ - --preload-file textures/resources/cyberpunk_street_midground.png@resources/cyberpunk_street_midground.png \ - --preload-file textures/resources/cyberpunk_street_foreground.png@resources/cyberpunk_street_foreground.png - -textures/textures_blend_modes: textures/textures_blend_modes.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/cyberpunk_street_background.png@resources/cyberpunk_street_background.png \ - --preload-file textures/resources/cyberpunk_street_foreground.png@resources/cyberpunk_street_foreground.png - -textures/textures_bunnymark: textures/textures_bunnymark.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/raybunny.png@resources/raybunny.png - -textures/textures_cellular_automata: textures/textures_cellular_automata.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -textures/textures_clipboard_image: textures/textures_clipboard_image.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -textures/textures_fog_of_war: textures/textures_fog_of_war.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -textures/textures_framebuffer_rendering: textures/textures_framebuffer_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -textures/textures_gif_player: textures/textures_gif_player.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/scarfy_run.gif@resources/scarfy_run.gif - -textures/textures_image_channel: textures/textures_image_channel.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/fudesumi.png@resources/fudesumi.png - -textures/textures_image_drawing: textures/textures_image_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/cat.png@resources/cat.png \ - --preload-file textures/resources/parrots.png@resources/parrots.png \ - --preload-file textures/resources/custom_jupiter_crash.png@resources/custom_jupiter_crash.png - -textures/textures_image_generation: textures/textures_image_generation.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -textures/textures_image_kernel: textures/textures_image_kernel.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/cat.png@resources/cat.png - -textures/textures_image_loading: textures/textures_image_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/raylib_logo.png@resources/raylib_logo.png - -textures/textures_image_processing: textures/textures_image_processing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/parrots.png@resources/parrots.png - -textures/textures_image_rotate: textures/textures_image_rotate.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/raylib_logo.png@resources/raylib_logo.png - -textures/textures_image_text: textures/textures_image_text.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/parrots.png@resources/parrots.png \ - --preload-file textures/resources/KAISG.ttf@resources/KAISG.ttf - -textures/textures_logo_raylib: textures/textures_logo_raylib.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/raylib_logo.png@resources/raylib_logo.png - -textures/textures_magnifying_glass: textures/textures_magnifying_glass.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/raybunny.png@resources/raybunny.png \ - --preload-file textures/resources/parrots.png@resources/parrots.png - -textures/textures_mouse_painting: textures/textures_mouse_painting.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -textures/textures_npatch_drawing: textures/textures_npatch_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/ninepatch_button.png@resources/ninepatch_button.png - -textures/textures_particles_blending: textures/textures_particles_blending.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/spark_flame.png@resources/spark_flame.png - -textures/textures_polygon_drawing: textures/textures_polygon_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/cat.png@resources/cat.png - -textures/textures_raw_data: textures/textures_raw_data.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/fudesumi.raw@resources/fudesumi.raw - -textures/textures_screen_buffer: textures/textures_screen_buffer.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -textures/textures_sprite_animation: textures/textures_sprite_animation.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/scarfy.png@resources/scarfy.png - -textures/textures_sprite_button: textures/textures_sprite_button.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/buttonfx.wav@resources/buttonfx.wav \ - --preload-file textures/resources/button.png@resources/button.png - -textures/textures_sprite_explosion: textures/textures_sprite_explosion.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/boom.wav@resources/boom.wav \ - --preload-file textures/resources/explosion.png@resources/explosion.png - -textures/textures_sprite_stacking: textures/textures_sprite_stacking.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/booth.png@resources/booth.png - -textures/textures_srcrec_dstrec: textures/textures_srcrec_dstrec.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/scarfy.png@resources/scarfy.png - -textures/textures_textured_curve: textures/textures_textured_curve.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/road.png@resources/road.png - -textures/textures_tiled_drawing: textures/textures_tiled_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/patterns.png@resources/patterns.png - -textures/textures_to_image: textures/textures_to_image.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/raylib_logo.png@resources/raylib_logo.png - -# Compile TEXT examples -text/text_3d_drawing: text/text_3d_drawing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/shaders/glsl100/alpha_discard.fs@resources/shaders/glsl100/alpha_discard.fs - -text/text_codepoints_loading: text/text_codepoints_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/DotGothic16-Regular.ttf@resources/DotGothic16-Regular.ttf - -text/text_font_filters: text/text_font_filters.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/KAISG.ttf@resources/KAISG.ttf - -text/text_font_loading: text/text_font_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/pixantiqua.fnt@resources/pixantiqua.fnt \ - --preload-file text/resources/pixantiqua.png@resources/pixantiqua.png \ - --preload-file text/resources/pixantiqua.ttf@resources/pixantiqua.ttf - -text/text_font_sdf: text/text_font_sdf.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/anonymous_pro_bold.ttf@resources/anonymous_pro_bold.ttf \ - --preload-file text/resources/shaders/glsl100/sdf.fs@resources/shaders/glsl100/sdf.fs - -text/text_font_spritefont: text/text_font_spritefont.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/custom_mecha.png@resources/custom_mecha.png \ - --preload-file text/resources/custom_alagard.png@resources/custom_alagard.png \ - --preload-file text/resources/custom_jupiter_crash.png@resources/custom_jupiter_crash.png - -text/text_format_text: text/text_format_text.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -text/text_inline_styling: text/text_inline_styling.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -text/text_input_box: text/text_input_box.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -text/text_rectangle_bounds: text/text_rectangle_bounds.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -text/text_sprite_fonts: text/text_sprite_fonts.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/sprite_fonts/alagard.png@resources/sprite_fonts/alagard.png \ - --preload-file text/resources/sprite_fonts/pixelplay.png@resources/sprite_fonts/pixelplay.png \ - --preload-file text/resources/sprite_fonts/mecha.png@resources/sprite_fonts/mecha.png \ - --preload-file text/resources/sprite_fonts/setback.png@resources/sprite_fonts/setback.png \ - --preload-file text/resources/sprite_fonts/romulus.png@resources/sprite_fonts/romulus.png \ - --preload-file text/resources/sprite_fonts/pixantiqua.png@resources/sprite_fonts/pixantiqua.png \ - --preload-file text/resources/sprite_fonts/alpha_beta.png@resources/sprite_fonts/alpha_beta.png \ - --preload-file text/resources/sprite_fonts/jupiter_crash.png@resources/sprite_fonts/jupiter_crash.png - -text/text_strings_management: text/text_strings_management.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -text/text_unicode_emojis: text/text_unicode_emojis.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/dejavu.fnt@resources/dejavu.fnt \ - --preload-file text/resources/dejavu.png@resources/dejavu.png \ - --preload-file text/resources/noto_cjk.fnt@resources/noto_cjk.fnt \ - --preload-file text/resources/noto_cjk.png@resources/noto_cjk.png \ - --preload-file text/resources/symbola.fnt@resources/symbola.fnt \ - --preload-file text/resources/symbola.png@resources/symbola.png - -text/text_unicode_ranges: text/text_unicode_ranges.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/NotoSansTC-Regular.ttf@resources/NotoSansTC-Regular.ttf - -text/text_words_alignment: text/text_words_alignment.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -text/text_writing_anim: text/text_writing_anim.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -# Compile MODELS examples -models/models_animation_blend_custom: models/models_animation_blend_custom.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ - --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ - --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs - -models/models_animation_blending: models/models_animation_blending.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/gltf/robot.glb@resources/models/gltf/robot.glb \ - --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ - --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs - -models/models_animation_gpu_skinning: models/models_animation_gpu_skinning.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ - --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ - --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs - -models/models_animation_timing: models/models_animation_timing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/gltf/robot.glb@resources/models/gltf/robot.glb - -models/models_basic_voxel: models/models_basic_voxel.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -models/models_billboard_rendering: models/models_billboard_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/billboard.png@resources/billboard.png - -models/models_bone_socket: models/models_bone_socket.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ - --preload-file models/resources/models/gltf/greenman_hat.glb@resources/models/gltf/greenman_hat.glb \ - --preload-file models/resources/models/gltf/greenman_sword.glb@resources/models/gltf/greenman_sword.glb \ - --preload-file models/resources/models/gltf/greenman_shield.glb@resources/models/gltf/greenman_shield.glb - -models/models_box_collisions: models/models_box_collisions.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -models/models_cubicmap_rendering: models/models_cubicmap_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/cubicmap.png@resources/cubicmap.png \ - --preload-file models/resources/cubicmap_atlas.png@resources/cubicmap_atlas.png - -models/models_decals: models/models_decals.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/obj/character.obj@resources/models/obj/character.obj \ - --preload-file models/resources/models/obj/character_diffuse.png@resources/models/obj/character_diffuse.png \ - --preload-file models/resources/raylib_logo.png@resources/raylib_logo.png - -models/models_directional_billboard: models/models_directional_billboard.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/skillbot.png@resources/skillbot.png - -models/models_first_person_maze: models/models_first_person_maze.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/cubicmap.png@resources/cubicmap.png \ - --preload-file models/resources/cubicmap_atlas.png@resources/cubicmap_atlas.png - -models/models_geometric_shapes: models/models_geometric_shapes.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -models/models_heightmap_rendering: models/models_heightmap_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/heightmap.png@resources/heightmap.png - -models/models_loading: models/models_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/obj/castle.obj@resources/models/obj/castle.obj \ - --preload-file models/resources/models/obj/castle_diffuse.png@resources/models/obj/castle_diffuse.png - -models/models_loading_gltf: models/models_loading_gltf.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/gltf/robot.glb@resources/models/gltf/robot.glb - -models/models_loading_iqm: models/models_loading_iqm.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/iqm/guy.iqm@resources/models/iqm/guy.iqm \ - --preload-file models/resources/models/iqm/guytex.png@resources/models/iqm/guytex.png \ - --preload-file models/resources/models/iqm/guyanim.iqm@resources/models/iqm/guyanim.iqm - -models/models_loading_m3d: models/models_loading_m3d.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/m3d/cesium_man.m3d@resources/models/m3d/cesium_man.m3d - -models/models_loading_vox: models/models_loading_vox.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/vox/chr_knight.vox@resources/models/vox/chr_knight.vox \ - --preload-file models/resources/models/vox/chr_sword.vox@resources/models/vox/chr_sword.vox \ - --preload-file models/resources/models/vox/monu9.vox@resources/models/vox/monu9.vox \ - --preload-file models/resources/models/vox/fez.vox@resources/models/vox/fez.vox \ - --preload-file models/resources/shaders/glsl100/voxel_lighting.vs@resources/shaders/glsl100/voxel_lighting.vs \ - --preload-file models/resources/shaders/glsl100/voxel_lighting.fs@resources/shaders/glsl100/voxel_lighting.fs - -models/models_mesh_generation: models/models_mesh_generation.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -models/models_mesh_picking: models/models_mesh_picking.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/obj/turret.obj@resources/models/obj/turret.obj \ - --preload-file models/resources/models/obj/turret_diffuse.png@resources/models/obj/turret_diffuse.png - -models/models_orthographic_projection: models/models_orthographic_projection.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -models/models_point_rendering: models/models_point_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -models/models_rlgl_solar_system: models/models_rlgl_solar_system.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -models/models_rotating_cube: models/models_rotating_cube.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/cubicmap_atlas.png@resources/cubicmap_atlas.png - -models/models_skybox_rendering: models/models_skybox_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/shaders/glsl100/skybox.vs@resources/shaders/glsl100/skybox.vs \ - --preload-file models/resources/shaders/glsl100/skybox.fs@resources/shaders/glsl100/skybox.fs \ - --preload-file models/resources/shaders/glsl100/cubemap.vs@resources/shaders/glsl100/cubemap.vs \ - --preload-file models/resources/shaders/glsl100/cubemap.fs@resources/shaders/glsl100/cubemap.fs \ - --preload-file models/resources/dresden_square_2k.hdr@resources/dresden_square_2k.hdr \ - --preload-file models/resources/skybox.png@resources/skybox.png - -models/models_tesseract_view: models/models_tesseract_view.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -models/models_textured_cube: models/models_textured_cube.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/cubicmap_atlas.png@resources/cubicmap_atlas.png - -models/models_waving_cubes: models/models_waving_cubes.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -models/models_yaw_pitch_roll: models/models_yaw_pitch_roll.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/obj/plane.obj@resources/models/obj/plane.obj \ - --preload-file models/resources/models/obj/plane_diffuse.png@resources/models/obj/plane_diffuse.png - -# Compile SHADERS examples -shaders/shaders_ascii_rendering: shaders/shaders_ascii_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/fudesumi.png@resources/fudesumi.png \ - --preload-file shaders/resources/raysan.png@resources/raysan.png \ - --preload-file shaders/resources/shaders/glsl100/ascii.fs@resources/shaders/glsl100/ascii.fs - -shaders/shaders_basic_lighting: shaders/shaders_basic_lighting.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/lighting.vs@resources/shaders/glsl100/lighting.vs \ - --preload-file shaders/resources/shaders/glsl100/lighting.fs@resources/shaders/glsl100/lighting.fs - -shaders/shaders_basic_pbr: shaders/shaders_basic_pbr.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/pbr.vs@resources/shaders/glsl100/pbr.vs \ - --preload-file shaders/resources/shaders/glsl100/pbr.fs@resources/shaders/glsl100/pbr.fs \ - --preload-file shaders/resources/models/old_car_new.glb@resources/models/old_car_new.glb \ - --preload-file shaders/resources/old_car_d.png@resources/old_car_d.png \ - --preload-file shaders/resources/old_car_mra.png@resources/old_car_mra.png \ - --preload-file shaders/resources/old_car_n.png@resources/old_car_n.png \ - --preload-file shaders/resources/old_car_e.png@resources/old_car_e.png \ - --preload-file shaders/resources/models/plane.glb@resources/models/plane.glb \ - --preload-file shaders/resources/road_a.png@resources/road_a.png \ - --preload-file shaders/resources/road_mra.png@resources/road_mra.png \ - --preload-file shaders/resources/road_n.png@resources/road_n.png - -shaders/shaders_cel_shading: shaders/shaders_cel_shading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/models/old_car_new.glb@resources/models/old_car_new.glb \ - --preload-file shaders/resources/shaders/glsl100/cel.vs@resources/shaders/glsl100/cel.vs \ - --preload-file shaders/resources/shaders/glsl100/cel.fs@resources/shaders/glsl100/cel.fs \ - --preload-file shaders/resources/shaders/glsl100/outline_hull.vs@resources/shaders/glsl100/outline_hull.vs \ - --preload-file shaders/resources/shaders/glsl100/outline_hull.fs@resources/shaders/glsl100/outline_hull.fs - -shaders/shaders_color_correction: shaders/shaders_color_correction.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/parrots.png@resources/parrots.png \ - --preload-file shaders/resources/cat.png@resources/cat.png \ - --preload-file shaders/resources/mandrill.png@resources/mandrill.png \ - --preload-file shaders/resources/fudesumi.png@resources/fudesumi.png \ - --preload-file shaders/resources/shaders/glsl100/color_correction.fs@resources/shaders/glsl100/color_correction.fs - -shaders/shaders_custom_uniform: shaders/shaders_custom_uniform.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/models/barracks.obj@resources/models/barracks.obj \ - --preload-file shaders/resources/models/barracks_diffuse.png@resources/models/barracks_diffuse.png \ - --preload-file shaders/resources/shaders/glsl100/swirl.fs@resources/shaders/glsl100/swirl.fs - -shaders/shaders_deferred_rendering: shaders/shaders_deferred_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/gbuffer.vs@resources/shaders/glsl100/gbuffer.vs \ - --preload-file shaders/resources/shaders/glsl100/gbuffer.fs@resources/shaders/glsl100/gbuffer.fs \ - --preload-file shaders/resources/shaders/glsl100/deferred_shading.vs@resources/shaders/glsl100/deferred_shading.vs \ - --preload-file shaders/resources/shaders/glsl100/deferred_shading.fs@resources/shaders/glsl100/deferred_shading.fs - -shaders/shaders_depth_rendering: shaders/shaders_depth_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/depth_render.fs@resources/shaders/glsl100/depth_render.fs - -shaders/shaders_depth_writing: shaders/shaders_depth_writing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/depth_write.fs@resources/shaders/glsl100/depth_write.fs - -shaders/shaders_eratosthenes_sieve: shaders/shaders_eratosthenes_sieve.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/eratosthenes.fs@resources/shaders/glsl100/eratosthenes.fs - -shaders/shaders_fog_rendering: shaders/shaders_fog_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/texel_checker.png@resources/texel_checker.png \ - --preload-file shaders/resources/shaders/glsl100/lighting.vs@resources/shaders/glsl100/lighting.vs \ - --preload-file shaders/resources/shaders/glsl100/fog.fs@resources/shaders/glsl100/fog.fs - -shaders/shaders_game_of_life: shaders/shaders_game_of_life.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/game_of_life.fs@resources/shaders/glsl100/game_of_life.fs \ - --preload-file shaders/resources/game_of_life/r_pentomino.png@resources/game_of_life/r_pentomino.png \ - --preload-file shaders/resources/game_of_life/glider.png@resources/game_of_life/glider.png \ - --preload-file shaders/resources/game_of_life/acorn.png@resources/game_of_life/acorn.png \ - --preload-file shaders/resources/game_of_life/spaceships.png@resources/game_of_life/spaceships.png \ - --preload-file shaders/resources/game_of_life/still_lifes.png@resources/game_of_life/still_lifes.png \ - --preload-file shaders/resources/game_of_life/oscillators.png@resources/game_of_life/oscillators.png \ - --preload-file shaders/resources/game_of_life/puffer_train.png@resources/game_of_life/puffer_train.png \ - --preload-file shaders/resources/game_of_life/glider_gun.png@resources/game_of_life/glider_gun.png \ - --preload-file shaders/resources/game_of_life/breeder.png@resources/game_of_life/breeder.png - -shaders/shaders_hot_reloading: shaders/shaders_hot_reloading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/reload.fs@resources/shaders/glsl100/reload.fs - -shaders/shaders_hybrid_rendering: shaders/shaders_hybrid_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/hybrid_raymarch.fs@resources/shaders/glsl100/hybrid_raymarch.fs \ - --preload-file shaders/resources/shaders/glsl100/hybrid_raster.fs@resources/shaders/glsl100/hybrid_raster.fs - -shaders/shaders_julia_set: shaders/shaders_julia_set.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/julia_set.fs@resources/shaders/glsl100/julia_set.fs - -shaders/shaders_lightmap_rendering: shaders/shaders_lightmap_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/lightmap.vs@resources/shaders/glsl100/lightmap.vs \ - --preload-file shaders/resources/shaders/glsl100/lightmap.fs@resources/shaders/glsl100/lightmap.fs \ - --preload-file shaders/resources/cubicmap_atlas.png@resources/cubicmap_atlas.png \ - --preload-file shaders/resources/spark_flame.png@resources/spark_flame.png - -shaders/shaders_mandelbrot_set: shaders/shaders_mandelbrot_set.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/mandelbrot_set.fs@resources/shaders/glsl100/mandelbrot_set.fs - -shaders/shaders_mesh_instancing: shaders/shaders_mesh_instancing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/lighting_instancing.vs@resources/shaders/glsl100/lighting_instancing.vs \ - --preload-file shaders/resources/shaders/glsl100/lighting.fs@resources/shaders/glsl100/lighting.fs - -shaders/shaders_model_shader: shaders/shaders_model_shader.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/models/watermill.obj@resources/models/watermill.obj \ - --preload-file shaders/resources/models/watermill_diffuse.png@resources/models/watermill_diffuse.png \ - --preload-file shaders/resources/shaders/glsl100/grayscale.fs@resources/shaders/glsl100/grayscale.fs - -shaders/shaders_multi_sample2d: shaders/shaders_multi_sample2d.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/color_mix.fs@resources/shaders/glsl100/color_mix.fs - -shaders/shaders_normalmap_rendering: shaders/shaders_normalmap_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/normalmap.vs@resources/shaders/glsl100/normalmap.vs \ - --preload-file shaders/resources/shaders/glsl100/normalmap.fs@resources/shaders/glsl100/normalmap.fs \ - --preload-file shaders/resources/models/plane.glb@resources/models/plane.glb \ - --preload-file shaders/resources/tiles_diffuse.png@resources/tiles_diffuse.png \ - --preload-file shaders/resources/tiles_normal.png@resources/tiles_normal.png - -shaders/shaders_palette_switch: shaders/shaders_palette_switch.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/palette_switch.fs@resources/shaders/glsl100/palette_switch.fs - -shaders/shaders_postprocessing: shaders/shaders_postprocessing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/models/church.obj@resources/models/church.obj \ - --preload-file shaders/resources/models/church_diffuse.png@resources/models/church_diffuse.png \ - --preload-file shaders/resources/shaders/glsl100/grayscale.fs@resources/shaders/glsl100/grayscale.fs \ - --preload-file shaders/resources/shaders/glsl100/posterization.fs@resources/shaders/glsl100/posterization.fs \ - --preload-file shaders/resources/shaders/glsl100/dream_vision.fs@resources/shaders/glsl100/dream_vision.fs \ - --preload-file shaders/resources/shaders/glsl100/pixelizer.fs@resources/shaders/glsl100/pixelizer.fs \ - --preload-file shaders/resources/shaders/glsl100/cross_hatching.fs@resources/shaders/glsl100/cross_hatching.fs \ - --preload-file shaders/resources/shaders/glsl100/cross_stitching.fs@resources/shaders/glsl100/cross_stitching.fs \ - --preload-file shaders/resources/shaders/glsl100/predator.fs@resources/shaders/glsl100/predator.fs \ - --preload-file shaders/resources/shaders/glsl100/scanlines.fs@resources/shaders/glsl100/scanlines.fs \ - --preload-file shaders/resources/shaders/glsl100/fisheye.fs@resources/shaders/glsl100/fisheye.fs \ - --preload-file shaders/resources/shaders/glsl100/sobel.fs@resources/shaders/glsl100/sobel.fs \ - --preload-file shaders/resources/shaders/glsl100/bloom.fs@resources/shaders/glsl100/bloom.fs \ - --preload-file shaders/resources/shaders/glsl100/blur.fs@resources/shaders/glsl100/blur.fs - -shaders/shaders_raymarching_rendering: shaders/shaders_raymarching_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/raymarching.fs@resources/shaders/glsl100/raymarching.fs - -shaders/shaders_rlgl_compute: shaders/shaders_rlgl_compute.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -shaders/shaders_rounded_rectangle: shaders/shaders_rounded_rectangle.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/base.vs@resources/shaders/glsl100/base.vs \ - --preload-file shaders/resources/shaders/glsl100/rounded_rectangle.fs@resources/shaders/glsl100/rounded_rectangle.fs - -shaders/shaders_shadowmap_rendering: shaders/shaders_shadowmap_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/shadowmap.vs@resources/shaders/glsl100/shadowmap.vs \ - --preload-file shaders/resources/shaders/glsl100/shadowmap.fs@resources/shaders/glsl100/shadowmap.fs \ - --preload-file shaders/resources/models/robot.glb@resources/models/robot.glb - -shaders/shaders_shapes_textures: shaders/shaders_shapes_textures.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/fudesumi.png@resources/fudesumi.png \ - --preload-file shaders/resources/shaders/glsl100/grayscale.fs@resources/shaders/glsl100/grayscale.fs - -shaders/shaders_simple_mask: shaders/shaders_simple_mask.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/mask.fs@resources/shaders/glsl100/mask.fs \ - --preload-file shaders/resources/plasma.png@resources/plasma.png \ - --preload-file shaders/resources/mask.png@resources/mask.png - -shaders/shaders_spotlight_rendering: shaders/shaders_spotlight_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/raysan.png@resources/raysan.png \ - --preload-file shaders/resources/shaders/glsl100/spotlight.fs@resources/shaders/glsl100/spotlight.fs - -shaders/shaders_texture_outline: shaders/shaders_texture_outline.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/fudesumi.png@resources/fudesumi.png \ - --preload-file shaders/resources/shaders/glsl100/outline.fs@resources/shaders/glsl100/outline.fs - -shaders/shaders_texture_rendering: shaders/shaders_texture_rendering.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/cubes_panning.fs@resources/shaders/glsl100/cubes_panning.fs - -shaders/shaders_texture_tiling: shaders/shaders_texture_tiling.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/cubicmap_atlas.png@resources/cubicmap_atlas.png \ - --preload-file shaders/resources/shaders/glsl100/tiling.fs@resources/shaders/glsl100/tiling.fs - -shaders/shaders_texture_waves: shaders/shaders_texture_waves.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/space.png@resources/space.png \ - --preload-file shaders/resources/shaders/glsl100/wave.fs@resources/shaders/glsl100/wave.fs - -shaders/shaders_vertex_displacement: shaders/shaders_vertex_displacement.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/vertex_displacement.vs@resources/shaders/glsl100/vertex_displacement.vs \ - --preload-file shaders/resources/shaders/glsl100/vertex_displacement.fs@resources/shaders/glsl100/vertex_displacement.fs - -# Compile AUDIO examples -audio/audio_mixed_processor: audio/audio_mixed_processor.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file audio/resources/country.mp3@resources/country.mp3 \ - --preload-file audio/resources/coin.wav@resources/coin.wav - -audio/audio_module_playing: audio/audio_module_playing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file audio/resources/mini1111.xm@resources/mini1111.xm - -audio/audio_music_stream: audio/audio_music_stream.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file audio/resources/country.mp3@resources/country.mp3 - -audio/audio_raw_stream: audio/audio_raw_stream.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -audio/audio_sound_loading: audio/audio_sound_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file audio/resources/sound.wav@resources/sound.wav \ - --preload-file audio/resources/target.ogg@resources/target.ogg - -audio/audio_sound_multi: audio/audio_sound_multi.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file audio/resources/sound.wav@resources/sound.wav - -audio/audio_sound_positioning: audio/audio_sound_positioning.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file audio/resources/coin.wav@resources/coin.wav - -audio/audio_spectrum_visualizer: audio/audio_spectrum_visualizer.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file audio/resources/shaders/glsl100/fft.fs@resources/shaders/glsl100/fft.fs \ - --preload-file audio/resources/country.mp3@resources/country.mp3 - -audio/audio_stream_callback: audio/audio_stream_callback.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -audio/audio_stream_effects: audio/audio_stream_effects.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file audio/resources/country.mp3@resources/country.mp3 -#EXAMPLES_LIST_END - -# Clean everything -clean: -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - del *.o *.exe /s - endif - ifeq ($(PLATFORM_OS),LINUX) - find . -type f -executable -delete - rm -fv *.o - endif - ifeq ($(PLATFORM_OS),OSX) - find . -type f -perm +ugo+x -delete - rm -f *.o - endif -endif -ifeq ($(PLATFORM),PLATFORM_DRM) - find . -type f -executable -delete - rm -fv *.o -endif -ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - del *.o *.html *.js -endif - @echo Cleaning done diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/README.md b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/README.md deleted file mode 100644 index d486415..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/README.md +++ /dev/null @@ -1,284 +0,0 @@ -## Building the Examples - -The examples assume you have already built the `raylib` library in `../src`. - -### With GNU make - -- `make` builds all examples -- `make [module]` builds all examples for a particular module (e.g `make core`) -- `make [module]/[name]` builds one examples for a particular module (e.g `make core/core_basic_window`) - -### With Zig - -The [Zig](https://ziglang.org/) toolchain can compile `C` and `C++` in addition to `Zig`. -You may find it easier to use than other toolchains, especially when it comes to cross-compiling. - -- `zig build` to compile all examples -- `zig build [module]` to compile all examples for a module (e.g. `zig build core`) -- `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) - -## EXAMPLES COLLECTION [TOTAL: 212] - -### category: core [49] - -Examples using raylib [core](../src/rcore.c) module platform functionality: window creation, inputs, drawing modes and system functionality. - -| example | image | difficulty
level | version
created | last version
updated | original
developer | -|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| [core_basic_window](core/core_basic_window.c) | core_basic_window | â­â˜†â˜†â˜† | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_delta_time](core/core_delta_time.c) | core_delta_time | â­â˜†â˜†â˜† | 5.5 | 6.0 | [Robin](https://github.com/RobinsAviary) | -| [core_input_keys](core/core_input_keys.c) | core_input_keys | â­â˜†â˜†â˜† | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_input_mouse](core/core_input_mouse.c) | core_input_mouse | â­â˜†â˜†â˜† | 1.0 | 5.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_input_mouse_wheel](core/core_input_mouse_wheel.c) | core_input_mouse_wheel | â­â˜†â˜†â˜† | 1.1 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_input_gamepad](core/core_input_gamepad.c) | core_input_gamepad | â­â˜†â˜†â˜† | 1.1 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_input_multitouch](core/core_input_multitouch.c) | core_input_multitouch | â­â˜†â˜†â˜† | 2.1 | 2.5 | [Berni](https://github.com/Berni8k) | -| [core_input_gestures](core/core_input_gestures.c) | core_input_gestures | â­â­â˜†â˜† | 1.4 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_input_gestures_testbed](core/core_input_gestures_testbed.c) | core_input_gestures_testbed | â­â­â­â˜† | 5.0 | 6.0 | [ubkp](https://github.com/ubkp) | -| [core_input_virtual_controls](core/core_input_virtual_controls.c) | core_input_virtual_controls | â­â­â˜†â˜† | 5.0 | 5.0 | [GreenSnakeLinux](https://github.com/GreenSnakeLinux) | -| [core_2d_camera](core/core_2d_camera.c) | core_2d_camera | â­â­â˜†â˜† | 1.5 | 3.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_2d_camera_mouse_zoom](core/core_2d_camera_mouse_zoom.c) | core_2d_camera_mouse_zoom | â­â­â˜†â˜† | 4.2 | 4.2 | [Jeffery Myers](https://github.com/JeffM2501) | -| [core_2d_camera_platformer](core/core_2d_camera_platformer.c) | core_2d_camera_platformer | â­â­â­â˜† | 2.5 | 3.0 | [arvyy](https://github.com/arvyy) | -| [core_2d_camera_split_screen](core/core_2d_camera_split_screen.c) | core_2d_camera_split_screen | â­â­â­â­ï¸ | 4.5 | 4.5 | [Gabriel dos Santos Sanches](https://github.com/gabrielssanches) | -| [core_3d_camera_mode](core/core_3d_camera_mode.c) | core_3d_camera_mode | â­â˜†â˜†â˜† | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_3d_camera_free](core/core_3d_camera_free.c) | core_3d_camera_free | â­â˜†â˜†â˜† | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_3d_camera_first_person](core/core_3d_camera_first_person.c) | core_3d_camera_first_person | â­â­â˜†â˜† | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_3d_camera_split_screen](core/core_3d_camera_split_screen.c) | core_3d_camera_split_screen | â­â­â­â˜† | 3.7 | 4.0 | [Jeffery Myers](https://github.com/JeffM2501) | -| [core_3d_camera_fps](core/core_3d_camera_fps.c) | core_3d_camera_fps | â­â­â­â˜† | 5.5 | 5.5 | [Agnis Aldiņš](https://github.com/nezvers) | -| [core_3d_picking](core/core_3d_picking.c) | core_3d_picking | â­â­â˜†â˜† | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_world_screen](core/core_world_screen.c) | core_world_screen | â­â­â˜†â˜† | 1.3 | 1.4 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_window_flags](core/core_window_flags.c) | core_window_flags | â­â­â­â˜† | 3.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_window_letterbox](core/core_window_letterbox.c) | core_window_letterbox | â­â­â˜†â˜† | 2.5 | 4.0 | [Anata](https://github.com/anatagawa) | -| [core_window_should_close](core/core_window_should_close.c) | core_window_should_close | â­â˜†â˜†â˜† | 4.2 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_monitor_detector](core/core_monitor_detector.c) | core_monitor_detector | â­â˜†â˜†â˜† | 5.5 | 5.6 | [Maicon Santana](https://github.com/maiconpintoabreu) | -| [core_custom_logging](core/core_custom_logging.c) | core_custom_logging | â­â­â­â˜† | 2.5 | 2.5 | [Pablo Marcos Oltra](https://github.com/pamarcos) | -| [core_drop_files](core/core_drop_files.c) | core_drop_files | â­â­â˜†â˜† | 1.3 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_random_values](core/core_random_values.c) | core_random_values | â­â˜†â˜†â˜† | 1.1 | 1.1 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_storage_values](core/core_storage_values.c) | core_storage_values | â­â­â˜†â˜† | 1.4 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_vr_simulator](core/core_vr_simulator.c) | core_vr_simulator | â­â­â­â˜† | 2.5 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_scissor_test](core/core_scissor_test.c) | core_scissor_test | â­â˜†â˜†â˜† | 2.5 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) | -| [core_basic_screen_manager](core/core_basic_screen_manager.c) | core_basic_screen_manager | â­â˜†â˜†â˜† | 4.0 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_custom_frame_control](core/core_custom_frame_control.c) | core_custom_frame_control | â­â­â­â­ï¸ | 4.0 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_smooth_pixelperfect](core/core_smooth_pixelperfect.c) | core_smooth_pixelperfect | â­â­â­â˜† | 3.7 | 4.0 | [Giancamillo Alessandroni](https://github.com/NotManyIdeasDev) | -| [core_random_sequence](core/core_random_sequence.c) | core_random_sequence | â­â˜†â˜†â˜† | 5.0 | 5.0 | [Dalton Overmyer](https://github.com/REDl3east) | -| [core_automation_events](core/core_automation_events.c) | core_automation_events | â­â­â­â˜† | 5.0 | 5.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_highdpi_demo](core/core_highdpi_demo.c) | core_highdpi_demo | â­â­â˜†â˜† | 5.0 | 5.5 | [Jonathan Marler](https://github.com/marler8997) | -| [core_render_texture](core/core_render_texture.c) | core_render_texture | â­â˜†â˜†â˜† | 6.0 | 6.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_undo_redo](core/core_undo_redo.c) | core_undo_redo | â­â­â­â˜† | 5.5 | 5.6 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_viewport_scaling](core/core_viewport_scaling.c) | core_viewport_scaling | â­â­â˜†â˜† | 5.5 | 5.5 | [Agnis Aldiņš](https://github.com/nezvers) | -| [core_input_actions](core/core_input_actions.c) | core_input_actions | â­â­â˜†â˜† | 5.5 | 5.6 | [Jett](https://github.com/JettMonstersGoBoom) | -| [core_directory_files](core/core_directory_files.c) | core_directory_files | â­â˜†â˜†â˜† | 5.5 | 5.6 | [Hugo ARNAL](https://github.com/hugoarnal) | -| [core_highdpi_testbed](core/core_highdpi_testbed.c) | core_highdpi_testbed | â­â˜†â˜†â˜† | 6.0 | 6.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_screen_recording](core/core_screen_recording.c) | core_screen_recording | â­â­â˜†â˜† | 6.0 | 6.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_clipboard_text](core/core_clipboard_text.c) | core_clipboard_text | â­â­â˜†â˜† | 6.0 | 6.0 | [Ananth S](https://github.com/Ananth1839) | -| [core_text_file_loading](core/core_text_file_loading.c) | core_text_file_loading | â­â˜†â˜†â˜† | 5.5 | 5.6 | [Aanjishnu Bhattacharyya](https://github.com/NimComPoo-04) | -| [core_compute_hash](core/core_compute_hash.c) | core_compute_hash | â­â­â˜†â˜† | 6.0 | 6.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_keyboard_testbed](core/core_keyboard_testbed.c) | core_keyboard_testbed | â­â­â˜†â˜† | 5.6 | 5.6 | [Ramon Santamaria](https://github.com/raysan5) | -| [core_window_web](core/core_window_web.c) | core_window_web | â­â˜†â˜†â˜† | 1.3 | 5.5 | [Ramon Santamaria](https://github.com/raysan5) | - -### category: shapes [40] - -Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module. - -| example | image | difficulty
level | version
created | last version
updated | original
developer | -|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| [shapes_basic_shapes](shapes/shapes_basic_shapes.c) | shapes_basic_shapes | â­â˜†â˜†â˜† | 1.0 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_bouncing_ball](shapes/shapes_bouncing_ball.c) | shapes_bouncing_ball | â­â˜†â˜†â˜† | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_bullet_hell](shapes/shapes_bullet_hell.c) | shapes_bullet_hell | â­â˜†â˜†â˜† | 5.6 | 5.6 | [Zero](https://github.com/zerohorsepower) | -| [shapes_colors_palette](shapes/shapes_colors_palette.c) | shapes_colors_palette | â­â­â˜†â˜† | 1.0 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_logo_raylib](shapes/shapes_logo_raylib.c) | shapes_logo_raylib | â­â˜†â˜†â˜† | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_logo_raylib_anim](shapes/shapes_logo_raylib_anim.c) | shapes_logo_raylib_anim | â­â­â˜†â˜† | 2.5 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_rectangle_scaling](shapes/shapes_rectangle_scaling.c) | shapes_rectangle_scaling | â­â­â˜†â˜† | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | -| [shapes_lines_bezier](shapes/shapes_lines_bezier.c) | shapes_lines_bezier | â­â˜†â˜†â˜† | 1.7 | 1.7 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_collision_area](shapes/shapes_collision_area.c) | shapes_collision_area | â­â­â˜†â˜† | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_following_eyes](shapes/shapes_following_eyes.c) | shapes_following_eyes | â­â­â˜†â˜† | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_easings_ball](shapes/shapes_easings_ball.c) | shapes_easings_ball | â­â­â˜†â˜† | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_easings_box](shapes/shapes_easings_box.c) | shapes_easings_box | â­â­â˜†â˜† | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_easings_rectangles](shapes/shapes_easings_rectangles.c) | shapes_easings_rectangles | â­â­â­â˜† | 2.0 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_recursive_tree](shapes/shapes_recursive_tree.c) | shapes_recursive_tree | â­â­â­â˜† | 6.0 | 6.0 | [Jopestpe](https://github.com/jopestpe) | -| [shapes_ring_drawing](shapes/shapes_ring_drawing.c) | shapes_ring_drawing | â­â­â­â˜† | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | -| [shapes_circle_sector_drawing](shapes/shapes_circle_sector_drawing.c) | shapes_circle_sector_drawing | â­â­â­â˜† | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | -| [shapes_rounded_rectangle_drawing](shapes/shapes_rounded_rectangle_drawing.c) | shapes_rounded_rectangle_drawing | â­â­â­â˜† | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | -| [shapes_top_down_lights](shapes/shapes_top_down_lights.c) | shapes_top_down_lights | â­â­â­â­ï¸ | 4.2 | 4.2 | [Jeffery Myers](https://github.com/JeffM2501) | -| [shapes_rectangle_advanced](shapes/shapes_rectangle_advanced.c) | shapes_rectangle_advanced | â­â­â­â­ï¸ | 5.5 | 5.5 | [Everton Jr.](https://github.com/evertonse) | -| [shapes_splines_drawing](shapes/shapes_splines_drawing.c) | shapes_splines_drawing | â­â­â­â˜† | 5.0 | 5.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_digital_clock](shapes/shapes_digital_clock.c) | shapes_digital_clock | â­â­â­â­ï¸ | 5.5 | 5.6 | [Hamza RAHAL](https://github.com/hmz-rhl) | -| [shapes_double_pendulum](shapes/shapes_double_pendulum.c) | shapes_double_pendulum | â­â­â˜†â˜† | 5.5 | 5.5 | [JoeCheong](https://github.com/Joecheong2006) | -| [shapes_dashed_line](shapes/shapes_dashed_line.c) | shapes_dashed_line | â­â˜†â˜†â˜† | 5.5 | 5.5 | [Luís Almeida](https://github.com/luis605) | -| [shapes_triangle_strip](shapes/shapes_triangle_strip.c) | shapes_triangle_strip | â­â­â˜†â˜† | 6.0 | 6.0 | [Jopestpe](https://github.com/jopestpe) | -| [shapes_vector_angle](shapes/shapes_vector_angle.c) | shapes_vector_angle | â­â­â˜†â˜† | 1.0 | 5.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_pie_chart](shapes/shapes_pie_chart.c) | shapes_pie_chart | â­â­â­â˜† | 5.5 | 5.6 | [Gideon Serfontein](https://github.com/GideonSerf) | -| [shapes_kaleidoscope](shapes/shapes_kaleidoscope.c) | shapes_kaleidoscope | â­â­â˜†â˜† | 5.5 | 5.6 | [Hugo ARNAL](https://github.com/hugoarnal) | -| [shapes_clock_of_clocks](shapes/shapes_clock_of_clocks.c) | shapes_clock_of_clocks | â­â­â˜†â˜† | 5.5 | 6.0 | [JP Mortiboys](https://github.com/themushroompirates) | -| [shapes_math_sine_cosine](shapes/shapes_math_sine_cosine.c) | shapes_math_sine_cosine | â­â­â˜†â˜† | 6.0 | 6.0 | [Jopestpe](https://github.com/jopestpe) | -| [shapes_mouse_trail](shapes/shapes_mouse_trail.c) | shapes_mouse_trail | â­â˜†â˜†â˜† | 5.6 | 6.0 | [Balamurugan R](https://github.com/Bala050814) | -| [shapes_simple_particles](shapes/shapes_simple_particles.c) | shapes_simple_particles | â­â­â˜†â˜† | 5.6 | 5.6 | [Jordi Santonja](https://github.com/JordSant) | -| [shapes_starfield_effect](shapes/shapes_starfield_effect.c) | shapes_starfield_effect | â­â­â˜†â˜† | 5.5 | 6.0 | [JP Mortiboys](https://github.com/themushroompirates) | -| [shapes_lines_drawing](shapes/shapes_lines_drawing.c) | shapes_lines_drawing | â­â˜†â˜†â˜† | 6.0 | 5.6 | [Robin](https://github.com/RobinsAviary) | -| [shapes_math_angle_rotation](shapes/shapes_math_angle_rotation.c) | shapes_math_angle_rotation | â­â˜†â˜†â˜† | 6.0 | 5.6 | [Kris](https://github.com/krispy-snacc) | -| [shapes_rlgl_color_wheel](shapes/shapes_rlgl_color_wheel.c) | shapes_rlgl_color_wheel | â­â­â­â˜† | 6.0 | 6.0 | [Robin](https://github.com/RobinsAviary) | -| [shapes_rlgl_triangle](shapes/shapes_rlgl_triangle.c) | shapes_rlgl_triangle | â­â­â˜†â˜† | 6.0 | 6.0 | [Robin](https://github.com/RobinsAviary) | -| [shapes_ball_physics](shapes/shapes_ball_physics.c) | shapes_ball_physics | â­â­â˜†â˜† | 6.0 | 6.0 | [David Buzatto](https://github.com/davidbuzatto) | -| [shapes_penrose_tile](shapes/shapes_penrose_tile.c) | shapes_penrose_tile | â­â­â­â­ï¸ | 5.5 | 6.0 | [David Buzatto](https://github.com/davidbuzatto) | -| [shapes_hilbert_curve](shapes/shapes_hilbert_curve.c) | shapes_hilbert_curve | â­â­â­â˜† | 5.6 | 5.6 | [Hamza RAHAL](https://github.com/hmz-rhl) | -| [shapes_easings_testbed](shapes/shapes_easings_testbed.c) | shapes_easings_testbed | â­â­â­â˜† | 2.5 | 2.5 | [Juan Miguel López](https://github.com/flashback-fx) | - -### category: textures [32] - -Examples using raylib textures functionality, including image/textures loading/generation and drawing, provided by raylib [textures](../src/rtextures.c) module. - -| example | image | difficulty
level | version
created | last version
updated | original
developer | -|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| [textures_clipboard_image](textures/textures_clipboard_image.c) | textures_clipboard_image | â­â˜†â˜†â˜† | 6.0 | 6.0 | [Maicon Santana](https://github.com/maiconpintoabreu) | -| [textures_magnifying_glass](textures/textures_magnifying_glass.c) | textures_magnifying_glass | â­â­â­â˜† | 5.6 | 5.6 | [Luke Vaughan](https://github.com/badram) | -| [textures_logo_raylib](textures/textures_logo_raylib.c) | textures_logo_raylib | â­â˜†â˜†â˜† | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_srcrec_dstrec](textures/textures_srcrec_dstrec.c) | textures_srcrec_dstrec | â­â­â­â˜† | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_image_drawing](textures/textures_image_drawing.c) | textures_image_drawing | â­â­â˜†â˜† | 1.4 | 1.4 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_image_generation](textures/textures_image_generation.c) | textures_image_generation | â­â­â˜†â˜† | 1.8 | 1.8 | [Wilhem Barbier](https://github.com/nounoursheureux) | -| [textures_image_loading](textures/textures_image_loading.c) | textures_image_loading | â­â˜†â˜†â˜† | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_image_processing](textures/textures_image_processing.c) | textures_image_processing | â­â­â­â˜† | 1.4 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_image_text](textures/textures_image_text.c) | textures_image_text | â­â­â˜†â˜† | 1.8 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_to_image](textures/textures_to_image.c) | textures_to_image | â­â˜†â˜†â˜† | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_raw_data](textures/textures_raw_data.c) | textures_raw_data | â­â­â­â˜† | 1.3 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_particles_blending](textures/textures_particles_blending.c) | textures_particles_blending | â­â˜†â˜†â˜† | 1.7 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_npatch_drawing](textures/textures_npatch_drawing.c) | textures_npatch_drawing | â­â­â­â˜† | 2.0 | 2.5 | [Jorge A. Gomes](https://github.com/overdev) | -| [textures_background_scrolling](textures/textures_background_scrolling.c) | textures_background_scrolling | â­â˜†â˜†â˜† | 2.0 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_sprite_animation](textures/textures_sprite_animation.c) | textures_sprite_animation | â­â­â˜†â˜† | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_sprite_button](textures/textures_sprite_button.c) | textures_sprite_button | â­â­â˜†â˜† | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_sprite_explosion](textures/textures_sprite_explosion.c) | textures_sprite_explosion | â­â­â˜†â˜† | 2.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_bunnymark](textures/textures_bunnymark.c) | textures_bunnymark | â­â­â­â˜† | 1.6 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_mouse_painting](textures/textures_mouse_painting.c) | textures_mouse_painting | â­â­â­â˜† | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) | -| [textures_blend_modes](textures/textures_blend_modes.c) | textures_blend_modes | â­â˜†â˜†â˜† | 3.5 | 3.5 | [Karlo Licudine](https://github.com/accidentalrebel) | -| [textures_tiled_drawing](textures/textures_tiled_drawing.c) | textures_tiled_drawing | â­â­â­â˜† | 3.0 | 4.2 | [Vlad Adrian](https://github.com/demizdor) | -| [textures_polygon_drawing](textures/textures_polygon_drawing.c) | textures_polygon_drawing | â­â˜†â˜†â˜† | 3.7 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| [textures_fog_of_war](textures/textures_fog_of_war.c) | textures_fog_of_war | â­â­â­â˜† | 4.2 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_gif_player](textures/textures_gif_player.c) | textures_gif_player | â­â­â­â˜† | 4.2 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_image_kernel](textures/textures_image_kernel.c) | textures_image_kernel | â­â­â­â­ï¸ | 1.3 | 1.3 | [Karim Salem](https://github.com/kimo-s) | -| [textures_image_channel](textures/textures_image_channel.c) | textures_image_channel | â­â­â˜†â˜† | 5.5 | 5.5 | [Bruno Cabral](https://github.com/brccabral) | -| [textures_image_rotate](textures/textures_image_rotate.c) | textures_image_rotate | â­â­â˜†â˜† | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [textures_screen_buffer](textures/textures_screen_buffer.c) | textures_screen_buffer | â­â­â˜†â˜† | 5.5 | 5.5 | [Agnis Aldiņš](https://github.com/nezvers) | -| [textures_textured_curve](textures/textures_textured_curve.c) | textures_textured_curve | â­â­â­â˜† | 4.5 | 4.5 | [Jeffery Myers](https://github.com/JeffM2501) | -| [textures_sprite_stacking](textures/textures_sprite_stacking.c) | textures_sprite_stacking | â­â­â˜†â˜† | 6.0 | 6.0 | [Robin](https://github.com/RobinsAviary) | -| [textures_cellular_automata](textures/textures_cellular_automata.c) | textures_cellular_automata | â­â­â˜†â˜† | 5.6 | 5.6 | [Jordi Santonja](https://github.com/JordSant) | -| [textures_framebuffer_rendering](textures/textures_framebuffer_rendering.c) | textures_framebuffer_rendering | â­â­â˜†â˜† | 5.6 | 5.6 | [Jack Boakes](https://github.com/jackboakes) | - -### category: text [16] - -Examples using raylib text functionality, including sprite fonts loading/generation and text drawing, provided by raylib [text](../src/rtext.c) module. - -| example | image | difficulty
level | version
created | last version
updated | original
developer | -|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| [text_sprite_fonts](text/text_sprite_fonts.c) | text_sprite_fonts | â­â˜†â˜†â˜† | 1.7 | 3.7 | [Ramon Santamaria](https://github.com/raysan5) | -| [text_font_spritefont](text/text_font_spritefont.c) | text_font_spritefont | â­â˜†â˜†â˜† | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [text_font_filters](text/text_font_filters.c) | text_font_filters | â­â­â˜†â˜† | 1.3 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [text_font_loading](text/text_font_loading.c) | text_font_loading | â­â˜†â˜†â˜† | 1.4 | 3.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [text_font_sdf](text/text_font_sdf.c) | text_font_sdf | â­â­â­â˜† | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [text_format_text](text/text_format_text.c) | text_format_text | â­â˜†â˜†â˜† | 1.1 | 3.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [text_input_box](text/text_input_box.c) | text_input_box | â­â­â˜†â˜† | 1.7 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [text_writing_anim](text/text_writing_anim.c) | text_writing_anim | â­â­â˜†â˜† | 1.4 | 1.4 | [Ramon Santamaria](https://github.com/raysan5) | -| [text_rectangle_bounds](text/text_rectangle_bounds.c) | text_rectangle_bounds | â­â­â­â­ï¸ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | -| [text_unicode_emojis](text/text_unicode_emojis.c) | text_unicode_emojis | â­â­â­â­ï¸ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | -| [text_unicode_ranges](text/text_unicode_ranges.c) | text_unicode_ranges | â­â­â­â­ï¸ | 5.5 | 5.6 | [Vadim Gunko](https://github.com/GuvaCode) | -| [text_3d_drawing](text/text_3d_drawing.c) | text_3d_drawing | â­â­â­â­ï¸ | 3.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | -| [text_codepoints_loading](text/text_codepoints_loading.c) | text_codepoints_loading | â­â­â­â˜† | 4.2 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [text_inline_styling](text/text_inline_styling.c) | text_inline_styling | â­â­â­â˜† | 6.0 | 6.0 | [Wagner Barongello](https://github.com/SultansOfCode) | -| [text_words_alignment](text/text_words_alignment.c) | text_words_alignment | â­â˜†â˜†â˜† | 6.0 | 6.0 | [JP Mortiboys](https://github.com/themushroompirates) | -| [text_strings_management](text/text_strings_management.c) | text_strings_management | â­â­â­â˜† | 6.0 | 6.0 | [David Buzatto](https://github.com/davidbuzatto) | - -### category: models [30] - -Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module. - -| example | image | difficulty
level | version
created | last version
updated | original
developer | -|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| [models_loading_iqm](models/models_loading_iqm.c) | models_loading_iqm | â­â­â˜†â˜† | 2.5 | 3.5 | [Culacant](https://github.com/culacant) | -| [models_billboard_rendering](models/models_billboard_rendering.c) | models_billboard_rendering | â­â­â­â˜† | 1.3 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_box_collisions](models/models_box_collisions.c) | models_box_collisions | â­â˜†â˜†â˜† | 1.3 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_cubicmap_rendering](models/models_cubicmap_rendering.c) | models_cubicmap_rendering | â­â­â˜†â˜† | 1.8 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_first_person_maze](models/models_first_person_maze.c) | models_first_person_maze | â­â­â˜†â˜† | 2.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_geometric_shapes](models/models_geometric_shapes.c) | models_geometric_shapes | â­â˜†â˜†â˜† | 1.0 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_mesh_generation](models/models_mesh_generation.c) | models_mesh_generation | â­â­â˜†â˜† | 1.8 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_mesh_picking](models/models_mesh_picking.c) | models_mesh_picking | â­â­â­â˜† | 1.7 | 4.0 | [Joel Davis](https://github.com/joeld42) | -| [models_loading](models/models_loading.c) | models_loading | â­â˜†â˜†â˜† | 2.0 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_loading_gltf](models/models_loading_gltf.c) | models_loading_gltf | â­â˜†â˜†â˜† | 3.7 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_loading_vox](models/models_loading_vox.c) | models_loading_vox | â­â˜†â˜†â˜† | 4.0 | 4.0 | [Johann Nadalutti](https://github.com/procfxgen) | -| [models_loading_m3d](models/models_loading_m3d.c) | models_loading_m3d | â­â­â˜†â˜† | 4.5 | 4.5 | [bzt](https://github.com/bztsrc) | -| [models_orthographic_projection](models/models_orthographic_projection.c) | models_orthographic_projection | â­â˜†â˜†â˜† | 2.0 | 3.7 | [Max Danielsson](https://github.com/autious) | -| [models_point_rendering](models/models_point_rendering.c) | models_point_rendering | â­â­â­â˜† | 5.0 | 5.0 | [Reese Gallagher](https://github.com/satchelfrost) | -| [models_rlgl_solar_system](models/models_rlgl_solar_system.c) | models_rlgl_solar_system | â­â­â­â­ï¸ | 2.5 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_yaw_pitch_roll](models/models_yaw_pitch_roll.c) | models_yaw_pitch_roll | â­â­â˜†â˜† | 1.8 | 4.0 | [Berni](https://github.com/Berni8k) | -| [models_waving_cubes](models/models_waving_cubes.c) | models_waving_cubes | â­â­â­â˜† | 2.5 | 3.7 | [Codecat](https://github.com/codecat) | -| [models_heightmap_rendering](models/models_heightmap_rendering.c) | models_heightmap_rendering | â­â˜†â˜†â˜† | 1.8 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_skybox_rendering](models/models_skybox_rendering.c) | models_skybox_rendering | â­â­â˜†â˜† | 1.8 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_textured_cube](models/models_textured_cube.c) | models_textured_cube | â­â­â˜†â˜† | 4.5 | 4.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [models_animation_gpu_skinning](models/models_animation_gpu_skinning.c) | models_animation_gpu_skinning | â­â­â­â˜† | 4.5 | 4.5 | [Daniel Holden](https://github.com/orangeduck) | -| [models_bone_socket](models/models_bone_socket.c) | models_bone_socket | â­â­â­â­ï¸ | 4.5 | 4.5 | [iP](https://github.com/ipzaur) | -| [models_tesseract_view](models/models_tesseract_view.c) | models_tesseract_view | â­â­â˜†â˜† | 6.0 | 6.0 | [Timothy van der Valk](https://github.com/arceryz) | -| [models_basic_voxel](models/models_basic_voxel.c) | models_basic_voxel | â­â­â˜†â˜† | 5.5 | 5.5 | [Tim Little](https://github.com/timlittle) | -| [models_rotating_cube](models/models_rotating_cube.c) | models_rotating_cube | â­â˜†â˜†â˜† | 6.0 | 6.0 | [Jopestpe](https://github.com/jopestpe) | -| [models_decals](models/models_decals.c) | models_decals | â­â­â­â­ï¸ | 6.0 | 6.0 | [JP Mortiboys](https://github.com/themushroompirates) | -| [models_directional_billboard](models/models_directional_billboard.c) | models_directional_billboard | â­â­â˜†â˜† | 6.0 | 6.0 | [Robin](https://github.com/RobinsAviary) | -| [models_animation_blend_custom](models/models_animation_blend_custom.c) | models_animation_blend_custom | â­â­â­â­ï¸ | 5.5 | 6.0 | [dmitrii-brand](https://github.com/dmitrii-brand) | -| [models_animation_blending](models/models_animation_blending.c) | models_animation_blending | â­â­â­â­ï¸ | 5.5 | 6.0 | [Kirandeep](https://github.com/Kirandeep-Singh-Khehra) | -| [models_animation_timing](models/models_animation_timing.c) | models_animation_timing | â­â­â­â˜† | 6.0 | 6.0 | [Ramon Santamaria](https://github.com/raysan5) | - -### category: shaders [35] - -Examples using raylib shaders functionality, including shaders loading, parameters configuration and drawing using them (model shaders and postprocessing shaders). This functionality is directly provided by raylib [rlgl](../src/rlgl.h) module. - -| example | image | difficulty
level | version
created | last version
updated | original
developer | -|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| [shaders_ascii_rendering](shaders/shaders_ascii_rendering.c) | shaders_ascii_rendering | â­â­â˜†â˜† | 5.5 | 6.0 | [Maicon Santana](https://github.com/maiconpintoabreu) | -| [shaders_basic_lighting](shaders/shaders_basic_lighting.c) | shaders_basic_lighting | â­â­â­â­ï¸ | 3.0 | 4.2 | [Chris Camacho](https://github.com/chriscamacho) | -| [shaders_model_shader](shaders/shaders_model_shader.c) | shaders_model_shader | â­â­â˜†â˜† | 1.3 | 3.7 | [Ramon Santamaria](https://github.com/raysan5) | -| [shaders_shapes_textures](shaders/shaders_shapes_textures.c) | shaders_shapes_textures | â­â­â˜†â˜† | 1.7 | 3.7 | [Ramon Santamaria](https://github.com/raysan5) | -| [shaders_custom_uniform](shaders/shaders_custom_uniform.c) | shaders_custom_uniform | â­â­â˜†â˜† | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [shaders_postprocessing](shaders/shaders_postprocessing.c) | shaders_postprocessing | â­â­â­â˜† | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [shaders_palette_switch](shaders/shaders_palette_switch.c) | shaders_palette_switch | â­â­â­â˜† | 2.5 | 3.7 | [Marco Lizza](https://github.com/MarcoLizza) | -| [shaders_raymarching_rendering](shaders/shaders_raymarching_rendering.c) | shaders_raymarching_rendering | â­â­â­â­ï¸ | 2.0 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [shaders_texture_rendering](shaders/shaders_texture_rendering.c) | shaders_texture_rendering | â­â­â˜†â˜† | 2.0 | 3.7 | [MichaÅ‚ Ciesielski](https://github.com/ciessielski) | -| [shaders_texture_outline](shaders/shaders_texture_outline.c) | shaders_texture_outline | â­â­â­â˜† | 4.0 | 4.0 | [Serenity Skiff](https://github.com/GoldenThumbs) | -| [shaders_texture_waves](shaders/shaders_texture_waves.c) | shaders_texture_waves | â­â­â˜†â˜† | 2.5 | 3.7 | [Anata](https://github.com/anatagawa) | -| [shaders_julia_set](shaders/shaders_julia_set.c) | shaders_julia_set | â­â­â­â˜† | 2.5 | 4.0 | [Josh Colclough](https://github.com/joshcol9232) | -| [shaders_mandelbrot_set](shaders/shaders_mandelbrot_set.c) | shaders_mandelbrot_set | â­â­â­â˜† | 6.0 | 6.0 | [Jordi Santonja](https://github.com/JordSant) | -| [shaders_color_correction](shaders/shaders_color_correction.c) | shaders_color_correction | â­â­â˜†â˜† | 6.0 | 6.0 | [Jordi Santonja](https://github.com/JordSant) | -| [shaders_eratosthenes_sieve](shaders/shaders_eratosthenes_sieve.c) | shaders_eratosthenes_sieve | â­â­â­â˜† | 2.5 | 4.0 | [ProfJski](https://github.com/ProfJski) | -| [shaders_fog_rendering](shaders/shaders_fog_rendering.c) | shaders_fog_rendering | â­â­â­â˜† | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| [shaders_simple_mask](shaders/shaders_simple_mask.c) | shaders_simple_mask | â­â­â˜†â˜† | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| [shaders_hot_reloading](shaders/shaders_hot_reloading.c) | shaders_hot_reloading | â­â­â­â˜† | 3.0 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) | shaders_mesh_instancing | â­â­â­â­ï¸ | 3.7 | 4.2 | [seanpringle](https://github.com/seanpringle) | -| [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) | shaders_multi_sample2d | â­â­â˜†â˜† | 3.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shaders_normalmap_rendering](shaders/shaders_normalmap_rendering.c) | shaders_normalmap_rendering | â­â­â­â­ï¸ | 6.0 | 6.0 | [Jeremy Montgomery](https://github.com/Sir_Irk) | -| [shaders_spotlight_rendering](shaders/shaders_spotlight_rendering.c) | shaders_spotlight_rendering | â­â­â˜†â˜† | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| [shaders_deferred_rendering](shaders/shaders_deferred_rendering.c) | shaders_deferred_rendering | â­â­â­â­ï¸ | 4.5 | 4.5 | [Justin Andreas Lacoste](https://github.com/27justin) | -| [shaders_hybrid_rendering](shaders/shaders_hybrid_rendering.c) | shaders_hybrid_rendering | â­â­â­â­ï¸ | 4.2 | 4.2 | [BuÄŸra Alptekin Sarı](https://github.com/BugraAlptekinSari) | -| [shaders_texture_tiling](shaders/shaders_texture_tiling.c) | shaders_texture_tiling | â­â­â˜†â˜† | 4.5 | 4.5 | [Luis Almeida](https://github.com/luis605) | -| [shaders_shadowmap_rendering](shaders/shaders_shadowmap_rendering.c) | shaders_shadowmap_rendering | â­â­â­â­ï¸ | 5.0 | 5.0 | [TheManTheMythTheGameDev](https://github.com/TheManTheMythTheGameDev) | -| [shaders_vertex_displacement](shaders/shaders_vertex_displacement.c) | shaders_vertex_displacement | â­â­â­â˜† | 5.0 | 4.5 | [Alex ZH](https://github.com/ZzzhHe) | -| [shaders_depth_writing](shaders/shaders_depth_writing.c) | shaders_depth_writing | â­â­â˜†â˜† | 4.2 | 4.2 | [BuÄŸra Alptekin Sarı](https://github.com/BugraAlptekinSari) | -| [shaders_basic_pbr](shaders/shaders_basic_pbr.c) | shaders_basic_pbr | â­â­â­â­ï¸ | 5.0 | 5.5 | [Afan OLOVCIC](https://github.com/_DevDad) | -| [shaders_lightmap_rendering](shaders/shaders_lightmap_rendering.c) | shaders_lightmap_rendering | â­â­â­â˜† | 4.5 | 4.5 | [Jussi Viitala](https://github.com/nullstare) | -| [shaders_rounded_rectangle](shaders/shaders_rounded_rectangle.c) | shaders_rounded_rectangle | â­â­â­â˜† | 5.5 | 5.5 | [Anstro Pleuton](https://github.com/anstropleuton) | -| [shaders_depth_rendering](shaders/shaders_depth_rendering.c) | shaders_depth_rendering | â­â­â­â˜† | 6.0 | 6.0 | [Luís Almeida](https://github.com/luis605) | -| [shaders_game_of_life](shaders/shaders_game_of_life.c) | shaders_game_of_life | â­â­â­â˜† | 6.0 | 6.0 | [Jordi Santonja](https://github.com/JordSant) | -| [shaders_rlgl_compute](shaders/shaders_rlgl_compute.c) | shaders_rlgl_compute | â­â­â­â­ï¸ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | -| [shaders_cel_shading](shaders/shaders_cel_shading.c) | shaders_cel_shading | â­â­â­â˜† | 6.0 | 6.0 | [Gleb A](https://github.com/ggrizzly) | - -### category: audio [10] - -Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib. - -| example | image | difficulty
level | version
created | last version
updated | original
developer | -|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| [audio_module_playing](audio/audio_module_playing.c) | audio_module_playing | â­â˜†â˜†â˜† | 1.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [audio_music_stream](audio/audio_music_stream.c) | audio_music_stream | â­â˜†â˜†â˜† | 1.3 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -| [audio_raw_stream](audio/audio_raw_stream.c) | audio_raw_stream | â­â­â­â˜† | 1.6 | 6.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [audio_sound_loading](audio/audio_sound_loading.c) | audio_sound_loading | â­â˜†â˜†â˜† | 1.1 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [audio_mixed_processor](audio/audio_mixed_processor.c) | audio_mixed_processor | â­â­â­â­ï¸ | 4.2 | 4.2 | [hkc](https://github.com/hatkidchan) | -| [audio_stream_effects](audio/audio_stream_effects.c) | audio_stream_effects | â­â­â­â­ï¸ | 4.2 | 5.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [audio_sound_multi](audio/audio_sound_multi.c) | audio_sound_multi | â­â­â˜†â˜† | 5.0 | 5.0 | [Jeffery Myers](https://github.com/JeffM2501) | -| [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | â­â­â˜†â˜† | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | -| [audio_spectrum_visualizer](audio/audio_spectrum_visualizer.c) | audio_spectrum_visualizer | â­â­â­â˜† | 6.0 | 6.0 | [IANN](https://github.com/meisei4) | -| [audio_stream_callback](audio/audio_stream_callback.c) | audio_stream_callback | â­â­â­â˜† | 6.0 | 6.0 | [Dan Hoang](https://github.com/dan-hoang) | - -Some example missing? As always, contributions are welcome, feel free to send new examples! -Here is an [examples template](examples_template.c) with instructions to start with! diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_amp_envelope.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_amp_envelope.c deleted file mode 100644 index fcc27bf..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_amp_envelope.c +++ /dev/null @@ -1,238 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - amp envelope -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example contributed by Arbinda Rizki Muhammad (@arbipink) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2026 Arbinda Rizki Muhammad (@arbipink) -* -********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "raygui.h" - -#include // Required for: sinf() - -#define BUFFER_SIZE 4096 -#define SAMPLE_RATE 44100 - -// Wave state -typedef enum { - IDLE, - ATTACK, - DECAY, - SUSTAIN, - RELEASE -} ADSRState; - -// Grouping all ADSR parameters and state into a struct -typedef struct { - float attackTime; - float decayTime; - float sustainLevel; - float releaseTime; - float currentValue; - ADSRState state; -} Envelope; - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static void FillAudioBuffer(int i, float *buffer, float envelopeValue, float *audioTime); -static void UpdateEnvelope(Envelope *env); -static void DrawADSRGraph(Envelope *env, Rectangle bounds); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - amp envelope"); - - InitAudioDevice(); - - // Set the number of samples the stream will keep in memory at a time to BUFFER_SIZE - SetAudioStreamBufferSizeDefault(BUFFER_SIZE); - float buffer[BUFFER_SIZE] = { 0 }; - - // Init raw audio stream (sample rate: 44100, sample size: 32bit-float, channels: 1-mono) - AudioStream stream = LoadAudioStream(SAMPLE_RATE, 32, 1); - - // Init Phase - float audioTime = 0.0f; - - // Initialize the struct - Envelope env = { - .attackTime = 1.0f, - .decayTime = 1.0f, - .sustainLevel = 0.5f, - .releaseTime = 1.0f, - .currentValue = 0.0f, - .state = IDLE - }; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_SPACE)) env.state = ATTACK; - - if (IsKeyReleased(KEY_SPACE) && (env.state != IDLE)) env.state = RELEASE; - - if (IsAudioStreamProcessed(stream)) - { - if ((env.state != IDLE) || (env.currentValue > 0.0f)) - { - for (int i = 0; i < BUFFER_SIZE; i++) - { - UpdateEnvelope(&env); - FillAudioBuffer(i, buffer, env.currentValue, &audioTime); - } - } - else - { - // Clear buffer if silent to avoid looping noise - for (int i = 0; i < BUFFER_SIZE; i++) buffer[i] = 0; - audioTime = 0.0f; - } - - UpdateAudioStream(stream, buffer, BUFFER_SIZE); - } - - if (!IsAudioStreamPlaying(stream)) PlayAudioStream(stream); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - GuiSliderBar((Rectangle){ 100, 60, 400, 30 }, "Attack (s)", TextFormat("%2.2fs", env.attackTime), &env.attackTime, 0.1f, 3.0f); - GuiSliderBar((Rectangle){ 100, 100, 400, 30 }, "Decay (s)", TextFormat("%2.2fs", env.decayTime), &env.decayTime, 0.1f, 3.0f); - GuiSliderBar((Rectangle){ 100, 140, 400, 30 }, "Sustain", TextFormat("%2.2f", env.sustainLevel), &env.sustainLevel, 0.0f, 1.0f); - GuiSliderBar((Rectangle){ 100, 180, 400, 30 }, "Release (s)", TextFormat("%2.2fs", env.releaseTime), &env.releaseTime, 0.1f, 3.0f); - - DrawADSRGraph(&env, (Rectangle){ 100, 250, 400, 100 }); - - DrawCircleV((Vector2){ 520, 350 - (env.currentValue * 100) }, 5, MAROON); - DrawText(TextFormat("Current Gain: %2.2f", env.currentValue), 535, 345 - (env.currentValue * 100), 10, MAROON); - - DrawText("Press SPACE to PLAY the sound!", 200, 400, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadAudioStream(stream); - CloseAudioDevice(); - - CloseWindow(); - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -static void FillAudioBuffer(int i, float *buffer, float envelopeValue, float *audioTime) -{ - int frequency = 440; - buffer[i] = envelopeValue*sinf(2.0f*PI*frequency*(*audioTime)); - *audioTime += (1.0f/SAMPLE_RATE); -} - -static void UpdateEnvelope(Envelope *env) -{ - // Calculate the time delta for ONE sample (1/44100) - float sampleTime = 1.0f/SAMPLE_RATE; - - switch(env->state) - { - case ATTACK: - { - env->currentValue += (1.0f/env->attackTime)*sampleTime; - if (env->currentValue >= 1.0f) - { - env->currentValue = 1.0f; - env->state = DECAY; - } - - } break; - case DECAY: - { - env->currentValue -= ((1.0f - env->sustainLevel)/env->decayTime)*sampleTime; - if (env->currentValue <= env->sustainLevel) - { - env->currentValue = env->sustainLevel; - env->state = SUSTAIN; - } - - } break; - case SUSTAIN: - { - env->currentValue = env->sustainLevel; - - } break; - case RELEASE: - { - env->currentValue -= (env->sustainLevel/env->releaseTime)*sampleTime; - if (env->currentValue <= 0.001f) // Use a small threshold to avoid infinite tail - { - env->currentValue = 0.0f; - env->state = IDLE; - } - - } break; - default: break; - } -} - -static void DrawADSRGraph(Envelope *env, Rectangle bounds) -{ - DrawRectangleRec(bounds, Fade(LIGHTGRAY, 0.3f)); - DrawRectangleLinesEx(bounds, 1, GRAY); - - // Fixed visual width for sustain stage since it's an amplitude not a time value - float sustainWidth = 1.0f; - - // Total time to visualize (sum of A, D, R + a padding for Sustain) - float totalTime = env->attackTime + env->decayTime + sustainWidth + env->releaseTime; - - float scaleX = bounds.width/totalTime; - float scaleY = bounds.height; - - Vector2 start = { bounds.x, bounds.y + bounds.height }; - Vector2 peak = { start.x + (env->attackTime*scaleX), bounds.y }; - Vector2 sustain = { peak.x + (env->decayTime*scaleX), bounds.y + (1.0f - env->sustainLevel)*scaleY }; - Vector2 rel = { sustain.x + (sustainWidth*scaleX), sustain.y }; - Vector2 end = { rel.x + (env->releaseTime*scaleX), bounds.y + bounds.height }; - - DrawLineV(start, peak, SKYBLUE); - DrawLineV(peak, sustain, BLUE); - DrawLineV(sustain, rel, DARKBLUE); - DrawLineV(rel, end, ORANGE); - - DrawText("ADSR Visualizer", bounds.x, bounds.y - 20, 10, DARKGRAY); -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_amp_envelope.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_amp_envelope.png deleted file mode 100644 index b09dcc9..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_amp_envelope.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_mixed_processor.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_mixed_processor.c deleted file mode 100644 index b2d6464..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_mixed_processor.c +++ /dev/null @@ -1,125 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - mixed processor -* -* Example complexity rating: [★★★★] 4/4 -* -* Example originally created with raylib 4.2, last time updated with raylib 4.2 -* -* Example contributed by hkc (@hatkidchan) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2023-2025 hkc (@hatkidchan) -* -********************************************************************************************/ -#include "raylib.h" -#include - -static float exponent = 1.0f; // Audio exponentiation value -static float averageVolume[400] = { 0.0f }; // Average volume history - -//------------------------------------------------------------------------------------ -// Audio processing function -//------------------------------------------------------------------------------------ -void ProcessAudio(void *buffer, unsigned int frames) -{ - float *samples = (float *)buffer; // Samples internally stored as s - float average = 0.0f; // Temporary average volume - - for (unsigned int frame = 0; frame < frames; frame++) - { - float *left = &samples[frame*2 + 0], *right = &samples[frame*2 + 1]; - - *left = powf(fabsf(*left), exponent)*( (*left < 0.0f)? -1.0f : 1.0f ); - *right = powf(fabsf(*right), exponent)*( (*right < 0.0f)? -1.0f : 1.0f ); - - average += fabsf(*left)/frames; // accumulating average volume - average += fabsf(*right)/frames; - } - - // Moving history to the left - for (int i = 0; i < 399; i++) averageVolume[i] = averageVolume[i + 1]; - - averageVolume[399] = average; // Adding last average value -} - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - mixed processor"); - - InitAudioDevice(); // Initialize audio device - - AttachAudioMixedProcessor(ProcessAudio); - - Music music = LoadMusicStream("resources/country.mp3"); - Sound sound = LoadSound("resources/coin.wav"); - - PlayMusicStream(music); - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateMusicStream(music); // Update music buffer with new stream data - - // Modify processing variables - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_LEFT)) exponent -= 0.05f; - if (IsKeyPressed(KEY_RIGHT)) exponent += 0.05f; - - if (exponent <= 0.5f) exponent = 0.5f; - if (exponent >= 3.0f) exponent = 3.0f; - - if (IsKeyPressed(KEY_SPACE)) PlaySound(sound); - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("MUSIC SHOULD BE PLAYING!", 255, 150, 20, LIGHTGRAY); - - DrawText(TextFormat("EXPONENT = %.2f", exponent), 215, 180, 20, LIGHTGRAY); - - DrawRectangle(199, 199, 402, 34, LIGHTGRAY); - for (int i = 0; i < 400; i++) - { - DrawLine(201 + i, 232 - (int)(averageVolume[i]*32), 201 + i, 232, MAROON); - } - DrawRectangleLines(199, 199, 402, 34, GRAY); - - DrawText("PRESS SPACE TO PLAY OTHER SOUND", 200, 250, 20, LIGHTGRAY); - DrawText("USE LEFT AND RIGHT ARROWS TO ALTER DISTORTION", 140, 280, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadMusicStream(music); // Unload music stream buffers from RAM - - DetachAudioMixedProcessor(ProcessAudio); // Disconnect audio processor - - CloseAudioDevice(); // Close audio device (music streaming is automatically stopped) - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_mixed_processor.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_mixed_processor.png deleted file mode 100644 index 8575a83..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_mixed_processor.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_module_playing.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_module_playing.c deleted file mode 100644 index 6cf888f..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_module_playing.c +++ /dev/null @@ -1,162 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - module playing -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.5, last time updated with raylib 3.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2016-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define MAX_CIRCLES 64 - -typedef struct { - Vector2 position; - float radius; - float alpha; - float speed; - Color color; -} CircleWave; - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - SetConfigFlags(FLAG_MSAA_4X_HINT); // NOTE: Try to enable MSAA 4X - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - module playing"); - - InitAudioDevice(); // Initialize audio device - - Color colors[14] = { ORANGE, RED, GOLD, LIME, BLUE, VIOLET, BROWN, LIGHTGRAY, PINK, - YELLOW, GREEN, SKYBLUE, PURPLE, BEIGE }; - - // Creates some circles for visual effect - CircleWave circles[MAX_CIRCLES] = { 0 }; - - for (int i = MAX_CIRCLES - 1; i >= 0; i--) - { - circles[i].alpha = 0.0f; - circles[i].radius = (float)GetRandomValue(10, 40); - circles[i].position.x = (float)GetRandomValue((int)circles[i].radius, (int)(screenWidth - circles[i].radius)); - circles[i].position.y = (float)GetRandomValue((int)circles[i].radius, (int)(screenHeight - circles[i].radius)); - circles[i].speed = (float)GetRandomValue(1, 100)/2000.0f; - circles[i].color = colors[GetRandomValue(0, 13)]; - } - - Music music = LoadMusicStream("resources/mini1111.xm"); - music.looping = false; - float pitch = 1.0f; - - PlayMusicStream(music); - - float timePlayed = 0.0f; - bool pause = false; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateMusicStream(music); // Update music buffer with new stream data - - // Restart music playing (stop and play) - if (IsKeyPressed(KEY_SPACE)) - { - StopMusicStream(music); - PlayMusicStream(music); - pause = false; - } - - // Pause/Resume music playing - if (IsKeyPressed(KEY_P)) - { - pause = !pause; - - if (pause) PauseMusicStream(music); - else ResumeMusicStream(music); - } - - if (IsKeyDown(KEY_DOWN)) pitch -= 0.01f; - else if (IsKeyDown(KEY_UP)) pitch += 0.01f; - - SetMusicPitch(music, pitch); - - // Get timePlayed scaled to bar dimensions - timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music)*(screenWidth - 40); - - // Color circles animation - for (int i = MAX_CIRCLES - 1; (i >= 0) && !pause; i--) - { - circles[i].alpha += circles[i].speed; - circles[i].radius += circles[i].speed*10.0f; - - if (circles[i].alpha > 1.0f) circles[i].speed *= -1; - - if (circles[i].alpha <= 0.0f) - { - circles[i].alpha = 0.0f; - circles[i].radius = (float)GetRandomValue(10, 40); - circles[i].position.x = (float)GetRandomValue((int)circles[i].radius, (int)(screenWidth - circles[i].radius)); - circles[i].position.y = (float)GetRandomValue((int)circles[i].radius, (int)(screenHeight - circles[i].radius)); - circles[i].color = colors[GetRandomValue(0, 13)]; - circles[i].speed = (float)GetRandomValue(1, 100)/2000.0f; - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - for (int i = MAX_CIRCLES - 1; i >= 0; i--) - { - DrawCircleV(circles[i].position, circles[i].radius, Fade(circles[i].color, circles[i].alpha)); - } - - // Draw time bar - DrawRectangle(20, screenHeight - 20 - 12, screenWidth - 40, 12, LIGHTGRAY); - DrawRectangle(20, screenHeight - 20 - 12, (int)timePlayed, 12, MAROON); - DrawRectangleLines(20, screenHeight - 20 - 12, screenWidth - 40, 12, GRAY); - - // Draw help instructions - DrawRectangle(20, 20, 425, 145, WHITE); - DrawRectangleLines(20, 20, 425, 145, GRAY); - DrawText("PRESS SPACE TO RESTART MUSIC", 40, 40, 20, BLACK); - DrawText("PRESS P TO PAUSE/RESUME", 40, 70, 20, BLACK); - DrawText("PRESS UP/DOWN TO CHANGE SPEED", 40, 100, 20, BLACK); - DrawText(TextFormat("SPEED: %f", pitch), 40, 130, 20, MAROON); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadMusicStream(music); // Unload music stream buffers from RAM - - CloseAudioDevice(); // Close audio device (music streaming is automatically stopped) - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_module_playing.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_module_playing.png deleted file mode 100644 index 63003e0..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_module_playing.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_music_stream.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_music_stream.c deleted file mode 100644 index 6e1dfc8..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_music_stream.c +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - music stream -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.3, last time updated with raylib 4.2 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - music stream"); - - InitAudioDevice(); // Initialize audio device - - Music music = LoadMusicStream("resources/country.mp3"); - - PlayMusicStream(music); - - float timePlayed = 0.0f; // Time played normalized [0.0f..1.0f] - bool pause = false; // Music playing paused - - float pan = 0.0f; // Default audio pan center [-1.0f..1.0f] - SetMusicPan(music, pan); - - float volume = 0.8f; // Default audio volume [0.0f..1.0f] - SetMusicVolume(music, volume); - - SetTargetFPS(30); // Set our game to run at 30 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateMusicStream(music); // Update music buffer with new stream data - - // Restart music playing (stop and play) - if (IsKeyPressed(KEY_SPACE)) - { - StopMusicStream(music); - PlayMusicStream(music); - } - - // Pause/Resume music playing - if (IsKeyPressed(KEY_P)) - { - pause = !pause; - - if (pause) PauseMusicStream(music); - else ResumeMusicStream(music); - } - - // Set audio pan - if (IsKeyDown(KEY_LEFT)) - { - pan -= 0.05f; - if (pan < -1.0f) pan = -1.0f; - SetMusicPan(music, pan); - } - else if (IsKeyDown(KEY_RIGHT)) - { - pan += 0.05f; - if (pan > 1.0f) pan = 1.0f; - SetMusicPan(music, pan); - } - - // Set audio volume - if (IsKeyDown(KEY_DOWN)) - { - volume -= 0.05f; - if (volume < 0.0f) volume = 0.0f; - SetMusicVolume(music, volume); - } - else if (IsKeyDown(KEY_UP)) - { - volume += 0.05f; - if (volume > 1.0f) volume = 1.0f; - SetMusicVolume(music, volume); - } - - // Get normalized time played for current music stream - timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music); - - if (timePlayed > 1.0f) timePlayed = 1.0f; // Make sure time played is no longer than music - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("MUSIC SHOULD BE PLAYING!", 255, 150, 20, LIGHTGRAY); - - DrawText("LEFT-RIGHT for PAN CONTROL", 320, 74, 10, DARKBLUE); - DrawRectangle(300, 100, 200, 12, LIGHTGRAY); - DrawRectangleLines(300, 100, 200, 12, GRAY); - DrawRectangle((int)(300 + (pan + 1.0f)/2.0f*200 - 5), 92, 10, 28, DARKGRAY); - - DrawRectangle(200, 200, 400, 12, LIGHTGRAY); - DrawRectangle(200, 200, (int)(timePlayed*400.0f), 12, MAROON); - DrawRectangleLines(200, 200, 400, 12, GRAY); - - DrawText("PRESS SPACE TO RESTART MUSIC", 215, 250, 20, LIGHTGRAY); - DrawText("PRESS P TO PAUSE/RESUME MUSIC", 208, 280, 20, LIGHTGRAY); - - DrawText("UP-DOWN for VOLUME CONTROL", 320, 334, 10, DARKGREEN); - DrawRectangle(300, 360, 200, 12, LIGHTGRAY); - DrawRectangleLines(300, 360, 200, 12, GRAY); - DrawRectangle((int)(300 + volume*200 - 5), 352, 10, 28, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadMusicStream(music); // Unload music stream buffers from RAM - - CloseAudioDevice(); // Close audio device (music streaming is automatically stopped) - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_music_stream.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_music_stream.png deleted file mode 100644 index f8b14e1..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_music_stream.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_raw_stream.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_raw_stream.c deleted file mode 100644 index 1978511..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_raw_stream.c +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - raw stream -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 1.6, last time updated with raylib 6.0 -* -* Example created by Ramon Santamaria (@raysan5) and reviewed by James Hofmann (@triplefox) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2026 Ramon Santamaria (@raysan5) and James Hofmann (@triplefox) -* -********************************************************************************************/ - -#include "raylib.h" -#include - -#define BUFFER_SIZE 4096 -#define SAMPLE_RATE 44100 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - raw stream"); - - InitAudioDevice(); - - // Set the number of samples the stream will keep in memory at a time to BUFFER_SIZE - SetAudioStreamBufferSizeDefault(BUFFER_SIZE); - float buffer[BUFFER_SIZE] = {}; - - // Init raw audio stream (sample rate: 44100, sample size: 32bit-float, channels: 1-mono) - AudioStream stream = LoadAudioStream(SAMPLE_RATE, 32, 1); - float pan = 0.0f; - SetAudioStreamPan(stream, pan); - PlayAudioStream(stream); - - int sineFrequency = 440; - int newSineFrequency = 440; - int sineIndex = 0; - double sineStartTime = 0.0; - - SetTargetFPS(30); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - - if (IsKeyDown(KEY_UP)) - { - newSineFrequency += 10; - if (newSineFrequency > 12500) newSineFrequency = 12500; - } - - if (IsKeyDown(KEY_DOWN)) - { - newSineFrequency -= 10; - if (newSineFrequency < 20) newSineFrequency = 20; - } - - if (IsKeyDown(KEY_LEFT)) - { - pan -= 0.01f; - if (pan < -1.0f) pan = -1.0f; - SetAudioStreamPan(stream, pan); - } - - if (IsKeyDown(KEY_RIGHT)) - { - pan += 0.01f; - if (pan > 1.0f) pan = 1.0f; - SetAudioStreamPan(stream, pan); - } - - if (IsAudioStreamProcessed(stream)) - { - for (int i = 0; i < BUFFER_SIZE; i++) - { - int wavelength = SAMPLE_RATE/sineFrequency; - buffer[i] = sin(2*PI*sineIndex/wavelength); - sineIndex++; - - if (sineIndex >= wavelength) - { - sineFrequency = newSineFrequency; - sineIndex = 0; - sineStartTime = GetTime(); - } - } - - UpdateAudioStream(stream, buffer, BUFFER_SIZE); - } - - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - ClearBackground(RAYWHITE); - - DrawText(TextFormat("sine frequency: %i", sineFrequency), screenWidth - 220, 10, 20, RED); - DrawText(TextFormat("pan: %.2f", pan), screenWidth - 220, 30, 20, RED); - DrawText("Up/down to change frequency", 10, 10, 20, DARKGRAY); - DrawText("Left/right to pan", 10, 30, 20, DARKGRAY); - - int windowStart = (GetTime() - sineStartTime)*SAMPLE_RATE; - int windowSize = 0.1f*SAMPLE_RATE; - int wavelength = SAMPLE_RATE/sineFrequency; - - // Draw a sine wave with the same frequency as the one being sent to the audio stream - for (int i = 0; i < screenWidth; i++) - { - int t0 = windowStart + i*windowSize/screenWidth; - int t1 = windowStart + (i + 1)*windowSize/screenWidth; - Vector2 startPos = { i, 250 + 50*sin(2*PI*t0/wavelength) }; - Vector2 endPos = { i + 1, 250 + 50*sin(2*PI*t1/wavelength) }; - DrawLineV(startPos, endPos, RED); - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadAudioStream(stream); // Close raw audio stream and delete buffers from RAM - CloseAudioDevice(); // Close audio device (music streaming is automatically stopped) - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_raw_stream.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_raw_stream.png deleted file mode 100644 index b061abd..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_raw_stream.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_loading.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_loading.c deleted file mode 100644 index 97e26a4..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_loading.c +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - sound loading -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.1, last time updated with raylib 3.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - sound loading"); - - InitAudioDevice(); // Initialize audio device - - Sound fxWav = LoadSound("resources/sound.wav"); // Load WAV audio file - Sound fxOgg = LoadSound("resources/target.ogg"); // Load OGG audio file - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_SPACE)) PlaySound(fxWav); // Play WAV sound - if (IsKeyPressed(KEY_ENTER)) PlaySound(fxOgg); // Play OGG sound - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("Press SPACE to PLAY the WAV sound!", 200, 180, 20, LIGHTGRAY); - DrawText("Press ENTER to PLAY the OGG sound!", 200, 220, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadSound(fxWav); // Unload sound data - UnloadSound(fxOgg); // Unload sound data - - CloseAudioDevice(); // Close audio device - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_loading.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_loading.png deleted file mode 100644 index 24071ce..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_loading.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_multi.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_multi.c deleted file mode 100644 index 79949ed..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_multi.c +++ /dev/null @@ -1,91 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - sound multi -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 5.0, last time updated with raylib 5.0 -* -* Example contributed by Jeffery Myers (@JeffM2501) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2023-2025 Jeffery Myers (@JeffM2501) -* -********************************************************************************************/ - -#include "raylib.h" - -#define MAX_SOUNDS 10 -Sound soundArray[MAX_SOUNDS] = { 0 }; -int currentSound; - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - sound multi"); - - InitAudioDevice(); // Initialize audio device - - // Load audio file into the first slot as the 'source' sound, - // this sound owns the sample data - soundArray[0] = LoadSound("resources/sound.wav"); - - // Load an alias of the sound into slots 1-9. These do not own the sound data, but can be played - for (int i = 1; i < MAX_SOUNDS; i++) soundArray[i] = LoadSoundAlias(soundArray[0]); - - currentSound = 0; // Set the sound list to the start - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_SPACE)) - { - PlaySound(soundArray[currentSound]); // Play the next open sound slot - currentSound++; // Increment the sound slot - - // If the sound slot is out of bounds, go back to 0 - if (currentSound >= MAX_SOUNDS) currentSound = 0; - - // NOTE: Another approach would be to look at the list for the first sound - // that is not playing and use that slot - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("Press SPACE to PLAY a WAV sound!", 200, 180, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - for (int i = 1; i < MAX_SOUNDS; i++) UnloadSoundAlias(soundArray[i]); // Unload sound aliases - UnloadSound(soundArray[0]); // Unload source sound data - - CloseAudioDevice(); // Close audio device - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_multi.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_multi.png deleted file mode 100644 index d60138d..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_multi.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_positioning.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_positioning.c deleted file mode 100644 index 41ea4cb..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_positioning.c +++ /dev/null @@ -1,131 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - sound positioning -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.5 -* -* Example contributed by Le Juez Victor (@Bigfoot71) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Le Juez Victor (@Bigfoot71) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static void SetSoundPosition(Camera listener, Sound sound, Vector3 position, float maxDist); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - sound positioning"); - - InitAudioDevice(); - - Sound sound = LoadSound("resources/coin.wav"); - - Camera camera = { - .position = (Vector3) { 0, 5, 5 }, - .target = (Vector3) { 0, 0, 0 }, - .up = (Vector3) { 0, 1, 0 }, - .fovy = 60, - .projection = CAMERA_PERSPECTIVE - }; - - DisableCursor(); - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_FREE); - - float th = (float)GetTime(); - - Vector3 spherePos = { - .x = 5.0f*cosf(th), - .y = 0.0f, - .z = 5.0f*sinf(th) - }; - - SetSoundPosition(camera, sound, spherePos, 1.0f); - - if (!IsSoundPlaying(sound)) PlaySound(sound); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - DrawGrid(10, 2); - DrawSphere(spherePos, 0.5f, RED); - EndMode3D(); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadSound(sound); - CloseAudioDevice(); // Close audio device - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -// Set sound 3d position -static void SetSoundPosition(Camera listener, Sound sound, Vector3 position, float maxDist) -{ - // Calculate direction vector and distance between listener and sound source - Vector3 direction = Vector3Subtract(position, listener.position); - float distance = Vector3Length(direction); - - // Apply logarithmic distance attenuation and clamp between 0-1 - float attenuation = 1.0f/(1.0f + (distance/maxDist)); - attenuation = Clamp(attenuation, 0.0f, 1.0f); - - // Calculate normalized vectors for spatial positioning - Vector3 normalizedDirection = Vector3Normalize(direction); - Vector3 forward = Vector3Normalize(Vector3Subtract(listener.target, listener.position)); - Vector3 right = Vector3Normalize(Vector3CrossProduct(listener.up, forward)); - - // Reduce volume for sounds behind the listener - float dotProduct = Vector3DotProduct(forward, normalizedDirection); - if (dotProduct < 0.0f) attenuation *= (1.0f + dotProduct*0.5f); - - // Set stereo panning based on sound position relative to listener - float pan = 0.5f + 0.5f*Vector3DotProduct(normalizedDirection, right); - - // Apply final sound properties - SetSoundVolume(sound, attenuation); - SetSoundPan(sound, pan); -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_positioning.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_positioning.png deleted file mode 100644 index 6feaf7e..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_sound_positioning.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_spectrum_visualizer.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_spectrum_visualizer.c deleted file mode 100644 index f5ffe2f..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_spectrum_visualizer.c +++ /dev/null @@ -1,285 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - spectrum visualizer -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Inspired by Inigo Quilez's https://www.shadertoy.com/ -* Resources/specification: https://gist.github.com/soulthreads/2efe50da4be1fb5f7ab60ff14ca434b8 -* -* Example created by created by IANN (@meisei4) reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 IANN (@meisei4) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -#include -#include -#include - -#if defined(PLATFORM_DESKTOP) - #define GLSL_VERSION 330 -#else // PLATFORM_ANDROID, PLATFORM_WEB - #define GLSL_VERSION 100 -#endif - -#define MONO 1 -#define SAMPLE_RATE 44100 -#define SAMPLE_RATE_F 44100.0f -#define FFT_WINDOW_SIZE 1024 -#define BUFFER_SIZE 512 -#define PER_SAMPLE_BIT_DEPTH 16 -#define AUDIO_STREAM_RING_BUFFER_SIZE (FFT_WINDOW_SIZE*2) -#define EFFECTIVE_SAMPLE_RATE (SAMPLE_RATE_F*0.5f) -#define WINDOW_TIME ((double)FFT_WINDOW_SIZE/(double)EFFECTIVE_SAMPLE_RATE) -#define FFT_HISTORICAL_SMOOTHING_DUR 2.0f -#define MIN_DECIBELS (-100.0f) // https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/minDecibels -#define MAX_DECIBELS (-30.0f) // https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/maxDecibels -#define INVERSE_DECIBEL_RANGE (1.0f/(MAX_DECIBELS - MIN_DECIBELS)) -#define DB_TO_LINEAR_SCALE (20.0f/2.302585092994046f) -#define SMOOTHING_TIME_CONSTANT 0.8f // https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/smoothingTimeConstant -#define TEXTURE_HEIGHT 1 -#define FFT_ROW 0 -#define UNUSED_CHANNEL 0.0f - -typedef struct FFTComplex { float real, imaginary; } FFTComplex; - -typedef struct FFTData { - FFTComplex *spectrum; - FFTComplex *workBuffer; - float *prevMagnitudes; - float (*fftHistory)[BUFFER_SIZE]; - int fftHistoryLen; - int historyPos; - double lastFftTime; - float tapbackPos; -} FFTData; - -static void CaptureFrame(FFTData *fftData, const float *audioSamples); -static void RenderFrame(const FFTData *fftData, Image *fftImage); -static void CooleyTukeyFFTSlow(FFTComplex *spectrum, int n); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //----------------------------------------------------------------------------------- --- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - spectrum visualizer"); - - Image fftImage = GenImageColor(BUFFER_SIZE, TEXTURE_HEIGHT, WHITE); - Texture2D fftTexture = LoadTextureFromImage(fftImage); - RenderTexture2D bufferA = LoadRenderTexture(screenWidth, screenHeight); - Vector2 iResolution = { (float)screenWidth, (float)screenHeight }; - - Shader shader = LoadShader(0, TextFormat("resources/shaders/glsl%i/fft.fs", GLSL_VERSION)); - - int iResolutionLocation = GetShaderLocation(shader, "iResolution"); - int iChannel0Location = GetShaderLocation(shader, "iChannel0"); - SetShaderValue(shader, iResolutionLocation, &iResolution, SHADER_UNIFORM_VEC2); - SetShaderValueTexture(shader, iChannel0Location, fftTexture); - - InitAudioDevice(); - SetAudioStreamBufferSizeDefault(AUDIO_STREAM_RING_BUFFER_SIZE); - - // WARNING: Memory out-of-bounds on PLATFORM_WEB - Wave wav = LoadWave("resources/country.mp3"); - WaveFormat(&wav, SAMPLE_RATE, PER_SAMPLE_BIT_DEPTH, MONO); - - AudioStream audioStream = LoadAudioStream(SAMPLE_RATE, PER_SAMPLE_BIT_DEPTH, MONO); - PlayAudioStream(audioStream); - - int fftHistoryLen = (int)ceilf(FFT_HISTORICAL_SMOOTHING_DUR/WINDOW_TIME) + 1; - - FFTData fft = { - .spectrum = RL_CALLOC(sizeof(FFTComplex), FFT_WINDOW_SIZE), - .workBuffer = RL_CALLOC(sizeof(FFTComplex), FFT_WINDOW_SIZE), - .prevMagnitudes = RL_CALLOC(BUFFER_SIZE, sizeof(float)), - .fftHistory = RL_CALLOC(fftHistoryLen, sizeof(float[BUFFER_SIZE])), - .fftHistoryLen = fftHistoryLen, - .historyPos = 0, - .lastFftTime = 0.0, - .tapbackPos = 0.01f - }; - - unsigned int wavCursor = 0; - const short *wavPCM16 = wav.data; - - short chunkSamples[AUDIO_STREAM_RING_BUFFER_SIZE] = { 0 }; - float audioSamples[FFT_WINDOW_SIZE] = { 0 }; - - SetTargetFPS(60); - //---------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - while (IsAudioStreamProcessed(audioStream)) - { - for (int i = 0; i < AUDIO_STREAM_RING_BUFFER_SIZE; i++) - { - int left = (wav.channels == 2)? wavPCM16[wavCursor*2 + 0] : wavPCM16[wavCursor]; - int right = (wav.channels == 2)? wavPCM16[wavCursor*2 + 1] : left; - chunkSamples[i] = (short)((left + right)/2); - - if (++wavCursor >= wav.frameCount) wavCursor = 0; - } - - UpdateAudioStream(audioStream, chunkSamples, AUDIO_STREAM_RING_BUFFER_SIZE); - - for (int i = 0; i < FFT_WINDOW_SIZE; i++) audioSamples[i] = (chunkSamples[i*2] + chunkSamples[i*2 + 1])*0.5f/32767.0f; - } - - CaptureFrame(&fft, audioSamples); - RenderFrame(&fft, &fftImage); - UpdateTexture(fftTexture, fftImage.data); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginShaderMode(shader); - SetShaderValueTexture(shader, iChannel0Location, fftTexture); - DrawTextureRec(bufferA.texture, - (Rectangle){ 0, 0, (float)screenWidth, (float)-screenHeight }, - (Vector2){ 0, 0 }, WHITE); - EndShaderMode(); - - EndDrawing(); - //------------------------------------------------------------------------------ - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadShader(shader); - UnloadRenderTexture(bufferA); - UnloadTexture(fftTexture); - UnloadImage(fftImage); - UnloadAudioStream(audioStream); - UnloadWave(wav); - CloseAudioDevice(); - - RL_FREE(fft.spectrum); - RL_FREE(fft.workBuffer); - RL_FREE(fft.prevMagnitudes); - RL_FREE(fft.fftHistory); - - CloseWindow(); // Close window and OpenGL context - //---------------------------------------------------------------------------------- - - return 0; -} - -// Cooley–Tukey FFT https://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algorithm#Data_reordering,_bit_reversal,_and_in-place_algorithms -static void CooleyTukeyFFTSlow(FFTComplex *spectrum, int n) -{ - int j = 0; - for (int i = 1; i < n - 1; i++) - { - int bit = n >> 1; - while (j >= bit) - { - j -= bit; - bit >>= 1; - } - j += bit; - if (i < j) - { - FFTComplex temp = spectrum[i]; - spectrum[i] = spectrum[j]; - spectrum[j] = temp; - } - } - - for (int len = 2; len <= n; len <<= 1) - { - float angle = -2.0f*PI/len; - FFTComplex twiddleUnit = { cosf(angle), sinf(angle) }; - for (int i = 0; i < n; i += len) - { - FFTComplex twiddleCurrent = { 1.0f, 0.0f }; - for (int j = 0; j < len/2; j++) - { - FFTComplex even = spectrum[i + j]; - FFTComplex odd = spectrum[i + j + len/2]; - FFTComplex twiddledOdd = { - odd.real*twiddleCurrent.real - odd.imaginary*twiddleCurrent.imaginary, - odd.real*twiddleCurrent.imaginary + odd.imaginary*twiddleCurrent.real - }; - - spectrum[i + j].real = even.real + twiddledOdd.real; - spectrum[i + j].imaginary = even.imaginary + twiddledOdd.imaginary; - spectrum[i + j + len/2].real = even.real - twiddledOdd.real; - spectrum[i + j + len/2].imaginary = even.imaginary - twiddledOdd.imaginary; - - float twiddleRealNext = twiddleCurrent.real*twiddleUnit.real - twiddleCurrent.imaginary*twiddleUnit.imaginary; - twiddleCurrent.imaginary = twiddleCurrent.real*twiddleUnit.imaginary + twiddleCurrent.imaginary*twiddleUnit.real; - twiddleCurrent.real = twiddleRealNext; - } - } - } -} - -static void CaptureFrame(FFTData *fftData, const float *audioSamples) -{ - for (int i = 0; i < FFT_WINDOW_SIZE; i++) - { - float x = (2.0f*PI*i)/(FFT_WINDOW_SIZE - 1.0f); - float blackmanWeight = 0.42f - 0.5f*cosf(x) + 0.08f*cosf(2.0f*x); // https://en.wikipedia.org/wiki/Window_function#Blackman_window - fftData->workBuffer[i].real = audioSamples[i]*blackmanWeight; - fftData->workBuffer[i].imaginary = 0.0f; - } - - CooleyTukeyFFTSlow(fftData->workBuffer, FFT_WINDOW_SIZE); - memcpy(fftData->spectrum, fftData->workBuffer, sizeof(FFTComplex)*FFT_WINDOW_SIZE); - - float smoothedSpectrum[BUFFER_SIZE]; - - for (int bin = 0; bin < BUFFER_SIZE; bin++) - { - float re = fftData->workBuffer[bin].real; - float im = fftData->workBuffer[bin].imaginary; - float linearMagnitude = sqrtf(re*re + im*im)/FFT_WINDOW_SIZE; - - float smoothedMagnitude = SMOOTHING_TIME_CONSTANT*fftData->prevMagnitudes[bin] + (1.0f - SMOOTHING_TIME_CONSTANT)*linearMagnitude; - fftData->prevMagnitudes[bin] = smoothedMagnitude; - - float db = logf(fmaxf(smoothedMagnitude, 1e-40f))*DB_TO_LINEAR_SCALE; - float normalized = (db - MIN_DECIBELS)*INVERSE_DECIBEL_RANGE; - smoothedSpectrum[bin] = Clamp(normalized, 0.0f, 1.0f); - } - - fftData->lastFftTime = GetTime(); - memcpy(fftData->fftHistory[fftData->historyPos], smoothedSpectrum, sizeof(smoothedSpectrum)); - fftData->historyPos = (fftData->historyPos + 1)%fftData->fftHistoryLen; -} - -static void RenderFrame(const FFTData *fftData, Image *fftImage) -{ - float framesSinceTapback = floorf((float)(fftData->tapbackPos/WINDOW_TIME)); - framesSinceTapback = Clamp(framesSinceTapback, 0.0f, (float)(fftData->fftHistoryLen - 1)); - - int historyPosition = (fftData->historyPos - 1 - (int)framesSinceTapback)%fftData->fftHistoryLen; - if (historyPosition < 0) historyPosition += fftData->fftHistoryLen; - - const float *amplitude = fftData->fftHistory[historyPosition]; - for (int bin = 0; bin < BUFFER_SIZE; bin++) ImageDrawPixel(fftImage, bin, FFT_ROW, ColorFromNormalized((Vector4){ amplitude[bin], UNUSED_CHANNEL, UNUSED_CHANNEL, UNUSED_CHANNEL })); -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_spectrum_visualizer.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_spectrum_visualizer.png deleted file mode 100644 index f885927..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_spectrum_visualizer.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_callback.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_callback.c deleted file mode 100644 index a033571..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_callback.c +++ /dev/null @@ -1,246 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - stream callback -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example created by Dan Hoang (@dan-hoang) and reviewed by Ramon Santamaria (@raysan5) -* -* NOTE: Example sends a wave to the audio device, -* user gets the choice of four waves: sine, square, triangle, and sawtooth -* A stream is set up to play to the audio device; stream is hooked to a callback that -* generates a wave, that is determined by user choice -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2026 Dan Hoang (@dan-hoang) -* -********************************************************************************************/ - -#include "raylib.h" - -#include -#include - -#define BUFFER_SIZE 4096 -#define SAMPLE_RATE 44100 - -// Wave type -typedef enum { - SINE, - SQUARE, - TRIANGLE, - SAWTOOTH -} WaveType; - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static void SineCallback(void *framesOut, unsigned int frameCount); -static void SquareCallback(void *framesOut, unsigned int frameCount); -static void TriangleCallback(void *framesOut, unsigned int frameCount); -static void SawtoothCallback(void *framesOut, unsigned int frameCount); - -static int waveFrequency = 440; -static int newWaveFrequency = 440; -static int waveIndex = 0; - -// Buffer to keep the last second of uploaded audio, -// part of which will be drawn on the screen -static float buffer[SAMPLE_RATE] = { 0 }; -static AudioCallback waveCallbacks[] = { SineCallback, SquareCallback, TriangleCallback, SawtoothCallback }; -static char *waveTypesAsString[] = { "sine", "square", "triangle", "sawtooth" }; - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - stream callback"); - - InitAudioDevice(); - - // Set the number of samples the stream will keep in memory at a time to BUFFER_SIZE - SetAudioStreamBufferSizeDefault(BUFFER_SIZE); - - // Init raw audio stream (sample rate: 44100, sample size: 32bit-float, channels: 1-mono) - AudioStream stream = LoadAudioStream(SAMPLE_RATE, 32, 1); - PlayAudioStream(stream); - - // Configure it so that waveCallbacks[waveType] is called whenever stream is out of samples - WaveType waveType = SINE; - SetAudioStreamCallback(stream, waveCallbacks[waveType]); - - SetTargetFPS(30); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyDown(KEY_UP)) - { - newWaveFrequency += 10; - if (newWaveFrequency > 12500) newWaveFrequency = 12500; - } - - if (IsKeyDown(KEY_DOWN)) - { - newWaveFrequency -= 10; - if (newWaveFrequency < 20) newWaveFrequency = 20; - } - - if (IsKeyPressed(KEY_LEFT)) - { - if (waveType == SINE) waveType = SAWTOOTH; - else if (waveType == SQUARE) waveType = SINE; - else if (waveType == TRIANGLE) waveType = SQUARE; - else waveType = TRIANGLE; - - SetAudioStreamCallback(stream, waveCallbacks[waveType]); - } - - if (IsKeyPressed(KEY_RIGHT)) - { - if (waveType == SINE) waveType = SQUARE; - else if (waveType == SQUARE) waveType = TRIANGLE; - else if (waveType == TRIANGLE) waveType = SAWTOOTH; - else waveType = SINE; - - SetAudioStreamCallback(stream, waveCallbacks[waveType]); - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - DrawText(TextFormat("frequency: %i", newWaveFrequency), screenWidth - 220, 10, 20, RED); - DrawText(TextFormat("wave type: %s", waveTypesAsString[waveType]), screenWidth - 220, 30, 20, RED); - DrawText("Up/down to change frequency", 10, 10, 20, DARKGRAY); - DrawText("Left/right to change wave type", 10, 30, 20, DARKGRAY); - - // Draw the last 10 ms of uploaded audio - for (int i = 0; i < screenWidth; i++) - { - Vector2 startPos = { i, 250 - 50*buffer[SAMPLE_RATE - SAMPLE_RATE/100 + i*SAMPLE_RATE/100/screenWidth] }; - Vector2 endPos = { i + 1, 250 - 50*buffer[SAMPLE_RATE - SAMPLE_RATE/100 + (i + 1)*SAMPLE_RATE/100/screenWidth] }; - DrawLineV(startPos, endPos, RED); - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadAudioStream(stream); // Close raw audio stream and delete buffers from RAM - CloseAudioDevice(); // Close audio device (music streaming is automatically stopped) - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -static void SineCallback(void *framesOut, unsigned int frameCount) -{ - int wavelength = SAMPLE_RATE/waveFrequency; - - // Synthesize the sine wave - for (int i = 0; i < frameCount; i++) - { - ((float *)framesOut)[i] = sin(2*PI*waveIndex/wavelength); - - waveIndex++; - - if (waveIndex >= wavelength) - { - waveFrequency = newWaveFrequency; - waveIndex = 0; - } - } - - // Save the synthesized samples for later drawing - for (int i = 0; i < SAMPLE_RATE - frameCount; i++) buffer[i] = buffer[i + frameCount]; - for (int i = 0; i < frameCount; i++) buffer[SAMPLE_RATE - frameCount + i] = ((float *)framesOut)[i]; -} - -static void SquareCallback(void *framesOut, unsigned int frameCount) -{ - int wavelength = SAMPLE_RATE/waveFrequency; - - // Synthesize the square wave - for (int i = 0; i < frameCount; i++) - { - ((float *)framesOut)[i] = (waveIndex < wavelength/2)? 1 : -1; - waveIndex++; - - if (waveIndex >= wavelength) - { - waveFrequency = newWaveFrequency; - waveIndex = 0; - } - } - - // Save the synthesized samples for later drawing - for (int i = 0; i < SAMPLE_RATE - frameCount; i++) buffer[i] = buffer[i + frameCount]; - for (int i = 0; i < frameCount; i++) buffer[SAMPLE_RATE - frameCount + i] = ((float *)framesOut)[i]; -} - -static void TriangleCallback(void *framesOut, unsigned int frameCount) -{ - int wavelength = SAMPLE_RATE/waveFrequency; - - // Synthesize the triangle wave - for (int i = 0; i < frameCount; i++) - { - ((float *)framesOut)[i] = (waveIndex < wavelength/2)? (-1 + 2.0f*waveIndex/(wavelength/2)) : (1 - 2.0f*(waveIndex - wavelength/2)/(wavelength/2)); - waveIndex++; - - if (waveIndex >= wavelength) - { - waveFrequency = newWaveFrequency; - waveIndex = 0; - } - } - - // Save the synthesized samples for later drawing - for (int i = 0; i < SAMPLE_RATE - frameCount; i++) buffer[i] = buffer[i + frameCount]; - for (int i = 0; i < frameCount; i++) buffer[SAMPLE_RATE - frameCount + i] = ((float *)framesOut)[i]; -} - -static void SawtoothCallback(void *framesOut, unsigned int frameCount) -{ - int wavelength = SAMPLE_RATE/waveFrequency; - - // Synthesize the sawtooth wave - for (int i = 0; i < frameCount; i++) - { - ((float *)framesOut)[i] = -1 + 2.0f*waveIndex/wavelength; - waveIndex++; - - if (waveIndex >= wavelength) - { - waveFrequency = newWaveFrequency; - waveIndex = 0; - } - } - - // Save the synthesized samples for later drawing - for (int i = 0; i < SAMPLE_RATE - frameCount; i++) buffer[i] = buffer[i + frameCount]; - for (int i = 0; i < frameCount; i++) buffer[SAMPLE_RATE - frameCount + i] = ((float *)framesOut)[i]; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_callback.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_callback.png deleted file mode 100644 index 1230574..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_callback.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_effects.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_effects.c deleted file mode 100644 index 0d06e1e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_effects.c +++ /dev/null @@ -1,187 +0,0 @@ -/******************************************************************************************* -* -* raylib [audio] example - stream effects -* -* Example complexity rating: [★★★★] 4/4 -* -* Example originally created with raylib 4.2, last time updated with raylib 5.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2022-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include // Required for: NULL - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -static float *delayBuffer = NULL; -static unsigned int delayBufferSize = 0; -static unsigned int delayReadIndex = 2; -static unsigned int delayWriteIndex = 0; - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static void AudioProcessEffectLPF(void *buffer, unsigned int frames); // Audio effect: lowpass filter -static void AudioProcessEffectDelay(void *buffer, unsigned int frames); // Audio effect: delay - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - stream effects"); - - InitAudioDevice(); // Initialize audio device - - Music music = LoadMusicStream("resources/country.mp3"); - - // Allocate buffer for the delay effect - delayBufferSize = 48000*2; // 1 second delay (device sampleRate*channels) - delayBuffer = (float *)RL_CALLOC(delayBufferSize, sizeof(float)); - - PlayMusicStream(music); - - float timePlayed = 0.0f; // Time played normalized [0.0f..1.0f] - bool pause = false; // Music playing paused - - bool enableEffectLPF = false; // Enable effect low-pass-filter - bool enableEffectDelay = false; // Enable effect delay (1 second) - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateMusicStream(music); // Update music buffer with new stream data - - // Restart music playing (stop and play) - if (IsKeyPressed(KEY_SPACE)) - { - StopMusicStream(music); - PlayMusicStream(music); - } - - // Pause/Resume music playing - if (IsKeyPressed(KEY_P)) - { - pause = !pause; - - if (pause) PauseMusicStream(music); - else ResumeMusicStream(music); - } - - // Add/Remove effect: lowpass filter - if (IsKeyPressed(KEY_F)) - { - enableEffectLPF = !enableEffectLPF; - if (enableEffectLPF) AttachAudioStreamProcessor(music.stream, AudioProcessEffectLPF); - else DetachAudioStreamProcessor(music.stream, AudioProcessEffectLPF); - } - - // Add/Remove effect: delay - if (IsKeyPressed(KEY_D)) - { - enableEffectDelay = !enableEffectDelay; - if (enableEffectDelay) AttachAudioStreamProcessor(music.stream, AudioProcessEffectDelay); - else DetachAudioStreamProcessor(music.stream, AudioProcessEffectDelay); - } - - // Get normalized time played for current music stream - timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music); - - if (timePlayed > 1.0f) timePlayed = 1.0f; // Make sure time played is no longer than music - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("MUSIC SHOULD BE PLAYING!", 245, 150, 20, LIGHTGRAY); - - DrawRectangle(200, 180, 400, 12, LIGHTGRAY); - DrawRectangle(200, 180, (int)(timePlayed*400.0f), 12, MAROON); - DrawRectangleLines(200, 180, 400, 12, GRAY); - - DrawText("PRESS SPACE TO RESTART MUSIC", 215, 230, 20, LIGHTGRAY); - DrawText("PRESS P TO PAUSE/RESUME MUSIC", 208, 260, 20, LIGHTGRAY); - - DrawText(TextFormat("PRESS F TO TOGGLE LPF EFFECT: %s", enableEffectLPF? "ON" : "OFF"), 200, 320, 20, GRAY); - DrawText(TextFormat("PRESS D TO TOGGLE DELAY EFFECT: %s", enableEffectDelay? "ON" : "OFF"), 180, 350, 20, GRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadMusicStream(music); // Unload music stream buffers from RAM - - CloseAudioDevice(); // Close audio device (music streaming is automatically stopped) - - RL_FREE(delayBuffer); // Free delay buffer - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -// Audio effect: lowpass filter -static void AudioProcessEffectLPF(void *buffer, unsigned int frames) -{ - static float low[2] = { 0.0f, 0.0f }; - static const float cutoff = 70.0f/44100.0f; // 70 Hz lowpass filter - const float k = cutoff/(cutoff + 0.1591549431f); // RC filter formula - - // Converts the buffer data before using it - float *bufferData = (float *)buffer; - for (unsigned int i = 0; i < frames*2; i += 2) - { - const float l = bufferData[i]; - const float r = bufferData[i + 1]; - - low[0] += k*(l - low[0]); - low[1] += k*(r - low[1]); - bufferData[i] = low[0]; - bufferData[i + 1] = low[1]; - } -} - -// Audio effect: delay -static void AudioProcessEffectDelay(void *buffer, unsigned int frames) -{ - for (unsigned int i = 0; i < frames*2; i += 2) - { - float leftDelay = delayBuffer[delayReadIndex++]; // ERROR: Reading buffer -> WHY??? Maybe thread related??? - float rightDelay = delayBuffer[delayReadIndex++]; - - if (delayReadIndex == delayBufferSize) delayReadIndex = 0; - - ((float *)buffer)[i] = 0.5f*((float *)buffer)[i] + 0.5f*leftDelay; - ((float *)buffer)[i + 1] = 0.5f*((float *)buffer)[i + 1] + 0.5f*rightDelay; - - delayBuffer[delayWriteIndex++] = ((float *)buffer)[i]; - delayBuffer[delayWriteIndex++] = ((float *)buffer)[i + 1]; - if (delayWriteIndex == delayBufferSize) delayWriteIndex = 0; - } -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_effects.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_effects.png deleted file mode 100644 index 4aaee8b..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/audio_stream_effects.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/raygui.h b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/raygui.h deleted file mode 100644 index 03e4879..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/raygui.h +++ /dev/null @@ -1,6051 +0,0 @@ -/******************************************************************************************* -* -* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library -* -* DESCRIPTION: -* raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also -* available as a standalone library, as long as input and drawing functions are provided -* -* FEATURES: -* - Immediate-mode gui, minimal retained data -* - +25 controls provided (basic and advanced) -* - Styling system for colors, font and metrics -* - Icons supported, embedded as a 1-bit icons pack -* - Standalone mode option (custom input/graphics backend) -* - Multiple support tools provided for raygui development -* -* POSSIBLE IMPROVEMENTS: -* - Better standalone mode API for easy plug of custom backends -* - Externalize required inputs, allow user easier customization -* -* LIMITATIONS: -* - No editable multi-line word-wraped text box supported -* - No auto-layout mechanism, up to the user to define controls position and size -* - Standalone mode requires library modification and some user work to plug another backend -* -* NOTES: -* - WARNING: GuiLoadStyle() and GuiLoadStyle{Custom}() functions, allocate memory for -* font atlas recs and glyphs, freeing that memory is (usually) up to the user, -* no unload function is explicitly provided... but note that GuiLoadStyleDefault() unloads -* by default any previously loaded font (texture, recs, glyphs) -* - Global UI alpha (guiAlpha) is applied inside GuiDrawRectangle() and GuiDrawText() functions -* -* CONTROLS PROVIDED: -* # Container/separators Controls -* - WindowBox --> StatusBar, Panel -* - GroupBox --> Line -* - Line -* - Panel --> StatusBar -* - ScrollPanel --> StatusBar -* - TabBar --> Button -* -* # Basic Controls -* - Label -* - LabelButton --> Label -* - Button -* - Toggle -* - ToggleGroup --> Toggle -* - ToggleSlider -* - CheckBox -* - ComboBox -* - DropdownBox -* - TextBox -* - ValueBox --> TextBox -* - Spinner --> Button, ValueBox -* - Slider -* - SliderBar --> Slider -* - ProgressBar -* - StatusBar -* - DummyRec -* - Grid -* -* # Advance Controls -* - ListView -* - ColorPicker --> ColorPanel, ColorBarHue -* - MessageBox --> Window, Label, Button -* - TextInputBox --> Window, Label, TextBox, Button -* -* It also provides a set of functions for styling the controls based on its properties (size, color) -* -* -* RAYGUI STYLE (guiStyle): -* raygui uses a global data array for all gui style properties (allocated on data segment by default), -* when a new style is loaded, it is loaded over the global style... but a default gui style could always be -* recovered with GuiLoadStyleDefault() function, that overwrites the current style to the default one -* -* The global style array size is fixed and depends on the number of controls and properties: -* -* static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)]; -* -* guiStyle size is by default: 16*(16 + 8) = 384 int = 384*4 bytes = 1536 bytes = 1.5 KB -* -* Note that the first set of BASE properties (by default guiStyle[0..15]) belong to the generic style -* used for all controls, when any of those base values is set, it is automatically populated to all -* controls, so, specific control values overwriting generic style should be set after base values -* -* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), -* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) -* Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR -* -* Custom control properties can be defined using the EXTENDED properties for each independent control. -* -* TOOL: rGuiStyler is a visual tool to customize raygui style: github.com/raysan5/rguistyler -* -* -* RAYGUI ICONS (guiIcons): -* raygui could use a global array containing icons data (allocated on data segment by default), -* a custom icons set could be loaded over this array using GuiLoadIcons(), but loaded icons set -* must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS will be loaded -* -* Every icon is codified in binary form, using 1 bit per pixel, so, every 16x16 icon -* requires 8 integers (16*16/32) to be stored in memory. -* -* When the icon is draw, actually one quad per pixel is drawn if the bit for that pixel is set -* -* The global icons array size is fixed and depends on the number of icons and size: -* -* static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS]; -* -* guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB -* -* TOOL: rGuiIcons is a visual tool to customize/create raygui icons: github.com/raysan5/rguiicons -* -* RAYGUI LAYOUT: -* raygui currently does not provide an auto-layout mechanism like other libraries, -* layouts must be defined manually on controls drawing, providing the right bounds Rectangle for it -* -* TOOL: rGuiLayout is a visual tool to create raygui layouts: github.com/raysan5/rguilayout -* -* CONFIGURATION: -* #define RAYGUI_IMPLEMENTATION -* Generates the implementation of the library into the included file -* If not defined, the library is in header only mode and can be included in other headers -* or source files without problems. But only ONE file should hold the implementation -* -* #define RAYGUI_STANDALONE -* Avoid raylib.h header inclusion in this file. Data types defined on raylib are defined -* internally in the library and input management and drawing functions must be provided by -* the user (check library implementation for further details) -* -* #define RAYGUI_NO_ICONS -* Avoid including embedded ricons data (256 icons, 16x16 pixels, 1-bit per pixel, 2KB) -* -* #define RAYGUI_CUSTOM_ICONS -* Includes custom ricons.h header defining a set of custom icons, -* this file can be generated using rGuiIcons tool -* -* #define RAYGUI_DEBUG_RECS_BOUNDS -* Draw control bounds rectangles for debug -* -* #define RAYGUI_DEBUG_TEXT_BOUNDS -* Draw text bounds rectangles for debug -* -* VERSIONS HISTORY: -* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) -* ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes -* ADDED: GuiValueBoxFloat() -* ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP -* ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH -* ADDED: GuiLoadIconsFromMemory() -* ADDED: Multiple new icons -* ADDED: Macros for inputs customization, raylib decoupling -* REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties -* REMOVED: GuiSliderPro(), functionality was redundant -* REVIEWED: Controls using text labels to use LABEL properties -* REVIEWED: Replaced sprintf() by snprintf() for more safety -* REVIEWED: GuiTabBar(), close tab with mouse middle button -* REVIEWED: GuiScrollPanel(), scroll speed proportional to content -* REVIEWED: GuiDropdownBox(), support roll up and hidden arrow -* REVIEWED: GuiTextBox(), cursor position initialization -* REVIEWED: GuiSliderPro(), control value change check -* REVIEWED: GuiGrid(), simplified implementation -* REVIEWED: GuiIconText(), increase buffer size and reviewed padding -* REVIEWED: GuiDrawText(), improved wrap mode drawing -* REVIEWED: GuiScrollBar(), minor tweaks -* REVIEWED: GuiProgressBar(), improved borders computing -* REVIEWED: GuiTextBox(), multiple improvements: autocursor and more -* REVIEWED: Functions descriptions, removed wrong return value reference -* REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion -* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing -* -* 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() -* ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() -* ADDED: Multiple new icons, mostly compiler related -* ADDED: New DEFAULT properties: TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE -* ADDED: New enum values: GuiTextAlignment, GuiTextAlignmentVertical, GuiTextWrapMode -* ADDED: Support loading styles with custom font charset from external file -* REDESIGNED: GuiTextBox(), support mouse cursor positioning -* REDESIGNED: GuiDrawText(), support multiline and word-wrap modes (read only) -* REDESIGNED: GuiProgressBar() to be more visual, progress affects border color -* REDESIGNED: Global alpha consideration moved to GuiDrawRectangle() and GuiDrawText() -* REDESIGNED: GuiScrollPanel(), get parameters by reference and return result value -* REDESIGNED: GuiToggleGroup(), get parameters by reference and return result value -* REDESIGNED: GuiComboBox(), get parameters by reference and return result value -* REDESIGNED: GuiCheckBox(), get parameters by reference and return result value -* REDESIGNED: GuiSlider(), get parameters by reference and return result value -* REDESIGNED: GuiSliderBar(), get parameters by reference and return result value -* REDESIGNED: GuiProgressBar(), get parameters by reference and return result value -* REDESIGNED: GuiListView(), get parameters by reference and return result value -* REDESIGNED: GuiColorPicker(), get parameters by reference and return result value -* REDESIGNED: GuiColorPanel(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarAlpha(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarHue(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), added extra parameter -* REDESIGNED: GuiListViewEx(), change parameters order -* REDESIGNED: All controls return result as int value -* REVIEWED: GuiScrollPanel() to avoid smallish scroll-bars -* REVIEWED: All examples and specially controls_test_suite -* RENAMED: gui_file_dialog module to gui_window_file_dialog -* UPDATED: All styles to include ISO-8859-15 charset (as much as possible) -* -* 3.6 (10-May-2023) ADDED: New icon: SAND_TIMER -* ADDED: GuiLoadStyleFromMemory() (binary only) -* REVIEWED: GuiScrollBar() horizontal movement key -* REVIEWED: GuiTextBox() crash on cursor movement -* REVIEWED: GuiTextBox(), additional inputs support -* REVIEWED: GuiLabelButton(), avoid text cut -* REVIEWED: GuiTextInputBox(), password input -* REVIEWED: Local GetCodepointNext(), aligned with raylib -* REDESIGNED: GuiSlider*()/GuiScrollBar() to support out-of-bounds -* -* 3.5 (20-Apr-2023) ADDED: GuiTabBar(), based on GuiToggle() -* ADDED: Helper functions to split text in separate lines -* ADDED: Multiple new icons, useful for code editing tools -* REMOVED: Unneeded icon editing functions -* REMOVED: GuiTextBoxMulti(), very limited and broken -* REMOVED: MeasureTextEx() dependency, logic directly implemented -* REMOVED: DrawTextEx() dependency, logic directly implemented -* REVIEWED: GuiScrollBar(), improve mouse-click behaviour -* REVIEWED: Library header info, more info, better organized -* REDESIGNED: GuiTextBox() to support cursor movement -* REDESIGNED: GuiDrawText() to divide drawing by lines -* -* 3.2 (22-May-2022) RENAMED: Some enum values, for unification, avoiding prefixes -* REMOVED: GuiScrollBar(), only internal -* REDESIGNED: GuiPanel() to support text parameter -* REDESIGNED: GuiScrollPanel() to support text parameter -* REDESIGNED: GuiColorPicker() to support text parameter -* REDESIGNED: GuiColorPanel() to support text parameter -* REDESIGNED: GuiColorBarAlpha() to support text parameter -* REDESIGNED: GuiColorBarHue() to support text parameter -* REDESIGNED: GuiTextInputBox() to support password -* -* 3.1 (12-Jan-2022) REVIEWED: Default style for consistency (aligned with rGuiLayout v2.5 tool) -* REVIEWED: GuiLoadStyle() to support compressed font atlas image data and unload previous textures -* REVIEWED: External icons usage logic -* REVIEWED: GuiLine() for centered alignment when including text -* RENAMED: Multiple controls properties definitions to prepend RAYGUI_ -* RENAMED: RICON_ references to RAYGUI_ICON_ for library consistency -* Projects updated and multiple tweaks -* -* 3.0 (04-Nov-2021) Integrated ricons data to avoid external file -* REDESIGNED: GuiTextBoxMulti() -* REMOVED: GuiImageButton*() -* Multiple minor tweaks and bugs corrected -* -* 2.9 (17-Mar-2021) REMOVED: Tooltip API -* 2.8 (03-May-2020) Centralized rectangles drawing to GuiDrawRectangle() -* 2.7 (20-Feb-2020) ADDED: Possible tooltips API -* 2.6 (09-Sep-2019) ADDED: GuiTextInputBox() -* REDESIGNED: GuiListView*(), GuiDropdownBox(), GuiSlider*(), GuiProgressBar(), GuiMessageBox() -* REVIEWED: GuiTextBox(), GuiSpinner(), GuiValueBox(), GuiLoadStyle() -* Replaced property INNER_PADDING by TEXT_PADDING, renamed some properties -* ADDED: 8 new custom styles ready to use -* Multiple minor tweaks and bugs corrected -* -* 2.5 (28-May-2019) Implemented extended GuiTextBox(), GuiValueBox(), GuiSpinner() -* 2.3 (29-Apr-2019) ADDED: rIcons auxiliar library and support for it, multiple controls reviewed -* Refactor all controls drawing mechanism to use control state -* 2.2 (05-Feb-2019) ADDED: GuiScrollBar(), GuiScrollPanel(), reviewed GuiListView(), removed Gui*Ex() controls -* 2.1 (26-Dec-2018) REDESIGNED: GuiCheckBox(), GuiComboBox(), GuiDropdownBox(), GuiToggleGroup() > Use combined text string -* REDESIGNED: Style system (breaking change) -* 2.0 (08-Nov-2018) ADDED: Support controls guiLock and custom fonts -* REVIEWED: GuiComboBox(), GuiListView()... -* 1.9 (09-Oct-2018) REVIEWED: GuiGrid(), GuiTextBox(), GuiTextBoxMulti(), GuiValueBox()... -* 1.8 (01-May-2018) Lot of rework and redesign to align with rGuiStyler and rGuiLayout -* 1.5 (21-Jun-2017) Working in an improved styles system -* 1.4 (15-Jun-2017) Rewritten all GUI functions (removed useless ones) -* 1.3 (12-Jun-2017) Complete redesign of style system -* 1.1 (01-Jun-2017) Complete review of the library -* 1.0 (07-Jun-2016) Converted to header-only by Ramon Santamaria -* 0.9 (07-Mar-2016) Reviewed and tested by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria -* 0.8 (27-Aug-2015) Initial release. Implemented by Kevin Gato, Daniel Nicolás and Ramon Santamaria -* -* DEPENDENCIES: -* raylib 5.6-dev - Inputs reading (keyboard/mouse), shapes drawing, font loading and text drawing -* -* STANDALONE MODE: -* By default raygui depends on raylib mostly for the inputs and the drawing functionality but that dependency can be disabled -* with the config flag RAYGUI_STANDALONE. In that case is up to the user to provide another backend to cover library needs -* -* The following functions should be redefined for a custom backend: -* -* - Vector2 GetMousePosition(void); -* - float GetMouseWheelMove(void); -* - bool IsMouseButtonDown(int button); -* - bool IsMouseButtonPressed(int button); -* - bool IsMouseButtonReleased(int button); -* - bool IsKeyDown(int key); -* - bool IsKeyPressed(int key); -* - int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() -* -* - void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() -* - void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() -* -* - Font GetFontDefault(void); // -- GuiLoadStyleDefault() -* - Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle() -* - Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image -* - void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) -* - char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data -* - void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data -* - const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs -* - int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list -* - void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list -* - unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() -* -* CONTRIBUTORS: -* Ramon Santamaria: Supervision, review, redesign, update and maintenance -* Vlad Adrian: Complete rewrite of GuiTextBox() to support extended features (2019) -* Sergio Martinez: Review, testing (2015) and redesign of multiple controls (2018) -* Adria Arranz: Testing and implementation of additional controls (2018) -* Jordi Jorba: Testing and implementation of additional controls (2018) -* Albert Martos: Review and testing of the library (2015) -* Ian Eito: Review and testing of the library (2015) -* Kevin Gato: Initial implementation of basic components (2014) -* Daniel Nicolas: Initial implementation of basic components (2014) -* -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) -* -* 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. -* -**********************************************************************************************/ - -#ifndef RAYGUI_H -#define RAYGUI_H - -#define RAYGUI_VERSION_MAJOR 4 -#define RAYGUI_VERSION_MINOR 5 -#define RAYGUI_VERSION_PATCH 0 -#define RAYGUI_VERSION "5.0-dev" - -#if !defined(RAYGUI_STANDALONE) - #include "raylib.h" -#endif - -// Function specifiers in case library is build/used as a shared library (Windows) -// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll -#if defined(_WIN32) - #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) - #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) - #endif - #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC -#endif - -// Function specifiers definition -#ifndef RAYGUIAPI - #define RAYGUIAPI // Functions defined as 'extern' by default (implicit specifiers) -#endif - -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -// Simple log system to avoid printf() calls if required -// NOTE: Avoiding those calls, also avoids const strings memory usage -#define RAYGUI_SUPPORT_LOG_INFO -#if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) -#else - #define RAYGUI_LOG(...) -#endif - -// Macros to define required UI inputs, including mapping to gamepad controls -// TODO: Define additionally required macros for missing inputs -#if !defined(GUI_BUTTON_DOWN) - #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -#if !defined(GUI_BUTTON_DOWN_ALT) - // Mapping to alternative button down pressed - #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) -#endif -#if !defined(GUI_BUTTON_PRESSED) - #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) -#if !defined(GUI_BUTTON_RELEASED) - #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -#if !defined(GUI_SCROLL_DELTA) - // Mapping to scroll delta changes - // TODO: Review inconsistencies between platforms - #if defined(PLATFORM_WEB) - // NOTE: Gamepad axis triggers not detected on web platform - #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) - #else - #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) - #endif -#endif -#if !defined(GUI_POINTER_POSITION) - #define GUI_POINTER_POSITION GetMousePosition() -#endif -#if !defined(GUI_KEY_DOWN) - #define GUI_KEY_DOWN(key) IsKeyDown(key) -#endif -#if !defined(GUI_KEY_PRESSED) - #define GUI_KEY_PRESSED(key) IsKeyPressed(key) -#endif -#if !defined(GUI_INPUT_KEY) - #define GUI_INPUT_KEY GetCharPressed() -#endif - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -// NOTE: Some types are required for RAYGUI_STANDALONE usage -//---------------------------------------------------------------------------------- -#if defined(RAYGUI_STANDALONE) - #ifndef __cplusplus - // Boolean type - #ifndef true - typedef enum { false, true } bool; - #endif - #endif - - // Vector2 type - typedef struct Vector2 { - float x; - float y; - } Vector2; - - // Vector3 type // -- ConvertHSVtoRGB(), ConvertRGBtoHSV() - typedef struct Vector3 { - float x; - float y; - float z; - } Vector3; - - // Color type, RGBA (32bit) - typedef struct Color { - unsigned char r; - unsigned char g; - unsigned char b; - unsigned char a; - } Color; - - // Rectangle type - typedef struct Rectangle { - float x; - float y; - float width; - float height; - } Rectangle; - - // TODO: Texture2D type is very coupled to raylib, required by Font type - // It should be redesigned to be provided by user - typedef struct Texture { - unsigned int id; // OpenGL texture id - int width; // Texture base width - int height; // Texture base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) - } Texture; - - // Texture2D, same as Texture - typedef Texture Texture2D; - - // Image, pixel data stored in CPU memory (RAM) - typedef struct Image { - void *data; // Image raw data - int width; // Image base width - int height; // Image base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) - } Image; - - // GlyphInfo, font characters glyphs info - typedef struct GlyphInfo { - int value; // Character value (Unicode) - int offsetX; // Character offset X when drawing - int offsetY; // Character offset Y when drawing - int advanceX; // Character advance position X - Image image; // Character image data - } GlyphInfo; - - // TODO: Font type is very coupled to raylib, mostly required by GuiLoadStyle() - // It should be redesigned to be provided by user - typedef struct Font { - int baseSize; // Base size (default chars height) - int glyphCount; // Number of glyph characters - int glyphPadding; // Padding around the glyph characters - Texture2D texture; // Texture atlas containing the glyphs - Rectangle *recs; // Rectangles in texture for the glyphs - GlyphInfo *glyphs; // Glyphs info data - } Font; -#endif - -// Style property -// NOTE: Used when exporting style as code for convenience -typedef struct GuiStyleProp { - unsigned short controlId; // Control identifier - unsigned short propertyId; // Property identifier - int propertyValue; // Property value -} GuiStyleProp; - -/* -// Controls text style -NOT USED- -// NOTE: Text style is defined by control -typedef struct GuiTextStyle { - unsigned int size; - int charSpacing; - int lineSpacing; - int alignmentH; - int alignmentV; - int padding; -} GuiTextStyle; -*/ - -// Gui control state -typedef enum { - STATE_NORMAL = 0, - STATE_FOCUSED, - STATE_PRESSED, - STATE_DISABLED -} GuiState; - -// Gui control text alignment -typedef enum { - TEXT_ALIGN_LEFT = 0, - TEXT_ALIGN_CENTER, - TEXT_ALIGN_RIGHT -} GuiTextAlignment; - -// Gui control text alignment vertical -// NOTE: Text vertical position inside the text bounds -typedef enum { - TEXT_ALIGN_TOP = 0, - TEXT_ALIGN_MIDDLE, - TEXT_ALIGN_BOTTOM -} GuiTextAlignmentVertical; - -// Gui control text wrap mode -// NOTE: Useful for multiline text -typedef enum { - TEXT_WRAP_NONE = 0, - TEXT_WRAP_CHAR, - TEXT_WRAP_WORD -} GuiTextWrapMode; - -// Gui controls -typedef enum { - // Default -> populates to all controls when set - DEFAULT = 0, - - // Basic controls - LABEL, // Used also for: LABELBUTTON - BUTTON, - TOGGLE, // Used also for: TOGGLEGROUP - SLIDER, // Used also for: SLIDERBAR, TOGGLESLIDER - PROGRESSBAR, - CHECKBOX, - COMBOBOX, - DROPDOWNBOX, - TEXTBOX, // Used also for: TEXTBOXMULTI - VALUEBOX, - CONTROL11, - LISTVIEW, - COLORPICKER, - SCROLLBAR, - STATUSBAR -} GuiControl; - -// Gui base properties for every control -// NOTE: RAYGUI_MAX_PROPS_BASE properties (by default 16 properties) -typedef enum { - BORDER_COLOR_NORMAL = 0, // Control border color in STATE_NORMAL - BASE_COLOR_NORMAL, // Control base color in STATE_NORMAL - TEXT_COLOR_NORMAL, // Control text color in STATE_NORMAL - BORDER_COLOR_FOCUSED, // Control border color in STATE_FOCUSED - BASE_COLOR_FOCUSED, // Control base color in STATE_FOCUSED - TEXT_COLOR_FOCUSED, // Control text color in STATE_FOCUSED - BORDER_COLOR_PRESSED, // Control border color in STATE_PRESSED - BASE_COLOR_PRESSED, // Control base color in STATE_PRESSED - TEXT_COLOR_PRESSED, // Control text color in STATE_PRESSED - BORDER_COLOR_DISABLED, // Control border color in STATE_DISABLED - BASE_COLOR_DISABLED, // Control base color in STATE_DISABLED - TEXT_COLOR_DISABLED, // Control text color in STATE_DISABLED - BORDER_WIDTH = 12, // Control border size, 0 for no border - //TEXT_SIZE, // Control text size (glyphs max height) -> GLOBAL for all controls - //TEXT_SPACING, // Control text spacing between glyphs -> GLOBAL for all controls - //TEXT_LINE_SPACING, // Control text spacing between lines -> GLOBAL for all controls - TEXT_PADDING = 13, // Control text padding, not considering border - TEXT_ALIGNMENT = 14, // Control text horizontal alignment inside control text bound (after border and padding) - //TEXT_WRAP_MODE // Control text wrap-mode inside text bounds -> GLOBAL for all controls -} GuiControlProperty; - -// TODO: Which text styling properties should be global or per-control? -// At this moment TEXT_PADDING and TEXT_ALIGNMENT is configured and saved per control while -// TEXT_SIZE, TEXT_SPACING, TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE are global and -// should be configured by user as needed while defining the UI layout - -// Gui extended properties depend on control -// NOTE: RAYGUI_MAX_PROPS_EXTENDED properties (by default, max 8 properties) -//---------------------------------------------------------------------------------- -// DEFAULT extended properties -// NOTE: Those properties are common to all controls or global -// WARNING: Only 8 slots vailable for those properties by default -typedef enum { - TEXT_SIZE = 16, // Text size (glyphs max height) - TEXT_SPACING, // Text spacing between glyphs - LINE_COLOR, // Line control color - BACKGROUND_COLOR, // Background color - TEXT_LINE_SPACING, // Text spacing between lines - TEXT_ALIGNMENT_VERTICAL, // Text vertical alignment inside text bounds (after border and padding) - TEXT_WRAP_MODE // Text wrap-mode inside text bounds - //TEXT_DECORATION // Text decoration: 0-None, 1-Underline, 2-Line-through, 3-Overline - //TEXT_DECORATION_THICK // Text decoration line thickness -} GuiDefaultProperty; - -// Other possible text properties: -// TEXT_WEIGHT // Normal, Italic, Bold -> Requires specific font change -// TEXT_INDENT // Text indentation -> Now using TEXT_PADDING... - -// Label -//typedef enum { } GuiLabelProperty; - -// Button/Spinner -//typedef enum { } GuiButtonProperty; - -// Toggle/ToggleGroup -typedef enum { - GROUP_PADDING = 16, // ToggleGroup separation between toggles -} GuiToggleProperty; - -// Slider/SliderBar -typedef enum { - SLIDER_WIDTH = 16, // Slider size of internal bar - SLIDER_PADDING // Slider/SliderBar internal bar padding -} GuiSliderProperty; - -// ProgressBar -typedef enum { - PROGRESS_PADDING = 16, // ProgressBar internal padding - PROGRESS_SIDE, // ProgressBar increment side: 0-left->right, 1-right-left -} GuiProgressBarProperty; - -// ScrollBar -typedef enum { - ARROWS_SIZE = 16, // ScrollBar arrows size - ARROWS_VISIBLE, // ScrollBar arrows visible - SCROLL_SLIDER_PADDING, // ScrollBar slider internal padding - SCROLL_SLIDER_SIZE, // ScrollBar slider size - SCROLL_PADDING, // ScrollBar scroll padding from arrows - SCROLL_SPEED, // ScrollBar scrolling speed -} GuiScrollBarProperty; - -// CheckBox -typedef enum { - CHECK_PADDING = 16 // CheckBox internal check padding -} GuiCheckBoxProperty; - -// ComboBox -typedef enum { - COMBO_BUTTON_WIDTH = 16, // ComboBox right button width - COMBO_BUTTON_SPACING // ComboBox button separation -} GuiComboBoxProperty; - -// DropdownBox -typedef enum { - ARROW_PADDING = 16, // DropdownBox arrow separation from border and items - DROPDOWN_ITEMS_SPACING, // DropdownBox items separation - DROPDOWN_ARROW_HIDDEN, // DropdownBox arrow hidden - DROPDOWN_ROLL_UP // DropdownBox roll up flag (default rolls down) -} GuiDropdownBoxProperty; - -// TextBox/TextBoxMulti/ValueBox/Spinner -typedef enum { - TEXT_READONLY = 16, // TextBox in read-only mode: 0-text editable, 1-text no-editable -} GuiTextBoxProperty; - -// ValueBox/Spinner -typedef enum { - SPINNER_BUTTON_WIDTH = 16, // Spinner left/right buttons width - SPINNER_BUTTON_SPACING, // Spinner buttons separation -} GuiValueBoxProperty; - -// Control11 -//typedef enum { } GuiControl11Property; - -// ListView -typedef enum { - LIST_ITEMS_HEIGHT = 16, // ListView items height - LIST_ITEMS_SPACING, // ListView items separation - SCROLLBAR_WIDTH, // ListView scrollbar size (usually width) - SCROLLBAR_SIDE, // ListView scrollbar side (0-SCROLLBAR_LEFT_SIDE, 1-SCROLLBAR_RIGHT_SIDE) - LIST_ITEMS_BORDER_NORMAL, // ListView items border enabled in normal state - LIST_ITEMS_BORDER_WIDTH // ListView items border width -} GuiListViewProperty; - -// ColorPicker -typedef enum { - COLOR_SELECTOR_SIZE = 16, - HUEBAR_WIDTH, // ColorPicker right hue bar width - HUEBAR_PADDING, // ColorPicker right hue bar separation from panel - HUEBAR_SELECTOR_HEIGHT, // ColorPicker right hue bar selector height - HUEBAR_SELECTOR_OVERFLOW // ColorPicker right hue bar selector overflow -} GuiColorPickerProperty; - -#define SCROLLBAR_LEFT_SIDE 0 -#define SCROLLBAR_RIGHT_SIDE 1 - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -// ... - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- - -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif - -// Global gui state control functions -RAYGUIAPI void GuiEnable(void); // Enable gui controls (global state) -RAYGUIAPI void GuiDisable(void); // Disable gui controls (global state) -RAYGUIAPI void GuiLock(void); // Lock gui controls (global state) -RAYGUIAPI void GuiUnlock(void); // Unlock gui controls (global state) -RAYGUIAPI bool GuiIsLocked(void); // Check if gui is locked (global state) -RAYGUIAPI void GuiSetAlpha(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f -RAYGUIAPI void GuiSetState(int state); // Set gui state (global state) -RAYGUIAPI int GuiGetState(void); // Get gui state (global state) - -// Font set/get functions -RAYGUIAPI void GuiSetFont(Font font); // Set gui custom font (global state) -RAYGUIAPI Font GuiGetFont(void); // Get gui custom font (global state) - -// Style set/get functions -RAYGUIAPI void GuiSetStyle(int control, int property, int value); // Set one style property -RAYGUIAPI int GuiGetStyle(int control, int property); // Get one style property - -// Styles loading functions -RAYGUIAPI void GuiLoadStyle(const char *fileName); // Load style file over global style variable (.rgs) -RAYGUIAPI void GuiLoadStyleDefault(void); // Load style default over global style - -// Tooltips management functions -RAYGUIAPI void GuiEnableTooltip(void); // Enable gui tooltips (global state) -RAYGUIAPI void GuiDisableTooltip(void); // Disable gui tooltips (global state) -RAYGUIAPI void GuiSetTooltip(const char *tooltip); // Set tooltip string - -// Icons functionality -RAYGUIAPI const char *GuiIconText(int iconId, const char *text); // Get text with icon id prepended (if supported) -#if !defined(RAYGUI_NO_ICONS) -RAYGUIAPI void GuiSetIconScale(int scale); // Set default icon drawing size -RAYGUIAPI unsigned int *GuiGetIcons(void); // Get raygui icons data pointer -RAYGUIAPI char **GuiLoadIcons(const char *fileName, bool loadIconsName); // Load raygui icons file (.rgi) into internal icons data -RAYGUIAPI void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color); // Draw icon using pixel size at specified position -#endif - -// Utility functions -RAYGUIAPI int GuiGetTextWidth(const char *text); // Get text width considering gui style and icon size (if required) - -// Controls -//---------------------------------------------------------------------------------------------------------- -// Container/separator controls, useful for controls organization -RAYGUIAPI int GuiWindowBox(Rectangle bounds, const char *title); // Window Box control, shows a window that can be closed -RAYGUIAPI int GuiGroupBox(Rectangle bounds, const char *text); // Group Box control with text name -RAYGUIAPI int GuiLine(Rectangle bounds, const char *text); // Line separator control, could contain text -RAYGUIAPI int GuiPanel(Rectangle bounds, const char *text); // Panel control, useful to group controls -RAYGUIAPI int GuiTabBar(Rectangle bounds, char **text, int count, int *active); // Tab Bar control, returns TAB to be closed or -1 -RAYGUIAPI int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view); // Scroll Panel control - -// Basic controls set -RAYGUIAPI int GuiLabel(Rectangle bounds, const char *text); // Label control -RAYGUIAPI int GuiButton(Rectangle bounds, const char *text); // Button control, returns true when clicked -RAYGUIAPI int GuiLabelButton(Rectangle bounds, const char *text); // Label button control, returns true when clicked -RAYGUIAPI int GuiToggle(Rectangle bounds, const char *text, bool *active); // Toggle Button control -RAYGUIAPI int GuiToggleGroup(Rectangle bounds, const char *text, int *active); // Toggle Group control -RAYGUIAPI int GuiToggleSlider(Rectangle bounds, const char *text, int *active); // Toggle Slider control -RAYGUIAPI int GuiCheckBox(Rectangle bounds, const char *text, bool *checked); // Check Box control, returns true when active -RAYGUIAPI int GuiComboBox(Rectangle bounds, const char *text, int *active); // Combo Box control - -RAYGUIAPI int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode); // Dropdown Box control -RAYGUIAPI int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Spinner control -RAYGUIAPI int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Value Box control, updates input text with numbers -RAYGUIAPI int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode); // Value box control for float values -RAYGUIAPI int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode); // Text Box control, updates input text - -RAYGUIAPI int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider control -RAYGUIAPI int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider Bar control -RAYGUIAPI int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Progress Bar control -RAYGUIAPI int GuiStatusBar(Rectangle bounds, const char *text); // Status Bar control, shows info text -RAYGUIAPI int GuiDummyRec(Rectangle bounds, const char *text); // Dummy control for placeholders -RAYGUIAPI int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell); // Grid control - -// Advance controls set -RAYGUIAPI int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active); // List View control -RAYGUIAPI int GuiListViewEx(Rectangle bounds, char **text, int count, int *scrollIndex, int *active, int *focus); // List View with extended parameters -RAYGUIAPI int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons); // Message Box control, displays a message -RAYGUIAPI int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive); // Text Input Box control, ask for text, supports secret -RAYGUIAPI int GuiColorPicker(Rectangle bounds, const char *text, Color *color); // Color Picker control (multiple color controls) -RAYGUIAPI int GuiColorPanel(Rectangle bounds, const char *text, Color *color); // Color Panel control -RAYGUIAPI int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha); // Color Bar Alpha control -RAYGUIAPI int GuiColorBarHue(Rectangle bounds, const char *text, float *value); // Color Bar Hue control -RAYGUIAPI int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Picker control that avoids conversion to RGB on each call (multiple color controls) -RAYGUIAPI int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV() -//---------------------------------------------------------------------------------------------------------- - -#if !defined(RAYGUI_NO_ICONS) - -#if !defined(RAYGUI_CUSTOM_ICONS) -//---------------------------------------------------------------------------------- -// Icons enumeration -//---------------------------------------------------------------------------------- -typedef enum { - ICON_NONE = 0, - ICON_FOLDER_FILE_OPEN = 1, - ICON_FILE_SAVE_CLASSIC = 2, - ICON_FOLDER_OPEN = 3, - ICON_FOLDER_SAVE = 4, - ICON_FILE_OPEN = 5, - ICON_FILE_SAVE = 6, - ICON_FILE_EXPORT = 7, - ICON_FILE_ADD = 8, - ICON_FILE_DELETE = 9, - ICON_FILETYPE_TEXT = 10, - ICON_FILETYPE_AUDIO = 11, - ICON_FILETYPE_IMAGE = 12, - ICON_FILETYPE_PLAY = 13, - ICON_FILETYPE_VIDEO = 14, - ICON_FILETYPE_INFO = 15, - ICON_FILE_COPY = 16, - ICON_FILE_CUT = 17, - ICON_FILE_PASTE = 18, - ICON_CURSOR_HAND = 19, - ICON_CURSOR_POINTER = 20, - ICON_CURSOR_CLASSIC = 21, - ICON_PENCIL = 22, - ICON_PENCIL_BIG = 23, - ICON_BRUSH_CLASSIC = 24, - ICON_BRUSH_PAINTER = 25, - ICON_WATER_DROP = 26, - ICON_COLOR_PICKER = 27, - ICON_RUBBER = 28, - ICON_COLOR_BUCKET = 29, - ICON_TEXT_T = 30, - ICON_TEXT_A = 31, - ICON_SCALE = 32, - ICON_RESIZE = 33, - ICON_FILTER_POINT = 34, - ICON_FILTER_BILINEAR = 35, - ICON_CROP = 36, - ICON_CROP_ALPHA = 37, - ICON_SQUARE_TOGGLE = 38, - ICON_SYMMETRY = 39, - ICON_SYMMETRY_HORIZONTAL = 40, - ICON_SYMMETRY_VERTICAL = 41, - ICON_LENS = 42, - ICON_LENS_BIG = 43, - ICON_EYE_ON = 44, - ICON_EYE_OFF = 45, - ICON_FILTER_TOP = 46, - ICON_FILTER = 47, - ICON_TARGET_POINT = 48, - ICON_TARGET_SMALL = 49, - ICON_TARGET_BIG = 50, - ICON_TARGET_MOVE = 51, - ICON_CURSOR_MOVE = 52, - ICON_CURSOR_SCALE = 53, - ICON_CURSOR_SCALE_RIGHT = 54, - ICON_CURSOR_SCALE_LEFT = 55, - ICON_UNDO = 56, - ICON_REDO = 57, - ICON_REREDO = 58, - ICON_MUTATE = 59, - ICON_ROTATE = 60, - ICON_REPEAT = 61, - ICON_SHUFFLE = 62, - ICON_EMPTYBOX = 63, - ICON_TARGET = 64, - ICON_TARGET_SMALL_FILL = 65, - ICON_TARGET_BIG_FILL = 66, - ICON_TARGET_MOVE_FILL = 67, - ICON_CURSOR_MOVE_FILL = 68, - ICON_CURSOR_SCALE_FILL = 69, - ICON_CURSOR_SCALE_RIGHT_FILL = 70, - ICON_CURSOR_SCALE_LEFT_FILL = 71, - ICON_UNDO_FILL = 72, - ICON_REDO_FILL = 73, - ICON_REREDO_FILL = 74, - ICON_MUTATE_FILL = 75, - ICON_ROTATE_FILL = 76, - ICON_REPEAT_FILL = 77, - ICON_SHUFFLE_FILL = 78, - ICON_EMPTYBOX_SMALL = 79, - ICON_BOX = 80, - ICON_BOX_TOP = 81, - ICON_BOX_TOP_RIGHT = 82, - ICON_BOX_RIGHT = 83, - ICON_BOX_BOTTOM_RIGHT = 84, - ICON_BOX_BOTTOM = 85, - ICON_BOX_BOTTOM_LEFT = 86, - ICON_BOX_LEFT = 87, - ICON_BOX_TOP_LEFT = 88, - ICON_BOX_CENTER = 89, - ICON_BOX_CIRCLE_MASK = 90, - ICON_POT = 91, - ICON_ALPHA_MULTIPLY = 92, - ICON_ALPHA_CLEAR = 93, - ICON_DITHERING = 94, - ICON_MIPMAPS = 95, - ICON_BOX_GRID = 96, - ICON_GRID = 97, - ICON_BOX_CORNERS_SMALL = 98, - ICON_BOX_CORNERS_BIG = 99, - ICON_FOUR_BOXES = 100, - ICON_GRID_FILL = 101, - ICON_BOX_MULTISIZE = 102, - ICON_ZOOM_SMALL = 103, - ICON_ZOOM_MEDIUM = 104, - ICON_ZOOM_BIG = 105, - ICON_ZOOM_ALL = 106, - ICON_ZOOM_CENTER = 107, - ICON_BOX_DOTS_SMALL = 108, - ICON_BOX_DOTS_BIG = 109, - ICON_BOX_CONCENTRIC = 110, - ICON_BOX_GRID_BIG = 111, - ICON_OK_TICK = 112, - ICON_CROSS = 113, - ICON_ARROW_LEFT = 114, - ICON_ARROW_RIGHT = 115, - ICON_ARROW_DOWN = 116, - ICON_ARROW_UP = 117, - ICON_ARROW_LEFT_FILL = 118, - ICON_ARROW_RIGHT_FILL = 119, - ICON_ARROW_DOWN_FILL = 120, - ICON_ARROW_UP_FILL = 121, - ICON_AUDIO = 122, - ICON_FX = 123, - ICON_WAVE = 124, - ICON_WAVE_SINUS = 125, - ICON_WAVE_SQUARE = 126, - ICON_WAVE_TRIANGULAR = 127, - ICON_CROSS_SMALL = 128, - ICON_PLAYER_PREVIOUS = 129, - ICON_PLAYER_PLAY_BACK = 130, - ICON_PLAYER_PLAY = 131, - ICON_PLAYER_PAUSE = 132, - ICON_PLAYER_STOP = 133, - ICON_PLAYER_NEXT = 134, - ICON_PLAYER_RECORD = 135, - ICON_MAGNET = 136, - ICON_LOCK_CLOSE = 137, - ICON_LOCK_OPEN = 138, - ICON_CLOCK = 139, - ICON_TOOLS = 140, - ICON_GEAR = 141, - ICON_GEAR_BIG = 142, - ICON_BIN = 143, - ICON_HAND_POINTER = 144, - ICON_LASER = 145, - ICON_COIN = 146, - ICON_EXPLOSION = 147, - ICON_1UP = 148, - ICON_PLAYER = 149, - ICON_PLAYER_JUMP = 150, - ICON_KEY = 151, - ICON_DEMON = 152, - ICON_TEXT_POPUP = 153, - ICON_GEAR_EX = 154, - ICON_CRACK = 155, - ICON_CRACK_POINTS = 156, - ICON_STAR = 157, - ICON_DOOR = 158, - ICON_EXIT = 159, - ICON_MODE_2D = 160, - ICON_MODE_3D = 161, - ICON_CUBE = 162, - ICON_CUBE_FACE_TOP = 163, - ICON_CUBE_FACE_LEFT = 164, - ICON_CUBE_FACE_FRONT = 165, - ICON_CUBE_FACE_BOTTOM = 166, - ICON_CUBE_FACE_RIGHT = 167, - ICON_CUBE_FACE_BACK = 168, - ICON_CAMERA = 169, - ICON_SPECIAL = 170, - ICON_LINK_NET = 171, - ICON_LINK_BOXES = 172, - ICON_LINK_MULTI = 173, - ICON_LINK = 174, - ICON_LINK_BROKE = 175, - ICON_TEXT_NOTES = 176, - ICON_NOTEBOOK = 177, - ICON_SUITCASE = 178, - ICON_SUITCASE_ZIP = 179, - ICON_MAILBOX = 180, - ICON_MONITOR = 181, - ICON_PRINTER = 182, - ICON_PHOTO_CAMERA = 183, - ICON_PHOTO_CAMERA_FLASH = 184, - ICON_HOUSE = 185, - ICON_HEART = 186, - ICON_CORNER = 187, - ICON_VERTICAL_BARS = 188, - ICON_VERTICAL_BARS_FILL = 189, - ICON_LIFE_BARS = 190, - ICON_INFO = 191, - ICON_CROSSLINE = 192, - ICON_HELP = 193, - ICON_FILETYPE_ALPHA = 194, - ICON_FILETYPE_HOME = 195, - ICON_LAYERS_VISIBLE = 196, - ICON_LAYERS = 197, - ICON_WINDOW = 198, - ICON_HIDPI = 199, - ICON_FILETYPE_BINARY = 200, - ICON_HEX = 201, - ICON_SHIELD = 202, - ICON_FILE_NEW = 203, - ICON_FOLDER_ADD = 204, - ICON_ALARM = 205, - ICON_CPU = 206, - ICON_ROM = 207, - ICON_STEP_OVER = 208, - ICON_STEP_INTO = 209, - ICON_STEP_OUT = 210, - ICON_RESTART = 211, - ICON_BREAKPOINT_ON = 212, - ICON_BREAKPOINT_OFF = 213, - ICON_BURGER_MENU = 214, - ICON_CASE_SENSITIVE = 215, - ICON_REG_EXP = 216, - ICON_FOLDER = 217, - ICON_FILE = 218, - ICON_SAND_TIMER = 219, - ICON_WARNING = 220, - ICON_HELP_BOX = 221, - ICON_INFO_BOX = 222, - ICON_PRIORITY = 223, - ICON_LAYERS_ISO = 224, - ICON_LAYERS2 = 225, - ICON_MLAYERS = 226, - ICON_MAPS = 227, - ICON_HOT = 228, - ICON_LABEL = 229, - ICON_NAME_ID = 230, - ICON_SLICING = 231, - ICON_MANUAL_CONTROL = 232, - ICON_COLLISION = 233, - ICON_CIRCLE_ADD = 234, - ICON_CIRCLE_ADD_FILL = 235, - ICON_CIRCLE_WARNING = 236, - ICON_CIRCLE_WARNING_FILL = 237, - ICON_BOX_MORE = 238, - ICON_BOX_MORE_FILL = 239, - ICON_BOX_MINUS = 240, - ICON_BOX_MINUS_FILL = 241, - ICON_UNION = 242, - ICON_INTERSECTION = 243, - ICON_DIFFERENCE = 244, - ICON_SPHERE = 245, - ICON_CYLINDER = 246, - ICON_CONE = 247, - ICON_ELLIPSOID = 248, - ICON_CAPSULE = 249, - ICON_250 = 250, - ICON_251 = 251, - ICON_252 = 252, - ICON_253 = 253, - ICON_254 = 254, - ICON_255 = 255 -} GuiIconName; -#endif - -#endif - -#if defined(__cplusplus) -} // Prevents name mangling of functions -#endif - -#endif // RAYGUI_H - -/*********************************************************************************** -* -* RAYGUI IMPLEMENTATION -* -************************************************************************************/ - -#if defined(RAYGUI_IMPLEMENTATION) - -#include // required for: isspace() [GuiTextBox()] -#include // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf(), snprintf(), vsprintf() [GuiLoadStyle(), GuiLoadIcons()] -#include // Required for: strlen() [GuiTextBox(), GuiValueBox()], memset(), memcpy() -#include // Required for: va_list, va_start(), vfprintf(), va_end() [TextFormat()] -#include // Required for: roundf() [GuiColorPicker()] - -// Allow custom memory allocators -#if defined(RAYGUI_MALLOC) || defined(RAYGUI_CALLOC) || defined(RAYGUI_FREE) - #if !defined(RAYGUI_MALLOC) || !defined(RAYGUI_CALLOC) || !defined(RAYGUI_FREE) - #error "RAYGUI: if RAYGUI_MALLOC, RAYGUI_CALLOC, or RAYGUI_FREE is customized, all three must be customized" - #endif -#else - #include // Required for: malloc(), calloc(), free() [GuiLoadStyle(), GuiLoadIcons()] - - #define RAYGUI_MALLOC(sz) malloc(sz) - #define RAYGUI_CALLOC(n,sz) calloc(n,sz) - #define RAYGUI_FREE(p) free(p) -#endif - -#ifdef __cplusplus - #define RAYGUI_CLITERAL(name) name -#else - #define RAYGUI_CLITERAL(name) (name) -#endif - -// Check if two rectangles are equal, used to validate a slider bounds as an id -#ifndef CHECK_BOUNDS_ID - #define CHECK_BOUNDS_ID(src, dst) (((int)src.x == (int)dst.x) && ((int)src.y == (int)dst.y) && ((int)src.width == (int)dst.width) && ((int)src.height == (int)dst.height)) -#endif - -#if !defined(RAYGUI_NO_ICONS) && !defined(RAYGUI_CUSTOM_ICONS) - -// Embedded icons, no external file provided -#define RAYGUI_ICON_SIZE 16 // Size of icons in pixels (squared) -#define RAYGUI_ICON_MAX_ICONS 256 // Maximum number of icons -#define RAYGUI_ICON_MAX_NAME_LENGTH 32 // Maximum length of icon name id - -// Icons data is defined by bit array (every bit represents one pixel) -// Those arrays are stored as unsigned int data arrays, so, -// every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) -// NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) -#define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) - -//---------------------------------------------------------------------------------- -// Icons data for all gui possible icons (allocated on data segment by default) -// -// NOTE 1: Every icon is codified in binary form, using 1 bit per pixel, so, -// every 16x16 icon requires 8 integers (16*16/32) to be stored -// -// NOTE 2: A different icon set could be loaded over this array using GuiLoadIcons(), -// but loaded icons set must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS -// -// guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB -//---------------------------------------------------------------------------------- -static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_NONE - 0x3ff80000, 0x2f082008, 0x2042207e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x00007ffe, // ICON_FOLDER_FILE_OPEN - 0x3ffe0000, 0x44226422, 0x400247e2, 0x5ffa4002, 0x57ea500a, 0x500a500a, 0x40025ffa, 0x00007ffe, // ICON_FILE_SAVE_CLASSIC - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024002, 0x44424282, 0x793e4102, 0x00000100, // ICON_FOLDER_OPEN - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024102, 0x44424102, 0x793e4282, 0x00000000, // ICON_FOLDER_SAVE - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x24442284, 0x21042104, 0x20042104, 0x00003ffc, // ICON_FILE_OPEN - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x21042104, 0x22842444, 0x20042104, 0x00003ffc, // ICON_FILE_SAVE - 0x3ff00000, 0x201c2010, 0x00042004, 0x20041004, 0x20844784, 0x00841384, 0x20042784, 0x00003ffc, // ICON_FILE_EXPORT - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x22042204, 0x22042f84, 0x20042204, 0x00003ffc, // ICON_FILE_ADD - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x25042884, 0x25042204, 0x20042884, 0x00003ffc, // ICON_FILE_DELETE - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_FILETYPE_TEXT - 0x3ff00000, 0x201c2010, 0x27042004, 0x244424c4, 0x26442444, 0x20642664, 0x20042004, 0x00003ffc, // ICON_FILETYPE_AUDIO - 0x3ff00000, 0x201c2010, 0x26042604, 0x20042004, 0x35442884, 0x2414222c, 0x20042004, 0x00003ffc, // ICON_FILETYPE_IMAGE - 0x3ff00000, 0x201c2010, 0x20c42004, 0x22442144, 0x22442444, 0x20c42144, 0x20042004, 0x00003ffc, // ICON_FILETYPE_PLAY - 0x3ff00000, 0x3ffc2ff0, 0x3f3c2ff4, 0x3dbc2eb4, 0x3dbc2bb4, 0x3f3c2eb4, 0x3ffc2ff4, 0x00002ff4, // ICON_FILETYPE_VIDEO - 0x3ff00000, 0x201c2010, 0x21842184, 0x21842004, 0x21842184, 0x21842184, 0x20042184, 0x00003ffc, // ICON_FILETYPE_INFO - 0x0ff00000, 0x381c0810, 0x28042804, 0x28042804, 0x28042804, 0x28042804, 0x20102ffc, 0x00003ff0, // ICON_FILE_COPY - 0x00000000, 0x701c0000, 0x079c1e14, 0x55a000f0, 0x079c00f0, 0x701c1e14, 0x00000000, 0x00000000, // ICON_FILE_CUT - 0x01c00000, 0x13e41bec, 0x3f841004, 0x204420c4, 0x20442044, 0x20442044, 0x207c2044, 0x00003fc0, // ICON_FILE_PASTE - 0x00000000, 0x3aa00fe0, 0x2abc2aa0, 0x2aa42aa4, 0x20042aa4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_CURSOR_HAND - 0x00000000, 0x003c000c, 0x030800c8, 0x30100c10, 0x10202020, 0x04400840, 0x01800280, 0x00000000, // ICON_CURSOR_POINTER - 0x00000000, 0x00180000, 0x01f00078, 0x03e007f0, 0x07c003e0, 0x04000e40, 0x00000000, 0x00000000, // ICON_CURSOR_CLASSIC - 0x00000000, 0x04000000, 0x11000a00, 0x04400a80, 0x01100220, 0x00580088, 0x00000038, 0x00000000, // ICON_PENCIL - 0x04000000, 0x15000a00, 0x50402880, 0x14102820, 0x05040a08, 0x015c028c, 0x007c00bc, 0x00000000, // ICON_PENCIL_BIG - 0x01c00000, 0x01400140, 0x01400140, 0x0ff80140, 0x0ff80808, 0x0aa80808, 0x0aa80aa8, 0x00000ff8, // ICON_BRUSH_CLASSIC - 0x1ffc0000, 0x5ffc7ffe, 0x40004000, 0x00807f80, 0x01c001c0, 0x01c001c0, 0x01c001c0, 0x00000080, // ICON_BRUSH_PAINTER - 0x00000000, 0x00800000, 0x01c00080, 0x03e001c0, 0x07f003e0, 0x036006f0, 0x000001c0, 0x00000000, // ICON_WATER_DROP - 0x00000000, 0x3e003800, 0x1f803f80, 0x0c201e40, 0x02080c10, 0x00840104, 0x00380044, 0x00000000, // ICON_COLOR_PICKER - 0x00000000, 0x07800300, 0x1fe00fc0, 0x3f883fd0, 0x0e021f04, 0x02040402, 0x00f00108, 0x00000000, // ICON_RUBBER - 0x00c00000, 0x02800140, 0x08200440, 0x20081010, 0x2ffe3004, 0x03f807fc, 0x00e001f0, 0x00000040, // ICON_COLOR_BUCKET - 0x00000000, 0x21843ffc, 0x01800180, 0x01800180, 0x01800180, 0x01800180, 0x03c00180, 0x00000000, // ICON_TEXT_T - 0x00800000, 0x01400180, 0x06200340, 0x0c100620, 0x1ff80c10, 0x380c1808, 0x70067004, 0x0000f80f, // ICON_TEXT_A - 0x78000000, 0x50004000, 0x00004800, 0x03c003c0, 0x03c003c0, 0x00100000, 0x0002000a, 0x0000000e, // ICON_SCALE - 0x75560000, 0x5e004002, 0x54001002, 0x41001202, 0x408200fe, 0x40820082, 0x40820082, 0x00006afe, // ICON_RESIZE - 0x00000000, 0x3f003f00, 0x3f003f00, 0x3f003f00, 0x00400080, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_POINT - 0x6d800000, 0x00004080, 0x40804080, 0x40800000, 0x00406d80, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_BILINEAR - 0x40080000, 0x1ffe2008, 0x14081008, 0x11081208, 0x10481088, 0x10081028, 0x10047ff8, 0x00001002, // ICON_CROP - 0x00100000, 0x3ffc0010, 0x2ab03550, 0x22b02550, 0x20b02150, 0x20302050, 0x2000fff0, 0x00002000, // ICON_CROP_ALPHA - 0x40000000, 0x1ff82000, 0x04082808, 0x01082208, 0x00482088, 0x00182028, 0x35542008, 0x00000002, // ICON_SQUARE_TOGGLE - 0x00000000, 0x02800280, 0x06c006c0, 0x0ea00ee0, 0x1e901eb0, 0x3e883e98, 0x7efc7e8c, 0x00000000, // ICON_SYMMETRY - 0x01000000, 0x05600100, 0x1d480d50, 0x7d423d44, 0x3d447d42, 0x0d501d48, 0x01000560, 0x00000100, // ICON_SYMMETRY_HORIZONTAL - 0x01800000, 0x04200240, 0x10080810, 0x00001ff8, 0x00007ffe, 0x0ff01ff8, 0x03c007e0, 0x00000180, // ICON_SYMMETRY_VERTICAL - 0x00000000, 0x010800f0, 0x02040204, 0x02040204, 0x07f00308, 0x1c000e00, 0x30003800, 0x00000000, // ICON_LENS - 0x00000000, 0x061803f0, 0x08240c0c, 0x08040814, 0x0c0c0804, 0x23f01618, 0x18002400, 0x00000000, // ICON_LENS_BIG - 0x00000000, 0x00000000, 0x1c7007c0, 0x638e3398, 0x1c703398, 0x000007c0, 0x00000000, 0x00000000, // ICON_EYE_ON - 0x00000000, 0x10002000, 0x04700fc0, 0x610e3218, 0x1c703098, 0x001007a0, 0x00000008, 0x00000000, // ICON_EYE_OFF - 0x00000000, 0x00007ffc, 0x40047ffc, 0x10102008, 0x04400820, 0x02800280, 0x02800280, 0x00000100, // ICON_FILTER_TOP - 0x00000000, 0x40027ffe, 0x10082004, 0x04200810, 0x02400240, 0x02400240, 0x01400240, 0x000000c0, // ICON_FILTER - 0x00800000, 0x00800080, 0x00000080, 0x3c9e0000, 0x00000000, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_POINT - 0x00800000, 0x00800080, 0x00800080, 0x3f7e01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL - 0x00800000, 0x00800080, 0x03e00080, 0x3e3e0220, 0x03e00220, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG - 0x01000000, 0x04400280, 0x01000100, 0x43842008, 0x43849ab2, 0x01002008, 0x04400100, 0x01000280, // ICON_TARGET_MOVE - 0x01000000, 0x04400280, 0x01000100, 0x41042108, 0x41049ff2, 0x01002108, 0x04400100, 0x01000280, // ICON_CURSOR_MOVE - 0x781e0000, 0x500a4002, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x4002500a, 0x0000781e, // ICON_CURSOR_SCALE - 0x00000000, 0x20003c00, 0x24002800, 0x01000200, 0x00400080, 0x00140024, 0x003c0004, 0x00000000, // ICON_CURSOR_SCALE_RIGHT - 0x00000000, 0x0004003c, 0x00240014, 0x00800040, 0x02000100, 0x28002400, 0x3c002000, 0x00000000, // ICON_CURSOR_SCALE_LEFT - 0x00000000, 0x00100020, 0x10101fc8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO - 0x00000000, 0x08000400, 0x080813f8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3f902020, 0x00400020, 0x00000000, // ICON_REREDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3fc82010, 0x00200010, 0x00000000, // ICON_MUTATE - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18101020, 0x00100fc8, 0x00000020, // ICON_ROTATE - 0x00000000, 0x04000200, 0x240429fc, 0x20042204, 0x20442004, 0x3f942024, 0x00400020, 0x00000000, // ICON_REPEAT - 0x00000000, 0x20001000, 0x22104c0e, 0x00801120, 0x11200040, 0x4c0e2210, 0x10002000, 0x00000000, // ICON_SHUFFLE - 0x7ffe0000, 0x50024002, 0x44024802, 0x41024202, 0x40424082, 0x40124022, 0x4002400a, 0x00007ffe, // ICON_EMPTYBOX - 0x00800000, 0x03e00080, 0x08080490, 0x3c9e0808, 0x08080808, 0x03e00490, 0x00800080, 0x00000000, // ICON_TARGET - 0x00800000, 0x00800080, 0x00800080, 0x3ffe01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL_FILL - 0x00800000, 0x00800080, 0x03e00080, 0x3ffe03e0, 0x03e003e0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x638c2008, 0x638cfbbe, 0x01002008, 0x07c00100, 0x01000380, // ICON_TARGET_MOVE_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x610c2108, 0x610cfffe, 0x01002108, 0x07c00100, 0x01000380, // ICON_CURSOR_MOVE_FILL - 0x781e0000, 0x6006700e, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x700e6006, 0x0000781e, // ICON_CURSOR_SCALE_FILL - 0x00000000, 0x38003c00, 0x24003000, 0x01000200, 0x00400080, 0x000c0024, 0x003c001c, 0x00000000, // ICON_CURSOR_SCALE_RIGHT_FILL - 0x00000000, 0x001c003c, 0x0024000c, 0x00800040, 0x02000100, 0x30002400, 0x3c003800, 0x00000000, // ICON_CURSOR_SCALE_LEFT_FILL - 0x00000000, 0x00300020, 0x10301ff8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO_FILL - 0x00000000, 0x0c000400, 0x0c081ff8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3ff02060, 0x00400060, 0x00000000, // ICON_REREDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3ff82030, 0x00200030, 0x00000000, // ICON_MUTATE_FILL - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18301020, 0x00300ff8, 0x00000020, // ICON_ROTATE_FILL - 0x00000000, 0x06000200, 0x26042ffc, 0x20042204, 0x20442004, 0x3ff42064, 0x00400060, 0x00000000, // ICON_REPEAT_FILL - 0x00000000, 0x30001000, 0x32107c0e, 0x00801120, 0x11200040, 0x7c0e3210, 0x10003000, 0x00000000, // ICON_SHUFFLE_FILL - 0x00000000, 0x30043ffc, 0x24042804, 0x21042204, 0x20442084, 0x20142024, 0x3ffc200c, 0x00000000, // ICON_EMPTYBOX_SMALL - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX - 0x00000000, 0x23c43ffc, 0x23c423c4, 0x200423c4, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP - 0x00000000, 0x3e043ffc, 0x3e043e04, 0x20043e04, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x3e043e04, 0x3e043e04, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x3e042004, 0x3e043e04, 0x3ffc3e04, 0x00000000, // ICON_BOX_BOTTOM_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x23c42004, 0x23c423c4, 0x3ffc23c4, 0x00000000, // ICON_BOX_BOTTOM - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x207c2004, 0x207c207c, 0x3ffc207c, 0x00000000, // ICON_BOX_BOTTOM_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x207c207c, 0x207c207c, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_LEFT - 0x00000000, 0x207c3ffc, 0x207c207c, 0x2004207c, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x23c423c4, 0x23c423c4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_CENTER - 0x7ffe0000, 0x40024002, 0x47e24182, 0x4ff247e2, 0x47e24ff2, 0x418247e2, 0x40024002, 0x00007ffe, // ICON_BOX_CIRCLE_MASK - 0x7fff0000, 0x40014001, 0x40014001, 0x49555ddd, 0x4945495d, 0x400149c5, 0x40014001, 0x00007fff, // ICON_POT - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x404e40ce, 0x48125432, 0x4006540e, 0x00007ffe, // ICON_ALPHA_MULTIPLY - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x5c4e40ce, 0x44124432, 0x40065c0e, 0x00007ffe, // ICON_ALPHA_CLEAR - 0x7ffe0000, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x00007ffe, // ICON_DITHERING - 0x07fe0000, 0x1ffa0002, 0x7fea000a, 0x402a402a, 0x5b2a512a, 0x5128552a, 0x40205128, 0x00007fe0, // ICON_MIPMAPS - 0x00000000, 0x1ff80000, 0x12481248, 0x12481ff8, 0x1ff81248, 0x12481248, 0x00001ff8, 0x00000000, // ICON_BOX_GRID - 0x12480000, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x00001248, // ICON_GRID - 0x00000000, 0x1c380000, 0x1c3817e8, 0x08100810, 0x08100810, 0x17e81c38, 0x00001c38, 0x00000000, // ICON_BOX_CORNERS_SMALL - 0x700e0000, 0x700e5ffa, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x5ffa700e, 0x0000700e, // ICON_BOX_CORNERS_BIG - 0x3f7e0000, 0x21422142, 0x21422142, 0x00003f7e, 0x21423f7e, 0x21422142, 0x3f7e2142, 0x00000000, // ICON_FOUR_BOXES - 0x00000000, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x00000000, // ICON_GRID_FILL - 0x7ffe0000, 0x7ffe7ffe, 0x77fe7000, 0x77fe77fe, 0x777e7700, 0x777e777e, 0x777e777e, 0x0000777e, // ICON_BOX_MULTISIZE - 0x781e0000, 0x40024002, 0x00004002, 0x01800000, 0x00000180, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_SMALL - 0x781e0000, 0x40024002, 0x00004002, 0x03c003c0, 0x03c003c0, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_MEDIUM - 0x781e0000, 0x40024002, 0x07e04002, 0x07e007e0, 0x07e007e0, 0x400207e0, 0x40024002, 0x0000781e, // ICON_ZOOM_BIG - 0x781e0000, 0x5ffa4002, 0x1ff85ffa, 0x1ff81ff8, 0x1ff81ff8, 0x5ffa1ff8, 0x40025ffa, 0x0000781e, // ICON_ZOOM_ALL - 0x00000000, 0x2004381c, 0x00002004, 0x00000000, 0x00000000, 0x20040000, 0x381c2004, 0x00000000, // ICON_ZOOM_CENTER - 0x00000000, 0x1db80000, 0x10081008, 0x10080000, 0x00001008, 0x10081008, 0x00001db8, 0x00000000, // ICON_BOX_DOTS_SMALL - 0x35560000, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x35562002, 0x00000000, // ICON_BOX_DOTS_BIG - 0x7ffe0000, 0x40024002, 0x48124ff2, 0x49924812, 0x48124992, 0x4ff24812, 0x40024002, 0x00007ffe, // ICON_BOX_CONCENTRIC - 0x00000000, 0x10841ffc, 0x10841084, 0x1ffc1084, 0x10841084, 0x10841084, 0x00001ffc, 0x00000000, // ICON_BOX_GRID_BIG - 0x00000000, 0x00000000, 0x10000000, 0x04000800, 0x01040200, 0x00500088, 0x00000020, 0x00000000, // ICON_OK_TICK - 0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // ICON_CROSS - 0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // ICON_ARROW_LEFT - 0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // ICON_ARROW_RIGHT - 0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // ICON_ARROW_DOWN - 0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP - 0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // ICON_ARROW_LEFT_FILL - 0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // ICON_ARROW_RIGHT_FILL - 0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // ICON_ARROW_DOWN_FILL - 0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP_FILL - 0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // ICON_AUDIO - 0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // ICON_FX - 0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // ICON_WAVE - 0x00000000, 0x00600000, 0x01080090, 0x02040108, 0x42044204, 0x24022402, 0x00001800, 0x00000000, // ICON_WAVE_SINUS - 0x00000000, 0x07f80000, 0x04080408, 0x04080408, 0x04080408, 0x7c0e0408, 0x00000000, 0x00000000, // ICON_WAVE_SQUARE - 0x00000000, 0x00000000, 0x00a00040, 0x22084110, 0x08021404, 0x00000000, 0x00000000, 0x00000000, // ICON_WAVE_TRIANGULAR - 0x00000000, 0x00000000, 0x04200000, 0x01800240, 0x02400180, 0x00000420, 0x00000000, 0x00000000, // ICON_CROSS_SMALL - 0x00000000, 0x18380000, 0x12281428, 0x10a81128, 0x112810a8, 0x14281228, 0x00001838, 0x00000000, // ICON_PLAYER_PREVIOUS - 0x00000000, 0x18000000, 0x11801600, 0x10181060, 0x10601018, 0x16001180, 0x00001800, 0x00000000, // ICON_PLAYER_PLAY_BACK - 0x00000000, 0x00180000, 0x01880068, 0x18080608, 0x06081808, 0x00680188, 0x00000018, 0x00000000, // ICON_PLAYER_PLAY - 0x00000000, 0x1e780000, 0x12481248, 0x12481248, 0x12481248, 0x12481248, 0x00001e78, 0x00000000, // ICON_PLAYER_PAUSE - 0x00000000, 0x1ff80000, 0x10081008, 0x10081008, 0x10081008, 0x10081008, 0x00001ff8, 0x00000000, // ICON_PLAYER_STOP - 0x00000000, 0x1c180000, 0x14481428, 0x15081488, 0x14881508, 0x14281448, 0x00001c18, 0x00000000, // ICON_PLAYER_NEXT - 0x00000000, 0x03c00000, 0x08100420, 0x10081008, 0x10081008, 0x04200810, 0x000003c0, 0x00000000, // ICON_PLAYER_RECORD - 0x00000000, 0x0c3007e0, 0x13c81818, 0x14281668, 0x14281428, 0x1c381c38, 0x08102244, 0x00000000, // ICON_MAGNET - 0x07c00000, 0x08200820, 0x3ff80820, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_CLOSE - 0x07c00000, 0x08000800, 0x3ff80800, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_OPEN - 0x01c00000, 0x0c180770, 0x3086188c, 0x60832082, 0x60034781, 0x30062002, 0x0c18180c, 0x01c00770, // ICON_CLOCK - 0x0a200000, 0x1b201b20, 0x04200e20, 0x04200420, 0x04700420, 0x0e700e70, 0x0e700e70, 0x04200e70, // ICON_TOOLS - 0x01800000, 0x3bdc318c, 0x0ff01ff8, 0x7c3e1e78, 0x1e787c3e, 0x1ff80ff0, 0x318c3bdc, 0x00000180, // ICON_GEAR - 0x01800000, 0x3ffc318c, 0x1c381ff8, 0x781e1818, 0x1818781e, 0x1ff81c38, 0x318c3ffc, 0x00000180, // ICON_GEAR_BIG - 0x00000000, 0x08080ff8, 0x08081ffc, 0x0aa80aa8, 0x0aa80aa8, 0x0aa80aa8, 0x08080aa8, 0x00000ff8, // ICON_BIN - 0x00000000, 0x00000000, 0x20043ffc, 0x08043f84, 0x04040f84, 0x04040784, 0x000007fc, 0x00000000, // ICON_HAND_POINTER - 0x00000000, 0x24400400, 0x00001480, 0x6efe0e00, 0x00000e00, 0x24401480, 0x00000400, 0x00000000, // ICON_LASER - 0x00000000, 0x03c00000, 0x08300460, 0x11181118, 0x11181118, 0x04600830, 0x000003c0, 0x00000000, // ICON_COIN - 0x00000000, 0x10880080, 0x06c00810, 0x366c07e0, 0x07e00240, 0x00001768, 0x04200240, 0x00000000, // ICON_EXPLOSION - 0x00000000, 0x3d280000, 0x2528252c, 0x3d282528, 0x05280528, 0x05e80528, 0x00000000, 0x00000000, // ICON_1UP - 0x01800000, 0x03c003c0, 0x018003c0, 0x0ff007e0, 0x0bd00bd0, 0x0a500bd0, 0x02400240, 0x02400240, // ICON_PLAYER - 0x01800000, 0x03c003c0, 0x118013c0, 0x03c81ff8, 0x07c003c8, 0x04400440, 0x0c080478, 0x00000000, // ICON_PLAYER_JUMP - 0x3ff80000, 0x30183ff8, 0x30183018, 0x3ff83ff8, 0x03000300, 0x03c003c0, 0x03e00300, 0x000003e0, // ICON_KEY - 0x3ff80000, 0x3ff83ff8, 0x33983ff8, 0x3ff83398, 0x3ff83ff8, 0x00000540, 0x0fe00aa0, 0x00000fe0, // ICON_DEMON - 0x00000000, 0x0ff00000, 0x20041008, 0x25442004, 0x10082004, 0x06000bf0, 0x00000300, 0x00000000, // ICON_TEXT_POPUP - 0x00000000, 0x11440000, 0x07f00be8, 0x1c1c0e38, 0x1c1c0c18, 0x07f00e38, 0x11440be8, 0x00000000, // ICON_GEAR_EX - 0x00000000, 0x20080000, 0x0c601010, 0x07c00fe0, 0x07c007c0, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK - 0x00000000, 0x20080000, 0x0c601010, 0x04400fe0, 0x04405554, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK_POINTS - 0x00000000, 0x00800080, 0x01c001c0, 0x1ffc3ffe, 0x03e007f0, 0x07f003e0, 0x0c180770, 0x00000808, // ICON_STAR - 0x0ff00000, 0x08180810, 0x08100818, 0x0a100810, 0x08180810, 0x08100818, 0x08100810, 0x00001ff8, // ICON_DOOR - 0x0ff00000, 0x08100810, 0x08100810, 0x10100010, 0x4f902010, 0x10102010, 0x08100010, 0x00000ff0, // ICON_EXIT - 0x00040000, 0x001f000e, 0x0ef40004, 0x12f41284, 0x0ef41214, 0x10040004, 0x7ffc3004, 0x10003000, // ICON_MODE_2D - 0x78040000, 0x501f600e, 0x0ef44004, 0x12f41284, 0x0ef41284, 0x10140004, 0x7ffc300c, 0x10003000, // ICON_MODE_3D - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE - 0x7fe00000, 0x5ff87ff0, 0x47fe4ffc, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_TOP - 0x7fe00000, 0x50386030, 0x47c2483c, 0x443e443e, 0x443e443e, 0x241e75fe, 0x0c06140e, 0x000007fe, // ICON_CUBE_FACE_LEFT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x47fe47fe, 0x47fe47fe, 0x27fe77fe, 0x0ffe17fe, 0x000007fe, // ICON_CUBE_FACE_FRONT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x3bf27be2, 0x0bfe1bfa, 0x000007fe, // ICON_CUBE_FACE_BOTTOM - 0x7fe00000, 0x70286030, 0x7ffe7804, 0x7c227c02, 0x7c227c22, 0x3c127de2, 0x0c061c0a, 0x000007fe, // ICON_CUBE_FACE_RIGHT - 0x7fe00000, 0x6fe85ff0, 0x781e77e4, 0x7be27be2, 0x7be27be2, 0x24127be2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_BACK - 0x00000000, 0x2a0233fe, 0x22022602, 0x22022202, 0x2a022602, 0x00a033fe, 0x02080110, 0x00000000, // ICON_CAMERA - 0x00000000, 0x200c3ffc, 0x000c000c, 0x3ffc000c, 0x30003000, 0x30003000, 0x3ffc3004, 0x00000000, // ICON_SPECIAL - 0x00000000, 0x0022003e, 0x012201e2, 0x0100013e, 0x01000100, 0x79000100, 0x4f004900, 0x00007800, // ICON_LINK_NET - 0x00000000, 0x44007c00, 0x45004600, 0x00627cbe, 0x00620022, 0x45007cbe, 0x44004600, 0x00007c00, // ICON_LINK_BOXES - 0x00000000, 0x0044007c, 0x0010007c, 0x3f100010, 0x3f1021f0, 0x3f100010, 0x3f0021f0, 0x00000000, // ICON_LINK_MULTI - 0x00000000, 0x0044007c, 0x00440044, 0x0010007c, 0x00100010, 0x44107c10, 0x440047f0, 0x00007c00, // ICON_LINK - 0x00000000, 0x0044007c, 0x00440044, 0x0000007c, 0x00000010, 0x44007c10, 0x44004550, 0x00007c00, // ICON_LINK_BROKE - 0x02a00000, 0x22a43ffc, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_TEXT_NOTES - 0x3ffc0000, 0x20042004, 0x245e27c4, 0x27c42444, 0x2004201e, 0x201e2004, 0x20042004, 0x00003ffc, // ICON_NOTEBOOK - 0x00000000, 0x07e00000, 0x04200420, 0x24243ffc, 0x24242424, 0x24242424, 0x3ffc2424, 0x00000000, // ICON_SUITCASE - 0x00000000, 0x0fe00000, 0x08200820, 0x40047ffc, 0x7ffc5554, 0x40045554, 0x7ffc4004, 0x00000000, // ICON_SUITCASE_ZIP - 0x00000000, 0x20043ffc, 0x3ffc2004, 0x13c81008, 0x100813c8, 0x10081008, 0x1ff81008, 0x00000000, // ICON_MAILBOX - 0x00000000, 0x40027ffe, 0x5ffa5ffa, 0x5ffa5ffa, 0x40025ffa, 0x03c07ffe, 0x1ff81ff8, 0x00000000, // ICON_MONITOR - 0x0ff00000, 0x6bfe7ffe, 0x7ffe7ffe, 0x68167ffe, 0x08106816, 0x08100810, 0x0ff00810, 0x00000000, // ICON_PRINTER - 0x3ff80000, 0xfffe2008, 0x870a8002, 0x904a888a, 0x904a904a, 0x870a888a, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA - 0x0fc00000, 0xfcfe0cd8, 0x8002fffe, 0x84428382, 0x84428442, 0x80028382, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA_FLASH - 0x00000000, 0x02400180, 0x08100420, 0x20041008, 0x23c42004, 0x22442244, 0x3ffc2244, 0x00000000, // ICON_HOUSE - 0x00000000, 0x1c700000, 0x3ff83ef8, 0x3ff83ff8, 0x0fe01ff0, 0x038007c0, 0x00000100, 0x00000000, // ICON_HEART - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0xe000c000, // ICON_CORNER - 0x00000000, 0x14001c00, 0x15c01400, 0x15401540, 0x155c1540, 0x15541554, 0x1ddc1554, 0x00000000, // ICON_VERTICAL_BARS - 0x00000000, 0x03000300, 0x1b001b00, 0x1b601b60, 0x1b6c1b60, 0x1b6c1b6c, 0x1b6c1b6c, 0x00000000, // ICON_VERTICAL_BARS_FILL - 0x00000000, 0x00000000, 0x403e7ffe, 0x7ffe403e, 0x7ffe0000, 0x43fe43fe, 0x00007ffe, 0x00000000, // ICON_LIFE_BARS - 0x7ffc0000, 0x43844004, 0x43844284, 0x43844004, 0x42844284, 0x42844284, 0x40044384, 0x00007ffc, // ICON_INFO - 0x40008000, 0x10002000, 0x04000800, 0x01000200, 0x00400080, 0x00100020, 0x00040008, 0x00010002, // ICON_CROSSLINE - 0x00000000, 0x1ff01ff0, 0x18301830, 0x1f001830, 0x03001f00, 0x00000300, 0x03000300, 0x00000000, // ICON_HELP - 0x3ff00000, 0x2abc3550, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x00003ffc, // ICON_FILETYPE_ALPHA - 0x3ff00000, 0x201c2010, 0x22442184, 0x28142424, 0x29942814, 0x2ff42994, 0x20042004, 0x00003ffc, // ICON_FILETYPE_HOME - 0x07fe0000, 0x04020402, 0x7fe20402, 0x44224422, 0x44224422, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS_VISIBLE - 0x07fe0000, 0x04020402, 0x7c020402, 0x44024402, 0x44024402, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS - 0x00000000, 0x40027ffe, 0x7ffe4002, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_WINDOW - 0x09100000, 0x09f00910, 0x09100910, 0x00000910, 0x24a2779e, 0x27a224a2, 0x709e20a2, 0x00000000, // ICON_HIDPI - 0x3ff00000, 0x201c2010, 0x2a842e84, 0x2e842a84, 0x2ba42004, 0x2aa42aa4, 0x20042ba4, 0x00003ffc, // ICON_FILETYPE_BINARY - 0x00000000, 0x00000000, 0x00120012, 0x4a5e4bd2, 0x485233d2, 0x00004bd2, 0x00000000, 0x00000000, // ICON_HEX - 0x01800000, 0x381c0660, 0x23c42004, 0x23c42044, 0x13c82204, 0x08101008, 0x02400420, 0x00000180, // ICON_SHIELD - 0x007e0000, 0x20023fc2, 0x40227fe2, 0x400a403a, 0x400a400a, 0x400a400a, 0x4008400e, 0x00007ff8, // ICON_FILE_NEW - 0x00000000, 0x0042007e, 0x40027fc2, 0x44024002, 0x5f024402, 0x44024402, 0x7ffe4002, 0x00000000, // ICON_FOLDER_ADD - 0x44220000, 0x12482244, 0xf3cf0000, 0x14280420, 0x48122424, 0x08100810, 0x1ff81008, 0x03c00420, // ICON_ALARM - 0x0aa00000, 0x1ff80aa0, 0x1068700e, 0x1008706e, 0x1008700e, 0x1008700e, 0x0aa01ff8, 0x00000aa0, // ICON_CPU - 0x07e00000, 0x04201db8, 0x04a01c38, 0x04a01d38, 0x04a01d38, 0x04a01d38, 0x04201d38, 0x000007e0, // ICON_ROM - 0x00000000, 0x03c00000, 0x3c382ff0, 0x3c04380c, 0x01800000, 0x03c003c0, 0x00000180, 0x00000000, // ICON_STEP_OVER - 0x01800000, 0x01800180, 0x01800180, 0x03c007e0, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_INTO - 0x01800000, 0x07e003c0, 0x01800180, 0x01800180, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_OUT - 0x00000000, 0x0ff003c0, 0x181c1c34, 0x303c301c, 0x30003000, 0x1c301800, 0x03c00ff0, 0x00000000, // ICON_RESTART - 0x00000000, 0x00000000, 0x07e003c0, 0x0ff00ff0, 0x0ff00ff0, 0x03c007e0, 0x00000000, 0x00000000, // ICON_BREAKPOINT_ON - 0x00000000, 0x00000000, 0x042003c0, 0x08100810, 0x08100810, 0x03c00420, 0x00000000, 0x00000000, // ICON_BREAKPOINT_OFF - 0x00000000, 0x00000000, 0x1ff81ff8, 0x1ff80000, 0x00001ff8, 0x1ff81ff8, 0x00000000, 0x00000000, // ICON_BURGER_MENU - 0x00000000, 0x00000000, 0x00880070, 0x0c880088, 0x1e8810f8, 0x3e881288, 0x00000000, 0x00000000, // ICON_CASE_SENSITIVE - 0x00000000, 0x02000000, 0x07000a80, 0x07001fc0, 0x02000a80, 0x00300030, 0x00000000, 0x00000000, // ICON_REG_EXP - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_FOLDER - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x00003ffc, // ICON_FILE - 0x1ff00000, 0x20082008, 0x17d02fe8, 0x05400ba0, 0x09200540, 0x23881010, 0x2fe827c8, 0x00001ff0, // ICON_SAND_TIMER - 0x01800000, 0x02400240, 0x05a00420, 0x09900990, 0x11881188, 0x21842004, 0x40024182, 0x00003ffc, // ICON_WARNING - 0x7ffe0000, 0x4ff24002, 0x4c324ff2, 0x4f824c02, 0x41824f82, 0x41824002, 0x40024182, 0x00007ffe, // ICON_HELP_BOX - 0x7ffe0000, 0x41824002, 0x40024182, 0x41824182, 0x41824182, 0x41824182, 0x40024182, 0x00007ffe, // ICON_INFO_BOX - 0x01800000, 0x04200240, 0x10080810, 0x7bde2004, 0x0a500a50, 0x08500bd0, 0x08100850, 0x00000ff0, // ICON_PRIORITY - 0x01800000, 0x18180660, 0x80016006, 0x98196006, 0x99996666, 0x19986666, 0x01800660, 0x00000000, // ICON_LAYERS_ISO - 0x07fe0000, 0x1c020402, 0x74021402, 0x54025402, 0x54025402, 0x500857fe, 0x40205ff8, 0x00007fe0, // ICON_LAYERS2 - 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x422a422a, 0x422e422a, 0x40384e28, 0x00007fe0, // ICON_MLAYERS - 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x5b2a512a, 0x512e552a, 0x40385128, 0x00007fe0, // ICON_MAPS - 0x04200000, 0x1cf00c60, 0x11f019f0, 0x0f3807b8, 0x1e3c0f3c, 0x1c1c1e1c, 0x1e3c1c1c, 0x00000f70, // ICON_HOT - 0x00000000, 0x20803f00, 0x2a202e40, 0x20082e10, 0x08021004, 0x02040402, 0x00900108, 0x00000060, // ICON_LABEL - 0x00000000, 0x042007e0, 0x47e27c3e, 0x4ffa4002, 0x47fa4002, 0x4ffa4002, 0x7ffe4002, 0x00000000, // ICON_NAME_ID - 0x7fe00000, 0x402e4020, 0x43ce5e0a, 0x40504078, 0x438e4078, 0x402e5e0a, 0x7fe04020, 0x00000000, // ICON_SLICING - 0x00000000, 0x40027ffe, 0x47c24002, 0x55425d42, 0x55725542, 0x50125552, 0x10105016, 0x00001ff0, // ICON_MANUAL_CONTROL - 0x7ffe0000, 0x43c24002, 0x48124422, 0x500a500a, 0x500a500a, 0x44224812, 0x400243c2, 0x00007ffe, // ICON_COLLISION - 0x03c00000, 0x10080c30, 0x21842184, 0x4ff24182, 0x41824ff2, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_ADD - 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x700e7e7e, 0x7e7e700e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_ADD_FILL - 0x03c00000, 0x10080c30, 0x21842184, 0x41824182, 0x40024182, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_WARNING - 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x7e7e7e7e, 0x7ffe7e7e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_WARNING_FILL - 0x00000000, 0x10041ffc, 0x10841004, 0x13e41084, 0x10841084, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MORE - 0x00000000, 0x1ffc1ffc, 0x1f7c1ffc, 0x1c1c1f7c, 0x1f7c1f7c, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MORE_FILL - 0x00000000, 0x1ffc1ffc, 0x1ffc1ffc, 0x1c1c1ffc, 0x1ffc1ffc, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS - 0x00000000, 0x10041ffc, 0x10041004, 0x13e41004, 0x10041004, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS_FILL - 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x55766eba, 0x55766eaa, 0x55606ffe, 0x55606aa0, 0x00007fe0, // ICON_UNION - 0x07fe0000, 0x04020402, 0x7fe20402, 0x456246a2, 0x456246a2, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_INTERSECTION - 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x4436442a, 0x4436442a, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_DIFFERENCE - 0x03c00000, 0x10080c30, 0x20042004, 0x60064002, 0x47e2581a, 0x20042004, 0x0c301008, 0x000003c0, // ICON_SPHERE - 0x03e00000, 0x08080410, 0x0c180808, 0x08080be8, 0x08080808, 0x08080808, 0x04100808, 0x000003e0, // ICON_CYLINDER - 0x00800000, 0x01400140, 0x02200220, 0x04100410, 0x08080808, 0x1c1c13e4, 0x08081004, 0x000007f0, // ICON_CONE - 0x00000000, 0x07e00000, 0x20841918, 0x40824082, 0x40824082, 0x19182084, 0x000007e0, 0x00000000, // ICON_ELLIPSOID - 0x00000000, 0x00000000, 0x20041ff8, 0x40024002, 0x40024002, 0x1ff82004, 0x00000000, 0x00000000, // ICON_CAPSULE - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_250 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_251 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_252 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_253 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_254 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_255 -}; - -// NOTE: A pointer to current icons array should be defined -static unsigned int *guiIconsPtr = guiIcons; - -#endif // !RAYGUI_NO_ICONS && !RAYGUI_CUSTOM_ICONS - -#ifndef RAYGUI_ICON_SIZE - #define RAYGUI_ICON_SIZE 0 -#endif - -// WARNING: Those values define the total size of the style data array, -// if changed, previous saved styles could become incompatible -#define RAYGUI_MAX_CONTROLS 16 // Maximum number of controls -#define RAYGUI_MAX_PROPS_BASE 16 // Maximum number of base properties -#define RAYGUI_MAX_PROPS_EXTENDED 8 // Maximum number of extended properties - -//---------------------------------------------------------------------------------- -// Module Types and Structures Definition -//---------------------------------------------------------------------------------- -// Gui control property style color element -typedef enum { BORDER = 0, BASE, TEXT, OTHER } GuiPropertyElement; - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -static GuiState guiState = STATE_NORMAL; // Gui global state, if !STATE_NORMAL, forces defined state - -static Font guiFont = { 0 }; // Gui current font (WARNING: highly coupled to raylib) -static bool guiLocked = false; // Gui lock state (no inputs processed) -static float guiAlpha = 1.0f; // Gui controls transparency - -static unsigned int guiIconScale = 1; // Gui icon default scale (if icons enabled) - -static bool guiTooltip = false; // Tooltip enabled/disabled -static const char *guiTooltipPtr = NULL; // Tooltip string pointer (string provided by user) - -static bool guiControlExclusiveMode = false; // Gui control exclusive mode (no inputs processed except current control) -static Rectangle guiControlExclusiveRec = { 0 }; // Gui control exclusive bounds rectangle, used as an unique identifier - -static int textBoxCursorIndex = 0; // Cursor index, shared by all GuiTextBox*() -//static int blinkCursorFrameCounter = 0; // Frame counter for cursor blinking -static int autoCursorCounter = 0; // Frame counter for automatic repeated cursor movement on key-down (cooldown and delay) - -//---------------------------------------------------------------------------------- -// Style data array for all gui style properties (allocated on data segment by default) -// -// NOTE 1: First set of BASE properties are generic to all controls but could be individually -// overwritten per control, first set of EXTENDED properties are generic to all controls and -// can not be overwritten individually but custom EXTENDED properties can be used by control -// -// NOTE 2: A new style set could be loaded over this array using GuiLoadStyle(), -// but default gui style could always be recovered with GuiLoadStyleDefault() -// -// guiStyle size is by default: 16*(16 + 8) = 384*4 = 1536 bytes = 1.5 KB -//---------------------------------------------------------------------------------- -static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)] = { 0 }; - -static bool guiStyleLoaded = false; // Style loaded flag for lazy style initialization - -//---------------------------------------------------------------------------------- -// Standalone Mode Functions Declaration -// -// NOTE: raygui depend on some raylib input and drawing functions -// To use raygui as standalone library, below functions must be defined by the user -//---------------------------------------------------------------------------------- -#if defined(RAYGUI_STANDALONE) - -#define KEY_RIGHT 262 -#define KEY_LEFT 263 -#define KEY_DOWN 264 -#define KEY_UP 265 -#define KEY_BACKSPACE 259 -#define KEY_ENTER 257 - -#define MOUSE_LEFT_BUTTON 0 - -// Input required functions -//------------------------------------------------------------------------------- -static Vector2 GetMousePosition(void); -static float GetMouseWheelMove(void); -static bool IsMouseButtonDown(int button); -static bool IsMouseButtonPressed(int button); -static bool IsMouseButtonReleased(int button); - -static bool IsKeyDown(int key); -static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() -//------------------------------------------------------------------------------- - -// Drawing required functions -//------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() -static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() -//------------------------------------------------------------------------------- - -// Text required functions -//------------------------------------------------------------------------------- -static Font GetFontDefault(void); // -- GuiLoadStyleDefault() -static Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle(), load font - -static Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image -static void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) - -static char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data -static void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data - -static const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs - -static int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list -static void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list - -static unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() -//------------------------------------------------------------------------------- - -// raylib functions already implemented in raygui -//------------------------------------------------------------------------------- -static Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value -static int ColorToInt(Color color); // Returns hexadecimal value for a Color -static bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle -static const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed' -static char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings -static int TextToInteger(const char *text); // Get integer value from text -static float TextToFloat(const char *text); // Get float value from text - -static int GetCodepointNext(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded text -static const char *CodepointToUTF8(int codepoint, int *byteSize); // Encode codepoint into UTF-8 text (char array size returned as parameter) - -static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2); // Draw rectangle vertical gradient -//------------------------------------------------------------------------------- - -#endif // RAYGUI_STANDALONE - -//---------------------------------------------------------------------------------- -// Module Internal Functions Declaration -//---------------------------------------------------------------------------------- -static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize); // Load style from memory (binary only) - -static Rectangle GetTextBounds(int control, Rectangle bounds); // Get text bounds considering control bounds -static const char *GetTextIcon(const char *text, int *iconId); // Get text icon if provided and move text cursor - -static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint); // Gui draw text using default font -static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color); // Gui draw rectangle using default raygui style - -static char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow); // Split controls text into multiple strings -static Vector3 ConvertHSVtoRGB(Vector3 hsv); // Convert color data from HSV to RGB -static Vector3 ConvertRGBtoHSV(Vector3 rgb); // Convert color data from RGB to HSV - -static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue); // Scroll bar control, used by GuiScrollPanel() -static void GuiTooltip(Rectangle controlRec); // Draw tooltip using control rec position - -static Color GuiFade(Color color, float alpha); // Fade color by an alpha factor - -//---------------------------------------------------------------------------------- -// Gui Setup Functions Definition -//---------------------------------------------------------------------------------- -// Enable gui global state -// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups -void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } - -// Disable gui global state -// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups -void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } - -// Lock gui global state -void GuiLock(void) { guiLocked = true; } - -// Unlock gui global state -void GuiUnlock(void) { guiLocked = false; } - -// Check if gui is locked (global state) -bool GuiIsLocked(void) { return guiLocked; } - -// Set gui controls alpha global state -void GuiSetAlpha(float alpha) -{ - if (alpha < 0.0f) alpha = 0.0f; - else if (alpha > 1.0f) alpha = 1.0f; - - guiAlpha = alpha; -} - -// Set gui state (global state) -void GuiSetState(int state) { guiState = (GuiState)state; } - -// Get gui state (global state) -int GuiGetState(void) { return guiState; } - -// Set custom gui font -// NOTE: Font loading/unloading is external to raygui -void GuiSetFont(Font font) -{ - if (font.texture.id > 0) - { - // NOTE: If a font is tried to be set but default style has not been lazily loaded first, - // it will be overwritten, so default style loading needs to be forced first - if (!guiStyleLoaded) GuiLoadStyleDefault(); - - guiFont = font; - } -} - -// Get custom gui font -Font GuiGetFont(void) -{ - return guiFont; -} - -// Set control style property value -void GuiSetStyle(int control, int property, int value) -{ - if (!guiStyleLoaded) GuiLoadStyleDefault(); - guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; - - // Default properties are propagated to all controls - if ((control == 0) && (property < RAYGUI_MAX_PROPS_BASE)) - { - for (int i = 1; i < RAYGUI_MAX_CONTROLS; i++) guiStyle[i*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; - } -} - -// Get control style property value -int GuiGetStyle(int control, int property) -{ - if (!guiStyleLoaded) GuiLoadStyleDefault(); - return guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property]; -} - -//---------------------------------------------------------------------------------- -// Gui Controls Functions Definition -//---------------------------------------------------------------------------------- - -// Window Box control -int GuiWindowBox(Rectangle bounds, const char *title) -{ - // Window title bar height (including borders) - // NOTE: This define is also used by GuiMessageBox() and GuiTextInputBox() - #if !defined(RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT) - #define RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT 24 - #endif - - #if !defined(RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT) - #define RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT 18 - #endif - - int result = 0; - //GuiState state = guiState; - - int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; - int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); - - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; - if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; - - const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, - statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; - - // Update control - //-------------------------------------------------------------------- - // NOTE: Logic is directly managed by button - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiPanel(windowPanel, NULL); // Draw window base - GuiStatusBar(statusBar, title); // Draw window header as status bar - - // Draw window close button - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); -#if defined(RAYGUI_NO_ICONS) - result = GuiButton(closeButtonRec, "x"); -#else - result = GuiButton(closeButtonRec, GuiIconText(ICON_CROSS_SMALL, NULL)); -#endif - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); - //-------------------------------------------------------------------- - - return result; // Window close button clicked: result = 1 -} - -// Group Box control with text name -int GuiGroupBox(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_GROUPBOX_LINE_THICK) - #define RAYGUI_GROUPBOX_LINE_THICK 1 - #endif - - int result = 0; - GuiState state = guiState; - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, RAYGUI_GROUPBOX_LINE_THICK }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - 1, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - - GuiLine(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y - GuiGetStyle(DEFAULT, TEXT_SIZE)/2, bounds.width, (float)GuiGetStyle(DEFAULT, TEXT_SIZE) }, text); - //-------------------------------------------------------------------- - - return result; -} - -// Line control -int GuiLine(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_LINE_MARGIN_TEXT) - #define RAYGUI_LINE_MARGIN_TEXT 12 - #endif - #if !defined(RAYGUI_LINE_TEXT_PADDING) - #define RAYGUI_LINE_TEXT_PADDING 4 - #endif - - int result = 0; - GuiState state = guiState; - - Color color = GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)); - - // Draw control - //-------------------------------------------------------------------- - if (text == NULL) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, bounds.width, 1 }, 0, BLANK, color); - else - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = bounds.height; - textBounds.x = bounds.x + RAYGUI_LINE_MARGIN_TEXT; - textBounds.y = bounds.y; - - // Draw line with embedded text label: "--- text --------------" - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); - GuiDrawText(text, textBounds, TEXT_ALIGN_LEFT, color); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + 12 + textBounds.width + 4, bounds.y + bounds.height/2, bounds.width - textBounds.width - RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); - } - //-------------------------------------------------------------------- - - return result; -} - -// Panel control -int GuiPanel(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_PANEL_BORDER_WIDTH) - #define RAYGUI_PANEL_BORDER_WIDTH 1 - #endif - - int result = 0; - GuiState state = guiState; - - // Text will be drawn as a header bar (if provided) - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; - if ((text != NULL) && (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f)) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; - - if (text != NULL) - { - // Move panel bounds after the header bar - bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - } - - // Draw control - //-------------------------------------------------------------------- - if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar - - GuiDrawRectangle(bounds, RAYGUI_PANEL_BORDER_WIDTH, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)), - GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BASE_COLOR_DISABLED : (int)BACKGROUND_COLOR))); - //-------------------------------------------------------------------- - - return result; -} - -// Tab Bar control -// NOTE: Using GuiToggle() for the TABS -int GuiTabBar(Rectangle bounds, char **text, int count, int *active) -{ - #define RAYGUI_TABBAR_ITEM_WIDTH 148 - - int result = -1; - //GuiState state = guiState; - - Rectangle tabBounds = { bounds.x, bounds.y, RAYGUI_TABBAR_ITEM_WIDTH, bounds.height }; - - if (*active < 0) *active = 0; - else if (*active > count - 1) *active = count - 1; - - int offsetX = 0; // Required in case tabs go out of screen - offsetX = (*active + 2)*RAYGUI_TABBAR_ITEM_WIDTH - GetScreenWidth(); - if (offsetX < 0) offsetX = 0; - - bool toggle = false; // Required for individual toggles - - // Draw control - //-------------------------------------------------------------------- - for (int i = 0; i < count; i++) - { - tabBounds.x = bounds.x + (RAYGUI_TABBAR_ITEM_WIDTH + 4)*i - offsetX; - - if (tabBounds.x < GetScreenWidth()) - { - // Draw tabs as toggle controls - int textAlignment = GuiGetStyle(TOGGLE, TEXT_ALIGNMENT); - int textPadding = GuiGetStyle(TOGGLE, TEXT_PADDING); - GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(TOGGLE, TEXT_PADDING, 8); - - if (i == (*active)) - { - toggle = true; - GuiToggle(tabBounds, text[i], &toggle); - } - else - { - toggle = false; - GuiToggle(tabBounds, text[i], &toggle); - if (toggle) *active = i; - } - - // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; - - GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); - GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); - - // Draw tab close button - // NOTE: Only draw close button for current tab: if (CheckCollisionPointRec(mousePosition, tabBounds)) - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); -#if defined(RAYGUI_NO_ICONS) - if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, "x")) result = i; -#else - if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, GuiIconText(ICON_CROSS_SMALL, NULL))) result = i; -#endif - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); - } - } - - // Draw tab-bar bottom line - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, 1 }, 0, BLANK, GetColor(GuiGetStyle(TOGGLE, BORDER_COLOR_NORMAL))); - //-------------------------------------------------------------------- - - return result; // Return as result the current TAB closing requested -} - -// Scroll Panel control -int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view) -{ - #define RAYGUI_MIN_SCROLLBAR_WIDTH 40 - #define RAYGUI_MIN_SCROLLBAR_HEIGHT 40 - #define RAYGUI_MIN_MOUSE_WHEEL_SPEED 20 - - int result = 0; - GuiState state = guiState; - - Rectangle temp = { 0 }; - if (view == NULL) view = &temp; - - Vector2 scrollPos = { 0.0f, 0.0f }; - if (scroll != NULL) scrollPos = *scroll; - - // Text will be drawn as a header bar (if provided) - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; - if (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; - - if (text != NULL) - { - // Move panel bounds after the header bar - bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + 1; - } - - bool hasHorizontalScrollBar = (content.width > bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; - bool hasVerticalScrollBar = (content.height > bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; - - // Recheck to account for the other scrollbar being visible - if (!hasHorizontalScrollBar) hasHorizontalScrollBar = (hasVerticalScrollBar && (content.width > (bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; - if (!hasVerticalScrollBar) hasVerticalScrollBar = (hasHorizontalScrollBar && (content.height > (bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; - - int horizontalScrollBarWidth = hasHorizontalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; - int verticalScrollBarWidth = hasVerticalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; - Rectangle horizontalScrollBar = { - (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + verticalScrollBarWidth : (float)bounds.x) + GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)bounds.y + bounds.height - horizontalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)bounds.width - verticalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)horizontalScrollBarWidth - }; - Rectangle verticalScrollBar = { - (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)bounds.x + bounds.width - verticalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH)), - (float)bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)verticalScrollBarWidth, - (float)bounds.height - horizontalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - }; - - // Make sure scroll bars have a minimum width/height - if (horizontalScrollBar.width < RAYGUI_MIN_SCROLLBAR_WIDTH) horizontalScrollBar.width = RAYGUI_MIN_SCROLLBAR_WIDTH; - if (verticalScrollBar.height < RAYGUI_MIN_SCROLLBAR_HEIGHT) verticalScrollBar.height = RAYGUI_MIN_SCROLLBAR_HEIGHT; - - // Calculate view area (area without the scrollbars) - *view = (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? - RAYGUI_CLITERAL(Rectangle){ bounds.x + verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth } : - RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth }; - - // Clip view area to the actual content size - if (view->width > content.width) view->width = content.width; - if (view->height > content.height) view->height = content.height; - - float horizontalMin = hasHorizontalScrollBar? ((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH); - float horizontalMax = hasHorizontalScrollBar? content.width - bounds.width + (float)verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH) - (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)verticalScrollBarWidth : 0) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); - float verticalMin = hasVerticalScrollBar? 0.0f : -1.0f; - float verticalMax = hasVerticalScrollBar? content.height - bounds.height + (float)horizontalScrollBarWidth + (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - -#if defined(SUPPORT_SCROLLBAR_KEY_INPUT) - if (hasHorizontalScrollBar) - { - if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - } - - if (hasVerticalScrollBar) - { - if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - } -#endif - float scrollDelta = GUI_SCROLL_DELTA; - - // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - - // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; - else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll - } - } - - // Normalize scroll values - if (scrollPos.x > -horizontalMin) scrollPos.x = -horizontalMin; - if (scrollPos.x < -horizontalMax) scrollPos.x = -horizontalMax; - if (scrollPos.y > -verticalMin) scrollPos.y = -verticalMin; - if (scrollPos.y < -verticalMax) scrollPos.y = -verticalMax; - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar - - GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background - - // Save size of the scrollbar slider - const int slider = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); - - // Draw horizontal scrollbar if visible - if (hasHorizontalScrollBar) - { - // Change scrollbar slider size to show the diff in size between the content width and the widget width - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth)/(int)content.width)*((int)bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth))); - scrollPos.x = (float)-GuiScrollBar(horizontalScrollBar, (int)-scrollPos.x, (int)horizontalMin, (int)horizontalMax); - } - else scrollPos.x = 0.0f; - - // Draw vertical scrollbar if visible - if (hasVerticalScrollBar) - { - // Change scrollbar slider size to show the diff in size between the content height and the widget height - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth)/(int)content.height)*((int)bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth))); - scrollPos.y = (float)-GuiScrollBar(verticalScrollBar, (int)-scrollPos.y, (int)verticalMin, (int)verticalMax); - } - else scrollPos.y = 0.0f; - - // Draw detail corner rectangle if both scroll bars are visible - if (hasHorizontalScrollBar && hasVerticalScrollBar) - { - Rectangle corner = { (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) + 2) : (horizontalScrollBar.x + horizontalScrollBar.width + 2), verticalScrollBar.y + verticalScrollBar.height + 2, (float)horizontalScrollBarWidth - 4, (float)verticalScrollBarWidth - 4 }; - GuiDrawRectangle(corner, 0, BLANK, GetColor(GuiGetStyle(LISTVIEW, TEXT + (state*3)))); - } - - // Draw scrollbar lines depending on current state - GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + (state*3))), BLANK); - - // Set scrollbar slider size back to the way it was before - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, slider); - //-------------------------------------------------------------------- - - if (scroll != NULL) *scroll = scrollPos; - - return result; -} - -// Label control -int GuiLabel(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - //... - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Button control, returns true when clicked -int GuiButton(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) result = 1; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(BUTTON, BORDER_WIDTH), GetColor(GuiGetStyle(BUTTON, BORDER + (state*3))), GetColor(GuiGetStyle(BUTTON, BASE + (state*3)))); - GuiDrawText(text, GetTextBounds(BUTTON, bounds), GuiGetStyle(BUTTON, TEXT_ALIGNMENT), GetColor(GuiGetStyle(BUTTON, TEXT + (state*3)))); - - if (state == STATE_FOCUSED) GuiTooltip(bounds); - //------------------------------------------------------------------ - - return result; // Button pressed: result = 1 -} - -// Label button control -int GuiLabelButton(Rectangle bounds, const char *text) -{ - GuiState state = guiState; - bool pressed = false; - - // NOTE: Force bounds.width to be all text - float textWidth = (float)GuiGetTextWidth(text); - if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check checkbox state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) pressed = true; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return pressed; -} - -// Toggle Button control -int GuiToggle(Rectangle bounds, const char *text, bool *active) -{ - int result = 0; - GuiState state = guiState; - - bool temp = false; - if (active == NULL) active = &temp; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check toggle button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else if (GUI_BUTTON_RELEASED) - { - state = STATE_NORMAL; - *active = !(*active); - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_NORMAL) - { - GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, ((*active)? BORDER_COLOR_PRESSED : (BORDER + state*3)))), GetColor(GuiGetStyle(TOGGLE, ((*active)? BASE_COLOR_PRESSED : (BASE + state*3))))); - GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, ((*active)? TEXT_COLOR_PRESSED : (TEXT + state*3))))); - } - else - { - GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + state*3)), GetColor(GuiGetStyle(TOGGLE, BASE + state*3))); - GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, TEXT + state*3))); - } - - if (state == STATE_FOCUSED) GuiTooltip(bounds); - //-------------------------------------------------------------------- - - return result; -} - -// Toggle Group control -int GuiToggleGroup(Rectangle bounds, const char *text, int *active) -{ - #if !defined(RAYGUI_TOGGLEGROUP_MAX_ITEMS) - #define RAYGUI_TOGGLEGROUP_MAX_ITEMS 32 - #endif - - int result = 0; - float initBoundsX = bounds.x; - - int temp = 0; - if (active == NULL) active = &temp; - - bool toggle = false; // Required for individual toggles - - // Get substrings items from text (items pointers) - int rows[RAYGUI_TOGGLEGROUP_MAX_ITEMS] = { 0 }; - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, rows); - - int prevRow = rows[0]; - - for (int i = 0; i < itemCount; i++) - { - if (prevRow != rows[i]) - { - bounds.x = initBoundsX; - bounds.y += (bounds.height + GuiGetStyle(TOGGLE, GROUP_PADDING)); - prevRow = rows[i]; - } - - if (i == (*active)) - { - toggle = true; - GuiToggle(bounds, items[i], &toggle); - } - else - { - toggle = false; - GuiToggle(bounds, items[i], &toggle); - if (toggle) *active = i; - } - - bounds.x += (bounds.width + GuiGetStyle(TOGGLE, GROUP_PADDING)); - } - - return result; -} - -// Toggle Slider control extended -int GuiToggleSlider(Rectangle bounds, const char *text, int *active) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - //bool toggle = false; // Required for individual toggles - - // Get substrings items from text (items pointers) - int itemCount = 0; - char **items = NULL; - - if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); - - Rectangle slider = { - 0, // Calculated later depending on the active toggle - bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - (bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - (itemCount + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING))/itemCount, - bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else if (GUI_BUTTON_RELEASED) - { - state = STATE_PRESSED; - (*active)++; - result = 1; - } - else state = STATE_FOCUSED; - } - - if ((*active) && (state != STATE_FOCUSED)) state = STATE_PRESSED; - } - - if (*active >= itemCount) *active = 0; - slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH) + (*active + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING) + (*active)*slider.width; - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + (state*3))), - GetColor(GuiGetStyle(TOGGLE, BASE_COLOR_NORMAL))); - - // Draw internal slider - if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_FOCUSED))); - else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - - // Draw text in slider - if (text != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(text); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = slider.x + slider.width/2 - textBounds.width/2; - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(items[*active], textBounds, GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(TOGGLE, TEXT + (state*3))), guiAlpha)); - } - //-------------------------------------------------------------------- - - return result; -} - -// Check Box control, returns 1 when state changed -int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) -{ - int result = 0; - GuiState state = guiState; - - bool temp = false; - if (checked == NULL) checked = &temp; - - Rectangle textBounds = { 0 }; - - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(CHECKBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - Rectangle totalBounds = { - (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, - bounds.y, - bounds.width + textBounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING), - bounds.height, - }; - - // Check checkbox state - if (CheckCollisionPointRec(mousePoint, totalBounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) - { - *checked = !(*checked); - result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(CHECKBOX, BORDER_WIDTH), GetColor(GuiGetStyle(CHECKBOX, BORDER + (state*3))), BLANK); - - if (*checked) - { - Rectangle check = { bounds.x + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), - bounds.y + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), - bounds.width - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)), - bounds.height - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)) }; - GuiDrawRectangle(check, 0, BLANK, GetColor(GuiGetStyle(CHECKBOX, TEXT + state*3))); - } - - GuiDrawText(text, textBounds, (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Combo Box control -int GuiComboBox(Rectangle bounds, const char *text, int *active) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - bounds.width -= (GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH) + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING)); - - Rectangle selector = { (float)bounds.x + bounds.width + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING), - (float)bounds.y, (float)GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH), (float)bounds.height }; - - // Get substrings items from text (items pointers, lengths and count) - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, NULL); - - if (*active < 0) *active = 0; - else if (*active > (itemCount - 1)) *active = itemCount - 1; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (CheckCollisionPointRec(mousePoint, bounds) || - CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_PRESSED) - { - *active += 1; - if (*active >= itemCount) *active = 0; // Cyclic combobox - } - - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - // Draw combo box main - GuiDrawRectangle(bounds, GuiGetStyle(COMBOBOX, BORDER_WIDTH), GetColor(GuiGetStyle(COMBOBOX, BORDER + (state*3))), GetColor(GuiGetStyle(COMBOBOX, BASE + (state*3)))); - GuiDrawText(items[*active], GetTextBounds(COMBOBOX, bounds), GuiGetStyle(COMBOBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(COMBOBOX, TEXT + (state*3)))); - - // Draw selector using a custom button - // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - GuiButton(selector, TextFormat("%i/%i", *active + 1, itemCount)); - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - //-------------------------------------------------------------------- - - return result; -} - -// Dropdown Box control -// NOTE: Returns mouse click -int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - int itemSelected = *active; - int itemFocused = -1; - - int direction = 0; // Dropdown box open direction: down (default) - if (GuiGetStyle(DROPDOWNBOX, DROPDOWN_ROLL_UP) == 1) direction = 1; // Up - - // Get substrings items from text (items pointers, lengths and count) - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, NULL); - - Rectangle boundsOpen = bounds; - boundsOpen.height = (itemCount + 1)*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - if (direction == 1) boundsOpen.y -= itemCount*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)) + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING); - - Rectangle itemBounds = bounds; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (editMode) - { - state = STATE_PRESSED; - - // Check if mouse has been pressed or released outside limits - if (!CheckCollisionPointRec(mousePoint, boundsOpen)) - { - if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; - } - - // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; - - // Check focused and selected item - for (int i = 0; i < itemCount; i++) - { - // Update item rectangle y position for next item - if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - - if (CheckCollisionPointRec(mousePoint, itemBounds)) - { - itemFocused = i; - if (GUI_BUTTON_RELEASED) - { - itemSelected = i; - result = 1; // Item selected - } - break; - } - } - - itemBounds = bounds; - } - else - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_PRESSED) - { - result = 1; - state = STATE_PRESSED; - } - else state = STATE_FOCUSED; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (editMode) GuiPanel(boundsOpen, NULL); - - GuiDrawRectangle(bounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER + state*3)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE + state*3))); - GuiDrawText(items[itemSelected], GetTextBounds(DROPDOWNBOX, bounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + state*3))); - - if (editMode) - { - // Draw visible items - for (int i = 0; i < itemCount; i++) - { - // Update item rectangle y position for next item - if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - - if (i == itemSelected) - { - GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_PRESSED))); - GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_PRESSED))); - } - else if (i == itemFocused) - { - GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_FOCUSED))); - GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_FOCUSED))); - } - else GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_NORMAL))); - } - } - - if (!GuiGetStyle(DROPDOWNBOX, DROPDOWN_ARROW_HIDDEN)) - { - // Draw arrows (using icon if available) -#if defined(RAYGUI_NO_ICONS) - GuiDrawText("v", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 2, 10, 10 }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); -#else - GuiDrawText(direction? "#121#" : "#120#", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 6, 10, 10 }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); // ICON_ARROW_DOWN_FILL -#endif - } - //-------------------------------------------------------------------- - - *active = itemSelected; - - // TODO: Use result to return more internal states: mouse-press out-of-bounds, mouse-press over selected-item... - return result; // Mouse click: result = 1 -} - -// Text Box control -// NOTE: Returns true on ENTER pressed (useful for data validation) -int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) -{ - #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) - #define RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN 20 // Frames to wait for autocursor movement - #endif - #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) - #define RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY 1 // Frames delay for autocursor movement - #endif - - int result = 0; - GuiState state = guiState; - - bool multiline = false; // TODO: Consider multiline text input - int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); - - Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); - int textLength = (text != NULL)? (int)strlen(text) : 0; // Get current text length - int thisCursorIndex = textBoxCursorIndex; - if (thisCursorIndex > textLength) thisCursorIndex = textLength; - int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box - - // Cursor rectangle - // NOTE: Position X value should be updated - Rectangle cursor = { - textBounds.x + textWidth + GuiGetStyle(DEFAULT, TEXT_SPACING), - textBounds.y + textBounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE), - 2, - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)*2 - }; - - if (cursor.height >= bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; - if (cursor.y < (bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH))) cursor.y = bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH); - - // Mouse cursor rectangle - // NOTE: Initialized outside of screen - Rectangle mouseCursor = cursor; - mouseCursor.x = -1; - mouseCursor.width = 1; - - // Blink-cursor frame counter - //if (!autoCursorMode) blinkCursorFrameCounter++; - //else blinkCursorFrameCounter = 0; - - // Update control - //-------------------------------------------------------------------- - // WARNING: Text editing is only supported under certain conditions: - if ((state != STATE_DISABLED) && // Control not disabled - !GuiGetStyle(TEXTBOX, TEXT_READONLY) && // TextBox not on read-only mode - !guiLocked && // Gui not locked - !guiControlExclusiveMode && // No gui slider on dragging - (wrapMode == TEXT_WRAP_NONE)) // No wrap mode - { - Vector2 mousePosition = GUI_POINTER_POSITION; - - if (editMode) - { - // GLOBAL: Auto-cursor movement logic - // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; - else autoCursorCounter = 0; - - bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); - - state = STATE_PRESSED; - - if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; - - // If text does not fit in the textbox and current cursor position is out of bounds, - // adding an index offset to text for drawing only what requires depending on cursor - while (textWidth >= textBounds.width) - { - int nextCodepointSize = 0; - GetCodepointNext(text + textIndexOffset, &nextCodepointSize); - - textIndexOffset += nextCodepointSize; - - textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); - } - - int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint - if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; - - // Encode codepoint as UTF-8 - int codepointSize = 0; - const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); - - // Handle text paste action - if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - const char *pasteText = GetClipboardText(); - if (pasteText != NULL) - { - int pasteLength = 0; - int pasteCodepoint; - int pasteCodepointSize; - - // Count how many codepoints to copy, stopping at the first unwanted control character - while (true) - { - pasteCodepoint = GetCodepointNext(pasteText + pasteLength, &pasteCodepointSize); - if (textLength + pasteLength + pasteCodepointSize >= textSize) break; - if (!(multiline && (pasteCodepoint == (int)'\n')) && !(pasteCodepoint >= 32)) break; - pasteLength += pasteCodepointSize; - } - - if (pasteLength > 0) - { - // Move forward data from cursor position - for (int i = textLength + pasteLength; i > textBoxCursorIndex; i--) text[i] = text[i - pasteLength]; - - // Paste data in at cursor - for (int i = 0; i < pasteLength; i++) text[textBoxCursorIndex + i] = pasteText[i]; - - textBoxCursorIndex += pasteLength; - textLength += pasteLength; - text[textLength] = '\0'; - } - } - } - else if (((multiline && (codepoint == (int)'\n')) || (codepoint >= 32)) && ((textLength + codepointSize) < textSize)) - { - // Adding codepoint to text, at current cursor position - - // Move forward data from cursor position - for (int i = (textLength + codepointSize); i > textBoxCursorIndex; i--) text[i] = text[i - codepointSize]; - - // Add new codepoint in current cursor position - for (int i = 0; i < codepointSize; i++) text[textBoxCursorIndex + i] = charEncoded[i]; - - textBoxCursorIndex += codepointSize; - textLength += codepointSize; - - // Make sure text last character is EOL - text[textLength] = '\0'; - } - - // Move cursor to start - if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; - - // Move cursor to end - if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; - - // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - int accCodepointSize = 0; - int nextCodepointSize; - int nextCodepoint; - - // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - bool puctuation = ispunct(nextCodepoint & 0xff); - while (offset < textLength) - { - if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) - break; - offset += nextCodepointSize; - accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Check whitespace to delete (ASCII only) - while (offset < textLength) - { - if (!isspace(nextCodepoint & 0xff)) break; - - offset += nextCodepointSize; - accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Move text after cursor forward (including final null terminator) - for (int i = offset; i <= textLength; i++) text[i - accCodepointSize] = text[i]; - - textLength -= accCodepointSize; - } - - else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) - { - // Delete single codepoint from text, after current cursor position - - int nextCodepointSize = 0; - GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex + nextCodepointSize; i <= textLength; i++) text[i - nextCodepointSize] = text[i]; - - textLength -= nextCodepointSize; - } - - // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - int accCodepointSize = 0; - int prevCodepointSize = 0; - int prevCodepoint = 0; - - // Check whitespace to delete (ASCII only) - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if (!isspace(prevCodepoint & 0xff)) break; - - offset -= prevCodepointSize; - accCodepointSize += prevCodepointSize; - } - - // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - bool puctuation = ispunct(prevCodepoint & 0xff); - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; - - offset -= prevCodepointSize; - accCodepointSize += prevCodepointSize; - } - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - accCodepointSize] = text[i]; - - textLength -= accCodepointSize; - textBoxCursorIndex -= accCodepointSize; - } - - else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) - { - // Delete single codepoint from text, before current cursor position - - int prevCodepointSize = 0; - - GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - prevCodepointSize] = text[i]; - - textLength -= prevCodepointSize; - textBoxCursorIndex -= prevCodepointSize; - } - - // Move cursor position with keys - if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - //int accCodepointSize = 0; - int prevCodepointSize = 0; - int prevCodepoint = 0; - - // Check whitespace to skip (ASCII only) - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if (!isspace(prevCodepoint & 0xff)) break; - - offset -= prevCodepointSize; - //accCodepointSize += prevCodepointSize; - } - - // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - bool puctuation = ispunct(prevCodepoint & 0xff); - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; - - offset -= prevCodepointSize; - //accCodepointSize += prevCodepointSize; - } - - textBoxCursorIndex = offset; - } - else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) - { - int prevCodepointSize = 0; - GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); - - textBoxCursorIndex -= prevCodepointSize; - } - else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - //int accCodepointSize = 0; - int nextCodepointSize; - int nextCodepoint; - - // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - bool puctuation = ispunct(nextCodepoint & 0xff); - while (offset < textLength) - { - if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) break; - - offset += nextCodepointSize; - //accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Check whitespace to skip (ASCII only) - while (offset < textLength) - { - if (!isspace(nextCodepoint & 0xff)) break; - - offset += nextCodepointSize; - //accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - textBoxCursorIndex = offset; - } - else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) - { - int nextCodepointSize = 0; - GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); - - textBoxCursorIndex += nextCodepointSize; - } - - // Move cursor position with mouse - if (CheckCollisionPointRec(mousePosition, textBounds)) // Mouse hover text - { - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/(float)guiFont.baseSize; - int codepointIndex = 0; - float glyphWidth = 0.0f; - float widthToMouseX = 0; - int mouseCursorIndex = 0; - - for (int i = textIndexOffset; i < textLength; i += codepointSize) - { - codepoint = GetCodepointNext(&text[i], &codepointSize); - codepointIndex = GetGlyphIndex(guiFont, codepoint); - - if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); - else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); - - if (mousePosition.x <= (textBounds.x + (widthToMouseX + glyphWidth/2))) - { - mouseCursor.x = textBounds.x + widthToMouseX; - mouseCursorIndex = i; - break; - } - - widthToMouseX += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - - // Check if mouse cursor is at the last position - int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) - { - mouseCursor.x = textBounds.x + textEndWidth; - mouseCursorIndex = textLength; - } - - // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) - { - cursor.x = mouseCursor.x; - textBoxCursorIndex = mouseCursorIndex; - } - } - else mouseCursor.x = -1; - - // Recalculate cursor position.y depending on textBoxCursorIndex - cursor.x = bounds.x + GuiGetStyle(TEXTBOX, TEXT_PADDING) + GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex) + GuiGetStyle(DEFAULT, TEXT_SPACING); - //if (multiline) cursor.y = GetTextLines() - - // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) - { - textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index - autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes - result = 1; - } - } - else - { - if (CheckCollisionPointRec(mousePosition, bounds)) - { - state = STATE_FOCUSED; - - if (GUI_BUTTON_PRESSED) - { - textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text - autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes - result = 1; - } - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_PRESSED) - { - GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED))); - } - else if (state == STATE_DISABLED) - { - GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED))); - } - else GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), BLANK); - - // Draw text considering index offset if required - // NOTE: Text index offset depends on cursor position - GuiDrawText(text + textIndexOffset, textBounds, GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TEXTBOX, TEXT + (state*3)))); - - // Draw cursor - if (editMode && !GuiGetStyle(TEXTBOX, TEXT_READONLY)) - { - //if (autoCursorMode || ((blinkCursorFrameCounter/40)%2 == 0)) - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); - - // Draw mouse position cursor (if required) - if (mouseCursor.x >= 0) GuiDrawRectangle(mouseCursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); - } - else if (state == STATE_FOCUSED) GuiTooltip(bounds); - //-------------------------------------------------------------------- - - return result; // Mouse button pressed: result = 1 -} - -/* -// Text Box control with multiple lines and word-wrap -// NOTE: This text-box is readonly, no editing supported by default -bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode) -{ - bool pressed = false; - - GuiSetStyle(TEXTBOX, TEXT_READONLY, 1); - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_WORD); // WARNING: If wrap mode enabled, text editing is not supported - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_TOP); - - // TODO: Implement methods to calculate cursor position properly - pressed = GuiTextBox(bounds, text, textSize, editMode); - - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_NONE); - GuiSetStyle(TEXTBOX, TEXT_READONLY, 0); - - return pressed; -} -*/ - -// Spinner control, returns selected value -int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) -{ - int result = 1; - GuiState state = guiState; - - int tempValue = *value; - - Rectangle valueBoxBounds = { - bounds.x + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING), - bounds.y, - bounds.width - 2*(GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING)), bounds.height }; - Rectangle leftButtonBound = { (float)bounds.x, (float)bounds.y, (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - Rectangle rightButtonBound = { (float)bounds.x + bounds.width - GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.y, - (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check spinner state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - -#if defined(RAYGUI_NO_ICONS) - if (GuiButton(leftButtonBound, "<")) tempValue--; - if (GuiButton(rightButtonBound, ">")) tempValue++; -#else - if (GuiButton(leftButtonBound, GuiIconText(ICON_ARROW_LEFT_FILL, NULL))) tempValue--; - if (GuiButton(rightButtonBound, GuiIconText(ICON_ARROW_RIGHT_FILL, NULL))) tempValue++; -#endif - - if (!editMode) - { - if (tempValue < minValue) tempValue = minValue; - if (tempValue > maxValue) tempValue = maxValue; - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - result = GuiValueBox(valueBoxBounds, NULL, &tempValue, minValue, maxValue, editMode); - - // Draw value selector custom buttons - // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, GuiGetStyle(VALUEBOX, BORDER_WIDTH)); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - - // Draw text label if provided - GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - *value = tempValue; - return result; -} - -// Value Box control, updates input text with numbers -// NOTE: Requires static variables: frameCounter -int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) -{ - #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) - #define RAYGUI_VALUEBOX_MAX_CHARS 32 - #endif - - int result = 0; - GuiState state = guiState; - - char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = { 0 }; - snprintf(textValue, RAYGUI_VALUEBOX_MAX_CHARS + 1, "%i", *value); - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - bool valueHasChanged = false; - - if (editMode) - { - state = STATE_PRESSED; - - int keyCount = (int)strlen(textValue); - - // Add or remove minus symbol - if (GUI_KEY_PRESSED(KEY_MINUS)) - { - if (textValue[0] == '-') - { - for (int i = 0 ; i < keyCount; i++) textValue[i] = textValue[i + 1]; - - keyCount--; - valueHasChanged = true; - } - else if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) - { - if (keyCount == 0) - { - textValue[0] = '0'; - textValue[1] = '\0'; - keyCount++; - } - - for (int i = keyCount ; i > -1; i--) textValue[i + 1] = textValue[i]; - - textValue[0] = '-'; - keyCount++; - valueHasChanged = true; - } - } - - // Add new digit to text value - if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) - { - int key = GUI_INPUT_KEY; - - // Only allow keys in range [48..57] - if ((key >= 48) && (key <= 57)) - { - textValue[keyCount] = (char)key; - keyCount++; - valueHasChanged = true; - } - } - - // Delete text - if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) - { - keyCount--; - textValue[keyCount] = '\0'; - valueHasChanged = true; - } - - if (valueHasChanged) *value = TextToInteger(textValue); - - // NOTE: Values are not clamped until user input finishes - //if (*value > maxValue) *value = maxValue; - //else if (*value < minValue) *value = minValue; - - if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) - { - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - - result = 1; - } - } - else - { - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - if (GUI_BUTTON_PRESSED) result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - Color baseColor = BLANK; - if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); - else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); - - GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); - GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); - - // Draw cursor rectangle - if (editMode) - { - // NOTE: ValueBox internal text is always centered - Rectangle cursor = { bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, - bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH) + 2, - 2, bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2 - 4 }; - if (cursor.height > bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); - } - - // Draw text label if provided - GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Floating point Value Box control, updates input val_str with numbers -// NOTE: Requires static variables: frameCounter -int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode) -{ - #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) - #define RAYGUI_VALUEBOX_MAX_CHARS 32 - #endif - - int result = 0; - GuiState state = guiState; - - //char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = "\0"; - //snprintf(textValue, sizeof(textValue), "%2.2f", *value); - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - bool valueHasChanged = false; - - if (editMode) - { - state = STATE_PRESSED; - - int keyCount = (int)strlen(textValue); - - // Add or remove minus symbol - if (GUI_KEY_PRESSED(KEY_MINUS)) - { - if (textValue[0] == '-') - { - for (int i = 0; i < keyCount; i++) textValue[i] = textValue[i + 1]; - - keyCount--; - valueHasChanged = true; - } - else if (keyCount < (RAYGUI_VALUEBOX_MAX_CHARS - 1)) - { - if (keyCount == 0) - { - textValue[0] = '0'; - textValue[1] = '\0'; - keyCount++; - } - - for (int i = keyCount; i > -1; i--) textValue[i + 1] = textValue[i]; - - textValue[0] = '-'; - keyCount++; - valueHasChanged = true; - } - } - - // Only allow keys in range [48..57] - if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) - { - if (GuiGetTextWidth(textValue) < bounds.width) - { - int key = GUI_INPUT_KEY; - if (((key >= 48) && (key <= 57)) || - (key == '.') || - ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position - ((keyCount == 0) && (key == '-'))) - { - textValue[keyCount] = (char)key; - keyCount++; - - valueHasChanged = true; - } - } - } - - // Pressed backspace - if (GUI_KEY_PRESSED(KEY_BACKSPACE)) - { - if (keyCount > 0) - { - keyCount--; - textValue[keyCount] = '\0'; - valueHasChanged = true; - } - } - - if (valueHasChanged) *value = TextToFloat(textValue); - - if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; - } - else - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - if (GUI_BUTTON_PRESSED) result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - Color baseColor = BLANK; - if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); - else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); - - GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); - GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); - - // Draw cursor - if (editMode) - { - // NOTE: ValueBox internal text is always centered - Rectangle cursor = {bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, - bounds.y + 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), 4, - bounds.height - 4*GuiGetStyle(VALUEBOX, BORDER_WIDTH)}; - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); - } - - // Draw text label if provided - GuiDrawText(text, textBounds, - (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, - GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Slider control with pro parameters -// NOTE: Other GuiSlider*() controls use this one -int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - GuiState state = guiState; - - float temp = (maxValue - minValue)/2.0f; - if (value == NULL) value = &temp; - float oldValue = *value; - - int sliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); - - Rectangle slider = { bounds.x, bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - 0, bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - // Get equivalent value and slider position from mousePosition.x - *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - if (!CheckCollisionPointRec(mousePoint, slider)) - { - // Get equivalent value and slider position from mousePosition.x - *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; - } - } - else state = STATE_FOCUSED; - } - - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - } - - // Control value change check - if (oldValue == *value) result = 0; - else result = 1; - - // Slider bar limits check - float sliderValue = (((*value - minValue)/(maxValue - minValue))*(bounds.width - sliderWidth - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))); - if (sliderWidth > 0) // Slider - { - slider.x += sliderValue; - slider.width = (float)sliderWidth; - if (slider.x <= (bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH); - else if ((slider.x + slider.width) >= (bounds.x + bounds.width)) slider.x = bounds.x + bounds.width - slider.width - GuiGetStyle(SLIDER, BORDER_WIDTH); - } - else if (sliderWidth == 0) // SliderBar - { - slider.x += GuiGetStyle(SLIDER, BORDER_WIDTH); - slider.width = sliderValue; - if (slider.width > bounds.width) slider.width = bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH); - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), GetColor(GuiGetStyle(SLIDER, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); - - // Draw slider internal bar (depends on state) - if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED))); - else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_PRESSED))); - else if (state == STATE_DISABLED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_DISABLED))); - - // Draw left/right text if provided - if (textLeft != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textLeft); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x - textBounds.width - GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - - if (textRight != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textRight); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - //-------------------------------------------------------------------- - - return result; -} - -// Slider Bar control extended, returns selected value -int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - int preSliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); - GuiSetStyle(SLIDER, SLIDER_WIDTH, 0); - result = GuiSlider(bounds, textLeft, textRight, value, minValue, maxValue); - GuiSetStyle(SLIDER, SLIDER_WIDTH, preSliderWidth); - - return result; -} - -// Progress Bar control extended, shows current progress value -int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - GuiState state = guiState; - - float temp = (maxValue - minValue)/2.0f; - if (value == NULL) value = &temp; - - // Progress bar - Rectangle progress = { bounds.x + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), - bounds.y + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) + GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING), 0, - bounds.height - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - 2*GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING) -1 }; - - // Update control - //-------------------------------------------------------------------- - if (*value > maxValue) *value = maxValue; - - // WARNING: Working with floats could lead to rounding issues - if ((state != STATE_DISABLED)) progress.width = ((float)*value/(maxValue - minValue))*(bounds.width - 2*GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)); - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_DISABLED) - { - GuiDrawRectangle(bounds, GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(PROGRESSBAR, BORDER + (state*3))), BLANK); - } - else - { - if (*value > minValue) - { - // Draw progress bar with colored border, more visual - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height - 2 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - } - else GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - - if (*value >= maxValue) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1}, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - else - { - // Draw borders not yet reached by value - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y + bounds.height - 1, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - } - - // Draw slider internal progress bar (depends on state) - if (GuiGetStyle(PROGRESSBAR, PROGRESS_SIDE) == 0) // Left-->Right - { - GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); - } - else // Right-->Left - { - progress.x = bounds.x + bounds.width - progress.width - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH); - GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); - } - } - - // Draw left/right text if provided - if (textLeft != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textLeft); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x - textBounds.width - GuiGetStyle(PROGRESSBAR, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - - if (textRight != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textRight); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(PROGRESSBAR, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - //-------------------------------------------------------------------- - - return result; -} - -// Status Bar control -int GuiStatusBar(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(STATUSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(STATUSBAR, BORDER + (state*3))), GetColor(GuiGetStyle(STATUSBAR, BASE + (state*3)))); - GuiDrawText(text, GetTextBounds(STATUSBAR, bounds), GuiGetStyle(STATUSBAR, TEXT_ALIGNMENT), GetColor(GuiGetStyle(STATUSBAR, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Dummy rectangle control, intended for placeholding -int GuiDummyRec(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); - GuiDrawText(text, GetTextBounds(DEFAULT, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(BUTTON, (state != STATE_DISABLED)? TEXT_COLOR_NORMAL : TEXT_COLOR_DISABLED))); - //------------------------------------------------------------------ - - return result; -} - -// List View control -int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active) -{ - int result = 0; - int itemCount = 0; - char **items = NULL; - - if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); - - result = GuiListViewEx(bounds, items, itemCount, scrollIndex, active, NULL); - - return result; -} - -// List View control with extended parameters -int GuiListViewEx(Rectangle bounds, char **text, int count, int *scrollIndex, int *active, int *focus) -{ - int result = 0; - GuiState state = guiState; - - int itemFocused = (focus == NULL)? -1 : *focus; - int itemSelected = (active == NULL)? -1 : *active; - - // Check if scroll bar is needed - bool useScrollBar = false; - if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; - - // Define base item rectangle [0] - Rectangle itemBounds = { 0 }; - itemBounds.x = bounds.x + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING); - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.width = bounds.width - 2*GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) - GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.height = (float)GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - if (useScrollBar) itemBounds.width -= GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); - - // Get items on the list - int visibleItems = (int)bounds.height/(GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - if (visibleItems > count) visibleItems = count; - - int startIndex = (scrollIndex == NULL)? 0 : *scrollIndex; - if ((startIndex < 0) || (startIndex > (count - visibleItems))) startIndex = 0; - int endIndex = startIndex + visibleItems; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check mouse inside list view - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - - // Check focused and selected item - for (int i = 0; i < visibleItems; i++) - { - if (CheckCollisionPointRec(mousePoint, itemBounds)) - { - itemFocused = startIndex + i; - if (GUI_BUTTON_PRESSED) - { - if (itemSelected == (startIndex + i)) itemSelected = -1; - else itemSelected = startIndex + i; - } - break; - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - } - - if (useScrollBar) - { - float scrollDelta = GUI_SCROLL_DELTA; - startIndex -= (int)scrollDelta; - - if (startIndex < 0) startIndex = 0; - else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; - - endIndex = startIndex + visibleItems; - if (endIndex > count) endIndex = count; - } - } - else itemFocused = -1; - - // Reset item rectangle y to [0] - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background - - // Draw visible items - for (int i = 0; ((i < visibleItems) && (text != NULL)); i++) - { - if (GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL)) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_NORMAL)), BLANK); - - if (state == STATE_DISABLED) - { - if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); - } - else - { - if (((startIndex + i) == itemSelected) && (active != NULL)) - { - // Draw item selected - GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); - } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned - { - // Draw item focused - GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); - } - else - { - // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); - } - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - } - - if (useScrollBar) - { - Rectangle scrollBarBounds = { - bounds.x + bounds.width - GuiGetStyle(LISTVIEW, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.y + GuiGetStyle(LISTVIEW, BORDER_WIDTH), (float)GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - }; - - // Calculate percentage of visible items and apply same percentage to scrollbar - float percentVisible = (float)(endIndex - startIndex)/count; - float sliderSize = bounds.height*percentVisible; - - int prevSliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); // Save default slider size - int prevScrollSpeed = GuiGetStyle(SCROLLBAR, SCROLL_SPEED); // Save default scroll speed - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)sliderSize); // Change slider size - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, count - visibleItems); // Change scroll speed - - startIndex = GuiScrollBar(scrollBarBounds, startIndex, 0, count - visibleItems); - - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, prevScrollSpeed); // Reset scroll speed to default - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, prevSliderSize); // Reset slider size to default - } - //-------------------------------------------------------------------- - - if (active != NULL) *active = itemSelected; - if (focus != NULL) *focus = itemFocused; - if (scrollIndex != NULL) *scrollIndex = startIndex; - - return result; -} - -// Color Panel control - Color (RGBA) variant -int GuiColorPanel(Rectangle bounds, const char *text, Color *color) -{ - int result = 0; - - Vector3 vcolor = { (float)color->r/255.0f, (float)color->g/255.0f, (float)color->b/255.0f }; - Vector3 hsv = ConvertRGBtoHSV(vcolor); - Vector3 prevHsv = hsv; // workaround to see if GuiColorPanelHSV modifies the hsv - - GuiColorPanelHSV(bounds, text, &hsv); - - // Check if the hsv was changed, only then change the color - // This is required, because the Color->HSV->Color conversion has precision errors - // Thus the assignment from HSV to Color should only be made, if the HSV has a new user-entered value - // Otherwise GuiColorPanel would often modify it's color without user input - // TODO: GuiColorPanelHSV could return 1 if the slider was dragged, to simplify this check - if (hsv.x != prevHsv.x || hsv.y != prevHsv.y || hsv.z != prevHsv.z) - { - Vector3 rgb = ConvertHSVtoRGB(hsv); - - // NOTE: Vector3ToColor() only available on raylib 1.8.1 - *color = RAYGUI_CLITERAL(Color){ (unsigned char)(255.0f*rgb.x), - (unsigned char)(255.0f*rgb.y), - (unsigned char)(255.0f*rgb.z), - color->a }; - } - return result; -} - -// Color Bar Alpha control -// NOTE: Returns alpha value normalized [0..1] -int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) -{ - #if !defined(RAYGUI_COLORBARALPHA_CHECKED_SIZE) - #define RAYGUI_COLORBARALPHA_CHECKED_SIZE 10 - #endif - - int result = 0; - GuiState state = guiState; - Rectangle selector = { (float)bounds.x + (*alpha)*bounds.width - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, - (float)bounds.y - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), - (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT), - (float)bounds.height + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2 }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - *alpha = (mousePoint.x - bounds.x)/bounds.width; - if (*alpha <= 0.0f) *alpha = 0.0f; - if (*alpha >= 1.0f) *alpha = 1.0f; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - *alpha = (mousePoint.x - bounds.x)/bounds.width; - if (*alpha <= 0.0f) *alpha = 0.0f; - if (*alpha >= 1.0f) *alpha = 1.0f; - //selector.x = bounds.x + (int)(((alpha - 0)/(100 - 0))*(bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))) - selector.width/2; - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - // Draw alpha bar: checked background - if (state != STATE_DISABLED) - { - int checksX = (int)bounds.width/RAYGUI_COLORBARALPHA_CHECKED_SIZE; - int checksY = (int)bounds.height/RAYGUI_COLORBARALPHA_CHECKED_SIZE; - - for (int x = 0; x < checksX; x++) - { - for (int y = 0; y < checksY; y++) - { - Rectangle check = { bounds.x + x*RAYGUI_COLORBARALPHA_CHECKED_SIZE, bounds.y + y*RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE }; - GuiDrawRectangle(check, 0, BLANK, ((x + y)%2)? Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.4f) : Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.4f)); - } - } - - DrawRectangleGradientEx(bounds, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha)); - } - else DrawRectangleGradientEx(bounds, Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - - // Draw alpha bar: selector - GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); - //-------------------------------------------------------------------- - - return result; -} - -// Color Bar Hue control -// Returns hue value normalized [0..1] -// NOTE: Other similar bars (for reference): -// Color GuiColorBarSat() [WHITE->color] -// Color GuiColorBarValue() [BLACK->color], HSV/HSL -// float GuiColorBarLuminance() [BLACK->WHITE] -int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) -{ - int result = 0; - GuiState state = guiState; - Rectangle selector = { (float)bounds.x - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), (float)bounds.y + (*hue)/360.0f*bounds.height - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, (float)bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2, (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - *hue = (mousePoint.y - bounds.y)*360/bounds.height; - if (*hue <= 0.0f) *hue = 0.0f; - if (*hue >= 359.0f) *hue = 359.0f; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - *hue = (mousePoint.y - bounds.y)*360/bounds.height; - if (*hue <= 0.0f) *hue = 0.0f; - if (*hue >= 359.0f) *hue = 359.0f; - - } - else state = STATE_FOCUSED; - - /*if (GUI_KEY_DOWN(KEY_UP)) - { - hue -= 2.0f; - if (hue <= 0.0f) hue = 0.0f; - } - else if (GUI_KEY_DOWN(KEY_DOWN)) - { - hue += 2.0f; - if (hue >= 360.0f) hue = 360.0f; - }*/ - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state != STATE_DISABLED) - { - // Draw hue bar:color bars - // TODO: Use directly DrawRectangleGradientEx(bounds, color1, color2, color2, color1); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + bounds.height/6), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 2*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 3*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 4*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 5*(bounds.height/6)), (int)bounds.width, (int)(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha)); - } - else DrawRectangleGradientV((int)bounds.x, (int)bounds.y, (int)bounds.width, (int)bounds.height, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - - // Draw hue bar: selector - GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); - //-------------------------------------------------------------------- - - return result; -} - -// Color Picker control -// NOTE: It's divided in multiple controls: -// Color GuiColorPanel(Rectangle bounds, Color color) -// float GuiColorBarAlpha(Rectangle bounds, float alpha) -// float GuiColorBarHue(Rectangle bounds, float value) -// NOTE: bounds define GuiColorPanel() size -// NOTE: this picker converts RGB to HSV, which can cause the Hue control to jump. If you have this problem, consider using the HSV variant instead -int GuiColorPicker(Rectangle bounds, const char *text, Color *color) -{ - int result = 0; - - Color temp = { 200, 0, 0, 255 }; - if (color == NULL) color = &temp; - - GuiColorPanel(bounds, NULL, color); - - Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; - //Rectangle boundsAlpha = { bounds.x, bounds.y + bounds.height + GuiGetStyle(COLORPICKER, BARS_PADDING), bounds.width, GuiGetStyle(COLORPICKER, BARS_THICK) }; - - // NOTE: this conversion can cause low hue-resolution, if the r, g and b value are very similar, which causes the hue bar to shift around when only the GuiColorPanel is used - Vector3 hsv = ConvertRGBtoHSV(RAYGUI_CLITERAL(Vector3){ (*color).r/255.0f, (*color).g/255.0f, (*color).b/255.0f }); - - GuiColorBarHue(boundsHue, NULL, &hsv.x); - - //color.a = (unsigned char)(GuiColorBarAlpha(boundsAlpha, (float)color.a/255.0f)*255.0f); - Vector3 rgb = ConvertHSVtoRGB(hsv); - - *color = RAYGUI_CLITERAL(Color){ (unsigned char)roundf(rgb.x*255.0f), (unsigned char)roundf(rgb.y*255.0f), (unsigned char)roundf(rgb.z*255.0f), (*color).a }; - - return result; -} - -// Color Picker control that avoids conversion to RGB and back to HSV on each call, thus avoiding jittering -// The user can call ConvertHSVtoRGB() to convert *colorHsv value to RGB -// NOTE: It's divided in multiple controls: -// int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -// int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) -// float GuiColorBarHue(Rectangle bounds, float value) -// NOTE: bounds define GuiColorPanelHSV() size -int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -{ - int result = 0; - - Vector3 tempHsv = { 0 }; - - if (colorHsv == NULL) - { - const Vector3 tempColor = { 200.0f/255.0f, 0.0f, 0.0f }; - tempHsv = ConvertRGBtoHSV(tempColor); - colorHsv = &tempHsv; - } - - GuiColorPanelHSV(bounds, NULL, colorHsv); - - const Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; - - GuiColorBarHue(boundsHue, NULL, &colorHsv->x); - - return result; -} - -// Color Panel control - HSV variant -int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -{ - int result = 0; - GuiState state = guiState; - Vector2 pickerSelector = { 0 }; - - const Color colWhite = { 255, 255, 255, 255 }; - const Color colBlack = { 0, 0, 0, 255 }; - - pickerSelector.x = bounds.x + (float)colorHsv->y*bounds.width; // HSV: Saturation - pickerSelector.y = bounds.y + (1.0f - (float)colorHsv->z)*bounds.height; // HSV: Value - - Vector3 maxHue = { colorHsv->x, 1.0f, 1.0f }; - Vector3 rgbHue = ConvertHSVtoRGB(maxHue); - Color maxHueCol = { (unsigned char)(255.0f*rgbHue.x), - (unsigned char)(255.0f*rgbHue.y), - (unsigned char)(255.0f*rgbHue.z), 255 }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - pickerSelector = mousePoint; - - if (pickerSelector.x < bounds.x) pickerSelector.x = bounds.x; - if (pickerSelector.x > bounds.x + bounds.width) pickerSelector.x = bounds.x + bounds.width; - if (pickerSelector.y < bounds.y) pickerSelector.y = bounds.y; - if (pickerSelector.y > bounds.y + bounds.height) pickerSelector.y = bounds.y + bounds.height; - - // Calculate color from picker - Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; - - colorPick.x /= (float)bounds.width; // Get normalized value on x - colorPick.y /= (float)bounds.height; // Get normalized value on y - - colorHsv->y = colorPick.x; - colorHsv->z = 1.0f - colorPick.y; - - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; - pickerSelector = mousePoint; - - // Calculate color from picker - Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; - - colorPick.x /= (float)bounds.width; // Get normalized value on x - colorPick.y /= (float)bounds.height; // Get normalized value on y - - colorHsv->y = colorPick.x; - colorHsv->z = 1.0f - colorPick.y; - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state != STATE_DISABLED) - { - DrawRectangleGradientEx(bounds, Fade(colWhite, guiAlpha), Fade(colWhite, guiAlpha), Fade(maxHueCol, guiAlpha), Fade(maxHueCol, guiAlpha)); - DrawRectangleGradientEx(bounds, Fade(colBlack, 0), Fade(colBlack, guiAlpha), Fade(colBlack, guiAlpha), Fade(colBlack, 0)); - - // Draw color picker: selector - Rectangle selector = { pickerSelector.x - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, pickerSelector.y - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE), (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE) }; - GuiDrawRectangle(selector, 0, BLANK, colWhite); - } - else - { - DrawRectangleGradientEx(bounds, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.6f), guiAlpha)); - } - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - //-------------------------------------------------------------------- - - return result; -} - -// Message Box control -int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons) -{ - #if !defined(RAYGUI_MESSAGEBOX_BUTTON_HEIGHT) - #define RAYGUI_MESSAGEBOX_BUTTON_HEIGHT 24 - #endif - #if !defined(RAYGUI_MESSAGEBOX_BUTTON_PADDING) - #define RAYGUI_MESSAGEBOX_BUTTON_PADDING 12 - #endif - - int result = -1; // Returns clicked button from buttons list, 0 refers to closed window button - - int buttonCount = 0; - char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); - Rectangle buttonBounds = { 0 }; - buttonBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - buttonBounds.y = bounds.y + bounds.height - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT - RAYGUI_MESSAGEBOX_BUTTON_PADDING; - buttonBounds.width = (bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; - buttonBounds.height = RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; - - //int textWidth = GuiGetTextWidth(message) + 2; - - Rectangle textBounds = { 0 }; - textBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - textBounds.width = bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*2; - textBounds.height = bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 3*RAYGUI_MESSAGEBOX_BUTTON_PADDING - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; - - // Draw control - //-------------------------------------------------------------------- - if (GuiWindowBox(bounds, title)) result = 0; - - int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(textBounds, message); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); - - prevTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - for (int i = 0; i < buttonCount; i++) - { - if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; - buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); - } - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevTextAlignment); - //-------------------------------------------------------------------- - - return result; -} - -// Text Input Box control, ask for text -int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive) -{ - #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT) - #define RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT 24 - #endif - #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_PADDING) - #define RAYGUI_TEXTINPUTBOX_BUTTON_PADDING 12 - #endif - #if !defined(RAYGUI_TEXTINPUTBOX_HEIGHT) - #define RAYGUI_TEXTINPUTBOX_HEIGHT 26 - #endif - - // Used to enable text edit mode - // WARNING: No more than one GuiTextInputBox() should be open at the same time - static bool textEditMode = false; - - int result = -1; - - int buttonCount = 0; - char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); - Rectangle buttonBounds = { 0 }; - buttonBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - buttonBounds.y = bounds.y + bounds.height - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - buttonBounds.width = (bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; - buttonBounds.height = RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT; - - int messageInputHeight = (int)bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - 2*RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - - Rectangle textBounds = { 0 }; - if (message != NULL) - { - int textSize = GuiGetTextWidth(message) + 2; - - textBounds.x = bounds.x + bounds.width/2 - textSize/2; - textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + messageInputHeight/4 - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - textBounds.width = (float)textSize; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - } - - Rectangle textBoxBounds = { 0 }; - textBoxBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - textBoxBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - RAYGUI_TEXTINPUTBOX_HEIGHT/2; - if (message == NULL) textBoxBounds.y = bounds.y + 24 + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - else textBoxBounds.y += (messageInputHeight/2 + messageInputHeight/4); - textBoxBounds.width = bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*2; - textBoxBounds.height = RAYGUI_TEXTINPUTBOX_HEIGHT; - - // Draw control - //-------------------------------------------------------------------- - if (GuiWindowBox(bounds, title)) result = 0; - - // Draw message if available - if (message != NULL) - { - int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(textBounds, message); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); - } - - int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - - if (secretViewActive != NULL) - { - static char stars[] = "****************"; - if (GuiTextBox(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x, textBoxBounds.y, textBoxBounds.width - 4 - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.height }, - ((*secretViewActive == 1) || textEditMode)? text : stars, textMaxSize, textEditMode)) textEditMode = !textEditMode; - - GuiToggle(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x + textBoxBounds.width - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.y, RAYGUI_TEXTINPUTBOX_HEIGHT, RAYGUI_TEXTINPUTBOX_HEIGHT }, (*secretViewActive == 1)? "#44#" : "#45#", secretViewActive); - } - else - { - if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; - } - - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); - - int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - for (int i = 0; i < buttonCount; i++) - { - if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; - buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); - } - - if (result >= 0) textEditMode = false; - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevBtnTextAlignment); - //-------------------------------------------------------------------- - - return result; // Result is the pressed button index -} - -// Grid control -// NOTE: Returns grid mouse-hover selected cell -// About drawing lines at subpixel spacing, simple put, not easy solution: -// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster -int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) -{ - // Grid lines alpha amount - #if !defined(RAYGUI_GRID_ALPHA) - #define RAYGUI_GRID_ALPHA 0.15f - #endif - - int result = 0; - GuiState state = guiState; - - Vector2 mousePoint = GUI_POINTER_POSITION; - Vector2 currentMouseCell = { -1, -1 }; - - float spaceWidth = spacing/(float)subdivs; - int linesV = (int)(bounds.width/spaceWidth) + 1; - int linesH = (int)(bounds.height/spaceWidth) + 1; - - int color = GuiGetStyle(DEFAULT, LINE_COLOR); - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - // NOTE: Cell values must be the upper left of the cell the mouse is in - currentMouseCell.x = floorf((mousePoint.x - bounds.x)/spacing); - currentMouseCell.y = floorf((mousePoint.y - bounds.y)/spacing); - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_DISABLED) color = GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED); - - if (subdivs > 0) - { - // Draw vertical grid lines - for (int i = 0; i < linesV; i++) - { - Rectangle lineV = { bounds.x + spacing*i/subdivs, bounds.y, 1, bounds.height + 1 }; - GuiDrawRectangle(lineV, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); - } - - // Draw horizontal grid lines - for (int i = 0; i < linesH; i++) - { - Rectangle lineH = { bounds.x, bounds.y + spacing*i/subdivs, bounds.width + 1, 1 }; - GuiDrawRectangle(lineH, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); - } - } - - if (mouseCell != NULL) *mouseCell = currentMouseCell; - return result; -} - -//---------------------------------------------------------------------------------- -// Tooltip management functions -// NOTE: Tooltips requires some global variables: tooltipPtr -//---------------------------------------------------------------------------------- -// Enable gui tooltips (global state) -void GuiEnableTooltip(void) { guiTooltip = true; } - -// Disable gui tooltips (global state) -void GuiDisableTooltip(void) { guiTooltip = false; } - -// Set tooltip string -void GuiSetTooltip(const char *tooltip) { guiTooltipPtr = tooltip; } - -//---------------------------------------------------------------------------------- -// Styles loading functions -//---------------------------------------------------------------------------------- - -// Load raygui style file (.rgs) -// NOTE: By default a binary file is expected, that file could contain a custom font, -// in that case, custom font image atlas is GRAY+ALPHA and pixel data can be compressed (DEFLATE) -void GuiLoadStyle(const char *fileName) -{ - #define MAX_LINE_BUFFER_SIZE 256 - - bool tryBinary = false; - if (!guiStyleLoaded) GuiLoadStyleDefault(); - - // Try reading the files as text file first - FILE *rgsFile = fopen(fileName, "rt"); - - if (rgsFile != NULL) - { - char buffer[MAX_LINE_BUFFER_SIZE] = { 0 }; - fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); - - if (buffer[0] == '#') - { - int controlId = 0; - int propertyId = 0; - unsigned int propertyValue = 0; - - while (!feof(rgsFile)) - { - switch (buffer[0]) - { - case 'p': - { - // Style property: p - - sscanf(buffer, "p %d %d 0x%x", &controlId, &propertyId, &propertyValue); - GuiSetStyle(controlId, propertyId, (int)propertyValue); - - } break; - case 'f': - { - // Style font: f - - int fontSize = 0; - char charmapFileName[256] = { 0 }; - char fontFileName[256] = { 0 }; - sscanf(buffer, "f %d %s %[^\r\n]s", &fontSize, charmapFileName, fontFileName); - - Font font = { 0 }; - int *codepoints = NULL; - int codepointCount = 0; - - if (charmapFileName[0] != '0') - { - // Load text data from file - // NOTE: Expected an UTF-8 array of codepoints, no separation - char *textData = LoadFileText(TextFormat("%s/%s", GetDirectoryPath(fileName), charmapFileName)); - codepoints = LoadCodepoints(textData, &codepointCount); - UnloadFileText(textData); - } - - if (fontFileName[0] != '\0') - { - // In case a font is already loaded and it is not default internal font, unload it - if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); - - if (codepointCount > 0) font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, codepoints, codepointCount); - else font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, NULL, 0); // Default to 95 standard codepoints - } - - // If font texture not properly loaded, revert to default font and size/spacing - if (font.texture.id == 0) - { - font = GetFontDefault(); - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); - } - - UnloadCodepoints(codepoints); - - if ((font.texture.id > 0) && (font.glyphCount > 0)) GuiSetFont(font); - - } break; - default: break; - } - - fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); - } - } - else tryBinary = true; - - fclose(rgsFile); - } - - if (tryBinary) - { - rgsFile = fopen(fileName, "rb"); - - if (rgsFile != NULL) - { - fseek(rgsFile, 0, SEEK_END); - int fileDataSize = ftell(rgsFile); - fseek(rgsFile, 0, SEEK_SET); - - if (fileDataSize > 0) - { - unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - if (fileData != NULL) - { - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - - GuiLoadStyleFromMemory(fileData, fileDataSize); - - RAYGUI_FREE(fileData); - } - } - - fclose(rgsFile); - } - } -} - -// Load style default over global style -void GuiLoadStyleDefault(void) -{ - // Setting this flag first to avoid cyclic function calls - // when calling GuiSetStyle() and GuiGetStyle() - guiStyleLoaded = true; - - // Initialize default LIGHT style property values - // WARNING: Default value are applied to all controls on set but - // they can be overwritten later on for every custom control - GuiSetStyle(DEFAULT, BORDER_COLOR_NORMAL, 0x838383ff); - GuiSetStyle(DEFAULT, BASE_COLOR_NORMAL, 0xc9c9c9ff); - GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0x686868ff); - GuiSetStyle(DEFAULT, BORDER_COLOR_FOCUSED, 0x5bb2d9ff); - GuiSetStyle(DEFAULT, BASE_COLOR_FOCUSED, 0xc9effeff); - GuiSetStyle(DEFAULT, TEXT_COLOR_FOCUSED, 0x6c9bbcff); - GuiSetStyle(DEFAULT, BORDER_COLOR_PRESSED, 0x0492c7ff); - GuiSetStyle(DEFAULT, BASE_COLOR_PRESSED, 0x97e8ffff); - GuiSetStyle(DEFAULT, TEXT_COLOR_PRESSED, 0x368bafff); - GuiSetStyle(DEFAULT, BORDER_COLOR_DISABLED, 0xb5c1c2ff); - GuiSetStyle(DEFAULT, BASE_COLOR_DISABLED, 0xe6e9e9ff); - GuiSetStyle(DEFAULT, TEXT_COLOR_DISABLED, 0xaeb7b8ff); - GuiSetStyle(DEFAULT, BORDER_WIDTH, 1); - GuiSetStyle(DEFAULT, TEXT_PADDING, 0); - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - // Initialize default extended property values - // NOTE: By default, extended property values are initialized to 0 - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); // DEFAULT, shared by all controls - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls - GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds - - // Initialize control-specific property values - // NOTE: Those properties are in default list but require specific values by control type - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 2); - GuiSetStyle(SLIDER, TEXT_PADDING, 4); - GuiSetStyle(PROGRESSBAR, TEXT_PADDING, 4); - GuiSetStyle(CHECKBOX, TEXT_PADDING, 4); - GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_RIGHT); - GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 0); - GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiSetStyle(TEXTBOX, TEXT_PADDING, 4); - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(VALUEBOX, TEXT_PADDING, 0); - GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(STATUSBAR, TEXT_PADDING, 8); - GuiSetStyle(STATUSBAR, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - - // Initialize extended property values - // NOTE: By default, extended property values are initialized to 0 - GuiSetStyle(TOGGLE, GROUP_PADDING, 2); - GuiSetStyle(SLIDER, SLIDER_WIDTH, 16); - GuiSetStyle(SLIDER, SLIDER_PADDING, 1); - GuiSetStyle(PROGRESSBAR, PROGRESS_PADDING, 1); - GuiSetStyle(CHECKBOX, CHECK_PADDING, 1); - GuiSetStyle(COMBOBOX, COMBO_BUTTON_WIDTH, 32); - GuiSetStyle(COMBOBOX, COMBO_BUTTON_SPACING, 2); - GuiSetStyle(DROPDOWNBOX, ARROW_PADDING, 16); - GuiSetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING, 2); - GuiSetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH, 24); - GuiSetStyle(VALUEBOX, SPINNER_BUTTON_SPACING, 2); - GuiSetStyle(SCROLLBAR, BORDER_WIDTH, 0); - GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, 0); - GuiSetStyle(SCROLLBAR, ARROWS_SIZE, 6); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING, 0); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, 16); - GuiSetStyle(SCROLLBAR, SCROLL_PADDING, 0); - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, 12); - GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, 28); - GuiSetStyle(LISTVIEW, LIST_ITEMS_SPACING, 2); - GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH, 1); - GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, 12); - GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_RIGHT_SIDE); - GuiSetStyle(COLORPICKER, COLOR_SELECTOR_SIZE, 8); - GuiSetStyle(COLORPICKER, HUEBAR_WIDTH, 16); - GuiSetStyle(COLORPICKER, HUEBAR_PADDING, 8); - GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT, 8); - GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW, 2); - - if (guiFont.texture.id != GetFontDefault().texture.id) - { - // Unload previous font texture - UnloadTexture(guiFont.texture); - RAYGUI_FREE(guiFont.recs); - RAYGUI_FREE(guiFont.glyphs); - guiFont.recs = NULL; - guiFont.glyphs = NULL; - - // Setup default raylib font - guiFont = GetFontDefault(); - - // NOTE: Default raylib font character 95 is a white square - Rectangle whiteChar = guiFont.recs[95]; - - // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering - SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); - } -} - -// Get text with icon id prepended -// NOTE: Useful to add icons by name id (enum) instead of -// a number that can change between ricon versions -const char *GuiIconText(int iconId, const char *text) -{ -#if defined(RAYGUI_NO_ICONS) - return NULL; -#else - static char buffer[1024] = { 0 }; - static char iconBuffer[16] = { 0 }; - - if (text != NULL) - { - memset(buffer, 0, 1024); - snprintf(buffer, 1024, "#%03i#", iconId); - - for (int i = 5; i < 1024; i++) - { - buffer[i] = text[i - 5]; - if (text[i - 5] == '\0') break; - } - - return buffer; - } - else - { - snprintf(iconBuffer, 16, "#%03i#", iconId); - - return iconBuffer; - } -#endif -} - -#if !defined(RAYGUI_NO_ICONS) -// Get full icons data pointer -unsigned int *GuiGetIcons(void) { return guiIconsPtr; } - -// Load raygui icons file (.rgi) -// NOTE: In case nameIds are required, they can be requested with loadIconsName, -// they are returned as a guiIconsName[iconCount][RAYGUI_ICON_MAX_NAME_LENGTH], -// WARNING: guiIconsName[]][] memory should be manually freed! -char **GuiLoadIcons(const char *fileName, bool loadIconsName) -{ - // Style File Structure (.rgi) - // ------------------------------------------------------ - // Offset | Size | Type | Description - // ------------------------------------------------------ - // 0 | 4 | char | Signature: "rGI " - // 4 | 2 | short | Version: 100 - // 6 | 2 | short | reserved - - // 8 | 2 | short | Num icons (N) - // 10 | 2 | short | Icons size (Options: 16, 32, 64) (S) - - // Icons name id (32 bytes per name id) - // foreach (icon) - // { - // 12+32*i | 32 | char | Icon NameId - // } - - // Icons data: One bit per pixel, stored as unsigned int array (depends on icon size) - // S*S pixels/32bit per unsigned int = K unsigned int per icon - // foreach (icon) - // { - // ... | K | unsigned int | Icon Data - // } - - FILE *rgiFile = fopen(fileName, "rb"); - - char **guiIconsName = NULL; - - if (rgiFile != NULL) - { - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - short iconCount = 0; - short iconSize = 0; - - fread(signature, 1, 4, rgiFile); - fread(&version, sizeof(short), 1, rgiFile); - fread(&reserved, sizeof(short), 1, rgiFile); - fread(&iconCount, sizeof(short), 1, rgiFile); - fread(&iconSize, sizeof(short), 1, rgiFile); - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'I') && - (signature[3] == ' ')) - { - if (loadIconsName) - { - guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); - for (int i = 0; i < iconCount; i++) - { - guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); - fread(guiIconsName[i], 1, RAYGUI_ICON_MAX_NAME_LENGTH, rgiFile); - } - } - else fseek(rgiFile, iconCount*RAYGUI_ICON_MAX_NAME_LENGTH, SEEK_CUR); - - // Read icons data directly over internal icons array - fread(guiIconsPtr, sizeof(unsigned int), (int)iconCount*((int)iconSize*(int)iconSize/32), rgiFile); - } - - fclose(rgiFile); - } - - return guiIconsName; -} - -// Load icons from memory -// WARNING: Binary files only -char **GuiLoadIconsFromMemory(const unsigned char *fileData, int dataSize, bool loadIconsName) -{ - unsigned char *fileDataPtr = (unsigned char *)fileData; - char **guiIconsName = NULL; - - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - short iconCount = 0; - short iconSize = 0; - - memcpy(signature, fileDataPtr, 4); - memcpy(&version, fileDataPtr + 4, sizeof(short)); - memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); - memcpy(&iconCount, fileDataPtr + 4 + 2 + 2, sizeof(short)); - memcpy(&iconSize, fileDataPtr + 4 + 2 + 2 + 2, sizeof(short)); - fileDataPtr += 12; - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'I') && - (signature[3] == ' ')) - { - if (loadIconsName) - { - guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); - for (int i = 0; i < iconCount; i++) - { - guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); - memcpy(guiIconsName[i], fileDataPtr, RAYGUI_ICON_MAX_NAME_LENGTH); - fileDataPtr += RAYGUI_ICON_MAX_NAME_LENGTH; - } - } - else - { - // Skip icon name data if not required - fileDataPtr += iconCount*RAYGUI_ICON_MAX_NAME_LENGTH; - } - - int iconDataSize = iconCount*((int)iconSize*(int)iconSize/32)*(int)sizeof(unsigned int); - guiIconsPtr = (unsigned int *)RAYGUI_CALLOC(iconDataSize, 1); - - memcpy(guiIconsPtr, fileDataPtr, iconDataSize); - } - - return guiIconsName; -} - -// Draw selected icon using rectangles pixel-by-pixel -void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color) -{ - #define BIT_CHECK(a,b) ((a) & (1u<<(b))) - - for (int i = 0, y = 0; i < RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32; i++) - { - for (int k = 0; k < 32; k++) - { - if (BIT_CHECK(guiIconsPtr[iconId*RAYGUI_ICON_DATA_ELEMENTS + i], k)) - { - #if !defined(RAYGUI_STANDALONE) - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ (float)posX + (k%RAYGUI_ICON_SIZE)*pixelSize, (float)posY + y*pixelSize, (float)pixelSize, (float)pixelSize }, 0, BLANK, color); - #endif - } - - if ((k == 15) || (k == 31)) y++; - } - } -} - -// Set icon drawing size -void GuiSetIconScale(int scale) -{ - if (scale >= 1) guiIconScale = scale; -} - -// Get text width considering gui style and icon size (if required) -int GuiGetTextWidth(const char *text) -{ - #if !defined(ICON_TEXT_PADDING) - #define ICON_TEXT_PADDING 4 - #endif - - Vector2 textSize = { 0 }; - int textIconOffset = 0; - - if ((text != NULL) && (text[0] != '\0')) - { - if (text[0] == '#') - { - for (int i = 1; (i < 5) && (text[i] != '\0'); i++) - { - if (text[i] == '#') - { - textIconOffset = i; - break; - } - } - } - - text += textIconOffset; - - // Make sure guiFont is set, GuiGetStyle() initializes it lazynessly - float fontSize = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - - // Custom MeasureText() implementation - if ((guiFont.texture.id > 0) && (text != NULL)) - { - // Get size in bytes of text, considering end of line and line break - int size = 0; - for (int i = 0; i < MAX_LINE_BUFFER_SIZE; i++) - { - if ((text[i] != '\0') && (text[i] != '\n')) size++; - else break; - } - - float scaleFactor = fontSize/(float)guiFont.baseSize; - textSize.y = (float)guiFont.baseSize*scaleFactor; - float glyphWidth = 0.0f; - - for (int i = 0, codepointSize = 0; i < size; i += codepointSize) - { - int codepoint = GetCodepointNext(&text[i], &codepointSize); - int codepointIndex = GetGlyphIndex(guiFont, codepoint); - - if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); - else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); - - textSize.x += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - } - - if (textIconOffset > 0) textSize.x += (RAYGUI_ICON_SIZE + ICON_TEXT_PADDING); - } - - return (int)textSize.x; -} - -#endif // !RAYGUI_NO_ICONS - -//---------------------------------------------------------------------------------- -// Module Internal Functions Definition -//---------------------------------------------------------------------------------- -// Load style from memory -// WARNING: Binary files only -static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize) -{ - unsigned char *fileDataPtr = (unsigned char *)fileData; - - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - int propertyCount = 0; - - memcpy(signature, fileDataPtr, 4); - memcpy(&version, fileDataPtr + 4, sizeof(short)); - memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); - memcpy(&propertyCount, fileDataPtr + 4 + 2 + 2, sizeof(int)); - fileDataPtr += 12; - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'S') && - (signature[3] == ' ')) - { - short controlId = 0; - short propertyId = 0; - unsigned int propertyValue = 0; - - for (int i = 0; i < propertyCount; i++) - { - memcpy(&controlId, fileDataPtr, sizeof(short)); - memcpy(&propertyId, fileDataPtr + 2, sizeof(short)); - memcpy(&propertyValue, fileDataPtr + 2 + 2, sizeof(unsigned int)); - fileDataPtr += 8; - - if (controlId == 0) // DEFAULT control - { - // If a DEFAULT property is loaded, it is propagated to all controls - // NOTE: All DEFAULT properties should be defined first in the file - GuiSetStyle(0, (int)propertyId, propertyValue); - - if (propertyId < RAYGUI_MAX_PROPS_BASE) for (int j = 1; j < RAYGUI_MAX_CONTROLS; j++) GuiSetStyle(j, (int)propertyId, propertyValue); - } - else GuiSetStyle((int)controlId, (int)propertyId, propertyValue); - } - - // Font loading is highly dependant on raylib API to load font data and image - -#if !defined(RAYGUI_STANDALONE) - // Load custom font if available - int fontDataSize = 0; - memcpy(&fontDataSize, fileDataPtr, sizeof(int)); - fileDataPtr += 4; - - if (fontDataSize > 0) - { - Font font = { 0 }; - int fontType = 0; // 0-Normal, 1-SDF - - memcpy(&font.baseSize, fileDataPtr, sizeof(int)); - memcpy(&font.glyphCount, fileDataPtr + 4, sizeof(int)); - memcpy(&fontType, fileDataPtr + 4 + 4, sizeof(int)); - fileDataPtr += 12; - - // Load font white rectangle - Rectangle fontWhiteRec = { 0 }; - memcpy(&fontWhiteRec, fileDataPtr, sizeof(Rectangle)); - fileDataPtr += 16; - - // Load font image parameters - int fontImageUncompSize = 0; - int fontImageCompSize = 0; - memcpy(&fontImageUncompSize, fileDataPtr, sizeof(int)); - memcpy(&fontImageCompSize, fileDataPtr + 4, sizeof(int)); - fileDataPtr += 8; - - Image imFont = { 0 }; - imFont.mipmaps = 1; - memcpy(&imFont.width, fileDataPtr, sizeof(int)); - memcpy(&imFont.height, fileDataPtr + 4, sizeof(int)); - memcpy(&imFont.format, fileDataPtr + 4 + 4, sizeof(int)); - fileDataPtr += 12; - - if ((fontImageCompSize > 0) && (fontImageCompSize != fontImageUncompSize)) - { - // Compressed font atlas image data (DEFLATE), it requires DecompressData() - int dataUncompSize = 0; - unsigned char *compData = (unsigned char *)RAYGUI_CALLOC(fontImageCompSize, sizeof(unsigned char)); - memcpy(compData, fileDataPtr, fontImageCompSize); - fileDataPtr += fontImageCompSize; - - imFont.data = DecompressData(compData, fontImageCompSize, &dataUncompSize); - - // Security check, dataUncompSize must match the provided fontImageUncompSize - if (dataUncompSize != fontImageUncompSize) RAYGUI_LOG("WARNING: Uncompressed font atlas image data could be corrupted"); - - RAYGUI_FREE(compData); - } - else - { - // Font atlas image data is not compressed - imFont.data = (unsigned char *)RAYGUI_CALLOC(fontImageUncompSize, sizeof(unsigned char)); - memcpy(imFont.data, fileDataPtr, fontImageUncompSize); - fileDataPtr += fontImageUncompSize; - } - - if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); - font.texture = LoadTextureFromImage(imFont); - - RAYGUI_FREE(imFont.data); - - // Validate font atlas texture was loaded correctly - if (font.texture.id != 0) - { - // Load font recs data - int recsDataSize = font.glyphCount*sizeof(Rectangle); - int recsDataCompressedSize = 0; - - // WARNING: Version 400 adds the compression size parameter - if (version >= 400) - { - // RGS files version 400 support compressed recs data - memcpy(&recsDataCompressedSize, fileDataPtr, sizeof(int)); - fileDataPtr += sizeof(int); - } - - if ((recsDataCompressedSize > 0) && (recsDataCompressedSize != recsDataSize)) - { - // Recs data is compressed, uncompress it - unsigned char *recsDataCompressed = (unsigned char *)RAYGUI_CALLOC(recsDataCompressedSize, sizeof(unsigned char)); - - memcpy(recsDataCompressed, fileDataPtr, recsDataCompressedSize); - fileDataPtr += recsDataCompressedSize; - - int recsDataUncompSize = 0; - font.recs = (Rectangle *)DecompressData(recsDataCompressed, recsDataCompressedSize, &recsDataUncompSize); - - // Security check, data uncompressed size must match the expected original data size - if (recsDataUncompSize != recsDataSize) RAYGUI_LOG("WARNING: Uncompressed font recs data could be corrupted"); - - RAYGUI_FREE(recsDataCompressed); - } - else - { - // Recs data is uncompressed - font.recs = (Rectangle *)RAYGUI_CALLOC(font.glyphCount, sizeof(Rectangle)); - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.recs[i], fileDataPtr, sizeof(Rectangle)); - fileDataPtr += sizeof(Rectangle); - } - } - - // Load font glyphs info data - int glyphsDataSize = font.glyphCount*16; // 16 bytes data per glyph - int glyphsDataCompressedSize = 0; - - // WARNING: Version 400 adds the compression size parameter - if (version >= 400) - { - // RGS files version 400 support compressed glyphs data - memcpy(&glyphsDataCompressedSize, fileDataPtr, sizeof(int)); - fileDataPtr += sizeof(int); - } - - // Allocate required glyphs space to fill with data - font.glyphs = (GlyphInfo *)RAYGUI_CALLOC(font.glyphCount, sizeof(GlyphInfo)); - - if ((glyphsDataCompressedSize > 0) && (glyphsDataCompressedSize != glyphsDataSize)) - { - // Glyphs data is compressed, uncompress it - unsigned char *glypsDataCompressed = (unsigned char *)RAYGUI_CALLOC(glyphsDataCompressedSize, sizeof(unsigned char)); - - memcpy(glypsDataCompressed, fileDataPtr, glyphsDataCompressedSize); - fileDataPtr += glyphsDataCompressedSize; - - int glyphsDataUncompSize = 0; - unsigned char *glyphsDataUncomp = DecompressData(glypsDataCompressed, glyphsDataCompressedSize, &glyphsDataUncompSize); - - // Security check, data uncompressed size must match the expected original data size - if (glyphsDataUncompSize != glyphsDataSize) RAYGUI_LOG("WARNING: Uncompressed font glyphs data could be corrupted"); - - unsigned char *glyphsDataUncompPtr = glyphsDataUncomp; - - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.glyphs[i].value, glyphsDataUncompPtr, sizeof(int)); - memcpy(&font.glyphs[i].offsetX, glyphsDataUncompPtr + 4, sizeof(int)); - memcpy(&font.glyphs[i].offsetY, glyphsDataUncompPtr + 8, sizeof(int)); - memcpy(&font.glyphs[i].advanceX, glyphsDataUncompPtr + 12, sizeof(int)); - glyphsDataUncompPtr += 16; - } - - RAYGUI_FREE(glypsDataCompressed); - RAYGUI_FREE(glyphsDataUncomp); - } - else - { - // Glyphs data is uncompressed - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.glyphs[i].value, fileDataPtr, sizeof(int)); - memcpy(&font.glyphs[i].offsetX, fileDataPtr + 4, sizeof(int)); - memcpy(&font.glyphs[i].offsetY, fileDataPtr + 8, sizeof(int)); - memcpy(&font.glyphs[i].advanceX, fileDataPtr + 12, sizeof(int)); - fileDataPtr += 16; - } - } - } - else font = GetFontDefault(); // Fallback in case of errors loading font atlas texture - - GuiSetFont(font); - - // Set font texture source rectangle to be used as white texture to draw shapes - // NOTE: It makes possible to draw shapes and text (full UI) in a single draw call - if ((fontWhiteRec.x > 0) && - (fontWhiteRec.y > 0) && - (fontWhiteRec.width > 0) && - (fontWhiteRec.height > 0)) SetShapesTexture(font.texture, fontWhiteRec); - } -#endif - } -} - -// Get text bounds considering control bounds -static Rectangle GetTextBounds(int control, Rectangle bounds) -{ - Rectangle textBounds = bounds; - - textBounds.x = bounds.x + GuiGetStyle(control, BORDER_WIDTH); - textBounds.y = bounds.y + GuiGetStyle(control, BORDER_WIDTH) + GuiGetStyle(control, TEXT_PADDING); - textBounds.width = bounds.width - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); - textBounds.height = bounds.height - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); // NOTE: Text is processed line per line! - - // Depending on control, TEXT_PADDING and TEXT_ALIGNMENT properties could affect the text-bounds - switch (control) - { - case COMBOBOX: - case DROPDOWNBOX: - case LISTVIEW: - // TODO: Special cases (no label): COMBOBOX, DROPDOWNBOX, LISTVIEW - case SLIDER: - case CHECKBOX: - case VALUEBOX: - case CONTROL11: - // TODO: More special cases (label on side): SLIDER, CHECKBOX, VALUEBOX, SPINNER - default: - { - // TODO: WARNING: TEXT_ALIGNMENT is already considered in GuiDrawText() - if (GuiGetStyle(control, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT) textBounds.x -= GuiGetStyle(control, TEXT_PADDING); - else textBounds.x += GuiGetStyle(control, TEXT_PADDING); - } - break; - } - - return textBounds; -} - -// Get text icon if provided and move text cursor -// NOTE: Up to #999# values supported for iconId -static const char *GetTextIcon(const char *text, int *iconId) -{ -#if !defined(RAYGUI_NO_ICONS) - *iconId = -1; - if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found - { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' - - int pos = 1; - while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) - { - iconValue[pos - 1] = text[pos]; - pos++; - } - - if (text[pos] == '#') - { - *iconId = TextToInteger(iconValue); - - // Move text pointer after icon - // WARNING: If only icon provided, it could point to EOL character: '\0' - if (*iconId >= 0) text += (pos + 1); - } - } -#endif - - return text; -} - -// Get text divided into lines (by line-breaks '\n') -// WARNING: It returns pointers to new lines but it does not add NULL ('\0') terminator! -static const char **GetTextLines(const char *text, int *count) -{ - #define RAYGUI_MAX_TEXT_LINES 128 - - static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; - for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - - int textLength = (int)strlen(text); - - lines[0] = text; - *count = 1; - - for (int i = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) - { - if ((text[i] == '\n') && ((i + 1) < textLength)) - { - lines[*count] = &text[i + 1]; - *count += 1; - } - } - - return lines; -} - -// Get text width to next space for provided string -static float GetNextSpaceWidth(const char *text, int *nextSpaceIndex) -{ - float width = 0; - int codepointByteCount = 0; - int codepoint = 0; - int index = 0; - float glyphWidth = 0; - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; - - for (int i = 0; text[i] != '\0'; i++) - { - if (text[i] != ' ') - { - codepoint = GetCodepoint(&text[i], &codepointByteCount); - index = GetGlyphIndex(guiFont, codepoint); - glyphWidth = (guiFont.glyphs[index].advanceX == 0)? guiFont.recs[index].width*scaleFactor : guiFont.glyphs[index].advanceX*scaleFactor; - width += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - else - { - *nextSpaceIndex = i; - break; - } - } - - return width; -} - -// Gui draw text using default font -static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint) -{ - #define TEXT_VALIGN_PIXEL_OFFSET(h) ((int)h%2) // Vertical alignment for pixel perfect - - #if !defined(ICON_TEXT_PADDING) - #define ICON_TEXT_PADDING 4 - #endif - - if ((text == NULL) || (text[0] == '\0')) return; // Security check - - // PROCEDURE: - // - Text is processed line per line - // - For every line, horizontal alignment is defined - // - For all text, vertical alignment is defined (multiline text only) - // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) - - // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: GuiTextSplit() function can't be used now because it can have already been used - // before the GuiDrawText() call and its buffer is static, it would be overriden :( - int lineCount = 0; - const char **lines = GetTextLines(text, &lineCount); - - // Text style variables - //int alignment = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT); - int alignmentVertical = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL); - int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing - - // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - float posOffsetY = 0.0f; - - for (int i = 0; i < lineCount; i++) - { - int iconId = 0; - lines[i] = GetTextIcon(lines[i], &iconId); // Check text for icon and move cursor - - // Get text position depending on alignment and iconId - //--------------------------------------------------------------------------------- - Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; - float textBoundsWidthOffset = 0.0f; - - // NOTE: Get text size after icon has been processed - // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? - int textSizeX = GuiGetTextWidth(lines[i]); - - // If text requires an icon, add size to measure - if (iconId >= 0) - { - textSizeX += RAYGUI_ICON_SIZE*guiIconScale; - - // WARNING: If only icon provided, text could be pointing to EOF character: '\0' -#if !defined(RAYGUI_NO_ICONS) - if ((lines[i] != NULL) && (lines[i][0] != '\0')) textSizeX += ICON_TEXT_PADDING; -#endif - } - - // Check guiTextAlign global variables - switch (alignment) - { - case TEXT_ALIGN_LEFT: textBoundsPosition.x = textBounds.x; break; - case TEXT_ALIGN_CENTER: textBoundsPosition.x = textBounds.x + textBounds.width/2 - textSizeX/2; break; - case TEXT_ALIGN_RIGHT: textBoundsPosition.x = textBounds.x + textBounds.width - textSizeX; break; - default: break; - } - - if (textSizeX > textBounds.width && (lines[i] != NULL) && (lines[i][0] != '\0')) textBoundsPosition.x = textBounds.x; - - switch (alignmentVertical) - { - // Only valid in case of wordWrap = 0; - case TEXT_ALIGN_TOP: textBoundsPosition.y = textBounds.y + posOffsetY; break; - case TEXT_ALIGN_MIDDLE: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height/2 - totalHeight/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; - case TEXT_ALIGN_BOTTOM: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height - totalHeight + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; - default: break; - } - - // NOTE: Make sure getting pixel-perfect coordinates, - // In case of decimals, it could result in text positioning artifacts - textBoundsPosition.x = (float)((int)textBoundsPosition.x); - textBoundsPosition.y = (float)((int)textBoundsPosition.y); - //--------------------------------------------------------------------------------- - - // Draw text (with icon if available) - //--------------------------------------------------------------------------------- -#if !defined(RAYGUI_NO_ICONS) - if (iconId >= 0) - { - // NOTE: Considering icon height, probably different than text size - GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); - textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); - textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); - } -#endif - // Get size in bytes of text, - // considering end of line and line break - int lineSize = 0; - for (int c = 0; (lines[i][c] != '\0') && (lines[i][c] != '\n') && (lines[i][c] != '\r'); c++, lineSize++){ } - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; - - int lastSpaceIndex = 0; - bool tempWrapCharMode = false; - - int textOffsetY = 0; - float textOffsetX = 0.0f; - float glyphWidth = 0; - - int ellipsisWidth = GuiGetTextWidth("..."); - bool textOverflow = false; - for (int c = 0, codepointSize = 0; c < lineSize; c += codepointSize) - { - int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); - int index = GetGlyphIndex(guiFont, codepoint); - - // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte - if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size - - // Get glyph width to check if it goes out of bounds - if (guiFont.glyphs[index].advanceX == 0) glyphWidth = ((float)guiFont.recs[index].width*scaleFactor); - else glyphWidth = (float)guiFont.glyphs[index].advanceX*scaleFactor; - - // Wrap mode text measuring, to validate if - // it can be drawn or a new line is required - if (wrapMode == TEXT_WRAP_CHAR) - { - // Jump to next line if current character reach end of the box limits - if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) - { - textOffsetX = 0.0f; - textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - - if (tempWrapCharMode) // Wrap at char level when too long words - { - wrapMode = TEXT_WRAP_WORD; - tempWrapCharMode = false; - } - } - } - else if (wrapMode == TEXT_WRAP_WORD) - { - if (codepoint == 32) lastSpaceIndex = c; - - // Get width to next space in line - int nextSpaceIndex = 0; - float nextSpaceWidth = GetNextSpaceWidth(lines[i] + c, &nextSpaceIndex); - - int nextSpaceIndex2 = 0; - float nextWordSize = GetNextSpaceWidth(lines[i] + lastSpaceIndex + 1, &nextSpaceIndex2); - - if (nextWordSize > textBounds.width - textBoundsWidthOffset) - { - // Considering the case the next word is longer than bounds - tempWrapCharMode = true; - wrapMode = TEXT_WRAP_CHAR; - } - else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) - { - textOffsetX = 0.0f; - textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - } - } - - if (codepoint == '\n') break; // WARNING: Lines are already processed manually, no need to keep drawing after this codepoint - else - { - // TODO: There are multiple types of spaces in Unicode, - // maybe it's a good idea to add support for more: http://jkorpela.fi/chars/spaces.html - if ((codepoint != ' ') && (codepoint != '\t')) // Do not draw codepoints with no glyph - { - if (wrapMode == TEXT_WRAP_NONE) - { - // Draw only required text glyphs fitting the textBounds.width - if (textSizeX > textBounds.width) - { - if (textOffsetX <= (textBounds.width - glyphWidth - textBoundsWidthOffset - ellipsisWidth)) - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - else if (!textOverflow) - { - textOverflow = true; - - for (int j = 0; j < ellipsisWidth; j += ellipsisWidth/3) - { - DrawTextCodepoint(guiFont, '.', RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX + j, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - } - else - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) - { - // Draw only glyphs inside the bounds - if ((textBoundsPosition.y + textOffsetY) <= (textBounds.y + textBounds.height - GuiGetStyle(DEFAULT, TEXT_SIZE))) - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - } - - if (guiFont.glyphs[index].advanceX == 0) textOffsetX += ((float)guiFont.recs[index].width*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - else textOffsetX += ((float)guiFont.glyphs[index].advanceX*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - } - - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - //--------------------------------------------------------------------------------- - } - -#if defined(RAYGUI_DEBUG_TEXT_BOUNDS) - GuiDrawRectangle(textBounds, 0, WHITE, Fade(BLUE, 0.4f)); -#endif -} - -// Gui draw rectangle using default raygui plain style with borders -static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color) -{ - if (color.a > 0) - { - // Draw rectangle filled with color - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, GuiFade(color, guiAlpha)); - } - - if (borderWidth > 0) - { - // Draw rectangle border lines with color - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x + (int)rec.width - borderWidth, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x, (int)rec.y + (int)rec.height - borderWidth, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); - } - -#if defined(RAYGUI_DEBUG_RECS_BOUNDS) - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, Fade(RED, 0.4f)); -#endif -} - -// Draw tooltip using control bounds -static void GuiTooltip(Rectangle controlRec) -{ - if (!guiLocked && guiTooltip && (guiTooltipPtr != NULL) && !guiControlExclusiveMode) - { - Vector2 textSize = MeasureTextEx(GuiGetFont(), guiTooltipPtr, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - - if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - - int lineCount = 0; - GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count - if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) - controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); - - // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); - - int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); - int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_PADDING, 0); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); - GuiSetStyle(LABEL, TEXT_PADDING, textPadding); - } -} - -// Split controls text into multiple strings -// Also check for multiple columns (required by GuiToggleGroup()) -static char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow) -{ - // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) - // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, - // all used memory is static... it has some limitations: - // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS - // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE - // NOTE: Those definitions could be externally provided if required - - // TODO: HACK: GuiTextSplit() - Review how textRows are returned to user - // textRow is an externally provided array of integers that stores row number for every splitted string - - #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) - #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 - #endif - #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) - #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 - #endif - - static char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; // String pointers array (points to buffer data) - static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; // Buffer data (text input copy with '\0' added) - memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); - - result[0] = buffer; - int counter = 1; - - if (textRow != NULL) textRow[0] = 0; - - // Count how many substrings text contains and point to every one of them - for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) - { - buffer[i] = text[i]; - if (buffer[i] == '\0') break; - else if ((buffer[i] == delimiter) || (buffer[i] == '\n')) - { - result[counter] = buffer + i + 1; - - if (textRow != NULL) - { - if (buffer[i] == '\n') textRow[counter] = textRow[counter - 1] + 1; - else textRow[counter] = textRow[counter - 1]; - } - - buffer[i] = '\0'; // Set an end of string at this point - - counter++; - if (counter >= RAYGUI_TEXTSPLIT_MAX_ITEMS) break; - } - } - - *count = counter; - - return result; -} - -// Convert color data from RGB to HSV -// NOTE: Color data should be passed normalized -static Vector3 ConvertRGBtoHSV(Vector3 rgb) -{ - Vector3 hsv = { 0 }; - float min = 0.0f; - float max = 0.0f; - float delta = 0.0f; - - min = (rgb.x < rgb.y)? rgb.x : rgb.y; - min = (min < rgb.z)? min : rgb.z; - - max = (rgb.x > rgb.y)? rgb.x : rgb.y; - max = (max > rgb.z)? max : rgb.z; - - hsv.z = max; // Value - delta = max - min; - - if (delta < 0.00001f) - { - hsv.y = 0.0f; - hsv.x = 0.0f; // Undefined, maybe NAN? - return hsv; - } - - if (max > 0.0f) - { - // NOTE: If max is 0, this divide would cause a crash - hsv.y = (delta/max); // Saturation - } - else - { - // NOTE: If max is 0, then r = g = b = 0, s = 0, h is undefined - hsv.y = 0.0f; - hsv.x = 0.0f; // Undefined, maybe NAN? - return hsv; - } - - // NOTE: Comparing float values could not work properly - if (rgb.x >= max) hsv.x = (rgb.y - rgb.z)/delta; // Between yellow & magenta - else - { - if (rgb.y >= max) hsv.x = 2.0f + (rgb.z - rgb.x)/delta; // Between cyan & yellow - else hsv.x = 4.0f + (rgb.x - rgb.y)/delta; // Between magenta & cyan - } - - hsv.x *= 60.0f; // Convert to degrees - - if (hsv.x < 0.0f) hsv.x += 360.0f; - - return hsv; -} - -// Convert color data from HSV to RGB -// NOTE: Color data should be passed normalized -static Vector3 ConvertHSVtoRGB(Vector3 hsv) -{ - Vector3 rgb = { 0 }; - float hh = 0.0f, p = 0.0f, q = 0.0f, t = 0.0f, ff = 0.0f; - long i = 0; - - // NOTE: Comparing float values could not work properly - if (hsv.y <= 0.0f) - { - rgb.x = hsv.z; - rgb.y = hsv.z; - rgb.z = hsv.z; - return rgb; - } - - hh = hsv.x; - if (hh >= 360.0f) hh = 0.0f; - hh /= 60.0f; - - i = (long)hh; - ff = hh - i; - p = hsv.z*(1.0f - hsv.y); - q = hsv.z*(1.0f - (hsv.y*ff)); - t = hsv.z*(1.0f - (hsv.y*(1.0f - ff))); - - switch (i) - { - case 0: - { - rgb.x = hsv.z; - rgb.y = t; - rgb.z = p; - } break; - case 1: - { - rgb.x = q; - rgb.y = hsv.z; - rgb.z = p; - } break; - case 2: - { - rgb.x = p; - rgb.y = hsv.z; - rgb.z = t; - } break; - case 3: - { - rgb.x = p; - rgb.y = q; - rgb.z = hsv.z; - } break; - case 4: - { - rgb.x = t; - rgb.y = p; - rgb.z = hsv.z; - } break; - case 5: - default: - { - rgb.x = hsv.z; - rgb.y = p; - rgb.z = q; - } break; - } - - return rgb; -} - -// Scroll bar control (used by GuiScrollPanel()) -static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) -{ - GuiState state = guiState; - - // Is the scrollbar horizontal or vertical? - bool isVertical = (bounds.width > bounds.height)? false : true; - - // The size (width or height depending on scrollbar type) of the spinner buttons - const int spinnerSize = GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)? - (isVertical? (int)bounds.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) : - (int)bounds.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH)) : 0; - - // Arrow buttons [<] [>] [∧] [∨] - Rectangle arrowUpLeft = { 0 }; - Rectangle arrowDownRight = { 0 }; - - // Actual area of the scrollbar excluding the arrow buttons - Rectangle scrollbar = { 0 }; - - // Slider bar that moves --[///]----- - Rectangle slider = { 0 }; - - // Normalize value - if (value > maxValue) value = maxValue; - if (value < minValue) value = minValue; - - int valueRange = maxValue - minValue; - if (valueRange <= 0) valueRange = 1; - - int sliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); - if (sliderSize < 1) sliderSize = 1; // TODO: Consider a minimum slider size - - // Calculate rectangles for all of the components - arrowUpLeft = RAYGUI_CLITERAL(Rectangle){ - (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), - (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), - (float)spinnerSize, (float)spinnerSize }; - - if (isVertical) - { - arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + bounds.height - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; - scrollbar = RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), arrowUpLeft.y + arrowUpLeft.height, bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)), bounds.height - arrowUpLeft.height - arrowDownRight.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) }; - - // Make sure the slider won't get outside of the scrollbar - sliderSize = (sliderSize >= scrollbar.height)? ((int)scrollbar.height - 2) : sliderSize; - slider = RAYGUI_CLITERAL(Rectangle){ - bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), - scrollbar.y + (int)(((float)(value - minValue)/valueRange)*(scrollbar.height - sliderSize)), - bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)), - (float)sliderSize }; - } - else // horizontal - { - arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + bounds.width - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; - scrollbar = RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x + arrowUpLeft.width, bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), bounds.width - arrowUpLeft.width - arrowDownRight.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH), bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)) }; - - // Make sure the slider won't get outside of the scrollbar - sliderSize = (sliderSize >= scrollbar.width)? ((int)scrollbar.width - 2) : sliderSize; - slider = RAYGUI_CLITERAL(Rectangle){ - scrollbar.x + (int)(((float)(value - minValue)/valueRange)*(scrollbar.width - sliderSize)), - bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), - (float)sliderSize, - bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)) }; - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN && - !CheckCollisionPointRec(mousePoint, arrowUpLeft) && - !CheckCollisionPointRec(mousePoint, arrowDownRight)) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); - else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - - // Handle mouse wheel - float scrollDelta = GUI_SCROLL_DELTA; - if (scrollDelta != 0) value += (int)scrollDelta; - - // Handle mouse button down - if (GUI_BUTTON_PRESSED) - { - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - // Check arrows click - if (CheckCollisionPointRec(mousePoint, arrowUpLeft)) value -= valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - else if (CheckCollisionPointRec(mousePoint, arrowDownRight)) value += valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - else if (!CheckCollisionPointRec(mousePoint, slider)) - { - // If click on scrollbar position but not on slider, place slider directly on that position - if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); - else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); - } - - state = STATE_PRESSED; - } - - // Keyboard control on mouse hover scrollbar - /* - if (isVertical) - { - if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; - else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; - } - else - { - if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; - else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; - } - */ - } - - // Normalize value - if (value > maxValue) value = maxValue; - if (value < minValue) value = minValue; - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SCROLLBAR, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED))); // Draw the background - - GuiDrawRectangle(scrollbar, 0, BLANK, GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL))); // Draw the scrollbar active area background - GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BORDER + state*3))); // Draw the slider bar - - // Draw arrows (using icon if available) - if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)) - { -#if defined(RAYGUI_NO_ICONS) - GuiDrawText(isVertical? "^" : "<", - RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); - GuiDrawText(isVertical? "v" : ">", - RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); -#else - GuiDrawText(isVertical? "#121#" : "#118#", - RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_UP_FILL / ICON_ARROW_LEFT_FILL - GuiDrawText(isVertical? "#120#" : "#119#", - RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_DOWN_FILL / ICON_ARROW_RIGHT_FILL -#endif - } - //-------------------------------------------------------------------- - - return value; -} - -// Color fade-in or fade-out, alpha goes from 0.0f to 1.0f -// WARNING: It multiplies current alpha by alpha scale factor -static Color GuiFade(Color color, float alpha) -{ - if (alpha < 0.0f) alpha = 0.0f; - else if (alpha > 1.0f) alpha = 1.0f; - - Color result = { color.r, color.g, color.b, (unsigned char)(color.a*alpha) }; - - return result; -} - -#if defined(RAYGUI_STANDALONE) -// Returns a Color struct from hexadecimal value -static Color GetColor(int hexValue) -{ - Color color; - - color.r = (unsigned char)(hexValue >> 24) & 0xff; - color.g = (unsigned char)(hexValue >> 16) & 0xff; - color.b = (unsigned char)(hexValue >> 8) & 0xff; - color.a = (unsigned char)hexValue & 0xff; - - return color; -} - -// Returns hexadecimal value for a Color -static int ColorToInt(Color color) -{ - return (((int)color.r << 24) | ((int)color.g << 16) | ((int)color.b << 8) | (int)color.a); -} - -// Check if point is inside rectangle -static bool CheckCollisionPointRec(Vector2 point, Rectangle rec) -{ - bool collision = false; - - if ((point.x >= rec.x) && (point.x <= (rec.x + rec.width)) && - (point.y >= rec.y) && (point.y <= (rec.y + rec.height))) collision = true; - - return collision; -} - -// Formatting of text with variables to 'embed' -static const char *TextFormat(const char *text, ...) -{ - #if !defined(RAYGUI_TEXTFORMAT_MAX_SIZE) - #define RAYGUI_TEXTFORMAT_MAX_SIZE 256 - #endif - - static char buffer[RAYGUI_TEXTFORMAT_MAX_SIZE]; - - va_list args; - va_start(args, text); - vsnprintf(buffer, RAYGUI_TEXTFORMAT_MAX_SIZE, text, args); - va_end(args); - - return buffer; -} - -// Draw rectangle with vertical gradient fill color -// NOTE: This function is only used by GuiColorPicker() -static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2) -{ - Rectangle bounds = { (float)posX, (float)posY, (float)width, (float)height }; - DrawRectangleGradientEx(bounds, color1, color2, color2, color1); -} - -// Split string into multiple strings -char **TextSplit(const char *text, char delimiter, int *count) -{ - // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) - // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, - // all used memory is static... it has some limitations: - // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS - // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE - - #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) - #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 - #endif - #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) - #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 - #endif - - static const char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; - static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; - memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); - - result[0] = buffer; - int counter = 0; - - if (text != NULL) - { - counter = 1; - - // Count how many substrings text contains and point to every one of them - for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) - { - buffer[i] = text[i]; - if (buffer[i] == '\0') break; - else if (buffer[i] == delimiter) - { - buffer[i] = '\0'; // Set an end of string at this point - result[counter] = buffer + i + 1; - counter++; - - if (counter == RAYGUI_TEXTSPLIT_MAX_ITEMS) break; - } - } - } - - *count = counter; - return result; -} - -// Get integer value from text -// NOTE: This function replaces atoi() [stdlib.h] -static int TextToInteger(const char *text) -{ - int value = 0; - int sign = 1; - - if ((text[0] == '+') || (text[0] == '-')) - { - if (text[0] == '-') sign = -1; - text++; - } - - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); - - return value*sign; -} - -// Get float value from text -// NOTE: This function replaces atof() [stdlib.h] -// WARNING: Only '.' character is understood as decimal point -static float TextToFloat(const char *text) -{ - float value = 0.0f; - float sign = 1.0f; - - if ((text[0] == '+') || (text[0] == '-')) - { - if (text[0] == '-') sign = -1.0f; - text++; - } - - int i = 0; - for (; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10.0f + (float)(text[i] - '0'); - - if (text[i++] != '.') value *= sign; - else - { - float divisor = 10.0f; - for (; ((text[i] >= '0') && (text[i] <= '9')); i++) - { - value += ((float)(text[i] - '0'))/divisor; - divisor = divisor*10.0f; - } - } - - return value; -} - -// Encode codepoint into UTF-8 text (char array size returned as parameter) -static const char *CodepointToUTF8(int codepoint, int *byteSize) -{ - static char utf8[6] = { 0 }; - int size = 0; - - if (codepoint <= 0x7f) - { - utf8[0] = (char)codepoint; - size = 1; - } - else if (codepoint <= 0x7ff) - { - utf8[0] = (char)(((codepoint >> 6) & 0x1f) | 0xc0); - utf8[1] = (char)((codepoint & 0x3f) | 0x80); - size = 2; - } - else if (codepoint <= 0xffff) - { - utf8[0] = (char)(((codepoint >> 12) & 0x0f) | 0xe0); - utf8[1] = (char)(((codepoint >> 6) & 0x3f) | 0x80); - utf8[2] = (char)((codepoint & 0x3f) | 0x80); - size = 3; - } - else if (codepoint <= 0x10ffff) - { - utf8[0] = (char)(((codepoint >> 18) & 0x07) | 0xf0); - utf8[1] = (char)(((codepoint >> 12) & 0x3f) | 0x80); - utf8[2] = (char)(((codepoint >> 6) & 0x3f) | 0x80); - utf8[3] = (char)((codepoint & 0x3f) | 0x80); - size = 4; - } - - *byteSize = size; - - return utf8; -} - -// Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint -// Total number of bytes processed are returned as a parameter -// NOTE: The standard says U+FFFD should be returned in case of errors -// but that character is not supported by the default font in raylib -static int GetCodepointNext(const char *text, int *codepointSize) -{ - const char *ptr = text; - int codepoint = 0x3f; // Codepoint (defaults to '?') - *codepointSize = 1; - - // Get current codepoint and bytes processed - if (0xf0 == (0xf8 & ptr[0])) - { - // 4 byte UTF-8 codepoint - if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80) || ((ptr[3] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks - codepoint = ((0x07 & ptr[0]) << 18) | ((0x3f & ptr[1]) << 12) | ((0x3f & ptr[2]) << 6) | (0x3f & ptr[3]); - *codepointSize = 4; - } - else if (0xe0 == (0xf0 & ptr[0])) - { - // 3 byte UTF-8 codepoint - if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks - codepoint = ((0x0f & ptr[0]) << 12) | ((0x3f & ptr[1]) << 6) | (0x3f & ptr[2]); - *codepointSize = 3; - } - else if (0xc0 == (0xe0 & ptr[0])) - { - // 2 byte UTF-8 codepoint - if ((ptr[1] & 0xC0) ^ 0x80) { return codepoint; } //10xxxxxx checks - codepoint = ((0x1f & ptr[0]) << 6) | (0x3f & ptr[1]); - *codepointSize = 2; - } - else if (0x00 == (0x80 & ptr[0])) - { - // 1 byte UTF-8 codepoint - codepoint = ptr[0]; - *codepointSize = 1; - } - - return codepoint; -} -#endif // RAYGUI_STANDALONE - -#endif // RAYGUI_IMPLEMENTATION diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/LICENSE.md b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/LICENSE.md deleted file mode 100644 index 67e6584..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/LICENSE.md +++ /dev/null @@ -1,10 +0,0 @@ -| resource | author | licence | notes | -| :------------------- | :---------: | :------ | :---- | -| country.mp3 | [@emegeme](https://github.com/emegeme) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | Originally created for "DART that TARGET" game | -| target.ogg | [@emegeme](https://github.com/emegeme) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | Originally created for "DART that TARGET" game | -| target.flac | [@emegeme](https://github.com/emegeme) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | Originally created for "DART that TARGET" game | -| coin.wav | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | Made with [rFXGen](https://raylibtech.itch.io/rfxgen) | -| sound.wav | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | Made with [rFXGen](https://raylibtech.itch.io/rfxgen) | -| spring.wav | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | Made with [rFXGen](https://raylibtech.itch.io/rfxgen) | -| weird.wav | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | Made with [rFXGen](https://raylibtech.itch.io/rfxgen) | -| mini1111.xm | [tPORt](https://modarchive.org/index.php?request=view_by_moduleid&query=51891) | [Mod Archive Distribution license](https://modarchive.org/index.php?terms-upload) | - | diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/coin.wav b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/coin.wav deleted file mode 100644 index ad95bfb..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/coin.wav and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/country.mp3 b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/country.mp3 deleted file mode 100644 index 91066cc..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/country.mp3 and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/mini1111.xm b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/mini1111.xm deleted file mode 100644 index a185c1a..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/mini1111.xm and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/shaders/glsl100/fft.fs b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/shaders/glsl100/fft.fs deleted file mode 100644 index 15f6fef..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/shaders/glsl100/fft.fs +++ /dev/null @@ -1,37 +0,0 @@ -#version 100 - -precision mediump float; - -// Input vertex attributes (from vertex shader) -varying vec2 fragTexCoord; -varying vec4 fragColor; - -// Input uniform values -uniform vec2 iResolution; -uniform sampler2D iChannel0; - -const vec4 BLACK = vec4(0.0, 0.0, 0.0, 1.0); -const vec4 WHITE = vec4(1.0, 1.0, 1.0, 1.0); -const float FFT_ROW = 0.0; -const float NUM_OF_BINS = 512.0; - -void main() -{ - vec2 fragCoord = fragTexCoord*iResolution; - float cellWidth = iResolution.x/NUM_OF_BINS; - float binIndex = floor(fragCoord.x/cellWidth); - float localX = mod(fragCoord.x, cellWidth); - float barWidth = cellWidth - 1.0; - vec4 color = WHITE; - - if (localX <= barWidth) - { - float sampleX = (binIndex + 0.5)/NUM_OF_BINS; - vec2 sampleCoord = vec2(sampleX, FFT_ROW); - float amplitude = texture2D(iChannel0, sampleCoord).r; // Only filled the red channel, all channels left open for alternative use - - if (fragTexCoord.y < amplitude) color = BLACK; - } - - gl_FragColor = color; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/shaders/glsl120/fft.fs b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/shaders/glsl120/fft.fs deleted file mode 100644 index 3048d6c..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/shaders/glsl120/fft.fs +++ /dev/null @@ -1,35 +0,0 @@ -#version 120 - -// Input vertex attributes (from vertex shader) -varying vec2 fragTexCoord; -varying vec4 fragColor; - -// Input uniform values -uniform vec2 iResolution; -uniform sampler2D iChannel0; - -const vec4 BLACK = vec4(0.0, 0.0, 0.0, 1.0); -const vec4 WHITE = vec4(1.0, 1.0, 1.0, 1.0); -const float FFT_ROW = 0.0; -const float NUM_OF_BINS = 512.0; - -void main() -{ - vec2 fragCoord = fragTexCoord*iResolution; - float cellWidth = iResolution.x/NUM_OF_BINS; - float binIndex = floor(fragCoord.x/cellWidth); - float localX = mod(fragCoord.x, cellWidth); - float barWidth = cellWidth - 1.0; - vec4 color = WHITE; - - if (localX <= barWidth) - { - float sampleX = (binIndex + 0.5)/NUM_OF_BINS; - vec2 sampleCoord = vec2(sampleX, FFT_ROW); - float amplitude = texture2D(iChannel0, sampleCoord).r; // Only filled the red channel, all channels left open for alternative use - - if (fragTexCoord.y < amplitude) color = BLACK; - } - - gl_FragColor = color; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/shaders/glsl330/fft.fs b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/shaders/glsl330/fft.fs deleted file mode 100644 index f355ced..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/shaders/glsl330/fft.fs +++ /dev/null @@ -1,35 +0,0 @@ -#version 330 - -in vec2 fragTexCoord; -in vec4 fragColor; - -out vec4 finalColor; - -uniform vec2 iResolution; -uniform sampler2D iChannel0; - -const vec4 BLACK = vec4(0.0, 0.0, 0.0, 1.0); -const vec4 WHITE = vec4(1.0, 1.0, 1.0, 1.0); -const float FFT_ROW = 0.0; -const float NUM_OF_BINS = 512.0; - -void main() -{ - vec2 fragCoord = fragTexCoord*iResolution; - float cellWidth = iResolution.x/NUM_OF_BINS; - float binIndex = floor(fragCoord.x/cellWidth); - float localX = mod(fragCoord.x, cellWidth); - float barWidth = cellWidth - 1.0; - vec4 color = WHITE; - - if (localX <= barWidth) - { - float sampleX = (binIndex + 0.5)/NUM_OF_BINS; - vec2 sampleCoord = vec2(sampleX, FFT_ROW); - float amplitude = texture(iChannel0, sampleCoord).r; // Only filled the red channel, all channels left open for alternative use - - if (fragTexCoord.y < amplitude) color = BLACK; - } - - finalColor = color; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/sound.wav b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/sound.wav deleted file mode 100644 index b5d01c9..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/sound.wav and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/spring.wav b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/spring.wav deleted file mode 100644 index b6f17f1..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/spring.wav and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/target.flac b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/target.flac deleted file mode 100644 index 5fad22c..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/target.flac and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/target.ogg b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/target.ogg deleted file mode 100644 index 2b73e1c..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/target.ogg and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/target.qoa b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/target.qoa deleted file mode 100644 index d48c4f9..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/target.qoa and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/weird.wav b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/weird.wav deleted file mode 100644 index f5c8f55..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/audio/resources/weird.wav and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/build_example_web.bat b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/build_example_web.bat deleted file mode 100644 index 3162538..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/build_example_web.bat +++ /dev/null @@ -1,44 +0,0 @@ -::@echo off -:: . -:: Compile your examples for web using: build_example_web.bat / -:: . -SET "INPUT_FILE=%1" -:: Change delimiter for the FOR loop -FOR /f "tokens=1-10 delims=/" %%a IN ("%INPUT_FILE%") DO ( - SET CATEGORY=%%a - SET FILENAME=%%b -) -:: > SETup required Environment -:: ------------------------------------- -SET RAYLIB_PATH=C:\GitHub\raylib -SET EMSDK_PATH=C:\raylib\emsdk -SET COMPILER_PATH=C:\raylib\w64devkit\bin -ENV_SET PATH=%COMPILER_PATH% -SET MAKE=mingw32-make -echo -:: Set required web compilation options -:: ------------------------------------- -::SET CC=%EMSDK_PATH%\upstream\emscripten\emcc -::SET CFLAGS=-Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -O3 -I. -Iexternal -I%RAYLIB_PATH%\src -I%RAYLIB_PATH%\external -DPLATFORM_WEB -::SET LDFLAGS=-L. -L$(RAYLIB_PATH)\src -sUSE_GLFW=3 -sEXPORTED_RUNTIME_METHODS=ccall -sASYNCIFY --shell-file %RAYLIB_PATH%\src\shell.html -::SET LDLIBS=%RAYLIB_PATH%\src\libraylib.web.a -echo -:: Clean latest build -:: ------------------------ -cmd /c if exist %FILENAME%.html del /F %FILENAME%.html -cmd /c if exist %FILENAME%.wasm del /F %FILENAME%.wasm -cmd /c if exist %FILENAME%.js del /F %FILENAME%.js -cmd /c if exist %FILENAME%.data del /F %FILENAME%.data -echo -:: Setup emsdk environment -:: -------------------------- -call %EMSDK_PATH%\emsdk_env.bat -echo on -:: Compile program -:: ----------------------- -C: -cd %RAYLIB_PATH%\examples -%MAKE% -f Makefile.Web %CATEGORY%/%FILENAME% PLATFORM=PLATFORM_WEB -B -::%CC% -o %FILENAME%.html %FILENAME%.c %CFLAGS% %LDFLAGS% %LDLIBS% %RESOURCES% -cd .. -echo diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera.c deleted file mode 100644 index 7e5a14a..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera.c +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 2d camera -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.5, last time updated with raylib 3.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2016-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" -#include - -#define MAX_BUILDINGS 100 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera"); - - Rectangle player = { 400, 280, 40, 40 }; - Rectangle buildings[MAX_BUILDINGS] = { 0 }; - Color buildColors[MAX_BUILDINGS] = { 0 }; - - int spacing = 0; - - for (int i = 0; i < MAX_BUILDINGS; i++) - { - buildings[i].width = (float)GetRandomValue(50, 200); - buildings[i].height = (float)GetRandomValue(100, 800); - buildings[i].y = screenHeight - 130.0f - buildings[i].height; - buildings[i].x = -6000.0f + spacing; - - spacing += (int)buildings[i].width; - - buildColors[i] = (Color){ - (unsigned char)GetRandomValue(200, 240), - (unsigned char)GetRandomValue(200, 240), - (unsigned char)GetRandomValue(200, 250), - 255}; - } - - Camera2D camera = { 0 }; - camera.target = (Vector2){ player.x + 20.0f, player.y + 20.0f }; - camera.offset = (Vector2){ screenWidth/2.0f, screenHeight/2.0f }; - camera.rotation = 0.0f; - camera.zoom = 1.0f; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Player movement - if (IsKeyDown(KEY_RIGHT)) player.x += 2; - else if (IsKeyDown(KEY_LEFT)) player.x -= 2; - - // Camera target follows player - camera.target = (Vector2){ player.x + 20, player.y + 20 }; - - // Camera rotation controls - if (IsKeyDown(KEY_A)) camera.rotation--; - else if (IsKeyDown(KEY_S)) camera.rotation++; - - // Limit camera rotation to 80 degrees (-40 to 40) - if (camera.rotation > 40) camera.rotation = 40; - else if (camera.rotation < -40) camera.rotation = -40; - - // Camera zoom controls - // Uses log scaling to provide consistent zoom speed - camera.zoom = expf(logf(camera.zoom) + ((float)GetMouseWheelMove()*0.1f)); - - if (camera.zoom > 3.0f) camera.zoom = 3.0f; - else if (camera.zoom < 0.1f) camera.zoom = 0.1f; - - // Camera reset (zoom and rotation) - if (IsKeyPressed(KEY_R)) - { - camera.zoom = 1.0f; - camera.rotation = 0.0f; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode2D(camera); - - DrawRectangle(-6000, 320, 13000, 8000, DARKGRAY); - - for (int i = 0; i < MAX_BUILDINGS; i++) DrawRectangleRec(buildings[i], buildColors[i]); - - DrawRectangleRec(player, RED); - - DrawLine((int)camera.target.x, -screenHeight*10, (int)camera.target.x, screenHeight*10, GREEN); - DrawLine(-screenWidth*10, (int)camera.target.y, screenWidth*10, (int)camera.target.y, GREEN); - - EndMode2D(); - - DrawText("SCREEN AREA", 640, 10, 20, RED); - - DrawRectangle(0, 0, screenWidth, 5, RED); - DrawRectangle(0, 5, 5, screenHeight - 10, RED); - DrawRectangle(screenWidth - 5, 5, 5, screenHeight - 10, RED); - DrawRectangle(0, screenHeight - 5, screenWidth, 5, RED); - - DrawRectangle( 10, 10, 250, 113, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines( 10, 10, 250, 113, BLUE); - - DrawText("Free 2D camera controls:", 20, 20, 10, BLACK); - DrawText("- Right/Left to move player", 40, 40, 10, DARKGRAY); - DrawText("- Mouse Wheel to Zoom in-out", 40, 60, 10, DARKGRAY); - DrawText("- A / S to Rotate", 40, 80, 10, DARKGRAY); - DrawText("- R to reset Zoom and Rotation", 40, 100, 10, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera.png deleted file mode 100644 index a0fdabb..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_mouse_zoom.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_mouse_zoom.c deleted file mode 100644 index 9006afb..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_mouse_zoom.c +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 2d camera mouse zoom -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 4.2, last time updated with raylib 4.2 -* -* Example contributed by Jeffery Myers (@JeffM2501) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2022-2025 Jeffery Myers (@JeffM2501) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "rlgl.h" -#include "raymath.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera mouse zoom"); - - Camera2D camera = { 0 }; - camera.zoom = 1.0f; - - int zoomMode = 0; // 0-Mouse Wheel, 1-Mouse Move - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_ONE)) zoomMode = 0; - else if (IsKeyPressed(KEY_TWO)) zoomMode = 1; - - // Translate based on mouse right click - if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) - { - Vector2 delta = GetMouseDelta(); - delta = Vector2Scale(delta, -1.0f/camera.zoom); - camera.target = Vector2Add(camera.target, delta); - } - - if (zoomMode == 0) - { - // Zoom based on mouse wheel - float wheel = GetMouseWheelMove(); - if (wheel != 0) - { - // Get the world point that is under the mouse - Vector2 mouseWorldPos = GetScreenToWorld2D(GetMousePosition(), camera); - - // Set the offset to where the mouse is - camera.offset = GetMousePosition(); - - // Set the target to match, so that the camera maps the world space point - // under the cursor to the screen space point under the cursor at any zoom - camera.target = mouseWorldPos; - - // Zoom increment - // Uses log scaling to provide consistent zoom speed - float scale = 0.2f*wheel; - camera.zoom = Clamp(expf(logf(camera.zoom)+scale), 0.125f, 64.0f); - } - } - else - { - // Zoom based on mouse right click - if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) - { - // Get the world point that is under the mouse - Vector2 mouseWorldPos = GetScreenToWorld2D(GetMousePosition(), camera); - - // Set the offset to where the mouse is - camera.offset = GetMousePosition(); - - // Set the target to match, so that the camera maps the world space point - // under the cursor to the screen space point under the cursor at any zoom - camera.target = mouseWorldPos; - } - - if (IsMouseButtonDown(MOUSE_BUTTON_RIGHT)) - { - // Zoom increment - // Uses log scaling to provide consistent zoom speed - float deltaX = GetMouseDelta().x; - float scale = 0.005f*deltaX; - camera.zoom = Clamp(expf(logf(camera.zoom)+scale), 0.125f, 64.0f); - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - ClearBackground(RAYWHITE); - - BeginMode2D(camera); - // Draw the 3d grid, rotated 90 degrees and centered around 0,0 - // just so we have something in the XY plane - rlPushMatrix(); - rlTranslatef(0, 25*50, 0); - rlRotatef(90, 1, 0, 0); - DrawGrid(100, 50); - rlPopMatrix(); - - // Draw a reference circle - DrawCircle(GetScreenWidth()/2, GetScreenHeight()/2, 50, MAROON); - EndMode2D(); - - // Draw mouse reference - //Vector2 mousePos = GetWorldToScreen2D(GetMousePosition(), camera) - DrawCircleV(GetMousePosition(), 4, DARKGRAY); - DrawTextEx(GetFontDefault(), TextFormat("[%i, %i]", GetMouseX(), GetMouseY()), - Vector2Add(GetMousePosition(), (Vector2){ -44, -24 }), 20, 2, BLACK); - - DrawText("[1][2] Select mouse zoom mode (Wheel or Move)", 20, 20, 20, DARKGRAY); - if (zoomMode == 0) DrawText("Mouse left button drag to move, mouse wheel to zoom", 20, 50, 20, DARKGRAY); - else DrawText("Mouse left button drag to move, mouse press and move to zoom", 20, 50, 20, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_mouse_zoom.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_mouse_zoom.png deleted file mode 100644 index 1c8ab1f..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_mouse_zoom.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_platformer.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_platformer.c deleted file mode 100644 index 8f443ac..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_platformer.c +++ /dev/null @@ -1,307 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 2d camera platformer -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 2.5, last time updated with raylib 3.0 -* -* Example contributed by arvyy (@arvyy) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2019-2025 arvyy (@arvyy) -* -********************************************************************************************/ - -#include "raylib.h" -#include "raymath.h" - -#define G 400 -#define PLAYER_JUMP_SPD 350.0f -#define PLAYER_HOR_SPD 200.0f - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -typedef struct Player { - Vector2 position; - float speed; - bool canJump; -} Player; - -typedef struct EnvItem { - Rectangle rect; - int blocking; - Color color; -} EnvItem; - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -void UpdatePlayer(Player *player, EnvItem *envItems, int envItemsLength, float delta); -void UpdateCameraCenter(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height); -void UpdateCameraCenterInsideMap(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height); -void UpdateCameraCenterSmoothFollow(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height); -void UpdateCameraEvenOutOnLanding(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height); -void UpdateCameraPlayerBoundsPush(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera platformer"); - - Player player = { 0 }; - player.position = (Vector2){ 400, 280 }; - player.speed = 0; - player.canJump = false; - EnvItem envItems[] = { - {{ 0, 0, 1000, 400 }, 0, LIGHTGRAY }, - {{ 0, 400, 1000, 200 }, 1, GRAY }, - {{ 300, 200, 400, 10 }, 1, GRAY }, - {{ 250, 300, 100, 10 }, 1, GRAY }, - {{ 650, 300, 100, 10 }, 1, GRAY } - }; - - int envItemsLength = sizeof(envItems)/sizeof(envItems[0]); - - Camera2D camera = { 0 }; - camera.target = player.position; - camera.offset = (Vector2){ screenWidth/2.0f, screenHeight/2.0f }; - camera.rotation = 0.0f; - camera.zoom = 1.0f; - - // Store pointers to the multiple update camera functions - void (*cameraUpdaters[])(Camera2D*, Player*, EnvItem*, int, float, int, int) = { - UpdateCameraCenter, - UpdateCameraCenterInsideMap, - UpdateCameraCenterSmoothFollow, - UpdateCameraEvenOutOnLanding, - UpdateCameraPlayerBoundsPush - }; - - int cameraOption = 0; - int cameraUpdatersLength = sizeof(cameraUpdaters)/sizeof(cameraUpdaters[0]); - - char *cameraDescriptions[] = { - "Follow player center", - "Follow player center, but clamp to map edges", - "Follow player center; smoothed", - "Follow player center horizontally; update player center vertically after landing", - "Player push camera on getting too close to screen edge" - }; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) - { - // Update - //---------------------------------------------------------------------------------- - float deltaTime = GetFrameTime(); - - UpdatePlayer(&player, envItems, envItemsLength, deltaTime); - - camera.zoom += ((float)GetMouseWheelMove()*0.05f); - - if (camera.zoom > 3.0f) camera.zoom = 3.0f; - else if (camera.zoom < 0.25f) camera.zoom = 0.25f; - - if (IsKeyPressed(KEY_R)) - { - camera.zoom = 1.0f; - player.position = (Vector2){ 400, 280 }; - } - - if (IsKeyPressed(KEY_C)) cameraOption = (cameraOption + 1)%cameraUpdatersLength; - - // Call update camera function by its pointer - cameraUpdaters[cameraOption](&camera, &player, envItems, envItemsLength, deltaTime, screenWidth, screenHeight); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(LIGHTGRAY); - - BeginMode2D(camera); - - for (int i = 0; i < envItemsLength; i++) DrawRectangleRec(envItems[i].rect, envItems[i].color); - - Rectangle playerRect = { player.position.x - 20, player.position.y - 40, 40.0f, 40.0f }; - DrawRectangleRec(playerRect, RED); - - DrawCircleV(player.position, 5.0f, GOLD); - - EndMode2D(); - - DrawText("Controls:", 20, 20, 10, BLACK); - DrawText("- Right/Left to move", 40, 40, 10, DARKGRAY); - DrawText("- Space to jump", 40, 60, 10, DARKGRAY); - DrawText("- Mouse Wheel to Zoom in-out", 40, 80, 10, DARKGRAY); - DrawText("- R to reset position + zoom", 40, 100, 10, DARKGRAY); - DrawText("- C to change camera mode", 40, 120, 10, DARKGRAY); - DrawText("Current camera mode:", 20, 140, 10, BLACK); - DrawText(cameraDescriptions[cameraOption], 40, 160, 10, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -void UpdatePlayer(Player *player, EnvItem *envItems, int envItemsLength, float delta) -{ - if (IsKeyDown(KEY_LEFT)) player->position.x -= PLAYER_HOR_SPD*delta; - if (IsKeyDown(KEY_RIGHT)) player->position.x += PLAYER_HOR_SPD*delta; - if (IsKeyDown(KEY_SPACE) && player->canJump) - { - player->speed = -PLAYER_JUMP_SPD; - player->canJump = false; - } - - bool hitObstacle = false; - for (int i = 0; i < envItemsLength; i++) - { - EnvItem *ei = envItems + i; - Vector2 *p = &(player->position); - if (ei->blocking && - ei->rect.x <= p->x && - ei->rect.x + ei->rect.width >= p->x && - ei->rect.y >= p->y && - ei->rect.y <= p->y + player->speed*delta) - { - hitObstacle = true; - player->speed = 0.0f; - p->y = ei->rect.y; - break; - } - } - - if (!hitObstacle) - { - player->position.y += player->speed*delta; - player->speed += G*delta; - player->canJump = false; - } - else player->canJump = true; -} - -void UpdateCameraCenter(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height) -{ - camera->offset = (Vector2){ width/2.0f, height/2.0f }; - camera->target = player->position; -} - -void UpdateCameraCenterInsideMap(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height) -{ - camera->target = player->position; - camera->offset = (Vector2){ width/2.0f, height/2.0f }; - float minX = 1000, minY = 1000, maxX = -1000, maxY = -1000; - - for (int i = 0; i < envItemsLength; i++) - { - EnvItem *ei = envItems + i; - minX = fminf(ei->rect.x, minX); - maxX = fmaxf(ei->rect.x + ei->rect.width, maxX); - minY = fminf(ei->rect.y, minY); - maxY = fmaxf(ei->rect.y + ei->rect.height, maxY); - } - - Vector2 max = GetWorldToScreen2D((Vector2){ maxX, maxY }, *camera); - Vector2 min = GetWorldToScreen2D((Vector2){ minX, minY }, *camera); - - if (max.x < width) camera->offset.x = width - (max.x - (float)width/2); - if (max.y < height) camera->offset.y = height - (max.y - (float)height/2); - if (min.x > 0) camera->offset.x = (float)width/2 - min.x; - if (min.y > 0) camera->offset.y = (float)height/2 - min.y; -} - -void UpdateCameraCenterSmoothFollow(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height) -{ - static float minSpeed = 30; - static float minEffectLength = 10; - static float fractionSpeed = 0.8f; - - camera->offset = (Vector2){ width/2.0f, height/2.0f }; - Vector2 diff = Vector2Subtract(player->position, camera->target); - float length = Vector2Length(diff); - - if (length > minEffectLength) - { - float speed = fmaxf(fractionSpeed*length, minSpeed); - camera->target = Vector2Add(camera->target, Vector2Scale(diff, speed*delta/length)); - } -} - -void UpdateCameraEvenOutOnLanding(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height) -{ - static float evenOutSpeed = 700; - static int eveningOut = false; - static float evenOutTarget; - - camera->offset = (Vector2){ width/2.0f, height/2.0f }; - camera->target.x = player->position.x; - - if (eveningOut) - { - if (evenOutTarget > camera->target.y) - { - camera->target.y += evenOutSpeed*delta; - - if (camera->target.y > evenOutTarget) - { - camera->target.y = evenOutTarget; - eveningOut = 0; - } - } - else - { - camera->target.y -= evenOutSpeed*delta; - - if (camera->target.y < evenOutTarget) - { - camera->target.y = evenOutTarget; - eveningOut = 0; - } - } - } - else - { - if (player->canJump && (player->speed == 0) && (player->position.y != camera->target.y)) - { - eveningOut = 1; - evenOutTarget = player->position.y; - } - } -} - -void UpdateCameraPlayerBoundsPush(Camera2D *camera, Player *player, EnvItem *envItems, int envItemsLength, float delta, int width, int height) -{ - static Vector2 bbox = { 0.2f, 0.2f }; - - Vector2 bboxWorldMin = GetScreenToWorld2D((Vector2){ (1 - bbox.x)*0.5f*width, (1 - bbox.y)*0.5f*height }, *camera); - Vector2 bboxWorldMax = GetScreenToWorld2D((Vector2){ (1 + bbox.x)*0.5f*width, (1 + bbox.y)*0.5f*height }, *camera); - camera->offset = (Vector2){ (1 - bbox.x)*0.5f*width, (1 - bbox.y)*0.5f*height }; - - if (player->position.x < bboxWorldMin.x) camera->target.x = player->position.x; - if (player->position.y < bboxWorldMin.y) camera->target.y = player->position.y; - if (player->position.x > bboxWorldMax.x) camera->target.x = bboxWorldMin.x + (player->position.x - bboxWorldMax.x); - if (player->position.y > bboxWorldMax.y) camera->target.y = bboxWorldMin.y + (player->position.y - bboxWorldMax.y); -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_platformer.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_platformer.png deleted file mode 100644 index 518c8cd..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_platformer.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_split_screen.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_split_screen.c deleted file mode 100644 index 169465f..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_split_screen.c +++ /dev/null @@ -1,169 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 2d camera split screen -* -* Example complexity rating: [★★★★] 4/4 -* -* Addapted from the core_3d_camera_split_screen example: -* https://github.com/raysan5/raylib/blob/master/examples/core/core_3d_camera_split_screen.c -* -* Example originally created with raylib 4.5, last time updated with raylib 4.5 -* -* Example contributed by Gabriel dos Santos Sanches (@gabrielssanches) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2023-2025 Gabriel dos Santos Sanches (@gabrielssanches) -* -********************************************************************************************/ - -#include "raylib.h" - -#define PLAYER_SIZE 40 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 440; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera split screen"); - - Rectangle player1 = { 200, 200, PLAYER_SIZE, PLAYER_SIZE }; - Rectangle player2 = { 250, 200, PLAYER_SIZE, PLAYER_SIZE }; - - Camera2D camera1 = { 0 }; - camera1.target = (Vector2){ player1.x, player1.y }; - camera1.offset = (Vector2){ 200.0f, 200.0f }; - camera1.rotation = 0.0f; - camera1.zoom = 1.0f; - - Camera2D camera2 = { 0 }; - camera2.target = (Vector2){ player2.x, player2.y }; - camera2.offset = (Vector2){ 200.0f, 200.0f }; - camera2.rotation = 0.0f; - camera2.zoom = 1.0f; - - RenderTexture screenCamera1 = LoadRenderTexture(screenWidth/2, screenHeight); - RenderTexture screenCamera2 = LoadRenderTexture(screenWidth/2, screenHeight); - - // Build a flipped rectangle the size of the split view to use for drawing later - Rectangle splitScreenRect = { 0.0f, 0.0f, (float)screenCamera1.texture.width, (float)-screenCamera1.texture.height }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyDown(KEY_S)) player1.y += 3.0f; - else if (IsKeyDown(KEY_W)) player1.y -= 3.0f; - if (IsKeyDown(KEY_D)) player1.x += 3.0f; - else if (IsKeyDown(KEY_A)) player1.x -= 3.0f; - - if (IsKeyDown(KEY_UP)) player2.y -= 3.0f; - else if (IsKeyDown(KEY_DOWN)) player2.y += 3.0f; - if (IsKeyDown(KEY_RIGHT)) player2.x += 3.0f; - else if (IsKeyDown(KEY_LEFT)) player2.x -= 3.0f; - - camera1.target = (Vector2){ player1.x, player1.y }; - camera2.target = (Vector2){ player2.x, player2.y }; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginTextureMode(screenCamera1); - ClearBackground(RAYWHITE); - - BeginMode2D(camera1); - - // Draw full scene with first camera - for (int i = 0; i < screenWidth/PLAYER_SIZE + 1; i++) - { - DrawLineV((Vector2){(float)PLAYER_SIZE*i, 0}, (Vector2){ (float)PLAYER_SIZE*i, (float)screenHeight}, LIGHTGRAY); - } - - for (int i = 0; i < screenHeight/PLAYER_SIZE + 1; i++) - { - DrawLineV((Vector2){0, (float)PLAYER_SIZE*i}, (Vector2){ (float)screenWidth, (float)PLAYER_SIZE*i}, LIGHTGRAY); - } - - for (int i = 0; i < screenWidth/PLAYER_SIZE; i++) - { - for (int j = 0; j < screenHeight/PLAYER_SIZE; j++) - { - DrawText(TextFormat("[%i,%i]", i, j), 10 + PLAYER_SIZE*i, 15 + PLAYER_SIZE*j, 10, LIGHTGRAY); - } - } - - DrawRectangleRec(player1, RED); - DrawRectangleRec(player2, BLUE); - EndMode2D(); - - DrawRectangle(0, 0, GetScreenWidth()/2, 30, Fade(RAYWHITE, 0.6f)); - DrawText("PLAYER1: W/S/A/D to move", 10, 10, 10, MAROON); - - EndTextureMode(); - - BeginTextureMode(screenCamera2); - ClearBackground(RAYWHITE); - - BeginMode2D(camera2); - - // Draw full scene with second camera - for (int i = 0; i < screenWidth/PLAYER_SIZE + 1; i++) - { - DrawLineV((Vector2){ (float)PLAYER_SIZE*i, 0}, (Vector2){ (float)PLAYER_SIZE*i, (float)screenHeight}, LIGHTGRAY); - } - - for (int i = 0; i < screenHeight/PLAYER_SIZE + 1; i++) - { - DrawLineV((Vector2){0, (float)PLAYER_SIZE*i}, (Vector2){ (float)screenWidth, (float)PLAYER_SIZE*i}, LIGHTGRAY); - } - - for (int i = 0; i < screenWidth/PLAYER_SIZE; i++) - { - for (int j = 0; j < screenHeight/PLAYER_SIZE; j++) - { - DrawText(TextFormat("[%i,%i]", i, j), 10 + PLAYER_SIZE*i, 15 + PLAYER_SIZE*j, 10, LIGHTGRAY); - } - } - - DrawRectangleRec(player1, RED); - DrawRectangleRec(player2, BLUE); - - EndMode2D(); - - DrawRectangle(0, 0, GetScreenWidth()/2, 30, Fade(RAYWHITE, 0.6f)); - DrawText("PLAYER2: UP/DOWN/LEFT/RIGHT to move", 10, 10, 10, DARKBLUE); - - EndTextureMode(); - - // Draw both views render textures to the screen side by side - BeginDrawing(); - ClearBackground(BLACK); - - DrawTextureRec(screenCamera1.texture, splitScreenRect, (Vector2){ 0, 0 }, WHITE); - DrawTextureRec(screenCamera2.texture, splitScreenRect, (Vector2){ screenWidth/2.0f, 0 }, WHITE); - - DrawRectangle(GetScreenWidth()/2 - 2, 0, 4, GetScreenHeight(), LIGHTGRAY); - EndDrawing(); - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadRenderTexture(screenCamera1); // Unload render texture - UnloadRenderTexture(screenCamera2); // Unload render texture - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_split_screen.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_split_screen.png deleted file mode 100644 index a441e39..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_2d_camera_split_screen.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_first_person.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_first_person.c deleted file mode 100644 index 64368c4..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_first_person.c +++ /dev/null @@ -1,207 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 3d camera first person -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.3, last time updated with raylib 1.3 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" -#include "rcamera.h" - -#define MAX_COLUMNS 20 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera first person"); - - // Define the camera to look into our 3d world (position, target, up vector) - Camera camera = { 0 }; - camera.position = (Vector3){ 0.0f, 2.0f, 4.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 60.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - int cameraMode = CAMERA_FIRST_PERSON; - - // Generates some random columns - float heights[MAX_COLUMNS] = { 0 }; - Vector3 positions[MAX_COLUMNS] = { 0 }; - Color colors[MAX_COLUMNS] = { 0 }; - - for (int i = 0; i < MAX_COLUMNS; i++) - { - heights[i] = (float)GetRandomValue(1, 12); - positions[i] = (Vector3){ (float)GetRandomValue(-15, 15), heights[i]/2.0f, (float)GetRandomValue(-15, 15) }; - colors[i] = (Color){ GetRandomValue(20, 255), GetRandomValue(10, 55), 30, 255 }; - } - - DisableCursor(); // Limit cursor to relative movement inside the window - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Switch camera mode - if (IsKeyPressed(KEY_ONE)) - { - cameraMode = CAMERA_FREE; - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Reset roll - } - - if (IsKeyPressed(KEY_TWO)) - { - cameraMode = CAMERA_FIRST_PERSON; - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Reset roll - } - - if (IsKeyPressed(KEY_THREE)) - { - cameraMode = CAMERA_THIRD_PERSON; - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Reset roll - } - - if (IsKeyPressed(KEY_FOUR)) - { - cameraMode = CAMERA_ORBITAL; - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Reset roll - } - - // Switch camera projection - if (IsKeyPressed(KEY_P)) - { - if (camera.projection == CAMERA_PERSPECTIVE) - { - // Create isometric view - cameraMode = CAMERA_THIRD_PERSON; - // Note: The target distance is related to the render distance in the orthographic projection - camera.position = (Vector3){ 0.0f, 2.0f, -100.0f }; - camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; - camera.projection = CAMERA_ORTHOGRAPHIC; - camera.fovy = 20.0f; // near plane width in CAMERA_ORTHOGRAPHIC - CameraYaw(&camera, -135*DEG2RAD, true); - CameraPitch(&camera, -45*DEG2RAD, true, true, false); - } - else if (camera.projection == CAMERA_ORTHOGRAPHIC) - { - // Reset to default view - cameraMode = CAMERA_THIRD_PERSON; - camera.position = (Vector3){ 0.0f, 2.0f, 10.0f }; - camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; - camera.projection = CAMERA_PERSPECTIVE; - camera.fovy = 60.0f; - } - } - - // Update camera computes movement internally depending on the camera mode - // Some default standard keyboard/mouse inputs are hardcoded to simplify use - // For advanced camera controls, it's recommended to compute camera movement manually - UpdateCamera(&camera, cameraMode); // Update camera -/* - // Camera PRO usage example (EXPERIMENTAL) - // This new camera function allows custom movement/rotation values to be directly provided - // as input parameters, with this approach, rcamera module is internally independent of raylib inputs - UpdateCameraPro(&camera, - (Vector3){ - (IsKeyDown(KEY_W) || IsKeyDown(KEY_UP))*0.1f - // Move forward-backward - (IsKeyDown(KEY_S) || IsKeyDown(KEY_DOWN))*0.1f, - (IsKeyDown(KEY_D) || IsKeyDown(KEY_RIGHT))*0.1f - // Move right-left - (IsKeyDown(KEY_A) || IsKeyDown(KEY_LEFT))*0.1f, - 0.0f // Move up-down - }, - (Vector3){ - GetMouseDelta().x*0.05f, // Rotation: yaw - GetMouseDelta().y*0.05f, // Rotation: pitch - 0.0f // Rotation: roll - }, - GetMouseWheelMove()*2.0f); // Move to target (zoom) -*/ - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawPlane((Vector3){ 0.0f, 0.0f, 0.0f }, (Vector2){ 32.0f, 32.0f }, LIGHTGRAY); // Draw ground - DrawCube((Vector3){ -16.0f, 2.5f, 0.0f }, 1.0f, 5.0f, 32.0f, BLUE); // Draw a blue wall - DrawCube((Vector3){ 16.0f, 2.5f, 0.0f }, 1.0f, 5.0f, 32.0f, LIME); // Draw a green wall - DrawCube((Vector3){ 0.0f, 2.5f, 16.0f }, 32.0f, 5.0f, 1.0f, GOLD); // Draw a yellow wall - - // Draw some cubes around - for (int i = 0; i < MAX_COLUMNS; i++) - { - DrawCube(positions[i], 2.0f, heights[i], 2.0f, colors[i]); - DrawCubeWires(positions[i], 2.0f, heights[i], 2.0f, MAROON); - } - - // Draw player cube - if (cameraMode == CAMERA_THIRD_PERSON) - { - DrawCube(camera.target, 0.5f, 0.5f, 0.5f, PURPLE); - DrawCubeWires(camera.target, 0.5f, 0.5f, 0.5f, DARKPURPLE); - } - - EndMode3D(); - - // Draw info boxes - DrawRectangle(5, 5, 330, 100, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines(5, 5, 330, 100, BLUE); - - DrawText("Camera controls:", 15, 15, 10, BLACK); - DrawText("- Move keys: W, A, S, D, Space, Left-Ctrl", 15, 30, 10, BLACK); - DrawText("- Look around: arrow keys or mouse", 15, 45, 10, BLACK); - DrawText("- Camera mode keys: 1, 2, 3, 4", 15, 60, 10, BLACK); - DrawText("- Zoom keys: num-plus, num-minus or mouse scroll", 15, 75, 10, BLACK); - DrawText("- Camera projection key: P", 15, 90, 10, BLACK); - - DrawRectangle(600, 5, 195, 100, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines(600, 5, 195, 100, BLUE); - - DrawText("Camera status:", 610, 15, 10, BLACK); - DrawText(TextFormat("- Mode: %s", (cameraMode == CAMERA_FREE) ? "FREE" : - (cameraMode == CAMERA_FIRST_PERSON) ? "FIRST_PERSON" : - (cameraMode == CAMERA_THIRD_PERSON) ? "THIRD_PERSON" : - (cameraMode == CAMERA_ORBITAL) ? "ORBITAL" : "CUSTOM"), 610, 30, 10, BLACK); - DrawText(TextFormat("- Projection: %s", (camera.projection == CAMERA_PERSPECTIVE) ? "PERSPECTIVE" : - (camera.projection == CAMERA_ORTHOGRAPHIC) ? "ORTHOGRAPHIC" : "CUSTOM"), 610, 45, 10, BLACK); - DrawText(TextFormat("- Position: (%06.3f, %06.3f, %06.3f)", camera.position.x, camera.position.y, camera.position.z), 610, 60, 10, BLACK); - DrawText(TextFormat("- Target: (%06.3f, %06.3f, %06.3f)", camera.target.x, camera.target.y, camera.target.z), 610, 75, 10, BLACK); - DrawText(TextFormat("- Up: (%06.3f, %06.3f, %06.3f)", camera.up.x, camera.up.y, camera.up.z), 610, 90, 10, BLACK); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_first_person.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_first_person.png deleted file mode 100644 index a995591..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_first_person.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_fps.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_fps.c deleted file mode 100644 index ef36e91..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_fps.c +++ /dev/null @@ -1,329 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 3d camera fps -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.5 -* -* Example contributed by Agnis Aldiņš (@nezvers) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Agnis Aldiņš (@nezvers) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -// Movement constants -#define GRAVITY 32.0f -#define MAX_SPEED 20.0f -#define CROUCH_SPEED 5.0f -#define JUMP_FORCE 12.0f -#define MAX_ACCEL 150.0f -// Grounded drag -#define FRICTION 0.86f -// Increasing air drag, increases strafing speed -#define AIR_DRAG 0.98f -// Responsiveness for turning movement direction to looked direction -#define CONTROL 15.0f -#define CROUCH_HEIGHT 0.0f -#define STAND_HEIGHT 1.0f -#define BOTTOM_HEIGHT 0.5f - -#define NORMALIZE_INPUT 0 - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -// Body structure -typedef struct { - Vector3 position; - Vector3 velocity; - Vector3 dir; - bool isGrounded; -} Body; - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -static Vector2 sensitivity = { 0.001f, 0.001f }; - -static Body player = { 0 }; -static Vector2 lookRotation = { 0 }; -static float headTimer = 0.0f; -static float walkLerp = 0.0f; -static float headLerp = STAND_HEIGHT; -static Vector2 lean = { 0 }; - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -static void DrawLevel(void); -static void UpdateCameraFPS(Camera *camera); -static void UpdateBody(Body *body, float rot, char side, char forward, bool jumpPressed, bool crouchHold); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera fps"); - - // Initialize camera variables - // NOTE: UpdateCameraFPS() takes care of the rest - Camera camera = { 0 }; - camera.fovy = 60.0f; - camera.projection = CAMERA_PERSPECTIVE; - camera.position = (Vector3){ - player.position.x, - player.position.y + (BOTTOM_HEIGHT + headLerp), - player.position.z, - }; - - UpdateCameraFPS(&camera); // Update camera parameters - - DisableCursor(); // Limit cursor to relative movement inside the window - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - Vector2 mouseDelta = GetMouseDelta(); - lookRotation.x -= mouseDelta.x*sensitivity.x; - lookRotation.y += mouseDelta.y*sensitivity.y; - - char sideway = (IsKeyDown(KEY_D) - IsKeyDown(KEY_A)); - char forward = (IsKeyDown(KEY_W) - IsKeyDown(KEY_S)); - bool crouching = IsKeyDown(KEY_LEFT_CONTROL); - UpdateBody(&player, lookRotation.x, sideway, forward, IsKeyPressed(KEY_SPACE), crouching); - - float delta = GetFrameTime(); - headLerp = Lerp(headLerp, (crouching ? CROUCH_HEIGHT : STAND_HEIGHT), 20.0f*delta); - camera.position = (Vector3){ - player.position.x, - player.position.y + (BOTTOM_HEIGHT + headLerp), - player.position.z, - }; - - if (player.isGrounded && ((forward != 0) || (sideway != 0))) - { - headTimer += delta*3.0f; - walkLerp = Lerp(walkLerp, 1.0f, 10.0f*delta); - camera.fovy = Lerp(camera.fovy, 55.0f, 5.0f*delta); - } - else - { - walkLerp = Lerp(walkLerp, 0.0f, 10.0f*delta); - camera.fovy = Lerp(camera.fovy, 60.0f, 5.0f*delta); - } - - lean.x = Lerp(lean.x, sideway*0.02f, 10.0f*delta); - lean.y = Lerp(lean.y, forward*0.015f, 10.0f*delta); - - UpdateCameraFPS(&camera); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - DrawLevel(); - EndMode3D(); - - // Draw info box - DrawRectangle(5, 5, 330, 75, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines(5, 5, 330, 75, BLUE); - - DrawText("Camera controls:", 15, 15, 10, BLACK); - DrawText("- Move keys: W, A, S, D, Space, Left-Ctrl", 15, 30, 10, BLACK); - DrawText("- Look around: arrow keys or mouse", 15, 45, 10, BLACK); - DrawText(TextFormat("- Velocity Len: (%06.3f)", Vector2Length((Vector2){ player.velocity.x, player.velocity.z })), 15, 60, 10, BLACK); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -// Update body considering current world state -void UpdateBody(Body *body, float rot, char side, char forward, bool jumpPressed, bool crouchHold) -{ - Vector2 input = (Vector2){ (float)side, (float)-forward }; - -#if defined(NORMALIZE_INPUT) - // Slow down diagonal movement - if ((side != 0) && (forward != 0)) input = Vector2Normalize(input); -#endif - - float delta = GetFrameTime(); - - if (!body->isGrounded) body->velocity.y -= GRAVITY*delta; - - if (body->isGrounded && jumpPressed) - { - body->velocity.y = JUMP_FORCE; - body->isGrounded = false; - - // Sound can be played at this moment - //SetSoundPitch(fxJump, 1.0f + (GetRandomValue(-100, 100)*0.001)); - //PlaySound(fxJump); - } - - Vector3 front = (Vector3){ sinf(rot), 0.f, cosf(rot) }; - Vector3 right = (Vector3){ cosf(-rot), 0.f, sinf(-rot) }; - - Vector3 desiredDir = (Vector3){ input.x*right.x + input.y*front.x, 0.0f, input.x*right.z + input.y*front.z, }; - body->dir = Vector3Lerp(body->dir, desiredDir, CONTROL*delta); - - float decel = (body->isGrounded ? FRICTION : AIR_DRAG); - Vector3 hvel = (Vector3){ body->velocity.x*decel, 0.0f, body->velocity.z*decel }; - - float hvelLength = Vector3Length(hvel); // Magnitude - if (hvelLength < (MAX_SPEED*0.01f)) hvel = (Vector3){ 0 }; - - // This is what creates strafing - float speed = Vector3DotProduct(hvel, body->dir); - - // Whenever the amount of acceleration to add is clamped by the maximum acceleration constant, - // a Player can make the speed faster by bringing the direction closer to horizontal velocity angle - // More info here: https://youtu.be/v3zT3Z5apaM?t=165 - float maxSpeed = (crouchHold? CROUCH_SPEED : MAX_SPEED); - float accel = Clamp(maxSpeed - speed, 0.f, MAX_ACCEL*delta); - hvel.x += body->dir.x*accel; - hvel.z += body->dir.z*accel; - - body->velocity.x = hvel.x; - body->velocity.z = hvel.z; - - body->position.x += body->velocity.x*delta; - body->position.y += body->velocity.y*delta; - body->position.z += body->velocity.z*delta; - - // Fancy collision system against the floor - if (body->position.y <= 0.0f) - { - body->position.y = 0.0f; - body->velocity.y = 0.0f; - body->isGrounded = true; // Enable jumping - } -} - -// Update camera for FPS behaviour -static void UpdateCameraFPS(Camera *camera) -{ - const Vector3 up = (Vector3){ 0.0f, 1.0f, 0.0f }; - const Vector3 targetOffset = (Vector3){ 0.0f, 0.0f, -1.0f }; - - // Left and right - Vector3 yaw = Vector3RotateByAxisAngle(targetOffset, up, lookRotation.x); - - // Clamp view up - float maxAngleUp = Vector3Angle(up, yaw); - maxAngleUp -= 0.001f; // Avoid numerical errors - if ( -(lookRotation.y) > maxAngleUp) { lookRotation.y = -maxAngleUp; } - - // Clamp view down - float maxAngleDown = Vector3Angle(Vector3Negate(up), yaw); - maxAngleDown *= -1.0f; // Downwards angle is negative - maxAngleDown += 0.001f; // Avoid numerical errors - if ( -(lookRotation.y) < maxAngleDown) { lookRotation.y = -maxAngleDown; } - - // Up and down - Vector3 right = Vector3Normalize(Vector3CrossProduct(yaw, up)); - - // Rotate view vector around right axis - float pitchAngle = -lookRotation.y - lean.y; - pitchAngle = Clamp(pitchAngle, -PI/2 + 0.0001f, PI/2 - 0.0001f); // Clamp angle so it doesn't go past straight up or straight down - Vector3 pitch = Vector3RotateByAxisAngle(yaw, right, pitchAngle); - - // Head animation - // Rotate up direction around forward axis - float headSin = sinf(headTimer*PI); - float headCos = cosf(headTimer*PI); - const float stepRotation = 0.01f; - camera->up = Vector3RotateByAxisAngle(up, pitch, headSin*stepRotation + lean.x); - - // Camera BOB - const float bobSide = 0.1f; - const float bobUp = 0.15f; - Vector3 bobbing = Vector3Scale(right, headSin*bobSide); - bobbing.y = fabsf(headCos*bobUp); - - camera->position = Vector3Add(camera->position, Vector3Scale(bobbing, walkLerp)); - camera->target = Vector3Add(camera->position, pitch); -} - -// Draw game level -static void DrawLevel(void) -{ - const int floorExtent = 25; - const float tileSize = 5.0f; - const Color tileColor1 = (Color){ 150, 200, 200, 255 }; - - // Floor tiles - for (int y = -floorExtent; y < floorExtent; y++) - { - for (int x = -floorExtent; x < floorExtent; x++) - { - if ((y & 1) && (x & 1)) - { - DrawPlane((Vector3){ x*tileSize, 0.0f, y*tileSize}, (Vector2){ tileSize, tileSize }, tileColor1); - } - else if (!(y & 1) && !(x & 1)) - { - DrawPlane((Vector3){ x*tileSize, 0.0f, y*tileSize}, (Vector2){ tileSize, tileSize }, LIGHTGRAY); - } - } - } - - const Vector3 towerSize = (Vector3){ 16.0f, 32.0f, 16.0f }; - const Color towerColor = (Color){ 150, 200, 200, 255 }; - - Vector3 towerPos = (Vector3){ 16.0f, 16.0f, 16.0f }; - DrawCubeV(towerPos, towerSize, towerColor); - DrawCubeWiresV(towerPos, towerSize, DARKBLUE); - - towerPos.x *= -1; - DrawCubeV(towerPos, towerSize, towerColor); - DrawCubeWiresV(towerPos, towerSize, DARKBLUE); - - towerPos.z *= -1; - DrawCubeV(towerPos, towerSize, towerColor); - DrawCubeWiresV(towerPos, towerSize, DARKBLUE); - - towerPos.x *= -1; - DrawCubeV(towerPos, towerSize, towerColor); - DrawCubeWiresV(towerPos, towerSize, DARKBLUE); - - // Red sun - DrawSphere((Vector3){ 300.0f, 300.0f, 0.0f }, 100.0f, (Color){ 255, 0, 0, 255 }); -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_fps.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_fps.png deleted file mode 100644 index d4f8348..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_fps.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_free.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_free.c deleted file mode 100644 index 448eb58..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_free.c +++ /dev/null @@ -1,88 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 3d camera free -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.3, last time updated with raylib 1.3 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free"); - - // Define the camera to look into our 3d world - Camera3D camera = { 0 }; - camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; - - DisableCursor(); // Limit cursor to relative movement inside the window - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_FREE); - - if (IsKeyPressed(KEY_Z)) camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); - DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawRectangle( 10, 10, 320, 93, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines( 10, 10, 320, 93, BLUE); - - DrawText("Free camera default controls:", 20, 20, 10, BLACK); - DrawText("- Mouse Wheel to Zoom in-out", 40, 40, 10, DARKGRAY); - DrawText("- Mouse Wheel Pressed to Pan", 40, 60, 10, DARKGRAY); - DrawText("- Z to zoom to (0, 0, 0)", 40, 80, 10, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_free.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_free.png deleted file mode 100644 index 71dfc1c..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_free.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_mode.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_mode.c deleted file mode 100644 index e265b7e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_mode.c +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 3d camera mode -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.0, last time updated with raylib 1.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera mode"); - - // Define the camera to look into our 3d world - Camera3D camera = { 0 }; - camera.position = (Vector3){ 0.0f, 10.0f, 10.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera mode type - - Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // TODO: Update your variables here - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); - DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawText("Welcome to the third dimension!", 10, 40, 20, DARKGRAY); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_mode.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_mode.png deleted file mode 100644 index de65dae..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_mode.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_split_screen.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_split_screen.c deleted file mode 100644 index 75e6959..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_split_screen.c +++ /dev/null @@ -1,176 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 3d camera split screen -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 3.7, last time updated with raylib 4.0 -* -* Example contributed by Jeffery Myers (@JeffM2501) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2021-2025 Jeffery Myers (@JeffM2501) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera split screen"); - - // Setup player 1 camera and screen - Camera cameraPlayer1 = { 0 }; - cameraPlayer1.fovy = 45.0f; - cameraPlayer1.up.y = 1.0f; - cameraPlayer1.target.y = 1.0f; - cameraPlayer1.position.z = -3.0f; - cameraPlayer1.position.y = 1.0f; - - RenderTexture screenPlayer1 = LoadRenderTexture(screenWidth/2, screenHeight); - - // Setup player two camera and screen - Camera cameraPlayer2 = { 0 }; - cameraPlayer2.fovy = 45.0f; - cameraPlayer2.up.y = 1.0f; - cameraPlayer2.target.y = 3.0f; - cameraPlayer2.position.x = -3.0f; - cameraPlayer2.position.y = 3.0f; - - RenderTexture screenPlayer2 = LoadRenderTexture(screenWidth/2, screenHeight); - - // Build a flipped rectangle the size of the split view to use for drawing later - Rectangle splitScreenRect = { 0.0f, 0.0f, (float)screenPlayer1.texture.width, (float)-screenPlayer1.texture.height }; - - // Grid data - int count = 5; - float spacing = 4; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // If anyone moves this frame, how far will they move based on the time since the last frame - // this moves things at 10 world units per second, regardless of the actual FPS - float offsetThisFrame = 10.0f*GetFrameTime(); - - // Move Player1 forward and backwards (no turning) - if (IsKeyDown(KEY_W)) - { - cameraPlayer1.position.z += offsetThisFrame; - cameraPlayer1.target.z += offsetThisFrame; - } - else if (IsKeyDown(KEY_S)) - { - cameraPlayer1.position.z -= offsetThisFrame; - cameraPlayer1.target.z -= offsetThisFrame; - } - - // Move Player2 forward and backwards (no turning) - if (IsKeyDown(KEY_UP)) - { - cameraPlayer2.position.x += offsetThisFrame; - cameraPlayer2.target.x += offsetThisFrame; - } - else if (IsKeyDown(KEY_DOWN)) - { - cameraPlayer2.position.x -= offsetThisFrame; - cameraPlayer2.target.x -= offsetThisFrame; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - // Draw Player1 view to the render texture - BeginTextureMode(screenPlayer1); - ClearBackground(SKYBLUE); - - BeginMode3D(cameraPlayer1); - - // Draw scene: grid of cube trees on a plane to make a "world" - DrawPlane((Vector3){ 0, 0, 0 }, (Vector2){ 50, 50 }, BEIGE); // Simple world plane - - for (float x = -count*spacing; x <= count*spacing; x += spacing) - { - for (float z = -count*spacing; z <= count*spacing; z += spacing) - { - DrawCube((Vector3) { x, 1.5f, z }, 1, 1, 1, LIME); - DrawCube((Vector3) { x, 0.5f, z }, 0.25f, 1, 0.25f, BROWN); - } - } - - // Draw a cube at each player's position - DrawCube(cameraPlayer1.position, 1, 1, 1, RED); - DrawCube(cameraPlayer2.position, 1, 1, 1, BLUE); - - EndMode3D(); - - DrawRectangle(0, 0, GetScreenWidth()/2, 40, Fade(RAYWHITE, 0.8f)); - DrawText("PLAYER1: W/S to move", 10, 10, 20, MAROON); - - EndTextureMode(); - - // Draw Player2 view to the render texture - BeginTextureMode(screenPlayer2); - ClearBackground(SKYBLUE); - - BeginMode3D(cameraPlayer2); - - // Draw scene: grid of cube trees on a plane to make a "world" - DrawPlane((Vector3){ 0, 0, 0 }, (Vector2){ 50, 50 }, BEIGE); // Simple world plane - - for (float x = -count*spacing; x <= count*spacing; x += spacing) - { - for (float z = -count*spacing; z <= count*spacing; z += spacing) - { - DrawCube((Vector3) { x, 1.5f, z }, 1, 1, 1, LIME); - DrawCube((Vector3) { x, 0.5f, z }, 0.25f, 1, 0.25f, BROWN); - } - } - - // Draw a cube at each player's position - DrawCube(cameraPlayer1.position, 1, 1, 1, RED); - DrawCube(cameraPlayer2.position, 1, 1, 1, BLUE); - - EndMode3D(); - - DrawRectangle(0, 0, GetScreenWidth()/2, 40, Fade(RAYWHITE, 0.8f)); - DrawText("PLAYER2: UP/DOWN to move", 10, 10, 20, DARKBLUE); - - EndTextureMode(); - - // Draw both views render textures to the screen side by side - BeginDrawing(); - ClearBackground(BLACK); - - DrawTextureRec(screenPlayer1.texture, splitScreenRect, (Vector2){ 0, 0 }, WHITE); - DrawTextureRec(screenPlayer2.texture, splitScreenRect, (Vector2){ screenWidth/2.0f, 0 }, WHITE); - - DrawRectangle(GetScreenWidth()/2 - 2, 0, 4, GetScreenHeight(), LIGHTGRAY); - EndDrawing(); - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadRenderTexture(screenPlayer1); // Unload render texture - UnloadRenderTexture(screenPlayer2); // Unload render texture - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_split_screen.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_split_screen.png deleted file mode 100644 index bc323d6..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_camera_split_screen.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_picking.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_picking.c deleted file mode 100644 index 9caca82..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_picking.c +++ /dev/null @@ -1,120 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - 3d picking -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.3, last time updated with raylib 4.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d picking"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Vector3 cubePosition = { 0.0f, 1.0f, 0.0f }; - Vector3 cubeSize = { 2.0f, 2.0f, 2.0f }; - - Ray ray = { 0 }; // Picking line ray - RayCollision collision = { 0 }; // Ray collision hit info - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsCursorHidden()) UpdateCamera(&camera, CAMERA_FIRST_PERSON); - - // Toggle camera controls - if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) - { - if (IsCursorHidden()) EnableCursor(); - else DisableCursor(); - } - - if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) - { - if (!collision.hit) - { - ray = GetScreenToWorldRay(GetMousePosition(), camera); - - // Check collision between ray and box - collision = GetRayCollisionBox(ray, - (BoundingBox){(Vector3){ cubePosition.x - cubeSize.x/2, cubePosition.y - cubeSize.y/2, cubePosition.z - cubeSize.z/2 }, - (Vector3){ cubePosition.x + cubeSize.x/2, cubePosition.y + cubeSize.y/2, cubePosition.z + cubeSize.z/2 }}); - } - else collision.hit = false; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - if (collision.hit) - { - DrawCube(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, RED); - DrawCubeWires(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, MAROON); - - DrawCubeWires(cubePosition, cubeSize.x + 0.2f, cubeSize.y + 0.2f, cubeSize.z + 0.2f, GREEN); - } - else - { - DrawCube(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, GRAY); - DrawCubeWires(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, DARKGRAY); - } - - DrawRay(ray, MAROON); - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawText("Try clicking on the box with your mouse!", 240, 10, 20, DARKGRAY); - - if (collision.hit) DrawText("BOX SELECTED", (screenWidth - MeasureText("BOX SELECTED", 30))/2, (int)(screenHeight*0.1f), 30, GREEN); - - DrawText("Right click mouse to toggle camera controls", 10, 430, 10, GRAY); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_picking.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_picking.png deleted file mode 100644 index 254f2f8..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_3d_picking.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_automation_events.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_automation_events.c deleted file mode 100644 index 5020418..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_automation_events.c +++ /dev/null @@ -1,340 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - automation events -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 5.0, last time updated with raylib 5.0 -* -* Example based on 2d_camera_platformer example by arvyy (@arvyy) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2023-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" -#include "raymath.h" - -#define GRAVITY 400 -#define PLAYER_JUMP_SPD 350.0f -#define PLAYER_HOR_SPD 200.0f - -#define MAX_ENVIRONMENT_ELEMENTS 5 - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -typedef struct Player { - Vector2 position; - float speed; - bool canJump; -} Player; - -typedef struct EnvElement { - Rectangle rect; - int blocking; - Color color; -} EnvElement; - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - automation events"); - - // Define player - Player player = { 0 }; - player.position = (Vector2){ 400, 280 }; - player.speed = 0; - player.canJump = false; - - // Define environment elements (platforms) - EnvElement envElements[MAX_ENVIRONMENT_ELEMENTS] = { - {{ 0, 0, 1000, 400 }, 0, LIGHTGRAY }, - {{ 0, 400, 1000, 200 }, 1, GRAY }, - {{ 300, 200, 400, 10 }, 1, GRAY }, - {{ 250, 300, 100, 10 }, 1, GRAY }, - {{ 650, 300, 100, 10 }, 1, GRAY } - }; - - // Define camera - Camera2D camera = { 0 }; - camera.target = player.position; - camera.offset = (Vector2){ screenWidth/2.0f, screenHeight/2.0f }; - camera.rotation = 0.0f; - camera.zoom = 1.0f; - - // Automation events - AutomationEventList aelist = LoadAutomationEventList(0); // Initialize list of automation events to record new events - SetAutomationEventList(&aelist); - bool eventRecording = false; - bool eventPlaying = false; - - unsigned int frameCounter = 0; - unsigned int playFrameCounter = 0; - unsigned int currentPlayFrame = 0; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) - { - // Update - //---------------------------------------------------------------------------------- - float deltaTime = 0.015f;//GetFrameTime(); - - // Dropped files logic - //---------------------------------------------------------------------------------- - if (IsFileDropped()) - { - FilePathList droppedFiles = LoadDroppedFiles(); - - // Supports loading .rgs style files (text or binary) and .png style palette images - if (IsFileExtension(droppedFiles.paths[0], ".txt;.rae")) - { - UnloadAutomationEventList(aelist); - aelist = LoadAutomationEventList(droppedFiles.paths[0]); - - eventRecording = false; - - // Reset scene state to play - eventPlaying = true; - playFrameCounter = 0; - currentPlayFrame = 0; - - player.position = (Vector2){ 400, 280 }; - player.speed = 0; - player.canJump = false; - - camera.target = player.position; - camera.offset = (Vector2){ screenWidth/2.0f, screenHeight/2.0f }; - camera.rotation = 0.0f; - camera.zoom = 1.0f; - } - - UnloadDroppedFiles(droppedFiles); // Unload filepaths from memory - } - //---------------------------------------------------------------------------------- - - // Update player - //---------------------------------------------------------------------------------- - if (IsKeyDown(KEY_LEFT)) player.position.x -= PLAYER_HOR_SPD*deltaTime; - if (IsKeyDown(KEY_RIGHT)) player.position.x += PLAYER_HOR_SPD*deltaTime; - if (IsKeyDown(KEY_SPACE) && player.canJump) - { - player.speed = -PLAYER_JUMP_SPD; - player.canJump = false; - } - - int hitObstacle = 0; - for (int i = 0; i < MAX_ENVIRONMENT_ELEMENTS; i++) - { - EnvElement *element = &envElements[i]; - Vector2 *p = &(player.position); - if (element->blocking && - element->rect.x <= p->x && - element->rect.x + element->rect.width >= p->x && - element->rect.y >= p->y && - element->rect.y <= p->y + player.speed*deltaTime) - { - hitObstacle = 1; - player.speed = 0.0f; - p->y = element->rect.y; - } - } - - if (!hitObstacle) - { - player.position.y += player.speed*deltaTime; - player.speed += GRAVITY*deltaTime; - player.canJump = false; - } - else player.canJump = true; - - if (IsKeyPressed(KEY_R)) - { - // Reset game state - player.position = (Vector2){ 400, 280 }; - player.speed = 0; - player.canJump = false; - - camera.target = player.position; - camera.offset = (Vector2){ screenWidth/2.0f, screenHeight/2.0f }; - camera.rotation = 0.0f; - camera.zoom = 1.0f; - } - //---------------------------------------------------------------------------------- - - // Events playing - // NOTE: Logic must be before Camera update because it depends on mouse-wheel value, - // that can be set by the played event... but some other inputs could be affected - //---------------------------------------------------------------------------------- - if (eventPlaying) - { - // NOTE: Multiple events could be executed in a single frame - while (playFrameCounter == aelist.events[currentPlayFrame].frame) - { - PlayAutomationEvent(aelist.events[currentPlayFrame]); - currentPlayFrame++; - - if (currentPlayFrame == aelist.count) - { - eventPlaying = false; - currentPlayFrame = 0; - playFrameCounter = 0; - - TraceLog(LOG_INFO, "FINISH PLAYING!"); - break; - } - } - - playFrameCounter++; - } - //---------------------------------------------------------------------------------- - - // Update camera - //---------------------------------------------------------------------------------- - camera.target = player.position; - camera.offset = (Vector2){ screenWidth/2.0f, screenHeight/2.0f }; - float minX = 1000, minY = 1000, maxX = -1000, maxY = -1000; - - // WARNING: On event replay, mouse-wheel internal value is set - camera.zoom += ((float)GetMouseWheelMove()*0.05f); - if (camera.zoom > 3.0f) camera.zoom = 3.0f; - else if (camera.zoom < 0.25f) camera.zoom = 0.25f; - - for (int i = 0; i < MAX_ENVIRONMENT_ELEMENTS; i++) - { - EnvElement *element = &envElements[i]; - minX = fminf(element->rect.x, minX); - maxX = fmaxf(element->rect.x + element->rect.width, maxX); - minY = fminf(element->rect.y, minY); - maxY = fmaxf(element->rect.y + element->rect.height, maxY); - } - - Vector2 max = GetWorldToScreen2D((Vector2){ maxX, maxY }, camera); - Vector2 min = GetWorldToScreen2D((Vector2){ minX, minY }, camera); - - if (max.x < screenWidth) camera.offset.x = screenWidth - (max.x - (float)screenWidth/2); - if (max.y < screenHeight) camera.offset.y = screenHeight - (max.y - (float)screenHeight/2); - if (min.x > 0) camera.offset.x = (float)screenWidth/2 - min.x; - if (min.y > 0) camera.offset.y = (float)screenHeight/2 - min.y; - //---------------------------------------------------------------------------------- - - // Events management - if (IsKeyPressed(KEY_S)) // Toggle events recording - { - if (!eventPlaying) - { - if (eventRecording) - { - StopAutomationEventRecording(); - eventRecording = false; - - ExportAutomationEventList(aelist, "automation.rae"); - - TraceLog(LOG_INFO, "RECORDED FRAMES: %i", aelist.count); - } - else - { - SetAutomationEventBaseFrame(180); - StartAutomationEventRecording(); - eventRecording = true; - } - } - } - else if (IsKeyPressed(KEY_A)) // Toggle events playing (WARNING: Starts next frame) - { - if (!eventRecording && (aelist.count > 0)) - { - // Reset scene state to play - eventPlaying = true; - playFrameCounter = 0; - currentPlayFrame = 0; - - player.position = (Vector2){ 400, 280 }; - player.speed = 0; - player.canJump = false; - - camera.target = player.position; - camera.offset = (Vector2){ screenWidth/2.0f, screenHeight/2.0f }; - camera.rotation = 0.0f; - camera.zoom = 1.0f; - } - } - - if (eventRecording || eventPlaying) frameCounter++; - else frameCounter = 0; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(LIGHTGRAY); - - BeginMode2D(camera); - - // Draw environment elements - for (int i = 0; i < MAX_ENVIRONMENT_ELEMENTS; i++) - { - DrawRectangleRec(envElements[i].rect, envElements[i].color); - } - - // Draw player rectangle - DrawRectangleRec((Rectangle){ player.position.x - 20, player.position.y - 40, 40, 40 }, RED); - - EndMode2D(); - - // Draw game controls - DrawRectangle(10, 10, 290, 145, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines(10, 10, 290, 145, Fade(BLUE, 0.8f)); - - DrawText("Controls:", 20, 20, 10, BLACK); - DrawText("- RIGHT | LEFT: Player movement", 30, 40, 10, DARKGRAY); - DrawText("- SPACE: Player jump", 30, 60, 10, DARKGRAY); - DrawText("- R: Reset game state", 30, 80, 10, DARKGRAY); - - DrawText("- S: START/STOP RECORDING INPUT EVENTS", 30, 110, 10, BLACK); - DrawText("- A: REPLAY LAST RECORDED INPUT EVENTS", 30, 130, 10, BLACK); - - // Draw automation events recording indicator - if (eventRecording) - { - DrawRectangle(10, 160, 290, 30, Fade(RED, 0.3f)); - DrawRectangleLines(10, 160, 290, 30, Fade(MAROON, 0.8f)); - DrawCircle(30, 175, 10, MAROON); - - if (((frameCounter/15)%2) == 1) DrawText(TextFormat("RECORDING EVENTS... [%i]", aelist.count), 50, 170, 10, MAROON); - } - else if (eventPlaying) - { - DrawRectangle(10, 160, 290, 30, Fade(LIME, 0.3f)); - DrawRectangleLines(10, 160, 290, 30, Fade(DARKGREEN, 0.8f)); - DrawTriangle((Vector2){ 20, 155 + 10 }, (Vector2){ 20, 155 + 30 }, (Vector2){ 40, 155 + 20 }, DARKGREEN); - - if (((frameCounter/15)%2) == 1) DrawText(TextFormat("PLAYING RECORDED EVENTS... [%i]", currentPlayFrame), 50, 170, 10, DARKGREEN); - } - - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_automation_events.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_automation_events.png deleted file mode 100644 index ac8cb3b..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_automation_events.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_screen_manager.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_screen_manager.c deleted file mode 100644 index c2d3781..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_screen_manager.c +++ /dev/null @@ -1,154 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - basic screen manager -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* NOTE: This example illustrates a very simple screen manager based on a states machines -* -* Example originally created with raylib 4.0, last time updated with raylib 4.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2021-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------------ -// Types and Structures Definition -//------------------------------------------------------------------------------------------ -typedef enum GameScreen { LOGO = 0, TITLE, GAMEPLAY, ENDING } GameScreen; - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - basic screen manager"); - - GameScreen currentScreen = LOGO; - - // TODO: Initialize all required variables and load all required data here! - - int framesCounter = 0; // Useful to count frames - - SetTargetFPS(60); // Set desired framerate (frames-per-second) - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - switch (currentScreen) - { - case LOGO: - { - // TODO: Update LOGO screen variables here! - - framesCounter++; // Count frames - - // Wait for 2 seconds (120 frames) before jumping to TITLE screen - if (framesCounter > 120) - { - currentScreen = TITLE; - } - } break; - case TITLE: - { - // TODO: Update TITLE screen variables here! - - // Press enter to change to GAMEPLAY screen - if (IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP)) - { - currentScreen = GAMEPLAY; - } - } break; - case GAMEPLAY: - { - // TODO: Update GAMEPLAY screen variables here! - - // Press enter to change to ENDING screen - if (IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP)) - { - currentScreen = ENDING; - } - } break; - case ENDING: - { - // TODO: Update ENDING screen variables here! - - // Press enter to return to TITLE screen - if (IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP)) - { - currentScreen = TITLE; - } - } break; - default: break; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - switch(currentScreen) - { - case LOGO: - { - // TODO: Draw LOGO screen here! - DrawText("LOGO SCREEN", 20, 20, 40, LIGHTGRAY); - DrawText("WAIT for 2 SECONDS...", 290, 220, 20, GRAY); - - } break; - case TITLE: - { - // TODO: Draw TITLE screen here! - DrawRectangle(0, 0, screenWidth, screenHeight, GREEN); - DrawText("TITLE SCREEN", 20, 20, 40, DARKGREEN); - DrawText("PRESS ENTER or TAP to JUMP to GAMEPLAY SCREEN", 120, 220, 20, DARKGREEN); - - } break; - case GAMEPLAY: - { - // TODO: Draw GAMEPLAY screen here! - DrawRectangle(0, 0, screenWidth, screenHeight, PURPLE); - DrawText("GAMEPLAY SCREEN", 20, 20, 40, MAROON); - DrawText("PRESS ENTER or TAP to JUMP to ENDING SCREEN", 130, 220, 20, MAROON); - - } break; - case ENDING: - { - // TODO: Draw ENDING screen here! - DrawRectangle(0, 0, screenWidth, screenHeight, BLUE); - DrawText("ENDING SCREEN", 20, 20, 40, DARKBLUE); - DrawText("PRESS ENTER or TAP to RETURN to TITLE SCREEN", 120, 220, 20, DARKBLUE); - - } break; - default: break; - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - - // TODO: Unload all loaded data (textures, fonts, audio) here! - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_screen_manager.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_screen_manager.png deleted file mode 100644 index 532002b..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_screen_manager.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_window.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_window.c deleted file mode 100644 index c1009fc..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_window.c +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - basic window -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Welcome to raylib! -* -* To test examples, just press F6 and execute 'raylib_compile_execute' script -* Note that compiled executable is placed in the same folder as .c file -* -* To test the examples on Web, press F6 and execute 'raylib_compile_execute_web' script -* Web version of the program is generated in the same folder as .c file -* -* You can find all basic examples on C:\raylib\raylib\examples folder or -* raylib official webpage: www.raylib.com -* -* Enjoy using raylib. :) -* -* Example originally created with raylib 1.0, last time updated with raylib 1.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2013-2026 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window"); - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // TODO: Update your variables here - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_window.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_window.png deleted file mode 100644 index 3461844..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_basic_window.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_clipboard_text.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_clipboard_text.c deleted file mode 100644 index 6ced656..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_clipboard_text.c +++ /dev/null @@ -1,164 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - clipboard text -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example contributed by Ananth S (@Ananth1839) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Ananth S (@Ananth1839) -* -********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "raygui.h" - -#define MAX_TEXT_SAMPLES 5 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - clipboard text"); - - // Define some sample texts - const char *sampleTexts[MAX_TEXT_SAMPLES] = { - "Hello from raylib!", - "The quick brown fox jumps over the lazy dog", - "Clipboard operations are useful!", - "raylib is a simple and easy-to-use library", - "Copy and paste me!" - }; - - const char *clipboardText = NULL; - char inputBuffer[256] = "Hello from raylib!"; // Random initial string - - // UI required variables - bool textBoxEditMode = false; - - bool btnCutPressed = false; - bool btnCopyPressed = false; - bool btnPastePressed = false; - bool btnClearPressed = false; - bool btnRandomPressed = false; - - // Set UI style - GuiSetStyle(DEFAULT, TEXT_SIZE, 20); - GuiSetIconScale(2); - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Handle button interactions - if (btnCutPressed) - { - SetClipboardText(inputBuffer); - clipboardText = GetClipboardText(); - inputBuffer[0] = '\0'; // Quick solution to clear text - //memset(inputBuffer, 0, 256); // Clear full buffer properly - } - - if (btnCopyPressed) - { - SetClipboardText(inputBuffer); // Copy text to clipboard - clipboardText = GetClipboardText(); // Get text from clipboard - } - - if (btnPastePressed) - { - // Paste text from clipboard - clipboardText = GetClipboardText(); - if (clipboardText != NULL) TextCopy(inputBuffer, clipboardText); - } - - if (btnClearPressed) - { - inputBuffer[0] = '\0'; // Quick solution to clear text - //memset(inputBuffer, 0, 256); // Clear full buffer properly - } - - if (btnRandomPressed) - { - // Get random text from sample list - TextCopy(inputBuffer, sampleTexts[GetRandomValue(0, MAX_TEXT_SAMPLES - 1)]); - } - - // Quick cut/copy/paste with keyboard shortcuts - if (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL)) - { - if (IsKeyPressed(KEY_X)) - { - SetClipboardText(inputBuffer); - inputBuffer[0] = '\0'; // Quick solution to clear text - } - - if (IsKeyPressed(KEY_C)) SetClipboardText(inputBuffer); - - if (IsKeyPressed(KEY_V)) - { - clipboardText = GetClipboardText(); - if (clipboardText != NULL) TextCopy(inputBuffer, clipboardText); - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - // Draw instructions - GuiLabel((Rectangle){ 50, 20, 700, 36 }, "Use the BUTTONS or KEY SHORTCUTS:"); - DrawText("[CTRL+X] - CUT | [CTRL+C] COPY | [CTRL+V] | PASTE", 50, 60, 20, MAROON); - - // Draw text box - if (GuiTextBox((Rectangle){ 50, 120, 652, 40 }, inputBuffer, 256, textBoxEditMode)) textBoxEditMode = !textBoxEditMode; - - // Random text button - btnRandomPressed = GuiButton((Rectangle){ 50 + 652 + 8, 120, 40, 40 }, "#77#"); - - // Draw buttons - btnCutPressed = GuiButton((Rectangle){ 50, 180, 158, 40 }, "#17#CUT"); - btnCopyPressed = GuiButton((Rectangle){ 50 + 165, 180, 158, 40 }, "#16#COPY"); - btnPastePressed = GuiButton((Rectangle){ 50 + 165*2, 180, 158, 40 }, "#18#PASTE"); - btnClearPressed = GuiButton((Rectangle){ 50 + 165*3, 180, 158, 40 }, "#143#CLEAR"); - - // Draw clipboard status - GuiSetState(STATE_DISABLED); - GuiLabel((Rectangle){ 50, 260, 700, 40 }, "Clipboard current text data:"); - GuiSetStyle(TEXTBOX, TEXT_READONLY, 1); - GuiTextBox((Rectangle){ 50, 300, 700, 40 }, (char *)clipboardText, 256, false); - GuiSetStyle(TEXTBOX, TEXT_READONLY, 0); - GuiLabel((Rectangle){ 50, 360, 700, 40 }, "Try copying text from other applications and pasting here!"); - GuiSetState(STATE_NORMAL); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_clipboard_text.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_clipboard_text.png deleted file mode 100644 index 96a7379..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_clipboard_text.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_compute_hash.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_compute_hash.c deleted file mode 100644 index 890c146..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_compute_hash.c +++ /dev/null @@ -1,143 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - compute hash -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "raygui.h" - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -static char *GetDataAsHexText(const unsigned int *data, int dataSize); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - compute hash"); - - // UI controls variables - char textInput[96] = "The quick brown fox jumps over the lazy dog."; - bool textBoxEditMode = false; - bool btnComputeHashes = false; - - // Data hash values - unsigned int hashCRC32 = 0; - unsigned int *hashMD5 = NULL; - unsigned int *hashSHA1 = NULL; - unsigned int *hashSHA256 = NULL; - - // Base64 encoded data - char *base64Text = NULL; - int base64TextSize = 0; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (btnComputeHashes) - { - int textInputLen = (int)strlen(textInput); - - // Encode data to Base64 string (includes NULL terminator), memory must be MemFree() - base64Text = EncodeDataBase64((unsigned char *)textInput, textInputLen, &base64TextSize); - - hashCRC32 = ComputeCRC32((unsigned char *)textInput, textInputLen); // Compute CRC32 hash code (4 bytes) - hashMD5 = ComputeMD5((unsigned char *)textInput, textInputLen); // Compute MD5 hash code, returns static int[4] (16 bytes) - hashSHA1 = ComputeSHA1((unsigned char *)textInput, textInputLen); // Compute SHA1 hash code, returns static int[5] (20 bytes) - hashSHA256 = ComputeSHA256((unsigned char *)textInput, textInputLen); // Compute SHA256 hash code, returns static int[8] (32 bytes) - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - GuiSetStyle(DEFAULT, TEXT_SIZE, 20); - GuiSetStyle(DEFAULT, TEXT_SPACING, 2); - GuiLabel((Rectangle){ 40, 26, 720, 32 }, "INPUT DATA (TEXT):"); - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); - - if (GuiTextBox((Rectangle){ 40, 64, 720, 32 }, textInput, 95, textBoxEditMode)) textBoxEditMode = !textBoxEditMode; - - btnComputeHashes = GuiButton((Rectangle){ 40, 64 + 40, 720, 32 }, "COMPUTE INPUT DATA HASHES"); - - GuiSetStyle(DEFAULT, TEXT_SIZE, 20); - GuiSetStyle(DEFAULT, TEXT_SPACING, 2); - GuiLabel((Rectangle){ 40, 160, 720, 32 }, "INPUT DATA HASH VALUES:"); - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); - - GuiSetStyle(TEXTBOX, TEXT_READONLY, 1); - GuiLabel((Rectangle){ 40, 200, 120, 32 }, "CRC32 [32 bit]:"); - GuiTextBox((Rectangle){ 40 + 120, 200, 720 - 120, 32 }, GetDataAsHexText(&hashCRC32, 1), 120, false); - GuiLabel((Rectangle){ 40, 200 + 36, 120, 32 }, "MD5 [128 bit]:"); - GuiTextBox((Rectangle){ 40 + 120, 200 + 36, 720 - 120, 32 }, GetDataAsHexText(hashMD5, 4), 120, false); - GuiLabel((Rectangle){ 40, 200 + 36*2, 120, 32 }, "SHA1 [160 bit]:"); - GuiTextBox((Rectangle){ 40 + 120, 200 + 36*2, 720 - 120, 32 }, GetDataAsHexText(hashSHA1, 5), 120, false); - GuiLabel((Rectangle){ 40, 200 + 36*3, 120, 32 }, "SHA256 [256 bit]:"); - GuiTextBox((Rectangle){ 40 + 120, 200 + 36*3, 720 - 120, 32 }, GetDataAsHexText(hashSHA256, 8), 120, false); - - GuiSetState(STATE_FOCUSED); - GuiLabel((Rectangle){ 40, 200 + 36*5 - 30, 320, 32 }, "BONUS - BAS64 ENCODED STRING:"); - GuiSetState(STATE_NORMAL); - GuiLabel((Rectangle){ 40, 200 + 36*5, 120, 32 }, "BASE64 ENCODING:"); - GuiTextBox((Rectangle){ 40 + 120, 200 + 36*5, 720 - 120, 32 }, base64Text, 120, false); - GuiSetStyle(TEXTBOX, TEXT_READONLY, 0); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - MemFree(base64Text); // Free Base64 text data - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -static char *GetDataAsHexText(const unsigned int *data, int dataSize) -{ - static char text[128] = { 0 }; - memset(text, 0, 128); - - if ((data != NULL) && (dataSize > 0) && (dataSize < ((128/8) - 1))) - { - for (int i = 0; i < dataSize; i++) TextCopy(text + i*8, TextFormat("%08X", data[i])); - } - else TextCopy(text, "00000000"); - - return text; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_compute_hash.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_compute_hash.png deleted file mode 100644 index 19a5d0b..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_compute_hash.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_frame_control.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_frame_control.c deleted file mode 100644 index 40af52f..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_frame_control.c +++ /dev/null @@ -1,141 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - custom frame control -* -* Example complexity rating: [★★★★] 4/4 -* -* NOTE: WARNING: This is an example for advanced users willing to have full control over -* the frame processes. By default, EndDrawing() calls the following processes: -* 1. Draw remaining batch data: rlDrawRenderBatchActive() -* 2. SwapScreenBuffer() -* 3. Frame time control: WaitTime() -* 4. PollInputEvents() -* -* To avoid steps 2, 3 and 4, flag SUPPORT_CUSTOM_FRAME_CONTROL can be enabled in -* config.h (it requires recompiling raylib). This way those steps are up to the user -* -* Note that enabling this flag invalidates some functions: -* - GetFrameTime() -* - SetTargetFPS() -* - GetFPS() -* -* Example originally created with raylib 4.0, last time updated with raylib 4.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2021-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - custom frame control"); - - // Custom timming variables - double previousTime = GetTime(); // Previous time measure - double currentTime = 0.0; // Current time measure - double updateDrawTime = 0.0; // Update + Draw time - double waitTime = 0.0; // Wait time (if target fps required) - float deltaTime = 0.0f; // Frame time (Update + Draw + Wait time) - - float timeCounter = 0.0f; // Accumulative time counter (seconds) - float position = 0.0f; // Circle position - bool pause = false; // Pause control flag - - int targetFPS = 60; // Our initial target fps - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - #ifndef PLATFORM_WEB // NOTE: On non web platforms the PollInputEvents just works before the inputs checks - PollInputEvents(); // Poll input events (SUPPORT_CUSTOM_FRAME_CONTROL) - #endif - - if (IsKeyPressed(KEY_SPACE)) pause = !pause; - - if (IsKeyPressed(KEY_UP)) targetFPS += 20; - else if (IsKeyPressed(KEY_DOWN)) targetFPS -= 20; - - if (targetFPS < 0) targetFPS = 0; - - if (!pause) - { - position += 200*deltaTime; // We move at 200 pixels per second - if (position >= GetScreenWidth()) position = 0; - timeCounter += deltaTime; // We count time (seconds) - } - - #ifdef PLATFORM_WEB // NOTE: On web platform for some reason the PollInputEvents only works after the inputs check, so just call it after check all your inputs (on web) - PollInputEvents(); // Poll input events (SUPPORT_CUSTOM_FRAME_CONTROL) - #endif - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - for (int i = 0; i < GetScreenWidth()/200; i++) DrawRectangle(200*i, 0, 1, GetScreenHeight(), SKYBLUE); - - DrawCircle((int)position, GetScreenHeight()/2 - 25, 50, RED); - - DrawText(TextFormat("%03.0f ms", timeCounter*1000.0f), (int)position - 40, GetScreenHeight()/2 - 100, 20, MAROON); - DrawText(TextFormat("PosX: %03.0f", position), (int)position - 50, GetScreenHeight()/2 + 40, 20, BLACK); - - DrawText("Circle is moving at a constant 200 pixels/sec,\nindependently of the frame rate.", 10, 10, 20, DARKGRAY); - DrawText("PRESS SPACE to PAUSE MOVEMENT", 10, GetScreenHeight() - 60, 20, GRAY); - DrawText("PRESS UP | DOWN to CHANGE TARGET FPS", 10, GetScreenHeight() - 30, 20, GRAY); - DrawText(TextFormat("TARGET FPS: %i", targetFPS), GetScreenWidth() - 220, 10, 20, LIME); - if (deltaTime != 0) - { - DrawText(TextFormat("CURRENT FPS: %i", (int)(1.0f/deltaTime)), GetScreenWidth() - 220, 40, 20, GREEN); - } - - EndDrawing(); - - // NOTE: In case raylib is configured to SUPPORT_CUSTOM_FRAME_CONTROL, - // Events polling, screen buffer swap and frame time control must be managed by the user - - SwapScreenBuffer(); // Flip the back buffer to screen (front buffer) - - currentTime = GetTime(); - updateDrawTime = currentTime - previousTime; - - if (targetFPS > 0) // We want a fixed frame rate - { - waitTime = (1.0f/(float)targetFPS) - updateDrawTime; - if (waitTime > 0.0) - { - WaitTime((float)waitTime); - currentTime = GetTime(); - deltaTime = (float)(currentTime - previousTime); - } - } - else deltaTime = (float)updateDrawTime; // Framerate could be variable - - previousTime = currentTime; - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_frame_control.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_frame_control.png deleted file mode 100644 index 7d615ef..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_frame_control.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_logging.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_logging.c deleted file mode 100644 index b1e7ee9..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_logging.c +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - custom logging -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 2.5, last time updated with raylib 2.5 -* -* Example contributed by Pablo Marcos Oltra (@pamarcos) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2018-2025 Pablo Marcos Oltra (@pamarcos) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include // Required for: printf(), vprintf(), fprintf() -#include // Required for: time_t, tm, time(), localtime(), strftime() - -// Custom logging function -void CustomTraceLog(int msgType, const char *text, va_list args) -{ - char timeStr[64] = { 0 }; - time_t now = time(NULL); - struct tm *tm_info = localtime(&now); - - strftime(timeStr, sizeof(timeStr), "%Y-%m-%d %H:%M:%S", tm_info); - printf("[%s] ", timeStr); - - switch (msgType) - { - case LOG_INFO: printf("[INFO] : "); break; - case LOG_ERROR: printf("[ERROR]: "); break; - case LOG_WARNING: printf("[WARN] : "); break; - case LOG_DEBUG: printf("[DEBUG]: "); break; - default: break; - } - - vprintf(text, args); - printf("\n"); -} - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - // Set custom logger - SetTraceLogCallback(CustomTraceLog); - - InitWindow(screenWidth, screenHeight, "raylib [core] example - custom logging"); - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // TODO: Update your variables here - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("Check out the console output to see the custom logger in action!", 60, 200, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_logging.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_logging.png deleted file mode 100644 index 478fef7..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_custom_logging.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_delta_time.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_delta_time.c deleted file mode 100644 index 26b0d13..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_delta_time.c +++ /dev/null @@ -1,112 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - delta time -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 6.0 -* -* Example contributed by Robin (@RobinsAviary) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Robin (@RobinsAviary) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - delta time"); - - int currentFps = 60; - - // Store the position for the both of the circles - Vector2 deltaCircle = { 0, (float)screenHeight/3.0f }; - Vector2 frameCircle = { 0, (float)screenHeight*(2.0f/3.0f) }; - - // The speed applied to both circles - const float speed = 10.0f; - const float circleRadius = 32.0f; - - SetTargetFPS(currentFps); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Adjust the FPS target based on the mouse wheel - float mouseWheel = GetMouseWheelMove(); - if (mouseWheel != 0) - { - currentFps += (int)mouseWheel; - if (currentFps < 0) currentFps = 0; - SetTargetFPS(currentFps); - } - - // GetFrameTime() returns the time it took to draw the last frame, in seconds (usually called delta time) - // Uses the delta time to make the circle look like it's moving at a "consistent" speed regardless of FPS - - // Multiply by 6.0 (an arbitrary value) in order to make the speed - // visually closer to the other circle (at 60 fps), for comparison - deltaCircle.x += GetFrameTime()*6.0f*speed; - // This circle can move faster or slower visually depending on the FPS - frameCircle.x += 0.1f*speed; - - // If either circle is off the screen, reset it back to the start - if (deltaCircle.x > screenWidth) deltaCircle.x = 0; - if (frameCircle.x > screenWidth) frameCircle.x = 0; - - // Reset both circles positions - if (IsKeyPressed(KEY_R)) - { - deltaCircle.x = 0; - frameCircle.x = 0; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - ClearBackground(RAYWHITE); - - // Draw both circles to the screen - DrawCircleV(deltaCircle, circleRadius, RED); - DrawCircleV(frameCircle, circleRadius, BLUE); - - // Draw the help text - // Determine what help text to show depending on the current FPS target - const char *fpsText = 0; - if (currentFps <= 0) fpsText = TextFormat("FPS: unlimited (%i)", GetFPS()); - else fpsText = TextFormat("FPS: %i (target: %i)", GetFPS(), currentFps); - DrawText(fpsText, 10, 10, 20, DARKGRAY); - DrawText(TextFormat("Frame time: %02.02f ms", GetFrameTime()), 10, 30, 20, DARKGRAY); - DrawText("Use the scroll wheel to change the fps limit, r to reset", 10, 50, 20, DARKGRAY); - - // Draw the text above the circles - DrawText("FUNC: x += GetFrameTime()*speed", 10, 90, 20, RED); - DrawText("FUNC: x += speed", 10, 240, 20, BLUE); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_delta_time.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_delta_time.png deleted file mode 100644 index cf8aa7c..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_delta_time.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_directory_files.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_directory_files.c deleted file mode 100644 index a5b1907..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_directory_files.c +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - directory files -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.6 -* -* Example contributed by Hugo ARNAL (@hugoarnal) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Hugo ARNAL (@hugoarnal) -* -********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "raygui.h" // Required for GUI controls - -#define MAX_FILEPATH_SIZE 1024 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - directory files"); - - char directory[MAX_FILEPATH_SIZE] = { 0 }; - strcpy(directory, GetWorkingDirectory()); - - // Load file-paths on current working directory - // NOTE: LoadDirectoryFiles() loads files and directories by default, - // use LoadDirectoryFilesEx() for custom filters and recursive directories loading - //FilePathList files = LoadDirectoryFiles(directory); - FilePathList files = LoadDirectoryFilesEx(directory, ".png;.c", false); - - int btnBackPressed = false; - - int listScrollIndex = 0; - int listItemActive = -1; - int listItemFocused = -1; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (btnBackPressed) - { - TextCopy(directory, GetPrevDirectoryPath(directory)); - UnloadDirectoryFiles(files); - files = LoadDirectoryFiles(directory); - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - ClearBackground(RAYWHITE); - - btnBackPressed = GuiButton((Rectangle){ 40.0f, 10.0f, 48, 28 }, "<"); - - GuiSetStyle(DEFAULT, TEXT_SIZE, GuiGetFont().baseSize*2); - GuiLabel((Rectangle){ 40 + 48 + 10, 10, 700, 28 }, directory); - GuiSetStyle(DEFAULT, TEXT_SIZE, GuiGetFont().baseSize); - - GuiSetStyle(LISTVIEW, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(LISTVIEW, TEXT_PADDING, 40); - GuiListViewEx((Rectangle){ 0, 50, (float)GetScreenWidth(), (float)GetScreenHeight() - 50 }, - files.paths, files.count, &listScrollIndex, &listItemActive, &listItemFocused); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadDirectoryFiles(files); - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_directory_files.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_directory_files.png deleted file mode 100644 index 285e174..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_directory_files.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_drop_files.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_drop_files.c deleted file mode 100644 index 0dc9ea9..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_drop_files.c +++ /dev/null @@ -1,108 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - drop files -* -* Example complexity rating: [★★☆☆] 2/4 -* -* NOTE: This example only works on platforms that support drag & drop (Windows, Linux, OSX, Html5?) -* -* Example originally created with raylib 1.3, last time updated with raylib 4.2 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include // Required for: calloc(), free() - -#define MAX_FILEPATH_RECORDED 4096 -#define MAX_FILEPATH_SIZE 2048 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - drop files"); - - int filePathCounter = 0; - char *filePaths[MAX_FILEPATH_RECORDED] = { 0 }; // We will register a maximum of filepaths - - // Allocate space for the required file paths - for (int i = 0; i < MAX_FILEPATH_RECORDED; i++) - { - filePaths[i] = (char *)RL_CALLOC(MAX_FILEPATH_SIZE, 1); - } - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsFileDropped()) - { - FilePathList droppedFiles = LoadDroppedFiles(); - - for (int i = 0, offset = filePathCounter; i < (int)droppedFiles.count; i++) - { - if (filePathCounter < (MAX_FILEPATH_RECORDED - 1)) - { - TextCopy(filePaths[offset + i], droppedFiles.paths[i]); - filePathCounter++; - } - } - - UnloadDroppedFiles(droppedFiles); // Unload filepaths from memory - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - if (filePathCounter == 0) DrawText("Drop your files to this window!", 100, 40, 20, DARKGRAY); - else - { - DrawText("Dropped files:", 100, 40, 20, DARKGRAY); - - for (int i = 0; i < filePathCounter; i++) - { - if (i%2 == 0) DrawRectangle(0, 85 + 40*i, screenWidth, 40, Fade(LIGHTGRAY, 0.5f)); - else DrawRectangle(0, 85 + 40*i, screenWidth, 40, Fade(LIGHTGRAY, 0.3f)); - - DrawText(filePaths[i], 120, 100 + 40*i, 10, GRAY); - } - - DrawText("Drop new files...", 100, 110 + 40*filePathCounter, 20, DARKGRAY); - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - for (int i = 0; i < MAX_FILEPATH_RECORDED; i++) - { - RL_FREE(filePaths[i]); // Free allocated memory for all filepaths - } - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_drop_files.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_drop_files.png deleted file mode 100644 index d46c44c..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_drop_files.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_demo.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_demo.c deleted file mode 100644 index b1f706d..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_demo.c +++ /dev/null @@ -1,134 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - highdpi demo -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 5.0, last time updated with raylib 5.5 -* -* Example contributed by Jonathan Marler (@marler8997) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Jonathan Marler (@marler8997) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static void DrawTextCenter(const char *text, int x, int y, int fontSize, Color color); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - SetConfigFlags(FLAG_WINDOW_HIGHDPI | FLAG_WINDOW_RESIZABLE); - InitWindow(screenWidth, screenHeight, "raylib [core] example - highdpi demo"); - SetWindowMinSize(450, 450); - - int logicalGridDescY = 120; - int logicalGridLabelY = logicalGridDescY + 30; - int logicalGridTop = logicalGridLabelY + 30; - int logicalGridBottom = logicalGridTop + 80; - int pixelGridTop = logicalGridBottom - 20; - int pixelGridBottom = pixelGridTop + 80; - int pixelGridLabelY = pixelGridBottom + 30; - int pixelGridDescY = pixelGridLabelY + 30; - int cellSize = 50; - float cellSizePx = (float)cellSize; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - int monitorCount = GetMonitorCount(); - - if ((monitorCount > 1) && IsKeyPressed(KEY_N)) - { - SetWindowMonitor((GetCurrentMonitor() + 1)%monitorCount); - } - - int currentMonitor = GetCurrentMonitor(); - Vector2 dpiScale = GetWindowScaleDPI(); - cellSizePx = ((float)cellSize)/dpiScale.x; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - int windowCenter = GetScreenWidth()/2; - DrawTextCenter(TextFormat("Dpi Scale: %f", dpiScale.x), windowCenter, 30, 40, DARKGRAY); - DrawTextCenter(TextFormat("Monitor: %d/%d ([N] next monitor)", currentMonitor+1, monitorCount), windowCenter, 70, 20, LIGHTGRAY); - DrawTextCenter(TextFormat("Window is %d \"logical points\" wide", GetScreenWidth()), windowCenter, logicalGridDescY, 20, ORANGE); - - bool odd = true; - for (int i = cellSize; i < GetScreenWidth(); i += cellSize, odd = !odd) - { - if (odd) DrawRectangle(i, logicalGridTop, cellSize, logicalGridBottom-logicalGridTop, ORANGE); - - DrawTextCenter(TextFormat("%d", i), i, logicalGridLabelY, 10, LIGHTGRAY); - DrawLine(i, logicalGridLabelY + 10, i, logicalGridBottom, GRAY); - } - - odd = true; - const int minTextSpace = 30; - int lastTextX = -minTextSpace; - for (int i = cellSize; i < GetRenderWidth(); i += cellSize, odd = !odd) - { - int x = (int)(((float)i)/dpiScale.x); - if (odd) DrawRectangle(x, pixelGridTop, (int)cellSizePx, pixelGridBottom - pixelGridTop, CLITERAL(Color){ 0, 121, 241, 100 }); - - DrawLine(x, pixelGridTop, (int)(((float)i)/dpiScale.x), pixelGridLabelY - 10, GRAY); - - if ((x - lastTextX) >= minTextSpace) - { - DrawTextCenter(TextFormat("%d", i), x, pixelGridLabelY, 10, LIGHTGRAY); - lastTextX = x; - } - } - - DrawTextCenter(TextFormat("Window is %d \"physical pixels\" wide", GetRenderWidth()), windowCenter, pixelGridDescY, 20, BLUE); - - const char *text = "Can you see this?"; - Vector2 size = MeasureTextEx(GetFontDefault(), text, 20, 3); - Vector2 pos = (Vector2){ GetScreenWidth() - size.x - 5, GetScreenHeight() - size.y - 5 }; - DrawTextEx(GetFontDefault(), text, pos, 20, 3, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -static void DrawTextCenter(const char *text, int x, int y, int fontSize, Color color) -{ - Vector2 size = MeasureTextEx(GetFontDefault(), text, (float)fontSize, 3); - Vector2 pos = (Vector2){ x - size.x/2, y - size.y/2 }; - DrawTextEx(GetFontDefault(), text, pos, (float)fontSize, 3, color); -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_demo.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_demo.png deleted file mode 100644 index a5c3539..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_demo.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_testbed.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_testbed.c deleted file mode 100644 index 246ef4b..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_testbed.c +++ /dev/null @@ -1,107 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - highdpi testbed -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example contributed by Ramon Santamaria (@raysan5) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_WINDOW_HIGHDPI); - InitWindow(screenWidth, screenHeight, "raylib [core] example - highdpi testbed"); - - Vector2 scaleDpi = GetWindowScaleDPI(); - Vector2 mousePos = GetMousePosition(); - int currentMonitor = GetCurrentMonitor(); - Vector2 windowPos = GetWindowPosition(); - - int gridSpacing = 40; // Grid spacing in pixels - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - mousePos = GetMousePosition(); - currentMonitor = GetCurrentMonitor(); - scaleDpi = GetWindowScaleDPI(); - windowPos = GetWindowPosition(); - - if (IsKeyPressed(KEY_SPACE)) ToggleBorderlessWindowed(); - if (IsKeyPressed(KEY_F)) ToggleFullscreen(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - // Draw grid - for (int h = 0; h < GetScreenHeight()/gridSpacing + 1; h++) - { - DrawText(TextFormat("%02i", h*gridSpacing), 4, h*gridSpacing - 4, 10, GRAY); - DrawLine(24, h*gridSpacing, GetScreenWidth(), h*gridSpacing, LIGHTGRAY); - } - for (int v = 0; v < GetScreenWidth()/gridSpacing + 1; v++) - { - DrawText(TextFormat("%02i", v*gridSpacing), v*gridSpacing - 10, 4, 10, GRAY); - DrawLine(v*gridSpacing, 20, v*gridSpacing, GetScreenHeight(), LIGHTGRAY); - } - - // Draw UI info - DrawText(TextFormat("CURRENT MONITOR: %i/%i (%ix%i)", currentMonitor + 1, GetMonitorCount(), - GetMonitorWidth(currentMonitor), GetMonitorHeight(currentMonitor)), 50, 50, 20, DARKGRAY); - DrawText(TextFormat("WINDOW POSITION: %ix%i", (int)windowPos.x, (int)windowPos.y), 50, 90, 20, DARKGRAY); - DrawText(TextFormat("SCREEN SIZE: %ix%i", GetScreenWidth(), GetScreenHeight()), 50, 130, 20, DARKGRAY); - DrawText(TextFormat("RENDER SIZE: %ix%i", GetRenderWidth(), GetRenderHeight()), 50, 170, 20, DARKGRAY); - DrawText(TextFormat("SCALE FACTOR: %.2fx%.2f", scaleDpi.x, scaleDpi.y), 50, 210, 20, GRAY); - - // Draw reference rectangles, top-left and bottom-right corners - DrawRectangle(0, 0, 30, 60, RED); - DrawRectangle(GetScreenWidth() - 30, GetScreenHeight() - 60, 30, 60, BLUE); - - // Draw mouse position - DrawCircleV(GetMousePosition(), 20, MAROON); - DrawRectangleRec((Rectangle) { mousePos.x - 25, mousePos.y, 50, 2 }, BLACK); - DrawRectangleRec((Rectangle) { mousePos.x, mousePos.y - 25, 2, 50 }, BLACK); - DrawText(TextFormat("[%i,%i]", GetMouseX(), GetMouseY()), mousePos.x - 44, - (mousePos.y > GetScreenHeight() - 60)? (int)mousePos.y - 46 : (int)mousePos.y + 30, 20, BLACK); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - - // TODO: Unload all loaded resources at this point - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_testbed.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_testbed.png deleted file mode 100644 index a37c821..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_highdpi_testbed.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_actions.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_actions.c deleted file mode 100644 index d5fd74e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_actions.c +++ /dev/null @@ -1,203 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - input actions -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.6 -* -* Example contributed by Jett (@JettMonstersGoBoom) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Jett (@JettMonstersGoBoom) -* -********************************************************************************************/ - -// Simple example for decoding input as actions, allowing remapping of input to different keys or gamepad buttons -// For example instead of using `IsKeyDown(KEY_LEFT)`, you can use `IsActionDown(ACTION_LEFT)` -// which can be reassigned to e.g. KEY_A and also assigned to a gamepad button. the action will trigger with either gamepad or keys - -#include "raylib.h" - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -typedef enum ActionType { - NO_ACTION = 0, - ACTION_UP, - ACTION_DOWN, - ACTION_LEFT, - ACTION_RIGHT, - ACTION_FIRE, - MAX_ACTION -} ActionType; - -// Key and button inputs -typedef struct ActionInput { - int key; - int button; -} ActionInput; - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -static int gamepadIndex = 0; // Gamepad default index -static ActionInput actionInputs[MAX_ACTION] = { 0 }; - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -static bool IsActionPressed(int action); // Check action key/button pressed -static bool IsActionReleased(int action); // Check action key/button released -static bool IsActionDown(int action); // Check action key/button down - -static void SetActionsDefault(void); // Set the "default" keyset -static void SetActionsCursor(void); // Set the "alternate" keyset - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - input actions"); - - // Set default actions - char actionSet = 0; - SetActionsDefault(); - bool releaseAction = false; - - Vector2 position = (Vector2){ 400.0f, 200.0f }; - Vector2 size = (Vector2){ 40.0f, 40.0f }; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - gamepadIndex = 0; // Set gamepad being checked - - if (IsActionDown(ACTION_UP)) position.y -= 2; - if (IsActionDown(ACTION_DOWN)) position.y += 2; - if (IsActionDown(ACTION_LEFT)) position.x -= 2; - if (IsActionDown(ACTION_RIGHT)) position.x += 2; - if (IsActionPressed(ACTION_FIRE)) - { - position.x = (screenWidth-size.x)/2; - position.y = (screenHeight-size.y)/2; - } - - // Register release action for one frame - releaseAction = false; - if (IsActionReleased(ACTION_FIRE)) releaseAction = true; - - // Switch control scheme by pressing TAB - if (IsKeyPressed(KEY_TAB)) - { - actionSet = !actionSet; - if (actionSet == 0) SetActionsDefault(); - else SetActionsCursor(); - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(GRAY); - - DrawRectangleV(position, size, releaseAction? BLUE : RED); - - DrawText((actionSet == 0)? "Current input set: WASD (default)" : "Current input set: Arrow keys", 10, 10, 20, WHITE); - DrawText("Use TAB key to toggles Actions keyset", 10, 50, 20, GREEN); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -// Check action key/button pressed -// NOTE: Combines key pressed and gamepad button pressed in one action -static bool IsActionPressed(int action) -{ - bool result = false; - - if (action < MAX_ACTION) result = (IsKeyPressed(actionInputs[action].key) || IsGamepadButtonPressed(gamepadIndex, actionInputs[action].button)); - - return result; -} - -// Check action key/button released -// NOTE: Combines key released and gamepad button released in one action -static bool IsActionReleased(int action) -{ - bool result = false; - - if (action < MAX_ACTION) result = (IsKeyReleased(actionInputs[action].key) || IsGamepadButtonReleased(gamepadIndex, actionInputs[action].button)); - - return result; -} - -// Check action key/button down -// NOTE: Combines key down and gamepad button down in one action -static bool IsActionDown(int action) -{ - bool result = false; - - if (action < MAX_ACTION) result = (IsKeyDown(actionInputs[action].key) || IsGamepadButtonDown(gamepadIndex, actionInputs[action].button)); - - return result; -} - -// Set the "default" keyset -// NOTE: Here WASD and gamepad buttons on the left side for movement -static void SetActionsDefault(void) -{ - actionInputs[ACTION_UP].key = KEY_W; - actionInputs[ACTION_DOWN].key = KEY_S; - actionInputs[ACTION_LEFT].key = KEY_A; - actionInputs[ACTION_RIGHT].key = KEY_D; - actionInputs[ACTION_FIRE].key = KEY_SPACE; - - actionInputs[ACTION_UP].button = GAMEPAD_BUTTON_LEFT_FACE_UP; - actionInputs[ACTION_DOWN].button = GAMEPAD_BUTTON_LEFT_FACE_DOWN; - actionInputs[ACTION_LEFT].button = GAMEPAD_BUTTON_LEFT_FACE_LEFT; - actionInputs[ACTION_RIGHT].button = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; - actionInputs[ACTION_FIRE].button = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; -} - -// Set the "alternate" keyset -// NOTE: Here cursor keys and gamepad buttons on the right side for movement -static void SetActionsCursor(void) -{ - actionInputs[ACTION_UP].key = KEY_UP; - actionInputs[ACTION_DOWN].key = KEY_DOWN; - actionInputs[ACTION_LEFT].key = KEY_LEFT; - actionInputs[ACTION_RIGHT].key = KEY_RIGHT; - actionInputs[ACTION_FIRE].key = KEY_SPACE; - - actionInputs[ACTION_UP].button = GAMEPAD_BUTTON_RIGHT_FACE_UP; - actionInputs[ACTION_DOWN].button = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; - actionInputs[ACTION_LEFT].button = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; - actionInputs[ACTION_RIGHT].button = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; - actionInputs[ACTION_FIRE].button = GAMEPAD_BUTTON_LEFT_FACE_DOWN; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_actions.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_actions.png deleted file mode 100644 index 757b725..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_actions.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gamepad.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gamepad.c deleted file mode 100644 index 7291c6d..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gamepad.c +++ /dev/null @@ -1,291 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - input gamepad -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* NOTE: This example requires a Gamepad connected to the system -* raylib is configured to work with the following gamepads: -* - Xbox 360 Controller (Xbox 360, Xbox One) -* - PLAYSTATION(R)3 Controller -* Check raylib.h for buttons configuration -* -* Example originally created with raylib 1.1, last time updated with raylib 4.2 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2013-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -// NOTE: Gamepad name ID depends on drivers and OS -#define XBOX_ALIAS_1 "xbox" -#define XBOX_ALIAS_2 "x-box" -#define PS_ALIAS_1 "playstation" -#define PS_ALIAS_2 "sony" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - SetConfigFlags(FLAG_MSAA_4X_HINT); // Set MSAA 4X hint before windows creation - - InitWindow(screenWidth, screenHeight, "raylib [core] example - input gamepad"); - - Texture2D texPs3Pad = LoadTexture("resources/ps3.png"); - Texture2D texXboxPad = LoadTexture("resources/xbox.png"); - - // Set axis deadzones - const float leftStickDeadzoneX = 0.1f; - const float leftStickDeadzoneY = 0.1f; - const float rightStickDeadzoneX = 0.1f; - const float rightStickDeadzoneY = 0.1f; - const float leftTriggerDeadzone = -0.9f; - const float rightTriggerDeadzone = -0.9f; - - Rectangle vibrateButton = { 0 }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - int gamepad = 0; // which gamepad to display - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_LEFT) && gamepad > 0) gamepad--; - if (IsKeyPressed(KEY_RIGHT)) gamepad++; - Vector2 mousePosition = GetMousePosition(); - - vibrateButton = (Rectangle){ 10, 70.0f + 20*GetGamepadAxisCount(gamepad) + 20, 75, 24 }; - if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && CheckCollisionPointRec(mousePosition, vibrateButton)) SetGamepadVibration(gamepad, 1.0, 1.0, 1.0); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - if (IsGamepadAvailable(gamepad)) - { - DrawText(TextFormat("GP%d: %s", gamepad, GetGamepadName(gamepad)), 10, 10, 10, BLACK); - - // Get axis values - float leftStickX = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_X); - float leftStickY = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_Y); - float rightStickX = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_X); - float rightStickY = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_Y); - float leftTrigger = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_TRIGGER); - float rightTrigger = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_TRIGGER); - - // Calculate deadzones - if (leftStickX > -leftStickDeadzoneX && leftStickX < leftStickDeadzoneX) leftStickX = 0.0f; - if (leftStickY > -leftStickDeadzoneY && leftStickY < leftStickDeadzoneY) leftStickY = 0.0f; - if (rightStickX > -rightStickDeadzoneX && rightStickX < rightStickDeadzoneX) rightStickX = 0.0f; - if (rightStickY > -rightStickDeadzoneY && rightStickY < rightStickDeadzoneY) rightStickY = 0.0f; - if (leftTrigger < leftTriggerDeadzone) leftTrigger = -1.0f; - if (rightTrigger < rightTriggerDeadzone) rightTrigger = -1.0f; - - if ((TextFindIndex(TextToLower(GetGamepadName(gamepad)), XBOX_ALIAS_1) > -1) || - (TextFindIndex(TextToLower(GetGamepadName(gamepad)), XBOX_ALIAS_2) > -1)) - { - DrawTexture(texXboxPad, 0, 0, DARKGRAY); - - // Draw buttons: xbox home - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE)) DrawCircle(394, 89, 19, RED); - - // Draw buttons: basic - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE_RIGHT)) DrawCircle(436, 150, 9, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE_LEFT)) DrawCircle(352, 150, 9, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_LEFT)) DrawCircle(501, 151, 15, BLUE); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) DrawCircle(536, 187, 15, LIME); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) DrawCircle(572, 151, 15, MAROON); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_UP)) DrawCircle(536, 115, 15, GOLD); - - // Draw buttons: d-pad - DrawRectangle(317, 202, 19, 71, BLACK); - DrawRectangle(293, 228, 69, 19, BLACK); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_UP)) DrawRectangle(317, 202, 19, 26, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_DOWN)) DrawRectangle(317, 202 + 45, 19, 26, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) DrawRectangle(292, 228, 25, 19, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) DrawRectangle(292 + 44, 228, 26, 19, RED); - - // Draw buttons: left-right back - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_TRIGGER_1)) DrawCircle(259, 61, 20, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawCircle(536, 61, 20, RED); - - // Draw axis: left joystick - Color leftGamepadColor = BLACK; - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_THUMB)) leftGamepadColor = RED; - DrawCircle(259, 152, 39, BLACK); - DrawCircle(259, 152, 34, LIGHTGRAY); - DrawCircle(259 + (int)(leftStickX*20), 152 + (int)(leftStickY*20), 25, leftGamepadColor); - - // Draw axis: right joystick - Color rightGamepadColor = BLACK; - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_THUMB)) rightGamepadColor = RED; - DrawCircle(461, 237, 38, BLACK); - DrawCircle(461, 237, 33, LIGHTGRAY); - DrawCircle(461 + (int)(rightStickX*20), 237 + (int)(rightStickY*20), 25, rightGamepadColor); - - // Draw axis: left-right triggers - DrawRectangle(170, 30, 15, 70, GRAY); - DrawRectangle(604, 30, 15, 70, GRAY); - DrawRectangle(170, 30, 15, (int)(((1 + leftTrigger)/2)*70), RED); - DrawRectangle(604, 30, 15, (int)(((1 + rightTrigger)/2)*70), RED); - - //DrawText(TextFormat("Xbox axis LT: %02.02f", GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_TRIGGER)), 10, 40, 10, BLACK); - //DrawText(TextFormat("Xbox axis RT: %02.02f", GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_TRIGGER)), 10, 60, 10, BLACK); - } - else if ((TextFindIndex(TextToLower(GetGamepadName(gamepad)), PS_ALIAS_1) > -1) || - (TextFindIndex(TextToLower(GetGamepadName(gamepad)), PS_ALIAS_2) > -1)) - { - DrawTexture(texPs3Pad, 0, 0, DARKGRAY); - - // Draw buttons: ps - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE)) DrawCircle(396, 222, 13, RED); - - // Draw buttons: basic - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE_LEFT)) DrawRectangle(328, 170, 32, 13, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE_RIGHT)) DrawTriangle((Vector2){ 436, 168 }, (Vector2){ 436, 185 }, (Vector2){ 464, 177 }, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_UP)) DrawCircle(557, 144, 13, LIME); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) DrawCircle(586, 173, 13, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) DrawCircle(557, 203, 13, VIOLET); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_LEFT)) DrawCircle(527, 173, 13, PINK); - - // Draw buttons: d-pad - DrawRectangle(225, 132, 24, 84, BLACK); - DrawRectangle(195, 161, 84, 25, BLACK); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_UP)) DrawRectangle(225, 132, 24, 29, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_DOWN)) DrawRectangle(225, 132 + 54, 24, 30, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) DrawRectangle(195, 161, 30, 25, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) DrawRectangle(195 + 54, 161, 30, 25, RED); - - // Draw buttons: left-right back buttons - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_TRIGGER_1)) DrawCircle(239, 82, 20, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawCircle(557, 82, 20, RED); - - // Draw axis: left joystick - Color leftGamepadColor = BLACK; - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_THUMB)) leftGamepadColor = RED; - DrawCircle(319, 255, 35, BLACK); - DrawCircle(319, 255, 31, LIGHTGRAY); - DrawCircle(319 + (int)(leftStickX*20), 255 + (int)(leftStickY*20), 25, leftGamepadColor); - - // Draw axis: right joystick - Color rightGamepadColor = BLACK; - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_THUMB)) rightGamepadColor = RED; - DrawCircle(475, 255, 35, BLACK); - DrawCircle(475, 255, 31, LIGHTGRAY); - DrawCircle(475 + (int)(rightStickX*20), 255 + (int)(rightStickY*20), 25, rightGamepadColor); - - // Draw axis: left-right triggers - DrawRectangle(169, 48, 15, 70, GRAY); - DrawRectangle(611, 48, 15, 70, GRAY); - DrawRectangle(169, 48, 15, (int)(((1 + leftTrigger)/2)*70), RED); - DrawRectangle(611, 48, 15, (int)(((1 + rightTrigger)/2)*70), RED); - } - else - { - // Draw background: generic - DrawRectangleRounded((Rectangle){ 175, 110, 460, 220}, 0.3f, 16, DARKGRAY); - - // Draw buttons: basic - DrawCircle(365, 170, 12, RAYWHITE); - DrawCircle(405, 170, 12, RAYWHITE); - DrawCircle(445, 170, 12, RAYWHITE); - DrawCircle(516, 191, 17, RAYWHITE); - DrawCircle(551, 227, 17, RAYWHITE); - DrawCircle(587, 191, 17, RAYWHITE); - DrawCircle(551, 155, 17, RAYWHITE); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE_LEFT)) DrawCircle(365, 170, 10, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE)) DrawCircle(405, 170, 10, GREEN); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_MIDDLE_RIGHT)) DrawCircle(445, 170, 10, BLUE); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_LEFT)) DrawCircle(516, 191, 15, GOLD); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) DrawCircle(551, 227, 15, BLUE); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) DrawCircle(587, 191, 15, GREEN); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_UP)) DrawCircle(551, 155, 15, RED); - - // Draw buttons: d-pad - DrawRectangle(245, 145, 28, 88, RAYWHITE); - DrawRectangle(215, 174, 88, 29, RAYWHITE); - DrawRectangle(247, 147, 24, 84, BLACK); - DrawRectangle(217, 176, 84, 25, BLACK); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_UP)) DrawRectangle(247, 147, 24, 29, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_DOWN)) DrawRectangle(247, 147 + 54, 24, 30, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) DrawRectangle(217, 176, 30, 25, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) DrawRectangle(217 + 54, 176, 30, 25, RED); - - // Draw buttons: left-right back - DrawRectangleRounded((Rectangle){ 215, 98, 100, 10}, 0.5f, 16, DARKGRAY); - DrawRectangleRounded((Rectangle){ 495, 98, 100, 10}, 0.5f, 16, DARKGRAY); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_TRIGGER_1)) DrawRectangleRounded((Rectangle){ 215, 98, 100, 10}, 0.5f, 16, RED); - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawRectangleRounded((Rectangle){ 495, 98, 100, 10}, 0.5f, 16, RED); - - // Draw axis: left joystick - Color leftGamepadColor = BLACK; - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_THUMB)) leftGamepadColor = RED; - DrawCircle(345, 260, 40, BLACK); - DrawCircle(345, 260, 35, LIGHTGRAY); - DrawCircle(345 + (int)(leftStickX*20), 260 + (int)(leftStickY*20), 25, leftGamepadColor); - - // Draw axis: right joystick - Color rightGamepadColor = BLACK; - if (IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_THUMB)) rightGamepadColor = RED; - DrawCircle(465, 260, 40, BLACK); - DrawCircle(465, 260, 35, LIGHTGRAY); - DrawCircle(465 + (int)(rightStickX*20), 260 + (int)(rightStickY*20), 25, rightGamepadColor); - - // Draw axis: left-right triggers - DrawRectangle(151, 110, 15, 70, GRAY); - DrawRectangle(644, 110, 15, 70, GRAY); - DrawRectangle(151, 110, 15, (int)(((1 + leftTrigger)/2)*70), RED); - DrawRectangle(644, 110, 15, (int)(((1 + rightTrigger)/2)*70), RED); - } - - DrawText(TextFormat("DETECTED AXIS [%i]:", GetGamepadAxisCount(gamepad)), 10, 50, 10, MAROON); - - for (int i = 0; i < GetGamepadAxisCount(gamepad); i++) - { - DrawText(TextFormat("AXIS %i: %.02f", i, GetGamepadAxisMovement(gamepad, i)), 20, 70 + 20*i, 10, DARKGRAY); - } - - // Draw vibrate button - DrawRectangleRec(vibrateButton, SKYBLUE); - DrawText("VIBRATE", (int)(vibrateButton.x + 14), (int)(vibrateButton.y + 1), 10, DARKGRAY); - - if (GetGamepadButtonPressed() != GAMEPAD_BUTTON_UNKNOWN) DrawText(TextFormat("DETECTED BUTTON: %i", GetGamepadButtonPressed()), 10, 430, 10, RED); - else DrawText("DETECTED BUTTON: NONE", 10, 430, 10, GRAY); - } - else - { - DrawText(TextFormat("GP%d: NOT DETECTED", gamepad), 10, 10, 10, GRAY); - DrawTexture(texXboxPad, 0, 0, LIGHTGRAY); - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(texPs3Pad); - UnloadTexture(texXboxPad); - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gamepad.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gamepad.png deleted file mode 100644 index 5996eec..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gamepad.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures.c deleted file mode 100644 index e9f43ee..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures.c +++ /dev/null @@ -1,123 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - input gestures -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.4, last time updated with raylib 4.2 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2016-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define MAX_GESTURE_STRINGS 20 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - input gestures"); - - Vector2 touchPosition = { 0, 0 }; - Rectangle touchArea = { 220, 10, screenWidth - 230.0f, screenHeight - 20.0f }; - - int gesturesCount = 0; - char gestureStrings[MAX_GESTURE_STRINGS][32]; - - int currentGesture = GESTURE_NONE; - int lastGesture = GESTURE_NONE; - - //SetGesturesEnabled(0b0000000000001001); // Enable only some gestures to be detected - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - lastGesture = currentGesture; - currentGesture = GetGestureDetected(); - touchPosition = GetTouchPosition(0); - - if (CheckCollisionPointRec(touchPosition, touchArea) && (currentGesture != GESTURE_NONE)) - { - if (currentGesture != lastGesture) - { - // Store gesture string - switch (currentGesture) - { - case GESTURE_TAP: TextCopy(gestureStrings[gesturesCount], "GESTURE TAP"); break; - case GESTURE_DOUBLETAP: TextCopy(gestureStrings[gesturesCount], "GESTURE DOUBLETAP"); break; - case GESTURE_HOLD: TextCopy(gestureStrings[gesturesCount], "GESTURE HOLD"); break; - case GESTURE_DRAG: TextCopy(gestureStrings[gesturesCount], "GESTURE DRAG"); break; - case GESTURE_SWIPE_RIGHT: TextCopy(gestureStrings[gesturesCount], "GESTURE SWIPE RIGHT"); break; - case GESTURE_SWIPE_LEFT: TextCopy(gestureStrings[gesturesCount], "GESTURE SWIPE LEFT"); break; - case GESTURE_SWIPE_UP: TextCopy(gestureStrings[gesturesCount], "GESTURE SWIPE UP"); break; - case GESTURE_SWIPE_DOWN: TextCopy(gestureStrings[gesturesCount], "GESTURE SWIPE DOWN"); break; - case GESTURE_PINCH_IN: TextCopy(gestureStrings[gesturesCount], "GESTURE PINCH IN"); break; - case GESTURE_PINCH_OUT: TextCopy(gestureStrings[gesturesCount], "GESTURE PINCH OUT"); break; - default: break; - } - - gesturesCount++; - - // Reset gestures strings - if (gesturesCount >= MAX_GESTURE_STRINGS) - { - for (int i = 0; i < MAX_GESTURE_STRINGS; i++) TextCopy(gestureStrings[i], "\0"); - - gesturesCount = 0; - } - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawRectangleRec(touchArea, GRAY); - DrawRectangle(225, 15, screenWidth - 240, screenHeight - 30, RAYWHITE); - - DrawText("GESTURES TEST AREA", screenWidth - 270, screenHeight - 40, 20, Fade(GRAY, 0.5f)); - - for (int i = 0; i < gesturesCount; i++) - { - if (i%2 == 0) DrawRectangle(10, 30 + 20*i, 200, 20, Fade(LIGHTGRAY, 0.5f)); - else DrawRectangle(10, 30 + 20*i, 200, 20, Fade(LIGHTGRAY, 0.3f)); - - if (i < gesturesCount - 1) DrawText(gestureStrings[i], 35, 36 + 20*i, 10, DARKGRAY); - else DrawText(gestureStrings[i], 35, 36 + 20*i, 10, MAROON); - } - - DrawRectangleLines(10, 29, 200, screenHeight - 50, GRAY); - DrawText("DETECTED GESTURES", 50, 15, 10, GRAY); - - if (currentGesture != GESTURE_NONE) DrawCircleV(touchPosition, 30, MAROON); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures.png deleted file mode 100644 index d2bbb5d..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures_testbed.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures_testbed.c deleted file mode 100644 index 6cb09d0..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures_testbed.c +++ /dev/null @@ -1,315 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - input gestures testbed -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 5.0, last time updated with raylib 6.0 -* -* Example contributed by ubkp (@ubkp) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2023-2025 ubkp (@ubkp) -* -********************************************************************************************/ - -#include "raylib.h" - -#include // Required for the protractor angle graphic drawing - -#define GESTURE_LOG_SIZE 20 -#define MAX_TOUCH_COUNT 32 - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static char const *GetGestureName(int gesture); // Get text string for gesture value -static Color GetGestureColor(int gesture); // Get color for gesture value - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - input gestures testbed"); - - Vector2 messagePosition = { 160, 7 }; - - // Last gesture variables definitions - int lastGesture = 0; - Vector2 lastGesturePosition = { 165, 130 }; - - // Gesture log variables definitions - // NOTE: The gesture log uses an array (as an inverted circular queue) to store the performed gestures - char gestureLog[GESTURE_LOG_SIZE][12] = { "" }; - // NOTE: The index for the inverted circular queue (moving from last to first direction, then looping around) - int gestureLogIndex = GESTURE_LOG_SIZE; - int previousGesture = 0; - - // Log mode values: - // - 0 shows repeated events - // - 1 hides repeated events - // - 2 shows repeated events but hide hold events - // - 3 hides repeated events and hide hold events - int logMode = 1; - - Color gestureColor = { 0, 0, 0, 255 }; - Rectangle logButton1 = { 53, 7, 48, 26 }; - Rectangle logButton2 = { 108, 7, 36, 26 }; - Vector2 gestureLogPosition = { 10, 10 }; - - // Protractor variables definitions - float angleLength = 90.0f; - float currentAngleDegrees = 0.0f; - Vector2 finalVector = { 0.0f, 0.0f }; - Vector2 protractorPosition = { 266.0f, 315.0f }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //-------------------------------------------------------------------------------------- - // Handle common gestures data - int i, ii; // Iterators that will be reused by all for loops - const int currentGesture = GetGestureDetected(); - const float currentDragDegrees = GetGestureDragAngle(); - const float currentPitchDegrees = GetGesturePinchAngle(); - const int touchCount = GetTouchPointCount(); - - // Handle last gesture - if ((currentGesture != 0) && (currentGesture != 4) && (currentGesture != previousGesture)) - lastGesture = currentGesture; // Filter the meaningful gestures (1, 2, 8 to 512) for the display - - // Handle gesture log - if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) - { - if (CheckCollisionPointRec(GetMousePosition(), logButton1)) - { - switch (logMode) - { - case 3: logMode = 2; break; - case 2: logMode = 3; break; - case 1: logMode = 0; break; - default: logMode = 1; break; - } - } - else if (CheckCollisionPointRec(GetMousePosition(), logButton2)) - { - switch (logMode) - { - case 3: logMode = 1; break; - case 2: logMode = 0; break; - case 1: logMode = 3; break; - default: logMode = 2; break; - } - } - } - - int fillLog = 0; // Gate variable to be used to allow or not the gesture log to be filled - if (currentGesture !=0) - { - if (logMode == 3) // 3 hides repeated events and hide hold events - { - if (((currentGesture != 4) && (currentGesture != previousGesture)) || (currentGesture < 3)) fillLog = 1; - } - else if (logMode == 2) // 2 shows repeated events but hide hold events - { - if (currentGesture != 4) fillLog = 1; - } - else if (logMode == 1) // 1 hides repeated events - { - if (currentGesture != previousGesture) fillLog = 1; - } - else // 0 shows repeated events - { - fillLog = 1; - } - } - - if (fillLog) // If one of the conditions from logMode was met, fill the gesture log - { - previousGesture = currentGesture; - gestureColor = GetGestureColor(currentGesture); - if (gestureLogIndex <= 0) gestureLogIndex = GESTURE_LOG_SIZE; - gestureLogIndex--; - - // Copy the gesture respective name to the gesture log array - TextCopy(gestureLog[gestureLogIndex], GetGestureName(currentGesture)); - } - - // Handle protractor - if (currentGesture > 255) currentAngleDegrees = currentPitchDegrees; // Pinch In and Pinch Out - else if (currentGesture > 15) currentAngleDegrees = currentDragDegrees; // Swipe Right, Swipe Left, Swipe Up and Swipe Down - else if (currentGesture > 0) currentAngleDegrees = 0.0f; // Tap, Doubletap, Hold and Grab - - float currentAngleRadians = ((currentAngleDegrees + 90.0f)*PI/180); // Convert the current angle to Radians - // Calculate the final vector for display - finalVector = (Vector2){ (angleLength*sinf(currentAngleRadians)) + protractorPosition.x, - (angleLength*cosf(currentAngleRadians)) + protractorPosition.y }; - - // Handle touch and mouse pointer points - Vector2 touchPosition[MAX_TOUCH_COUNT] = { 0 }; - Vector2 mousePosition = { 0 }; - if (currentGesture != GESTURE_NONE) - { - if (touchCount != 0) - { - for (i = 0; i < touchCount; i++) touchPosition[i] = GetTouchPosition(i); // Fill the touch positions - } - else mousePosition = GetMousePosition(); - } - //-------------------------------------------------------------------------------------- - - // Draw - //-------------------------------------------------------------------------------------- - BeginDrawing(); - ClearBackground(RAYWHITE); - - // Draw common elements - DrawText("*", (int)messagePosition.x + 5, (int)messagePosition.y + 5, 10, BLACK); - DrawText("Example optimized for Web/HTML5\non Smartphones with Touch Screen.", (int)messagePosition.x + 15, (int)messagePosition.y + 5, 10, BLACK); - DrawText("*", (int)messagePosition.x + 5, (int)messagePosition.y + 35, 10, BLACK); - DrawText("While running on Desktop Web Browsers,\ninspect and turn on Touch Emulation.", (int)messagePosition.x + 15, (int)messagePosition.y + 35, 10, BLACK); - - // Draw last gesture - DrawText("Last gesture", (int)lastGesturePosition.x + 33, (int)lastGesturePosition.y - 47, 20, BLACK); - DrawText("Swipe Tap Pinch Touch", (int)lastGesturePosition.x + 17, (int)lastGesturePosition.y - 18, 10, BLACK); - DrawRectangle((int)lastGesturePosition.x + 20, (int)lastGesturePosition.y, 20, 20, lastGesture == GESTURE_SWIPE_UP ? RED : LIGHTGRAY); - DrawRectangle((int)lastGesturePosition.x, (int)lastGesturePosition.y + 20, 20, 20, lastGesture == GESTURE_SWIPE_LEFT ? RED : LIGHTGRAY); - DrawRectangle((int)lastGesturePosition.x + 40, (int)lastGesturePosition.y + 20, 20, 20, lastGesture == GESTURE_SWIPE_RIGHT ? RED : LIGHTGRAY); - DrawRectangle((int)lastGesturePosition.x + 20, (int)lastGesturePosition.y + 40, 20, 20, lastGesture == GESTURE_SWIPE_DOWN ? RED : LIGHTGRAY); - DrawCircle((int)lastGesturePosition.x + 80, (int)lastGesturePosition.y + 16, 10, lastGesture == GESTURE_TAP ? BLUE : LIGHTGRAY); - DrawRing( (Vector2){lastGesturePosition.x + 103, lastGesturePosition.y + 16}, 6.0f, 11.0f, 0.0f, 360.0f, 0, lastGesture == GESTURE_DRAG ? LIME : LIGHTGRAY); - DrawCircle((int)lastGesturePosition.x + 80, (int)lastGesturePosition.y + 43, 10, lastGesture == GESTURE_DOUBLETAP ? SKYBLUE : LIGHTGRAY); - DrawCircle((int)lastGesturePosition.x + 103, (int)lastGesturePosition.y + 43, 10, lastGesture == GESTURE_DOUBLETAP ? SKYBLUE : LIGHTGRAY); - DrawTriangle((Vector2){ lastGesturePosition.x + 122, lastGesturePosition.y + 16 }, (Vector2){ lastGesturePosition.x + 137, lastGesturePosition.y + 26 }, (Vector2){lastGesturePosition.x + 137, lastGesturePosition.y + 6 }, lastGesture == GESTURE_PINCH_OUT? ORANGE : LIGHTGRAY); - DrawTriangle((Vector2){ lastGesturePosition.x + 147, lastGesturePosition.y + 6 }, (Vector2){ lastGesturePosition.x + 147, lastGesturePosition.y + 26 }, (Vector2){ lastGesturePosition.x + 162, lastGesturePosition.y + 16 }, lastGesture == GESTURE_PINCH_OUT? ORANGE : LIGHTGRAY); - DrawTriangle((Vector2){ lastGesturePosition.x + 125, lastGesturePosition.y + 33 }, (Vector2){ lastGesturePosition.x + 125, lastGesturePosition.y + 53 }, (Vector2){ lastGesturePosition.x + 140, lastGesturePosition.y + 43 }, lastGesture == GESTURE_PINCH_IN? VIOLET : LIGHTGRAY); - DrawTriangle((Vector2){ lastGesturePosition.x + 144, lastGesturePosition.y + 43 }, (Vector2){ lastGesturePosition.x + 159, lastGesturePosition.y + 53 }, (Vector2){ lastGesturePosition.x + 159, lastGesturePosition.y + 33 }, lastGesture == GESTURE_PINCH_IN? VIOLET : LIGHTGRAY); - for (i = 0; i < 4; i++) DrawCircle((int)lastGesturePosition.x + 180, (int)lastGesturePosition.y + 7 + i*15, 5, touchCount <= i? LIGHTGRAY : gestureColor); - - // Draw gesture log - DrawText("Log", (int)gestureLogPosition.x, (int)gestureLogPosition.y, 20, BLACK); - - // Loop in both directions to print the gesture log array in the inverted order (and looping around if the index started somewhere in the middle) - for (i = 0, ii = gestureLogIndex; i < GESTURE_LOG_SIZE; i++, ii = (ii + 1)%GESTURE_LOG_SIZE) DrawText(gestureLog[ii], (int)gestureLogPosition.x, (int)gestureLogPosition.y + 410 - i*20, 20, (i == 0 ? gestureColor : LIGHTGRAY)); - Color logButton1Color, logButton2Color; - switch (logMode) - { - case 3: logButton1Color=MAROON; logButton2Color=MAROON; break; - case 2: logButton1Color=GRAY; logButton2Color=MAROON; break; - case 1: logButton1Color=MAROON; logButton2Color=GRAY; break; - default: logButton1Color=GRAY; logButton2Color=GRAY; break; - } - DrawRectangleRec(logButton1, logButton1Color); - DrawText("Hide", (int)logButton1.x + 7, (int)logButton1.y + 3, 10, WHITE); - DrawText("Repeat", (int)logButton1.x + 7, (int)logButton1.y + 13, 10, WHITE); - DrawRectangleRec(logButton2, logButton2Color); - DrawText("Hide", (int)logButton1.x + 62, (int)logButton1.y + 3, 10, WHITE); - DrawText("Hold", (int)logButton1.x + 62, (int)logButton1.y + 13, 10, WHITE); - - // Draw protractor - DrawText("Angle", (int)protractorPosition.x + 55, (int)protractorPosition.y + 76, 10, BLACK); - const char *angleString = TextFormat("%f", currentAngleDegrees); - const int angleStringDot = TextFindIndex(angleString, "."); - const char *angleStringTrim = TextSubtext(angleString, 0, angleStringDot + 3); - DrawText( angleStringTrim, (int)protractorPosition.x + 55, (int)protractorPosition.y + 92, 20, gestureColor); - DrawCircleV(protractorPosition, 80.0f, WHITE); - DrawLineEx((Vector2){ protractorPosition.x - 90, protractorPosition.y }, (Vector2){ protractorPosition.x + 90, protractorPosition.y }, 3.0f, LIGHTGRAY); - DrawLineEx((Vector2){ protractorPosition.x, protractorPosition.y - 90 }, (Vector2){ protractorPosition.x, protractorPosition.y + 90 }, 3.0f, LIGHTGRAY); - DrawLineEx((Vector2){ protractorPosition.x - 80, protractorPosition.y - 45 }, (Vector2){ protractorPosition.x + 80, protractorPosition.y + 45 }, 3.0f, GREEN); - DrawLineEx((Vector2){ protractorPosition.x - 80, protractorPosition.y + 45 }, (Vector2){ protractorPosition.x + 80, protractorPosition.y - 45 }, 3.0f, GREEN); - DrawText("0", (int)protractorPosition.x + 96, (int)protractorPosition.y - 9, 20, BLACK); - DrawText("30", (int)protractorPosition.x + 74, (int)protractorPosition.y - 68, 20, BLACK); - DrawText("90", (int)protractorPosition.x - 11, (int)protractorPosition.y - 110, 20, BLACK); - DrawText("150", (int)protractorPosition.x - 100, (int)protractorPosition.y - 68, 20, BLACK); - DrawText("180", (int)protractorPosition.x - 124, (int)protractorPosition.y - 9, 20, BLACK); - DrawText("210", (int)protractorPosition.x - 100, (int)protractorPosition.y + 50, 20, BLACK); - DrawText("270", (int)protractorPosition.x - 18, (int)protractorPosition.y + 92, 20, BLACK); - DrawText("330", (int)protractorPosition.x + 72, (int)protractorPosition.y + 50, 20, BLACK); - if (currentAngleDegrees != 0.0f) DrawLineEx(protractorPosition, finalVector, 3.0f, gestureColor); - - // Draw touch and mouse pointer points - if (currentGesture != GESTURE_NONE) - { - if ( touchCount != 0 ) - { - for (i = 0; i < touchCount; i++) - { - DrawCircleV(touchPosition[i], 50.0f, Fade(gestureColor, 0.5f)); - DrawCircleV(touchPosition[i], 5.0f, gestureColor); - } - - if (touchCount == 2) DrawLineEx(touchPosition[0], touchPosition[1], ((currentGesture == 512)? 8.0f : 12.0f), gestureColor); - } - else - { - DrawCircleV(mousePosition, 35.0f, Fade(gestureColor, 0.5f)); - DrawCircleV(mousePosition, 5.0f, gestureColor); - } - } - - EndDrawing(); - //-------------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -// Get text string for gesture value -static char const *GetGestureName(int gesture) -{ - switch (gesture) - { - case 0: return "None"; break; - case 1: return "Tap"; break; - case 2: return "Double Tap"; break; - case 4: return "Hold"; break; - case 8: return "Drag"; break; - case 16: return "Swipe Right"; break; - case 32: return "Swipe Left"; break; - case 64: return "Swipe Up"; break; - case 128: return "Swipe Down"; break; - case 256: return "Pinch In"; break; - case 512: return "Pinch Out"; break; - default: return "Unknown"; break; - } -} - -// Get color for gesture value -static Color GetGestureColor(int gesture) -{ - switch (gesture) - { - case 0: return BLACK; break; - case 1: return BLUE; break; - case 2: return SKYBLUE; break; - case 4: return BLACK; break; - case 8: return LIME; break; - case 16: return RED; break; - case 32: return RED; break; - case 64: return RED; break; - case 128: return RED; break; - case 256: return VIOLET; break; - case 512: return ORANGE; break; - default: return BLACK; break; - } -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures_testbed.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures_testbed.png deleted file mode 100644 index dd604e8..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_gestures_testbed.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_keys.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_keys.c deleted file mode 100644 index c5b5261..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_keys.c +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - input keys -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.0, last time updated with raylib 1.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - input keys"); - - Vector2 ballPosition = { (float)screenWidth/2, (float)screenHeight/2 }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyDown(KEY_RIGHT)) ballPosition.x += 2.0f; - if (IsKeyDown(KEY_LEFT)) ballPosition.x -= 2.0f; - if (IsKeyDown(KEY_UP)) ballPosition.y -= 2.0f; - if (IsKeyDown(KEY_DOWN)) ballPosition.y += 2.0f; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("move the ball with arrow keys", 10, 10, 20, DARKGRAY); - - DrawCircleV(ballPosition, 50, MAROON); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_keys.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_keys.png deleted file mode 100644 index 4837032..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_keys.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse.c deleted file mode 100644 index d461069..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse.c +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - input mouse -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.0, last time updated with raylib 5.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - input mouse"); - - Vector2 ballPosition = { -100.0f, -100.0f }; - Color ballColor = DARKBLUE; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //--------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_H)) - { - if (IsCursorHidden()) ShowCursor(); - else HideCursor(); - } - - ballPosition = GetMousePosition(); - - if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) ballColor = MAROON; - else if (IsMouseButtonPressed(MOUSE_BUTTON_MIDDLE)) ballColor = LIME; - else if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) ballColor = DARKBLUE; - else if (IsMouseButtonPressed(MOUSE_BUTTON_SIDE)) ballColor = PURPLE; - else if (IsMouseButtonPressed(MOUSE_BUTTON_EXTRA)) ballColor = YELLOW; - else if (IsMouseButtonPressed(MOUSE_BUTTON_FORWARD)) ballColor = ORANGE; - else if (IsMouseButtonPressed(MOUSE_BUTTON_BACK)) ballColor = BEIGE; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawCircleV(ballPosition, 40, ballColor); - - DrawText("move ball with mouse and click mouse button to change color", 10, 10, 20, DARKGRAY); - DrawText("Press 'H' to toggle cursor visibility", 10, 30, 20, DARKGRAY); - - if (IsCursorHidden()) DrawText("CURSOR HIDDEN", 20, 60, 20, RED); - else DrawText("CURSOR VISIBLE", 20, 60, 20, LIME); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse.png deleted file mode 100644 index a96e7fa..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse_wheel.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse_wheel.c deleted file mode 100644 index b5d0a0e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse_wheel.c +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - input mouse wheel -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.1, last time updated with raylib 1.3 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - input mouse wheel"); - - int boxPositionY = screenHeight/2 - 40; - int scrollSpeed = 4; // Scrolling speed in pixels - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - boxPositionY -= (int)(GetMouseWheelMove()*scrollSpeed); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawRectangle(screenWidth/2 - 40, boxPositionY, 80, 80, MAROON); - - DrawText("Use mouse wheel to move the cube up and down!", 10, 10, 20, GRAY); - DrawText(TextFormat("Box position Y: %03i", boxPositionY), 10, 40, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse_wheel.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse_wheel.png deleted file mode 100644 index 26a1f24..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_mouse_wheel.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_multitouch.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_multitouch.c deleted file mode 100644 index 47ad91d..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_multitouch.c +++ /dev/null @@ -1,81 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - input multitouch -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 2.1, last time updated with raylib 2.5 -* -* Example contributed by Berni (@Berni8k) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2019-2025 Berni (@Berni8k) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define MAX_TOUCH_POINTS 10 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - input multitouch"); - - Vector2 touchPositions[MAX_TOUCH_POINTS] = { 0 }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //--------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Get the touch point count ( how many fingers are touching the screen ) - int tCount = GetTouchPointCount(); - // Clamp touch points available ( set the maximum touch points allowed ) - if (tCount > MAX_TOUCH_POINTS) tCount = MAX_TOUCH_POINTS; - // Get touch points positions - for (int i = 0; i < tCount; i++) touchPositions[i] = GetTouchPosition(i); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - for (int i = 0; i < tCount; i++) - { - // Make sure point is not (0, 0) as this means there is no touch for it - if ((touchPositions[i].x > 0) && (touchPositions[i].y > 0)) - { - // Draw circle and touch index number - DrawCircleV(touchPositions[i], 34, ORANGE); - DrawText(TextFormat("%d", i), (int)touchPositions[i].x - 10, (int)touchPositions[i].y - 70, 40, BLACK); - } - } - - DrawText("touch the screen at multiple locations to get multiple balls", 10, 10, 20, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_multitouch.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_multitouch.png deleted file mode 100644 index 74284f8..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_multitouch.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_virtual_controls.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_virtual_controls.c deleted file mode 100644 index de4ac7e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_virtual_controls.c +++ /dev/null @@ -1,171 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - input virtual controls -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 5.0, last time updated with raylib 5.0 -* -* Example contributed by GreenSnakeLinux (@GreenSnakeLinux), -* reviewed by Ramon Santamaria (@raysan5), oblerion (@oblerion) and danilwhale (@danilwhale) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2024-2025 GreenSnakeLinux (@GreenSnakeLinux) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include - -typedef enum { - BUTTON_NONE = -1, - BUTTON_UP, - BUTTON_LEFT, - BUTTON_RIGHT, - BUTTON_DOWN, - BUTTON_MAX -} PadButton; - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - input virtual controls"); - - Vector2 padPosition = { 100, 350 }; - float buttonRadius = 30; - - Vector2 buttonPositions[BUTTON_MAX] = { - { padPosition.x,padPosition.y - buttonRadius*1.5f }, // Up - { padPosition.x - buttonRadius*1.5f, padPosition.y }, // Left - { padPosition.x + buttonRadius*1.5f, padPosition.y }, // Right - { padPosition.x, padPosition.y + buttonRadius*1.5f } // Down - }; - - Vector2 arrowTris[4][3] = { - // Up - { - { buttonPositions[0].x, buttonPositions[0].y - 12 }, - { buttonPositions[0].x - 9, buttonPositions[0].y + 9 }, - { buttonPositions[0].x + 9, buttonPositions[0].y + 9 } - }, - // Left - { - { buttonPositions[1].x + 9, buttonPositions[1].y - 9 }, - { buttonPositions[1].x - 12, buttonPositions[1].y }, - { buttonPositions[1].x + 9, buttonPositions[1].y + 9 } - }, - // Right - { - { buttonPositions[2].x + 12, buttonPositions[2].y }, - { buttonPositions[2].x - 9, buttonPositions[2].y - 9 }, - { buttonPositions[2].x - 9, buttonPositions[2].y + 9 } - }, - // Down - { - { buttonPositions[3].x - 9, buttonPositions[3].y - 9 }, - { buttonPositions[3].x, buttonPositions[3].y + 12 }, - { buttonPositions[3].x + 9, buttonPositions[3].y - 9 } - } - }; - - Color buttonLabelColors[BUTTON_MAX] = { - YELLOW, // Up - BLUE, // Left - RED, // Right - GREEN // Down - }; - - int pressedButton = BUTTON_NONE; - Vector2 inputPosition = { 0, 0 }; - - Vector2 playerPosition = { (float)screenWidth/2, (float)screenHeight/2 }; - float playerSpeed = 75; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //-------------------------------------------------------------------------- - if ((GetTouchPointCount() > 0)) inputPosition = GetTouchPosition(0); // Use touch position - else inputPosition = GetMousePosition(); // Use mouse position - - // Reset pressed button to none - pressedButton = BUTTON_NONE; - - // Make sure user is pressing left mouse button if they're from desktop - if ((GetTouchPointCount() > 0) || - ((GetTouchPointCount() == 0) && IsMouseButtonDown(MOUSE_BUTTON_LEFT))) - { - // Find nearest D-Pad button to the input position - for (int i = 0; i < BUTTON_MAX; i++) - { - float distX = fabsf(buttonPositions[i].x - inputPosition.x); - float distY = fabsf(buttonPositions[i].y - inputPosition.y); - - if ((distX + distY < buttonRadius)) - { - pressedButton = i; - break; - } - } - } - - // Move player according to pressed button - switch (pressedButton) - { - case BUTTON_UP: playerPosition.y -= playerSpeed*GetFrameTime(); break; - case BUTTON_LEFT: playerPosition.x -= playerSpeed*GetFrameTime(); break; - case BUTTON_RIGHT: playerPosition.x += playerSpeed*GetFrameTime(); break; - case BUTTON_DOWN: playerPosition.y += playerSpeed*GetFrameTime(); break; - default: break; - }; - //-------------------------------------------------------------------------- - - // Draw - //-------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - // Draw world - DrawCircleV(playerPosition, 50, MAROON); - - // Draw GUI - for (int i = 0; i < BUTTON_MAX; i++) - { - DrawCircleV(buttonPositions[i], buttonRadius, (i == pressedButton)? DARKGRAY : BLACK); - - DrawTriangle( - arrowTris[i][0], - arrowTris[i][1], - arrowTris[i][2], - buttonLabelColors[i] - ); - } - - DrawText("move the player with D-Pad buttons", 10, 10, 20, DARKGRAY); - - EndDrawing(); - //-------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_virtual_controls.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_virtual_controls.png deleted file mode 100644 index 83097a5..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_input_virtual_controls.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_keyboard_testbed.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_keyboard_testbed.c deleted file mode 100644 index f65260b..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_keyboard_testbed.c +++ /dev/null @@ -1,333 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - keyboard testbed -* -* Example complexity rating: [★★☆☆] 2/4 -* -* NOTE: raylib defined keys refer to ENG-US Keyboard layout, -* mapping to other layouts is up to the user -* -* Example originally created with raylib 5.6, last time updated with raylib 5.6 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2026 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define KEY_REC_SPACING 4 // Space in pixels between key rectangles - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static const char *GetKeyText(int key); -static void GuiKeyboardKey(Rectangle bounds, int key); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - keyboard testbed"); - SetExitKey(KEY_NULL); // Avoid exit on KEY_ESCAPE - - // Keyboard line 01 - int line01KeyWidths[15] = { 0 }; - for (int i = 0; i < 15; i++) line01KeyWidths[i] = 45; - line01KeyWidths[13] = 62; // PRINTSCREEN - int line01Keys[15] = { - KEY_ESCAPE, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, - KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, - KEY_F12, KEY_PRINT_SCREEN, KEY_PAUSE - }; - - // Keyboard line 02 - int line02KeyWidths[15] = { 0 }; - for (int i = 0; i < 15; i++) line02KeyWidths[i] = 45; - line02KeyWidths[0] = 25; // GRAVE - line02KeyWidths[13] = 82; // BACKSPACE - int line02Keys[15] = { - KEY_GRAVE, KEY_ONE, KEY_TWO, KEY_THREE, KEY_FOUR, - KEY_FIVE, KEY_SIX, KEY_SEVEN, KEY_EIGHT, KEY_NINE, - KEY_ZERO, KEY_MINUS, KEY_EQUAL, KEY_BACKSPACE, KEY_DELETE }; - - // Keyboard line 03 - int line03KeyWidths[15] = { 0 }; - for (int i = 0; i < 15; i++) line03KeyWidths[i] = 45; - line03KeyWidths[0] = 50; // TAB - line03KeyWidths[13] = 57; // BACKSLASH - int line03Keys[15] = { - KEY_TAB, KEY_Q, KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, - KEY_U, KEY_I, KEY_O, KEY_P, KEY_LEFT_BRACKET, - KEY_RIGHT_BRACKET, KEY_BACKSLASH, KEY_INSERT - }; - - // Keyboard line 04 - int line04KeyWidths[14] = { 0 }; - for (int i = 0; i < 14; i++) line04KeyWidths[i] = 45; - line04KeyWidths[0] = 68; // CAPS - line04KeyWidths[12] = 88; // ENTER - int line04Keys[14] = { - KEY_CAPS_LOCK, KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, - KEY_H, KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, - KEY_APOSTROPHE, KEY_ENTER, KEY_PAGE_UP - }; - - // Keyboard line 05 - int line05KeyWidths[14] = { 0 }; - for (int i = 0; i < 14; i++) line05KeyWidths[i] = 45; - line05KeyWidths[0] = 80; // LSHIFT - line05KeyWidths[11] = 76; // RSHIFT - int line05Keys[14] = { - KEY_LEFT_SHIFT, KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, - KEY_N, KEY_M, KEY_COMMA, KEY_PERIOD, /*KEY_MINUS*/ - KEY_SLASH, KEY_RIGHT_SHIFT, KEY_UP, KEY_PAGE_DOWN - }; - - // Keyboard line 06 - int line06KeyWidths[11] = { 0 }; - for (int i = 0; i < 11; i++) line06KeyWidths[i] = 45; - line06KeyWidths[0] = 80; // LCTRL - line06KeyWidths[3] = 208; // SPACE - line06KeyWidths[7] = 60; // RCTRL - int line06Keys[11] = { - KEY_LEFT_CONTROL, KEY_LEFT_SUPER, KEY_LEFT_ALT, - KEY_SPACE, KEY_RIGHT_ALT, 162, KEY_NULL, - KEY_RIGHT_CONTROL, KEY_LEFT, KEY_DOWN, KEY_RIGHT - }; - - Vector2 keyboardOffset = { 26, 80 }; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - int key = GetKeyPressed(); // Get pressed keycode - if (key > 0) TraceLog(LOG_INFO, "KEYBOARD TESTBED: KEY PRESSED: %d", key); - - int ch = GetCharPressed(); // Get pressed char for text input, using OS mapping - if (ch > 0) TraceLog(LOG_INFO, "KEYBOARD TESTBED: CHAR PRESSED: %c (%d)", ch, ch); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("KEYBOARD LAYOUT: ENG-US", 26, 38, 20, LIGHTGRAY); - - // Keyboard line 01 - 15 keys - // ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, IMP, CLOSE - for (int i = 0, recOffsetX = 0; i < 15; i++) - { - GuiKeyboardKey((Rectangle){ keyboardOffset.x + recOffsetX, keyboardOffset.y, (float)line01KeyWidths[i], 30.0f }, line01Keys[i]); - recOffsetX += line01KeyWidths[i] + KEY_REC_SPACING; - } - - // Keyboard line 02 - 15 keys - // `, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, BACKSPACE, DEL - for (int i = 0, recOffsetX = 0; i < 15; i++) - { - GuiKeyboardKey((Rectangle){ keyboardOffset.x + recOffsetX, keyboardOffset.y + 30 + KEY_REC_SPACING, (float)line02KeyWidths[i], 38.0f }, line02Keys[i]); - recOffsetX += line02KeyWidths[i] + KEY_REC_SPACING; - } - - // Keyboard line 03 - 15 keys - // TAB, Q, W, E, R, T, Y, U, I, O, P, [, ], \, INS - for (int i = 0, recOffsetX = 0; i < 15; i++) - { - GuiKeyboardKey((Rectangle){ keyboardOffset.x + recOffsetX, keyboardOffset.y + 30 + 38 + KEY_REC_SPACING*2, (float)line03KeyWidths[i], 38.0f }, line03Keys[i]); - recOffsetX += line03KeyWidths[i] + KEY_REC_SPACING; - } - - // Keyboard line 04 - 14 keys - // MAYUS, A, S, D, F, G, H, J, K, L, ;, ', ENTER, REPAG - for (int i = 0, recOffsetX = 0; i < 14; i++) - { - GuiKeyboardKey((Rectangle){ keyboardOffset.x + recOffsetX, keyboardOffset.y + 30 + 38*2 + KEY_REC_SPACING*3, (float)line04KeyWidths[i], 38.0f }, line04Keys[i]); - recOffsetX += line04KeyWidths[i] + KEY_REC_SPACING; - } - - // Keyboard line 05 - 14 keys - // LSHIFT, Z, X, C, V, B, N, M, ,, ., /, RSHIFT, UP, AVPAG - for (int i = 0, recOffsetX = 0; i < 14; i++) - { - GuiKeyboardKey((Rectangle){ keyboardOffset.x + recOffsetX, keyboardOffset.y + 30 + 38*3 + KEY_REC_SPACING*4, (float)line05KeyWidths[i], 38.0f }, line05Keys[i]); - recOffsetX += line05KeyWidths[i] + KEY_REC_SPACING; - } - - // Keyboard line 06 - 11 keys - // LCTRL, WIN, LALT, SPACE, ALTGR, \, FN, RCTRL, LEFT, DOWN, RIGHT - for (int i = 0, recOffsetX = 0; i < 11; i++) - { - GuiKeyboardKey((Rectangle){ keyboardOffset.x + recOffsetX, keyboardOffset.y + 30 + 38*4 + KEY_REC_SPACING*5, (float)line06KeyWidths[i], 38.0f }, line06Keys[i]); - recOffsetX += line06KeyWidths[i] + KEY_REC_SPACING; - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -// Get keyboard keycode as text (US keyboard) -// NOTE: Mapping for other keyboard layouts can be done here -static const char *GetKeyText(int key) -{ - switch (key) - { - case KEY_APOSTROPHE : return "'"; // Key: ' - case KEY_COMMA : return ","; // Key: , - case KEY_MINUS : return "-"; // Key: - - case KEY_PERIOD : return "."; // Key: . - case KEY_SLASH : return "/"; // Key: / - case KEY_ZERO : return "0"; // Key: 0 - case KEY_ONE : return "1"; // Key: 1 - case KEY_TWO : return "2"; // Key: 2 - case KEY_THREE : return "3"; // Key: 3 - case KEY_FOUR : return "4"; // Key: 4 - case KEY_FIVE : return "5"; // Key: 5 - case KEY_SIX : return "6"; // Key: 6 - case KEY_SEVEN : return "7"; // Key: 7 - case KEY_EIGHT : return "8"; // Key: 8 - case KEY_NINE : return "9"; // Key: 9 - case KEY_SEMICOLON : return ";"; // Key: ; - case KEY_EQUAL : return "="; // Key: = - case KEY_A : return "A"; // Key: A | a - case KEY_B : return "B"; // Key: B | b - case KEY_C : return "C"; // Key: C | c - case KEY_D : return "D"; // Key: D | d - case KEY_E : return "E"; // Key: E | e - case KEY_F : return "F"; // Key: F | f - case KEY_G : return "G"; // Key: G | g - case KEY_H : return "H"; // Key: H | h - case KEY_I : return "I"; // Key: I | i - case KEY_J : return "J"; // Key: J | j - case KEY_K : return "K"; // Key: K | k - case KEY_L : return "L"; // Key: L | l - case KEY_M : return "M"; // Key: M | m - case KEY_N : return "N"; // Key: N | n - case KEY_O : return "O"; // Key: O | o - case KEY_P : return "P"; // Key: P | p - case KEY_Q : return "Q"; // Key: Q | q - case KEY_R : return "R"; // Key: R | r - case KEY_S : return "S"; // Key: S | s - case KEY_T : return "T"; // Key: T | t - case KEY_U : return "U"; // Key: U | u - case KEY_V : return "V"; // Key: V | v - case KEY_W : return "W"; // Key: W | w - case KEY_X : return "X"; // Key: X | x - case KEY_Y : return "Y"; // Key: Y | y - case KEY_Z : return "Z"; // Key: Z | z - case KEY_LEFT_BRACKET : return "["; // Key: [ - case KEY_BACKSLASH : return "\\"; // Key: '\' - case KEY_RIGHT_BRACKET : return "]"; // Key: ] - case KEY_GRAVE : return "`"; // Key: ` - case KEY_SPACE : return "SPACE"; // Key: Space - case KEY_ESCAPE : return "ESC"; // Key: Esc - case KEY_ENTER : return "ENTER"; // Key: Enter - case KEY_TAB : return "TAB"; // Key: Tab - case KEY_BACKSPACE : return "BACK"; // Key: Backspace - case KEY_INSERT : return "INS"; // Key: Ins - case KEY_DELETE : return "DEL"; // Key: Del - case KEY_RIGHT : return "RIGHT"; // Key: Cursor right - case KEY_LEFT : return "LEFT"; // Key: Cursor left - case KEY_DOWN : return "DOWN"; // Key: Cursor down - case KEY_UP : return "UP"; // Key: Cursor up - case KEY_PAGE_UP : return "PGUP"; // Key: Page up - case KEY_PAGE_DOWN : return "PGDOWN"; // Key: Page down - case KEY_HOME : return "HOME"; // Key: Home - case KEY_END : return "END"; // Key: End - case KEY_CAPS_LOCK : return "CAPS"; // Key: Caps lock - case KEY_SCROLL_LOCK : return "LOCK"; // Key: Scroll down - case KEY_NUM_LOCK : return "NUMLOCK"; // Key: Num lock - case KEY_PRINT_SCREEN : return "PRINTSCR"; // Key: Print screen - case KEY_PAUSE : return "PAUSE"; // Key: Pause - case KEY_F1 : return "F1"; // Key: F1 - case KEY_F2 : return "F2"; // Key: F2 - case KEY_F3 : return "F3"; // Key: F3 - case KEY_F4 : return "F4"; // Key: F4 - case KEY_F5 : return "F5"; // Key: F5 - case KEY_F6 : return "F6"; // Key: F6 - case KEY_F7 : return "F7"; // Key: F7 - case KEY_F8 : return "F8"; // Key: F8 - case KEY_F9 : return "F9"; // Key: F9 - case KEY_F10 : return "F10"; // Key: F10 - case KEY_F11 : return "F11"; // Key: F11 - case KEY_F12 : return "F12"; // Key: F12 - case KEY_LEFT_SHIFT : return "LSHIFT"; // Key: Shift left - case KEY_LEFT_CONTROL : return "LCTRL"; // Key: Control left - case KEY_LEFT_ALT : return "LALT"; // Key: Alt left - case KEY_LEFT_SUPER : return "WIN"; // Key: Super left - case KEY_RIGHT_SHIFT : return "RSHIFT"; // Key: Shift right - case KEY_RIGHT_CONTROL : return "RCTRL"; // Key: Control right - case KEY_RIGHT_ALT : return "ALTGR"; // Key: Alt right - case KEY_RIGHT_SUPER : return "RSUPER"; // Key: Super right - case KEY_KB_MENU : return "KBMENU"; // Key: KB menu - case KEY_KP_0 : return "KP0"; // Key: Keypad 0 - case KEY_KP_1 : return "KP1"; // Key: Keypad 1 - case KEY_KP_2 : return "KP2"; // Key: Keypad 2 - case KEY_KP_3 : return "KP3"; // Key: Keypad 3 - case KEY_KP_4 : return "KP4"; // Key: Keypad 4 - case KEY_KP_5 : return "KP5"; // Key: Keypad 5 - case KEY_KP_6 : return "KP6"; // Key: Keypad 6 - case KEY_KP_7 : return "KP7"; // Key: Keypad 7 - case KEY_KP_8 : return "KP8"; // Key: Keypad 8 - case KEY_KP_9 : return "KP9"; // Key: Keypad 9 - case KEY_KP_DECIMAL : return "KPDEC"; // Key: Keypad . - case KEY_KP_DIVIDE : return "KPDIV"; // Key: Keypad / - case KEY_KP_MULTIPLY : return "KPMUL"; // Key: Keypad * - case KEY_KP_SUBTRACT : return "KPSUB"; // Key: Keypad - - case KEY_KP_ADD : return "KPADD"; // Key: Keypad + - case KEY_KP_ENTER : return "KPENTER"; // Key: Keypad Enter - case KEY_KP_EQUAL : return "KPEQU"; // Key: Keypad = - default: return ""; - } -} - -// Draw keyboard key -static void GuiKeyboardKey(Rectangle bounds, int key) -{ - if (key == KEY_NULL) DrawRectangleLinesEx(bounds, 2.0f, LIGHTGRAY); - else - { - if (IsKeyDown(key)) - { - DrawRectangleLinesEx(bounds, 2.0f, MAROON); - DrawText(GetKeyText(key), (int)(bounds.x + 4), (int)(bounds.y + 4), 10, MAROON); - } - else - { - DrawRectangleLinesEx(bounds, 2.0f, DARKGRAY); - DrawText(GetKeyText(key), (int)(bounds.x + 4), (int)(bounds.y + 4), 10, DARKGRAY); - } - } - - if (CheckCollisionPointRec(GetMousePosition(), bounds)) - { - DrawRectangleRec(bounds, Fade(RED, 0.2f)); - DrawRectangleLinesEx(bounds, 3.0f, RED); - } -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_keyboard_testbed.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_keyboard_testbed.png deleted file mode 100644 index bac0fc2..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_keyboard_testbed.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_monitor_detector.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_monitor_detector.c deleted file mode 100644 index ab65d80..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_monitor_detector.c +++ /dev/null @@ -1,160 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - monitor detector -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.6 -* -* Example contributed by Maicon Santana (@maiconpintoabreu) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Maicon Santana (@maiconpintoabreu) -* -********************************************************************************************/ - -#include "raylib.h" - -#define MAX_MONITORS 10 - -// Monitor info -typedef struct MonitorInfo { - Vector2 position; - const char *name; - int width; - int height; - int physicalWidth; - int physicalHeight; - int refreshRate; -} MonitorInfo; - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - monitor detector"); - - MonitorInfo monitors[MAX_MONITORS] = { 0 }; - int currentMonitorIndex = GetCurrentMonitor(); - int monitorCount = 0; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Variables to find the max x and Y to calculate the scale - int maxWidth = 1; - int maxHeight = 1; - - // Monitor offset is to fix when monitor position x is negative - int monitorOffsetX = 0; - - // Rebuild monitors array every frame - monitorCount = GetMonitorCount(); - for (int i = 0; i < monitorCount; i++) - { - monitors[i] = (MonitorInfo){ - GetMonitorPosition(i), - GetMonitorName(i), - GetMonitorWidth(i), - GetMonitorHeight(i), - GetMonitorPhysicalWidth(i), - GetMonitorPhysicalHeight(i), - GetMonitorRefreshRate(i) - }; - - if (monitors[i].position.x < monitorOffsetX) monitorOffsetX = -(int)monitors[i].position.x; - - const int width = (int)monitors[i].position.x + monitors[i].width; - const int height = (int)monitors[i].position.y + monitors[i].height; - - if (maxWidth < width) maxWidth = width; - if (maxHeight < height) maxHeight = height; - } - - if (IsKeyPressed(KEY_ENTER) && (monitorCount > 1)) - { - currentMonitorIndex += 1; - - // Set index to 0 if the last one - if (currentMonitorIndex == monitorCount) currentMonitorIndex = 0; - - SetWindowMonitor(currentMonitorIndex); // Move window to currentMonitorIndex - } - else currentMonitorIndex = GetCurrentMonitor(); // Get currentMonitorIndex if manually moved - - float monitorScale = 0.6f; - - if (maxHeight > (maxWidth + monitorOffsetX)) monitorScale *= ((float)screenHeight/(float)maxHeight); - else monitorScale *= ((float)screenWidth/(float)(maxWidth + monitorOffsetX)); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("Press [Enter] to move window to next monitor available", 20, 20, 20, DARKGRAY); - - DrawRectangleLines(20, 60, screenWidth - 40, screenHeight - 100, DARKGRAY); - - // Draw Monitor Rectangles with information inside - for (int i = 0; i < monitorCount; i++) - { - // Calculate retangle position and size using monitorScale - const Rectangle rec = (Rectangle){ - (monitors[i].position.x + monitorOffsetX)*monitorScale + 140, - monitors[i].position.y*monitorScale + 80, - monitors[i].width*monitorScale, - monitors[i].height*monitorScale - }; - - // Draw monitor name and information inside the rectangle - DrawText(TextFormat("[%i] %s", i, monitors[i].name), (int)rec.x + 10, (int)rec.y + (int)(100*monitorScale), (int)(120*monitorScale), BLUE); - DrawText( - TextFormat("Resolution: [%ipx x %ipx]\nRefreshRate: [%ihz]\nPhysical Size: [%imm x %imm]\nPosition: %3.0f x %3.0f", - monitors[i].width, - monitors[i].height, - monitors[i].refreshRate, - monitors[i].physicalWidth, - monitors[i].physicalHeight, - monitors[i].position.x, - monitors[i].position.y - ), (int)rec.x + 10, (int)rec.y + (int)(200*monitorScale), (int)(120*monitorScale), DARKGRAY); - - // Highlight current monitor - if (i == currentMonitorIndex) - { - DrawRectangleLinesEx(rec, 5, RED); - Vector2 windowPosition = (Vector2){ (GetWindowPosition().x + monitorOffsetX)*monitorScale + 140, GetWindowPosition().y*monitorScale + 80 }; - - // Draw window position based on monitors - DrawRectangleV(windowPosition, (Vector2){screenWidth*monitorScale, screenHeight*monitorScale}, Fade(GREEN, 0.5)); - } - else DrawRectangleLinesEx(rec, 5, GRAY); - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_monitor_detector.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_monitor_detector.png deleted file mode 100644 index 81f9eed..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_monitor_detector.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_sequence.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_sequence.c deleted file mode 100644 index 32ec300..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_sequence.c +++ /dev/null @@ -1,177 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - random sequence -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 5.0, last time updated with raylib 5.0 -* -* Example contributed by Dalton Overmyer (@REDl3east) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2023-2025 Dalton Overmyer (@REDl3east) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -#include // Required for: malloc(), free() - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -typedef struct ColorRect { - Color color; - Rectangle rect; -} ColorRect; - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static Color GenerateRandomColor(void); -static ColorRect *GenerateRandomColorRectSequence(float rectCount, float rectWidth, float screenWidth, float screenHeight); -static void ShuffleColorRectSequence(ColorRect *rectangles, int rectCount); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - random sequence"); - - int rectCount = 20; - float rectSize = (float)screenWidth/rectCount; - ColorRect *rectangles = GenerateRandomColorRectSequence((float)rectCount, rectSize, (float)screenWidth, 0.75f*screenHeight); - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_SPACE)) ShuffleColorRectSequence(rectangles, rectCount); - - if (IsKeyPressed(KEY_UP)) - { - rectCount++; - rectSize = (float)screenWidth/rectCount; - RL_FREE(rectangles); - - // Re-generate random sequence with new count - rectangles = GenerateRandomColorRectSequence((float)rectCount, rectSize, (float)screenWidth, 0.75f*screenHeight); - } - - if (IsKeyPressed(KEY_DOWN)) - { - if (rectCount >= 4) - { - rectCount--; - rectSize = (float)screenWidth/rectCount; - RL_FREE(rectangles); - - // Re-generate random sequence with new count - rectangles = GenerateRandomColorRectSequence((float)rectCount, rectSize, (float)screenWidth, 0.75f*screenHeight); - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - for (int i = 0; i < rectCount; i++) - { - DrawRectangleRec(rectangles[i].rect, rectangles[i].color); - - DrawText("Press SPACE to shuffle the current sequence", 10, screenHeight - 96, 20, BLACK); - DrawText("Press UP to add a rectangle and generate a new sequence", 10, screenHeight - 64, 20, BLACK); - DrawText("Press DOWN to remove a rectangle and generate a new sequence", 10, screenHeight - 32, 20, BLACK); - } - - DrawText(TextFormat("Count: %d rectangles", rectCount), 10, 10, 20, MAROON); - - DrawFPS(screenWidth - 80, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - RL_FREE(rectangles); - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -static Color GenerateRandomColor(void) -{ - Color color = { - GetRandomValue(0, 255), - GetRandomValue(0, 255), - GetRandomValue(0, 255), - 255 - }; - - return color; -} - -static ColorRect *GenerateRandomColorRectSequence(float rectCount, float rectWidth, float screenWidth, float screenHeight) -{ - ColorRect *rectangles = (ColorRect *)RL_CALLOC((int)rectCount, sizeof(ColorRect)); - - int *seq = LoadRandomSequence((unsigned int)rectCount, 0, (unsigned int)rectCount - 1); - float rectSeqWidth = rectCount*rectWidth; - float startX = (screenWidth - rectSeqWidth)*0.5f; - - for (int i = 0; i < rectCount; i++) - { - int rectHeight = (int)Remap((float)seq[i], 0, rectCount - 1, 0, screenHeight); - - rectangles[i].color = GenerateRandomColor(); - rectangles[i].rect = CLITERAL(Rectangle){ startX + i*rectWidth, screenHeight - rectHeight, rectWidth, (float)rectHeight }; - } - - UnloadRandomSequence(seq); - - return rectangles; -} - -static void ShuffleColorRectSequence(ColorRect *rectangles, int rectCount) -{ - int *seq = LoadRandomSequence(rectCount, 0, rectCount - 1); - - for (int i1 = 0; i1 < rectCount; i1++) - { - ColorRect *r1 = &rectangles[i1]; - ColorRect *r2 = &rectangles[seq[i1]]; - - // Swap only the color and height - ColorRect tmp = *r1; - r1->color = r2->color; - r1->rect.height = r2->rect.height; - r1->rect.y = r2->rect.y; - r2->color = tmp.color; - r2->rect.height = tmp.rect.height; - r2->rect.y = tmp.rect.y; - } - - UnloadRandomSequence(seq); -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_sequence.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_sequence.png deleted file mode 100644 index 206aa8b..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_sequence.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_values.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_values.c deleted file mode 100644 index 7bc976d..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_values.c +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - random values -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.1, last time updated with raylib 1.1 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - random values"); - - // SetRandomSeed(0xaabbccff); // Set a custom random seed if desired, by default: "time(NULL)" - - int randValue = GetRandomValue(-8, 5); // Get a random integer number between -8 and 5 (both included) - - unsigned int framesCounter = 0; // Variable used to count frames - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - framesCounter++; - - // Every two seconds (120 frames) a new random value is generated - if (((framesCounter/120)%2) == 1) - { - randValue = GetRandomValue(-8, 5); - framesCounter = 0; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("Every 2 seconds a new random value is generated:", 130, 100, 20, MAROON); - - DrawText(TextFormat("%i", randValue), 360, 180, 80, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_values.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_values.png deleted file mode 100644 index 6dd4947..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_random_values.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_render_texture.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_render_texture.c deleted file mode 100644 index b11237e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_render_texture.c +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - render texture -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //--------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - render texture"); - - // Define a render texture to render - int renderTextureWidth = 300; - int renderTextureHeight = 300; - RenderTexture2D target = LoadRenderTexture(renderTextureWidth, renderTextureHeight); - - Vector2 ballPosition = { renderTextureWidth/2.0f, renderTextureHeight/2.0f }; - Vector2 ballSpeed = { 5.0f, 4.0f }; - int ballRadius = 20; - - float rotation = 0.0f; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //---------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //----------------------------------------------------- - // Ball movement logic - ballPosition.x += ballSpeed.x; - ballPosition.y += ballSpeed.y; - - // Check walls collision for bouncing - if ((ballPosition.x >= (renderTextureWidth - ballRadius)) || (ballPosition.x <= ballRadius)) ballSpeed.x *= -1.0f; - if ((ballPosition.y >= (renderTextureHeight - ballRadius)) || (ballPosition.y <= ballRadius)) ballSpeed.y *= -1.0f; - - // Render texture rotation - rotation += 0.5f; - //----------------------------------------------------- - - // Draw - //----------------------------------------------------- - // Draw our scene to the render texture - BeginTextureMode(target); - - ClearBackground(SKYBLUE); - - DrawRectangle(0, 0, 20, 20, RED); - DrawCircleV(ballPosition, (float)ballRadius, MAROON); - - EndTextureMode(); - - // Draw render texture to main framebuffer - BeginDrawing(); - - ClearBackground(RAYWHITE); - - // Draw our render texture with rotation applied - // NOTE 1: We set the origin of the texture to the center of the render texture - // NOTE 2: We flip vertically the texture setting negative source rectangle height - DrawTexturePro(target.texture, - (Rectangle){ 0, 0, (float)target.texture.width, (float)-target.texture.height }, - (Rectangle){ screenWidth/2.0f, screenHeight/2.0f, (float)target.texture.width, (float)target.texture.height }, - (Vector2){ target.texture.width/2.0f, target.texture.height/2.0f }, rotation, WHITE); - - DrawText("DRAWING BOUNCING BALL INSIDE RENDER TEXTURE!", 10, screenHeight - 40, 20, BLACK); - - - DrawFPS(10, 10); - - EndDrawing(); - //----------------------------------------------------- - } - - // De-Initialization - //--------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //---------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_render_texture.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_render_texture.png deleted file mode 100644 index 312efdb..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_render_texture.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_scissor_test.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_scissor_test.c deleted file mode 100644 index 3166fad..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_scissor_test.c +++ /dev/null @@ -1,78 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - scissor test -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 2.5, last time updated with raylib 3.0 -* -* Example contributed by Chris Dill (@MysteriousSpace) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2019-2025 Chris Dill (@MysteriousSpace) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - scissor test"); - - Rectangle scissorArea = { 0, 0, 300, 300 }; - bool scissorMode = true; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_S)) scissorMode = !scissorMode; - - // Centre the scissor area around the mouse position - scissorArea.x = GetMouseX() - scissorArea.width/2; - scissorArea.y = GetMouseY() - scissorArea.height/2; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - if (scissorMode) BeginScissorMode((int)scissorArea.x, (int)scissorArea.y, (int)scissorArea.width, (int)scissorArea.height); - - // Draw full screen rectangle and some text - // NOTE: Only part defined by scissor area will be rendered - DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), RED); - DrawText("Move the mouse around to reveal this text!", 190, 200, 20, LIGHTGRAY); - - if (scissorMode) EndScissorMode(); - - DrawRectangleLinesEx(scissorArea, 1, BLACK); - DrawText("Press S to toggle scissor test", 10, 10, 20, BLACK); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_scissor_test.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_scissor_test.png deleted file mode 100644 index 194872b..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_scissor_test.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_screen_recording.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_screen_recording.c deleted file mode 100644 index 33de31a..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_screen_recording.c +++ /dev/null @@ -1,166 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - screen recording -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -// Using msf_gif library to record frames into GIF -#define MSF_GIF_IMPL -#include "msf_gif.h" // GIF recording functionality - -#include // Required for: sinf() - -#define GIF_RECORD_FRAMERATE 5 // Record framerate, we get a frame every N frames - -#define MAX_SINEWAVE_POINTS 256 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - screen recording"); - - bool gifRecording = false; // GIF recording state - unsigned int gifFrameCounter = 0; // GIF frames counter - MsfGifState gifState = { 0 }; // MSGIF context state - - Vector2 circlePosition = { 0.0f, screenHeight/2.0f }; - float timeCounter = 0.0f; - - // Get sine wave points for line drawing - Vector2 sinePoints[MAX_SINEWAVE_POINTS] = { 0 }; - for (int i = 0; i < MAX_SINEWAVE_POINTS; i++) - { - sinePoints[i].x = i*GetScreenWidth()/180.0f; - sinePoints[i].y = screenHeight/2.0f + 150*sinf((2*PI/1.5f)*(1.0f/60.0f)*(float)i); // Calculate for 60 fps - } - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Update circle sinusoidal movement - timeCounter += GetFrameTime(); - circlePosition.x += GetScreenWidth()/180.0f; - circlePosition.y = screenHeight/2.0f + 150*sinf((2*PI/1.5f)*timeCounter); - if (circlePosition.x > screenWidth) - { - circlePosition.x = 0.0f; - circlePosition.y = screenHeight/2.0f; - timeCounter = 0.0f; - } - - // Start-Stop GIF recording on CTRL+R - if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_R)) - { - if (gifRecording) - { - // Stop current recording and save file - gifRecording = false; - MsfGifResult result = msf_gif_end(&gifState); - SaveFileData(TextFormat("%s/screenrecording.gif", GetApplicationDirectory()), result.data, (unsigned int)result.dataSize); - msf_gif_free(result); - - TraceLog(LOG_INFO, "Finish animated GIF recording"); - } - else - { - // Start a new recording - gifRecording = true; - gifFrameCounter = 0; - msf_gif_begin(&gifState, GetRenderWidth(), GetRenderHeight()); - - TraceLog(LOG_INFO, "Start animated GIF recording"); - } - } - - if (gifRecording) - { - gifFrameCounter++; - - // NOTE: We record one gif frame depending on the desired gif framerate - if (gifFrameCounter > GIF_RECORD_FRAMERATE) - { - // Get image data for the current frame (from backbuffer) - // WARNING: This process is quite slow, it can generate stuttering - Image imScreen = LoadImageFromScreen(); - - // Add the frame to the gif recording, providing and "estimated" time for display in centiseconds - msf_gif_frame(&gifState, imScreen.data, (int)((1.0f/60.0f)*GIF_RECORD_FRAMERATE)/10, 16, imScreen.width*4); - gifFrameCounter = 0; - - UnloadImage(imScreen); // Free image data - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - for (int i = 0; i < (MAX_SINEWAVE_POINTS - 1); i++) - { - DrawLineV(sinePoints[i], sinePoints[i + 1], MAROON); - DrawCircleV(sinePoints[i], 3, MAROON); - } - - DrawCircleV(circlePosition, 30, RED); - - DrawFPS(10, 10); - - /* - // Draw record indicator - // WARNING: If drawn here, it will appear in the recorded image, - // use a render texture instead for the recording and LoadImageFromTexture(rt.texture) - if (gifRecording) - { - // Display the recording indicator every half-second - if ((int)(GetTime()/0.5)%2 == 1) - { - DrawCircle(30, GetScreenHeight() - 20, 10, MAROON); - DrawText("GIF RECORDING", 50, GetScreenHeight() - 25, 10, RED); - } - } - */ - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - // If still recording a GIF on close window, just finish - if (gifRecording) - { - MsfGifResult result = msf_gif_end(&gifState); - msf_gif_free(result); - gifRecording = false; - } - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_screen_recording.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_screen_recording.png deleted file mode 100644 index 9b14af2..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_screen_recording.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_smooth_pixelperfect.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_smooth_pixelperfect.c deleted file mode 100644 index 2b01f3f..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_smooth_pixelperfect.c +++ /dev/null @@ -1,125 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - smooth pixelperfect -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 3.7, last time updated with raylib 4.0 -* -* Example contributed by Giancamillo Alessandroni (@NotManyIdeasDev) and -* reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2021-2025 Giancamillo Alessandroni (@NotManyIdeasDev) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include // Required for: sinf(), cosf() - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - const int virtualScreenWidth = 160; - const int virtualScreenHeight = 90; - - const float virtualRatio = (float)screenWidth/(float)virtualScreenWidth; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - smooth pixelperfect"); - - Camera2D worldSpaceCamera = { 0 }; // Game world camera - worldSpaceCamera.zoom = 1.0f; - - Camera2D screenSpaceCamera = { 0 }; // Smoothing camera - screenSpaceCamera.zoom = 1.0f; - - // Load render texture to draw all our objects - RenderTexture2D target = LoadRenderTexture(virtualScreenWidth, virtualScreenHeight); - - Rectangle rec01 = { 70.0f, 35.0f, 20.0f, 20.0f }; - Rectangle rec02 = { 90.0f, 55.0f, 30.0f, 10.0f }; - Rectangle rec03 = { 80.0f, 65.0f, 15.0f, 25.0f }; - - // The target's height is flipped (in the source Rectangle), due to OpenGL reasons - Rectangle sourceRec = { 0.0f, 0.0f, (float)target.texture.width, -(float)target.texture.height }; - Rectangle destRec = { -virtualRatio, -virtualRatio, screenWidth + (virtualRatio*2), screenHeight + (virtualRatio*2) }; - - Vector2 origin = { 0.0f, 0.0f }; - - float rotation = 0.0f; - - float cameraX = 0.0f; - float cameraY = 0.0f; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - rotation += 60.0f*GetFrameTime(); // Rotate the rectangles, 60 degrees per second - - // Make the camera move to demonstrate the effect - cameraX = (sinf((float)GetTime())*50.0f) - 10.0f; - cameraY = cosf((float)GetTime())*30.0f; - - // Set the camera's target to the values computed above - screenSpaceCamera.target = (Vector2){ cameraX, cameraY }; - - // Round worldSpace coordinates, keep decimals into screenSpace coordinates - worldSpaceCamera.target.x = truncf(screenSpaceCamera.target.x); - screenSpaceCamera.target.x -= worldSpaceCamera.target.x; - screenSpaceCamera.target.x *= virtualRatio; - - worldSpaceCamera.target.y = truncf(screenSpaceCamera.target.y); - screenSpaceCamera.target.y -= worldSpaceCamera.target.y; - screenSpaceCamera.target.y *= virtualRatio; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginTextureMode(target); - ClearBackground(RAYWHITE); - - BeginMode2D(worldSpaceCamera); - DrawRectanglePro(rec01, origin, rotation, BLACK); - DrawRectanglePro(rec02, origin, -rotation, RED); - DrawRectanglePro(rec03, origin, rotation + 45.0f, BLUE); - EndMode2D(); - EndTextureMode(); - - BeginDrawing(); - ClearBackground(RED); - - BeginMode2D(screenSpaceCamera); - DrawTexturePro(target.texture, sourceRec, destRec, origin, 0.0f, WHITE); - EndMode2D(); - - DrawText(TextFormat("Screen resolution: %ix%i", screenWidth, screenHeight), 10, 10, 20, DARKBLUE); - DrawText(TextFormat("World resolution: %ix%i", virtualScreenWidth, virtualScreenHeight), 10, 40, 20, DARKGREEN); - DrawFPS(GetScreenWidth() - 95, 10); - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadRenderTexture(target); // Unload render texture - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_smooth_pixelperfect.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_smooth_pixelperfect.png deleted file mode 100644 index d3b6ce0..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_smooth_pixelperfect.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_storage_values.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_storage_values.c deleted file mode 100644 index a49dba5..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_storage_values.c +++ /dev/null @@ -1,200 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - storage values -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.4, last time updated with raylib 4.2 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include // Required for: calloc(), free() - -#define STORAGE_DATA_FILE "storage.data" // Storage file - -// NOTE: Storage positions must start with 0, directly related to file memory layout -typedef enum { - STORAGE_POSITION_SCORE = 0, - STORAGE_POSITION_HISCORE = 1 -} StorageData; - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static bool SaveStorageValue(unsigned int position, int value); -static int LoadStorageValue(unsigned int position); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - storage values"); - - int score = 0; - int hiscore = 0; - int framesCounter = 0; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_R)) - { - score = GetRandomValue(1000, 2000); - hiscore = GetRandomValue(2000, 4000); - } - - if (IsKeyPressed(KEY_ENTER)) - { - SaveStorageValue(STORAGE_POSITION_SCORE, score); - SaveStorageValue(STORAGE_POSITION_HISCORE, hiscore); - } - else if (IsKeyPressed(KEY_SPACE)) - { - // NOTE: If requested position could not be found, value 0 is returned - score = LoadStorageValue(STORAGE_POSITION_SCORE); - hiscore = LoadStorageValue(STORAGE_POSITION_HISCORE); - } - - framesCounter++; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText(TextFormat("SCORE: %i", score), 280, 130, 40, MAROON); - DrawText(TextFormat("HI-SCORE: %i", hiscore), 210, 200, 50, BLACK); - - DrawText(TextFormat("frames: %i", framesCounter), 10, 10, 20, LIME); - - DrawText("Press R to generate random numbers", 220, 40, 20, LIGHTGRAY); - DrawText("Press ENTER to SAVE values", 250, 310, 20, LIGHTGRAY); - DrawText("Press SPACE to LOAD values", 252, 350, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -// Save integer value to storage file (to defined position) -// NOTE: Storage positions is directly related to file memory layout (4 bytes each integer) -bool SaveStorageValue(unsigned int position, int value) -{ - bool success = false; - int dataSize = 0; - unsigned int newDataSize = 0; - unsigned char *fileData = LoadFileData(STORAGE_DATA_FILE, &dataSize); - unsigned char *newFileData = NULL; - - if (fileData != NULL) - { - if (dataSize <= (position*sizeof(int))) - { - // Increase data size up to position and store value - newDataSize = (position + 1)*sizeof(int); - newFileData = (unsigned char *)RL_REALLOC(fileData, newDataSize); - - if (newFileData != NULL) - { - // RL_REALLOC succeded - int *dataPtr = (int *)newFileData; - dataPtr[position] = value; - } - else - { - // RL_REALLOC failed - TraceLog(LOG_WARNING, "FILEIO: [%s] Failed to realloc data (%u), position in bytes (%u) bigger than actual file size", STORAGE_DATA_FILE, dataSize, position*sizeof(int)); - - // We store the old size of the file - newFileData = fileData; - newDataSize = dataSize; - } - } - else - { - // Store the old size of the file - newFileData = fileData; - newDataSize = dataSize; - - // Replace value on selected position - int *dataPtr = (int *)newFileData; - dataPtr[position] = value; - } - - success = SaveFileData(STORAGE_DATA_FILE, newFileData, newDataSize); - RL_FREE(newFileData); - - TraceLog(LOG_INFO, "FILEIO: [%s] Saved storage value: %i", STORAGE_DATA_FILE, value); - } - else - { - TraceLog(LOG_INFO, "FILEIO: [%s] File created successfully", STORAGE_DATA_FILE); - - dataSize = (position + 1)*sizeof(int); - fileData = (unsigned char *)RL_MALLOC(dataSize); - int *dataPtr = (int *)fileData; - dataPtr[position] = value; - - success = SaveFileData(STORAGE_DATA_FILE, fileData, dataSize); - UnloadFileData(fileData); - - TraceLog(LOG_INFO, "FILEIO: [%s] Saved storage value: %i", STORAGE_DATA_FILE, value); - } - - return success; -} - -// Load integer value from storage file (from defined position) -// NOTE: If requested position could not be found, value 0 is returned -int LoadStorageValue(unsigned int position) -{ - int value = 0; - int dataSize = 0; - unsigned char *fileData = LoadFileData(STORAGE_DATA_FILE, &dataSize); - - if (fileData != NULL) - { - if (dataSize < ((int)(position*4))) TraceLog(LOG_WARNING, "FILEIO: [%s] Failed to find storage position: %i", STORAGE_DATA_FILE, position); - else - { - int *dataPtr = (int *)fileData; - value = dataPtr[position]; - } - - UnloadFileData(fileData); - - TraceLog(LOG_INFO, "FILEIO: [%s] Loaded storage value: %i", STORAGE_DATA_FILE, value); - } - - return value; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_storage_values.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_storage_values.png deleted file mode 100644 index 6cfd552..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_storage_values.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_text_file_loading.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_text_file_loading.c deleted file mode 100644 index 852cc32..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_text_file_loading.c +++ /dev/null @@ -1,173 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - text file loading -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.6 -* -* Example contributed by Aanjishnu Bhattacharyya (@NimComPoo-04) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 0 Aanjishnu Bhattacharyya (@NimComPoo-04) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" // Required for: Lerp() - -#include - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - text file loading"); - - // Setting up the camera - Camera2D cam = { - .offset = {0, 0}, - .target = {0, 0}, - .rotation = 0, - .zoom = 1 - }; - - // Loading text file from resources/text_file.txt - const char *fileName = "resources/text_file.txt"; - char *text = LoadFileText(fileName); - - // Loading all the text lines - int lineCount = 0; - char **lines = LoadTextLines(text, &lineCount); - - // Stylistic choises - int fontSize = 20; - int textTop = 25 + fontSize; // Top of the screen from where the text is rendered - int wrapWidth = screenWidth - 20; - - // Wrap the lines as needed - for (int i = 0; i < lineCount; i++) - { - int j = 0; - int lastSpace = 0; // Keeping track of last valid space to insert '\n' - int lastWrapStart = 0; // Keeping track of the start of this wrapped line. - - while (j <= strlen(lines[i])) - { - if (lines[i][j] == ' ' || lines[i][j] == '\0') - { - char before = lines[i][j]; - // Making a C Style string by adding a '\0' at the required location so that we can use the MeasureText function - lines[i][j] = '\0'; - - // Checking if the text has crossed the wrapWidth, then going back and inserting a newline - if (MeasureText(lines[i] + lastWrapStart, fontSize) > wrapWidth) - { - lines[i][lastSpace] = '\n'; - - // Since we added a newline the place of wrap changed so we update our lastWrapStart - lastWrapStart = lastSpace + 1; - } - - if(before != '\0') lines[i][j] = ' '; // Resetting the space back - lastSpace = j; // Since we encountered a new space we update our last encountered space location - } - - j++; - } - } - - // Calculating the total height so that we can show a scrollbar - int textHeight = 0; - - for (int i = 0; i < lineCount; i++) - { - Vector2 size = MeasureTextEx(GetFontDefault(), lines[i], (float)fontSize, 2); - textHeight += (int)size.y + 10; - } - - // A simple scrollbar on the side to show how far we have read into the file - Rectangle scrollBar = { - .x = (float)screenWidth - 5, - .y = 0, - .width = 5, - .height = screenHeight*100.0f/(textHeight - screenHeight) // Scrollbar height is just a percentage - }; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - float scroll = GetMouseWheelMove(); - cam.target.y -= scroll*fontSize*1.5f; // Choosing an arbitrary speed for scroll - - if (cam.target.y < 0) cam.target.y = 0; // Snapping to 0 if we go too far back - - // Ensuring that the camera does not scroll past all text - if (cam.target.y > textHeight - screenHeight + textTop) - cam.target.y = (float)textHeight - screenHeight + textTop; - - // Computing the position of the scrollBar depending on the percentage of text covered - scrollBar.y = Lerp((float)textTop, (float)screenHeight - scrollBar.height, (float)(cam.target.y - textTop)/(textHeight - screenHeight)); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode2D(cam); - // Going through all the read lines - for (int i = 0, t = textTop; i < lineCount; i++) - { - // Each time we go through and calculate the height of the text to move the cursor appropriately - Vector2 size; - if(strcmp(lines[i], "")){ - // Fix for empty line in the text file - size = MeasureTextEx( GetFontDefault(), lines[i], (float)fontSize, 2); - }else{ - size = MeasureTextEx( GetFontDefault(), " ", (float)fontSize, 2); - } - - DrawText(lines[i], 10, t, fontSize, RED); - - // Inserting extra space for real newlines, - // wrapped lines are rendered closer together - t += (int)size.y + 10; - } - EndMode2D(); - - // Header displaying which file is being read currently - DrawRectangle(0, 0, screenWidth, textTop - 10, BEIGE); - DrawText(TextFormat("File: %s", fileName), 10, 10, fontSize, MAROON); - - DrawRectangleRec(scrollBar, MAROON); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTextLines(lines, lineCount); - UnloadFileText(text); - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_text_file_loading.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_text_file_loading.png deleted file mode 100644 index ac41012..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_text_file_loading.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_undo_redo.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_undo_redo.c deleted file mode 100644 index 78971e6..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_undo_redo.c +++ /dev/null @@ -1,312 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - undo redo -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.6 -* -* Example contributed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include // Required for: calloc(), free() -#include // Required for: memcpy(), strcmp() - -#define MAX_UNDO_STATES 26 // Maximum undo states supported for the ring buffer - -#define GRID_CELL_SIZE 24 -#define MAX_GRID_CELLS_X 30 -#define MAX_GRID_CELLS_Y 13 - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -// Point struct, like Vector2 but using int -typedef struct { - int x; - int y; -} Point; - -// Player state struct -// NOTE: Contains all player data that needs to be affected by undo/redo -typedef struct { - Point cell; - Color color; -} PlayerState; - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -// Draw undo system visualization logic -static void DrawUndoBuffer(Vector2 position, int firstUndoIndex, int lastUndoIndex, int currentUndoIndex, int slotSize); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - // We have multiple options to implement an Undo/Redo system - // Probably the most professional one is using the Command pattern to - // define Actions and store those actions into an array as the events happen, - // raylib internal Automation System actually uses a similar approach, - // but in this example we are using another more simple solution, - // just record PlayerState changes when detected, checking for changes every certain frames - // This approach requires more memory and is more performance costly but it is quite simple to implement - - InitWindow(screenWidth, screenHeight, "raylib [core] example - undo redo"); - - // Undo/redo system variables - int currentUndoIndex = 0; - int firstUndoIndex = 0; - int lastUndoIndex = 0; - int undoFrameCounter = 0; - Vector2 undoInfoPos = { 110, 400 }; - - // Init current player state and undo/redo recorded states array - PlayerState player = { 0 }; - player.cell = (Point){ 10, 10 }; - player.color = RED; - - // Init undo buffer to store MAX_UNDO_STATES states - PlayerState *states = (PlayerState *)RL_CALLOC(MAX_UNDO_STATES, sizeof(PlayerState)); - // Init all undo states to current state - for (int i = 0; i < MAX_UNDO_STATES; i++) memcpy(&states[i], &player, sizeof(PlayerState)); - - // Grid variables - Vector2 gridPosition = { 40, 60 }; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Player movement logic - if (IsKeyPressed(KEY_RIGHT)) player.cell.x++; - else if (IsKeyPressed(KEY_LEFT)) player.cell.x--; - else if (IsKeyPressed(KEY_UP)) player.cell.y--; - else if (IsKeyPressed(KEY_DOWN)) player.cell.y++; - - // Make sure player does not go out of bounds - if (player.cell.x < 0) player.cell.x = 0; - else if (player.cell.x >= MAX_GRID_CELLS_X) player.cell.x = MAX_GRID_CELLS_X - 1; - if (player.cell.y < 0) player.cell.y = 0; - else if (player.cell.y >= MAX_GRID_CELLS_Y) player.cell.y = MAX_GRID_CELLS_Y - 1; - - // Player color change logic - if (IsKeyPressed(KEY_SPACE)) - { - player.color.r = (unsigned char)GetRandomValue(20, 255); - player.color.g = (unsigned char)GetRandomValue(20, 220); - player.color.b = (unsigned char)GetRandomValue(20, 240); - } - - // Undo state change logic - undoFrameCounter++; - - // Waiting a number of frames before checking if we should store a new state snapshot - if (undoFrameCounter >= 2) // Checking every 2 frames - { - if (memcmp(&states[currentUndoIndex], &player, sizeof(PlayerState)) != 0) - { - // Move cursor to next available position of the undo ring buffer to record state - currentUndoIndex++; - if (currentUndoIndex >= MAX_UNDO_STATES) currentUndoIndex = 0; - if (currentUndoIndex == firstUndoIndex) firstUndoIndex++; - if (firstUndoIndex >= MAX_UNDO_STATES) firstUndoIndex = 0; - - memcpy(&states[currentUndoIndex], &player, sizeof(PlayerState)); - lastUndoIndex = currentUndoIndex; - } - - undoFrameCounter = 0; - } - - // Recover previous state from buffer: CTRL+Z - if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_Z)) - { - if (currentUndoIndex != firstUndoIndex) - { - currentUndoIndex--; - if (currentUndoIndex < 0) currentUndoIndex = MAX_UNDO_STATES - 1; - - if (memcmp(&states[currentUndoIndex], &player, sizeof(PlayerState)) != 0) - { - memcpy(&player, &states[currentUndoIndex], sizeof(PlayerState)); - } - } - } - - // Recover next state from buffer: CTRL+Y - if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_Y)) - { - if (currentUndoIndex != lastUndoIndex) - { - int nextUndoIndex = currentUndoIndex + 1; - if (nextUndoIndex >= MAX_UNDO_STATES) nextUndoIndex = 0; - - if (nextUndoIndex != firstUndoIndex) - { - currentUndoIndex = nextUndoIndex; - - if (memcmp(&states[currentUndoIndex], &player, sizeof(PlayerState)) != 0) - { - memcpy(&player, &states[currentUndoIndex], sizeof(PlayerState)); - } - } - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - ClearBackground(RAYWHITE); - - // Draw controls info - DrawText("[ARROWS] MOVE PLAYER - [SPACE] CHANGE PLAYER COLOR", 40, 20, 20, DARKGRAY); - - // Draw player visited cells recorded by undo - // NOTE: Remember we are using a ring buffer approach so, - // some cells info could start at the end of the array and end at the beginning - if (lastUndoIndex > firstUndoIndex) - { - for (int i = firstUndoIndex; i < currentUndoIndex; i++) - DrawRectangleRec((Rectangle){gridPosition.x + states[i].cell.x*GRID_CELL_SIZE, gridPosition.y + states[i].cell.y*GRID_CELL_SIZE, - GRID_CELL_SIZE, GRID_CELL_SIZE }, LIGHTGRAY); - } - else if (firstUndoIndex > lastUndoIndex) - { - if ((currentUndoIndex < MAX_UNDO_STATES) && (currentUndoIndex > lastUndoIndex)) - { - for (int i = firstUndoIndex; i < currentUndoIndex; i++) - DrawRectangleRec((Rectangle) { gridPosition.x + states[i].cell.x*GRID_CELL_SIZE, gridPosition.y + states[i].cell.y*GRID_CELL_SIZE, - GRID_CELL_SIZE, GRID_CELL_SIZE }, LIGHTGRAY); - } - else - { - for (int i = firstUndoIndex; i < MAX_UNDO_STATES; i++) - DrawRectangle((int)gridPosition.x + states[i].cell.x*GRID_CELL_SIZE, (int)gridPosition.y + states[i].cell.y*GRID_CELL_SIZE, - GRID_CELL_SIZE, GRID_CELL_SIZE, LIGHTGRAY); - for (int i = 0; i < currentUndoIndex; i++) - DrawRectangle((int)gridPosition.x + states[i].cell.x*GRID_CELL_SIZE, (int)gridPosition.y + states[i].cell.y*GRID_CELL_SIZE, - GRID_CELL_SIZE, GRID_CELL_SIZE, LIGHTGRAY); - } - } - - // Draw game grid - for (int y = 0; y <= MAX_GRID_CELLS_Y; y++) - DrawLine((int)gridPosition.x, (int)gridPosition.y + y*GRID_CELL_SIZE, - (int)gridPosition.x + MAX_GRID_CELLS_X*GRID_CELL_SIZE, (int)gridPosition.y + y*GRID_CELL_SIZE, GRAY); - for (int x = 0; x <= MAX_GRID_CELLS_X; x++) - DrawLine((int)gridPosition.x + x*GRID_CELL_SIZE, (int)gridPosition.y, - (int)gridPosition.x + x*GRID_CELL_SIZE, (int)gridPosition.y + MAX_GRID_CELLS_Y*GRID_CELL_SIZE, GRAY); - - // Draw player - DrawRectangle((int)gridPosition.x + player.cell.x*GRID_CELL_SIZE, (int)gridPosition.y + player.cell.y*GRID_CELL_SIZE, - GRID_CELL_SIZE + 1, GRID_CELL_SIZE + 1, player.color); - - // Draw undo system buffer info - DrawText("UNDO STATES:", (int)undoInfoPos.x - 85, (int)undoInfoPos.y + 9, 10, DARKGRAY); - DrawUndoBuffer(undoInfoPos, firstUndoIndex, lastUndoIndex, currentUndoIndex, 24); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - RL_FREE(states); // Free undo states array - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -// Draw undo system visualization logic -// NOTE: Visualizing the ring buffer array, every square can store a player state -static void DrawUndoBuffer(Vector2 position, int firstUndoIndex, int lastUndoIndex, int currentUndoIndex, int slotSize) -{ - // Draw index marks - DrawRectangle((int)position.x + 8 + slotSize*currentUndoIndex, (int)position.y - 10, 8, 8, RED); - DrawRectangleLines((int)position.x + 2 + slotSize*firstUndoIndex, (int)position.y + 27, 8, 8, BLACK); - DrawRectangle((int)position.x + 14 + slotSize*lastUndoIndex, (int)position.y + 27, 8, 8, BLACK); - - // Draw background gray slots - for (int i = 0; i < MAX_UNDO_STATES; i++) - { - DrawRectangle((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, LIGHTGRAY); - DrawRectangleLines((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, GRAY); - } - - // Draw occupied slots: firstUndoIndex --> lastUndoIndex - if (firstUndoIndex <= lastUndoIndex) - { - for (int i = firstUndoIndex; i < lastUndoIndex + 1; i++) - { - DrawRectangle((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, SKYBLUE); - DrawRectangleLines((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, BLUE); - } - } - else if (lastUndoIndex < firstUndoIndex) - { - for (int i = firstUndoIndex; i < MAX_UNDO_STATES; i++) - { - DrawRectangle((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, SKYBLUE); - DrawRectangleLines((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, BLUE); - } - - for (int i = 0; i < lastUndoIndex + 1; i++) - { - DrawRectangle((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, SKYBLUE); - DrawRectangleLines((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, BLUE); - } - } - - // Draw occupied slots: firstUndoIndex --> currentUndoIndex - if (firstUndoIndex < currentUndoIndex) - { - for (int i = firstUndoIndex; i < currentUndoIndex; i++) - { - DrawRectangle((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, GREEN); - DrawRectangleLines((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, LIME); - } - } - else if (currentUndoIndex < firstUndoIndex) - { - for (int i = firstUndoIndex; i < MAX_UNDO_STATES; i++) - { - DrawRectangle((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, GREEN); - DrawRectangleLines((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, LIME); - } - - for (int i = 0; i < currentUndoIndex; i++) - { - DrawRectangle((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, GREEN); - DrawRectangleLines((int)position.x + slotSize*i, (int)position.y, slotSize, slotSize, LIME); - } - } - - // Draw current selected UNDO slot - DrawRectangle((int)position.x + slotSize*currentUndoIndex, (int)position.y, slotSize, slotSize, GOLD); - DrawRectangleLines((int)position.x + slotSize*currentUndoIndex, (int)position.y, slotSize, slotSize, ORANGE); -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_undo_redo.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_undo_redo.png deleted file mode 100644 index b125b84..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_undo_redo.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_viewport_scaling.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_viewport_scaling.c deleted file mode 100644 index 716b2f4..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_viewport_scaling.c +++ /dev/null @@ -1,321 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - viewport scaling -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.5 -* -* Example contributed by Agnis Aldiņš (@nezvers) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Agnis Aldiņš (@nezvers) -* -********************************************************************************************/ - -#include "raylib.h" - -#define RESOLUTION_COUNT 4 // For iteration purposes and teaching example - -typedef enum { - // Only upscale, useful for pixel art - KEEP_ASPECT_INTEGER, - KEEP_HEIGHT_INTEGER, - KEEP_WIDTH_INTEGER, - // Can also downscale - KEEP_ASPECT, - KEEP_HEIGHT, - KEEP_WIDTH, - // For itteration purposes and as a teaching example - VIEWPORT_TYPE_COUNT, -} ViewportType; - -// For displaying on GUI -const char *ViewportTypeNames[VIEWPORT_TYPE_COUNT] = { - "KEEP_ASPECT_INTEGER", - "KEEP_HEIGHT_INTEGER", - "KEEP_WIDTH_INTEGER", - "KEEP_ASPECT", - "KEEP_HEIGHT", - "KEEP_WIDTH", -}; - -//-------------------------------------------------------------------------------------- -// Module Functions Declaration -//-------------------------------------------------------------------------------------- -static void KeepAspectCenteredInteger(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect); -static void KeepHeightCenteredInteger(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect); -static void KeepWidthCenteredInteger(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect); -static void KeepAspectCentered(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect); -static void KeepHeightCentered(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect); -static void KeepWidthCentered(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect); -static void ResizeRenderSize(ViewportType viewportType, int *screenWidth, int *screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect, RenderTexture2D *target); - -// Example how to calculate position on RenderTexture -static Vector2 Screen2RenderTexturePosition(Vector2 point, Rectangle *textureRect, Rectangle *scaledRect); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //--------------------------------------------------------- - int screenWidth = 800; - int screenHeight = 450; - - SetConfigFlags(FLAG_WINDOW_RESIZABLE); - InitWindow(screenWidth, screenHeight, "raylib [core] example - viewport scaling"); - - // Preset resolutions that could be created by subdividing screen resolution - Vector2 resolutionList[RESOLUTION_COUNT] = { - (Vector2){ 64, 64 }, - (Vector2){ 256, 240 }, - (Vector2){ 320, 180 }, - // 4K doesn't work with integer scaling but included for example purposes with non-integer scaling - (Vector2){ 3840, 2160 }, - }; - - int resolutionIndex = 0; - int gameWidth = 64; - int gameHeight = 64; - - RenderTexture2D target = (RenderTexture2D){ 0 }; - Rectangle sourceRect = (Rectangle){ 0 }; - Rectangle destRect = (Rectangle){ 0 }; - - ViewportType viewportType = KEEP_ASPECT_INTEGER; - ResizeRenderSize(viewportType, &screenWidth, &screenHeight, gameWidth, gameHeight, &sourceRect, &destRect, &target); - - // Button rectangles - Rectangle decreaseResolutionButton = (Rectangle){ 200, 30, 10, 10 }; - Rectangle increaseResolutionButton = (Rectangle){ 215, 30, 10, 10 }; - Rectangle decreaseTypeButton = (Rectangle){ 200, 45, 10, 10 }; - Rectangle increaseTypeButton = (Rectangle){ 215, 45, 10, 10 }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //---------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsWindowResized()) ResizeRenderSize(viewportType, &screenWidth, &screenHeight, gameWidth, gameHeight, &sourceRect, &destRect, &target); - - Vector2 mousePosition = GetMousePosition(); - bool mousePressed = IsMouseButtonPressed(MOUSE_BUTTON_LEFT); - - // Check buttons and rescale - if (CheckCollisionPointRec(mousePosition, decreaseResolutionButton) && mousePressed) - { - resolutionIndex = (resolutionIndex + RESOLUTION_COUNT - 1)%RESOLUTION_COUNT; - gameWidth = (int)resolutionList[resolutionIndex].x; - gameHeight = (int)resolutionList[resolutionIndex].y; - ResizeRenderSize(viewportType, &screenWidth, &screenHeight, gameWidth, gameHeight, &sourceRect, &destRect, &target); - } - - if (CheckCollisionPointRec(mousePosition, increaseResolutionButton) && mousePressed) - { - resolutionIndex = (resolutionIndex + 1)%RESOLUTION_COUNT; - gameWidth = (int)resolutionList[resolutionIndex].x; - gameHeight = (int)resolutionList[resolutionIndex].y; - ResizeRenderSize(viewportType, &screenWidth, &screenHeight, gameWidth, gameHeight, &sourceRect, &destRect, &target); - } - - if (CheckCollisionPointRec(mousePosition, decreaseTypeButton) && mousePressed) - { - viewportType = (viewportType + VIEWPORT_TYPE_COUNT - 1)%VIEWPORT_TYPE_COUNT; - ResizeRenderSize(viewportType, &screenWidth, &screenHeight, gameWidth, gameHeight, &sourceRect, &destRect, &target); - } - - if (CheckCollisionPointRec(mousePosition, increaseTypeButton) && mousePressed) - { - viewportType = (viewportType + 1)%VIEWPORT_TYPE_COUNT; - ResizeRenderSize(viewportType, &screenWidth, &screenHeight, gameWidth, gameHeight, &sourceRect, &destRect, &target); - } - - Vector2 textureMousePosition = Screen2RenderTexturePosition(mousePosition, &sourceRect, &destRect); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - // Draw our scene to the render texture - BeginTextureMode(target); - ClearBackground(WHITE); - DrawCircleV(textureMousePosition, 20.0f, LIME); - EndTextureMode(); - - // Draw render texture to main framebuffer - BeginDrawing(); - ClearBackground(BLACK); - - // Draw our render texture with rotation applied - DrawTexturePro(target.texture, sourceRect, destRect, (Vector2){ 0.0f, 0.0f }, 0.0f, WHITE); - - // Draw Native resolution (GUI or anything) - // Draw info box - Rectangle infoRect = (Rectangle){5, 5, 330, 105}; - DrawRectangleRec(infoRect, Fade(LIGHTGRAY, 0.7f)); - DrawRectangleLinesEx(infoRect, 1, BLUE); - - DrawText(TextFormat("Window Resolution: %d x %d", screenWidth, screenHeight), 15, 15, 10, BLACK); - DrawText(TextFormat("Game Resolution: %d x %d", gameWidth, gameHeight), 15, 30, 10, BLACK); - - DrawText(TextFormat("Type: %s", ViewportTypeNames[viewportType]), 15, 45, 10, BLACK); - Vector2 scaleRatio = (Vector2){destRect.width/sourceRect.width, -destRect.height/sourceRect.height}; - if (scaleRatio.x < 0.001f || scaleRatio.y < 0.001f) DrawText(TextFormat("Scale ratio: INVALID"), 15, 60, 10, BLACK); - else DrawText(TextFormat("Scale ratio: %.2f x %.2f", scaleRatio.x, scaleRatio.y), 15, 60, 10, BLACK); - - DrawText(TextFormat("Source size: %.2f x %.2f", sourceRect.width, -sourceRect.height), 15, 75, 10, BLACK); - DrawText(TextFormat("Destination size: %.2f x %.2f", destRect.width, destRect.height), 15, 90, 10, BLACK); - - // Draw buttons - DrawRectangleRec(decreaseTypeButton, SKYBLUE); - DrawRectangleRec(increaseTypeButton, SKYBLUE); - DrawRectangleRec(decreaseResolutionButton, SKYBLUE); - DrawRectangleRec(increaseResolutionButton, SKYBLUE); - DrawText("<", (int)decreaseTypeButton.x + 3, (int)decreaseTypeButton.y + 1, 10, BLACK); - DrawText(">", (int)increaseTypeButton.x + 3, (int)increaseTypeButton.y + 1, 10, BLACK); - DrawText("<", (int)decreaseResolutionButton.x + 3, (int)decreaseResolutionButton.y + 1, 10, BLACK); - DrawText(">", (int)increaseResolutionButton.x + 3, (int)increaseResolutionButton.y + 1, 10, BLACK); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //---------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //---------------------------------------------------------------------------------- - - return 0; -} - -//-------------------------------------------------------------------------------------- -// Module Functions Definition -//-------------------------------------------------------------------------------------- -static void KeepAspectCenteredInteger(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect) -{ - sourceRect->x = 0.0f; - sourceRect->y = (float)gameHeight; - sourceRect->width = (float)gameWidth; - sourceRect->height = (float)-gameHeight; - - const int ratio_x = (screenWidth/gameWidth); - const int ratio_y = (screenHeight/gameHeight); - const float resizeRatio = (float)((ratio_x < ratio_y)? ratio_x : ratio_y); - - destRect->x = (float)(int)((screenWidth - (gameWidth*resizeRatio))*0.5f); - destRect->y = (float)(int)((screenHeight - (gameHeight*resizeRatio))*0.5f); - destRect->width = (float)(int)(gameWidth*resizeRatio); - destRect->height = (float)(int)(gameHeight*resizeRatio); -} - -static void KeepHeightCenteredInteger(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect) -{ - const float resizeRatio = (float)screenHeight/gameHeight; - sourceRect->x = 0.0f; - sourceRect->y = 0.0f; - sourceRect->width = (float)(int)(screenWidth/resizeRatio); - sourceRect->height = (float)-gameHeight; - - destRect->x = (float)(int)((screenWidth - (sourceRect->width*resizeRatio))*0.5f); - destRect->y = (float)(int)((screenHeight - (gameHeight*resizeRatio))*0.5f); - destRect->width = (float)(int)(sourceRect->width*resizeRatio); - destRect->height = (float)(int)(gameHeight*resizeRatio); -} - -static void KeepWidthCenteredInteger(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect) -{ - const float resizeRatio = (float)screenWidth/gameWidth; - sourceRect->x = 0.0f; - sourceRect->y = 0.0f; - sourceRect->width = (float)gameWidth; - sourceRect->height = (float)(int)(screenHeight/resizeRatio); - - destRect->x = (float)(int)((screenWidth - (gameWidth*resizeRatio))*0.5f); - destRect->y = (float)(int)((screenHeight - (sourceRect->height*resizeRatio))*0.5f); - destRect->width = (float)(int)(gameWidth*resizeRatio); - destRect->height = (float)(int)(sourceRect->height*resizeRatio); - - sourceRect->height *= -1.0f; -} - -static void KeepAspectCentered(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect) -{ - sourceRect->x = 0.0f; - sourceRect->y = (float)gameHeight; - sourceRect->width = (float)gameWidth; - sourceRect->height = (float)-gameHeight; - - const float ratio_x = ((float)screenWidth/(float)gameWidth); - const float ratio_y = ((float)screenHeight/(float)gameHeight); - const float resizeRatio = (ratio_x < ratio_y ? ratio_x : ratio_y); - - destRect->x = (float)(int)((screenWidth - (gameWidth*resizeRatio))*0.5f); - destRect->y = (float)(int)((screenHeight - (gameHeight*resizeRatio))*0.5f); - destRect->width = (float)(int)(gameWidth*resizeRatio); - destRect->height = (float)(int)(gameHeight*resizeRatio); -} - -static void KeepHeightCentered(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect) -{ - const float resizeRatio = ((float)screenHeight/(float)gameHeight); - sourceRect->x = 0.0f; - sourceRect->y = 0.0f; - sourceRect->width = (float)(int)((float)screenWidth/resizeRatio); - sourceRect->height = (float)-gameHeight; - - destRect->x = (float)(int)((screenWidth - (sourceRect->width*resizeRatio))*0.5f); - destRect->y = (float)(int)((screenHeight - (gameHeight*resizeRatio))*0.5f); - destRect->width = (float)(int)(sourceRect->width*resizeRatio); - destRect->height = (float)(int)(gameHeight*resizeRatio); -} - -static void KeepWidthCentered(int screenWidth, int screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect) -{ - const float resizeRatio = ((float)screenWidth/(float)gameWidth); - sourceRect->x = 0.0f; - sourceRect->y = 0.0f; - sourceRect->width = (float)gameWidth; - sourceRect->height = (float)(int)((float)screenHeight/resizeRatio); - - destRect->x = (float)(int)((screenWidth - (gameWidth*resizeRatio))*0.5f); - destRect->y = (float)(int)((screenHeight - (sourceRect->height*resizeRatio))*0.5f); - destRect->width = (float)(int)(gameWidth*resizeRatio); - destRect->height = (float)(int)(sourceRect->height*resizeRatio); - - sourceRect->height *= -1.f; -} - -static void ResizeRenderSize(ViewportType viewportType, int *screenWidth, int *screenHeight, int gameWidth, int gameHeight, Rectangle *sourceRect, Rectangle *destRect, RenderTexture2D *target) -{ - *screenWidth = GetScreenWidth(); - *screenHeight = GetScreenHeight(); - - switch(viewportType) - { - case KEEP_ASPECT_INTEGER: KeepAspectCenteredInteger(*screenWidth, *screenHeight, gameWidth, gameHeight, sourceRect, destRect); break; - case KEEP_HEIGHT_INTEGER: KeepHeightCenteredInteger(*screenWidth, *screenHeight, gameWidth, gameHeight, sourceRect, destRect); break; - case KEEP_WIDTH_INTEGER: KeepWidthCenteredInteger(*screenWidth, *screenHeight, gameWidth, gameHeight, sourceRect, destRect); break; - case KEEP_ASPECT: KeepAspectCentered(*screenWidth, *screenHeight, gameWidth, gameHeight, sourceRect, destRect); break; - case KEEP_HEIGHT: KeepHeightCentered(*screenWidth, *screenHeight, gameWidth, gameHeight, sourceRect, destRect); break; - case KEEP_WIDTH: KeepWidthCentered(*screenWidth, *screenHeight, gameWidth, gameHeight, sourceRect, destRect); break; - default: break; - } - - UnloadRenderTexture(*target); - *target = LoadRenderTexture((int)sourceRect->width, -(int)sourceRect->height); -} - -// Example how to calculate position on RenderTexture -static Vector2 Screen2RenderTexturePosition(Vector2 point, Rectangle *textureRect, Rectangle *scaledRect) -{ - Vector2 relativePosition = {point.x - scaledRect->x, point.y - scaledRect->y}; - Vector2 ratio = {textureRect->width/scaledRect->width, -textureRect->height/scaledRect->height}; - - return (Vector2){relativePosition.x*ratio.x, relativePosition.y*ratio.x}; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_viewport_scaling.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_viewport_scaling.png deleted file mode 100644 index 68fad62..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_viewport_scaling.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_vr_simulator.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_vr_simulator.c deleted file mode 100644 index 635bda1..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_vr_simulator.c +++ /dev/null @@ -1,152 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - vr simulator -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 2.5, last time updated with raylib 4.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2017-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#if defined(PLATFORM_DESKTOP) - #define GLSL_VERSION 330 -#else // PLATFORM_ANDROID, PLATFORM_WEB - #define GLSL_VERSION 100 -#endif - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - // NOTE: screenWidth/screenHeight should match VR device aspect ratio - InitWindow(screenWidth, screenHeight, "raylib [core] example - vr simulator"); - - // VR device parameters definition - VrDeviceInfo device = { - // Oculus Rift CV1 parameters for simulator - .hResolution = 2160, // Horizontal resolution in pixels - .vResolution = 1200, // Vertical resolution in pixels - .hScreenSize = 0.133793f, // Horizontal size in meters - .vScreenSize = 0.0669f, // Vertical size in meters - .eyeToScreenDistance = 0.041f, // Distance between eye and display in meters - .lensSeparationDistance = 0.07f, // Lens separation distance in meters - .interpupillaryDistance = 0.07f, // IPD (distance between pupils) in meters - - // NOTE: CV1 uses fresnel-hybrid-asymmetric lenses with specific compute shaders - // Following parameters are just an approximation to CV1 distortion stereo rendering - .lensDistortionValues[0] = 1.0f, // Lens distortion constant parameter 0 - .lensDistortionValues[1] = 0.22f, // Lens distortion constant parameter 1 - .lensDistortionValues[2] = 0.24f, // Lens distortion constant parameter 2 - .lensDistortionValues[3] = 0.0f, // Lens distortion constant parameter 3 - .chromaAbCorrection[0] = 0.996f, // Chromatic aberration correction parameter 0 - .chromaAbCorrection[1] = -0.004f, // Chromatic aberration correction parameter 1 - .chromaAbCorrection[2] = 1.014f, // Chromatic aberration correction parameter 2 - .chromaAbCorrection[3] = 0.0f, // Chromatic aberration correction parameter 3 - }; - - // Load VR stereo config for VR device parameteres (Oculus Rift CV1 parameters) - VrStereoConfig config = LoadVrStereoConfig(device); - - // Distortion shader (uses device lens distortion and chroma) - Shader distortion = LoadShader(0, TextFormat("resources/shaders/glsl%i/distortion.fs", GLSL_VERSION)); - - // Update distortion shader with lens and distortion-scale parameters - SetShaderValue(distortion, GetShaderLocation(distortion, "leftLensCenter"), - config.leftLensCenter, SHADER_UNIFORM_VEC2); - SetShaderValue(distortion, GetShaderLocation(distortion, "rightLensCenter"), - config.rightLensCenter, SHADER_UNIFORM_VEC2); - SetShaderValue(distortion, GetShaderLocation(distortion, "leftScreenCenter"), - config.leftScreenCenter, SHADER_UNIFORM_VEC2); - SetShaderValue(distortion, GetShaderLocation(distortion, "rightScreenCenter"), - config.rightScreenCenter, SHADER_UNIFORM_VEC2); - - SetShaderValue(distortion, GetShaderLocation(distortion, "scale"), - config.scale, SHADER_UNIFORM_VEC2); - SetShaderValue(distortion, GetShaderLocation(distortion, "scaleIn"), - config.scaleIn, SHADER_UNIFORM_VEC2); - SetShaderValue(distortion, GetShaderLocation(distortion, "deviceWarpParam"), - device.lensDistortionValues, SHADER_UNIFORM_VEC4); - SetShaderValue(distortion, GetShaderLocation(distortion, "chromaAbParam"), - device.chromaAbCorrection, SHADER_UNIFORM_VEC4); - - // Initialize framebuffer for stereo rendering - // NOTE: Screen size should match HMD aspect ratio - RenderTexture2D target = LoadRenderTexture(device.hResolution, device.vResolution); - - // The target's height is flipped (in the source Rectangle), due to OpenGL reasons - Rectangle sourceRec = { 0.0f, 0.0f, (float)target.texture.width, -(float)target.texture.height }; - Rectangle destRec = { 0.0f, 0.0f, (float)GetScreenWidth(), (float)GetScreenHeight() }; - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 5.0f, 2.0f, 5.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector - camera.fovy = 60.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; - - DisableCursor(); // Limit cursor to relative movement inside the window - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_FIRST_PERSON); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginTextureMode(target); - ClearBackground(RAYWHITE); - BeginVrStereoMode(config); - BeginMode3D(camera); - - DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); - DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON); - DrawGrid(40, 1.0f); - - EndMode3D(); - EndVrStereoMode(); - EndTextureMode(); - - BeginDrawing(); - ClearBackground(RAYWHITE); - BeginShaderMode(distortion); - DrawTexturePro(target.texture, sourceRec, destRec, (Vector2){ 0.0f, 0.0f }, 0.0f, WHITE); - EndShaderMode(); - DrawFPS(10, 10); - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadVrStereoConfig(config); // Unload stereo config - - UnloadRenderTexture(target); // Unload stereo render fbo - UnloadShader(distortion); // Unload distortion shader - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_vr_simulator.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_vr_simulator.png deleted file mode 100644 index aa4d093..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_vr_simulator.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_flags.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_flags.c deleted file mode 100644 index 185e7f2..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_flags.c +++ /dev/null @@ -1,207 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - window flags -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 3.5, last time updated with raylib 3.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2020-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //--------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - // Possible window flags - /* - FLAG_VSYNC_HINT - FLAG_FULLSCREEN_MODE -> not working properly -> wrong scaling! - FLAG_WINDOW_RESIZABLE - FLAG_WINDOW_UNDECORATED - FLAG_WINDOW_TRANSPARENT - FLAG_WINDOW_HIDDEN - FLAG_WINDOW_MINIMIZED -> Not supported on window creation - FLAG_WINDOW_MAXIMIZED -> Not supported on window creation - FLAG_WINDOW_UNFOCUSED - FLAG_WINDOW_TOPMOST - FLAG_WINDOW_HIGHDPI -> errors after minimize-resize, fb size is recalculated - FLAG_WINDOW_ALWAYS_RUN - FLAG_MSAA_4X_HINT - */ - - // Set configuration flags for window creation - //SetConfigFlags(FLAG_VSYNC_HINT | FLAG_MSAA_4X_HINT | FLAG_WINDOW_HIGHDPI);// | FLAG_WINDOW_TRANSPARENT); - InitWindow(screenWidth, screenHeight, "raylib [core] example - window flags"); - - Vector2 ballPosition = { GetScreenWidth()/2.0f, GetScreenHeight()/2.0f }; - Vector2 ballSpeed = { 5.0f, 4.0f }; - float ballRadius = 20; - - int framesCounter = 0; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //---------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //----------------------------------------------------- - if (IsKeyPressed(KEY_F)) ToggleFullscreen(); // modifies window size when scaling! - - if (IsKeyPressed(KEY_R)) - { - if (IsWindowState(FLAG_WINDOW_RESIZABLE)) ClearWindowState(FLAG_WINDOW_RESIZABLE); - else SetWindowState(FLAG_WINDOW_RESIZABLE); - } - - if (IsKeyPressed(KEY_D)) - { - if (IsWindowState(FLAG_WINDOW_UNDECORATED)) ClearWindowState(FLAG_WINDOW_UNDECORATED); - else SetWindowState(FLAG_WINDOW_UNDECORATED); - } - - if (IsKeyPressed(KEY_H)) - { - if (!IsWindowState(FLAG_WINDOW_HIDDEN)) SetWindowState(FLAG_WINDOW_HIDDEN); - - framesCounter = 0; - } - - if (IsWindowState(FLAG_WINDOW_HIDDEN)) - { - framesCounter++; - if (framesCounter >= 240) ClearWindowState(FLAG_WINDOW_HIDDEN); // Show window after 3 seconds - } - - if (IsKeyPressed(KEY_N)) - { - if (!IsWindowState(FLAG_WINDOW_MINIMIZED)) MinimizeWindow(); - - framesCounter = 0; - } - - if (IsWindowState(FLAG_WINDOW_MINIMIZED)) - { - framesCounter++; - if (framesCounter >= 240) - { - RestoreWindow(); // Restore window after 3 seconds - framesCounter = 0; - } - } - - if (IsKeyPressed(KEY_M)) - { - // NOTE: Requires FLAG_WINDOW_RESIZABLE enabled! - if (IsWindowState(FLAG_WINDOW_MAXIMIZED)) RestoreWindow(); - else MaximizeWindow(); - } - - if (IsKeyPressed(KEY_U)) - { - if (IsWindowState(FLAG_WINDOW_UNFOCUSED)) ClearWindowState(FLAG_WINDOW_UNFOCUSED); - else SetWindowState(FLAG_WINDOW_UNFOCUSED); - } - - if (IsKeyPressed(KEY_T)) - { - if (IsWindowState(FLAG_WINDOW_TOPMOST)) ClearWindowState(FLAG_WINDOW_TOPMOST); - else SetWindowState(FLAG_WINDOW_TOPMOST); - } - - if (IsKeyPressed(KEY_A)) - { - if (IsWindowState(FLAG_WINDOW_ALWAYS_RUN)) ClearWindowState(FLAG_WINDOW_ALWAYS_RUN); - else SetWindowState(FLAG_WINDOW_ALWAYS_RUN); - } - - if (IsKeyPressed(KEY_V)) - { - if (IsWindowState(FLAG_VSYNC_HINT)) ClearWindowState(FLAG_VSYNC_HINT); - else SetWindowState(FLAG_VSYNC_HINT); - } - - if (IsKeyPressed(KEY_B)) ToggleBorderlessWindowed(); - - - // Bouncing ball logic - ballPosition.x += ballSpeed.x; - ballPosition.y += ballSpeed.y; - if ((ballPosition.x >= (GetScreenWidth() - ballRadius)) || (ballPosition.x <= ballRadius)) ballSpeed.x *= -1.0f; - if ((ballPosition.y >= (GetScreenHeight() - ballRadius)) || (ballPosition.y <= ballRadius)) ballSpeed.y *= -1.0f; - //----------------------------------------------------- - - // Draw - //----------------------------------------------------- - BeginDrawing(); - - if (IsWindowState(FLAG_WINDOW_TRANSPARENT)) ClearBackground(BLANK); - else ClearBackground(RAYWHITE); - - DrawCircleV(ballPosition, ballRadius, MAROON); - DrawRectangleLinesEx((Rectangle) { 0, 0, (float)GetScreenWidth(), (float)GetScreenHeight() }, 4, RAYWHITE); - - DrawCircleV(GetMousePosition(), 10, DARKBLUE); - - DrawFPS(10, 10); - - DrawText(TextFormat("Screen Size: [%i, %i]", GetScreenWidth(), GetScreenHeight()), 10, 40, 10, GREEN); - - // Draw window state info - DrawText("Following flags can be set after window creation:", 10, 60, 10, GRAY); - if (IsWindowState(FLAG_FULLSCREEN_MODE)) DrawText("[F] FLAG_FULLSCREEN_MODE: on", 10, 80, 10, LIME); - else DrawText("[F] FLAG_FULLSCREEN_MODE: off", 10, 80, 10, MAROON); - if (IsWindowState(FLAG_WINDOW_RESIZABLE)) DrawText("[R] FLAG_WINDOW_RESIZABLE: on", 10, 100, 10, LIME); - else DrawText("[R] FLAG_WINDOW_RESIZABLE: off", 10, 100, 10, MAROON); - if (IsWindowState(FLAG_WINDOW_UNDECORATED)) DrawText("[D] FLAG_WINDOW_UNDECORATED: on", 10, 120, 10, LIME); - else DrawText("[D] FLAG_WINDOW_UNDECORATED: off", 10, 120, 10, MAROON); - if (IsWindowState(FLAG_WINDOW_HIDDEN)) DrawText("[H] FLAG_WINDOW_HIDDEN: on", 10, 140, 10, LIME); - else DrawText("[H] FLAG_WINDOW_HIDDEN: off (hides for 3 seconds)", 10, 140, 10, MAROON); - if (IsWindowState(FLAG_WINDOW_MINIMIZED)) DrawText("[N] FLAG_WINDOW_MINIMIZED: on", 10, 160, 10, LIME); - else DrawText("[N] FLAG_WINDOW_MINIMIZED: off (restores after 3 seconds)", 10, 160, 10, MAROON); - if (IsWindowState(FLAG_WINDOW_MAXIMIZED)) DrawText("[M] FLAG_WINDOW_MAXIMIZED: on", 10, 180, 10, LIME); - else DrawText("[M] FLAG_WINDOW_MAXIMIZED: off", 10, 180, 10, MAROON); - if (IsWindowState(FLAG_WINDOW_UNFOCUSED)) DrawText("[G] FLAG_WINDOW_UNFOCUSED: on", 10, 200, 10, LIME); - else DrawText("[U] FLAG_WINDOW_UNFOCUSED: off", 10, 200, 10, MAROON); - if (IsWindowState(FLAG_WINDOW_TOPMOST)) DrawText("[T] FLAG_WINDOW_TOPMOST: on", 10, 220, 10, LIME); - else DrawText("[T] FLAG_WINDOW_TOPMOST: off", 10, 220, 10, MAROON); - if (IsWindowState(FLAG_WINDOW_ALWAYS_RUN)) DrawText("[A] FLAG_WINDOW_ALWAYS_RUN: on", 10, 240, 10, LIME); - else DrawText("[A] FLAG_WINDOW_ALWAYS_RUN: off", 10, 240, 10, MAROON); - if (IsWindowState(FLAG_VSYNC_HINT)) DrawText("[V] FLAG_VSYNC_HINT: on", 10, 260, 10, LIME); - else DrawText("[V] FLAG_VSYNC_HINT: off", 10, 260, 10, MAROON); - if (IsWindowState(FLAG_BORDERLESS_WINDOWED_MODE)) DrawText("[B] FLAG_BORDERLESS_WINDOWED_MODE: on", 10, 280, 10, LIME); - else DrawText("[B] FLAG_BORDERLESS_WINDOWED_MODE: off", 10, 280, 10, MAROON); - - DrawText("Following flags can only be set before window creation:", 10, 320, 10, GRAY); - if (IsWindowState(FLAG_WINDOW_HIGHDPI)) DrawText("FLAG_WINDOW_HIGHDPI: on", 10, 340, 10, LIME); - else DrawText("FLAG_WINDOW_HIGHDPI: off", 10, 340, 10, MAROON); - if (IsWindowState(FLAG_WINDOW_TRANSPARENT)) DrawText("FLAG_WINDOW_TRANSPARENT: on", 10, 360, 10, LIME); - else DrawText("FLAG_WINDOW_TRANSPARENT: off", 10, 360, 10, MAROON); - if (IsWindowState(FLAG_MSAA_4X_HINT)) DrawText("FLAG_MSAA_4X_HINT: on", 10, 380, 10, LIME); - else DrawText("FLAG_MSAA_4X_HINT: off", 10, 380, 10, MAROON); - - EndDrawing(); - //----------------------------------------------------- - } - - // De-Initialization - //--------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //---------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_flags.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_flags.png deleted file mode 100644 index 413d2a8..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_flags.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_letterbox.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_letterbox.c deleted file mode 100644 index be8c3da..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_letterbox.c +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - window letterbox -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 2.5, last time updated with raylib 4.0 -* -* Example contributed by Anata (@anatagawa) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2019-2025 Anata (@anatagawa) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" // Required for: Vector2Clamp() - -#define MAX(a, b) ((a)>(b)? (a) : (b)) -#define MIN(a, b) ((a)<(b)? (a) : (b)) - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - const int screenWidth = 800; - const int screenHeight = 450; - - // Enable config flags for resizable window and vertical synchro - SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_VSYNC_HINT); - InitWindow(screenWidth, screenHeight, "raylib [core] example - window letterbox"); - SetWindowMinSize(320, 240); - - int gameScreenWidth = 640; - int gameScreenHeight = 480; - - // Render texture initialization, used to hold the rendering result so we can easily resize it - RenderTexture2D target = LoadRenderTexture(gameScreenWidth, gameScreenHeight); - SetTextureFilter(target.texture, TEXTURE_FILTER_BILINEAR); // Texture scale filter to use - - Color colors[10] = { 0 }; - for (int i = 0; i < 10; i++) colors[i] = (Color){ GetRandomValue(100, 250), GetRandomValue(50, 150), GetRandomValue(10, 100), 255 }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Compute required framebuffer scaling - float scale = MIN((float)GetScreenWidth()/gameScreenWidth, (float)GetScreenHeight()/gameScreenHeight); - - if (IsKeyPressed(KEY_SPACE)) - { - // Recalculate random colors for the bars - for (int i = 0; i < 10; i++) colors[i] = (Color){ GetRandomValue(100, 250), GetRandomValue(50, 150), GetRandomValue(10, 100), 255 }; - } - - // Update virtual mouse (clamped mouse value behind game screen) - Vector2 mouse = GetMousePosition(); - Vector2 virtualMouse = { 0 }; - virtualMouse.x = (mouse.x - (GetScreenWidth() - (gameScreenWidth*scale))*0.5f)/scale; - virtualMouse.y = (mouse.y - (GetScreenHeight() - (gameScreenHeight*scale))*0.5f)/scale; - virtualMouse = Vector2Clamp(virtualMouse, (Vector2){ 0, 0 }, (Vector2){ (float)gameScreenWidth, (float)gameScreenHeight }); - - // Apply the same transformation as the virtual mouse to the real mouse (i.e. to work with raygui) - //SetMouseOffset(-(GetScreenWidth() - (gameScreenWidth*scale))*0.5f, -(GetScreenHeight() - (gameScreenHeight*scale))*0.5f); - //SetMouseScale(1/scale, 1/scale); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - // Draw everything in the render texture, note this will not be rendered on screen, yet - BeginTextureMode(target); - ClearBackground(RAYWHITE); // Clear render texture background color - - for (int i = 0; i < 10; i++) DrawRectangle(0, (gameScreenHeight/10)*i, gameScreenWidth, gameScreenHeight/10, colors[i]); - - DrawText("If executed inside a window,\nyou can resize the window,\nand see the screen scaling!", 10, 25, 20, WHITE); - DrawText(TextFormat("Default Mouse: [%i , %i]", (int)mouse.x, (int)mouse.y), 350, 25, 20, GREEN); - DrawText(TextFormat("Virtual Mouse: [%i , %i]", (int)virtualMouse.x, (int)virtualMouse.y), 350, 55, 20, YELLOW); - EndTextureMode(); - - BeginDrawing(); - ClearBackground(BLACK); // Clear screen background - - // Draw render texture to screen, properly scaled - DrawTexturePro(target.texture, (Rectangle){ 0.0f, 0.0f, (float)target.texture.width, (float)-target.texture.height }, - (Rectangle){ (GetScreenWidth() - ((float)gameScreenWidth*scale))*0.5f, (GetScreenHeight() - ((float)gameScreenHeight*scale))*0.5f, - (float)gameScreenWidth*scale, (float)gameScreenHeight*scale }, (Vector2){ 0, 0 }, 0.0f, WHITE); - EndDrawing(); - //-------------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadRenderTexture(target); // Unload render texture - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_letterbox.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_letterbox.png deleted file mode 100644 index fbdbb86..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_letterbox.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_should_close.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_should_close.c deleted file mode 100644 index f53f9d4..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_should_close.c +++ /dev/null @@ -1,79 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - window should close -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 4.2, last time updated with raylib 4.2 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2013-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - window should close"); - - SetExitKey(KEY_NULL); // Disable KEY_ESCAPE to close window, X-button still works - - bool exitWindowRequested = false; // Flag to request window to exit - bool exitWindow = false; // Flag to set window to exit - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!exitWindow) - { - // Update - //---------------------------------------------------------------------------------- - // Detect if X-button or KEY_ESCAPE have been pressed to close window - if (WindowShouldClose() || IsKeyPressed(KEY_ESCAPE)) exitWindowRequested = true; - - if (exitWindowRequested) - { - // A request for close window has been issued, we can save data before closing - // or just show a message asking for confirmation - - if (IsKeyPressed(KEY_Y)) exitWindow = true; - else if (IsKeyPressed(KEY_N)) exitWindowRequested = false; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - if (exitWindowRequested) - { - DrawRectangle(0, 100, screenWidth, 200, BLACK); - DrawText("Are you sure you want to exit program? [Y/N]", 40, 180, 30, WHITE); - } - else DrawText("Try to close the window to get confirmation message!", 120, 200, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_should_close.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_should_close.png deleted file mode 100644 index 4ef088a..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_should_close.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_web.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_web.c deleted file mode 100644 index 3b1b507..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_web.c +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - window web -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.3, last time updated with raylib 5.5 -* -* This example has been adapted to compile for PLATFORM_WEB and PLATFORM_DESKTOP -* As you will notice, code structure is slightly different to the other examples -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#if defined(PLATFORM_WEB) - #include -#endif - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -int screenWidth = 800; -int screenHeight = 450; - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -void UpdateDrawFrame(void); // Update and Draw one frame - -//---------------------------------------------------------------------------------- -// Program main entry point -//---------------------------------------------------------------------------------- -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - InitWindow(screenWidth, screenHeight, "raylib [core] example - window web"); - -#if defined(PLATFORM_WEB) - emscripten_set_main_loop(UpdateDrawFrame, 0, 1); -#else - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - UpdateDrawFrame(); - } -#endif - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -void UpdateDrawFrame(void) -{ - // Update - //---------------------------------------------------------------------------------- - // TODO: Update your variables here - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("Welcome to raylib web structure!", 220, 200, 20, SKYBLUE); - - EndDrawing(); - //---------------------------------------------------------------------------------- -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_web.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_web.png deleted file mode 100644 index 32886d6..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_window_web.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_world_screen.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_world_screen.c deleted file mode 100644 index b7fada0..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_world_screen.c +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - world screen -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.3, last time updated with raylib 1.4 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - world screen"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; - Vector2 cubeScreenPosition = { 0.0f, 0.0f }; - - DisableCursor(); // Limit cursor to relative movement inside the window - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_THIRD_PERSON); - - // Calculate cube screen space position (with a little offset to be in top) - cubeScreenPosition = GetWorldToScreen((Vector3){cubePosition.x, cubePosition.y + 2.5f, cubePosition.z}, camera); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); - DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawText("Enemy: 100/100", (int)cubeScreenPosition.x - MeasureText("Enemy: 100/100", 20)/2, (int)cubeScreenPosition.y, 20, BLACK); - - DrawText(TextFormat("Cube position in screen space coordinates: [%i, %i]", (int)cubeScreenPosition.x, (int)cubeScreenPosition.y), 10, 10, 20, LIME); - DrawText("Text 2d should be always on top of the cube", 10, 40, 20, GRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_world_screen.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_world_screen.png deleted file mode 100644 index b4853b4..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/core_world_screen.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/msf_gif.h b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/msf_gif.h deleted file mode 100644 index 6aa11fd..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/msf_gif.h +++ /dev/null @@ -1,717 +0,0 @@ -/* -HOW TO USE: - - In exactly one translation unit (.c or .cpp file), #define MSF_GIF_IMPL before including the header, like so: - - #define MSF_GIF_IMPL - #include "msf_gif.h" - - Everywhere else, just include the header like normal. - - -USAGE EXAMPLE: - - int width = 480, height = 320, centisecondsPerFrame = 5, bitDepth = 16; - MsfGifState gifState = {}; - // msf_gif_bgra_flag = true; //optionally, set this flag if your pixels are in BGRA format instead of RGBA - // msf_gif_alpha_threshold = 128; //optionally, enable transparency (see function documentation below for details) - msf_gif_begin(&gifState, width, height); - msf_gif_frame(&gifState, ..., centisecondsPerFrame, bitDepth, width * 4); //frame 1 - msf_gif_frame(&gifState, ..., centisecondsPerFrame, bitDepth, width * 4); //frame 2 - msf_gif_frame(&gifState, ..., centisecondsPerFrame, bitDepth, width * 4); //frame 3, etc... - MsfGifResult result = msf_gif_end(&gifState); - if (result.data) { - FILE * fp = fopen("MyGif.gif", "wb"); - fwrite(result.data, result.dataSize, 1, fp); - fclose(fp); - } - msf_gif_free(result); - -Detailed function documentation can be found in the header section below. - - -ERROR HANDLING: - - If memory allocation fails, the functions will signal the error via their return values. - If one function call fails, the library will free all of its allocations, - and all subsequent calls will safely no-op and return 0 until the next call to `msf_gif_begin()`. - Therefore, it's safe to check only the return value of `msf_gif_end()`. - - -REPLACING MALLOC: - - This library uses malloc+realloc+free internally for memory allocation. - To facilitate integration with custom memory allocators, these calls go through macros, which can be redefined. - The expected function signature equivalents of the macros are as follows: - - void * MSF_GIF_MALLOC(void * context, size_t newSize) - void * MSF_GIF_REALLOC(void * context, void * oldMemory, size_t oldSize, size_t newSize) - void MSF_GIF_FREE(void * context, void * oldMemory, size_t oldSize) - - If your allocator needs a context pointer, you can set the `customAllocatorContext` field of the MsfGifState struct - before calling msf_gif_begin(), and it will be passed to all subsequent allocator macro calls. - - The maximum number of bytes the library will allocate to encode a single gif is bounded by the following formula: - `(2 * 1024 * 1024) + (width * height * 8) + ((1024 + width * height * 1.5) * 3 * frameCount)` - The peak heap memory usage in bytes, if using a general-purpose heap allocator, is bounded by the following formula: - `(2 * 1024 * 1024) + (width * height * 9.5) + 1024 + (16 * frameCount) + (2 * sizeOfResultingGif) - - -See end of file for license information. -*/ - -//version 2.2 - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// HEADER /// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -#ifndef MSF_GIF_H -#define MSF_GIF_H - -#include -#include - -typedef struct { - void * data; - size_t dataSize; - - size_t allocSize; //internal use - void * contextPointer; //internal use -} MsfGifResult; - -typedef struct { //internal use - uint32_t * pixels; - int depth, count, rbits, gbits, bbits; -} MsfCookedFrame; - -typedef struct MsfGifBuffer { - struct MsfGifBuffer * next; - size_t size; - uint8_t data[1]; -} MsfGifBuffer; - -typedef size_t (* MsfGifFileWriteFunc) (const void * buffer, size_t size, size_t count, void * stream); -typedef struct { - MsfGifFileWriteFunc fileWriteFunc; - void * fileWriteData; - MsfCookedFrame previousFrame; - MsfCookedFrame currentFrame; - int16_t * lzwMem; - MsfGifBuffer * listHead; - MsfGifBuffer * listTail; - int width, height; - void * customAllocatorContext; - int framesSubmitted; //needed for transparency to work correctly (because we reach into the previous frame) -} MsfGifState; - -#ifdef __cplusplus -extern "C" { -#endif //__cplusplus - -/** - * @param width Image width in pixels. - * @param height Image height in pixels. - * @return Non-zero on success, 0 on error. - */ -int msf_gif_begin(MsfGifState * handle, int width, int height); - -/** - * @param pixelData Pointer to raw framebuffer data. Rows must be contiguous in memory, in RGBA8 format - * (or BGRA8 if you have set `msf_gif_bgra_flag = true`). - * Note: This function does NOT free `pixelData`. You must free it yourself afterwards. - * @param centiSecondsPerFrame How many hundredths of a second this frame should be displayed for. - * Note: This being specified in centiseconds is a limitation of the GIF format. - * @param maxBitDepth Limits how many bits per pixel can be used when quantizing the gif. - * The actual bit depth chosen for a given frame will be less than or equal to - * the supplied maximum, depending on the variety of colors used in the frame. - * `maxBitDepth` will be clamped between 1 and 16. The recommended default is 16. - * Lowering this value can result in faster exports and smaller gifs, - * but the quality may suffer. - * Please experiment with this value to find what works best for your application. - * @param pitchInBytes The number of bytes from the beginning of one row of pixels to the beginning of the next. - * If you want to flip the image, just pass in a negative pitch. - * @return Non-zero on success, 0 on error. - */ -int msf_gif_frame(MsfGifState * handle, uint8_t * pixelData, int centiSecondsPerFame, int maxBitDepth, int pitchInBytes); - -/** - * @return A block of memory containing the gif file data, or NULL on error. - * You are responsible for freeing this via `msf_gif_free()`. - */ -MsfGifResult msf_gif_end(MsfGifState * handle); - -/** - * @param result The MsfGifResult struct, verbatim as it was returned from `msf_gif_end()`. - */ -void msf_gif_free(MsfGifResult result); - -//The gif format only supports 1-bit transparency, meaning a pixel will either be fully transparent or fully opaque. -//Pixels with an alpha value less than the alpha threshold will be treated as transparent. -//To enable exporting transparent gifs, set it to a value between 1 and 255 (inclusive) before calling msf_gif_frame(). -//Setting it to 0 causes the alpha channel to be ignored. Its initial value is 0. -extern int msf_gif_alpha_threshold; - -//Set `msf_gif_bgra_flag = true` before calling `msf_gif_frame()` if your pixels are in BGRA byte order instead of RBGA. -extern int msf_gif_bgra_flag; - - - -//TO-FILE FUNCTIONS -//These functions are equivalent to the ones above, but they write results to a file incrementally, -//instead of building a buffer in memory. This can result in lower memory usage when saving large gifs, -//because memory usage is bounded by only the size of a single frame, and is not dependent on the number of frames. -//There is currently no reason to use these unless you are on a memory-constrained platform. -//If in doubt about which API to use, for now you should use the normal (non-file) functions above. -//The signature of MsfGifFileWriteFunc matches fwrite for convenience, so that you can use the C file API like so: -// FILE * fp = fopen("MyGif.gif", "wb"); -// msf_gif_begin_to_file(&handle, width, height, (MsfGifFileWriteFunc) fwrite, (void *) fp); -// msf_gif_frame_to_file(...) -// msf_gif_end_to_file(&handle); -// fclose(fp); -//If you use a custom file write function, you must take care to return the same values that fwrite() would return. -//Note that all three functions will potentially write to the file. -int msf_gif_begin_to_file(MsfGifState * handle, int width, int height, MsfGifFileWriteFunc func, void * filePointer); -int msf_gif_frame_to_file(MsfGifState * handle, uint8_t * pixelData, int centiSecondsPerFame, int maxBitDepth, int pitchInBytes); -int msf_gif_end_to_file(MsfGifState * handle); //returns 0 on error and non-zero on success - -#ifdef __cplusplus -} -#endif //__cplusplus - -#endif //MSF_GIF_H - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// IMPLEMENTATION /// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -#ifdef MSF_GIF_IMPL -#ifndef MSF_GIF_ALREADY_IMPLEMENTED_IN_THIS_TRANSLATION_UNIT -#define MSF_GIF_ALREADY_IMPLEMENTED_IN_THIS_TRANSLATION_UNIT - -//ensure the library user has either defined all of malloc/realloc/free, or none -#if defined(MSF_GIF_MALLOC) && defined(MSF_GIF_REALLOC) && defined(MSF_GIF_FREE) //ok -#elif !defined(MSF_GIF_MALLOC) && !defined(MSF_GIF_REALLOC) && !defined(MSF_GIF_FREE) //ok -#else -#error "You must either define all of MSF_GIF_MALLOC, MSF_GIF_REALLOC, and MSF_GIF_FREE, or define none of them" -#endif - -//provide default allocator definitions that redirect to the standard global allocator -#if !defined(MSF_GIF_MALLOC) -#include //malloc, etc. -#define MSF_GIF_MALLOC(contextPointer, newSize) malloc(newSize) -#define MSF_GIF_REALLOC(contextPointer, oldMemory, oldSize, newSize) realloc(oldMemory, newSize) -#define MSF_GIF_FREE(contextPointer, oldMemory, oldSize) free(oldMemory) -#endif - -//instrumentation for capturing profiling traces (useless for the library user, but useful for the library author) -#ifdef MSF_GIF_ENABLE_TRACING -#define MsfTimeFunc TimeFunc -#define MsfTimeLoop TimeLoop -#define msf_init_profiling_thread init_profiling_thread -#else -#define MsfTimeFunc -#define MsfTimeLoop(name) -#define msf_init_profiling_thread() -#endif //MSF_GIF_ENABLE_TRACING - -#include //memcpy - -//TODO: use compiler-specific notation to force-inline functions currently marked inline -#if defined(__GNUC__) //gcc, clang -static inline int msf_bit_log(int i) { return 32 - __builtin_clz(i); } -#elif defined(_MSC_VER) //msvc -#include -static inline int msf_bit_log(int i) { unsigned long idx; _BitScanReverse(&idx, i); return idx + 1; } -#else //fallback implementation for other compilers -//from https://stackoverflow.com/a/31718095/3064745 - thanks! -static inline int msf_bit_log(int i) { - static const int MultiplyDeBruijnBitPosition[32] = { - 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, - 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31, - }; - i |= i >> 1; - i |= i >> 2; - i |= i >> 4; - i |= i >> 8; - i |= i >> 16; - return MultiplyDeBruijnBitPosition[(uint32_t)(i * 0x07C4ACDDU) >> 27] + 1; -} -#endif -static inline int msf_imin(int a, int b) { return a < b? a : b; } -static inline int msf_imax(int a, int b) { return b < a? a : b; } - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// Frame Cooking /// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -#if (defined (__SSE2__) || defined (_M_X64) || _M_IX86_FP == 2) && !defined(MSF_GIF_NO_SSE2) -#include -#endif - -int msf_gif_alpha_threshold = 0; -int msf_gif_bgra_flag = 0; - -static void msf_cook_frame(MsfCookedFrame * frame, uint8_t * raw, uint8_t * used, - int width, int height, int pitch, int depth) -{ MsfTimeFunc - //bit depth for each channel - static const int rdepthsArray[17] = { 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5 }; - static const int gdepthsArray[17] = { 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6 }; - static const int bdepthsArray[17] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5 }; - //this extra level of indirection looks unnecessary but we need to explicitly decay the arrays to pointers - //in order to be able to swap them because of C's annoying not-quite-pointers, not-quite-value-types stack arrays. - const int * rdepths = msf_gif_bgra_flag? bdepthsArray : rdepthsArray; - const int * gdepths = gdepthsArray; - const int * bdepths = msf_gif_bgra_flag? rdepthsArray : bdepthsArray; - - static const int ditherKernel[16] = { - 0 << 12, 8 << 12, 2 << 12, 10 << 12, - 12 << 12, 4 << 12, 14 << 12, 6 << 12, - 3 << 12, 11 << 12, 1 << 12, 9 << 12, - 15 << 12, 7 << 12, 13 << 12, 5 << 12, - }; - - uint32_t * cooked = frame->pixels; - int count = 0; - MsfTimeLoop("do") do { - int rbits = rdepths[depth], gbits = gdepths[depth], bbits = bdepths[depth]; - int paletteSize = (1 << (rbits + gbits + bbits)) + 1; - memset(used, 0, paletteSize * sizeof(uint8_t)); - - //TODO: document what this math does and why it's correct - int rdiff = (1 << (8 - rbits)) - 1; - int gdiff = (1 << (8 - gbits)) - 1; - int bdiff = (1 << (8 - bbits)) - 1; - short rmul = (short) ((255.0f - rdiff) / 255.0f * 257); - short gmul = (short) ((255.0f - gdiff) / 255.0f * 257); - short bmul = (short) ((255.0f - bdiff) / 255.0f * 257); - - int gmask = ((1 << gbits) - 1) << rbits; - int bmask = ((1 << bbits) - 1) << rbits << gbits; - - MsfTimeLoop("cook") for (int y = 0; y < height; ++y) { - int x = 0; - - #if (defined (__SSE2__) || defined (_M_X64) || _M_IX86_FP == 2) && !defined(MSF_GIF_NO_SSE2) - __m128i k = _mm_loadu_si128((__m128i *) &ditherKernel[(y & 3) * 4]); - __m128i k2 = _mm_or_si128(_mm_srli_epi32(k, rbits), _mm_slli_epi32(_mm_srli_epi32(k, bbits), 16)); - for (; x < width - 3; x += 4) { - uint8_t * pixels = &raw[y * pitch + x * 4]; - __m128i p = _mm_loadu_si128((__m128i *) pixels); - - __m128i rb = _mm_and_si128(p, _mm_set1_epi32(0x00FF00FF)); - __m128i rb1 = _mm_mullo_epi16(rb, _mm_set_epi16(bmul, rmul, bmul, rmul, bmul, rmul, bmul, rmul)); - __m128i rb2 = _mm_adds_epu16(rb1, k2); - __m128i r3 = _mm_srli_epi32(_mm_and_si128(rb2, _mm_set1_epi32(0x0000FFFF)), 16 - rbits); - __m128i b3 = _mm_and_si128(_mm_srli_epi32(rb2, 32 - rbits - gbits - bbits), _mm_set1_epi32(bmask)); - - __m128i g = _mm_and_si128(_mm_srli_epi32(p, 8), _mm_set1_epi32(0x000000FF)); - __m128i g1 = _mm_mullo_epi16(g, _mm_set1_epi32(gmul)); - __m128i g2 = _mm_adds_epu16(g1, _mm_srli_epi32(k, gbits)); - __m128i g3 = _mm_and_si128(_mm_srli_epi32(g2, 16 - rbits - gbits), _mm_set1_epi32(gmask)); - - __m128i out = _mm_or_si128(_mm_or_si128(r3, g3), b3); - - //mask in transparency based on threshold - //NOTE: we can theoretically do a sub instead of srli by doing an unsigned compare via bias - // to maybe save a TINY amount of throughput? but lol who cares maybe I'll do it later -m - __m128i invAlphaMask = _mm_cmplt_epi32(_mm_srli_epi32(p, 24), _mm_set1_epi32(msf_gif_alpha_threshold)); - out = _mm_or_si128(_mm_and_si128(invAlphaMask, _mm_set1_epi32(paletteSize - 1)), _mm_andnot_si128(invAlphaMask, out)); - - //TODO: does storing this as a __m128i then reading it back as a uint32_t violate strict aliasing? - uint32_t * c = &cooked[y * width + x]; - _mm_storeu_si128((__m128i *) c, out); - } - #endif - - //scalar cleanup loop - for (; x < width; ++x) { - uint8_t * p = &raw[y * pitch + x * 4]; - - //transparent pixel if alpha is low - if (p[3] < msf_gif_alpha_threshold) { - cooked[y * width + x] = paletteSize - 1; - continue; - } - - int dx = x & 3, dy = y & 3; - int k = ditherKernel[dy * 4 + dx]; - cooked[y * width + x] = - (msf_imin(65535, p[2] * bmul + (k >> bbits)) >> (16 - rbits - gbits - bbits) & bmask) | - (msf_imin(65535, p[1] * gmul + (k >> gbits)) >> (16 - rbits - gbits ) & gmask) | - msf_imin(65535, p[0] * rmul + (k >> rbits)) >> (16 - rbits ); - } - } - - count = 0; - MsfTimeLoop("mark") for (int i = 0; i < width * height; ++i) { - used[cooked[i]] = 1; - } - - //count used colors, transparent is ignored - MsfTimeLoop("count") for (int j = 0; j < paletteSize - 1; ++j) { - count += used[j]; - } - } while (count >= 256 && --depth); - - MsfCookedFrame ret = { cooked, depth, count, rdepths[depth], gdepths[depth], bdepths[depth] }; - *frame = ret; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// Frame Compression /// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -static inline void msf_put_code(uint8_t * * writeHead, uint32_t * blockBits, int len, uint32_t code) { - //insert new code into block buffer - int idx = *blockBits / 8; - int bit = *blockBits % 8; - (*writeHead)[idx + 0] |= code << bit ; - (*writeHead)[idx + 1] |= code >> ( 8 - bit); - (*writeHead)[idx + 2] |= code >> (16 - bit); - *blockBits += len; - - //prep the next block buffer if the current one is full - if (*blockBits >= 256 * 8) { - *blockBits -= 255 * 8; - (*writeHead) += 256; - (*writeHead)[2] = (*writeHead)[1]; - (*writeHead)[1] = (*writeHead)[0]; - (*writeHead)[0] = 255; - memset((*writeHead) + 4, 0, 256); - } -} - -typedef struct { - int16_t * data; - int len; - int stride; -} MsfStridedList; - -static inline void msf_lzw_reset(MsfStridedList * lzw, int tableSize, int stride) { MsfTimeFunc - memset(lzw->data, 0xFF, 4096 * stride * sizeof(int16_t)); - lzw->len = tableSize + 2; - lzw->stride = stride; -} - -static MsfGifBuffer * msf_compress_frame(void * allocContext, int width, int height, int centiSeconds, - MsfCookedFrame frame, MsfGifState * handle, uint8_t * used, int16_t * lzwMem) -{ MsfTimeFunc - //NOTE: we reserve enough memory for theoretical the worst case upfront because it's a reasonable amount, - // and prevents us from ever having to check size or realloc during compression - int maxBufSize = offsetof(MsfGifBuffer, data) + 32 + 256 * 3 + width * height * 3 / 2; //headers + color table + data - MsfGifBuffer * buffer = (MsfGifBuffer *) MSF_GIF_MALLOC(allocContext, maxBufSize); - if (!buffer) { return NULL; } - uint8_t * writeHead = buffer->data; - MsfStridedList lzw = { lzwMem, 0, 0 }; - - //allocate tlb - int totalBits = frame.rbits + frame.gbits + frame.bbits; - int tlbSize = (1 << totalBits) + 1; - uint8_t tlb[(1 << 16) + 1]; //only 64k, so stack allocating is fine - - //generate palette - typedef struct { uint8_t r, g, b; } Color3; - Color3 table[256] = { { 0 } }; - int tableIdx = 1; //we start counting at 1 because 0 is the transparent color - //transparent is always last in the table - tlb[tlbSize-1] = 0; - MsfTimeLoop("table") for (int i = 0; i < tlbSize-1; ++i) { - if (used[i]) { - tlb[i] = tableIdx; - int rmask = (1 << frame.rbits) - 1; - int gmask = (1 << frame.gbits) - 1; - //isolate components - int r = i & rmask; - int g = i >> frame.rbits & gmask; - int b = i >> (frame.rbits + frame.gbits); - //shift into highest bits - r <<= 8 - frame.rbits; - g <<= 8 - frame.gbits; - b <<= 8 - frame.bbits; - table[tableIdx].r = r | r >> frame.rbits | r >> (frame.rbits * 2) | r >> (frame.rbits * 3); - table[tableIdx].g = g | g >> frame.gbits | g >> (frame.gbits * 2) | g >> (frame.gbits * 3); - table[tableIdx].b = b | b >> frame.bbits | b >> (frame.bbits * 2) | b >> (frame.bbits * 3); - if (msf_gif_bgra_flag) { - uint8_t temp = table[tableIdx].r; - table[tableIdx].r = table[tableIdx].b; - table[tableIdx].b = temp; - } - ++tableIdx; - } - } - int hasTransparentPixels = used[tlbSize-1]; - - //SPEC: "Because of some algorithmic constraints however, black & white images which have one color bit - // must be indicated as having a code size of 2." - int tableBits = msf_imax(2, msf_bit_log(tableIdx - 1)); - int tableSize = 1 << tableBits; - //NOTE: we don't just compare `depth` field here because it will be wrong for the first frame and we will segfault - MsfCookedFrame previous = handle->previousFrame; - int hasSamePal = frame.rbits == previous.rbits && frame.gbits == previous.gbits && frame.bbits == previous.bbits; - int framesCompatible = hasSamePal && !hasTransparentPixels; - - //NOTE: because __attribute__((__packed__)) is annoyingly compiler-specific, we do this unreadable weirdness - char headerBytes[19] = "\x21\xF9\x04\x05\0\0\0\0" "\x2C\0\0\0\0\0\0\0\0\x80"; - //NOTE: we need to check the frame number because if we reach into the buffer prior to the first frame, - // we'll just clobber the file header instead, which is a bug - if (hasTransparentPixels && handle->framesSubmitted > 0) { - handle->listTail->data[3] = 0x09; //set the previous frame's disposal to background, so transparency is possible - } - memcpy(&headerBytes[4], ¢iSeconds, 2); - memcpy(&headerBytes[13], &width, 2); - memcpy(&headerBytes[15], &height, 2); - headerBytes[17] |= tableBits - 1; - memcpy(writeHead, headerBytes, 18); - writeHead += 18; - - //local color table - memcpy(writeHead, table, tableSize * sizeof(Color3)); - writeHead += tableSize * sizeof(Color3); - *writeHead++ = tableBits; - - //prep block - memset(writeHead, 0, 260); - writeHead[0] = 255; - uint32_t blockBits = 8; //relative to block.head - - //SPEC: "Encoders should output a Clear code as the first code of each image data stream." - msf_lzw_reset(&lzw, tableSize, tableIdx); - msf_put_code(&writeHead, &blockBits, msf_bit_log(lzw.len - 1), tableSize); - - int lastCode = framesCompatible && frame.pixels[0] == previous.pixels[0]? 0 : tlb[frame.pixels[0]]; - MsfTimeLoop("compress") for (int i = 1; i < width * height; ++i) { - //PERF: branching vs. branchless version of this line is observed to have no discernable impact on speed - int color = framesCompatible && frame.pixels[i] == previous.pixels[i]? 0 : tlb[frame.pixels[i]]; - int code = (&lzw.data[lastCode * lzw.stride])[color]; - if (code < 0) { - //write to code stream - int codeBits = msf_bit_log(lzw.len - 1); - msf_put_code(&writeHead, &blockBits, codeBits, lastCode); - - if (lzw.len > 4095) { - //reset buffer code table - msf_put_code(&writeHead, &blockBits, codeBits, tableSize); - msf_lzw_reset(&lzw, tableSize, tableIdx); - } else { - (&lzw.data[lastCode * lzw.stride])[color] = lzw.len; - ++lzw.len; - } - - lastCode = color; - } else { - lastCode = code; - } - } - - //write code for leftover index buffer contents, then the end code - msf_put_code(&writeHead, &blockBits, msf_imin(12, msf_bit_log(lzw.len - 1)), lastCode); - msf_put_code(&writeHead, &blockBits, msf_imin(12, msf_bit_log(lzw.len)), tableSize + 1); - - //flush remaining data - if (blockBits > 8) { - int bytes = (blockBits + 7) / 8; //round up - writeHead[0] = bytes - 1; - writeHead += bytes; - } - *writeHead++ = 0; //terminating block - - //fill in buffer header and shrink buffer to fit data - buffer->next = NULL; - buffer->size = writeHead - buffer->data; - MsfGifBuffer * moved = - (MsfGifBuffer *) MSF_GIF_REALLOC(allocContext, buffer, maxBufSize, offsetof(MsfGifBuffer, data) + buffer->size); - if (!moved) { MSF_GIF_FREE(allocContext, buffer, maxBufSize); return NULL; } - return moved; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// To-memory API /// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -static const int lzwAllocSize = 4096 * 256 * sizeof(int16_t); - -//NOTE: by C standard library conventions, freeing NULL should be a no-op, -// but just in case the user's custom free doesn't follow that rule, we do null checks on our end as well. -static void msf_free_gif_state(MsfGifState * handle) { - if (handle->previousFrame.pixels) MSF_GIF_FREE(handle->customAllocatorContext, handle->previousFrame.pixels, - handle->width * handle->height * sizeof(uint32_t)); - if (handle->currentFrame.pixels) MSF_GIF_FREE(handle->customAllocatorContext, handle->currentFrame.pixels, - handle->width * handle->height * sizeof(uint32_t)); - if (handle->lzwMem) MSF_GIF_FREE(handle->customAllocatorContext, handle->lzwMem, lzwAllocSize); - for (MsfGifBuffer * node = handle->listHead; node;) { - MsfGifBuffer * next = node->next; //NOTE: we have to copy the `next` pointer BEFORE freeing the node holding it - MSF_GIF_FREE(handle->customAllocatorContext, node, offsetof(MsfGifBuffer, data) + node->size); - node = next; - } - handle->listHead = NULL; //this implicitly marks the handle as invalid until the next msf_gif_begin() call -} - -int msf_gif_begin(MsfGifState * handle, int width, int height) { MsfTimeFunc - //NOTE: we cannot stomp the entire struct to zero because we must preserve `customAllocatorContext`. - MsfCookedFrame empty = { 0 }; //god I hate MSVC... - handle->previousFrame = empty; - handle->currentFrame = empty; - handle->width = width; - handle->height = height; - handle->framesSubmitted = 0; - - //allocate memory for LZW buffer - //NOTE: Unfortunately we can't just use stack memory for the LZW table because it's 2MB, - // which is more stack space than most operating systems give by default, - // and we can't realistically expect users to be willing to override that just to use our library, - // so we have to allocate this on the heap. - handle->lzwMem = (int16_t *) MSF_GIF_MALLOC(handle->customAllocatorContext, lzwAllocSize); - handle->previousFrame.pixels = - (uint32_t *) MSF_GIF_MALLOC(handle->customAllocatorContext, handle->width * handle->height * sizeof(uint32_t)); - handle->currentFrame.pixels = - (uint32_t *) MSF_GIF_MALLOC(handle->customAllocatorContext, handle->width * handle->height * sizeof(uint32_t)); - - //setup header buffer header (lol) - handle->listHead = (MsfGifBuffer *) MSF_GIF_MALLOC(handle->customAllocatorContext, offsetof(MsfGifBuffer, data) + 32); - if (!handle->listHead || !handle->lzwMem || !handle->previousFrame.pixels || !handle->currentFrame.pixels) { - msf_free_gif_state(handle); - return 0; - } - handle->listTail = handle->listHead; - handle->listHead->next = NULL; - handle->listHead->size = 32; - - //NOTE: because __attribute__((__packed__)) is annoyingly compiler-specific, we do this unreadable weirdness - char headerBytes[33] = "GIF89a\0\0\0\0\x70\0\0" "\x21\xFF\x0BNETSCAPE2.0\x03\x01\0\0\0"; - memcpy(&headerBytes[6], &width, 2); - memcpy(&headerBytes[8], &height, 2); - memcpy(handle->listHead->data, headerBytes, 32); - return 1; -} - -int msf_gif_frame(MsfGifState * handle, uint8_t * pixelData, int centiSecondsPerFame, int maxBitDepth, int pitchInBytes) -{ MsfTimeFunc - if (!handle->listHead) { return 0; } - - maxBitDepth = msf_imax(1, msf_imin(16, maxBitDepth)); - if (pitchInBytes == 0) pitchInBytes = handle->width * 4; - if (pitchInBytes < 0) pixelData -= pitchInBytes * (handle->height - 1); - - uint8_t used[(1 << 16) + 1]; //only 64k, so stack allocating is fine - msf_cook_frame(&handle->currentFrame, pixelData, used, handle->width, handle->height, pitchInBytes, - msf_imin(maxBitDepth, handle->previousFrame.depth + 160 / msf_imax(1, handle->previousFrame.count))); - - MsfGifBuffer * buffer = msf_compress_frame(handle->customAllocatorContext, handle->width, handle->height, - centiSecondsPerFame, handle->currentFrame, handle, used, handle->lzwMem); - if (!buffer) { msf_free_gif_state(handle); return 0; } - handle->listTail->next = buffer; - handle->listTail = buffer; - - //swap current and previous frames - MsfCookedFrame tmp = handle->previousFrame; - handle->previousFrame = handle->currentFrame; - handle->currentFrame = tmp; - - handle->framesSubmitted += 1; - return 1; -} - -MsfGifResult msf_gif_end(MsfGifState * handle) { MsfTimeFunc - if (!handle->listHead) { MsfGifResult empty = { 0 }; return empty; } - - //first pass: determine total size - size_t total = 1; //1 byte for trailing marker - for (MsfGifBuffer * node = handle->listHead; node; node = node->next) { total += node->size; } - - //second pass: write data - uint8_t * buffer = (uint8_t *) MSF_GIF_MALLOC(handle->customAllocatorContext, total); - if (buffer) { - uint8_t * writeHead = buffer; - for (MsfGifBuffer * node = handle->listHead; node; node = node->next) { - memcpy(writeHead, node->data, node->size); - writeHead += node->size; - } - *writeHead++ = 0x3B; - } - - //third pass: free buffers - msf_free_gif_state(handle); - - MsfGifResult ret = { buffer, total, total, handle->customAllocatorContext }; - return ret; -} - -void msf_gif_free(MsfGifResult result) { MsfTimeFunc - if (result.data) { MSF_GIF_FREE(result.contextPointer, result.data, result.allocSize); } -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// To-file API /// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -int msf_gif_begin_to_file(MsfGifState * handle, int width, int height, MsfGifFileWriteFunc func, void * filePointer) { - handle->fileWriteFunc = func; - handle->fileWriteData = filePointer; - return msf_gif_begin(handle, width, height); -} - -int msf_gif_frame_to_file(MsfGifState * handle, uint8_t * pixelData, int centiSecondsPerFame, int maxBitDepth, int pitchInBytes) { - if (!msf_gif_frame(handle, pixelData, centiSecondsPerFame, maxBitDepth, pitchInBytes)) { return 0; } - - //NOTE: this is a somewhat hacky implementation which is not perfectly efficient, but it's good enough for now - MsfGifBuffer * head = handle->listHead; - if (!handle->fileWriteFunc(head->data, head->size, 1, handle->fileWriteData)) { msf_free_gif_state(handle); return 0; } - handle->listHead = head->next; - MSF_GIF_FREE(handle->customAllocatorContext, head, offsetof(MsfGifBuffer, data) + head->size); - return 1; -} - -int msf_gif_end_to_file(MsfGifState * handle) { - //NOTE: this is a somewhat hacky implementation which is not perfectly efficient, but it's good enough for now - MsfGifResult result = msf_gif_end(handle); - int ret = (int) handle->fileWriteFunc(result.data, result.dataSize, 1, handle->fileWriteData); - msf_gif_free(result); - return ret; -} - -#endif //MSF_GIF_ALREADY_IMPLEMENTED_IN_THIS_TRANSLATION_UNIT -#endif //MSF_GIF_IMPL - -/* ------------------------------------------------------------------------------- -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License -Copyright (c) 2021 Miles Fogle -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain (www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non-commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain. We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors. We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -*/ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/raygui.h b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/raygui.h deleted file mode 100644 index 03e4879..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/raygui.h +++ /dev/null @@ -1,6051 +0,0 @@ -/******************************************************************************************* -* -* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library -* -* DESCRIPTION: -* raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also -* available as a standalone library, as long as input and drawing functions are provided -* -* FEATURES: -* - Immediate-mode gui, minimal retained data -* - +25 controls provided (basic and advanced) -* - Styling system for colors, font and metrics -* - Icons supported, embedded as a 1-bit icons pack -* - Standalone mode option (custom input/graphics backend) -* - Multiple support tools provided for raygui development -* -* POSSIBLE IMPROVEMENTS: -* - Better standalone mode API for easy plug of custom backends -* - Externalize required inputs, allow user easier customization -* -* LIMITATIONS: -* - No editable multi-line word-wraped text box supported -* - No auto-layout mechanism, up to the user to define controls position and size -* - Standalone mode requires library modification and some user work to plug another backend -* -* NOTES: -* - WARNING: GuiLoadStyle() and GuiLoadStyle{Custom}() functions, allocate memory for -* font atlas recs and glyphs, freeing that memory is (usually) up to the user, -* no unload function is explicitly provided... but note that GuiLoadStyleDefault() unloads -* by default any previously loaded font (texture, recs, glyphs) -* - Global UI alpha (guiAlpha) is applied inside GuiDrawRectangle() and GuiDrawText() functions -* -* CONTROLS PROVIDED: -* # Container/separators Controls -* - WindowBox --> StatusBar, Panel -* - GroupBox --> Line -* - Line -* - Panel --> StatusBar -* - ScrollPanel --> StatusBar -* - TabBar --> Button -* -* # Basic Controls -* - Label -* - LabelButton --> Label -* - Button -* - Toggle -* - ToggleGroup --> Toggle -* - ToggleSlider -* - CheckBox -* - ComboBox -* - DropdownBox -* - TextBox -* - ValueBox --> TextBox -* - Spinner --> Button, ValueBox -* - Slider -* - SliderBar --> Slider -* - ProgressBar -* - StatusBar -* - DummyRec -* - Grid -* -* # Advance Controls -* - ListView -* - ColorPicker --> ColorPanel, ColorBarHue -* - MessageBox --> Window, Label, Button -* - TextInputBox --> Window, Label, TextBox, Button -* -* It also provides a set of functions for styling the controls based on its properties (size, color) -* -* -* RAYGUI STYLE (guiStyle): -* raygui uses a global data array for all gui style properties (allocated on data segment by default), -* when a new style is loaded, it is loaded over the global style... but a default gui style could always be -* recovered with GuiLoadStyleDefault() function, that overwrites the current style to the default one -* -* The global style array size is fixed and depends on the number of controls and properties: -* -* static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)]; -* -* guiStyle size is by default: 16*(16 + 8) = 384 int = 384*4 bytes = 1536 bytes = 1.5 KB -* -* Note that the first set of BASE properties (by default guiStyle[0..15]) belong to the generic style -* used for all controls, when any of those base values is set, it is automatically populated to all -* controls, so, specific control values overwriting generic style should be set after base values -* -* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), -* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) -* Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR -* -* Custom control properties can be defined using the EXTENDED properties for each independent control. -* -* TOOL: rGuiStyler is a visual tool to customize raygui style: github.com/raysan5/rguistyler -* -* -* RAYGUI ICONS (guiIcons): -* raygui could use a global array containing icons data (allocated on data segment by default), -* a custom icons set could be loaded over this array using GuiLoadIcons(), but loaded icons set -* must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS will be loaded -* -* Every icon is codified in binary form, using 1 bit per pixel, so, every 16x16 icon -* requires 8 integers (16*16/32) to be stored in memory. -* -* When the icon is draw, actually one quad per pixel is drawn if the bit for that pixel is set -* -* The global icons array size is fixed and depends on the number of icons and size: -* -* static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS]; -* -* guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB -* -* TOOL: rGuiIcons is a visual tool to customize/create raygui icons: github.com/raysan5/rguiicons -* -* RAYGUI LAYOUT: -* raygui currently does not provide an auto-layout mechanism like other libraries, -* layouts must be defined manually on controls drawing, providing the right bounds Rectangle for it -* -* TOOL: rGuiLayout is a visual tool to create raygui layouts: github.com/raysan5/rguilayout -* -* CONFIGURATION: -* #define RAYGUI_IMPLEMENTATION -* Generates the implementation of the library into the included file -* If not defined, the library is in header only mode and can be included in other headers -* or source files without problems. But only ONE file should hold the implementation -* -* #define RAYGUI_STANDALONE -* Avoid raylib.h header inclusion in this file. Data types defined on raylib are defined -* internally in the library and input management and drawing functions must be provided by -* the user (check library implementation for further details) -* -* #define RAYGUI_NO_ICONS -* Avoid including embedded ricons data (256 icons, 16x16 pixels, 1-bit per pixel, 2KB) -* -* #define RAYGUI_CUSTOM_ICONS -* Includes custom ricons.h header defining a set of custom icons, -* this file can be generated using rGuiIcons tool -* -* #define RAYGUI_DEBUG_RECS_BOUNDS -* Draw control bounds rectangles for debug -* -* #define RAYGUI_DEBUG_TEXT_BOUNDS -* Draw text bounds rectangles for debug -* -* VERSIONS HISTORY: -* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) -* ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes -* ADDED: GuiValueBoxFloat() -* ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP -* ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH -* ADDED: GuiLoadIconsFromMemory() -* ADDED: Multiple new icons -* ADDED: Macros for inputs customization, raylib decoupling -* REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties -* REMOVED: GuiSliderPro(), functionality was redundant -* REVIEWED: Controls using text labels to use LABEL properties -* REVIEWED: Replaced sprintf() by snprintf() for more safety -* REVIEWED: GuiTabBar(), close tab with mouse middle button -* REVIEWED: GuiScrollPanel(), scroll speed proportional to content -* REVIEWED: GuiDropdownBox(), support roll up and hidden arrow -* REVIEWED: GuiTextBox(), cursor position initialization -* REVIEWED: GuiSliderPro(), control value change check -* REVIEWED: GuiGrid(), simplified implementation -* REVIEWED: GuiIconText(), increase buffer size and reviewed padding -* REVIEWED: GuiDrawText(), improved wrap mode drawing -* REVIEWED: GuiScrollBar(), minor tweaks -* REVIEWED: GuiProgressBar(), improved borders computing -* REVIEWED: GuiTextBox(), multiple improvements: autocursor and more -* REVIEWED: Functions descriptions, removed wrong return value reference -* REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion -* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing -* -* 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() -* ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() -* ADDED: Multiple new icons, mostly compiler related -* ADDED: New DEFAULT properties: TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE -* ADDED: New enum values: GuiTextAlignment, GuiTextAlignmentVertical, GuiTextWrapMode -* ADDED: Support loading styles with custom font charset from external file -* REDESIGNED: GuiTextBox(), support mouse cursor positioning -* REDESIGNED: GuiDrawText(), support multiline and word-wrap modes (read only) -* REDESIGNED: GuiProgressBar() to be more visual, progress affects border color -* REDESIGNED: Global alpha consideration moved to GuiDrawRectangle() and GuiDrawText() -* REDESIGNED: GuiScrollPanel(), get parameters by reference and return result value -* REDESIGNED: GuiToggleGroup(), get parameters by reference and return result value -* REDESIGNED: GuiComboBox(), get parameters by reference and return result value -* REDESIGNED: GuiCheckBox(), get parameters by reference and return result value -* REDESIGNED: GuiSlider(), get parameters by reference and return result value -* REDESIGNED: GuiSliderBar(), get parameters by reference and return result value -* REDESIGNED: GuiProgressBar(), get parameters by reference and return result value -* REDESIGNED: GuiListView(), get parameters by reference and return result value -* REDESIGNED: GuiColorPicker(), get parameters by reference and return result value -* REDESIGNED: GuiColorPanel(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarAlpha(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarHue(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), added extra parameter -* REDESIGNED: GuiListViewEx(), change parameters order -* REDESIGNED: All controls return result as int value -* REVIEWED: GuiScrollPanel() to avoid smallish scroll-bars -* REVIEWED: All examples and specially controls_test_suite -* RENAMED: gui_file_dialog module to gui_window_file_dialog -* UPDATED: All styles to include ISO-8859-15 charset (as much as possible) -* -* 3.6 (10-May-2023) ADDED: New icon: SAND_TIMER -* ADDED: GuiLoadStyleFromMemory() (binary only) -* REVIEWED: GuiScrollBar() horizontal movement key -* REVIEWED: GuiTextBox() crash on cursor movement -* REVIEWED: GuiTextBox(), additional inputs support -* REVIEWED: GuiLabelButton(), avoid text cut -* REVIEWED: GuiTextInputBox(), password input -* REVIEWED: Local GetCodepointNext(), aligned with raylib -* REDESIGNED: GuiSlider*()/GuiScrollBar() to support out-of-bounds -* -* 3.5 (20-Apr-2023) ADDED: GuiTabBar(), based on GuiToggle() -* ADDED: Helper functions to split text in separate lines -* ADDED: Multiple new icons, useful for code editing tools -* REMOVED: Unneeded icon editing functions -* REMOVED: GuiTextBoxMulti(), very limited and broken -* REMOVED: MeasureTextEx() dependency, logic directly implemented -* REMOVED: DrawTextEx() dependency, logic directly implemented -* REVIEWED: GuiScrollBar(), improve mouse-click behaviour -* REVIEWED: Library header info, more info, better organized -* REDESIGNED: GuiTextBox() to support cursor movement -* REDESIGNED: GuiDrawText() to divide drawing by lines -* -* 3.2 (22-May-2022) RENAMED: Some enum values, for unification, avoiding prefixes -* REMOVED: GuiScrollBar(), only internal -* REDESIGNED: GuiPanel() to support text parameter -* REDESIGNED: GuiScrollPanel() to support text parameter -* REDESIGNED: GuiColorPicker() to support text parameter -* REDESIGNED: GuiColorPanel() to support text parameter -* REDESIGNED: GuiColorBarAlpha() to support text parameter -* REDESIGNED: GuiColorBarHue() to support text parameter -* REDESIGNED: GuiTextInputBox() to support password -* -* 3.1 (12-Jan-2022) REVIEWED: Default style for consistency (aligned with rGuiLayout v2.5 tool) -* REVIEWED: GuiLoadStyle() to support compressed font atlas image data and unload previous textures -* REVIEWED: External icons usage logic -* REVIEWED: GuiLine() for centered alignment when including text -* RENAMED: Multiple controls properties definitions to prepend RAYGUI_ -* RENAMED: RICON_ references to RAYGUI_ICON_ for library consistency -* Projects updated and multiple tweaks -* -* 3.0 (04-Nov-2021) Integrated ricons data to avoid external file -* REDESIGNED: GuiTextBoxMulti() -* REMOVED: GuiImageButton*() -* Multiple minor tweaks and bugs corrected -* -* 2.9 (17-Mar-2021) REMOVED: Tooltip API -* 2.8 (03-May-2020) Centralized rectangles drawing to GuiDrawRectangle() -* 2.7 (20-Feb-2020) ADDED: Possible tooltips API -* 2.6 (09-Sep-2019) ADDED: GuiTextInputBox() -* REDESIGNED: GuiListView*(), GuiDropdownBox(), GuiSlider*(), GuiProgressBar(), GuiMessageBox() -* REVIEWED: GuiTextBox(), GuiSpinner(), GuiValueBox(), GuiLoadStyle() -* Replaced property INNER_PADDING by TEXT_PADDING, renamed some properties -* ADDED: 8 new custom styles ready to use -* Multiple minor tweaks and bugs corrected -* -* 2.5 (28-May-2019) Implemented extended GuiTextBox(), GuiValueBox(), GuiSpinner() -* 2.3 (29-Apr-2019) ADDED: rIcons auxiliar library and support for it, multiple controls reviewed -* Refactor all controls drawing mechanism to use control state -* 2.2 (05-Feb-2019) ADDED: GuiScrollBar(), GuiScrollPanel(), reviewed GuiListView(), removed Gui*Ex() controls -* 2.1 (26-Dec-2018) REDESIGNED: GuiCheckBox(), GuiComboBox(), GuiDropdownBox(), GuiToggleGroup() > Use combined text string -* REDESIGNED: Style system (breaking change) -* 2.0 (08-Nov-2018) ADDED: Support controls guiLock and custom fonts -* REVIEWED: GuiComboBox(), GuiListView()... -* 1.9 (09-Oct-2018) REVIEWED: GuiGrid(), GuiTextBox(), GuiTextBoxMulti(), GuiValueBox()... -* 1.8 (01-May-2018) Lot of rework and redesign to align with rGuiStyler and rGuiLayout -* 1.5 (21-Jun-2017) Working in an improved styles system -* 1.4 (15-Jun-2017) Rewritten all GUI functions (removed useless ones) -* 1.3 (12-Jun-2017) Complete redesign of style system -* 1.1 (01-Jun-2017) Complete review of the library -* 1.0 (07-Jun-2016) Converted to header-only by Ramon Santamaria -* 0.9 (07-Mar-2016) Reviewed and tested by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria -* 0.8 (27-Aug-2015) Initial release. Implemented by Kevin Gato, Daniel Nicolás and Ramon Santamaria -* -* DEPENDENCIES: -* raylib 5.6-dev - Inputs reading (keyboard/mouse), shapes drawing, font loading and text drawing -* -* STANDALONE MODE: -* By default raygui depends on raylib mostly for the inputs and the drawing functionality but that dependency can be disabled -* with the config flag RAYGUI_STANDALONE. In that case is up to the user to provide another backend to cover library needs -* -* The following functions should be redefined for a custom backend: -* -* - Vector2 GetMousePosition(void); -* - float GetMouseWheelMove(void); -* - bool IsMouseButtonDown(int button); -* - bool IsMouseButtonPressed(int button); -* - bool IsMouseButtonReleased(int button); -* - bool IsKeyDown(int key); -* - bool IsKeyPressed(int key); -* - int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() -* -* - void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() -* - void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() -* -* - Font GetFontDefault(void); // -- GuiLoadStyleDefault() -* - Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle() -* - Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image -* - void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) -* - char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data -* - void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data -* - const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs -* - int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list -* - void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list -* - unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() -* -* CONTRIBUTORS: -* Ramon Santamaria: Supervision, review, redesign, update and maintenance -* Vlad Adrian: Complete rewrite of GuiTextBox() to support extended features (2019) -* Sergio Martinez: Review, testing (2015) and redesign of multiple controls (2018) -* Adria Arranz: Testing and implementation of additional controls (2018) -* Jordi Jorba: Testing and implementation of additional controls (2018) -* Albert Martos: Review and testing of the library (2015) -* Ian Eito: Review and testing of the library (2015) -* Kevin Gato: Initial implementation of basic components (2014) -* Daniel Nicolas: Initial implementation of basic components (2014) -* -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) -* -* 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. -* -**********************************************************************************************/ - -#ifndef RAYGUI_H -#define RAYGUI_H - -#define RAYGUI_VERSION_MAJOR 4 -#define RAYGUI_VERSION_MINOR 5 -#define RAYGUI_VERSION_PATCH 0 -#define RAYGUI_VERSION "5.0-dev" - -#if !defined(RAYGUI_STANDALONE) - #include "raylib.h" -#endif - -// Function specifiers in case library is build/used as a shared library (Windows) -// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll -#if defined(_WIN32) - #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) - #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) - #endif - #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC -#endif - -// Function specifiers definition -#ifndef RAYGUIAPI - #define RAYGUIAPI // Functions defined as 'extern' by default (implicit specifiers) -#endif - -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -// Simple log system to avoid printf() calls if required -// NOTE: Avoiding those calls, also avoids const strings memory usage -#define RAYGUI_SUPPORT_LOG_INFO -#if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) -#else - #define RAYGUI_LOG(...) -#endif - -// Macros to define required UI inputs, including mapping to gamepad controls -// TODO: Define additionally required macros for missing inputs -#if !defined(GUI_BUTTON_DOWN) - #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -#if !defined(GUI_BUTTON_DOWN_ALT) - // Mapping to alternative button down pressed - #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) -#endif -#if !defined(GUI_BUTTON_PRESSED) - #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) -#if !defined(GUI_BUTTON_RELEASED) - #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -#if !defined(GUI_SCROLL_DELTA) - // Mapping to scroll delta changes - // TODO: Review inconsistencies between platforms - #if defined(PLATFORM_WEB) - // NOTE: Gamepad axis triggers not detected on web platform - #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) - #else - #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) - #endif -#endif -#if !defined(GUI_POINTER_POSITION) - #define GUI_POINTER_POSITION GetMousePosition() -#endif -#if !defined(GUI_KEY_DOWN) - #define GUI_KEY_DOWN(key) IsKeyDown(key) -#endif -#if !defined(GUI_KEY_PRESSED) - #define GUI_KEY_PRESSED(key) IsKeyPressed(key) -#endif -#if !defined(GUI_INPUT_KEY) - #define GUI_INPUT_KEY GetCharPressed() -#endif - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -// NOTE: Some types are required for RAYGUI_STANDALONE usage -//---------------------------------------------------------------------------------- -#if defined(RAYGUI_STANDALONE) - #ifndef __cplusplus - // Boolean type - #ifndef true - typedef enum { false, true } bool; - #endif - #endif - - // Vector2 type - typedef struct Vector2 { - float x; - float y; - } Vector2; - - // Vector3 type // -- ConvertHSVtoRGB(), ConvertRGBtoHSV() - typedef struct Vector3 { - float x; - float y; - float z; - } Vector3; - - // Color type, RGBA (32bit) - typedef struct Color { - unsigned char r; - unsigned char g; - unsigned char b; - unsigned char a; - } Color; - - // Rectangle type - typedef struct Rectangle { - float x; - float y; - float width; - float height; - } Rectangle; - - // TODO: Texture2D type is very coupled to raylib, required by Font type - // It should be redesigned to be provided by user - typedef struct Texture { - unsigned int id; // OpenGL texture id - int width; // Texture base width - int height; // Texture base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) - } Texture; - - // Texture2D, same as Texture - typedef Texture Texture2D; - - // Image, pixel data stored in CPU memory (RAM) - typedef struct Image { - void *data; // Image raw data - int width; // Image base width - int height; // Image base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) - } Image; - - // GlyphInfo, font characters glyphs info - typedef struct GlyphInfo { - int value; // Character value (Unicode) - int offsetX; // Character offset X when drawing - int offsetY; // Character offset Y when drawing - int advanceX; // Character advance position X - Image image; // Character image data - } GlyphInfo; - - // TODO: Font type is very coupled to raylib, mostly required by GuiLoadStyle() - // It should be redesigned to be provided by user - typedef struct Font { - int baseSize; // Base size (default chars height) - int glyphCount; // Number of glyph characters - int glyphPadding; // Padding around the glyph characters - Texture2D texture; // Texture atlas containing the glyphs - Rectangle *recs; // Rectangles in texture for the glyphs - GlyphInfo *glyphs; // Glyphs info data - } Font; -#endif - -// Style property -// NOTE: Used when exporting style as code for convenience -typedef struct GuiStyleProp { - unsigned short controlId; // Control identifier - unsigned short propertyId; // Property identifier - int propertyValue; // Property value -} GuiStyleProp; - -/* -// Controls text style -NOT USED- -// NOTE: Text style is defined by control -typedef struct GuiTextStyle { - unsigned int size; - int charSpacing; - int lineSpacing; - int alignmentH; - int alignmentV; - int padding; -} GuiTextStyle; -*/ - -// Gui control state -typedef enum { - STATE_NORMAL = 0, - STATE_FOCUSED, - STATE_PRESSED, - STATE_DISABLED -} GuiState; - -// Gui control text alignment -typedef enum { - TEXT_ALIGN_LEFT = 0, - TEXT_ALIGN_CENTER, - TEXT_ALIGN_RIGHT -} GuiTextAlignment; - -// Gui control text alignment vertical -// NOTE: Text vertical position inside the text bounds -typedef enum { - TEXT_ALIGN_TOP = 0, - TEXT_ALIGN_MIDDLE, - TEXT_ALIGN_BOTTOM -} GuiTextAlignmentVertical; - -// Gui control text wrap mode -// NOTE: Useful for multiline text -typedef enum { - TEXT_WRAP_NONE = 0, - TEXT_WRAP_CHAR, - TEXT_WRAP_WORD -} GuiTextWrapMode; - -// Gui controls -typedef enum { - // Default -> populates to all controls when set - DEFAULT = 0, - - // Basic controls - LABEL, // Used also for: LABELBUTTON - BUTTON, - TOGGLE, // Used also for: TOGGLEGROUP - SLIDER, // Used also for: SLIDERBAR, TOGGLESLIDER - PROGRESSBAR, - CHECKBOX, - COMBOBOX, - DROPDOWNBOX, - TEXTBOX, // Used also for: TEXTBOXMULTI - VALUEBOX, - CONTROL11, - LISTVIEW, - COLORPICKER, - SCROLLBAR, - STATUSBAR -} GuiControl; - -// Gui base properties for every control -// NOTE: RAYGUI_MAX_PROPS_BASE properties (by default 16 properties) -typedef enum { - BORDER_COLOR_NORMAL = 0, // Control border color in STATE_NORMAL - BASE_COLOR_NORMAL, // Control base color in STATE_NORMAL - TEXT_COLOR_NORMAL, // Control text color in STATE_NORMAL - BORDER_COLOR_FOCUSED, // Control border color in STATE_FOCUSED - BASE_COLOR_FOCUSED, // Control base color in STATE_FOCUSED - TEXT_COLOR_FOCUSED, // Control text color in STATE_FOCUSED - BORDER_COLOR_PRESSED, // Control border color in STATE_PRESSED - BASE_COLOR_PRESSED, // Control base color in STATE_PRESSED - TEXT_COLOR_PRESSED, // Control text color in STATE_PRESSED - BORDER_COLOR_DISABLED, // Control border color in STATE_DISABLED - BASE_COLOR_DISABLED, // Control base color in STATE_DISABLED - TEXT_COLOR_DISABLED, // Control text color in STATE_DISABLED - BORDER_WIDTH = 12, // Control border size, 0 for no border - //TEXT_SIZE, // Control text size (glyphs max height) -> GLOBAL for all controls - //TEXT_SPACING, // Control text spacing between glyphs -> GLOBAL for all controls - //TEXT_LINE_SPACING, // Control text spacing between lines -> GLOBAL for all controls - TEXT_PADDING = 13, // Control text padding, not considering border - TEXT_ALIGNMENT = 14, // Control text horizontal alignment inside control text bound (after border and padding) - //TEXT_WRAP_MODE // Control text wrap-mode inside text bounds -> GLOBAL for all controls -} GuiControlProperty; - -// TODO: Which text styling properties should be global or per-control? -// At this moment TEXT_PADDING and TEXT_ALIGNMENT is configured and saved per control while -// TEXT_SIZE, TEXT_SPACING, TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE are global and -// should be configured by user as needed while defining the UI layout - -// Gui extended properties depend on control -// NOTE: RAYGUI_MAX_PROPS_EXTENDED properties (by default, max 8 properties) -//---------------------------------------------------------------------------------- -// DEFAULT extended properties -// NOTE: Those properties are common to all controls or global -// WARNING: Only 8 slots vailable for those properties by default -typedef enum { - TEXT_SIZE = 16, // Text size (glyphs max height) - TEXT_SPACING, // Text spacing between glyphs - LINE_COLOR, // Line control color - BACKGROUND_COLOR, // Background color - TEXT_LINE_SPACING, // Text spacing between lines - TEXT_ALIGNMENT_VERTICAL, // Text vertical alignment inside text bounds (after border and padding) - TEXT_WRAP_MODE // Text wrap-mode inside text bounds - //TEXT_DECORATION // Text decoration: 0-None, 1-Underline, 2-Line-through, 3-Overline - //TEXT_DECORATION_THICK // Text decoration line thickness -} GuiDefaultProperty; - -// Other possible text properties: -// TEXT_WEIGHT // Normal, Italic, Bold -> Requires specific font change -// TEXT_INDENT // Text indentation -> Now using TEXT_PADDING... - -// Label -//typedef enum { } GuiLabelProperty; - -// Button/Spinner -//typedef enum { } GuiButtonProperty; - -// Toggle/ToggleGroup -typedef enum { - GROUP_PADDING = 16, // ToggleGroup separation between toggles -} GuiToggleProperty; - -// Slider/SliderBar -typedef enum { - SLIDER_WIDTH = 16, // Slider size of internal bar - SLIDER_PADDING // Slider/SliderBar internal bar padding -} GuiSliderProperty; - -// ProgressBar -typedef enum { - PROGRESS_PADDING = 16, // ProgressBar internal padding - PROGRESS_SIDE, // ProgressBar increment side: 0-left->right, 1-right-left -} GuiProgressBarProperty; - -// ScrollBar -typedef enum { - ARROWS_SIZE = 16, // ScrollBar arrows size - ARROWS_VISIBLE, // ScrollBar arrows visible - SCROLL_SLIDER_PADDING, // ScrollBar slider internal padding - SCROLL_SLIDER_SIZE, // ScrollBar slider size - SCROLL_PADDING, // ScrollBar scroll padding from arrows - SCROLL_SPEED, // ScrollBar scrolling speed -} GuiScrollBarProperty; - -// CheckBox -typedef enum { - CHECK_PADDING = 16 // CheckBox internal check padding -} GuiCheckBoxProperty; - -// ComboBox -typedef enum { - COMBO_BUTTON_WIDTH = 16, // ComboBox right button width - COMBO_BUTTON_SPACING // ComboBox button separation -} GuiComboBoxProperty; - -// DropdownBox -typedef enum { - ARROW_PADDING = 16, // DropdownBox arrow separation from border and items - DROPDOWN_ITEMS_SPACING, // DropdownBox items separation - DROPDOWN_ARROW_HIDDEN, // DropdownBox arrow hidden - DROPDOWN_ROLL_UP // DropdownBox roll up flag (default rolls down) -} GuiDropdownBoxProperty; - -// TextBox/TextBoxMulti/ValueBox/Spinner -typedef enum { - TEXT_READONLY = 16, // TextBox in read-only mode: 0-text editable, 1-text no-editable -} GuiTextBoxProperty; - -// ValueBox/Spinner -typedef enum { - SPINNER_BUTTON_WIDTH = 16, // Spinner left/right buttons width - SPINNER_BUTTON_SPACING, // Spinner buttons separation -} GuiValueBoxProperty; - -// Control11 -//typedef enum { } GuiControl11Property; - -// ListView -typedef enum { - LIST_ITEMS_HEIGHT = 16, // ListView items height - LIST_ITEMS_SPACING, // ListView items separation - SCROLLBAR_WIDTH, // ListView scrollbar size (usually width) - SCROLLBAR_SIDE, // ListView scrollbar side (0-SCROLLBAR_LEFT_SIDE, 1-SCROLLBAR_RIGHT_SIDE) - LIST_ITEMS_BORDER_NORMAL, // ListView items border enabled in normal state - LIST_ITEMS_BORDER_WIDTH // ListView items border width -} GuiListViewProperty; - -// ColorPicker -typedef enum { - COLOR_SELECTOR_SIZE = 16, - HUEBAR_WIDTH, // ColorPicker right hue bar width - HUEBAR_PADDING, // ColorPicker right hue bar separation from panel - HUEBAR_SELECTOR_HEIGHT, // ColorPicker right hue bar selector height - HUEBAR_SELECTOR_OVERFLOW // ColorPicker right hue bar selector overflow -} GuiColorPickerProperty; - -#define SCROLLBAR_LEFT_SIDE 0 -#define SCROLLBAR_RIGHT_SIDE 1 - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -// ... - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- - -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif - -// Global gui state control functions -RAYGUIAPI void GuiEnable(void); // Enable gui controls (global state) -RAYGUIAPI void GuiDisable(void); // Disable gui controls (global state) -RAYGUIAPI void GuiLock(void); // Lock gui controls (global state) -RAYGUIAPI void GuiUnlock(void); // Unlock gui controls (global state) -RAYGUIAPI bool GuiIsLocked(void); // Check if gui is locked (global state) -RAYGUIAPI void GuiSetAlpha(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f -RAYGUIAPI void GuiSetState(int state); // Set gui state (global state) -RAYGUIAPI int GuiGetState(void); // Get gui state (global state) - -// Font set/get functions -RAYGUIAPI void GuiSetFont(Font font); // Set gui custom font (global state) -RAYGUIAPI Font GuiGetFont(void); // Get gui custom font (global state) - -// Style set/get functions -RAYGUIAPI void GuiSetStyle(int control, int property, int value); // Set one style property -RAYGUIAPI int GuiGetStyle(int control, int property); // Get one style property - -// Styles loading functions -RAYGUIAPI void GuiLoadStyle(const char *fileName); // Load style file over global style variable (.rgs) -RAYGUIAPI void GuiLoadStyleDefault(void); // Load style default over global style - -// Tooltips management functions -RAYGUIAPI void GuiEnableTooltip(void); // Enable gui tooltips (global state) -RAYGUIAPI void GuiDisableTooltip(void); // Disable gui tooltips (global state) -RAYGUIAPI void GuiSetTooltip(const char *tooltip); // Set tooltip string - -// Icons functionality -RAYGUIAPI const char *GuiIconText(int iconId, const char *text); // Get text with icon id prepended (if supported) -#if !defined(RAYGUI_NO_ICONS) -RAYGUIAPI void GuiSetIconScale(int scale); // Set default icon drawing size -RAYGUIAPI unsigned int *GuiGetIcons(void); // Get raygui icons data pointer -RAYGUIAPI char **GuiLoadIcons(const char *fileName, bool loadIconsName); // Load raygui icons file (.rgi) into internal icons data -RAYGUIAPI void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color); // Draw icon using pixel size at specified position -#endif - -// Utility functions -RAYGUIAPI int GuiGetTextWidth(const char *text); // Get text width considering gui style and icon size (if required) - -// Controls -//---------------------------------------------------------------------------------------------------------- -// Container/separator controls, useful for controls organization -RAYGUIAPI int GuiWindowBox(Rectangle bounds, const char *title); // Window Box control, shows a window that can be closed -RAYGUIAPI int GuiGroupBox(Rectangle bounds, const char *text); // Group Box control with text name -RAYGUIAPI int GuiLine(Rectangle bounds, const char *text); // Line separator control, could contain text -RAYGUIAPI int GuiPanel(Rectangle bounds, const char *text); // Panel control, useful to group controls -RAYGUIAPI int GuiTabBar(Rectangle bounds, char **text, int count, int *active); // Tab Bar control, returns TAB to be closed or -1 -RAYGUIAPI int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view); // Scroll Panel control - -// Basic controls set -RAYGUIAPI int GuiLabel(Rectangle bounds, const char *text); // Label control -RAYGUIAPI int GuiButton(Rectangle bounds, const char *text); // Button control, returns true when clicked -RAYGUIAPI int GuiLabelButton(Rectangle bounds, const char *text); // Label button control, returns true when clicked -RAYGUIAPI int GuiToggle(Rectangle bounds, const char *text, bool *active); // Toggle Button control -RAYGUIAPI int GuiToggleGroup(Rectangle bounds, const char *text, int *active); // Toggle Group control -RAYGUIAPI int GuiToggleSlider(Rectangle bounds, const char *text, int *active); // Toggle Slider control -RAYGUIAPI int GuiCheckBox(Rectangle bounds, const char *text, bool *checked); // Check Box control, returns true when active -RAYGUIAPI int GuiComboBox(Rectangle bounds, const char *text, int *active); // Combo Box control - -RAYGUIAPI int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode); // Dropdown Box control -RAYGUIAPI int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Spinner control -RAYGUIAPI int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Value Box control, updates input text with numbers -RAYGUIAPI int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode); // Value box control for float values -RAYGUIAPI int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode); // Text Box control, updates input text - -RAYGUIAPI int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider control -RAYGUIAPI int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider Bar control -RAYGUIAPI int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Progress Bar control -RAYGUIAPI int GuiStatusBar(Rectangle bounds, const char *text); // Status Bar control, shows info text -RAYGUIAPI int GuiDummyRec(Rectangle bounds, const char *text); // Dummy control for placeholders -RAYGUIAPI int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell); // Grid control - -// Advance controls set -RAYGUIAPI int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active); // List View control -RAYGUIAPI int GuiListViewEx(Rectangle bounds, char **text, int count, int *scrollIndex, int *active, int *focus); // List View with extended parameters -RAYGUIAPI int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons); // Message Box control, displays a message -RAYGUIAPI int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive); // Text Input Box control, ask for text, supports secret -RAYGUIAPI int GuiColorPicker(Rectangle bounds, const char *text, Color *color); // Color Picker control (multiple color controls) -RAYGUIAPI int GuiColorPanel(Rectangle bounds, const char *text, Color *color); // Color Panel control -RAYGUIAPI int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha); // Color Bar Alpha control -RAYGUIAPI int GuiColorBarHue(Rectangle bounds, const char *text, float *value); // Color Bar Hue control -RAYGUIAPI int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Picker control that avoids conversion to RGB on each call (multiple color controls) -RAYGUIAPI int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV() -//---------------------------------------------------------------------------------------------------------- - -#if !defined(RAYGUI_NO_ICONS) - -#if !defined(RAYGUI_CUSTOM_ICONS) -//---------------------------------------------------------------------------------- -// Icons enumeration -//---------------------------------------------------------------------------------- -typedef enum { - ICON_NONE = 0, - ICON_FOLDER_FILE_OPEN = 1, - ICON_FILE_SAVE_CLASSIC = 2, - ICON_FOLDER_OPEN = 3, - ICON_FOLDER_SAVE = 4, - ICON_FILE_OPEN = 5, - ICON_FILE_SAVE = 6, - ICON_FILE_EXPORT = 7, - ICON_FILE_ADD = 8, - ICON_FILE_DELETE = 9, - ICON_FILETYPE_TEXT = 10, - ICON_FILETYPE_AUDIO = 11, - ICON_FILETYPE_IMAGE = 12, - ICON_FILETYPE_PLAY = 13, - ICON_FILETYPE_VIDEO = 14, - ICON_FILETYPE_INFO = 15, - ICON_FILE_COPY = 16, - ICON_FILE_CUT = 17, - ICON_FILE_PASTE = 18, - ICON_CURSOR_HAND = 19, - ICON_CURSOR_POINTER = 20, - ICON_CURSOR_CLASSIC = 21, - ICON_PENCIL = 22, - ICON_PENCIL_BIG = 23, - ICON_BRUSH_CLASSIC = 24, - ICON_BRUSH_PAINTER = 25, - ICON_WATER_DROP = 26, - ICON_COLOR_PICKER = 27, - ICON_RUBBER = 28, - ICON_COLOR_BUCKET = 29, - ICON_TEXT_T = 30, - ICON_TEXT_A = 31, - ICON_SCALE = 32, - ICON_RESIZE = 33, - ICON_FILTER_POINT = 34, - ICON_FILTER_BILINEAR = 35, - ICON_CROP = 36, - ICON_CROP_ALPHA = 37, - ICON_SQUARE_TOGGLE = 38, - ICON_SYMMETRY = 39, - ICON_SYMMETRY_HORIZONTAL = 40, - ICON_SYMMETRY_VERTICAL = 41, - ICON_LENS = 42, - ICON_LENS_BIG = 43, - ICON_EYE_ON = 44, - ICON_EYE_OFF = 45, - ICON_FILTER_TOP = 46, - ICON_FILTER = 47, - ICON_TARGET_POINT = 48, - ICON_TARGET_SMALL = 49, - ICON_TARGET_BIG = 50, - ICON_TARGET_MOVE = 51, - ICON_CURSOR_MOVE = 52, - ICON_CURSOR_SCALE = 53, - ICON_CURSOR_SCALE_RIGHT = 54, - ICON_CURSOR_SCALE_LEFT = 55, - ICON_UNDO = 56, - ICON_REDO = 57, - ICON_REREDO = 58, - ICON_MUTATE = 59, - ICON_ROTATE = 60, - ICON_REPEAT = 61, - ICON_SHUFFLE = 62, - ICON_EMPTYBOX = 63, - ICON_TARGET = 64, - ICON_TARGET_SMALL_FILL = 65, - ICON_TARGET_BIG_FILL = 66, - ICON_TARGET_MOVE_FILL = 67, - ICON_CURSOR_MOVE_FILL = 68, - ICON_CURSOR_SCALE_FILL = 69, - ICON_CURSOR_SCALE_RIGHT_FILL = 70, - ICON_CURSOR_SCALE_LEFT_FILL = 71, - ICON_UNDO_FILL = 72, - ICON_REDO_FILL = 73, - ICON_REREDO_FILL = 74, - ICON_MUTATE_FILL = 75, - ICON_ROTATE_FILL = 76, - ICON_REPEAT_FILL = 77, - ICON_SHUFFLE_FILL = 78, - ICON_EMPTYBOX_SMALL = 79, - ICON_BOX = 80, - ICON_BOX_TOP = 81, - ICON_BOX_TOP_RIGHT = 82, - ICON_BOX_RIGHT = 83, - ICON_BOX_BOTTOM_RIGHT = 84, - ICON_BOX_BOTTOM = 85, - ICON_BOX_BOTTOM_LEFT = 86, - ICON_BOX_LEFT = 87, - ICON_BOX_TOP_LEFT = 88, - ICON_BOX_CENTER = 89, - ICON_BOX_CIRCLE_MASK = 90, - ICON_POT = 91, - ICON_ALPHA_MULTIPLY = 92, - ICON_ALPHA_CLEAR = 93, - ICON_DITHERING = 94, - ICON_MIPMAPS = 95, - ICON_BOX_GRID = 96, - ICON_GRID = 97, - ICON_BOX_CORNERS_SMALL = 98, - ICON_BOX_CORNERS_BIG = 99, - ICON_FOUR_BOXES = 100, - ICON_GRID_FILL = 101, - ICON_BOX_MULTISIZE = 102, - ICON_ZOOM_SMALL = 103, - ICON_ZOOM_MEDIUM = 104, - ICON_ZOOM_BIG = 105, - ICON_ZOOM_ALL = 106, - ICON_ZOOM_CENTER = 107, - ICON_BOX_DOTS_SMALL = 108, - ICON_BOX_DOTS_BIG = 109, - ICON_BOX_CONCENTRIC = 110, - ICON_BOX_GRID_BIG = 111, - ICON_OK_TICK = 112, - ICON_CROSS = 113, - ICON_ARROW_LEFT = 114, - ICON_ARROW_RIGHT = 115, - ICON_ARROW_DOWN = 116, - ICON_ARROW_UP = 117, - ICON_ARROW_LEFT_FILL = 118, - ICON_ARROW_RIGHT_FILL = 119, - ICON_ARROW_DOWN_FILL = 120, - ICON_ARROW_UP_FILL = 121, - ICON_AUDIO = 122, - ICON_FX = 123, - ICON_WAVE = 124, - ICON_WAVE_SINUS = 125, - ICON_WAVE_SQUARE = 126, - ICON_WAVE_TRIANGULAR = 127, - ICON_CROSS_SMALL = 128, - ICON_PLAYER_PREVIOUS = 129, - ICON_PLAYER_PLAY_BACK = 130, - ICON_PLAYER_PLAY = 131, - ICON_PLAYER_PAUSE = 132, - ICON_PLAYER_STOP = 133, - ICON_PLAYER_NEXT = 134, - ICON_PLAYER_RECORD = 135, - ICON_MAGNET = 136, - ICON_LOCK_CLOSE = 137, - ICON_LOCK_OPEN = 138, - ICON_CLOCK = 139, - ICON_TOOLS = 140, - ICON_GEAR = 141, - ICON_GEAR_BIG = 142, - ICON_BIN = 143, - ICON_HAND_POINTER = 144, - ICON_LASER = 145, - ICON_COIN = 146, - ICON_EXPLOSION = 147, - ICON_1UP = 148, - ICON_PLAYER = 149, - ICON_PLAYER_JUMP = 150, - ICON_KEY = 151, - ICON_DEMON = 152, - ICON_TEXT_POPUP = 153, - ICON_GEAR_EX = 154, - ICON_CRACK = 155, - ICON_CRACK_POINTS = 156, - ICON_STAR = 157, - ICON_DOOR = 158, - ICON_EXIT = 159, - ICON_MODE_2D = 160, - ICON_MODE_3D = 161, - ICON_CUBE = 162, - ICON_CUBE_FACE_TOP = 163, - ICON_CUBE_FACE_LEFT = 164, - ICON_CUBE_FACE_FRONT = 165, - ICON_CUBE_FACE_BOTTOM = 166, - ICON_CUBE_FACE_RIGHT = 167, - ICON_CUBE_FACE_BACK = 168, - ICON_CAMERA = 169, - ICON_SPECIAL = 170, - ICON_LINK_NET = 171, - ICON_LINK_BOXES = 172, - ICON_LINK_MULTI = 173, - ICON_LINK = 174, - ICON_LINK_BROKE = 175, - ICON_TEXT_NOTES = 176, - ICON_NOTEBOOK = 177, - ICON_SUITCASE = 178, - ICON_SUITCASE_ZIP = 179, - ICON_MAILBOX = 180, - ICON_MONITOR = 181, - ICON_PRINTER = 182, - ICON_PHOTO_CAMERA = 183, - ICON_PHOTO_CAMERA_FLASH = 184, - ICON_HOUSE = 185, - ICON_HEART = 186, - ICON_CORNER = 187, - ICON_VERTICAL_BARS = 188, - ICON_VERTICAL_BARS_FILL = 189, - ICON_LIFE_BARS = 190, - ICON_INFO = 191, - ICON_CROSSLINE = 192, - ICON_HELP = 193, - ICON_FILETYPE_ALPHA = 194, - ICON_FILETYPE_HOME = 195, - ICON_LAYERS_VISIBLE = 196, - ICON_LAYERS = 197, - ICON_WINDOW = 198, - ICON_HIDPI = 199, - ICON_FILETYPE_BINARY = 200, - ICON_HEX = 201, - ICON_SHIELD = 202, - ICON_FILE_NEW = 203, - ICON_FOLDER_ADD = 204, - ICON_ALARM = 205, - ICON_CPU = 206, - ICON_ROM = 207, - ICON_STEP_OVER = 208, - ICON_STEP_INTO = 209, - ICON_STEP_OUT = 210, - ICON_RESTART = 211, - ICON_BREAKPOINT_ON = 212, - ICON_BREAKPOINT_OFF = 213, - ICON_BURGER_MENU = 214, - ICON_CASE_SENSITIVE = 215, - ICON_REG_EXP = 216, - ICON_FOLDER = 217, - ICON_FILE = 218, - ICON_SAND_TIMER = 219, - ICON_WARNING = 220, - ICON_HELP_BOX = 221, - ICON_INFO_BOX = 222, - ICON_PRIORITY = 223, - ICON_LAYERS_ISO = 224, - ICON_LAYERS2 = 225, - ICON_MLAYERS = 226, - ICON_MAPS = 227, - ICON_HOT = 228, - ICON_LABEL = 229, - ICON_NAME_ID = 230, - ICON_SLICING = 231, - ICON_MANUAL_CONTROL = 232, - ICON_COLLISION = 233, - ICON_CIRCLE_ADD = 234, - ICON_CIRCLE_ADD_FILL = 235, - ICON_CIRCLE_WARNING = 236, - ICON_CIRCLE_WARNING_FILL = 237, - ICON_BOX_MORE = 238, - ICON_BOX_MORE_FILL = 239, - ICON_BOX_MINUS = 240, - ICON_BOX_MINUS_FILL = 241, - ICON_UNION = 242, - ICON_INTERSECTION = 243, - ICON_DIFFERENCE = 244, - ICON_SPHERE = 245, - ICON_CYLINDER = 246, - ICON_CONE = 247, - ICON_ELLIPSOID = 248, - ICON_CAPSULE = 249, - ICON_250 = 250, - ICON_251 = 251, - ICON_252 = 252, - ICON_253 = 253, - ICON_254 = 254, - ICON_255 = 255 -} GuiIconName; -#endif - -#endif - -#if defined(__cplusplus) -} // Prevents name mangling of functions -#endif - -#endif // RAYGUI_H - -/*********************************************************************************** -* -* RAYGUI IMPLEMENTATION -* -************************************************************************************/ - -#if defined(RAYGUI_IMPLEMENTATION) - -#include // required for: isspace() [GuiTextBox()] -#include // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf(), snprintf(), vsprintf() [GuiLoadStyle(), GuiLoadIcons()] -#include // Required for: strlen() [GuiTextBox(), GuiValueBox()], memset(), memcpy() -#include // Required for: va_list, va_start(), vfprintf(), va_end() [TextFormat()] -#include // Required for: roundf() [GuiColorPicker()] - -// Allow custom memory allocators -#if defined(RAYGUI_MALLOC) || defined(RAYGUI_CALLOC) || defined(RAYGUI_FREE) - #if !defined(RAYGUI_MALLOC) || !defined(RAYGUI_CALLOC) || !defined(RAYGUI_FREE) - #error "RAYGUI: if RAYGUI_MALLOC, RAYGUI_CALLOC, or RAYGUI_FREE is customized, all three must be customized" - #endif -#else - #include // Required for: malloc(), calloc(), free() [GuiLoadStyle(), GuiLoadIcons()] - - #define RAYGUI_MALLOC(sz) malloc(sz) - #define RAYGUI_CALLOC(n,sz) calloc(n,sz) - #define RAYGUI_FREE(p) free(p) -#endif - -#ifdef __cplusplus - #define RAYGUI_CLITERAL(name) name -#else - #define RAYGUI_CLITERAL(name) (name) -#endif - -// Check if two rectangles are equal, used to validate a slider bounds as an id -#ifndef CHECK_BOUNDS_ID - #define CHECK_BOUNDS_ID(src, dst) (((int)src.x == (int)dst.x) && ((int)src.y == (int)dst.y) && ((int)src.width == (int)dst.width) && ((int)src.height == (int)dst.height)) -#endif - -#if !defined(RAYGUI_NO_ICONS) && !defined(RAYGUI_CUSTOM_ICONS) - -// Embedded icons, no external file provided -#define RAYGUI_ICON_SIZE 16 // Size of icons in pixels (squared) -#define RAYGUI_ICON_MAX_ICONS 256 // Maximum number of icons -#define RAYGUI_ICON_MAX_NAME_LENGTH 32 // Maximum length of icon name id - -// Icons data is defined by bit array (every bit represents one pixel) -// Those arrays are stored as unsigned int data arrays, so, -// every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) -// NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) -#define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) - -//---------------------------------------------------------------------------------- -// Icons data for all gui possible icons (allocated on data segment by default) -// -// NOTE 1: Every icon is codified in binary form, using 1 bit per pixel, so, -// every 16x16 icon requires 8 integers (16*16/32) to be stored -// -// NOTE 2: A different icon set could be loaded over this array using GuiLoadIcons(), -// but loaded icons set must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS -// -// guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB -//---------------------------------------------------------------------------------- -static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_NONE - 0x3ff80000, 0x2f082008, 0x2042207e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x00007ffe, // ICON_FOLDER_FILE_OPEN - 0x3ffe0000, 0x44226422, 0x400247e2, 0x5ffa4002, 0x57ea500a, 0x500a500a, 0x40025ffa, 0x00007ffe, // ICON_FILE_SAVE_CLASSIC - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024002, 0x44424282, 0x793e4102, 0x00000100, // ICON_FOLDER_OPEN - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024102, 0x44424102, 0x793e4282, 0x00000000, // ICON_FOLDER_SAVE - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x24442284, 0x21042104, 0x20042104, 0x00003ffc, // ICON_FILE_OPEN - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x21042104, 0x22842444, 0x20042104, 0x00003ffc, // ICON_FILE_SAVE - 0x3ff00000, 0x201c2010, 0x00042004, 0x20041004, 0x20844784, 0x00841384, 0x20042784, 0x00003ffc, // ICON_FILE_EXPORT - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x22042204, 0x22042f84, 0x20042204, 0x00003ffc, // ICON_FILE_ADD - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x25042884, 0x25042204, 0x20042884, 0x00003ffc, // ICON_FILE_DELETE - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_FILETYPE_TEXT - 0x3ff00000, 0x201c2010, 0x27042004, 0x244424c4, 0x26442444, 0x20642664, 0x20042004, 0x00003ffc, // ICON_FILETYPE_AUDIO - 0x3ff00000, 0x201c2010, 0x26042604, 0x20042004, 0x35442884, 0x2414222c, 0x20042004, 0x00003ffc, // ICON_FILETYPE_IMAGE - 0x3ff00000, 0x201c2010, 0x20c42004, 0x22442144, 0x22442444, 0x20c42144, 0x20042004, 0x00003ffc, // ICON_FILETYPE_PLAY - 0x3ff00000, 0x3ffc2ff0, 0x3f3c2ff4, 0x3dbc2eb4, 0x3dbc2bb4, 0x3f3c2eb4, 0x3ffc2ff4, 0x00002ff4, // ICON_FILETYPE_VIDEO - 0x3ff00000, 0x201c2010, 0x21842184, 0x21842004, 0x21842184, 0x21842184, 0x20042184, 0x00003ffc, // ICON_FILETYPE_INFO - 0x0ff00000, 0x381c0810, 0x28042804, 0x28042804, 0x28042804, 0x28042804, 0x20102ffc, 0x00003ff0, // ICON_FILE_COPY - 0x00000000, 0x701c0000, 0x079c1e14, 0x55a000f0, 0x079c00f0, 0x701c1e14, 0x00000000, 0x00000000, // ICON_FILE_CUT - 0x01c00000, 0x13e41bec, 0x3f841004, 0x204420c4, 0x20442044, 0x20442044, 0x207c2044, 0x00003fc0, // ICON_FILE_PASTE - 0x00000000, 0x3aa00fe0, 0x2abc2aa0, 0x2aa42aa4, 0x20042aa4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_CURSOR_HAND - 0x00000000, 0x003c000c, 0x030800c8, 0x30100c10, 0x10202020, 0x04400840, 0x01800280, 0x00000000, // ICON_CURSOR_POINTER - 0x00000000, 0x00180000, 0x01f00078, 0x03e007f0, 0x07c003e0, 0x04000e40, 0x00000000, 0x00000000, // ICON_CURSOR_CLASSIC - 0x00000000, 0x04000000, 0x11000a00, 0x04400a80, 0x01100220, 0x00580088, 0x00000038, 0x00000000, // ICON_PENCIL - 0x04000000, 0x15000a00, 0x50402880, 0x14102820, 0x05040a08, 0x015c028c, 0x007c00bc, 0x00000000, // ICON_PENCIL_BIG - 0x01c00000, 0x01400140, 0x01400140, 0x0ff80140, 0x0ff80808, 0x0aa80808, 0x0aa80aa8, 0x00000ff8, // ICON_BRUSH_CLASSIC - 0x1ffc0000, 0x5ffc7ffe, 0x40004000, 0x00807f80, 0x01c001c0, 0x01c001c0, 0x01c001c0, 0x00000080, // ICON_BRUSH_PAINTER - 0x00000000, 0x00800000, 0x01c00080, 0x03e001c0, 0x07f003e0, 0x036006f0, 0x000001c0, 0x00000000, // ICON_WATER_DROP - 0x00000000, 0x3e003800, 0x1f803f80, 0x0c201e40, 0x02080c10, 0x00840104, 0x00380044, 0x00000000, // ICON_COLOR_PICKER - 0x00000000, 0x07800300, 0x1fe00fc0, 0x3f883fd0, 0x0e021f04, 0x02040402, 0x00f00108, 0x00000000, // ICON_RUBBER - 0x00c00000, 0x02800140, 0x08200440, 0x20081010, 0x2ffe3004, 0x03f807fc, 0x00e001f0, 0x00000040, // ICON_COLOR_BUCKET - 0x00000000, 0x21843ffc, 0x01800180, 0x01800180, 0x01800180, 0x01800180, 0x03c00180, 0x00000000, // ICON_TEXT_T - 0x00800000, 0x01400180, 0x06200340, 0x0c100620, 0x1ff80c10, 0x380c1808, 0x70067004, 0x0000f80f, // ICON_TEXT_A - 0x78000000, 0x50004000, 0x00004800, 0x03c003c0, 0x03c003c0, 0x00100000, 0x0002000a, 0x0000000e, // ICON_SCALE - 0x75560000, 0x5e004002, 0x54001002, 0x41001202, 0x408200fe, 0x40820082, 0x40820082, 0x00006afe, // ICON_RESIZE - 0x00000000, 0x3f003f00, 0x3f003f00, 0x3f003f00, 0x00400080, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_POINT - 0x6d800000, 0x00004080, 0x40804080, 0x40800000, 0x00406d80, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_BILINEAR - 0x40080000, 0x1ffe2008, 0x14081008, 0x11081208, 0x10481088, 0x10081028, 0x10047ff8, 0x00001002, // ICON_CROP - 0x00100000, 0x3ffc0010, 0x2ab03550, 0x22b02550, 0x20b02150, 0x20302050, 0x2000fff0, 0x00002000, // ICON_CROP_ALPHA - 0x40000000, 0x1ff82000, 0x04082808, 0x01082208, 0x00482088, 0x00182028, 0x35542008, 0x00000002, // ICON_SQUARE_TOGGLE - 0x00000000, 0x02800280, 0x06c006c0, 0x0ea00ee0, 0x1e901eb0, 0x3e883e98, 0x7efc7e8c, 0x00000000, // ICON_SYMMETRY - 0x01000000, 0x05600100, 0x1d480d50, 0x7d423d44, 0x3d447d42, 0x0d501d48, 0x01000560, 0x00000100, // ICON_SYMMETRY_HORIZONTAL - 0x01800000, 0x04200240, 0x10080810, 0x00001ff8, 0x00007ffe, 0x0ff01ff8, 0x03c007e0, 0x00000180, // ICON_SYMMETRY_VERTICAL - 0x00000000, 0x010800f0, 0x02040204, 0x02040204, 0x07f00308, 0x1c000e00, 0x30003800, 0x00000000, // ICON_LENS - 0x00000000, 0x061803f0, 0x08240c0c, 0x08040814, 0x0c0c0804, 0x23f01618, 0x18002400, 0x00000000, // ICON_LENS_BIG - 0x00000000, 0x00000000, 0x1c7007c0, 0x638e3398, 0x1c703398, 0x000007c0, 0x00000000, 0x00000000, // ICON_EYE_ON - 0x00000000, 0x10002000, 0x04700fc0, 0x610e3218, 0x1c703098, 0x001007a0, 0x00000008, 0x00000000, // ICON_EYE_OFF - 0x00000000, 0x00007ffc, 0x40047ffc, 0x10102008, 0x04400820, 0x02800280, 0x02800280, 0x00000100, // ICON_FILTER_TOP - 0x00000000, 0x40027ffe, 0x10082004, 0x04200810, 0x02400240, 0x02400240, 0x01400240, 0x000000c0, // ICON_FILTER - 0x00800000, 0x00800080, 0x00000080, 0x3c9e0000, 0x00000000, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_POINT - 0x00800000, 0x00800080, 0x00800080, 0x3f7e01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL - 0x00800000, 0x00800080, 0x03e00080, 0x3e3e0220, 0x03e00220, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG - 0x01000000, 0x04400280, 0x01000100, 0x43842008, 0x43849ab2, 0x01002008, 0x04400100, 0x01000280, // ICON_TARGET_MOVE - 0x01000000, 0x04400280, 0x01000100, 0x41042108, 0x41049ff2, 0x01002108, 0x04400100, 0x01000280, // ICON_CURSOR_MOVE - 0x781e0000, 0x500a4002, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x4002500a, 0x0000781e, // ICON_CURSOR_SCALE - 0x00000000, 0x20003c00, 0x24002800, 0x01000200, 0x00400080, 0x00140024, 0x003c0004, 0x00000000, // ICON_CURSOR_SCALE_RIGHT - 0x00000000, 0x0004003c, 0x00240014, 0x00800040, 0x02000100, 0x28002400, 0x3c002000, 0x00000000, // ICON_CURSOR_SCALE_LEFT - 0x00000000, 0x00100020, 0x10101fc8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO - 0x00000000, 0x08000400, 0x080813f8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3f902020, 0x00400020, 0x00000000, // ICON_REREDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3fc82010, 0x00200010, 0x00000000, // ICON_MUTATE - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18101020, 0x00100fc8, 0x00000020, // ICON_ROTATE - 0x00000000, 0x04000200, 0x240429fc, 0x20042204, 0x20442004, 0x3f942024, 0x00400020, 0x00000000, // ICON_REPEAT - 0x00000000, 0x20001000, 0x22104c0e, 0x00801120, 0x11200040, 0x4c0e2210, 0x10002000, 0x00000000, // ICON_SHUFFLE - 0x7ffe0000, 0x50024002, 0x44024802, 0x41024202, 0x40424082, 0x40124022, 0x4002400a, 0x00007ffe, // ICON_EMPTYBOX - 0x00800000, 0x03e00080, 0x08080490, 0x3c9e0808, 0x08080808, 0x03e00490, 0x00800080, 0x00000000, // ICON_TARGET - 0x00800000, 0x00800080, 0x00800080, 0x3ffe01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL_FILL - 0x00800000, 0x00800080, 0x03e00080, 0x3ffe03e0, 0x03e003e0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x638c2008, 0x638cfbbe, 0x01002008, 0x07c00100, 0x01000380, // ICON_TARGET_MOVE_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x610c2108, 0x610cfffe, 0x01002108, 0x07c00100, 0x01000380, // ICON_CURSOR_MOVE_FILL - 0x781e0000, 0x6006700e, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x700e6006, 0x0000781e, // ICON_CURSOR_SCALE_FILL - 0x00000000, 0x38003c00, 0x24003000, 0x01000200, 0x00400080, 0x000c0024, 0x003c001c, 0x00000000, // ICON_CURSOR_SCALE_RIGHT_FILL - 0x00000000, 0x001c003c, 0x0024000c, 0x00800040, 0x02000100, 0x30002400, 0x3c003800, 0x00000000, // ICON_CURSOR_SCALE_LEFT_FILL - 0x00000000, 0x00300020, 0x10301ff8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO_FILL - 0x00000000, 0x0c000400, 0x0c081ff8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3ff02060, 0x00400060, 0x00000000, // ICON_REREDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3ff82030, 0x00200030, 0x00000000, // ICON_MUTATE_FILL - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18301020, 0x00300ff8, 0x00000020, // ICON_ROTATE_FILL - 0x00000000, 0x06000200, 0x26042ffc, 0x20042204, 0x20442004, 0x3ff42064, 0x00400060, 0x00000000, // ICON_REPEAT_FILL - 0x00000000, 0x30001000, 0x32107c0e, 0x00801120, 0x11200040, 0x7c0e3210, 0x10003000, 0x00000000, // ICON_SHUFFLE_FILL - 0x00000000, 0x30043ffc, 0x24042804, 0x21042204, 0x20442084, 0x20142024, 0x3ffc200c, 0x00000000, // ICON_EMPTYBOX_SMALL - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX - 0x00000000, 0x23c43ffc, 0x23c423c4, 0x200423c4, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP - 0x00000000, 0x3e043ffc, 0x3e043e04, 0x20043e04, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x3e043e04, 0x3e043e04, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x3e042004, 0x3e043e04, 0x3ffc3e04, 0x00000000, // ICON_BOX_BOTTOM_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x23c42004, 0x23c423c4, 0x3ffc23c4, 0x00000000, // ICON_BOX_BOTTOM - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x207c2004, 0x207c207c, 0x3ffc207c, 0x00000000, // ICON_BOX_BOTTOM_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x207c207c, 0x207c207c, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_LEFT - 0x00000000, 0x207c3ffc, 0x207c207c, 0x2004207c, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x23c423c4, 0x23c423c4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_CENTER - 0x7ffe0000, 0x40024002, 0x47e24182, 0x4ff247e2, 0x47e24ff2, 0x418247e2, 0x40024002, 0x00007ffe, // ICON_BOX_CIRCLE_MASK - 0x7fff0000, 0x40014001, 0x40014001, 0x49555ddd, 0x4945495d, 0x400149c5, 0x40014001, 0x00007fff, // ICON_POT - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x404e40ce, 0x48125432, 0x4006540e, 0x00007ffe, // ICON_ALPHA_MULTIPLY - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x5c4e40ce, 0x44124432, 0x40065c0e, 0x00007ffe, // ICON_ALPHA_CLEAR - 0x7ffe0000, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x00007ffe, // ICON_DITHERING - 0x07fe0000, 0x1ffa0002, 0x7fea000a, 0x402a402a, 0x5b2a512a, 0x5128552a, 0x40205128, 0x00007fe0, // ICON_MIPMAPS - 0x00000000, 0x1ff80000, 0x12481248, 0x12481ff8, 0x1ff81248, 0x12481248, 0x00001ff8, 0x00000000, // ICON_BOX_GRID - 0x12480000, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x00001248, // ICON_GRID - 0x00000000, 0x1c380000, 0x1c3817e8, 0x08100810, 0x08100810, 0x17e81c38, 0x00001c38, 0x00000000, // ICON_BOX_CORNERS_SMALL - 0x700e0000, 0x700e5ffa, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x5ffa700e, 0x0000700e, // ICON_BOX_CORNERS_BIG - 0x3f7e0000, 0x21422142, 0x21422142, 0x00003f7e, 0x21423f7e, 0x21422142, 0x3f7e2142, 0x00000000, // ICON_FOUR_BOXES - 0x00000000, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x00000000, // ICON_GRID_FILL - 0x7ffe0000, 0x7ffe7ffe, 0x77fe7000, 0x77fe77fe, 0x777e7700, 0x777e777e, 0x777e777e, 0x0000777e, // ICON_BOX_MULTISIZE - 0x781e0000, 0x40024002, 0x00004002, 0x01800000, 0x00000180, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_SMALL - 0x781e0000, 0x40024002, 0x00004002, 0x03c003c0, 0x03c003c0, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_MEDIUM - 0x781e0000, 0x40024002, 0x07e04002, 0x07e007e0, 0x07e007e0, 0x400207e0, 0x40024002, 0x0000781e, // ICON_ZOOM_BIG - 0x781e0000, 0x5ffa4002, 0x1ff85ffa, 0x1ff81ff8, 0x1ff81ff8, 0x5ffa1ff8, 0x40025ffa, 0x0000781e, // ICON_ZOOM_ALL - 0x00000000, 0x2004381c, 0x00002004, 0x00000000, 0x00000000, 0x20040000, 0x381c2004, 0x00000000, // ICON_ZOOM_CENTER - 0x00000000, 0x1db80000, 0x10081008, 0x10080000, 0x00001008, 0x10081008, 0x00001db8, 0x00000000, // ICON_BOX_DOTS_SMALL - 0x35560000, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x35562002, 0x00000000, // ICON_BOX_DOTS_BIG - 0x7ffe0000, 0x40024002, 0x48124ff2, 0x49924812, 0x48124992, 0x4ff24812, 0x40024002, 0x00007ffe, // ICON_BOX_CONCENTRIC - 0x00000000, 0x10841ffc, 0x10841084, 0x1ffc1084, 0x10841084, 0x10841084, 0x00001ffc, 0x00000000, // ICON_BOX_GRID_BIG - 0x00000000, 0x00000000, 0x10000000, 0x04000800, 0x01040200, 0x00500088, 0x00000020, 0x00000000, // ICON_OK_TICK - 0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // ICON_CROSS - 0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // ICON_ARROW_LEFT - 0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // ICON_ARROW_RIGHT - 0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // ICON_ARROW_DOWN - 0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP - 0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // ICON_ARROW_LEFT_FILL - 0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // ICON_ARROW_RIGHT_FILL - 0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // ICON_ARROW_DOWN_FILL - 0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP_FILL - 0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // ICON_AUDIO - 0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // ICON_FX - 0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // ICON_WAVE - 0x00000000, 0x00600000, 0x01080090, 0x02040108, 0x42044204, 0x24022402, 0x00001800, 0x00000000, // ICON_WAVE_SINUS - 0x00000000, 0x07f80000, 0x04080408, 0x04080408, 0x04080408, 0x7c0e0408, 0x00000000, 0x00000000, // ICON_WAVE_SQUARE - 0x00000000, 0x00000000, 0x00a00040, 0x22084110, 0x08021404, 0x00000000, 0x00000000, 0x00000000, // ICON_WAVE_TRIANGULAR - 0x00000000, 0x00000000, 0x04200000, 0x01800240, 0x02400180, 0x00000420, 0x00000000, 0x00000000, // ICON_CROSS_SMALL - 0x00000000, 0x18380000, 0x12281428, 0x10a81128, 0x112810a8, 0x14281228, 0x00001838, 0x00000000, // ICON_PLAYER_PREVIOUS - 0x00000000, 0x18000000, 0x11801600, 0x10181060, 0x10601018, 0x16001180, 0x00001800, 0x00000000, // ICON_PLAYER_PLAY_BACK - 0x00000000, 0x00180000, 0x01880068, 0x18080608, 0x06081808, 0x00680188, 0x00000018, 0x00000000, // ICON_PLAYER_PLAY - 0x00000000, 0x1e780000, 0x12481248, 0x12481248, 0x12481248, 0x12481248, 0x00001e78, 0x00000000, // ICON_PLAYER_PAUSE - 0x00000000, 0x1ff80000, 0x10081008, 0x10081008, 0x10081008, 0x10081008, 0x00001ff8, 0x00000000, // ICON_PLAYER_STOP - 0x00000000, 0x1c180000, 0x14481428, 0x15081488, 0x14881508, 0x14281448, 0x00001c18, 0x00000000, // ICON_PLAYER_NEXT - 0x00000000, 0x03c00000, 0x08100420, 0x10081008, 0x10081008, 0x04200810, 0x000003c0, 0x00000000, // ICON_PLAYER_RECORD - 0x00000000, 0x0c3007e0, 0x13c81818, 0x14281668, 0x14281428, 0x1c381c38, 0x08102244, 0x00000000, // ICON_MAGNET - 0x07c00000, 0x08200820, 0x3ff80820, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_CLOSE - 0x07c00000, 0x08000800, 0x3ff80800, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_OPEN - 0x01c00000, 0x0c180770, 0x3086188c, 0x60832082, 0x60034781, 0x30062002, 0x0c18180c, 0x01c00770, // ICON_CLOCK - 0x0a200000, 0x1b201b20, 0x04200e20, 0x04200420, 0x04700420, 0x0e700e70, 0x0e700e70, 0x04200e70, // ICON_TOOLS - 0x01800000, 0x3bdc318c, 0x0ff01ff8, 0x7c3e1e78, 0x1e787c3e, 0x1ff80ff0, 0x318c3bdc, 0x00000180, // ICON_GEAR - 0x01800000, 0x3ffc318c, 0x1c381ff8, 0x781e1818, 0x1818781e, 0x1ff81c38, 0x318c3ffc, 0x00000180, // ICON_GEAR_BIG - 0x00000000, 0x08080ff8, 0x08081ffc, 0x0aa80aa8, 0x0aa80aa8, 0x0aa80aa8, 0x08080aa8, 0x00000ff8, // ICON_BIN - 0x00000000, 0x00000000, 0x20043ffc, 0x08043f84, 0x04040f84, 0x04040784, 0x000007fc, 0x00000000, // ICON_HAND_POINTER - 0x00000000, 0x24400400, 0x00001480, 0x6efe0e00, 0x00000e00, 0x24401480, 0x00000400, 0x00000000, // ICON_LASER - 0x00000000, 0x03c00000, 0x08300460, 0x11181118, 0x11181118, 0x04600830, 0x000003c0, 0x00000000, // ICON_COIN - 0x00000000, 0x10880080, 0x06c00810, 0x366c07e0, 0x07e00240, 0x00001768, 0x04200240, 0x00000000, // ICON_EXPLOSION - 0x00000000, 0x3d280000, 0x2528252c, 0x3d282528, 0x05280528, 0x05e80528, 0x00000000, 0x00000000, // ICON_1UP - 0x01800000, 0x03c003c0, 0x018003c0, 0x0ff007e0, 0x0bd00bd0, 0x0a500bd0, 0x02400240, 0x02400240, // ICON_PLAYER - 0x01800000, 0x03c003c0, 0x118013c0, 0x03c81ff8, 0x07c003c8, 0x04400440, 0x0c080478, 0x00000000, // ICON_PLAYER_JUMP - 0x3ff80000, 0x30183ff8, 0x30183018, 0x3ff83ff8, 0x03000300, 0x03c003c0, 0x03e00300, 0x000003e0, // ICON_KEY - 0x3ff80000, 0x3ff83ff8, 0x33983ff8, 0x3ff83398, 0x3ff83ff8, 0x00000540, 0x0fe00aa0, 0x00000fe0, // ICON_DEMON - 0x00000000, 0x0ff00000, 0x20041008, 0x25442004, 0x10082004, 0x06000bf0, 0x00000300, 0x00000000, // ICON_TEXT_POPUP - 0x00000000, 0x11440000, 0x07f00be8, 0x1c1c0e38, 0x1c1c0c18, 0x07f00e38, 0x11440be8, 0x00000000, // ICON_GEAR_EX - 0x00000000, 0x20080000, 0x0c601010, 0x07c00fe0, 0x07c007c0, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK - 0x00000000, 0x20080000, 0x0c601010, 0x04400fe0, 0x04405554, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK_POINTS - 0x00000000, 0x00800080, 0x01c001c0, 0x1ffc3ffe, 0x03e007f0, 0x07f003e0, 0x0c180770, 0x00000808, // ICON_STAR - 0x0ff00000, 0x08180810, 0x08100818, 0x0a100810, 0x08180810, 0x08100818, 0x08100810, 0x00001ff8, // ICON_DOOR - 0x0ff00000, 0x08100810, 0x08100810, 0x10100010, 0x4f902010, 0x10102010, 0x08100010, 0x00000ff0, // ICON_EXIT - 0x00040000, 0x001f000e, 0x0ef40004, 0x12f41284, 0x0ef41214, 0x10040004, 0x7ffc3004, 0x10003000, // ICON_MODE_2D - 0x78040000, 0x501f600e, 0x0ef44004, 0x12f41284, 0x0ef41284, 0x10140004, 0x7ffc300c, 0x10003000, // ICON_MODE_3D - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE - 0x7fe00000, 0x5ff87ff0, 0x47fe4ffc, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_TOP - 0x7fe00000, 0x50386030, 0x47c2483c, 0x443e443e, 0x443e443e, 0x241e75fe, 0x0c06140e, 0x000007fe, // ICON_CUBE_FACE_LEFT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x47fe47fe, 0x47fe47fe, 0x27fe77fe, 0x0ffe17fe, 0x000007fe, // ICON_CUBE_FACE_FRONT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x3bf27be2, 0x0bfe1bfa, 0x000007fe, // ICON_CUBE_FACE_BOTTOM - 0x7fe00000, 0x70286030, 0x7ffe7804, 0x7c227c02, 0x7c227c22, 0x3c127de2, 0x0c061c0a, 0x000007fe, // ICON_CUBE_FACE_RIGHT - 0x7fe00000, 0x6fe85ff0, 0x781e77e4, 0x7be27be2, 0x7be27be2, 0x24127be2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_BACK - 0x00000000, 0x2a0233fe, 0x22022602, 0x22022202, 0x2a022602, 0x00a033fe, 0x02080110, 0x00000000, // ICON_CAMERA - 0x00000000, 0x200c3ffc, 0x000c000c, 0x3ffc000c, 0x30003000, 0x30003000, 0x3ffc3004, 0x00000000, // ICON_SPECIAL - 0x00000000, 0x0022003e, 0x012201e2, 0x0100013e, 0x01000100, 0x79000100, 0x4f004900, 0x00007800, // ICON_LINK_NET - 0x00000000, 0x44007c00, 0x45004600, 0x00627cbe, 0x00620022, 0x45007cbe, 0x44004600, 0x00007c00, // ICON_LINK_BOXES - 0x00000000, 0x0044007c, 0x0010007c, 0x3f100010, 0x3f1021f0, 0x3f100010, 0x3f0021f0, 0x00000000, // ICON_LINK_MULTI - 0x00000000, 0x0044007c, 0x00440044, 0x0010007c, 0x00100010, 0x44107c10, 0x440047f0, 0x00007c00, // ICON_LINK - 0x00000000, 0x0044007c, 0x00440044, 0x0000007c, 0x00000010, 0x44007c10, 0x44004550, 0x00007c00, // ICON_LINK_BROKE - 0x02a00000, 0x22a43ffc, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_TEXT_NOTES - 0x3ffc0000, 0x20042004, 0x245e27c4, 0x27c42444, 0x2004201e, 0x201e2004, 0x20042004, 0x00003ffc, // ICON_NOTEBOOK - 0x00000000, 0x07e00000, 0x04200420, 0x24243ffc, 0x24242424, 0x24242424, 0x3ffc2424, 0x00000000, // ICON_SUITCASE - 0x00000000, 0x0fe00000, 0x08200820, 0x40047ffc, 0x7ffc5554, 0x40045554, 0x7ffc4004, 0x00000000, // ICON_SUITCASE_ZIP - 0x00000000, 0x20043ffc, 0x3ffc2004, 0x13c81008, 0x100813c8, 0x10081008, 0x1ff81008, 0x00000000, // ICON_MAILBOX - 0x00000000, 0x40027ffe, 0x5ffa5ffa, 0x5ffa5ffa, 0x40025ffa, 0x03c07ffe, 0x1ff81ff8, 0x00000000, // ICON_MONITOR - 0x0ff00000, 0x6bfe7ffe, 0x7ffe7ffe, 0x68167ffe, 0x08106816, 0x08100810, 0x0ff00810, 0x00000000, // ICON_PRINTER - 0x3ff80000, 0xfffe2008, 0x870a8002, 0x904a888a, 0x904a904a, 0x870a888a, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA - 0x0fc00000, 0xfcfe0cd8, 0x8002fffe, 0x84428382, 0x84428442, 0x80028382, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA_FLASH - 0x00000000, 0x02400180, 0x08100420, 0x20041008, 0x23c42004, 0x22442244, 0x3ffc2244, 0x00000000, // ICON_HOUSE - 0x00000000, 0x1c700000, 0x3ff83ef8, 0x3ff83ff8, 0x0fe01ff0, 0x038007c0, 0x00000100, 0x00000000, // ICON_HEART - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0xe000c000, // ICON_CORNER - 0x00000000, 0x14001c00, 0x15c01400, 0x15401540, 0x155c1540, 0x15541554, 0x1ddc1554, 0x00000000, // ICON_VERTICAL_BARS - 0x00000000, 0x03000300, 0x1b001b00, 0x1b601b60, 0x1b6c1b60, 0x1b6c1b6c, 0x1b6c1b6c, 0x00000000, // ICON_VERTICAL_BARS_FILL - 0x00000000, 0x00000000, 0x403e7ffe, 0x7ffe403e, 0x7ffe0000, 0x43fe43fe, 0x00007ffe, 0x00000000, // ICON_LIFE_BARS - 0x7ffc0000, 0x43844004, 0x43844284, 0x43844004, 0x42844284, 0x42844284, 0x40044384, 0x00007ffc, // ICON_INFO - 0x40008000, 0x10002000, 0x04000800, 0x01000200, 0x00400080, 0x00100020, 0x00040008, 0x00010002, // ICON_CROSSLINE - 0x00000000, 0x1ff01ff0, 0x18301830, 0x1f001830, 0x03001f00, 0x00000300, 0x03000300, 0x00000000, // ICON_HELP - 0x3ff00000, 0x2abc3550, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x00003ffc, // ICON_FILETYPE_ALPHA - 0x3ff00000, 0x201c2010, 0x22442184, 0x28142424, 0x29942814, 0x2ff42994, 0x20042004, 0x00003ffc, // ICON_FILETYPE_HOME - 0x07fe0000, 0x04020402, 0x7fe20402, 0x44224422, 0x44224422, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS_VISIBLE - 0x07fe0000, 0x04020402, 0x7c020402, 0x44024402, 0x44024402, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS - 0x00000000, 0x40027ffe, 0x7ffe4002, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_WINDOW - 0x09100000, 0x09f00910, 0x09100910, 0x00000910, 0x24a2779e, 0x27a224a2, 0x709e20a2, 0x00000000, // ICON_HIDPI - 0x3ff00000, 0x201c2010, 0x2a842e84, 0x2e842a84, 0x2ba42004, 0x2aa42aa4, 0x20042ba4, 0x00003ffc, // ICON_FILETYPE_BINARY - 0x00000000, 0x00000000, 0x00120012, 0x4a5e4bd2, 0x485233d2, 0x00004bd2, 0x00000000, 0x00000000, // ICON_HEX - 0x01800000, 0x381c0660, 0x23c42004, 0x23c42044, 0x13c82204, 0x08101008, 0x02400420, 0x00000180, // ICON_SHIELD - 0x007e0000, 0x20023fc2, 0x40227fe2, 0x400a403a, 0x400a400a, 0x400a400a, 0x4008400e, 0x00007ff8, // ICON_FILE_NEW - 0x00000000, 0x0042007e, 0x40027fc2, 0x44024002, 0x5f024402, 0x44024402, 0x7ffe4002, 0x00000000, // ICON_FOLDER_ADD - 0x44220000, 0x12482244, 0xf3cf0000, 0x14280420, 0x48122424, 0x08100810, 0x1ff81008, 0x03c00420, // ICON_ALARM - 0x0aa00000, 0x1ff80aa0, 0x1068700e, 0x1008706e, 0x1008700e, 0x1008700e, 0x0aa01ff8, 0x00000aa0, // ICON_CPU - 0x07e00000, 0x04201db8, 0x04a01c38, 0x04a01d38, 0x04a01d38, 0x04a01d38, 0x04201d38, 0x000007e0, // ICON_ROM - 0x00000000, 0x03c00000, 0x3c382ff0, 0x3c04380c, 0x01800000, 0x03c003c0, 0x00000180, 0x00000000, // ICON_STEP_OVER - 0x01800000, 0x01800180, 0x01800180, 0x03c007e0, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_INTO - 0x01800000, 0x07e003c0, 0x01800180, 0x01800180, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_OUT - 0x00000000, 0x0ff003c0, 0x181c1c34, 0x303c301c, 0x30003000, 0x1c301800, 0x03c00ff0, 0x00000000, // ICON_RESTART - 0x00000000, 0x00000000, 0x07e003c0, 0x0ff00ff0, 0x0ff00ff0, 0x03c007e0, 0x00000000, 0x00000000, // ICON_BREAKPOINT_ON - 0x00000000, 0x00000000, 0x042003c0, 0x08100810, 0x08100810, 0x03c00420, 0x00000000, 0x00000000, // ICON_BREAKPOINT_OFF - 0x00000000, 0x00000000, 0x1ff81ff8, 0x1ff80000, 0x00001ff8, 0x1ff81ff8, 0x00000000, 0x00000000, // ICON_BURGER_MENU - 0x00000000, 0x00000000, 0x00880070, 0x0c880088, 0x1e8810f8, 0x3e881288, 0x00000000, 0x00000000, // ICON_CASE_SENSITIVE - 0x00000000, 0x02000000, 0x07000a80, 0x07001fc0, 0x02000a80, 0x00300030, 0x00000000, 0x00000000, // ICON_REG_EXP - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_FOLDER - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x00003ffc, // ICON_FILE - 0x1ff00000, 0x20082008, 0x17d02fe8, 0x05400ba0, 0x09200540, 0x23881010, 0x2fe827c8, 0x00001ff0, // ICON_SAND_TIMER - 0x01800000, 0x02400240, 0x05a00420, 0x09900990, 0x11881188, 0x21842004, 0x40024182, 0x00003ffc, // ICON_WARNING - 0x7ffe0000, 0x4ff24002, 0x4c324ff2, 0x4f824c02, 0x41824f82, 0x41824002, 0x40024182, 0x00007ffe, // ICON_HELP_BOX - 0x7ffe0000, 0x41824002, 0x40024182, 0x41824182, 0x41824182, 0x41824182, 0x40024182, 0x00007ffe, // ICON_INFO_BOX - 0x01800000, 0x04200240, 0x10080810, 0x7bde2004, 0x0a500a50, 0x08500bd0, 0x08100850, 0x00000ff0, // ICON_PRIORITY - 0x01800000, 0x18180660, 0x80016006, 0x98196006, 0x99996666, 0x19986666, 0x01800660, 0x00000000, // ICON_LAYERS_ISO - 0x07fe0000, 0x1c020402, 0x74021402, 0x54025402, 0x54025402, 0x500857fe, 0x40205ff8, 0x00007fe0, // ICON_LAYERS2 - 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x422a422a, 0x422e422a, 0x40384e28, 0x00007fe0, // ICON_MLAYERS - 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x5b2a512a, 0x512e552a, 0x40385128, 0x00007fe0, // ICON_MAPS - 0x04200000, 0x1cf00c60, 0x11f019f0, 0x0f3807b8, 0x1e3c0f3c, 0x1c1c1e1c, 0x1e3c1c1c, 0x00000f70, // ICON_HOT - 0x00000000, 0x20803f00, 0x2a202e40, 0x20082e10, 0x08021004, 0x02040402, 0x00900108, 0x00000060, // ICON_LABEL - 0x00000000, 0x042007e0, 0x47e27c3e, 0x4ffa4002, 0x47fa4002, 0x4ffa4002, 0x7ffe4002, 0x00000000, // ICON_NAME_ID - 0x7fe00000, 0x402e4020, 0x43ce5e0a, 0x40504078, 0x438e4078, 0x402e5e0a, 0x7fe04020, 0x00000000, // ICON_SLICING - 0x00000000, 0x40027ffe, 0x47c24002, 0x55425d42, 0x55725542, 0x50125552, 0x10105016, 0x00001ff0, // ICON_MANUAL_CONTROL - 0x7ffe0000, 0x43c24002, 0x48124422, 0x500a500a, 0x500a500a, 0x44224812, 0x400243c2, 0x00007ffe, // ICON_COLLISION - 0x03c00000, 0x10080c30, 0x21842184, 0x4ff24182, 0x41824ff2, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_ADD - 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x700e7e7e, 0x7e7e700e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_ADD_FILL - 0x03c00000, 0x10080c30, 0x21842184, 0x41824182, 0x40024182, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_WARNING - 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x7e7e7e7e, 0x7ffe7e7e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_WARNING_FILL - 0x00000000, 0x10041ffc, 0x10841004, 0x13e41084, 0x10841084, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MORE - 0x00000000, 0x1ffc1ffc, 0x1f7c1ffc, 0x1c1c1f7c, 0x1f7c1f7c, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MORE_FILL - 0x00000000, 0x1ffc1ffc, 0x1ffc1ffc, 0x1c1c1ffc, 0x1ffc1ffc, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS - 0x00000000, 0x10041ffc, 0x10041004, 0x13e41004, 0x10041004, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS_FILL - 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x55766eba, 0x55766eaa, 0x55606ffe, 0x55606aa0, 0x00007fe0, // ICON_UNION - 0x07fe0000, 0x04020402, 0x7fe20402, 0x456246a2, 0x456246a2, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_INTERSECTION - 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x4436442a, 0x4436442a, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_DIFFERENCE - 0x03c00000, 0x10080c30, 0x20042004, 0x60064002, 0x47e2581a, 0x20042004, 0x0c301008, 0x000003c0, // ICON_SPHERE - 0x03e00000, 0x08080410, 0x0c180808, 0x08080be8, 0x08080808, 0x08080808, 0x04100808, 0x000003e0, // ICON_CYLINDER - 0x00800000, 0x01400140, 0x02200220, 0x04100410, 0x08080808, 0x1c1c13e4, 0x08081004, 0x000007f0, // ICON_CONE - 0x00000000, 0x07e00000, 0x20841918, 0x40824082, 0x40824082, 0x19182084, 0x000007e0, 0x00000000, // ICON_ELLIPSOID - 0x00000000, 0x00000000, 0x20041ff8, 0x40024002, 0x40024002, 0x1ff82004, 0x00000000, 0x00000000, // ICON_CAPSULE - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_250 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_251 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_252 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_253 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_254 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_255 -}; - -// NOTE: A pointer to current icons array should be defined -static unsigned int *guiIconsPtr = guiIcons; - -#endif // !RAYGUI_NO_ICONS && !RAYGUI_CUSTOM_ICONS - -#ifndef RAYGUI_ICON_SIZE - #define RAYGUI_ICON_SIZE 0 -#endif - -// WARNING: Those values define the total size of the style data array, -// if changed, previous saved styles could become incompatible -#define RAYGUI_MAX_CONTROLS 16 // Maximum number of controls -#define RAYGUI_MAX_PROPS_BASE 16 // Maximum number of base properties -#define RAYGUI_MAX_PROPS_EXTENDED 8 // Maximum number of extended properties - -//---------------------------------------------------------------------------------- -// Module Types and Structures Definition -//---------------------------------------------------------------------------------- -// Gui control property style color element -typedef enum { BORDER = 0, BASE, TEXT, OTHER } GuiPropertyElement; - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -static GuiState guiState = STATE_NORMAL; // Gui global state, if !STATE_NORMAL, forces defined state - -static Font guiFont = { 0 }; // Gui current font (WARNING: highly coupled to raylib) -static bool guiLocked = false; // Gui lock state (no inputs processed) -static float guiAlpha = 1.0f; // Gui controls transparency - -static unsigned int guiIconScale = 1; // Gui icon default scale (if icons enabled) - -static bool guiTooltip = false; // Tooltip enabled/disabled -static const char *guiTooltipPtr = NULL; // Tooltip string pointer (string provided by user) - -static bool guiControlExclusiveMode = false; // Gui control exclusive mode (no inputs processed except current control) -static Rectangle guiControlExclusiveRec = { 0 }; // Gui control exclusive bounds rectangle, used as an unique identifier - -static int textBoxCursorIndex = 0; // Cursor index, shared by all GuiTextBox*() -//static int blinkCursorFrameCounter = 0; // Frame counter for cursor blinking -static int autoCursorCounter = 0; // Frame counter for automatic repeated cursor movement on key-down (cooldown and delay) - -//---------------------------------------------------------------------------------- -// Style data array for all gui style properties (allocated on data segment by default) -// -// NOTE 1: First set of BASE properties are generic to all controls but could be individually -// overwritten per control, first set of EXTENDED properties are generic to all controls and -// can not be overwritten individually but custom EXTENDED properties can be used by control -// -// NOTE 2: A new style set could be loaded over this array using GuiLoadStyle(), -// but default gui style could always be recovered with GuiLoadStyleDefault() -// -// guiStyle size is by default: 16*(16 + 8) = 384*4 = 1536 bytes = 1.5 KB -//---------------------------------------------------------------------------------- -static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)] = { 0 }; - -static bool guiStyleLoaded = false; // Style loaded flag for lazy style initialization - -//---------------------------------------------------------------------------------- -// Standalone Mode Functions Declaration -// -// NOTE: raygui depend on some raylib input and drawing functions -// To use raygui as standalone library, below functions must be defined by the user -//---------------------------------------------------------------------------------- -#if defined(RAYGUI_STANDALONE) - -#define KEY_RIGHT 262 -#define KEY_LEFT 263 -#define KEY_DOWN 264 -#define KEY_UP 265 -#define KEY_BACKSPACE 259 -#define KEY_ENTER 257 - -#define MOUSE_LEFT_BUTTON 0 - -// Input required functions -//------------------------------------------------------------------------------- -static Vector2 GetMousePosition(void); -static float GetMouseWheelMove(void); -static bool IsMouseButtonDown(int button); -static bool IsMouseButtonPressed(int button); -static bool IsMouseButtonReleased(int button); - -static bool IsKeyDown(int key); -static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() -//------------------------------------------------------------------------------- - -// Drawing required functions -//------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() -static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() -//------------------------------------------------------------------------------- - -// Text required functions -//------------------------------------------------------------------------------- -static Font GetFontDefault(void); // -- GuiLoadStyleDefault() -static Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle(), load font - -static Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image -static void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) - -static char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data -static void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data - -static const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs - -static int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list -static void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list - -static unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() -//------------------------------------------------------------------------------- - -// raylib functions already implemented in raygui -//------------------------------------------------------------------------------- -static Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value -static int ColorToInt(Color color); // Returns hexadecimal value for a Color -static bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle -static const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed' -static char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings -static int TextToInteger(const char *text); // Get integer value from text -static float TextToFloat(const char *text); // Get float value from text - -static int GetCodepointNext(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded text -static const char *CodepointToUTF8(int codepoint, int *byteSize); // Encode codepoint into UTF-8 text (char array size returned as parameter) - -static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2); // Draw rectangle vertical gradient -//------------------------------------------------------------------------------- - -#endif // RAYGUI_STANDALONE - -//---------------------------------------------------------------------------------- -// Module Internal Functions Declaration -//---------------------------------------------------------------------------------- -static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize); // Load style from memory (binary only) - -static Rectangle GetTextBounds(int control, Rectangle bounds); // Get text bounds considering control bounds -static const char *GetTextIcon(const char *text, int *iconId); // Get text icon if provided and move text cursor - -static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint); // Gui draw text using default font -static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color); // Gui draw rectangle using default raygui style - -static char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow); // Split controls text into multiple strings -static Vector3 ConvertHSVtoRGB(Vector3 hsv); // Convert color data from HSV to RGB -static Vector3 ConvertRGBtoHSV(Vector3 rgb); // Convert color data from RGB to HSV - -static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue); // Scroll bar control, used by GuiScrollPanel() -static void GuiTooltip(Rectangle controlRec); // Draw tooltip using control rec position - -static Color GuiFade(Color color, float alpha); // Fade color by an alpha factor - -//---------------------------------------------------------------------------------- -// Gui Setup Functions Definition -//---------------------------------------------------------------------------------- -// Enable gui global state -// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups -void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } - -// Disable gui global state -// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups -void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } - -// Lock gui global state -void GuiLock(void) { guiLocked = true; } - -// Unlock gui global state -void GuiUnlock(void) { guiLocked = false; } - -// Check if gui is locked (global state) -bool GuiIsLocked(void) { return guiLocked; } - -// Set gui controls alpha global state -void GuiSetAlpha(float alpha) -{ - if (alpha < 0.0f) alpha = 0.0f; - else if (alpha > 1.0f) alpha = 1.0f; - - guiAlpha = alpha; -} - -// Set gui state (global state) -void GuiSetState(int state) { guiState = (GuiState)state; } - -// Get gui state (global state) -int GuiGetState(void) { return guiState; } - -// Set custom gui font -// NOTE: Font loading/unloading is external to raygui -void GuiSetFont(Font font) -{ - if (font.texture.id > 0) - { - // NOTE: If a font is tried to be set but default style has not been lazily loaded first, - // it will be overwritten, so default style loading needs to be forced first - if (!guiStyleLoaded) GuiLoadStyleDefault(); - - guiFont = font; - } -} - -// Get custom gui font -Font GuiGetFont(void) -{ - return guiFont; -} - -// Set control style property value -void GuiSetStyle(int control, int property, int value) -{ - if (!guiStyleLoaded) GuiLoadStyleDefault(); - guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; - - // Default properties are propagated to all controls - if ((control == 0) && (property < RAYGUI_MAX_PROPS_BASE)) - { - for (int i = 1; i < RAYGUI_MAX_CONTROLS; i++) guiStyle[i*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; - } -} - -// Get control style property value -int GuiGetStyle(int control, int property) -{ - if (!guiStyleLoaded) GuiLoadStyleDefault(); - return guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property]; -} - -//---------------------------------------------------------------------------------- -// Gui Controls Functions Definition -//---------------------------------------------------------------------------------- - -// Window Box control -int GuiWindowBox(Rectangle bounds, const char *title) -{ - // Window title bar height (including borders) - // NOTE: This define is also used by GuiMessageBox() and GuiTextInputBox() - #if !defined(RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT) - #define RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT 24 - #endif - - #if !defined(RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT) - #define RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT 18 - #endif - - int result = 0; - //GuiState state = guiState; - - int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; - int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); - - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; - if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; - - const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, - statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; - - // Update control - //-------------------------------------------------------------------- - // NOTE: Logic is directly managed by button - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiPanel(windowPanel, NULL); // Draw window base - GuiStatusBar(statusBar, title); // Draw window header as status bar - - // Draw window close button - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); -#if defined(RAYGUI_NO_ICONS) - result = GuiButton(closeButtonRec, "x"); -#else - result = GuiButton(closeButtonRec, GuiIconText(ICON_CROSS_SMALL, NULL)); -#endif - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); - //-------------------------------------------------------------------- - - return result; // Window close button clicked: result = 1 -} - -// Group Box control with text name -int GuiGroupBox(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_GROUPBOX_LINE_THICK) - #define RAYGUI_GROUPBOX_LINE_THICK 1 - #endif - - int result = 0; - GuiState state = guiState; - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, RAYGUI_GROUPBOX_LINE_THICK }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - 1, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - - GuiLine(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y - GuiGetStyle(DEFAULT, TEXT_SIZE)/2, bounds.width, (float)GuiGetStyle(DEFAULT, TEXT_SIZE) }, text); - //-------------------------------------------------------------------- - - return result; -} - -// Line control -int GuiLine(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_LINE_MARGIN_TEXT) - #define RAYGUI_LINE_MARGIN_TEXT 12 - #endif - #if !defined(RAYGUI_LINE_TEXT_PADDING) - #define RAYGUI_LINE_TEXT_PADDING 4 - #endif - - int result = 0; - GuiState state = guiState; - - Color color = GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)); - - // Draw control - //-------------------------------------------------------------------- - if (text == NULL) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, bounds.width, 1 }, 0, BLANK, color); - else - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = bounds.height; - textBounds.x = bounds.x + RAYGUI_LINE_MARGIN_TEXT; - textBounds.y = bounds.y; - - // Draw line with embedded text label: "--- text --------------" - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); - GuiDrawText(text, textBounds, TEXT_ALIGN_LEFT, color); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + 12 + textBounds.width + 4, bounds.y + bounds.height/2, bounds.width - textBounds.width - RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); - } - //-------------------------------------------------------------------- - - return result; -} - -// Panel control -int GuiPanel(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_PANEL_BORDER_WIDTH) - #define RAYGUI_PANEL_BORDER_WIDTH 1 - #endif - - int result = 0; - GuiState state = guiState; - - // Text will be drawn as a header bar (if provided) - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; - if ((text != NULL) && (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f)) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; - - if (text != NULL) - { - // Move panel bounds after the header bar - bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - } - - // Draw control - //-------------------------------------------------------------------- - if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar - - GuiDrawRectangle(bounds, RAYGUI_PANEL_BORDER_WIDTH, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)), - GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BASE_COLOR_DISABLED : (int)BACKGROUND_COLOR))); - //-------------------------------------------------------------------- - - return result; -} - -// Tab Bar control -// NOTE: Using GuiToggle() for the TABS -int GuiTabBar(Rectangle bounds, char **text, int count, int *active) -{ - #define RAYGUI_TABBAR_ITEM_WIDTH 148 - - int result = -1; - //GuiState state = guiState; - - Rectangle tabBounds = { bounds.x, bounds.y, RAYGUI_TABBAR_ITEM_WIDTH, bounds.height }; - - if (*active < 0) *active = 0; - else if (*active > count - 1) *active = count - 1; - - int offsetX = 0; // Required in case tabs go out of screen - offsetX = (*active + 2)*RAYGUI_TABBAR_ITEM_WIDTH - GetScreenWidth(); - if (offsetX < 0) offsetX = 0; - - bool toggle = false; // Required for individual toggles - - // Draw control - //-------------------------------------------------------------------- - for (int i = 0; i < count; i++) - { - tabBounds.x = bounds.x + (RAYGUI_TABBAR_ITEM_WIDTH + 4)*i - offsetX; - - if (tabBounds.x < GetScreenWidth()) - { - // Draw tabs as toggle controls - int textAlignment = GuiGetStyle(TOGGLE, TEXT_ALIGNMENT); - int textPadding = GuiGetStyle(TOGGLE, TEXT_PADDING); - GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(TOGGLE, TEXT_PADDING, 8); - - if (i == (*active)) - { - toggle = true; - GuiToggle(tabBounds, text[i], &toggle); - } - else - { - toggle = false; - GuiToggle(tabBounds, text[i], &toggle); - if (toggle) *active = i; - } - - // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; - - GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); - GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); - - // Draw tab close button - // NOTE: Only draw close button for current tab: if (CheckCollisionPointRec(mousePosition, tabBounds)) - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); -#if defined(RAYGUI_NO_ICONS) - if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, "x")) result = i; -#else - if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, GuiIconText(ICON_CROSS_SMALL, NULL))) result = i; -#endif - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); - } - } - - // Draw tab-bar bottom line - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, 1 }, 0, BLANK, GetColor(GuiGetStyle(TOGGLE, BORDER_COLOR_NORMAL))); - //-------------------------------------------------------------------- - - return result; // Return as result the current TAB closing requested -} - -// Scroll Panel control -int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view) -{ - #define RAYGUI_MIN_SCROLLBAR_WIDTH 40 - #define RAYGUI_MIN_SCROLLBAR_HEIGHT 40 - #define RAYGUI_MIN_MOUSE_WHEEL_SPEED 20 - - int result = 0; - GuiState state = guiState; - - Rectangle temp = { 0 }; - if (view == NULL) view = &temp; - - Vector2 scrollPos = { 0.0f, 0.0f }; - if (scroll != NULL) scrollPos = *scroll; - - // Text will be drawn as a header bar (if provided) - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; - if (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; - - if (text != NULL) - { - // Move panel bounds after the header bar - bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + 1; - } - - bool hasHorizontalScrollBar = (content.width > bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; - bool hasVerticalScrollBar = (content.height > bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; - - // Recheck to account for the other scrollbar being visible - if (!hasHorizontalScrollBar) hasHorizontalScrollBar = (hasVerticalScrollBar && (content.width > (bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; - if (!hasVerticalScrollBar) hasVerticalScrollBar = (hasHorizontalScrollBar && (content.height > (bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; - - int horizontalScrollBarWidth = hasHorizontalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; - int verticalScrollBarWidth = hasVerticalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; - Rectangle horizontalScrollBar = { - (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + verticalScrollBarWidth : (float)bounds.x) + GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)bounds.y + bounds.height - horizontalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)bounds.width - verticalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)horizontalScrollBarWidth - }; - Rectangle verticalScrollBar = { - (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)bounds.x + bounds.width - verticalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH)), - (float)bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)verticalScrollBarWidth, - (float)bounds.height - horizontalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - }; - - // Make sure scroll bars have a minimum width/height - if (horizontalScrollBar.width < RAYGUI_MIN_SCROLLBAR_WIDTH) horizontalScrollBar.width = RAYGUI_MIN_SCROLLBAR_WIDTH; - if (verticalScrollBar.height < RAYGUI_MIN_SCROLLBAR_HEIGHT) verticalScrollBar.height = RAYGUI_MIN_SCROLLBAR_HEIGHT; - - // Calculate view area (area without the scrollbars) - *view = (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? - RAYGUI_CLITERAL(Rectangle){ bounds.x + verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth } : - RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth }; - - // Clip view area to the actual content size - if (view->width > content.width) view->width = content.width; - if (view->height > content.height) view->height = content.height; - - float horizontalMin = hasHorizontalScrollBar? ((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH); - float horizontalMax = hasHorizontalScrollBar? content.width - bounds.width + (float)verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH) - (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)verticalScrollBarWidth : 0) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); - float verticalMin = hasVerticalScrollBar? 0.0f : -1.0f; - float verticalMax = hasVerticalScrollBar? content.height - bounds.height + (float)horizontalScrollBarWidth + (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - -#if defined(SUPPORT_SCROLLBAR_KEY_INPUT) - if (hasHorizontalScrollBar) - { - if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - } - - if (hasVerticalScrollBar) - { - if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - } -#endif - float scrollDelta = GUI_SCROLL_DELTA; - - // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - - // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; - else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll - } - } - - // Normalize scroll values - if (scrollPos.x > -horizontalMin) scrollPos.x = -horizontalMin; - if (scrollPos.x < -horizontalMax) scrollPos.x = -horizontalMax; - if (scrollPos.y > -verticalMin) scrollPos.y = -verticalMin; - if (scrollPos.y < -verticalMax) scrollPos.y = -verticalMax; - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar - - GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background - - // Save size of the scrollbar slider - const int slider = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); - - // Draw horizontal scrollbar if visible - if (hasHorizontalScrollBar) - { - // Change scrollbar slider size to show the diff in size between the content width and the widget width - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth)/(int)content.width)*((int)bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth))); - scrollPos.x = (float)-GuiScrollBar(horizontalScrollBar, (int)-scrollPos.x, (int)horizontalMin, (int)horizontalMax); - } - else scrollPos.x = 0.0f; - - // Draw vertical scrollbar if visible - if (hasVerticalScrollBar) - { - // Change scrollbar slider size to show the diff in size between the content height and the widget height - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth)/(int)content.height)*((int)bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth))); - scrollPos.y = (float)-GuiScrollBar(verticalScrollBar, (int)-scrollPos.y, (int)verticalMin, (int)verticalMax); - } - else scrollPos.y = 0.0f; - - // Draw detail corner rectangle if both scroll bars are visible - if (hasHorizontalScrollBar && hasVerticalScrollBar) - { - Rectangle corner = { (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) + 2) : (horizontalScrollBar.x + horizontalScrollBar.width + 2), verticalScrollBar.y + verticalScrollBar.height + 2, (float)horizontalScrollBarWidth - 4, (float)verticalScrollBarWidth - 4 }; - GuiDrawRectangle(corner, 0, BLANK, GetColor(GuiGetStyle(LISTVIEW, TEXT + (state*3)))); - } - - // Draw scrollbar lines depending on current state - GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + (state*3))), BLANK); - - // Set scrollbar slider size back to the way it was before - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, slider); - //-------------------------------------------------------------------- - - if (scroll != NULL) *scroll = scrollPos; - - return result; -} - -// Label control -int GuiLabel(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - //... - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Button control, returns true when clicked -int GuiButton(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) result = 1; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(BUTTON, BORDER_WIDTH), GetColor(GuiGetStyle(BUTTON, BORDER + (state*3))), GetColor(GuiGetStyle(BUTTON, BASE + (state*3)))); - GuiDrawText(text, GetTextBounds(BUTTON, bounds), GuiGetStyle(BUTTON, TEXT_ALIGNMENT), GetColor(GuiGetStyle(BUTTON, TEXT + (state*3)))); - - if (state == STATE_FOCUSED) GuiTooltip(bounds); - //------------------------------------------------------------------ - - return result; // Button pressed: result = 1 -} - -// Label button control -int GuiLabelButton(Rectangle bounds, const char *text) -{ - GuiState state = guiState; - bool pressed = false; - - // NOTE: Force bounds.width to be all text - float textWidth = (float)GuiGetTextWidth(text); - if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check checkbox state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) pressed = true; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return pressed; -} - -// Toggle Button control -int GuiToggle(Rectangle bounds, const char *text, bool *active) -{ - int result = 0; - GuiState state = guiState; - - bool temp = false; - if (active == NULL) active = &temp; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check toggle button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else if (GUI_BUTTON_RELEASED) - { - state = STATE_NORMAL; - *active = !(*active); - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_NORMAL) - { - GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, ((*active)? BORDER_COLOR_PRESSED : (BORDER + state*3)))), GetColor(GuiGetStyle(TOGGLE, ((*active)? BASE_COLOR_PRESSED : (BASE + state*3))))); - GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, ((*active)? TEXT_COLOR_PRESSED : (TEXT + state*3))))); - } - else - { - GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + state*3)), GetColor(GuiGetStyle(TOGGLE, BASE + state*3))); - GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, TEXT + state*3))); - } - - if (state == STATE_FOCUSED) GuiTooltip(bounds); - //-------------------------------------------------------------------- - - return result; -} - -// Toggle Group control -int GuiToggleGroup(Rectangle bounds, const char *text, int *active) -{ - #if !defined(RAYGUI_TOGGLEGROUP_MAX_ITEMS) - #define RAYGUI_TOGGLEGROUP_MAX_ITEMS 32 - #endif - - int result = 0; - float initBoundsX = bounds.x; - - int temp = 0; - if (active == NULL) active = &temp; - - bool toggle = false; // Required for individual toggles - - // Get substrings items from text (items pointers) - int rows[RAYGUI_TOGGLEGROUP_MAX_ITEMS] = { 0 }; - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, rows); - - int prevRow = rows[0]; - - for (int i = 0; i < itemCount; i++) - { - if (prevRow != rows[i]) - { - bounds.x = initBoundsX; - bounds.y += (bounds.height + GuiGetStyle(TOGGLE, GROUP_PADDING)); - prevRow = rows[i]; - } - - if (i == (*active)) - { - toggle = true; - GuiToggle(bounds, items[i], &toggle); - } - else - { - toggle = false; - GuiToggle(bounds, items[i], &toggle); - if (toggle) *active = i; - } - - bounds.x += (bounds.width + GuiGetStyle(TOGGLE, GROUP_PADDING)); - } - - return result; -} - -// Toggle Slider control extended -int GuiToggleSlider(Rectangle bounds, const char *text, int *active) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - //bool toggle = false; // Required for individual toggles - - // Get substrings items from text (items pointers) - int itemCount = 0; - char **items = NULL; - - if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); - - Rectangle slider = { - 0, // Calculated later depending on the active toggle - bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - (bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - (itemCount + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING))/itemCount, - bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else if (GUI_BUTTON_RELEASED) - { - state = STATE_PRESSED; - (*active)++; - result = 1; - } - else state = STATE_FOCUSED; - } - - if ((*active) && (state != STATE_FOCUSED)) state = STATE_PRESSED; - } - - if (*active >= itemCount) *active = 0; - slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH) + (*active + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING) + (*active)*slider.width; - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + (state*3))), - GetColor(GuiGetStyle(TOGGLE, BASE_COLOR_NORMAL))); - - // Draw internal slider - if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_FOCUSED))); - else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - - // Draw text in slider - if (text != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(text); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = slider.x + slider.width/2 - textBounds.width/2; - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(items[*active], textBounds, GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(TOGGLE, TEXT + (state*3))), guiAlpha)); - } - //-------------------------------------------------------------------- - - return result; -} - -// Check Box control, returns 1 when state changed -int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) -{ - int result = 0; - GuiState state = guiState; - - bool temp = false; - if (checked == NULL) checked = &temp; - - Rectangle textBounds = { 0 }; - - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(CHECKBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - Rectangle totalBounds = { - (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, - bounds.y, - bounds.width + textBounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING), - bounds.height, - }; - - // Check checkbox state - if (CheckCollisionPointRec(mousePoint, totalBounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) - { - *checked = !(*checked); - result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(CHECKBOX, BORDER_WIDTH), GetColor(GuiGetStyle(CHECKBOX, BORDER + (state*3))), BLANK); - - if (*checked) - { - Rectangle check = { bounds.x + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), - bounds.y + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), - bounds.width - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)), - bounds.height - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)) }; - GuiDrawRectangle(check, 0, BLANK, GetColor(GuiGetStyle(CHECKBOX, TEXT + state*3))); - } - - GuiDrawText(text, textBounds, (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Combo Box control -int GuiComboBox(Rectangle bounds, const char *text, int *active) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - bounds.width -= (GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH) + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING)); - - Rectangle selector = { (float)bounds.x + bounds.width + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING), - (float)bounds.y, (float)GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH), (float)bounds.height }; - - // Get substrings items from text (items pointers, lengths and count) - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, NULL); - - if (*active < 0) *active = 0; - else if (*active > (itemCount - 1)) *active = itemCount - 1; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (CheckCollisionPointRec(mousePoint, bounds) || - CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_PRESSED) - { - *active += 1; - if (*active >= itemCount) *active = 0; // Cyclic combobox - } - - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - // Draw combo box main - GuiDrawRectangle(bounds, GuiGetStyle(COMBOBOX, BORDER_WIDTH), GetColor(GuiGetStyle(COMBOBOX, BORDER + (state*3))), GetColor(GuiGetStyle(COMBOBOX, BASE + (state*3)))); - GuiDrawText(items[*active], GetTextBounds(COMBOBOX, bounds), GuiGetStyle(COMBOBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(COMBOBOX, TEXT + (state*3)))); - - // Draw selector using a custom button - // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - GuiButton(selector, TextFormat("%i/%i", *active + 1, itemCount)); - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - //-------------------------------------------------------------------- - - return result; -} - -// Dropdown Box control -// NOTE: Returns mouse click -int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - int itemSelected = *active; - int itemFocused = -1; - - int direction = 0; // Dropdown box open direction: down (default) - if (GuiGetStyle(DROPDOWNBOX, DROPDOWN_ROLL_UP) == 1) direction = 1; // Up - - // Get substrings items from text (items pointers, lengths and count) - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, NULL); - - Rectangle boundsOpen = bounds; - boundsOpen.height = (itemCount + 1)*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - if (direction == 1) boundsOpen.y -= itemCount*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)) + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING); - - Rectangle itemBounds = bounds; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (editMode) - { - state = STATE_PRESSED; - - // Check if mouse has been pressed or released outside limits - if (!CheckCollisionPointRec(mousePoint, boundsOpen)) - { - if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; - } - - // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; - - // Check focused and selected item - for (int i = 0; i < itemCount; i++) - { - // Update item rectangle y position for next item - if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - - if (CheckCollisionPointRec(mousePoint, itemBounds)) - { - itemFocused = i; - if (GUI_BUTTON_RELEASED) - { - itemSelected = i; - result = 1; // Item selected - } - break; - } - } - - itemBounds = bounds; - } - else - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_PRESSED) - { - result = 1; - state = STATE_PRESSED; - } - else state = STATE_FOCUSED; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (editMode) GuiPanel(boundsOpen, NULL); - - GuiDrawRectangle(bounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER + state*3)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE + state*3))); - GuiDrawText(items[itemSelected], GetTextBounds(DROPDOWNBOX, bounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + state*3))); - - if (editMode) - { - // Draw visible items - for (int i = 0; i < itemCount; i++) - { - // Update item rectangle y position for next item - if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - - if (i == itemSelected) - { - GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_PRESSED))); - GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_PRESSED))); - } - else if (i == itemFocused) - { - GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_FOCUSED))); - GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_FOCUSED))); - } - else GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_NORMAL))); - } - } - - if (!GuiGetStyle(DROPDOWNBOX, DROPDOWN_ARROW_HIDDEN)) - { - // Draw arrows (using icon if available) -#if defined(RAYGUI_NO_ICONS) - GuiDrawText("v", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 2, 10, 10 }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); -#else - GuiDrawText(direction? "#121#" : "#120#", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 6, 10, 10 }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); // ICON_ARROW_DOWN_FILL -#endif - } - //-------------------------------------------------------------------- - - *active = itemSelected; - - // TODO: Use result to return more internal states: mouse-press out-of-bounds, mouse-press over selected-item... - return result; // Mouse click: result = 1 -} - -// Text Box control -// NOTE: Returns true on ENTER pressed (useful for data validation) -int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) -{ - #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) - #define RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN 20 // Frames to wait for autocursor movement - #endif - #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) - #define RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY 1 // Frames delay for autocursor movement - #endif - - int result = 0; - GuiState state = guiState; - - bool multiline = false; // TODO: Consider multiline text input - int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); - - Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); - int textLength = (text != NULL)? (int)strlen(text) : 0; // Get current text length - int thisCursorIndex = textBoxCursorIndex; - if (thisCursorIndex > textLength) thisCursorIndex = textLength; - int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box - - // Cursor rectangle - // NOTE: Position X value should be updated - Rectangle cursor = { - textBounds.x + textWidth + GuiGetStyle(DEFAULT, TEXT_SPACING), - textBounds.y + textBounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE), - 2, - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)*2 - }; - - if (cursor.height >= bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; - if (cursor.y < (bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH))) cursor.y = bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH); - - // Mouse cursor rectangle - // NOTE: Initialized outside of screen - Rectangle mouseCursor = cursor; - mouseCursor.x = -1; - mouseCursor.width = 1; - - // Blink-cursor frame counter - //if (!autoCursorMode) blinkCursorFrameCounter++; - //else blinkCursorFrameCounter = 0; - - // Update control - //-------------------------------------------------------------------- - // WARNING: Text editing is only supported under certain conditions: - if ((state != STATE_DISABLED) && // Control not disabled - !GuiGetStyle(TEXTBOX, TEXT_READONLY) && // TextBox not on read-only mode - !guiLocked && // Gui not locked - !guiControlExclusiveMode && // No gui slider on dragging - (wrapMode == TEXT_WRAP_NONE)) // No wrap mode - { - Vector2 mousePosition = GUI_POINTER_POSITION; - - if (editMode) - { - // GLOBAL: Auto-cursor movement logic - // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; - else autoCursorCounter = 0; - - bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); - - state = STATE_PRESSED; - - if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; - - // If text does not fit in the textbox and current cursor position is out of bounds, - // adding an index offset to text for drawing only what requires depending on cursor - while (textWidth >= textBounds.width) - { - int nextCodepointSize = 0; - GetCodepointNext(text + textIndexOffset, &nextCodepointSize); - - textIndexOffset += nextCodepointSize; - - textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); - } - - int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint - if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; - - // Encode codepoint as UTF-8 - int codepointSize = 0; - const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); - - // Handle text paste action - if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - const char *pasteText = GetClipboardText(); - if (pasteText != NULL) - { - int pasteLength = 0; - int pasteCodepoint; - int pasteCodepointSize; - - // Count how many codepoints to copy, stopping at the first unwanted control character - while (true) - { - pasteCodepoint = GetCodepointNext(pasteText + pasteLength, &pasteCodepointSize); - if (textLength + pasteLength + pasteCodepointSize >= textSize) break; - if (!(multiline && (pasteCodepoint == (int)'\n')) && !(pasteCodepoint >= 32)) break; - pasteLength += pasteCodepointSize; - } - - if (pasteLength > 0) - { - // Move forward data from cursor position - for (int i = textLength + pasteLength; i > textBoxCursorIndex; i--) text[i] = text[i - pasteLength]; - - // Paste data in at cursor - for (int i = 0; i < pasteLength; i++) text[textBoxCursorIndex + i] = pasteText[i]; - - textBoxCursorIndex += pasteLength; - textLength += pasteLength; - text[textLength] = '\0'; - } - } - } - else if (((multiline && (codepoint == (int)'\n')) || (codepoint >= 32)) && ((textLength + codepointSize) < textSize)) - { - // Adding codepoint to text, at current cursor position - - // Move forward data from cursor position - for (int i = (textLength + codepointSize); i > textBoxCursorIndex; i--) text[i] = text[i - codepointSize]; - - // Add new codepoint in current cursor position - for (int i = 0; i < codepointSize; i++) text[textBoxCursorIndex + i] = charEncoded[i]; - - textBoxCursorIndex += codepointSize; - textLength += codepointSize; - - // Make sure text last character is EOL - text[textLength] = '\0'; - } - - // Move cursor to start - if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; - - // Move cursor to end - if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; - - // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - int accCodepointSize = 0; - int nextCodepointSize; - int nextCodepoint; - - // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - bool puctuation = ispunct(nextCodepoint & 0xff); - while (offset < textLength) - { - if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) - break; - offset += nextCodepointSize; - accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Check whitespace to delete (ASCII only) - while (offset < textLength) - { - if (!isspace(nextCodepoint & 0xff)) break; - - offset += nextCodepointSize; - accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Move text after cursor forward (including final null terminator) - for (int i = offset; i <= textLength; i++) text[i - accCodepointSize] = text[i]; - - textLength -= accCodepointSize; - } - - else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) - { - // Delete single codepoint from text, after current cursor position - - int nextCodepointSize = 0; - GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex + nextCodepointSize; i <= textLength; i++) text[i - nextCodepointSize] = text[i]; - - textLength -= nextCodepointSize; - } - - // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - int accCodepointSize = 0; - int prevCodepointSize = 0; - int prevCodepoint = 0; - - // Check whitespace to delete (ASCII only) - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if (!isspace(prevCodepoint & 0xff)) break; - - offset -= prevCodepointSize; - accCodepointSize += prevCodepointSize; - } - - // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - bool puctuation = ispunct(prevCodepoint & 0xff); - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; - - offset -= prevCodepointSize; - accCodepointSize += prevCodepointSize; - } - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - accCodepointSize] = text[i]; - - textLength -= accCodepointSize; - textBoxCursorIndex -= accCodepointSize; - } - - else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) - { - // Delete single codepoint from text, before current cursor position - - int prevCodepointSize = 0; - - GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - prevCodepointSize] = text[i]; - - textLength -= prevCodepointSize; - textBoxCursorIndex -= prevCodepointSize; - } - - // Move cursor position with keys - if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - //int accCodepointSize = 0; - int prevCodepointSize = 0; - int prevCodepoint = 0; - - // Check whitespace to skip (ASCII only) - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if (!isspace(prevCodepoint & 0xff)) break; - - offset -= prevCodepointSize; - //accCodepointSize += prevCodepointSize; - } - - // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - bool puctuation = ispunct(prevCodepoint & 0xff); - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; - - offset -= prevCodepointSize; - //accCodepointSize += prevCodepointSize; - } - - textBoxCursorIndex = offset; - } - else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) - { - int prevCodepointSize = 0; - GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); - - textBoxCursorIndex -= prevCodepointSize; - } - else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - //int accCodepointSize = 0; - int nextCodepointSize; - int nextCodepoint; - - // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - bool puctuation = ispunct(nextCodepoint & 0xff); - while (offset < textLength) - { - if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) break; - - offset += nextCodepointSize; - //accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Check whitespace to skip (ASCII only) - while (offset < textLength) - { - if (!isspace(nextCodepoint & 0xff)) break; - - offset += nextCodepointSize; - //accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - textBoxCursorIndex = offset; - } - else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) - { - int nextCodepointSize = 0; - GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); - - textBoxCursorIndex += nextCodepointSize; - } - - // Move cursor position with mouse - if (CheckCollisionPointRec(mousePosition, textBounds)) // Mouse hover text - { - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/(float)guiFont.baseSize; - int codepointIndex = 0; - float glyphWidth = 0.0f; - float widthToMouseX = 0; - int mouseCursorIndex = 0; - - for (int i = textIndexOffset; i < textLength; i += codepointSize) - { - codepoint = GetCodepointNext(&text[i], &codepointSize); - codepointIndex = GetGlyphIndex(guiFont, codepoint); - - if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); - else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); - - if (mousePosition.x <= (textBounds.x + (widthToMouseX + glyphWidth/2))) - { - mouseCursor.x = textBounds.x + widthToMouseX; - mouseCursorIndex = i; - break; - } - - widthToMouseX += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - - // Check if mouse cursor is at the last position - int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) - { - mouseCursor.x = textBounds.x + textEndWidth; - mouseCursorIndex = textLength; - } - - // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) - { - cursor.x = mouseCursor.x; - textBoxCursorIndex = mouseCursorIndex; - } - } - else mouseCursor.x = -1; - - // Recalculate cursor position.y depending on textBoxCursorIndex - cursor.x = bounds.x + GuiGetStyle(TEXTBOX, TEXT_PADDING) + GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex) + GuiGetStyle(DEFAULT, TEXT_SPACING); - //if (multiline) cursor.y = GetTextLines() - - // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) - { - textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index - autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes - result = 1; - } - } - else - { - if (CheckCollisionPointRec(mousePosition, bounds)) - { - state = STATE_FOCUSED; - - if (GUI_BUTTON_PRESSED) - { - textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text - autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes - result = 1; - } - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_PRESSED) - { - GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED))); - } - else if (state == STATE_DISABLED) - { - GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED))); - } - else GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), BLANK); - - // Draw text considering index offset if required - // NOTE: Text index offset depends on cursor position - GuiDrawText(text + textIndexOffset, textBounds, GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TEXTBOX, TEXT + (state*3)))); - - // Draw cursor - if (editMode && !GuiGetStyle(TEXTBOX, TEXT_READONLY)) - { - //if (autoCursorMode || ((blinkCursorFrameCounter/40)%2 == 0)) - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); - - // Draw mouse position cursor (if required) - if (mouseCursor.x >= 0) GuiDrawRectangle(mouseCursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); - } - else if (state == STATE_FOCUSED) GuiTooltip(bounds); - //-------------------------------------------------------------------- - - return result; // Mouse button pressed: result = 1 -} - -/* -// Text Box control with multiple lines and word-wrap -// NOTE: This text-box is readonly, no editing supported by default -bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode) -{ - bool pressed = false; - - GuiSetStyle(TEXTBOX, TEXT_READONLY, 1); - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_WORD); // WARNING: If wrap mode enabled, text editing is not supported - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_TOP); - - // TODO: Implement methods to calculate cursor position properly - pressed = GuiTextBox(bounds, text, textSize, editMode); - - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_NONE); - GuiSetStyle(TEXTBOX, TEXT_READONLY, 0); - - return pressed; -} -*/ - -// Spinner control, returns selected value -int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) -{ - int result = 1; - GuiState state = guiState; - - int tempValue = *value; - - Rectangle valueBoxBounds = { - bounds.x + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING), - bounds.y, - bounds.width - 2*(GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING)), bounds.height }; - Rectangle leftButtonBound = { (float)bounds.x, (float)bounds.y, (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - Rectangle rightButtonBound = { (float)bounds.x + bounds.width - GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.y, - (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check spinner state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - -#if defined(RAYGUI_NO_ICONS) - if (GuiButton(leftButtonBound, "<")) tempValue--; - if (GuiButton(rightButtonBound, ">")) tempValue++; -#else - if (GuiButton(leftButtonBound, GuiIconText(ICON_ARROW_LEFT_FILL, NULL))) tempValue--; - if (GuiButton(rightButtonBound, GuiIconText(ICON_ARROW_RIGHT_FILL, NULL))) tempValue++; -#endif - - if (!editMode) - { - if (tempValue < minValue) tempValue = minValue; - if (tempValue > maxValue) tempValue = maxValue; - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - result = GuiValueBox(valueBoxBounds, NULL, &tempValue, minValue, maxValue, editMode); - - // Draw value selector custom buttons - // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, GuiGetStyle(VALUEBOX, BORDER_WIDTH)); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - - // Draw text label if provided - GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - *value = tempValue; - return result; -} - -// Value Box control, updates input text with numbers -// NOTE: Requires static variables: frameCounter -int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) -{ - #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) - #define RAYGUI_VALUEBOX_MAX_CHARS 32 - #endif - - int result = 0; - GuiState state = guiState; - - char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = { 0 }; - snprintf(textValue, RAYGUI_VALUEBOX_MAX_CHARS + 1, "%i", *value); - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - bool valueHasChanged = false; - - if (editMode) - { - state = STATE_PRESSED; - - int keyCount = (int)strlen(textValue); - - // Add or remove minus symbol - if (GUI_KEY_PRESSED(KEY_MINUS)) - { - if (textValue[0] == '-') - { - for (int i = 0 ; i < keyCount; i++) textValue[i] = textValue[i + 1]; - - keyCount--; - valueHasChanged = true; - } - else if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) - { - if (keyCount == 0) - { - textValue[0] = '0'; - textValue[1] = '\0'; - keyCount++; - } - - for (int i = keyCount ; i > -1; i--) textValue[i + 1] = textValue[i]; - - textValue[0] = '-'; - keyCount++; - valueHasChanged = true; - } - } - - // Add new digit to text value - if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) - { - int key = GUI_INPUT_KEY; - - // Only allow keys in range [48..57] - if ((key >= 48) && (key <= 57)) - { - textValue[keyCount] = (char)key; - keyCount++; - valueHasChanged = true; - } - } - - // Delete text - if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) - { - keyCount--; - textValue[keyCount] = '\0'; - valueHasChanged = true; - } - - if (valueHasChanged) *value = TextToInteger(textValue); - - // NOTE: Values are not clamped until user input finishes - //if (*value > maxValue) *value = maxValue; - //else if (*value < minValue) *value = minValue; - - if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) - { - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - - result = 1; - } - } - else - { - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - if (GUI_BUTTON_PRESSED) result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - Color baseColor = BLANK; - if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); - else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); - - GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); - GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); - - // Draw cursor rectangle - if (editMode) - { - // NOTE: ValueBox internal text is always centered - Rectangle cursor = { bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, - bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH) + 2, - 2, bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2 - 4 }; - if (cursor.height > bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); - } - - // Draw text label if provided - GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Floating point Value Box control, updates input val_str with numbers -// NOTE: Requires static variables: frameCounter -int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode) -{ - #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) - #define RAYGUI_VALUEBOX_MAX_CHARS 32 - #endif - - int result = 0; - GuiState state = guiState; - - //char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = "\0"; - //snprintf(textValue, sizeof(textValue), "%2.2f", *value); - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - bool valueHasChanged = false; - - if (editMode) - { - state = STATE_PRESSED; - - int keyCount = (int)strlen(textValue); - - // Add or remove minus symbol - if (GUI_KEY_PRESSED(KEY_MINUS)) - { - if (textValue[0] == '-') - { - for (int i = 0; i < keyCount; i++) textValue[i] = textValue[i + 1]; - - keyCount--; - valueHasChanged = true; - } - else if (keyCount < (RAYGUI_VALUEBOX_MAX_CHARS - 1)) - { - if (keyCount == 0) - { - textValue[0] = '0'; - textValue[1] = '\0'; - keyCount++; - } - - for (int i = keyCount; i > -1; i--) textValue[i + 1] = textValue[i]; - - textValue[0] = '-'; - keyCount++; - valueHasChanged = true; - } - } - - // Only allow keys in range [48..57] - if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) - { - if (GuiGetTextWidth(textValue) < bounds.width) - { - int key = GUI_INPUT_KEY; - if (((key >= 48) && (key <= 57)) || - (key == '.') || - ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position - ((keyCount == 0) && (key == '-'))) - { - textValue[keyCount] = (char)key; - keyCount++; - - valueHasChanged = true; - } - } - } - - // Pressed backspace - if (GUI_KEY_PRESSED(KEY_BACKSPACE)) - { - if (keyCount > 0) - { - keyCount--; - textValue[keyCount] = '\0'; - valueHasChanged = true; - } - } - - if (valueHasChanged) *value = TextToFloat(textValue); - - if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; - } - else - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - if (GUI_BUTTON_PRESSED) result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - Color baseColor = BLANK; - if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); - else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); - - GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); - GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); - - // Draw cursor - if (editMode) - { - // NOTE: ValueBox internal text is always centered - Rectangle cursor = {bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, - bounds.y + 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), 4, - bounds.height - 4*GuiGetStyle(VALUEBOX, BORDER_WIDTH)}; - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); - } - - // Draw text label if provided - GuiDrawText(text, textBounds, - (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, - GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Slider control with pro parameters -// NOTE: Other GuiSlider*() controls use this one -int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - GuiState state = guiState; - - float temp = (maxValue - minValue)/2.0f; - if (value == NULL) value = &temp; - float oldValue = *value; - - int sliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); - - Rectangle slider = { bounds.x, bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - 0, bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - // Get equivalent value and slider position from mousePosition.x - *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - if (!CheckCollisionPointRec(mousePoint, slider)) - { - // Get equivalent value and slider position from mousePosition.x - *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; - } - } - else state = STATE_FOCUSED; - } - - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - } - - // Control value change check - if (oldValue == *value) result = 0; - else result = 1; - - // Slider bar limits check - float sliderValue = (((*value - minValue)/(maxValue - minValue))*(bounds.width - sliderWidth - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))); - if (sliderWidth > 0) // Slider - { - slider.x += sliderValue; - slider.width = (float)sliderWidth; - if (slider.x <= (bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH); - else if ((slider.x + slider.width) >= (bounds.x + bounds.width)) slider.x = bounds.x + bounds.width - slider.width - GuiGetStyle(SLIDER, BORDER_WIDTH); - } - else if (sliderWidth == 0) // SliderBar - { - slider.x += GuiGetStyle(SLIDER, BORDER_WIDTH); - slider.width = sliderValue; - if (slider.width > bounds.width) slider.width = bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH); - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), GetColor(GuiGetStyle(SLIDER, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); - - // Draw slider internal bar (depends on state) - if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED))); - else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_PRESSED))); - else if (state == STATE_DISABLED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_DISABLED))); - - // Draw left/right text if provided - if (textLeft != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textLeft); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x - textBounds.width - GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - - if (textRight != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textRight); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - //-------------------------------------------------------------------- - - return result; -} - -// Slider Bar control extended, returns selected value -int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - int preSliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); - GuiSetStyle(SLIDER, SLIDER_WIDTH, 0); - result = GuiSlider(bounds, textLeft, textRight, value, minValue, maxValue); - GuiSetStyle(SLIDER, SLIDER_WIDTH, preSliderWidth); - - return result; -} - -// Progress Bar control extended, shows current progress value -int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - GuiState state = guiState; - - float temp = (maxValue - minValue)/2.0f; - if (value == NULL) value = &temp; - - // Progress bar - Rectangle progress = { bounds.x + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), - bounds.y + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) + GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING), 0, - bounds.height - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - 2*GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING) -1 }; - - // Update control - //-------------------------------------------------------------------- - if (*value > maxValue) *value = maxValue; - - // WARNING: Working with floats could lead to rounding issues - if ((state != STATE_DISABLED)) progress.width = ((float)*value/(maxValue - minValue))*(bounds.width - 2*GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)); - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_DISABLED) - { - GuiDrawRectangle(bounds, GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(PROGRESSBAR, BORDER + (state*3))), BLANK); - } - else - { - if (*value > minValue) - { - // Draw progress bar with colored border, more visual - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height - 2 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - } - else GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - - if (*value >= maxValue) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1}, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - else - { - // Draw borders not yet reached by value - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y + bounds.height - 1, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - } - - // Draw slider internal progress bar (depends on state) - if (GuiGetStyle(PROGRESSBAR, PROGRESS_SIDE) == 0) // Left-->Right - { - GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); - } - else // Right-->Left - { - progress.x = bounds.x + bounds.width - progress.width - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH); - GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); - } - } - - // Draw left/right text if provided - if (textLeft != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textLeft); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x - textBounds.width - GuiGetStyle(PROGRESSBAR, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - - if (textRight != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textRight); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(PROGRESSBAR, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - //-------------------------------------------------------------------- - - return result; -} - -// Status Bar control -int GuiStatusBar(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(STATUSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(STATUSBAR, BORDER + (state*3))), GetColor(GuiGetStyle(STATUSBAR, BASE + (state*3)))); - GuiDrawText(text, GetTextBounds(STATUSBAR, bounds), GuiGetStyle(STATUSBAR, TEXT_ALIGNMENT), GetColor(GuiGetStyle(STATUSBAR, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Dummy rectangle control, intended for placeholding -int GuiDummyRec(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); - GuiDrawText(text, GetTextBounds(DEFAULT, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(BUTTON, (state != STATE_DISABLED)? TEXT_COLOR_NORMAL : TEXT_COLOR_DISABLED))); - //------------------------------------------------------------------ - - return result; -} - -// List View control -int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active) -{ - int result = 0; - int itemCount = 0; - char **items = NULL; - - if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); - - result = GuiListViewEx(bounds, items, itemCount, scrollIndex, active, NULL); - - return result; -} - -// List View control with extended parameters -int GuiListViewEx(Rectangle bounds, char **text, int count, int *scrollIndex, int *active, int *focus) -{ - int result = 0; - GuiState state = guiState; - - int itemFocused = (focus == NULL)? -1 : *focus; - int itemSelected = (active == NULL)? -1 : *active; - - // Check if scroll bar is needed - bool useScrollBar = false; - if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; - - // Define base item rectangle [0] - Rectangle itemBounds = { 0 }; - itemBounds.x = bounds.x + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING); - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.width = bounds.width - 2*GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) - GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.height = (float)GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - if (useScrollBar) itemBounds.width -= GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); - - // Get items on the list - int visibleItems = (int)bounds.height/(GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - if (visibleItems > count) visibleItems = count; - - int startIndex = (scrollIndex == NULL)? 0 : *scrollIndex; - if ((startIndex < 0) || (startIndex > (count - visibleItems))) startIndex = 0; - int endIndex = startIndex + visibleItems; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check mouse inside list view - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - - // Check focused and selected item - for (int i = 0; i < visibleItems; i++) - { - if (CheckCollisionPointRec(mousePoint, itemBounds)) - { - itemFocused = startIndex + i; - if (GUI_BUTTON_PRESSED) - { - if (itemSelected == (startIndex + i)) itemSelected = -1; - else itemSelected = startIndex + i; - } - break; - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - } - - if (useScrollBar) - { - float scrollDelta = GUI_SCROLL_DELTA; - startIndex -= (int)scrollDelta; - - if (startIndex < 0) startIndex = 0; - else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; - - endIndex = startIndex + visibleItems; - if (endIndex > count) endIndex = count; - } - } - else itemFocused = -1; - - // Reset item rectangle y to [0] - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background - - // Draw visible items - for (int i = 0; ((i < visibleItems) && (text != NULL)); i++) - { - if (GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL)) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_NORMAL)), BLANK); - - if (state == STATE_DISABLED) - { - if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); - } - else - { - if (((startIndex + i) == itemSelected) && (active != NULL)) - { - // Draw item selected - GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); - } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned - { - // Draw item focused - GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); - } - else - { - // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); - } - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - } - - if (useScrollBar) - { - Rectangle scrollBarBounds = { - bounds.x + bounds.width - GuiGetStyle(LISTVIEW, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.y + GuiGetStyle(LISTVIEW, BORDER_WIDTH), (float)GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - }; - - // Calculate percentage of visible items and apply same percentage to scrollbar - float percentVisible = (float)(endIndex - startIndex)/count; - float sliderSize = bounds.height*percentVisible; - - int prevSliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); // Save default slider size - int prevScrollSpeed = GuiGetStyle(SCROLLBAR, SCROLL_SPEED); // Save default scroll speed - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)sliderSize); // Change slider size - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, count - visibleItems); // Change scroll speed - - startIndex = GuiScrollBar(scrollBarBounds, startIndex, 0, count - visibleItems); - - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, prevScrollSpeed); // Reset scroll speed to default - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, prevSliderSize); // Reset slider size to default - } - //-------------------------------------------------------------------- - - if (active != NULL) *active = itemSelected; - if (focus != NULL) *focus = itemFocused; - if (scrollIndex != NULL) *scrollIndex = startIndex; - - return result; -} - -// Color Panel control - Color (RGBA) variant -int GuiColorPanel(Rectangle bounds, const char *text, Color *color) -{ - int result = 0; - - Vector3 vcolor = { (float)color->r/255.0f, (float)color->g/255.0f, (float)color->b/255.0f }; - Vector3 hsv = ConvertRGBtoHSV(vcolor); - Vector3 prevHsv = hsv; // workaround to see if GuiColorPanelHSV modifies the hsv - - GuiColorPanelHSV(bounds, text, &hsv); - - // Check if the hsv was changed, only then change the color - // This is required, because the Color->HSV->Color conversion has precision errors - // Thus the assignment from HSV to Color should only be made, if the HSV has a new user-entered value - // Otherwise GuiColorPanel would often modify it's color without user input - // TODO: GuiColorPanelHSV could return 1 if the slider was dragged, to simplify this check - if (hsv.x != prevHsv.x || hsv.y != prevHsv.y || hsv.z != prevHsv.z) - { - Vector3 rgb = ConvertHSVtoRGB(hsv); - - // NOTE: Vector3ToColor() only available on raylib 1.8.1 - *color = RAYGUI_CLITERAL(Color){ (unsigned char)(255.0f*rgb.x), - (unsigned char)(255.0f*rgb.y), - (unsigned char)(255.0f*rgb.z), - color->a }; - } - return result; -} - -// Color Bar Alpha control -// NOTE: Returns alpha value normalized [0..1] -int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) -{ - #if !defined(RAYGUI_COLORBARALPHA_CHECKED_SIZE) - #define RAYGUI_COLORBARALPHA_CHECKED_SIZE 10 - #endif - - int result = 0; - GuiState state = guiState; - Rectangle selector = { (float)bounds.x + (*alpha)*bounds.width - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, - (float)bounds.y - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), - (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT), - (float)bounds.height + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2 }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - *alpha = (mousePoint.x - bounds.x)/bounds.width; - if (*alpha <= 0.0f) *alpha = 0.0f; - if (*alpha >= 1.0f) *alpha = 1.0f; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - *alpha = (mousePoint.x - bounds.x)/bounds.width; - if (*alpha <= 0.0f) *alpha = 0.0f; - if (*alpha >= 1.0f) *alpha = 1.0f; - //selector.x = bounds.x + (int)(((alpha - 0)/(100 - 0))*(bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))) - selector.width/2; - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - // Draw alpha bar: checked background - if (state != STATE_DISABLED) - { - int checksX = (int)bounds.width/RAYGUI_COLORBARALPHA_CHECKED_SIZE; - int checksY = (int)bounds.height/RAYGUI_COLORBARALPHA_CHECKED_SIZE; - - for (int x = 0; x < checksX; x++) - { - for (int y = 0; y < checksY; y++) - { - Rectangle check = { bounds.x + x*RAYGUI_COLORBARALPHA_CHECKED_SIZE, bounds.y + y*RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE }; - GuiDrawRectangle(check, 0, BLANK, ((x + y)%2)? Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.4f) : Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.4f)); - } - } - - DrawRectangleGradientEx(bounds, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha)); - } - else DrawRectangleGradientEx(bounds, Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - - // Draw alpha bar: selector - GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); - //-------------------------------------------------------------------- - - return result; -} - -// Color Bar Hue control -// Returns hue value normalized [0..1] -// NOTE: Other similar bars (for reference): -// Color GuiColorBarSat() [WHITE->color] -// Color GuiColorBarValue() [BLACK->color], HSV/HSL -// float GuiColorBarLuminance() [BLACK->WHITE] -int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) -{ - int result = 0; - GuiState state = guiState; - Rectangle selector = { (float)bounds.x - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), (float)bounds.y + (*hue)/360.0f*bounds.height - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, (float)bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2, (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - *hue = (mousePoint.y - bounds.y)*360/bounds.height; - if (*hue <= 0.0f) *hue = 0.0f; - if (*hue >= 359.0f) *hue = 359.0f; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - *hue = (mousePoint.y - bounds.y)*360/bounds.height; - if (*hue <= 0.0f) *hue = 0.0f; - if (*hue >= 359.0f) *hue = 359.0f; - - } - else state = STATE_FOCUSED; - - /*if (GUI_KEY_DOWN(KEY_UP)) - { - hue -= 2.0f; - if (hue <= 0.0f) hue = 0.0f; - } - else if (GUI_KEY_DOWN(KEY_DOWN)) - { - hue += 2.0f; - if (hue >= 360.0f) hue = 360.0f; - }*/ - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state != STATE_DISABLED) - { - // Draw hue bar:color bars - // TODO: Use directly DrawRectangleGradientEx(bounds, color1, color2, color2, color1); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + bounds.height/6), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 2*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 3*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 4*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 5*(bounds.height/6)), (int)bounds.width, (int)(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha)); - } - else DrawRectangleGradientV((int)bounds.x, (int)bounds.y, (int)bounds.width, (int)bounds.height, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - - // Draw hue bar: selector - GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); - //-------------------------------------------------------------------- - - return result; -} - -// Color Picker control -// NOTE: It's divided in multiple controls: -// Color GuiColorPanel(Rectangle bounds, Color color) -// float GuiColorBarAlpha(Rectangle bounds, float alpha) -// float GuiColorBarHue(Rectangle bounds, float value) -// NOTE: bounds define GuiColorPanel() size -// NOTE: this picker converts RGB to HSV, which can cause the Hue control to jump. If you have this problem, consider using the HSV variant instead -int GuiColorPicker(Rectangle bounds, const char *text, Color *color) -{ - int result = 0; - - Color temp = { 200, 0, 0, 255 }; - if (color == NULL) color = &temp; - - GuiColorPanel(bounds, NULL, color); - - Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; - //Rectangle boundsAlpha = { bounds.x, bounds.y + bounds.height + GuiGetStyle(COLORPICKER, BARS_PADDING), bounds.width, GuiGetStyle(COLORPICKER, BARS_THICK) }; - - // NOTE: this conversion can cause low hue-resolution, if the r, g and b value are very similar, which causes the hue bar to shift around when only the GuiColorPanel is used - Vector3 hsv = ConvertRGBtoHSV(RAYGUI_CLITERAL(Vector3){ (*color).r/255.0f, (*color).g/255.0f, (*color).b/255.0f }); - - GuiColorBarHue(boundsHue, NULL, &hsv.x); - - //color.a = (unsigned char)(GuiColorBarAlpha(boundsAlpha, (float)color.a/255.0f)*255.0f); - Vector3 rgb = ConvertHSVtoRGB(hsv); - - *color = RAYGUI_CLITERAL(Color){ (unsigned char)roundf(rgb.x*255.0f), (unsigned char)roundf(rgb.y*255.0f), (unsigned char)roundf(rgb.z*255.0f), (*color).a }; - - return result; -} - -// Color Picker control that avoids conversion to RGB and back to HSV on each call, thus avoiding jittering -// The user can call ConvertHSVtoRGB() to convert *colorHsv value to RGB -// NOTE: It's divided in multiple controls: -// int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -// int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) -// float GuiColorBarHue(Rectangle bounds, float value) -// NOTE: bounds define GuiColorPanelHSV() size -int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -{ - int result = 0; - - Vector3 tempHsv = { 0 }; - - if (colorHsv == NULL) - { - const Vector3 tempColor = { 200.0f/255.0f, 0.0f, 0.0f }; - tempHsv = ConvertRGBtoHSV(tempColor); - colorHsv = &tempHsv; - } - - GuiColorPanelHSV(bounds, NULL, colorHsv); - - const Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; - - GuiColorBarHue(boundsHue, NULL, &colorHsv->x); - - return result; -} - -// Color Panel control - HSV variant -int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -{ - int result = 0; - GuiState state = guiState; - Vector2 pickerSelector = { 0 }; - - const Color colWhite = { 255, 255, 255, 255 }; - const Color colBlack = { 0, 0, 0, 255 }; - - pickerSelector.x = bounds.x + (float)colorHsv->y*bounds.width; // HSV: Saturation - pickerSelector.y = bounds.y + (1.0f - (float)colorHsv->z)*bounds.height; // HSV: Value - - Vector3 maxHue = { colorHsv->x, 1.0f, 1.0f }; - Vector3 rgbHue = ConvertHSVtoRGB(maxHue); - Color maxHueCol = { (unsigned char)(255.0f*rgbHue.x), - (unsigned char)(255.0f*rgbHue.y), - (unsigned char)(255.0f*rgbHue.z), 255 }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - pickerSelector = mousePoint; - - if (pickerSelector.x < bounds.x) pickerSelector.x = bounds.x; - if (pickerSelector.x > bounds.x + bounds.width) pickerSelector.x = bounds.x + bounds.width; - if (pickerSelector.y < bounds.y) pickerSelector.y = bounds.y; - if (pickerSelector.y > bounds.y + bounds.height) pickerSelector.y = bounds.y + bounds.height; - - // Calculate color from picker - Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; - - colorPick.x /= (float)bounds.width; // Get normalized value on x - colorPick.y /= (float)bounds.height; // Get normalized value on y - - colorHsv->y = colorPick.x; - colorHsv->z = 1.0f - colorPick.y; - - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; - pickerSelector = mousePoint; - - // Calculate color from picker - Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; - - colorPick.x /= (float)bounds.width; // Get normalized value on x - colorPick.y /= (float)bounds.height; // Get normalized value on y - - colorHsv->y = colorPick.x; - colorHsv->z = 1.0f - colorPick.y; - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state != STATE_DISABLED) - { - DrawRectangleGradientEx(bounds, Fade(colWhite, guiAlpha), Fade(colWhite, guiAlpha), Fade(maxHueCol, guiAlpha), Fade(maxHueCol, guiAlpha)); - DrawRectangleGradientEx(bounds, Fade(colBlack, 0), Fade(colBlack, guiAlpha), Fade(colBlack, guiAlpha), Fade(colBlack, 0)); - - // Draw color picker: selector - Rectangle selector = { pickerSelector.x - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, pickerSelector.y - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE), (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE) }; - GuiDrawRectangle(selector, 0, BLANK, colWhite); - } - else - { - DrawRectangleGradientEx(bounds, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.6f), guiAlpha)); - } - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - //-------------------------------------------------------------------- - - return result; -} - -// Message Box control -int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons) -{ - #if !defined(RAYGUI_MESSAGEBOX_BUTTON_HEIGHT) - #define RAYGUI_MESSAGEBOX_BUTTON_HEIGHT 24 - #endif - #if !defined(RAYGUI_MESSAGEBOX_BUTTON_PADDING) - #define RAYGUI_MESSAGEBOX_BUTTON_PADDING 12 - #endif - - int result = -1; // Returns clicked button from buttons list, 0 refers to closed window button - - int buttonCount = 0; - char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); - Rectangle buttonBounds = { 0 }; - buttonBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - buttonBounds.y = bounds.y + bounds.height - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT - RAYGUI_MESSAGEBOX_BUTTON_PADDING; - buttonBounds.width = (bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; - buttonBounds.height = RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; - - //int textWidth = GuiGetTextWidth(message) + 2; - - Rectangle textBounds = { 0 }; - textBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - textBounds.width = bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*2; - textBounds.height = bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 3*RAYGUI_MESSAGEBOX_BUTTON_PADDING - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; - - // Draw control - //-------------------------------------------------------------------- - if (GuiWindowBox(bounds, title)) result = 0; - - int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(textBounds, message); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); - - prevTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - for (int i = 0; i < buttonCount; i++) - { - if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; - buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); - } - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevTextAlignment); - //-------------------------------------------------------------------- - - return result; -} - -// Text Input Box control, ask for text -int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive) -{ - #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT) - #define RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT 24 - #endif - #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_PADDING) - #define RAYGUI_TEXTINPUTBOX_BUTTON_PADDING 12 - #endif - #if !defined(RAYGUI_TEXTINPUTBOX_HEIGHT) - #define RAYGUI_TEXTINPUTBOX_HEIGHT 26 - #endif - - // Used to enable text edit mode - // WARNING: No more than one GuiTextInputBox() should be open at the same time - static bool textEditMode = false; - - int result = -1; - - int buttonCount = 0; - char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); - Rectangle buttonBounds = { 0 }; - buttonBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - buttonBounds.y = bounds.y + bounds.height - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - buttonBounds.width = (bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; - buttonBounds.height = RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT; - - int messageInputHeight = (int)bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - 2*RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - - Rectangle textBounds = { 0 }; - if (message != NULL) - { - int textSize = GuiGetTextWidth(message) + 2; - - textBounds.x = bounds.x + bounds.width/2 - textSize/2; - textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + messageInputHeight/4 - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - textBounds.width = (float)textSize; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - } - - Rectangle textBoxBounds = { 0 }; - textBoxBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - textBoxBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - RAYGUI_TEXTINPUTBOX_HEIGHT/2; - if (message == NULL) textBoxBounds.y = bounds.y + 24 + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - else textBoxBounds.y += (messageInputHeight/2 + messageInputHeight/4); - textBoxBounds.width = bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*2; - textBoxBounds.height = RAYGUI_TEXTINPUTBOX_HEIGHT; - - // Draw control - //-------------------------------------------------------------------- - if (GuiWindowBox(bounds, title)) result = 0; - - // Draw message if available - if (message != NULL) - { - int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(textBounds, message); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); - } - - int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - - if (secretViewActive != NULL) - { - static char stars[] = "****************"; - if (GuiTextBox(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x, textBoxBounds.y, textBoxBounds.width - 4 - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.height }, - ((*secretViewActive == 1) || textEditMode)? text : stars, textMaxSize, textEditMode)) textEditMode = !textEditMode; - - GuiToggle(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x + textBoxBounds.width - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.y, RAYGUI_TEXTINPUTBOX_HEIGHT, RAYGUI_TEXTINPUTBOX_HEIGHT }, (*secretViewActive == 1)? "#44#" : "#45#", secretViewActive); - } - else - { - if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; - } - - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); - - int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - for (int i = 0; i < buttonCount; i++) - { - if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; - buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); - } - - if (result >= 0) textEditMode = false; - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevBtnTextAlignment); - //-------------------------------------------------------------------- - - return result; // Result is the pressed button index -} - -// Grid control -// NOTE: Returns grid mouse-hover selected cell -// About drawing lines at subpixel spacing, simple put, not easy solution: -// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster -int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) -{ - // Grid lines alpha amount - #if !defined(RAYGUI_GRID_ALPHA) - #define RAYGUI_GRID_ALPHA 0.15f - #endif - - int result = 0; - GuiState state = guiState; - - Vector2 mousePoint = GUI_POINTER_POSITION; - Vector2 currentMouseCell = { -1, -1 }; - - float spaceWidth = spacing/(float)subdivs; - int linesV = (int)(bounds.width/spaceWidth) + 1; - int linesH = (int)(bounds.height/spaceWidth) + 1; - - int color = GuiGetStyle(DEFAULT, LINE_COLOR); - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - // NOTE: Cell values must be the upper left of the cell the mouse is in - currentMouseCell.x = floorf((mousePoint.x - bounds.x)/spacing); - currentMouseCell.y = floorf((mousePoint.y - bounds.y)/spacing); - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_DISABLED) color = GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED); - - if (subdivs > 0) - { - // Draw vertical grid lines - for (int i = 0; i < linesV; i++) - { - Rectangle lineV = { bounds.x + spacing*i/subdivs, bounds.y, 1, bounds.height + 1 }; - GuiDrawRectangle(lineV, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); - } - - // Draw horizontal grid lines - for (int i = 0; i < linesH; i++) - { - Rectangle lineH = { bounds.x, bounds.y + spacing*i/subdivs, bounds.width + 1, 1 }; - GuiDrawRectangle(lineH, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); - } - } - - if (mouseCell != NULL) *mouseCell = currentMouseCell; - return result; -} - -//---------------------------------------------------------------------------------- -// Tooltip management functions -// NOTE: Tooltips requires some global variables: tooltipPtr -//---------------------------------------------------------------------------------- -// Enable gui tooltips (global state) -void GuiEnableTooltip(void) { guiTooltip = true; } - -// Disable gui tooltips (global state) -void GuiDisableTooltip(void) { guiTooltip = false; } - -// Set tooltip string -void GuiSetTooltip(const char *tooltip) { guiTooltipPtr = tooltip; } - -//---------------------------------------------------------------------------------- -// Styles loading functions -//---------------------------------------------------------------------------------- - -// Load raygui style file (.rgs) -// NOTE: By default a binary file is expected, that file could contain a custom font, -// in that case, custom font image atlas is GRAY+ALPHA and pixel data can be compressed (DEFLATE) -void GuiLoadStyle(const char *fileName) -{ - #define MAX_LINE_BUFFER_SIZE 256 - - bool tryBinary = false; - if (!guiStyleLoaded) GuiLoadStyleDefault(); - - // Try reading the files as text file first - FILE *rgsFile = fopen(fileName, "rt"); - - if (rgsFile != NULL) - { - char buffer[MAX_LINE_BUFFER_SIZE] = { 0 }; - fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); - - if (buffer[0] == '#') - { - int controlId = 0; - int propertyId = 0; - unsigned int propertyValue = 0; - - while (!feof(rgsFile)) - { - switch (buffer[0]) - { - case 'p': - { - // Style property: p - - sscanf(buffer, "p %d %d 0x%x", &controlId, &propertyId, &propertyValue); - GuiSetStyle(controlId, propertyId, (int)propertyValue); - - } break; - case 'f': - { - // Style font: f - - int fontSize = 0; - char charmapFileName[256] = { 0 }; - char fontFileName[256] = { 0 }; - sscanf(buffer, "f %d %s %[^\r\n]s", &fontSize, charmapFileName, fontFileName); - - Font font = { 0 }; - int *codepoints = NULL; - int codepointCount = 0; - - if (charmapFileName[0] != '0') - { - // Load text data from file - // NOTE: Expected an UTF-8 array of codepoints, no separation - char *textData = LoadFileText(TextFormat("%s/%s", GetDirectoryPath(fileName), charmapFileName)); - codepoints = LoadCodepoints(textData, &codepointCount); - UnloadFileText(textData); - } - - if (fontFileName[0] != '\0') - { - // In case a font is already loaded and it is not default internal font, unload it - if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); - - if (codepointCount > 0) font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, codepoints, codepointCount); - else font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, NULL, 0); // Default to 95 standard codepoints - } - - // If font texture not properly loaded, revert to default font and size/spacing - if (font.texture.id == 0) - { - font = GetFontDefault(); - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); - } - - UnloadCodepoints(codepoints); - - if ((font.texture.id > 0) && (font.glyphCount > 0)) GuiSetFont(font); - - } break; - default: break; - } - - fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); - } - } - else tryBinary = true; - - fclose(rgsFile); - } - - if (tryBinary) - { - rgsFile = fopen(fileName, "rb"); - - if (rgsFile != NULL) - { - fseek(rgsFile, 0, SEEK_END); - int fileDataSize = ftell(rgsFile); - fseek(rgsFile, 0, SEEK_SET); - - if (fileDataSize > 0) - { - unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - if (fileData != NULL) - { - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - - GuiLoadStyleFromMemory(fileData, fileDataSize); - - RAYGUI_FREE(fileData); - } - } - - fclose(rgsFile); - } - } -} - -// Load style default over global style -void GuiLoadStyleDefault(void) -{ - // Setting this flag first to avoid cyclic function calls - // when calling GuiSetStyle() and GuiGetStyle() - guiStyleLoaded = true; - - // Initialize default LIGHT style property values - // WARNING: Default value are applied to all controls on set but - // they can be overwritten later on for every custom control - GuiSetStyle(DEFAULT, BORDER_COLOR_NORMAL, 0x838383ff); - GuiSetStyle(DEFAULT, BASE_COLOR_NORMAL, 0xc9c9c9ff); - GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0x686868ff); - GuiSetStyle(DEFAULT, BORDER_COLOR_FOCUSED, 0x5bb2d9ff); - GuiSetStyle(DEFAULT, BASE_COLOR_FOCUSED, 0xc9effeff); - GuiSetStyle(DEFAULT, TEXT_COLOR_FOCUSED, 0x6c9bbcff); - GuiSetStyle(DEFAULT, BORDER_COLOR_PRESSED, 0x0492c7ff); - GuiSetStyle(DEFAULT, BASE_COLOR_PRESSED, 0x97e8ffff); - GuiSetStyle(DEFAULT, TEXT_COLOR_PRESSED, 0x368bafff); - GuiSetStyle(DEFAULT, BORDER_COLOR_DISABLED, 0xb5c1c2ff); - GuiSetStyle(DEFAULT, BASE_COLOR_DISABLED, 0xe6e9e9ff); - GuiSetStyle(DEFAULT, TEXT_COLOR_DISABLED, 0xaeb7b8ff); - GuiSetStyle(DEFAULT, BORDER_WIDTH, 1); - GuiSetStyle(DEFAULT, TEXT_PADDING, 0); - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - // Initialize default extended property values - // NOTE: By default, extended property values are initialized to 0 - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); // DEFAULT, shared by all controls - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls - GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds - - // Initialize control-specific property values - // NOTE: Those properties are in default list but require specific values by control type - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 2); - GuiSetStyle(SLIDER, TEXT_PADDING, 4); - GuiSetStyle(PROGRESSBAR, TEXT_PADDING, 4); - GuiSetStyle(CHECKBOX, TEXT_PADDING, 4); - GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_RIGHT); - GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 0); - GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiSetStyle(TEXTBOX, TEXT_PADDING, 4); - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(VALUEBOX, TEXT_PADDING, 0); - GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(STATUSBAR, TEXT_PADDING, 8); - GuiSetStyle(STATUSBAR, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - - // Initialize extended property values - // NOTE: By default, extended property values are initialized to 0 - GuiSetStyle(TOGGLE, GROUP_PADDING, 2); - GuiSetStyle(SLIDER, SLIDER_WIDTH, 16); - GuiSetStyle(SLIDER, SLIDER_PADDING, 1); - GuiSetStyle(PROGRESSBAR, PROGRESS_PADDING, 1); - GuiSetStyle(CHECKBOX, CHECK_PADDING, 1); - GuiSetStyle(COMBOBOX, COMBO_BUTTON_WIDTH, 32); - GuiSetStyle(COMBOBOX, COMBO_BUTTON_SPACING, 2); - GuiSetStyle(DROPDOWNBOX, ARROW_PADDING, 16); - GuiSetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING, 2); - GuiSetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH, 24); - GuiSetStyle(VALUEBOX, SPINNER_BUTTON_SPACING, 2); - GuiSetStyle(SCROLLBAR, BORDER_WIDTH, 0); - GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, 0); - GuiSetStyle(SCROLLBAR, ARROWS_SIZE, 6); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING, 0); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, 16); - GuiSetStyle(SCROLLBAR, SCROLL_PADDING, 0); - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, 12); - GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, 28); - GuiSetStyle(LISTVIEW, LIST_ITEMS_SPACING, 2); - GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH, 1); - GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, 12); - GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_RIGHT_SIDE); - GuiSetStyle(COLORPICKER, COLOR_SELECTOR_SIZE, 8); - GuiSetStyle(COLORPICKER, HUEBAR_WIDTH, 16); - GuiSetStyle(COLORPICKER, HUEBAR_PADDING, 8); - GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT, 8); - GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW, 2); - - if (guiFont.texture.id != GetFontDefault().texture.id) - { - // Unload previous font texture - UnloadTexture(guiFont.texture); - RAYGUI_FREE(guiFont.recs); - RAYGUI_FREE(guiFont.glyphs); - guiFont.recs = NULL; - guiFont.glyphs = NULL; - - // Setup default raylib font - guiFont = GetFontDefault(); - - // NOTE: Default raylib font character 95 is a white square - Rectangle whiteChar = guiFont.recs[95]; - - // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering - SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); - } -} - -// Get text with icon id prepended -// NOTE: Useful to add icons by name id (enum) instead of -// a number that can change between ricon versions -const char *GuiIconText(int iconId, const char *text) -{ -#if defined(RAYGUI_NO_ICONS) - return NULL; -#else - static char buffer[1024] = { 0 }; - static char iconBuffer[16] = { 0 }; - - if (text != NULL) - { - memset(buffer, 0, 1024); - snprintf(buffer, 1024, "#%03i#", iconId); - - for (int i = 5; i < 1024; i++) - { - buffer[i] = text[i - 5]; - if (text[i - 5] == '\0') break; - } - - return buffer; - } - else - { - snprintf(iconBuffer, 16, "#%03i#", iconId); - - return iconBuffer; - } -#endif -} - -#if !defined(RAYGUI_NO_ICONS) -// Get full icons data pointer -unsigned int *GuiGetIcons(void) { return guiIconsPtr; } - -// Load raygui icons file (.rgi) -// NOTE: In case nameIds are required, they can be requested with loadIconsName, -// they are returned as a guiIconsName[iconCount][RAYGUI_ICON_MAX_NAME_LENGTH], -// WARNING: guiIconsName[]][] memory should be manually freed! -char **GuiLoadIcons(const char *fileName, bool loadIconsName) -{ - // Style File Structure (.rgi) - // ------------------------------------------------------ - // Offset | Size | Type | Description - // ------------------------------------------------------ - // 0 | 4 | char | Signature: "rGI " - // 4 | 2 | short | Version: 100 - // 6 | 2 | short | reserved - - // 8 | 2 | short | Num icons (N) - // 10 | 2 | short | Icons size (Options: 16, 32, 64) (S) - - // Icons name id (32 bytes per name id) - // foreach (icon) - // { - // 12+32*i | 32 | char | Icon NameId - // } - - // Icons data: One bit per pixel, stored as unsigned int array (depends on icon size) - // S*S pixels/32bit per unsigned int = K unsigned int per icon - // foreach (icon) - // { - // ... | K | unsigned int | Icon Data - // } - - FILE *rgiFile = fopen(fileName, "rb"); - - char **guiIconsName = NULL; - - if (rgiFile != NULL) - { - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - short iconCount = 0; - short iconSize = 0; - - fread(signature, 1, 4, rgiFile); - fread(&version, sizeof(short), 1, rgiFile); - fread(&reserved, sizeof(short), 1, rgiFile); - fread(&iconCount, sizeof(short), 1, rgiFile); - fread(&iconSize, sizeof(short), 1, rgiFile); - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'I') && - (signature[3] == ' ')) - { - if (loadIconsName) - { - guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); - for (int i = 0; i < iconCount; i++) - { - guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); - fread(guiIconsName[i], 1, RAYGUI_ICON_MAX_NAME_LENGTH, rgiFile); - } - } - else fseek(rgiFile, iconCount*RAYGUI_ICON_MAX_NAME_LENGTH, SEEK_CUR); - - // Read icons data directly over internal icons array - fread(guiIconsPtr, sizeof(unsigned int), (int)iconCount*((int)iconSize*(int)iconSize/32), rgiFile); - } - - fclose(rgiFile); - } - - return guiIconsName; -} - -// Load icons from memory -// WARNING: Binary files only -char **GuiLoadIconsFromMemory(const unsigned char *fileData, int dataSize, bool loadIconsName) -{ - unsigned char *fileDataPtr = (unsigned char *)fileData; - char **guiIconsName = NULL; - - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - short iconCount = 0; - short iconSize = 0; - - memcpy(signature, fileDataPtr, 4); - memcpy(&version, fileDataPtr + 4, sizeof(short)); - memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); - memcpy(&iconCount, fileDataPtr + 4 + 2 + 2, sizeof(short)); - memcpy(&iconSize, fileDataPtr + 4 + 2 + 2 + 2, sizeof(short)); - fileDataPtr += 12; - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'I') && - (signature[3] == ' ')) - { - if (loadIconsName) - { - guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); - for (int i = 0; i < iconCount; i++) - { - guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); - memcpy(guiIconsName[i], fileDataPtr, RAYGUI_ICON_MAX_NAME_LENGTH); - fileDataPtr += RAYGUI_ICON_MAX_NAME_LENGTH; - } - } - else - { - // Skip icon name data if not required - fileDataPtr += iconCount*RAYGUI_ICON_MAX_NAME_LENGTH; - } - - int iconDataSize = iconCount*((int)iconSize*(int)iconSize/32)*(int)sizeof(unsigned int); - guiIconsPtr = (unsigned int *)RAYGUI_CALLOC(iconDataSize, 1); - - memcpy(guiIconsPtr, fileDataPtr, iconDataSize); - } - - return guiIconsName; -} - -// Draw selected icon using rectangles pixel-by-pixel -void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color) -{ - #define BIT_CHECK(a,b) ((a) & (1u<<(b))) - - for (int i = 0, y = 0; i < RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32; i++) - { - for (int k = 0; k < 32; k++) - { - if (BIT_CHECK(guiIconsPtr[iconId*RAYGUI_ICON_DATA_ELEMENTS + i], k)) - { - #if !defined(RAYGUI_STANDALONE) - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ (float)posX + (k%RAYGUI_ICON_SIZE)*pixelSize, (float)posY + y*pixelSize, (float)pixelSize, (float)pixelSize }, 0, BLANK, color); - #endif - } - - if ((k == 15) || (k == 31)) y++; - } - } -} - -// Set icon drawing size -void GuiSetIconScale(int scale) -{ - if (scale >= 1) guiIconScale = scale; -} - -// Get text width considering gui style and icon size (if required) -int GuiGetTextWidth(const char *text) -{ - #if !defined(ICON_TEXT_PADDING) - #define ICON_TEXT_PADDING 4 - #endif - - Vector2 textSize = { 0 }; - int textIconOffset = 0; - - if ((text != NULL) && (text[0] != '\0')) - { - if (text[0] == '#') - { - for (int i = 1; (i < 5) && (text[i] != '\0'); i++) - { - if (text[i] == '#') - { - textIconOffset = i; - break; - } - } - } - - text += textIconOffset; - - // Make sure guiFont is set, GuiGetStyle() initializes it lazynessly - float fontSize = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - - // Custom MeasureText() implementation - if ((guiFont.texture.id > 0) && (text != NULL)) - { - // Get size in bytes of text, considering end of line and line break - int size = 0; - for (int i = 0; i < MAX_LINE_BUFFER_SIZE; i++) - { - if ((text[i] != '\0') && (text[i] != '\n')) size++; - else break; - } - - float scaleFactor = fontSize/(float)guiFont.baseSize; - textSize.y = (float)guiFont.baseSize*scaleFactor; - float glyphWidth = 0.0f; - - for (int i = 0, codepointSize = 0; i < size; i += codepointSize) - { - int codepoint = GetCodepointNext(&text[i], &codepointSize); - int codepointIndex = GetGlyphIndex(guiFont, codepoint); - - if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); - else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); - - textSize.x += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - } - - if (textIconOffset > 0) textSize.x += (RAYGUI_ICON_SIZE + ICON_TEXT_PADDING); - } - - return (int)textSize.x; -} - -#endif // !RAYGUI_NO_ICONS - -//---------------------------------------------------------------------------------- -// Module Internal Functions Definition -//---------------------------------------------------------------------------------- -// Load style from memory -// WARNING: Binary files only -static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize) -{ - unsigned char *fileDataPtr = (unsigned char *)fileData; - - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - int propertyCount = 0; - - memcpy(signature, fileDataPtr, 4); - memcpy(&version, fileDataPtr + 4, sizeof(short)); - memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); - memcpy(&propertyCount, fileDataPtr + 4 + 2 + 2, sizeof(int)); - fileDataPtr += 12; - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'S') && - (signature[3] == ' ')) - { - short controlId = 0; - short propertyId = 0; - unsigned int propertyValue = 0; - - for (int i = 0; i < propertyCount; i++) - { - memcpy(&controlId, fileDataPtr, sizeof(short)); - memcpy(&propertyId, fileDataPtr + 2, sizeof(short)); - memcpy(&propertyValue, fileDataPtr + 2 + 2, sizeof(unsigned int)); - fileDataPtr += 8; - - if (controlId == 0) // DEFAULT control - { - // If a DEFAULT property is loaded, it is propagated to all controls - // NOTE: All DEFAULT properties should be defined first in the file - GuiSetStyle(0, (int)propertyId, propertyValue); - - if (propertyId < RAYGUI_MAX_PROPS_BASE) for (int j = 1; j < RAYGUI_MAX_CONTROLS; j++) GuiSetStyle(j, (int)propertyId, propertyValue); - } - else GuiSetStyle((int)controlId, (int)propertyId, propertyValue); - } - - // Font loading is highly dependant on raylib API to load font data and image - -#if !defined(RAYGUI_STANDALONE) - // Load custom font if available - int fontDataSize = 0; - memcpy(&fontDataSize, fileDataPtr, sizeof(int)); - fileDataPtr += 4; - - if (fontDataSize > 0) - { - Font font = { 0 }; - int fontType = 0; // 0-Normal, 1-SDF - - memcpy(&font.baseSize, fileDataPtr, sizeof(int)); - memcpy(&font.glyphCount, fileDataPtr + 4, sizeof(int)); - memcpy(&fontType, fileDataPtr + 4 + 4, sizeof(int)); - fileDataPtr += 12; - - // Load font white rectangle - Rectangle fontWhiteRec = { 0 }; - memcpy(&fontWhiteRec, fileDataPtr, sizeof(Rectangle)); - fileDataPtr += 16; - - // Load font image parameters - int fontImageUncompSize = 0; - int fontImageCompSize = 0; - memcpy(&fontImageUncompSize, fileDataPtr, sizeof(int)); - memcpy(&fontImageCompSize, fileDataPtr + 4, sizeof(int)); - fileDataPtr += 8; - - Image imFont = { 0 }; - imFont.mipmaps = 1; - memcpy(&imFont.width, fileDataPtr, sizeof(int)); - memcpy(&imFont.height, fileDataPtr + 4, sizeof(int)); - memcpy(&imFont.format, fileDataPtr + 4 + 4, sizeof(int)); - fileDataPtr += 12; - - if ((fontImageCompSize > 0) && (fontImageCompSize != fontImageUncompSize)) - { - // Compressed font atlas image data (DEFLATE), it requires DecompressData() - int dataUncompSize = 0; - unsigned char *compData = (unsigned char *)RAYGUI_CALLOC(fontImageCompSize, sizeof(unsigned char)); - memcpy(compData, fileDataPtr, fontImageCompSize); - fileDataPtr += fontImageCompSize; - - imFont.data = DecompressData(compData, fontImageCompSize, &dataUncompSize); - - // Security check, dataUncompSize must match the provided fontImageUncompSize - if (dataUncompSize != fontImageUncompSize) RAYGUI_LOG("WARNING: Uncompressed font atlas image data could be corrupted"); - - RAYGUI_FREE(compData); - } - else - { - // Font atlas image data is not compressed - imFont.data = (unsigned char *)RAYGUI_CALLOC(fontImageUncompSize, sizeof(unsigned char)); - memcpy(imFont.data, fileDataPtr, fontImageUncompSize); - fileDataPtr += fontImageUncompSize; - } - - if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); - font.texture = LoadTextureFromImage(imFont); - - RAYGUI_FREE(imFont.data); - - // Validate font atlas texture was loaded correctly - if (font.texture.id != 0) - { - // Load font recs data - int recsDataSize = font.glyphCount*sizeof(Rectangle); - int recsDataCompressedSize = 0; - - // WARNING: Version 400 adds the compression size parameter - if (version >= 400) - { - // RGS files version 400 support compressed recs data - memcpy(&recsDataCompressedSize, fileDataPtr, sizeof(int)); - fileDataPtr += sizeof(int); - } - - if ((recsDataCompressedSize > 0) && (recsDataCompressedSize != recsDataSize)) - { - // Recs data is compressed, uncompress it - unsigned char *recsDataCompressed = (unsigned char *)RAYGUI_CALLOC(recsDataCompressedSize, sizeof(unsigned char)); - - memcpy(recsDataCompressed, fileDataPtr, recsDataCompressedSize); - fileDataPtr += recsDataCompressedSize; - - int recsDataUncompSize = 0; - font.recs = (Rectangle *)DecompressData(recsDataCompressed, recsDataCompressedSize, &recsDataUncompSize); - - // Security check, data uncompressed size must match the expected original data size - if (recsDataUncompSize != recsDataSize) RAYGUI_LOG("WARNING: Uncompressed font recs data could be corrupted"); - - RAYGUI_FREE(recsDataCompressed); - } - else - { - // Recs data is uncompressed - font.recs = (Rectangle *)RAYGUI_CALLOC(font.glyphCount, sizeof(Rectangle)); - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.recs[i], fileDataPtr, sizeof(Rectangle)); - fileDataPtr += sizeof(Rectangle); - } - } - - // Load font glyphs info data - int glyphsDataSize = font.glyphCount*16; // 16 bytes data per glyph - int glyphsDataCompressedSize = 0; - - // WARNING: Version 400 adds the compression size parameter - if (version >= 400) - { - // RGS files version 400 support compressed glyphs data - memcpy(&glyphsDataCompressedSize, fileDataPtr, sizeof(int)); - fileDataPtr += sizeof(int); - } - - // Allocate required glyphs space to fill with data - font.glyphs = (GlyphInfo *)RAYGUI_CALLOC(font.glyphCount, sizeof(GlyphInfo)); - - if ((glyphsDataCompressedSize > 0) && (glyphsDataCompressedSize != glyphsDataSize)) - { - // Glyphs data is compressed, uncompress it - unsigned char *glypsDataCompressed = (unsigned char *)RAYGUI_CALLOC(glyphsDataCompressedSize, sizeof(unsigned char)); - - memcpy(glypsDataCompressed, fileDataPtr, glyphsDataCompressedSize); - fileDataPtr += glyphsDataCompressedSize; - - int glyphsDataUncompSize = 0; - unsigned char *glyphsDataUncomp = DecompressData(glypsDataCompressed, glyphsDataCompressedSize, &glyphsDataUncompSize); - - // Security check, data uncompressed size must match the expected original data size - if (glyphsDataUncompSize != glyphsDataSize) RAYGUI_LOG("WARNING: Uncompressed font glyphs data could be corrupted"); - - unsigned char *glyphsDataUncompPtr = glyphsDataUncomp; - - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.glyphs[i].value, glyphsDataUncompPtr, sizeof(int)); - memcpy(&font.glyphs[i].offsetX, glyphsDataUncompPtr + 4, sizeof(int)); - memcpy(&font.glyphs[i].offsetY, glyphsDataUncompPtr + 8, sizeof(int)); - memcpy(&font.glyphs[i].advanceX, glyphsDataUncompPtr + 12, sizeof(int)); - glyphsDataUncompPtr += 16; - } - - RAYGUI_FREE(glypsDataCompressed); - RAYGUI_FREE(glyphsDataUncomp); - } - else - { - // Glyphs data is uncompressed - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.glyphs[i].value, fileDataPtr, sizeof(int)); - memcpy(&font.glyphs[i].offsetX, fileDataPtr + 4, sizeof(int)); - memcpy(&font.glyphs[i].offsetY, fileDataPtr + 8, sizeof(int)); - memcpy(&font.glyphs[i].advanceX, fileDataPtr + 12, sizeof(int)); - fileDataPtr += 16; - } - } - } - else font = GetFontDefault(); // Fallback in case of errors loading font atlas texture - - GuiSetFont(font); - - // Set font texture source rectangle to be used as white texture to draw shapes - // NOTE: It makes possible to draw shapes and text (full UI) in a single draw call - if ((fontWhiteRec.x > 0) && - (fontWhiteRec.y > 0) && - (fontWhiteRec.width > 0) && - (fontWhiteRec.height > 0)) SetShapesTexture(font.texture, fontWhiteRec); - } -#endif - } -} - -// Get text bounds considering control bounds -static Rectangle GetTextBounds(int control, Rectangle bounds) -{ - Rectangle textBounds = bounds; - - textBounds.x = bounds.x + GuiGetStyle(control, BORDER_WIDTH); - textBounds.y = bounds.y + GuiGetStyle(control, BORDER_WIDTH) + GuiGetStyle(control, TEXT_PADDING); - textBounds.width = bounds.width - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); - textBounds.height = bounds.height - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); // NOTE: Text is processed line per line! - - // Depending on control, TEXT_PADDING and TEXT_ALIGNMENT properties could affect the text-bounds - switch (control) - { - case COMBOBOX: - case DROPDOWNBOX: - case LISTVIEW: - // TODO: Special cases (no label): COMBOBOX, DROPDOWNBOX, LISTVIEW - case SLIDER: - case CHECKBOX: - case VALUEBOX: - case CONTROL11: - // TODO: More special cases (label on side): SLIDER, CHECKBOX, VALUEBOX, SPINNER - default: - { - // TODO: WARNING: TEXT_ALIGNMENT is already considered in GuiDrawText() - if (GuiGetStyle(control, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT) textBounds.x -= GuiGetStyle(control, TEXT_PADDING); - else textBounds.x += GuiGetStyle(control, TEXT_PADDING); - } - break; - } - - return textBounds; -} - -// Get text icon if provided and move text cursor -// NOTE: Up to #999# values supported for iconId -static const char *GetTextIcon(const char *text, int *iconId) -{ -#if !defined(RAYGUI_NO_ICONS) - *iconId = -1; - if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found - { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' - - int pos = 1; - while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) - { - iconValue[pos - 1] = text[pos]; - pos++; - } - - if (text[pos] == '#') - { - *iconId = TextToInteger(iconValue); - - // Move text pointer after icon - // WARNING: If only icon provided, it could point to EOL character: '\0' - if (*iconId >= 0) text += (pos + 1); - } - } -#endif - - return text; -} - -// Get text divided into lines (by line-breaks '\n') -// WARNING: It returns pointers to new lines but it does not add NULL ('\0') terminator! -static const char **GetTextLines(const char *text, int *count) -{ - #define RAYGUI_MAX_TEXT_LINES 128 - - static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; - for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - - int textLength = (int)strlen(text); - - lines[0] = text; - *count = 1; - - for (int i = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) - { - if ((text[i] == '\n') && ((i + 1) < textLength)) - { - lines[*count] = &text[i + 1]; - *count += 1; - } - } - - return lines; -} - -// Get text width to next space for provided string -static float GetNextSpaceWidth(const char *text, int *nextSpaceIndex) -{ - float width = 0; - int codepointByteCount = 0; - int codepoint = 0; - int index = 0; - float glyphWidth = 0; - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; - - for (int i = 0; text[i] != '\0'; i++) - { - if (text[i] != ' ') - { - codepoint = GetCodepoint(&text[i], &codepointByteCount); - index = GetGlyphIndex(guiFont, codepoint); - glyphWidth = (guiFont.glyphs[index].advanceX == 0)? guiFont.recs[index].width*scaleFactor : guiFont.glyphs[index].advanceX*scaleFactor; - width += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - else - { - *nextSpaceIndex = i; - break; - } - } - - return width; -} - -// Gui draw text using default font -static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint) -{ - #define TEXT_VALIGN_PIXEL_OFFSET(h) ((int)h%2) // Vertical alignment for pixel perfect - - #if !defined(ICON_TEXT_PADDING) - #define ICON_TEXT_PADDING 4 - #endif - - if ((text == NULL) || (text[0] == '\0')) return; // Security check - - // PROCEDURE: - // - Text is processed line per line - // - For every line, horizontal alignment is defined - // - For all text, vertical alignment is defined (multiline text only) - // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) - - // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: GuiTextSplit() function can't be used now because it can have already been used - // before the GuiDrawText() call and its buffer is static, it would be overriden :( - int lineCount = 0; - const char **lines = GetTextLines(text, &lineCount); - - // Text style variables - //int alignment = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT); - int alignmentVertical = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL); - int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing - - // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - float posOffsetY = 0.0f; - - for (int i = 0; i < lineCount; i++) - { - int iconId = 0; - lines[i] = GetTextIcon(lines[i], &iconId); // Check text for icon and move cursor - - // Get text position depending on alignment and iconId - //--------------------------------------------------------------------------------- - Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; - float textBoundsWidthOffset = 0.0f; - - // NOTE: Get text size after icon has been processed - // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? - int textSizeX = GuiGetTextWidth(lines[i]); - - // If text requires an icon, add size to measure - if (iconId >= 0) - { - textSizeX += RAYGUI_ICON_SIZE*guiIconScale; - - // WARNING: If only icon provided, text could be pointing to EOF character: '\0' -#if !defined(RAYGUI_NO_ICONS) - if ((lines[i] != NULL) && (lines[i][0] != '\0')) textSizeX += ICON_TEXT_PADDING; -#endif - } - - // Check guiTextAlign global variables - switch (alignment) - { - case TEXT_ALIGN_LEFT: textBoundsPosition.x = textBounds.x; break; - case TEXT_ALIGN_CENTER: textBoundsPosition.x = textBounds.x + textBounds.width/2 - textSizeX/2; break; - case TEXT_ALIGN_RIGHT: textBoundsPosition.x = textBounds.x + textBounds.width - textSizeX; break; - default: break; - } - - if (textSizeX > textBounds.width && (lines[i] != NULL) && (lines[i][0] != '\0')) textBoundsPosition.x = textBounds.x; - - switch (alignmentVertical) - { - // Only valid in case of wordWrap = 0; - case TEXT_ALIGN_TOP: textBoundsPosition.y = textBounds.y + posOffsetY; break; - case TEXT_ALIGN_MIDDLE: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height/2 - totalHeight/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; - case TEXT_ALIGN_BOTTOM: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height - totalHeight + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; - default: break; - } - - // NOTE: Make sure getting pixel-perfect coordinates, - // In case of decimals, it could result in text positioning artifacts - textBoundsPosition.x = (float)((int)textBoundsPosition.x); - textBoundsPosition.y = (float)((int)textBoundsPosition.y); - //--------------------------------------------------------------------------------- - - // Draw text (with icon if available) - //--------------------------------------------------------------------------------- -#if !defined(RAYGUI_NO_ICONS) - if (iconId >= 0) - { - // NOTE: Considering icon height, probably different than text size - GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); - textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); - textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); - } -#endif - // Get size in bytes of text, - // considering end of line and line break - int lineSize = 0; - for (int c = 0; (lines[i][c] != '\0') && (lines[i][c] != '\n') && (lines[i][c] != '\r'); c++, lineSize++){ } - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; - - int lastSpaceIndex = 0; - bool tempWrapCharMode = false; - - int textOffsetY = 0; - float textOffsetX = 0.0f; - float glyphWidth = 0; - - int ellipsisWidth = GuiGetTextWidth("..."); - bool textOverflow = false; - for (int c = 0, codepointSize = 0; c < lineSize; c += codepointSize) - { - int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); - int index = GetGlyphIndex(guiFont, codepoint); - - // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte - if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size - - // Get glyph width to check if it goes out of bounds - if (guiFont.glyphs[index].advanceX == 0) glyphWidth = ((float)guiFont.recs[index].width*scaleFactor); - else glyphWidth = (float)guiFont.glyphs[index].advanceX*scaleFactor; - - // Wrap mode text measuring, to validate if - // it can be drawn or a new line is required - if (wrapMode == TEXT_WRAP_CHAR) - { - // Jump to next line if current character reach end of the box limits - if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) - { - textOffsetX = 0.0f; - textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - - if (tempWrapCharMode) // Wrap at char level when too long words - { - wrapMode = TEXT_WRAP_WORD; - tempWrapCharMode = false; - } - } - } - else if (wrapMode == TEXT_WRAP_WORD) - { - if (codepoint == 32) lastSpaceIndex = c; - - // Get width to next space in line - int nextSpaceIndex = 0; - float nextSpaceWidth = GetNextSpaceWidth(lines[i] + c, &nextSpaceIndex); - - int nextSpaceIndex2 = 0; - float nextWordSize = GetNextSpaceWidth(lines[i] + lastSpaceIndex + 1, &nextSpaceIndex2); - - if (nextWordSize > textBounds.width - textBoundsWidthOffset) - { - // Considering the case the next word is longer than bounds - tempWrapCharMode = true; - wrapMode = TEXT_WRAP_CHAR; - } - else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) - { - textOffsetX = 0.0f; - textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - } - } - - if (codepoint == '\n') break; // WARNING: Lines are already processed manually, no need to keep drawing after this codepoint - else - { - // TODO: There are multiple types of spaces in Unicode, - // maybe it's a good idea to add support for more: http://jkorpela.fi/chars/spaces.html - if ((codepoint != ' ') && (codepoint != '\t')) // Do not draw codepoints with no glyph - { - if (wrapMode == TEXT_WRAP_NONE) - { - // Draw only required text glyphs fitting the textBounds.width - if (textSizeX > textBounds.width) - { - if (textOffsetX <= (textBounds.width - glyphWidth - textBoundsWidthOffset - ellipsisWidth)) - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - else if (!textOverflow) - { - textOverflow = true; - - for (int j = 0; j < ellipsisWidth; j += ellipsisWidth/3) - { - DrawTextCodepoint(guiFont, '.', RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX + j, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - } - else - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) - { - // Draw only glyphs inside the bounds - if ((textBoundsPosition.y + textOffsetY) <= (textBounds.y + textBounds.height - GuiGetStyle(DEFAULT, TEXT_SIZE))) - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - } - - if (guiFont.glyphs[index].advanceX == 0) textOffsetX += ((float)guiFont.recs[index].width*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - else textOffsetX += ((float)guiFont.glyphs[index].advanceX*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - } - - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - //--------------------------------------------------------------------------------- - } - -#if defined(RAYGUI_DEBUG_TEXT_BOUNDS) - GuiDrawRectangle(textBounds, 0, WHITE, Fade(BLUE, 0.4f)); -#endif -} - -// Gui draw rectangle using default raygui plain style with borders -static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color) -{ - if (color.a > 0) - { - // Draw rectangle filled with color - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, GuiFade(color, guiAlpha)); - } - - if (borderWidth > 0) - { - // Draw rectangle border lines with color - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x + (int)rec.width - borderWidth, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x, (int)rec.y + (int)rec.height - borderWidth, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); - } - -#if defined(RAYGUI_DEBUG_RECS_BOUNDS) - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, Fade(RED, 0.4f)); -#endif -} - -// Draw tooltip using control bounds -static void GuiTooltip(Rectangle controlRec) -{ - if (!guiLocked && guiTooltip && (guiTooltipPtr != NULL) && !guiControlExclusiveMode) - { - Vector2 textSize = MeasureTextEx(GuiGetFont(), guiTooltipPtr, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - - if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - - int lineCount = 0; - GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count - if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) - controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); - - // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); - - int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); - int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_PADDING, 0); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); - GuiSetStyle(LABEL, TEXT_PADDING, textPadding); - } -} - -// Split controls text into multiple strings -// Also check for multiple columns (required by GuiToggleGroup()) -static char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow) -{ - // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) - // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, - // all used memory is static... it has some limitations: - // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS - // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE - // NOTE: Those definitions could be externally provided if required - - // TODO: HACK: GuiTextSplit() - Review how textRows are returned to user - // textRow is an externally provided array of integers that stores row number for every splitted string - - #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) - #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 - #endif - #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) - #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 - #endif - - static char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; // String pointers array (points to buffer data) - static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; // Buffer data (text input copy with '\0' added) - memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); - - result[0] = buffer; - int counter = 1; - - if (textRow != NULL) textRow[0] = 0; - - // Count how many substrings text contains and point to every one of them - for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) - { - buffer[i] = text[i]; - if (buffer[i] == '\0') break; - else if ((buffer[i] == delimiter) || (buffer[i] == '\n')) - { - result[counter] = buffer + i + 1; - - if (textRow != NULL) - { - if (buffer[i] == '\n') textRow[counter] = textRow[counter - 1] + 1; - else textRow[counter] = textRow[counter - 1]; - } - - buffer[i] = '\0'; // Set an end of string at this point - - counter++; - if (counter >= RAYGUI_TEXTSPLIT_MAX_ITEMS) break; - } - } - - *count = counter; - - return result; -} - -// Convert color data from RGB to HSV -// NOTE: Color data should be passed normalized -static Vector3 ConvertRGBtoHSV(Vector3 rgb) -{ - Vector3 hsv = { 0 }; - float min = 0.0f; - float max = 0.0f; - float delta = 0.0f; - - min = (rgb.x < rgb.y)? rgb.x : rgb.y; - min = (min < rgb.z)? min : rgb.z; - - max = (rgb.x > rgb.y)? rgb.x : rgb.y; - max = (max > rgb.z)? max : rgb.z; - - hsv.z = max; // Value - delta = max - min; - - if (delta < 0.00001f) - { - hsv.y = 0.0f; - hsv.x = 0.0f; // Undefined, maybe NAN? - return hsv; - } - - if (max > 0.0f) - { - // NOTE: If max is 0, this divide would cause a crash - hsv.y = (delta/max); // Saturation - } - else - { - // NOTE: If max is 0, then r = g = b = 0, s = 0, h is undefined - hsv.y = 0.0f; - hsv.x = 0.0f; // Undefined, maybe NAN? - return hsv; - } - - // NOTE: Comparing float values could not work properly - if (rgb.x >= max) hsv.x = (rgb.y - rgb.z)/delta; // Between yellow & magenta - else - { - if (rgb.y >= max) hsv.x = 2.0f + (rgb.z - rgb.x)/delta; // Between cyan & yellow - else hsv.x = 4.0f + (rgb.x - rgb.y)/delta; // Between magenta & cyan - } - - hsv.x *= 60.0f; // Convert to degrees - - if (hsv.x < 0.0f) hsv.x += 360.0f; - - return hsv; -} - -// Convert color data from HSV to RGB -// NOTE: Color data should be passed normalized -static Vector3 ConvertHSVtoRGB(Vector3 hsv) -{ - Vector3 rgb = { 0 }; - float hh = 0.0f, p = 0.0f, q = 0.0f, t = 0.0f, ff = 0.0f; - long i = 0; - - // NOTE: Comparing float values could not work properly - if (hsv.y <= 0.0f) - { - rgb.x = hsv.z; - rgb.y = hsv.z; - rgb.z = hsv.z; - return rgb; - } - - hh = hsv.x; - if (hh >= 360.0f) hh = 0.0f; - hh /= 60.0f; - - i = (long)hh; - ff = hh - i; - p = hsv.z*(1.0f - hsv.y); - q = hsv.z*(1.0f - (hsv.y*ff)); - t = hsv.z*(1.0f - (hsv.y*(1.0f - ff))); - - switch (i) - { - case 0: - { - rgb.x = hsv.z; - rgb.y = t; - rgb.z = p; - } break; - case 1: - { - rgb.x = q; - rgb.y = hsv.z; - rgb.z = p; - } break; - case 2: - { - rgb.x = p; - rgb.y = hsv.z; - rgb.z = t; - } break; - case 3: - { - rgb.x = p; - rgb.y = q; - rgb.z = hsv.z; - } break; - case 4: - { - rgb.x = t; - rgb.y = p; - rgb.z = hsv.z; - } break; - case 5: - default: - { - rgb.x = hsv.z; - rgb.y = p; - rgb.z = q; - } break; - } - - return rgb; -} - -// Scroll bar control (used by GuiScrollPanel()) -static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) -{ - GuiState state = guiState; - - // Is the scrollbar horizontal or vertical? - bool isVertical = (bounds.width > bounds.height)? false : true; - - // The size (width or height depending on scrollbar type) of the spinner buttons - const int spinnerSize = GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)? - (isVertical? (int)bounds.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) : - (int)bounds.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH)) : 0; - - // Arrow buttons [<] [>] [∧] [∨] - Rectangle arrowUpLeft = { 0 }; - Rectangle arrowDownRight = { 0 }; - - // Actual area of the scrollbar excluding the arrow buttons - Rectangle scrollbar = { 0 }; - - // Slider bar that moves --[///]----- - Rectangle slider = { 0 }; - - // Normalize value - if (value > maxValue) value = maxValue; - if (value < minValue) value = minValue; - - int valueRange = maxValue - minValue; - if (valueRange <= 0) valueRange = 1; - - int sliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); - if (sliderSize < 1) sliderSize = 1; // TODO: Consider a minimum slider size - - // Calculate rectangles for all of the components - arrowUpLeft = RAYGUI_CLITERAL(Rectangle){ - (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), - (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), - (float)spinnerSize, (float)spinnerSize }; - - if (isVertical) - { - arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + bounds.height - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; - scrollbar = RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), arrowUpLeft.y + arrowUpLeft.height, bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)), bounds.height - arrowUpLeft.height - arrowDownRight.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) }; - - // Make sure the slider won't get outside of the scrollbar - sliderSize = (sliderSize >= scrollbar.height)? ((int)scrollbar.height - 2) : sliderSize; - slider = RAYGUI_CLITERAL(Rectangle){ - bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), - scrollbar.y + (int)(((float)(value - minValue)/valueRange)*(scrollbar.height - sliderSize)), - bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)), - (float)sliderSize }; - } - else // horizontal - { - arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + bounds.width - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; - scrollbar = RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x + arrowUpLeft.width, bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), bounds.width - arrowUpLeft.width - arrowDownRight.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH), bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)) }; - - // Make sure the slider won't get outside of the scrollbar - sliderSize = (sliderSize >= scrollbar.width)? ((int)scrollbar.width - 2) : sliderSize; - slider = RAYGUI_CLITERAL(Rectangle){ - scrollbar.x + (int)(((float)(value - minValue)/valueRange)*(scrollbar.width - sliderSize)), - bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), - (float)sliderSize, - bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)) }; - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN && - !CheckCollisionPointRec(mousePoint, arrowUpLeft) && - !CheckCollisionPointRec(mousePoint, arrowDownRight)) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); - else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - - // Handle mouse wheel - float scrollDelta = GUI_SCROLL_DELTA; - if (scrollDelta != 0) value += (int)scrollDelta; - - // Handle mouse button down - if (GUI_BUTTON_PRESSED) - { - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - // Check arrows click - if (CheckCollisionPointRec(mousePoint, arrowUpLeft)) value -= valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - else if (CheckCollisionPointRec(mousePoint, arrowDownRight)) value += valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - else if (!CheckCollisionPointRec(mousePoint, slider)) - { - // If click on scrollbar position but not on slider, place slider directly on that position - if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); - else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); - } - - state = STATE_PRESSED; - } - - // Keyboard control on mouse hover scrollbar - /* - if (isVertical) - { - if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; - else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; - } - else - { - if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; - else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; - } - */ - } - - // Normalize value - if (value > maxValue) value = maxValue; - if (value < minValue) value = minValue; - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SCROLLBAR, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED))); // Draw the background - - GuiDrawRectangle(scrollbar, 0, BLANK, GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL))); // Draw the scrollbar active area background - GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BORDER + state*3))); // Draw the slider bar - - // Draw arrows (using icon if available) - if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)) - { -#if defined(RAYGUI_NO_ICONS) - GuiDrawText(isVertical? "^" : "<", - RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); - GuiDrawText(isVertical? "v" : ">", - RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); -#else - GuiDrawText(isVertical? "#121#" : "#118#", - RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_UP_FILL / ICON_ARROW_LEFT_FILL - GuiDrawText(isVertical? "#120#" : "#119#", - RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_DOWN_FILL / ICON_ARROW_RIGHT_FILL -#endif - } - //-------------------------------------------------------------------- - - return value; -} - -// Color fade-in or fade-out, alpha goes from 0.0f to 1.0f -// WARNING: It multiplies current alpha by alpha scale factor -static Color GuiFade(Color color, float alpha) -{ - if (alpha < 0.0f) alpha = 0.0f; - else if (alpha > 1.0f) alpha = 1.0f; - - Color result = { color.r, color.g, color.b, (unsigned char)(color.a*alpha) }; - - return result; -} - -#if defined(RAYGUI_STANDALONE) -// Returns a Color struct from hexadecimal value -static Color GetColor(int hexValue) -{ - Color color; - - color.r = (unsigned char)(hexValue >> 24) & 0xff; - color.g = (unsigned char)(hexValue >> 16) & 0xff; - color.b = (unsigned char)(hexValue >> 8) & 0xff; - color.a = (unsigned char)hexValue & 0xff; - - return color; -} - -// Returns hexadecimal value for a Color -static int ColorToInt(Color color) -{ - return (((int)color.r << 24) | ((int)color.g << 16) | ((int)color.b << 8) | (int)color.a); -} - -// Check if point is inside rectangle -static bool CheckCollisionPointRec(Vector2 point, Rectangle rec) -{ - bool collision = false; - - if ((point.x >= rec.x) && (point.x <= (rec.x + rec.width)) && - (point.y >= rec.y) && (point.y <= (rec.y + rec.height))) collision = true; - - return collision; -} - -// Formatting of text with variables to 'embed' -static const char *TextFormat(const char *text, ...) -{ - #if !defined(RAYGUI_TEXTFORMAT_MAX_SIZE) - #define RAYGUI_TEXTFORMAT_MAX_SIZE 256 - #endif - - static char buffer[RAYGUI_TEXTFORMAT_MAX_SIZE]; - - va_list args; - va_start(args, text); - vsnprintf(buffer, RAYGUI_TEXTFORMAT_MAX_SIZE, text, args); - va_end(args); - - return buffer; -} - -// Draw rectangle with vertical gradient fill color -// NOTE: This function is only used by GuiColorPicker() -static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2) -{ - Rectangle bounds = { (float)posX, (float)posY, (float)width, (float)height }; - DrawRectangleGradientEx(bounds, color1, color2, color2, color1); -} - -// Split string into multiple strings -char **TextSplit(const char *text, char delimiter, int *count) -{ - // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) - // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, - // all used memory is static... it has some limitations: - // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS - // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE - - #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) - #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 - #endif - #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) - #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 - #endif - - static const char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; - static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; - memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); - - result[0] = buffer; - int counter = 0; - - if (text != NULL) - { - counter = 1; - - // Count how many substrings text contains and point to every one of them - for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) - { - buffer[i] = text[i]; - if (buffer[i] == '\0') break; - else if (buffer[i] == delimiter) - { - buffer[i] = '\0'; // Set an end of string at this point - result[counter] = buffer + i + 1; - counter++; - - if (counter == RAYGUI_TEXTSPLIT_MAX_ITEMS) break; - } - } - } - - *count = counter; - return result; -} - -// Get integer value from text -// NOTE: This function replaces atoi() [stdlib.h] -static int TextToInteger(const char *text) -{ - int value = 0; - int sign = 1; - - if ((text[0] == '+') || (text[0] == '-')) - { - if (text[0] == '-') sign = -1; - text++; - } - - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); - - return value*sign; -} - -// Get float value from text -// NOTE: This function replaces atof() [stdlib.h] -// WARNING: Only '.' character is understood as decimal point -static float TextToFloat(const char *text) -{ - float value = 0.0f; - float sign = 1.0f; - - if ((text[0] == '+') || (text[0] == '-')) - { - if (text[0] == '-') sign = -1.0f; - text++; - } - - int i = 0; - for (; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10.0f + (float)(text[i] - '0'); - - if (text[i++] != '.') value *= sign; - else - { - float divisor = 10.0f; - for (; ((text[i] >= '0') && (text[i] <= '9')); i++) - { - value += ((float)(text[i] - '0'))/divisor; - divisor = divisor*10.0f; - } - } - - return value; -} - -// Encode codepoint into UTF-8 text (char array size returned as parameter) -static const char *CodepointToUTF8(int codepoint, int *byteSize) -{ - static char utf8[6] = { 0 }; - int size = 0; - - if (codepoint <= 0x7f) - { - utf8[0] = (char)codepoint; - size = 1; - } - else if (codepoint <= 0x7ff) - { - utf8[0] = (char)(((codepoint >> 6) & 0x1f) | 0xc0); - utf8[1] = (char)((codepoint & 0x3f) | 0x80); - size = 2; - } - else if (codepoint <= 0xffff) - { - utf8[0] = (char)(((codepoint >> 12) & 0x0f) | 0xe0); - utf8[1] = (char)(((codepoint >> 6) & 0x3f) | 0x80); - utf8[2] = (char)((codepoint & 0x3f) | 0x80); - size = 3; - } - else if (codepoint <= 0x10ffff) - { - utf8[0] = (char)(((codepoint >> 18) & 0x07) | 0xf0); - utf8[1] = (char)(((codepoint >> 12) & 0x3f) | 0x80); - utf8[2] = (char)(((codepoint >> 6) & 0x3f) | 0x80); - utf8[3] = (char)((codepoint & 0x3f) | 0x80); - size = 4; - } - - *byteSize = size; - - return utf8; -} - -// Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint -// Total number of bytes processed are returned as a parameter -// NOTE: The standard says U+FFFD should be returned in case of errors -// but that character is not supported by the default font in raylib -static int GetCodepointNext(const char *text, int *codepointSize) -{ - const char *ptr = text; - int codepoint = 0x3f; // Codepoint (defaults to '?') - *codepointSize = 1; - - // Get current codepoint and bytes processed - if (0xf0 == (0xf8 & ptr[0])) - { - // 4 byte UTF-8 codepoint - if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80) || ((ptr[3] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks - codepoint = ((0x07 & ptr[0]) << 18) | ((0x3f & ptr[1]) << 12) | ((0x3f & ptr[2]) << 6) | (0x3f & ptr[3]); - *codepointSize = 4; - } - else if (0xe0 == (0xf0 & ptr[0])) - { - // 3 byte UTF-8 codepoint - if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks - codepoint = ((0x0f & ptr[0]) << 12) | ((0x3f & ptr[1]) << 6) | (0x3f & ptr[2]); - *codepointSize = 3; - } - else if (0xc0 == (0xe0 & ptr[0])) - { - // 2 byte UTF-8 codepoint - if ((ptr[1] & 0xC0) ^ 0x80) { return codepoint; } //10xxxxxx checks - codepoint = ((0x1f & ptr[0]) << 6) | (0x3f & ptr[1]); - *codepointSize = 2; - } - else if (0x00 == (0x80 & ptr[0])) - { - // 1 byte UTF-8 codepoint - codepoint = ptr[0]; - *codepointSize = 1; - } - - return codepoint; -} -#endif // RAYGUI_STANDALONE - -#endif // RAYGUI_IMPLEMENTATION diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/LICENSE.md b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/LICENSE.md deleted file mode 100644 index d7d797a..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/LICENSE.md +++ /dev/null @@ -1,4 +0,0 @@ -| resource | author | licence | notes | -| :------------ | :---------: | :------ | :---- | -| ps3.png | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | - | -| xbox.png | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | - | diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/ps3.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/ps3.png deleted file mode 100644 index 59c0b35..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/ps3.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/shaders/glsl100/distortion.fs b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/shaders/glsl100/distortion.fs deleted file mode 100644 index a3b12d2..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/shaders/glsl100/distortion.fs +++ /dev/null @@ -1,52 +0,0 @@ -#version 100 - -precision mediump float; - -// Input vertex attributes (from vertex shader) -varying vec2 fragTexCoord; -varying vec4 fragColor; - -// Input uniform values -uniform sampler2D texture0; -uniform vec4 colDiffuse; - -// NOTE: Add your custom variables here -uniform vec2 leftLensCenter; -uniform vec2 rightLensCenter; -uniform vec2 leftScreenCenter; -uniform vec2 rightScreenCenter; -uniform vec2 scale; -uniform vec2 scaleIn; -uniform vec4 deviceWarpParam; -uniform vec4 chromaAbParam; - -void main() -{ - // Compute lens distortion - vec2 lensCenter = fragTexCoord.x < 0.5? leftLensCenter : rightLensCenter; - vec2 screenCenter = fragTexCoord.x < 0.5? leftScreenCenter : rightScreenCenter; - vec2 theta = (fragTexCoord - lensCenter)*scaleIn; - float rSq = theta.x*theta.x + theta.y*theta.y; - vec2 theta1 = theta*(deviceWarpParam.x + deviceWarpParam.y*rSq + deviceWarpParam.z*rSq*rSq + deviceWarpParam.w*rSq*rSq*rSq); - vec2 thetaBlue = theta1*(chromaAbParam.z + chromaAbParam.w*rSq); - vec2 tcBlue = lensCenter + scale*thetaBlue; - - if (any(bvec2(clamp(tcBlue, screenCenter - vec2(0.25, 0.5), screenCenter + vec2(0.25, 0.5)) - tcBlue))) - { - // Set black fragment for everything outside the lens border - gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); - } - else - { - // Compute color chroma aberration - float blue = texture2D(texture0, tcBlue).b; - vec2 tcGreen = lensCenter + scale*theta1; - float green = texture2D(texture0, tcGreen).g; - - vec2 thetaRed = theta1*(chromaAbParam.x + chromaAbParam.y*rSq); - vec2 tcRed = lensCenter + scale*thetaRed; - - float red = texture2D(texture0, tcRed).r; - gl_FragColor = vec4(red, green, blue, 1.0); - } -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/shaders/glsl120/distortion.fs b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/shaders/glsl120/distortion.fs deleted file mode 100644 index 496557b..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/shaders/glsl120/distortion.fs +++ /dev/null @@ -1,50 +0,0 @@ -#version 120 - -// Input vertex attributes (from vertex shader) -varying vec2 fragTexCoord; -varying vec4 fragColor; - -// Input uniform values -uniform sampler2D texture0; -uniform vec4 colDiffuse; - -// NOTE: Add your custom variables here -uniform vec2 leftLensCenter; -uniform vec2 rightLensCenter; -uniform vec2 leftScreenCenter; -uniform vec2 rightScreenCenter; -uniform vec2 scale; -uniform vec2 scaleIn; -uniform vec4 deviceWarpParam; -uniform vec4 chromaAbParam; - -void main() -{ - // Compute lens distortion - vec2 lensCenter = fragTexCoord.x < 0.5? leftLensCenter : rightLensCenter; - vec2 screenCenter = fragTexCoord.x < 0.5? leftScreenCenter : rightScreenCenter; - vec2 theta = (fragTexCoord - lensCenter)*scaleIn; - float rSq = theta.x*theta.x + theta.y*theta.y; - vec2 theta1 = theta*(deviceWarpParam.x + deviceWarpParam.y*rSq + deviceWarpParam.z*rSq*rSq + deviceWarpParam.w*rSq*rSq*rSq); - vec2 thetaBlue = theta1*(chromaAbParam.z + chromaAbParam.w*rSq); - vec2 tcBlue = lensCenter + scale*thetaBlue; - - if (any(bvec2(clamp(tcBlue, screenCenter - vec2(0.25, 0.5), screenCenter + vec2(0.25, 0.5)) - tcBlue))) - { - // Set black fragment for everything outside the lens border - gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); - } - else - { - // Compute color chroma aberration - float blue = texture2D(texture0, tcBlue).b; - vec2 tcGreen = lensCenter + scale*theta1; - float green = texture2D(texture0, tcGreen).g; - - vec2 thetaRed = theta1*(chromaAbParam.x + chromaAbParam.y*rSq); - vec2 tcRed = lensCenter + scale*thetaRed; - - float red = texture2D(texture0, tcRed).r; - gl_FragColor = vec4(red, green, blue, 1.0); - } -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/shaders/glsl330/distortion.fs b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/shaders/glsl330/distortion.fs deleted file mode 100644 index ce01b5c..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/shaders/glsl330/distortion.fs +++ /dev/null @@ -1,53 +0,0 @@ -#version 330 - -// Input vertex attributes (from vertex shader) -in vec2 fragTexCoord; -in vec4 fragColor; - -// Input uniform values -uniform sampler2D texture0; -uniform vec4 colDiffuse; - -// Output fragment color -out vec4 finalColor; - -// NOTE: Add your custom variables here -uniform vec2 leftLensCenter = vec2(0.288, 0.5); -uniform vec2 rightLensCenter = vec2(0.712, 0.5); -uniform vec2 leftScreenCenter = vec2(0.25, 0.5); -uniform vec2 rightScreenCenter = vec2(0.75, 0.5); -uniform vec2 scale = vec2(0.25, 0.45); -uniform vec2 scaleIn = vec2(4, 2.2222); -uniform vec4 deviceWarpParam = vec4(1, 0.22, 0.24, 0); -uniform vec4 chromaAbParam = vec4(0.996, -0.004, 1.014, 0.0); - -void main() -{ - // Compute lens distortion - vec2 lensCenter = fragTexCoord.x < 0.5? leftLensCenter : rightLensCenter; - vec2 screenCenter = fragTexCoord.x < 0.5? leftScreenCenter : rightScreenCenter; - vec2 theta = (fragTexCoord - lensCenter)*scaleIn; - float rSq = theta.x*theta.x + theta.y*theta.y; - vec2 theta1 = theta*(deviceWarpParam.x + deviceWarpParam.y*rSq + deviceWarpParam.z*rSq*rSq + deviceWarpParam.w*rSq*rSq*rSq); - vec2 thetaBlue = theta1*(chromaAbParam.z + chromaAbParam.w*rSq); - vec2 tcBlue = lensCenter + scale*thetaBlue; - - if (any(bvec2(clamp(tcBlue, screenCenter - vec2(0.25, 0.5), screenCenter + vec2(0.25, 0.5)) - tcBlue))) - { - // Set black fragment for everything outside the lens border - finalColor = vec4(0.0, 0.0, 0.0, 1.0); - } - else - { - // Compute color chroma aberration - float blue = texture(texture0, tcBlue).b; - vec2 tcGreen = lensCenter + scale*theta1; - float green = texture(texture0, tcGreen).g; - - vec2 thetaRed = theta1*(chromaAbParam.x + chromaAbParam.y*rSq); - vec2 tcRed = lensCenter + scale*thetaRed; - - float red = texture(texture0, tcRed).r; - finalColor = vec4(red, green, blue, 1.0); - } -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/text_file.txt b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/text_file.txt deleted file mode 100644 index 72b1a8b..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/text_file.txt +++ /dev/null @@ -1,18 +0,0 @@ -Starting of the Lorem ipsum dolor sit amet file -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at interdum ex, et iaculis quam. Mauris consectetur, magna vel malesuada aliquam, mauris enim venenatis arcu, nec cursus orci ante a massa. Curabitur libero elit, cursus eu odio eget, suscipit rhoncus nibh. Nam justo elit, ullamcorper eget dolor et, ullamcorper tristique nulla. Nullam sagittis dolor in tristique tincidunt. Duis ac porttitor erat, a molestie sapien. Aliquam finibus in ipsum quis venenatis. -Mauris odio lorem, pharetra ut egestas quis, tristique eu mauris. Cras sed gravida velit. Suspendisse potenti. Suspendisse lobortis eleifend fermentum. Donec eu dolor est. Etiam ac felis eu ligula auctor feugiat eu quis diam. Sed eleifend id nibh porta viverra. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi at tristique dui, nec pretium est. Mauris mollis massa quis massa aliquet efficitur. Phasellus posuere, elit id tempus consequat, massa ante scelerisque odio, finibus gravida elit tellus eget lectus. -Donec rutrum sagittis ligula a auctor. Aliquam aliquet tincidunt pulvinar. Aenean a porta ex. Aenean at sagittis nulla. Morbi congue luctus est nec gravida. In hac habitasse platea dictumst. Praesent commodo efficitur congue. Duis interdum enim in pharetra dapibus. Proin vestibulum finibus mauris vitae mollis. -Sed ultricies sed enim vel interdum. Nullam nec sagittis est, quis lobortis nunc. Donec auctor elementum velit vel pulvinar. Sed quis efficitur felis, at mollis elit. Integer id elit ante. Ut gravida ante vitae erat scelerisque scelerisque vel in massa. Praesent varius massa eu purus feugiat, non venenatis urna rhoncus. Pellentesque vehicula, tellus eu venenatis efficitur, libero eros lobortis justo, at ultricies lacus diam non libero. Sed metus nulla, consectetur in justo vitae, mollis maximus orci. Vestibulum dapibus ultrices leo, et facilisis odio molestie a. Phasellus facilisis vitae lorem quis viverra. Etiam imperdiet urna dolor, quis interdum ligula tristique id. Aliquam id dapibus enim. -Curabitur congue elit in magna tristique, sit amet porta quam viverra. Integer nec placerat libero. Praesent sem dolor, tristique eu augue non, ultricies mollis nibh. Fusce finibus, lorem sollicitudin eleifend gravida, eros quam tempus leo, ut iaculis libero ex vitae libero. Sed placerat fringilla accumsan. Nulla laoreet cursus justo nec elementum. Proin facilisis lobortis velit, a sollicitudin leo mollis eu. Aenean et leo est. -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at interdum ex, et iaculis quam. Mauris consectetur, magna vel malesuada aliquam, mauris enim venenatis arcu, nec cursus orci ante a massa. Curabitur libero elit, cursus eu odio eget, suscipit rhoncus nibh. Nam justo elit, ullamcorper eget dolor et, ullamcorper tristique nulla. Nullam sagittis dolor in tristique tincidunt. Duis ac porttitor erat, a molestie sapien. Aliquam finibus in ipsum quis venenatis. -Mauris odio lorem, pharetra ut egestas quis, tristique eu mauris. Cras sed gravida velit. Suspendisse potenti. Suspendisse lobortis eleifend fermentum. Donec eu dolor est. Etiam ac felis eu ligula auctor feugiat eu quis diam. Sed eleifend id nibh porta viverra. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi at tristique dui, nec pretium est. Mauris mollis massa quis massa aliquet efficitur. Phasellus posuere, elit id tempus consequat, massa ante scelerisque odio, finibus gravida elit tellus eget lectus. -Donec rutrum sagittis ligula a auctor. Aliquam aliquet tincidunt pulvinar. Aenean a porta ex. Aenean at sagittis nulla. Morbi congue luctus est nec gravida. In hac habitasse platea dictumst. Praesent commodo efficitur congue. Duis interdum enim in pharetra dapibus. Proin vestibulum finibus mauris vitae mollis. -Sed ultricies sed enim vel interdum. Nullam nec sagittis est, quis lobortis nunc. Donec auctor elementum velit vel pulvinar. Sed quis efficitur felis, at mollis elit. Integer id elit ante. Ut gravida ante vitae erat scelerisque scelerisque vel in massa. Praesent varius massa eu purus feugiat, non venenatis urna rhoncus. Pellentesque vehicula, tellus eu venenatis efficitur, libero eros lobortis justo, at ultricies lacus diam non libero. Sed metus nulla, consectetur in justo vitae, mollis maximus orci. Vestibulum dapibus ultrices leo, et facilisis odio molestie a. Phasellus facilisis vitae lorem quis viverra. Etiam imperdiet urna dolor, quis interdum ligula tristique id. Aliquam id dapibus enim. -wrapping text from the last available space wrapping text from the last available space wrapping text from the last available space -Curabitur congue elit in magna tristique, sit amet porta quam viverra. Integer nec placerat libero. Praesent sem dolor, tristique eu augue non, ultricies mollis nibh. Fusce finibus, lorem sollicitudin eleifend gravida, eros quam tempus leo, ut iaculis libero ex vitae libero. Sed placerat fringilla accumsan. Nulla laoreet cursus justo nec elementum. Proin facilisis lobortis velit, a sollicitudin leo mollis eu. Aenean et leo est. -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at interdum ex, et iaculis quam. Mauris consectetur, magna vel malesuada aliquam, mauris enim venenatis arcu, nec cursus orci ante a massa. Curabitur libero elit, cursus eu odio eget, suscipit rhoncus nibh. Nam justo elit, ullamcorper eget dolor et, ullamcorper tristique nulla. Nullam sagittis dolor in tristique tincidunt. Duis ac porttitor erat, a molestie sapien. Aliquam finibus in ipsum quis venenatis. -Mauris odio lorem, pharetra ut egestas quis, tristique eu mauris. Cras sed gravida velit. Suspendisse potenti. Suspendisse lobortis eleifend fermentum. Donec eu dolor est. Etiam ac felis eu ligula auctor feugiat eu quis diam. Sed eleifend id nibh porta viverra. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi at tristique dui, nec pretium est. Mauris mollis massa quis massa aliquet efficitur. Phasellus posuere, elit id tempus consequat, massa ante scelerisque odio, finibus gravida elit tellus eget lectus. -Donec rutrum sagittis ligula a auctor. Aliquam aliquet tincidunt pulvinar. Aenean a porta ex. Aenean at sagittis nulla. Morbi congue luctus est nec gravida. In hac habitasse platea dictumst. Praesent commodo efficitur congue. Duis interdum enim in pharetra dapibus. Proin vestibulum finibus mauris vitae mollis. -Sed ultricies sed enim vel interdum. Nullam nec sagittis est, quis lobortis nunc. Donec auctor elementum velit vel pulvinar. Sed quis efficitur felis, at mollis elit. Integer id elit ante. Ut gravida ante vitae erat scelerisque scelerisque vel in massa. Praesent varius massa eu purus feugiat, non venenatis urna rhoncus. Pellentesque vehicula, tellus eu venenatis efficitur, libero eros lobortis justo, at ultricies lacus diam non libero. Sed metus nulla, consectetur in justo vitae, mollis maximus orci. Vestibulum dapibus ultrices leo, et facilisis odio molestie a. Phasellus facilisis vitae lorem quis viverra. Etiam imperdiet urna dolor, quis interdum ligula tristique id. Aliquam id dapibus enim. -Curabitur congue elit in magna tristique, sit amet porta quam viverra. Integer nec placerat libero. Praesent sem dolor, tristique eu augue non, ultricies mollis nibh. Fusce finibus, lorem sollicitudin eleifend gravida, eros quam tempus leo, ut iaculis libero ex vitae libero. Sed placerat fringilla accumsan. Nulla laoreet cursus justo nec elementum. Proin facilisis lobortis velit, a sollicitudin leo mollis eu. Aenean et leo est. -Ending of the Lorem ipsum dolor sit amet file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/xbox.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/xbox.png deleted file mode 100644 index 1a57058..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/core/resources/xbox.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples.rc b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples.rc deleted file mode 100644 index 4b53143..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples.rc +++ /dev/null @@ -1,27 +0,0 @@ -GLFW_ICON ICON "raylib.ico" - -1 VERSIONINFO -FILEVERSION 6,0,0,0 -PRODUCTVERSION 6,0,0,0 -BEGIN - BLOCK "StringFileInfo" - BEGIN - //BLOCK "080904E4" // English UK - BLOCK "040904E4" // English US - BEGIN - VALUE "CompanyName", "raylib technologies" - VALUE "FileDescription", "raylib application (www.raylib.com)" - VALUE "FileVersion", "6.0.0" - VALUE "InternalName", "raylib-example" - VALUE "LegalCopyright", "(c) 2026 Ramon Santamaria (@raysan5)" - VALUE "OriginalFilename", "raylib-example" - VALUE "ProductName", "raylib-example" - VALUE "ProductVersion", "6.0.0" - END - END - BLOCK "VarFileInfo" - BEGIN - //VALUE "Translation", 0x809, 1252 // English UK - VALUE "Translation", 0x409, 1252 // English US - END -END diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples_list.txt b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples_list.txt deleted file mode 100644 index b5b27da..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples_list.txt +++ /dev/null @@ -1,223 +0,0 @@ -# -# raylib examples list with available .c example files -# -# WARNING: List is not ordered by example name but by the display order on web, -# so it can not be automatically generated scanning available .c code files, only updated -# new examples are added at the end of each category; it's up to the user to reorder them as desired -# -# examples data is listed as: ;;;;;;;""; -# -# This list is used as the main reference by [rexm] tool for examples collection validation and management -# -core;core_basic_window;★☆☆☆;1.0;1.0;2013;2025;"Ramon Santamaria";@raysan5 -core;core_delta_time;★☆☆☆;5.5;6.0;2025;2025;"Robin";@RobinsAviary -core;core_input_keys;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 -core;core_input_mouse;★☆☆☆;1.0;5.5;2014;2025;"Ramon Santamaria";@raysan5 -core;core_input_mouse_wheel;★☆☆☆;1.1;1.3;2014;2025;"Ramon Santamaria";@raysan5 -core;core_input_gamepad;★☆☆☆;1.1;4.2;2013;2025;"Ramon Santamaria";@raysan5 -core;core_input_multitouch;★☆☆☆;2.1;2.5;2019;2025;"Berni";@Berni8k -core;core_input_gestures;★★☆☆;1.4;4.2;2016;2025;"Ramon Santamaria";@raysan5 -core;core_input_gestures_testbed;★★★☆;5.0;6.0;2023;2025;"ubkp";@ubkp -core;core_input_virtual_controls;★★☆☆;5.0;5.0;2024;2025;"GreenSnakeLinux";@GreenSnakeLinux -core;core_2d_camera;★★☆☆;1.5;3.0;2016;2025;"Ramon Santamaria";@raysan5 -core;core_2d_camera_mouse_zoom;★★☆☆;4.2;4.2;2022;2025;"Jeffery Myers";@JeffM2501 -core;core_2d_camera_platformer;★★★☆;2.5;3.0;2019;2025;"arvyy";@arvyy -core;core_2d_camera_split_screen;★★★★;4.5;4.5;2023;2025;"Gabriel dos Santos Sanches";@gabrielssanches -core;core_3d_camera_mode;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 -core;core_3d_camera_free;★☆☆☆;1.3;1.3;2015;2025;"Ramon Santamaria";@raysan5 -core;core_3d_camera_first_person;★★☆☆;1.3;1.3;2015;2025;"Ramon Santamaria";@raysan5 -core;core_3d_camera_split_screen;★★★☆;3.7;4.0;2021;2025;"Jeffery Myers";@JeffM2501 -core;core_3d_camera_fps;★★★☆;5.5;5.5;2025;2025;"Agnis Aldiņš";@nezvers -core;core_3d_picking;★★☆☆;1.3;4.0;2015;2025;"Ramon Santamaria";@raysan5 -core;core_world_screen;★★☆☆;1.3;1.4;2015;2025;"Ramon Santamaria";@raysan5 -core;core_window_flags;★★★☆;3.5;3.5;2020;2025;"Ramon Santamaria";@raysan5 -core;core_window_letterbox;★★☆☆;2.5;4.0;2019;2025;"Anata";@anatagawa -core;core_window_should_close;★☆☆☆;4.2;4.2;2013;2025;"Ramon Santamaria";@raysan5 -core;core_monitor_detector;★☆☆☆;5.5;5.6;2025;2025;"Maicon Santana";@maiconpintoabreu -core;core_custom_logging;★★★☆;2.5;2.5;2018;2025;"Pablo Marcos Oltra";@pamarcos -core;core_drop_files;★★☆☆;1.3;4.2;2015;2025;"Ramon Santamaria";@raysan5 -core;core_random_values;★☆☆☆;1.1;1.1;2014;2025;"Ramon Santamaria";@raysan5 -core;core_storage_values;★★☆☆;1.4;4.2;2015;2025;"Ramon Santamaria";@raysan5 -core;core_vr_simulator;★★★☆;2.5;4.0;2017;2025;"Ramon Santamaria";@raysan5 -core;core_scissor_test;★☆☆☆;2.5;3.0;2019;2025;"Chris Dill";@MysteriousSpace -core;core_basic_screen_manager;★☆☆☆;4.0;4.0;2021;2025;"Ramon Santamaria";@raysan5 -core;core_custom_frame_control;★★★★;4.0;4.0;2021;2025;"Ramon Santamaria";@raysan5 -core;core_smooth_pixelperfect;★★★☆;3.7;4.0;2021;2025;"Giancamillo Alessandroni";@NotManyIdeasDev -core;core_random_sequence;★☆☆☆;5.0;5.0;2023;2025;"Dalton Overmyer";@REDl3east -core;core_automation_events;★★★☆;5.0;5.0;2023;2025;"Ramon Santamaria";@raysan5 -core;core_highdpi_demo;★★☆☆;5.0;5.5;2025;2025;"Jonathan Marler";@marler8997 -core;core_render_texture;★☆☆☆;6.0;6.0;2025;2025;"Ramon Santamaria";@raysan5 -core;core_undo_redo;★★★☆;5.5;5.6;2025;2025;"Ramon Santamaria";@raysan5 -core;core_viewport_scaling;★★☆☆;5.5;5.5;2025;2025;"Agnis Aldiņš";@nezvers -core;core_input_actions;★★☆☆;5.5;5.6;2025;2025;"Jett";@JettMonstersGoBoom -core;core_directory_files;★☆☆☆;5.5;5.6;2025;2025;"Hugo ARNAL";@hugoarnal -core;core_highdpi_testbed;★☆☆☆;6.0;6.0;2025;2025;"Ramon Santamaria";@raysan5 -core;core_screen_recording;★★☆☆;6.0;6.0;2025;2025;"Ramon Santamaria";@raysan5 -core;core_clipboard_text;★★☆☆;6.0;6.0;2025;2025;"Ananth S";@Ananth1839 -core;core_text_file_loading;★☆☆☆;5.5;5.6;0;0;"Aanjishnu Bhattacharyya";@NimComPoo-04 -core;core_compute_hash;★★☆☆;6.0;6.0;2025;2025;"Ramon Santamaria";@raysan5 -core;core_keyboard_testbed;★★☆☆;5.6;5.6;2026;2026;"Ramon Santamaria";@raysan5 -core;core_window_web;★☆☆☆;1.3;5.5;2015;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_basic_shapes;★☆☆☆;1.0;4.2;2014;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_bouncing_ball;★☆☆☆;2.5;2.5;2013;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_bullet_hell;★☆☆☆;5.6;5.6;2025;2025;"Zero";@zerohorsepower -shapes;shapes_colors_palette;★★☆☆;1.0;2.5;2014;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_logo_raylib;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_logo_raylib_anim;★★☆☆;2.5;4.0;2014;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_rectangle_scaling;★★☆☆;2.5;2.5;2018;2025;"Vlad Adrian";@demizdor -shapes;shapes_lines_bezier;★☆☆☆;1.7;1.7;2017;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_collision_area;★★☆☆;2.5;2.5;2013;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_following_eyes;★★☆☆;2.5;2.5;2013;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_easings_ball;★★☆☆;2.5;2.5;2014;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_easings_box;★★☆☆;2.5;2.5;2014;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_easings_rectangles;★★★☆;2.0;2.5;2014;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_recursive_tree;★★★☆;6.0;6.0;2025;2025;"Jopestpe";@jopestpe -shapes;shapes_ring_drawing;★★★☆;2.5;2.5;2018;2025;"Vlad Adrian";@demizdor -shapes;shapes_circle_sector_drawing;★★★☆;2.5;2.5;2018;2025;"Vlad Adrian";@demizdor -shapes;shapes_rounded_rectangle_drawing;★★★☆;2.5;2.5;2018;2025;"Vlad Adrian";@demizdor -shapes;shapes_top_down_lights;★★★★;4.2;4.2;2022;2025;"Jeffery Myers";@JeffM2501 -shapes;shapes_rectangle_advanced;★★★★;5.5;5.5;2024;2025;"Everton Jr.";@evertonse -shapes;shapes_splines_drawing;★★★☆;5.0;5.0;2023;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_digital_clock;★★★★;5.5;5.6;2025;2025;"Hamza RAHAL";@hmz-rhl -shapes;shapes_double_pendulum;★★☆☆;5.5;5.5;2025;2025;"JoeCheong";@Joecheong2006 -shapes;shapes_dashed_line;★☆☆☆;5.5;5.5;2025;2025;"Luís Almeida";@luis605 -shapes;shapes_triangle_strip;★★☆☆;6.0;6.0;2025;2025;"Jopestpe";@jopestpe -shapes;shapes_vector_angle;★★☆☆;1.0;5.0;2023;2025;"Ramon Santamaria";@raysan5 -shapes;shapes_pie_chart;★★★☆;5.5;5.6;2025;2025;"Gideon Serfontein";@GideonSerf -shapes;shapes_kaleidoscope;★★☆☆;5.5;5.6;2025;2025;"Hugo ARNAL";@hugoarnal -shapes;shapes_clock_of_clocks;★★☆☆;5.5;6.0;2025;2025;"JP Mortiboys";@themushroompirates -shapes;shapes_math_sine_cosine;★★☆☆;6.0;6.0;2025;2025;"Jopestpe";@jopestpe -shapes;shapes_mouse_trail;★☆☆☆;5.6;6.0;2025;2025;"Balamurugan R";@Bala050814 -shapes;shapes_simple_particles;★★☆☆;5.6;5.6;2025;2025;"Jordi Santonja";@JordSant -shapes;shapes_starfield_effect;★★☆☆;5.5;6.0;2025;2025;"JP Mortiboys";@themushroompirates -shapes;shapes_lines_drawing;★☆☆☆;6.0;5.6;2025;2025;"Robin";@RobinsAviary -shapes;shapes_math_angle_rotation;★☆☆☆;6.0;5.6;2025;2025;"Kris";@krispy-snacc -shapes;shapes_rlgl_color_wheel;★★★☆;6.0;6.0;2025;2025;"Robin";@RobinsAviary -shapes;shapes_rlgl_triangle;★★☆☆;6.0;6.0;2025;2025;"Robin";@RobinsAviary -shapes;shapes_ball_physics;★★☆☆;6.0;6.0;2025;2025;"David Buzatto";@davidbuzatto -shapes;shapes_penrose_tile;★★★★;5.5;6.0;2025;2025;"David Buzatto";@davidbuzatto -shapes;shapes_hilbert_curve;★★★☆;5.6;5.6;2025;2025;"Hamza RAHAL";@hmz-rhl -shapes;shapes_easings_testbed;★★★☆;2.5;2.5;2019;2025;"Juan Miguel López";@flashback-fx -textures;textures_clipboard_image;★☆☆☆;6.0;6.0;2026;2026;"Maicon Santana";@maiconpintoabreu -textures;textures_magnifying_glass;★★★☆;5.6;5.6;2026;2026;"Luke Vaughan";@badram -textures;textures_logo_raylib;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 -textures;textures_srcrec_dstrec;★★★☆;1.3;1.3;2015;2025;"Ramon Santamaria";@raysan5 -textures;textures_image_drawing;★★☆☆;1.4;1.4;2016;2025;"Ramon Santamaria";@raysan5 -textures;textures_image_generation;★★☆☆;1.8;1.8;2017;2025;"Wilhem Barbier";@nounoursheureux -textures;textures_image_loading;★☆☆☆;1.3;1.3;2015;2025;"Ramon Santamaria";@raysan5 -textures;textures_image_processing;★★★☆;1.4;3.5;2016;2025;"Ramon Santamaria";@raysan5 -textures;textures_image_text;★★☆☆;1.8;4.0;2017;2025;"Ramon Santamaria";@raysan5 -textures;textures_to_image;★☆☆☆;1.3;4.0;2015;2025;"Ramon Santamaria";@raysan5 -textures;textures_raw_data;★★★☆;1.3;3.5;2015;2025;"Ramon Santamaria";@raysan5 -textures;textures_particles_blending;★☆☆☆;1.7;3.5;2017;2025;"Ramon Santamaria";@raysan5 -textures;textures_npatch_drawing;★★★☆;2.0;2.5;2018;2025;"Jorge A. Gomes";@overdev -textures;textures_background_scrolling;★☆☆☆;2.0;2.5;2019;2025;"Ramon Santamaria";@raysan5 -textures;textures_sprite_animation;★★☆☆;1.3;1.3;2014;2025;"Ramon Santamaria";@raysan5 -textures;textures_sprite_button;★★☆☆;2.5;2.5;2019;2025;"Ramon Santamaria";@raysan5 -textures;textures_sprite_explosion;★★☆☆;2.5;3.5;2019;2025;"Ramon Santamaria";@raysan5 -textures;textures_bunnymark;★★★☆;1.6;2.5;2014;2025;"Ramon Santamaria";@raysan5 -textures;textures_mouse_painting;★★★☆;3.0;3.0;2019;2025;"Chris Dill";@MysteriousSpace -textures;textures_blend_modes;★☆☆☆;3.5;3.5;2020;2025;"Karlo Licudine";@accidentalrebel -textures;textures_tiled_drawing;★★★☆;3.0;4.2;2020;2025;"Vlad Adrian";@demizdor -textures;textures_polygon_drawing;★☆☆☆;3.7;3.7;2021;2025;"Chris Camacho";@chriscamacho -textures;textures_fog_of_war;★★★☆;4.2;4.2;2018;2025;"Ramon Santamaria";@raysan5 -textures;textures_gif_player;★★★☆;4.2;4.2;2021;2025;"Ramon Santamaria";@raysan5 -textures;textures_image_kernel;★★★★;1.3;1.3;2015;2025;"Karim Salem";@kimo-s -textures;textures_image_channel;★★☆☆;5.5;5.5;2024;2025;"Bruno Cabral";@brccabral -textures;textures_image_rotate;★★☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 -textures;textures_screen_buffer;★★☆☆;5.5;5.5;2025;2025;"Agnis Aldiņš";@nezvers -textures;textures_textured_curve;★★★☆;4.5;4.5;2022;2025;"Jeffery Myers";@JeffM2501 -textures;textures_sprite_stacking;★★☆☆;6.0;6.0;2025;2025;"Robin";@RobinsAviary -textures;textures_cellular_automata;★★☆☆;5.6;5.6;2025;2025;"Jordi Santonja";@JordSant -textures;textures_framebuffer_rendering;★★☆☆;5.6;5.6;2026;2026;"Jack Boakes";@jackboakes -text;text_sprite_fonts;★☆☆☆;1.7;3.7;2017;2025;"Ramon Santamaria";@raysan5 -text;text_font_spritefont;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 -text;text_font_filters;★★☆☆;1.3;4.2;2015;2025;"Ramon Santamaria";@raysan5 -text;text_font_loading;★☆☆☆;1.4;3.0;2016;2025;"Ramon Santamaria";@raysan5 -text;text_font_sdf;★★★☆;1.3;4.0;2015;2025;"Ramon Santamaria";@raysan5 -text;text_format_text;★☆☆☆;1.1;3.0;2014;2025;"Ramon Santamaria";@raysan5 -text;text_input_box;★★☆☆;1.7;3.5;2017;2025;"Ramon Santamaria";@raysan5 -text;text_writing_anim;★★☆☆;1.4;1.4;2016;2025;"Ramon Santamaria";@raysan5 -text;text_rectangle_bounds;★★★★;2.5;4.0;2018;2025;"Vlad Adrian";@demizdor -text;text_unicode_emojis;★★★★;2.5;4.0;2019;2025;"Vlad Adrian";@demizdor -text;text_unicode_ranges;★★★★;5.5;5.6;2025;2025;"Vadim Gunko";@GuvaCode -text;text_3d_drawing;★★★★;3.5;4.0;2021;2025;"Vlad Adrian";@demizdor -text;text_codepoints_loading;★★★☆;4.2;4.2;2022;2025;"Ramon Santamaria";@raysan5 -text;text_inline_styling;★★★☆;6.0;6.0;2025;2025;"Wagner Barongello";@SultansOfCode -text;text_words_alignment;★☆☆☆;6.0;6.0;2025;2025;"JP Mortiboys";@themushroompirates -text;text_strings_management;★★★☆;6.0;6.0;2025;2025;"David Buzatto";@davidbuzatto -models;models_loading_iqm;★★☆☆;2.5;3.5;2019;2025;"Culacant";@culacant -models;models_billboard_rendering;★★★☆;1.3;3.5;2015;2025;"Ramon Santamaria";@raysan5 -models;models_box_collisions;★☆☆☆;1.3;3.5;2015;2025;"Ramon Santamaria";@raysan5 -models;models_cubicmap_rendering;★★☆☆;1.8;3.5;2015;2025;"Ramon Santamaria";@raysan5 -models;models_first_person_maze;★★☆☆;2.5;3.5;2019;2025;"Ramon Santamaria";@raysan5 -models;models_geometric_shapes;★☆☆☆;1.0;3.5;2014;2025;"Ramon Santamaria";@raysan5 -models;models_mesh_generation;★★☆☆;1.8;4.0;2017;2025;"Ramon Santamaria";@raysan5 -models;models_mesh_picking;★★★☆;1.7;4.0;2017;2025;"Joel Davis";@joeld42 -models;models_loading;★☆☆☆;2.0;4.2;2014;2025;"Ramon Santamaria";@raysan5 -models;models_loading_gltf;★☆☆☆;3.7;4.2;2020;2025;"Ramon Santamaria";@raysan5 -models;models_loading_vox;★☆☆☆;4.0;4.0;2021;2025;"Johann Nadalutti";@procfxgen -models;models_loading_m3d;★★☆☆;4.5;4.5;2022;2025;"bzt";@bztsrc -models;models_orthographic_projection;★☆☆☆;2.0;3.7;2018;2025;"Max Danielsson";@autious -models;models_point_rendering;★★★☆;5.0;5.0;2024;2025;"Reese Gallagher";@satchelfrost -models;models_rlgl_solar_system;★★★★;2.5;4.0;2018;2025;"Ramon Santamaria";@raysan5 -models;models_yaw_pitch_roll;★★☆☆;1.8;4.0;2017;2025;"Berni";@Berni8k -models;models_waving_cubes;★★★☆;2.5;3.7;2019;2025;"Codecat";@codecat -models;models_heightmap_rendering;★☆☆☆;1.8;3.5;2015;2025;"Ramon Santamaria";@raysan5 -models;models_skybox_rendering;★★☆☆;1.8;4.0;2017;2025;"Ramon Santamaria";@raysan5 -models;models_textured_cube;★★☆☆;4.5;4.5;2022;2025;"Ramon Santamaria";@raysan5 -models;models_animation_gpu_skinning;★★★☆;4.5;4.5;2024;2025;"Daniel Holden";@orangeduck -models;models_bone_socket;★★★★;4.5;4.5;2024;2025;"iP";@ipzaur -models;models_tesseract_view;★★☆☆;6.0;6.0;2024;2025;"Timothy van der Valk";@arceryz -models;models_basic_voxel;★★☆☆;5.5;5.5;2025;2025;"Tim Little";@timlittle -models;models_rotating_cube;★☆☆☆;6.0;6.0;2025;2025;"Jopestpe";@jopestpe -models;models_decals;★★★★;6.0;6.0;2025;2025;"JP Mortiboys";@themushroompirates -models;models_directional_billboard;★★☆☆;6.0;6.0;2025;2025;"Robin";@RobinsAviary -models;models_animation_blend_custom;★★★★;5.5;6.0;2026;2026;"dmitrii-brand";@dmitrii-brand -models;models_animation_blending;★★★★;5.5;6.0;2024;2026;"Kirandeep";@Kirandeep-Singh-Khehra -models;models_animation_timing;★★★☆;6.0;6.0;2026;2026;"Ramon Santamaria";@raysan5 -shaders;shaders_ascii_rendering;★★☆☆;5.5;6.0;2025;2025;"Maicon Santana";@maiconpintoabreu -shaders;shaders_basic_lighting;★★★★;3.0;4.2;2019;2025;"Chris Camacho";@chriscamacho -shaders;shaders_model_shader;★★☆☆;1.3;3.7;2014;2025;"Ramon Santamaria";@raysan5 -shaders;shaders_shapes_textures;★★☆☆;1.7;3.7;2015;2025;"Ramon Santamaria";@raysan5 -shaders;shaders_custom_uniform;★★☆☆;1.3;4.0;2015;2025;"Ramon Santamaria";@raysan5 -shaders;shaders_postprocessing;★★★☆;1.3;4.0;2015;2025;"Ramon Santamaria";@raysan5 -shaders;shaders_palette_switch;★★★☆;2.5;3.7;2019;2025;"Marco Lizza";@MarcoLizza -shaders;shaders_raymarching_rendering;★★★★;2.0;4.2;2018;2025;"Ramon Santamaria";@raysan5 -shaders;shaders_texture_rendering;★★☆☆;2.0;3.7;2019;2025;"Michał Ciesielski";@ciessielski -shaders;shaders_texture_outline;★★★☆;4.0;4.0;2021;2025;"Serenity Skiff";@GoldenThumbs -shaders;shaders_texture_waves;★★☆☆;2.5;3.7;2019;2025;"Anata";@anatagawa -shaders;shaders_julia_set;★★★☆;2.5;4.0;2019;2025;"Josh Colclough";@joshcol9232 -shaders;shaders_mandelbrot_set;★★★☆;6.0;6.0;2025;2025;"Jordi Santonja";@JordSant -shaders;shaders_color_correction;★★☆☆;6.0;6.0;2025;2025;"Jordi Santonja";@JordSant -shaders;shaders_eratosthenes_sieve;★★★☆;2.5;4.0;2019;2025;"ProfJski";@ProfJski -shaders;shaders_fog_rendering;★★★☆;2.5;3.7;2019;2025;"Chris Camacho";@chriscamacho -shaders;shaders_simple_mask;★★☆☆;2.5;3.7;2019;2025;"Chris Camacho";@chriscamacho -shaders;shaders_hot_reloading;★★★☆;3.0;3.5;2020;2025;"Ramon Santamaria";@raysan5 -shaders;shaders_mesh_instancing;★★★★;3.7;4.2;2020;2025;"seanpringle";@seanpringle -shaders;shaders_multi_sample2d;★★☆☆;3.5;3.5;2020;2025;"Ramon Santamaria";@raysan5 -shaders;shaders_normalmap_rendering;★★★★;6.0;6.0;2025;2025;"Jeremy Montgomery";@Sir_Irk -shaders;shaders_spotlight_rendering;★★☆☆;2.5;3.7;2019;2025;"Chris Camacho";@chriscamacho -shaders;shaders_deferred_rendering;★★★★;4.5;4.5;2023;2025;"Justin Andreas Lacoste";@27justin -shaders;shaders_hybrid_rendering;★★★★;4.2;4.2;2022;2025;"Buğra Alptekin Sarı";@BugraAlptekinSari -shaders;shaders_texture_tiling;★★☆☆;4.5;4.5;2023;2025;"Luis Almeida";@luis605 -shaders;shaders_shadowmap_rendering;★★★★;5.0;5.0;2023;2025;"TheManTheMythTheGameDev";@TheManTheMythTheGameDev -shaders;shaders_vertex_displacement;★★★☆;5.0;4.5;2023;2025;"Alex ZH";@ZzzhHe -shaders;shaders_depth_writing;★★☆☆;4.2;4.2;2022;2025;"Buğra Alptekin Sarı";@BugraAlptekinSari -shaders;shaders_basic_pbr;★★★★;5.0;5.5;2023;2025;"Afan OLOVCIC";@_DevDad -shaders;shaders_lightmap_rendering;★★★☆;4.5;4.5;2019;2025;"Jussi Viitala";@nullstare -shaders;shaders_rounded_rectangle;★★★☆;5.5;5.5;2025;2025;"Anstro Pleuton";@anstropleuton -shaders;shaders_depth_rendering;★★★☆;6.0;6.0;2025;2025;"Luís Almeida";@luis605 -shaders;shaders_game_of_life;★★★☆;6.0;6.0;2025;2025;"Jordi Santonja";@JordSant -shaders;shaders_rlgl_compute;★★★★;4.0;4.0;2021;2025;"Teddy Astie";@tsnake41 -shaders;shaders_cel_shading;★★★☆;6.0;6.0;2026;2026;"Gleb A";@ggrizzly -audio;audio_module_playing;★☆☆☆;1.5;3.5;2016;2025;"Ramon Santamaria";@raysan5 -audio;audio_music_stream;★☆☆☆;1.3;4.2;2015;2025;"Ramon Santamaria";@raysan5 -audio;audio_raw_stream;★★★☆;1.6;6.0;2015;2026;"Ramon Santamaria";@raysan5 -audio;audio_sound_loading;★☆☆☆;1.1;3.5;2014;2025;"Ramon Santamaria";@raysan5 -audio;audio_mixed_processor;★★★★;4.2;4.2;2023;2025;"hkc";@hatkidchan -audio;audio_stream_effects;★★★★;4.2;5.0;2022;2025;"Ramon Santamaria";@raysan5 -audio;audio_sound_multi;★★☆☆;5.0;5.0;2023;2025;"Jeffery Myers";@JeffM2501 -audio;audio_sound_positioning;★★☆☆;5.5;5.5;2025;2025;"Le Juez Victor";@Bigfoot71 -audio;audio_spectrum_visualizer;★★★☆;6.0;6.0;2025;2025;"IANN";@meisei4 -audio;audio_stream_callback;★★★☆;6.0;6.0;2026;2026;"Dan Hoang";@dan-hoang diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples_template.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples_template.c deleted file mode 100644 index 211749e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples_template.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - WELCOME raylib EXAMPLES CONTRIBUTOR! - - This is a basic template to anyone ready to contribute with some code example for the library, - here there are some guidelines on how to create an example to be included in raylib - - 1. File naming: _ - Lower case filename, words separated by underscore, - no more than 3-4 words in total to describe the example. referes to the primary - raylib module the example is more related with (code, shapes, textures, models, shaders, raudio) - i.e: core_input_multitouch, shapes_lines_bezier, shaders_palette_switch - - 2. Follow below template structure, example info should list the module, the short description - and the author of the example, twitter or github info could be also provided for the author - Short description should also be used on the title of the window - - 3. Code should be organized by sections:[Initialization]- [Update] - [Draw] - [De-Initialization] - Place your code between the dotted lines for every section, please don't mix update logic with drawing - and remember to unload all loaded resources - - 4. Code should follow raylib conventions: https://github.com/raysan5/raylib/wiki/raylib-coding-conventions - Try to be very organized, using line-breaks appropiately - - 5. Add comments to the specific parts of code the example is focus on - Don't abuse with comments, try to be clear and impersonal on the comments - - 6. Try to keep the example simple, under 300 code lines if possible. Try to avoid external dependencies - Try to avoid defining functions outside the main(). Example should be as self-contained as possible - - 7. About external resources, they should be placed in a [resources] folder and those resources - should be open and free for use and distribution. Avoid propietary content - - 8. Try to keep the example simple but with a creative touch - Simple but beautiful examples are more appealing to users! - - 9. In case of additional information is required, just come to raylib Discord channel: example-contributions - - 10. Have fun! - - The following files must be updated when adding a new example, - but it can be automatically done using the raylib provided tool: rexm - So, no worries if just the .c/.png are provided when adding the example. - - - raylib/examples//_example_name.c - - raylib/examples//_example_name.png - - raylib/examples//resources/.. - - raylib/examples/Makefile - - raylib/examples/Makefile.Web - - raylib/examples/README.md - - raylib/projects/VS2022/examples/_example_name.vcxproj - - raylib/projects/VS2022/raylib.sln - - raylib.com/common/examples.js - - raylib.com/examples//_example_name.html - - raylib.com/examples//_example_name.data - - raylib.com/examples//_example_name.wasm - - raylib.com/examples//_example_name.js -*/ - -/******************************************************************************************* -* -* raylib [] example - -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.6 -* -* Example contributed by (@) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) - (@) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [] example - "); - - // TODO: Load resources / Initialize variables at this point - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // TODO: Update variables / Implement example logic at this point - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - // TODO: Draw everything that requires to be drawn at this point - - DrawLineEx((Vector2){ 0, 0 }, (Vector2){ screenWidth, screenHeight }, 2.0f, RED); - DrawLineEx((Vector2){ 0, screenHeight }, (Vector2){ screenWidth, 0 }, 2.0f, RED); - DrawText("example base code template", 260, 400, 20, LIGHTGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - - // TODO: Unload all loaded resources at this point - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples_template.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples_template.png deleted file mode 100644 index da99bbb..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/examples_template.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blend_custom.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blend_custom.c deleted file mode 100644 index 018012e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blend_custom.c +++ /dev/null @@ -1,331 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - animation blend custom -* -* Example complexity rating: [★★★★] 4/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 6.0 -* -* Example contributed by dmitrii-brand (@dmitrii-brand) and reviewed by Ramon Santamaria (@raysan5) -* -* DETAILS: Example demonstrates per-bone animation blending, allowing smooth transitions -* between two animations by interpolating bone transforms. This is useful for: -* - Blending movement animations (walk/run) with action animations (jump/attack) -* - Creating smooth animation transitions -* - Layering animations (e.g., upper body attack while lower body walks) -* -* WARNING: GPU skinning must be enabled in raylib with a compilation flag, -* if not enabled, CPU skinning will be used instead -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2026 dmitrii-brand (@dmitrii-brand) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -#include "rlgl.h" // Requried for: rlUpdateVertexBuffer() (CPU-skinning) - -#include // Required for: memcpy() -#include // Required for: NULL - -#if defined(PLATFORM_DESKTOP) - #define GLSL_VERSION 330 -#else // PLATFORM_ANDROID, PLATFORM_WEB - #define GLSL_VERSION 100 -#endif - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static bool IsUpperBodyBone(const char *boneName); -static void UpdateModelAnimationBones(Model *model, ModelAnimation *anim1, int frame1, - ModelAnimation *anim2, int frame2, float blend, bool upperBodyBlend); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - animation blend custom"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 4.0f, 4.0f, 4.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load gltf model - Model model = LoadModel("resources/models/gltf/greenman.glb"); - Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position - - // Load skinning shader - // WARNING: GPU skinning must be enabled in raylib with a compilation flag, - // if not enabled, CPU skinning will be used instead - Shader skinningShader = LoadShader(TextFormat("resources/shaders/glsl%i/skinning.vs", GLSL_VERSION), - TextFormat("resources/shaders/glsl%i/skinning.fs", GLSL_VERSION)); - model.materials[1].shader = skinningShader; - - // Load gltf model animations - int animCount = 0; - ModelAnimation *anims = LoadModelAnimations("resources/models/gltf/greenman.glb", &animCount); - - // Use specific animation indices: 2-walk/move, 3-attack - int animIndex0 = 2; // Walk/Move animation (index 2) - int animIndex1 = 3; // Attack animation (index 3) - int animCurrentFrame0 = 0; - int animCurrentFrame1 = 0; - - // Validate indices - if (animIndex0 >= animCount) animIndex0 = 0; - if (animIndex1 >= animCount) animIndex1 = (animCount > 1) ? 1 : 0; - - bool upperBodyBlend = true; // Toggle: true = upper/lower body blending, false = uniform blending (50/50) - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - // Toggle upper/lower body blending mode (SPACE key) - if (IsKeyPressed(KEY_SPACE)) upperBodyBlend = !upperBodyBlend; - - // Update animation frames - ModelAnimation anim0 = anims[animIndex0]; - ModelAnimation anim1 = anims[animIndex1]; - - animCurrentFrame0 = (animCurrentFrame0 + 1)%anim0.keyframeCount; - animCurrentFrame1 = (animCurrentFrame1 + 1)%anim1.keyframeCount; - - // Blend the two animations - // When upperBodyBlend is ON: upper body = attack (1.0), lower body = walk (0.0) - // When upperBodyBlend is OFF: uniform blend at 0.5 (50% walk, 50% attack) - float blendFactor = (upperBodyBlend? 1.0f : 0.5f); - UpdateModelAnimationBones(&model, &anim0, animCurrentFrame0, - &anim1, animCurrentFrame1, blendFactor, upperBodyBlend); - - // raylib provided animation blending function - //UpdateModelAnimationEx(model, anim0, (float)animCurrentFrame0, - // anim1, (float)animCurrentFrame1, blendFactor); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModel(model, position, 1.0f, WHITE); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - // Draw UI - DrawText(TextFormat("ANIM 0: %s", anim0.name), 10, 10, 20, GRAY); - DrawText(TextFormat("ANIM 1: %s", anim1.name), 10, 40, 20, GRAY); - DrawText(TextFormat("[SPACE] Toggle blending mode: %s", - upperBodyBlend? "Upper/Lower Body Blending" : "Uniform Blending"), - 10, GetScreenHeight() - 30, 20, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModelAnimations(anims, animCount); // Unload model animation - UnloadModel(model); // Unload model and meshes/material - UnloadShader(skinningShader); // Unload GPU skinning shader - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -// Check if a bone is part of upper body (for selective blending) -static bool IsUpperBodyBone(const char *boneName) -{ - // Common upper body bone names (adjust based on your model) - if (TextIsEqual(boneName, "spine") || TextIsEqual(boneName, "spine1") || TextIsEqual(boneName, "spine2") || - TextIsEqual(boneName, "chest") || TextIsEqual(boneName, "upperChest") || - TextIsEqual(boneName, "neck") || TextIsEqual(boneName, "head") || - TextIsEqual(boneName, "shoulder") || TextIsEqual(boneName, "shoulder_L") || TextIsEqual(boneName, "shoulder_R") || - TextIsEqual(boneName, "upperArm") || TextIsEqual(boneName, "upperArm_L") || TextIsEqual(boneName, "upperArm_R") || - TextIsEqual(boneName, "lowerArm") || TextIsEqual(boneName, "lowerArm_L") || TextIsEqual(boneName, "lowerArm_R") || - TextIsEqual(boneName, "hand") || TextIsEqual(boneName, "hand_L") || TextIsEqual(boneName, "hand_R") || - TextIsEqual(boneName, "clavicle") || TextIsEqual(boneName, "clavicle_L") || TextIsEqual(boneName, "clavicle_R")) - { - return true; - } - - // Check if bone name contains upper body keywords - if (strstr(boneName, "spine") != NULL || strstr(boneName, "chest") != NULL || - strstr(boneName, "neck") != NULL || strstr(boneName, "head") != NULL || - strstr(boneName, "shoulder") != NULL || strstr(boneName, "arm") != NULL || - strstr(boneName, "hand") != NULL || strstr(boneName, "clavicle") != NULL) - { - return true; - } - - return false; -} - -// Blend two animations per-bone with selective upper/lower body blending -static void UpdateModelAnimationBones(Model *model, ModelAnimation *anim0, int frame0, - ModelAnimation *anim1, int frame1, float blend, bool upperBodyBlend) -{ - // Validate inputs - if ((anim0->boneCount != 0) && (anim0->keyframePoses != NULL) && - (anim1->boneCount != 0) && (anim1->keyframePoses != NULL) && - (model->skeleton.boneCount != 0) && (model->skeleton.bindPose != NULL)) - { - // Clamp blend factor to [0, 1] - blend = fminf(1.0f, fmaxf(0.0f, blend)); - - // Ensure frame indices are valid - if (frame0 >= anim0->keyframeCount) frame0 = anim0->keyframeCount - 1; - if (frame1 >= anim1->keyframeCount) frame1 = anim1->keyframeCount - 1; - if (frame0 < 0) frame0 = 0; - if (frame1 < 0) frame1 = 0; - - // Get bone count (use minimum of all to be safe) - int boneCount = model->skeleton.boneCount; - if (anim0->boneCount < boneCount) boneCount = anim0->boneCount; - if (anim1->boneCount < boneCount) boneCount = anim1->boneCount; - - // Blend each bone - for (int boneIndex = 0; boneIndex < boneCount; boneIndex++) - { - // Determine blend factor for this bone - float boneBlendFactor = blend; - - // If upper body blending is enabled, use different blend factors for upper vs lower body - if (upperBodyBlend) - { - const char *boneName = model->skeleton.bones[boneIndex].name; - bool isUpperBody = IsUpperBodyBone(boneName); - - // Upper body: use anim1 (attack), Lower body: use anim0 (walk) - // blend = 0.0 means full anim0 (walk), 1.0 means full anim1 (attack) - if (isUpperBody) boneBlendFactor = blend; // Upper body: blend towards anim1 (attack) - else boneBlendFactor = 1.0f - blend; // Lower body: blend towards anim0 (walk) - invert the blend - } - - // Get transforms from both animations - Transform *bindTransform = &model->skeleton.bindPose[boneIndex]; - Transform *animTransform0 = &anim0->keyframePoses[frame0][boneIndex]; - Transform *animTransform1 = &anim1->keyframePoses[frame1][boneIndex]; - - // Blend the transforms - Transform blended = { 0 }; - blended.translation = Vector3Lerp(animTransform0->translation, animTransform1->translation, boneBlendFactor); - blended.rotation = QuaternionSlerp(animTransform0->rotation, animTransform1->rotation, boneBlendFactor); - blended.scale = Vector3Lerp(animTransform0->scale, animTransform1->scale, boneBlendFactor); - - // Convert bind pose to matrix - Matrix bindMatrix = MatrixMultiply(MatrixMultiply( - MatrixScale(bindTransform->scale.x, bindTransform->scale.y, bindTransform->scale.z), - QuaternionToMatrix(bindTransform->rotation)), - MatrixTranslate(bindTransform->translation.x, bindTransform->translation.y, bindTransform->translation.z)); - - // Convert blended transform to matrix - Matrix blendedMatrix = MatrixMultiply(MatrixMultiply( - MatrixScale(blended.scale.x, blended.scale.y, blended.scale.z), - QuaternionToMatrix(blended.rotation)), - MatrixTranslate(blended.translation.x, blended.translation.y, blended.translation.z)); - - // Calculate final bone matrix (similar to UpdateModelAnimationBones) - model->boneMatrices[boneIndex] = MatrixMultiply(MatrixInvert(bindMatrix), blendedMatrix); - } - - // CPU skinning, updates CPU buffers and uploads them to GPU (if available) - // NOTE: Fallback in case GPU skinning is not supported or enabled - for (int m = 0; m < model->meshCount; m++) - { - Mesh mesh = model->meshes[m]; - Vector3 animVertex = { 0 }; - Vector3 animNormal = { 0 }; - const int vertexValuesCount = mesh.vertexCount*3; - - int boneIndex = 0; - int boneCounter = 0; - float boneWeight = 0.0f; - bool bufferUpdateRequired = false; // Flag to check when anim vertex information is updated - - // Skip if missing bone data or missing anim buffers initialization - if ((mesh.boneWeights == NULL) || (mesh.boneIndices == NULL) || - (mesh.animVertices == NULL) || (mesh.animNormals == NULL)) continue; - - for (int vCounter = 0; vCounter < vertexValuesCount; vCounter += 3) - { - mesh.animVertices[vCounter] = 0; - mesh.animVertices[vCounter + 1] = 0; - mesh.animVertices[vCounter + 2] = 0; - if (mesh.animNormals != NULL) - { - mesh.animNormals[vCounter] = 0; - mesh.animNormals[vCounter + 1] = 0; - mesh.animNormals[vCounter + 2] = 0; - } - - // Iterates over 4 bones per vertex - for (int j = 0; j < 4; j++, boneCounter++) - { - boneWeight = mesh.boneWeights[boneCounter]; - boneIndex = mesh.boneIndices[boneCounter]; - - // Early stop when no transformation will be applied - if (boneWeight == 0.0f) continue; - animVertex = (Vector3){ mesh.vertices[vCounter], mesh.vertices[vCounter + 1], mesh.vertices[vCounter + 2] }; - animVertex = Vector3Transform(animVertex, model->boneMatrices[boneIndex]); - mesh.animVertices[vCounter] += animVertex.x*boneWeight; - mesh.animVertices[vCounter + 1] += animVertex.y*boneWeight; - mesh.animVertices[vCounter + 2] += animVertex.z*boneWeight; - bufferUpdateRequired = true; - - // Normals processing - // NOTE: We use meshes.baseNormals (default normal) to calculate meshes.normals (animated normals) - if ((mesh.normals != NULL) && (mesh.animNormals != NULL )) - { - animNormal = (Vector3){ mesh.normals[vCounter], mesh.normals[vCounter + 1], mesh.normals[vCounter + 2] }; - animNormal = Vector3Transform(animNormal, MatrixTranspose(MatrixInvert(model->boneMatrices[boneIndex]))); - mesh.animNormals[vCounter] += animNormal.x*boneWeight; - mesh.animNormals[vCounter + 1] += animNormal.y*boneWeight; - mesh.animNormals[vCounter + 2] += animNormal.z*boneWeight; - } - } - } - - if (bufferUpdateRequired) - { - // Update GPU vertex buffers with updated data (position + normals) - rlUpdateVertexBuffer(mesh.vboId[SHADER_LOC_VERTEX_POSITION], mesh.animVertices, mesh.vertexCount*3*sizeof(float), 0); - if (mesh.normals != NULL) rlUpdateVertexBuffer(mesh.vboId[SHADER_LOC_VERTEX_NORMAL], mesh.animNormals, mesh.vertexCount*3*sizeof(float), 0); - } - } - } -} - diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blend_custom.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blend_custom.png deleted file mode 100644 index 95ea1da..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blend_custom.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blending.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blending.c deleted file mode 100644 index 63eba61..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blending.c +++ /dev/null @@ -1,278 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - animation blending -* -* Example complexity rating: [★★★★] 4/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 6.0 -* -* Example contributed by Kirandeep (@Kirandeep-Singh-Khehra) and reviewed by Ramon Santamaria (@raysan5) -* -* WARNING: GPU skinning must be enabled in raylib with a compilation flag, -* if not enabled, CPU skinning will be used instead -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2024-2026 Kirandeep (@Kirandeep-Singh-Khehra) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "raygui.h" // Required for: UI controls - -#if defined(PLATFORM_DESKTOP) - #define GLSL_VERSION 330 -#else // PLATFORM_ANDROID, PLATFORM_WEB - #define GLSL_VERSION 100 -#endif - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - animation blending"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 6.0f, 6.0f, 6.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load model - Model model = LoadModel("resources/models/gltf/robot.glb"); // Load character model - Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model world position - - // Load skinning shader - // WARNING: It requires SUPPORT_GPU_SKINNING enabled on raylib (disabled by default) - Shader skinningShader = LoadShader(TextFormat("resources/shaders/glsl%i/skinning.vs", GLSL_VERSION), - TextFormat("resources/shaders/glsl%i/skinning.fs", GLSL_VERSION)); - - // Assign skinning shader to all materials shaders - //for (int i = 0; i < model.materialCount; i++) model.materials[i].shader = skinningShader; - - // Load model animations - int animCount = 0; - ModelAnimation *anims = LoadModelAnimations("resources/models/gltf/robot.glb", &animCount); - - // Animation playing variables - // NOTE: Two animations are played with a smooth transition between them - int currentAnimPlaying = 0; // Current animation playing (0 o 1) - int nextAnimToPlay = 1; // Next animation to play (to transition) - bool animTransition = false; // Flag to register anim transition state - - int animIndex0 = 10; // Current animation playing (walking) - float animCurrentFrame0 = 0.0f; // Current animation frame (supporting interpolated frames) - float animFrameSpeed0 = 0.5f; // Current animation play speed - int animIndex1 = 6; // Next animation to play (running) - float animCurrentFrame1 = 0.0f; // Next animation frame (supporting interpolated frames) - float animFrameSpeed1 = 0.5f; // Next animation play speed - - float animBlendFactor = 0.0f; // Blend factor from anim0[frame0] --> anim1[frame1], [0.0f..1.0f] - // NOTE: 0.0f results in full anim0[] and 1.0f in full anim1[] - - float animBlendTime = 2.0f; // Time to blend from one playing animation to another (in seconds) - float animBlendTimeCounter = 0.0f; // Time counter (delta time) - - bool animPause = false; // Pause animation - - // UI required variables - char *animNames[64] = { 0 }; // Pointers to animation names for dropdown box - for (int i = 0; i < animCount; i++) animNames[i] = anims[i].name; - - bool dropdownEditMode0 = false; - bool dropdownEditMode1 = false; - float animFrameProgress0 = 0.0f; - float animFrameProgress1 = 0.0f; - float animBlendProgress = 0.0f; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - if (IsKeyPressed(KEY_P)) animPause = !animPause; - - if (!animPause) - { - // Start transition from anim0[] to anim1[] - if (IsKeyPressed(KEY_SPACE) && !animTransition) - { - if (currentAnimPlaying == 0) - { - // Transition anim0 --> anim1 - nextAnimToPlay = 1; - animCurrentFrame1 = 0.0f; - } - else - { - // Transition anim1 --> anim0 - nextAnimToPlay = 0; - animCurrentFrame0 = 0.0f; - } - - // Set animation transition - animTransition = true; - animBlendTimeCounter = 0.0f; - animBlendFactor = 0.0f; - } - - if (animTransition) - { - // Playing anim0 and anim1 at the same time - animCurrentFrame0 += animFrameSpeed0; - if (animCurrentFrame0 >= anims[animIndex0].keyframeCount) animCurrentFrame0 = 0.0f; - animCurrentFrame1 += animFrameSpeed1; - if (animCurrentFrame1 >= anims[animIndex1].keyframeCount) animCurrentFrame1 = 0.0f; - - // Increment blend factor over time to transition from anim0 --> anim1 over time - // NOTE: Time blending could be other than linear, using some easing - animBlendFactor = animBlendTimeCounter/animBlendTime; - animBlendTimeCounter += GetFrameTime(); - animBlendProgress = animBlendFactor; - - // Update model with animations blending - if (nextAnimToPlay == 1) - { - // Blend anim0 --> anim1 - UpdateModelAnimationEx(model, anims[animIndex0], animCurrentFrame0, - anims[animIndex1], animCurrentFrame1, animBlendFactor); - } - else - { - // Blend anim1 --> anim0 - UpdateModelAnimationEx(model, anims[animIndex1], animCurrentFrame1, - anims[animIndex0], animCurrentFrame0, animBlendFactor); - } - - // Check if transition completed - if (animBlendFactor > 1.0f) - { - // Reset frame states - if (currentAnimPlaying == 0) animCurrentFrame0 = 0.0f; - else if (currentAnimPlaying == 1) animCurrentFrame1 = 0.0f; - currentAnimPlaying = nextAnimToPlay; // Update current animation playing - - animBlendFactor = 0.0f; // Reset blend factor - animTransition = false; // Exit transition mode - animBlendTimeCounter = 0.0f; - } - } - else - { - // Play only one anim, the current one - if (currentAnimPlaying == 0) - { - // Playing anim0 at defined speed - animCurrentFrame0 += animFrameSpeed0; - if (animCurrentFrame0 >= anims[animIndex0].keyframeCount) animCurrentFrame0 = 0.0f; - UpdateModelAnimation(model, anims[animIndex0], animCurrentFrame0); - //UpdateModelAnimationEx(model, anims[animIndex0], animCurrentFrame0, - // anims[animIndex1], animCurrentFrame1, 0.0f); // Same as above, first animation frame blend - } - else if (currentAnimPlaying == 1) - { - // Playing anim1 at defined speed - animCurrentFrame1 += animFrameSpeed1; - if (animCurrentFrame1 >= anims[animIndex1].keyframeCount) animCurrentFrame1 = 0.0f; - UpdateModelAnimation(model, anims[animIndex1], animCurrentFrame1); - //UpdateModelAnimationEx(model, anims[animIndex0], animCurrentFrame0, - // anims[animIndex1], animCurrentFrame1, 1.0f); // Same as above, second animation frame blend - } - } - } - - // Update progress bars values with current frame for each animation - animFrameProgress0 = animCurrentFrame0; - animFrameProgress1 = animCurrentFrame1; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModel(model, position, 1.0f, WHITE); // Draw animated model - - DrawGrid(10, 1.0f); - - EndMode3D(); - - if (animTransition) DrawText("ANIM TRANSITION BLENDING!", 170, 50, 30, BLUE); - - // Draw UI elements - //--------------------------------------------------------------------------------------------- - if (dropdownEditMode0) GuiDisable(); - GuiSlider((Rectangle){ 10, 38, 160, 12 }, - NULL, TextFormat("x%.1f", animFrameSpeed0), &animFrameSpeed0, 0.1f, 2.0f); - GuiEnable(); - if (dropdownEditMode1) GuiDisable(); - GuiSlider((Rectangle){ GetScreenWidth() - 170.0f, 38, 160, 12 }, - TextFormat("%.1fx", animFrameSpeed1), NULL, &animFrameSpeed1, 0.1f, 2.0f); - GuiEnable(); - - // Draw animation selectors for blending transition - // NOTE: Transition does not start until requested - GuiSetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING, 1); - if (GuiDropdownBox((Rectangle){ 10, 10, 160, 24 }, TextJoin(animNames, animCount, ";"), - &animIndex0, dropdownEditMode0)) dropdownEditMode0 = !dropdownEditMode0; - - // Blending process progress bar - if (nextAnimToPlay == 1) GuiSetStyle(PROGRESSBAR, PROGRESS_SIDE, 0); // Left-->Right - else GuiSetStyle(PROGRESSBAR, PROGRESS_SIDE, 1); // Right-->Left - GuiProgressBar((Rectangle){ 180, 14, 440, 16 }, NULL, NULL, &animBlendProgress, 0.0f, 1.0f); - GuiSetStyle(PROGRESSBAR, PROGRESS_SIDE, 0); // Reset to Left-->Right - - if (GuiDropdownBox((Rectangle){ GetScreenWidth() - 170.0f, 10, 160, 24 }, TextJoin(animNames, animCount, ";"), - &animIndex1, dropdownEditMode1)) dropdownEditMode1 = !dropdownEditMode1; - - // Draw playing timeline with keyframes for anim0[] - GuiProgressBar((Rectangle){ 60, GetScreenHeight() - 60.0f, GetScreenWidth() - 180.0f, 20 }, "ANIM 0", - TextFormat("FRAME: %.2f / %i", animFrameProgress0, anims[animIndex0].keyframeCount), - &animFrameProgress0, 0.0f, (float)anims[animIndex0].keyframeCount); - for (int i = 0; i < anims[animIndex0].keyframeCount; i++) - DrawRectangle(60 + (int)(((float)(GetScreenWidth() - 180)/(float)anims[animIndex0].keyframeCount)*(float)i), - GetScreenHeight() - 60, 1, 20, BLUE); - - // Draw playing timeline with keyframes for anim1[] - GuiProgressBar((Rectangle){ 60, GetScreenHeight() - 30.0f, GetScreenWidth() - 180.0f, 20 }, "ANIM 1", - TextFormat("FRAME: %.2f / %i", animFrameProgress1, anims[animIndex1].keyframeCount), - &animFrameProgress1, 0.0f, (float)anims[animIndex1].keyframeCount); - for (int i = 0; i < anims[animIndex1].keyframeCount; i++) - DrawRectangle(60 + (int)(((float)(GetScreenWidth() - 180)/(float)anims[animIndex1].keyframeCount)*(float)i), - GetScreenHeight() - 30, 1, 20, BLUE); - //--------------------------------------------------------------------------------------------- - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModelAnimations(anims, animCount); // Unload model animation - UnloadModel(model); // Unload model and meshes/material - UnloadShader(skinningShader); // Unload GPU skinning shader - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blending.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blending.png deleted file mode 100644 index d1ca4a5..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_blending.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_gpu_skinning.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_gpu_skinning.c deleted file mode 100644 index b50dd86..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_gpu_skinning.c +++ /dev/null @@ -1,120 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - animation gpu skinning -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 4.5, last time updated with raylib 4.5 -* -* Example contributed by Daniel Holden (@orangeduck) and reviewed by Ramon Santamaria (@raysan5) -* -* WARNING: GPU skinning must be enabled in raylib with a compilation flag, -* if not enabled, CPU skinning will be used instead -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2024-2025 Daniel Holden (@orangeduck) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -#if defined(PLATFORM_DESKTOP) - #define GLSL_VERSION 330 -#else // PLATFORM_ANDROID, PLATFORM_WEB - #define GLSL_VERSION 100 -#endif - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - animation gpu skinning"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load gltf model - Model model = LoadModel("resources/models/gltf/greenman.glb"); // Load character model - Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position - - // Load skinning shader - // WARNING: GPU skinning must be enabled in raylib with a compilation flag, - // if not enabled, CPU skinning will be used instead - Shader skinningShader = LoadShader(TextFormat("resources/shaders/glsl%i/skinning.vs", GLSL_VERSION), - TextFormat("resources/shaders/glsl%i/skinning.fs", GLSL_VERSION)); - model.materials[1].shader = skinningShader; - - // Load gltf model animations - int animCount = 0; - ModelAnimation *anims = LoadModelAnimations("resources/models/gltf/greenman.glb", &animCount); - - // Animation playing variables - unsigned int animIndex = 0; // Current animation playing - unsigned int animCurrentFrame = 0; // Current animation frame - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - // Select current animation - if (IsKeyPressed(KEY_RIGHT)) animIndex = (animIndex + 1)%animCount; - else if (IsKeyPressed(KEY_LEFT)) animIndex = (animIndex + animCount - 1)%animCount; - - // Update model animation - animCurrentFrame = (animCurrentFrame + 1)%anims[animIndex].keyframeCount; - UpdateModelAnimation(model, anims[animIndex], (float)animCurrentFrame); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModel(model, position, 1.0f, WHITE); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawText(TextFormat("Current animation: %s", anims[animIndex].name), 10, 40, 20, MAROON); - DrawText("Use the LEFT/RIGHT keys to switch animation", 10, 10, 20, GRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModelAnimations(anims, animCount); // Unload model animation - UnloadModel(model); // Unload model and meshes/material - UnloadShader(skinningShader); // Unload GPU skinning shader - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_gpu_skinning.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_gpu_skinning.png deleted file mode 100644 index a8d1024..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_gpu_skinning.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_timing.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_timing.c deleted file mode 100644 index b88deb4..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_timing.c +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - animation timing -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2026 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define RAYGUI_IMPLEMENTATION -#include "raygui.h" // Required for: UI controls - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - animation timing"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 6.0f, 6.0f, 6.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load model - Model model = LoadModel("resources/models/gltf/robot.glb"); - Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model world position - - // Load model animations - int animCount = 0; - ModelAnimation *anims = LoadModelAnimations("resources/models/gltf/robot.glb", &animCount); - - // Animation playing variables - int animIndex = 10; // Current animation playing - float animCurrentFrame = 0.0f; // Current animation frame (supporting interpolated frames) - float animFrameSpeed = 0.5f; // Animation play speed - bool animPause = false; // Pause animation - - // UI required variables - char *animNames[64] = { 0 }; - for (int i = 0; i < animCount; i++) animNames[i] = anims[i].name; - - bool dropdownEditMode = false; - float animFrameProgress = 0.0f; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - if (IsKeyPressed(KEY_P)) animPause = !animPause; - - if (!animPause && (animIndex < animCount)) - { - // Update model animation - animCurrentFrame += animFrameSpeed; - if (animCurrentFrame >= anims[animIndex].keyframeCount) animCurrentFrame = 0.0f; - UpdateModelAnimation(model, anims[animIndex], animCurrentFrame); - } - - // NOTE: Animation and playing speed selected through UI - - // Update progressbar value with current frame - animFrameProgress = animCurrentFrame; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModel(model, position, 1.0f, WHITE); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - // Draw UI, select anim and playing speed - GuiSetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING, 1); - if (GuiDropdownBox((Rectangle){ 10, 10, 140, 24 }, TextJoin(animNames, animCount, ";"), - &animIndex, dropdownEditMode)) dropdownEditMode = !dropdownEditMode; - - GuiSlider((Rectangle){ 260, 10, 500, 24 }, "FRAME SPEED: ", TextFormat("x%.1f", animFrameSpeed), - &animFrameSpeed, 0.1f, 2.0f); - - // Draw playing timeline with keyframes - GuiLabel((Rectangle){ 10, GetScreenHeight() - 64.0f, GetScreenWidth() - 20.0f, 24 }, - TextFormat("CURRENT FRAME: %.2f / %i", animFrameProgress, anims[animIndex].keyframeCount)); - GuiProgressBar((Rectangle){ 10, GetScreenHeight() - 40.0f, GetScreenWidth() - 20.0f, 24 }, NULL, NULL, - &animFrameProgress, 0.0f, (float)anims[animIndex].keyframeCount); - for (int i = 0; i < anims[animIndex].keyframeCount; i++) - DrawRectangle(10 + (int)(((float)(GetScreenWidth() - 20)/(float)anims[animIndex].keyframeCount)*(float)i), - GetScreenHeight() - 40, 1, 24, BLUE); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModelAnimations(anims, animCount); // Unload model animation - UnloadModel(model); // Unload model and meshes/material - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_timing.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_timing.png deleted file mode 100644 index 4448fec..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_animation_timing.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_basic_voxel.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_basic_voxel.c deleted file mode 100644 index 127a7e9..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_basic_voxel.c +++ /dev/null @@ -1,169 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - basic voxel -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 5.5, last time updated with raylib 5.5 -* -* Example contributed by Tim Little (@timlittle) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Tim Little (@timlittle) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -#define WORLD_SIZE 8 // Size of our voxel world (8x8x8 cubes) - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - basic voxel"); - - DisableCursor(); // Lock mouse to window center - - // Define the camera to look into our 3d world (first person) - Camera3D camera = { 0 }; - camera.position = (Vector3){ -2.0f, 0.0f, -2.0f }; // Camera position at ground level - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Create a cube model - Mesh cubeMesh = GenMeshCube(1.0f, 1.0f, 1.0f); // Create a unit cube mesh - Model cubeModel = LoadModelFromMesh(cubeMesh); // Convert mesh to a model - cubeModel.materials[0].maps[MATERIAL_MAP_DIFFUSE].color = BEIGE; - - // Initialize voxel world - fill with voxels - bool voxels[WORLD_SIZE][WORLD_SIZE][WORLD_SIZE] = { false }; - for (int x = 0; x < WORLD_SIZE; x++) - { - for (int y = 0; y < WORLD_SIZE; y++) - { - for (int z = 0; z < WORLD_SIZE; z++) - { - voxels[x][y][z] = true; - } - } - } - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_FIRST_PERSON); - - // Handle voxel removal with mouse click - // This method is quite inefficient. Ray marching through the voxel grid using DDA would be faster, but more complex. - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) - { - // Cast a ray from the screen center (where crosshair would be) - Vector2 screenCenter = { GetScreenWidth()/2.0f, GetScreenHeight()/2.0f }; - Ray ray = GetMouseRay(screenCenter, camera); - - // Check ray collision with all voxels - float closestDistance = 99999.0f; - Vector3 closestVoxelPosition = { -1, -1, -1 }; - bool voxelFound = false; - for (int x = 0; x < WORLD_SIZE; x++) - { - for (int y = 0; y < WORLD_SIZE; y++) - { - for (int z = 0; z < WORLD_SIZE; z++) - { - if (!voxels[x][y][z]) continue; // Skip empty voxels - - // Build a bounding box for this voxel - Vector3 position = { (float)x, (float)y, (float)z }; - BoundingBox box = { - (Vector3){ position.x - 0.5f, position.y - 0.5f, position.z - 0.5f }, - (Vector3){ position.x + 0.5f, position.y + 0.5f, position.z + 0.5f } - }; - - // Check ray-box collision - RayCollision collision = GetRayCollisionBox(ray, box); - if (collision.hit && (collision.distance < closestDistance)) - { - closestDistance = collision.distance; - closestVoxelPosition = (Vector3){ x, y, z }; - voxelFound = true; - } - } - } - } - - // Remove the closest voxel if one was hit - if (voxelFound) - { - voxels[(int)closestVoxelPosition.x] - [(int)closestVoxelPosition.y] - [(int)closestVoxelPosition.z] = false; - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawGrid(10, 1.0f); - - // Draw all voxels - for (int x = 0; x < WORLD_SIZE; x++) - { - for (int y = 0; y < WORLD_SIZE; y++) - { - for (int z = 0; z < WORLD_SIZE; z++) - { - if (!voxels[x][y][z]) continue; - - Vector3 position = { (float)x, (float)y, (float)z }; - DrawModel(cubeModel, position, 1.0f, BEIGE); - DrawCubeWires(position, 1.0f, 1.0f, 1.0f, BLACK); - } - } - } - - EndMode3D(); - - // Draw reference point for raycasting to delete blocks - DrawCircle(GetScreenWidth()/2, GetScreenHeight()/2, 4, RED); - - DrawText("Left-click a voxel to remove it!", 10, 10, 20, DARKGRAY); - DrawText("WASD to move, mouse to look around", 10, 35, 10, GRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModel(cubeModel); - - CloseWindow(); - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_basic_voxel.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_basic_voxel.png deleted file mode 100644 index 0666ec8..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_basic_voxel.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_billboard_rendering.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_billboard_rendering.c deleted file mode 100644 index a637a4d..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_billboard_rendering.c +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - billboard rendering -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 1.3, last time updated with raylib 3.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" -#include "raymath.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - billboard rendering"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 5.0f, 4.0f, 5.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Texture2D bill = LoadTexture("resources/billboard.png"); // Our billboard texture - Vector3 billPositionStatic = { 0.0f, 2.0f, 0.0f }; // Position of static billboard - Vector3 billPositionRotating = { 1.0f, 2.0f, 1.0f }; // Position of rotating billboard - - // Entire billboard texture, source is used to take a segment from a larger texture - Rectangle source = { 0.0f, 0.0f, (float)bill.width, (float)bill.height }; - - // NOTE: Billboard locked on axis-Y - Vector3 billUp = { 0.0f, 1.0f, 0.0f }; - - // Set the height of the rotating billboard to 1.0 with the aspect ratio fixed - Vector2 size = { source.width/source.height, 1.0f }; - - // Rotate around origin - // Here we choose to rotate around the image center - Vector2 origin = Vector2Scale(size, 0.5f); - - // Distance is needed for the correct billboard draw order - // Larger distance (further away from the camera) should be drawn prior to smaller distance - float distanceStatic; - float distanceRotating; - float rotation = 0.0f; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - rotation += 0.4f; - distanceStatic = Vector3Distance(camera.position, billPositionStatic); - distanceRotating = Vector3Distance(camera.position, billPositionRotating); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawGrid(10, 1.0f); // Draw a grid - - // Draw order matters! - if (distanceStatic > distanceRotating) - { - DrawBillboard(camera, bill, billPositionStatic, 2.0f, WHITE); - DrawBillboardPro(camera, bill, source, billPositionRotating, billUp, size, origin, rotation, WHITE); - } - else - { - DrawBillboardPro(camera, bill, source, billPositionRotating, billUp, size, origin, rotation, WHITE); - DrawBillboard(camera, bill, billPositionStatic, 2.0f, WHITE); - } - - EndMode3D(); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(bill); // Unload texture - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_billboard_rendering.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_billboard_rendering.png deleted file mode 100644 index dad1e55..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_billboard_rendering.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_bone_socket.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_bone_socket.c deleted file mode 100644 index ff44671..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_bone_socket.c +++ /dev/null @@ -1,179 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - bone socket -* -* Example complexity rating: [★★★★] 4/4 -* -* Example originally created with raylib 4.5, last time updated with raylib 4.5 -* -* Example contributed by iP (@ipzaur) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2024-2025 iP (@ipzaur) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -#define BONE_SOCKETS 3 -#define BONE_SOCKET_HAT 0 -#define BONE_SOCKET_HAND_R 1 -#define BONE_SOCKET_HAND_L 2 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - bone socket"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load gltf model - Model characterModel = LoadModel("resources/models/gltf/greenman.glb"); // Load character model - Model equipModel[BONE_SOCKETS] = { - LoadModel("resources/models/gltf/greenman_hat.glb"), // Index for the hat model is the same as BONE_SOCKET_HAT - LoadModel("resources/models/gltf/greenman_sword.glb"), // Index for the sword model is the same as BONE_SOCKET_HAND_R - LoadModel("resources/models/gltf/greenman_shield.glb") // Index for the shield model is the same as BONE_SOCKET_HAND_L - }; - - bool showEquip[3] = { true, true, true }; // Toggle on/off equip - - // Load gltf model animations - int animsCount = 0; - unsigned int animIndex = 0; - unsigned int animCurrentFrame = 0; - ModelAnimation *modelAnimations = LoadModelAnimations("resources/models/gltf/greenman.glb", &animsCount); - - // Indices of bones for sockets - int boneSocketIndex[BONE_SOCKETS] = { -1, -1, -1 }; - - // Search bones for sockets - for (int i = 0; i < characterModel.skeleton.boneCount; i++) - { - if (TextIsEqual(characterModel.skeleton.bones[i].name, "socket_hat")) - { - boneSocketIndex[BONE_SOCKET_HAT] = i; - continue; - } - - if (TextIsEqual(characterModel.skeleton.bones[i].name, "socket_hand_R")) - { - boneSocketIndex[BONE_SOCKET_HAND_R] = i; - continue; - } - - if (TextIsEqual(characterModel.skeleton.bones[i].name, "socket_hand_L")) - { - boneSocketIndex[BONE_SOCKET_HAND_L] = i; - continue; - } - } - - Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position - unsigned short angle = 0; // Set angle for rotate character - - DisableCursor(); // Limit cursor to relative movement inside the window - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_THIRD_PERSON); - - // Rotate character - if (IsKeyDown(KEY_F)) angle = (angle + 1)%360; - else if (IsKeyDown(KEY_H)) angle = (360 + angle - 1)%360; - - // Select current animation - if (IsKeyPressed(KEY_T)) animIndex = (animIndex + 1)%animsCount; - else if (IsKeyPressed(KEY_G)) animIndex = (animIndex + animsCount - 1)%animsCount; - - // Toggle shown of equip - if (IsKeyPressed(KEY_ONE)) showEquip[BONE_SOCKET_HAT] = !showEquip[BONE_SOCKET_HAT]; - if (IsKeyPressed(KEY_TWO)) showEquip[BONE_SOCKET_HAND_R] = !showEquip[BONE_SOCKET_HAND_R]; - if (IsKeyPressed(KEY_THREE)) showEquip[BONE_SOCKET_HAND_L] = !showEquip[BONE_SOCKET_HAND_L]; - - // Update model animation - ModelAnimation anim = modelAnimations[animIndex]; - animCurrentFrame = (animCurrentFrame + 1)%anim.keyframeCount; - UpdateModelAnimation(characterModel, anim, (float)animCurrentFrame); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - // Draw character - Quaternion characterRotate = QuaternionFromAxisAngle((Vector3){ 0.0f, 1.0f, 0.0f }, angle*DEG2RAD); - characterModel.transform = MatrixMultiply(QuaternionToMatrix(characterRotate), MatrixTranslate(position.x, position.y, position.z)); - UpdateModelAnimation(characterModel, anim, (float)animCurrentFrame); - DrawMesh(characterModel.meshes[0], characterModel.materials[1], characterModel.transform); - - // Draw equipments (hat, sword, shield) - for (int i = 0; i < BONE_SOCKETS; i++) - { - if (!showEquip[i]) continue; - - Transform *transform = &anim.keyframePoses[animCurrentFrame][boneSocketIndex[i]]; - Quaternion inRotation = characterModel.skeleton.bindPose[boneSocketIndex[i]].rotation; - Quaternion outRotation = transform->rotation; - - // Calculate socket rotation (angle between bone in initial pose and same bone in current animation frame) - Quaternion rotate = QuaternionMultiply(outRotation, QuaternionInvert(inRotation)); - Matrix matrixTransform = QuaternionToMatrix(rotate); - // Translate socket to its position in the current animation - matrixTransform = MatrixMultiply(matrixTransform, MatrixTranslate(transform->translation.x, transform->translation.y, transform->translation.z)); - // Transform the socket using the transform of the character (angle and translate) - matrixTransform = MatrixMultiply(matrixTransform, characterModel.transform); - - // Draw mesh at socket position with socket angle rotation - DrawMesh(equipModel[i].meshes[0], equipModel[i].materials[1], matrixTransform); - } - - DrawGrid(10, 1.0f); - EndMode3D(); - - DrawText("Use the T/G to switch animation", 10, 10, 20, GRAY); - DrawText("Use the F/H to rotate character left/right", 10, 35, 20, GRAY); - DrawText("Use the 1,2,3 to toggle shown of hat, sword and shield", 10, 60, 20, GRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModelAnimations(modelAnimations, animsCount); - UnloadModel(characterModel); // Unload character model and meshes/material - - // Unload equipment model and meshes/material - for (int i = 0; i < BONE_SOCKETS; i++) UnloadModel(equipModel[i]); - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_bone_socket.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_bone_socket.png deleted file mode 100644 index fdef19f..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_bone_socket.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_box_collisions.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_box_collisions.c deleted file mode 100644 index b4b1afa..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_box_collisions.c +++ /dev/null @@ -1,128 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - box collisions -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.3, last time updated with raylib 3.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - box collisions"); - - // Define the camera to look into our 3d world - Camera camera = { { 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f, 0 }; - - Vector3 playerPosition = { 0.0f, 1.0f, 2.0f }; - Vector3 playerSize = { 1.0f, 2.0f, 1.0f }; - Color playerColor = GREEN; - - Vector3 enemyBoxPos = { -4.0f, 1.0f, 0.0f }; - Vector3 enemyBoxSize = { 2.0f, 2.0f, 2.0f }; - - Vector3 enemySpherePos = { 4.0f, 0.0f, 0.0f }; - float enemySphereSize = 1.5f; - - bool collision = false; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - - // Move player - if (IsKeyDown(KEY_RIGHT)) playerPosition.x += 0.2f; - else if (IsKeyDown(KEY_LEFT)) playerPosition.x -= 0.2f; - else if (IsKeyDown(KEY_DOWN)) playerPosition.z += 0.2f; - else if (IsKeyDown(KEY_UP)) playerPosition.z -= 0.2f; - - collision = false; - - // Check collisions player vs enemy-box - if (CheckCollisionBoxes( - (BoundingBox){(Vector3){ playerPosition.x - playerSize.x/2, - playerPosition.y - playerSize.y/2, - playerPosition.z - playerSize.z/2 }, - (Vector3){ playerPosition.x + playerSize.x/2, - playerPosition.y + playerSize.y/2, - playerPosition.z + playerSize.z/2 }}, - (BoundingBox){(Vector3){ enemyBoxPos.x - enemyBoxSize.x/2, - enemyBoxPos.y - enemyBoxSize.y/2, - enemyBoxPos.z - enemyBoxSize.z/2 }, - (Vector3){ enemyBoxPos.x + enemyBoxSize.x/2, - enemyBoxPos.y + enemyBoxSize.y/2, - enemyBoxPos.z + enemyBoxSize.z/2 }})) collision = true; - - // Check collisions player vs enemy-sphere - if (CheckCollisionBoxSphere( - (BoundingBox){(Vector3){ playerPosition.x - playerSize.x/2, - playerPosition.y - playerSize.y/2, - playerPosition.z - playerSize.z/2 }, - (Vector3){ playerPosition.x + playerSize.x/2, - playerPosition.y + playerSize.y/2, - playerPosition.z + playerSize.z/2 }}, - enemySpherePos, enemySphereSize)) collision = true; - - if (collision) playerColor = RED; - else playerColor = GREEN; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - // Draw enemy-box - DrawCube(enemyBoxPos, enemyBoxSize.x, enemyBoxSize.y, enemyBoxSize.z, GRAY); - DrawCubeWires(enemyBoxPos, enemyBoxSize.x, enemyBoxSize.y, enemyBoxSize.z, DARKGRAY); - - // Draw enemy-sphere - DrawSphere(enemySpherePos, enemySphereSize, GRAY); - DrawSphereWires(enemySpherePos, enemySphereSize, 16, 16, DARKGRAY); - - // Draw player - DrawCubeV(playerPosition, playerSize, playerColor); - - DrawGrid(10, 1.0f); // Draw a grid - - EndMode3D(); - - DrawText("Move player with arrow keys to collide", 220, 40, 20, GRAY); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_box_collisions.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_box_collisions.png deleted file mode 100644 index d01fd9d..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_box_collisions.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_cubicmap_rendering.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_cubicmap_rendering.c deleted file mode 100644 index 55a8e2a..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_cubicmap_rendering.c +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - cubicmap rendering -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.8, last time updated with raylib 3.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - cubicmap rendering"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 16.0f, 14.0f, 16.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Image image = LoadImage("resources/cubicmap.png"); // Load cubicmap image (RAM) - Texture2D cubicmap = LoadTextureFromImage(image); // Convert image to texture to display (VRAM) - - Mesh mesh = GenMeshCubicmap(image, (Vector3){ 1.0f, 1.0f, 1.0f }); - Model model = LoadModelFromMesh(mesh); - - // NOTE: By default each cube is mapped to one part of texture atlas - Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); // Load map texture - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture - - Vector3 mapPosition = { -16.0f, 0.0f, -8.0f }; // Set model position - - UnloadImage(image); // Unload cubesmap image from RAM, already uploaded to VRAM - - bool pause = false; // Pause camera orbital rotation (and zoom) - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_P)) pause = !pause; - - if (!pause) UpdateCamera(&camera, CAMERA_ORBITAL); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModel(model, mapPosition, 1.0f, WHITE); - - EndMode3D(); - - DrawTextureEx(cubicmap, (Vector2){ screenWidth - cubicmap.width*4.0f - 20, 20.0f }, 0.0f, 4.0f, WHITE); - DrawRectangleLines(screenWidth - cubicmap.width*4 - 20, 20, cubicmap.width*4, cubicmap.height*4, GREEN); - - DrawText("cubicmap image used to", 658, 90, 10, GRAY); - DrawText("generate map 3d model", 658, 104, 10, GRAY); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(cubicmap); // Unload cubicmap texture - UnloadTexture(texture); // Unload map texture - UnloadModel(model); // Unload map model - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_cubicmap_rendering.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_cubicmap_rendering.png deleted file mode 100644 index 9cb854c..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_cubicmap_rendering.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_decals.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_decals.c deleted file mode 100644 index 2956d3c..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_decals.c +++ /dev/null @@ -1,605 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - decals -* -* Example complexity rating: [★★★★] 4/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example contributed by JP Mortiboys (@themushroompirates) and reviewed by Ramon Santamaria (@raysan5) -* Based on previous work by @mrdoob -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 JP Mortiboys (@themushroompirates) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -#include // Required for: memcpy() - -#undef FLT_MAX -#define FLT_MAX 340282346638528859811704183484516925440.0f // Maximum value of a float, from bit pattern 01111111011111111111111111111111 - -#define MAX_DECALS 256 - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -typedef struct MeshBuilder { - int vertexCount; - int vertexCapacity; - Vector3 *vertices; - Vector2 *uvs; -} MeshBuilder; - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static void AddTriangleToMeshBuilder(MeshBuilder *mb, Vector3 vertices[3]); -static void FreeMeshBuilder(MeshBuilder *mb); -static Mesh BuildMesh(MeshBuilder *mb); -static Mesh GenMeshDecal(Model inputModel, Matrix projection, float decalSize, float decalOffset); -static Vector3 ClipSegment(Vector3 v0, Vector3 v1, Vector3 p, float s); -static void FreeDecalMeshData(void) { GenMeshDecal((Model){ .meshCount = -1 }, (Matrix){ 0 }, 0.0f, 0.0f); } -static bool GuiButton(Rectangle rec, const char *label); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - SetConfigFlags(FLAG_MSAA_4X_HINT); - InitWindow(screenWidth, screenHeight, "raylib [models] example - decals"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.6f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load character model - Model model = LoadModel("resources/models/obj/character.obj"); - - // Apply character skin - Texture2D modelTexture = LoadTexture("resources/models/obj/character_diffuse.png"); - SetTextureFilter(modelTexture, TEXTURE_FILTER_BILINEAR); - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = modelTexture; - - BoundingBox modelBBox = GetMeshBoundingBox(model.meshes[0]); // Get mesh bounding box - - camera.target = Vector3Lerp(modelBBox.min, modelBBox.max, 0.5f); - camera.position = Vector3Scale(modelBBox.max, 1.0f); - camera.position.x *= 0.1f; - - float modelSize = fminf( - fminf(fabsf(modelBBox.max.x - modelBBox.min.x), fabsf(modelBBox.max.y - modelBBox.min.y)), - fabsf(modelBBox.max.z - modelBBox.min.z)); - - camera.position = (Vector3){ 0.0f, modelBBox.max.y*1.2f, modelSize*3.0f }; - - float decalSize = modelSize*0.25f; - float decalOffset = 0.01f; - - Model placementCube = LoadModelFromMesh(GenMeshCube(decalSize, decalSize, decalSize)); - placementCube.materials[0].maps[0].color = LIME; - - Material decalMaterial = LoadMaterialDefault(); - decalMaterial.maps[0].color = YELLOW; - - Image decalImage = LoadImage("resources/raylib_logo.png"); - ImageResizeNN(&decalImage, decalImage.width/4, decalImage.height/4); - Texture decalTexture = LoadTextureFromImage(decalImage); - UnloadImage(decalImage); - - SetTextureFilter(decalTexture, TEXTURE_FILTER_BILINEAR); - decalMaterial.maps[MATERIAL_MAP_DIFFUSE].texture = decalTexture; - decalMaterial.maps[MATERIAL_MAP_DIFFUSE].color = RAYWHITE; - - bool showModel = true; - static Model decalModels[MAX_DECALS] = { 0 }; - int decalCount = 0; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsMouseButtonDown(MOUSE_BUTTON_RIGHT)) UpdateCamera(&camera, CAMERA_THIRD_PERSON); - - // Display information about closest hit - RayCollision collision = { 0 }; - collision.distance = FLT_MAX; - collision.hit = false; - - // Get mouse ray - Ray ray = GetScreenToWorldRay(GetMousePosition(), camera); - - // Check ray collision against bounding box first, before trying the full ray-mesh test - RayCollision boxHitInfo = GetRayCollisionBox(ray, modelBBox); - - if ((boxHitInfo.hit) && (decalCount < MAX_DECALS)) - { - // Check ray collision against model meshes - RayCollision meshHitInfo = { 0 }; - for (int m = 0; m < model.meshCount; m++) - { - // NOTE: We consider the model.transform for the collision check but - // it can be checked against any transform Matrix, used when checking against same - // model drawn multiple times with multiple transforms - meshHitInfo = GetRayCollisionMesh(ray, model.meshes[m], model.transform); - if (meshHitInfo.hit) - { - // Save the closest hit mesh - if (!collision.hit || (collision.distance > meshHitInfo.distance)) collision = meshHitInfo; - } - } - - if (meshHitInfo.hit) collision = meshHitInfo; - } - - // Add decal to mesh on hit point - if (collision.hit && IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && (decalCount < MAX_DECALS)) - { - // Create the transformation to project the decal - Vector3 origin = Vector3Add(collision.point, Vector3Scale(collision.normal, 1.0f)); - Matrix splat = MatrixLookAt(collision.point, origin, (Vector3){ 0.0f, 1.0f, 0.0f }); - - // Spin the placement around a bit - splat = MatrixMultiply(splat, MatrixRotateZ(DEG2RAD*((float)GetRandomValue(-180, 180)))); - - Mesh decalMesh = GenMeshDecal(model, splat, decalSize, decalOffset); - - if (decalMesh.vertexCount > 0) - { - int decalIndex = decalCount++; - decalModels[decalIndex] = LoadModelFromMesh(decalMesh); - decalModels[decalIndex].materials[0].maps[0] = decalMaterial.maps[0]; - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - // Draw the model at the origin and default scale - if (showModel) DrawModel(model, (Vector3){0.0f, 0.0f, 0.0f}, 1.0f, WHITE); - - // Draw the decal models - for (int i = 0; i < decalCount; i++) DrawModel(decalModels[i], (Vector3){ 0 }, 1.0f, WHITE); - - // If we hit the mesh, draw the box for the decal - if (collision.hit) - { - Vector3 origin = Vector3Add(collision.point, Vector3Scale(collision.normal, 1.0f)); - Matrix splat = MatrixLookAt(collision.point, origin, (Vector3){0,1,0}); - placementCube.transform = MatrixInvert(splat); - DrawModel(placementCube, (Vector3){ 0 }, 1.0f, Fade(WHITE, 0.5f)); - } - - DrawGrid(10, 10.0f); - EndMode3D(); - - float yPos = 10; - float x0 = GetScreenWidth() - 300.0f; - float x1 = x0 + 100; - float x2 = x1 + 100; - - DrawText("Vertices", (int)x1, (int)yPos, 10, LIME); - DrawText("Triangles", (int)x2, (int)yPos, 10, LIME); - yPos += 15; - - int vertexCount = 0; - int triangleCount = 0; - - for (int i = 0; i < model.meshCount; i++) - { - vertexCount += model.meshes[i].vertexCount; - triangleCount += model.meshes[i].triangleCount; - } - - DrawText("Main model", (int)x0, (int)yPos, 10, LIME); - DrawText(TextFormat("%d", vertexCount), (int)x1, (int)yPos, 10, LIME); - DrawText(TextFormat("%d", triangleCount), (int)x2, (int)yPos, 10, LIME); - yPos += 15; - - for (int i = 0; i < decalCount; i++) - { - if (i == 20) - { - DrawText("...", (int)x0, (int)yPos, 10, LIME); - yPos += 15; - } - - if (i < 20) - { - DrawText(TextFormat("Decal #%d", i+1), (int)x0, (int)yPos, 10, LIME); - DrawText(TextFormat("%d", decalModels[i].meshes[0].vertexCount), (int)x1, (int)yPos, 10, LIME); - DrawText(TextFormat("%d", decalModels[i].meshes[0].triangleCount), (int)x2, (int)yPos, 10, LIME); - yPos += 15; - } - - vertexCount += decalModels[i].meshes[0].vertexCount; - triangleCount += decalModels[i].meshes[0].triangleCount; - } - - DrawText("TOTAL", (int)x0, (int)yPos, 10, LIME); - DrawText(TextFormat("%d", vertexCount), (int)x1, (int)yPos, 10, LIME); - DrawText(TextFormat("%d", triangleCount), (int)x2, (int)yPos, 10, LIME); - yPos += 15; - - DrawText("Hold RMB to move camera", 10, 430, 10, GRAY); - DrawText("(c) Character model and texture from kenney.nl", screenWidth - 260, screenHeight - 20, 10, GRAY); - - // UI elements - if (GuiButton((Rectangle){ 10, screenHeight - 1000.f, 100, 60 }, showModel ? "Hide Model" : "Show Model")) showModel = !showModel; - - if (GuiButton((Rectangle){ 10 + 110, screenHeight - 100.0f, 100, 60 }, "Clear Decals")) - { - // Clear decals, unload all decal models - for (int i = 0; i < decalCount; i++) UnloadModel(decalModels[i]); - decalCount = 0; - } - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModel(model); - UnloadTexture(modelTexture); - - // Unload decal models - for (int i = 0; i < decalCount; i++) UnloadModel(decalModels[i]); - - UnloadTexture(decalTexture); - - FreeDecalMeshData(); // Free the data for decal generation - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -// Add triangles to mesh builder (dynamic array manager) -static void AddTriangleToMeshBuilder(MeshBuilder *mb, Vector3 vertices[3]) -{ - // Reallocate and copy if we need to - if (mb->vertexCapacity <= (mb->vertexCount + 3)) - { - int newVertexCapacity = (1 + (mb->vertexCapacity/256))*256; - Vector3 *newVertices = (Vector3 *)MemAlloc(newVertexCapacity*sizeof(Vector3)); - - if (mb->vertexCapacity > 0) - { - memcpy(newVertices, mb->vertices, mb->vertexCount*sizeof(Vector3)); - MemFree(mb->vertices); - } - - mb->vertices = newVertices; - mb->vertexCapacity = newVertexCapacity; - } - - // Add 3 vertices - int index = mb->vertexCount; - mb->vertexCount += 3; - - for (int i = 0; i < 3; i++) mb->vertices[index+i] = vertices[i]; -} - -// Free mesh builder -static void FreeMeshBuilder(MeshBuilder *mb) -{ - MemFree(mb->vertices); - if (mb->uvs) MemFree(mb->uvs); - *mb = (MeshBuilder){ 0 }; -} - -// Build a Mesh from MeshBuilder data -static Mesh BuildMesh(MeshBuilder *mb) -{ - Mesh outMesh = { 0 }; - - outMesh.vertexCount = mb->vertexCount; - outMesh.triangleCount = mb->vertexCount/3; - outMesh.vertices = MemAlloc(outMesh.vertexCount*3*sizeof(float)); - if (mb->uvs) outMesh.texcoords = MemAlloc(outMesh.vertexCount*2*sizeof(float)); - - for (int i = 0; i < mb->vertexCount; i++) - { - outMesh.vertices[3*i+0] = mb->vertices[i].x; - outMesh.vertices[3*i+1] = mb->vertices[i].y; - outMesh.vertices[3*i+2] = mb->vertices[i].z; - - if (mb->uvs) - { - outMesh.texcoords[2*i+0] = mb->uvs[i].x; - outMesh.texcoords[2*i+1] = mb->uvs[i].y; - } - } - - UploadMesh(&outMesh, false); - - return outMesh; -} - -// Clip segment -static Vector3 ClipSegment(Vector3 v0, Vector3 v1, Vector3 p, float s) -{ - float d0 = Vector3DotProduct(v0, p) - s; - float d1 = Vector3DotProduct(v1, p) - s; - float s0 = d0/(d0 - d1); - - Vector3 position = Vector3Lerp(v0, v1, s0); - - return position; -} - -// Generate mesh decals for provided model -static Mesh GenMeshDecal(Model target, Matrix projection, float decalSize, float decalOffset) -{ - // We're going to use these to build up our decal meshes - // They'll resize automatically as we go, we'll free them at the end - static MeshBuilder meshBuilders[2] = { 0 }; - - // Ugly way of telling us to free the static MeshBuilder data - if (target.meshCount == -1) - { - FreeMeshBuilder(&meshBuilders[0]); - FreeMeshBuilder(&meshBuilders[1]); - return (Mesh){ 0 }; - } - - // We're going to need the inverse matrix - Matrix invProj = MatrixInvert(projection); - - // Reset the mesh builders - meshBuilders[0].vertexCount = 0; - meshBuilders[1].vertexCount = 0; - - // We'll be flip-flopping between the two mesh builders - // Reading from one and writing to the other, then swapping - int mbIndex = 0; - - // First pass, just get any triangle inside the bounding box (for each mesh of the model) - for (int meshIndex = 0; meshIndex < target.meshCount; meshIndex++) - { - Mesh mesh = target.meshes[meshIndex]; - for (int tri = 0; tri < mesh.triangleCount; tri++) - { - Vector3 vertices[3] = { 0 }; - - // The way we calculate the vertices of the mesh triangle - // depend on whether the mesh vertices are indexed or not - if (mesh.indices == 0) - { - for (int v = 0; v < 3; v++) - { - vertices[v] = (Vector3){ - mesh.vertices[3*3*tri + 3*v + 0], - mesh.vertices[3*3*tri + 3*v + 1], - mesh.vertices[3*3*tri + 3*v + 2] - }; - } - } - else - { - for (int v = 0; v < 3; v++) - { - vertices[v] = (Vector3){ - mesh.vertices[ 3*mesh.indices[3*tri+0] + v], - mesh.vertices[ 3*mesh.indices[3*tri+1] + v], - mesh.vertices[ 3*mesh.indices[3*tri+2] + v] - }; - } - } - - // Transform all 3 vertices of the triangle - // and check if they are inside our decal box - int insideCount = 0; - for (int i = 0; i < 3; i++) - { - // To projection space - Vector3 v = Vector3Transform(vertices[i], projection); - - if ((fabsf(v.x) < decalSize) || (fabsf(v.y) <= decalSize) || (fabsf(v.z) <= decalSize)) insideCount++; - - // We need to keep the transformed vertex - vertices[i] = v; - } - - // If any of them are inside, we add the triangle - we'll clip it later - if (insideCount > 0) AddTriangleToMeshBuilder(&meshBuilders[mbIndex], vertices); - } - } - - // Clipping time! We need to clip against all 6 directions - Vector3 planes[6] = { - { 1, 0, 0 }, - { -1, 0, 0 }, - { 0, 1, 0 }, - { 0, -1, 0 }, - { 0, 0, 1 }, - { 0, 0, -1 } - }; - - for (int face = 0; face < 6; face++) - { - // Swap current model builder (so we read from the one we just wrote to) - mbIndex = 1 - mbIndex; - - MeshBuilder *inMesh = &meshBuilders[1 - mbIndex]; - MeshBuilder *outMesh = &meshBuilders[mbIndex]; - - // Reset write builder - outMesh->vertexCount = 0; - - float s = 0.5f*decalSize; - - for (int i = 0; i < inMesh->vertexCount; i += 3) - { - Vector3 nV1, nV2, nV3, nV4; - - float d1 = Vector3DotProduct(inMesh->vertices[ i + 0 ], planes[face] ) - s; - float d2 = Vector3DotProduct(inMesh->vertices[ i + 1 ], planes[face] ) - s; - float d3 = Vector3DotProduct(inMesh->vertices[ i + 2 ], planes[face] ) - s; - - int v1Out = (d1 > 0); - int v2Out = (d2 > 0); - int v3Out = (d3 > 0); - - // Calculate, how many vertices of the face lie outside of the clipping plane - int total = v1Out + v2Out + v3Out; - - switch (total) - { - case 0: - { - // The entire face lies inside of the plane, no clipping needed - AddTriangleToMeshBuilder(outMesh, (Vector3[3]){inMesh->vertices[i], inMesh->vertices[i+1], inMesh->vertices[i+2]}); - } break; - case 1: - { - // One vertex lies outside of the plane, perform clipping - if (v1Out) - { - nV1 = inMesh->vertices[i + 1]; - nV2 = inMesh->vertices[i + 2]; - nV3 = ClipSegment(inMesh->vertices[i], nV1, planes[face], s); - nV4 = ClipSegment(inMesh->vertices[i], nV2, planes[face], s); - } - - if (v2Out) - { - nV1 = inMesh->vertices[i]; - nV2 = inMesh->vertices[i + 2]; - nV3 = ClipSegment(inMesh->vertices[i + 1], nV1, planes[face], s); - nV4 = ClipSegment(inMesh->vertices[i + 1], nV2, planes[face], s); - - AddTriangleToMeshBuilder(outMesh, (Vector3[3]){nV3, nV2, nV1}); - AddTriangleToMeshBuilder(outMesh, (Vector3[3]){nV2, nV3, nV4}); - break; - } - - if (v3Out) - { - nV1 = inMesh->vertices[i]; - nV2 = inMesh->vertices[i + 1]; - nV3 = ClipSegment(inMesh->vertices[i + 2], nV1, planes[face], s); - nV4 = ClipSegment(inMesh->vertices[i + 2], nV2, planes[face], s); - } - - AddTriangleToMeshBuilder(outMesh, (Vector3[3]){nV1, nV2, nV3}); - AddTriangleToMeshBuilder(outMesh, (Vector3[3]){nV4, nV3, nV2}); - } break; - case 2: - { - // Two vertices lies outside of the plane, perform clipping - if (!v1Out) - { - nV1 = inMesh->vertices[i]; - nV2 = ClipSegment(nV1, inMesh->vertices[i + 1], planes[face], s); - nV3 = ClipSegment(nV1, inMesh->vertices[i + 2], planes[face], s); - AddTriangleToMeshBuilder(outMesh, (Vector3[3]){nV1, nV2, nV3}); - } - - if (!v2Out) - { - nV1 = inMesh->vertices[i + 1]; - nV2 = ClipSegment(nV1, inMesh->vertices[i + 2], planes[face], s); - nV3 = ClipSegment(nV1, inMesh->vertices[i], planes[face], s); - AddTriangleToMeshBuilder(outMesh, (Vector3[3]){nV1, nV2, nV3}); - } - - if (!v3Out) - { - nV1 = inMesh->vertices[i + 2]; - nV2 = ClipSegment(nV1, inMesh->vertices[i], planes[face], s); - nV3 = ClipSegment(nV1, inMesh->vertices[i + 1], planes[face], s); - AddTriangleToMeshBuilder(outMesh, (Vector3[3]){nV1, nV2, nV3}); - } - } break; - case 3: // The entire face lies outside of the plane, so let's discard the corresponding vertices - default: break; - } - } - } - - // Now we just need to re-transform the vertices - MeshBuilder *theMesh = &meshBuilders[mbIndex]; - - // Allocate room for UVs - if (theMesh->vertexCount > 0) - { - theMesh->uvs = (Vector2 *)MemAlloc(sizeof(Vector2)*theMesh->vertexCount); - - for (int i = 0; i < theMesh->vertexCount; i++) - { - // Calculate the UVs based on the projected coords - // They are clipped to (-decalSize .. decalSize) and we want them (0..1) - theMesh->uvs[i].x = (theMesh->vertices[i].x/decalSize + 0.5f); - theMesh->uvs[i].y = (theMesh->vertices[i].y/decalSize + 0.5f); - - // Tiny nudge in the normal direction so it renders properly over the mesh - theMesh->vertices[i].z -= decalOffset; - - // From projection space to world space - theMesh->vertices[i] = Vector3Transform(theMesh->vertices[i], invProj); - } - - // Decal model data ready, create the mesh and return it - return BuildMesh(theMesh); - } - else - { - // Return a blank mesh as there's nothing to add - return (Mesh){ 0 }; - } -} - -// Button UI element -static bool GuiButton(Rectangle rec, const char *label) -{ - Color bgColor = GRAY; - bool pressed = false; - - if (CheckCollisionPointRec(GetMousePosition(), rec)) - { - bgColor = LIGHTGRAY; - if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) pressed = true; - } - - DrawRectangleRec(rec, bgColor); - DrawRectangleLinesEx(rec, 2.0f, DARKGRAY); - - int fontSize = 10; - int textWidth = MeasureText(label, fontSize); - - DrawText(label, (int)(rec.x + rec.width*0.5f - textWidth*0.5f), (int)(rec.y + rec.height*0.5f - fontSize*0.5f), fontSize, DARKGRAY); - - return pressed; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_decals.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_decals.png deleted file mode 100644 index 6bdbaf1..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_decals.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_directional_billboard.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_directional_billboard.c deleted file mode 100644 index 5616494..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_directional_billboard.c +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - directional billboard -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example contributed by Robin (@RobinsAviary) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Robin (@RobinsAviary) -* Killbot art by patvanmackelberg https://opengameart.org/content/killbot-8-directional under CC0 -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -#include - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - directional billboard"); - - // Set up the camera - Camera camera = { 0 }; - camera.position = (Vector3){ 2.0f, 1.0f, 2.0f }; // Starting position - camera.target = (Vector3){ 0.0f, 0.5f, 0.0f }; // Target position - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Up vector - camera.fovy = 45.0f; // FOV - camera.projection = CAMERA_PERSPECTIVE; // Projection type (Standard 3D perspective) - - // Load billboard texture - Texture skillbot = LoadTexture("resources/skillbot.png"); - - // Timer to update animation - float anim_timer = 0.0f; - // Animation frame - unsigned int anim = 0; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - // Update timer with delta time - anim_timer += GetFrameTime(); - - // Update frame index after a certain amount of time (half a second) - if (anim_timer > 0.5f) - { - anim_timer = 0.0f; - anim += 1; - } - - // Reset frame index to zero on overflow - if (anim >= 4) anim = 0; - - // Find the current direction frame based on the camera position to the billboard object - float dir = (float)floor(((Vector2Angle((Vector2){ 2.0f, 0.0f }, (Vector2){ camera.position.x, camera.position.z })/PI)*4.0f) + 0.25f); - - // Correct frame index if angle is negative - if (dir < 0.0f) - { - dir = 8.0f - (float)abs((int)dir); - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawGrid(10, 1.0f); - - // Draw billboard pointing straight up to the sky, rotated relative to the camera and offset from the bottom - DrawBillboardPro(camera, skillbot, (Rectangle){ 0.0f + (anim*24.0f), 0.0f + (dir*24.0f), 24.0f, 24.0f }, Vector3Zero(), (Vector3){ 0.0f, 1.0f, 0.0f }, Vector2One(), (Vector2){ 0.5f, 0.0f }, 0, WHITE); - - EndMode3D(); - - // Render various variables for reference - DrawText(TextFormat("animation: %d", anim), 10, 10, 20, DARKGRAY); - DrawText(TextFormat("direction frame: %.0f", dir), 10, 40, 20, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - // Unload billboard texture - UnloadTexture(skillbot); - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_directional_billboard.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_directional_billboard.png deleted file mode 100644 index cbbe110..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_directional_billboard.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_first_person_maze.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_first_person_maze.c deleted file mode 100644 index 13b56f4..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_first_person_maze.c +++ /dev/null @@ -1,139 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - first person maze -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 2.5, last time updated with raylib 3.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2019-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include // Required for: free() - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - first person maze"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 0.2f, 0.4f, 0.2f }; // Camera position - camera.target = (Vector3){ 0.185f, 0.4f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Image imMap = LoadImage("resources/cubicmap.png"); // Load cubicmap image (RAM) - Texture2D cubicmap = LoadTextureFromImage(imMap); // Convert image to texture to display (VRAM) - Mesh mesh = GenMeshCubicmap(imMap, (Vector3){ 1.0f, 1.0f, 1.0f }); - Model model = LoadModelFromMesh(mesh); - - // NOTE: By default each cube is mapped to one part of texture atlas - Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); // Load map texture - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture - - // Get map image data to be used for collision detection - Color *mapPixels = LoadImageColors(imMap); - UnloadImage(imMap); // Unload image from RAM - - Vector3 mapPosition = { -16.0f, 0.0f, -8.0f }; // Set model position - - DisableCursor(); // Limit cursor to relative movement inside the window - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - Vector3 oldCamPos = camera.position; // Store old camera position - - UpdateCamera(&camera, CAMERA_FIRST_PERSON); - - // Check player collision (we simplify to 2D collision detection) - Vector2 playerPos = { camera.position.x, camera.position.z }; - float playerRadius = 0.1f; // Collision radius (player is modelled as a cilinder for collision) - - int playerCellX = (int)(playerPos.x - mapPosition.x + 0.5f); - int playerCellY = (int)(playerPos.y - mapPosition.z + 0.5f); - - // Out-of-limits security check - if (playerCellX < 0) playerCellX = 0; - else if (playerCellX >= cubicmap.width) playerCellX = cubicmap.width - 1; - - if (playerCellY < 0) playerCellY = 0; - else if (playerCellY >= cubicmap.height) playerCellY = cubicmap.height - 1; - - // Check map collisions using image data and player position against surrounding cells only - for (int y = playerCellY - 1; y <= playerCellY + 1; y++) - { - // Avoid map accessing out of bounds - if ((y >= 0) && (y < cubicmap.height)) - { - for (int x = playerCellX - 1; x <= playerCellX + 1; x++) - { - // NOTE: Collision: Only checking R channel for white pixel - if (((x >= 0) && (x < cubicmap.width)) && - (mapPixels[y*cubicmap.width + x].r == 255) && - (CheckCollisionCircleRec(playerPos, playerRadius, - (Rectangle){ mapPosition.x - 0.5f + x*1.0f, mapPosition.z - 0.5f + y*1.0f, 1.0f, 1.0f }))) - { - // Collision detected, reset camera position - camera.position = oldCamPos; - } - } - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - DrawModel(model, mapPosition, 1.0f, WHITE); // Draw maze map - EndMode3D(); - - DrawTextureEx(cubicmap, (Vector2){ GetScreenWidth() - cubicmap.width*4.0f - 20, 20.0f }, 0.0f, 4.0f, WHITE); - DrawRectangleLines(GetScreenWidth() - cubicmap.width*4 - 20, 20, cubicmap.width*4, cubicmap.height*4, GREEN); - - // Draw player position radar - DrawRectangle(GetScreenWidth() - cubicmap.width*4 - 20 + playerCellX*4, 20 + playerCellY*4, 4, 4, RED); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadImageColors(mapPixels); // Unload color array - - UnloadTexture(cubicmap); // Unload cubicmap texture - UnloadTexture(texture); // Unload map texture - UnloadModel(model); // Unload map model - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_first_person_maze.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_first_person_maze.png deleted file mode 100644 index ed6047e..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_first_person_maze.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_geometric_shapes.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_geometric_shapes.c deleted file mode 100644 index baaf458..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_geometric_shapes.c +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - geometric shapes -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.0, last time updated with raylib 3.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - geometric shapes"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 0.0f, 10.0f, 10.0f }; - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; - camera.fovy = 45.0f; - camera.projection = CAMERA_PERSPECTIVE; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // TODO: Update your variables here - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawCube((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, RED); - DrawCubeWires((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, GOLD); - DrawCubeWires((Vector3){-4.0f, 0.0f, -2.0f}, 3.0f, 6.0f, 2.0f, MAROON); - - DrawSphere((Vector3){-1.0f, 0.0f, -2.0f}, 1.0f, GREEN); - DrawSphereWires((Vector3){1.0f, 0.0f, 2.0f}, 2.0f, 16, 16, LIME); - - DrawCylinder((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, SKYBLUE); - DrawCylinderWires((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, DARKBLUE); - DrawCylinderWires((Vector3){4.5f, -1.0f, 2.0f}, 1.0f, 1.0f, 2.0f, 6, BROWN); - - DrawCylinder((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, GOLD); - DrawCylinderWires((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, PINK); - - DrawCapsule ((Vector3){-3.0f, 1.5f, -4.0f}, (Vector3){-4.0f, -1.0f, -4.0f}, 1.2f, 8, 8, VIOLET); - DrawCapsuleWires((Vector3){-3.0f, 1.5f, -4.0f}, (Vector3){-4.0f, -1.0f, -4.0f}, 1.2f, 8, 8, PURPLE); - - DrawGrid(10, 1.0f); // Draw a grid - - EndMode3D(); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_geometric_shapes.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_geometric_shapes.png deleted file mode 100644 index 765abe1..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_geometric_shapes.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_heightmap_rendering.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_heightmap_rendering.c deleted file mode 100644 index f2b1d70..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_heightmap_rendering.c +++ /dev/null @@ -1,92 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - heightmap rendering -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 1.8, last time updated with raylib 3.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - heightmap rendering"); - - // Define our custom camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 18.0f, 21.0f, 18.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Image image = LoadImage("resources/heightmap.png"); // Load heightmap image (RAM) - Texture2D texture = LoadTextureFromImage(image); // Convert image to texture (VRAM) - - Mesh mesh = GenMeshHeightmap(image, (Vector3){ 16, 8, 16 }); // Generate heightmap mesh (RAM and VRAM) - Model model = LoadModelFromMesh(mesh); // Load model from generated mesh - - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture - Vector3 mapPosition = { -8.0f, 0.0f, -8.0f }; // Define model position - - UnloadImage(image); // Unload heightmap image from RAM, already uploaded to VRAM - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModel(model, mapPosition, 1.0f, RED); - - DrawGrid(20, 1.0f); - - EndMode3D(); - - DrawTexture(texture, screenWidth - texture.width - 20, 20, WHITE); - DrawRectangleLines(screenWidth - texture.width - 20, 20, texture.width, texture.height, GREEN); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(texture); // Unload texture - UnloadModel(model); // Unload model - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_heightmap_rendering.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_heightmap_rendering.png deleted file mode 100644 index 6dcf01f..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_heightmap_rendering.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading.c deleted file mode 100644 index 0672da0..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading.c +++ /dev/null @@ -1,156 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - loading -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* NOTE: raylib supports multiple models file formats: -* -* - OBJ > Text file format. Must include vertex position-texcoords-normals information, -* if .obj references some .mtl materials file, it will be tried to be loaded -* - GLTF/GLB > Text/binary file formats. Includes lot of information and it could -* also reference external files, mesh and materials data will be tried to be loaded -* - IQM > Binary file format. Includes mesh vertex data but also animation data, -* meshes and animation data can be loaded -* - VOX > Binary file format. MagikaVoxel mesh format: -* https://github.com/ephtracy/voxel-model/blob/master/MagicaVoxel-file-format-vox.txt -* - M3D > Binary file format. Model 3D format: -* https://bztsrc.gitlab.io/model3d -* -* Example originally created with raylib 2.0, last time updated with raylib 4.2 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - loading"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 50.0f, 50.0f, 50.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 12.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera mode type - - Model model = LoadModel("resources/models/obj/castle.obj"); // Load model - Texture2D texture = LoadTexture("resources/models/obj/castle_diffuse.png"); // Load model texture - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture - - Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position - - BoundingBox bounds = GetMeshBoundingBox(model.meshes[0]); // Set model bounds - - // NOTE: bounds are calculated from the original size of the model, - // if model is scaled on drawing, bounds must be also scaled - - bool selected = false; // Selected object flag - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - // Load new models/textures on drag&drop - if (IsFileDropped()) - { - FilePathList droppedFiles = LoadDroppedFiles(); - - if (droppedFiles.count == 1) // Only support one file dropped - { - if (IsFileExtension(droppedFiles.paths[0], ".obj") || - IsFileExtension(droppedFiles.paths[0], ".gltf") || - IsFileExtension(droppedFiles.paths[0], ".glb") || - IsFileExtension(droppedFiles.paths[0], ".vox") || - IsFileExtension(droppedFiles.paths[0], ".iqm") || - IsFileExtension(droppedFiles.paths[0], ".m3d")) // Model file formats supported - { - UnloadModel(model); // Unload previous model - model = LoadModel(droppedFiles.paths[0]); // Load new model - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set current map diffuse texture - - bounds = GetMeshBoundingBox(model.meshes[0]); - - // Move camera position from target enough distance to visualize model properly - camera.position.x = bounds.max.x + 10.0f; - camera.position.y = bounds.max.y + 10.0f; - camera.position.z = bounds.max.z + 10.0f; - } - else if (IsFileExtension(droppedFiles.paths[0], ".png")) // Texture file formats supported - { - // Unload current model texture and load new one - UnloadTexture(texture); - texture = LoadTexture(droppedFiles.paths[0]); - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; - } - } - - UnloadDroppedFiles(droppedFiles); // Unload filepaths from memory - } - - // Select model on mouse click - if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) - { - // Check collision between ray and box - if (GetRayCollisionBox(GetScreenToWorldRay(GetMousePosition(), camera), bounds).hit) selected = !selected; - else selected = false; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModel(model, position, 1.0f, WHITE); // Draw 3d model with texture - - DrawGrid(20, 10.0f); // Draw a grid - - if (selected) DrawBoundingBox(bounds, GREEN); // Draw selection box - - EndMode3D(); - - DrawText("Drag & drop model to load mesh/texture.", 10, GetScreenHeight() - 20, 10, DARKGRAY); - if (selected) DrawText("MODEL SELECTED", GetScreenWidth() - 110, 10, 10, GREEN); - - DrawText("(c) Castle 3D model by Alberto Cano", screenWidth - 200, screenHeight - 20, 10, GRAY); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(texture); // Unload texture - UnloadModel(model); // Unload model - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading.png deleted file mode 100644 index 8ad8cb1..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_gltf.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_gltf.c deleted file mode 100644 index f21207b..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_gltf.c +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - loading gltf -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* LIMITATIONS: -* - Only supports 1 armature per file, and skips loading it if there are multiple armatures -* - Only supports linear interpolation (default method in Blender when checked -* "Always Sample Animations" when exporting a GLTF file) -* - Only supports translation/rotation/scale animation channel.path, -* weights not considered (i.e. morph targets) -* -* Example originally created with raylib 3.7, last time updated with raylib 4.2 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2020-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - loading gltf"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 6.0f, 6.0f, 6.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load model - Model model = LoadModel("resources/models/gltf/robot.glb"); - Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model world position - - // Load model animations - int animCount = 0; - ModelAnimation *anims = LoadModelAnimations("resources/models/gltf/robot.glb", &animCount); - - // Animation playing variables - unsigned int animIndex = 0; // Current animation playing - unsigned int animCurrentFrame = 0; // Current animation frame - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - // Select current animation - if (IsKeyPressed(KEY_RIGHT)) animIndex = (animIndex + 1)%animCount; - else if (IsKeyPressed(KEY_LEFT)) animIndex = (animIndex + animCount - 1)%animCount; - - // Update model animation - animCurrentFrame = (animCurrentFrame + 1)%anims[animIndex].keyframeCount; - UpdateModelAnimation(model, anims[animIndex], (float)animCurrentFrame); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModel(model, position, 1.0f, WHITE); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawText(TextFormat("Current animation: %s", anims[animIndex].name), 10, 40, 20, MAROON); - DrawText("Use the LEFT/RIGHT keys to switch animation", 10, 10, 20, GRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModelAnimations(anims, animCount); // Unload model animations data - UnloadModel(model); // Unload model - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - - - diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_gltf.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_gltf.png deleted file mode 100644 index 9aa3e23..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_gltf.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_iqm.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_iqm.c deleted file mode 100644 index 0eab898..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_iqm.c +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - loading iqm -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 2.5, last time updated with raylib 3.5 -* -* Example contributed by Culacant (@culacant) and reviewed by Ramon Santamaria (@raysan5) -* -* NOTES: To export an IQM model from blender, make sure it is not posed, the vertices need -* to be in the same position as they would be in edit mode and the scale of the models is -* set to 0; scaling can be set from the export menu -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2019-2025 Culacant (@culacant) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - loading iqm"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 4.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera mode type - - Model model = LoadModel("resources/models/iqm/guy.iqm"); // Load the animated model mesh and basic data - Texture2D texture = LoadTexture("resources/models/iqm/guytex.png"); // Load model texture and set material - SetMaterialTexture(&model.materials[0], MATERIAL_MAP_DIFFUSE, texture); // Set model material map texture - Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position - - // Load animation data - int animCount = 0; - ModelAnimation *anims = LoadModelAnimations("resources/models/iqm/guyanim.iqm", &animCount); - - // Animation playing variables - unsigned int animIndex = 0; // Current animation playing - float animCurrentFrame = 0.0f; // Current animation frame (supporting interpolated frames) - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - // Play animation when spacebar is held down - animCurrentFrame += 1.0f; - UpdateModelAnimation(model, anims[0], animCurrentFrame); - if (animCurrentFrame >= anims[0].keyframeCount) animCurrentFrame = 0; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModelEx(model, position, (Vector3){ 1.0f, 0.0f, 0.0f }, -90.0f, (Vector3){ 1.0f, 1.0f, 1.0f }, WHITE); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawText(TextFormat("Current animation: %s", anims[animIndex].name), 10, 10, 20, MAROON); - DrawText("(c) Guy IQM 3D model by @culacant", screenWidth - 200, screenHeight - 20, 10, GRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(texture); // Unload texture - UnloadModelAnimations(anims, animCount); // Unload model animations data - UnloadModel(model); // Unload model - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_iqm.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_iqm.png deleted file mode 100644 index 560cb35..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_iqm.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_m3d.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_m3d.c deleted file mode 100644 index 06911bf..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_m3d.c +++ /dev/null @@ -1,132 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - loading m3d -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 4.5, last time updated with raylib 4.5 -* -* Example contributed by bzt (@bztsrc) and reviewed by Ramon Santamaria (@raysan5) -* -* NOTES: -* - Model3D (M3D) fileformat specs: https://gitlab.com/bztsrc/model3d -* - Bender M3D exported: https://gitlab.com/bztsrc/model3d/-/tree/master/blender -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2022-2025 bzt (@bztsrc) -* -********************************************************************************************/ - -#include "raylib.h" - -static void DrawModelSkeleton(ModelSkeleton skeleton, ModelAnimPose pose, float scale, Color color); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - loading m3d"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 1.5f, 1.5f, 1.5f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.4f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load model - Model model = LoadModel("resources/models/m3d/cesium_man.m3d"); // Load the animated model mesh and basic data - Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position - - // Load animation data - int animCount = 0; - ModelAnimation *anims = LoadModelAnimations("resources/models/m3d/cesium_man.m3d", &animCount); - - // Animation playing variables - unsigned int animIndex = 0; // Current animation playing - float animCurrentFrame = 0.0f; // Current animation frame (supporting interpolated frames) - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - // Select current animation - if (IsKeyPressed(KEY_RIGHT)) animIndex = (animIndex + 1)%animCount; - else if (IsKeyPressed(KEY_LEFT)) animIndex = (animIndex + animCount - 1)%animCount; - - // Update model animation - animCurrentFrame += 1.0f; - if (animCurrentFrame >= anims[animIndex].keyframeCount) animCurrentFrame = 0.0f; - UpdateModelAnimation(model, anims[animIndex], animCurrentFrame); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - // Draw 3d model with texture - if (!IsKeyDown(KEY_SPACE)) DrawModel(model, position, 1.0f, WHITE); - else - { - // Draw the animated skeleton - DrawModelSkeleton(model.skeleton, anims[animIndex].keyframePoses[(int)animCurrentFrame], 1.0f, RED); - } - - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawText(TextFormat("Current animation: %s", anims[animIndex].name), 10, 10, 20, LIGHTGRAY); - DrawText("Press SPACE to draw skeleton", 10, 40, 20, MAROON); - DrawText("(c) CesiumMan model by KhronosGroup", GetScreenWidth() - 210, GetScreenHeight() - 20, 10, GRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModelAnimations(anims, animCount); // Unload model animations data - UnloadModel(model); // Unload model - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -// Draw model skeleton -static void DrawModelSkeleton(ModelSkeleton skeleton, ModelAnimPose pose, float scale, Color color) -{ - // Loop to (boneCount - 1) because the last one is a special "no bone" bone, - // needed to workaround buggy models without a -1, a cube is always drawn at the origin - for (int i = 0; i < skeleton.boneCount - 1; i++) - { - // Display the frame-pose skeleton - DrawCube(pose[i].translation, scale*0.05f, scale*0.05f, scale*0.05f, color); - - if (skeleton.bones[i].parent >= 0) - { - DrawLine3D(pose[i].translation, pose[skeleton.bones[i].parent].translation, color); - } - } -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_m3d.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_m3d.png deleted file mode 100644 index 101831c..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_m3d.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_vox.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_vox.c deleted file mode 100644 index 04b203a..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_vox.c +++ /dev/null @@ -1,192 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - loading vox -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 4.0, last time updated with raylib 4.0 -* -* Example contributed by Johann Nadalutti (@procfxgen) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2021-2025 Johann Nadalutti (@procfxgen) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" // Required for: MatrixTranslate() - -#define MAX_VOX_FILES 4 - -#define RLIGHTS_IMPLEMENTATION -#include "rlights.h" - -#if defined(PLATFORM_DESKTOP) - #define GLSL_VERSION 330 -#else // PLATFORM_ANDROID, PLATFORM_WEB - #define GLSL_VERSION 100 -#endif - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - const char *voxFileNames[] = { - "resources/models/vox/chr_knight.vox", - "resources/models/vox/chr_sword.vox", - "resources/models/vox/monu9.vox", - "resources/models/vox/fez.vox" - }; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - loading vox"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load MagicaVoxel files - Model models[MAX_VOX_FILES] = { 0 }; - - for (int i = 0; i < MAX_VOX_FILES; i++) - { - // Load VOX file and measure time - double t0 = GetTime()*1000.0; - models[i] = LoadModel(voxFileNames[i]); - double t1 = GetTime()*1000.0; - - TraceLog(LOG_INFO, TextFormat("[%s] Model file loaded in %.3f ms", voxFileNames[i], t1 - t0)); - - // Compute model translation matrix to center model on draw position (0, 0 , 0) - BoundingBox bb = GetModelBoundingBox(models[i]); - Vector3 center = { 0 }; - center.x = bb.min.x + (((bb.max.x - bb.min.x)/2)); - center.z = bb.min.z + (((bb.max.z - bb.min.z)/2)); - - Matrix matTranslate = MatrixTranslate(-center.x, 0, -center.z); - models[i].transform = matTranslate; - } - - int currentModel = 0; - Vector3 modelpos = { 0 }; - Vector3 camerarot = { 0 }; - - // Load voxel shader - Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/voxel_lighting.vs", GLSL_VERSION), - TextFormat("resources/shaders/glsl%i/voxel_lighting.fs", GLSL_VERSION)); - - // Get some required shader locations - shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); - // NOTE: "matModel" location name is automatically assigned on shader loading, - // no need to get the location again if using that uniform name - //shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocation(shader, "matModel"); - - // Ambient light level (some basic lighting) - int ambientLoc = GetShaderLocation(shader, "ambient"); - SetShaderValue(shader, ambientLoc, (float[4]) { 0.1f, 0.1f, 0.1f, 1.0f }, SHADER_UNIFORM_VEC4); - - // Assign out lighting shader to model - for (int i = 0; i < MAX_VOX_FILES; i++) - { - for (int j = 0; j < models[i].materialCount; j++) models[i].materials[j].shader = shader; - } - - // Create lights - Light lights[MAX_LIGHTS] = { 0 }; - lights[0] = CreateLight(LIGHT_POINT, (Vector3) { -20, 20, -20 }, Vector3Zero(), GRAY, shader); - lights[1] = CreateLight(LIGHT_POINT, (Vector3) { 20, -20, 20 }, Vector3Zero(), GRAY, shader); - lights[2] = CreateLight(LIGHT_POINT, (Vector3) { -20, 20, 20 }, Vector3Zero(), GRAY, shader); - lights[3] = CreateLight(LIGHT_POINT, (Vector3) { 20, -20, -20 }, Vector3Zero(), GRAY, shader); - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsMouseButtonDown(MOUSE_BUTTON_MIDDLE)) - { - const Vector2 mouseDelta = GetMouseDelta(); - camerarot.x = mouseDelta.x*0.05f; - camerarot.y = mouseDelta.y*0.05f; - } - else - { - camerarot.x = 0; - camerarot.y = 0; - } - - // Update camere movement, custom controls - UpdateCameraPro(&camera, - (Vector3){ (IsKeyDown(KEY_W) || IsKeyDown(KEY_UP))*0.1f - (IsKeyDown(KEY_S) || IsKeyDown(KEY_DOWN))*0.1f, // Move forward-backward - (IsKeyDown(KEY_D) || IsKeyDown(KEY_RIGHT))*0.1f - (IsKeyDown(KEY_A) || IsKeyDown(KEY_LEFT))*0.1f, // Move right-left - 0.0f }, // Move up-down - camerarot, // Camera rotation - GetMouseWheelMove()*-2.0f); // Move to target (zoom) - - // Cycle between models on mouse click - if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) currentModel = (currentModel + 1)%MAX_VOX_FILES; - - // Update the shader with the camera view vector (points towards { 0.0f, 0.0f, 0.0f }) - float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z }; - SetShaderValue(shader, shader.locs[SHADER_LOC_VECTOR_VIEW], cameraPos, SHADER_UNIFORM_VEC3); - - // Update light values (actually, only enable/disable them) - for (int i = 0; i < MAX_LIGHTS; i++) UpdateLightValues(shader, lights[i]); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - // Draw 3D model - BeginMode3D(camera); - DrawModel(models[currentModel], modelpos, 1.0f, WHITE); - DrawGrid(10, 1.0); - - // Draw spheres to show where the lights are - for (int i = 0; i < MAX_LIGHTS; i++) - { - if (lights[i].enabled) DrawSphereEx(lights[i].position, 0.2f, 8, 8, lights[i].color); - else DrawSphereWires(lights[i].position, 0.2f, 8, 8, ColorAlpha(lights[i].color, 0.3f)); - } - EndMode3D(); - - // Display info - DrawRectangle(10, 40, 340, 70, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines(10, 40, 340, 70, Fade(DARKBLUE, 0.5f)); - DrawText("- MOUSE LEFT BUTTON: CYCLE VOX MODELS", 20, 50, 10, BLUE); - DrawText("- MOUSE MIDDLE BUTTON: ZOOM OR ROTATE CAMERA", 20, 70, 10, BLUE); - DrawText("- UP-DOWN-LEFT-RIGHT KEYS: MOVE CAMERA", 20, 90, 10, BLUE); - DrawText(TextFormat("VOX model file: %s", GetFileName(voxFileNames[currentModel])), 10, 10, 20, GRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - // Unload models data (GPU VRAM) - for (int i = 0; i < MAX_VOX_FILES; i++) UnloadModel(models[i]); - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_vox.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_vox.png deleted file mode 100644 index 2bae0ab..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_loading_vox.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_generation.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_generation.c deleted file mode 100644 index c500e3c..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_generation.c +++ /dev/null @@ -1,189 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - mesh generation -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.8, last time updated with raylib 4.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2017-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define NUM_MODELS 9 // Parametric 3d shapes to generate - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static Mesh GenMeshCustom(void); // Generate a simple triangle mesh from code - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - mesh generation"); - - // We generate a checked image for texturing - Image checked = GenImageChecked(2, 2, 1, 1, RED, GREEN); - Texture2D texture = LoadTextureFromImage(checked); - UnloadImage(checked); - - Model models[NUM_MODELS] = { 0 }; - - models[0] = LoadModelFromMesh(GenMeshPlane(2, 2, 4, 3)); - models[1] = LoadModelFromMesh(GenMeshCube(2.0f, 1.0f, 2.0f)); - models[2] = LoadModelFromMesh(GenMeshSphere(2, 32, 32)); - models[3] = LoadModelFromMesh(GenMeshHemiSphere(2, 16, 16)); - models[4] = LoadModelFromMesh(GenMeshCylinder(1, 2, 16)); - models[5] = LoadModelFromMesh(GenMeshTorus(0.25f, 4.0f, 16, 32)); - models[6] = LoadModelFromMesh(GenMeshKnot(1.0f, 2.0f, 16, 128)); - models[7] = LoadModelFromMesh(GenMeshPoly(5, 2.0f)); - models[8] = LoadModelFromMesh(GenMeshCustom()); - - // NOTE: Generated meshes could be exported using ExportMesh() - - // Set checked texture as default diffuse component for all models material - for (int i = 0; i < NUM_MODELS; i++) models[i].materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; - - // Define the camera to look into our 3d world - Camera camera = { { 5.0f, 5.0f, 5.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f, 0 }; - - // Model drawing position - Vector3 position = { 0.0f, 0.0f, 0.0f }; - - int currentModel = 0; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) - { - currentModel = (currentModel + 1)%NUM_MODELS; // Cycle between the textures - } - - if (IsKeyPressed(KEY_RIGHT)) - { - currentModel++; - if (currentModel >= NUM_MODELS) currentModel = 0; - } - else if (IsKeyPressed(KEY_LEFT)) - { - currentModel--; - if (currentModel < 0) currentModel = NUM_MODELS - 1; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawModel(models[currentModel], position, 1.0f, WHITE); - DrawGrid(10, 1.0); - - EndMode3D(); - - DrawRectangle(30, 400, 310, 30, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines(30, 400, 310, 30, Fade(DARKBLUE, 0.5f)); - DrawText("MOUSE LEFT BUTTON to CYCLE PROCEDURAL MODELS", 40, 410, 10, BLUE); - - switch (currentModel) - { - case 0: DrawText("PLANE", 680, 10, 20, DARKBLUE); break; - case 1: DrawText("CUBE", 680, 10, 20, DARKBLUE); break; - case 2: DrawText("SPHERE", 680, 10, 20, DARKBLUE); break; - case 3: DrawText("HEMISPHERE", 640, 10, 20, DARKBLUE); break; - case 4: DrawText("CYLINDER", 680, 10, 20, DARKBLUE); break; - case 5: DrawText("TORUS", 680, 10, 20, DARKBLUE); break; - case 6: DrawText("KNOT", 680, 10, 20, DARKBLUE); break; - case 7: DrawText("POLY", 680, 10, 20, DARKBLUE); break; - case 8: DrawText("Custom (triangle)", 580, 10, 20, DARKBLUE); break; - default: break; - } - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(texture); // Unload texture - - // Unload models data (GPU VRAM) - for (int i = 0; i < NUM_MODELS; i++) UnloadModel(models[i]); - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -// Generate a simple triangle mesh from code -static Mesh GenMeshCustom(void) -{ - Mesh mesh = { 0 }; - mesh.triangleCount = 1; - mesh.vertexCount = mesh.triangleCount*3; - mesh.vertices = (float *)MemAlloc(mesh.vertexCount*3*sizeof(float)); // 3 vertices, 3 coordinates each (x, y, z) - mesh.texcoords = (float *)MemAlloc(mesh.vertexCount*2*sizeof(float)); // 3 vertices, 2 coordinates each (x, y) - mesh.normals = (float *)MemAlloc(mesh.vertexCount*3*sizeof(float)); // 3 vertices, 3 coordinates each (x, y, z) - - // Vertex at (0, 0, 0) - mesh.vertices[0] = 0; - mesh.vertices[1] = 0; - mesh.vertices[2] = 0; - mesh.normals[0] = 0; - mesh.normals[1] = 1; - mesh.normals[2] = 0; - mesh.texcoords[0] = 0; - mesh.texcoords[1] = 0; - - // Vertex at (1, 0, 2) - mesh.vertices[3] = 1; - mesh.vertices[4] = 0; - mesh.vertices[5] = 2; - mesh.normals[3] = 0; - mesh.normals[4] = 1; - mesh.normals[5] = 0; - mesh.texcoords[2] = 0.5f; - mesh.texcoords[3] = 1.0f; - - // Vertex at (2, 0, 0) - mesh.vertices[6] = 2; - mesh.vertices[7] = 0; - mesh.vertices[8] = 0; - mesh.normals[6] = 0; - mesh.normals[7] = 1; - mesh.normals[8] = 0; - mesh.texcoords[4] = 1; - mesh.texcoords[5] =0; - - // Upload mesh data from CPU (RAM) to GPU (VRAM) memory - UploadMesh(&mesh, false); - - return mesh; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_generation.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_generation.png deleted file mode 100644 index d8eb364..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_generation.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_picking.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_picking.c deleted file mode 100644 index 44f976a..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_picking.c +++ /dev/null @@ -1,249 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - mesh picking -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 1.7, last time updated with raylib 4.0 -* -* Example contributed by Joel Davis (@joeld42) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2017-2025 Joel Davis (@joeld42) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" -#include "raymath.h" - -#undef FLT_MAX -#define FLT_MAX 340282346638528859811704183484516925440.0f // Maximum value of a float, from bit pattern 01111111011111111111111111111111 - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - mesh picking"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 20.0f, 20.0f, 20.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 8.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.6f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Ray ray = { 0 }; // Picking ray - - Model tower = LoadModel("resources/models/obj/turret.obj"); // Load OBJ model - Texture2D texture = LoadTexture("resources/models/obj/turret_diffuse.png"); // Load model texture - tower.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set model diffuse texture - - Vector3 towerPos = { 0.0f, 0.0f, 0.0f }; // Set model position - BoundingBox towerBBox = GetMeshBoundingBox(tower.meshes[0]); // Get mesh bounding box - - // Ground quad - Vector3 g0 = (Vector3){ -50.0f, 0.0f, -50.0f }; - Vector3 g1 = (Vector3){ -50.0f, 0.0f, 50.0f }; - Vector3 g2 = (Vector3){ 50.0f, 0.0f, 50.0f }; - Vector3 g3 = (Vector3){ 50.0f, 0.0f, -50.0f }; - - // Test triangle - Vector3 ta = (Vector3){ -25.0f, 0.5f, 0.0f }; - Vector3 tb = (Vector3){ -4.0f, 2.5f, 1.0f }; - Vector3 tc = (Vector3){ -8.0f, 6.5f, 0.0f }; - - Vector3 bary = { 0.0f, 0.0f, 0.0f }; - - // Test sphere - Vector3 sp = (Vector3){ -30.0f, 5.0f, 5.0f }; - float sr = 4.0f; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsCursorHidden()) UpdateCamera(&camera, CAMERA_FIRST_PERSON); // Update camera - - // Toggle camera controls - if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) - { - if (IsCursorHidden()) EnableCursor(); - else DisableCursor(); - } - - // Display information about closest hit - RayCollision collision = { 0 }; - const char *hitObjectName = "None"; - collision.distance = FLT_MAX; - collision.hit = false; - Color cursorColor = WHITE; - - // Get ray and test against objects - ray = GetScreenToWorldRay(GetMousePosition(), camera); - - // Check ray collision against ground quad - RayCollision groundHitInfo = GetRayCollisionQuad(ray, g0, g1, g2, g3); - - if ((groundHitInfo.hit) && (groundHitInfo.distance < collision.distance)) - { - collision = groundHitInfo; - cursorColor = GREEN; - hitObjectName = "Ground"; - } - - // Check ray collision against test triangle - RayCollision triHitInfo = GetRayCollisionTriangle(ray, ta, tb, tc); - - if ((triHitInfo.hit) && (triHitInfo.distance < collision.distance)) - { - collision = triHitInfo; - cursorColor = PURPLE; - hitObjectName = "Triangle"; - - bary = Vector3Barycenter(collision.point, ta, tb, tc); - } - - // Check ray collision against test sphere - RayCollision sphereHitInfo = GetRayCollisionSphere(ray, sp, sr); - - if ((sphereHitInfo.hit) && (sphereHitInfo.distance < collision.distance)) - { - collision = sphereHitInfo; - cursorColor = ORANGE; - hitObjectName = "Sphere"; - } - - // Check ray collision against bounding box first, before trying the full ray-mesh test - RayCollision boxHitInfo = GetRayCollisionBox(ray, towerBBox); - - if ((boxHitInfo.hit) && (boxHitInfo.distance < collision.distance)) - { - collision = boxHitInfo; - cursorColor = ORANGE; - hitObjectName = "Box"; - - // Check ray collision against model meshes - RayCollision meshHitInfo = { 0 }; - for (int m = 0; m < tower.meshCount; m++) - { - // NOTE: We consider the model.transform for the collision check but - // it can be checked against any transform Matrix, used when checking against same - // model drawn multiple times with multiple transforms - meshHitInfo = GetRayCollisionMesh(ray, tower.meshes[m], tower.transform); - if (meshHitInfo.hit) - { - // Save the closest hit mesh - if ((!collision.hit) || (collision.distance > meshHitInfo.distance)) collision = meshHitInfo; - - break; // Stop once one mesh collision is detected, the colliding mesh is m - } - } - - if (meshHitInfo.hit) - { - collision = meshHitInfo; - cursorColor = ORANGE; - hitObjectName = "Mesh"; - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - // Draw the tower - // WARNING: If scale is different than 1.0f, - // not considered by GetRayCollisionModel() - DrawModel(tower, towerPos, 1.0f, WHITE); - - // Draw the test triangle - DrawLine3D(ta, tb, PURPLE); - DrawLine3D(tb, tc, PURPLE); - DrawLine3D(tc, ta, PURPLE); - - // Draw the test sphere - DrawSphereWires(sp, sr, 8, 8, PURPLE); - - // Draw the mesh bbox if we hit it - if (boxHitInfo.hit) DrawBoundingBox(towerBBox, LIME); - - // If we hit something, draw the cursor at the hit point - if (collision.hit) - { - DrawCube(collision.point, 0.3f, 0.3f, 0.3f, cursorColor); - DrawCubeWires(collision.point, 0.3f, 0.3f, 0.3f, RED); - - Vector3 normalEnd; - normalEnd.x = collision.point.x + collision.normal.x; - normalEnd.y = collision.point.y + collision.normal.y; - normalEnd.z = collision.point.z + collision.normal.z; - - DrawLine3D(collision.point, normalEnd, RED); - } - - DrawRay(ray, MAROON); - - DrawGrid(10, 10.0f); - - EndMode3D(); - - // Draw some debug GUI text - DrawText(TextFormat("Hit Object: %s", hitObjectName), 10, 50, 10, BLACK); - - if (collision.hit) - { - int ypos = 70; - - DrawText(TextFormat("Distance: %3.2f", collision.distance), 10, ypos, 10, BLACK); - - DrawText(TextFormat("Hit Pos: %3.2f %3.2f %3.2f", - collision.point.x, - collision.point.y, - collision.point.z), 10, ypos + 15, 10, BLACK); - - DrawText(TextFormat("Hit Norm: %3.2f %3.2f %3.2f", - collision.normal.x, - collision.normal.y, - collision.normal.z), 10, ypos + 30, 10, BLACK); - - if (triHitInfo.hit && TextIsEqual(hitObjectName, "Triangle")) - DrawText(TextFormat("Barycenter: %3.2f %3.2f %3.2f", bary.x, bary.y, bary.z), 10, ypos + 45, 10, BLACK); - } - - DrawText("Right click mouse to toggle camera controls", 10, 430, 10, GRAY); - - DrawText("(c) Turret 3D model by Alberto Cano", screenWidth - 200, screenHeight - 20, 10, GRAY); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModel(tower); // Unload model - UnloadTexture(texture); // Unload texture - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_picking.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_picking.png deleted file mode 100644 index 0972f94..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_mesh_picking.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_orthographic_projection.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_orthographic_projection.c deleted file mode 100644 index d087372..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_orthographic_projection.c +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - orthographic projection -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 2.0, last time updated with raylib 3.7 -* -* Example contributed by Max Danielsson (@autious) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2018-2025 Max Danielsson (@autious) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#define FOVY_PERSPECTIVE 45.0f -#define WIDTH_ORTHOGRAPHIC 10.0f - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - orthographic projection"); - - // Define the camera to look into our 3d world - Camera camera = { { 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, FOVY_PERSPECTIVE, CAMERA_PERSPECTIVE }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - if (IsKeyPressed(KEY_SPACE)) - { - if (camera.projection == CAMERA_PERSPECTIVE) - { - camera.fovy = WIDTH_ORTHOGRAPHIC; - camera.projection = CAMERA_ORTHOGRAPHIC; - } - else - { - camera.fovy = FOVY_PERSPECTIVE; - camera.projection = CAMERA_PERSPECTIVE; - } - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawCube((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, RED); - DrawCubeWires((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, GOLD); - DrawCubeWires((Vector3){-4.0f, 0.0f, -2.0f}, 3.0f, 6.0f, 2.0f, MAROON); - - DrawSphere((Vector3){-1.0f, 0.0f, -2.0f}, 1.0f, GREEN); - DrawSphereWires((Vector3){1.0f, 0.0f, 2.0f}, 2.0f, 16, 16, LIME); - - DrawCylinder((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, SKYBLUE); - DrawCylinderWires((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, DARKBLUE); - DrawCylinderWires((Vector3){4.5f, -1.0f, 2.0f}, 1.0f, 1.0f, 2.0f, 6, BROWN); - - DrawCylinder((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, GOLD); - DrawCylinderWires((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, PINK); - - DrawGrid(10, 1.0f); // Draw a grid - - EndMode3D(); - - DrawText("Press Spacebar to switch camera type", 10, GetScreenHeight() - 30, 20, DARKGRAY); - - if (camera.projection == CAMERA_ORTHOGRAPHIC) DrawText("ORTHOGRAPHIC", 10, 40, 20, BLACK); - else if (camera.projection == CAMERA_PERSPECTIVE) DrawText("PERSPECTIVE", 10, 40, 20, BLACK); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_orthographic_projection.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_orthographic_projection.png deleted file mode 100644 index 2942eee..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_orthographic_projection.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_point_rendering.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_point_rendering.c deleted file mode 100644 index fd8d1b9..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_point_rendering.c +++ /dev/null @@ -1,215 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - point rendering -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 5.0, last time updated with raylib 5.0 -* -* Example contributed by Reese Gallagher (@satchelfrost) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2024-2025 Reese Gallagher (@satchelfrost) -* -********************************************************************************************/ - -#include "raylib.h" -#include "rlgl.h" - -#include // Required for: rand() -#include // Required for: cosf(), sinf() - -#define MAX_POINTS 10000000 // 10 million -#define MIN_POINTS 1000 // 1 thousand - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -static Mesh GenMeshPoints(int numPoints); // Generate mesh using points -void DrawModelPoints(Model model, Vector3 position, float scale, Color tint); // Draw a model as points -void DrawModelPointsEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model as points with extended parameters - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - point rendering"); - - Camera camera = { - .position = { 3.0f, 3.0f, 3.0f }, - .target = { 0.0f, 0.0f, 0.0f }, - .up = { 0.0f, 1.0f, 0.0f }, - .fovy = 45.0f, - .projection = CAMERA_PERSPECTIVE - }; - - Vector3 position = { 0.0f, 0.0f, 0.0f }; - bool useDrawModelPoints = true; - bool numPointsChanged = false; - int numPoints = 1000; - - Mesh mesh = GenMeshPoints(numPoints); - Model model = LoadModelFromMesh(mesh); - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_ORBITAL); - - if (IsKeyPressed(KEY_SPACE)) useDrawModelPoints = !useDrawModelPoints; - if (IsKeyPressed(KEY_UP)) - { - numPoints = (numPoints*10 > MAX_POINTS)? MAX_POINTS : numPoints*10; - numPointsChanged = true; - } - if (IsKeyPressed(KEY_DOWN)) - { - numPoints = (numPoints/10 < MIN_POINTS)? MIN_POINTS : numPoints/10; - numPointsChanged = true; - } - - // Upload a different point cloud size - if (numPointsChanged) - { - UnloadModel(model); - mesh = GenMeshPoints(numPoints); - model = LoadModelFromMesh(mesh); - numPointsChanged = false; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(BLACK); - - BeginMode3D(camera); - // The new method only uploads the points once to the GPU - if (useDrawModelPoints) DrawModelPoints(model, position, 1.0f, WHITE); - else - { - // The old method must continually draw the "points" (lines) - for (int i = 0; i < numPoints; i++) - { - Vector3 pos = { - .x = mesh.vertices[i*3 + 0], - .y = mesh.vertices[i*3 + 1], - .z = mesh.vertices[i*3 + 2], - }; - Color color = { - .r = mesh.colors[i*4 + 0], - .g = mesh.colors[i*4 + 1], - .b = mesh.colors[i*4 + 2], - .a = mesh.colors[i*4 + 3], - }; - - DrawPoint3D(pos, color); - } - } - - // Draw a unit sphere for reference - DrawSphereWires(position, 1.0f, 10, 10, YELLOW); - EndMode3D(); - - // Draw UI text - DrawText(TextFormat("Point Count: %d", numPoints), 10, screenHeight - 50, 40, WHITE); - DrawText("UP - Increase points", 10, 40, 20, WHITE); - DrawText("DOWN - Decrease points", 10, 70, 20, WHITE); - DrawText("SPACE - Drawing function", 10, 100, 20, WHITE); - - if (useDrawModelPoints) DrawText("Using: DrawModelPoints()", 10, 130, 20, GREEN); - else DrawText("Using: DrawPoint3D()", 10, 130, 20, RED); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModel(model); - - CloseWindow(); - //-------------------------------------------------------------------------------------- - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -// Generate a spherical point cloud -static Mesh GenMeshPoints(int numPoints) -{ - Mesh mesh = { - .triangleCount = 1, - .vertexCount = numPoints, - .vertices = (float *)MemAlloc(numPoints*3*sizeof(float)), - .colors = (unsigned char*)MemAlloc(numPoints*4*sizeof(unsigned char)), - }; - - // REF: https://en.wikipedia.org/wiki/Spherical_coordinate_system - for (int i = 0; i < numPoints; i++) - { - float theta = ((float)PI*rand())/((float)RAND_MAX); - float phi = (2.0f*PI*rand())/((float)RAND_MAX); - float r = (10.0f*rand())/((float)RAND_MAX); - - mesh.vertices[i*3 + 0] = r*sinf(theta)*cosf(phi); - mesh.vertices[i*3 + 1] = r*sinf(theta)*sinf(phi); - mesh.vertices[i*3 + 2] = r*cosf(theta); - - Color color = ColorFromHSV(r*360.0f, 1.0f, 1.0f); - - mesh.colors[i*4 + 0] = color.r; - mesh.colors[i*4 + 1] = color.g; - mesh.colors[i*4 + 2] = color.b; - mesh.colors[i*4 + 3] = color.a; - } - - // Upload mesh data from CPU (RAM) to GPU (VRAM) memory - UploadMesh(&mesh, false); - - return mesh; -} - - -// Draw a model points -// WARNING: OpenGL ES 2.0 does not support point mode drawing -void DrawModelPoints(Model model, Vector3 position, float scale, Color tint) -{ - rlEnablePointMode(); - rlDisableBackfaceCulling(); - - DrawModel(model, position, scale, tint); - - rlEnableBackfaceCulling(); - rlDisablePointMode(); -} - -// Draw a model points -// WARNING: OpenGL ES 2.0 does not support point mode drawing -void DrawModelPointsEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint) -{ - rlEnablePointMode(); - rlDisableBackfaceCulling(); - - DrawModelEx(model, position, rotationAxis, rotationAngle, scale, tint); - - rlEnableBackfaceCulling(); - rlDisablePointMode(); -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_point_rendering.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_point_rendering.png deleted file mode 100644 index a1fc718..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_point_rendering.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rlgl_solar_system.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rlgl_solar_system.c deleted file mode 100644 index 1becc63..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rlgl_solar_system.c +++ /dev/null @@ -1,171 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - rlgl solar system -* -* Example complexity rating: [★★★★] 4/4 -* -* NOTE: This example uses [rlgl] module functionality (pseudo-OpenGL 1.1 style coding) -* -* Example originally created with raylib 2.5, last time updated with raylib 4.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2018-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" -#include "rlgl.h" - -#include // Required for: cosf(), sinf() - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -void DrawSphereBasic(Color color); // Draw sphere without any matrix transformation - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - const float sunRadius = 4.0f; - const float earthRadius = 0.6f; - const float earthOrbitRadius = 8.0f; - const float moonRadius = 0.16f; - const float moonOrbitRadius = 1.5f; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - rlgl solar system"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 16.0f, 16.0f, 16.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - float rotationSpeed = 0.2f; // General system rotation speed - - float earthRotation = 0.0f; // Rotation of earth around itself (days) in degrees - float earthOrbitRotation = 0.0f; // Rotation of earth around the Sun (years) in degrees - float moonRotation = 0.0f; // Rotation of moon around itself - float moonOrbitRotation = 0.0f; // Rotation of moon around earth in degrees - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - earthRotation += (5.0f*rotationSpeed); - earthOrbitRotation += (365/360.0f*(5.0f*rotationSpeed)*rotationSpeed); - moonRotation += (2.0f*rotationSpeed); - moonOrbitRotation += (8.0f*rotationSpeed); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - rlPushMatrix(); - rlScalef(sunRadius, sunRadius, sunRadius); // Scale Sun - DrawSphereBasic(GOLD); // Draw the Sun - rlPopMatrix(); - - rlPushMatrix(); - rlRotatef(earthOrbitRotation, 0.0f, 1.0f, 0.0f); // Rotation for Earth orbit around Sun - rlTranslatef(earthOrbitRadius, 0.0f, 0.0f); // Translation for Earth orbit - - rlPushMatrix(); - rlRotatef(earthRotation, 0.25, 1.0, 0.0); // Rotation for Earth itself - rlScalef(earthRadius, earthRadius, earthRadius);// Scale Earth - - DrawSphereBasic(BLUE); // Draw the Earth - rlPopMatrix(); - - rlRotatef(moonOrbitRotation, 0.0f, 1.0f, 0.0f); // Rotation for Moon orbit around Earth - rlTranslatef(moonOrbitRadius, 0.0f, 0.0f); // Translation for Moon orbit - rlRotatef(moonRotation, 0.0f, 1.0f, 0.0f); // Rotation for Moon itself - rlScalef(moonRadius, moonRadius, moonRadius); // Scale Moon - - DrawSphereBasic(LIGHTGRAY); // Draw the Moon - rlPopMatrix(); - - // Some reference elements (not affected by previous matrix transformations) - DrawCircle3D((Vector3){ 0.0f, 0.0f, 0.0f }, earthOrbitRadius, (Vector3){ 1, 0, 0 }, 90.0f, Fade(RED, 0.5f)); - DrawGrid(20, 1.0f); - - EndMode3D(); - - DrawText("EARTH ORBITING AROUND THE SUN!", 400, 10, 20, MAROON); - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//-------------------------------------------------------------------------------------------- -// Module Functions Definition -//-------------------------------------------------------------------------------------------- -// Draw sphere without any matrix transformation -// NOTE: Sphere is drawn in world position ( 0, 0, 0 ) with radius 1.0f -void DrawSphereBasic(Color color) -{ - int rings = 16; - int slices = 16; - - // Make sure there is enough space in the internal render batch - // buffer to store all required vertex, batch is reseted if required - rlCheckRenderBatchLimit((rings + 2)*slices*6); - - rlBegin(RL_TRIANGLES); - rlColor4ub(color.r, color.g, color.b, color.a); - - for (int i = 0; i < (rings + 2); i++) - { - for (int j = 0; j < slices; j++) - { - rlVertex3f(cosf(DEG2RAD*(270+(180.0f/(rings + 1))*i))*sinf(DEG2RAD*(j*360.0f/slices)), - sinf(DEG2RAD*(270+(180.0f/(rings + 1))*i)), - cosf(DEG2RAD*(270+(180.0f/(rings + 1))*i))*cosf(DEG2RAD*(j*360.0f/slices))); - rlVertex3f(cosf(DEG2RAD*(270+(180.0f/(rings + 1))*(i+1)))*sinf(DEG2RAD*((j+1)*360.0f/slices)), - sinf(DEG2RAD*(270+(180.0f/(rings + 1))*(i+1))), - cosf(DEG2RAD*(270+(180.0f/(rings + 1))*(i+1)))*cosf(DEG2RAD*((j+1)*360.0f/slices))); - rlVertex3f(cosf(DEG2RAD*(270+(180.0f/(rings + 1))*(i+1)))*sinf(DEG2RAD*(j*360.0f/slices)), - sinf(DEG2RAD*(270+(180.0f/(rings + 1))*(i+1))), - cosf(DEG2RAD*(270+(180.0f/(rings + 1))*(i+1)))*cosf(DEG2RAD*(j*360.0f/slices))); - - rlVertex3f(cosf(DEG2RAD*(270+(180.0f/(rings + 1))*i))*sinf(DEG2RAD*(j*360.0f/slices)), - sinf(DEG2RAD*(270+(180.0f/(rings + 1))*i)), - cosf(DEG2RAD*(270+(180.0f/(rings + 1))*i))*cosf(DEG2RAD*(j*360.0f/slices))); - rlVertex3f(cosf(DEG2RAD*(270+(180.0f/(rings + 1))*(i)))*sinf(DEG2RAD*((j+1)*360.0f/slices)), - sinf(DEG2RAD*(270+(180.0f/(rings + 1))*(i))), - cosf(DEG2RAD*(270+(180.0f/(rings + 1))*(i)))*cosf(DEG2RAD*((j+1)*360.0f/slices))); - rlVertex3f(cosf(DEG2RAD*(270+(180.0f/(rings + 1))*(i+1)))*sinf(DEG2RAD*((j+1)*360.0f/slices)), - sinf(DEG2RAD*(270+(180.0f/(rings + 1))*(i+1))), - cosf(DEG2RAD*(270+(180.0f/(rings + 1))*(i+1)))*cosf(DEG2RAD*((j+1)*360.0f/slices))); - } - } - rlEnd(); -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rlgl_solar_system.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rlgl_solar_system.png deleted file mode 100644 index 576510c..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rlgl_solar_system.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rotating_cube.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rotating_cube.c deleted file mode 100644 index 7cfca16..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rotating_cube.c +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - rotating cube -* -* Example complexity rating: [★☆☆☆] 1/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example contributed by Jopestpe (@jopestpe) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2025 Jopestpe (@jopestpe) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - rotating cube"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 0.0f, 3.0f, 3.0f }; - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; - camera.fovy = 45.0f; - camera.projection = CAMERA_PERSPECTIVE; - - // Load image to create texture for the cube - Model model = LoadModelFromMesh(GenMeshCube(1.0f, 1.0f, 1.0f)); - Image img = LoadImage("resources/cubicmap_atlas.png"); - Image crop = ImageFromImage(img, (Rectangle){0, img.height/2.0f, img.width/2.0f, img.height/2.0f}); - Texture2D texture = LoadTextureFromImage(crop); - UnloadImage(img); - UnloadImage(crop); - - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; - - float rotation = 0.0f; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - rotation += 1.0f; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - // Draw model defining: position, size, rotation-axis, rotation (degrees), size, and tint-color - DrawModelEx(model, (Vector3){ 0.0f, 0.0f, 0.0f }, (Vector3){ 0.5f, 1.0f, 0.0f }, - rotation, (Vector3){ 1.0f, 1.0f, 1.0f }, WHITE); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(texture); // Unload texture - UnloadModel(model); // Unload model - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rotating_cube.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rotating_cube.png deleted file mode 100644 index 4c199bd..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_rotating_cube.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_skybox_rendering.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_skybox_rendering.c deleted file mode 100644 index c8d10dc..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_skybox_rendering.c +++ /dev/null @@ -1,282 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - skybox rendering -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.8, last time updated with raylib 4.0 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2017-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "rlgl.h" -#include "raymath.h" // Required for: MatrixPerspective(), MatrixLookAt() - -#if defined(PLATFORM_DESKTOP) - #define GLSL_VERSION 330 -#else // PLATFORM_ANDROID, PLATFORM_WEB - #define GLSL_VERSION 100 -#endif - -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -// Generate cubemap (6 faces) from equirectangular (panorama) texture -static TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int size, int format); - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - skybox rendering"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 1.0f, 1.0f, 1.0f }; // Camera position - camera.target = (Vector3){ 4.0f, 1.0f, 4.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Load skybox model - Mesh cube = GenMeshCube(1.0f, 1.0f, 1.0f); - Model skybox = LoadModelFromMesh(cube); - - // Set this to true to use an HDR Texture - // NOTE: raylib must be built with HDR Support for this to work: SUPPORT_FILEFORMAT_HDR - bool useHDR = false; - - // Load skybox shader and set required locations - // NOTE: Some locations are automatically set at shader loading - skybox.materials[0].shader = LoadShader(TextFormat("resources/shaders/glsl%i/skybox.vs", GLSL_VERSION), - TextFormat("resources/shaders/glsl%i/skybox.fs", GLSL_VERSION)); - - SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "environmentMap"), (int[1]){ MATERIAL_MAP_CUBEMAP }, SHADER_UNIFORM_INT); - SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "doGamma"), (int[1]){ useHDR? 1 : 0 }, SHADER_UNIFORM_INT); - SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "vflipped"), (int[1]){ useHDR? 1 : 0 }, SHADER_UNIFORM_INT); - - // Load cubemap shader and setup required shader locations - Shader shdrCubemap = LoadShader(TextFormat("resources/shaders/glsl%i/cubemap.vs", GLSL_VERSION), - TextFormat("resources/shaders/glsl%i/cubemap.fs", GLSL_VERSION)); - - SetShaderValue(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT); - - char skyboxFileName[256] = { 0 }; - - if (useHDR) - { - TextCopy(skyboxFileName, "resources/dresden_square_2k.hdr"); - - // Load HDR panorama (sphere) texture - Texture2D panorama = LoadTexture(skyboxFileName); - - // Generate cubemap (texture with 6 quads-cube-mapping) from panorama HDR texture - // NOTE 1: New texture is generated rendering to texture, shader calculates the sphere->cube coordinates mapping - // NOTE 2: It seems on some Android devices WebGL, fbo does not properly support a FLOAT-based attachment, - // despite texture can be successfully created.. so using PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 instead of PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 - skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, panorama, 1024, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8); - - UnloadTexture(panorama); // Texture not required anymore, cubemap already generated - } - else - { - // TODO: WARNING: On PLATFORM_WEB it requires a big amount of memory to process input image - // and generate the required cubemap image to be passed to rlLoadTextureCubemap() - Image image = LoadImage("resources/skybox.png"); - skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = LoadTextureCubemap(image, CUBEMAP_LAYOUT_AUTO_DETECT); - UnloadImage(image); - } - - DisableCursor(); // Limit cursor to relative movement inside the window - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_FIRST_PERSON); - - // Load new cubemap texture on drag&drop - if (IsFileDropped()) - { - FilePathList droppedFiles = LoadDroppedFiles(); - - if (droppedFiles.count == 1) // Only support one file dropped - { - if (IsFileExtension(droppedFiles.paths[0], ".png;.jpg;.hdr;.bmp;.tga")) - { - // Unload current cubemap texture to load new one - UnloadTexture(skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture); - - if (useHDR) - { - // Load HDR panorama (sphere) texture - Texture2D panorama = LoadTexture(droppedFiles.paths[0]); - - // Generate cubemap from panorama texture - skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, panorama, 1024, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8); - - UnloadTexture(panorama); // Texture not required anymore, cubemap already generated - } - else - { - Image image = LoadImage(droppedFiles.paths[0]); - skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = LoadTextureCubemap(image, CUBEMAP_LAYOUT_AUTO_DETECT); - UnloadImage(image); - } - - TextCopy(skyboxFileName, droppedFiles.paths[0]); - } - } - - UnloadDroppedFiles(droppedFiles); // Unload filepaths from memory - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - // We are inside the cube, we need to disable backface culling! - rlDisableBackfaceCulling(); - rlDisableDepthMask(); - DrawModel(skybox, (Vector3){0, 0, 0}, 1.0f, WHITE); - rlEnableBackfaceCulling(); - rlEnableDepthMask(); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - if (useHDR) DrawText(TextFormat("Panorama image from hdrihaven.com: %s", GetFileName(skyboxFileName)), 10, GetScreenHeight() - 20, 10, BLACK); - else DrawText(TextFormat(": %s", GetFileName(skyboxFileName)), 10, GetScreenHeight() - 20, 10, BLACK); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadShader(skybox.materials[0].shader); - UnloadTexture(skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture); - - UnloadModel(skybox); // Unload skybox model - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Module Functions Definition -//------------------------------------------------------------------------------------ -// Generate cubemap texture from HDR texture -static TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int size, int format) -{ - TextureCubemap cubemap = { 0 }; - - rlDisableBackfaceCulling(); // Disable backface culling to render inside the cube - - // STEP 1: Setup framebuffer - //------------------------------------------------------------------------------------------ - unsigned int rbo = rlLoadTextureDepth(size, size, true); - cubemap.id = rlLoadTextureCubemap(0, size, format, 1); - - unsigned int fbo = rlLoadFramebuffer(); - rlFramebufferAttach(fbo, rbo, RL_ATTACHMENT_DEPTH, RL_ATTACHMENT_RENDERBUFFER, 0); - rlFramebufferAttach(fbo, cubemap.id, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_CUBEMAP_POSITIVE_X, 0); - - // Check if framebuffer is complete with attachments (valid) - if (rlFramebufferComplete(fbo)) TraceLog(LOG_INFO, "FBO: [ID %i] Framebuffer object created successfully", fbo); - //------------------------------------------------------------------------------------------ - - // STEP 2: Draw to framebuffer - //------------------------------------------------------------------------------------------ - // NOTE: Shader is used to convert HDR equirectangular environment map to cubemap equivalent (6 faces) - rlEnableShader(shader.id); - - // Define projection matrix and send it to shader - Matrix matFboProjection = MatrixPerspective(90.0*DEG2RAD, 1.0, rlGetCullDistanceNear(), rlGetCullDistanceFar()); - rlSetUniformMatrix(shader.locs[SHADER_LOC_MATRIX_PROJECTION], matFboProjection); - - // Define view matrix for every side of the cubemap - Matrix fboViews[6] = { - MatrixLookAt((Vector3){ 0.0f, 0.0f, 0.0f }, (Vector3){ 1.0f, 0.0f, 0.0f }, (Vector3){ 0.0f, -1.0f, 0.0f }), - MatrixLookAt((Vector3){ 0.0f, 0.0f, 0.0f }, (Vector3){ -1.0f, 0.0f, 0.0f }, (Vector3){ 0.0f, -1.0f, 0.0f }), - MatrixLookAt((Vector3){ 0.0f, 0.0f, 0.0f }, (Vector3){ 0.0f, 1.0f, 0.0f }, (Vector3){ 0.0f, 0.0f, 1.0f }), - MatrixLookAt((Vector3){ 0.0f, 0.0f, 0.0f }, (Vector3){ 0.0f, -1.0f, 0.0f }, (Vector3){ 0.0f, 0.0f, -1.0f }), - MatrixLookAt((Vector3){ 0.0f, 0.0f, 0.0f }, (Vector3){ 0.0f, 0.0f, 1.0f }, (Vector3){ 0.0f, -1.0f, 0.0f }), - MatrixLookAt((Vector3){ 0.0f, 0.0f, 0.0f }, (Vector3){ 0.0f, 0.0f, -1.0f }, (Vector3){ 0.0f, -1.0f, 0.0f }) - }; - - rlViewport(0, 0, size, size); // Set viewport to current fbo dimensions - - // Activate and enable texture for drawing to cubemap faces - rlActiveTextureSlot(0); - rlEnableTexture(panorama.id); - - for (int i = 0; i < 6; i++) - { - // Set the view matrix for the current cube face - rlSetUniformMatrix(shader.locs[SHADER_LOC_MATRIX_VIEW], fboViews[i]); - - // Select the current cubemap face attachment for the fbo - // WARNING: This function by default enables->attach->disables fbo!!! - rlFramebufferAttach(fbo, cubemap.id, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_CUBEMAP_POSITIVE_X + i, 0); - rlEnableFramebuffer(fbo); - - // Load and draw a cube, it uses the current enabled texture - rlClearScreenBuffers(); - rlLoadDrawCube(); - - // ALTERNATIVE: Try to use internal batch system to draw the cube instead of rlLoadDrawCube - // for some reason this method does not work, maybe due to cube triangles definition? normals pointing out? - // TODO: Investigate this issue... - //rlSetTexture(panorama.id); // WARNING: It must be called after enabling current framebuffer if using internal batch system! - //rlClearScreenBuffers(); - //DrawCubeV(Vector3Zero(), Vector3One(), WHITE); - //rlDrawRenderBatchActive(); - } - //------------------------------------------------------------------------------------------ - - // STEP 3: Unload framebuffer and reset state - //------------------------------------------------------------------------------------------ - rlDisableShader(); // Unbind shader - rlDisableTexture(); // Unbind texture - rlDisableFramebuffer(); // Unbind framebuffer - rlUnloadFramebuffer(fbo); // Unload framebuffer (and automatically attached depth texture/renderbuffer) - - // Reset viewport dimensions to default - rlViewport(0, 0, rlGetFramebufferWidth(), rlGetFramebufferHeight()); - rlEnableBackfaceCulling(); - //------------------------------------------------------------------------------------------ - - cubemap.width = size; - cubemap.height = size; - cubemap.mipmaps = 1; - cubemap.format = format; - - return cubemap; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_skybox_rendering.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_skybox_rendering.png deleted file mode 100644 index feb0f73..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_skybox_rendering.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_tesseract_view.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_tesseract_view.c deleted file mode 100644 index 9829d63..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_tesseract_view.c +++ /dev/null @@ -1,128 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - tesseract view -* -* NOTE: This example only works on platforms that support drag & drop (Windows, Linux, OSX, Html5?) -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 6.0, last time updated with raylib 6.0 -* -* Example contributed by Timothy van der Valk (@arceryz) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2024-2025 Timothy van der Valk (@arceryz) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - tesseract view"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 4.0f, 4.0f, 4.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 0.0f, 1.0f }; // Camera up vector (rotation towards target) - camera.fovy = 50.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera mode type - - // Find the coordinates by setting XYZW to +-1 - Vector4 tesseract[16] = { - { 1, 1, 1, 1 }, { 1, 1, 1, -1 }, - { 1, 1, -1, 1 }, { 1, 1, -1, -1 }, - { 1, -1, 1, 1 }, { 1, -1, 1, -1 }, - { 1, -1, -1, 1 }, { 1, -1, -1, -1 }, - { -1, 1, 1, 1 }, { -1, 1, 1, -1 }, - { -1, 1, -1, 1 }, { -1, 1, -1, -1 }, - { -1, -1, 1, 1 }, { -1, -1, 1, -1 }, - { -1, -1, -1, 1 }, { -1, -1, -1, -1 }, - }; - - float rotation = 0.0f; - Vector3 transformed[16] = { 0 }; - float wValues[16] = { 0 }; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - rotation = DEG2RAD*45.0f*(float)GetTime(); - - for (int i = 0; i < 16; i++) - { - Vector4 p = tesseract[i]; - - // Rotate the XW part of the vector - Vector2 rotXW = Vector2Rotate((Vector2){ p.x, p.w }, rotation); - p.x = rotXW.x; - p.w = rotXW.y; - - // Projection from XYZW to XYZ from perspective point (0, 0, 0, 3) - // NOTE: Trace a ray from (0, 0, 0, 3) > p and continue until W = 0 - float c = 3.0f/(3.0f - p.w); - p.x = c*p.x; - p.y = c*p.y; - p.z = c*p.z; - - // Split XYZ coordinate and W values later for drawing - transformed[i] = (Vector3){ p.x, p.y, p.z }; - wValues[i] = p.w; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - for (int i = 0; i < 16; i++) - { - // Draw spheres to indicate the W value - DrawSphere(transformed[i], fabsf(wValues[i]*0.1f), RED); - - for (int j = 0; j < 16; j++) - { - // Two lines are connected if they differ by 1 coordinate - // This way we dont have to keep an edge list - Vector4 v1 = tesseract[i]; - Vector4 v2 = tesseract[j]; - int diff = (int)(v1.x == v2.x) + (int)(v1.y == v2.y) + (int)(v1.z == v2.z) + (int)(v1.w == v2.w); - - // Draw only differing by 1 coordinate and the lower index only (duplicate lines) - if (diff == 3 && i < j) DrawLine3D(transformed[i], transformed[j], MAROON); - } - } - EndMode3D(); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_tesseract_view.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_tesseract_view.png deleted file mode 100644 index 664e560..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_tesseract_view.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_textured_cube.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_textured_cube.c deleted file mode 100644 index c9f66bc..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_textured_cube.c +++ /dev/null @@ -1,247 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - textured cube -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 4.5, last time updated with raylib 4.5 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2022-2025 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "rlgl.h" // Required to define vertex data (immediate-mode style) - -//------------------------------------------------------------------------------------ -// Custom Functions Declaration -//------------------------------------------------------------------------------------ -void DrawCubeTexture(Texture2D texture, Vector3 position, float width, float height, float length, Color color); // Draw cube textured -void DrawCubeTextureRec(Texture2D texture, Rectangle source, Vector3 position, float width, float height, float length, Color color); // Draw cube with a region of a texture - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - textured cube"); - - // Define the camera to look into our 3d world - Camera camera = { 0 }; - camera.position = (Vector3){ 0.0f, 10.0f, 10.0f }; - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; - camera.fovy = 45.0f; - camera.projection = CAMERA_PERSPECTIVE; - - // Load texture to be applied to the cubes sides - Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // TODO: Update your variables here - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - // Draw cube with an applied texture - DrawCubeTexture(texture, (Vector3){ -2.0f, 2.0f, 0.0f }, 2.0f, 4.0f, 2.0f, WHITE); - - // Draw cube with an applied texture, but only a defined rectangle piece of the texture - DrawCubeTextureRec(texture, (Rectangle){ 0.0f, texture.height/2.0f, texture.width/2.0f, texture.height/2.0f }, - (Vector3){ 2.0f, 1.0f, 0.0f }, 2.0f, 2.0f, 2.0f, WHITE); - - DrawGrid(10, 1.0f); // Draw a grid - - EndMode3D(); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(texture); // Unload texture - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//------------------------------------------------------------------------------------ -// Custom Functions Definition -//------------------------------------------------------------------------------------ -// Draw cube textured -// NOTE: Cube position is the center position -void DrawCubeTexture(Texture2D texture, Vector3 position, float width, float height, float length, Color color) -{ - float x = position.x; - float y = position.y; - float z = position.z; - - // Set desired texture to be enabled while drawing following vertex data - rlSetTexture(texture.id); - - // Vertex data transformation can be defined with the commented lines, - // but in this example we calculate the transformed vertex data directly when calling rlVertex3f() - //rlPushMatrix(); - // NOTE: Transformation is applied in inverse order (scale -> rotate -> translate) - //rlTranslatef(2.0f, 0.0f, 0.0f); - //rlRotatef(45, 0, 1, 0); - //rlScalef(2.0f, 2.0f, 2.0f); - - rlBegin(RL_QUADS); - rlColor4ub(color.r, color.g, color.b, color.a); - // Front Face - rlNormal3f(0.0f, 0.0f, 1.0f); // Normal Pointing Towards Viewer - rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z + length/2); // Bottom Left Of The Texture and Quad - rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Right Of The Texture and Quad - rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z + length/2); // Top Right Of The Texture and Quad - rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z + length/2); // Top Left Of The Texture and Quad - // Back Face - rlNormal3f(0.0f, 0.0f, - 1.0f); // Normal Pointing Away From Viewer - rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z - length/2); // Bottom Right Of The Texture and Quad - rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Right Of The Texture and Quad - rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z - length/2); // Top Left Of The Texture and Quad - rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z - length/2); // Bottom Left Of The Texture and Quad - // Top Face - rlNormal3f(0.0f, 1.0f, 0.0f); // Normal Pointing Up - rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Left Of The Texture and Quad - rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x - width/2, y + height/2, z + length/2); // Bottom Left Of The Texture and Quad - rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x + width/2, y + height/2, z + length/2); // Bottom Right Of The Texture and Quad - rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z - length/2); // Top Right Of The Texture and Quad - // Bottom Face - rlNormal3f(0.0f, - 1.0f, 0.0f); // Normal Pointing Down - rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x - width/2, y - height/2, z - length/2); // Top Right Of The Texture and Quad - rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x + width/2, y - height/2, z - length/2); // Top Left Of The Texture and Quad - rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Left Of The Texture and Quad - rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z + length/2); // Bottom Right Of The Texture and Quad - // Right face - rlNormal3f(1.0f, 0.0f, 0.0f); // Normal Pointing Right - rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z - length/2); // Bottom Right Of The Texture and Quad - rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z - length/2); // Top Right Of The Texture and Quad - rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z + length/2); // Top Left Of The Texture and Quad - rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Left Of The Texture and Quad - // Left Face - rlNormal3f( - 1.0f, 0.0f, 0.0f); // Normal Pointing Left - rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z - length/2); // Bottom Left Of The Texture and Quad - rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z + length/2); // Bottom Right Of The Texture and Quad - rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z + length/2); // Top Right Of The Texture and Quad - rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Left Of The Texture and Quad - rlEnd(); - //rlPopMatrix(); - - rlSetTexture(0); -} - -// Draw cube with texture piece applied to all faces -void DrawCubeTextureRec(Texture2D texture, Rectangle source, Vector3 position, float width, float height, float length, Color color) -{ - float x = position.x; - float y = position.y; - float z = position.z; - float texWidth = (float)texture.width; - float texHeight = (float)texture.height; - - // Set desired texture to be enabled while drawing following vertex data - rlSetTexture(texture.id); - - // We calculate the normalized texture coordinates for the desired texture-source-rectangle - // It means converting from (tex.width, tex.height) coordinates to [0.0f, 1.0f] equivalent - rlBegin(RL_QUADS); - rlColor4ub(color.r, color.g, color.b, color.a); - - // Front face - rlNormal3f(0.0f, 0.0f, 1.0f); - rlTexCoord2f(source.x/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x - width/2, y - height/2, z + length/2); - rlTexCoord2f((source.x + source.width)/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x + width/2, y - height/2, z + length/2); - rlTexCoord2f((source.x + source.width)/texWidth, source.y/texHeight); - rlVertex3f(x + width/2, y + height/2, z + length/2); - rlTexCoord2f(source.x/texWidth, source.y/texHeight); - rlVertex3f(x - width/2, y + height/2, z + length/2); - - // Back face - rlNormal3f(0.0f, 0.0f, - 1.0f); - rlTexCoord2f((source.x + source.width)/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x - width/2, y - height/2, z - length/2); - rlTexCoord2f((source.x + source.width)/texWidth, source.y/texHeight); - rlVertex3f(x - width/2, y + height/2, z - length/2); - rlTexCoord2f(source.x/texWidth, source.y/texHeight); - rlVertex3f(x + width/2, y + height/2, z - length/2); - rlTexCoord2f(source.x/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x + width/2, y - height/2, z - length/2); - - // Top face - rlNormal3f(0.0f, 1.0f, 0.0f); - rlTexCoord2f(source.x/texWidth, source.y/texHeight); - rlVertex3f(x - width/2, y + height/2, z - length/2); - rlTexCoord2f(source.x/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x - width/2, y + height/2, z + length/2); - rlTexCoord2f((source.x + source.width)/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x + width/2, y + height/2, z + length/2); - rlTexCoord2f((source.x + source.width)/texWidth, source.y/texHeight); - rlVertex3f(x + width/2, y + height/2, z - length/2); - - // Bottom face - rlNormal3f(0.0f, - 1.0f, 0.0f); - rlTexCoord2f((source.x + source.width)/texWidth, source.y/texHeight); - rlVertex3f(x - width/2, y - height/2, z - length/2); - rlTexCoord2f(source.x/texWidth, source.y/texHeight); - rlVertex3f(x + width/2, y - height/2, z - length/2); - rlTexCoord2f(source.x/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x + width/2, y - height/2, z + length/2); - rlTexCoord2f((source.x + source.width)/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x - width/2, y - height/2, z + length/2); - - // Right face - rlNormal3f(1.0f, 0.0f, 0.0f); - rlTexCoord2f((source.x + source.width)/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x + width/2, y - height/2, z - length/2); - rlTexCoord2f((source.x + source.width)/texWidth, source.y/texHeight); - rlVertex3f(x + width/2, y + height/2, z - length/2); - rlTexCoord2f(source.x/texWidth, source.y/texHeight); - rlVertex3f(x + width/2, y + height/2, z + length/2); - rlTexCoord2f(source.x/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x + width/2, y - height/2, z + length/2); - - // Left face - rlNormal3f( - 1.0f, 0.0f, 0.0f); - rlTexCoord2f(source.x/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x - width/2, y - height/2, z - length/2); - rlTexCoord2f((source.x + source.width)/texWidth, (source.y + source.height)/texHeight); - rlVertex3f(x - width/2, y - height/2, z + length/2); - rlTexCoord2f((source.x + source.width)/texWidth, source.y/texHeight); - rlVertex3f(x - width/2, y + height/2, z + length/2); - rlTexCoord2f(source.x/texWidth, source.y/texHeight); - rlVertex3f(x - width/2, y + height/2, z - length/2); - - rlEnd(); - - rlSetTexture(0); -} \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_textured_cube.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_textured_cube.png deleted file mode 100644 index 45b3a13..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_textured_cube.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_waving_cubes.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_waving_cubes.c deleted file mode 100644 index 36e8bcc..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_waving_cubes.c +++ /dev/null @@ -1,121 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - waving cubes -* -* Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 2.5, last time updated with raylib 3.7 -* -* Example contributed by Codecat (@codecat) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2019-2025 Codecat (@codecat) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include // Required for: sinf() - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [models] example - waving cubes"); - - // Initialize the camera - Camera3D camera = { 0 }; - camera.position = (Vector3){ 30.0f, 20.0f, 30.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 70.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - // Specify the amount of blocks in each direction - const int numBlocks = 15; - - SetTargetFPS(60); - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - double time = GetTime(); - - // Calculate time scale for cube position and size - float scale = (2.0f + (float)sin(time))*0.7f; - - // Move camera around the scene - double cameraTime = time*0.3; - camera.position.x = (float)cos(cameraTime)*40.0f; - camera.position.z = (float)sin(cameraTime)*40.0f; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawGrid(10, 5.0f); - - for (int x = 0; x < numBlocks; x++) - { - for (int y = 0; y < numBlocks; y++) - { - for (int z = 0; z < numBlocks; z++) - { - // Scale of the blocks depends on x/y/z positions - float blockScale = (x + y + z)/30.0f; - - // Scatter makes the waving effect by adding blockScale over time - float scatter = sinf(blockScale*20.0f + (float)(time*4.0f)); - - // Calculate the cube position - Vector3 cubePos = { - (float)(x - (float)numBlocks/2)*(scale*3.0f) + scatter, - (float)(y - (float)numBlocks/2)*(scale*2.0f) + scatter, - (float)(z - (float)numBlocks/2)*(scale*3.0f) + scatter - }; - - // Pick a color with a hue depending on cube position for the rainbow color effect - // NOTE: This function is quite costly to be done per cube and frame, - // pre-catching the results into a separate array could improve performance - Color cubeColor = ColorFromHSV((float)(((x + y + z)*18)%360), 0.75f, 0.9f); - - // Calculate cube size - float cubeSize = (2.4f - scale)*blockScale; - - // And finally, draw the cube! - DrawCube(cubePos, cubeSize, cubeSize, cubeSize, cubeColor); - } - } - } - - EndMode3D(); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_waving_cubes.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_waving_cubes.png deleted file mode 100644 index 37a1761..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_waving_cubes.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_yaw_pitch_roll.c b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_yaw_pitch_roll.c deleted file mode 100644 index 76074cc..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_yaw_pitch_roll.c +++ /dev/null @@ -1,128 +0,0 @@ -/******************************************************************************************* -* -* raylib [models] example - yaw pitch roll -* -* Example complexity rating: [★★☆☆] 2/4 -* -* Example originally created with raylib 1.8, last time updated with raylib 4.0 -* -* Example contributed by Berni (@Berni8k) and reviewed by Ramon Santamaria (@raysan5) -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2017-2025 Berni (@Berni8k) and Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -#include "raymath.h" // Required for: MatrixRotateXYZ() - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - //SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_WINDOW_HIGHDPI); - InitWindow(screenWidth, screenHeight, "raylib [models] example - yaw pitch roll"); - - Camera camera = { 0 }; - camera.position = (Vector3){ 0.0f, 50.0f, -120.0f };// Camera position perspective - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 30.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera type - - Model model = LoadModel("resources/models/obj/plane.obj"); // Load model - Texture2D texture = LoadTexture("resources/models/obj/plane_diffuse.png"); // Load model texture - - SetTextureWrap(texture, TEXTURE_WRAP_REPEAT); // Force Repeat to avoid issue on Web version - - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture - - float pitch = 0.0f; - float roll = 0.0f; - float yaw = 0.0f; - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - // Plane pitch (x-axis) controls - if (IsKeyDown(KEY_DOWN)) pitch += 0.6f; - else if (IsKeyDown(KEY_UP)) pitch -= 0.6f; - else - { - if (pitch > 0.3f) pitch -= 0.3f; - else if (pitch < -0.3f) pitch += 0.3f; - } - - // Plane yaw (y-axis) controls - if (IsKeyDown(KEY_S)) yaw -= 1.0f; - else if (IsKeyDown(KEY_A)) yaw += 1.0f; - else - { - if (yaw > 0.0f) yaw -= 0.5f; - else if (yaw < 0.0f) yaw += 0.5f; - } - - // Plane roll (z-axis) controls - if (IsKeyDown(KEY_LEFT)) roll -= 1.0f; - else if (IsKeyDown(KEY_RIGHT)) roll += 1.0f; - else - { - if (roll > 0.0f) roll -= 0.5f; - else if (roll < 0.0f) roll += 0.5f; - } - - // Tranformation matrix for rotations - model.transform = MatrixRotateXYZ((Vector3){ DEG2RAD*pitch, DEG2RAD*yaw, DEG2RAD*roll }); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - // Draw 3D model (recomended to draw 3D always before 2D) - BeginMode3D(camera); - - DrawModel(model, (Vector3){ 0.0f, -8.0f, 0.0f }, 1.0f, WHITE); // Draw 3d model with texture - DrawGrid(10, 10.0f); - - EndMode3D(); - - // Draw controls info - DrawRectangle(30, 370, 260, 70, Fade(GREEN, 0.5f)); - DrawRectangleLines(30, 370, 260, 70, Fade(DARKGREEN, 0.5f)); - DrawText("Pitch controlled with: KEY_UP / KEY_DOWN", 40, 380, 10, DARKGRAY); - DrawText("Roll controlled with: KEY_LEFT / KEY_RIGHT", 40, 400, 10, DARKGRAY); - DrawText("Yaw controlled with: KEY_A / KEY_S", 40, 420, 10, DARKGRAY); - - DrawText("(c) WWI Plane Model created by GiaHanLam", screenWidth - 240, screenHeight - 20, 10, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadModel(model); // Unload model data - UnloadTexture(texture); // Unload texture data - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_yaw_pitch_roll.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_yaw_pitch_roll.png deleted file mode 100644 index 8b36fe3..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/models_yaw_pitch_roll.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/raygui.h b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/raygui.h deleted file mode 100644 index 58bd38b..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/raygui.h +++ /dev/null @@ -1,6053 +0,0 @@ -/******************************************************************************************* -* -* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library -* -* DESCRIPTION: -* raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also -* available as a standalone library, as long as input and drawing functions are provided -* -* FEATURES: -* - Immediate-mode gui, minimal retained data -* - +25 controls provided (basic and advanced) -* - Styling system for colors, font and metrics -* - Icons supported, embedded as a 1-bit icons pack -* - Standalone mode option (custom input/graphics backend) -* - Multiple support tools provided for raygui development -* -* POSSIBLE IMPROVEMENTS: -* - Better standalone mode API for easy plug of custom backends -* - Externalize required inputs, allow user easier customization -* -* LIMITATIONS: -* - No editable multi-line word-wraped text box supported -* - No auto-layout mechanism, up to the user to define controls position and size -* - Standalone mode requires library modification and some user work to plug another backend -* -* NOTES: -* - WARNING: GuiLoadStyle() and GuiLoadStyle{Custom}() functions, allocate memory for -* font atlas recs and glyphs, freeing that memory is (usually) up to the user, -* no unload function is explicitly provided... but note that GuiLoadStyleDefault() unloads -* by default any previously loaded font (texture, recs, glyphs) -* - Global UI alpha (guiAlpha) is applied inside GuiDrawRectangle() and GuiDrawText() functions -* -* CONTROLS PROVIDED: -* # Container/separators Controls -* - WindowBox --> StatusBar, Panel -* - GroupBox --> Line -* - Line -* - Panel --> StatusBar -* - ScrollPanel --> StatusBar -* - TabBar --> Button -* -* # Basic Controls -* - Label -* - LabelButton --> Label -* - Button -* - Toggle -* - ToggleGroup --> Toggle -* - ToggleSlider -* - CheckBox -* - ComboBox -* - DropdownBox -* - TextBox -* - ValueBox --> TextBox -* - Spinner --> Button, ValueBox -* - Slider -* - SliderBar --> Slider -* - ProgressBar -* - StatusBar -* - DummyRec -* - Grid -* -* # Advance Controls -* - ListView -* - ColorPicker --> ColorPanel, ColorBarHue -* - MessageBox --> Window, Label, Button -* - TextInputBox --> Window, Label, TextBox, Button -* -* It also provides a set of functions for styling the controls based on its properties (size, color) -* -* -* RAYGUI STYLE (guiStyle): -* raygui uses a global data array for all gui style properties (allocated on data segment by default), -* when a new style is loaded, it is loaded over the global style... but a default gui style could always be -* recovered with GuiLoadStyleDefault() function, that overwrites the current style to the default one -* -* The global style array size is fixed and depends on the number of controls and properties: -* -* static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)]; -* -* guiStyle size is by default: 16*(16 + 8) = 384 int = 384*4 bytes = 1536 bytes = 1.5 KB -* -* Note that the first set of BASE properties (by default guiStyle[0..15]) belong to the generic style -* used for all controls, when any of those base values is set, it is automatically populated to all -* controls, so, specific control values overwriting generic style should be set after base values -* -* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), -* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) -* Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR -* -* Custom control properties can be defined using the EXTENDED properties for each independent control. -* -* TOOL: rGuiStyler is a visual tool to customize raygui style: github.com/raysan5/rguistyler -* -* -* RAYGUI ICONS (guiIcons): -* raygui could use a global array containing icons data (allocated on data segment by default), -* a custom icons set could be loaded over this array using GuiLoadIcons(), but loaded icons set -* must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS will be loaded -* -* Every icon is codified in binary form, using 1 bit per pixel, so, every 16x16 icon -* requires 8 integers (16*16/32) to be stored in memory. -* -* When the icon is draw, actually one quad per pixel is drawn if the bit for that pixel is set -* -* The global icons array size is fixed and depends on the number of icons and size: -* -* static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS]; -* -* guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB -* -* TOOL: rGuiIcons is a visual tool to customize/create raygui icons: github.com/raysan5/rguiicons -* -* RAYGUI LAYOUT: -* raygui currently does not provide an auto-layout mechanism like other libraries, -* layouts must be defined manually on controls drawing, providing the right bounds Rectangle for it -* -* TOOL: rGuiLayout is a visual tool to create raygui layouts: github.com/raysan5/rguilayout -* -* CONFIGURATION: -* #define RAYGUI_IMPLEMENTATION -* Generates the implementation of the library into the included file -* If not defined, the library is in header only mode and can be included in other headers -* or source files without problems. But only ONE file should hold the implementation -* -* #define RAYGUI_STANDALONE -* Avoid raylib.h header inclusion in this file. Data types defined on raylib are defined -* internally in the library and input management and drawing functions must be provided by -* the user (check library implementation for further details) -* -* #define RAYGUI_NO_ICONS -* Avoid including embedded ricons data (256 icons, 16x16 pixels, 1-bit per pixel, 2KB) -* -* #define RAYGUI_CUSTOM_ICONS -* Includes custom ricons.h header defining a set of custom icons, -* this file can be generated using rGuiIcons tool -* -* #define RAYGUI_DEBUG_RECS_BOUNDS -* Draw control bounds rectangles for debug -* -* #define RAYGUI_DEBUG_TEXT_BOUNDS -* Draw text bounds rectangles for debug -* -* VERSIONS HISTORY: -* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) -* ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes -* ADDED: GuiValueBoxFloat() -* ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP -* ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH -* ADDED: GuiLoadIconsFromMemory() -* ADDED: Multiple new icons -* ADDED: Macros for inputs customization, raylib decoupling -* REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties -* REMOVED: GuiSliderPro(), functionality was redundant -* REVIEWED: Controls using text labels to use LABEL properties -* REVIEWED: Replaced sprintf() by snprintf() for more safety -* REVIEWED: GuiTabBar(), close tab with mouse middle button -* REVIEWED: GuiScrollPanel(), scroll speed proportional to content -* REVIEWED: GuiDropdownBox(), support roll up and hidden arrow -* REVIEWED: GuiTextBox(), cursor position initialization -* REVIEWED: GuiSliderPro(), control value change check -* REVIEWED: GuiGrid(), simplified implementation -* REVIEWED: GuiIconText(), increase buffer size and reviewed padding -* REVIEWED: GuiDrawText(), improved wrap mode drawing -* REVIEWED: GuiScrollBar(), minor tweaks -* REVIEWED: GuiProgressBar(), improved borders computing -* REVIEWED: GuiTextBox(), multiple improvements: autocursor and more -* REVIEWED: Functions descriptions, removed wrong return value reference -* REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion -* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing -* -* 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() -* ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() -* ADDED: Multiple new icons, mostly compiler related -* ADDED: New DEFAULT properties: TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE -* ADDED: New enum values: GuiTextAlignment, GuiTextAlignmentVertical, GuiTextWrapMode -* ADDED: Support loading styles with custom font charset from external file -* REDESIGNED: GuiTextBox(), support mouse cursor positioning -* REDESIGNED: GuiDrawText(), support multiline and word-wrap modes (read only) -* REDESIGNED: GuiProgressBar() to be more visual, progress affects border color -* REDESIGNED: Global alpha consideration moved to GuiDrawRectangle() and GuiDrawText() -* REDESIGNED: GuiScrollPanel(), get parameters by reference and return result value -* REDESIGNED: GuiToggleGroup(), get parameters by reference and return result value -* REDESIGNED: GuiComboBox(), get parameters by reference and return result value -* REDESIGNED: GuiCheckBox(), get parameters by reference and return result value -* REDESIGNED: GuiSlider(), get parameters by reference and return result value -* REDESIGNED: GuiSliderBar(), get parameters by reference and return result value -* REDESIGNED: GuiProgressBar(), get parameters by reference and return result value -* REDESIGNED: GuiListView(), get parameters by reference and return result value -* REDESIGNED: GuiColorPicker(), get parameters by reference and return result value -* REDESIGNED: GuiColorPanel(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarAlpha(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarHue(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), added extra parameter -* REDESIGNED: GuiListViewEx(), change parameters order -* REDESIGNED: All controls return result as int value -* REVIEWED: GuiScrollPanel() to avoid smallish scroll-bars -* REVIEWED: All examples and specially controls_test_suite -* RENAMED: gui_file_dialog module to gui_window_file_dialog -* UPDATED: All styles to include ISO-8859-15 charset (as much as possible) -* -* 3.6 (10-May-2023) ADDED: New icon: SAND_TIMER -* ADDED: GuiLoadStyleFromMemory() (binary only) -* REVIEWED: GuiScrollBar() horizontal movement key -* REVIEWED: GuiTextBox() crash on cursor movement -* REVIEWED: GuiTextBox(), additional inputs support -* REVIEWED: GuiLabelButton(), avoid text cut -* REVIEWED: GuiTextInputBox(), password input -* REVIEWED: Local GetCodepointNext(), aligned with raylib -* REDESIGNED: GuiSlider*()/GuiScrollBar() to support out-of-bounds -* -* 3.5 (20-Apr-2023) ADDED: GuiTabBar(), based on GuiToggle() -* ADDED: Helper functions to split text in separate lines -* ADDED: Multiple new icons, useful for code editing tools -* REMOVED: Unneeded icon editing functions -* REMOVED: GuiTextBoxMulti(), very limited and broken -* REMOVED: MeasureTextEx() dependency, logic directly implemented -* REMOVED: DrawTextEx() dependency, logic directly implemented -* REVIEWED: GuiScrollBar(), improve mouse-click behaviour -* REVIEWED: Library header info, more info, better organized -* REDESIGNED: GuiTextBox() to support cursor movement -* REDESIGNED: GuiDrawText() to divide drawing by lines -* -* 3.2 (22-May-2022) RENAMED: Some enum values, for unification, avoiding prefixes -* REMOVED: GuiScrollBar(), only internal -* REDESIGNED: GuiPanel() to support text parameter -* REDESIGNED: GuiScrollPanel() to support text parameter -* REDESIGNED: GuiColorPicker() to support text parameter -* REDESIGNED: GuiColorPanel() to support text parameter -* REDESIGNED: GuiColorBarAlpha() to support text parameter -* REDESIGNED: GuiColorBarHue() to support text parameter -* REDESIGNED: GuiTextInputBox() to support password -* -* 3.1 (12-Jan-2022) REVIEWED: Default style for consistency (aligned with rGuiLayout v2.5 tool) -* REVIEWED: GuiLoadStyle() to support compressed font atlas image data and unload previous textures -* REVIEWED: External icons usage logic -* REVIEWED: GuiLine() for centered alignment when including text -* RENAMED: Multiple controls properties definitions to prepend RAYGUI_ -* RENAMED: RICON_ references to RAYGUI_ICON_ for library consistency -* Projects updated and multiple tweaks -* -* 3.0 (04-Nov-2021) Integrated ricons data to avoid external file -* REDESIGNED: GuiTextBoxMulti() -* REMOVED: GuiImageButton*() -* Multiple minor tweaks and bugs corrected -* -* 2.9 (17-Mar-2021) REMOVED: Tooltip API -* 2.8 (03-May-2020) Centralized rectangles drawing to GuiDrawRectangle() -* 2.7 (20-Feb-2020) ADDED: Possible tooltips API -* 2.6 (09-Sep-2019) ADDED: GuiTextInputBox() -* REDESIGNED: GuiListView*(), GuiDropdownBox(), GuiSlider*(), GuiProgressBar(), GuiMessageBox() -* REVIEWED: GuiTextBox(), GuiSpinner(), GuiValueBox(), GuiLoadStyle() -* Replaced property INNER_PADDING by TEXT_PADDING, renamed some properties -* ADDED: 8 new custom styles ready to use -* Multiple minor tweaks and bugs corrected -* -* 2.5 (28-May-2019) Implemented extended GuiTextBox(), GuiValueBox(), GuiSpinner() -* 2.3 (29-Apr-2019) ADDED: rIcons auxiliar library and support for it, multiple controls reviewed -* Refactor all controls drawing mechanism to use control state -* 2.2 (05-Feb-2019) ADDED: GuiScrollBar(), GuiScrollPanel(), reviewed GuiListView(), removed Gui*Ex() controls -* 2.1 (26-Dec-2018) REDESIGNED: GuiCheckBox(), GuiComboBox(), GuiDropdownBox(), GuiToggleGroup() > Use combined text string -* REDESIGNED: Style system (breaking change) -* 2.0 (08-Nov-2018) ADDED: Support controls guiLock and custom fonts -* REVIEWED: GuiComboBox(), GuiListView()... -* 1.9 (09-Oct-2018) REVIEWED: GuiGrid(), GuiTextBox(), GuiTextBoxMulti(), GuiValueBox()... -* 1.8 (01-May-2018) Lot of rework and redesign to align with rGuiStyler and rGuiLayout -* 1.5 (21-Jun-2017) Working in an improved styles system -* 1.4 (15-Jun-2017) Rewritten all GUI functions (removed useless ones) -* 1.3 (12-Jun-2017) Complete redesign of style system -* 1.1 (01-Jun-2017) Complete review of the library -* 1.0 (07-Jun-2016) Converted to header-only by Ramon Santamaria -* 0.9 (07-Mar-2016) Reviewed and tested by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria -* 0.8 (27-Aug-2015) Initial release. Implemented by Kevin Gato, Daniel Nicolás and Ramon Santamaria -* -* DEPENDENCIES: -* raylib 5.6-dev - Inputs reading (keyboard/mouse), shapes drawing, font loading and text drawing -* -* STANDALONE MODE: -* By default raygui depends on raylib mostly for the inputs and the drawing functionality but that dependency can be disabled -* with the config flag RAYGUI_STANDALONE. In that case is up to the user to provide another backend to cover library needs -* -* The following functions should be redefined for a custom backend: -* -* - Vector2 GetMousePosition(void); -* - float GetMouseWheelMove(void); -* - bool IsMouseButtonDown(int button); -* - bool IsMouseButtonPressed(int button); -* - bool IsMouseButtonReleased(int button); -* - bool IsKeyDown(int key); -* - bool IsKeyPressed(int key); -* - int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() -* -* - void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() -* - void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() -* -* - Font GetFontDefault(void); // -- GuiLoadStyleDefault() -* - Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle() -* - Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image -* - void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) -* - char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data -* - void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data -* - const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs -* - int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list -* - void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list -* - unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() -* -* CONTRIBUTORS: -* Ramon Santamaria: Supervision, review, redesign, update and maintenance -* Vlad Adrian: Complete rewrite of GuiTextBox() to support extended features (2019) -* Sergio Martinez: Review, testing (2015) and redesign of multiple controls (2018) -* Adria Arranz: Testing and implementation of additional controls (2018) -* Jordi Jorba: Testing and implementation of additional controls (2018) -* Albert Martos: Review and testing of the library (2015) -* Ian Eito: Review and testing of the library (2015) -* Kevin Gato: Initial implementation of basic components (2014) -* Daniel Nicolas: Initial implementation of basic components (2014) -* -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) -* -* 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. -* -**********************************************************************************************/ - -#ifndef RAYGUI_H -#define RAYGUI_H - -#define RAYGUI_VERSION_MAJOR 4 -#define RAYGUI_VERSION_MINOR 5 -#define RAYGUI_VERSION_PATCH 0 -#define RAYGUI_VERSION "5.0-dev" - -#if !defined(RAYGUI_STANDALONE) - #include "raylib.h" -#endif - -// Function specifiers in case library is build/used as a shared library (Windows) -// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll -#if defined(_WIN32) - #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) - #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) - #endif -#if !defined(_CRT_SECURE_NO_WARNINGS) - #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC -#endif -#endif - -// Function specifiers definition -#ifndef RAYGUIAPI - #define RAYGUIAPI // Functions defined as 'extern' by default (implicit specifiers) -#endif - -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -// Simple log system to avoid printf() calls if required -// NOTE: Avoiding those calls, also avoids const strings memory usage -#define RAYGUI_SUPPORT_LOG_INFO -#if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) -#else - #define RAYGUI_LOG(...) -#endif - -// Macros to define required UI inputs, including mapping to gamepad controls -// TODO: Define additionally required macros for missing inputs -#if !defined(GUI_BUTTON_DOWN) - #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -#if !defined(GUI_BUTTON_DOWN_ALT) - // Mapping to alternative button down pressed - #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) -#endif -#if !defined(GUI_BUTTON_PRESSED) - #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) -#if !defined(GUI_BUTTON_RELEASED) - #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) -#endif -#if !defined(GUI_SCROLL_DELTA) - // Mapping to scroll delta changes - // TODO: Review inconsistencies between platforms - #if defined(PLATFORM_WEB) - // NOTE: Gamepad axis triggers not detected on web platform - #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) - #else - #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) - #endif -#endif -#if !defined(GUI_POINTER_POSITION) - #define GUI_POINTER_POSITION GetMousePosition() -#endif -#if !defined(GUI_KEY_DOWN) - #define GUI_KEY_DOWN(key) IsKeyDown(key) -#endif -#if !defined(GUI_KEY_PRESSED) - #define GUI_KEY_PRESSED(key) IsKeyPressed(key) -#endif -#if !defined(GUI_INPUT_KEY) - #define GUI_INPUT_KEY GetCharPressed() -#endif - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -// NOTE: Some types are required for RAYGUI_STANDALONE usage -//---------------------------------------------------------------------------------- -#if defined(RAYGUI_STANDALONE) - #ifndef __cplusplus - // Boolean type - #ifndef true - typedef enum { false, true } bool; - #endif - #endif - - // Vector2 type - typedef struct Vector2 { - float x; - float y; - } Vector2; - - // Vector3 type // -- ConvertHSVtoRGB(), ConvertRGBtoHSV() - typedef struct Vector3 { - float x; - float y; - float z; - } Vector3; - - // Color type, RGBA (32bit) - typedef struct Color { - unsigned char r; - unsigned char g; - unsigned char b; - unsigned char a; - } Color; - - // Rectangle type - typedef struct Rectangle { - float x; - float y; - float width; - float height; - } Rectangle; - - // TODO: Texture2D type is very coupled to raylib, required by Font type - // It should be redesigned to be provided by user - typedef struct Texture { - unsigned int id; // OpenGL texture id - int width; // Texture base width - int height; // Texture base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) - } Texture; - - // Texture2D, same as Texture - typedef Texture Texture2D; - - // Image, pixel data stored in CPU memory (RAM) - typedef struct Image { - void *data; // Image raw data - int width; // Image base width - int height; // Image base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) - } Image; - - // GlyphInfo, font characters glyphs info - typedef struct GlyphInfo { - int value; // Character value (Unicode) - int offsetX; // Character offset X when drawing - int offsetY; // Character offset Y when drawing - int advanceX; // Character advance position X - Image image; // Character image data - } GlyphInfo; - - // TODO: Font type is very coupled to raylib, mostly required by GuiLoadStyle() - // It should be redesigned to be provided by user - typedef struct Font { - int baseSize; // Base size (default chars height) - int glyphCount; // Number of glyph characters - int glyphPadding; // Padding around the glyph characters - Texture2D texture; // Texture atlas containing the glyphs - Rectangle *recs; // Rectangles in texture for the glyphs - GlyphInfo *glyphs; // Glyphs info data - } Font; -#endif - -// Style property -// NOTE: Used when exporting style as code for convenience -typedef struct GuiStyleProp { - unsigned short controlId; // Control identifier - unsigned short propertyId; // Property identifier - int propertyValue; // Property value -} GuiStyleProp; - -/* -// Controls text style -NOT USED- -// NOTE: Text style is defined by control -typedef struct GuiTextStyle { - unsigned int size; - int charSpacing; - int lineSpacing; - int alignmentH; - int alignmentV; - int padding; -} GuiTextStyle; -*/ - -// Gui control state -typedef enum { - STATE_NORMAL = 0, - STATE_FOCUSED, - STATE_PRESSED, - STATE_DISABLED -} GuiState; - -// Gui control text alignment -typedef enum { - TEXT_ALIGN_LEFT = 0, - TEXT_ALIGN_CENTER, - TEXT_ALIGN_RIGHT -} GuiTextAlignment; - -// Gui control text alignment vertical -// NOTE: Text vertical position inside the text bounds -typedef enum { - TEXT_ALIGN_TOP = 0, - TEXT_ALIGN_MIDDLE, - TEXT_ALIGN_BOTTOM -} GuiTextAlignmentVertical; - -// Gui control text wrap mode -// NOTE: Useful for multiline text -typedef enum { - TEXT_WRAP_NONE = 0, - TEXT_WRAP_CHAR, - TEXT_WRAP_WORD -} GuiTextWrapMode; - -// Gui controls -typedef enum { - // Default -> populates to all controls when set - DEFAULT = 0, - - // Basic controls - LABEL, // Used also for: LABELBUTTON - BUTTON, - TOGGLE, // Used also for: TOGGLEGROUP - SLIDER, // Used also for: SLIDERBAR, TOGGLESLIDER - PROGRESSBAR, - CHECKBOX, - COMBOBOX, - DROPDOWNBOX, - TEXTBOX, // Used also for: TEXTBOXMULTI - VALUEBOX, - CONTROL11, - LISTVIEW, - COLORPICKER, - SCROLLBAR, - STATUSBAR -} GuiControl; - -// Gui base properties for every control -// NOTE: RAYGUI_MAX_PROPS_BASE properties (by default 16 properties) -typedef enum { - BORDER_COLOR_NORMAL = 0, // Control border color in STATE_NORMAL - BASE_COLOR_NORMAL, // Control base color in STATE_NORMAL - TEXT_COLOR_NORMAL, // Control text color in STATE_NORMAL - BORDER_COLOR_FOCUSED, // Control border color in STATE_FOCUSED - BASE_COLOR_FOCUSED, // Control base color in STATE_FOCUSED - TEXT_COLOR_FOCUSED, // Control text color in STATE_FOCUSED - BORDER_COLOR_PRESSED, // Control border color in STATE_PRESSED - BASE_COLOR_PRESSED, // Control base color in STATE_PRESSED - TEXT_COLOR_PRESSED, // Control text color in STATE_PRESSED - BORDER_COLOR_DISABLED, // Control border color in STATE_DISABLED - BASE_COLOR_DISABLED, // Control base color in STATE_DISABLED - TEXT_COLOR_DISABLED, // Control text color in STATE_DISABLED - BORDER_WIDTH = 12, // Control border size, 0 for no border - //TEXT_SIZE, // Control text size (glyphs max height) -> GLOBAL for all controls - //TEXT_SPACING, // Control text spacing between glyphs -> GLOBAL for all controls - //TEXT_LINE_SPACING, // Control text spacing between lines -> GLOBAL for all controls - TEXT_PADDING = 13, // Control text padding, not considering border - TEXT_ALIGNMENT = 14, // Control text horizontal alignment inside control text bound (after border and padding) - //TEXT_WRAP_MODE // Control text wrap-mode inside text bounds -> GLOBAL for all controls -} GuiControlProperty; - -// TODO: Which text styling properties should be global or per-control? -// At this moment TEXT_PADDING and TEXT_ALIGNMENT is configured and saved per control while -// TEXT_SIZE, TEXT_SPACING, TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE are global and -// should be configured by user as needed while defining the UI layout - -// Gui extended properties depend on control -// NOTE: RAYGUI_MAX_PROPS_EXTENDED properties (by default, max 8 properties) -//---------------------------------------------------------------------------------- -// DEFAULT extended properties -// NOTE: Those properties are common to all controls or global -// WARNING: Only 8 slots vailable for those properties by default -typedef enum { - TEXT_SIZE = 16, // Text size (glyphs max height) - TEXT_SPACING, // Text spacing between glyphs - LINE_COLOR, // Line control color - BACKGROUND_COLOR, // Background color - TEXT_LINE_SPACING, // Text spacing between lines - TEXT_ALIGNMENT_VERTICAL, // Text vertical alignment inside text bounds (after border and padding) - TEXT_WRAP_MODE // Text wrap-mode inside text bounds - //TEXT_DECORATION // Text decoration: 0-None, 1-Underline, 2-Line-through, 3-Overline - //TEXT_DECORATION_THICK // Text decoration line thickness -} GuiDefaultProperty; - -// Other possible text properties: -// TEXT_WEIGHT // Normal, Italic, Bold -> Requires specific font change -// TEXT_INDENT // Text indentation -> Now using TEXT_PADDING... - -// Label -//typedef enum { } GuiLabelProperty; - -// Button/Spinner -//typedef enum { } GuiButtonProperty; - -// Toggle/ToggleGroup -typedef enum { - GROUP_PADDING = 16, // ToggleGroup separation between toggles -} GuiToggleProperty; - -// Slider/SliderBar -typedef enum { - SLIDER_WIDTH = 16, // Slider size of internal bar - SLIDER_PADDING // Slider/SliderBar internal bar padding -} GuiSliderProperty; - -// ProgressBar -typedef enum { - PROGRESS_PADDING = 16, // ProgressBar internal padding - PROGRESS_SIDE, // ProgressBar increment side: 0-left->right, 1-right-left -} GuiProgressBarProperty; - -// ScrollBar -typedef enum { - ARROWS_SIZE = 16, // ScrollBar arrows size - ARROWS_VISIBLE, // ScrollBar arrows visible - SCROLL_SLIDER_PADDING, // ScrollBar slider internal padding - SCROLL_SLIDER_SIZE, // ScrollBar slider size - SCROLL_PADDING, // ScrollBar scroll padding from arrows - SCROLL_SPEED, // ScrollBar scrolling speed -} GuiScrollBarProperty; - -// CheckBox -typedef enum { - CHECK_PADDING = 16 // CheckBox internal check padding -} GuiCheckBoxProperty; - -// ComboBox -typedef enum { - COMBO_BUTTON_WIDTH = 16, // ComboBox right button width - COMBO_BUTTON_SPACING // ComboBox button separation -} GuiComboBoxProperty; - -// DropdownBox -typedef enum { - ARROW_PADDING = 16, // DropdownBox arrow separation from border and items - DROPDOWN_ITEMS_SPACING, // DropdownBox items separation - DROPDOWN_ARROW_HIDDEN, // DropdownBox arrow hidden - DROPDOWN_ROLL_UP // DropdownBox roll up flag (default rolls down) -} GuiDropdownBoxProperty; - -// TextBox/TextBoxMulti/ValueBox/Spinner -typedef enum { - TEXT_READONLY = 16, // TextBox in read-only mode: 0-text editable, 1-text no-editable -} GuiTextBoxProperty; - -// ValueBox/Spinner -typedef enum { - SPINNER_BUTTON_WIDTH = 16, // Spinner left/right buttons width - SPINNER_BUTTON_SPACING, // Spinner buttons separation -} GuiValueBoxProperty; - -// Control11 -//typedef enum { } GuiControl11Property; - -// ListView -typedef enum { - LIST_ITEMS_HEIGHT = 16, // ListView items height - LIST_ITEMS_SPACING, // ListView items separation - SCROLLBAR_WIDTH, // ListView scrollbar size (usually width) - SCROLLBAR_SIDE, // ListView scrollbar side (0-SCROLLBAR_LEFT_SIDE, 1-SCROLLBAR_RIGHT_SIDE) - LIST_ITEMS_BORDER_NORMAL, // ListView items border enabled in normal state - LIST_ITEMS_BORDER_WIDTH // ListView items border width -} GuiListViewProperty; - -// ColorPicker -typedef enum { - COLOR_SELECTOR_SIZE = 16, - HUEBAR_WIDTH, // ColorPicker right hue bar width - HUEBAR_PADDING, // ColorPicker right hue bar separation from panel - HUEBAR_SELECTOR_HEIGHT, // ColorPicker right hue bar selector height - HUEBAR_SELECTOR_OVERFLOW // ColorPicker right hue bar selector overflow -} GuiColorPickerProperty; - -#define SCROLLBAR_LEFT_SIDE 0 -#define SCROLLBAR_RIGHT_SIDE 1 - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -// ... - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- - -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif - -// Global gui state control functions -RAYGUIAPI void GuiEnable(void); // Enable gui controls (global state) -RAYGUIAPI void GuiDisable(void); // Disable gui controls (global state) -RAYGUIAPI void GuiLock(void); // Lock gui controls (global state) -RAYGUIAPI void GuiUnlock(void); // Unlock gui controls (global state) -RAYGUIAPI bool GuiIsLocked(void); // Check if gui is locked (global state) -RAYGUIAPI void GuiSetAlpha(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f -RAYGUIAPI void GuiSetState(int state); // Set gui state (global state) -RAYGUIAPI int GuiGetState(void); // Get gui state (global state) - -// Font set/get functions -RAYGUIAPI void GuiSetFont(Font font); // Set gui custom font (global state) -RAYGUIAPI Font GuiGetFont(void); // Get gui custom font (global state) - -// Style set/get functions -RAYGUIAPI void GuiSetStyle(int control, int property, int value); // Set one style property -RAYGUIAPI int GuiGetStyle(int control, int property); // Get one style property - -// Styles loading functions -RAYGUIAPI void GuiLoadStyle(const char *fileName); // Load style file over global style variable (.rgs) -RAYGUIAPI void GuiLoadStyleDefault(void); // Load style default over global style - -// Tooltips management functions -RAYGUIAPI void GuiEnableTooltip(void); // Enable gui tooltips (global state) -RAYGUIAPI void GuiDisableTooltip(void); // Disable gui tooltips (global state) -RAYGUIAPI void GuiSetTooltip(const char *tooltip); // Set tooltip string - -// Icons functionality -RAYGUIAPI const char *GuiIconText(int iconId, const char *text); // Get text with icon id prepended (if supported) -#if !defined(RAYGUI_NO_ICONS) -RAYGUIAPI void GuiSetIconScale(int scale); // Set default icon drawing size -RAYGUIAPI unsigned int *GuiGetIcons(void); // Get raygui icons data pointer -RAYGUIAPI char **GuiLoadIcons(const char *fileName, bool loadIconsName); // Load raygui icons file (.rgi) into internal icons data -RAYGUIAPI void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color); // Draw icon using pixel size at specified position -#endif - -// Utility functions -RAYGUIAPI int GuiGetTextWidth(const char *text); // Get text width considering gui style and icon size (if required) - -// Controls -//---------------------------------------------------------------------------------------------------------- -// Container/separator controls, useful for controls organization -RAYGUIAPI int GuiWindowBox(Rectangle bounds, const char *title); // Window Box control, shows a window that can be closed -RAYGUIAPI int GuiGroupBox(Rectangle bounds, const char *text); // Group Box control with text name -RAYGUIAPI int GuiLine(Rectangle bounds, const char *text); // Line separator control, could contain text -RAYGUIAPI int GuiPanel(Rectangle bounds, const char *text); // Panel control, useful to group controls -RAYGUIAPI int GuiTabBar(Rectangle bounds, char **text, int count, int *active); // Tab Bar control, returns TAB to be closed or -1 -RAYGUIAPI int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view); // Scroll Panel control - -// Basic controls set -RAYGUIAPI int GuiLabel(Rectangle bounds, const char *text); // Label control -RAYGUIAPI int GuiButton(Rectangle bounds, const char *text); // Button control, returns true when clicked -RAYGUIAPI int GuiLabelButton(Rectangle bounds, const char *text); // Label button control, returns true when clicked -RAYGUIAPI int GuiToggle(Rectangle bounds, const char *text, bool *active); // Toggle Button control -RAYGUIAPI int GuiToggleGroup(Rectangle bounds, const char *text, int *active); // Toggle Group control -RAYGUIAPI int GuiToggleSlider(Rectangle bounds, const char *text, int *active); // Toggle Slider control -RAYGUIAPI int GuiCheckBox(Rectangle bounds, const char *text, bool *checked); // Check Box control, returns true when active -RAYGUIAPI int GuiComboBox(Rectangle bounds, const char *text, int *active); // Combo Box control - -RAYGUIAPI int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode); // Dropdown Box control -RAYGUIAPI int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Spinner control -RAYGUIAPI int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Value Box control, updates input text with numbers -RAYGUIAPI int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode); // Value box control for float values -RAYGUIAPI int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode); // Text Box control, updates input text - -RAYGUIAPI int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider control -RAYGUIAPI int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider Bar control -RAYGUIAPI int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Progress Bar control -RAYGUIAPI int GuiStatusBar(Rectangle bounds, const char *text); // Status Bar control, shows info text -RAYGUIAPI int GuiDummyRec(Rectangle bounds, const char *text); // Dummy control for placeholders -RAYGUIAPI int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell); // Grid control - -// Advance controls set -RAYGUIAPI int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active); // List View control -RAYGUIAPI int GuiListViewEx(Rectangle bounds, char **text, int count, int *scrollIndex, int *active, int *focus); // List View with extended parameters -RAYGUIAPI int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons); // Message Box control, displays a message -RAYGUIAPI int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive); // Text Input Box control, ask for text, supports secret -RAYGUIAPI int GuiColorPicker(Rectangle bounds, const char *text, Color *color); // Color Picker control (multiple color controls) -RAYGUIAPI int GuiColorPanel(Rectangle bounds, const char *text, Color *color); // Color Panel control -RAYGUIAPI int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha); // Color Bar Alpha control -RAYGUIAPI int GuiColorBarHue(Rectangle bounds, const char *text, float *value); // Color Bar Hue control -RAYGUIAPI int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Picker control that avoids conversion to RGB on each call (multiple color controls) -RAYGUIAPI int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV() -//---------------------------------------------------------------------------------------------------------- - -#if !defined(RAYGUI_NO_ICONS) - -#if !defined(RAYGUI_CUSTOM_ICONS) -//---------------------------------------------------------------------------------- -// Icons enumeration -//---------------------------------------------------------------------------------- -typedef enum { - ICON_NONE = 0, - ICON_FOLDER_FILE_OPEN = 1, - ICON_FILE_SAVE_CLASSIC = 2, - ICON_FOLDER_OPEN = 3, - ICON_FOLDER_SAVE = 4, - ICON_FILE_OPEN = 5, - ICON_FILE_SAVE = 6, - ICON_FILE_EXPORT = 7, - ICON_FILE_ADD = 8, - ICON_FILE_DELETE = 9, - ICON_FILETYPE_TEXT = 10, - ICON_FILETYPE_AUDIO = 11, - ICON_FILETYPE_IMAGE = 12, - ICON_FILETYPE_PLAY = 13, - ICON_FILETYPE_VIDEO = 14, - ICON_FILETYPE_INFO = 15, - ICON_FILE_COPY = 16, - ICON_FILE_CUT = 17, - ICON_FILE_PASTE = 18, - ICON_CURSOR_HAND = 19, - ICON_CURSOR_POINTER = 20, - ICON_CURSOR_CLASSIC = 21, - ICON_PENCIL = 22, - ICON_PENCIL_BIG = 23, - ICON_BRUSH_CLASSIC = 24, - ICON_BRUSH_PAINTER = 25, - ICON_WATER_DROP = 26, - ICON_COLOR_PICKER = 27, - ICON_RUBBER = 28, - ICON_COLOR_BUCKET = 29, - ICON_TEXT_T = 30, - ICON_TEXT_A = 31, - ICON_SCALE = 32, - ICON_RESIZE = 33, - ICON_FILTER_POINT = 34, - ICON_FILTER_BILINEAR = 35, - ICON_CROP = 36, - ICON_CROP_ALPHA = 37, - ICON_SQUARE_TOGGLE = 38, - ICON_SYMMETRY = 39, - ICON_SYMMETRY_HORIZONTAL = 40, - ICON_SYMMETRY_VERTICAL = 41, - ICON_LENS = 42, - ICON_LENS_BIG = 43, - ICON_EYE_ON = 44, - ICON_EYE_OFF = 45, - ICON_FILTER_TOP = 46, - ICON_FILTER = 47, - ICON_TARGET_POINT = 48, - ICON_TARGET_SMALL = 49, - ICON_TARGET_BIG = 50, - ICON_TARGET_MOVE = 51, - ICON_CURSOR_MOVE = 52, - ICON_CURSOR_SCALE = 53, - ICON_CURSOR_SCALE_RIGHT = 54, - ICON_CURSOR_SCALE_LEFT = 55, - ICON_UNDO = 56, - ICON_REDO = 57, - ICON_REREDO = 58, - ICON_MUTATE = 59, - ICON_ROTATE = 60, - ICON_REPEAT = 61, - ICON_SHUFFLE = 62, - ICON_EMPTYBOX = 63, - ICON_TARGET = 64, - ICON_TARGET_SMALL_FILL = 65, - ICON_TARGET_BIG_FILL = 66, - ICON_TARGET_MOVE_FILL = 67, - ICON_CURSOR_MOVE_FILL = 68, - ICON_CURSOR_SCALE_FILL = 69, - ICON_CURSOR_SCALE_RIGHT_FILL = 70, - ICON_CURSOR_SCALE_LEFT_FILL = 71, - ICON_UNDO_FILL = 72, - ICON_REDO_FILL = 73, - ICON_REREDO_FILL = 74, - ICON_MUTATE_FILL = 75, - ICON_ROTATE_FILL = 76, - ICON_REPEAT_FILL = 77, - ICON_SHUFFLE_FILL = 78, - ICON_EMPTYBOX_SMALL = 79, - ICON_BOX = 80, - ICON_BOX_TOP = 81, - ICON_BOX_TOP_RIGHT = 82, - ICON_BOX_RIGHT = 83, - ICON_BOX_BOTTOM_RIGHT = 84, - ICON_BOX_BOTTOM = 85, - ICON_BOX_BOTTOM_LEFT = 86, - ICON_BOX_LEFT = 87, - ICON_BOX_TOP_LEFT = 88, - ICON_BOX_CENTER = 89, - ICON_BOX_CIRCLE_MASK = 90, - ICON_POT = 91, - ICON_ALPHA_MULTIPLY = 92, - ICON_ALPHA_CLEAR = 93, - ICON_DITHERING = 94, - ICON_MIPMAPS = 95, - ICON_BOX_GRID = 96, - ICON_GRID = 97, - ICON_BOX_CORNERS_SMALL = 98, - ICON_BOX_CORNERS_BIG = 99, - ICON_FOUR_BOXES = 100, - ICON_GRID_FILL = 101, - ICON_BOX_MULTISIZE = 102, - ICON_ZOOM_SMALL = 103, - ICON_ZOOM_MEDIUM = 104, - ICON_ZOOM_BIG = 105, - ICON_ZOOM_ALL = 106, - ICON_ZOOM_CENTER = 107, - ICON_BOX_DOTS_SMALL = 108, - ICON_BOX_DOTS_BIG = 109, - ICON_BOX_CONCENTRIC = 110, - ICON_BOX_GRID_BIG = 111, - ICON_OK_TICK = 112, - ICON_CROSS = 113, - ICON_ARROW_LEFT = 114, - ICON_ARROW_RIGHT = 115, - ICON_ARROW_DOWN = 116, - ICON_ARROW_UP = 117, - ICON_ARROW_LEFT_FILL = 118, - ICON_ARROW_RIGHT_FILL = 119, - ICON_ARROW_DOWN_FILL = 120, - ICON_ARROW_UP_FILL = 121, - ICON_AUDIO = 122, - ICON_FX = 123, - ICON_WAVE = 124, - ICON_WAVE_SINUS = 125, - ICON_WAVE_SQUARE = 126, - ICON_WAVE_TRIANGULAR = 127, - ICON_CROSS_SMALL = 128, - ICON_PLAYER_PREVIOUS = 129, - ICON_PLAYER_PLAY_BACK = 130, - ICON_PLAYER_PLAY = 131, - ICON_PLAYER_PAUSE = 132, - ICON_PLAYER_STOP = 133, - ICON_PLAYER_NEXT = 134, - ICON_PLAYER_RECORD = 135, - ICON_MAGNET = 136, - ICON_LOCK_CLOSE = 137, - ICON_LOCK_OPEN = 138, - ICON_CLOCK = 139, - ICON_TOOLS = 140, - ICON_GEAR = 141, - ICON_GEAR_BIG = 142, - ICON_BIN = 143, - ICON_HAND_POINTER = 144, - ICON_LASER = 145, - ICON_COIN = 146, - ICON_EXPLOSION = 147, - ICON_1UP = 148, - ICON_PLAYER = 149, - ICON_PLAYER_JUMP = 150, - ICON_KEY = 151, - ICON_DEMON = 152, - ICON_TEXT_POPUP = 153, - ICON_GEAR_EX = 154, - ICON_CRACK = 155, - ICON_CRACK_POINTS = 156, - ICON_STAR = 157, - ICON_DOOR = 158, - ICON_EXIT = 159, - ICON_MODE_2D = 160, - ICON_MODE_3D = 161, - ICON_CUBE = 162, - ICON_CUBE_FACE_TOP = 163, - ICON_CUBE_FACE_LEFT = 164, - ICON_CUBE_FACE_FRONT = 165, - ICON_CUBE_FACE_BOTTOM = 166, - ICON_CUBE_FACE_RIGHT = 167, - ICON_CUBE_FACE_BACK = 168, - ICON_CAMERA = 169, - ICON_SPECIAL = 170, - ICON_LINK_NET = 171, - ICON_LINK_BOXES = 172, - ICON_LINK_MULTI = 173, - ICON_LINK = 174, - ICON_LINK_BROKE = 175, - ICON_TEXT_NOTES = 176, - ICON_NOTEBOOK = 177, - ICON_SUITCASE = 178, - ICON_SUITCASE_ZIP = 179, - ICON_MAILBOX = 180, - ICON_MONITOR = 181, - ICON_PRINTER = 182, - ICON_PHOTO_CAMERA = 183, - ICON_PHOTO_CAMERA_FLASH = 184, - ICON_HOUSE = 185, - ICON_HEART = 186, - ICON_CORNER = 187, - ICON_VERTICAL_BARS = 188, - ICON_VERTICAL_BARS_FILL = 189, - ICON_LIFE_BARS = 190, - ICON_INFO = 191, - ICON_CROSSLINE = 192, - ICON_HELP = 193, - ICON_FILETYPE_ALPHA = 194, - ICON_FILETYPE_HOME = 195, - ICON_LAYERS_VISIBLE = 196, - ICON_LAYERS = 197, - ICON_WINDOW = 198, - ICON_HIDPI = 199, - ICON_FILETYPE_BINARY = 200, - ICON_HEX = 201, - ICON_SHIELD = 202, - ICON_FILE_NEW = 203, - ICON_FOLDER_ADD = 204, - ICON_ALARM = 205, - ICON_CPU = 206, - ICON_ROM = 207, - ICON_STEP_OVER = 208, - ICON_STEP_INTO = 209, - ICON_STEP_OUT = 210, - ICON_RESTART = 211, - ICON_BREAKPOINT_ON = 212, - ICON_BREAKPOINT_OFF = 213, - ICON_BURGER_MENU = 214, - ICON_CASE_SENSITIVE = 215, - ICON_REG_EXP = 216, - ICON_FOLDER = 217, - ICON_FILE = 218, - ICON_SAND_TIMER = 219, - ICON_WARNING = 220, - ICON_HELP_BOX = 221, - ICON_INFO_BOX = 222, - ICON_PRIORITY = 223, - ICON_LAYERS_ISO = 224, - ICON_LAYERS2 = 225, - ICON_MLAYERS = 226, - ICON_MAPS = 227, - ICON_HOT = 228, - ICON_LABEL = 229, - ICON_NAME_ID = 230, - ICON_SLICING = 231, - ICON_MANUAL_CONTROL = 232, - ICON_COLLISION = 233, - ICON_CIRCLE_ADD = 234, - ICON_CIRCLE_ADD_FILL = 235, - ICON_CIRCLE_WARNING = 236, - ICON_CIRCLE_WARNING_FILL = 237, - ICON_BOX_MORE = 238, - ICON_BOX_MORE_FILL = 239, - ICON_BOX_MINUS = 240, - ICON_BOX_MINUS_FILL = 241, - ICON_UNION = 242, - ICON_INTERSECTION = 243, - ICON_DIFFERENCE = 244, - ICON_SPHERE = 245, - ICON_CYLINDER = 246, - ICON_CONE = 247, - ICON_ELLIPSOID = 248, - ICON_CAPSULE = 249, - ICON_250 = 250, - ICON_251 = 251, - ICON_252 = 252, - ICON_253 = 253, - ICON_254 = 254, - ICON_255 = 255 -} GuiIconName; -#endif - -#endif - -#if defined(__cplusplus) -} // Prevents name mangling of functions -#endif - -#endif // RAYGUI_H - -/*********************************************************************************** -* -* RAYGUI IMPLEMENTATION -* -************************************************************************************/ - -#if defined(RAYGUI_IMPLEMENTATION) - -#include // required for: isspace() [GuiTextBox()] -#include // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf(), snprintf(), vsprintf() [GuiLoadStyle(), GuiLoadIcons()] -#include // Required for: strlen() [GuiTextBox(), GuiValueBox()], memset(), memcpy() -#include // Required for: va_list, va_start(), vfprintf(), va_end() [TextFormat()] -#include // Required for: roundf() [GuiColorPicker()] - -// Allow custom memory allocators -#if defined(RAYGUI_MALLOC) || defined(RAYGUI_CALLOC) || defined(RAYGUI_FREE) - #if !defined(RAYGUI_MALLOC) || !defined(RAYGUI_CALLOC) || !defined(RAYGUI_FREE) - #error "RAYGUI: if RAYGUI_MALLOC, RAYGUI_CALLOC, or RAYGUI_FREE is customized, all three must be customized" - #endif -#else - #include // Required for: malloc(), calloc(), free() [GuiLoadStyle(), GuiLoadIcons()] - - #define RAYGUI_MALLOC(sz) malloc(sz) - #define RAYGUI_CALLOC(n,sz) calloc(n,sz) - #define RAYGUI_FREE(p) free(p) -#endif - -#ifdef __cplusplus - #define RAYGUI_CLITERAL(name) name -#else - #define RAYGUI_CLITERAL(name) (name) -#endif - -// Check if two rectangles are equal, used to validate a slider bounds as an id -#ifndef CHECK_BOUNDS_ID - #define CHECK_BOUNDS_ID(src, dst) (((int)src.x == (int)dst.x) && ((int)src.y == (int)dst.y) && ((int)src.width == (int)dst.width) && ((int)src.height == (int)dst.height)) -#endif - -#if !defined(RAYGUI_NO_ICONS) && !defined(RAYGUI_CUSTOM_ICONS) - -// Embedded icons, no external file provided -#define RAYGUI_ICON_SIZE 16 // Size of icons in pixels (squared) -#define RAYGUI_ICON_MAX_ICONS 256 // Maximum number of icons -#define RAYGUI_ICON_MAX_NAME_LENGTH 32 // Maximum length of icon name id - -// Icons data is defined by bit array (every bit represents one pixel) -// Those arrays are stored as unsigned int data arrays, so, -// every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) -// NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) -#define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) - -//---------------------------------------------------------------------------------- -// Icons data for all gui possible icons (allocated on data segment by default) -// -// NOTE 1: Every icon is codified in binary form, using 1 bit per pixel, so, -// every 16x16 icon requires 8 integers (16*16/32) to be stored -// -// NOTE 2: A different icon set could be loaded over this array using GuiLoadIcons(), -// but loaded icons set must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS -// -// guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB -//---------------------------------------------------------------------------------- -static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_NONE - 0x3ff80000, 0x2f082008, 0x2042207e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x00007ffe, // ICON_FOLDER_FILE_OPEN - 0x3ffe0000, 0x44226422, 0x400247e2, 0x5ffa4002, 0x57ea500a, 0x500a500a, 0x40025ffa, 0x00007ffe, // ICON_FILE_SAVE_CLASSIC - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024002, 0x44424282, 0x793e4102, 0x00000100, // ICON_FOLDER_OPEN - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024102, 0x44424102, 0x793e4282, 0x00000000, // ICON_FOLDER_SAVE - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x24442284, 0x21042104, 0x20042104, 0x00003ffc, // ICON_FILE_OPEN - 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x21042104, 0x22842444, 0x20042104, 0x00003ffc, // ICON_FILE_SAVE - 0x3ff00000, 0x201c2010, 0x00042004, 0x20041004, 0x20844784, 0x00841384, 0x20042784, 0x00003ffc, // ICON_FILE_EXPORT - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x22042204, 0x22042f84, 0x20042204, 0x00003ffc, // ICON_FILE_ADD - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x25042884, 0x25042204, 0x20042884, 0x00003ffc, // ICON_FILE_DELETE - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_FILETYPE_TEXT - 0x3ff00000, 0x201c2010, 0x27042004, 0x244424c4, 0x26442444, 0x20642664, 0x20042004, 0x00003ffc, // ICON_FILETYPE_AUDIO - 0x3ff00000, 0x201c2010, 0x26042604, 0x20042004, 0x35442884, 0x2414222c, 0x20042004, 0x00003ffc, // ICON_FILETYPE_IMAGE - 0x3ff00000, 0x201c2010, 0x20c42004, 0x22442144, 0x22442444, 0x20c42144, 0x20042004, 0x00003ffc, // ICON_FILETYPE_PLAY - 0x3ff00000, 0x3ffc2ff0, 0x3f3c2ff4, 0x3dbc2eb4, 0x3dbc2bb4, 0x3f3c2eb4, 0x3ffc2ff4, 0x00002ff4, // ICON_FILETYPE_VIDEO - 0x3ff00000, 0x201c2010, 0x21842184, 0x21842004, 0x21842184, 0x21842184, 0x20042184, 0x00003ffc, // ICON_FILETYPE_INFO - 0x0ff00000, 0x381c0810, 0x28042804, 0x28042804, 0x28042804, 0x28042804, 0x20102ffc, 0x00003ff0, // ICON_FILE_COPY - 0x00000000, 0x701c0000, 0x079c1e14, 0x55a000f0, 0x079c00f0, 0x701c1e14, 0x00000000, 0x00000000, // ICON_FILE_CUT - 0x01c00000, 0x13e41bec, 0x3f841004, 0x204420c4, 0x20442044, 0x20442044, 0x207c2044, 0x00003fc0, // ICON_FILE_PASTE - 0x00000000, 0x3aa00fe0, 0x2abc2aa0, 0x2aa42aa4, 0x20042aa4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_CURSOR_HAND - 0x00000000, 0x003c000c, 0x030800c8, 0x30100c10, 0x10202020, 0x04400840, 0x01800280, 0x00000000, // ICON_CURSOR_POINTER - 0x00000000, 0x00180000, 0x01f00078, 0x03e007f0, 0x07c003e0, 0x04000e40, 0x00000000, 0x00000000, // ICON_CURSOR_CLASSIC - 0x00000000, 0x04000000, 0x11000a00, 0x04400a80, 0x01100220, 0x00580088, 0x00000038, 0x00000000, // ICON_PENCIL - 0x04000000, 0x15000a00, 0x50402880, 0x14102820, 0x05040a08, 0x015c028c, 0x007c00bc, 0x00000000, // ICON_PENCIL_BIG - 0x01c00000, 0x01400140, 0x01400140, 0x0ff80140, 0x0ff80808, 0x0aa80808, 0x0aa80aa8, 0x00000ff8, // ICON_BRUSH_CLASSIC - 0x1ffc0000, 0x5ffc7ffe, 0x40004000, 0x00807f80, 0x01c001c0, 0x01c001c0, 0x01c001c0, 0x00000080, // ICON_BRUSH_PAINTER - 0x00000000, 0x00800000, 0x01c00080, 0x03e001c0, 0x07f003e0, 0x036006f0, 0x000001c0, 0x00000000, // ICON_WATER_DROP - 0x00000000, 0x3e003800, 0x1f803f80, 0x0c201e40, 0x02080c10, 0x00840104, 0x00380044, 0x00000000, // ICON_COLOR_PICKER - 0x00000000, 0x07800300, 0x1fe00fc0, 0x3f883fd0, 0x0e021f04, 0x02040402, 0x00f00108, 0x00000000, // ICON_RUBBER - 0x00c00000, 0x02800140, 0x08200440, 0x20081010, 0x2ffe3004, 0x03f807fc, 0x00e001f0, 0x00000040, // ICON_COLOR_BUCKET - 0x00000000, 0x21843ffc, 0x01800180, 0x01800180, 0x01800180, 0x01800180, 0x03c00180, 0x00000000, // ICON_TEXT_T - 0x00800000, 0x01400180, 0x06200340, 0x0c100620, 0x1ff80c10, 0x380c1808, 0x70067004, 0x0000f80f, // ICON_TEXT_A - 0x78000000, 0x50004000, 0x00004800, 0x03c003c0, 0x03c003c0, 0x00100000, 0x0002000a, 0x0000000e, // ICON_SCALE - 0x75560000, 0x5e004002, 0x54001002, 0x41001202, 0x408200fe, 0x40820082, 0x40820082, 0x00006afe, // ICON_RESIZE - 0x00000000, 0x3f003f00, 0x3f003f00, 0x3f003f00, 0x00400080, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_POINT - 0x6d800000, 0x00004080, 0x40804080, 0x40800000, 0x00406d80, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_BILINEAR - 0x40080000, 0x1ffe2008, 0x14081008, 0x11081208, 0x10481088, 0x10081028, 0x10047ff8, 0x00001002, // ICON_CROP - 0x00100000, 0x3ffc0010, 0x2ab03550, 0x22b02550, 0x20b02150, 0x20302050, 0x2000fff0, 0x00002000, // ICON_CROP_ALPHA - 0x40000000, 0x1ff82000, 0x04082808, 0x01082208, 0x00482088, 0x00182028, 0x35542008, 0x00000002, // ICON_SQUARE_TOGGLE - 0x00000000, 0x02800280, 0x06c006c0, 0x0ea00ee0, 0x1e901eb0, 0x3e883e98, 0x7efc7e8c, 0x00000000, // ICON_SYMMETRY - 0x01000000, 0x05600100, 0x1d480d50, 0x7d423d44, 0x3d447d42, 0x0d501d48, 0x01000560, 0x00000100, // ICON_SYMMETRY_HORIZONTAL - 0x01800000, 0x04200240, 0x10080810, 0x00001ff8, 0x00007ffe, 0x0ff01ff8, 0x03c007e0, 0x00000180, // ICON_SYMMETRY_VERTICAL - 0x00000000, 0x010800f0, 0x02040204, 0x02040204, 0x07f00308, 0x1c000e00, 0x30003800, 0x00000000, // ICON_LENS - 0x00000000, 0x061803f0, 0x08240c0c, 0x08040814, 0x0c0c0804, 0x23f01618, 0x18002400, 0x00000000, // ICON_LENS_BIG - 0x00000000, 0x00000000, 0x1c7007c0, 0x638e3398, 0x1c703398, 0x000007c0, 0x00000000, 0x00000000, // ICON_EYE_ON - 0x00000000, 0x10002000, 0x04700fc0, 0x610e3218, 0x1c703098, 0x001007a0, 0x00000008, 0x00000000, // ICON_EYE_OFF - 0x00000000, 0x00007ffc, 0x40047ffc, 0x10102008, 0x04400820, 0x02800280, 0x02800280, 0x00000100, // ICON_FILTER_TOP - 0x00000000, 0x40027ffe, 0x10082004, 0x04200810, 0x02400240, 0x02400240, 0x01400240, 0x000000c0, // ICON_FILTER - 0x00800000, 0x00800080, 0x00000080, 0x3c9e0000, 0x00000000, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_POINT - 0x00800000, 0x00800080, 0x00800080, 0x3f7e01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL - 0x00800000, 0x00800080, 0x03e00080, 0x3e3e0220, 0x03e00220, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG - 0x01000000, 0x04400280, 0x01000100, 0x43842008, 0x43849ab2, 0x01002008, 0x04400100, 0x01000280, // ICON_TARGET_MOVE - 0x01000000, 0x04400280, 0x01000100, 0x41042108, 0x41049ff2, 0x01002108, 0x04400100, 0x01000280, // ICON_CURSOR_MOVE - 0x781e0000, 0x500a4002, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x4002500a, 0x0000781e, // ICON_CURSOR_SCALE - 0x00000000, 0x20003c00, 0x24002800, 0x01000200, 0x00400080, 0x00140024, 0x003c0004, 0x00000000, // ICON_CURSOR_SCALE_RIGHT - 0x00000000, 0x0004003c, 0x00240014, 0x00800040, 0x02000100, 0x28002400, 0x3c002000, 0x00000000, // ICON_CURSOR_SCALE_LEFT - 0x00000000, 0x00100020, 0x10101fc8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO - 0x00000000, 0x08000400, 0x080813f8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3f902020, 0x00400020, 0x00000000, // ICON_REREDO - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3fc82010, 0x00200010, 0x00000000, // ICON_MUTATE - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18101020, 0x00100fc8, 0x00000020, // ICON_ROTATE - 0x00000000, 0x04000200, 0x240429fc, 0x20042204, 0x20442004, 0x3f942024, 0x00400020, 0x00000000, // ICON_REPEAT - 0x00000000, 0x20001000, 0x22104c0e, 0x00801120, 0x11200040, 0x4c0e2210, 0x10002000, 0x00000000, // ICON_SHUFFLE - 0x7ffe0000, 0x50024002, 0x44024802, 0x41024202, 0x40424082, 0x40124022, 0x4002400a, 0x00007ffe, // ICON_EMPTYBOX - 0x00800000, 0x03e00080, 0x08080490, 0x3c9e0808, 0x08080808, 0x03e00490, 0x00800080, 0x00000000, // ICON_TARGET - 0x00800000, 0x00800080, 0x00800080, 0x3ffe01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL_FILL - 0x00800000, 0x00800080, 0x03e00080, 0x3ffe03e0, 0x03e003e0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x638c2008, 0x638cfbbe, 0x01002008, 0x07c00100, 0x01000380, // ICON_TARGET_MOVE_FILL - 0x01000000, 0x07c00380, 0x01000100, 0x610c2108, 0x610cfffe, 0x01002108, 0x07c00100, 0x01000380, // ICON_CURSOR_MOVE_FILL - 0x781e0000, 0x6006700e, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x700e6006, 0x0000781e, // ICON_CURSOR_SCALE_FILL - 0x00000000, 0x38003c00, 0x24003000, 0x01000200, 0x00400080, 0x000c0024, 0x003c001c, 0x00000000, // ICON_CURSOR_SCALE_RIGHT_FILL - 0x00000000, 0x001c003c, 0x0024000c, 0x00800040, 0x02000100, 0x30002400, 0x3c003800, 0x00000000, // ICON_CURSOR_SCALE_LEFT_FILL - 0x00000000, 0x00300020, 0x10301ff8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO_FILL - 0x00000000, 0x0c000400, 0x0c081ff8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3ff02060, 0x00400060, 0x00000000, // ICON_REREDO_FILL - 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3ff82030, 0x00200030, 0x00000000, // ICON_MUTATE_FILL - 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18301020, 0x00300ff8, 0x00000020, // ICON_ROTATE_FILL - 0x00000000, 0x06000200, 0x26042ffc, 0x20042204, 0x20442004, 0x3ff42064, 0x00400060, 0x00000000, // ICON_REPEAT_FILL - 0x00000000, 0x30001000, 0x32107c0e, 0x00801120, 0x11200040, 0x7c0e3210, 0x10003000, 0x00000000, // ICON_SHUFFLE_FILL - 0x00000000, 0x30043ffc, 0x24042804, 0x21042204, 0x20442084, 0x20142024, 0x3ffc200c, 0x00000000, // ICON_EMPTYBOX_SMALL - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX - 0x00000000, 0x23c43ffc, 0x23c423c4, 0x200423c4, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP - 0x00000000, 0x3e043ffc, 0x3e043e04, 0x20043e04, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x3e043e04, 0x3e043e04, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x3e042004, 0x3e043e04, 0x3ffc3e04, 0x00000000, // ICON_BOX_BOTTOM_RIGHT - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x23c42004, 0x23c423c4, 0x3ffc23c4, 0x00000000, // ICON_BOX_BOTTOM - 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x207c2004, 0x207c207c, 0x3ffc207c, 0x00000000, // ICON_BOX_BOTTOM_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x207c207c, 0x207c207c, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_LEFT - 0x00000000, 0x207c3ffc, 0x207c207c, 0x2004207c, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_LEFT - 0x00000000, 0x20043ffc, 0x20042004, 0x23c423c4, 0x23c423c4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_CENTER - 0x7ffe0000, 0x40024002, 0x47e24182, 0x4ff247e2, 0x47e24ff2, 0x418247e2, 0x40024002, 0x00007ffe, // ICON_BOX_CIRCLE_MASK - 0x7fff0000, 0x40014001, 0x40014001, 0x49555ddd, 0x4945495d, 0x400149c5, 0x40014001, 0x00007fff, // ICON_POT - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x404e40ce, 0x48125432, 0x4006540e, 0x00007ffe, // ICON_ALPHA_MULTIPLY - 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x5c4e40ce, 0x44124432, 0x40065c0e, 0x00007ffe, // ICON_ALPHA_CLEAR - 0x7ffe0000, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x00007ffe, // ICON_DITHERING - 0x07fe0000, 0x1ffa0002, 0x7fea000a, 0x402a402a, 0x5b2a512a, 0x5128552a, 0x40205128, 0x00007fe0, // ICON_MIPMAPS - 0x00000000, 0x1ff80000, 0x12481248, 0x12481ff8, 0x1ff81248, 0x12481248, 0x00001ff8, 0x00000000, // ICON_BOX_GRID - 0x12480000, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x00001248, // ICON_GRID - 0x00000000, 0x1c380000, 0x1c3817e8, 0x08100810, 0x08100810, 0x17e81c38, 0x00001c38, 0x00000000, // ICON_BOX_CORNERS_SMALL - 0x700e0000, 0x700e5ffa, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x5ffa700e, 0x0000700e, // ICON_BOX_CORNERS_BIG - 0x3f7e0000, 0x21422142, 0x21422142, 0x00003f7e, 0x21423f7e, 0x21422142, 0x3f7e2142, 0x00000000, // ICON_FOUR_BOXES - 0x00000000, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x00000000, // ICON_GRID_FILL - 0x7ffe0000, 0x7ffe7ffe, 0x77fe7000, 0x77fe77fe, 0x777e7700, 0x777e777e, 0x777e777e, 0x0000777e, // ICON_BOX_MULTISIZE - 0x781e0000, 0x40024002, 0x00004002, 0x01800000, 0x00000180, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_SMALL - 0x781e0000, 0x40024002, 0x00004002, 0x03c003c0, 0x03c003c0, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_MEDIUM - 0x781e0000, 0x40024002, 0x07e04002, 0x07e007e0, 0x07e007e0, 0x400207e0, 0x40024002, 0x0000781e, // ICON_ZOOM_BIG - 0x781e0000, 0x5ffa4002, 0x1ff85ffa, 0x1ff81ff8, 0x1ff81ff8, 0x5ffa1ff8, 0x40025ffa, 0x0000781e, // ICON_ZOOM_ALL - 0x00000000, 0x2004381c, 0x00002004, 0x00000000, 0x00000000, 0x20040000, 0x381c2004, 0x00000000, // ICON_ZOOM_CENTER - 0x00000000, 0x1db80000, 0x10081008, 0x10080000, 0x00001008, 0x10081008, 0x00001db8, 0x00000000, // ICON_BOX_DOTS_SMALL - 0x35560000, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x35562002, 0x00000000, // ICON_BOX_DOTS_BIG - 0x7ffe0000, 0x40024002, 0x48124ff2, 0x49924812, 0x48124992, 0x4ff24812, 0x40024002, 0x00007ffe, // ICON_BOX_CONCENTRIC - 0x00000000, 0x10841ffc, 0x10841084, 0x1ffc1084, 0x10841084, 0x10841084, 0x00001ffc, 0x00000000, // ICON_BOX_GRID_BIG - 0x00000000, 0x00000000, 0x10000000, 0x04000800, 0x01040200, 0x00500088, 0x00000020, 0x00000000, // ICON_OK_TICK - 0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // ICON_CROSS - 0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // ICON_ARROW_LEFT - 0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // ICON_ARROW_RIGHT - 0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // ICON_ARROW_DOWN - 0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP - 0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // ICON_ARROW_LEFT_FILL - 0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // ICON_ARROW_RIGHT_FILL - 0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // ICON_ARROW_DOWN_FILL - 0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP_FILL - 0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // ICON_AUDIO - 0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // ICON_FX - 0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // ICON_WAVE - 0x00000000, 0x00600000, 0x01080090, 0x02040108, 0x42044204, 0x24022402, 0x00001800, 0x00000000, // ICON_WAVE_SINUS - 0x00000000, 0x07f80000, 0x04080408, 0x04080408, 0x04080408, 0x7c0e0408, 0x00000000, 0x00000000, // ICON_WAVE_SQUARE - 0x00000000, 0x00000000, 0x00a00040, 0x22084110, 0x08021404, 0x00000000, 0x00000000, 0x00000000, // ICON_WAVE_TRIANGULAR - 0x00000000, 0x00000000, 0x04200000, 0x01800240, 0x02400180, 0x00000420, 0x00000000, 0x00000000, // ICON_CROSS_SMALL - 0x00000000, 0x18380000, 0x12281428, 0x10a81128, 0x112810a8, 0x14281228, 0x00001838, 0x00000000, // ICON_PLAYER_PREVIOUS - 0x00000000, 0x18000000, 0x11801600, 0x10181060, 0x10601018, 0x16001180, 0x00001800, 0x00000000, // ICON_PLAYER_PLAY_BACK - 0x00000000, 0x00180000, 0x01880068, 0x18080608, 0x06081808, 0x00680188, 0x00000018, 0x00000000, // ICON_PLAYER_PLAY - 0x00000000, 0x1e780000, 0x12481248, 0x12481248, 0x12481248, 0x12481248, 0x00001e78, 0x00000000, // ICON_PLAYER_PAUSE - 0x00000000, 0x1ff80000, 0x10081008, 0x10081008, 0x10081008, 0x10081008, 0x00001ff8, 0x00000000, // ICON_PLAYER_STOP - 0x00000000, 0x1c180000, 0x14481428, 0x15081488, 0x14881508, 0x14281448, 0x00001c18, 0x00000000, // ICON_PLAYER_NEXT - 0x00000000, 0x03c00000, 0x08100420, 0x10081008, 0x10081008, 0x04200810, 0x000003c0, 0x00000000, // ICON_PLAYER_RECORD - 0x00000000, 0x0c3007e0, 0x13c81818, 0x14281668, 0x14281428, 0x1c381c38, 0x08102244, 0x00000000, // ICON_MAGNET - 0x07c00000, 0x08200820, 0x3ff80820, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_CLOSE - 0x07c00000, 0x08000800, 0x3ff80800, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_OPEN - 0x01c00000, 0x0c180770, 0x3086188c, 0x60832082, 0x60034781, 0x30062002, 0x0c18180c, 0x01c00770, // ICON_CLOCK - 0x0a200000, 0x1b201b20, 0x04200e20, 0x04200420, 0x04700420, 0x0e700e70, 0x0e700e70, 0x04200e70, // ICON_TOOLS - 0x01800000, 0x3bdc318c, 0x0ff01ff8, 0x7c3e1e78, 0x1e787c3e, 0x1ff80ff0, 0x318c3bdc, 0x00000180, // ICON_GEAR - 0x01800000, 0x3ffc318c, 0x1c381ff8, 0x781e1818, 0x1818781e, 0x1ff81c38, 0x318c3ffc, 0x00000180, // ICON_GEAR_BIG - 0x00000000, 0x08080ff8, 0x08081ffc, 0x0aa80aa8, 0x0aa80aa8, 0x0aa80aa8, 0x08080aa8, 0x00000ff8, // ICON_BIN - 0x00000000, 0x00000000, 0x20043ffc, 0x08043f84, 0x04040f84, 0x04040784, 0x000007fc, 0x00000000, // ICON_HAND_POINTER - 0x00000000, 0x24400400, 0x00001480, 0x6efe0e00, 0x00000e00, 0x24401480, 0x00000400, 0x00000000, // ICON_LASER - 0x00000000, 0x03c00000, 0x08300460, 0x11181118, 0x11181118, 0x04600830, 0x000003c0, 0x00000000, // ICON_COIN - 0x00000000, 0x10880080, 0x06c00810, 0x366c07e0, 0x07e00240, 0x00001768, 0x04200240, 0x00000000, // ICON_EXPLOSION - 0x00000000, 0x3d280000, 0x2528252c, 0x3d282528, 0x05280528, 0x05e80528, 0x00000000, 0x00000000, // ICON_1UP - 0x01800000, 0x03c003c0, 0x018003c0, 0x0ff007e0, 0x0bd00bd0, 0x0a500bd0, 0x02400240, 0x02400240, // ICON_PLAYER - 0x01800000, 0x03c003c0, 0x118013c0, 0x03c81ff8, 0x07c003c8, 0x04400440, 0x0c080478, 0x00000000, // ICON_PLAYER_JUMP - 0x3ff80000, 0x30183ff8, 0x30183018, 0x3ff83ff8, 0x03000300, 0x03c003c0, 0x03e00300, 0x000003e0, // ICON_KEY - 0x3ff80000, 0x3ff83ff8, 0x33983ff8, 0x3ff83398, 0x3ff83ff8, 0x00000540, 0x0fe00aa0, 0x00000fe0, // ICON_DEMON - 0x00000000, 0x0ff00000, 0x20041008, 0x25442004, 0x10082004, 0x06000bf0, 0x00000300, 0x00000000, // ICON_TEXT_POPUP - 0x00000000, 0x11440000, 0x07f00be8, 0x1c1c0e38, 0x1c1c0c18, 0x07f00e38, 0x11440be8, 0x00000000, // ICON_GEAR_EX - 0x00000000, 0x20080000, 0x0c601010, 0x07c00fe0, 0x07c007c0, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK - 0x00000000, 0x20080000, 0x0c601010, 0x04400fe0, 0x04405554, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK_POINTS - 0x00000000, 0x00800080, 0x01c001c0, 0x1ffc3ffe, 0x03e007f0, 0x07f003e0, 0x0c180770, 0x00000808, // ICON_STAR - 0x0ff00000, 0x08180810, 0x08100818, 0x0a100810, 0x08180810, 0x08100818, 0x08100810, 0x00001ff8, // ICON_DOOR - 0x0ff00000, 0x08100810, 0x08100810, 0x10100010, 0x4f902010, 0x10102010, 0x08100010, 0x00000ff0, // ICON_EXIT - 0x00040000, 0x001f000e, 0x0ef40004, 0x12f41284, 0x0ef41214, 0x10040004, 0x7ffc3004, 0x10003000, // ICON_MODE_2D - 0x78040000, 0x501f600e, 0x0ef44004, 0x12f41284, 0x0ef41284, 0x10140004, 0x7ffc300c, 0x10003000, // ICON_MODE_3D - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE - 0x7fe00000, 0x5ff87ff0, 0x47fe4ffc, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_TOP - 0x7fe00000, 0x50386030, 0x47c2483c, 0x443e443e, 0x443e443e, 0x241e75fe, 0x0c06140e, 0x000007fe, // ICON_CUBE_FACE_LEFT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x47fe47fe, 0x47fe47fe, 0x27fe77fe, 0x0ffe17fe, 0x000007fe, // ICON_CUBE_FACE_FRONT - 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x3bf27be2, 0x0bfe1bfa, 0x000007fe, // ICON_CUBE_FACE_BOTTOM - 0x7fe00000, 0x70286030, 0x7ffe7804, 0x7c227c02, 0x7c227c22, 0x3c127de2, 0x0c061c0a, 0x000007fe, // ICON_CUBE_FACE_RIGHT - 0x7fe00000, 0x6fe85ff0, 0x781e77e4, 0x7be27be2, 0x7be27be2, 0x24127be2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_BACK - 0x00000000, 0x2a0233fe, 0x22022602, 0x22022202, 0x2a022602, 0x00a033fe, 0x02080110, 0x00000000, // ICON_CAMERA - 0x00000000, 0x200c3ffc, 0x000c000c, 0x3ffc000c, 0x30003000, 0x30003000, 0x3ffc3004, 0x00000000, // ICON_SPECIAL - 0x00000000, 0x0022003e, 0x012201e2, 0x0100013e, 0x01000100, 0x79000100, 0x4f004900, 0x00007800, // ICON_LINK_NET - 0x00000000, 0x44007c00, 0x45004600, 0x00627cbe, 0x00620022, 0x45007cbe, 0x44004600, 0x00007c00, // ICON_LINK_BOXES - 0x00000000, 0x0044007c, 0x0010007c, 0x3f100010, 0x3f1021f0, 0x3f100010, 0x3f0021f0, 0x00000000, // ICON_LINK_MULTI - 0x00000000, 0x0044007c, 0x00440044, 0x0010007c, 0x00100010, 0x44107c10, 0x440047f0, 0x00007c00, // ICON_LINK - 0x00000000, 0x0044007c, 0x00440044, 0x0000007c, 0x00000010, 0x44007c10, 0x44004550, 0x00007c00, // ICON_LINK_BROKE - 0x02a00000, 0x22a43ffc, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_TEXT_NOTES - 0x3ffc0000, 0x20042004, 0x245e27c4, 0x27c42444, 0x2004201e, 0x201e2004, 0x20042004, 0x00003ffc, // ICON_NOTEBOOK - 0x00000000, 0x07e00000, 0x04200420, 0x24243ffc, 0x24242424, 0x24242424, 0x3ffc2424, 0x00000000, // ICON_SUITCASE - 0x00000000, 0x0fe00000, 0x08200820, 0x40047ffc, 0x7ffc5554, 0x40045554, 0x7ffc4004, 0x00000000, // ICON_SUITCASE_ZIP - 0x00000000, 0x20043ffc, 0x3ffc2004, 0x13c81008, 0x100813c8, 0x10081008, 0x1ff81008, 0x00000000, // ICON_MAILBOX - 0x00000000, 0x40027ffe, 0x5ffa5ffa, 0x5ffa5ffa, 0x40025ffa, 0x03c07ffe, 0x1ff81ff8, 0x00000000, // ICON_MONITOR - 0x0ff00000, 0x6bfe7ffe, 0x7ffe7ffe, 0x68167ffe, 0x08106816, 0x08100810, 0x0ff00810, 0x00000000, // ICON_PRINTER - 0x3ff80000, 0xfffe2008, 0x870a8002, 0x904a888a, 0x904a904a, 0x870a888a, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA - 0x0fc00000, 0xfcfe0cd8, 0x8002fffe, 0x84428382, 0x84428442, 0x80028382, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA_FLASH - 0x00000000, 0x02400180, 0x08100420, 0x20041008, 0x23c42004, 0x22442244, 0x3ffc2244, 0x00000000, // ICON_HOUSE - 0x00000000, 0x1c700000, 0x3ff83ef8, 0x3ff83ff8, 0x0fe01ff0, 0x038007c0, 0x00000100, 0x00000000, // ICON_HEART - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0xe000c000, // ICON_CORNER - 0x00000000, 0x14001c00, 0x15c01400, 0x15401540, 0x155c1540, 0x15541554, 0x1ddc1554, 0x00000000, // ICON_VERTICAL_BARS - 0x00000000, 0x03000300, 0x1b001b00, 0x1b601b60, 0x1b6c1b60, 0x1b6c1b6c, 0x1b6c1b6c, 0x00000000, // ICON_VERTICAL_BARS_FILL - 0x00000000, 0x00000000, 0x403e7ffe, 0x7ffe403e, 0x7ffe0000, 0x43fe43fe, 0x00007ffe, 0x00000000, // ICON_LIFE_BARS - 0x7ffc0000, 0x43844004, 0x43844284, 0x43844004, 0x42844284, 0x42844284, 0x40044384, 0x00007ffc, // ICON_INFO - 0x40008000, 0x10002000, 0x04000800, 0x01000200, 0x00400080, 0x00100020, 0x00040008, 0x00010002, // ICON_CROSSLINE - 0x00000000, 0x1ff01ff0, 0x18301830, 0x1f001830, 0x03001f00, 0x00000300, 0x03000300, 0x00000000, // ICON_HELP - 0x3ff00000, 0x2abc3550, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x00003ffc, // ICON_FILETYPE_ALPHA - 0x3ff00000, 0x201c2010, 0x22442184, 0x28142424, 0x29942814, 0x2ff42994, 0x20042004, 0x00003ffc, // ICON_FILETYPE_HOME - 0x07fe0000, 0x04020402, 0x7fe20402, 0x44224422, 0x44224422, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS_VISIBLE - 0x07fe0000, 0x04020402, 0x7c020402, 0x44024402, 0x44024402, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS - 0x00000000, 0x40027ffe, 0x7ffe4002, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_WINDOW - 0x09100000, 0x09f00910, 0x09100910, 0x00000910, 0x24a2779e, 0x27a224a2, 0x709e20a2, 0x00000000, // ICON_HIDPI - 0x3ff00000, 0x201c2010, 0x2a842e84, 0x2e842a84, 0x2ba42004, 0x2aa42aa4, 0x20042ba4, 0x00003ffc, // ICON_FILETYPE_BINARY - 0x00000000, 0x00000000, 0x00120012, 0x4a5e4bd2, 0x485233d2, 0x00004bd2, 0x00000000, 0x00000000, // ICON_HEX - 0x01800000, 0x381c0660, 0x23c42004, 0x23c42044, 0x13c82204, 0x08101008, 0x02400420, 0x00000180, // ICON_SHIELD - 0x007e0000, 0x20023fc2, 0x40227fe2, 0x400a403a, 0x400a400a, 0x400a400a, 0x4008400e, 0x00007ff8, // ICON_FILE_NEW - 0x00000000, 0x0042007e, 0x40027fc2, 0x44024002, 0x5f024402, 0x44024402, 0x7ffe4002, 0x00000000, // ICON_FOLDER_ADD - 0x44220000, 0x12482244, 0xf3cf0000, 0x14280420, 0x48122424, 0x08100810, 0x1ff81008, 0x03c00420, // ICON_ALARM - 0x0aa00000, 0x1ff80aa0, 0x1068700e, 0x1008706e, 0x1008700e, 0x1008700e, 0x0aa01ff8, 0x00000aa0, // ICON_CPU - 0x07e00000, 0x04201db8, 0x04a01c38, 0x04a01d38, 0x04a01d38, 0x04a01d38, 0x04201d38, 0x000007e0, // ICON_ROM - 0x00000000, 0x03c00000, 0x3c382ff0, 0x3c04380c, 0x01800000, 0x03c003c0, 0x00000180, 0x00000000, // ICON_STEP_OVER - 0x01800000, 0x01800180, 0x01800180, 0x03c007e0, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_INTO - 0x01800000, 0x07e003c0, 0x01800180, 0x01800180, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_OUT - 0x00000000, 0x0ff003c0, 0x181c1c34, 0x303c301c, 0x30003000, 0x1c301800, 0x03c00ff0, 0x00000000, // ICON_RESTART - 0x00000000, 0x00000000, 0x07e003c0, 0x0ff00ff0, 0x0ff00ff0, 0x03c007e0, 0x00000000, 0x00000000, // ICON_BREAKPOINT_ON - 0x00000000, 0x00000000, 0x042003c0, 0x08100810, 0x08100810, 0x03c00420, 0x00000000, 0x00000000, // ICON_BREAKPOINT_OFF - 0x00000000, 0x00000000, 0x1ff81ff8, 0x1ff80000, 0x00001ff8, 0x1ff81ff8, 0x00000000, 0x00000000, // ICON_BURGER_MENU - 0x00000000, 0x00000000, 0x00880070, 0x0c880088, 0x1e8810f8, 0x3e881288, 0x00000000, 0x00000000, // ICON_CASE_SENSITIVE - 0x00000000, 0x02000000, 0x07000a80, 0x07001fc0, 0x02000a80, 0x00300030, 0x00000000, 0x00000000, // ICON_REG_EXP - 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_FOLDER - 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x00003ffc, // ICON_FILE - 0x1ff00000, 0x20082008, 0x17d02fe8, 0x05400ba0, 0x09200540, 0x23881010, 0x2fe827c8, 0x00001ff0, // ICON_SAND_TIMER - 0x01800000, 0x02400240, 0x05a00420, 0x09900990, 0x11881188, 0x21842004, 0x40024182, 0x00003ffc, // ICON_WARNING - 0x7ffe0000, 0x4ff24002, 0x4c324ff2, 0x4f824c02, 0x41824f82, 0x41824002, 0x40024182, 0x00007ffe, // ICON_HELP_BOX - 0x7ffe0000, 0x41824002, 0x40024182, 0x41824182, 0x41824182, 0x41824182, 0x40024182, 0x00007ffe, // ICON_INFO_BOX - 0x01800000, 0x04200240, 0x10080810, 0x7bde2004, 0x0a500a50, 0x08500bd0, 0x08100850, 0x00000ff0, // ICON_PRIORITY - 0x01800000, 0x18180660, 0x80016006, 0x98196006, 0x99996666, 0x19986666, 0x01800660, 0x00000000, // ICON_LAYERS_ISO - 0x07fe0000, 0x1c020402, 0x74021402, 0x54025402, 0x54025402, 0x500857fe, 0x40205ff8, 0x00007fe0, // ICON_LAYERS2 - 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x422a422a, 0x422e422a, 0x40384e28, 0x00007fe0, // ICON_MLAYERS - 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x5b2a512a, 0x512e552a, 0x40385128, 0x00007fe0, // ICON_MAPS - 0x04200000, 0x1cf00c60, 0x11f019f0, 0x0f3807b8, 0x1e3c0f3c, 0x1c1c1e1c, 0x1e3c1c1c, 0x00000f70, // ICON_HOT - 0x00000000, 0x20803f00, 0x2a202e40, 0x20082e10, 0x08021004, 0x02040402, 0x00900108, 0x00000060, // ICON_LABEL - 0x00000000, 0x042007e0, 0x47e27c3e, 0x4ffa4002, 0x47fa4002, 0x4ffa4002, 0x7ffe4002, 0x00000000, // ICON_NAME_ID - 0x7fe00000, 0x402e4020, 0x43ce5e0a, 0x40504078, 0x438e4078, 0x402e5e0a, 0x7fe04020, 0x00000000, // ICON_SLICING - 0x00000000, 0x40027ffe, 0x47c24002, 0x55425d42, 0x55725542, 0x50125552, 0x10105016, 0x00001ff0, // ICON_MANUAL_CONTROL - 0x7ffe0000, 0x43c24002, 0x48124422, 0x500a500a, 0x500a500a, 0x44224812, 0x400243c2, 0x00007ffe, // ICON_COLLISION - 0x03c00000, 0x10080c30, 0x21842184, 0x4ff24182, 0x41824ff2, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_ADD - 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x700e7e7e, 0x7e7e700e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_ADD_FILL - 0x03c00000, 0x10080c30, 0x21842184, 0x41824182, 0x40024182, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_WARNING - 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x7e7e7e7e, 0x7ffe7e7e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_WARNING_FILL - 0x00000000, 0x10041ffc, 0x10841004, 0x13e41084, 0x10841084, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MORE - 0x00000000, 0x1ffc1ffc, 0x1f7c1ffc, 0x1c1c1f7c, 0x1f7c1f7c, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MORE_FILL - 0x00000000, 0x1ffc1ffc, 0x1ffc1ffc, 0x1c1c1ffc, 0x1ffc1ffc, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS - 0x00000000, 0x10041ffc, 0x10041004, 0x13e41004, 0x10041004, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS_FILL - 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x55766eba, 0x55766eaa, 0x55606ffe, 0x55606aa0, 0x00007fe0, // ICON_UNION - 0x07fe0000, 0x04020402, 0x7fe20402, 0x456246a2, 0x456246a2, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_INTERSECTION - 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x4436442a, 0x4436442a, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_DIFFERENCE - 0x03c00000, 0x10080c30, 0x20042004, 0x60064002, 0x47e2581a, 0x20042004, 0x0c301008, 0x000003c0, // ICON_SPHERE - 0x03e00000, 0x08080410, 0x0c180808, 0x08080be8, 0x08080808, 0x08080808, 0x04100808, 0x000003e0, // ICON_CYLINDER - 0x00800000, 0x01400140, 0x02200220, 0x04100410, 0x08080808, 0x1c1c13e4, 0x08081004, 0x000007f0, // ICON_CONE - 0x00000000, 0x07e00000, 0x20841918, 0x40824082, 0x40824082, 0x19182084, 0x000007e0, 0x00000000, // ICON_ELLIPSOID - 0x00000000, 0x00000000, 0x20041ff8, 0x40024002, 0x40024002, 0x1ff82004, 0x00000000, 0x00000000, // ICON_CAPSULE - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_250 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_251 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_252 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_253 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_254 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_255 -}; - -// NOTE: A pointer to current icons array should be defined -static unsigned int *guiIconsPtr = guiIcons; - -#endif // !RAYGUI_NO_ICONS && !RAYGUI_CUSTOM_ICONS - -#ifndef RAYGUI_ICON_SIZE - #define RAYGUI_ICON_SIZE 0 -#endif - -// WARNING: Those values define the total size of the style data array, -// if changed, previous saved styles could become incompatible -#define RAYGUI_MAX_CONTROLS 16 // Maximum number of controls -#define RAYGUI_MAX_PROPS_BASE 16 // Maximum number of base properties -#define RAYGUI_MAX_PROPS_EXTENDED 8 // Maximum number of extended properties - -//---------------------------------------------------------------------------------- -// Module Types and Structures Definition -//---------------------------------------------------------------------------------- -// Gui control property style color element -typedef enum { BORDER = 0, BASE, TEXT, OTHER } GuiPropertyElement; - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -static GuiState guiState = STATE_NORMAL; // Gui global state, if !STATE_NORMAL, forces defined state - -static Font guiFont = { 0 }; // Gui current font (WARNING: highly coupled to raylib) -static bool guiLocked = false; // Gui lock state (no inputs processed) -static float guiAlpha = 1.0f; // Gui controls transparency - -static unsigned int guiIconScale = 1; // Gui icon default scale (if icons enabled) - -static bool guiTooltip = false; // Tooltip enabled/disabled -static const char *guiTooltipPtr = NULL; // Tooltip string pointer (string provided by user) - -static bool guiControlExclusiveMode = false; // Gui control exclusive mode (no inputs processed except current control) -static Rectangle guiControlExclusiveRec = { 0 }; // Gui control exclusive bounds rectangle, used as an unique identifier - -static int textBoxCursorIndex = 0; // Cursor index, shared by all GuiTextBox*() -//static int blinkCursorFrameCounter = 0; // Frame counter for cursor blinking -static int autoCursorCounter = 0; // Frame counter for automatic repeated cursor movement on key-down (cooldown and delay) - -//---------------------------------------------------------------------------------- -// Style data array for all gui style properties (allocated on data segment by default) -// -// NOTE 1: First set of BASE properties are generic to all controls but could be individually -// overwritten per control, first set of EXTENDED properties are generic to all controls and -// can not be overwritten individually but custom EXTENDED properties can be used by control -// -// NOTE 2: A new style set could be loaded over this array using GuiLoadStyle(), -// but default gui style could always be recovered with GuiLoadStyleDefault() -// -// guiStyle size is by default: 16*(16 + 8) = 384*4 = 1536 bytes = 1.5 KB -//---------------------------------------------------------------------------------- -static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)] = { 0 }; - -static bool guiStyleLoaded = false; // Style loaded flag for lazy style initialization - -//---------------------------------------------------------------------------------- -// Standalone Mode Functions Declaration -// -// NOTE: raygui depend on some raylib input and drawing functions -// To use raygui as standalone library, below functions must be defined by the user -//---------------------------------------------------------------------------------- -#if defined(RAYGUI_STANDALONE) - -#define KEY_RIGHT 262 -#define KEY_LEFT 263 -#define KEY_DOWN 264 -#define KEY_UP 265 -#define KEY_BACKSPACE 259 -#define KEY_ENTER 257 - -#define MOUSE_LEFT_BUTTON 0 - -// Input required functions -//------------------------------------------------------------------------------- -static Vector2 GetMousePosition(void); -static float GetMouseWheelMove(void); -static bool IsMouseButtonDown(int button); -static bool IsMouseButtonPressed(int button); -static bool IsMouseButtonReleased(int button); - -static bool IsKeyDown(int key); -static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() -//------------------------------------------------------------------------------- - -// Drawing required functions -//------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() -static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() -//------------------------------------------------------------------------------- - -// Text required functions -//------------------------------------------------------------------------------- -static Font GetFontDefault(void); // -- GuiLoadStyleDefault() -static Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle(), load font - -static Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image -static void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) - -static char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data -static void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data - -static const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs - -static int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list -static void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list - -static unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() -//------------------------------------------------------------------------------- - -// raylib functions already implemented in raygui -//------------------------------------------------------------------------------- -static Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value -static int ColorToInt(Color color); // Returns hexadecimal value for a Color -static bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle -static const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed' -static char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings -static int TextToInteger(const char *text); // Get integer value from text -static float TextToFloat(const char *text); // Get float value from text - -static int GetCodepointNext(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded text -static const char *CodepointToUTF8(int codepoint, int *byteSize); // Encode codepoint into UTF-8 text (char array size returned as parameter) - -static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2); // Draw rectangle vertical gradient -//------------------------------------------------------------------------------- - -#endif // RAYGUI_STANDALONE - -//---------------------------------------------------------------------------------- -// Module Internal Functions Declaration -//---------------------------------------------------------------------------------- -static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize); // Load style from memory (binary only) - -static Rectangle GetTextBounds(int control, Rectangle bounds); // Get text bounds considering control bounds -static const char *GetTextIcon(const char *text, int *iconId); // Get text icon if provided and move text cursor - -static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint); // Gui draw text using default font -static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color); // Gui draw rectangle using default raygui style - -static char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow); // Split controls text into multiple strings -static Vector3 ConvertHSVtoRGB(Vector3 hsv); // Convert color data from HSV to RGB -static Vector3 ConvertRGBtoHSV(Vector3 rgb); // Convert color data from RGB to HSV - -static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue); // Scroll bar control, used by GuiScrollPanel() -static void GuiTooltip(Rectangle controlRec); // Draw tooltip using control rec position - -static Color GuiFade(Color color, float alpha); // Fade color by an alpha factor - -//---------------------------------------------------------------------------------- -// Gui Setup Functions Definition -//---------------------------------------------------------------------------------- -// Enable gui global state -// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups -void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } - -// Disable gui global state -// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups -void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } - -// Lock gui global state -void GuiLock(void) { guiLocked = true; } - -// Unlock gui global state -void GuiUnlock(void) { guiLocked = false; } - -// Check if gui is locked (global state) -bool GuiIsLocked(void) { return guiLocked; } - -// Set gui controls alpha global state -void GuiSetAlpha(float alpha) -{ - if (alpha < 0.0f) alpha = 0.0f; - else if (alpha > 1.0f) alpha = 1.0f; - - guiAlpha = alpha; -} - -// Set gui state (global state) -void GuiSetState(int state) { guiState = (GuiState)state; } - -// Get gui state (global state) -int GuiGetState(void) { return guiState; } - -// Set custom gui font -// NOTE: Font loading/unloading is external to raygui -void GuiSetFont(Font font) -{ - if (font.texture.id > 0) - { - // NOTE: If a font is tried to be set but default style has not been lazily loaded first, - // it will be overwritten, so default style loading needs to be forced first - if (!guiStyleLoaded) GuiLoadStyleDefault(); - - guiFont = font; - } -} - -// Get custom gui font -Font GuiGetFont(void) -{ - return guiFont; -} - -// Set control style property value -void GuiSetStyle(int control, int property, int value) -{ - if (!guiStyleLoaded) GuiLoadStyleDefault(); - guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; - - // Default properties are propagated to all controls - if ((control == 0) && (property < RAYGUI_MAX_PROPS_BASE)) - { - for (int i = 1; i < RAYGUI_MAX_CONTROLS; i++) guiStyle[i*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; - } -} - -// Get control style property value -int GuiGetStyle(int control, int property) -{ - if (!guiStyleLoaded) GuiLoadStyleDefault(); - return guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property]; -} - -//---------------------------------------------------------------------------------- -// Gui Controls Functions Definition -//---------------------------------------------------------------------------------- - -// Window Box control -int GuiWindowBox(Rectangle bounds, const char *title) -{ - // Window title bar height (including borders) - // NOTE: This define is also used by GuiMessageBox() and GuiTextInputBox() - #if !defined(RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT) - #define RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT 24 - #endif - - #if !defined(RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT) - #define RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT 18 - #endif - - int result = 0; - //GuiState state = guiState; - - int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; - int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); - - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; - if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; - - const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, - statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; - - // Update control - //-------------------------------------------------------------------- - // NOTE: Logic is directly managed by button - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiPanel(windowPanel, NULL); // Draw window base - GuiStatusBar(statusBar, title); // Draw window header as status bar - - // Draw window close button - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); -#if defined(RAYGUI_NO_ICONS) - result = GuiButton(closeButtonRec, "x"); -#else - result = GuiButton(closeButtonRec, GuiIconText(ICON_CROSS_SMALL, NULL)); -#endif - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); - //-------------------------------------------------------------------- - - return result; // Window close button clicked: result = 1 -} - -// Group Box control with text name -int GuiGroupBox(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_GROUPBOX_LINE_THICK) - #define RAYGUI_GROUPBOX_LINE_THICK 1 - #endif - - int result = 0; - GuiState state = guiState; - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, RAYGUI_GROUPBOX_LINE_THICK }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - 1, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); - - GuiLine(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y - GuiGetStyle(DEFAULT, TEXT_SIZE)/2, bounds.width, (float)GuiGetStyle(DEFAULT, TEXT_SIZE) }, text); - //-------------------------------------------------------------------- - - return result; -} - -// Line control -int GuiLine(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_LINE_MARGIN_TEXT) - #define RAYGUI_LINE_MARGIN_TEXT 12 - #endif - #if !defined(RAYGUI_LINE_TEXT_PADDING) - #define RAYGUI_LINE_TEXT_PADDING 4 - #endif - - int result = 0; - GuiState state = guiState; - - Color color = GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)); - - // Draw control - //-------------------------------------------------------------------- - if (text == NULL) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, bounds.width, 1 }, 0, BLANK, color); - else - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = bounds.height; - textBounds.x = bounds.x + RAYGUI_LINE_MARGIN_TEXT; - textBounds.y = bounds.y; - - // Draw line with embedded text label: "--- text --------------" - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); - GuiDrawText(text, textBounds, TEXT_ALIGN_LEFT, color); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + 12 + textBounds.width + 4, bounds.y + bounds.height/2, bounds.width - textBounds.width - RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); - } - //-------------------------------------------------------------------- - - return result; -} - -// Panel control -int GuiPanel(Rectangle bounds, const char *text) -{ - #if !defined(RAYGUI_PANEL_BORDER_WIDTH) - #define RAYGUI_PANEL_BORDER_WIDTH 1 - #endif - - int result = 0; - GuiState state = guiState; - - // Text will be drawn as a header bar (if provided) - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; - if ((text != NULL) && (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f)) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; - - if (text != NULL) - { - // Move panel bounds after the header bar - bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - } - - // Draw control - //-------------------------------------------------------------------- - if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar - - GuiDrawRectangle(bounds, RAYGUI_PANEL_BORDER_WIDTH, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)), - GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BASE_COLOR_DISABLED : (int)BACKGROUND_COLOR))); - //-------------------------------------------------------------------- - - return result; -} - -// Tab Bar control -// NOTE: Using GuiToggle() for the TABS -int GuiTabBar(Rectangle bounds, char **text, int count, int *active) -{ - #define RAYGUI_TABBAR_ITEM_WIDTH 148 - - int result = -1; - //GuiState state = guiState; - - Rectangle tabBounds = { bounds.x, bounds.y, RAYGUI_TABBAR_ITEM_WIDTH, bounds.height }; - - if (*active < 0) *active = 0; - else if (*active > count - 1) *active = count - 1; - - int offsetX = 0; // Required in case tabs go out of screen - offsetX = (*active + 2)*RAYGUI_TABBAR_ITEM_WIDTH - GetScreenWidth(); - if (offsetX < 0) offsetX = 0; - - bool toggle = false; // Required for individual toggles - - // Draw control - //-------------------------------------------------------------------- - for (int i = 0; i < count; i++) - { - tabBounds.x = bounds.x + (RAYGUI_TABBAR_ITEM_WIDTH + 4)*i - offsetX; - - if (tabBounds.x < GetScreenWidth()) - { - // Draw tabs as toggle controls - int textAlignment = GuiGetStyle(TOGGLE, TEXT_ALIGNMENT); - int textPadding = GuiGetStyle(TOGGLE, TEXT_PADDING); - GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(TOGGLE, TEXT_PADDING, 8); - - if (i == (*active)) - { - toggle = true; - GuiToggle(tabBounds, text[i], &toggle); - } - else - { - toggle = false; - GuiToggle(tabBounds, text[i], &toggle); - if (toggle) *active = i; - } - - // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; - - GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); - GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); - - // Draw tab close button - // NOTE: Only draw close button for current tab: if (CheckCollisionPointRec(mousePosition, tabBounds)) - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); -#if defined(RAYGUI_NO_ICONS) - if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, "x")) result = i; -#else - if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, GuiIconText(ICON_CROSS_SMALL, NULL))) result = i; -#endif - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); - } - } - - // Draw tab-bar bottom line - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, 1 }, 0, BLANK, GetColor(GuiGetStyle(TOGGLE, BORDER_COLOR_NORMAL))); - //-------------------------------------------------------------------- - - return result; // Return as result the current TAB closing requested -} - -// Scroll Panel control -int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view) -{ - #define RAYGUI_MIN_SCROLLBAR_WIDTH 40 - #define RAYGUI_MIN_SCROLLBAR_HEIGHT 40 - #define RAYGUI_MIN_MOUSE_WHEEL_SPEED 20 - - int result = 0; - GuiState state = guiState; - - Rectangle temp = { 0 }; - if (view == NULL) view = &temp; - - Vector2 scrollPos = { 0.0f, 0.0f }; - if (scroll != NULL) scrollPos = *scroll; - - // Text will be drawn as a header bar (if provided) - Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; - if (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; - - if (text != NULL) - { - // Move panel bounds after the header bar - bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; - bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + 1; - } - - bool hasHorizontalScrollBar = (content.width > bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; - bool hasVerticalScrollBar = (content.height > bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; - - // Recheck to account for the other scrollbar being visible - if (!hasHorizontalScrollBar) hasHorizontalScrollBar = (hasVerticalScrollBar && (content.width > (bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; - if (!hasVerticalScrollBar) hasVerticalScrollBar = (hasHorizontalScrollBar && (content.height > (bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; - - int horizontalScrollBarWidth = hasHorizontalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; - int verticalScrollBarWidth = hasVerticalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; - Rectangle horizontalScrollBar = { - (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + verticalScrollBarWidth : (float)bounds.x) + GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)bounds.y + bounds.height - horizontalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)bounds.width - verticalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)horizontalScrollBarWidth - }; - Rectangle verticalScrollBar = { - (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)bounds.x + bounds.width - verticalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH)), - (float)bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), - (float)verticalScrollBarWidth, - (float)bounds.height - horizontalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - }; - - // Make sure scroll bars have a minimum width/height - if (horizontalScrollBar.width < RAYGUI_MIN_SCROLLBAR_WIDTH) horizontalScrollBar.width = RAYGUI_MIN_SCROLLBAR_WIDTH; - if (verticalScrollBar.height < RAYGUI_MIN_SCROLLBAR_HEIGHT) verticalScrollBar.height = RAYGUI_MIN_SCROLLBAR_HEIGHT; - - // Calculate view area (area without the scrollbars) - *view = (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? - RAYGUI_CLITERAL(Rectangle){ bounds.x + verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth } : - RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth }; - - // Clip view area to the actual content size - if (view->width > content.width) view->width = content.width; - if (view->height > content.height) view->height = content.height; - - float horizontalMin = hasHorizontalScrollBar? ((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH); - float horizontalMax = hasHorizontalScrollBar? content.width - bounds.width + (float)verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH) - (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)verticalScrollBarWidth : 0) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); - float verticalMin = hasVerticalScrollBar? 0.0f : -1.0f; - float verticalMax = hasVerticalScrollBar? content.height - bounds.height + (float)horizontalScrollBarWidth + (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - -#if defined(SUPPORT_SCROLLBAR_KEY_INPUT) - if (hasHorizontalScrollBar) - { - if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - } - - if (hasVerticalScrollBar) - { - if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - } -#endif - float scrollDelta = GUI_SCROLL_DELTA; - - // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - - // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; - else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll - } - } - - // Normalize scroll values - if (scrollPos.x > -horizontalMin) scrollPos.x = -horizontalMin; - if (scrollPos.x < -horizontalMax) scrollPos.x = -horizontalMax; - if (scrollPos.y > -verticalMin) scrollPos.y = -verticalMin; - if (scrollPos.y < -verticalMax) scrollPos.y = -verticalMax; - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar - - GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background - - // Save size of the scrollbar slider - const int slider = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); - - // Draw horizontal scrollbar if visible - if (hasHorizontalScrollBar) - { - // Change scrollbar slider size to show the diff in size between the content width and the widget width - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth)/(int)content.width)*((int)bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth))); - scrollPos.x = (float)-GuiScrollBar(horizontalScrollBar, (int)-scrollPos.x, (int)horizontalMin, (int)horizontalMax); - } - else scrollPos.x = 0.0f; - - // Draw vertical scrollbar if visible - if (hasVerticalScrollBar) - { - // Change scrollbar slider size to show the diff in size between the content height and the widget height - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth)/(int)content.height)*((int)bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth))); - scrollPos.y = (float)-GuiScrollBar(verticalScrollBar, (int)-scrollPos.y, (int)verticalMin, (int)verticalMax); - } - else scrollPos.y = 0.0f; - - // Draw detail corner rectangle if both scroll bars are visible - if (hasHorizontalScrollBar && hasVerticalScrollBar) - { - Rectangle corner = { (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) + 2) : (horizontalScrollBar.x + horizontalScrollBar.width + 2), verticalScrollBar.y + verticalScrollBar.height + 2, (float)horizontalScrollBarWidth - 4, (float)verticalScrollBarWidth - 4 }; - GuiDrawRectangle(corner, 0, BLANK, GetColor(GuiGetStyle(LISTVIEW, TEXT + (state*3)))); - } - - // Draw scrollbar lines depending on current state - GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + (state*3))), BLANK); - - // Set scrollbar slider size back to the way it was before - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, slider); - //-------------------------------------------------------------------- - - if (scroll != NULL) *scroll = scrollPos; - - return result; -} - -// Label control -int GuiLabel(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - //... - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Button control, returns true when clicked -int GuiButton(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) result = 1; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(BUTTON, BORDER_WIDTH), GetColor(GuiGetStyle(BUTTON, BORDER + (state*3))), GetColor(GuiGetStyle(BUTTON, BASE + (state*3)))); - GuiDrawText(text, GetTextBounds(BUTTON, bounds), GuiGetStyle(BUTTON, TEXT_ALIGNMENT), GetColor(GuiGetStyle(BUTTON, TEXT + (state*3)))); - - if (state == STATE_FOCUSED) GuiTooltip(bounds); - //------------------------------------------------------------------ - - return result; // Button pressed: result = 1 -} - -// Label button control -int GuiLabelButton(Rectangle bounds, const char *text) -{ - GuiState state = guiState; - bool pressed = false; - - // NOTE: Force bounds.width to be all text - float textWidth = (float)GuiGetTextWidth(text); - if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check checkbox state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) pressed = true; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return pressed; -} - -// Toggle Button control -int GuiToggle(Rectangle bounds, const char *text, bool *active) -{ - int result = 0; - GuiState state = guiState; - - bool temp = false; - if (active == NULL) active = &temp; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check toggle button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else if (GUI_BUTTON_RELEASED) - { - state = STATE_NORMAL; - *active = !(*active); - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_NORMAL) - { - GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, ((*active)? BORDER_COLOR_PRESSED : (BORDER + state*3)))), GetColor(GuiGetStyle(TOGGLE, ((*active)? BASE_COLOR_PRESSED : (BASE + state*3))))); - GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, ((*active)? TEXT_COLOR_PRESSED : (TEXT + state*3))))); - } - else - { - GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + state*3)), GetColor(GuiGetStyle(TOGGLE, BASE + state*3))); - GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, TEXT + state*3))); - } - - if (state == STATE_FOCUSED) GuiTooltip(bounds); - //-------------------------------------------------------------------- - - return result; -} - -// Toggle Group control -int GuiToggleGroup(Rectangle bounds, const char *text, int *active) -{ - #if !defined(RAYGUI_TOGGLEGROUP_MAX_ITEMS) - #define RAYGUI_TOGGLEGROUP_MAX_ITEMS 32 - #endif - - int result = 0; - float initBoundsX = bounds.x; - - int temp = 0; - if (active == NULL) active = &temp; - - bool toggle = false; // Required for individual toggles - - // Get substrings items from text (items pointers) - int rows[RAYGUI_TOGGLEGROUP_MAX_ITEMS] = { 0 }; - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, rows); - - int prevRow = rows[0]; - - for (int i = 0; i < itemCount; i++) - { - if (prevRow != rows[i]) - { - bounds.x = initBoundsX; - bounds.y += (bounds.height + GuiGetStyle(TOGGLE, GROUP_PADDING)); - prevRow = rows[i]; - } - - if (i == (*active)) - { - toggle = true; - GuiToggle(bounds, items[i], &toggle); - } - else - { - toggle = false; - GuiToggle(bounds, items[i], &toggle); - if (toggle) *active = i; - } - - bounds.x += (bounds.width + GuiGetStyle(TOGGLE, GROUP_PADDING)); - } - - return result; -} - -// Toggle Slider control extended -int GuiToggleSlider(Rectangle bounds, const char *text, int *active) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - //bool toggle = false; // Required for individual toggles - - // Get substrings items from text (items pointers) - int itemCount = 0; - char **items = NULL; - - if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); - - Rectangle slider = { - 0, // Calculated later depending on the active toggle - bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - (bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - (itemCount + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING))/itemCount, - bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else if (GUI_BUTTON_RELEASED) - { - state = STATE_PRESSED; - (*active)++; - result = 1; - } - else state = STATE_FOCUSED; - } - - if ((*active) && (state != STATE_FOCUSED)) state = STATE_PRESSED; - } - - if (*active >= itemCount) *active = 0; - slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH) + (*active + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING) + (*active)*slider.width; - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + (state*3))), - GetColor(GuiGetStyle(TOGGLE, BASE_COLOR_NORMAL))); - - // Draw internal slider - if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_FOCUSED))); - else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - - // Draw text in slider - if (text != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(text); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = slider.x + slider.width/2 - textBounds.width/2; - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(items[*active], textBounds, GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(TOGGLE, TEXT + (state*3))), guiAlpha)); - } - //-------------------------------------------------------------------- - - return result; -} - -// Check Box control, returns 1 when state changed -int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) -{ - int result = 0; - GuiState state = guiState; - - bool temp = false; - if (checked == NULL) checked = &temp; - - Rectangle textBounds = { 0 }; - - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(CHECKBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - Rectangle totalBounds = { - (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, - bounds.y, - bounds.width + textBounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING), - bounds.height, - }; - - // Check checkbox state - if (CheckCollisionPointRec(mousePoint, totalBounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - - if (GUI_BUTTON_RELEASED) - { - *checked = !(*checked); - result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(CHECKBOX, BORDER_WIDTH), GetColor(GuiGetStyle(CHECKBOX, BORDER + (state*3))), BLANK); - - if (*checked) - { - Rectangle check = { bounds.x + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), - bounds.y + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), - bounds.width - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)), - bounds.height - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)) }; - GuiDrawRectangle(check, 0, BLANK, GetColor(GuiGetStyle(CHECKBOX, TEXT + state*3))); - } - - GuiDrawText(text, textBounds, (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Combo Box control -int GuiComboBox(Rectangle bounds, const char *text, int *active) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - bounds.width -= (GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH) + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING)); - - Rectangle selector = { (float)bounds.x + bounds.width + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING), - (float)bounds.y, (float)GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH), (float)bounds.height }; - - // Get substrings items from text (items pointers, lengths and count) - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, NULL); - - if (*active < 0) *active = 0; - else if (*active > (itemCount - 1)) *active = itemCount - 1; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (CheckCollisionPointRec(mousePoint, bounds) || - CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_PRESSED) - { - *active += 1; - if (*active >= itemCount) *active = 0; // Cyclic combobox - } - - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - // Draw combo box main - GuiDrawRectangle(bounds, GuiGetStyle(COMBOBOX, BORDER_WIDTH), GetColor(GuiGetStyle(COMBOBOX, BORDER + (state*3))), GetColor(GuiGetStyle(COMBOBOX, BASE + (state*3)))); - GuiDrawText(items[*active], GetTextBounds(COMBOBOX, bounds), GuiGetStyle(COMBOBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(COMBOBOX, TEXT + (state*3)))); - - // Draw selector using a custom button - // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 1); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - GuiButton(selector, TextFormat("%i/%i", *active + 1, itemCount)); - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - //-------------------------------------------------------------------- - - return result; -} - -// Dropdown Box control -// NOTE: Returns mouse click -int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode) -{ - int result = 0; - GuiState state = guiState; - - int temp = 0; - if (active == NULL) active = &temp; - - int itemSelected = *active; - int itemFocused = -1; - - int direction = 0; // Dropdown box open direction: down (default) - if (GuiGetStyle(DROPDOWNBOX, DROPDOWN_ROLL_UP) == 1) direction = 1; // Up - - // Get substrings items from text (items pointers, lengths and count) - int itemCount = 0; - char **items = GuiTextSplit(text, ';', &itemCount, NULL); - - Rectangle boundsOpen = bounds; - boundsOpen.height = (itemCount + 1)*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - if (direction == 1) boundsOpen.y -= itemCount*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)) + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING); - - Rectangle itemBounds = bounds; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (editMode) - { - state = STATE_PRESSED; - - // Check if mouse has been pressed or released outside limits - if (!CheckCollisionPointRec(mousePoint, boundsOpen)) - { - if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; - } - - // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; - - // Check focused and selected item - for (int i = 0; i < itemCount; i++) - { - // Update item rectangle y position for next item - if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - - if (CheckCollisionPointRec(mousePoint, itemBounds)) - { - itemFocused = i; - if (GUI_BUTTON_RELEASED) - { - itemSelected = i; - result = 1; // Item selected - } - break; - } - } - - itemBounds = bounds; - } - else - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_PRESSED) - { - result = 1; - state = STATE_PRESSED; - } - else state = STATE_FOCUSED; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (editMode) GuiPanel(boundsOpen, NULL); - - GuiDrawRectangle(bounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER + state*3)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE + state*3))); - GuiDrawText(items[itemSelected], GetTextBounds(DROPDOWNBOX, bounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + state*3))); - - if (editMode) - { - // Draw visible items - for (int i = 0; i < itemCount; i++) - { - // Update item rectangle y position for next item - if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); - - if (i == itemSelected) - { - GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_PRESSED))); - GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_PRESSED))); - } - else if (i == itemFocused) - { - GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_FOCUSED))); - GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_FOCUSED))); - } - else GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_NORMAL))); - } - } - - if (!GuiGetStyle(DROPDOWNBOX, DROPDOWN_ARROW_HIDDEN)) - { - // Draw arrows (using icon if available) -#if defined(RAYGUI_NO_ICONS) - GuiDrawText("v", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 2, 10, 10 }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); -#else - GuiDrawText(direction? "#121#" : "#120#", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 6, 10, 10 }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); // ICON_ARROW_DOWN_FILL -#endif - } - //-------------------------------------------------------------------- - - *active = itemSelected; - - // TODO: Use result to return more internal states: mouse-press out-of-bounds, mouse-press over selected-item... - return result; // Mouse click: result = 1 -} - -// Text Box control -// NOTE: Returns true on ENTER pressed (useful for data validation) -int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) -{ - #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) - #define RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN 20 // Frames to wait for autocursor movement - #endif - #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) - #define RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY 1 // Frames delay for autocursor movement - #endif - - int result = 0; - GuiState state = guiState; - - bool multiline = false; // TODO: Consider multiline text input - int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); - - Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); - int textLength = (text != NULL)? (int)strlen(text) : 0; // Get current text length - int thisCursorIndex = textBoxCursorIndex; - if (thisCursorIndex > textLength) thisCursorIndex = textLength; - int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box - - // Cursor rectangle - // NOTE: Position X value should be updated - Rectangle cursor = { - textBounds.x + textWidth + GuiGetStyle(DEFAULT, TEXT_SPACING), - textBounds.y + textBounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE), - 2, - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)*2 - }; - - if (cursor.height >= bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; - if (cursor.y < (bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH))) cursor.y = bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH); - - // Mouse cursor rectangle - // NOTE: Initialized outside of screen - Rectangle mouseCursor = cursor; - mouseCursor.x = -1; - mouseCursor.width = 1; - - // Blink-cursor frame counter - //if (!autoCursorMode) blinkCursorFrameCounter++; - //else blinkCursorFrameCounter = 0; - - // Update control - //-------------------------------------------------------------------- - // WARNING: Text editing is only supported under certain conditions: - if ((state != STATE_DISABLED) && // Control not disabled - !GuiGetStyle(TEXTBOX, TEXT_READONLY) && // TextBox not on read-only mode - !guiLocked && // Gui not locked - !guiControlExclusiveMode && // No gui slider on dragging - (wrapMode == TEXT_WRAP_NONE)) // No wrap mode - { - Vector2 mousePosition = GUI_POINTER_POSITION; - - if (editMode) - { - // GLOBAL: Auto-cursor movement logic - // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; - else autoCursorCounter = 0; - - bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); - - state = STATE_PRESSED; - - if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; - - // If text does not fit in the textbox and current cursor position is out of bounds, - // adding an index offset to text for drawing only what requires depending on cursor - while (textWidth >= textBounds.width) - { - int nextCodepointSize = 0; - GetCodepointNext(text + textIndexOffset, &nextCodepointSize); - - textIndexOffset += nextCodepointSize; - - textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); - } - - int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint - if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; - - // Encode codepoint as UTF-8 - int codepointSize = 0; - const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); - - // Handle text paste action - if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - const char *pasteText = GetClipboardText(); - if (pasteText != NULL) - { - int pasteLength = 0; - int pasteCodepoint; - int pasteCodepointSize; - - // Count how many codepoints to copy, stopping at the first unwanted control character - while (true) - { - pasteCodepoint = GetCodepointNext(pasteText + pasteLength, &pasteCodepointSize); - if (textLength + pasteLength + pasteCodepointSize >= textSize) break; - if (!(multiline && (pasteCodepoint == (int)'\n')) && !(pasteCodepoint >= 32)) break; - pasteLength += pasteCodepointSize; - } - - if (pasteLength > 0) - { - // Move forward data from cursor position - for (int i = textLength + pasteLength; i > textBoxCursorIndex; i--) text[i] = text[i - pasteLength]; - - // Paste data in at cursor - for (int i = 0; i < pasteLength; i++) text[textBoxCursorIndex + i] = pasteText[i]; - - textBoxCursorIndex += pasteLength; - textLength += pasteLength; - text[textLength] = '\0'; - } - } - } - else if (((multiline && (codepoint == (int)'\n')) || (codepoint >= 32)) && ((textLength + codepointSize) < textSize)) - { - // Adding codepoint to text, at current cursor position - - // Move forward data from cursor position - for (int i = (textLength + codepointSize); i > textBoxCursorIndex; i--) text[i] = text[i - codepointSize]; - - // Add new codepoint in current cursor position - for (int i = 0; i < codepointSize; i++) text[textBoxCursorIndex + i] = charEncoded[i]; - - textBoxCursorIndex += codepointSize; - textLength += codepointSize; - - // Make sure text last character is EOL - text[textLength] = '\0'; - } - - // Move cursor to start - if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; - - // Move cursor to end - if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; - - // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - int accCodepointSize = 0; - int nextCodepointSize; - int nextCodepoint; - - // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - bool puctuation = ispunct(nextCodepoint & 0xff); - while (offset < textLength) - { - if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) - break; - offset += nextCodepointSize; - accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Check whitespace to delete (ASCII only) - while (offset < textLength) - { - if (!isspace(nextCodepoint & 0xff)) break; - - offset += nextCodepointSize; - accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Move text after cursor forward (including final null terminator) - for (int i = offset; i <= textLength; i++) text[i - accCodepointSize] = text[i]; - - textLength -= accCodepointSize; - } - - else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) - { - // Delete single codepoint from text, after current cursor position - - int nextCodepointSize = 0; - GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex + nextCodepointSize; i <= textLength; i++) text[i - nextCodepointSize] = text[i]; - - textLength -= nextCodepointSize; - } - - // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - int accCodepointSize = 0; - int prevCodepointSize = 0; - int prevCodepoint = 0; - - // Check whitespace to delete (ASCII only) - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if (!isspace(prevCodepoint & 0xff)) break; - - offset -= prevCodepointSize; - accCodepointSize += prevCodepointSize; - } - - // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - bool puctuation = ispunct(prevCodepoint & 0xff); - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; - - offset -= prevCodepointSize; - accCodepointSize += prevCodepointSize; - } - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - accCodepointSize] = text[i]; - - textLength -= accCodepointSize; - textBoxCursorIndex -= accCodepointSize; - } - - else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) - { - // Delete single codepoint from text, before current cursor position - - int prevCodepointSize = 0; - - GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); - - // Move text after cursor forward (including final null terminator) - for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - prevCodepointSize] = text[i]; - - textLength -= prevCodepointSize; - textBoxCursorIndex -= prevCodepointSize; - } - - // Move cursor position with keys - if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - //int accCodepointSize = 0; - int prevCodepointSize = 0; - int prevCodepoint = 0; - - // Check whitespace to skip (ASCII only) - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if (!isspace(prevCodepoint & 0xff)) break; - - offset -= prevCodepointSize; - //accCodepointSize += prevCodepointSize; - } - - // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - bool puctuation = ispunct(prevCodepoint & 0xff); - while (offset > 0) - { - prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); - if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; - - offset -= prevCodepointSize; - //accCodepointSize += prevCodepointSize; - } - - textBoxCursorIndex = offset; - } - else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) - { - int prevCodepointSize = 0; - GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); - - textBoxCursorIndex -= prevCodepointSize; - } - else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) - { - int offset = textBoxCursorIndex; - //int accCodepointSize = 0; - int nextCodepointSize; - int nextCodepoint; - - // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) - // Not using isalnum() since it only works on ASCII characters - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - bool puctuation = ispunct(nextCodepoint & 0xff); - while (offset < textLength) - { - if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) break; - - offset += nextCodepointSize; - //accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - // Check whitespace to skip (ASCII only) - while (offset < textLength) - { - if (!isspace(nextCodepoint & 0xff)) break; - - offset += nextCodepointSize; - //accCodepointSize += nextCodepointSize; - nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); - } - - textBoxCursorIndex = offset; - } - else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) - { - int nextCodepointSize = 0; - GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); - - textBoxCursorIndex += nextCodepointSize; - } - - // Move cursor position with mouse - if (CheckCollisionPointRec(mousePosition, textBounds)) // Mouse hover text - { - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/(float)guiFont.baseSize; - int codepointIndex = 0; - float glyphWidth = 0.0f; - float widthToMouseX = 0; - int mouseCursorIndex = 0; - - for (int i = textIndexOffset; i < textLength; i += codepointSize) - { - codepoint = GetCodepointNext(&text[i], &codepointSize); - codepointIndex = GetGlyphIndex(guiFont, codepoint); - - if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); - else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); - - if (mousePosition.x <= (textBounds.x + (widthToMouseX + glyphWidth/2))) - { - mouseCursor.x = textBounds.x + widthToMouseX; - mouseCursorIndex = i; - break; - } - - widthToMouseX += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - - // Check if mouse cursor is at the last position - int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) - { - mouseCursor.x = textBounds.x + textEndWidth; - mouseCursorIndex = textLength; - } - - // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) - { - cursor.x = mouseCursor.x; - textBoxCursorIndex = mouseCursorIndex; - } - } - else mouseCursor.x = -1; - - // Recalculate cursor position.y depending on textBoxCursorIndex - cursor.x = bounds.x + GuiGetStyle(TEXTBOX, TEXT_PADDING) + GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex) + GuiGetStyle(DEFAULT, TEXT_SPACING); - //if (multiline) cursor.y = GetTextLines() - - // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) - { - textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index - autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes - result = 1; - } - } - else - { - if (CheckCollisionPointRec(mousePosition, bounds)) - { - state = STATE_FOCUSED; - - if (GUI_BUTTON_PRESSED) - { - textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text - autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes - result = 1; - } - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_PRESSED) - { - GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED))); - } - else if (state == STATE_DISABLED) - { - GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED))); - } - else GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), BLANK); - - // Draw text considering index offset if required - // NOTE: Text index offset depends on cursor position - GuiDrawText(text + textIndexOffset, textBounds, GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TEXTBOX, TEXT + (state*3)))); - - // Draw cursor - if (editMode && !GuiGetStyle(TEXTBOX, TEXT_READONLY)) - { - //if (autoCursorMode || ((blinkCursorFrameCounter/40)%2 == 0)) - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); - - // Draw mouse position cursor (if required) - if (mouseCursor.x >= 0) GuiDrawRectangle(mouseCursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); - } - else if (state == STATE_FOCUSED) GuiTooltip(bounds); - //-------------------------------------------------------------------- - - return result; // Mouse button pressed: result = 1 -} - -/* -// Text Box control with multiple lines and word-wrap -// NOTE: This text-box is readonly, no editing supported by default -bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode) -{ - bool pressed = false; - - GuiSetStyle(TEXTBOX, TEXT_READONLY, 1); - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_WORD); // WARNING: If wrap mode enabled, text editing is not supported - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_TOP); - - // TODO: Implement methods to calculate cursor position properly - pressed = GuiTextBox(bounds, text, textSize, editMode); - - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); - GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_NONE); - GuiSetStyle(TEXTBOX, TEXT_READONLY, 0); - - return pressed; -} -*/ - -// Spinner control, returns selected value -int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) -{ - int result = 1; - GuiState state = guiState; - - int tempValue = *value; - - Rectangle valueBoxBounds = { - bounds.x + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING), - bounds.y, - bounds.width - 2*(GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING)), bounds.height }; - Rectangle leftButtonBound = { (float)bounds.x, (float)bounds.y, (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - Rectangle rightButtonBound = { (float)bounds.x + bounds.width - GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.y, - (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check spinner state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - -#if defined(RAYGUI_NO_ICONS) - if (GuiButton(leftButtonBound, "<")) tempValue--; - if (GuiButton(rightButtonBound, ">")) tempValue++; -#else - if (GuiButton(leftButtonBound, GuiIconText(ICON_ARROW_LEFT_FILL, NULL))) tempValue--; - if (GuiButton(rightButtonBound, GuiIconText(ICON_ARROW_RIGHT_FILL, NULL))) tempValue++; -#endif - - if (!editMode) - { - if (tempValue < minValue) tempValue = minValue; - if (tempValue > maxValue) tempValue = maxValue; - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - result = GuiValueBox(valueBoxBounds, NULL, &tempValue, minValue, maxValue, editMode); - - // Draw value selector custom buttons - // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values - int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); - int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, BORDER_WIDTH, GuiGetStyle(VALUEBOX, BORDER_WIDTH)); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); - GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); - - // Draw text label if provided - GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - *value = tempValue; - return result; -} - -// Value Box control, updates input text with numbers -// NOTE: Requires static variables: frameCounter -int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) -{ - #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) - #define RAYGUI_VALUEBOX_MAX_CHARS 32 - #endif - - int result = 0; - GuiState state = guiState; - - char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = { 0 }; - snprintf(textValue, RAYGUI_VALUEBOX_MAX_CHARS + 1, "%i", *value); - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - bool valueHasChanged = false; - - if (editMode) - { - state = STATE_PRESSED; - - int keyCount = (int)strlen(textValue); - - // Add or remove minus symbol - if (GUI_KEY_PRESSED(KEY_MINUS)) - { - if (textValue[0] == '-') - { - for (int i = 0 ; i < keyCount; i++) textValue[i] = textValue[i + 1]; - - keyCount--; - valueHasChanged = true; - } - else if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) - { - if (keyCount == 0) - { - textValue[0] = '0'; - textValue[1] = '\0'; - keyCount++; - } - - for (int i = keyCount ; i > -1; i--) textValue[i + 1] = textValue[i]; - - textValue[0] = '-'; - keyCount++; - valueHasChanged = true; - } - } - - // Add new digit to text value - if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) - { - int key = GUI_INPUT_KEY; - - // Only allow keys in range [48..57] - if ((key >= 48) && (key <= 57)) - { - textValue[keyCount] = (char)key; - keyCount++; - valueHasChanged = true; - } - } - - // Delete text - if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) - { - keyCount--; - textValue[keyCount] = '\0'; - valueHasChanged = true; - } - - if (valueHasChanged) *value = TextToInteger(textValue); - - // NOTE: Values are not clamped until user input finishes - //if (*value > maxValue) *value = maxValue; - //else if (*value < minValue) *value = minValue; - - if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) - { - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - - result = 1; - } - } - else - { - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - if (GUI_BUTTON_PRESSED) result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - Color baseColor = BLANK; - if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); - else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); - - GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); - GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); - - // Draw cursor rectangle - if (editMode) - { - // NOTE: ValueBox internal text is always centered - Rectangle cursor = { bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, - bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH) + 2, - 2, bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2 - 4 }; - if (cursor.height > bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); - } - - // Draw text label if provided - GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Floating point Value Box control, updates input val_str with numbers -// NOTE: Requires static variables: frameCounter -int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode) -{ - #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) - #define RAYGUI_VALUEBOX_MAX_CHARS 32 - #endif - - int result = 0; - GuiState state = guiState; - - //char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = "\0"; - //snprintf(textValue, sizeof(textValue), "%2.2f", *value); - - Rectangle textBounds = { 0 }; - if (text != NULL) - { - textBounds.width = (float)GuiGetTextWidth(text) + 2; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - bool valueHasChanged = false; - - if (editMode) - { - state = STATE_PRESSED; - - int keyCount = (int)strlen(textValue); - - // Add or remove minus symbol - if (GUI_KEY_PRESSED(KEY_MINUS)) - { - if (textValue[0] == '-') - { - for (int i = 0; i < keyCount; i++) textValue[i] = textValue[i + 1]; - - keyCount--; - valueHasChanged = true; - } - else if (keyCount < (RAYGUI_VALUEBOX_MAX_CHARS - 1)) - { - if (keyCount == 0) - { - textValue[0] = '0'; - textValue[1] = '\0'; - keyCount++; - } - - for (int i = keyCount; i > -1; i--) textValue[i + 1] = textValue[i]; - - textValue[0] = '-'; - keyCount++; - valueHasChanged = true; - } - } - - // Only allow keys in range [48..57] - if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) - { - if (GuiGetTextWidth(textValue) < bounds.width) - { - int key = GUI_INPUT_KEY; - if (((key >= 48) && (key <= 57)) || - (key == '.') || - ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position - ((keyCount == 0) && (key == '-'))) - { - textValue[keyCount] = (char)key; - keyCount++; - - valueHasChanged = true; - } - } - } - - // Pressed backspace - if (GUI_KEY_PRESSED(KEY_BACKSPACE)) - { - if (keyCount > 0) - { - keyCount--; - textValue[keyCount] = '\0'; - valueHasChanged = true; - } - } - - if (valueHasChanged) *value = TextToFloat(textValue); - - if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; - } - else - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - if (GUI_BUTTON_PRESSED) result = 1; - } - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - Color baseColor = BLANK; - if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); - else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); - - GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); - GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); - - // Draw cursor - if (editMode) - { - // NOTE: ValueBox internal text is always centered - Rectangle cursor = {bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, - bounds.y + 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), 4, - bounds.height - 4*GuiGetStyle(VALUEBOX, BORDER_WIDTH)}; - GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); - } - - // Draw text label if provided - GuiDrawText(text, textBounds, - (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, - GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Slider control with pro parameters -// NOTE: Other GuiSlider*() controls use this one -int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - GuiState state = guiState; - - float temp = (maxValue - minValue)/2.0f; - if (value == NULL) value = &temp; - float oldValue = *value; - - int sliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); - - Rectangle slider = { bounds.x, bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), - 0, bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - // Get equivalent value and slider position from mousePosition.x - *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - if (!CheckCollisionPointRec(mousePoint, slider)) - { - // Get equivalent value and slider position from mousePosition.x - *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; - } - } - else state = STATE_FOCUSED; - } - - if (*value > maxValue) *value = maxValue; - else if (*value < minValue) *value = minValue; - } - - // Control value change check - if (oldValue == *value) result = 0; - else result = 1; - - // Slider bar limits check - float sliderValue = (((*value - minValue)/(maxValue - minValue))*(bounds.width - sliderWidth - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))); - if (sliderWidth > 0) // Slider - { - slider.x += sliderValue; - slider.width = (float)sliderWidth; - if (slider.x <= (bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH); - else if ((slider.x + slider.width) >= (bounds.x + bounds.width)) slider.x = bounds.x + bounds.width - slider.width - GuiGetStyle(SLIDER, BORDER_WIDTH); - } - else if (sliderWidth == 0) // SliderBar - { - slider.x += GuiGetStyle(SLIDER, BORDER_WIDTH); - slider.width = sliderValue; - if (slider.width > bounds.width) slider.width = bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH); - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), GetColor(GuiGetStyle(SLIDER, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); - - // Draw slider internal bar (depends on state) - if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); - else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED))); - else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_PRESSED))); - else if (state == STATE_DISABLED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_DISABLED))); - - // Draw left/right text if provided - if (textLeft != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textLeft); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x - textBounds.width - GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - - if (textRight != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textRight); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(SLIDER, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - //-------------------------------------------------------------------- - - return result; -} - -// Slider Bar control extended, returns selected value -int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - int preSliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); - GuiSetStyle(SLIDER, SLIDER_WIDTH, 0); - result = GuiSlider(bounds, textLeft, textRight, value, minValue, maxValue); - GuiSetStyle(SLIDER, SLIDER_WIDTH, preSliderWidth); - - return result; -} - -// Progress Bar control extended, shows current progress value -int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) -{ - int result = 0; - GuiState state = guiState; - - float temp = (maxValue - minValue)/2.0f; - if (value == NULL) value = &temp; - - // Progress bar - Rectangle progress = { bounds.x + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), - bounds.y + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) + GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING), 0, - bounds.height - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - 2*GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING) -1 }; - - // Update control - //-------------------------------------------------------------------- - if (*value > maxValue) *value = maxValue; - - // WARNING: Working with floats could lead to rounding issues - if ((state != STATE_DISABLED)) progress.width = ((float)*value/(maxValue - minValue))*(bounds.width - 2*GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)); - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_DISABLED) - { - GuiDrawRectangle(bounds, GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(PROGRESSBAR, BORDER + (state*3))), BLANK); - } - else - { - if (*value > minValue) - { - // Draw progress bar with colored border, more visual - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height - 2 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - } - else GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - - if (*value >= maxValue) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1}, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); - else - { - // Draw borders not yet reached by value - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y + bounds.height - 1, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); - } - - // Draw slider internal progress bar (depends on state) - if (GuiGetStyle(PROGRESSBAR, PROGRESS_SIDE) == 0) // Left-->Right - { - GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); - } - else // Right-->Left - { - progress.x = bounds.x + bounds.width - progress.width - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH); - GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); - } - } - - // Draw left/right text if provided - if (textLeft != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textLeft); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x - textBounds.width - GuiGetStyle(PROGRESSBAR, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - - if (textRight != NULL) - { - Rectangle textBounds = { 0 }; - textBounds.width = (float)GuiGetTextWidth(textRight); - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - textBounds.x = bounds.x + bounds.width + GuiGetStyle(PROGRESSBAR, TEXT_PADDING); - textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - - GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); - } - //-------------------------------------------------------------------- - - return result; -} - -// Status Bar control -int GuiStatusBar(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(STATUSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(STATUSBAR, BORDER + (state*3))), GetColor(GuiGetStyle(STATUSBAR, BASE + (state*3)))); - GuiDrawText(text, GetTextBounds(STATUSBAR, bounds), GuiGetStyle(STATUSBAR, TEXT_ALIGNMENT), GetColor(GuiGetStyle(STATUSBAR, TEXT + (state*3)))); - //-------------------------------------------------------------------- - - return result; -} - -// Dummy rectangle control, intended for placeholding -int GuiDummyRec(Rectangle bounds, const char *text) -{ - int result = 0; - GuiState state = guiState; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check button state - if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) state = STATE_PRESSED; - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); - GuiDrawText(text, GetTextBounds(DEFAULT, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(BUTTON, (state != STATE_DISABLED)? TEXT_COLOR_NORMAL : TEXT_COLOR_DISABLED))); - //------------------------------------------------------------------ - - return result; -} - -// List View control -int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active) -{ - int result = 0; - int itemCount = 0; - char **items = NULL; - - if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); - - result = GuiListViewEx(bounds, items, itemCount, scrollIndex, active, NULL); - - return result; -} - -// List View control with extended parameters -int GuiListViewEx(Rectangle bounds, char **text, int count, int *scrollIndex, int *active, int *focus) -{ - int result = 0; - GuiState state = guiState; - - int itemFocused = (focus == NULL)? -1 : *focus; - int itemSelected = (active == NULL)? -1 : *active; - - // Check if scroll bar is needed - bool useScrollBar = false; - if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; - - // Define base item rectangle [0] - Rectangle itemBounds = { 0 }; - itemBounds.x = bounds.x + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING); - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.width = bounds.width - 2*GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) - GuiGetStyle(DEFAULT, BORDER_WIDTH); - itemBounds.height = (float)GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); - if (useScrollBar) itemBounds.width -= GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); - - // Get items on the list - int visibleItems = (int)bounds.height/(GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - if (visibleItems > count) visibleItems = count; - - int startIndex = (scrollIndex == NULL)? 0 : *scrollIndex; - if ((startIndex < 0) || (startIndex > (count - visibleItems))) startIndex = 0; - int endIndex = startIndex + visibleItems; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - // Check mouse inside list view - if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - - // Check focused and selected item - for (int i = 0; i < visibleItems; i++) - { - if (CheckCollisionPointRec(mousePoint, itemBounds)) - { - itemFocused = startIndex + i; - if (GUI_BUTTON_PRESSED) - { - if (itemSelected == (startIndex + i)) itemSelected = -1; - else itemSelected = startIndex + i; - } - break; - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - } - - if (useScrollBar) - { - float scrollDelta = GUI_SCROLL_DELTA; - startIndex -= (int)scrollDelta; - - if (startIndex < 0) startIndex = 0; - else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; - - endIndex = startIndex + visibleItems; - if (endIndex > count) endIndex = count; - } - } - else itemFocused = -1; - - // Reset item rectangle y to [0] - itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background - - // Draw visible items - for (int i = 0; ((i < visibleItems) && (text != NULL)); i++) - { - if (GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL)) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_NORMAL)), BLANK); - - if (state == STATE_DISABLED) - { - if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); - } - else - { - if (((startIndex + i) == itemSelected) && (active != NULL)) - { - // Draw item selected - GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); - } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned - { - // Draw item focused - GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); - } - else - { - // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); - } - } - - // Update item rectangle y position for next item - itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); - } - - if (useScrollBar) - { - Rectangle scrollBarBounds = { - bounds.x + bounds.width - GuiGetStyle(LISTVIEW, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.y + GuiGetStyle(LISTVIEW, BORDER_WIDTH), (float)GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), - bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - }; - - // Calculate percentage of visible items and apply same percentage to scrollbar - float percentVisible = (float)(endIndex - startIndex)/count; - float sliderSize = bounds.height*percentVisible; - - int prevSliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); // Save default slider size - int prevScrollSpeed = GuiGetStyle(SCROLLBAR, SCROLL_SPEED); // Save default scroll speed - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)sliderSize); // Change slider size - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, count - visibleItems); // Change scroll speed - - startIndex = GuiScrollBar(scrollBarBounds, startIndex, 0, count - visibleItems); - - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, prevScrollSpeed); // Reset scroll speed to default - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, prevSliderSize); // Reset slider size to default - } - //-------------------------------------------------------------------- - - if (active != NULL) *active = itemSelected; - if (focus != NULL) *focus = itemFocused; - if (scrollIndex != NULL) *scrollIndex = startIndex; - - return result; -} - -// Color Panel control - Color (RGBA) variant -int GuiColorPanel(Rectangle bounds, const char *text, Color *color) -{ - int result = 0; - - Vector3 vcolor = { (float)color->r/255.0f, (float)color->g/255.0f, (float)color->b/255.0f }; - Vector3 hsv = ConvertRGBtoHSV(vcolor); - Vector3 prevHsv = hsv; // workaround to see if GuiColorPanelHSV modifies the hsv - - GuiColorPanelHSV(bounds, text, &hsv); - - // Check if the hsv was changed, only then change the color - // This is required, because the Color->HSV->Color conversion has precision errors - // Thus the assignment from HSV to Color should only be made, if the HSV has a new user-entered value - // Otherwise GuiColorPanel would often modify it's color without user input - // TODO: GuiColorPanelHSV could return 1 if the slider was dragged, to simplify this check - if (hsv.x != prevHsv.x || hsv.y != prevHsv.y || hsv.z != prevHsv.z) - { - Vector3 rgb = ConvertHSVtoRGB(hsv); - - // NOTE: Vector3ToColor() only available on raylib 1.8.1 - *color = RAYGUI_CLITERAL(Color){ (unsigned char)(255.0f*rgb.x), - (unsigned char)(255.0f*rgb.y), - (unsigned char)(255.0f*rgb.z), - color->a }; - } - return result; -} - -// Color Bar Alpha control -// NOTE: Returns alpha value normalized [0..1] -int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) -{ - #if !defined(RAYGUI_COLORBARALPHA_CHECKED_SIZE) - #define RAYGUI_COLORBARALPHA_CHECKED_SIZE 10 - #endif - - int result = 0; - GuiState state = guiState; - Rectangle selector = { (float)bounds.x + (*alpha)*bounds.width - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, - (float)bounds.y - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), - (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT), - (float)bounds.height + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2 }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - *alpha = (mousePoint.x - bounds.x)/bounds.width; - if (*alpha <= 0.0f) *alpha = 0.0f; - if (*alpha >= 1.0f) *alpha = 1.0f; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - *alpha = (mousePoint.x - bounds.x)/bounds.width; - if (*alpha <= 0.0f) *alpha = 0.0f; - if (*alpha >= 1.0f) *alpha = 1.0f; - //selector.x = bounds.x + (int)(((alpha - 0)/(100 - 0))*(bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))) - selector.width/2; - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - // Draw alpha bar: checked background - if (state != STATE_DISABLED) - { - int checksX = (int)bounds.width/RAYGUI_COLORBARALPHA_CHECKED_SIZE; - int checksY = (int)bounds.height/RAYGUI_COLORBARALPHA_CHECKED_SIZE; - - for (int x = 0; x < checksX; x++) - { - for (int y = 0; y < checksY; y++) - { - Rectangle check = { bounds.x + x*RAYGUI_COLORBARALPHA_CHECKED_SIZE, bounds.y + y*RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE }; - GuiDrawRectangle(check, 0, BLANK, ((x + y)%2)? Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.4f) : Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.4f)); - } - } - - DrawRectangleGradientEx(bounds, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha)); - } - else DrawRectangleGradientEx(bounds, Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - - // Draw alpha bar: selector - GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); - //-------------------------------------------------------------------- - - return result; -} - -// Color Bar Hue control -// Returns hue value normalized [0..1] -// NOTE: Other similar bars (for reference): -// Color GuiColorBarSat() [WHITE->color] -// Color GuiColorBarValue() [BLACK->color], HSV/HSL -// float GuiColorBarLuminance() [BLACK->WHITE] -int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) -{ - int result = 0; - GuiState state = guiState; - Rectangle selector = { (float)bounds.x - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), (float)bounds.y + (*hue)/360.0f*bounds.height - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, (float)bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2, (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT) }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - *hue = (mousePoint.y - bounds.y)*360/bounds.height; - if (*hue <= 0.0f) *hue = 0.0f; - if (*hue >= 359.0f) *hue = 359.0f; - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - *hue = (mousePoint.y - bounds.y)*360/bounds.height; - if (*hue <= 0.0f) *hue = 0.0f; - if (*hue >= 359.0f) *hue = 359.0f; - - } - else state = STATE_FOCUSED; - - /*if (GUI_KEY_DOWN(KEY_UP)) - { - hue -= 2.0f; - if (hue <= 0.0f) hue = 0.0f; - } - else if (GUI_KEY_DOWN(KEY_DOWN)) - { - hue += 2.0f; - if (hue >= 360.0f) hue = 360.0f; - }*/ - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state != STATE_DISABLED) - { - // Draw hue bar:color bars - // TODO: Use directly DrawRectangleGradientEx(bounds, color1, color2, color2, color1); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + bounds.height/6), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 2*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 3*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 4*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha)); - DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 5*(bounds.height/6)), (int)bounds.width, (int)(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha)); - } - else DrawRectangleGradientV((int)bounds.x, (int)bounds.y, (int)bounds.width, (int)bounds.height, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - - // Draw hue bar: selector - GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); - //-------------------------------------------------------------------- - - return result; -} - -// Color Picker control -// NOTE: It's divided in multiple controls: -// Color GuiColorPanel(Rectangle bounds, Color color) -// float GuiColorBarAlpha(Rectangle bounds, float alpha) -// float GuiColorBarHue(Rectangle bounds, float value) -// NOTE: bounds define GuiColorPanel() size -// NOTE: this picker converts RGB to HSV, which can cause the Hue control to jump. If you have this problem, consider using the HSV variant instead -int GuiColorPicker(Rectangle bounds, const char *text, Color *color) -{ - int result = 0; - - Color temp = { 200, 0, 0, 255 }; - if (color == NULL) color = &temp; - - GuiColorPanel(bounds, NULL, color); - - Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; - //Rectangle boundsAlpha = { bounds.x, bounds.y + bounds.height + GuiGetStyle(COLORPICKER, BARS_PADDING), bounds.width, GuiGetStyle(COLORPICKER, BARS_THICK) }; - - // NOTE: this conversion can cause low hue-resolution, if the r, g and b value are very similar, which causes the hue bar to shift around when only the GuiColorPanel is used - Vector3 hsv = ConvertRGBtoHSV(RAYGUI_CLITERAL(Vector3){ (*color).r/255.0f, (*color).g/255.0f, (*color).b/255.0f }); - - GuiColorBarHue(boundsHue, NULL, &hsv.x); - - //color.a = (unsigned char)(GuiColorBarAlpha(boundsAlpha, (float)color.a/255.0f)*255.0f); - Vector3 rgb = ConvertHSVtoRGB(hsv); - - *color = RAYGUI_CLITERAL(Color){ (unsigned char)roundf(rgb.x*255.0f), (unsigned char)roundf(rgb.y*255.0f), (unsigned char)roundf(rgb.z*255.0f), (*color).a }; - - return result; -} - -// Color Picker control that avoids conversion to RGB and back to HSV on each call, thus avoiding jittering -// The user can call ConvertHSVtoRGB() to convert *colorHsv value to RGB -// NOTE: It's divided in multiple controls: -// int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -// int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) -// float GuiColorBarHue(Rectangle bounds, float value) -// NOTE: bounds define GuiColorPanelHSV() size -int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -{ - int result = 0; - - Vector3 tempHsv = { 0 }; - - if (colorHsv == NULL) - { - const Vector3 tempColor = { 200.0f/255.0f, 0.0f, 0.0f }; - tempHsv = ConvertRGBtoHSV(tempColor); - colorHsv = &tempHsv; - } - - GuiColorPanelHSV(bounds, NULL, colorHsv); - - const Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; - - GuiColorBarHue(boundsHue, NULL, &colorHsv->x); - - return result; -} - -// Color Panel control - HSV variant -int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) -{ - int result = 0; - GuiState state = guiState; - Vector2 pickerSelector = { 0 }; - - const Color colWhite = { 255, 255, 255, 255 }; - const Color colBlack = { 0, 0, 0, 255 }; - - pickerSelector.x = bounds.x + (float)colorHsv->y*bounds.width; // HSV: Saturation - pickerSelector.y = bounds.y + (1.0f - (float)colorHsv->z)*bounds.height; // HSV: Value - - Vector3 maxHue = { colorHsv->x, 1.0f, 1.0f }; - Vector3 rgbHue = ConvertHSVtoRGB(maxHue); - Color maxHueCol = { (unsigned char)(255.0f*rgbHue.x), - (unsigned char)(255.0f*rgbHue.y), - (unsigned char)(255.0f*rgbHue.z), 255 }; - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - pickerSelector = mousePoint; - - if (pickerSelector.x < bounds.x) pickerSelector.x = bounds.x; - if (pickerSelector.x > bounds.x + bounds.width) pickerSelector.x = bounds.x + bounds.width; - if (pickerSelector.y < bounds.y) pickerSelector.y = bounds.y; - if (pickerSelector.y > bounds.y + bounds.height) pickerSelector.y = bounds.y + bounds.height; - - // Calculate color from picker - Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; - - colorPick.x /= (float)bounds.width; // Get normalized value on x - colorPick.y /= (float)bounds.height; // Get normalized value on y - - colorHsv->y = colorPick.x; - colorHsv->z = 1.0f - colorPick.y; - - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - if (GUI_BUTTON_DOWN) - { - state = STATE_PRESSED; - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; - pickerSelector = mousePoint; - - // Calculate color from picker - Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; - - colorPick.x /= (float)bounds.width; // Get normalized value on x - colorPick.y /= (float)bounds.height; // Get normalized value on y - - colorHsv->y = colorPick.x; - colorHsv->z = 1.0f - colorPick.y; - } - else state = STATE_FOCUSED; - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state != STATE_DISABLED) - { - DrawRectangleGradientEx(bounds, Fade(colWhite, guiAlpha), Fade(colWhite, guiAlpha), Fade(maxHueCol, guiAlpha), Fade(maxHueCol, guiAlpha)); - DrawRectangleGradientEx(bounds, Fade(colBlack, 0), Fade(colBlack, guiAlpha), Fade(colBlack, guiAlpha), Fade(colBlack, 0)); - - // Draw color picker: selector - Rectangle selector = { pickerSelector.x - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, pickerSelector.y - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE), (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE) }; - GuiDrawRectangle(selector, 0, BLANK, colWhite); - } - else - { - DrawRectangleGradientEx(bounds, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.6f), guiAlpha)); - } - - GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); - //-------------------------------------------------------------------- - - return result; -} - -// Message Box control -int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons) -{ - #if !defined(RAYGUI_MESSAGEBOX_BUTTON_HEIGHT) - #define RAYGUI_MESSAGEBOX_BUTTON_HEIGHT 24 - #endif - #if !defined(RAYGUI_MESSAGEBOX_BUTTON_PADDING) - #define RAYGUI_MESSAGEBOX_BUTTON_PADDING 12 - #endif - - int result = -1; // Returns clicked button from buttons list, 0 refers to closed window button - - int buttonCount = 0; - char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); - Rectangle buttonBounds = { 0 }; - buttonBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - buttonBounds.y = bounds.y + bounds.height - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT - RAYGUI_MESSAGEBOX_BUTTON_PADDING; - buttonBounds.width = (bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; - buttonBounds.height = RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; - - //int textWidth = GuiGetTextWidth(message) + 2; - - Rectangle textBounds = { 0 }; - textBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + RAYGUI_MESSAGEBOX_BUTTON_PADDING; - textBounds.width = bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*2; - textBounds.height = bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 3*RAYGUI_MESSAGEBOX_BUTTON_PADDING - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; - - // Draw control - //-------------------------------------------------------------------- - if (GuiWindowBox(bounds, title)) result = 0; - - int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(textBounds, message); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); - - prevTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - for (int i = 0; i < buttonCount; i++) - { - if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; - buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); - } - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevTextAlignment); - //-------------------------------------------------------------------- - - return result; -} - -// Text Input Box control, ask for text -int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive) -{ - #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT) - #define RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT 24 - #endif - #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_PADDING) - #define RAYGUI_TEXTINPUTBOX_BUTTON_PADDING 12 - #endif - #if !defined(RAYGUI_TEXTINPUTBOX_HEIGHT) - #define RAYGUI_TEXTINPUTBOX_HEIGHT 26 - #endif - - // Used to enable text edit mode - // WARNING: No more than one GuiTextInputBox() should be open at the same time - static bool textEditMode = false; - - int result = -1; - - int buttonCount = 0; - char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); - Rectangle buttonBounds = { 0 }; - buttonBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - buttonBounds.y = bounds.y + bounds.height - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - buttonBounds.width = (bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; - buttonBounds.height = RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT; - - int messageInputHeight = (int)bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - 2*RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - - Rectangle textBounds = { 0 }; - if (message != NULL) - { - int textSize = GuiGetTextWidth(message) + 2; - - textBounds.x = bounds.x + bounds.width/2 - textSize/2; - textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + messageInputHeight/4 - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/2; - textBounds.width = (float)textSize; - textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - } - - Rectangle textBoxBounds = { 0 }; - textBoxBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - textBoxBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - RAYGUI_TEXTINPUTBOX_HEIGHT/2; - if (message == NULL) textBoxBounds.y = bounds.y + 24 + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; - else textBoxBounds.y += (messageInputHeight/2 + messageInputHeight/4); - textBoxBounds.width = bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*2; - textBoxBounds.height = RAYGUI_TEXTINPUTBOX_HEIGHT; - - // Draw control - //-------------------------------------------------------------------- - if (GuiWindowBox(bounds, title)) result = 0; - - // Draw message if available - if (message != NULL) - { - int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(textBounds, message); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); - } - - int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - - if (secretViewActive != NULL) - { - static char stars[] = "****************"; - if (GuiTextBox(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x, textBoxBounds.y, textBoxBounds.width - 4 - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.height }, - ((*secretViewActive == 1) || textEditMode)? text : stars, textMaxSize, textEditMode)) textEditMode = !textEditMode; - - GuiToggle(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x + textBoxBounds.width - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.y, RAYGUI_TEXTINPUTBOX_HEIGHT, RAYGUI_TEXTINPUTBOX_HEIGHT }, (*secretViewActive == 1)? "#44#" : "#45#", secretViewActive); - } - else - { - if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; - } - - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); - - int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - for (int i = 0; i < buttonCount; i++) - { - if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; - buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); - } - - if (result >= 0) textEditMode = false; - - GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevBtnTextAlignment); - //-------------------------------------------------------------------- - - return result; // Result is the pressed button index -} - -// Grid control -// NOTE: Returns grid mouse-hover selected cell -// About drawing lines at subpixel spacing, simple put, not easy solution: -// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster -int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) -{ - // Grid lines alpha amount - #if !defined(RAYGUI_GRID_ALPHA) - #define RAYGUI_GRID_ALPHA 0.15f - #endif - - int result = 0; - GuiState state = guiState; - - Vector2 mousePoint = GUI_POINTER_POSITION; - Vector2 currentMouseCell = { -1, -1 }; - - float spaceWidth = spacing/(float)subdivs; - int linesV = (int)(bounds.width/spaceWidth) + 1; - int linesH = (int)(bounds.height/spaceWidth) + 1; - - int color = GuiGetStyle(DEFAULT, LINE_COLOR); - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) - { - if (CheckCollisionPointRec(mousePoint, bounds)) - { - // NOTE: Cell values must be the upper left of the cell the mouse is in - currentMouseCell.x = floorf((mousePoint.x - bounds.x)/spacing); - currentMouseCell.y = floorf((mousePoint.y - bounds.y)/spacing); - } - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - if (state == STATE_DISABLED) color = GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED); - - if (subdivs > 0) - { - // Draw vertical grid lines - for (int i = 0; i < linesV; i++) - { - Rectangle lineV = { bounds.x + spacing*i/subdivs, bounds.y, 1, bounds.height + 1 }; - GuiDrawRectangle(lineV, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); - } - - // Draw horizontal grid lines - for (int i = 0; i < linesH; i++) - { - Rectangle lineH = { bounds.x, bounds.y + spacing*i/subdivs, bounds.width + 1, 1 }; - GuiDrawRectangle(lineH, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); - } - } - - if (mouseCell != NULL) *mouseCell = currentMouseCell; - return result; -} - -//---------------------------------------------------------------------------------- -// Tooltip management functions -// NOTE: Tooltips requires some global variables: tooltipPtr -//---------------------------------------------------------------------------------- -// Enable gui tooltips (global state) -void GuiEnableTooltip(void) { guiTooltip = true; } - -// Disable gui tooltips (global state) -void GuiDisableTooltip(void) { guiTooltip = false; } - -// Set tooltip string -void GuiSetTooltip(const char *tooltip) { guiTooltipPtr = tooltip; } - -//---------------------------------------------------------------------------------- -// Styles loading functions -//---------------------------------------------------------------------------------- - -// Load raygui style file (.rgs) -// NOTE: By default a binary file is expected, that file could contain a custom font, -// in that case, custom font image atlas is GRAY+ALPHA and pixel data can be compressed (DEFLATE) -void GuiLoadStyle(const char *fileName) -{ - #define MAX_LINE_BUFFER_SIZE 256 - - bool tryBinary = false; - if (!guiStyleLoaded) GuiLoadStyleDefault(); - - // Try reading the files as text file first - FILE *rgsFile = fopen(fileName, "rt"); - - if (rgsFile != NULL) - { - char buffer[MAX_LINE_BUFFER_SIZE] = { 0 }; - fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); - - if (buffer[0] == '#') - { - int controlId = 0; - int propertyId = 0; - unsigned int propertyValue = 0; - - while (!feof(rgsFile)) - { - switch (buffer[0]) - { - case 'p': - { - // Style property: p - - sscanf(buffer, "p %d %d 0x%x", &controlId, &propertyId, &propertyValue); - GuiSetStyle(controlId, propertyId, (int)propertyValue); - - } break; - case 'f': - { - // Style font: f - - int fontSize = 0; - char charmapFileName[256] = { 0 }; - char fontFileName[256] = { 0 }; - sscanf(buffer, "f %d %s %[^\r\n]s", &fontSize, charmapFileName, fontFileName); - - Font font = { 0 }; - int *codepoints = NULL; - int codepointCount = 0; - - if (charmapFileName[0] != '0') - { - // Load text data from file - // NOTE: Expected an UTF-8 array of codepoints, no separation - char *textData = LoadFileText(TextFormat("%s/%s", GetDirectoryPath(fileName), charmapFileName)); - codepoints = LoadCodepoints(textData, &codepointCount); - UnloadFileText(textData); - } - - if (fontFileName[0] != '\0') - { - // In case a font is already loaded and it is not default internal font, unload it - if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); - - if (codepointCount > 0) font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, codepoints, codepointCount); - else font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, NULL, 0); // Default to 95 standard codepoints - } - - // If font texture not properly loaded, revert to default font and size/spacing - if (font.texture.id == 0) - { - font = GetFontDefault(); - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); - } - - UnloadCodepoints(codepoints); - - if ((font.texture.id > 0) && (font.glyphCount > 0)) GuiSetFont(font); - - } break; - default: break; - } - - fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); - } - } - else tryBinary = true; - - fclose(rgsFile); - } - - if (tryBinary) - { - rgsFile = fopen(fileName, "rb"); - - if (rgsFile != NULL) - { - fseek(rgsFile, 0, SEEK_END); - int fileDataSize = ftell(rgsFile); - fseek(rgsFile, 0, SEEK_SET); - - if (fileDataSize > 0) - { - unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - if (fileData != NULL) - { - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - - GuiLoadStyleFromMemory(fileData, fileDataSize); - - RAYGUI_FREE(fileData); - } - } - - fclose(rgsFile); - } - } -} - -// Load style default over global style -void GuiLoadStyleDefault(void) -{ - // Setting this flag first to avoid cyclic function calls - // when calling GuiSetStyle() and GuiGetStyle() - guiStyleLoaded = true; - - // Initialize default LIGHT style property values - // WARNING: Default value are applied to all controls on set but - // they can be overwritten later on for every custom control - GuiSetStyle(DEFAULT, BORDER_COLOR_NORMAL, 0x838383ff); - GuiSetStyle(DEFAULT, BASE_COLOR_NORMAL, 0xc9c9c9ff); - GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0x686868ff); - GuiSetStyle(DEFAULT, BORDER_COLOR_FOCUSED, 0x5bb2d9ff); - GuiSetStyle(DEFAULT, BASE_COLOR_FOCUSED, 0xc9effeff); - GuiSetStyle(DEFAULT, TEXT_COLOR_FOCUSED, 0x6c9bbcff); - GuiSetStyle(DEFAULT, BORDER_COLOR_PRESSED, 0x0492c7ff); - GuiSetStyle(DEFAULT, BASE_COLOR_PRESSED, 0x97e8ffff); - GuiSetStyle(DEFAULT, TEXT_COLOR_PRESSED, 0x368bafff); - GuiSetStyle(DEFAULT, BORDER_COLOR_DISABLED, 0xb5c1c2ff); - GuiSetStyle(DEFAULT, BASE_COLOR_DISABLED, 0xe6e9e9ff); - GuiSetStyle(DEFAULT, TEXT_COLOR_DISABLED, 0xaeb7b8ff); - GuiSetStyle(DEFAULT, BORDER_WIDTH, 1); - GuiSetStyle(DEFAULT, TEXT_PADDING, 0); - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - - // Initialize default extended property values - // NOTE: By default, extended property values are initialized to 0 - GuiSetStyle(DEFAULT, TEXT_SIZE, 10); // DEFAULT, shared by all controls - GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls - GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second - GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds - - // Initialize control-specific property values - // NOTE: Those properties are in default list but require specific values by control type - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(BUTTON, BORDER_WIDTH, 2); - GuiSetStyle(SLIDER, TEXT_PADDING, 4); - GuiSetStyle(PROGRESSBAR, TEXT_PADDING, 4); - GuiSetStyle(CHECKBOX, TEXT_PADDING, 4); - GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_RIGHT); - GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 0); - GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiSetStyle(TEXTBOX, TEXT_PADDING, 4); - GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(VALUEBOX, TEXT_PADDING, 0); - GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - GuiSetStyle(STATUSBAR, TEXT_PADDING, 8); - GuiSetStyle(STATUSBAR, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); - - // Initialize extended property values - // NOTE: By default, extended property values are initialized to 0 - GuiSetStyle(TOGGLE, GROUP_PADDING, 2); - GuiSetStyle(SLIDER, SLIDER_WIDTH, 16); - GuiSetStyle(SLIDER, SLIDER_PADDING, 1); - GuiSetStyle(PROGRESSBAR, PROGRESS_PADDING, 1); - GuiSetStyle(CHECKBOX, CHECK_PADDING, 1); - GuiSetStyle(COMBOBOX, COMBO_BUTTON_WIDTH, 32); - GuiSetStyle(COMBOBOX, COMBO_BUTTON_SPACING, 2); - GuiSetStyle(DROPDOWNBOX, ARROW_PADDING, 16); - GuiSetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING, 2); - GuiSetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH, 24); - GuiSetStyle(VALUEBOX, SPINNER_BUTTON_SPACING, 2); - GuiSetStyle(SCROLLBAR, BORDER_WIDTH, 0); - GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, 0); - GuiSetStyle(SCROLLBAR, ARROWS_SIZE, 6); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING, 0); - GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, 16); - GuiSetStyle(SCROLLBAR, SCROLL_PADDING, 0); - GuiSetStyle(SCROLLBAR, SCROLL_SPEED, 12); - GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, 28); - GuiSetStyle(LISTVIEW, LIST_ITEMS_SPACING, 2); - GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH, 1); - GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, 12); - GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_RIGHT_SIDE); - GuiSetStyle(COLORPICKER, COLOR_SELECTOR_SIZE, 8); - GuiSetStyle(COLORPICKER, HUEBAR_WIDTH, 16); - GuiSetStyle(COLORPICKER, HUEBAR_PADDING, 8); - GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT, 8); - GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW, 2); - - if (guiFont.texture.id != GetFontDefault().texture.id) - { - // Unload previous font texture - UnloadTexture(guiFont.texture); - RAYGUI_FREE(guiFont.recs); - RAYGUI_FREE(guiFont.glyphs); - guiFont.recs = NULL; - guiFont.glyphs = NULL; - - // Setup default raylib font - guiFont = GetFontDefault(); - - // NOTE: Default raylib font character 95 is a white square - Rectangle whiteChar = guiFont.recs[95]; - - // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering - SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); - } -} - -// Get text with icon id prepended -// NOTE: Useful to add icons by name id (enum) instead of -// a number that can change between ricon versions -const char *GuiIconText(int iconId, const char *text) -{ -#if defined(RAYGUI_NO_ICONS) - return NULL; -#else - static char buffer[1024] = { 0 }; - static char iconBuffer[16] = { 0 }; - - if (text != NULL) - { - memset(buffer, 0, 1024); - snprintf(buffer, 1024, "#%03i#", iconId); - - for (int i = 5; i < 1024; i++) - { - buffer[i] = text[i - 5]; - if (text[i - 5] == '\0') break; - } - - return buffer; - } - else - { - snprintf(iconBuffer, 16, "#%03i#", iconId); - - return iconBuffer; - } -#endif -} - -#if !defined(RAYGUI_NO_ICONS) -// Get full icons data pointer -unsigned int *GuiGetIcons(void) { return guiIconsPtr; } - -// Load raygui icons file (.rgi) -// NOTE: In case nameIds are required, they can be requested with loadIconsName, -// they are returned as a guiIconsName[iconCount][RAYGUI_ICON_MAX_NAME_LENGTH], -// WARNING: guiIconsName[]][] memory should be manually freed! -char **GuiLoadIcons(const char *fileName, bool loadIconsName) -{ - // Style File Structure (.rgi) - // ------------------------------------------------------ - // Offset | Size | Type | Description - // ------------------------------------------------------ - // 0 | 4 | char | Signature: "rGI " - // 4 | 2 | short | Version: 100 - // 6 | 2 | short | reserved - - // 8 | 2 | short | Num icons (N) - // 10 | 2 | short | Icons size (Options: 16, 32, 64) (S) - - // Icons name id (32 bytes per name id) - // foreach (icon) - // { - // 12+32*i | 32 | char | Icon NameId - // } - - // Icons data: One bit per pixel, stored as unsigned int array (depends on icon size) - // S*S pixels/32bit per unsigned int = K unsigned int per icon - // foreach (icon) - // { - // ... | K | unsigned int | Icon Data - // } - - FILE *rgiFile = fopen(fileName, "rb"); - - char **guiIconsName = NULL; - - if (rgiFile != NULL) - { - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - short iconCount = 0; - short iconSize = 0; - - fread(signature, 1, 4, rgiFile); - fread(&version, sizeof(short), 1, rgiFile); - fread(&reserved, sizeof(short), 1, rgiFile); - fread(&iconCount, sizeof(short), 1, rgiFile); - fread(&iconSize, sizeof(short), 1, rgiFile); - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'I') && - (signature[3] == ' ')) - { - if (loadIconsName) - { - guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); - for (int i = 0; i < iconCount; i++) - { - guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); - fread(guiIconsName[i], 1, RAYGUI_ICON_MAX_NAME_LENGTH, rgiFile); - } - } - else fseek(rgiFile, iconCount*RAYGUI_ICON_MAX_NAME_LENGTH, SEEK_CUR); - - // Read icons data directly over internal icons array - fread(guiIconsPtr, sizeof(unsigned int), (int)iconCount*((int)iconSize*(int)iconSize/32), rgiFile); - } - - fclose(rgiFile); - } - - return guiIconsName; -} - -// Load icons from memory -// WARNING: Binary files only -char **GuiLoadIconsFromMemory(const unsigned char *fileData, int dataSize, bool loadIconsName) -{ - unsigned char *fileDataPtr = (unsigned char *)fileData; - char **guiIconsName = NULL; - - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - short iconCount = 0; - short iconSize = 0; - - memcpy(signature, fileDataPtr, 4); - memcpy(&version, fileDataPtr + 4, sizeof(short)); - memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); - memcpy(&iconCount, fileDataPtr + 4 + 2 + 2, sizeof(short)); - memcpy(&iconSize, fileDataPtr + 4 + 2 + 2 + 2, sizeof(short)); - fileDataPtr += 12; - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'I') && - (signature[3] == ' ')) - { - if (loadIconsName) - { - guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); - for (int i = 0; i < iconCount; i++) - { - guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); - memcpy(guiIconsName[i], fileDataPtr, RAYGUI_ICON_MAX_NAME_LENGTH); - fileDataPtr += RAYGUI_ICON_MAX_NAME_LENGTH; - } - } - else - { - // Skip icon name data if not required - fileDataPtr += iconCount*RAYGUI_ICON_MAX_NAME_LENGTH; - } - - int iconDataSize = iconCount*((int)iconSize*(int)iconSize/32)*(int)sizeof(unsigned int); - guiIconsPtr = (unsigned int *)RAYGUI_CALLOC(iconDataSize, 1); - - memcpy(guiIconsPtr, fileDataPtr, iconDataSize); - } - - return guiIconsName; -} - -// Draw selected icon using rectangles pixel-by-pixel -void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color) -{ - #define BIT_CHECK(a,b) ((a) & (1u<<(b))) - - for (int i = 0, y = 0; i < RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32; i++) - { - for (int k = 0; k < 32; k++) - { - if (BIT_CHECK(guiIconsPtr[iconId*RAYGUI_ICON_DATA_ELEMENTS + i], k)) - { - #if !defined(RAYGUI_STANDALONE) - GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ (float)posX + (k%RAYGUI_ICON_SIZE)*pixelSize, (float)posY + y*pixelSize, (float)pixelSize, (float)pixelSize }, 0, BLANK, color); - #endif - } - - if ((k == 15) || (k == 31)) y++; - } - } -} - -// Set icon drawing size -void GuiSetIconScale(int scale) -{ - if (scale >= 1) guiIconScale = scale; -} - -// Get text width considering gui style and icon size (if required) -int GuiGetTextWidth(const char *text) -{ - #if !defined(ICON_TEXT_PADDING) - #define ICON_TEXT_PADDING 4 - #endif - - Vector2 textSize = { 0 }; - int textIconOffset = 0; - - if ((text != NULL) && (text[0] != '\0')) - { - if (text[0] == '#') - { - for (int i = 1; (i < 5) && (text[i] != '\0'); i++) - { - if (text[i] == '#') - { - textIconOffset = i; - break; - } - } - } - - text += textIconOffset; - - // Make sure guiFont is set, GuiGetStyle() initializes it lazynessly - float fontSize = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); - - // Custom MeasureText() implementation - if ((guiFont.texture.id > 0) && (text != NULL)) - { - // Get size in bytes of text, considering end of line and line break - int size = 0; - for (int i = 0; i < MAX_LINE_BUFFER_SIZE; i++) - { - if ((text[i] != '\0') && (text[i] != '\n')) size++; - else break; - } - - float scaleFactor = fontSize/(float)guiFont.baseSize; - textSize.y = (float)guiFont.baseSize*scaleFactor; - float glyphWidth = 0.0f; - - for (int i = 0, codepointSize = 0; i < size; i += codepointSize) - { - int codepoint = GetCodepointNext(&text[i], &codepointSize); - int codepointIndex = GetGlyphIndex(guiFont, codepoint); - - if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); - else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); - - textSize.x += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - } - - if (textIconOffset > 0) textSize.x += (RAYGUI_ICON_SIZE + ICON_TEXT_PADDING); - } - - return (int)textSize.x; -} - -#endif // !RAYGUI_NO_ICONS - -//---------------------------------------------------------------------------------- -// Module Internal Functions Definition -//---------------------------------------------------------------------------------- -// Load style from memory -// WARNING: Binary files only -static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize) -{ - unsigned char *fileDataPtr = (unsigned char *)fileData; - - char signature[5] = { 0 }; - short version = 0; - short reserved = 0; - int propertyCount = 0; - - memcpy(signature, fileDataPtr, 4); - memcpy(&version, fileDataPtr + 4, sizeof(short)); - memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); - memcpy(&propertyCount, fileDataPtr + 4 + 2 + 2, sizeof(int)); - fileDataPtr += 12; - - if ((signature[0] == 'r') && - (signature[1] == 'G') && - (signature[2] == 'S') && - (signature[3] == ' ')) - { - short controlId = 0; - short propertyId = 0; - unsigned int propertyValue = 0; - - for (int i = 0; i < propertyCount; i++) - { - memcpy(&controlId, fileDataPtr, sizeof(short)); - memcpy(&propertyId, fileDataPtr + 2, sizeof(short)); - memcpy(&propertyValue, fileDataPtr + 2 + 2, sizeof(unsigned int)); - fileDataPtr += 8; - - if (controlId == 0) // DEFAULT control - { - // If a DEFAULT property is loaded, it is propagated to all controls - // NOTE: All DEFAULT properties should be defined first in the file - GuiSetStyle(0, (int)propertyId, propertyValue); - - if (propertyId < RAYGUI_MAX_PROPS_BASE) for (int j = 1; j < RAYGUI_MAX_CONTROLS; j++) GuiSetStyle(j, (int)propertyId, propertyValue); - } - else GuiSetStyle((int)controlId, (int)propertyId, propertyValue); - } - - // Font loading is highly dependant on raylib API to load font data and image - -#if !defined(RAYGUI_STANDALONE) - // Load custom font if available - int fontDataSize = 0; - memcpy(&fontDataSize, fileDataPtr, sizeof(int)); - fileDataPtr += 4; - - if (fontDataSize > 0) - { - Font font = { 0 }; - int fontType = 0; // 0-Normal, 1-SDF - - memcpy(&font.baseSize, fileDataPtr, sizeof(int)); - memcpy(&font.glyphCount, fileDataPtr + 4, sizeof(int)); - memcpy(&fontType, fileDataPtr + 4 + 4, sizeof(int)); - fileDataPtr += 12; - - // Load font white rectangle - Rectangle fontWhiteRec = { 0 }; - memcpy(&fontWhiteRec, fileDataPtr, sizeof(Rectangle)); - fileDataPtr += 16; - - // Load font image parameters - int fontImageUncompSize = 0; - int fontImageCompSize = 0; - memcpy(&fontImageUncompSize, fileDataPtr, sizeof(int)); - memcpy(&fontImageCompSize, fileDataPtr + 4, sizeof(int)); - fileDataPtr += 8; - - Image imFont = { 0 }; - imFont.mipmaps = 1; - memcpy(&imFont.width, fileDataPtr, sizeof(int)); - memcpy(&imFont.height, fileDataPtr + 4, sizeof(int)); - memcpy(&imFont.format, fileDataPtr + 4 + 4, sizeof(int)); - fileDataPtr += 12; - - if ((fontImageCompSize > 0) && (fontImageCompSize != fontImageUncompSize)) - { - // Compressed font atlas image data (DEFLATE), it requires DecompressData() - int dataUncompSize = 0; - unsigned char *compData = (unsigned char *)RAYGUI_CALLOC(fontImageCompSize, sizeof(unsigned char)); - memcpy(compData, fileDataPtr, fontImageCompSize); - fileDataPtr += fontImageCompSize; - - imFont.data = DecompressData(compData, fontImageCompSize, &dataUncompSize); - - // Security check, dataUncompSize must match the provided fontImageUncompSize - if (dataUncompSize != fontImageUncompSize) RAYGUI_LOG("WARNING: Uncompressed font atlas image data could be corrupted"); - - RAYGUI_FREE(compData); - } - else - { - // Font atlas image data is not compressed - imFont.data = (unsigned char *)RAYGUI_CALLOC(fontImageUncompSize, sizeof(unsigned char)); - memcpy(imFont.data, fileDataPtr, fontImageUncompSize); - fileDataPtr += fontImageUncompSize; - } - - if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); - font.texture = LoadTextureFromImage(imFont); - - RAYGUI_FREE(imFont.data); - - // Validate font atlas texture was loaded correctly - if (font.texture.id != 0) - { - // Load font recs data - int recsDataSize = font.glyphCount*sizeof(Rectangle); - int recsDataCompressedSize = 0; - - // WARNING: Version 400 adds the compression size parameter - if (version >= 400) - { - // RGS files version 400 support compressed recs data - memcpy(&recsDataCompressedSize, fileDataPtr, sizeof(int)); - fileDataPtr += sizeof(int); - } - - if ((recsDataCompressedSize > 0) && (recsDataCompressedSize != recsDataSize)) - { - // Recs data is compressed, uncompress it - unsigned char *recsDataCompressed = (unsigned char *)RAYGUI_CALLOC(recsDataCompressedSize, sizeof(unsigned char)); - - memcpy(recsDataCompressed, fileDataPtr, recsDataCompressedSize); - fileDataPtr += recsDataCompressedSize; - - int recsDataUncompSize = 0; - font.recs = (Rectangle *)DecompressData(recsDataCompressed, recsDataCompressedSize, &recsDataUncompSize); - - // Security check, data uncompressed size must match the expected original data size - if (recsDataUncompSize != recsDataSize) RAYGUI_LOG("WARNING: Uncompressed font recs data could be corrupted"); - - RAYGUI_FREE(recsDataCompressed); - } - else - { - // Recs data is uncompressed - font.recs = (Rectangle *)RAYGUI_CALLOC(font.glyphCount, sizeof(Rectangle)); - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.recs[i], fileDataPtr, sizeof(Rectangle)); - fileDataPtr += sizeof(Rectangle); - } - } - - // Load font glyphs info data - int glyphsDataSize = font.glyphCount*16; // 16 bytes data per glyph - int glyphsDataCompressedSize = 0; - - // WARNING: Version 400 adds the compression size parameter - if (version >= 400) - { - // RGS files version 400 support compressed glyphs data - memcpy(&glyphsDataCompressedSize, fileDataPtr, sizeof(int)); - fileDataPtr += sizeof(int); - } - - // Allocate required glyphs space to fill with data - font.glyphs = (GlyphInfo *)RAYGUI_CALLOC(font.glyphCount, sizeof(GlyphInfo)); - - if ((glyphsDataCompressedSize > 0) && (glyphsDataCompressedSize != glyphsDataSize)) - { - // Glyphs data is compressed, uncompress it - unsigned char *glypsDataCompressed = (unsigned char *)RAYGUI_CALLOC(glyphsDataCompressedSize, sizeof(unsigned char)); - - memcpy(glypsDataCompressed, fileDataPtr, glyphsDataCompressedSize); - fileDataPtr += glyphsDataCompressedSize; - - int glyphsDataUncompSize = 0; - unsigned char *glyphsDataUncomp = DecompressData(glypsDataCompressed, glyphsDataCompressedSize, &glyphsDataUncompSize); - - // Security check, data uncompressed size must match the expected original data size - if (glyphsDataUncompSize != glyphsDataSize) RAYGUI_LOG("WARNING: Uncompressed font glyphs data could be corrupted"); - - unsigned char *glyphsDataUncompPtr = glyphsDataUncomp; - - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.glyphs[i].value, glyphsDataUncompPtr, sizeof(int)); - memcpy(&font.glyphs[i].offsetX, glyphsDataUncompPtr + 4, sizeof(int)); - memcpy(&font.glyphs[i].offsetY, glyphsDataUncompPtr + 8, sizeof(int)); - memcpy(&font.glyphs[i].advanceX, glyphsDataUncompPtr + 12, sizeof(int)); - glyphsDataUncompPtr += 16; - } - - RAYGUI_FREE(glypsDataCompressed); - RAYGUI_FREE(glyphsDataUncomp); - } - else - { - // Glyphs data is uncompressed - for (int i = 0; i < font.glyphCount; i++) - { - memcpy(&font.glyphs[i].value, fileDataPtr, sizeof(int)); - memcpy(&font.glyphs[i].offsetX, fileDataPtr + 4, sizeof(int)); - memcpy(&font.glyphs[i].offsetY, fileDataPtr + 8, sizeof(int)); - memcpy(&font.glyphs[i].advanceX, fileDataPtr + 12, sizeof(int)); - fileDataPtr += 16; - } - } - } - else font = GetFontDefault(); // Fallback in case of errors loading font atlas texture - - GuiSetFont(font); - - // Set font texture source rectangle to be used as white texture to draw shapes - // NOTE: It makes possible to draw shapes and text (full UI) in a single draw call - if ((fontWhiteRec.x > 0) && - (fontWhiteRec.y > 0) && - (fontWhiteRec.width > 0) && - (fontWhiteRec.height > 0)) SetShapesTexture(font.texture, fontWhiteRec); - } -#endif - } -} - -// Get text bounds considering control bounds -static Rectangle GetTextBounds(int control, Rectangle bounds) -{ - Rectangle textBounds = bounds; - - textBounds.x = bounds.x + GuiGetStyle(control, BORDER_WIDTH); - textBounds.y = bounds.y + GuiGetStyle(control, BORDER_WIDTH) + GuiGetStyle(control, TEXT_PADDING); - textBounds.width = bounds.width - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); - textBounds.height = bounds.height - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); // NOTE: Text is processed line per line! - - // Depending on control, TEXT_PADDING and TEXT_ALIGNMENT properties could affect the text-bounds - switch (control) - { - case COMBOBOX: - case DROPDOWNBOX: - case LISTVIEW: - // TODO: Special cases (no label): COMBOBOX, DROPDOWNBOX, LISTVIEW - case SLIDER: - case CHECKBOX: - case VALUEBOX: - case CONTROL11: - // TODO: More special cases (label on side): SLIDER, CHECKBOX, VALUEBOX, SPINNER - default: - { - // TODO: WARNING: TEXT_ALIGNMENT is already considered in GuiDrawText() - if (GuiGetStyle(control, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT) textBounds.x -= GuiGetStyle(control, TEXT_PADDING); - else textBounds.x += GuiGetStyle(control, TEXT_PADDING); - } - break; - } - - return textBounds; -} - -// Get text icon if provided and move text cursor -// NOTE: Up to #999# values supported for iconId -static const char *GetTextIcon(const char *text, int *iconId) -{ -#if !defined(RAYGUI_NO_ICONS) - *iconId = -1; - if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found - { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' - - int pos = 1; - while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) - { - iconValue[pos - 1] = text[pos]; - pos++; - } - - if (text[pos] == '#') - { - *iconId = TextToInteger(iconValue); - - // Move text pointer after icon - // WARNING: If only icon provided, it could point to EOL character: '\0' - if (*iconId >= 0) text += (pos + 1); - } - } -#endif - - return text; -} - -// Get text divided into lines (by line-breaks '\n') -// WARNING: It returns pointers to new lines but it does not add NULL ('\0') terminator! -static const char **GetTextLines(const char *text, int *count) -{ - #define RAYGUI_MAX_TEXT_LINES 128 - - static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; - for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - - int textLength = (int)strlen(text); - - lines[0] = text; - *count = 1; - - for (int i = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) - { - if ((text[i] == '\n') && ((i + 1) < textLength)) - { - lines[*count] = &text[i + 1]; - *count += 1; - } - } - - return lines; -} - -// Get text width to next space for provided string -static float GetNextSpaceWidth(const char *text, int *nextSpaceIndex) -{ - float width = 0; - int codepointByteCount = 0; - int codepoint = 0; - int index = 0; - float glyphWidth = 0; - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; - - for (int i = 0; text[i] != '\0'; i++) - { - if (text[i] != ' ') - { - codepoint = GetCodepoint(&text[i], &codepointByteCount); - index = GetGlyphIndex(guiFont, codepoint); - glyphWidth = (guiFont.glyphs[index].advanceX == 0)? guiFont.recs[index].width*scaleFactor : guiFont.glyphs[index].advanceX*scaleFactor; - width += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - else - { - *nextSpaceIndex = i; - break; - } - } - - return width; -} - -// Gui draw text using default font -static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint) -{ - #define TEXT_VALIGN_PIXEL_OFFSET(h) ((int)h%2) // Vertical alignment for pixel perfect - - #if !defined(ICON_TEXT_PADDING) - #define ICON_TEXT_PADDING 4 - #endif - - if ((text == NULL) || (text[0] == '\0')) return; // Security check - - // PROCEDURE: - // - Text is processed line per line - // - For every line, horizontal alignment is defined - // - For all text, vertical alignment is defined (multiline text only) - // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) - - // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: GuiTextSplit() function can't be used now because it can have already been used - // before the GuiDrawText() call and its buffer is static, it would be overriden :( - int lineCount = 0; - const char **lines = GetTextLines(text, &lineCount); - - // Text style variables - //int alignment = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT); - int alignmentVertical = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL); - int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing - - // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - float posOffsetY = 0.0f; - - for (int i = 0; i < lineCount; i++) - { - int iconId = 0; - lines[i] = GetTextIcon(lines[i], &iconId); // Check text for icon and move cursor - - // Get text position depending on alignment and iconId - //--------------------------------------------------------------------------------- - Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; - float textBoundsWidthOffset = 0.0f; - - // NOTE: Get text size after icon has been processed - // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? - int textSizeX = GuiGetTextWidth(lines[i]); - - // If text requires an icon, add size to measure - if (iconId >= 0) - { - textSizeX += RAYGUI_ICON_SIZE*guiIconScale; - - // WARNING: If only icon provided, text could be pointing to EOF character: '\0' -#if !defined(RAYGUI_NO_ICONS) - if ((lines[i] != NULL) && (lines[i][0] != '\0')) textSizeX += ICON_TEXT_PADDING; -#endif - } - - // Check guiTextAlign global variables - switch (alignment) - { - case TEXT_ALIGN_LEFT: textBoundsPosition.x = textBounds.x; break; - case TEXT_ALIGN_CENTER: textBoundsPosition.x = textBounds.x + textBounds.width/2 - textSizeX/2; break; - case TEXT_ALIGN_RIGHT: textBoundsPosition.x = textBounds.x + textBounds.width - textSizeX; break; - default: break; - } - - if (textSizeX > textBounds.width && (lines[i] != NULL) && (lines[i][0] != '\0')) textBoundsPosition.x = textBounds.x; - - switch (alignmentVertical) - { - // Only valid in case of wordWrap = 0; - case TEXT_ALIGN_TOP: textBoundsPosition.y = textBounds.y + posOffsetY; break; - case TEXT_ALIGN_MIDDLE: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height/2 - totalHeight/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; - case TEXT_ALIGN_BOTTOM: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height - totalHeight + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; - default: break; - } - - // NOTE: Make sure getting pixel-perfect coordinates, - // In case of decimals, it could result in text positioning artifacts - textBoundsPosition.x = (float)((int)textBoundsPosition.x); - textBoundsPosition.y = (float)((int)textBoundsPosition.y); - //--------------------------------------------------------------------------------- - - // Draw text (with icon if available) - //--------------------------------------------------------------------------------- -#if !defined(RAYGUI_NO_ICONS) - if (iconId >= 0) - { - // NOTE: Considering icon height, probably different than text size - GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); - textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); - textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); - } -#endif - // Get size in bytes of text, - // considering end of line and line break - int lineSize = 0; - for (int c = 0; (lines[i][c] != '\0') && (lines[i][c] != '\n') && (lines[i][c] != '\r'); c++, lineSize++){ } - float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; - - int lastSpaceIndex = 0; - bool tempWrapCharMode = false; - - int textOffsetY = 0; - float textOffsetX = 0.0f; - float glyphWidth = 0; - - int ellipsisWidth = GuiGetTextWidth("..."); - bool textOverflow = false; - for (int c = 0, codepointSize = 0; c < lineSize; c += codepointSize) - { - int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); - int index = GetGlyphIndex(guiFont, codepoint); - - // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte - if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size - - // Get glyph width to check if it goes out of bounds - if (guiFont.glyphs[index].advanceX == 0) glyphWidth = ((float)guiFont.recs[index].width*scaleFactor); - else glyphWidth = (float)guiFont.glyphs[index].advanceX*scaleFactor; - - // Wrap mode text measuring, to validate if - // it can be drawn or a new line is required - if (wrapMode == TEXT_WRAP_CHAR) - { - // Jump to next line if current character reach end of the box limits - if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) - { - textOffsetX = 0.0f; - textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - - if (tempWrapCharMode) // Wrap at char level when too long words - { - wrapMode = TEXT_WRAP_WORD; - tempWrapCharMode = false; - } - } - } - else if (wrapMode == TEXT_WRAP_WORD) - { - if (codepoint == 32) lastSpaceIndex = c; - - // Get width to next space in line - int nextSpaceIndex = 0; - float nextSpaceWidth = GetNextSpaceWidth(lines[i] + c, &nextSpaceIndex); - - int nextSpaceIndex2 = 0; - float nextWordSize = GetNextSpaceWidth(lines[i] + lastSpaceIndex + 1, &nextSpaceIndex2); - - if (nextWordSize > textBounds.width - textBoundsWidthOffset) - { - // Considering the case the next word is longer than bounds - tempWrapCharMode = true; - wrapMode = TEXT_WRAP_CHAR; - } - else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) - { - textOffsetX = 0.0f; - textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - } - } - - if (codepoint == '\n') break; // WARNING: Lines are already processed manually, no need to keep drawing after this codepoint - else - { - // TODO: There are multiple types of spaces in Unicode, - // maybe it's a good idea to add support for more: http://jkorpela.fi/chars/spaces.html - if ((codepoint != ' ') && (codepoint != '\t')) // Do not draw codepoints with no glyph - { - if (wrapMode == TEXT_WRAP_NONE) - { - // Draw only required text glyphs fitting the textBounds.width - if (textSizeX > textBounds.width) - { - if (textOffsetX <= (textBounds.width - glyphWidth - textBoundsWidthOffset - ellipsisWidth)) - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - else if (!textOverflow) - { - textOverflow = true; - - for (int j = 0; j < ellipsisWidth; j += ellipsisWidth/3) - { - DrawTextCodepoint(guiFont, '.', RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX + j, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - } - else - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) - { - // Draw only glyphs inside the bounds - if ((textBoundsPosition.y + textOffsetY) <= (textBounds.y + textBounds.height - GuiGetStyle(DEFAULT, TEXT_SIZE))) - { - DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); - } - } - } - - if (guiFont.glyphs[index].advanceX == 0) textOffsetX += ((float)guiFont.recs[index].width*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - else textOffsetX += ((float)guiFont.glyphs[index].advanceX*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - } - } - - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); - //--------------------------------------------------------------------------------- - } - -#if defined(RAYGUI_DEBUG_TEXT_BOUNDS) - GuiDrawRectangle(textBounds, 0, WHITE, Fade(BLUE, 0.4f)); -#endif -} - -// Gui draw rectangle using default raygui plain style with borders -static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color) -{ - if (color.a > 0) - { - // Draw rectangle filled with color - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, GuiFade(color, guiAlpha)); - } - - if (borderWidth > 0) - { - // Draw rectangle border lines with color - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x + (int)rec.width - borderWidth, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); - DrawRectangle((int)rec.x, (int)rec.y + (int)rec.height - borderWidth, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); - } - -#if defined(RAYGUI_DEBUG_RECS_BOUNDS) - DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, Fade(RED, 0.4f)); -#endif -} - -// Draw tooltip using control bounds -static void GuiTooltip(Rectangle controlRec) -{ - if (!guiLocked && guiTooltip && (guiTooltipPtr != NULL) && !guiControlExclusiveMode) - { - Vector2 textSize = MeasureTextEx(GuiGetFont(), guiTooltipPtr, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); - - if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - - int lineCount = 0; - GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count - if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) - controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); - - // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); - - int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); - int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); - GuiSetStyle(LABEL, TEXT_PADDING, 0); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); - GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); - GuiSetStyle(LABEL, TEXT_PADDING, textPadding); - } -} - -// Split controls text into multiple strings -// Also check for multiple columns (required by GuiToggleGroup()) -static char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow) -{ - // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) - // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, - // all used memory is static... it has some limitations: - // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS - // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE - // NOTE: Those definitions could be externally provided if required - - // TODO: HACK: GuiTextSplit() - Review how textRows are returned to user - // textRow is an externally provided array of integers that stores row number for every splitted string - - #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) - #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 - #endif - #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) - #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 - #endif - - static char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; // String pointers array (points to buffer data) - static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; // Buffer data (text input copy with '\0' added) - memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); - - result[0] = buffer; - int counter = 1; - - if (textRow != NULL) textRow[0] = 0; - - // Count how many substrings text contains and point to every one of them - for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) - { - buffer[i] = text[i]; - if (buffer[i] == '\0') break; - else if ((buffer[i] == delimiter) || (buffer[i] == '\n')) - { - result[counter] = buffer + i + 1; - - if (textRow != NULL) - { - if (buffer[i] == '\n') textRow[counter] = textRow[counter - 1] + 1; - else textRow[counter] = textRow[counter - 1]; - } - - buffer[i] = '\0'; // Set an end of string at this point - - counter++; - if (counter >= RAYGUI_TEXTSPLIT_MAX_ITEMS) break; - } - } - - *count = counter; - - return result; -} - -// Convert color data from RGB to HSV -// NOTE: Color data should be passed normalized -static Vector3 ConvertRGBtoHSV(Vector3 rgb) -{ - Vector3 hsv = { 0 }; - float min = 0.0f; - float max = 0.0f; - float delta = 0.0f; - - min = (rgb.x < rgb.y)? rgb.x : rgb.y; - min = (min < rgb.z)? min : rgb.z; - - max = (rgb.x > rgb.y)? rgb.x : rgb.y; - max = (max > rgb.z)? max : rgb.z; - - hsv.z = max; // Value - delta = max - min; - - if (delta < 0.00001f) - { - hsv.y = 0.0f; - hsv.x = 0.0f; // Undefined, maybe NAN? - return hsv; - } - - if (max > 0.0f) - { - // NOTE: If max is 0, this divide would cause a crash - hsv.y = (delta/max); // Saturation - } - else - { - // NOTE: If max is 0, then r = g = b = 0, s = 0, h is undefined - hsv.y = 0.0f; - hsv.x = 0.0f; // Undefined, maybe NAN? - return hsv; - } - - // NOTE: Comparing float values could not work properly - if (rgb.x >= max) hsv.x = (rgb.y - rgb.z)/delta; // Between yellow & magenta - else - { - if (rgb.y >= max) hsv.x = 2.0f + (rgb.z - rgb.x)/delta; // Between cyan & yellow - else hsv.x = 4.0f + (rgb.x - rgb.y)/delta; // Between magenta & cyan - } - - hsv.x *= 60.0f; // Convert to degrees - - if (hsv.x < 0.0f) hsv.x += 360.0f; - - return hsv; -} - -// Convert color data from HSV to RGB -// NOTE: Color data should be passed normalized -static Vector3 ConvertHSVtoRGB(Vector3 hsv) -{ - Vector3 rgb = { 0 }; - float hh = 0.0f, p = 0.0f, q = 0.0f, t = 0.0f, ff = 0.0f; - long i = 0; - - // NOTE: Comparing float values could not work properly - if (hsv.y <= 0.0f) - { - rgb.x = hsv.z; - rgb.y = hsv.z; - rgb.z = hsv.z; - return rgb; - } - - hh = hsv.x; - if (hh >= 360.0f) hh = 0.0f; - hh /= 60.0f; - - i = (long)hh; - ff = hh - i; - p = hsv.z*(1.0f - hsv.y); - q = hsv.z*(1.0f - (hsv.y*ff)); - t = hsv.z*(1.0f - (hsv.y*(1.0f - ff))); - - switch (i) - { - case 0: - { - rgb.x = hsv.z; - rgb.y = t; - rgb.z = p; - } break; - case 1: - { - rgb.x = q; - rgb.y = hsv.z; - rgb.z = p; - } break; - case 2: - { - rgb.x = p; - rgb.y = hsv.z; - rgb.z = t; - } break; - case 3: - { - rgb.x = p; - rgb.y = q; - rgb.z = hsv.z; - } break; - case 4: - { - rgb.x = t; - rgb.y = p; - rgb.z = hsv.z; - } break; - case 5: - default: - { - rgb.x = hsv.z; - rgb.y = p; - rgb.z = q; - } break; - } - - return rgb; -} - -// Scroll bar control (used by GuiScrollPanel()) -static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) -{ - GuiState state = guiState; - - // Is the scrollbar horizontal or vertical? - bool isVertical = (bounds.width > bounds.height)? false : true; - - // The size (width or height depending on scrollbar type) of the spinner buttons - const int spinnerSize = GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)? - (isVertical? (int)bounds.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) : - (int)bounds.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH)) : 0; - - // Arrow buttons [<] [>] [∧] [∨] - Rectangle arrowUpLeft = { 0 }; - Rectangle arrowDownRight = { 0 }; - - // Actual area of the scrollbar excluding the arrow buttons - Rectangle scrollbar = { 0 }; - - // Slider bar that moves --[///]----- - Rectangle slider = { 0 }; - - // Normalize value - if (value > maxValue) value = maxValue; - if (value < minValue) value = minValue; - - int valueRange = maxValue - minValue; - if (valueRange <= 0) valueRange = 1; - - int sliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); - if (sliderSize < 1) sliderSize = 1; // TODO: Consider a minimum slider size - - // Calculate rectangles for all of the components - arrowUpLeft = RAYGUI_CLITERAL(Rectangle){ - (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), - (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), - (float)spinnerSize, (float)spinnerSize }; - - if (isVertical) - { - arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + bounds.height - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; - scrollbar = RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), arrowUpLeft.y + arrowUpLeft.height, bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)), bounds.height - arrowUpLeft.height - arrowDownRight.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) }; - - // Make sure the slider won't get outside of the scrollbar - sliderSize = (sliderSize >= scrollbar.height)? ((int)scrollbar.height - 2) : sliderSize; - slider = RAYGUI_CLITERAL(Rectangle){ - bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), - scrollbar.y + (int)(((float)(value - minValue)/valueRange)*(scrollbar.height - sliderSize)), - bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)), - (float)sliderSize }; - } - else // horizontal - { - arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + bounds.width - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; - scrollbar = RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x + arrowUpLeft.width, bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), bounds.width - arrowUpLeft.width - arrowDownRight.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH), bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)) }; - - // Make sure the slider won't get outside of the scrollbar - sliderSize = (sliderSize >= scrollbar.width)? ((int)scrollbar.width - 2) : sliderSize; - slider = RAYGUI_CLITERAL(Rectangle){ - scrollbar.x + (int)(((float)(value - minValue)/valueRange)*(scrollbar.width - sliderSize)), - bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), - (float)sliderSize, - bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)) }; - } - - // Update control - //-------------------------------------------------------------------- - if ((state != STATE_DISABLED) && !guiLocked) - { - Vector2 mousePoint = GUI_POINTER_POSITION; - - if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds - { - if (GUI_BUTTON_DOWN && - !CheckCollisionPointRec(mousePoint, arrowUpLeft) && - !CheckCollisionPointRec(mousePoint, arrowDownRight)) - { - if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) - { - state = STATE_PRESSED; - - if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); - else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); - } - } - else - { - guiControlExclusiveMode = false; - guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; - } - } - else if (CheckCollisionPointRec(mousePoint, bounds)) - { - state = STATE_FOCUSED; - - // Handle mouse wheel - float scrollDelta = GUI_SCROLL_DELTA; - if (scrollDelta != 0) value += (int)scrollDelta; - - // Handle mouse button down - if (GUI_BUTTON_PRESSED) - { - guiControlExclusiveMode = true; - guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts - - // Check arrows click - if (CheckCollisionPointRec(mousePoint, arrowUpLeft)) value -= valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - else if (CheckCollisionPointRec(mousePoint, arrowDownRight)) value += valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - else if (!CheckCollisionPointRec(mousePoint, slider)) - { - // If click on scrollbar position but not on slider, place slider directly on that position - if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); - else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); - } - - state = STATE_PRESSED; - } - - // Keyboard control on mouse hover scrollbar - /* - if (isVertical) - { - if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; - else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; - } - else - { - if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; - else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; - } - */ - } - - // Normalize value - if (value > maxValue) value = maxValue; - if (value < minValue) value = minValue; - } - //-------------------------------------------------------------------- - - // Draw control - //-------------------------------------------------------------------- - GuiDrawRectangle(bounds, GuiGetStyle(SCROLLBAR, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED))); // Draw the background - - GuiDrawRectangle(scrollbar, 0, BLANK, GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL))); // Draw the scrollbar active area background - GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BORDER + state*3))); // Draw the slider bar - - // Draw arrows (using icon if available) - if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)) - { -#if defined(RAYGUI_NO_ICONS) - GuiDrawText(isVertical? "^" : "<", - RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); - GuiDrawText(isVertical? "v" : ">", - RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); -#else - GuiDrawText(isVertical? "#121#" : "#118#", - RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_UP_FILL / ICON_ARROW_LEFT_FILL - GuiDrawText(isVertical? "#120#" : "#119#", - RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, - TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_DOWN_FILL / ICON_ARROW_RIGHT_FILL -#endif - } - //-------------------------------------------------------------------- - - return value; -} - -// Color fade-in or fade-out, alpha goes from 0.0f to 1.0f -// WARNING: It multiplies current alpha by alpha scale factor -static Color GuiFade(Color color, float alpha) -{ - if (alpha < 0.0f) alpha = 0.0f; - else if (alpha > 1.0f) alpha = 1.0f; - - Color result = { color.r, color.g, color.b, (unsigned char)(color.a*alpha) }; - - return result; -} - -#if defined(RAYGUI_STANDALONE) -// Returns a Color struct from hexadecimal value -static Color GetColor(int hexValue) -{ - Color color; - - color.r = (unsigned char)(hexValue >> 24) & 0xff; - color.g = (unsigned char)(hexValue >> 16) & 0xff; - color.b = (unsigned char)(hexValue >> 8) & 0xff; - color.a = (unsigned char)hexValue & 0xff; - - return color; -} - -// Returns hexadecimal value for a Color -static int ColorToInt(Color color) -{ - return (((int)color.r << 24) | ((int)color.g << 16) | ((int)color.b << 8) | (int)color.a); -} - -// Check if point is inside rectangle -static bool CheckCollisionPointRec(Vector2 point, Rectangle rec) -{ - bool collision = false; - - if ((point.x >= rec.x) && (point.x <= (rec.x + rec.width)) && - (point.y >= rec.y) && (point.y <= (rec.y + rec.height))) collision = true; - - return collision; -} - -// Formatting of text with variables to 'embed' -static const char *TextFormat(const char *text, ...) -{ - #if !defined(RAYGUI_TEXTFORMAT_MAX_SIZE) - #define RAYGUI_TEXTFORMAT_MAX_SIZE 256 - #endif - - static char buffer[RAYGUI_TEXTFORMAT_MAX_SIZE]; - - va_list args; - va_start(args, text); - vsnprintf(buffer, RAYGUI_TEXTFORMAT_MAX_SIZE, text, args); - va_end(args); - - return buffer; -} - -// Draw rectangle with vertical gradient fill color -// NOTE: This function is only used by GuiColorPicker() -static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2) -{ - Rectangle bounds = { (float)posX, (float)posY, (float)width, (float)height }; - DrawRectangleGradientEx(bounds, color1, color2, color2, color1); -} - -// Split string into multiple strings -char **TextSplit(const char *text, char delimiter, int *count) -{ - // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) - // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, - // all used memory is static... it has some limitations: - // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS - // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE - - #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) - #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 - #endif - #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) - #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 - #endif - - static const char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; - static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; - memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); - - result[0] = buffer; - int counter = 0; - - if (text != NULL) - { - counter = 1; - - // Count how many substrings text contains and point to every one of them - for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) - { - buffer[i] = text[i]; - if (buffer[i] == '\0') break; - else if (buffer[i] == delimiter) - { - buffer[i] = '\0'; // Set an end of string at this point - result[counter] = buffer + i + 1; - counter++; - - if (counter == RAYGUI_TEXTSPLIT_MAX_ITEMS) break; - } - } - } - - *count = counter; - return result; -} - -// Get integer value from text -// NOTE: This function replaces atoi() [stdlib.h] -static int TextToInteger(const char *text) -{ - int value = 0; - int sign = 1; - - if ((text[0] == '+') || (text[0] == '-')) - { - if (text[0] == '-') sign = -1; - text++; - } - - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); - - return value*sign; -} - -// Get float value from text -// NOTE: This function replaces atof() [stdlib.h] -// WARNING: Only '.' character is understood as decimal point -static float TextToFloat(const char *text) -{ - float value = 0.0f; - float sign = 1.0f; - - if ((text[0] == '+') || (text[0] == '-')) - { - if (text[0] == '-') sign = -1.0f; - text++; - } - - int i = 0; - for (; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10.0f + (float)(text[i] - '0'); - - if (text[i++] != '.') value *= sign; - else - { - float divisor = 10.0f; - for (; ((text[i] >= '0') && (text[i] <= '9')); i++) - { - value += ((float)(text[i] - '0'))/divisor; - divisor = divisor*10.0f; - } - } - - return value; -} - -// Encode codepoint into UTF-8 text (char array size returned as parameter) -static const char *CodepointToUTF8(int codepoint, int *byteSize) -{ - static char utf8[6] = { 0 }; - int size = 0; - - if (codepoint <= 0x7f) - { - utf8[0] = (char)codepoint; - size = 1; - } - else if (codepoint <= 0x7ff) - { - utf8[0] = (char)(((codepoint >> 6) & 0x1f) | 0xc0); - utf8[1] = (char)((codepoint & 0x3f) | 0x80); - size = 2; - } - else if (codepoint <= 0xffff) - { - utf8[0] = (char)(((codepoint >> 12) & 0x0f) | 0xe0); - utf8[1] = (char)(((codepoint >> 6) & 0x3f) | 0x80); - utf8[2] = (char)((codepoint & 0x3f) | 0x80); - size = 3; - } - else if (codepoint <= 0x10ffff) - { - utf8[0] = (char)(((codepoint >> 18) & 0x07) | 0xf0); - utf8[1] = (char)(((codepoint >> 12) & 0x3f) | 0x80); - utf8[2] = (char)(((codepoint >> 6) & 0x3f) | 0x80); - utf8[3] = (char)((codepoint & 0x3f) | 0x80); - size = 4; - } - - *byteSize = size; - - return utf8; -} - -// Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint -// Total number of bytes processed are returned as a parameter -// NOTE: The standard says U+FFFD should be returned in case of errors -// but that character is not supported by the default font in raylib -static int GetCodepointNext(const char *text, int *codepointSize) -{ - const char *ptr = text; - int codepoint = 0x3f; // Codepoint (defaults to '?') - *codepointSize = 1; - - // Get current codepoint and bytes processed - if (0xf0 == (0xf8 & ptr[0])) - { - // 4 byte UTF-8 codepoint - if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80) || ((ptr[3] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks - codepoint = ((0x07 & ptr[0]) << 18) | ((0x3f & ptr[1]) << 12) | ((0x3f & ptr[2]) << 6) | (0x3f & ptr[3]); - *codepointSize = 4; - } - else if (0xe0 == (0xf0 & ptr[0])) - { - // 3 byte UTF-8 codepoint - if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks - codepoint = ((0x0f & ptr[0]) << 12) | ((0x3f & ptr[1]) << 6) | (0x3f & ptr[2]); - *codepointSize = 3; - } - else if (0xc0 == (0xe0 & ptr[0])) - { - // 2 byte UTF-8 codepoint - if ((ptr[1] & 0xC0) ^ 0x80) { return codepoint; } //10xxxxxx checks - codepoint = ((0x1f & ptr[0]) << 6) | (0x3f & ptr[1]); - *codepointSize = 2; - } - else if (0x00 == (0x80 & ptr[0])) - { - // 1 byte UTF-8 codepoint - codepoint = ptr[0]; - *codepointSize = 1; - } - - return codepoint; -} -#endif // RAYGUI_STANDALONE - -#endif // RAYGUI_IMPLEMENTATION diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/LICENSE.md b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/LICENSE.md deleted file mode 100644 index 1feb770..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/LICENSE.md +++ /dev/null @@ -1,22 +0,0 @@ -| resource | author | licence | notes | -| :------------------- | :---------: | :------ | :---- | -| models/obj/castle.obj,
models/obj/castle_diffuse.png | [Alberto Cano](https://www.artstation.com/albertocano) | [CC-BY-NC](https://creativecommons.org/licenses/by-nc/4.0/legalcode) | - | -| models/obj/bridge.obj,
models/obj/bridge_diffuse.png | [Alberto Cano](https://www.artstation.com/albertocano) | [CC-BY-NC](https://creativecommons.org/licenses/by-nc/4.0/legalcode) | - | -| models/obj/house.obj,
models/obj/house_diffuse.png | [Alberto Cano](https://www.artstation.com/albertocano) | [CC-BY-NC](https://creativecommons.org/licenses/by-nc/4.0/legalcode) | - | -| models/obj/market.obj,
models/obj/market_diffuse.png | [Alberto Cano](https://www.artstation.com/albertocano) | [CC-BY-NC](https://creativecommons.org/licenses/by-nc/4.0/legalcode) | - | -| models/obj/turret.obj,
models/obj/turret_diffuse.png | [Alberto Cano](https://www.artstation.com/albertocano) | [CC-BY-NC](https://creativecommons.org/licenses/by-nc/4.0/legalcode) | - | -| models/obj/well.obj,
models/obj/well_diffuse.png | [Alberto Cano](https://www.artstation.com/albertocano) | [CC-BY-NC](https://creativecommons.org/licenses/by-nc/4.0/legalcode) | - | -| models/obj/cube.obj,
models/obj/cube_diffuse.png | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | - | -| models/obj/plane.obj,
models/obj/plane_diffuse.png | [GiaHanLam](https://sketchfab.com/GiaHanLam) | [CC-BY](https://creativecommons.org/licenses/by/4.0/) | Used by: [`models_yaw_pitch_roll.c`](https://github.com/raysan5/raylib/blob/master/examples/models/models_yaw_pitch_roll.c) -| models/iqm/guy.iqm,
models/iqm/guyanim.iqm,
models/iqm/guytex.png,
models/iqm/guy.blend | [@culacant](https://github.com/culacant) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | - | -| models/gltf/robot.glb,
models/gltf/robot.blend | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | - | -| models/vox/chr_knight.vox | â” | â” | - | -| models/vox/chr_sword.vox | â” | â” | - | -| models/vox/monu9.vox | â” | â” | - | -| billboard.png | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | - | -| cubicmap.png | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | - | -| cubicmap_atlas.png | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | - | -| heightmap.png | [@raysan5](https://github.com/raysan5) | [CC0](https://creativecommons.org/publicdomain/zero/1.0/) | - | -| dresden_square_1k.hdr | [HDRIHaven](https://hdrihaven.com/hdri/?h=dresden_square) | [CC0](https://hdrihaven.com/p/license.php) | - | -| dresden_square_2k.hdr | [HDRIHaven](https://hdrihaven.com/hdri/?h=dresden_square) | [CC0](https://hdrihaven.com/p/license.php) | - | -| skybox.png | â” | â” | - | \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/billboard.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/billboard.png deleted file mode 100644 index 8c99118..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/billboard.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/cubicmap.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/cubicmap.png deleted file mode 100644 index 392dbf2..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/cubicmap.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/cubicmap_atlas.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/cubicmap_atlas.png deleted file mode 100644 index 9fc404a..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/cubicmap_atlas.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/dresden_square_1k.hdr b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/dresden_square_1k.hdr deleted file mode 100644 index b6d0e77..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/dresden_square_1k.hdr and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/dresden_square_2k.hdr b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/dresden_square_2k.hdr deleted file mode 100644 index 60b4a4c..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/dresden_square_2k.hdr and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/heightmap.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/heightmap.png deleted file mode 100644 index 474db87..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/heightmap.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/LICENSE b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/LICENSE deleted file mode 100644 index e1d1d2e..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/LICENSE +++ /dev/null @@ -1,5 +0,0 @@ -robot.glb model by @Quaternius (https://www.patreon.com/quaternius) -Licensed under CC0 1.0 Universal (CC0 1.0) - Public Domain Dedication (https://creativecommons.org/publicdomain/zero/1.0/) - -greenman.glb, greenman_hat.glb, greenman_sword.glb, greenman_shield.glb models by @iP (https://github.com/ipzaur) -Licensed under CC0 1.0 Universal (CC0 1.0) - Public Domain Dedication (https://creativecommons.org/publicdomain/zero/1.0/) \ No newline at end of file diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman.glb b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman.glb deleted file mode 100644 index 18edcaf..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman.glb and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman_hat.glb b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman_hat.glb deleted file mode 100644 index ee932ad..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman_hat.glb and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman_shield.glb b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman_shield.glb deleted file mode 100644 index 69ef618..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman_shield.glb and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman_sword.glb b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman_sword.glb deleted file mode 100644 index bb8e24b..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/greenman_sword.glb and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/raylib_logo_3d.glb b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/raylib_logo_3d.glb deleted file mode 100644 index 4fc56ad..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/raylib_logo_3d.glb and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/robot.blend b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/robot.blend deleted file mode 100644 index efe43c5..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/robot.blend and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/robot.glb b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/robot.glb deleted file mode 100644 index 549011e..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/gltf/robot.glb and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guy.blend b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guy.blend deleted file mode 100644 index 3880467..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guy.blend and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guy.iqm b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guy.iqm deleted file mode 100644 index 36bed5e..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guy.iqm and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guyanim.iqm b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guyanim.iqm deleted file mode 100644 index 824a68a..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guyanim.iqm and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guytex.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guytex.png deleted file mode 100644 index 05a58ee..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/iqm/guytex.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/m3d/cesium_man.m3d b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/m3d/cesium_man.m3d deleted file mode 100644 index ddf9f50..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/m3d/cesium_man.m3d and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/m3d/seagull.m3d b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/m3d/seagull.m3d deleted file mode 100644 index 8236820..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/m3d/seagull.m3d and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/m3d/suzanne.m3d b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/m3d/suzanne.m3d deleted file mode 100644 index 9bc64d7..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/m3d/suzanne.m3d and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/obj/bridge.obj b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/obj/bridge.obj deleted file mode 100644 index ad283f1..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/obj/bridge.obj +++ /dev/null @@ -1,1725 +0,0 @@ -# (c) 2018 Medieval Assets Pack by Alberto Cano -# Licensed as Creative Commons Attribution-NonCommercial 4.0 - -# -# object bridge -# - -v 3.9982 -0.0023 11.9925 -v 4.0712 0.0000 6.5164 -v 3.9982 2.2042 6.5164 -v 3.9982 1.3553 8.7417 -v 4.1679 -0.0000 4.0663 -v 4.1413 1.0540 4.2689 -v 4.0712 2.8371 4.8031 -v 3.9982 2.2699 8.7359 -v 3.0685 2.2722 8.7359 -v 3.0685 0.9146 11.9866 -v 3.9982 0.9123 11.9866 -v 4.3287 2.2355 3.4001 -v 4.3287 3.3078 3.4952 -v 0.0000 0.0000 4.0663 -v 0.0000 1.4511 3.3640 -v 4.3287 1.4511 3.3640 -v 4.4633 3.0558 2.1675 -v 4.4633 3.7271 2.1035 -v 0.0000 2.4236 2.1918 -v 4.4633 2.4236 2.1918 -v 4.5231 3.3391 0.8674 -v 4.5231 3.8066 0.8674 -v 0.0000 2.7841 0.8674 -v 4.5231 2.7841 0.8674 -v 3.0685 2.2065 6.5164 -v 3.1415 2.8394 4.8031 -v 0.0000 2.8394 4.8031 -v 0.0000 2.2065 6.5164 -v 3.0685 1.3576 8.7417 -v 0.0000 1.3576 8.7417 -v 3.3990 3.3101 3.4952 -v 0.0000 3.3101 3.4952 -v 3.5336 3.7294 2.1035 -v 0.0000 3.7294 2.1035 -v 3.5934 3.8066 0.8674 -v 0.0000 3.8066 0.8674 -v 4.5862 3.4521 0.0062 -v 4.5862 3.8557 0.0062 -v 0.0000 2.9214 0.0062 -v 4.5862 2.9214 0.0062 -v 3.6565 3.8557 0.0062 -v 0.0000 3.8557 0.0062 -v 3.9982 1.3576 -8.7294 -v 3.9982 2.2065 -6.5040 -v 3.9982 0.0000 -6.5040 -v 3.9982 -0.0674 -11.9801 -v 4.0712 2.8394 -4.7908 -v 4.0712 1.0546 -4.2566 -v 4.0712 0.0000 -4.0540 -v 3.9982 0.8472 -11.9860 -v 3.0685 0.8472 -11.9860 -v 3.0685 2.2722 -8.7353 -v 3.9982 2.2722 -8.7353 -v 4.3287 3.3101 -3.4828 -v 4.3287 2.2361 -3.3877 -v 4.3287 1.4511 -3.3516 -v 0.0000 1.4511 -3.3516 -v 0.0000 0.0000 -4.0540 -v 4.4633 3.7294 -2.0911 -v 4.4633 3.0564 -2.1551 -v 4.4633 2.4236 -2.1794 -v 0.0000 2.4236 -2.1794 -v 4.5231 3.8066 -0.8551 -v 4.5231 3.3391 -0.8551 -v 4.5231 2.7841 -0.8551 -v 0.0000 2.7841 -0.8551 -v 0.0000 2.8394 -4.7908 -v 3.1415 2.8394 -4.7908 -v 3.0685 2.2065 -6.5040 -v 0.0000 2.2065 -6.5040 -v 3.0685 1.3576 -8.7294 -v 0.0000 1.3576 -8.7294 -v 0.0000 3.3101 -3.4828 -v 3.3990 3.3101 -3.4828 -v 0.0000 3.7294 -2.0911 -v 3.5336 3.7294 -2.0911 -v 0.0000 3.8066 -0.8551 -v 3.5934 3.8066 -0.8551 -v 0.0000 0.0000 11.9925 -v 3.0685 0.0000 11.9925 -v 3.9982 3.1188 6.5105 -v 4.0712 3.7517 4.7973 -v 3.1415 3.7540 4.7973 -v 3.0685 3.1211 6.5105 -v 4.3287 4.2224 3.4893 -v 3.3990 4.2247 3.4893 -v 4.4633 4.7189 1.8730 -v 3.5336 4.7213 1.8730 -v 4.5231 4.7213 0.8616 -v 3.5934 4.7213 0.8616 -v 4.5862 4.7213 0.0003 -v 3.6565 4.7213 0.0003 -v 3.0685 -0.0674 -11.9801 -v 0.0000 0.0000 -11.9801 -v 4.0712 3.7540 -4.7966 -v 3.9982 3.1211 -6.5099 -v 3.0685 3.1211 -6.5099 -v 3.1415 3.7540 -4.7966 -v 4.3287 4.2247 -3.4887 -v 3.3990 4.2247 -3.4887 -v 4.4633 4.7213 -1.8724 -v 3.5336 4.7213 -1.8724 -v 4.5231 4.7213 -0.8610 -v 3.5934 4.7213 -0.8610 -v 4.0914 1.3553 8.7417 -v 4.0914 2.2042 6.5164 -v 4.0914 3.1188 6.5105 -v 4.0914 2.2699 8.7359 -v 4.1643 2.8371 4.8031 -v 4.1643 3.7517 4.7973 -v 4.4218 3.3078 3.4952 -v 4.4218 4.2224 3.4893 -v 4.5564 3.7271 2.1035 -v 4.5564 4.7189 1.8730 -v 4.6162 3.8066 0.8674 -v 4.6163 4.7213 0.8616 -v 4.6793 3.8557 0.0062 -v 4.6793 4.7213 0.0003 -v 4.6162 3.8066 -0.8551 -v 4.6163 4.7213 -0.8610 -v 4.5564 3.7294 -2.0911 -v 4.5564 4.7213 -1.8724 -v 4.4218 3.3101 -3.4828 -v 4.4218 4.2247 -3.4887 -v 4.1643 2.8394 -4.7908 -v 4.1643 3.7540 -4.7966 -v 4.0914 2.2065 -6.5040 -v 4.0914 3.1211 -6.5099 -v 4.0914 1.3576 -8.7294 -v 4.0914 2.2722 -8.7353 -v 4.0913 -0.0674 -11.9801 -v 4.0914 0.8472 -11.9860 -v 3.9982 -0.0713 -13.3621 -v 3.0685 -0.0713 -13.3621 -v 3.0685 0.8434 -13.3680 -v 3.9982 0.8434 -13.3680 -v 3.0686 0.0039 13.3744 -v 3.9982 0.0016 13.3744 -v 3.9982 0.9162 13.3686 -v 3.0686 0.9185 13.3686 -v 4.0913 -0.0023 11.9925 -v 4.0914 0.9123 11.9866 -v 3.0685 1.8566 -11.9925 -v 3.9982 1.8566 -11.9925 -v 3.9982 1.8527 -13.3744 -v 3.0685 1.8527 -13.3744 -v 4.0913 -0.0713 -13.3621 -v 4.0914 0.8434 -13.3680 -v 4.0914 0.9162 13.3686 -v 4.0914 0.0016 13.3744 -v 4.0022 1.9216 11.9801 -v 3.0726 1.9239 11.9801 -v 3.0726 1.9278 13.3621 -v 4.0022 1.9255 13.3621 -v 4.3309 1.0532 -4.2736 -v 4.5388 2.3452 -3.4047 -v 4.5388 1.1804 -3.3687 -v 4.3102 -0.0008 -3.9892 -v 4.7395 3.1981 -2.1722 -v 4.7395 2.2978 -2.1965 -v 4.8125 3.4962 -0.8721 -v 4.8125 2.7824 -0.8721 -v 4.8215 3.5568 -0.0066 -v 4.8215 2.8673 -0.0066 -v 3.6673 0.0018 -3.9977 -v 3.8281 1.1836 -3.3772 -v 3.9627 2.3550 -2.2050 -v 4.0226 2.7850 -0.8806 -v 4.0856 2.8699 -0.0066 -v 4.5862 3.5594 -0.0066 -v 4.5231 3.4988 -0.8806 -v 4.4633 3.1460 -2.1807 -v 4.3287 2.3484 -3.4132 -v 4.0712 1.0557 -4.2821 -v 4.1503 -0.0013 -5.7369 -v 4.2574 1.0789 -5.6478 -v 3.9982 1.0815 -5.6563 -v 4.3309 1.0532 4.2604 -v 4.3102 -0.0008 3.9760 -v 4.5388 1.1804 3.3555 -v 4.5388 2.3452 3.3915 -v 4.7395 2.2978 2.1833 -v 4.7395 3.1981 2.1590 -v 4.8125 2.7824 0.8589 -v 4.8125 3.4962 0.8589 -v 3.6673 0.0018 3.9845 -v 3.8281 1.1836 3.3640 -v 3.9627 2.3550 2.1918 -v 4.0226 2.7850 0.8674 -v 4.5231 3.4988 0.8674 -v 4.4633 3.1460 2.1675 -v 4.3287 2.3484 3.4001 -v 4.1413 1.0557 4.2689 -v 4.2574 1.0789 5.6346 -v 4.1503 -0.0013 5.7237 -v 4.0712 1.0815 5.6346 -v 4.1764 4.0031 5.7280 -v 2.7107 4.0031 5.7280 -v 2.7107 4.0031 7.1178 -v 4.1764 4.0031 7.1178 -v 4.1764 0.0000 5.7280 -v 2.6101 0.0000 5.7280 -v 3.0500 2.0015 5.5403 -v 4.3606 2.0015 5.5403 -v 3.0500 2.0015 6.7032 -v 2.6101 0.0000 7.1178 -v 4.1764 0.0000 7.1178 -v 4.3606 2.0015 6.7032 -v 4.1764 4.0031 -5.7156 -v 4.1764 4.0031 -7.1054 -v 2.7107 4.0031 -7.1054 -v 2.7107 4.0031 -5.7156 -v 4.1764 -0.0000 -5.7156 -v 4.3606 2.0015 -5.5280 -v 3.0500 2.0015 -5.5280 -v 2.6101 -0.0000 -5.7156 -v 3.0500 2.0015 -6.6909 -v 2.6101 -0.0000 -7.1054 -v 4.3606 2.0015 -6.6909 -v 4.1764 -0.0000 -7.1054 -v -3.9982 -0.0023 11.9925 -v -3.9982 1.3553 8.7417 -v -3.9982 2.2042 6.5164 -v -4.0712 0.0000 6.5164 -v -4.0712 2.8371 4.8031 -v -4.1413 1.0540 4.2689 -v -4.1679 -0.0000 4.0663 -v -3.9982 2.2699 8.7359 -v -3.9982 0.9123 11.9866 -v -3.0685 0.9146 11.9866 -v -3.0685 2.2722 8.7359 -v -4.3287 3.3078 3.4952 -v -4.3287 2.2355 3.4001 -v -4.3287 1.4511 3.3640 -v -4.4633 3.7271 2.1035 -v -4.4633 3.0558 2.1675 -v -4.4633 2.4236 2.1918 -v -4.5231 3.8066 0.8674 -v -4.5231 3.3391 0.8674 -v -4.5231 2.7841 0.8674 -v -3.1415 2.8394 4.8031 -v -3.0685 2.2065 6.5164 -v -3.0685 1.3576 8.7417 -v -3.3990 3.3101 3.4952 -v -3.5336 3.7294 2.1035 -v -3.5934 3.8066 0.8674 -v -4.5862 3.8557 0.0062 -v -4.5862 3.4521 0.0062 -v -4.5862 2.9214 0.0062 -v -3.6565 3.8557 0.0062 -v -3.9982 1.3576 -8.7294 -v -3.9982 -0.0674 -11.9801 -v -3.9982 0.0000 -6.5040 -v -3.9982 2.2065 -6.5040 -v -4.0712 0.0000 -4.0540 -v -4.0712 1.0546 -4.2566 -v -4.0712 2.8394 -4.7908 -v -3.9982 0.8472 -11.9860 -v -3.9982 2.2722 -8.7353 -v -3.0685 2.2722 -8.7353 -v -3.0685 0.8472 -11.9860 -v -4.3287 2.2361 -3.3877 -v -4.3287 3.3101 -3.4828 -v -4.3287 1.4511 -3.3516 -v -4.4633 3.0564 -2.1551 -v -4.4633 3.7294 -2.0911 -v -4.4633 2.4236 -2.1794 -v -4.5231 3.3391 -0.8551 -v -4.5231 3.8066 -0.8551 -v -4.5231 2.7841 -0.8551 -v -3.0685 2.2065 -6.5040 -v -3.1415 2.8394 -4.7908 -v -3.0685 1.3576 -8.7294 -v -3.3990 3.3101 -3.4828 -v -3.5336 3.7294 -2.0911 -v -3.5934 3.8066 -0.8551 -v -3.0685 0.0000 11.9925 -v -3.1415 3.7540 4.7973 -v -4.0712 3.7517 4.7973 -v -3.9982 3.1188 6.5105 -v -3.0685 3.1211 6.5105 -v -3.3990 4.2247 3.4893 -v -4.3287 4.2224 3.4893 -v -3.5336 4.7213 1.8730 -v -4.4633 4.7189 1.8730 -v -3.5934 4.7213 0.8616 -v -4.5231 4.7213 0.8616 -v -3.6565 4.7213 0.0003 -v -4.5862 4.7213 0.0003 -v -3.0685 -0.0674 -11.9801 -v -3.0685 3.1211 -6.5099 -v -3.9982 3.1211 -6.5099 -v -4.0712 3.7540 -4.7966 -v -3.1415 3.7540 -4.7966 -v -4.3287 4.2247 -3.4887 -v -3.3990 4.2247 -3.4887 -v -4.4633 4.7213 -1.8724 -v -3.5336 4.7213 -1.8724 -v -4.5231 4.7213 -0.8610 -v -3.5934 4.7213 -0.8610 -v -4.0914 1.3553 8.7417 -v -4.0914 2.2699 8.7359 -v -4.0914 3.1188 6.5105 -v -4.0914 2.2042 6.5164 -v -4.1643 3.7517 4.7973 -v -4.1643 2.8371 4.8031 -v -4.4218 4.2224 3.4893 -v -4.4218 3.3078 3.4952 -v -4.5564 4.7189 1.8730 -v -4.5564 3.7271 2.1035 -v -4.6162 4.7213 0.8616 -v -4.6162 3.8066 0.8674 -v -4.6793 4.7213 0.0003 -v -4.6793 3.8557 0.0062 -v -4.6162 4.7213 -0.8610 -v -4.6162 3.8066 -0.8551 -v -4.5564 4.7213 -1.8724 -v -4.5564 3.7294 -2.0911 -v -4.4218 4.2247 -3.4887 -v -4.4218 3.3101 -3.4828 -v -4.1643 3.7540 -4.7966 -v -4.1643 2.8394 -4.7908 -v -4.0914 3.1211 -6.5099 -v -4.0914 2.2065 -6.5040 -v -4.0914 2.2722 -8.7353 -v -4.0914 1.3576 -8.7294 -v -4.0914 0.8472 -11.9860 -v -4.0913 -0.0674 -11.9801 -v -3.9982 -0.0713 -13.3621 -v -3.9982 0.8434 -13.3680 -v -3.0685 0.8434 -13.3680 -v -3.0685 -0.0713 -13.3621 -v -3.0686 0.0039 13.3744 -v -3.0686 0.9185 13.3686 -v -3.9982 0.9162 13.3686 -v -3.9982 0.0016 13.3744 -v -4.0913 -0.0023 11.9925 -v -4.0914 0.9123 11.9866 -v -3.0685 1.8566 -11.9925 -v -3.0685 1.8527 -13.3744 -v -3.9982 1.8527 -13.3744 -v -3.9982 1.8566 -11.9925 -v -4.0914 0.8434 -13.3680 -v -4.0913 -0.0713 -13.3621 -v -4.0914 0.0016 13.3744 -v -4.0914 0.9162 13.3686 -v -4.0022 1.9216 11.9801 -v -4.0022 1.9255 13.3621 -v -3.0726 1.9278 13.3621 -v -3.0726 1.9239 11.9801 -v -4.3309 1.0532 -4.2736 -v -4.3102 -0.0008 -3.9892 -v -4.5388 1.1804 -3.3687 -v -4.5388 2.3452 -3.4047 -v -4.7395 2.2978 -2.1965 -v -4.7395 3.1981 -2.1722 -v -4.8125 2.7824 -0.8721 -v -4.8125 3.4962 -0.8721 -v -4.8215 2.8673 -0.0066 -v -4.8215 3.5568 -0.0066 -v -3.6673 0.0018 -3.9977 -v -3.8281 1.1836 -3.3772 -v -3.9627 2.3550 -2.2050 -v -4.0226 2.7850 -0.8806 -v -4.0856 2.8699 -0.0066 -v -4.5862 3.5594 -0.0066 -v -4.5231 3.4988 -0.8806 -v -4.4633 3.1460 -2.1807 -v -4.3287 2.3484 -3.4132 -v -4.0712 1.0557 -4.2821 -v -4.2574 1.0789 -5.6478 -v -4.1503 -0.0013 -5.7369 -v -3.9982 1.0815 -5.6563 -v -4.3309 1.0532 4.2604 -v -4.5388 2.3452 3.3915 -v -4.5388 1.1804 3.3555 -v -4.3102 -0.0008 3.9760 -v -4.7395 3.1981 2.1590 -v -4.7395 2.2978 2.1833 -v -4.8125 3.4962 0.8589 -v -4.8125 2.7824 0.8589 -v -3.6673 0.0018 3.9845 -v -3.8281 1.1836 3.3640 -v -3.9627 2.3550 2.1918 -v -4.0226 2.7850 0.8674 -v -4.5231 3.4988 0.8674 -v -4.4633 3.1460 2.1675 -v -4.3287 2.3484 3.4001 -v -4.1413 1.0557 4.2689 -v -4.1503 -0.0013 5.7237 -v -4.2574 1.0789 5.6346 -v -4.0712 1.0815 5.6346 -v -4.1764 4.0031 5.7280 -v -4.1764 4.0031 7.1178 -v -2.7107 4.0031 7.1178 -v -2.7107 4.0031 5.7280 -v -4.1764 0.0000 5.7280 -v -4.3606 2.0015 5.5403 -v -3.0500 2.0015 5.5403 -v -2.6101 0.0000 5.7280 -v -3.0500 2.0015 6.7032 -v -2.6101 0.0000 7.1178 -v -4.3606 2.0015 6.7032 -v -4.1764 0.0000 7.1178 -v -4.1764 4.0031 -5.7156 -v -2.7107 4.0031 -5.7156 -v -2.7107 4.0031 -7.1054 -v -4.1764 4.0031 -7.1054 -v -4.1764 -0.0000 -5.7156 -v -2.6101 -0.0000 -5.7156 -v -3.0500 2.0015 -5.5280 -v -4.3606 2.0015 -5.5280 -v -3.0500 2.0015 -6.6909 -v -2.6101 -0.0000 -7.1054 -v -4.1764 -0.0000 -7.1054 -v -4.3606 2.0015 -6.6909 -# 416 vertices - -vn 0.9998 0.0187 0.0075 -vn 1.0000 -0.0000 -0.0000 -vn 0.9996 0.0187 0.0223 -vn 0.9995 0.0081 0.0318 -vn 0.9995 0.0135 0.0290 -vn 0.0041 0.9228 0.3854 -vn 0.9942 -0.0101 0.1073 -vn 0.9942 -0.0095 0.1071 -vn 0.0000 -0.4357 -0.9001 -vn -0.0000 -0.4357 -0.9001 -vn 0.9983 -0.0052 0.0581 -vn 0.9984 0.0054 0.0561 -vn -0.0000 -0.7696 -0.6385 -vn 0.0000 -0.7696 -0.6385 -vn 0.9996 0.0025 0.0265 -vn 0.9996 0.0000 0.0273 -vn 0.0000 -0.9649 -0.2627 -vn -0.0000 -0.9649 -0.2627 -vn 0.0000 0.9380 0.3465 -vn 0.0000 0.9343 0.3564 -vn -0.0000 0.9409 0.3386 -vn 0.0000 0.9409 0.3386 -vn -0.0000 0.9575 0.2885 -vn -0.0000 0.9981 0.0624 -vn 0.9991 0.0000 0.0413 -vn 0.0000 -0.9875 -0.1574 -vn 0.0000 0.9984 0.0568 -vn -0.0000 0.9984 0.0568 -vn 1.0000 0.0000 -0.0000 -vn 0.9997 -0.0065 -0.0216 -vn 0.9998 -0.0039 -0.0203 -vn 0.9999 0.0000 -0.0168 -vn -0.0000 0.9159 -0.4015 -vn 0.9942 -0.0095 -0.1071 -vn 0.9924 -0.0353 -0.1180 -vn 0.0000 -0.4357 0.9001 -vn 0.9984 0.0053 -0.0561 -vn 0.9983 -0.0051 -0.0581 -vn 0.0000 -0.7696 0.6385 -vn 0.9996 0.0000 -0.0273 -vn 0.9996 0.0025 -0.0265 -vn 0.0000 -0.9649 0.2627 -vn -0.0000 0.9380 -0.3465 -vn 0.0000 0.9380 -0.3465 -vn 0.0000 0.9343 -0.3564 -vn -0.0000 0.9343 -0.3564 -vn -0.0000 0.9409 -0.3386 -vn 0.0000 0.9575 -0.2885 -vn -0.0000 0.9575 -0.2885 -vn 0.0000 0.9981 -0.0624 -vn 0.9991 0.0000 -0.0413 -vn 0.0000 -0.9875 0.1574 -vn 0.0000 0.9984 -0.0568 -vn 0.0000 0.9228 0.3854 -vn 0.0041 0.9380 0.3466 -vn 0.0041 0.9343 0.3564 -vn 0.0042 0.9408 0.3390 -vn 0.0042 0.9558 0.2938 -vn -0.0000 1.0000 0.0023 -vn 0.0044 1.0000 0.0001 -vn 0.0000 1.0000 -0.0000 -vn -0.0000 1.0000 -0.0000 -vn 0.0359 0.9222 -0.3851 -vn -0.0000 0.9559 -0.2937 -vn -0.0000 1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.9997 0.0002 0.0241 -vn 0.9939 0.0007 0.1107 -vn 0.9982 0.0136 0.0586 -vn 0.9989 0.0003 0.0470 -vn 0.9996 0.0002 0.0273 -vn 0.9994 0.0078 0.0334 -vn 0.9991 0.0003 0.0413 -vn 0.9991 -0.0003 -0.0413 -vn 0.9996 0.0061 -0.0277 -vn 0.9994 -0.0002 -0.0334 -vn 0.9985 -0.0004 -0.0544 -vn 0.9987 0.0111 -0.0503 -vn 0.9939 -0.0007 -0.1102 -vn 0.9997 -0.0002 -0.0240 -vn 1.0000 -0.0000 0.0000 -vn 0.0000 -0.0064 -1.0000 -vn -1.0000 0.0000 -0.0000 -vn -1.0000 0.0000 0.0000 -vn -0.9997 0.0002 0.0240 -vn -0.9939 0.0007 0.1102 -vn -0.9982 -0.0129 0.0584 -vn -0.9989 0.0003 0.0468 -vn -0.9996 0.0002 0.0273 -vn -0.9994 -0.0074 0.0334 -vn -0.9991 0.0003 0.0413 -vn -0.9991 -0.0003 -0.0413 -vn -0.9996 -0.0064 -0.0277 -vn -0.9994 -0.0002 -0.0334 -vn -0.9985 -0.0004 -0.0546 -vn -0.9987 -0.0117 -0.0505 -vn -0.9939 -0.0007 -0.1107 -vn -0.9997 -0.0002 -0.0241 -vn 0.0000 0.0064 1.0000 -vn 0.0000 1.0000 -0.0028 -vn 0.0044 1.0000 -0.0028 -vn -0.0000 0.0064 1.0000 -vn -0.0000 -0.0064 -1.0000 -vn -1.0000 0.0022 0.0000 -vn 1.0000 -0.0023 -0.0000 -vn -0.0000 -0.9343 -0.3564 -vn 0.0000 -0.9380 -0.3465 -vn -0.0000 -0.9380 -0.3465 -vn -0.0000 -0.9409 -0.3386 -vn 0.0000 -0.9409 -0.3386 -vn -0.0000 -0.9575 -0.2885 -vn -0.0000 -0.9979 -0.0642 -vn -0.0000 -0.9984 -0.0568 -vn -0.0000 -0.9984 0.0568 -vn -0.0000 -0.9981 0.0624 -vn -0.0000 -0.9575 0.2885 -vn -0.0000 -0.9409 0.3386 -vn -0.0000 -0.9380 0.3465 -vn -0.0000 -0.9343 0.3564 -vn -0.0000 -0.9159 0.4015 -vn 0.0000 0.9159 -0.4015 -vn 0.0000 0.9409 -0.3386 -vn 0.0000 0.9559 -0.2937 -vn 0.0000 1.0000 0.0023 -vn 0.0000 0.9559 0.2937 -vn -0.0000 -0.9228 -0.3854 -vn 0.9918 -0.0040 -0.1281 -vn 0.9915 -0.0440 -0.1224 -vn 0.9956 0.0025 -0.0932 -vn 0.9956 -0.0029 -0.0934 -vn 0.9995 0.0000 -0.0317 -vn 0.9995 0.0008 -0.0314 -vn 1.0000 0.0000 -0.0059 -vn -0.0241 -0.4629 0.8861 -vn -0.0225 -0.4634 0.8859 -vn -0.0204 -0.7227 0.6909 -vn -0.1050 -0.7000 0.7064 -vn -0.1280 -0.9301 0.3443 -vn -0.0114 -0.9510 0.3091 -vn -0.0076 -0.9952 0.0976 -vn -0.0062 -0.9953 0.0969 -vn 0.0194 0.9974 -0.0699 -vn 0.0271 0.9742 -0.2243 -vn -0.2950 0.9241 -0.2431 -vn -0.2404 0.8084 -0.5373 -vn 0.0616 0.8362 -0.5450 -vn 0.0745 0.5518 -0.8306 -vn 0.0580 0.5524 -0.8315 -vn 0.9973 -0.0516 -0.0515 -vn 0.9993 -0.0193 -0.0305 -vn 0.0166 0.9997 0.0182 -vn 0.9915 -0.0440 0.1224 -vn 0.9918 -0.0040 0.1281 -vn 0.9956 -0.0029 0.0934 -vn 0.9956 0.0025 0.0932 -vn 0.9995 0.0008 0.0314 -vn 0.9995 0.0000 0.0317 -vn 1.0000 0.0000 0.0059 -vn -0.0225 -0.4634 -0.8859 -vn -0.0241 -0.4629 -0.8861 -vn -0.1050 -0.7000 -0.7064 -vn -0.0204 -0.7227 -0.6909 -vn -0.0114 -0.9510 -0.3091 -vn -0.1280 -0.9301 -0.3443 -vn -0.0062 -0.9953 -0.0969 -vn -0.0076 -0.9952 -0.0976 -vn 0.0194 0.9974 0.0699 -vn -0.2950 0.9241 0.2431 -vn 0.0271 0.9742 0.2243 -vn 0.0617 0.8362 0.5450 -vn -0.2404 0.8084 0.5373 -vn 0.0794 0.5516 0.8303 -vn 0.0745 0.5518 0.8306 -vn 0.9993 -0.0193 0.0305 -vn 0.9973 -0.0516 0.0515 -vn 0.0227 0.9996 -0.0182 -vn 0.0246 0.9995 -0.0180 -vn 0.0000 -0.0933 -0.9956 -vn 0.0000 0.0933 -0.9956 -vn -0.9955 -0.0952 -0.0000 -vn 0.0000 0.2028 0.9792 -vn 0.0000 -0.2028 0.9792 -vn 0.9987 -0.0519 0.0000 -vn 0.9987 -0.0519 -0.0000 -vn 0.9987 0.0519 -0.0000 -vn 0.0000 -0.0933 0.9956 -vn 0.0000 0.0933 0.9956 -vn 0.0000 0.2028 -0.9792 -vn 0.0000 -0.2028 -0.9792 -vn -0.9998 0.0187 0.0075 -vn -0.9995 0.0135 0.0290 -vn -0.9995 0.0081 0.0318 -vn -0.9996 0.0187 0.0223 -vn -0.0041 0.9228 0.3854 -vn -0.9942 -0.0095 0.1071 -vn -0.9942 -0.0101 0.1073 -vn -0.9984 0.0054 0.0561 -vn -0.9983 -0.0052 0.0581 -vn -0.9996 0.0000 0.0273 -vn -0.9996 0.0025 0.0265 -vn -0.0000 0.9380 0.3465 -vn -0.0000 0.9343 0.3564 -vn 0.0000 0.9575 0.2885 -vn 0.0000 0.9981 0.0624 -vn -0.9991 0.0000 0.0413 -vn -0.0000 -0.9875 -0.1574 -vn -0.9999 0.0000 -0.0168 -vn -0.9998 -0.0039 -0.0203 -vn -0.9997 -0.0065 -0.0216 -vn -0.9924 -0.0353 -0.1180 -vn -0.9942 -0.0095 -0.1071 -vn -0.0000 -0.4357 0.9001 -vn -0.9983 -0.0051 -0.0581 -vn -0.9984 0.0053 -0.0561 -vn -0.0000 -0.7696 0.6385 -vn -0.9996 0.0025 -0.0265 -vn -0.9996 0.0000 -0.0273 -vn -0.0000 -0.9649 0.2627 -vn -0.9991 0.0000 -0.0413 -vn -0.0000 -0.9875 0.1574 -vn -0.0000 0.9228 0.3854 -vn -0.0041 0.9380 0.3466 -vn -0.0041 0.9343 0.3564 -vn -0.0042 0.9408 0.3390 -vn -0.0042 0.9558 0.2938 -vn -0.0044 1.0000 0.0001 -vn -0.0359 0.9222 -0.3851 -vn -1.0000 -0.0000 -0.0000 -vn -0.9997 0.0002 0.0241 -vn -0.9939 0.0007 0.1107 -vn -0.9989 0.0003 0.0470 -vn -0.9982 0.0136 0.0586 -vn -0.9994 0.0078 0.0334 -vn -0.9996 0.0061 -0.0277 -vn -0.9987 0.0111 -0.0503 -vn -0.9985 -0.0004 -0.0544 -vn -0.9939 -0.0007 -0.1102 -vn -0.9997 -0.0002 -0.0240 -vn -1.0000 -0.0000 0.0000 -vn 0.9997 0.0002 0.0240 -vn 0.9939 0.0007 0.1102 -vn 0.9989 0.0003 0.0468 -vn 0.9982 -0.0129 0.0584 -vn 0.9994 -0.0074 0.0334 -vn 0.9996 -0.0064 -0.0277 -vn 0.9987 -0.0117 -0.0505 -vn 0.9985 -0.0004 -0.0546 -vn 0.9939 -0.0007 -0.1107 -vn 0.9997 -0.0002 -0.0241 -vn -0.0044 1.0000 -0.0028 -vn 1.0000 0.0000 0.0000 -vn 1.0000 0.0023 -0.0000 -vn -1.0000 -0.0023 0.0000 -vn 0.0000 -0.9343 -0.3564 -vn 0.0000 -0.9575 -0.2885 -vn 0.0000 -0.9979 -0.0642 -vn 0.0000 -0.9984 -0.0568 -vn 0.0000 -0.9984 0.0568 -vn 0.0000 -0.9981 0.0624 -vn 0.0000 -0.9575 0.2885 -vn 0.0000 -0.9409 0.3386 -vn 0.0000 -0.9380 0.3465 -vn 0.0000 -0.9343 0.3564 -vn 0.0000 -0.9159 0.4015 -vn -0.0000 1.0000 -0.0028 -vn -0.0000 0.9559 0.2937 -vn 0.0000 -0.9228 -0.3854 -vn -0.9915 -0.0440 -0.1224 -vn -0.9918 -0.0040 -0.1281 -vn -0.9956 -0.0029 -0.0934 -vn -0.9956 0.0025 -0.0932 -vn -0.9995 0.0008 -0.0314 -vn -0.9995 0.0000 -0.0317 -vn -1.0000 0.0000 -0.0059 -vn 0.0225 -0.4634 0.8859 -vn 0.0241 -0.4629 0.8861 -vn 0.1050 -0.7000 0.7064 -vn 0.0204 -0.7227 0.6909 -vn 0.0114 -0.9510 0.3091 -vn 0.1280 -0.9301 0.3443 -vn 0.0062 -0.9953 0.0969 -vn 0.0076 -0.9952 0.0976 -vn -0.0194 0.9974 -0.0699 -vn 0.2950 0.9240 -0.2431 -vn -0.0271 0.9742 -0.2243 -vn -0.0616 0.8362 -0.5450 -vn 0.2404 0.8084 -0.5373 -vn -0.0580 0.5524 -0.8315 -vn -0.0745 0.5518 -0.8306 -vn -0.9993 -0.0193 -0.0305 -vn -0.9973 -0.0516 -0.0515 -vn -0.0166 0.9997 0.0182 -vn -0.9918 -0.0040 0.1281 -vn -0.9915 -0.0440 0.1224 -vn -0.9956 0.0025 0.0932 -vn -0.9956 -0.0029 0.0934 -vn -0.9995 0.0000 0.0317 -vn -0.9995 0.0008 0.0314 -vn -1.0000 0.0000 0.0059 -vn 0.0241 -0.4629 -0.8861 -vn 0.0225 -0.4634 -0.8859 -vn 0.0204 -0.7227 -0.6909 -vn 0.1050 -0.7000 -0.7064 -vn 0.1280 -0.9301 -0.3443 -vn 0.0114 -0.9510 -0.3091 -vn 0.0076 -0.9952 -0.0976 -vn 0.0062 -0.9953 -0.0969 -vn -0.0194 0.9974 0.0699 -vn -0.0271 0.9742 0.2243 -vn 0.2950 0.9241 0.2431 -vn 0.2404 0.8084 0.5373 -vn -0.0617 0.8362 0.5450 -vn -0.0745 0.5518 0.8306 -vn -0.0794 0.5516 0.8303 -vn -0.9973 -0.0516 0.0515 -vn -0.9993 -0.0193 0.0305 -vn -0.0246 0.9995 -0.0180 -vn -0.0227 0.9996 -0.0182 -vn 0.9955 -0.0952 -0.0000 -vn -0.9987 -0.0519 -0.0000 -vn -0.9987 -0.0519 0.0000 -vn -0.9987 0.0519 -0.0000 -# 322 vertex normals - -vt 0.0055 0.7726 0.0000 -vt 0.2148 0.7727 0.0000 -vt 0.2147 0.8639 0.0000 -vt 0.1297 0.8288 0.0000 -vt 0.3085 0.7727 0.0000 -vt 0.3007 0.8163 0.0000 -vt 0.2802 0.8900 0.0000 -vt 0.1697 0.7009 0.0000 -vt 0.1692 0.6636 0.0000 -vt 0.0461 0.6643 0.0000 -vt 0.0466 0.7016 0.0000 -vt 0.3350 0.8652 0.0000 -vt 0.3315 0.9095 0.0000 -vt 0.3723 0.8137 0.0000 -vt 0.3999 0.8136 0.0000 -vt 0.4003 0.8870 0.0000 -vt 0.3726 0.8844 0.0000 -vt 0.3826 0.8991 0.0000 -vt 0.3850 0.9268 0.0000 -vt 0.4256 0.8135 0.0000 -vt 0.4259 0.8892 0.0000 -vt 0.4323 0.9108 0.0000 -vt 0.4323 0.9301 0.0000 -vt 0.4509 0.8134 0.0000 -vt 0.4513 0.8901 0.0000 -vt 0.7184 0.6451 0.0000 -vt 0.6550 0.6472 0.0000 -vt 0.6551 0.5407 0.0000 -vt 0.7182 0.5411 0.0000 -vt 0.8032 0.6449 0.0000 -vt 0.8031 0.5410 0.0000 -vt 0.6057 0.6561 0.0000 -vt 0.6059 0.5409 0.0000 -vt 0.5512 0.6609 0.0000 -vt 0.5513 0.5412 0.0000 -vt 0.5132 0.6630 0.0000 -vt 0.5135 0.5412 0.0000 -vt 0.4653 0.9155 0.0000 -vt 0.4653 0.9321 0.0000 -vt 0.4646 0.8133 0.0000 -vt 0.4649 0.8911 0.0000 -vt 0.4819 0.6653 0.0000 -vt 0.4828 0.5414 0.0000 -vt 0.8014 0.8288 0.0000 -vt 0.7163 0.8639 0.0000 -vt 0.7163 0.7727 0.0000 -vt 0.9256 0.7699 0.0000 -vt 0.6506 0.8901 0.0000 -vt 0.6305 0.8163 0.0000 -vt 0.6227 0.7727 0.0000 -vt 0.9143 0.7019 0.0000 -vt 0.9142 0.6646 0.0000 -vt 0.7893 0.6638 0.0000 -vt 0.7895 0.7012 0.0000 -vt 0.5992 0.9096 0.0000 -vt 0.5956 0.8652 0.0000 -vt 0.5572 0.8820 0.0000 -vt 0.5296 0.8865 0.0000 -vt 0.5293 0.8131 0.0000 -vt 0.5569 0.8130 0.0000 -vt 0.5457 0.9269 0.0000 -vt 0.5481 0.8991 0.0000 -vt 0.5041 0.8889 0.0000 -vt 0.5037 0.8132 0.0000 -vt 0.4984 0.9301 0.0000 -vt 0.4984 0.9108 0.0000 -vt 0.4787 0.8900 0.0000 -vt 0.4783 0.8133 0.0000 -vt 0.3106 0.5420 0.0000 -vt 0.3104 0.6485 0.0000 -vt 0.2476 0.6456 0.0000 -vt 0.2475 0.5417 0.0000 -vt 0.1628 0.6457 0.0000 -vt 0.1626 0.5418 0.0000 -vt 0.3598 0.5418 0.0000 -vt 0.3596 0.6570 0.0000 -vt 0.4144 0.5416 0.0000 -vt 0.4143 0.6613 0.0000 -vt 0.4522 0.5415 0.0000 -vt 0.4519 0.6633 0.0000 -vt 0.9501 0.5408 0.0000 -vt 0.9502 0.6448 0.0000 -vt 0.2519 0.7005 0.0000 -vt 0.3148 0.7031 0.0000 -vt 0.3144 0.6658 0.0000 -vt 0.2515 0.6631 0.0000 -vt 0.3626 0.7133 0.0000 -vt 0.3622 0.6759 0.0000 -vt 0.4197 0.7185 0.0000 -vt 0.4194 0.6812 0.0000 -vt 0.4522 0.7209 0.0000 -vt 0.4518 0.6836 0.0000 -vt 0.4798 0.7234 0.0000 -vt 0.4795 0.6861 0.0000 -vt 0.0142 0.6459 0.0000 -vt 0.0160 0.5419 0.0000 -vt 0.6444 0.7033 0.0000 -vt 0.7072 0.7007 0.0000 -vt 0.7071 0.6634 0.0000 -vt 0.6442 0.6660 0.0000 -vt 0.5967 0.7134 0.0000 -vt 0.5965 0.6761 0.0000 -vt 0.5397 0.7186 0.0000 -vt 0.5395 0.6813 0.0000 -vt 0.5073 0.7209 0.0000 -vt 0.5071 0.6836 0.0000 -vt 0.1376 0.8475 0.0000 -vt 0.2215 0.8831 0.0000 -vt 0.2222 0.9224 0.0000 -vt 0.1383 0.8869 0.0000 -vt 0.2862 0.9096 0.0000 -vt 0.2869 0.9489 0.0000 -vt 0.3369 0.9293 0.0000 -vt 0.3376 0.9686 0.0000 -vt 0.3898 0.9467 0.0000 -vt 0.3989 0.9893 0.0000 -vt 0.4364 0.9496 0.0000 -vt 0.4370 0.9890 0.0000 -vt 0.4689 0.9514 0.0000 -vt 0.4695 0.9886 0.0000 -vt 0.5015 0.9489 0.0000 -vt 0.5014 0.9883 0.0000 -vt 0.5485 0.9461 0.0000 -vt 0.5386 0.9886 0.0000 -vt 0.6024 0.9297 0.0000 -vt 0.6000 0.9690 0.0000 -vt 0.6546 0.9116 0.0000 -vt 0.6514 0.9508 0.0000 -vt 0.7217 0.8877 0.0000 -vt 0.7179 0.9270 0.0000 -vt 0.8091 0.8562 0.0000 -vt 0.8049 0.8954 0.0000 -vt 0.9376 0.8026 0.0000 -vt 0.9333 0.8418 0.0000 -vt 0.1175 0.2765 0.0000 -vt 0.1172 0.2184 0.0000 -vt 0.0528 0.2186 0.0000 -vt 0.0531 0.2766 0.0000 -vt 0.0149 0.7906 0.0000 -vt 0.0156 0.8299 0.0000 -vt 0.1171 0.1374 0.0000 -vt 0.0526 0.1376 0.0000 -vt 0.1279 0.1213 0.0000 -vt 0.0641 0.1216 0.0000 -vt 0.0639 0.0185 0.0000 -vt 0.1276 0.0182 0.0000 -vt 0.0533 0.3601 0.0000 -vt 0.1177 0.3599 0.0000 -vt 0.1175 0.2816 0.0000 -vt 0.0531 0.2818 0.0000 -vt 0.5233 0.0680 0.0000 -vt 0.5233 0.0146 0.0000 -vt 0.4613 0.0144 0.0000 -vt 0.4612 0.0679 0.0000 -vt 0.5230 0.2785 0.0000 -vt 0.5231 0.1970 0.0000 -vt 0.4611 0.1969 0.0000 -vt 0.4610 0.2783 0.0000 -vt 0.5232 0.1436 0.0000 -vt 0.4612 0.1434 0.0000 -vt 0.1397 0.8448 0.0000 -vt 0.2234 0.8802 0.0000 -vt 0.2877 0.9066 0.0000 -vt 0.3381 0.9262 0.0000 -vt 0.3905 0.9436 0.0000 -vt 0.4365 0.9465 0.0000 -vt 0.4689 0.9482 0.0000 -vt 0.5015 0.9458 0.0000 -vt 0.5478 0.9429 0.0000 -vt 0.6014 0.9266 0.0000 -vt 0.6534 0.9085 0.0000 -vt 0.7201 0.8848 0.0000 -vt 0.8072 0.8534 0.0000 -vt 0.9356 0.7998 0.0000 -vt 0.0479 0.2818 0.0000 -vt 0.0481 0.3601 0.0000 -vt 0.7895 0.7049 0.0000 -vt 0.9144 0.7056 0.0000 -vt 0.7072 0.7044 0.0000 -vt 0.6444 0.7070 0.0000 -vt 0.5967 0.7172 0.0000 -vt 0.5397 0.7224 0.0000 -vt 0.5073 0.7247 0.0000 -vt 0.4798 0.7272 0.0000 -vt 0.4522 0.7246 0.0000 -vt 0.4198 0.7222 0.0000 -vt 0.3627 0.7170 0.0000 -vt 0.3149 0.7068 0.0000 -vt 0.2520 0.7042 0.0000 -vt 0.1697 0.7047 0.0000 -vt 0.0466 0.7053 0.0000 -vt 0.0171 0.7879 0.0000 -vt 0.2846 0.0635 0.0000 -vt 0.3350 0.1014 0.0000 -vt 0.2869 0.0984 0.0000 -vt 0.2402 0.0697 0.0000 -vt 0.3662 0.1505 0.0000 -vt 0.3291 0.1463 0.0000 -vt 0.3743 0.1993 0.0000 -vt 0.3449 0.1967 0.0000 -vt 0.3741 0.2313 0.0000 -vt 0.3456 0.2288 0.0000 -vt 0.9520 0.3232 0.0000 -vt 0.9511 0.3553 0.0000 -vt 0.8725 0.3642 0.0000 -vt 0.8736 0.3287 0.0000 -vt 0.7872 0.3718 0.0000 -vt 0.7856 0.3328 0.0000 -vt 0.7246 0.3759 0.0000 -vt 0.7245 0.3364 0.0000 -vt 0.6884 0.3767 0.0000 -vt 0.6880 0.3399 0.0000 -vt 0.9747 0.5705 0.0000 -vt 0.9874 0.5713 0.0000 -vt 0.9855 0.6101 0.0000 -vt 0.9700 0.6102 0.0000 -vt 0.9823 0.6717 0.0000 -vt 0.9673 0.6738 0.0000 -vt 0.9698 0.7513 0.0000 -vt 0.9586 0.7517 0.0000 -vt 0.9671 0.8478 0.0000 -vt 0.9532 0.8490 0.0000 -vt 0.2458 0.0054 0.0000 -vt 0.2902 0.0130 0.0000 -vt 0.9667 0.9098 0.0000 -vt 0.9528 0.9110 0.0000 -vt 0.2569 0.3810 0.0000 -vt 0.2142 0.3671 0.0000 -vt 0.2651 0.3469 0.0000 -vt 0.3131 0.3524 0.0000 -vt 0.3151 0.3071 0.0000 -vt 0.3523 0.3095 0.0000 -vt 0.3393 0.2602 0.0000 -vt 0.3688 0.2628 0.0000 -vt 0.4237 0.3291 0.0000 -vt 0.5022 0.3328 0.0000 -vt 0.5041 0.3683 0.0000 -vt 0.4253 0.3612 0.0000 -vt 0.5903 0.3350 0.0000 -vt 0.5895 0.3740 0.0000 -vt 0.6514 0.3372 0.0000 -vt 0.6522 0.3767 0.0000 -vt 0.9748 0.5306 0.0000 -vt 0.9902 0.5325 0.0000 -vt 0.9790 0.4672 0.0000 -vt 0.9938 0.4708 0.0000 -vt 0.9769 0.3892 0.0000 -vt 0.9881 0.3902 0.0000 -vt 0.9762 0.2924 0.0000 -vt 0.9863 0.2934 0.0000 -vt 0.2535 0.4317 0.0000 -vt 0.2085 0.4314 0.0000 -vt 0.9763 0.2308 0.0000 -vt 0.9863 0.2315 0.0000 -vt 0.9781 0.1864 0.0000 -vt 0.8088 0.1864 0.0000 -vt 0.8088 0.0170 0.0000 -vt 0.9781 0.0170 0.0000 -vt 0.7807 0.0185 0.0000 -vt 0.6794 0.0178 0.0000 -vt 0.7064 0.1575 0.0000 -vt 0.7912 0.1581 0.0000 -vt 0.6831 0.2968 0.0000 -vt 0.7779 0.2975 0.0000 -vt 0.6498 0.1633 0.0000 -vt 0.5711 0.1633 0.0000 -vt 0.5431 0.3053 0.0000 -vt 0.6371 0.3053 0.0000 -vt 0.5431 0.0214 0.0000 -vt 0.6371 0.0214 0.0000 -vt 0.3995 0.7402 0.0000 -vt 0.3720 0.7430 0.0000 -vt 0.4252 0.7378 0.0000 -vt 0.4506 0.7367 0.0000 -vt 0.6552 0.4343 0.0000 -vt 0.7180 0.4371 0.0000 -vt 0.8029 0.4370 0.0000 -vt 0.6060 0.4257 0.0000 -vt 0.5513 0.4214 0.0000 -vt 0.5137 0.4195 0.0000 -vt 0.4643 0.7356 0.0000 -vt 0.4838 0.4175 0.0000 -vt 0.5566 0.7439 0.0000 -vt 0.5290 0.7397 0.0000 -vt 0.5033 0.7375 0.0000 -vt 0.4780 0.7366 0.0000 -vt 0.2473 0.4377 0.0000 -vt 0.3107 0.4356 0.0000 -vt 0.1624 0.4378 0.0000 -vt 0.3600 0.4267 0.0000 -vt 0.4145 0.4219 0.0000 -vt 0.4525 0.4198 0.0000 -vt 0.9499 0.4368 0.0000 -vt 0.0139 0.4380 0.0000 -# 294 texture coords - -o bridge -g bridge -f 1/1/1 2/2/1 3/3/1 -f 3/3/2 4/4/2 1/1/2 -f 3/3/3 2/2/3 5/5/3 -f 3/3/4 5/5/4 6/6/4 -f 3/3/5 6/6/5 7/7/5 -f 8/8/6 9/9/6 10/10/6 -f 10/10/6 11/11/6 8/8/6 -f 7/7/7 6/6/7 12/12/7 -f 12/12/8 13/13/8 7/7/8 -f 14/14/9 15/15/9 16/16/9 -f 16/16/10 5/17/10 14/14/10 -f 13/13/11 12/12/11 17/18/11 -f 17/18/12 18/19/12 13/13/12 -f 15/15/13 19/20/13 20/21/13 -f 20/21/14 16/16/14 15/15/14 -f 18/19/15 17/18/15 21/22/15 -f 21/22/16 22/23/16 18/19/16 -f 19/20/17 23/24/17 24/25/17 -f 24/25/18 20/21/18 19/20/18 -f 25/26/19 26/27/19 27/28/19 -f 27/28/19 28/29/19 25/26/19 -f 29/30/20 25/26/20 28/29/20 -f 28/29/20 30/31/20 29/30/20 -f 26/27/21 31/32/21 32/33/21 -f 32/33/22 27/28/22 26/27/22 -f 31/32/23 33/34/23 34/35/23 -f 34/35/23 32/33/23 31/32/23 -f 33/34/24 35/36/24 36/37/24 -f 36/37/24 34/35/24 33/34/24 -f 22/23/25 21/22/25 37/38/25 -f 37/38/25 38/39/25 22/23/25 -f 23/24/26 39/40/26 40/41/26 -f 40/41/26 24/25/26 23/24/26 -f 35/36/27 41/42/27 42/43/27 -f 42/43/28 36/37/28 35/36/28 -f 43/44/29 44/45/29 45/46/29 -f 45/46/29 46/47/29 43/44/29 -f 44/45/30 47/48/30 48/49/30 -f 44/45/31 48/49/31 49/50/31 -f 44/45/32 49/50/32 45/46/32 -f 50/51/33 51/52/33 52/53/33 -f 52/53/33 53/54/33 50/51/33 -f 47/48/34 54/55/34 55/56/34 -f 55/56/35 48/49/35 47/48/35 -f 49/57/36 56/58/36 57/59/36 -f 57/59/36 58/60/36 49/57/36 -f 54/55/37 59/61/37 60/62/37 -f 60/62/38 55/56/38 54/55/38 -f 56/58/39 61/63/39 62/64/39 -f 62/64/39 57/59/39 56/58/39 -f 59/61/40 63/65/40 64/66/40 -f 64/66/41 60/62/41 59/61/41 -f 61/63/42 65/67/42 66/68/42 -f 66/68/42 62/64/42 61/63/42 -f 67/69/43 68/70/43 69/71/43 -f 69/71/44 70/72/44 67/69/44 -f 70/72/45 69/71/45 71/73/45 -f 71/73/46 72/74/46 70/72/46 -f 73/75/47 74/76/47 68/70/47 -f 68/70/47 67/69/47 73/75/47 -f 75/77/48 76/78/48 74/76/48 -f 74/76/49 73/75/49 75/77/49 -f 77/79/50 78/80/50 76/78/50 -f 76/78/50 75/77/50 77/79/50 -f 63/65/51 38/39/51 37/38/51 -f 37/38/51 64/66/51 63/65/51 -f 65/67/52 40/41/52 39/40/52 -f 39/40/52 66/68/52 65/67/52 -f 42/43/53 41/42/53 78/80/53 -f 78/80/53 77/79/53 42/43/53 -f 29/30/54 30/31/54 79/81/54 -f 79/81/54 80/82/54 29/30/54 -f 81/83/55 82/84/55 83/85/55 -f 83/85/55 84/86/55 81/83/55 -f 8/8/56 81/83/56 84/86/56 -f 84/86/56 9/9/56 8/8/56 -f 82/84/57 85/87/57 86/88/57 -f 86/88/57 83/85/57 82/84/57 -f 85/87/58 87/89/58 88/90/58 -f 88/90/58 86/88/58 85/87/58 -f 87/89/59 89/91/59 90/92/59 -f 90/92/60 88/90/60 87/89/60 -f 89/91/61 91/93/61 92/94/61 -f 92/94/62 90/92/62 89/91/62 -f 93/95/63 94/96/63 72/74/63 -f 72/74/33 71/73/33 93/95/33 -f 95/97/44 96/98/44 97/99/44 -f 97/99/43 98/100/43 95/97/43 -f 96/98/46 53/54/46 52/53/46 -f 52/53/45 97/99/45 96/98/45 -f 99/101/47 95/97/47 98/100/47 -f 98/100/47 100/102/47 99/101/47 -f 101/103/64 99/101/64 100/102/64 -f 100/102/64 102/104/64 101/103/64 -f 103/105/65 101/103/65 102/104/65 -f 102/104/65 104/106/65 103/105/65 -f 91/93/65 103/105/65 104/106/65 -f 104/106/66 92/94/66 91/93/66 -f 105/107/2 106/108/2 107/109/2 -f 107/109/2 108/110/2 105/107/2 -f 106/108/67 109/111/67 110/112/67 -f 110/112/67 107/109/67 106/108/67 -f 109/111/68 111/113/68 112/114/68 -f 112/114/68 110/112/68 109/111/68 -f 111/113/69 113/115/69 114/116/69 -f 114/116/70 112/114/70 111/113/70 -f 113/115/71 115/117/71 116/118/71 -f 116/118/72 114/116/72 113/115/72 -f 115/117/73 117/119/73 118/120/73 -f 118/120/73 116/118/73 115/117/73 -f 117/119/74 119/121/74 120/122/74 -f 120/122/74 118/120/74 117/119/74 -f 119/121/75 121/123/75 122/124/75 -f 122/124/76 120/122/76 119/121/76 -f 121/123/77 123/125/77 124/126/77 -f 124/126/78 122/124/78 121/123/78 -f 123/125/79 125/127/79 126/128/79 -f 126/128/79 124/126/79 123/125/79 -f 125/127/80 127/129/80 128/130/80 -f 128/130/80 126/128/80 125/127/80 -f 127/129/81 129/131/81 130/132/81 -f 130/132/81 128/130/81 127/129/81 -f 129/131/81 131/133/81 132/134/81 -f 132/134/81 130/132/81 129/131/81 -f 133/135/82 134/136/82 135/137/82 -f 135/137/82 136/138/82 133/135/82 -f 93/139/83 71/107/83 52/110/83 -f 52/110/83 51/140/83 93/139/83 -f 71/107/83 69/108/83 97/109/83 -f 97/109/84 52/110/84 71/107/84 -f 69/108/85 68/111/85 98/112/85 -f 98/112/85 97/109/85 69/108/85 -f 68/111/86 74/113/86 100/114/86 -f 100/114/86 98/112/86 68/111/86 -f 74/113/87 76/115/87 102/116/87 -f 102/116/88 100/114/88 74/113/88 -f 76/115/89 78/117/89 104/118/89 -f 104/118/90 102/116/90 76/115/90 -f 78/117/91 41/119/91 92/120/91 -f 92/120/91 104/118/91 78/117/91 -f 41/119/92 35/121/92 90/122/92 -f 90/122/92 92/120/92 41/119/92 -f 35/121/93 33/123/93 88/124/93 -f 88/124/94 90/122/94 35/121/94 -f 33/123/95 31/125/95 86/126/95 -f 86/126/96 88/124/96 33/123/96 -f 31/125/97 26/127/97 83/128/97 -f 83/128/97 86/126/97 31/125/97 -f 26/127/98 25/129/98 84/130/98 -f 84/130/98 83/128/98 26/127/98 -f 25/129/84 29/131/84 9/132/84 -f 9/132/84 84/130/84 25/129/84 -f 29/131/84 80/133/84 10/134/84 -f 10/134/84 9/132/84 29/131/84 -f 137/136/99 138/135/99 139/138/99 -f 139/138/99 140/137/99 137/136/99 -f 141/139/2 105/107/2 108/110/2 -f 108/110/2 142/140/2 141/139/2 -f 93/141/83 51/142/83 135/137/83 -f 135/137/83 134/136/83 93/141/83 -f 143/143/100 144/144/100 145/145/100 -f 145/145/100 146/146/100 143/143/100 -f 132/147/81 131/148/81 147/149/81 -f 147/149/81 148/150/81 132/147/81 -f 141/148/2 142/147/2 149/150/2 -f 149/150/2 150/149/2 141/148/2 -f 151/145/101 152/146/101 153/143/101 -f 153/143/101 154/144/101 151/145/101 -f 10/142/84 80/141/84 137/136/84 -f 137/136/84 140/137/84 10/142/84 -f 51/151/102 50/152/102 144/153/102 -f 144/153/99 143/154/99 51/151/99 -f 50/155/29 136/156/29 145/157/29 -f 145/157/29 144/158/29 50/155/29 -f 136/156/82 135/159/82 146/160/82 -f 146/160/82 145/157/82 136/156/82 -f 135/159/83 51/151/83 143/154/83 -f 143/154/83 146/160/83 135/159/83 -f 11/152/103 10/151/103 152/154/103 -f 152/154/103 151/153/103 11/152/103 -f 10/151/104 140/159/104 153/160/104 -f 153/160/104 152/154/104 10/151/104 -f 140/159/99 139/156/99 154/157/99 -f 154/157/99 153/160/99 140/159/99 -f 139/156/105 11/155/105 151/158/105 -f 151/158/105 154/157/105 139/156/105 -f 4/161/106 3/162/106 106/108/106 -f 106/108/106 105/107/106 4/161/106 -f 3/162/107 7/163/107 109/111/107 -f 109/111/108 106/108/108 3/162/108 -f 7/163/109 13/164/109 111/113/109 -f 111/113/110 109/111/110 7/163/110 -f 13/164/111 18/165/111 113/115/111 -f 113/115/111 111/113/111 13/164/111 -f 18/165/112 22/166/112 115/117/112 -f 115/117/112 113/115/112 18/165/112 -f 22/166/113 38/167/113 117/119/113 -f 117/119/113 115/117/113 22/166/113 -f 38/167/114 63/168/114 119/121/114 -f 119/121/114 117/119/114 38/167/114 -f 63/168/115 59/169/115 121/123/115 -f 121/123/115 119/121/115 63/168/115 -f 59/169/116 54/170/116 123/125/116 -f 123/125/116 121/123/116 59/169/116 -f 54/170/117 47/171/117 125/127/117 -f 125/127/117 123/125/117 54/170/117 -f 47/171/118 44/172/118 127/129/118 -f 127/129/118 125/127/118 47/171/118 -f 44/172/119 43/173/119 129/131/119 -f 129/131/119 127/129/119 44/172/119 -f 43/173/120 46/174/120 131/133/120 -f 131/133/120 129/131/120 43/173/120 -f 133/135/103 136/138/103 148/150/103 -f 148/150/103 147/149/103 133/135/103 -f 136/175/100 50/176/100 132/147/100 -f 132/147/100 148/150/100 136/175/100 -f 50/51/121 53/54/121 130/177/121 -f 130/177/121 132/178/121 50/51/121 -f 53/54/45 96/98/45 128/179/45 -f 128/179/45 130/177/45 53/54/45 -f 96/98/44 95/97/44 126/180/44 -f 126/180/44 128/179/44 96/98/44 -f 95/97/122 99/101/122 124/181/122 -f 124/181/122 126/180/122 95/97/122 -f 99/101/123 101/103/123 122/182/123 -f 122/182/123 124/181/123 99/101/123 -f 101/103/66 103/105/66 120/183/66 -f 120/183/66 122/182/66 101/103/66 -f 103/105/66 91/93/66 118/184/66 -f 118/184/66 120/183/66 103/105/66 -f 91/93/61 89/91/61 116/185/61 -f 116/185/61 118/184/61 91/93/61 -f 89/91/124 87/89/124 114/186/124 -f 114/186/124 116/185/124 89/91/124 -f 87/89/125 85/87/125 112/187/125 -f 112/187/125 114/186/125 87/89/125 -f 85/87/22 82/84/22 110/188/22 -f 110/188/22 112/187/22 85/87/22 -f 82/84/19 81/83/19 107/189/19 -f 107/189/19 110/188/19 82/84/19 -f 81/83/20 8/8/20 108/190/20 -f 108/190/20 107/189/20 81/83/20 -f 8/8/54 11/11/54 142/191/54 -f 142/191/54 108/190/54 8/8/54 -f 11/176/100 139/175/100 149/150/100 -f 149/150/100 142/147/100 11/176/100 -f 139/138/99 138/135/99 150/149/99 -f 150/149/99 149/150/99 139/138/99 -f 1/192/126 4/161/126 105/107/126 -f 105/107/126 141/139/126 1/192/126 -f 155/193/127 156/194/127 157/195/127 -f 157/195/128 158/196/128 155/193/128 -f 156/194/129 159/197/129 160/198/129 -f 160/198/130 157/195/130 156/194/130 -f 159/197/131 161/199/131 162/200/131 -f 162/200/132 160/198/132 159/197/132 -f 161/199/133 163/201/133 164/202/133 -f 164/202/133 162/200/133 161/199/133 -f 165/203/134 158/204/134 157/205/134 -f 157/205/135 166/206/135 165/203/135 -f 166/206/136 157/205/136 160/207/136 -f 160/207/137 167/208/137 166/206/137 -f 167/208/138 160/207/138 162/209/138 -f 162/209/139 168/210/139 167/208/139 -f 168/210/140 162/209/140 164/211/140 -f 164/211/141 169/212/141 168/210/141 -f 170/213/142 163/214/142 161/215/142 -f 161/215/142 171/216/142 170/213/142 -f 171/216/143 161/215/143 159/217/143 -f 159/217/144 172/218/144 171/216/144 -f 172/218/145 159/217/145 156/219/145 -f 156/219/146 173/220/146 172/218/146 -f 173/220/147 156/219/147 155/221/147 -f 155/221/148 174/222/148 173/220/148 -f 158/196/149 175/223/149 176/224/149 -f 176/224/150 155/193/150 158/196/150 -f 155/221/151 176/225/151 177/226/151 -f 177/226/151 174/222/151 155/221/151 -f 178/227/152 179/228/152 180/229/152 -f 180/229/153 181/230/153 178/227/153 -f 181/230/154 180/229/154 182/231/154 -f 182/231/155 183/232/155 181/230/155 -f 183/232/156 182/231/156 184/233/156 -f 184/233/157 185/234/157 183/232/157 -f 185/234/158 184/233/158 164/202/158 -f 164/202/158 163/201/158 185/234/158 -f 186/235/159 187/236/159 180/237/159 -f 180/237/160 179/238/160 186/235/160 -f 187/236/161 188/239/161 182/240/161 -f 182/240/162 180/237/162 187/236/162 -f 188/239/163 189/241/163 184/242/163 -f 184/242/164 182/240/164 188/239/164 -f 189/241/165 169/212/165 164/211/165 -f 164/211/166 184/242/166 189/241/166 -f 170/213/167 190/243/167 185/244/167 -f 185/244/167 163/214/167 170/213/167 -f 190/243/168 191/245/168 183/246/168 -f 183/246/169 185/244/169 190/243/169 -f 191/245/170 192/247/170 181/248/170 -f 181/248/171 183/246/171 191/245/171 -f 192/247/172 193/249/172 178/250/172 -f 178/250/173 181/248/173 192/247/173 -f 179/228/174 178/227/174 194/251/174 -f 194/251/175 195/252/175 179/228/175 -f 178/250/176 193/249/176 196/253/176 -f 196/253/177 194/254/177 178/250/177 -f 197/255/61 198/256/61 199/257/61 -f 199/257/61 200/258/61 197/255/61 -f 201/259/178 202/260/178 203/261/178 -f 203/261/178 204/262/178 201/259/178 -f 204/262/179 203/261/179 198/263/179 -f 198/263/179 197/264/179 204/262/179 -f 203/265/180 205/266/180 199/267/180 -f 199/267/180 198/268/180 203/265/180 -f 206/260/181 207/259/181 208/262/181 -f 208/262/181 205/261/181 206/260/181 -f 205/261/182 208/262/182 200/264/182 -f 200/264/182 199/263/182 205/261/182 -f 207/269/183 201/270/183 204/265/183 -f 204/265/184 208/266/184 207/269/184 -f 208/266/185 204/265/185 197/268/185 -f 197/268/185 200/267/185 208/266/185 -f 209/258/61 210/255/61 211/256/61 -f 211/256/61 212/257/61 209/258/61 -f 213/259/186 214/262/186 215/261/186 -f 215/261/186 216/260/186 213/259/186 -f 214/262/187 209/264/187 212/263/187 -f 212/263/187 215/261/187 214/262/187 -f 215/265/180 212/268/180 211/267/180 -f 211/267/180 217/266/180 215/265/180 -f 218/260/188 217/261/188 219/262/188 -f 219/262/188 220/259/188 218/260/188 -f 217/261/189 211/263/189 210/264/189 -f 210/264/189 219/262/189 217/261/189 -f 220/269/184 219/266/184 214/265/184 -f 214/265/183 213/270/183 220/269/183 -f 219/266/185 210/267/185 209/268/185 -f 209/268/185 214/265/185 219/266/185 -f 221/1/83 222/4/83 223/3/83 -f 223/3/190 224/2/190 221/1/190 -f 223/3/191 225/7/191 226/6/191 -f 223/3/192 226/6/192 227/5/192 -f 223/3/193 227/5/193 224/2/193 -f 228/8/194 229/11/194 230/10/194 -f 230/10/194 231/9/194 228/8/194 -f 225/7/195 232/13/195 233/12/195 -f 233/12/196 226/6/196 225/7/196 -f 234/271/10 15/15/10 14/14/10 -f 14/14/9 227/272/9 234/271/9 -f 232/13/197 235/19/197 236/18/197 -f 236/18/198 233/12/198 232/13/198 -f 237/273/14 19/20/14 15/15/14 -f 15/15/13 234/271/13 237/273/13 -f 235/19/199 238/23/199 239/22/199 -f 239/22/200 236/18/200 235/19/200 -f 240/274/18 23/24/18 19/20/18 -f 19/20/17 237/273/17 240/274/17 -f 27/28/201 241/275/201 242/276/201 -f 242/276/19 28/29/19 27/28/19 -f 28/29/20 242/276/20 243/277/20 -f 243/277/202 30/31/202 28/29/202 -f 32/33/22 244/278/22 241/275/22 -f 241/275/21 27/28/21 32/33/21 -f 34/35/203 245/279/203 244/278/203 -f 244/278/203 32/33/203 34/35/203 -f 36/37/204 246/280/204 245/279/204 -f 245/279/204 34/35/204 36/37/204 -f 238/23/205 247/39/205 248/38/205 -f 248/38/205 239/22/205 238/23/205 -f 249/281/206 39/40/206 23/24/206 -f 23/24/206 240/274/206 249/281/206 -f 42/43/27 250/282/27 246/280/27 -f 246/280/27 36/37/27 42/43/27 -f 251/44/83 252/47/83 253/46/83 -f 253/46/83 254/45/83 251/44/83 -f 254/45/207 253/46/207 255/50/207 -f 254/45/208 255/50/208 256/49/208 -f 254/45/209 256/49/209 257/48/209 -f 258/51/121 259/54/121 260/53/121 -f 260/53/121 261/52/121 258/51/121 -f 257/48/210 256/49/210 262/56/210 -f 262/56/211 263/55/211 257/48/211 -f 255/283/36 58/60/36 57/59/36 -f 57/59/212 264/284/212 255/283/212 -f 263/55/213 262/56/213 265/62/213 -f 265/62/214 266/61/214 263/55/214 -f 264/284/215 57/59/215 62/64/215 -f 62/64/215 267/285/215 264/284/215 -f 266/61/216 265/62/216 268/66/216 -f 268/66/217 269/65/217 266/61/217 -f 267/285/218 62/64/218 66/68/218 -f 66/68/218 270/286/218 267/285/218 -f 271/287/44 272/288/44 67/69/44 -f 67/69/44 70/72/44 271/287/44 -f 273/289/45 271/287/45 70/72/45 -f 70/72/45 72/74/45 273/289/45 -f 272/288/122 274/290/122 73/75/122 -f 73/75/122 67/69/122 272/288/122 -f 274/290/48 275/291/48 75/77/48 -f 75/77/48 73/75/48 274/290/48 -f 275/291/50 276/292/50 77/79/50 -f 77/79/50 75/77/50 275/291/50 -f 269/65/219 268/66/219 248/38/219 -f 248/38/219 247/39/219 269/65/219 -f 270/286/220 66/68/220 39/40/220 -f 39/40/220 249/281/220 270/286/220 -f 276/292/53 250/282/53 42/43/53 -f 42/43/53 77/79/53 276/292/53 -f 243/277/54 277/293/54 79/81/54 -f 79/81/221 30/31/221 243/277/221 -f 278/85/222 279/84/222 280/83/222 -f 280/83/222 281/86/222 278/85/222 -f 281/86/223 280/83/223 228/8/223 -f 228/8/223 231/9/223 281/86/223 -f 282/88/224 283/87/224 279/84/224 -f 279/84/224 278/85/224 282/88/224 -f 284/90/225 285/89/225 283/87/225 -f 283/87/225 282/88/225 284/90/225 -f 286/92/124 287/91/124 285/89/124 -f 285/89/226 284/90/226 286/92/226 -f 288/94/61 289/93/61 287/91/61 -f 287/91/61 286/92/61 288/94/61 -f 290/294/121 273/289/121 72/74/121 -f 72/74/227 94/96/227 290/294/227 -f 291/99/44 292/98/44 293/97/44 -f 293/97/44 294/100/44 291/99/44 -f 260/53/45 259/54/45 292/98/45 -f 292/98/45 291/99/45 260/53/45 -f 294/100/122 293/97/122 295/101/122 -f 295/101/122 296/102/122 294/100/122 -f 296/102/123 295/101/123 297/103/123 -f 297/103/123 298/104/123 296/102/123 -f 298/104/66 297/103/66 299/105/66 -f 299/105/66 300/106/66 298/104/66 -f 300/106/66 299/105/66 289/93/66 -f 289/93/66 288/94/66 300/106/66 -f 301/131/228 302/132/228 303/130/228 -f 303/130/228 304/129/228 301/131/228 -f 304/129/229 303/130/229 305/128/229 -f 305/128/229 306/127/229 304/129/229 -f 306/127/230 305/128/230 307/126/230 -f 307/126/230 308/125/230 306/127/230 -f 308/125/231 307/126/231 309/124/231 -f 309/124/232 310/123/232 308/125/232 -f 310/123/233 309/124/233 311/122/233 -f 311/122/89 312/121/89 310/123/89 -f 312/121/91 311/122/91 313/120/91 -f 313/120/91 314/119/91 312/121/91 -f 314/119/92 313/120/92 315/118/92 -f 315/118/92 316/117/92 314/119/92 -f 316/117/94 315/118/94 317/116/94 -f 317/116/234 318/115/234 316/117/234 -f 318/115/235 317/116/235 319/114/235 -f 319/114/236 320/113/236 318/115/236 -f 320/113/237 319/114/237 321/112/237 -f 321/112/237 322/111/237 320/113/237 -f 322/111/238 321/112/238 323/109/238 -f 323/109/238 324/108/238 322/111/238 -f 324/108/239 323/109/239 325/110/239 -f 325/110/239 326/107/239 324/108/239 -f 326/107/239 325/110/239 327/140/239 -f 327/140/239 328/139/239 326/107/239 -f 329/135/103 330/138/103 331/137/103 -f 331/137/82 332/136/82 329/135/82 -f 290/139/29 261/140/29 260/110/29 -f 260/110/29 273/107/29 290/139/29 -f 273/107/29 260/110/29 291/109/29 -f 291/109/29 271/108/29 273/107/29 -f 271/108/240 291/109/240 294/112/240 -f 294/112/240 272/111/240 271/108/240 -f 272/111/241 294/112/241 296/114/241 -f 296/114/241 274/113/241 272/111/241 -f 274/113/242 296/114/242 298/116/242 -f 298/116/243 275/115/243 274/113/243 -f 275/115/244 298/116/244 300/118/244 -f 300/118/71 276/117/71 275/115/71 -f 276/117/73 300/118/73 288/120/73 -f 288/120/73 250/119/73 276/117/73 -f 250/119/74 288/120/74 286/122/74 -f 286/122/74 246/121/74 250/119/74 -f 246/121/76 286/122/76 284/124/76 -f 284/124/245 245/123/245 246/121/245 -f 245/123/246 284/124/246 282/126/246 -f 282/126/247 244/125/247 245/123/247 -f 244/125/248 282/126/248 278/128/248 -f 278/128/248 241/127/248 244/125/248 -f 241/127/249 278/128/249 281/130/249 -f 281/130/249 242/129/249 241/127/249 -f 242/129/29 281/130/29 231/132/29 -f 231/132/29 243/131/29 242/129/29 -f 243/131/29 231/132/29 230/134/29 -f 230/134/29 277/133/29 243/131/29 -f 333/136/102 334/137/102 335/138/102 -f 335/138/102 336/135/102 333/136/102 -f 337/133/228 338/134/228 302/132/228 -f 302/132/228 301/131/228 337/133/228 -f 290/141/29 332/136/29 331/137/29 -f 331/137/29 261/142/29 290/141/29 -f 339/144/100 340/145/100 341/146/100 -f 341/146/100 342/143/100 339/144/100 -f 327/147/239 343/150/239 344/149/239 -f 344/149/239 328/148/239 327/147/239 -f 337/148/228 345/149/228 346/150/228 -f 346/150/228 338/147/228 337/148/228 -f 347/146/250 348/143/250 349/144/250 -f 349/144/250 350/145/250 347/146/250 -f 230/142/251 334/137/251 333/136/251 -f 333/136/251 277/141/251 230/142/251 -f 261/151/99 339/154/99 342/153/99 -f 342/153/99 258/152/99 261/151/99 -f 258/155/83 342/158/83 341/157/83 -f 341/157/83 330/156/83 258/155/83 -f 330/156/82 341/157/82 340/160/82 -f 340/160/103 331/159/103 330/156/103 -f 331/159/29 340/160/29 339/154/29 -f 339/154/29 261/151/29 331/159/29 -f 229/152/82 347/153/82 350/154/82 -f 350/154/82 230/151/82 229/152/82 -f 230/151/252 350/154/252 349/160/252 -f 349/160/252 334/159/252 230/151/252 -f 334/159/102 349/160/102 348/157/102 -f 348/157/102 335/156/102 334/159/102 -f 335/156/253 348/157/253 347/158/253 -f 347/158/253 229/155/253 335/156/253 -f 222/173/254 301/131/254 304/129/254 -f 304/129/254 223/172/254 222/173/254 -f 223/172/107 304/129/107 306/127/107 -f 306/127/107 225/171/107 223/172/107 -f 225/171/110 306/127/110 308/125/110 -f 308/125/110 232/170/110 225/171/110 -f 232/170/255 308/125/255 310/123/255 -f 310/123/255 235/169/255 232/170/255 -f 235/169/256 310/123/256 312/121/256 -f 312/121/256 238/168/256 235/169/256 -f 238/168/257 312/121/257 314/119/257 -f 314/119/257 247/167/257 238/168/257 -f 247/167/258 314/119/258 316/117/258 -f 316/117/258 269/166/258 247/167/258 -f 269/166/259 316/117/259 318/115/259 -f 318/115/259 266/165/259 269/166/259 -f 266/165/260 318/115/260 320/113/260 -f 320/113/260 263/164/260 266/165/260 -f 263/164/261 320/113/261 322/111/261 -f 322/111/261 257/163/261 263/164/261 -f 257/163/262 322/111/262 324/108/262 -f 324/108/262 254/162/262 257/163/262 -f 254/162/263 324/108/263 326/107/263 -f 326/107/263 251/161/263 254/162/263 -f 251/161/264 326/107/264 328/139/264 -f 328/139/264 252/192/264 251/161/264 -f 329/135/82 344/149/82 343/150/82 -f 343/150/82 330/138/82 329/135/82 -f 330/175/265 343/150/265 327/147/265 -f 327/147/265 258/176/265 330/175/265 -f 258/51/33 327/178/33 325/177/33 -f 325/177/33 259/54/33 258/51/33 -f 259/54/46 325/177/46 323/179/46 -f 323/179/46 292/98/46 259/54/46 -f 292/98/43 323/179/43 321/180/43 -f 321/180/43 293/97/43 292/98/43 -f 293/97/47 321/180/47 319/181/47 -f 319/181/47 295/101/47 293/97/47 -f 295/101/64 319/181/64 317/182/64 -f 317/182/123 297/103/123 295/101/123 -f 297/103/66 317/182/66 315/183/66 -f 315/183/66 299/105/66 297/103/66 -f 299/105/66 315/183/66 313/184/66 -f 313/184/65 289/93/65 299/105/65 -f 289/93/62 313/184/62 311/185/62 -f 311/185/62 287/91/62 289/93/62 -f 287/91/59 311/185/59 309/186/59 -f 309/186/124 285/89/124 287/91/124 -f 285/89/125 309/186/125 307/187/125 -f 307/187/266 283/87/266 285/89/266 -f 283/87/21 307/187/21 305/188/21 -f 305/188/22 279/84/22 283/87/22 -f 279/84/19 305/188/19 303/189/19 -f 303/189/201 280/83/201 279/84/201 -f 280/83/202 303/189/202 302/190/202 -f 302/190/202 228/8/202 280/83/202 -f 228/8/221 302/190/221 338/191/221 -f 338/191/221 229/11/221 228/8/221 -f 229/176/265 338/147/265 346/150/265 -f 346/150/265 335/175/265 229/176/265 -f 335/138/102 346/150/102 345/149/102 -f 345/149/102 336/135/102 335/138/102 -f 221/174/267 337/133/267 301/131/267 -f 301/131/267 222/173/267 221/174/267 -f 351/193/268 352/196/268 353/195/268 -f 353/195/269 354/194/269 351/193/269 -f 354/194/270 353/195/270 355/198/270 -f 355/198/271 356/197/271 354/194/271 -f 356/197/272 355/198/272 357/200/272 -f 357/200/273 358/199/273 356/197/273 -f 358/199/274 357/200/274 359/202/274 -f 359/202/274 360/201/274 358/199/274 -f 361/203/275 362/206/275 353/205/275 -f 353/205/276 352/204/276 361/203/276 -f 362/206/277 363/208/277 355/207/277 -f 355/207/278 353/205/278 362/206/278 -f 363/208/279 364/210/279 357/209/279 -f 357/209/280 355/207/280 363/208/280 -f 364/210/281 365/212/281 359/211/281 -f 359/211/282 357/209/282 364/210/282 -f 366/213/283 367/216/283 358/215/283 -f 358/215/283 360/214/283 366/213/283 -f 367/216/284 368/218/284 356/217/284 -f 356/217/285 358/215/285 367/216/285 -f 368/218/286 369/220/286 354/219/286 -f 354/219/287 356/217/287 368/218/287 -f 369/220/288 370/222/288 351/221/288 -f 351/221/289 354/219/289 369/220/289 -f 352/196/290 351/193/290 371/224/290 -f 371/224/291 372/223/291 352/196/291 -f 351/221/292 370/222/292 373/226/292 -f 373/226/292 371/225/292 351/221/292 -f 374/227/293 375/230/293 376/229/293 -f 376/229/294 377/228/294 374/227/294 -f 375/230/295 378/232/295 379/231/295 -f 379/231/296 376/229/296 375/230/296 -f 378/232/297 380/234/297 381/233/297 -f 381/233/298 379/231/298 378/232/298 -f 380/234/299 360/201/299 359/202/299 -f 359/202/299 381/233/299 380/234/299 -f 382/235/300 377/238/300 376/237/300 -f 376/237/301 383/236/301 382/235/301 -f 383/236/302 376/237/302 379/240/302 -f 379/240/303 384/239/303 383/236/303 -f 384/239/304 379/240/304 381/242/304 -f 381/242/305 385/241/305 384/239/305 -f 385/241/306 381/242/306 359/211/306 -f 359/211/307 365/212/307 385/241/307 -f 366/213/308 360/214/308 380/244/308 -f 380/244/308 386/243/308 366/213/308 -f 386/243/309 380/244/309 378/246/309 -f 378/246/310 387/245/310 386/243/310 -f 387/245/311 378/246/311 375/248/311 -f 375/248/312 388/247/312 387/245/312 -f 388/247/313 375/248/313 374/250/313 -f 374/250/314 389/249/314 388/247/314 -f 377/228/315 390/252/315 391/251/315 -f 391/251/316 374/227/316 377/228/316 -f 374/250/317 391/254/317 392/253/317 -f 392/253/318 389/249/318 374/250/318 -f 393/256/61 394/257/61 395/258/61 -f 395/258/61 396/255/61 393/256/61 -f 397/259/178 398/262/178 399/261/178 -f 399/261/178 400/260/178 397/259/178 -f 398/262/179 393/264/179 396/263/179 -f 396/263/179 399/261/179 398/262/179 -f 399/265/319 396/268/319 395/267/319 -f 395/267/319 401/266/319 399/265/319 -f 402/260/181 401/261/181 403/262/181 -f 403/262/181 404/259/181 402/260/181 -f 401/261/182 395/263/182 394/264/182 -f 394/264/182 403/262/182 401/261/182 -f 404/269/320 403/266/320 398/265/320 -f 398/265/321 397/270/321 404/269/321 -f 403/266/322 394/267/322 393/268/322 -f 393/268/322 398/265/322 403/266/322 -f 405/257/61 406/258/61 407/255/61 -f 407/255/61 408/256/61 405/257/61 -f 409/259/186 410/260/186 411/261/186 -f 411/261/186 412/262/186 409/259/186 -f 412/262/187 411/261/187 406/263/187 -f 406/263/187 405/264/187 412/262/187 -f 411/265/319 413/266/319 407/267/319 -f 407/267/319 406/268/319 411/265/319 -f 414/260/188 415/259/188 416/262/188 -f 416/262/188 413/261/188 414/260/188 -f 413/261/189 416/262/189 408/264/189 -f 408/264/189 407/263/189 413/261/189 -f 415/269/321 409/270/321 412/265/321 -f 412/265/320 416/266/320 415/269/320 -f 416/266/322 412/265/322 405/268/322 -f 405/268/322 408/267/322 416/266/322 -# 676 faces - diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/obj/bridge_diffuse.png b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/obj/bridge_diffuse.png deleted file mode 100644 index 45a86b5..0000000 Binary files a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/obj/bridge_diffuse.png and /dev/null differ diff --git a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/obj/castle.obj b/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/obj/castle.obj deleted file mode 100644 index a4ec921..0000000 --- a/zig-pkg/raylib-6.0.0-whq8uCSwLgWWeF3ec3dbG6Rr36SLFL-s2WJ1Q_2E22Bb/examples/models/resources/models/obj/castle.obj +++ /dev/null @@ -1,12919 +0,0 @@ -# (c) 2018 Medieval Assets Pack by Alberto Cano -# Licensed as Creative Commons Attribution-NonCommercial 4.0 - -# -# object castle -# - -v -17.17 7.76 -10.68 -v -16.55 7.76 -12.98 -v -16.55 0.00 -12.98 -v -17.17 0.00 -10.68 -v -14.87 7.76 -14.66 -v -14.87 0.00 -14.66 -v -12.57 7.76 -15.28 -v -12.57 0.00 -15.28 -v -10.27 7.76 -14.66 -v -10.27 0.00 -14.66 -v -8.58 7.76 -12.98 -v -8.58 0.00 -12.98 -v -7.97 7.76 -10.68 -v -7.97 0.00 -10.68 -v -8.58 7.76 -8.38 -v -8.58 0.00 -8.38 -v -10.27 7.76 -6.69 -v -10.27 0.00 -6.69 -v -12.57 7.76 -6.08 -v -12.57 0.00 -6.08 -v -14.87 7.76 -6.69 -v -14.87 0.00 -6.69 -v -16.55 7.76 -8.38 -v -16.55 0.00 -8.38 -v -16.78 7.76 -13.11 -v -17.43 7.76 -10.68 -v -17.43 8.57 -10.68 -v -16.78 8.57 -13.11 -v -15.00 7.76 -14.89 -v -15.00 8.57 -14.89 -v -12.57 7.76 -15.54 -v -12.57 8.57 -15.54 -v -10.13 7.76 -14.89 -v -10.13 8.57 -14.89 -v -8.35 7.76 -13.11 -v -8.35 8.57 -13.11 -v -7.70 7.76 -10.68 -v -7.70 8.57 -10.68 -v -8.35 7.76 -8.24 -v -8.35 8.57 -8.24 -v -10.13 7.76 -6.46 -v -10.13 8.57 -6.46 -v -12.57 7.76 -5.81 -v -12.57 8.57 -5.81 -v -15.00 7.76 -6.46 -v -15.00 8.57 -6.46 -v -16.78 7.76 -8.24 -v -16.78 8.57 -8.24 -v -17.17 8.57 -10.68 -v -16.55 8.57 -12.98 -v -14.87 8.57 -14.66 -v -12.57 8.57 -15.28 -v -10.27 8.57 -14.66 -v -8.58 8.57 -12.98 -v -7.97 8.57 -10.68 -v -8.58 8.57 -8.38 -v -10.27 8.57 -6.69 -v -12.57 8.57 -6.08 -v -14.87 8.57 -6.69 -v -16.55 8.57 -8.38 -v -17.17 16.89 -10.68 -v -16.55 16.89 -12.98 -v -14.87 16.89 -14.66 -v -12.57 16.89 -15.28 -v -10.27 16.89 -14.66 -v -8.58 16.89 -12.98 -v -7.97 16.89 -10.68 -v -8.58 16.89 -8.38 -v -10.27 16.89 -6.69 -v -12.57 16.89 -6.08 -v -14.87 16.89 -6.69 -v -16.55 16.89 -8.38 -v -17.13 21.30 -13.31 -v -17.83 21.30 -10.68 -v -18.23 21.30 -10.68 -v -17.47 21.30 -13.51 -v -15.20 21.30 -15.24 -v -15.40 21.30 -15.58 -v -12.57 21.30 -15.94 -v -12.57 21.30 -16.34 -v -9.93 21.30 -15.24 -v -9.73 21.30 -15.58 -v -8.01 21.30 -13.31 -v -7.66 21.30 -13.51 -v -7.30 21.30 -10.68 -v -6.90 21.30 -10.68 -v -8.01 21.30 -8.04 -v -7.66 21.30 -7.84 -v -9.93 21.30 -6.12 -v -9.73 21.30 -5.77 -v -12.57 21.30 -5.41 -v -12.57 21.30 -5.01 -v -15.20 21.30 -6.12 -v -15.40 21.30 -5.77 -v -17.13 21.30 -8.04 -v -17.47 21.30 -7.84 -v -16.72 24.76 -10.68 -v -16.17 24.76 -12.76 -v -14.64 24.76 -14.28 -v -12.57 24.76 -14.83 -v -10.49 24.76 -14.28 -v -8.97 24.76 -12.76 -v -8.41 24.76 -10.68 -v -8.97 24.76 -8.60 -v -10.49 24.76 -7.08 -v -12.57 24.76 -6.52 -v -14.64 24.76 -7.08 -v -16.17 24.76 -8.60 -v -16.69 28.50 -10.68 -v -16.13 28.50 -12.74 -v -14.63 28.50 -14.24 -v -12.57 28.50 -14.80 -v -10.51 28.50 -14.24 -v -9.00 28.50 -12.74 -v -8.45 28.50 -10.68 -v -9.00 28.50 -8.62 -v -10.51 28.50 -7.11 -v -12.57 28.50 -6.56 -v -14.63 28.50 -7.11 -v -16.13 28.50 -8.62 -v -17.83 17.36 -10.68 -v -17.13 17.36 -13.31 -v -15.20 17.36 -15.24 -v -12.57 17.36 -15.94 -v -9.93 17.36 -15.24 -v -8.01 17.36 -13.31 -v -7.30 17.36 -10.68 -v -8.01 17.36 -8.04 -v -9.93 17.36 -6.12 -v -12.57 17.36 -5.41 -v -15.20 17.36 -6.12 -v -17.13 17.36 -8.04 -v -17.91 20.21 -10.37 -v -17.91 20.52 -10.80 -v -17.91 19.21 -10.80 -v -17.91 19.23 -10.37 -v -17.81 19.26 -10.03 -v -17.91 19.26 -10.04 -v -17.91 19.12 -10.04 -v -17.81 19.12 -10.03 -v -17.89 20.75 -10.80 -v -17.98 20.75 -10.81 -v -17.94 20.29 -10.15 -v -17.84 20.29 -10.15 -v -17.68 19.12 -11.55 -v -17.78 19.12 -11.56 -v -17.78 19.26 -11.56 -v -17.68 19.26 -11.55 -v -17.89 19.07 -10.80 -v -17.98 19.07 -10.81 -v -17.82 19.12 -11.45 -v -17.73 19.12 -11.45 -v -18.05 19.12 -10.16 -v -18.05 19.26 -10.16 -v -18.08 19.23 -10.39 -v -17.98 20.52 -10.81 -v -17.98 20.21 -10.38 -v -17.93 19.26 -11.46 -v -17.93 19.12 -11.46 -v -18.01 19.24 -11.24 -v -18.09 19.07 -10.82 -v -18.09 19.21 -10.82 -v -17.83 20.21 -11.23 -v -17.83 19.24 -11.23 -v -17.73 20.29 -11.45 -v -17.82 20.29 -11.45 -v -17.84 19.12 -10.15 -v -17.94 19.12 -10.15 -v -17.90 20.21 -11.23 -v -17.98 19.23 -10.38 -v -17.90 19.24 -11.23 -v -17.98 19.21 -10.81 -v -17.82 19.26 -11.45 -v -17.73 19.26 -11.45 -v -17.94 19.26 -10.15 -v -17.84 19.26 -10.15 -v -18.02 19.26 -10.05 -v -18.02 19.12 -10.05 -v -17.88 19.12 -11.57 -v -17.88 19.26 -11.57 -v -12.87 20.21 -16.02 -v -12.44 20.52 -16.02 -v -12.44 19.21 -16.02 -v -12.87 19.23 -16.02 -v -13.21 19.26 -15.92 -v -13.20 19.26 -16.02 -v -13.20 19.12 -16.02 -v -13.21 19.12 -15.92 -v -12.44 20.75 -16.00 -v -12.43 20.75 -16.10 -v -13.09 20.29 -16.05 -v -13.10 20.29 -15.95 -v -11.69 19.12 -15.79 -v -11.68 19.12 -15.89 -v -11.68 19.26 -15.89 -v -11.69 19.26 -15.79 -v -12.44 19.07 -16.00 -v -12.43 19.07 -16.10 -v -11.79 19.12 -15.94 -v -11.80 19.12 -15.84 -v -13.08 19.12 -16.16 -v -13.08 19.26 -16.16 -v -12.85 19.23 -16.20 -v -12.43 20.52 -16.10 -v -12.86 20.21 -16.09 -v -11.78 19.26 -16.04 -v -11.78 19.12 -16.04 -v -12.00 19.24 -16.12 -v -12.42 19.07 -16.20 -v -12.42 19.21 -16.20 -v -12.01 20.21 -15.94 -v -12.01 19.24 -15.94 -v -11.80 20.29 -15.84 -v -11.79 20.29 -15.94 -v -13.10 19.12 -15.95 -v -13.09 19.12 -16.05 -v -12.01 20.21 -16.01 -v -12.86 19.23 -16.09 -v -12.01 19.24 -16.01 -v -12.43 19.21 -16.10 -v -11.79 19.26 -15.94 -v -11.80 19.26 -15.84 -v -13.09 19.26 -16.05 -v -13.10 19.26 -15.95 -v -13.19 19.26 -16.13 -v -13.19 19.12 -16.13 -v -11.67 19.12 -16.00 -v -11.67 19.26 -16.00 -v -9.24 23.34 -12.52 -v -9.78 23.34 -13.29 -v -9.10 24.92 -13.76 -v -8.56 24.92 -12.99 -v -8.63 28.41 -12.92 -v -9.53 28.41 -12.29 -v -9.18 28.41 -13.70 -v -10.08 28.41 -13.07 -v -12.87 27.21 -14.81 -v -12.44 27.52 -14.82 -v -12.44 26.21 -14.82 -v -12.87 26.24 -14.81 -v -13.21 26.26 -14.72 -v -13.20 26.26 -14.82 -v -13.20 26.12 -14.82 -v -13.21 26.12 -14.72 -v -12.44 27.75 -14.80 -v -12.43 27.75 -14.89 -v -13.09 27.30 -14.85 -v -13.10 27.30 -14.75 -v -11.69 26.12 -14.59 -v -11.68 26.12 -14.69 -v -11.68 26.26 -14.69 -v -11.69 26.26 -14.59 -v -12.44 26.07 -14.80 -v -12.43 26.07 -14.89 -v -11.79 26.12 -14.73 -v -11.80 26.12 -14.64 -v -13.08 26.12 -14.96 -v -13.08 26.26 -14.96 -v -12.85 26.24 -14.99 -v -12.43 27.52 -14.89 -v -12.86 27.21 -14.89 -v -11.78 26.26 -14.84 -v -11.78 26.12 -14.84 -v -12.00 26.25 -14.92 -v -12.42 26.07 -15.00 -v -12.42 26.21 -15.00 -v -12.01 27.21 -14.74 -v -12.01 26.25 -14.74 -v -11.80 27.30 -14.64 -v -11.79 27.30 -14.73 -v -13.10 26.12 -14.75 -v -13.09 26.12 -14.85 -v -12.01 27.21 -14.81 -v -12.86 26.24 -14.89 -v -12.01 26.25 -14.81 -v -12.43 26.21 -14.89 -v -11.79 26.26 -14.73 -v -11.80 26.26 -14.64 -v -13.09 26.26 -14.85 -v -13.10 26.26 -14.75 -v -13.19 26.26 -14.93 -v -13.19 26.12 -14.93 -v -11.67 26.12 -14.79 -v -11.67 26.26 -14.79 -v -14.41 23.34 -14.01 -v -15.18 23.34 -13.46 -v -15.65 24.92 -14.14 -v -14.88 24.92 -14.68 -v -14.81 28.41 -14.61 -v -14.18 28.41 -13.71 -v -15.59 28.41 -14.07 -v -14.96 28.41 -13.17 -v -8.43 27.21 -10.98 -v -8.42 27.52 -10.55 -v -8.42 26.21 -10.55 -v -8.43 26.24 -10.98 -v -8.52 26.26 -11.32 -v -8.42 26.26 -11.31 -v -8.42 26.12 -11.31 -v -8.52 26.12 -11.32 -v -8.45 27.75 -10.55 -v -8.35 27.75 -10.54 -v -8.39 27.30 -11.20 -v -8.49 27.30 -11.21 -v -8.65 26.12 -9.80 -v -8.56 26.12 -9.79 -v -8.56 26.26 -9.79 -v -8.65 26.26 -9.80 -v -8.45 26.07 -10.55 -v -8.35 26.07 -10.54 -v -8.51 26.12 -9.90 -v -8.61 26.12 -9.91 -v -8.29 26.12 -11.19 -v -8.29 26.26 -11.19 -v -8.25 26.24 -10.96 -v -8.35 27.52 -10.54 -v -8.35 27.21 -10.97 -v -8.40 26.26 -9.89 -v -8.40 26.12 -9.89 -v -8.32 26.25 -10.11 -v -8.24 26.07 -10.53 -v -8.24 26.21 -10.53 -v -8.50 27.21 -10.13 -v -8.50 26.25 -10.13 -v -8.61 27.30 -9.91 -v -8.51 27.30 -9.90 -v -8.49 26.12 -11.21 -v -8.39 26.12 -11.20 -v -8.43 27.21 -10.12 -v -8.35 26.24 -10.97 -v -8.43 26.25 -10.12 -v -8.35 26.21 -10.54 -v -8.51 26.26 -9.90 -v -8.61 26.26 -9.91 -v -8.39 26.26 -11.20 -v -8.49 26.26 -11.21 -v -8.32 26.26 -11.30 -v -8.32 26.12 -11.30 -v -8.45 26.12 -9.78 -v -8.45 26.26 -9.78 -v -13.04 12.70 -6.81 -v -12.09 12.70 -6.81 -v -12.09 14.28 -5.99 -v -13.04 14.28 -5.99 -v -13.04 17.34 -5.64 -v -13.04 17.34 -6.74 -v -12.09 17.34 -5.64 -v -12.09 17.34 -6.74 -v -8.98 12.70 -12.20 -v -9.46 12.70 -13.02 -v -8.74 14.28 -13.43 -v -8.27 14.28 -12.61 -v -7.97 17.34 -12.79 -v -8.92 17.34 -12.24 -v -8.44 17.34 -13.61 -v -9.39 17.34 -13.06 -v -12.09 12.70 -14.54 -v -13.04 12.70 -14.54 -v -13.04 14.28 -15.36 -v -12.09 14.28 -15.36 -v -12.09 17.34 -15.71 -v -12.09 17.34 -14.62 -v -13.04 17.34 -15.71 -v -13.04 17.34 -14.62 -v -10.73 23.34 -7.35 -v -9.95 23.34 -7.89 -v -9.48 24.92 -7.22 -v -10.25 24.92 -6.67 -v -10.32 28.41 -6.74 -v -10.95 28.41 -7.65 -v -9.55 28.41 -7.29 -v -10.18 28.41 -8.19 -v -9.46 12.70 -8.34 -v -8.98 12.70 -9.15 -v -8.27 14.28 -8.74 -v -8.74 14.28 -7.92 -v -8.44 17.34 -7.75 -v -9.39 17.34 -8.30 -v -7.97 17.34 -8.57 -v -8.92 17.34 -9.12 -v -7.23 20.21 -10.98 -v -7.22 20.52 -10.55 -v -7.22 19.21 -10.55 -v -7.23 19.23 -10.98 -v -7.32 19.26 -11.32 -v -7.22 19.26 -11.31 -v -7.22 19.12 -11.31 -v -7.32 19.12 -11.32 -v -7.24 20.75 -10.55 -v -7.15 20.75 -10.54 -v -7.19 20.29 -11.20 -v -7.29 20.29 -11.21 -v -7.45 19.12 -9.80 -v -7.35 19.12 -9.79 -v -7.35 19.26 -9.79 -v -7.45 19.26 -9.80 -v -7.24 19.07 -10.55 -v -7.15 19.07 -10.54 -v -7.31 19.12 -9.90 -v -7.41 19.12 -9.91 -v -7.09 19.12 -11.19 -v -7.09 19.26 -11.19 -v -7.05 19.23 -10.96 -v -7.15 20.52 -10.54 -v -7.15 20.21 -10.97 -v -7.20 19.26 -9.89 -v -7.20 19.12 -9.89 -v -7.12 19.24 -10.11 -v -7.04 19.07 -10.53 -v -7.04 19.21 -10.53 -v -7.30 20.21 -10.13 -v -7.30 19.24 -10.13 -v -7.41 20.29 -9.91 -v -7.31 20.29 -9.90 -v -7.29 19.12 -11.21 -v -7.19 19.12 -11.20 -v -7.23 20.21 -10.12 -v -7.15 19.23 -10.97 -v -7.23 19.24 -10.12 -v -7.15 19.21 -10.54 -v -7.31 19.26 -9.90 -v -7.41 19.26 -9.91 -v -7.19 19.26 -11.20 -v -7.29 19.26 -11.21 -v -7.11 19.26 -11.30 -v -7.11 19.12 -11.30 -v -7.25 19.12 -9.78 -v -7.25 19.26 -9.78 -v -12.26 27.21 -6.54 -v -12.69 27.52 -6.53 -v -12.69 26.21 -6.53 -v -12.26 26.24 -6.54 -v -11.92 26.26 -6.63 -v -11.93 26.26 -6.53 -v -11.93 26.12 -6.53 -v -11.92 26.12 -6.63 -v -12.69 27.75 -6.56 -v -12.70 27.75 -6.46 -v -12.04 27.30 -6.51 -v -12.03 27.30 -6.60 -v -13.44 26.12 -6.76 -v -13.45 26.12 -6.67 -v -13.45 26.26 -6.67 -v -13.44 26.26 -6.76 -v -12.69 26.07 -6.56 -v -12.70 26.07 -6.46 -v -13.34 26.12 -6.62 -v -13.34 26.12 -6.72 -v -12.05 26.12 -6.40 -v -12.05 26.26 -6.40 -v -12.28 26.24 -6.36 -v -12.70 27.52 -6.46 -v -12.27 27.21 -6.47 -v -13.35 26.26 -6.51 -v -13.35 26.12 -6.51 -v -13.13 26.25 -6.43 -v -12.71 26.07 -6.35 -v -12.71 26.21 -6.35 -v -13.12 27.21 -6.61 -v -13.12 26.25 -6.61 -v -13.34 27.30 -6.72 -v -13.34 27.30 -6.62 -v -12.03 26.12 -6.60 -v -12.04 26.12 -6.51 -v -13.12 27.21 -6.54 -v -12.27 26.24 -6.47 -v -13.12 26.25 -6.54 -v -12.70 26.21 -6.46 -v -13.34 26.26 -6.62 -v -13.34 26.26 -6.72 -v -12.04 26.26 -6.51 -v -12.03 26.26 -6.60 -v -11.94 26.26 -6.43 -v -11.94 26.12 -6.43 -v -13.46 26.12 -6.56 -v -13.46 26.26 -6.56 -v -16.15 12.70 -9.15 -v -15.67 12.70 -8.34 -v -16.39 14.28 -7.92 -v -16.86 14.28 -8.74 -v -17.17 17.34 -8.57 -v -16.21 17.34 -9.12 -v -16.69 17.34 -7.75 -v -15.74 17.34 -8.30 -v -12.26 20.21 -5.34 -v -12.69 20.52 -5.33 -v -12.69 19.21 -5.33 -v -12.26 19.23 -5.34 -v -11.92 19.26 -5.43 -v -11.93 19.26 -5.33 -v -11.93 19.12 -5.33 -v -11.92 19.12 -5.43 -v -12.69 20.75 -5.36 -v -12.70 20.75 -5.26 -v -12.04 20.29 -5.30 -v -12.03 20.29 -5.40 -v -13.44 19.12 -5.56 -v -13.45 19.12 -5.47 -v -13.45 19.26 -5.47 -v -13.44 19.26 -5.56 -v -12.69 19.07 -5.36 -v -12.70 19.07 -5.26 -v -13.34 19.12 -5.42 -v -13.34 19.12 -5.52 -v -12.05 19.12 -5.20 -v -12.05 19.26 -5.20 -v -12.28 19.23 -5.16 -v -12.70 20.52 -5.26 -v -12.27 20.21 -5.26 -v -13.35 19.26 -5.31 -v -13.35 19.12 -5.31 -v -13.13 19.24 -5.23 -v -12.71 19.07 -5.15 -v -12.71 19.21 -5.15 -v -13.12 20.21 -5.41 -v -13.12 19.24 -5.41 -v -13.34 20.29 -5.52 -v -13.34 20.29 -5.42 -v -12.03 19.12 -5.40 -v -12.04 19.12 -5.30 -v -13.12 20.21 -5.34 -v -12.27 19.23 -5.26 -v -13.12 19.24 -5.34 -v -12.70 19.21 -5.26 -v -13.34 19.26 -5.42 -v -13.34 19.26 -5.52 -v -12.04 19.26 -5.30 -v -12.03 19.26 -5.40 -v -11.94 19.26 -5.23 -v -11.94 19.12 -5.23 -v -13.46 19.12 -5.36 -v -13.46 19.26 -5.36 -v -15.89 23.34 -8.84 -v -15.35 23.34 -8.06 -v -16.03 24.92 -7.59 -v -16.57 24.92 -8.36 -v -16.50 28.41 -8.43 -v -15.60 28.41 -9.06 -v -15.96 28.41 -7.66 -v -15.06 28.41 -8.29 -v -16.70 27.21 -10.37 -v -16.71 27.52 -10.80 -v -16.71 26.21 -10.80 -v -16.70 26.24 -10.37 -v -16.61 26.26 -10.03 -v -16.71 26.26 -10.04 -v -16.71 26.12 -10.04 -v -16.61 26.12 -10.03 -v -16.69 27.75 -10.80 -v -16.78 27.75 -10.81 -v -16.74 27.30 -10.15 -v -16.64 27.30 -10.15 -v -16.48 26.12 -11.55 -v -16.58 26.12 -11.56 -v -16.58 26.26 -11.56 -v -16.48 26.26 -11.55 -v -16.69 26.07 -10.80 -v -16.78 26.07 -10.81 -v -16.62 26.12 -11.45 -v -16.53 26.12 -11.45 -v -16.84 26.12 -10.16 -v -16.84 26.26 -10.16 -v -16.88 26.24 -10.39 -v -16.78 27.52 -10.81 -v -16.78 27.21 -10.38 -v -16.73 26.26 -11.46 -v -16.73 26.12 -11.46 -v -16.81 26.25 -11.24 -v -16.89 26.07 -10.82 -v -16.89 26.21 -10.82 -v -16.63 27.21 -11.23 -v -16.63 26.25 -11.23 -v -16.53 27.30 -11.45 -v -16.62 27.30 -11.45 -v -16.64 26.12 -10.15 -v -16.74 26.12 -10.15 -v -16.70 27.21 -11.23 -v -16.78 26.24 -10.38 -v -16.70 26.25 -11.23 -v -16.78 26.21 -10.81 -v -16.62 26.26 -11.45 -v -16.53 26.26 -11.45 -v -16.74 26.26 -10.15 -v -16.64 26.26 -10.15 -v -16.82 26.26 -10.05 -v -16.82 26.12 -10.05 -v -16.68 26.12 -11.57 -v -16.68 26.26 -11.57 -v -15.67 12.70 -13.02 -v -16.15 12.70 -12.20 -v -16.86 14.28 -12.61 -v -16.39 14.28 -13.43 -v -16.69 17.34 -13.61 -v -15.74 17.34 -13.06 -v -17.17 17.34 -12.79 -v -16.21 17.34 -12.24 -v -16.83 28.50 -13.14 -v -17.49 28.50 -10.68 -v -17.49 30.29 -10.68 -v -16.83 30.29 -13.14 -v -15.03 28.50 -14.94 -v -15.03 30.29 -14.94 -v -12.57 28.50 -15.60 -v -12.57 30.29 -15.60 -v -10.10 28.50 -14.94 -v -10.10 30.29 -14.94 -v -8.30 28.50 -13.14 -v -8.30 30.29 -13.14 -v -7.64 28.50 -10.68 -v -7.64 30.29 -10.68 -v -8.30 28.50 -8.21 -v -8.30 30.29 -8.21 -v -10.10 28.50 -6.41 -v -10.10 30.29 -6.41 -v -12.57 28.50 -5.75 -v -12.57 30.29 -5.75 -v -15.03 28.50 -6.41 -v -15.03 30.29 -6.41 -v -16.83 28.50 -8.21 -v -16.83 30.29 -8.21 -v -16.78 30.29 -10.68 -v -16.21 30.29 -12.78 -v -15.03 30.90 -14.94 -v -16.83 30.90 -13.14 -v -16.21 30.90 -12.78 -v -14.67 30.90 -14.32 -v -14.67 30.29 -14.32 -v -12.57 30.29 -14.89 -v -10.10 30.90 -14.94 -v -12.57 30.90 -15.60 -v -12.57 30.90 -14.89 -v -10.46 30.90 -14.32 -v -10.46 30.29 -14.32 -v -8.92 30.29 -12.78 -v -7.64 30.90 -10.68 -v -8.30 30.90 -13.14 -v -8.92 30.90 -12.78 -v -8.36 30.90 -10.68 -v -8.36 30.29 -10.68 -v -8.92 30.29 -8.57 -v -10.10 30.90 -6.41 -v -8.30 30.90 -8.21 -v -8.92 30.90 -8.57 -v -10.46 30.90 -7.03 -v -10.46 30.29 -7.03 -v -12.57 30.29 -6.47 -v -15.03 30.90 -6.41 -v -12.57 30.90 -5.75 -v -12.57 30.90 -6.47 -v -14.67 30.90 -7.03 -v -14.67 30.29 -7.03 -v -16.21 30.29 -8.57 -v -17.49 30.90 -10.68 -v -16.83 30.90 -8.21 -v -16.21 30.90 -8.57 -v -16.78 30.90 -10.68 -v -16.78 29.42 -10.68 -v -16.21 29.42 -12.78 -v -14.67 29.42 -14.32 -v -12.57 29.42 -14.89 -v -10.46 29.42 -14.32 -v -8.92 29.42 -12.78 -v -8.36 29.42 -10.68 -v -8.92 29.42 -8.57 -v -10.46 29.42 -7.03 -v -12.57 29.42 -6.47 -v -14.67 29.42 -7.03 -v -16.21 29.42 -8.57 -v -12.57 29.42 -10.68 -v 15.69 11.78 11.98 -v 15.69 11.78 -12.46 -v 10.74 17.79 -7.40 -v 10.74 17.79 7.40 -v -15.69 11.78 -12.46 -v -10.74 17.79 -7.40 -v -15.69 11.78 11.98 -v -10.74 17.79 7.40 -v 12.89 0.00 11.03 -v 12.89 0.00 -11.03 -v 12.89 11.78 -11.03 -v 12.89 11.78 11.03 -v -12.89 0.00 -11.03 -v -12.89 11.78 -11.03 -v -23.42 0.00 -6.76 -v -23.42 0.00 6.76 -v -23.42 6.95 6.76 -v -23.42 6.95 -6.76 -v -12.89 0.00 11.03 -v -12.89 11.78 11.03 -v 8.74 17.79 -3.62 -v 8.74 17.79 3.62 -v -8.74 17.79 -3.62 -v -8.74 17.79 3.62 -v -12.89 6.95 6.76 -v -12.89 0.00 6.76 -v -12.89 6.95 -6.76 -v -12.89 0.00 -6.76 -v -9.46 12.70 7.57 -v -8.74 14.28 7.16 -v -8.27 14.28 7.98 -v -8.98 12.70 8.39 -v -9.39 17.34 7.53 -v -8.44 17.34 6.98 -v -7.97 17.34 7.80 -v -8.92 17.34 8.35 -v -9.31 28.15 -0.00 -v -9.31 23.30 4.54 -v 0.00 22.65 4.30 -v -0.11 25.84 -0.00 -v -9.31 27.72 -0.00 -v -9.31 22.87 4.55 -v 0.00 22.23 4.31 -v 0.00 22.65 -4.30 -v -9.31 23.30 -4.54 -v -9.31 22.87 -4.55 -v 0.00 22.23 -4.31 -v 9.31 28.15 -0.00 -v 9.31 23.30 4.54 -v 9.31 27.72 -0.00 -v 9.31 22.87 4.55 -v 9.31 23.30 -4.54 -v 9.31 22.87 -4.55 -v 4.76 26.71 -0.63 -v 5.87 26.95 -0.63 -v 5.91 26.75 -0.63 -v 4.80 26.52 -0.63 -v 4.68 27.10 -0.11 -v 5.79 27.34 -0.11 -v 4.72 26.91 -0.11 -v 5.79 27.35 -0.00 -v 4.68 27.12 -0.00 -v 4.72 26.93 -0.00 -v 5.91 26.75 0.63 -v 5.87 26.95 0.63 -v 4.76 26.71 0.63 -v 4.80 26.52 0.63 -v 5.79 27.34 0.11 -v 4.68 27.10 0.11 -v 4.72 26.91 0.11 -v 3.88 26.49 -0.63 -v 5.00 26.69 -0.63 -v 5.03 26.49 -0.63 -v 3.91 26.30 -0.63 -v 3.81 26.89 -0.11 -v 4.93 27.08 -0.11 -v 3.84 26.69 -0.11 -v 4.92 27.09 -0.00 -v 3.81 26.90 -0.00 -v 3.84 26.71 -0.00 -v 5.03 26.49 0.63 -v 5.00 26.69 0.63 -v 3.88 26.49 0.63 -v 3.91 26.30 0.63 -v 4.93 27.08 0.11 -v 3.81 26.89 0.11 -v 3.84 26.69 0.11 -v 2.89 26.32 -0.63 -v 4.01 26.46 -0.63 -v 4.04 26.27 -0.63 -v 2.91 26.13 -0.63 -v 2.84 26.72 -0.11 -v 3.96 26.86 -0.11 -v 2.86 26.53 -0.11 -v 3.96 26.87 -0.00 -v 2.84 26.74 -0.00 -v 2.86 26.54 -0.00 -v 4.04 26.27 0.63 -v 4.01 26.46 0.63 -v 2.89 26.32 0.63 -v 2.91 26.13 0.63 -v 3.96 26.86 0.11 -v 2.84 26.72 0.11 -v 2.86 26.53 0.11 -v 1.88 26.15 -0.63 -v 3.00 26.29 -0.63 -v 3.02 26.09 -0.63 -v 1.90 25.96 -0.63 -v 1.83 26.55 -0.11 -v 2.95 26.69 -0.11 -v 1.85 26.36 -0.11 -v 2.95 26.70 -0.00 -v 1.83 26.56 -0.00 -v 1.85 26.37 -0.00 -v 3.02 26.09 0.63 -v 3.00 26.29 0.63 -v 1.88 26.15 0.63 -v 1.90 25.96 0.63 -v 2.95 26.69 0.11 -v 1.83 26.55 0.11 -v 1.85 26.36 0.11 -v 0.78 26.08 -0.63 -v 1.91 26.12 -0.63 -v 1.92 25.93 -0.63 -v 0.79 25.89 -0.63 -v 0.77 26.49 -0.11 -v 1.90 26.52 -0.11 -v 0.77 26.29 -0.11 -v 1.90 26.54 -0.00 -v 0.77 26.50 -0.00 -v 0.77 26.30 -0.00 -v 1.92 25.93 0.63 -v 1.91 26.12 0.63 -v 0.78 26.08 0.63 -v 0.79 25.89 0.63 -v 1.90 26.52 0.11 -v 0.77 26.49 0.11 -v 0.77 26.29 0.11 -v -0.35 26.05 -0.63 -v 0.78 26.11 -0.63 -v 0.79 25.91 -0.63 -v -0.34 25.85 -0.63 -v -0.37 26.45 -0.11 -v 0.76 26.51 -0.11 -v -0.36 26.25 -0.11 -v 0.76 26.52 -0.00 -v -0.38 26.46 -0.00 -v -0.37 26.27 -0.00 -v 0.79 25.91 0.63 -v 0.78 26.11 0.63 -v -0.35 26.05 0.63 -v -0.34 25.85 0.63 -v 0.76 26.51 0.11 -v -0.37 26.45 0.11 -v -0.36 26.25 0.11 -v 6.98 27.27 -0.63 -v 8.09 27.50 -0.63 -v 8.13 27.31 -0.63 -v 7.02 27.08 -0.63 -v 6.90 27.66 -0.11 -v 8.01 27.90 -0.11 -v 6.94 27.47 -0.11 -v 8.00 27.91 -0.00 -v 6.89 27.68 -0.00 -v 6.93 27.48 -0.00 -v 8.13 27.31 0.63 -v 8.09 27.50 0.63 -v 6.98 27.27 0.63 -v 7.02 27.08 0.63 -v 8.01 27.90 0.11 -v 6.90 27.66 0.11 -v 6.94 27.47 0.11 -v 5.87 26.96 -0.63 -v 6.98 27.20 -0.63 -v 7.02 27.01 -0.63 -v 5.91 26.77 -0.63 -v 5.79 27.36 -0.11 -v 6.90 27.59 -0.11 -v 5.83 27.17 -0.11 -v 6.89 27.60 -0.00 -v 5.79 27.37 -0.00 -v 5.83 27.18 -0.00 -v 7.02 27.01 0.63 -v 6.98 27.20 0.63 -v 5.87 26.96 0.63 -v 5.91 26.77 0.63 -v 6.90 27.59 0.11 -v 5.79 27.36 0.11 -v 5.83 27.17 0.11 -v -6.20 26.77 -0.63 -v -6.16 26.96 -0.63 -v -5.05 26.72 -0.63 -v -5.09 26.53 -0.63 -v -4.97 27.12 -0.11 -v -6.08 27.35 -0.11 -v -5.01 26.92 -0.11 -v -6.07 27.36 -0.00 -v -4.96 27.13 -0.00 -v -5.01 26.94 -0.00 -v -5.05 26.72 0.63 -v -6.16 26.96 0.63 -v -6.20 26.77 0.63 -v -5.09 26.53 0.63 -v -4.97 27.12 0.11 -v -6.08 27.35 0.11 -v -5.01 26.92 0.11 -v -5.32 26.52 -0.63 -v -5.28 26.71 -0.63 -v -4.17 26.51 -0.63 -v -4.20 26.32 -0.63 -v -4.10 26.91 -0.11 -v -5.21 27.11 -0.11 -v -4.13 26.72 -0.11 -v -5.21 27.12 -0.00 -v -4.10 26.92 -0.00 -v -4.13 26.73 -0.00 -v -4.17 26.51 0.63 -v -5.28 26.71 0.63 -v -5.32 26.52 0.63 -v -4.20 26.32 0.63 -v -4.10 26.91 0.11 -v -5.21 27.11 0.11 -v -4.13 26.72 0.11 -v -4.32 26.27 -0.63 -v -4.30 26.46 -0.63 -v -3.18 26.32 -0.63 -v -3.20 26.13 -0.63 -v -3.13 26.72 -0.11 -v -4.25 26.86 -0.11 -v -3.15 26.53 -0.11 -v -4.25 26.87 -0.00 -v -3.13 26.73 -0.00 -v -3.15 26.54 -0.00 -v -3.18 26.32 0.63 -v -4.30 26.46 0.63 -v -4.32 26.27 0.63 -v -3.20 26.13 0.63 -v -3.13 26.72 0.11 -v -4.25 26.86 0.11 -v -3.15 26.53 0.11 -v -3.31 26.05 -0.63 -v -3.29 26.24 -0.63 -v -2.16 26.11 -0.63 -v -2.19 25.91 -0.63 -v -2.12 26.50 -0.11 -v -3.24 26.64 -0.11 -v -2.14 26.31 -0.11 -v -3.24 26.65 -0.00 -v -2.11 26.52 -0.00 -v -2.14 26.32 -0.00 -v -2.16 26.11 0.63 -v -3.29 26.24 0.63 -v -3.31 26.05 0.63 -v -2.19 25.91 0.63 -v -2.12 26.50 0.11 -v -3.24 26.64 0.11 -v -2.14 26.31 0.11 -v -2.21 25.88 -0.63 -v -2.20 26.08 -0.63 -v -1.07 26.04 -0.63 -v -1.07 25.84 -0.63 -v -1.05 26.44 -0.11 -v -2.19 26.48 -0.11 -v -1.06 26.25 -0.11 -v -2.19 26.49 -0.00 -v -1.05 26.45 -0.00 -v -1.06 26.26 -0.00 -v -1.07 26.04 0.63 -v -2.20 26.08 0.63 -v -2.21 25.88 0.63 -v -1.07 25.84 0.63 -v -1.05 26.44 0.11 -v -2.19 26.48 0.11 -v -1.06 26.25 0.11 -v -1.08 25.87 -0.63 -v -1.07 26.06 -0.63 -v 0.07 26.00 -0.63 -v 0.06 25.80 -0.63 -v 0.09 26.40 -0.11 -v -1.04 26.46 -0.11 -v 0.08 26.21 -0.11 -v -1.04 26.47 -0.00 -v 0.09 26.41 -0.00 -v 0.08 26.22 -0.00 -v 0.07 26.00 0.63 -v -1.07 26.06 0.63 -v -1.08 25.87 0.63 -v 0.06 25.80 0.63 -v 0.09 26.40 0.11 -v -1.04 26.46 0.11 -v 0.08 26.21 0.11 -v -8.19 27.32 -0.63 -v -8.15 27.51 -0.63 -v -7.04 27.28 -0.63 -v -7.08 27.09 -0.63 -v -6.96 27.67 -0.11 -v -8.07 27.90 -0.11 -v -7.00 27.48 -0.11 -v -8.06 27.92 -0.00 -v -6.95 27.68 -0.00 -v -6.99 27.49 -0.00 -v -7.04 27.28 0.63 -v -8.15 27.51 0.63 -v -8.19 27.32 0.63 -v -7.08 27.09 0.63 -v -6.96 27.67 0.11 -v -8.07 27.90 0.11 -v -7.00 27.48 0.11 -v -7.06 27.02 -0.63 -v -7.02 27.21 -0.63 -v -5.92 26.97 -0.63 -v -5.96 26.78 -0.63 -v -5.83 27.37 -0.11 -v -6.94 27.60 -0.11 -v -5.87 27.18 -0.11 -v -6.94 27.61 -0.00 -v -5.83 27.38 -0.00 -v -5.87 27.19 -0.00 -v -5.92 26.97 0.63 -v -7.02 27.21 0.63 -v -7.06 27.02 0.63 -v -5.96 26.78 0.63 -v -5.83 27.37 0.11 -v -6.94 27.60 0.11 -v -5.87 27.18 0.11 -v -9.18 27.83 -0.63 -v -8.10 27.48 -0.63 -v -8.16 27.29 -0.63 -v -9.24 27.64 -0.63 -v -9.05 28.21 -0.11 -v -7.98 27.86 -0.11 -v -9.11 28.02 -0.11 -v -7.97 27.87 -0.00 -v -9.05 28.22 -0.00 -v -9.11 28.04 -0.00 -v -8.16 27.29 0.63 -v -8.10 27.48 0.63 -v -9.18 27.83 0.63 -v -9.24 27.64 0.63 -v -7.98 27.86 0.11 -v -9.05 28.21 0.11 -v -9.11 28.02 0.11 -v 8.19 27.28 -0.63 -v 8.13 27.46 -0.63 -v 9.21 27.81 -0.63 -v 9.27 27.63 -0.63 -v 9.08 28.20 -0.11 -v 8.01 27.84 -0.11 -v 9.15 28.01 -0.11 -v 8.00 27.86 -0.00 -v 9.08 28.21 -0.00 -v 9.14 28.02 -0.00 -v 9.21 27.81 0.63 -v 8.13 27.46 0.63 -v 8.19 27.28 0.63 -v 9.27 27.63 0.63 -v 9.08 28.20 0.11 -v 8.01 27.84 0.11 -v 9.15 28.01 0.11 -v 9.46 12.70 7.57 -v 8.98 12.70 8.39 -v 8.27 14.28 7.98 -v 8.74 14.28 7.16 -v 8.44 17.34 6.98 -v 9.39 17.34 7.53 -v 7.97 17.34 7.80 -v 8.92 17.34 8.35 -v -15.48 7.80 6.90 -v -15.48 7.80 6.03 -v -17.46 7.80 6.03 -v -17.46 7.80 6.90 -v -15.48 6.95 6.90 -v -15.48 6.95 6.03 -v -17.46 6.95 6.03 -v -17.46 6.95 6.90 -v -18.47 7.80 6.90 -v -18.47 7.80 6.03 -v -20.45 7.80 6.03 -v -20.45 7.80 6.90 -v -18.47 6.95 6.90 -v -18.47 6.95 6.03 -v -20.45 6.95 6.03 -v -20.45 6.95 6.90 -v -21.45 7.80 6.90 -v -21.45 7.80 6.03 -v -23.44 7.80 6.03 -v -23.44 7.80 6.90 -v -21.45 6.95 6.90 -v -21.45 6.95 6.03 -v -23.44 6.95 6.03 -v -23.44 6.95 6.90 -v -23.40 7.80 5.50 -v -22.53 7.80 5.50 -v -22.53 7.80 3.51 -v -23.40 7.80 3.51 -v -23.40 6.95 5.50 -v -22.53 6.95 5.50 -v -22.53 6.95 3.51 -v -23.40 6.95 3.51 -v -23.40 7.80 2.51 -v -22.53 7.80 2.51 -v -22.53 7.80 0.53 -v -23.40 7.80 0.53 -v -23.40 6.95 2.51 -v -22.53 6.95 2.51 -v -22.53 6.95 0.53 -v -23.40 6.95 0.53 -v -23.40 7.80 -0.48 -v -22.53 7.80 -0.48 -v -22.53 7.80 -2.46 -v -23.40 7.80 -2.46 -v -23.40 6.95 -0.48 -v -22.53 6.95 -0.48 -v -22.53 6.95 -2.46 -v -23.40 6.95 -2.46 -v -23.40 7.80 -3.47 -v -22.53 7.80 -3.47 -v -22.53 7.80 -5.45 -v -23.40 7.80 -5.45 -v -23.40 6.95 -3.47 -v -22.53 6.95 -3.47 -v -22.53 6.95 -5.45 -v -23.40 6.95 -5.45 -v -21.45 7.80 -6.02 -v -21.45 7.80 -6.88 -v -23.44 7.80 -6.88 -v -23.44 7.80 -6.02 -v -21.45 6.95 -6.02 -v -21.45 6.95 -6.88 -v -23.44 6.95 -6.88 -v -23.44 6.95 -6.02 -v -18.47 7.80 -6.02 -v -18.47 7.80 -6.88 -v -20.45 7.80 -6.88 -v -20.45 7.80 -6.02 -v -18.47 6.95 -6.02 -v -18.47 6.95 -6.88 -v -20.45 6.95 -6.88 -v -20.45 6.95 -6.02 -v -15.48 7.80 -6.02 -v -15.48 7.80 -6.88 -v -17.46 7.80 -6.88 -v -17.46 7.80 -6.02 -v -15.48 6.95 -6.02 -v -15.48 6.95 -6.88 -v -17.46 6.95 -6.88 -v -17.46 6.95 -6.02 -v -7.10 7.80 -12.06 -v -7.10 7.80 -12.93 -v -9.08 7.80 -12.93 -v -9.08 7.80 -12.06 -v -7.10 6.95 -12.06 -v -7.10 6.95 -12.93 -v -9.08 6.95 -12.93 -v -9.08 6.95 -12.06 -v -4.46 7.80 -12.06 -v -4.46 7.80 -12.93 -v -6.45 7.80 -12.93 -v -6.45 7.80 -12.06 -v -4.46 6.95 -12.06 -v -4.46 6.95 -12.93 -v -6.45 6.95 -12.93 -v -6.45 6.95 -12.06 -v -1.83 7.80 -12.06 -v -1.83 7.80 -12.93 -v -3.81 7.80 -12.93 -v -3.81 7.80 -12.06 -v -1.83 6.95 -12.06 -v -1.83 6.95 -12.93 -v -3.81 6.95 -12.93 -v -3.81 6.95 -12.06 -v 0.81 7.80 -12.06 -v 0.81 7.80 -12.93 -v -1.17 7.80 -12.93 -v -1.17 7.80 -12.06 -v 0.81 6.95 -12.06 -v 0.81 6.95 -12.93 -v -1.17 6.95 -12.93 -v -1.17 6.95 -12.06 -v 3.44 7.80 -12.06 -v 3.44 7.80 -12.93 -v 1.46 7.80 -12.93 -v 1.46 7.80 -12.06 -v 3.44 6.95 -12.06 -v 3.44 6.95 -12.93 -v 1.46 6.95 -12.93 -v 1.46 6.95 -12.06 -v 6.08 7.80 -12.06 -v 6.08 7.80 -12.93 -v 4.10 7.80 -12.93 -v 4.10 7.80 -12.06 -v 6.08 6.95 -12.06 -v 6.08 6.95 -12.93 -v 4.10 6.95 -12.93 -v 4.10 6.95 -12.06 -v 8.72 7.80 -12.06 -v 8.72 7.80 -12.93 -v 6.74 7.80 -12.93 -v 6.74 7.80 -12.06 -v 8.72 6.95 -12.06 -v 8.72 6.95 -12.93 -v 6.74 6.95 -12.93 -v 6.74 6.95 -12.06 -v -4.39 18.64 -6.78 -v -4.39 18.64 -7.64 -v -6.37 18.64 -7.64 -v -6.37 18.64 -6.78 -v -4.39 17.79 -6.78 -v -4.39 17.79 -7.64 -v -6.37 17.79 -7.64 -v -6.37 17.79 -6.78 -v -1.66 18.64 -6.78 -v -1.66 18.64 -7.64 -v -3.64 18.64 -7.64 -v -3.64 18.64 -6.78 -v -1.66 17.79 -6.78 -v -1.66 17.79 -7.64 -v -3.64 17.79 -7.64 -v -3.64 17.79 -6.78 -v 1.06 18.64 -6.78 -v 1.06 18.64 -7.64 -v -0.92 18.64 -7.64 -v -0.92 18.64 -6.78 -v 1.06 17.79 -6.78 -v 1.06 17.79 -7.64 -v -0.92 17.79 -7.64 -v -0.92 17.79 -6.78 -v 3.79 18.64 -6.78 -v 3.79 18.64 -7.64 -v 1.80 18.64 -7.64 -v 1.80 18.64 -6.78 -v 3.79 17.79 -6.78 -v 3.79 17.79 -7.64 -v 1.80 17.79 -7.64 -v 1.80 17.79 -6.78 -v 6.51 18.64 -6.78 -v 6.51 18.64 -7.64 -v 4.53 18.64 -7.64 -v 4.53 18.64 -6.78 -v 6.51 17.79 -6.78 -v 6.51 17.79 -7.64 -v 4.53 17.79 -7.64 -v 4.53 17.79 -6.78 -v 9.24 18.64 -6.78 -v 9.24 18.64 -7.64 -v 7.25 18.64 -7.64 -v 7.25 18.64 -6.78 -v 9.24 17.79 -6.78 -v 9.24 17.79 -7.64 -v 7.25 17.79 -7.64 -v 7.25 17.79 -6.78 -v -7.11 18.64 -6.78 -v -7.11 18.64 -7.64 -v -9.09 18.64 -7.64 -v -9.09 18.64 -6.78 -v -7.11 17.79 -6.78 -v -7.11 17.79 -7.64 -v -9.09 17.79 -7.64 -v -9.09 17.79 -6.78 -v -9.92 18.64 -6.55 -v -10.78 18.64 -6.55 -v -10.78 18.64 -4.56 -v -9.92 18.64 -4.56 -v -9.92 17.79 -6.55 -v -10.78 17.79 -6.55 -v -10.78 17.79 -4.56 -v -9.92 17.79 -4.56 -v -9.92 18.64 -3.82 -v -10.78 18.64 -3.82 -v -10.78 18.64 -1.84 -v -9.92 18.64 -1.84 -v -9.92 17.79 -3.82 -v -10.78 17.79 -3.82 -v -10.78 17.79 -1.84 -v -9.92 17.79 -1.84 -v -9.92 18.64 -1.10 -v -10.78 18.64 -1.10 -v -10.78 18.64 0.88 -v -9.92 18.64 0.88 -v -9.92 17.79 -1.10 -v -10.78 17.79 -1.10 -v -10.78 17.79 0.88 -v -9.92 17.79 0.88 -v -9.92 18.64 1.63 -v -10.78 18.64 1.63 -v -10.78 18.64 3.61 -v -9.92 18.64 3.61 -v -9.92 17.79 1.63 -v -10.78 17.79 1.63 -v -10.78 17.79 3.61 -v -9.92 17.79 3.61 -v -7.11 18.64 7.48 -v -7.11 18.64 6.62 -v -9.09 18.64 6.62 -v -9.09 18.64 7.48 -v -7.11 17.79 7.48 -v -7.11 17.79 6.62 -v -9.09 17.79 6.62 -v -9.09 17.79 7.48 -v -4.39 18.64 7.48 -v -4.39 18.64 6.62 -v -6.37 18.64 6.62 -v -6.37 18.64 7.48 -v -4.39 17.79 7.48 -v -4.39 17.79 6.62 -v -6.37 17.79 6.62 -v -6.37 17.79 7.48 -v -1.66 18.64 7.48 -v -1.66 18.64 6.62 -v -3.64 18.64 6.62 -v -3.64 18.64 7.48 -v -1.66 17.79 7.48 -v -1.66 17.79 6.62 -v -3.64 17.79 6.62 -v -3.64 17.79 7.48 -v 1.06 18.64 7.48 -v 1.06 18.64 6.62 -v -0.92 18.64 6.62 -v -0.92 18.64 7.48 -v 1.06 17.79 7.48 -v 1.06 17.79 6.62 -v -0.92 17.79 6.62 -v -0.92 17.79 7.48 -v 3.79 18.64 7.48 -v 3.79 18.64 6.62 -v 1.80 18.64 6.62 -v 1.80 18.64 7.48 -v 3.79 17.79 7.48 -v 3.79 17.79 6.62 -v 1.80 17.79 6.62 -v 1.80 17.79 7.48 -v 9.24 18.64 7.48 -v 9.24 18.64 6.62 -v 7.25 18.64 6.62 -v 7.25 18.64 7.48 -v 9.24 17.79 7.48 -v 9.24 17.79 6.62 -v 7.25 17.79 6.62 -v 7.25 17.79 7.48 -v 6.51 18.64 7.48 -v 6.51 18.64 6.62 -v 4.53 18.64 6.62 -v 4.53 18.64 7.48 -v 6.51 17.79 7.48 -v 6.51 17.79 6.62 -v 4.53 17.79 6.62 -v 4.53 17.79 7.48 -v 10.85 18.64 -6.55 -v 9.99 18.64 -6.55 -v 9.99 18.64 -4.56 -v 10.85 18.64 -4.56 -v 10.85 17.79 -6.55 -v 9.99 17.79 -6.55 -v 9.99 17.79 -4.56 -v 10.85 17.79 -4.56 -v 10.85 18.64 -3.82 -v 9.99 18.64 -3.82 -v 9.99 18.64 -1.84 -v 10.85 18.64 -1.84 -v 10.85 17.79 -3.82 -v 9.99 17.79 -3.82 -v 9.99 17.79 -1.84 -v 10.85 17.79 -1.84 -v 10.85 18.64 -1.10 -v 9.99 18.64 -1.10 -v 9.99 18.64 0.88 -v 10.85 18.64 0.88 -v 10.85 17.79 -1.10 -v 9.99 17.79 -1.10 -v 9.99 17.79 0.88 -v 10.85 17.79 0.88 -v 10.85 18.64 1.63 -v 9.99 18.64 1.63 -v 9.99 18.64 3.61 -v 10.85 18.64 3.61 -v 10.85 17.79 1.63 -v 9.99 17.79 1.63 -v 9.99 17.79 3.61 -v 10.85 17.79 3.61 -v 10.85 18.64 4.35 -v 9.99 18.64 4.35 -v 9.99 18.64 6.33 -v 10.85 18.64 6.33 -v 10.85 17.79 4.35 -v 9.99 17.79 4.35 -v 9.99 17.79 6.33 -v 10.85 17.79 6.33 -v 11.17 6.95 -11.03 -v 11.17 6.95 -12.83 -v -11.17 6.95 -12.83 -v -11.17 6.95 -11.03 -v 11.17 -0.02 -12.83 -v -11.17 -0.02 -12.83 -v -19.96 4.66 -6.77 -v -19.60 5.22 -6.77 -v -19.60 2.88 -6.77 -v -19.96 2.92 -6.77 -v -20.24 2.96 -6.83 -v -20.24 2.71 -6.83 -v -20.24 2.71 -6.75 -v -20.24 2.96 -6.75 -v -19.60 5.63 -6.83 -v -20.15 4.82 -6.83 -v -20.15 4.82 -6.75 -v -19.60 5.63 -6.75 -v -18.96 2.71 -6.83 -v -18.96 2.96 -6.83 -v -18.96 2.96 -6.75 -v -18.96 2.71 -6.75 -v -19.60 2.63 -6.83 -v -19.05 2.71 -6.83 -v -19.05 2.71 -6.75 -v -19.60 2.63 -6.75 -v -20.15 2.71 -6.92 -v -20.15 2.96 -6.92 -v -19.96 2.92 -6.92 -v -19.60 5.22 -6.83 -v -19.96 4.66 -6.83 -v -19.05 2.96 -6.92 -v -19.05 2.71 -6.92 -v -19.24 2.94 -6.92 -v -19.60 2.63 -6.92 -v -19.60 2.88 -6.92 -v -19.24 4.66 -6.77 -v -19.24 2.94 -6.77 -v -19.05 4.82 -6.83 -v -19.05 4.82 -6.75 -v -20.15 2.71 -6.83 -v -20.15 2.71 -6.75 -v -19.24 4.66 -6.83 -v -19.96 2.92 -6.83 -v -19.24 2.94 -6.83 -v -19.60 2.88 -6.83 -v -19.05 2.96 -6.83 -v -19.05 2.96 -6.75 -v -20.15 2.96 -6.83 -v -20.15 2.96 -6.75 -v -20.24 2.96 -6.92 -v -20.24 2.71 -6.92 -v -18.96 2.71 -6.92 -v -18.96 2.96 -6.92 -v -6.81 4.66 -12.83 -v -6.45 5.22 -12.83 -v -6.45 2.88 -12.83 -v -6.81 2.92 -12.83 -v -7.09 2.96 -12.89 -v -7.09 2.71 -12.89 -v -7.09 2.71 -12.81 -v -7.09 2.96 -12.81 -v -6.45 5.63 -12.89 -v -6.99 4.82 -12.89 -v -6.99 4.82 -12.81 -v -6.45 5.63 -12.81 -v -5.81 2.71 -12.89 -v -5.81 2.96 -12.89 -v -5.81 2.96 -12.81 -v -5.81 2.71 -12.81 -v -6.45 2.63 -12.89 -v -5.90 2.71 -12.89 -v -5.90 2.71 -12.81 -v -6.45 2.63 -12.81 -v -6.99 2.71 -12.98 -v -6.99 2.96 -12.98 -v -6.81 2.92 -12.98 -v -6.45 5.22 -12.89 -v -6.81 4.66 -12.89 -v -5.90 2.96 -12.98 -v -5.90 2.71 -12.98 -v -6.09 2.94 -12.98 -v -6.45 2.63 -12.98 -v -6.45 2.88 -12.98 -v -6.09 4.66 -12.83 -v -6.09 2.94 -12.83 -v -5.90 4.82 -12.89 -v -5.90 4.82 -12.81 -v -6.99 2.71 -12.89 -v -6.99 2.71 -12.81 -v -6.09 4.66 -12.89 -v -6.81 2.92 -12.89 -v -6.09 2.94 -12.89 -v -6.45 2.88 -12.89 -v -5.90 2.96 -12.89 -v -5.90 2.96 -12.81 -v -6.99 2.96 -12.89 -v -6.99 2.96 -12.81 -v -7.09 2.96 -12.98 -v -7.09 2.71 -12.98 -v -5.81 2.71 -12.98 -v -5.81 2.96 -12.98 -v -4.17 10.56 -11.04 -v -3.81 11.12 -11.04 -v -3.81 8.77 -11.04 -v -4.17 8.82 -11.04 -v -4.45 8.86 -11.10 -v -4.45 8.61 -11.10 -v -4.45 8.61 -11.02 -v -4.45 8.86 -11.02 -v -3.81 11.53 -11.10 -v -4.36 10.72 -11.10 -v -4.36 10.72 -11.02 -v -3.81 11.53 -11.02 -v -3.17 8.61 -11.10 -v -3.17 8.86 -11.10 -v -3.17 8.86 -11.02 -v -3.17 8.61 -11.02 -v -3.81 8.52 -11.10 -v -3.27 8.61 -11.10 -v -3.27 8.61 -11.02 -v -3.81 8.52 -11.02 -v -4.36 8.61 -11.19 -v -4.36 8.86 -11.19 -v -4.17 8.82 -11.19 -v -3.81 11.12 -11.10 -v -4.17 10.56 -11.10 -v -3.27 8.86 -11.19 -v -3.27 8.61 -11.19 -v -3.45 8.83 -11.19 -v -3.81 8.52 -11.19 -v -3.81 8.77 -11.19 -v -3.45 10.56 -11.04 -v -3.45 8.83 -11.04 -v -3.27 10.72 -11.10 -v -3.27 10.72 -11.02 -v -4.36 8.61 -11.10 -v -4.36 8.61 -11.02 -v -3.45 10.56 -11.10 -v -4.17 8.82 -11.10 -v -3.45 8.83 -11.10 -v -3.81 8.77 -11.10 -v -3.27 8.86 -11.10 -v -3.27 8.86 -11.02 -v -4.36 8.86 -11.10 -v -4.36 8.86 -11.02 -v -4.45 8.86 -11.19 -v -4.45 8.61 -11.19 -v -3.17 8.61 -11.19 -v -3.17 8.86 -11.19 -v 3.09 10.56 -11.04 -v 3.44 11.12 -11.04 -v 3.44 8.77 -11.04 -v 3.09 8.82 -11.04 -v 2.81 8.86 -11.10 -v 2.81 8.61 -11.10 -v 2.81 8.61 -11.02 -v 2.81 8.86 -11.02 -v 3.44 11.53 -11.10 -v 2.90 10.72 -11.10 -v 2.90 10.72 -11.02 -v 3.44 11.53 -11.02 -v 4.08 8.61 -11.10 -v 4.08 8.86 -11.10 -v 4.08 8.86 -11.02 -v 4.08 8.61 -11.02 -v 3.44 8.52 -11.10 -v 3.99 8.61 -11.10 -v 3.99 8.61 -11.02 -v 3.44 8.52 -11.02 -v 2.90 8.61 -11.19 -v 2.90 8.86 -11.19 -v 3.09 8.82 -11.19 -v 3.44 11.12 -11.10 -v 3.09 10.56 -11.10 -v 3.99 8.86 -11.19 -v 3.99 8.61 -11.19 -v 3.80 8.83 -11.19 -v 3.44 8.52 -11.19 -v 3.44 8.77 -11.19 -v 3.80 10.56 -11.04 -v 3.80 8.83 -11.04 -v 3.99 10.72 -11.10 -v 3.99 10.72 -11.02 -v 2.90 8.61 -11.10 -v 2.90 8.61 -11.02 -v 3.80 10.56 -11.10 -v 3.09 8.82 -11.10 -v 3.80 8.83 -11.10 -v 3.44 8.77 -11.10 -v 3.99 8.86 -11.10 -v 3.99 8.86 -11.02 -v 2.90 8.86 -11.10 -v 2.90 8.86 -11.02 -v 2.81 8.86 -11.19 -v 2.81 8.61 -11.19 -v 4.08 8.61 -11.19 -v 4.08 8.86 -11.19 -v 5.72 4.66 -12.83 -v 6.08 5.22 -12.83 -v 6.08 2.88 -12.83 -v 5.72 2.92 -12.83 -v 5.44 2.96 -12.89 -v 5.44 2.71 -12.89 -v 5.44 2.71 -12.81 -v 5.44 2.96 -12.81 -v 6.08 5.63 -12.89 -v 5.54 4.82 -12.89 -v 5.54 4.82 -12.81 -v 6.08 5.63 -12.81 -v 6.72 2.71 -12.89 -v 6.72 2.96 -12.89 -v 6.72 2.96 -12.81 -v 6.72 2.71 -12.81 -v 6.08 2.63 -12.89 -v 6.63 2.71 -12.89 -v 6.63 2.71 -12.81 -v 6.08 2.63 -12.81 -v 5.54 2.71 -12.98 -v 5.54 2.96 -12.98 -v 5.72 2.92 -12.98 -v 6.08 5.22 -12.89 -v 5.72 4.66 -12.89 -v 6.63 2.96 -12.98 -v 6.63 2.71 -12.98 -v 6.44 2.94 -12.98 -v 6.08 2.63 -12.98 -v 6.08 2.88 -12.98 -v 6.44 4.66 -12.83 -v 6.44 2.94 -12.83 -v 6.63 4.82 -12.89 -v 6.63 4.82 -12.81 -v 5.54 2.71 -12.89 -v 5.54 2.71 -12.81 -v 6.44 4.66 -12.89 -v 5.72 2.92 -12.89 -v 6.44 2.94 -12.89 -v 6.08 2.88 -12.89 -v 6.63 2.96 -12.89 -v 6.63 2.96 -12.81 -v 5.54 2.96 -12.89 -v 5.54 2.96 -12.81 -v 5.44 2.96 -12.98 -v 5.44 2.71 -12.98 -v 6.72 2.71 -12.98 -v 6.72 2.96 -12.98 -v -6.30 20.76 -3.63 -v -5.94 21.32 -3.63 -v -5.94 18.98 -3.63 -v -6.30 19.02 -3.63 -v -6.58 19.06 -3.69 -v -6.58 18.81 -3.69 -v -6.58 18.81 -3.60 -v -6.58 19.06 -3.60 -v -5.94 21.73 -3.69 -v -6.49 20.92 -3.69 -v -6.49 20.92 -3.60 -v -5.94 21.73 -3.60 -v -5.30 18.81 -3.69 -v -5.30 19.06 -3.69 -v -5.30 19.06 -3.60 -v -5.30 18.81 -3.60 -v -5.94 18.73 -3.69 -v -5.40 18.81 -3.69 -v -5.40 18.81 -3.60 -v -5.94 18.73 -3.60 -v -6.49 18.81 -3.78 -v -6.49 19.06 -3.78 -v -6.30 19.02 -3.78 -v -5.94 21.32 -3.69 -v -6.30 20.76 -3.69 -v -5.40 19.06 -3.78 -v -5.40 18.81 -3.78 -v -5.58 19.04 -3.78 -v -5.94 18.73 -3.78 -v -5.94 18.98 -3.78 -v -5.58 20.76 -3.63 -v -5.58 19.04 -3.63 -v -5.40 20.92 -3.69 -v -5.40 20.92 -3.60 -v -6.49 18.81 -3.69 -v -6.49 18.81 -3.60 -v -5.58 20.76 -3.69 -v -6.30 19.02 -3.69 -v -5.58 19.04 -3.69 -v -5.94 18.98 -3.69 -v -5.40 19.06 -3.69 -v -5.40 19.06 -3.60 -v -6.49 19.06 -3.69 -v -6.49 19.06 -3.60 -v -6.58 19.06 -3.78 -v -6.58 18.81 -3.78 -v -5.30 18.81 -3.78 -v -5.30 19.06 -3.78 -v 5.89 20.76 -3.63 -v 6.25 21.32 -3.63 -v 6.25 18.98 -3.63 -v 5.89 19.02 -3.63 -v 5.61 19.06 -3.69 -v 5.61 18.81 -3.69 -v 5.61 18.81 -3.60 -v 5.61 19.06 -3.60 -v 6.25 21.73 -3.69 -v 5.70 20.92 -3.69 -v 5.70 20.92 -3.60 -v 6.25 21.73 -3.60 -v 6.89 18.81 -3.69 -v 6.89 19.06 -3.69 -v 6.89 19.06 -3.60 -v 6.89 18.81 -3.60 -v 6.25 18.73 -3.69 -v 6.79 18.81 -3.69 -v 6.79 18.81 -3.60 -v 6.25 18.73 -3.60 -v 5.70 18.81 -3.78 -v 5.70 19.06 -3.78 -v 5.89 19.02 -3.78 -v 6.25 21.32 -3.69 -v 5.89 20.76 -3.69 -v 6.79 19.06 -3.78 -v 6.79 18.81 -3.78 -v 6.61 19.04 -3.78 -v 6.25 18.73 -3.78 -v 6.25 18.98 -3.78 -v 6.61 20.76 -3.63 -v 6.61 19.04 -3.63 -v 6.79 20.92 -3.69 -v 6.79 20.92 -3.60 -v 5.70 18.81 -3.69 -v 5.70 18.81 -3.60 -v 6.61 20.76 -3.69 -v 5.89 19.02 -3.69 -v 6.61 19.04 -3.69 -v 6.25 18.98 -3.69 -v 6.79 19.06 -3.69 -v 6.79 19.06 -3.60 -v 5.70 19.06 -3.69 -v 5.70 19.06 -3.60 -v 5.61 19.06 -3.78 -v 5.61 18.81 -3.78 -v 6.89 18.81 -3.78 -v 6.89 19.06 -3.78 -v -8.76 20.76 0.36 -v -8.76 21.32 -0.00 -v -8.76 18.98 -0.00 -v -8.76 19.02 0.36 -v -8.82 19.06 0.64 -v -8.82 18.81 0.64 -v -8.74 18.81 0.64 -v -8.74 19.06 0.64 -v -8.82 21.73 -0.00 -v -8.82 20.92 0.55 -v -8.74 20.92 0.55 -v -8.74 21.73 -0.00 -v -8.82 18.81 -0.64 -v -8.82 19.06 -0.64 -v -8.74 19.06 -0.64 -v -8.74 18.81 -0.64 -v -8.82 18.73 -0.00 -v -8.82 18.81 -0.55 -v -8.74 18.81 -0.55 -v -8.74 18.73 -0.00 -v -8.91 18.81 0.55 -v -8.91 19.06 0.55 -v -8.91 19.02 0.36 -v -8.82 21.32 -0.00 -v -8.82 20.76 0.36 -v -8.91 19.06 -0.55 -v -8.91 18.81 -0.55 -v -8.91 19.04 -0.36 -v -8.91 18.73 -0.00 -v -8.91 18.98 -0.00 -v -8.76 20.76 -0.36 -v -8.76 19.04 -0.36 -v -8.82 20.92 -0.55 -v -8.74 20.92 -0.55 -v -8.82 18.81 0.55 -v -8.74 18.81 0.55 -v -8.82 20.76 -0.36 -v -8.82 19.02 0.36 -v -8.82 19.04 -0.36 -v -8.82 18.98 -0.00 -v -8.82 19.06 -0.55 -v -8.74 19.06 -0.55 -v -8.82 19.06 0.55 -v -8.74 19.06 0.55 -v -8.91 19.06 0.64 -v -8.91 18.81 0.64 -v -8.91 18.81 -0.64 -v -8.91 19.06 -0.64 -v -23.42 4.66 -0.35 -v -23.42 2.92 -0.35 -v -23.42 2.88 0.01 -v -23.42 5.22 0.01 -v -23.48 2.96 -0.63 -v -23.40 2.96 -0.63 -v -23.40 2.71 -0.63 -v -23.48 2.71 -0.63 -v -23.48 5.63 0.01 -v -23.40 5.63 0.01 -v -23.40 4.82 -0.54 -v -23.48 4.82 -0.54 -v -23.48 2.71 0.65 -v -23.40 2.71 0.65 -v -23.40 2.96 0.65 -v -23.48 2.96 0.65 -v -23.48 2.63 0.01 -v -23.40 2.63 0.01 -v -23.40 2.71 0.55 -v -23.48 2.71 0.55 -v -23.57 2.71 -0.54 -v -23.57 2.92 -0.35 -v -23.57 2.96 -0.54 -v -23.48 5.22 0.01 -v -23.48 4.66 -0.35 -v -23.57 2.96 0.55 -v -23.57 2.94 0.37 -v -23.57 2.71 0.55 -v -23.57 2.63 0.01 -v -23.57 2.88 0.01 -v -23.42 4.66 0.37 -v -23.42 2.94 0.37 -v -23.48 4.82 0.55 -v -23.40 4.82 0.55 -v -23.48 2.71 -0.54 -v -23.40 2.71 -0.54 -v -23.48 4.66 0.37 -v -23.48 2.92 -0.35 -v -23.48 2.94 0.37 -v -23.48 2.88 0.01 -v -23.48 2.96 0.55 -v -23.40 2.96 0.55 -v -23.40 2.96 -0.54 -v -23.48 2.96 -0.54 -v -23.57 2.71 -0.63 -v -23.57 2.96 -0.63 -v -23.57 2.96 0.65 -v -23.57 2.71 0.65 -v -19.96 4.66 6.78 -v -19.96 2.92 6.78 -v -19.60 2.88 6.78 -v -19.60 5.22 6.78 -v -20.24 2.96 6.85 -v -20.24 2.96 6.76 -v -20.24 2.71 6.76 -v -20.24 2.71 6.85 -v -19.60 5.63 6.85 -v -19.60 5.63 6.76 -v -20.15 4.82 6.76 -v -20.15 4.82 6.85 -v -18.96 2.71 6.85 -v -18.96 2.71 6.76 -v -18.96 2.96 6.76 -v -18.96 2.96 6.85 -v -19.60 2.63 6.85 -v -19.60 2.63 6.76 -v -19.05 2.71 6.76 -v -19.05 2.71 6.85 -v -20.15 2.71 6.94 -v -19.96 2.92 6.94 -v -20.15 2.96 6.94 -v -19.60 5.22 6.85 -v -19.96 4.66 6.85 -v -19.05 2.96 6.94 -v -19.24 2.94 6.94 -v -19.05 2.71 6.94 -v -19.60 2.63 6.94 -v -19.60 2.88 6.94 -v -19.24 4.66 6.78 -v -19.24 2.94 6.78 -v -19.05 4.82 6.85 -v -19.05 4.82 6.76 -v -20.15 2.71 6.85 -v -20.15 2.71 6.76 -v -19.24 4.66 6.85 -v -19.96 2.92 6.85 -v -19.24 2.94 6.85 -v -19.60 2.88 6.85 -v -19.05 2.96 6.85 -v -19.05 2.96 6.76 -v -20.15 2.96 6.76 -v -20.15 2.96 6.85 -v -20.24 2.71 6.94 -v -20.24 2.96 6.94 -v -18.96 2.96 6.94 -v -18.96 2.71 6.94 -v -5.42 9.62 11.04 -v -5.42 7.88 11.04 -v -5.06 7.83 11.04 -v -5.06 10.18 11.04 -v -5.70 7.92 11.10 -v -5.70 7.92 11.01 -v -5.70 7.67 11.01 -v -5.70 7.67 11.10 -v -5.06 10.59 11.10 -v -5.06 10.59 11.01 -v -5.61 9.78 11.01 -v -5.61 9.78 11.10 -v -4.43 7.67 11.10 -v -4.43 7.67 11.01 -v -4.43 7.92 11.01 -v -4.43 7.92 11.10 -v -5.06 7.58 11.10 -v -5.06 7.58 11.01 -v -4.52 7.67 11.01 -v -4.52 7.67 11.10 -v -5.61 7.67 11.19 -v -5.42 7.88 11.19 -v -5.61 7.92 11.19 -v -5.06 10.18 11.10 -v -5.42 9.62 11.10 -v -4.52 7.92 11.19 -v -4.71 7.89 11.19 -v -4.52 7.67 11.19 -v -5.06 7.58 11.19 -v -5.06 7.83 11.19 -v -4.71 9.62 11.04 -v -4.71 7.89 11.04 -v -4.52 9.78 11.10 -v -4.52 9.78 11.01 -v -5.61 7.67 11.10 -v -5.61 7.67 11.01 -v -4.71 9.62 11.10 -v -5.42 7.88 11.10 -v -4.71 7.89 11.10 -v -5.06 7.83 11.10 -v -4.52 7.92 11.10 -v -4.52 7.92 11.01 -v -5.61 7.92 11.01 -v -5.61 7.92 11.10 -v -5.70 7.67 11.19 -v -5.70 7.92 11.19 -v -4.43 7.92 11.19 -v -4.43 7.67 11.19 -v 3.43 9.62 11.04 -v 3.43 7.88 11.04 -v 3.79 7.83 11.04 -v 3.79 10.18 11.04 -v 3.15 7.92 11.10 -v 3.15 7.92 11.01 -v 3.15 7.67 11.01 -v 3.15 7.67 11.10 -v 3.79 10.59 11.10 -v 3.79 10.59 11.01 -v 3.24 9.78 11.01 -v 3.24 9.78 11.10 -v 4.43 7.67 11.10 -v 4.43 7.67 11.01 -v 4.43 7.92 11.01 -v 4.43 7.92 11.10 -v 3.79 7.58 11.10 -v 3.79 7.58 11.01 -v 4.33 7.67 11.01 -v 4.33 7.67 11.10 -v 3.24 7.67 11.19 -v 3.43 7.88 11.19 -v 3.24 7.92 11.19 -v 3.79 10.18 11.10 -v 3.43 9.62 11.10 -v 4.33 7.92 11.19 -v 4.15 7.89 11.19 -v 4.33 7.67 11.19 -v 3.79 7.58 11.19 -v 3.79 7.83 11.19 -v 4.15 9.62 11.04 -v 4.15 7.89 11.04 -v 4.33 9.78 11.10 -v 4.33 9.78 11.01 -v 3.24 7.67 11.10 -v 3.24 7.67 11.01 -v 4.15 9.62 11.10 -v 3.43 7.88 11.10 -v 4.15 7.89 11.10 -v 3.79 7.83 11.10 -v 4.33 7.92 11.10 -v 4.33 7.92 11.01 -v 3.24 7.92 11.01 -v 3.24 7.92 11.10 -v 3.15 7.67 11.19 -v 3.15 7.92 11.19 -v 4.43 7.92 11.19 -v 4.43 7.67 11.19 -v -0.84 4.66 11.04 -v -0.84 2.92 11.04 -v -0.48 2.88 11.04 -v -0.48 5.22 11.04 -v -1.12 2.96 11.10 -v -1.12 2.96 11.01 -v -1.12 2.71 11.01 -v -1.12 2.71 11.10 -v -0.48 5.63 11.10 -v -0.48 5.63 11.01 -v -1.03 4.82 11.01 -v -1.03 4.82 11.10 -v 0.15 2.71 11.10 -v 0.15 2.71 11.01 -v 0.15 2.96 11.01 -v 0.15 2.96 11.10 -v -0.48 2.63 11.10 -v -0.48 2.63 11.01 -v 0.06 2.71 11.01 -v 0.06 2.71 11.10 -v -1.03 2.71 11.19 -v -0.84 2.92 11.19 -v -1.03 2.96 11.19 -v -0.48 5.22 11.10 -v -0.84 4.66 11.10 -v 0.06 2.96 11.19 -v -0.13 2.94 11.19 -v 0.06 2.71 11.19 -v -0.48 2.63 11.19 -v -0.48 2.88 11.19 -v -0.13 4.66 11.04 -v -0.13 2.94 11.04 -v 0.06 4.82 11.10 -v 0.06 4.82 11.01 -v -1.03 2.71 11.10 -v -1.03 2.71 11.01 -v -0.13 4.66 11.10 -v -0.84 2.92 11.10 -v -0.13 2.94 11.10 -v -0.48 2.88 11.10 -v 0.06 2.96 11.10 -v 0.06 2.96 11.01 -v -1.03 2.96 11.01 -v -1.03 2.96 11.10 -v -1.12 2.71 11.19 -v -1.12 2.96 11.19 -v 0.15 2.96 11.19 -v 0.15 2.71 11.19 -v 0.43 20.76 3.64 -v 0.07 21.32 3.64 -v 0.07 18.98 3.64 -v 0.43 19.02 3.64 -v 0.71 19.06 3.70 -v 0.71 18.81 3.70 -v 0.71 18.81 3.61 -v 0.71 19.06 3.61 -v 0.07 21.73 3.70 -v 0.62 20.92 3.70 -v 0.62 20.92 3.61 -v 0.07 21.73 3.61 -v -0.57 18.81 3.70 -v -0.57 19.06 3.70 -v -0.57 19.06 3.61 -v -0.57 18.81 3.61 -v 0.07 18.73 3.70 -v -0.47 18.81 3.70 -v -0.47 18.81 3.61 -v 0.07 18.73 3.61 -v 0.62 18.81 3.79 -v 0.62 19.06 3.79 -v 0.43 19.02 3.79 -v 0.07 21.32 3.70 -v 0.43 20.76 3.70 -v -0.47 19.06 3.79 -v -0.47 18.81 3.79 -v -0.29 19.04 3.79 -v 0.07 18.73 3.79 -v 0.07 18.98 3.79 -v -0.29 20.76 3.64 -v -0.29 19.04 3.64 -v -0.47 20.92 3.70 -v -0.47 20.92 3.61 -v 0.62 18.81 3.70 -v 0.62 18.81 3.61 -v -0.29 20.76 3.70 -v 0.43 19.02 3.70 -v -0.29 19.04 3.70 -v 0.07 18.98 3.70 -v -0.47 19.06 3.70 -v -0.47 19.06 3.61 -v 0.62 19.06 3.70 -v 0.62 19.06 3.61 -v 0.71 19.06 3.79 -v 0.71 18.81 3.79 -v -0.57 18.81 3.79 -v -0.57 19.06 3.79 -v 6.58 20.76 3.64 -v 6.22 21.32 3.64 -v 6.22 18.98 3.64 -v 6.58 19.02 3.64 -v 6.86 19.06 3.70 -v 6.86 18.81 3.70 -v 6.86 18.81 3.61 -v 6.86 19.06 3.61 -v 6.22 21.73 3.70 -v 6.76 20.92 3.70 -v 6.76 20.92 3.61 -v 6.22 21.73 3.61 -v 5.58 18.81 3.70 -v 5.58 19.06 3.70 -v 5.58 19.06 3.61 -v 5.58 18.81 3.61 -v 6.22 18.73 3.70 -v 5.67 18.81 3.70 -v 5.67 18.81 3.61 -v 6.22 18.73 3.61 -v 6.76 18.81 3.79 -v 6.76 19.06 3.79 -v 6.58 19.02 3.79 -v 6.22 21.32 3.70 -v 6.58 20.76 3.70 -v 5.67 19.06 3.79 -v 5.67 18.81 3.79 -v 5.86 19.04 3.79 -v 6.22 18.73 3.79 -v 6.22 18.98 3.79 -v 5.86 20.76 3.64 -v 5.86 19.04 3.64 -v 5.67 20.92 3.70 -v 5.67 20.92 3.61 -v 6.76 18.81 3.70 -v 6.76 18.81 3.61 -v 5.86 20.76 3.70 -v 6.58 19.02 3.70 -v 5.86 19.04 3.70 -v 6.22 18.98 3.70 -v 5.67 19.06 3.70 -v 5.67 19.06 3.61 -v 6.76 19.06 3.70 -v 6.76 19.06 3.61 -v 6.86 19.06 3.79 -v 6.86 18.81 3.79 -v 5.58 18.81 3.79 -v 5.58 19.06 3.79 -v 12.89 4.66 -3.98 -v 12.89 5.22 -3.62 -v 12.89 2.88 -3.62 -v 12.89 2.92 -3.98 -v 12.96 2.96 -4.26 -v 12.96 2.71 -4.26 -v 12.87 2.71 -4.26 -v 12.87 2.96 -4.26 -v 12.96 5.63 -3.62 -v 12.96 4.82 -4.17 -v 12.87 4.82 -4.17 -v 12.87 5.63 -3.62 -v 12.96 2.71 -2.98 -v 12.96 2.96 -2.98 -v 12.87 2.96 -2.98 -v 12.87 2.71 -2.98 -v 12.96 2.63 -3.62 -v 12.96 2.71 -3.08 -v 12.87 2.71 -3.08 -v 12.87 2.63 -3.62 -v 13.05 2.71 -4.17 -v 13.05 2.96 -4.17 -v 13.05 2.92 -3.98 -v 12.96 5.22 -3.62 -v 12.96 4.66 -3.98 -v 13.05 2.96 -3.08 -v 13.05 2.71 -3.08 -v 13.05 2.94 -3.26 -v 13.05 2.63 -3.62 -v 13.05 2.88 -3.62 -v 12.89 4.66 -3.26 -v 12.89 2.94 -3.26 -v 12.96 4.82 -3.08 -v 12.87 4.82 -3.08 -v 12.96 2.71 -4.17 -v 12.87 2.71 -4.17 -v 12.96 4.66 -3.26 -v 12.96 2.92 -3.98 -v 12.96 2.94 -3.26 -v 12.96 2.88 -3.62 -v 12.96 2.96 -3.08 -v 12.87 2.96 -3.08 -v 12.96 2.96 -4.17 -v 12.87 2.96 -4.17 -v 13.05 2.96 -4.26 -v 13.05 2.71 -4.26 -v 13.05 2.71 -2.98 -v 13.05 2.96 -2.98 -v 12.89 4.66 3.26 -v 12.89 5.22 3.62 -v 12.89 2.88 3.62 -v 12.89 2.92 3.26 -v 12.96 2.96 2.98 -v 12.96 2.71 2.98 -v 12.87 2.71 2.98 -v 12.87 2.96 2.98 -v 12.96 5.63 3.62 -v 12.96 4.82 3.08 -v 12.87 4.82 3.08 -v 12.87 5.63 3.62 -v 12.96 2.71 4.26 -v 12.96 2.96 4.26 -v 12.87 2.96 4.26 -v 12.87 2.71 4.26 -v 12.96 2.63 3.62 -v 12.96 2.71 4.17 -v 12.87 2.71 4.17 -v 12.87 2.63 3.62 -v 13.05 2.71 3.08 -v 13.05 2.96 3.08 -v 13.05 2.92 3.26 -v 12.96 5.22 3.62 -v 12.96 4.66 3.26 -v 13.05 2.96 4.17 -v 13.05 2.71 4.17 -v 13.05 2.94 3.98 -v 13.05 2.63 3.62 -v 13.05 2.88 3.62 -v 12.89 4.66 3.98 -v 12.89 2.94 3.98 -v 12.96 4.82 4.17 -v 12.87 4.82 4.17 -v 12.96 2.71 3.08 -v 12.87 2.71 3.08 -v 12.96 4.66 3.98 -v 12.96 2.92 3.26 -v 12.96 2.94 3.98 -v 12.96 2.88 3.62 -v 12.96 2.96 4.17 -v 12.87 2.96 4.17 -v 12.96 2.96 3.08 -v 12.87 2.96 3.08 -v 13.05 2.96 2.98 -v 13.05 2.71 2.98 -v 13.05 2.71 4.26 -v 13.05 2.96 4.26 -v 8.75 20.76 0.36 -v 8.75 19.02 0.36 -v 8.75 18.98 -0.00 -v 8.75 21.32 -0.00 -v 8.81 19.06 0.64 -v 8.73 19.06 0.64 -v 8.73 18.81 0.64 -v 8.81 18.81 0.64 -v 8.81 21.73 -0.00 -v 8.73 21.73 -0.00 -v 8.73 20.92 0.55 -v 8.81 20.92 0.55 -v 8.81 18.81 -0.64 -v 8.73 18.81 -0.64 -v 8.73 19.06 -0.64 -v 8.81 19.06 -0.64 -v 8.81 18.73 -0.00 -v 8.73 18.73 -0.00 -v 8.73 18.81 -0.55 -v 8.81 18.81 -0.55 -v 8.90 18.81 0.55 -v 8.90 19.02 0.36 -v 8.90 19.06 0.55 -v 8.81 21.32 -0.00 -v 8.81 20.76 0.36 -v 8.90 19.06 -0.55 -v 8.90 19.04 -0.36 -v 8.90 18.81 -0.55 -v 8.90 18.73 -0.00 -v 8.90 18.98 -0.00 -v 8.75 20.76 -0.36 -v 8.75 19.04 -0.36 -v 8.81 20.92 -0.55 -v 8.73 20.92 -0.55 -v 8.81 18.81 0.55 -v 8.73 18.81 0.55 -v 8.81 20.76 -0.36 -v 8.81 19.02 0.36 -v 8.81 19.04 -0.36 -v 8.81 18.98 -0.00 -v 8.81 19.06 -0.55 -v 8.73 19.06 -0.55 -v 8.73 19.06 0.55 -v 8.81 19.06 0.55 -v 8.90 18.81 0.64 -v 8.90 19.06 0.64 -v 8.90 19.06 -0.64 -v 8.90 18.81 -0.64 -v -5.91 20.76 3.64 -v -6.27 21.32 3.64 -v -6.27 18.98 3.64 -v -5.91 19.02 3.64 -v -5.63 19.06 3.70 -v -5.63 18.81 3.70 -v -5.63 18.81 3.61 -v -5.63 19.06 3.61 -v -6.27 21.73 3.70 -v -5.73 20.92 3.70 -v -5.73 20.92 3.61 -v -6.27 21.73 3.61 -v -6.91 18.81 3.70 -v -6.91 19.06 3.70 -v -6.91 19.06 3.61 -v -6.91 18.81 3.61 -v -6.27 18.73 3.70 -v -6.82 18.81 3.70 -v -6.82 18.81 3.61 -v -6.27 18.73 3.61 -v -5.73 18.81 3.79 -v -5.73 19.06 3.79 -v -5.91 19.02 3.79 -v -6.27 21.32 3.70 -v -5.91 20.76 3.70 -v -6.82 19.06 3.79 -v -6.82 18.81 3.79 -v -6.63 19.04 3.79 -v -6.27 18.73 3.79 -v -6.27 18.98 3.79 -v -6.63 20.76 3.64 -v -6.63 19.04 3.64 -v -6.82 20.92 3.70 -v -6.82 20.92 3.61 -v -5.73 18.81 3.70 -v -5.73 18.81 3.61 -v -6.63 20.76 3.70 -v -5.91 19.02 3.70 -v -6.63 19.04 3.70 -v -6.27 18.98 3.70 -v -6.82 19.06 3.70 -v -6.82 19.06 3.61 -v -5.73 19.06 3.70 -v -5.73 19.06 3.61 -v -5.63 19.06 3.79 -v -5.63 18.81 3.79 -v -6.91 18.81 3.79 -v -6.91 19.06 3.79 -v 1.22 3.89 -13.04 -v 1.22 0.00 -13.04 -v 0.00 0.00 -13.04 -v 0.00 4.45 -13.04 -v -2.44 3.02 -13.04 -v -1.22 3.89 -13.04 -v -1.22 0.00 -13.04 -v -2.44 0.00 -13.04 -v 2.44 3.02 -13.04 -v 2.44 0.00 -13.04 -v 2.76 0.00 -12.61 -v 2.76 0.00 -13.28 -v 2.72 2.63 -13.28 -v 2.72 2.63 -12.61 -v 2.32 0.00 -13.28 -v 2.28 2.21 -13.28 -v 2.32 0.00 -12.61 -v 2.28 2.21 -12.61 -v 1.57 4.51 -13.28 -v 1.57 4.51 -12.61 -v 1.32 3.79 -13.28 -v 1.32 3.79 -12.61 -v 0.00 5.20 -13.28 -v 0.00 5.20 -12.61 -v 0.00 4.45 -13.28 -v 0.00 4.45 -12.61 -v -1.57 4.51 -13.28 -v -1.57 4.51 -12.61 -v -1.32 3.79 -13.28 -v -1.32 3.79 -12.61 -v -2.72 2.63 -13.28 -v -2.72 2.63 -12.61 -v -2.28 2.21 -13.28 -v -2.28 2.21 -12.61 -v -2.76 0.00 -13.28 -v -2.76 0.00 -12.61 -v -2.32 0.00 -13.28 -v -2.32 0.00 -12.61 -v -23.02 0.02 -7.19 -v -23.81 0.02 -7.26 -v -23.50 3.76 -6.94 -v -22.95 3.76 -6.89 -v -23.10 0.02 -6.35 -v -23.01 3.76 -6.25 -v -23.88 0.02 -6.42 -v -23.56 3.76 -6.30 -v -23.00 6.77 -7.20 -v -23.83 6.77 -7.27 -v -23.08 7.23 -6.33 -v -23.90 7.23 -6.41 -v -23.14 6.61 -6.66 -v -23.14 6.39 0.01 -v -23.82 6.39 0.01 -v -23.82 6.61 -6.66 -v -23.82 7.03 0.01 -v -23.82 7.24 -6.66 -v -23.14 7.03 0.01 -v -23.14 7.24 -6.66 -v -23.14 6.61 6.68 -v -23.82 6.61 6.68 -v -23.82 7.24 6.68 -v -23.14 7.24 6.68 -v -10.64 6.61 -6.65 -v -17.31 6.39 -6.65 -v -17.31 6.39 -7.33 -v -10.64 6.61 -7.33 -v -17.31 7.03 -7.33 -v -10.64 7.24 -7.33 -v -17.31 7.03 -6.65 -v -10.64 7.24 -6.65 -v -23.99 6.61 -6.65 -v -23.99 6.61 -7.33 -v -23.99 7.24 -7.33 -v -23.99 7.24 -6.65 -v -23.02 0.02 7.20 -v -22.95 3.76 6.91 -v -23.50 3.76 6.95 -v -23.81 0.02 7.27 -v -23.10 0.02 6.37 -v -23.01 3.76 6.27 -v -23.88 0.02 6.44 -v -23.56 3.76 6.32 -v -23.00 6.77 7.22 -v -23.83 6.77 7.29 -v -23.08 7.23 6.35 -v -23.90 7.23 6.42 -v -10.64 6.61 6.68 -v -10.64 6.61 7.36 -v -17.31 6.39 7.36 -v -17.31 6.39 6.68 -v -10.64 7.24 7.36 -v -17.31 7.03 7.36 -v -10.64 7.24 6.68 -v -17.31 7.03 6.68 -v -23.99 6.61 7.36 -v -23.99 6.61 6.68 -v -23.99 7.24 7.36 -v -23.99 7.24 6.68 -v 8.74 6.44 10.70 -v 8.74 6.44 11.59 -v 0.00 6.16 11.59 -v 0.00 6.16 10.70 -v 8.74 7.27 11.59 -v 0.00 6.98 11.59 -v 8.74 7.27 10.70 -v 0.00 6.98 10.70 -v -8.74 6.44 11.59 -v -8.74 6.44 10.70 -v -8.74 7.27 11.59 -v -8.74 7.27 10.70 -v 8.74 17.79 -0.00 -v 8.74 27.72 -0.00 -v 8.74 23.62 3.62 -v 0.00 17.79 -3.62 -v 0.00 23.02 -3.62 -v 8.74 23.62 -3.62 -v -8.74 17.79 -0.00 -v -8.74 27.60 -0.00 -v -8.74 23.62 -3.62 -v 0.00 17.79 3.62 -v 0.00 23.02 3.62 -v -8.74 23.62 3.62 -v 8.34 17.58 -3.11 -v 8.50 20.48 -3.15 -v 8.50 20.48 -3.73 -v 8.34 17.58 -3.92 -v 8.34 24.35 -3.11 -v 8.34 23.76 -3.83 -v 9.14 17.58 -3.11 -v 9.09 20.48 -3.15 -v 9.14 24.35 -3.11 -v 9.14 17.58 -3.92 -v 9.09 20.48 -3.73 -v 9.14 23.76 -3.83 -v -0.81 20.18 -3.56 -v -0.81 17.74 -3.56 -v -0.81 17.74 -3.74 -v -0.81 20.18 -3.74 -v -0.95 20.13 -3.74 -v -0.95 17.74 -3.74 -v -0.95 17.74 -3.56 -v -0.95 20.13 -3.56 -v -1.04 20.10 -3.76 -v -1.04 20.10 -3.58 -v -1.04 20.32 -3.58 -v -1.04 20.32 -3.76 -v 1.04 20.32 -3.58 -v 1.04 20.10 -3.58 -v 1.04 20.10 -3.76 -v 1.04 20.32 -3.76 -v -0.39 20.29 -3.76 -v -0.39 20.29 -3.58 -v -0.39 20.51 -3.76 -v -0.39 20.51 -3.58 -v 0.94 20.15 -3.56 -v 0.94 17.74 -3.56 -v 0.94 17.74 -3.74 -v 0.94 20.15 -3.74 -v 0.80 17.74 -3.74 -v 0.80 20.19 -3.74 -v 0.80 17.74 -3.56 -v 0.80 20.19 -3.56 -v 0.39 20.29 -3.76 -v 0.39 20.29 -3.58 -v 0.39 20.51 -3.76 -v 0.39 20.51 -3.58 -v 0.00 20.34 -3.76 -v 0.00 20.34 -3.58 -v 0.00 20.56 -3.76 -v 0.00 20.56 -3.58 -v -0.01 17.69 -4.00 -v 0.78 17.69 -4.00 -v 0.78 17.66 -3.95 -v -0.01 17.66 -3.95 -v -0.01 17.76 -4.01 -v 0.78 17.76 -4.01 -v 0.78 17.75 -3.95 -v 0.78 17.85 -3.95 -v 0.78 17.85 -3.64 -v 0.78 17.75 -3.64 -v 0.78 17.82 -4.00 -v 0.78 17.66 -3.64 -v -0.01 17.85 -3.95 -v -0.01 17.85 -3.64 -v -0.01 17.82 -4.00 -v -0.80 17.66 -3.95 -v -0.80 17.69 -4.00 -v -0.80 17.76 -4.01 -v -0.80 17.85 -3.64 -v -0.80 17.85 -3.95 -v -0.80 17.75 -3.95 -v -0.80 17.75 -3.64 -v -0.80 17.82 -4.00 -v -0.80 17.66 -3.64 -v 0.86 20.19 -3.66 -v 0.86 17.72 -3.66 -v 0.02 17.72 -3.66 -v 0.02 20.45 -3.66 -v -0.82 20.19 -3.66 -v -0.82 17.72 -3.66 -v -9.14 17.58 -3.11 -v -8.97 20.48 -3.15 -v -8.97 20.48 -3.73 -v -9.14 17.58 -3.92 -v -9.14 24.35 -3.11 -v -9.14 23.76 -3.83 -v -8.34 17.58 -3.11 -v -8.39 20.48 -3.15 -v -8.34 24.35 -3.11 -v -8.34 17.58 -3.92 -v -8.39 20.48 -3.73 -v -8.34 23.76 -3.83 -v -9.14 17.58 3.11 -v -9.14 17.58 3.92 -v -8.97 20.48 3.73 -v -8.97 20.48 3.15 -v -9.14 23.76 3.83 -v -9.14 24.35 3.11 -v -8.34 17.58 3.11 -v -8.39 20.48 3.15 -v -8.34 24.35 3.11 -v -8.39 20.48 3.73 -v -8.34 17.58 3.92 -v -8.34 23.76 3.83 -v 8.34 17.58 3.11 -v 8.34 17.58 3.92 -v 8.50 20.48 3.73 -v 8.50 20.48 3.15 -v 8.34 23.76 3.83 -v 8.34 24.35 3.11 -v 9.14 17.58 3.11 -v 9.09 20.48 3.15 -v 9.14 24.35 3.11 -v 9.09 20.48 3.73 -v 9.14 17.58 3.92 -v 9.14 23.76 3.83 -v 12.59 6.44 -8.74 -v 13.48 6.44 -8.74 -v 13.48 6.16 -0.00 -v 12.59 6.16 -0.00 -v 13.48 7.27 -8.74 -v 13.48 6.98 -0.00 -v 12.59 7.27 -8.74 -v 12.59 6.98 -0.00 -v 13.48 6.44 8.74 -v 12.59 6.44 8.74 -v 13.48 7.27 8.74 -v 12.59 7.27 8.74 -v -9.92 18.64 4.67 -v -10.78 18.64 4.67 -v -10.78 18.64 6.66 -v -9.92 18.64 6.66 -v -9.92 17.79 4.67 -v -10.78 17.79 4.67 -v -10.78 17.79 6.66 -v -9.92 17.79 6.66 -v -12.40 7.80 6.90 -v -12.40 7.80 6.03 -v -14.38 7.80 6.03 -v -14.38 7.80 6.90 -v -12.40 6.95 6.90 -v -12.40 6.95 6.03 -v -14.38 6.95 6.03 -v -14.38 6.95 6.90 -v -12.40 7.80 -5.99 -v -12.40 7.80 -6.86 -v -14.38 7.80 -6.86 -v -14.38 7.80 -5.99 -v -12.40 6.95 -5.99 -v -12.40 6.95 -6.86 -v -14.38 6.95 -6.86 -v -14.38 6.95 -5.99 -v -16.55 0.00 12.98 -v -16.55 7.76 12.98 -v -17.17 7.76 10.68 -v -17.17 0.00 10.68 -v -14.87 0.00 14.66 -v -14.87 7.76 14.66 -v -12.57 0.00 15.28 -v -12.57 7.76 15.28 -v -10.27 0.00 14.66 -v -10.27 7.76 14.66 -v -8.58 0.00 12.98 -v -8.58 7.76 12.98 -v -7.97 0.00 10.68 -v -7.97 7.76 10.68 -v -8.58 0.00 8.38 -v -8.58 7.76 8.38 -v -10.27 0.00 6.69 -v -10.27 7.76 6.69 -v -12.57 0.00 6.08 -v -12.57 7.76 6.08 -v -14.87 0.00 6.69 -v -14.87 7.76 6.69 -v -16.55 0.00 8.38 -v -16.55 7.76 8.38 -v -16.78 7.76 13.11 -v -16.78 8.57 13.11 -v -17.43 8.57 10.68 -v -17.43 7.76 10.68 -v -15.00 7.76 14.89 -v -15.00 8.57 14.89 -v -12.57 7.76 15.54 -v -12.57 8.57 15.54 -v -10.13 7.76 14.89 -v -10.13 8.57 14.89 -v -8.35 7.76 13.11 -v -8.35 8.57 13.11 -v -7.70 7.76 10.68 -v -7.70 8.57 10.68 -v -8.35 7.76 8.24 -v -8.35 8.57 8.24 -v -10.13 7.76 6.46 -v -10.13 8.57 6.46 -v -12.57 7.76 5.81 -v -12.57 8.57 5.81 -v -15.00 7.76 6.46 -v -15.00 8.57 6.46 -v -16.78 7.76 8.24 -v -16.78 8.57 8.24 -v -17.17 8.57 10.68 -v -16.55 8.57 12.98 -v -14.87 8.57 14.66 -v -12.57 8.57 15.28 -v -10.27 8.57 14.66 -v -8.58 8.57 12.98 -v -7.97 8.57 10.68 -v -8.58 8.57 8.38 -v -10.27 8.57 6.69 -v -12.57 8.57 6.08 -v -14.87 8.57 6.69 -v -16.55 8.57 8.38 -v -16.55 16.89 12.98 -v -17.17 16.89 10.68 -v -14.87 16.89 14.66 -v -12.57 16.89 15.28 -v -10.27 16.89 14.66 -v -8.58 16.89 12.98 -v -7.97 16.89 10.68 -v -8.58 16.89 8.38 -v -10.27 16.89 6.69 -v -12.57 16.89 6.08 -v -14.87 16.89 6.69 -v -16.55 16.89 8.38 -v -17.13 21.30 13.31 -v -17.47 21.30 13.51 -v -18.23 21.30 10.68 -v -17.83 21.30 10.68 -v -15.20 21.30 15.24 -v -15.40 21.30 15.58 -v -12.57 21.30 15.94 -v -12.57 21.30 16.34 -v -9.93 21.30 15.24 -v -9.73 21.30 15.58 -v -8.01 21.30 13.31 -v -7.66 21.30 13.51 -v -7.30 21.30 10.68 -v -6.90 21.30 10.68 -v -8.01 21.30 8.04 -v -7.66 21.30 7.84 -v -9.93 21.30 6.12 -v -9.73 21.30 5.77 -v -12.57 21.30 5.41 -v -12.57 21.30 5.01 -v -15.20 21.30 6.12 -v -15.40 21.30 5.77 -v -17.13 21.30 8.04 -v -17.47 21.30 7.84 -v -16.17 24.76 12.76 -v -16.72 24.76 10.68 -v -14.64 24.76 14.28 -v -12.57 24.76 14.83 -v -10.49 24.76 14.28 -v -8.97 24.76 12.76 -v -8.41 24.76 10.68 -v -8.97 24.76 8.60 -v -10.49 24.76 7.08 -v -12.57 24.76 6.52 -v -14.64 24.76 7.08 -v -16.17 24.76 8.60 -v -16.13 28.50 12.74 -v -16.69 28.50 10.68 -v -14.63 28.50 14.24 -v -12.57 28.50 14.80 -v -10.51 28.50 14.24 -v -9.00 28.50 12.74 -v -8.45 28.50 10.68 -v -9.00 28.50 8.62 -v -10.51 28.50 7.11 -v -12.57 28.50 6.56 -v -14.63 28.50 7.11 -v -16.13 28.50 8.62 -v -17.13 17.36 13.31 -v -17.83 17.36 10.68 -v -15.20 17.36 15.24 -v -12.57 17.36 15.94 -v -9.93 17.36 15.24 -v -8.01 17.36 13.31 -v -7.30 17.36 10.68 -v -8.01 17.36 8.04 -v -9.93 17.36 6.12 -v -12.57 17.36 5.41 -v -15.20 17.36 6.12 -v -17.13 17.36 8.04 -v -17.91 20.21 10.37 -v -17.91 19.23 10.37 -v -17.91 19.21 10.80 -v -17.91 20.52 10.80 -v -17.81 19.26 10.03 -v -17.81 19.12 10.03 -v -17.91 19.12 10.04 -v -17.91 19.26 10.04 -v -17.89 20.75 10.80 -v -17.84 20.29 10.15 -v -17.94 20.29 10.15 -v -17.98 20.75 10.81 -v -17.68 19.12 11.55 -v -17.68 19.26 11.55 -v -17.78 19.26 11.56 -v -17.78 19.12 11.56 -v -17.89 19.07 10.80 -v -17.73 19.12 11.45 -v -17.82 19.12 11.45 -v -17.98 19.07 10.81 -v -18.05 19.12 10.16 -v -18.08 19.23 10.39 -v -18.05 19.26 10.16 -v -17.98 20.21 10.38 -v -17.98 20.52 10.81 -v -17.93 19.26 11.46 -v -18.01 19.24 11.24 -v -17.93 19.12 11.46 -v -18.09 19.07 10.82 -v -18.09 19.21 10.82 -v -17.83 20.21 11.23 -v -17.83 19.24 11.23 -v -17.73 20.29 11.45 -v -17.82 20.29 11.45 -v -17.84 19.12 10.15 -v -17.94 19.12 10.15 -v -17.90 20.21 11.23 -v -17.98 19.23 10.38 -v -17.90 19.24 11.23 -v -17.98 19.21 10.81 -v -17.82 19.26 11.45 -v -17.73 19.26 11.45 -v -17.84 19.26 10.15 -v -17.94 19.26 10.15 -v -18.02 19.12 10.05 -v -18.02 19.26 10.05 -v -17.88 19.26 11.57 -v -17.88 19.12 11.57 -v -12.87 20.21 16.02 -v -12.87 19.23 16.02 -v -12.44 19.21 16.02 -v -12.44 20.52 16.02 -v -13.21 19.26 15.92 -v -13.21 19.12 15.92 -v -13.20 19.12 16.02 -v -13.20 19.26 16.02 -v -12.44 20.75 16.00 -v -13.10 20.29 15.95 -v -13.09 20.29 16.05 -v -12.43 20.75 16.10 -v -11.69 19.12 15.79 -v -11.69 19.26 15.79 -v -11.68 19.26 15.89 -v -11.68 19.12 15.89 -v -12.44 19.07 16.00 -v -11.80 19.12 15.84 -v -11.79 19.12 15.94 -v -12.43 19.07 16.10 -v -13.08 19.12 16.16 -v -12.85 19.23 16.20 -v -13.08 19.26 16.16 -v -12.86 20.21 16.09 -v -12.43 20.52 16.10 -v -11.78 19.26 16.04 -v -12.00 19.24 16.12 -v -11.78 19.12 16.04 -v -12.42 19.07 16.20 -v -12.42 19.21 16.20 -v -12.01 20.21 15.94 -v -12.01 19.24 15.94 -v -11.80 20.29 15.84 -v -11.79 20.29 15.94 -v -13.10 19.12 15.95 -v -13.09 19.12 16.05 -v -12.01 20.21 16.01 -v -12.86 19.23 16.09 -v -12.01 19.24 16.01 -v -12.43 19.21 16.10 -v -11.79 19.26 15.94 -v -11.80 19.26 15.84 -v -13.10 19.26 15.95 -v -13.09 19.26 16.05 -v -13.19 19.12 16.13 -v -13.19 19.26 16.13 -v -11.67 19.26 16.00 -v -11.67 19.12 16.00 -v -9.24 23.34 12.52 -v -8.56 24.92 12.99 -v -9.10 24.92 13.76 -v -9.78 23.34 13.29 -v -9.53 28.41 12.29 -v -8.63 28.41 12.92 -v -9.18 28.41 13.70 -v -10.08 28.41 13.07 -v -12.87 27.21 14.81 -v -12.87 26.24 14.81 -v -12.44 26.21 14.82 -v -12.44 27.52 14.82 -v -13.21 26.26 14.72 -v -13.21 26.12 14.72 -v -13.20 26.12 14.82 -v -13.20 26.26 14.82 -v -12.44 27.75 14.80 -v -13.10 27.30 14.75 -v -13.09 27.30 14.85 -v -12.43 27.75 14.89 -v -11.69 26.12 14.59 -v -11.69 26.26 14.59 -v -11.68 26.26 14.69 -v -11.68 26.12 14.69 -v -12.44 26.07 14.80 -v -11.80 26.12 14.64 -v -11.79 26.12 14.73 -v -12.43 26.07 14.89 -v -13.08 26.12 14.96 -v -12.85 26.24 14.99 -v -13.08 26.26 14.96 -v -12.86 27.21 14.89 -v -12.43 27.52 14.89 -v -11.78 26.26 14.84 -v -12.00 26.25 14.92 -v -11.78 26.12 14.84 -v -12.42 26.07 15.00 -v -12.42 26.21 15.00 -v -12.01 27.21 14.74 -v -12.01 26.25 14.74 -v -11.80 27.30 14.64 -v -11.79 27.30 14.73 -v -13.10 26.12 14.75 -v -13.09 26.12 14.85 -v -12.01 27.21 14.81 -v -12.86 26.24 14.89 -v -12.01 26.25 14.81 -v -12.43 26.21 14.89 -v -11.79 26.26 14.73 -v -11.80 26.26 14.64 -v -13.10 26.26 14.75 -v -13.09 26.26 14.85 -v -13.19 26.12 14.93 -v -13.19 26.26 14.93 -v -11.67 26.26 14.79 -v -11.67 26.12 14.79 -v -14.41 23.34 14.01 -v -14.88 24.92 14.68 -v -15.65 24.92 14.14 -v -15.18 23.34 13.46 -v -14.18 28.41 13.71 -v -14.81 28.41 14.61 -v -15.59 28.41 14.07 -v -14.96 28.41 13.17 -v -8.43 27.21 10.98 -v -8.43 26.24 10.98 -v -8.42 26.21 10.55 -v -8.42 27.52 10.55 -v -8.52 26.26 11.32 -v -8.52 26.12 11.32 -v -8.42 26.12 11.31 -v -8.42 26.26 11.31 -v -8.45 27.75 10.55 -v -8.49 27.30 11.21 -v -8.39 27.30 11.20 -v -8.35 27.75 10.54 -v -8.65 26.12 9.80 -v -8.65 26.26 9.80 -v -8.56 26.26 9.79 -v -8.56 26.12 9.79 -v -8.45 26.07 10.55 -v -8.61 26.12 9.91 -v -8.51 26.12 9.90 -v -8.35 26.07 10.54 -v -8.29 26.12 11.19 -v -8.25 26.24 10.96 -v -8.29 26.26 11.19 -v -8.35 27.21 10.97 -v -8.35 27.52 10.54 -v -8.40 26.26 9.89 -v -8.32 26.25 10.11 -v -8.40 26.12 9.89 -v -8.24 26.07 10.53 -v -8.24 26.21 10.53 -v -8.50 27.21 10.13 -v -8.50 26.25 10.13 -v -8.61 27.30 9.91 -v -8.51 27.30 9.90 -v -8.49 26.12 11.21 -v -8.39 26.12 11.20 -v -8.43 27.21 10.12 -v -8.35 26.24 10.97 -v -8.43 26.25 10.12 -v -8.35 26.21 10.54 -v -8.51 26.26 9.90 -v -8.61 26.26 9.91 -v -8.49 26.26 11.21 -v -8.39 26.26 11.20 -v -8.32 26.12 11.30 -v -8.32 26.26 11.30 -v -8.45 26.26 9.78 -v -8.45 26.12 9.78 -v -13.04 12.70 6.81 -v -13.04 14.28 5.99 -v -12.09 14.28 5.99 -v -12.09 12.70 6.81 -v -13.04 17.34 6.74 -v -13.04 17.34 5.64 -v -12.09 17.34 5.64 -v -12.09 17.34 6.74 -v -8.98 12.70 12.20 -v -8.27 14.28 12.61 -v -8.74 14.28 13.43 -v -9.46 12.70 13.02 -v -8.92 17.34 12.24 -v -7.97 17.34 12.79 -v -8.44 17.34 13.61 -v -9.39 17.34 13.06 -v -12.09 12.70 14.54 -v -12.09 14.28 15.36 -v -13.04 14.28 15.36 -v -13.04 12.70 14.54 -v -12.09 17.34 14.62 -v -12.09 17.34 15.71 -v -13.04 17.34 15.71 -v -13.04 17.34 14.62 -v -10.73 23.34 7.35 -v -10.25 24.92 6.67 -v -9.48 24.92 7.22 -v -9.95 23.34 7.89 -v -10.95 28.41 7.65 -v -10.32 28.41 6.74 -v -9.55 28.41 7.29 -v -10.18 28.41 8.19 -v -9.46 12.70 8.34 -v -8.74 14.28 7.92 -v -8.27 14.28 8.74 -v -8.98 12.70 9.15 -v -9.39 17.34 8.30 -v -8.44 17.34 7.75 -v -7.97 17.34 8.57 -v -8.92 17.34 9.12 -v -7.23 20.21 10.98 -v -7.23 19.23 10.98 -v -7.22 19.21 10.55 -v -7.22 20.52 10.55 -v -7.32 19.26 11.32 -v -7.32 19.12 11.32 -v -7.22 19.12 11.31 -v -7.22 19.26 11.31 -v -7.24 20.75 10.55 -v -7.29 20.29 11.21 -v -7.19 20.29 11.20 -v -7.15 20.75 10.54 -v -7.45 19.12 9.80 -v -7.45 19.26 9.80 -v -7.35 19.26 9.79 -v -7.35 19.12 9.79 -v -7.24 19.07 10.55 -v -7.41 19.12 9.91 -v -7.31 19.12 9.90 -v -7.15 19.07 10.54 -v -7.09 19.12 11.19 -v -7.05 19.23 10.96 -v -7.09 19.26 11.19 -v -7.15 20.21 10.97 -v -7.15 20.52 10.54 -v -7.20 19.26 9.89 -v -7.12 19.24 10.11 -v -7.20 19.12 9.89 -v -7.04 19.07 10.53 -v -7.04 19.21 10.53 -v -7.30 20.21 10.13 -v -7.30 19.24 10.13 -v -7.41 20.29 9.91 -v -7.31 20.29 9.90 -v -7.29 19.12 11.21 -v -7.19 19.12 11.20 -v -7.23 20.21 10.12 -v -7.15 19.23 10.97 -v -7.23 19.24 10.12 -v -7.15 19.21 10.54 -v -7.31 19.26 9.90 -v -7.41 19.26 9.91 -v -7.29 19.26 11.21 -v -7.19 19.26 11.20 -v -7.11 19.12 11.30 -v -7.11 19.26 11.30 -v -7.25 19.26 9.78 -v -7.25 19.12 9.78 -v -12.26 27.21 6.54 -v -12.26 26.24 6.54 -v -12.69 26.21 6.53 -v -12.69 27.52 6.53 -v -11.92 26.26 6.63 -v -11.92 26.12 6.63 -v -11.93 26.12 6.53 -v -11.93 26.26 6.53 -v -12.69 27.75 6.56 -v -12.03 27.30 6.60 -v -12.04 27.30 6.51 -v -12.70 27.75 6.46 -v -13.44 26.12 6.76 -v -13.44 26.26 6.76 -v -13.45 26.26 6.67 -v -13.45 26.12 6.67 -v -12.69 26.07 6.56 -v -13.34 26.12 6.72 -v -13.34 26.12 6.62 -v -12.70 26.07 6.46 -v -12.05 26.12 6.40 -v -12.28 26.24 6.36 -v -12.05 26.26 6.40 -v -12.27 27.21 6.47 -v -12.70 27.52 6.46 -v -13.35 26.26 6.51 -v -13.13 26.25 6.43 -v -13.35 26.12 6.51 -v -12.71 26.07 6.35 -v -12.71 26.21 6.35 -v -13.12 27.21 6.61 -v -13.12 26.25 6.61 -v -13.34 27.30 6.72 -v -13.34 27.30 6.62 -v -12.03 26.12 6.60 -v -12.04 26.12 6.51 -v -13.12 27.21 6.54 -v -12.27 26.24 6.47 -v -13.12 26.25 6.54 -v -12.70 26.21 6.46 -v -13.34 26.26 6.62 -v -13.34 26.26 6.72 -v -12.03 26.26 6.60 -v -12.04 26.26 6.51 -v -11.94 26.12 6.43 -v -11.94 26.26 6.43 -v -13.46 26.26 6.56 -v -13.46 26.12 6.56 -v -16.15 12.70 9.15 -v -16.86 14.28 8.74 -v -16.39 14.28 7.92 -v -15.67 12.70 8.34 -v -16.21 17.34 9.12 -v -17.17 17.34 8.57 -v -16.69 17.34 7.75 -v -15.74 17.34 8.30 -v -12.26 20.21 5.34 -v -12.26 19.23 5.34 -v -12.69 19.21 5.33 -v -12.69 20.52 5.33 -v -11.92 19.26 5.43 -v -11.92 19.12 5.43 -v -11.93 19.12 5.33 -v -11.93 19.26 5.33 -v -12.69 20.75 5.36 -v -12.03 20.29 5.40 -v -12.04 20.29 5.30 -v -12.70 20.75 5.26 -v -13.44 19.12 5.56 -v -13.44 19.26 5.56 -v -13.45 19.26 5.47 -v -13.45 19.12 5.47 -v -12.69 19.07 5.36 -v -13.34 19.12 5.52 -v -13.34 19.12 5.42 -v -12.70 19.07 5.26 -v -12.05 19.12 5.20 -v -12.28 19.23 5.16 -v -12.05 19.26 5.20 -v -12.27 20.21 5.26 -v -12.70 20.52 5.26 -v -13.35 19.26 5.31 -v -13.13 19.24 5.23 -v -13.35 19.12 5.31 -v -12.71 19.07 5.15 -v -12.71 19.21 5.15 -v -13.12 20.21 5.41 -v -13.12 19.24 5.41 -v -13.34 20.29 5.52 -v -13.34 20.29 5.42 -v -12.03 19.12 5.40 -v -12.04 19.12 5.30 -v -13.12 20.21 5.34 -v -12.27 19.23 5.26 -v -13.12 19.24 5.34 -v -12.70 19.21 5.26 -v -13.34 19.26 5.42 -v -13.34 19.26 5.52 -v -12.03 19.26 5.40 -v -12.04 19.26 5.30 -v -11.94 19.12 5.23 -v -11.94 19.26 5.23 -v -13.46 19.26 5.36 -v -13.46 19.12 5.36 -v -15.89 23.34 8.84 -v -16.57 24.92 8.36 -v -16.03 24.92 7.59 -v -15.35 23.34 8.06 -v -15.60 28.41 9.06 -v -16.50 28.41 8.43 -v -15.96 28.41 7.66 -v -15.06 28.41 8.29 -v -16.70 27.21 10.37 -v -16.70 26.24 10.37 -v -16.71 26.21 10.80 -v -16.71 27.52 10.80 -v -16.61 26.26 10.03 -v -16.61 26.12 10.03 -v -16.71 26.12 10.04 -v -16.71 26.26 10.04 -v -16.69 27.75 10.80 -v -16.64 27.30 10.15 -v -16.74 27.30 10.15 -v -16.78 27.75 10.81 -v -16.48 26.12 11.55 -v -16.48 26.26 11.55 -v -16.58 26.26 11.56 -v -16.58 26.12 11.56 -v -16.69 26.07 10.80 -v -16.53 26.12 11.45 -v -16.62 26.12 11.45 -v -16.78 26.07 10.81 -v -16.84 26.12 10.16 -v -16.88 26.24 10.39 -v -16.84 26.26 10.16 -v -16.78 27.21 10.38 -v -16.78 27.52 10.81 -v -16.73 26.26 11.46 -v -16.81 26.25 11.24 -v -16.73 26.12 11.46 -v -16.89 26.07 10.82 -v -16.89 26.21 10.82 -v -16.63 27.21 11.23 -v -16.63 26.25 11.23 -v -16.53 27.30 11.45 -v -16.62 27.30 11.45 -v -16.64 26.12 10.15 -v -16.74 26.12 10.15 -v -16.70 27.21 11.23 -v -16.78 26.24 10.38 -v -16.70 26.25 11.23 -v -16.78 26.21 10.81 -v -16.62 26.26 11.45 -v -16.53 26.26 11.45 -v -16.64 26.26 10.15 -v -16.74 26.26 10.15 -v -16.82 26.12 10.05 -v -16.82 26.26 10.05 -v -16.68 26.26 11.57 -v -16.68 26.12 11.57 -v -15.67 12.70 13.02 -v -16.39 14.28 13.43 -v -16.86 14.28 12.61 -v -16.15 12.70 12.20 -v -15.74 17.34 13.06 -v -16.69 17.34 13.61 -v -17.17 17.34 12.79 -v -16.21 17.34 12.24 -v -16.83 28.50 13.14 -v -16.83 30.29 13.14 -v -17.49 30.29 10.68 -v -17.49 28.50 10.68 -v -15.03 28.50 14.94 -v -15.03 30.29 14.94 -v -12.57 28.50 15.60 -v -12.57 30.29 15.60 -v -10.10 28.50 14.94 -v -10.10 30.29 14.94 -v -8.30 28.50 13.14 -v -8.30 30.29 13.14 -v -7.64 28.50 10.68 -v -7.64 30.29 10.68 -v -8.30 28.50 8.21 -v -8.30 30.29 8.21 -v -10.10 28.50 6.41 -v -10.10 30.29 6.41 -v -12.57 28.50 5.75 -v -12.57 30.29 5.75 -v -15.03 28.50 6.41 -v -15.03 30.29 6.41 -v -16.83 28.50 8.21 -v -16.83 30.29 8.21 -v -16.21 30.29 12.78 -v -16.78 30.29 10.68 -v -15.03 30.90 14.94 -v -14.67 30.90 14.32 -v -16.21 30.90 12.78 -v -16.83 30.90 13.14 -v -12.57 30.29 14.89 -v -14.67 30.29 14.32 -v -10.10 30.90 14.94 -v -10.46 30.90 14.32 -v -12.57 30.90 14.89 -v -12.57 30.90 15.60 -v -8.92 30.29 12.78 -v -10.46 30.29 14.32 -v -7.64 30.90 10.68 -v -8.36 30.90 10.68 -v -8.92 30.90 12.78 -v -8.30 30.90 13.14 -v -8.92 30.29 8.57 -v -8.36 30.29 10.68 -v -10.10 30.90 6.41 -v -10.46 30.90 7.03 -v -8.92 30.90 8.57 -v -8.30 30.90 8.21 -v -12.57 30.29 6.47 -v -10.46 30.29 7.03 -v -15.03 30.90 6.41 -v -14.67 30.90 7.03 -v -12.57 30.90 6.47 -v -12.57 30.90 5.75 -v -16.21 30.29 8.57 -v -14.67 30.29 7.03 -v -17.49 30.90 10.68 -v -16.78 30.90 10.68 -v -16.21 30.90 8.57 -v -16.83 30.90 8.21 -v -16.21 29.42 12.78 -v -16.78 29.42 10.68 -v -14.67 29.42 14.32 -v -12.57 29.42 14.89 -v -10.46 29.42 14.32 -v -8.92 29.42 12.78 -v -8.36 29.42 10.68 -v -8.92 29.42 8.57 -v -10.46 29.42 7.03 -v -12.57 29.42 6.47 -v -14.67 29.42 7.03 -v -16.21 29.42 8.57 -v -12.57 29.42 10.68 -v 17.17 7.76 10.68 -v 16.55 7.76 12.98 -v 16.55 0.00 12.98 -v 17.17 0.00 10.68 -v 14.87 7.76 14.66 -v 14.87 0.00 14.66 -v 12.57 7.76 15.28 -v 12.57 0.00 15.28 -v 10.27 7.76 14.66 -v 10.27 0.00 14.66 -v 8.58 7.76 12.98 -v 8.58 0.00 12.98 -v 7.97 7.76 10.68 -v 7.97 0.00 10.68 -v 8.58 7.76 8.38 -v 8.58 0.00 8.38 -v 10.27 7.76 6.69 -v 10.27 0.00 6.69 -v 12.57 7.76 6.08 -v 12.57 0.00 6.08 -v 14.87 7.76 6.69 -v 14.87 0.00 6.69 -v 16.55 7.76 8.38 -v 16.55 0.00 8.38 -v 16.78 7.76 13.11 -v 17.43 7.76 10.68 -v 17.43 8.57 10.68 -v 16.78 8.57 13.11 -v 15.00 7.76 14.89 -v 15.00 8.57 14.89 -v 12.57 7.76 15.54 -v 12.57 8.57 15.54 -v 10.13 7.76 14.89 -v 10.13 8.57 14.89 -v 8.35 7.76 13.11 -v 8.35 8.57 13.11 -v 7.70 7.76 10.68 -v 7.70 8.57 10.68 -v 8.35 7.76 8.24 -v 8.35 8.57 8.24 -v 10.13 7.76 6.46 -v 10.13 8.57 6.46 -v 12.57 7.76 5.81 -v 12.57 8.57 5.81 -v 15.00 7.76 6.46 -v 15.00 8.57 6.46 -v 16.78 7.76 8.24 -v 16.78 8.57 8.24 -v 17.17 8.57 10.68 -v 16.55 8.57 12.98 -v 14.87 8.57 14.66 -v 12.57 8.57 15.28 -v 10.27 8.57 14.66 -v 8.58 8.57 12.98 -v 7.97 8.57 10.68 -v 8.58 8.57 8.38 -v 10.27 8.57 6.69 -v 12.57 8.57 6.08 -v 14.87 8.57 6.69 -v 16.55 8.57 8.38 -v 17.17 16.89 10.68 -v 16.55 16.89 12.98 -v 14.87 16.89 14.66 -v 12.57 16.89 15.28 -v 10.27 16.89 14.66 -v 8.58 16.89 12.98 -v 7.97 16.89 10.68 -v 8.58 16.89 8.38 -v 10.27 16.89 6.69 -v 12.57 16.89 6.08 -v 14.87 16.89 6.69 -v 16.55 16.89 8.38 -v 17.13 21.30 13.31 -v 17.83 21.30 10.68 -v 18.23 21.30 10.68 -v 17.47 21.30 13.51 -v 15.20 21.30 15.24 -v 15.40 21.30 15.58 -v 12.57 21.30 15.94 -v 12.57 21.30 16.34 -v 9.93 21.30 15.24 -v 9.73 21.30 15.58 -v 8.01 21.30 13.31 -v 7.66 21.30 13.51 -v 7.30 21.30 10.68 -v 6.90 21.30 10.68 -v 8.01 21.30 8.04 -v 7.66 21.30 7.84 -v 9.93 21.30 6.12 -v 9.73 21.30 5.77 -v 12.57 21.30 5.41 -v 12.57 21.30 5.01 -v 15.20 21.30 6.12 -v 15.40 21.30 5.77 -v 17.13 21.30 8.04 -v 17.47 21.30 7.84 -v 16.72 24.76 10.68 -v 16.17 24.76 12.76 -v 14.64 24.76 14.28 -v 12.57 24.76 14.83 -v 10.49 24.76 14.28 -v 8.97 24.76 12.76 -v 8.41 24.76 10.68 -v 8.97 24.76 8.60 -v 10.49 24.76 7.08 -v 12.57 24.76 6.52 -v 14.64 24.76 7.08 -v 16.17 24.76 8.60 -v 16.69 28.50 10.68 -v 16.13 28.50 12.74 -v 14.63 28.50 14.24 -v 12.57 28.50 14.80 -v 10.51 28.50 14.24 -v 9.00 28.50 12.74 -v 8.45 28.50 10.68 -v 9.00 28.50 8.62 -v 10.51 28.50 7.11 -v 12.57 28.50 6.56 -v 14.63 28.50 7.11 -v 16.13 28.50 8.62 -v 17.83 17.36 10.68 -v 17.13 17.36 13.31 -v 15.20 17.36 15.24 -v 12.57 17.36 15.94 -v 9.93 17.36 15.24 -v 8.01 17.36 13.31 -v 7.30 17.36 10.68 -v 8.01 17.36 8.04 -v 9.93 17.36 6.12 -v 12.57 17.36 5.41 -v 15.20 17.36 6.12 -v 17.13 17.36 8.04 -v 17.91 20.21 10.37 -v 17.91 20.52 10.80 -v 17.91 19.21 10.80 -v 17.91 19.23 10.37 -v 17.81 19.26 10.03 -v 17.91 19.26 10.04 -v 17.91 19.12 10.04 -v 17.81 19.12 10.03 -v 17.89 20.75 10.80 -v 17.98 20.75 10.81 -v 17.94 20.29 10.15 -v 17.84 20.29 10.15 -v 17.68 19.12 11.55 -v 17.78 19.12 11.56 -v 17.78 19.26 11.56 -v 17.68 19.26 11.55 -v 17.89 19.07 10.80 -v 17.98 19.07 10.81 -v 17.82 19.12 11.45 -v 17.73 19.12 11.45 -v 18.05 19.12 10.16 -v 18.05 19.26 10.16 -v 18.08 19.23 10.39 -v 17.98 20.52 10.81 -v 17.98 20.21 10.38 -v 17.93 19.26 11.46 -v 17.93 19.12 11.46 -v 18.01 19.24 11.24 -v 18.09 19.07 10.82 -v 18.09 19.21 10.82 -v 17.83 20.21 11.23 -v 17.83 19.24 11.23 -v 17.73 20.29 11.45 -v 17.82 20.29 11.45 -v 17.84 19.12 10.15 -v 17.94 19.12 10.15 -v 17.90 20.21 11.23 -v 17.98 19.23 10.38 -v 17.90 19.24 11.23 -v 17.98 19.21 10.81 -v 17.82 19.26 11.45 -v 17.73 19.26 11.45 -v 17.94 19.26 10.15 -v 17.84 19.26 10.15 -v 18.02 19.26 10.05 -v 18.02 19.12 10.05 -v 17.88 19.12 11.57 -v 17.88 19.26 11.57 -v 12.87 20.21 16.02 -v 12.44 20.52 16.02 -v 12.44 19.21 16.02 -v 12.87 19.23 16.02 -v 13.21 19.26 15.92 -v 13.20 19.26 16.02 -v 13.20 19.12 16.02 -v 13.21 19.12 15.92 -v 12.44 20.75 16.00 -v 12.43 20.75 16.10 -v 13.09 20.29 16.05 -v 13.10 20.29 15.95 -v 11.69 19.12 15.79 -v 11.68 19.12 15.89 -v 11.68 19.26 15.89 -v 11.69 19.26 15.79 -v 12.44 19.07 16.00 -v 12.43 19.07 16.10 -v 11.79 19.12 15.94 -v 11.80 19.12 15.84 -v 13.08 19.12 16.16 -v 13.08 19.26 16.16 -v 12.85 19.23 16.20 -v 12.43 20.52 16.10 -v 12.86 20.21 16.09 -v 11.78 19.26 16.04 -v 11.78 19.12 16.04 -v 12.00 19.24 16.12 -v 12.42 19.07 16.20 -v 12.42 19.21 16.20 -v 12.01 20.21 15.94 -v 12.01 19.24 15.94 -v 11.80 20.29 15.84 -v 11.79 20.29 15.94 -v 13.10 19.12 15.95 -v 13.09 19.12 16.05 -v 12.01 20.21 16.01 -v 12.86 19.23 16.09 -v 12.01 19.24 16.01 -v 12.43 19.21 16.10 -v 11.79 19.26 15.94 -v 11.80 19.26 15.84 -v 13.09 19.26 16.05 -v 13.10 19.26 15.95 -v 13.19 19.26 16.13 -v 13.19 19.12 16.13 -v 11.67 19.12 16.00 -v 11.67 19.26 16.00 -v 9.24 23.34 12.52 -v 9.78 23.34 13.29 -v 9.10 24.92 13.76 -v 8.56 24.92 12.99 -v 8.63 28.41 12.92 -v 9.53 28.41 12.29 -v 9.18 28.41 13.70 -v 10.08 28.41 13.07 -v 12.87 27.21 14.81 -v 12.44 27.52 14.82 -v 12.44 26.21 14.82 -v 12.87 26.24 14.81 -v 13.21 26.26 14.72 -v 13.20 26.26 14.82 -v 13.20 26.12 14.82 -v 13.21 26.12 14.72 -v 12.44 27.75 14.80 -v 12.43 27.75 14.89 -v 13.09 27.30 14.85 -v 13.10 27.30 14.75 -v 11.69 26.12 14.59 -v 11.68 26.12 14.69 -v 11.68 26.26 14.69 -v 11.69 26.26 14.59 -v 12.44 26.07 14.80 -v 12.43 26.07 14.89 -v 11.79 26.12 14.73 -v 11.80 26.12 14.64 -v 13.08 26.12 14.96 -v 13.08 26.26 14.96 -v 12.85 26.24 14.99 -v 12.43 27.52 14.89 -v 12.86 27.21 14.89 -v 11.78 26.26 14.84 -v 11.78 26.12 14.84 -v 12.00 26.25 14.92 -v 12.42 26.07 15.00 -v 12.42 26.21 15.00 -v 12.01 27.21 14.74 -v 12.01 26.25 14.74 -v 11.80 27.30 14.64 -v 11.79 27.30 14.73 -v 13.10 26.12 14.75 -v 13.09 26.12 14.85 -v 12.01 27.21 14.81 -v 12.86 26.24 14.89 -v 12.01 26.25 14.81 -v 12.43 26.21 14.89 -v 11.79 26.26 14.73 -v 11.80 26.26 14.64 -v 13.09 26.26 14.85 -v 13.10 26.26 14.75 -v 13.19 26.26 14.93 -v 13.19 26.12 14.93 -v 11.67 26.12 14.79 -v 11.67 26.26 14.79 -v 14.41 23.34 14.01 -v 15.18 23.34 13.46 -v 15.65 24.92 14.14 -v 14.88 24.92 14.68 -v 14.81 28.41 14.61 -v 14.18 28.41 13.71 -v 15.59 28.41 14.07 -v 14.96 28.41 13.17 -v 8.43 27.21 10.98 -v 8.42 27.52 10.55 -v 8.42 26.21 10.55 -v 8.43 26.24 10.98 -v 8.52 26.26 11.32 -v 8.42 26.26 11.31 -v 8.42 26.12 11.31 -v 8.52 26.12 11.32 -v 8.45 27.75 10.55 -v 8.35 27.75 10.54 -v 8.39 27.30 11.20 -v 8.49 27.30 11.21 -v 8.65 26.12 9.80 -v 8.56 26.12 9.79 -v 8.56 26.26 9.79 -v 8.65 26.26 9.80 -v 8.45 26.07 10.55 -v 8.35 26.07 10.54 -v 8.51 26.12 9.90 -v 8.61 26.12 9.91 -v 8.29 26.12 11.19 -v 8.29 26.26 11.19 -v 8.25 26.24 10.96 -v 8.35 27.52 10.54 -v 8.35 27.21 10.97 -v 8.40 26.26 9.89 -v 8.40 26.12 9.89 -v 8.32 26.25 10.11 -v 8.24 26.07 10.53 -v 8.24 26.21 10.53 -v 8.50 27.21 10.13 -v 8.50 26.25 10.13 -v 8.61 27.30 9.91 -v 8.51 27.30 9.90 -v 8.49 26.12 11.21 -v 8.39 26.12 11.20 -v 8.43 27.21 10.12 -v 8.35 26.24 10.97 -v 8.43 26.25 10.12 -v 8.35 26.21 10.54 -v 8.51 26.26 9.90 -v 8.61 26.26 9.91 -v 8.39 26.26 11.20 -v 8.49 26.26 11.21 -v 8.32 26.26 11.30 -v 8.32 26.12 11.30 -v 8.45 26.12 9.78 -v 8.45 26.26 9.78 -v 13.04 12.70 6.81 -v 12.09 12.70 6.81 -v 12.09 14.28 5.99 -v 13.04 14.28 5.99 -v 13.04 17.34 5.64 -v 13.04 17.34 6.74 -v 12.09 17.34 5.64 -v 12.09 17.34 6.74 -v 8.98 12.70 12.20 -v 9.46 12.70 13.02 -v 8.74 14.28 13.43 -v 8.27 14.28 12.61 -v 7.97 17.34 12.79 -v 8.92 17.34 12.24 -v 8.44 17.34 13.61 -v 9.39 17.34 13.06 -v 12.09 12.70 14.54 -v 13.04 12.70 14.54 -v 13.04 14.28 15.36 -v 12.09 14.28 15.36 -v 12.09 17.34 15.71 -v 12.09 17.34 14.62 -v 13.04 17.34 15.71 -v 13.04 17.34 14.62 -v 10.73 23.34 7.35 -v 9.95 23.34 7.89 -v 9.48 24.92 7.22 -v 10.25 24.92 6.67 -v 10.32 28.41 6.74 -v 10.95 28.41 7.65 -v 9.55 28.41 7.29 -v 10.18 28.41 8.19 -v 9.46 12.70 8.34 -v 8.98 12.70 9.15 -v 8.27 14.28 8.74 -v 8.74 14.28 7.92 -v 8.44 17.34 7.75 -v 9.39 17.34 8.30 -v 7.97 17.34 8.57 -v 8.92 17.34 9.12 -v 7.23 20.21 10.98 -v 7.22 20.52 10.55 -v 7.22 19.21 10.55 -v 7.23 19.23 10.98 -v 7.32 19.26 11.32 -v 7.22 19.26 11.31 -v 7.22 19.12 11.31 -v 7.32 19.12 11.32 -v 7.24 20.75 10.55 -v 7.15 20.75 10.54 -v 7.19 20.29 11.20 -v 7.29 20.29 11.21 -v 7.45 19.12 9.80 -v 7.35 19.12 9.79 -v 7.35 19.26 9.79 -v 7.45 19.26 9.80 -v 7.24 19.07 10.55 -v 7.15 19.07 10.54 -v 7.31 19.12 9.90 -v 7.41 19.12 9.91 -v 7.09 19.12 11.19 -v 7.09 19.26 11.19 -v 7.05 19.23 10.96 -v 7.15 20.52 10.54 -v 7.15 20.21 10.97 -v 7.20 19.26 9.89 -v 7.20 19.12 9.89 -v 7.12 19.24 10.11 -v 7.04 19.07 10.53 -v 7.04 19.21 10.53 -v 7.30 20.21 10.13 -v 7.30 19.24 10.13 -v 7.41 20.29 9.91 -v 7.31 20.29 9.90 -v 7.29 19.12 11.21 -v 7.19 19.12 11.20 -v 7.23 20.21 10.12 -v 7.15 19.23 10.97 -v 7.23 19.24 10.12 -v 7.15 19.21 10.54 -v 7.31 19.26 9.90 -v 7.41 19.26 9.91 -v 7.19 19.26 11.20 -v 7.29 19.26 11.21 -v 7.11 19.26 11.30 -v 7.11 19.12 11.30 -v 7.25 19.12 9.78 -v 7.25 19.26 9.78 -v 12.26 27.21 6.54 -v 12.69 27.52 6.53 -v 12.69 26.21 6.53 -v 12.26 26.24 6.54 -v 11.92 26.26 6.63 -v 11.93 26.26 6.53 -v 11.93 26.12 6.53 -v 11.92 26.12 6.63 -v 12.69 27.75 6.56 -v 12.70 27.75 6.46 -v 12.04 27.30 6.51 -v 12.03 27.30 6.60 -v 13.44 26.12 6.76 -v 13.45 26.12 6.67 -v 13.45 26.26 6.67 -v 13.44 26.26 6.76 -v 12.69 26.07 6.56 -v 12.70 26.07 6.46 -v 13.34 26.12 6.62 -v 13.34 26.12 6.72 -v 12.05 26.12 6.40 -v 12.05 26.26 6.40 -v 12.28 26.24 6.36 -v 12.70 27.52 6.46 -v 12.27 27.21 6.47 -v 13.35 26.26 6.51 -v 13.35 26.12 6.51 -v 13.13 26.25 6.43 -v 12.71 26.07 6.35 -v 12.71 26.21 6.35 -v 13.12 27.21 6.61 -v 13.12 26.25 6.61 -v 13.34 27.30 6.72 -v 13.34 27.30 6.62 -v 12.03 26.12 6.60 -v 12.04 26.12 6.51 -v 13.12 27.21 6.54 -v 12.27 26.24 6.47 -v 13.12 26.25 6.54 -v 12.70 26.21 6.46 -v 13.34 26.26 6.62 -v 13.34 26.26 6.72 -v 12.04 26.26 6.51 -v 12.03 26.26 6.60 -v 11.94 26.26 6.43 -v 11.94 26.12 6.43 -v 13.46 26.12 6.56 -v 13.46 26.26 6.56 -v 16.15 12.70 9.15 -v 15.67 12.70 8.34 -v 16.39 14.28 7.92 -v 16.86 14.28 8.74 -v 17.17 17.34 8.57 -v 16.21 17.34 9.12 -v 16.69 17.34 7.75 -v 15.74 17.34 8.30 -v 12.26 20.21 5.34 -v 12.69 20.52 5.33 -v 12.69 19.21 5.33 -v 12.26 19.23 5.34 -v 11.92 19.26 5.43 -v 11.93 19.26 5.33 -v 11.93 19.12 5.33 -v 11.92 19.12 5.43 -v 12.69 20.75 5.36 -v 12.70 20.75 5.26 -v 12.04 20.29 5.30 -v 12.03 20.29 5.40 -v 13.44 19.12 5.56 -v 13.45 19.12 5.47 -v 13.45 19.26 5.47 -v 13.44 19.26 5.56 -v 12.69 19.07 5.36 -v 12.70 19.07 5.26 -v 13.34 19.12 5.42 -v 13.34 19.12 5.52 -v 12.05 19.12 5.20 -v 12.05 19.26 5.20 -v 12.28 19.23 5.16 -v 12.70 20.52 5.26 -v 12.27 20.21 5.26 -v 13.35 19.26 5.31 -v 13.35 19.12 5.31 -v 13.13 19.24 5.23 -v 12.71 19.07 5.15 -v 12.71 19.21 5.15 -v 13.12 20.21 5.41 -v 13.12 19.24 5.41 -v 13.34 20.29 5.52 -v 13.34 20.29 5.42 -v 12.03 19.12 5.40 -v 12.04 19.12 5.30 -v 13.12 20.21 5.34 -v 12.27 19.23 5.26 -v 13.12 19.24 5.34 -v 12.70 19.21 5.26 -v 13.34 19.26 5.42 -v 13.34 19.26 5.52 -v 12.04 19.26 5.30 -v 12.03 19.26 5.40 -v 11.94 19.26 5.23 -v 11.94 19.12 5.23 -v 13.46 19.12 5.36 -v 13.46 19.26 5.36 -v 15.89 23.34 8.84 -v 15.35 23.34 8.06 -v 16.03 24.92 7.59 -v 16.57 24.92 8.36 -v 16.50 28.41 8.43 -v 15.60 28.41 9.06 -v 15.96 28.41 7.66 -v 15.06 28.41 8.29 -v 16.70 27.21 10.37 -v 16.71 27.52 10.80 -v 16.71 26.21 10.80 -v 16.70 26.24 10.37 -v 16.61 26.26 10.03 -v 16.71 26.26 10.04 -v 16.71 26.12 10.04 -v 16.61 26.12 10.03 -v 16.69 27.75 10.80 -v 16.78 27.75 10.81 -v 16.74 27.30 10.15 -v 16.64 27.30 10.15 -v 16.48 26.12 11.55 -v 16.58 26.12 11.56 -v 16.58 26.26 11.56 -v 16.48 26.26 11.55 -v 16.69 26.07 10.80 -v 16.78 26.07 10.81 -v 16.62 26.12 11.45 -v 16.53 26.12 11.45 -v 16.84 26.12 10.16 -v 16.84 26.26 10.16 -v 16.88 26.24 10.39 -v 16.78 27.52 10.81 -v 16.78 27.21 10.38 -v 16.73 26.26 11.46 -v 16.73 26.12 11.46 -v 16.81 26.25 11.24 -v 16.89 26.07 10.82 -v 16.89 26.21 10.82 -v 16.63 27.21 11.23 -v 16.63 26.25 11.23 -v 16.53 27.30 11.45 -v 16.62 27.30 11.45 -v 16.64 26.12 10.15 -v 16.74 26.12 10.15 -v 16.70 27.21 11.23 -v 16.78 26.24 10.38 -v 16.70 26.25 11.23 -v 16.78 26.21 10.81 -v 16.62 26.26 11.45 -v 16.53 26.26 11.45 -v 16.74 26.26 10.15 -v 16.64 26.26 10.15 -v 16.82 26.26 10.05 -v 16.82 26.12 10.05 -v 16.68 26.12 11.57 -v 16.68 26.26 11.57 -v 15.67 12.70 13.02 -v 16.15 12.70 12.20 -v 16.86 14.28 12.61 -v 16.39 14.28 13.43 -v 16.69 17.34 13.61 -v 15.74 17.34 13.06 -v 17.17 17.34 12.79 -v 16.21 17.34 12.24 -v 16.83 28.50 13.14 -v 17.49 28.50 10.68 -v 17.49 30.29 10.68 -v 16.83 30.29 13.14 -v 15.03 28.50 14.94 -v 15.03 30.29 14.94 -v 12.57 28.50 15.60 -v 12.57 30.29 15.60 -v 10.10 28.50 14.94 -v 10.10 30.29 14.94 -v 8.30 28.50 13.14 -v 8.30 30.29 13.14 -v 7.64 28.50 10.68 -v 7.64 30.29 10.68 -v 8.30 28.50 8.21 -v 8.30 30.29 8.21 -v 10.10 28.50 6.41 -v 10.10 30.29 6.41 -v 12.57 28.50 5.75 -v 12.57 30.29 5.75 -v 15.03 28.50 6.41 -v 15.03 30.29 6.41 -v 16.83 28.50 8.21 -v 16.83 30.29 8.21 -v 16.78 30.29 10.68 -v 16.21 30.29 12.78 -v 15.03 30.90 14.94 -v 16.83 30.90 13.14 -v 16.21 30.90 12.78 -v 14.67 30.90 14.32 -v 14.67 30.29 14.32 -v 12.57 30.29 14.89 -v 10.10 30.90 14.94 -v 12.57 30.90 15.60 -v 12.57 30.90 14.89 -v 10.46 30.90 14.32 -v 10.46 30.29 14.32 -v 8.92 30.29 12.78 -v 7.64 30.90 10.68 -v 8.30 30.90 13.14 -v 8.92 30.90 12.78 -v 8.36 30.90 10.68 -v 8.36 30.29 10.68 -v 8.92 30.29 8.57 -v 10.10 30.90 6.41 -v 8.30 30.90 8.21 -v 8.92 30.90 8.57 -v 10.46 30.90 7.03 -v 10.46 30.29 7.03 -v 12.57 30.29 6.47 -v 15.03 30.90 6.41 -v 12.57 30.90 5.75 -v 12.57 30.90 6.47 -v 14.67 30.90 7.03 -v 14.67 30.29 7.03 -v 16.21 30.29 8.57 -v 17.49 30.90 10.68 -v 16.83 30.90 8.21 -v 16.21 30.90 8.57 -v 16.78 30.90 10.68 -v 16.78 29.42 10.68 -v 16.21 29.42 12.78 -v 14.67 29.42 14.32 -v 12.57 29.42 14.89 -v 10.46 29.42 14.32 -v 8.92 29.42 12.78 -v 8.36 29.42 10.68 -v 8.92 29.42 8.57 -v 10.46 29.42 7.03 -v 12.57 29.42 6.47 -v 14.67 29.42 7.03 -v 16.21 29.42 8.57 -v 12.57 29.42 10.68 -v 16.55 0.00 -12.98 -v 16.55 7.76 -12.98 -v 17.17 7.76 -10.68 -v 17.17 0.00 -10.68 -v 14.87 0.00 -14.66 -v 14.87 7.76 -14.66 -v 12.57 0.00 -15.28 -v 12.57 7.76 -15.28 -v 10.27 0.00 -14.66 -v 10.27 7.76 -14.66 -v 8.58 0.00 -12.98 -v 8.58 7.76 -12.98 -v 7.97 0.00 -10.68 -v 7.97 7.76 -10.68 -v 8.58 0.00 -8.38 -v 8.58 7.76 -8.38 -v 10.27 0.00 -6.69 -v 10.27 7.76 -6.69 -v 12.57 0.00 -6.08 -v 12.57 7.76 -6.08 -v 14.87 0.00 -6.69 -v 14.87 7.76 -6.69 -v 16.55 0.00 -8.38 -v 16.55 7.76 -8.38 -v 16.78 7.76 -13.11 -v 16.78 8.57 -13.11 -v 17.43 8.57 -10.68 -v 17.43 7.76 -10.68 -v 15.00 7.76 -14.89 -v 15.00 8.57 -14.89 -v 12.57 7.76 -15.54 -v 12.57 8.57 -15.54 -v 10.13 7.76 -14.89 -v 10.13 8.57 -14.89 -v 8.35 7.76 -13.11 -v 8.35 8.57 -13.11 -v 7.70 7.76 -10.68 -v 7.70 8.57 -10.68 -v 8.35 7.76 -8.24 -v 8.35 8.57 -8.24 -v 10.13 7.76 -6.46 -v 10.13 8.57 -6.46 -v 12.57 7.76 -5.81 -v 12.57 8.57 -5.81 -v 15.00 7.76 -6.46 -v 15.00 8.57 -6.46 -v 16.78 7.76 -8.24 -v 16.78 8.57 -8.24 -v 17.17 8.57 -10.68 -v 16.55 8.57 -12.98 -v 14.87 8.57 -14.66 -v 12.57 8.57 -15.28 -v 10.27 8.57 -14.66 -v 8.58 8.57 -12.98 -v 7.97 8.57 -10.68 -v 8.58 8.57 -8.38 -v 10.27 8.57 -6.69 -v 12.57 8.57 -6.08 -v 14.87 8.57 -6.69 -v 16.55 8.57 -8.38 -v 16.55 16.89 -12.98 -v 17.17 16.89 -10.68 -v 14.87 16.89 -14.66 -v 12.57 16.89 -15.28 -v 10.27 16.89 -14.66 -v 8.58 16.89 -12.98 -v 7.97 16.89 -10.68 -v 8.58 16.89 -8.38 -v 10.27 16.89 -6.69 -v 12.57 16.89 -6.08 -v 14.87 16.89 -6.69 -v 16.55 16.89 -8.38 -v 17.13 21.30 -13.31 -v 17.47 21.30 -13.51 -v 18.23 21.30 -10.68 -v 17.83 21.30 -10.68 -v 15.20 21.30 -15.24 -v 15.40 21.30 -15.58 -v 12.57 21.30 -15.94 -v 12.57 21.30 -16.34 -v 9.93 21.30 -15.24 -v 9.73 21.30 -15.58 -v 8.01 21.30 -13.31 -v 7.66 21.30 -13.51 -v 7.30 21.30 -10.68 -v 6.90 21.30 -10.68 -v 8.01 21.30 -8.04 -v 7.66 21.30 -7.84 -v 9.93 21.30 -6.12 -v 9.73 21.30 -5.77 -v 12.57 21.30 -5.41 -v 12.57 21.30 -5.01 -v 15.20 21.30 -6.12 -v 15.40 21.30 -5.77 -v 17.13 21.30 -8.04 -v 17.47 21.30 -7.84 -v 16.17 24.76 -12.76 -v 16.72 24.76 -10.68 -v 14.64 24.76 -14.28 -v 12.57 24.76 -14.83 -v 10.49 24.76 -14.28 -v 8.97 24.76 -12.76 -v 8.41 24.76 -10.68 -v 8.97 24.76 -8.60 -v 10.49 24.76 -7.08 -v 12.57 24.76 -6.52 -v 14.64 24.76 -7.08 -v 16.17 24.76 -8.60 -v 16.13 28.50 -12.74 -v 16.69 28.50 -10.68 -v 14.63 28.50 -14.24 -v 12.57 28.50 -14.80 -v 10.51 28.50 -14.24 -v 9.00 28.50 -12.74 -v 8.45 28.50 -10.68 -v 9.00 28.50 -8.62 -v 10.51 28.50 -7.11 -v 12.57 28.50 -6.56 -v 14.63 28.50 -7.11 -v 16.13 28.50 -8.62 -v 17.13 17.36 -13.31 -v 17.83 17.36 -10.68 -v 15.20 17.36 -15.24 -v 12.57 17.36 -15.94 -v 9.93 17.36 -15.24 -v 8.01 17.36 -13.31 -v 7.30 17.36 -10.68 -v 8.01 17.36 -8.04 -v 9.93 17.36 -6.12 -v 12.57 17.36 -5.41 -v 15.20 17.36 -6.12 -v 17.13 17.36 -8.04 -v 17.91 20.21 -10.37 -v 17.91 19.23 -10.37 -v 17.91 19.21 -10.80 -v 17.91 20.52 -10.80 -v 17.81 19.26 -10.03 -v 17.81 19.12 -10.03 -v 17.91 19.12 -10.04 -v 17.91 19.26 -10.04 -v 17.89 20.75 -10.80 -v 17.84 20.29 -10.15 -v 17.94 20.29 -10.15 -v 17.98 20.75 -10.81 -v 17.68 19.12 -11.55 -v 17.68 19.26 -11.55 -v 17.78 19.26 -11.56 -v 17.78 19.12 -11.56 -v 17.89 19.07 -10.80 -v 17.73 19.12 -11.45 -v 17.82 19.12 -11.45 -v 17.98 19.07 -10.81 -v 18.05 19.12 -10.16 -v 18.08 19.23 -10.39 -v 18.05 19.26 -10.16 -v 17.98 20.21 -10.38 -v 17.98 20.52 -10.81 -v 17.93 19.26 -11.46 -v 18.01 19.24 -11.24 -v 17.93 19.12 -11.46 -v 18.09 19.07 -10.82 -v 18.09 19.21 -10.82 -v 17.83 20.21 -11.23 -v 17.83 19.24 -11.23 -v 17.73 20.29 -11.45 -v 17.82 20.29 -11.45 -v 17.84 19.12 -10.15 -v 17.94 19.12 -10.15 -v 17.90 20.21 -11.23 -v 17.98 19.23 -10.38 -v 17.90 19.24 -11.23 -v 17.98 19.21 -10.81 -v 17.82 19.26 -11.45 -v 17.73 19.26 -11.45 -v 17.84 19.26 -10.15 -v 17.94 19.26 -10.15 -v 18.02 19.12 -10.05 -v 18.02 19.26 -10.05 -v 17.88 19.26 -11.57 -v 17.88 19.12 -11.57 -v 12.87 20.21 -16.02 -v 12.87 19.23 -16.02 -v 12.44 19.21 -16.02 -v 12.44 20.52 -16.02 -v 13.21 19.26 -15.92 -v 13.21 19.12 -15.92 -v 13.20 19.12 -16.02 -v 13.20 19.26 -16.02 -v 12.44 20.75 -16.00 -v 13.10 20.29 -15.95 -v 13.09 20.29 -16.05 -v 12.43 20.75 -16.10 -v 11.69 19.12 -15.79 -v 11.69 19.26 -15.79 -v 11.68 19.26 -15.89 -v 11.68 19.12 -15.89 -v 12.44 19.07 -16.00 -v 11.80 19.12 -15.84 -v 11.79 19.12 -15.94 -v 12.43 19.07 -16.10 -v 13.08 19.12 -16.16 -v 12.85 19.23 -16.20 -v 13.08 19.26 -16.16 -v 12.86 20.21 -16.09 -v 12.43 20.52 -16.10 -v 11.78 19.26 -16.04 -v 12.00 19.24 -16.12 -v 11.78 19.12 -16.04 -v 12.42 19.07 -16.20 -v 12.42 19.21 -16.20 -v 12.01 20.21 -15.94 -v 12.01 19.24 -15.94 -v 11.80 20.29 -15.84 -v 11.79 20.29 -15.94 -v 13.10 19.12 -15.95 -v 13.09 19.12 -16.05 -v 12.01 20.21 -16.01 -v 12.86 19.23 -16.09 -v 12.01 19.24 -16.01 -v 12.43 19.21 -16.10 -v 11.79 19.26 -15.94 -v 11.80 19.26 -15.84 -v 13.10 19.26 -15.95 -v 13.09 19.26 -16.05 -v 13.19 19.12 -16.13 -v 13.19 19.26 -16.13 -v 11.67 19.26 -16.00 -v 11.67 19.12 -16.00 -v 9.24 23.34 -12.52 -v 8.56 24.92 -12.99 -v 9.10 24.92 -13.76 -v 9.78 23.34 -13.29 -v 9.53 28.41 -12.29 -v 8.63 28.41 -12.92 -v 9.18 28.41 -13.70 -v 10.08 28.41 -13.07 -v 12.87 27.21 -14.81 -v 12.87 26.24 -14.81 -v 12.44 26.21 -14.82 -v 12.44 27.52 -14.82 -v 13.21 26.26 -14.72 -v 13.21 26.12 -14.72 -v 13.20 26.12 -14.82 -v 13.20 26.26 -14.82 -v 12.44 27.75 -14.80 -v 13.10 27.30 -14.75 -v 13.09 27.30 -14.85 -v 12.43 27.75 -14.89 -v 11.69 26.12 -14.59 -v 11.69 26.26 -14.59 -v 11.68 26.26 -14.69 -v 11.68 26.12 -14.69 -v 12.44 26.07 -14.80 -v 11.80 26.12 -14.64 -v 11.79 26.12 -14.73 -v 12.43 26.07 -14.89 -v 13.08 26.12 -14.96 -v 12.85 26.24 -14.99 -v 13.08 26.26 -14.96 -v 12.86 27.21 -14.89 -v 12.43 27.52 -14.89 -v 11.78 26.26 -14.84 -v 12.00 26.25 -14.92 -v 11.78 26.12 -14.84 -v 12.42 26.07 -15.00 -v 12.42 26.21 -15.00 -v 12.01 27.21 -14.74 -v 12.01 26.25 -14.74 -v 11.80 27.30 -14.64 -v 11.79 27.30 -14.73 -v 13.10 26.12 -14.75 -v 13.09 26.12 -14.85 -v 12.01 27.21 -14.81 -v 12.86 26.24 -14.89 -v 12.01 26.25 -14.81 -v 12.43 26.21 -14.89 -v 11.79 26.26 -14.73 -v 11.80 26.26 -14.64 -v 13.10 26.26 -14.75 -v 13.09 26.26 -14.85 -v 13.19 26.12 -14.93 -v 13.19 26.26 -14.93 -v 11.67 26.26 -14.79 -v 11.67 26.12 -14.79 -v 14.41 23.34 -14.01 -v 14.88 24.92 -14.68 -v 15.65 24.92 -14.14 -v 15.18 23.34 -13.46 -v 14.18 28.41 -13.71 -v 14.81 28.41 -14.61 -v 15.59 28.41 -14.07 -v 14.96 28.41 -13.17 -v 8.43 27.21 -10.98 -v 8.43 26.24 -10.98 -v 8.42 26.21 -10.55 -v 8.42 27.52 -10.55 -v 8.52 26.26 -11.32 -v 8.52 26.12 -11.32 -v 8.42 26.12 -11.31 -v 8.42 26.26 -11.31 -v 8.45 27.75 -10.55 -v 8.49 27.30 -11.21 -v 8.39 27.30 -11.20 -v 8.35 27.75 -10.54 -v 8.65 26.12 -9.80 -v 8.65 26.26 -9.80 -v 8.56 26.26 -9.79 -v 8.56 26.12 -9.79 -v 8.45 26.07 -10.55 -v 8.61 26.12 -9.91 -v 8.51 26.12 -9.90 -v 8.35 26.07 -10.54 -v 8.29 26.12 -11.19 -v 8.25 26.24 -10.96 -v 8.29 26.26 -11.19 -v 8.35 27.21 -10.97 -v 8.35 27.52 -10.54 -v 8.40 26.26 -9.89 -v 8.32 26.25 -10.11 -v 8.40 26.12 -9.89 -v 8.24 26.07 -10.53 -v 8.24 26.21 -10.53 -v 8.50 27.21 -10.13 -v 8.50 26.25 -10.13 -v 8.61 27.30 -9.91 -v 8.51 27.30 -9.90 -v 8.49 26.12 -11.21 -v 8.39 26.12 -11.20 -v 8.43 27.21 -10.12 -v 8.35 26.24 -10.97 -v 8.43 26.25 -10.12 -v 8.35 26.21 -10.54 -v 8.51 26.26 -9.90 -v 8.61 26.26 -9.91 -v 8.49 26.26 -11.21 -v 8.39 26.26 -11.20 -v 8.32 26.12 -11.30 -v 8.32 26.26 -11.30 -v 8.45 26.26 -9.78 -v 8.45 26.12 -9.78 -v 13.04 12.70 -6.81 -v 13.04 14.28 -5.99 -v 12.09 14.28 -5.99 -v 12.09 12.70 -6.81 -v 13.04 17.34 -6.74 -v 13.04 17.34 -5.64 -v 12.09 17.34 -5.64 -v 12.09 17.34 -6.74 -v 8.98 12.70 -12.20 -v 8.27 14.28 -12.61 -v 8.74 14.28 -13.43 -v 9.46 12.70 -13.02 -v 8.92 17.34 -12.24 -v 7.97 17.34 -12.79 -v 8.44 17.34 -13.61 -v 9.39 17.34 -13.06 -v 12.09 12.70 -14.54 -v 12.09 14.28 -15.36 -v 13.04 14.28 -15.36 -v 13.04 12.70 -14.54 -v 12.09 17.34 -14.62 -v 12.09 17.34 -15.71 -v 13.04 17.34 -15.71 -v 13.04 17.34 -14.62 -v 10.73 23.34 -7.35 -v 10.25 24.92 -6.67 -v 9.48 24.92 -7.22 -v 9.95 23.34 -7.89 -v 10.95 28.41 -7.65 -v 10.32 28.41 -6.74 -v 9.55 28.41 -7.29 -v 10.18 28.41 -8.19 -v 9.46 12.70 -8.34 -v 8.74 14.28 -7.92 -v 8.27 14.28 -8.74 -v 8.98 12.70 -9.15 -v 9.39 17.34 -8.30 -v 8.44 17.34 -7.75 -v 7.97 17.34 -8.57 -v 8.92 17.34 -9.12 -v 7.23 20.21 -10.98 -v 7.23 19.23 -10.98 -v 7.22 19.21 -10.55 -v 7.22 20.52 -10.55 -v 7.32 19.26 -11.32 -v 7.32 19.12 -11.32 -v 7.22 19.12 -11.31 -v 7.22 19.26 -11.31 -v 7.24 20.75 -10.55 -v 7.29 20.29 -11.21 -v 7.19 20.29 -11.20 -v 7.15 20.75 -10.54 -v 7.45 19.12 -9.80 -v 7.45 19.26 -9.80 -v 7.35 19.26 -9.79 -v 7.35 19.12 -9.79 -v 7.24 19.07 -10.55 -v 7.41 19.12 -9.91 -v 7.31 19.12 -9.90 -v 7.15 19.07 -10.54 -v 7.09 19.12 -11.19 -v 7.05 19.23 -10.96 -v 7.09 19.26 -11.19 -v 7.15 20.21 -10.97 -v 7.15 20.52 -10.54 -v 7.20 19.26 -9.89 -v 7.12 19.24 -10.11 -v 7.20 19.12 -9.89 -v 7.04 19.07 -10.53 -v 7.04 19.21 -10.53 -v 7.30 20.21 -10.13 -v 7.30 19.24 -10.13 -v 7.41 20.29 -9.91 -v 7.31 20.29 -9.90 -v 7.29 19.12 -11.21 -v 7.19 19.12 -11.20 -v 7.23 20.21 -10.12 -v 7.15 19.23 -10.97 -v 7.23 19.24 -10.12 -v 7.15 19.21 -10.54 -v 7.31 19.26 -9.90 -v 7.41 19.26 -9.91 -v 7.29 19.26 -11.21 -v 7.19 19.26 -11.20 -v 7.11 19.12 -11.30 -v 7.11 19.26 -11.30 -v 7.25 19.26 -9.78 -v 7.25 19.12 -9.78 -v 12.26 27.21 -6.54 -v 12.26 26.24 -6.54 -v 12.69 26.21 -6.53 -v 12.69 27.52 -6.53 -v 11.92 26.26 -6.63 -v 11.92 26.12 -6.63 -v 11.93 26.12 -6.53 -v 11.93 26.26 -6.53 -v 12.69 27.75 -6.56 -v 12.03 27.30 -6.60 -v 12.04 27.30 -6.51 -v 12.70 27.75 -6.46 -v 13.44 26.12 -6.76 -v 13.44 26.26 -6.76 -v 13.45 26.26 -6.67 -v 13.45 26.12 -6.67 -v 12.69 26.07 -6.56 -v 13.34 26.12 -6.72 -v 13.34 26.12 -6.62 -v 12.70 26.07 -6.46 -v 12.05 26.12 -6.40 -v 12.28 26.24 -6.36 -v 12.05 26.26 -6.40 -v 12.27 27.21 -6.47 -v 12.70 27.52 -6.46 -v 13.35 26.26 -6.51 -v 13.13 26.25 -6.43 -v 13.35 26.12 -6.51 -v 12.71 26.07 -6.35 -v 12.71 26.21 -6.35 -v 13.12 27.21 -6.61 -v 13.12 26.25 -6.61 -v 13.34 27.30 -6.72 -v 13.34 27.30 -6.62 -v 12.03 26.12 -6.60 -v 12.04 26.12 -6.51 -v 13.12 27.21 -6.54 -v 12.27 26.24 -6.47 -v 13.12 26.25 -6.54 -v 12.70 26.21 -6.46 -v 13.34 26.26 -6.62 -v 13.34 26.26 -6.72 -v 12.03 26.26 -6.60 -v 12.04 26.26 -6.51 -v 11.94 26.12 -6.43 -v 11.94 26.26 -6.43 -v 13.46 26.26 -6.56 -v 13.46 26.12 -6.56 -v 16.15 12.70 -9.15 -v 16.86 14.28 -8.74 -v 16.39 14.28 -7.92 -v 15.67 12.70 -8.34 -v 16.21 17.34 -9.12 -v 17.17 17.34 -8.57 -v 16.69 17.34 -7.75 -v 15.74 17.34 -8.30 -v 12.26 20.21 -5.34 -v 12.26 19.23 -5.34 -v 12.69 19.21 -5.33 -v 12.69 20.52 -5.33 -v 11.92 19.26 -5.43 -v 11.92 19.12 -5.43 -v 11.93 19.12 -5.33 -v 11.93 19.26 -5.33 -v 12.69 20.75 -5.36 -v 12.03 20.29 -5.40 -v 12.04 20.29 -5.30 -v 12.70 20.75 -5.26 -v 13.44 19.12 -5.56 -v 13.44 19.26 -5.56 -v 13.45 19.26 -5.47 -v 13.45 19.12 -5.47 -v 12.69 19.07 -5.36 -v 13.34 19.12 -5.52 -v 13.34 19.12 -5.42 -v 12.70 19.07 -5.26 -v 12.05 19.12 -5.20 -v 12.28 19.23 -5.16 -v 12.05 19.26 -5.20 -v 12.27 20.21 -5.26 -v 12.70 20.52 -5.26 -v 13.35 19.26 -5.31 -v 13.13 19.24 -5.23 -v 13.35 19.12 -5.31 -v 12.71 19.07 -5.15 -v 12.71 19.21 -5.15 -v 13.12 20.21 -5.41 -v 13.12 19.24 -5.41 -v 13.34 20.29 -5.52 -v 13.34 20.29 -5.42 -v 12.03 19.12 -5.40 -v 12.04 19.12 -5.30 -v 13.12 20.21 -5.34 -v 12.27 19.23 -5.26 -v 13.12 19.24 -5.34 -v 12.70 19.21 -5.26 -v 13.34 19.26 -5.42 -v 13.34 19.26 -5.52 -v 12.03 19.26 -5.40 -v 12.04 19.26 -5.30 -v 11.94 19.12 -5.23 -v 11.94 19.26 -5.23 -v 13.46 19.26 -5.36 -v 13.46 19.12 -5.36 -v 15.89 23.34 -8.84 -v 16.57 24.92 -8.36 -v 16.03 24.92 -7.59 -v 15.35 23.34 -8.06 -v 15.60 28.41 -9.06 -v 16.50 28.41 -8.43 -v 15.96 28.41 -7.66 -v 15.06 28.41 -8.29 -v 16.70 27.21 -10.37 -v 16.70 26.24 -10.37 -v 16.71 26.21 -10.80 -v 16.71 27.52 -10.80 -v 16.61 26.26 -10.03 -v 16.61 26.12 -10.03 -v 16.71 26.12 -10.04 -v 16.71 26.26 -10.04 -v 16.69 27.75 -10.80 -v 16.64 27.30 -10.15 -v 16.74 27.30 -10.15 -v 16.78 27.75 -10.81 -v 16.48 26.12 -11.55 -v 16.48 26.26 -11.55 -v 16.58 26.26 -11.56 -v 16.58 26.12 -11.56 -v 16.69 26.07 -10.80 -v 16.53 26.12 -11.45 -v 16.62 26.12 -11.45 -v 16.78 26.07 -10.81 -v 16.84 26.12 -10.16 -v 16.88 26.24 -10.39 -v 16.84 26.26 -10.16 -v 16.78 27.21 -10.38 -v 16.78 27.52 -10.81 -v 16.73 26.26 -11.46 -v 16.81 26.25 -11.24 -v 16.73 26.12 -11.46 -v 16.89 26.07 -10.82 -v 16.89 26.21 -10.82 -v 16.63 27.21 -11.23 -v 16.63 26.25 -11.23 -v 16.53 27.30 -11.45 -v 16.62 27.30 -11.45 -v 16.64 26.12 -10.15 -v 16.74 26.12 -10.15 -v 16.70 27.21 -11.23 -v 16.78 26.24 -10.38 -v 16.70 26.25 -11.23 -v 16.78 26.21 -10.81 -v 16.62 26.26 -11.45 -v 16.53 26.26 -11.45 -v 16.64 26.26 -10.15 -v 16.74 26.26 -10.15 -v 16.82 26.12 -10.05 -v 16.82 26.26 -10.05 -v 16.68 26.26 -11.57 -v 16.68 26.12 -11.57 -v 15.67 12.70 -13.02 -v 16.39 14.28 -13.43 -v 16.86 14.28 -12.61 -v 16.15 12.70 -12.20 -v 15.74 17.34 -13.06 -v 16.69 17.34 -13.61 -v 17.17 17.34 -12.79 -v 16.21 17.34 -12.24 -v 16.83 28.50 -13.14 -v 16.83 30.29 -13.14 -v 17.49 30.29 -10.68 -v 17.49 28.50 -10.68 -v 15.03 28.50 -14.94 -v 15.03 30.29 -14.94 -v 12.57 28.50 -15.60 -v 12.57 30.29 -15.60 -v 10.10 28.50 -14.94 -v 10.10 30.29 -14.94 -v 8.30 28.50 -13.14 -v 8.30 30.29 -13.14 -v 7.64 28.50 -10.68 -v 7.64 30.29 -10.68 -v 8.30 28.50 -8.21 -v 8.30 30.29 -8.21 -v 10.10 28.50 -6.41 -v 10.10 30.29 -6.41 -v 12.57 28.50 -5.75 -v 12.57 30.29 -5.75 -v 15.03 28.50 -6.41 -v 15.03 30.29 -6.41 -v 16.83 28.50 -8.21 -v 16.83 30.29 -8.21 -v 16.21 30.29 -12.78 -v 16.78 30.29 -10.68 -v 15.03 30.90 -14.94 -v 14.67 30.90 -14.32 -v 16.21 30.90 -12.78 -v 16.83 30.90 -13.14 -v 12.57 30.29 -14.89 -v 14.67 30.29 -14.32 -v 10.10 30.90 -14.94 -v 10.46 30.90 -14.32 -v 12.57 30.90 -14.89 -v 12.57 30.90 -15.60 -v 8.92 30.29 -12.78 -v 10.46 30.29 -14.32 -v 7.64 30.90 -10.68 -v 8.36 30.90 -10.68 -v 8.92 30.90 -12.78 -v 8.30 30.90 -13.14 -v 8.92 30.29 -8.57 -v 8.36 30.29 -10.68 -v 10.10 30.90 -6.41 -v 10.46 30.90 -7.03 -v 8.92 30.90 -8.57 -v 8.30 30.90 -8.21 -v 12.57 30.29 -6.47 -v 10.46 30.29 -7.03 -v 15.03 30.90 -6.41 -v 14.67 30.90 -7.03 -v 12.57 30.90 -6.47 -v 12.57 30.90 -5.75 -v 16.21 30.29 -8.57 -v 14.67 30.29 -7.03 -v 17.49 30.90 -10.68 -v 16.78 30.90 -10.68 -v 16.21 30.90 -8.57 -v 16.83 30.90 -8.21 -v 16.21 29.42 -12.78 -v 16.78 29.42 -10.68 -v 14.67 29.42 -14.32 -v 12.57 29.42 -14.89 -v 10.46 29.42 -14.32 -v 8.92 29.42 -12.78 -v 8.36 29.42 -10.68 -v 8.92 29.42 -8.57 -v 10.46 29.42 -7.03 -v 12.57 29.42 -6.47 -v 14.67 29.42 -7.03 -v 16.21 29.42 -8.57 -v 12.57 29.42 -10.68 -# 4553 vertices - -vn -1.00 0.00 -0.00 -vn -0.48 0.00 -0.88 -vn -0.17 0.00 -0.99 -vn 0.00 0.00 -1.00 -vn 0.17 0.00 -0.99 -vn 0.48 0.00 -0.88 -vn 1.00 0.00 -0.00 -vn 0.48 0.00 0.88 -vn 0.17 0.00 0.99 -vn 0.00 0.00 1.00 -vn -0.17 0.00 0.99 -vn -0.48 0.00 0.88 -vn -0.73 0.00 -0.69 -vn -0.27 0.00 -0.96 -vn -0.08 0.00 -1.00 -vn 0.08 0.00 -1.00 -vn 0.27 0.00 -0.96 -vn 0.73 0.00 -0.69 -vn 0.73 0.00 0.69 -vn 0.27 0.00 0.96 -vn 0.08 0.00 1.00 -vn -0.08 0.00 1.00 -vn -0.27 0.00 0.96 -vn -0.73 0.00 0.69 -vn -0.72 0.00 0.69 -vn 0.00 -1.00 -0.00 -vn 0.00 1.00 -0.00 -vn -0.60 0.56 -0.57 -vn -0.26 0.33 -0.91 -vn -0.07 0.25 -0.96 -vn 0.07 0.25 -0.96 -vn 0.26 0.33 -0.91 -vn 0.60 0.56 -0.57 -vn 0.60 0.56 0.57 -vn 0.26 0.33 0.91 -vn 0.07 0.25 0.96 -vn -0.07 0.25 0.96 -vn -0.26 0.33 0.91 -vn -0.60 0.56 0.57 -vn -0.73 0.01 -0.69 -vn -0.27 0.01 -0.96 -vn -0.08 0.01 -1.00 -vn -0.07 0.01 -1.00 -vn 0.08 0.01 -1.00 -vn 0.27 0.01 -0.96 -vn 0.73 0.01 -0.69 -vn 0.72 0.01 0.69 -vn 0.73 0.01 0.69 -vn 0.27 0.01 0.96 -vn 0.08 0.01 1.00 -vn -0.08 0.01 1.00 -vn -0.07 0.01 1.00 -vn -0.27 0.01 0.96 -vn -0.73 0.01 0.69 -vn -0.72 0.01 0.69 -vn -0.30 -0.91 -0.29 -vn -0.18 -0.75 -0.64 -vn -0.18 -0.74 -0.64 -vn -0.06 -0.65 -0.76 -vn 0.06 -0.65 -0.76 -vn 0.18 -0.75 -0.64 -vn 0.18 -0.74 -0.64 -vn 0.30 -0.91 -0.29 -vn 0.30 -0.91 0.29 -vn 0.18 -0.74 0.64 -vn 0.18 -0.75 0.64 -vn 0.06 -0.65 0.76 -vn -0.06 -0.65 0.76 -vn -0.18 -0.74 0.64 -vn -0.18 -0.75 0.64 -vn -0.30 -0.91 0.29 -vn -1.00 0.00 0.06 -vn -0.02 0.00 1.00 -vn -0.02 0.65 0.76 -vn 0.02 0.00 -1.00 -vn 0.00 -0.99 -0.12 -vn -0.85 0.00 0.52 -vn -0.95 0.12 0.30 -vn -0.62 0.00 -0.78 -vn -0.76 -0.16 -0.63 -vn -0.83 0.00 -0.56 -vn 0.02 0.66 -0.75 -vn -0.00 -0.99 0.12 -vn -0.72 0.09 -0.69 -vn -0.96 -0.21 0.19 -vn 0.02 -0.64 -0.77 -vn -0.02 -0.64 0.77 -vn -0.00 0.99 0.13 -vn 0.00 1.00 -0.10 -vn 0.00 0.99 -0.17 -vn 0.01 0.99 -0.17 -vn -0.00 0.99 0.10 -vn -0.74 0.00 0.67 -vn -0.75 0.00 0.67 -vn -0.54 0.00 -0.84 -vn -0.00 0.00 -1.00 -vn -0.96 0.00 -0.29 -vn -0.95 0.00 -0.30 -vn -0.31 0.95 -0.10 -vn 0.95 0.00 0.30 -vn 0.96 0.00 0.29 -vn 0.03 -1.00 0.01 -vn -0.05 0.00 -1.00 -vn -0.03 0.04 -1.00 -vn 0.10 0.00 -1.00 -vn 0.07 -0.06 -1.00 -vn 0.05 0.00 -1.00 -vn 0.31 0.95 0.10 -vn -0.04 -1.00 -0.01 -vn 0.08 0.04 -1.00 -vn -0.02 -0.06 -1.00 -vn 0.32 -0.94 0.10 -vn -0.32 -0.94 -0.10 -vn -0.04 1.00 -0.01 -vn 0.03 1.00 0.01 -vn 0.05 1.00 0.01 -vn -0.03 1.00 -0.01 -vn -0.07 0.00 -1.00 -vn 0.12 0.00 -0.99 -vn 0.33 -0.45 -0.83 -vn 0.19 -0.00 0.98 -vn 0.37 0.03 -0.93 -vn -0.19 0.00 -0.98 -vn -0.01 0.00 -1.00 -vn -0.96 0.00 -0.30 -vn 0.31 0.95 0.09 -vn -0.18 -0.35 -0.92 -vn 0.37 -0.00 -0.93 -vn -0.19 0.02 -0.98 -vn -0.37 0.00 0.93 -vn 1.00 0.00 -0.06 -vn 0.02 0.65 -0.76 -vn 0.85 0.00 -0.52 -vn 0.95 0.12 -0.30 -vn 0.62 0.00 0.78 -vn 0.76 -0.16 0.63 -vn 0.83 0.00 0.56 -vn 0.82 0.00 0.57 -vn -0.02 0.66 0.75 -vn 0.72 0.09 0.69 -vn 0.96 -0.21 -0.19 -vn 0.00 0.99 -0.13 -vn -0.00 1.00 0.10 -vn -0.00 0.99 0.17 -vn 0.00 0.99 -0.10 -vn 0.75 0.00 -0.67 -vn 0.54 0.00 0.84 -vn 0.00 -0.30 0.95 -vn 0.00 -0.07 1.00 -vn 0.38 -0.49 -0.78 -vn 0.16 0.00 0.99 -vn 0.44 -0.12 -0.89 -vn -0.16 0.00 -0.99 -vn 0.00 -0.30 -0.95 -vn 0.00 -0.07 -1.00 -vn 0.18 -0.35 0.92 -vn -0.37 -0.00 0.93 -vn 0.19 0.02 0.98 -vn 0.37 0.00 -0.93 -vn 0.38 -0.49 0.78 -vn -0.16 0.00 0.99 -vn 0.44 -0.12 0.89 -vn 0.16 0.00 -0.99 -vn 0.01 0.00 1.00 -vn 0.96 0.00 0.30 -vn -0.03 -1.00 -0.01 -vn 0.05 0.00 1.00 -vn 0.03 0.04 1.00 -vn -0.10 0.00 1.00 -vn -0.07 -0.06 1.00 -vn -0.05 0.00 1.00 -vn -0.31 0.95 -0.09 -vn 0.04 -1.00 0.01 -vn -0.08 0.04 1.00 -vn 0.02 -0.06 1.00 -vn 0.04 1.00 0.01 -vn -0.05 1.00 -0.02 -vn 0.07 0.00 1.00 -vn -0.12 0.00 0.99 -vn -0.38 -0.49 0.78 -vn -0.44 -0.12 0.89 -vn -0.43 -0.12 0.89 -vn -0.33 -0.45 0.83 -vn -0.19 -0.00 -0.98 -vn -0.37 0.03 0.93 -vn 0.19 0.00 0.98 -vn -0.38 -0.49 -0.78 -vn -0.44 -0.12 -0.89 -vn -0.43 -0.12 -0.89 -vn 0.72 0.00 0.69 -vn -0.07 0.00 1.00 -vn -0.72 0.00 -0.69 -vn 0.07 0.00 -1.00 -vn 0.72 0.00 -0.69 -vn 0.44 0.00 -0.90 -vn 0.44 0.00 0.90 -vn -0.44 0.00 0.90 -vn -0.44 0.00 -0.90 -vn 0.50 0.87 -0.00 -vn 0.00 0.45 -0.89 -vn -0.50 0.87 -0.00 -vn 0.00 0.42 0.91 -vn 0.08 1.00 -0.00 -vn 0.04 0.55 0.83 -vn -0.00 0.55 0.83 -vn 0.01 0.01 1.00 -vn -0.00 0.55 -0.83 -vn 0.04 0.55 -0.83 -vn 0.01 0.01 -1.00 -vn -0.08 1.00 -0.00 -vn -0.04 0.55 0.83 -vn -0.01 0.01 1.00 -vn -0.04 0.55 -0.83 -vn -0.01 0.01 -1.00 -vn -0.06 0.60 -0.79 -vn -0.91 -0.41 0.00 -vn -0.10 0.98 -0.19 -vn -0.06 0.60 0.79 -vn -0.91 -0.41 -0.00 -vn -0.10 0.98 0.19 -vn -0.05 0.61 -0.79 -vn -0.94 -0.35 -0.00 -vn -0.08 0.98 -0.19 -vn -0.05 0.61 0.79 -vn -0.08 0.98 0.19 -vn -0.04 0.61 -0.79 -vn -0.03 0.61 -0.79 -vn -0.97 -0.25 0.00 -vn -0.97 -0.25 -0.00 -vn -0.06 0.98 -0.19 -vn -0.04 0.61 0.79 -vn -0.03 0.61 0.79 -vn -0.06 0.98 0.19 -vn -0.01 0.61 -0.79 -vn -1.00 -0.07 -0.00 -vn -0.02 0.98 -0.19 -vn -0.01 0.61 0.79 -vn -0.02 0.98 0.19 -vn -1.00 -0.07 0.00 -vn -0.02 0.61 -0.79 -vn -0.99 -0.11 -0.00 -vn -0.02 0.61 0.79 -vn -0.99 -0.11 0.00 -vn 0.06 0.60 -0.79 -vn 0.91 -0.41 0.00 -vn 0.10 0.98 -0.19 -vn 0.06 0.60 0.79 -vn 0.91 -0.41 -0.00 -vn 0.10 0.98 0.19 -vn 0.05 0.61 -0.79 -vn 0.94 -0.35 -0.00 -vn 0.08 0.98 -0.19 -vn 0.05 0.61 0.79 -vn 0.94 -0.35 0.00 -vn 0.08 0.98 0.19 -vn 0.03 0.61 -0.79 -vn 0.04 0.61 -0.79 -vn 0.97 -0.25 0.00 -vn 0.06 0.98 -0.19 -vn 0.03 0.61 0.79 -vn 0.97 -0.25 -0.00 -vn 0.06 0.98 0.19 -vn 0.04 0.61 0.79 -vn 0.01 0.61 -0.79 -vn 1.00 -0.07 -0.00 -vn 0.02 0.98 -0.19 -vn 0.01 0.61 0.79 -vn 0.02 0.98 0.19 -vn 1.00 -0.07 0.00 -vn 0.02 0.61 -0.79 -vn 0.99 -0.11 -0.00 -vn 0.02 0.61 0.79 -vn 0.99 -0.11 0.00 -vn 0.10 0.98 -0.20 -vn 0.10 0.98 0.20 -vn 0.09 0.59 -0.80 -vn -0.82 0.57 0.00 -vn -0.82 0.57 -0.00 -vn 0.15 0.97 -0.20 -vn 0.09 0.59 0.80 -vn 0.15 0.97 0.20 -vn -0.09 0.59 -0.80 -vn 0.82 0.57 0.00 -vn -0.15 0.97 -0.20 -vn -0.09 0.59 0.80 -vn 0.82 0.57 -0.00 -vn -0.15 0.97 0.20 -vn -0.57 0.82 -0.00 -vn 0.08 -1.00 -0.00 -vn 0.57 0.82 -0.00 -vn -0.08 -1.00 -0.00 -vn 0.59 -0.81 -0.00 -vn -0.59 -0.81 -0.00 -vn 0.06 1.00 -0.00 -vn 0.10 0.99 -0.00 -vn -0.06 1.00 -0.00 -vn -0.07 -1.00 -0.00 -vn 0.07 -1.00 -0.00 -vn 0.00 0.37 0.93 -vn 0.00 -0.97 -0.26 -vn 0.00 0.37 -0.93 -vn 0.00 -0.97 0.26 -vn 0.00 -0.36 -0.93 -vn 0.00 -0.36 0.93 -vn 0.00 0.96 0.28 -vn 0.00 0.98 -0.21 -vn 0.00 0.94 -0.35 -vn 0.00 0.98 0.22 -vn 0.00 0.96 -0.28 -vn 0.00 0.98 0.21 -vn 0.00 0.94 0.35 -vn 0.00 0.98 -0.22 -vn 0.11 0.99 -0.00 -vn -0.10 0.99 -0.00 -vn 1.00 0.04 -0.00 -vn 0.87 0.50 -0.00 -vn -1.00 -0.04 -0.00 -vn -0.87 -0.50 -0.00 -vn 0.40 0.92 -0.00 -vn -0.42 -0.91 -0.00 -vn -0.40 0.92 -0.00 -vn 0.42 -0.91 -0.00 -vn -0.87 0.50 -0.00 -vn 0.87 -0.50 -0.00 -vn -1.00 0.04 -0.00 -vn 1.00 -0.04 -0.00 -vn 0.02 0.05 -1.00 -vn 0.95 -0.05 0.30 -vn -0.02 -0.01 1.00 -vn -0.94 0.18 -0.29 -vn 0.03 -0.06 -1.00 -vn 0.02 -0.06 -1.00 -vn 0.96 0.05 0.27 -vn -0.02 0.01 1.00 -vn -0.96 -0.22 -0.19 -vn 0.00 -1.00 -0.05 -vn 0.00 1.00 0.05 -vn 0.00 -1.00 0.05 -vn 0.00 1.00 -0.05 -vn 0.02 -1.00 -0.00 -vn -0.02 1.00 -0.00 -vn -0.01 1.00 -0.00 -vn -0.01 -1.00 -0.00 -vn 0.01 1.00 -0.00 -vn 0.02 0.05 1.00 -vn 0.95 -0.05 -0.30 -vn -0.02 -0.01 -1.00 -vn -0.94 0.18 0.29 -vn 0.03 -0.06 1.00 -vn 0.96 0.05 -0.27 -vn -0.02 0.01 -1.00 -vn -0.96 -0.22 0.19 -vn -0.96 -0.22 0.18 -vn 0.01 -1.00 -0.00 -vn -0.02 -1.00 -0.00 -vn 0.02 1.00 -0.00 -vn -0.99 0.12 -0.00 -vn -1.00 0.01 0.04 -vn -0.99 -0.10 0.07 -vn 0.00 0.01 1.00 -vn 0.00 -0.00 1.00 -vn 1.00 0.01 0.01 -vn 1.00 -0.03 0.02 -vn 0.00 0.04 -1.00 -vn 0.00 0.01 -1.00 -vn 0.00 -0.02 -1.00 -vn 0.13 -0.99 -0.00 -vn -0.13 0.99 -0.00 -vn -0.13 -0.99 -0.00 -vn 0.13 0.99 -0.00 -vn -0.07 1.00 -0.00 -vn 0.07 1.00 -0.00 -vn 0.00 -0.67 -0.74 -vn 0.00 -0.13 -0.99 -vn 0.00 0.67 -0.74 -vn 0.00 0.13 -0.99 -vn 0.00 0.12 -0.99 -vn -1.00 0.01 -0.04 -vn -0.99 -0.10 -0.07 -vn 0.00 -0.00 -1.00 -vn 1.00 0.01 -0.01 -vn 1.00 -0.03 -0.02 -vn 0.00 0.04 1.00 -vn 0.00 -0.02 1.00 -vn 0.72 0.01 -0.69 -vn -0.72 0.01 -0.69 -vn -1.00 0.00 -0.06 -vn -0.02 0.00 -1.00 -vn -0.02 0.65 -0.76 -vn 0.02 0.00 1.00 -vn 0.00 -0.99 0.12 -vn -0.85 0.00 -0.52 -vn -0.95 0.12 -0.30 -vn -0.62 0.00 0.78 -vn -0.76 -0.16 0.63 -vn -0.83 0.00 0.56 -vn 0.02 0.66 0.75 -vn -0.00 -0.99 -0.12 -vn -0.72 0.09 0.69 -vn -0.96 -0.21 -0.19 -vn 0.02 -0.64 0.77 -vn -0.02 -0.64 -0.77 -vn -0.00 0.99 -0.13 -vn 0.00 1.00 0.10 -vn 0.00 0.99 0.17 -vn 0.01 0.99 0.17 -vn -0.00 0.99 -0.10 -vn -0.74 0.00 -0.67 -vn -0.75 0.00 -0.67 -vn -0.54 0.00 0.84 -vn -0.00 0.00 1.00 -vn -0.96 0.00 0.29 -vn -0.95 0.00 0.30 -vn -0.31 0.95 0.10 -vn 0.95 0.00 -0.30 -vn 0.96 0.00 -0.29 -vn 0.03 -1.00 -0.01 -vn -0.03 0.04 1.00 -vn 0.10 0.00 1.00 -vn 0.07 -0.06 1.00 -vn 0.31 0.95 -0.10 -vn -0.04 -1.00 0.01 -vn 0.08 0.04 1.00 -vn -0.02 -0.06 1.00 -vn 0.32 -0.94 -0.10 -vn -0.32 -0.94 0.10 -vn -0.04 1.00 0.01 -vn 0.03 1.00 -0.01 -vn 0.05 1.00 -0.01 -vn -0.03 1.00 0.01 -vn 0.12 0.00 0.99 -vn 0.33 -0.45 0.83 -vn 0.19 -0.00 -0.98 -vn 0.37 0.03 0.93 -vn -0.19 0.00 0.98 -vn -0.01 0.00 1.00 -vn -0.96 0.00 0.30 -vn 0.31 0.95 -0.09 -vn -0.18 -0.35 0.92 -vn 0.37 -0.00 0.93 -vn -0.19 0.02 0.98 -vn -0.37 0.00 -0.93 -vn 1.00 0.00 0.06 -vn 0.02 0.65 0.76 -vn 0.85 0.00 0.52 -vn 0.95 0.12 0.30 -vn 0.62 0.00 -0.78 -vn 0.76 -0.16 -0.63 -vn 0.83 0.00 -0.56 -vn 0.82 0.00 -0.57 -vn -0.02 0.66 -0.75 -vn 0.72 0.09 -0.69 -vn 0.96 -0.21 0.19 -vn 0.00 0.99 0.13 -vn -0.00 1.00 -0.10 -vn -0.00 0.99 -0.17 -vn 0.00 0.99 0.10 -vn 0.75 0.00 0.67 -vn 0.54 0.00 -0.84 -vn 0.18 -0.35 -0.92 -vn -0.37 -0.00 -0.93 -vn 0.19 0.02 -0.98 -vn 0.37 0.00 0.93 -vn 0.01 0.00 -1.00 -vn 0.96 0.00 -0.30 -vn -0.03 -1.00 0.01 -vn 0.03 0.04 -1.00 -vn -0.10 0.00 -1.00 -vn -0.07 -0.06 -1.00 -vn -0.31 0.95 0.09 -vn 0.04 -1.00 -0.01 -vn -0.08 0.04 -1.00 -vn 0.04 1.00 -0.01 -vn -0.05 1.00 0.02 -vn -0.12 0.00 -0.99 -vn -0.33 -0.45 -0.83 -vn -0.19 -0.00 0.98 -vn -0.37 0.03 -0.93 -vn 0.19 0.00 -0.98 -vn 0.74 0.00 -0.67 -vn -0.05 1.00 -0.01 -vn -0.82 0.00 -0.57 -vn 0.05 1.00 0.02 -vn 0.74 0.00 0.67 -vn -0.05 1.00 0.01 -vn -0.82 0.00 0.57 -vn 0.05 1.00 -0.02 -# 487 vertex normals - -vt 0.10 0.10 0.00 -vt 0.07 0.10 0.00 -vt 0.07 0.01 0.00 -vt 0.10 0.01 0.00 -vt 0.05 0.10 0.00 -vt 0.05 0.01 0.00 -vt 0.02 0.10 0.00 -vt 0.02 0.01 0.00 -vt 0.38 0.10 0.00 -vt 0.35 0.10 0.00 -vt 0.35 0.01 0.00 -vt 0.38 0.01 0.00 -vt 0.32 0.10 0.00 -vt 0.32 0.01 0.00 -vt 0.29 0.10 0.00 -vt 0.29 0.01 0.00 -vt 0.27 0.10 0.00 -vt 0.27 0.01 0.00 -vt 0.24 0.10 0.00 -vt 0.24 0.01 0.00 -vt 0.21 0.10 0.00 -vt 0.21 0.01 0.00 -vt 0.17 0.10 0.00 -vt 0.17 0.01 0.00 -vt 0.13 0.10 0.00 -vt 0.13 0.01 0.00 -vt 0.34 0.56 0.00 -vt 0.37 0.56 0.00 -vt 0.37 0.57 0.00 -vt 0.34 0.57 0.00 -vt 0.30 0.56 0.00 -vt 0.30 0.57 0.00 -vt 0.27 0.56 0.00 -vt 0.27 0.57 0.00 -vt 0.61 0.56 0.00 -vt 0.64 0.56 0.00 -vt 0.64 0.57 0.00 -vt 0.61 0.57 0.00 -vt 0.58 0.56 0.00 -vt 0.58 0.57 0.00 -vt 0.55 0.56 0.00 -vt 0.55 0.57 0.00 -vt 0.52 0.56 0.00 -vt 0.52 0.57 0.00 -vt 0.49 0.56 0.00 -vt 0.49 0.57 0.00 -vt 0.46 0.56 0.00 -vt 0.46 0.57 0.00 -vt 0.43 0.56 0.00 -vt 0.43 0.57 0.00 -vt 0.40 0.56 0.00 -vt 0.40 0.57 0.00 -vt 0.97 0.27 0.00 -vt 0.96 0.28 0.00 -vt 0.94 0.27 0.00 -vt 0.93 0.26 0.00 -vt 0.93 0.25 0.00 -vt 0.93 0.24 0.00 -vt 0.93 0.23 0.00 -vt 0.94 0.23 0.00 -vt 0.94 0.22 0.00 -vt 0.96 0.22 0.00 -vt 0.97 0.23 0.00 -vt 0.97 0.22 0.00 -vt 0.98 0.24 0.00 -vt 0.98 0.23 0.00 -vt 0.99 0.25 0.00 -vt 0.98 0.26 0.00 -vt 0.81 0.06 0.00 -vt 0.81 0.16 0.00 -vt 0.78 0.16 0.00 -vt 0.78 0.06 0.00 -vt 0.76 0.16 0.00 -vt 0.76 0.06 0.00 -vt 0.73 0.16 0.00 -vt 0.73 0.06 0.00 -vt 0.71 0.16 0.00 -vt 0.71 0.06 0.00 -vt 0.69 0.16 0.00 -vt 0.69 0.06 0.00 -vt 0.98 0.06 0.00 -vt 0.98 0.16 0.00 -vt 0.95 0.16 0.00 -vt 0.95 0.06 0.00 -vt 0.93 0.16 0.00 -vt 0.93 0.06 0.00 -vt 0.91 0.16 0.00 -vt 0.91 0.06 0.00 -vt 0.88 0.16 0.00 -vt 0.88 0.06 0.00 -vt 0.86 0.16 0.00 -vt 0.86 0.07 0.00 -vt 0.83 0.16 0.00 -vt 0.83 0.07 0.00 -vt 0.98 0.28 0.00 -vt 0.96 0.29 0.00 -vt 0.99 0.27 0.00 -vt 1.00 0.25 0.00 -vt 0.99 0.23 0.00 -vt 0.98 0.22 0.00 -vt 0.96 0.21 0.00 -vt 0.92 0.23 0.00 -vt 0.92 0.25 0.00 -vt 0.93 0.27 0.00 -vt 0.92 0.27 0.00 -vt 0.94 0.28 0.00 -vt 0.11 0.23 0.00 -vt 0.09 0.22 0.00 -vt 0.10 0.18 0.00 -vt 0.13 0.19 0.00 -vt 0.14 0.24 0.00 -vt 0.15 0.19 0.00 -vt 0.17 0.24 0.00 -vt 0.18 0.20 0.00 -vt 0.21 0.24 0.00 -vt 0.20 0.20 0.00 -vt 0.24 0.24 0.00 -vt 0.23 0.19 0.00 -vt 0.27 0.23 0.00 -vt 0.25 0.19 0.00 -vt 0.30 0.22 0.00 -vt 0.28 0.18 0.00 -vt 0.32 0.21 0.00 -vt 0.30 0.17 0.00 -vt 0.35 0.19 0.00 -vt 0.32 0.16 0.00 -vt 0.03 0.19 0.00 -vt 0.01 0.17 0.00 -vt 0.04 0.14 0.00 -vt 0.06 0.16 0.00 -vt 0.06 0.21 0.00 -vt 0.08 0.17 0.00 -vt 0.12 0.14 0.00 -vt 0.14 0.15 0.00 -vt 0.16 0.15 0.00 -vt 0.18 0.16 0.00 -vt 0.20 0.16 0.00 -vt 0.22 0.15 0.00 -vt 0.24 0.15 0.00 -vt 0.26 0.14 0.00 -vt 0.28 0.13 0.00 -vt 0.31 0.12 0.00 -vt 0.06 0.11 0.00 -vt 0.08 0.12 0.00 -vt 0.10 0.13 0.00 -vt 0.14 0.12 0.00 -vt 0.12 0.12 0.00 -vt 0.12 0.11 0.00 -vt 0.14 0.11 0.00 -vt 0.10 0.12 0.00 -vt 0.10 0.11 0.00 -vt 0.35 0.12 0.00 -vt 0.33 0.12 0.00 -vt 0.33 0.11 0.00 -vt 0.35 0.11 0.00 -vt 0.31 0.11 0.00 -vt 0.29 0.12 0.00 -vt 0.29 0.11 0.00 -vt 0.27 0.12 0.00 -vt 0.27 0.11 0.00 -vt 0.24 0.12 0.00 -vt 0.24 0.11 0.00 -vt 0.22 0.12 0.00 -vt 0.22 0.11 0.00 -vt 0.20 0.12 0.00 -vt 0.20 0.11 0.00 -vt 0.18 0.12 0.00 -vt 0.18 0.11 0.00 -vt 0.16 0.12 0.00 -vt 0.16 0.11 0.00 -vt 0.67 0.06 0.00 -vt 0.64 0.06 0.00 -vt 0.64 0.01 0.00 -vt 0.67 0.01 0.00 -vt 0.60 0.06 0.00 -vt 0.60 0.01 0.00 -vt 0.99 0.06 0.00 -vt 0.96 0.06 0.00 -vt 0.96 0.01 0.00 -vt 0.99 0.01 0.00 -vt 0.93 0.01 0.00 -vt 0.89 0.06 0.00 -vt 0.89 0.01 0.00 -vt 0.86 0.06 0.00 -vt 0.86 0.01 0.00 -vt 0.83 0.06 0.00 -vt 0.83 0.01 0.00 -vt 0.80 0.06 0.00 -vt 0.80 0.01 0.00 -vt 0.77 0.06 0.00 -vt 0.77 0.01 0.00 -vt 0.73 0.01 0.00 -vt 0.70 0.06 0.00 -vt 0.70 0.01 0.00 -vt 0.95 0.87 0.00 -vt 0.93 0.89 0.00 -vt 0.92 0.82 0.00 -vt 0.95 0.82 0.00 -vt 0.92 0.79 0.00 -vt 0.90 0.79 0.00 -vt 0.90 0.77 0.00 -vt 0.92 0.77 0.00 -vt 0.99 0.56 0.00 -vt 0.98 0.56 0.00 -vt 0.98 0.52 0.00 -vt 0.99 0.52 0.00 -vt 0.93 0.78 0.00 -vt 0.96 0.78 0.00 -vt 0.96 0.79 0.00 -vt 0.96 0.81 0.00 -vt 0.94 0.81 0.00 -vt 0.93 0.90 0.00 -vt 0.95 0.88 0.00 -vt 0.96 0.88 0.00 -vt 0.89 0.79 0.00 -vt 0.89 0.81 0.00 -vt 0.90 0.87 0.00 -vt 0.90 0.82 0.00 -vt 0.99 0.60 0.00 -vt 0.98 0.60 0.00 -vt 0.99 0.66 0.00 -vt 0.99 0.59 0.00 -vt 0.99 0.46 0.00 -vt 0.92 0.76 0.00 -vt 0.86 0.76 0.00 -vt 0.86 0.77 0.00 -vt 0.96 0.83 0.00 -vt 0.95 0.83 0.00 -vt 0.98 0.66 0.00 -vt 0.98 0.46 0.00 -vt 0.96 0.76 0.00 -vt 0.92 0.75 0.00 -vt 0.96 0.75 0.00 -vt 0.86 0.75 0.00 -vt 0.93 0.77 0.00 -vt 0.96 0.77 0.00 -vt 0.97 0.76 0.00 -vt 0.97 0.77 0.00 -vt 0.97 0.75 0.00 -vt 0.97 0.79 0.00 -vt 0.98 0.80 0.00 -vt 0.97 0.78 0.00 -vt 0.62 0.90 0.00 -vt 0.63 0.90 0.00 -vt 0.63 0.93 0.00 -vt 0.62 0.93 0.00 -vt 0.66 0.90 0.00 -vt 0.64 0.93 0.00 -vt 0.64 0.98 0.00 -vt 0.66 0.98 0.00 -vt 0.63 0.99 0.00 -vt 0.62 0.99 0.00 -vt 0.60 0.18 0.00 -vt 0.63 0.18 0.00 -vt 0.63 0.20 0.00 -vt 0.60 0.20 0.00 -vt 0.56 0.18 0.00 -vt 0.56 0.20 0.00 -vt 0.53 0.18 0.00 -vt 0.53 0.20 0.00 -vt 0.89 0.18 0.00 -vt 0.92 0.18 0.00 -vt 0.92 0.20 0.00 -vt 0.89 0.20 0.00 -vt 0.86 0.18 0.00 -vt 0.86 0.20 0.00 -vt 0.82 0.18 0.00 -vt 0.82 0.20 0.00 -vt 0.79 0.18 0.00 -vt 0.79 0.20 0.00 -vt 0.76 0.18 0.00 -vt 0.76 0.20 0.00 -vt 0.73 0.18 0.00 -vt 0.73 0.20 0.00 -vt 0.69 0.18 0.00 -vt 0.69 0.20 0.00 -vt 0.66 0.18 0.00 -vt 0.66 0.20 0.00 -vt 0.86 0.88 0.00 -vt 0.83 0.89 0.00 -vt 0.83 0.88 0.00 -vt 0.85 0.88 0.00 -vt 0.88 0.87 0.00 -vt 0.87 0.86 0.00 -vt 0.88 0.84 0.00 -vt 0.88 0.81 0.00 -vt 0.87 0.82 0.00 -vt 0.86 0.79 0.00 -vt 0.85 0.80 0.00 -vt 0.83 0.79 0.00 -vt 0.83 0.80 0.00 -vt 0.81 0.79 0.00 -vt 0.81 0.80 0.00 -vt 0.79 0.81 0.00 -vt 0.79 0.82 0.00 -vt 0.78 0.84 0.00 -vt 0.79 0.84 0.00 -vt 0.79 0.87 0.00 -vt 0.79 0.86 0.00 -vt 0.81 0.88 0.00 -vt 0.60 0.67 0.00 -vt 0.58 0.67 0.00 -vt 0.58 0.66 0.00 -vt 0.61 0.66 0.00 -vt 0.64 0.67 0.00 -vt 0.64 0.66 0.00 -vt 0.68 0.67 0.00 -vt 0.68 0.66 0.00 -vt 0.72 0.67 0.00 -vt 0.72 0.66 0.00 -vt 0.76 0.67 0.00 -vt 0.76 0.66 0.00 -vt 0.79 0.67 0.00 -vt 0.79 0.66 0.00 -vt 0.81 0.67 0.00 -vt 0.81 0.66 0.00 -vt 0.84 0.67 0.00 -vt 0.84 0.66 0.00 -vt 0.88 0.67 0.00 -vt 0.88 0.66 0.00 -vt 0.53 0.67 0.00 -vt 0.49 0.67 0.00 -vt 0.50 0.66 0.00 -vt 0.53 0.66 0.00 -vt 0.56 0.67 0.00 -vt 0.56 0.66 0.00 -vt 0.66 0.16 0.00 -vt 0.63 0.17 0.00 -vt 0.63 0.12 0.00 -vt 0.68 0.14 0.00 -vt 0.68 0.12 0.00 -vt 0.68 0.09 0.00 -vt 0.66 0.07 0.00 -vt 0.63 0.07 0.00 -vt 0.61 0.07 0.00 -vt 0.59 0.09 0.00 -vt 0.59 0.12 0.00 -vt 0.59 0.14 0.00 -vt 0.61 0.16 0.00 -vt 0.60 0.21 0.00 -vt 0.56 0.21 0.00 -vt 0.64 0.68 0.00 -vt 0.60 0.68 0.00 -vt 0.92 0.21 0.00 -vt 0.89 0.21 0.00 -vt 0.72 0.68 0.00 -vt 0.68 0.68 0.00 -vt 0.86 0.21 0.00 -vt 0.82 0.21 0.00 -vt 0.79 0.68 0.00 -vt 0.76 0.68 0.00 -vt 0.79 0.21 0.00 -vt 0.76 0.21 0.00 -vt 0.84 0.68 0.00 -vt 0.81 0.68 0.00 -vt 0.73 0.21 0.00 -vt 0.69 0.21 0.00 -vt 0.53 0.68 0.00 -vt 0.49 0.68 0.00 -vt 0.66 0.21 0.00 -vt 0.63 0.21 0.00 -vt 0.58 0.68 0.00 -vt 0.56 0.68 0.00 -vt 0.24 0.62 0.00 -vt 0.00 0.62 0.00 -vt 0.05 0.71 0.00 -vt 0.19 0.71 0.00 -vt 0.00 0.41 0.00 -vt 0.28 0.41 0.00 -vt 0.24 0.49 0.00 -vt 0.05 0.49 0.00 -vt 0.01 0.52 0.00 -vt 0.29 0.52 0.00 -vt 0.24 0.59 0.00 -vt 0.05 0.59 0.00 -vt 0.38 0.32 0.00 -vt 0.53 0.32 0.00 -vt 0.53 0.42 0.00 -vt 0.38 0.42 0.00 -vt 0.67 0.21 0.00 -vt 0.49 0.21 0.00 -vt 0.49 0.30 0.00 -vt 0.67 0.30 0.00 -vt 0.46 0.89 0.00 -vt 0.27 0.89 0.00 -vt 0.27 0.99 0.00 -vt 0.46 0.99 0.00 -vt 0.62 0.80 0.00 -vt 0.77 0.80 0.00 -vt 0.77 0.88 0.00 -vt 0.62 0.88 0.00 -vt 0.24 0.73 0.00 -vt 0.32 0.73 0.00 -vt 0.31 0.72 0.00 -vt 0.24 0.72 0.00 -vt 0.32 0.63 0.00 -vt 0.31 0.64 0.00 -vt 0.24 0.63 0.00 -vt 0.24 0.64 0.00 -vt 0.19 0.33 0.00 -vt 0.19 0.25 0.00 -vt 0.20 0.27 0.00 -vt 0.20 0.31 0.00 -vt 0.31 0.25 0.00 -vt 0.30 0.27 0.00 -vt 0.31 0.33 0.00 -vt 0.30 0.31 0.00 -vt 0.14 0.26 0.00 -vt 0.14 0.40 0.00 -vt 0.18 0.34 0.00 -vt 0.18 0.26 0.00 -vt 0.36 0.40 0.00 -vt 0.32 0.34 0.00 -vt 0.36 0.26 0.00 -vt 0.32 0.26 0.00 -vt 0.49 0.15 0.00 -vt 0.49 0.25 0.00 -vt 0.36 0.25 0.00 -vt 0.36 0.15 0.00 -vt 0.41 0.01 0.00 -vt 0.58 0.01 0.00 -vt 0.58 0.14 0.00 -vt 0.41 0.14 0.00 -vt 0.58 0.42 0.00 -vt 0.58 0.54 0.00 -vt 0.45 0.53 0.00 -vt 0.45 0.45 0.00 -vt 0.71 0.95 0.00 -vt 0.66 0.89 0.00 -vt 0.14 0.94 0.00 -vt 0.01 0.95 0.00 -vt 0.76 0.89 0.00 -vt 0.32 0.41 0.00 -vt 0.32 0.53 0.00 -vt 0.27 0.95 0.00 -vt 0.80 0.98 0.00 -vt 0.80 0.93 0.00 -vt 0.81 0.93 0.00 -vt 0.81 0.98 0.00 -vt 0.78 0.98 0.00 -vt 0.78 0.93 0.00 -vt 0.77 0.93 0.00 -vt 0.77 0.98 0.00 -vt 0.77 0.99 0.00 -vt 0.78 0.99 0.00 -vt 0.73 0.93 0.00 -vt 0.74 0.93 0.00 -vt 0.74 0.98 0.00 -vt 0.73 0.98 0.00 -vt 0.76 0.98 0.00 -vt 0.86 0.48 0.00 -vt 0.86 0.45 0.00 -vt 0.94 0.45 0.00 -vt 0.94 0.48 0.00 -vt 0.95 0.40 0.00 -vt 0.99 0.40 0.00 -vt 0.99 0.45 0.00 -vt 0.95 0.45 0.00 -vt 0.99 0.35 0.00 -vt 0.90 0.35 0.00 -vt 0.90 0.39 0.00 -vt 0.99 0.39 0.00 -vt 0.68 0.24 0.00 -vt 0.71 0.24 0.00 -vt 0.71 0.62 0.00 -vt 0.68 0.62 0.00 -vt 0.61 0.69 0.00 -vt 0.80 0.69 0.00 -vt 0.80 0.76 0.00 -vt 0.61 0.76 0.00 -vt 0.87 0.95 0.00 -vt 0.86 0.97 0.00 -vt 0.86 0.91 0.00 -vt 0.87 0.91 0.00 -vt 0.90 0.94 0.00 -vt 0.90 0.91 0.00 -vt 0.91 0.91 0.00 -vt 0.91 0.94 0.00 -vt 0.98 0.83 0.00 -vt 0.98 0.76 0.00 -vt 0.89 0.94 0.00 -vt 0.89 0.91 0.00 -vt 0.95 0.93 0.00 -vt 0.97 0.93 0.00 -vt 0.97 0.94 0.00 -vt 0.97 0.97 0.00 -vt 0.97 0.99 0.00 -vt 0.96 0.99 0.00 -vt 0.86 0.98 0.00 -vt 0.87 0.97 0.00 -vt 0.88 0.97 0.00 -vt 0.86 0.99 0.00 -vt 0.90 0.99 0.00 -vt 0.90 0.97 0.00 -vt 0.91 0.99 0.00 -vt 0.93 0.97 0.00 -vt 0.93 0.98 0.00 -vt 0.85 0.95 0.00 -vt 0.85 0.91 0.00 -vt 0.98 0.90 0.00 -vt 0.93 0.93 0.00 -vt 0.84 0.97 0.00 -vt 0.85 0.97 0.00 -vt 0.99 0.78 0.00 -vt 0.99 0.67 0.00 -vt 0.99 0.83 0.00 -vt 0.99 0.89 0.00 -vt 0.99 0.99 0.00 -vt 0.93 0.95 0.00 -vt 0.93 0.96 0.00 -vt 0.90 0.96 0.00 -vt 0.90 0.95 0.00 -vt 0.96 0.95 0.00 -vt 0.96 0.96 0.00 -vt 0.84 0.92 0.00 -vt 0.85 0.92 0.00 -vt 0.98 0.99 0.00 -vt 0.98 0.67 0.00 -vt 0.88 0.92 0.00 -vt 0.97 0.95 0.00 -vt 0.89 0.95 0.00 -vt 0.95 0.92 0.00 -vt 0.97 0.92 0.00 -vt 0.93 0.92 0.00 -vt 0.98 0.95 0.00 -vt 0.98 0.96 0.00 -vt 0.97 0.96 0.00 -vt 0.98 0.94 0.00 -vt 0.89 0.99 0.00 -vt 0.89 0.97 0.00 -vt 0.88 0.96 0.00 -vt 0.88 0.95 0.00 -vt 0.89 0.96 0.00 -vt 0.04 0.35 0.00 -vt 0.04 0.25 0.00 -vt 0.07 0.25 0.00 -vt 0.07 0.36 0.00 -vt 0.13 0.33 0.00 -vt 0.10 0.35 0.00 -vt 0.10 0.25 0.00 -vt 0.13 0.25 0.00 -vt 0.01 0.33 0.00 -vt 0.01 0.25 0.00 -vt 0.93 0.52 0.00 -vt 0.94 0.52 0.00 -vt 0.94 0.58 0.00 -vt 0.93 0.58 0.00 -vt 0.92 0.49 0.00 -vt 0.91 0.49 0.00 -vt 0.91 0.54 0.00 -vt 0.92 0.55 0.00 -vt 0.97 0.52 0.00 -vt 0.95 0.52 0.00 -vt 0.95 0.58 0.00 -vt 0.97 0.58 0.00 -vt 0.94 0.64 0.00 -vt 0.93 0.64 0.00 -vt 0.89 0.58 0.00 -vt 0.89 0.59 0.00 -vt 0.95 0.64 0.00 -vt 0.97 0.64 0.00 -vt 0.94 0.69 0.00 -vt 0.93 0.69 0.00 -vt 0.86 0.59 0.00 -vt 0.86 0.61 0.00 -vt 0.95 0.69 0.00 -vt 0.97 0.69 0.00 -vt 0.83 0.58 0.00 -vt 0.83 0.59 0.00 -vt 0.81 0.54 0.00 -vt 0.80 0.55 0.00 -vt 0.81 0.49 0.00 -vt 0.80 0.49 0.00 -vt 0.82 0.22 0.00 -vt 0.85 0.22 0.00 -vt 0.84 0.39 0.00 -vt 0.81 0.39 0.00 -vt 0.76 0.22 0.00 -vt 0.80 0.22 0.00 -vt 0.79 0.38 0.00 -vt 0.76 0.38 0.00 -vt 0.82 0.52 0.00 -vt 0.85 0.52 0.00 -vt 0.80 0.51 0.00 -vt 0.76 0.53 0.00 -vt 0.18 0.92 0.00 -vt 0.09 0.92 0.00 -vt 0.09 0.93 0.00 -vt 0.18 0.93 0.00 -vt 0.00 0.90 0.00 -vt 0.10 0.89 0.00 -vt 0.10 0.90 0.00 -vt 0.00 0.91 0.00 -vt 0.00 0.92 0.00 -vt 0.00 0.93 0.00 -vt 0.20 0.90 0.00 -vt 0.20 0.91 0.00 -vt 0.20 0.93 0.00 -vt 0.23 0.90 0.00 -vt 0.23 0.93 0.00 -vt 0.26 0.76 0.00 -vt 0.26 0.90 0.00 -vt 0.22 0.84 0.00 -vt 0.22 0.76 0.00 -vt 0.11 0.81 0.00 -vt 0.11 0.87 0.00 -vt 0.02 0.88 0.00 -vt 0.02 0.81 0.00 -vt 0.31 0.84 0.00 -vt 0.31 0.76 0.00 -vt 0.11 0.74 0.00 -vt 0.11 0.80 0.00 -vt 0.01 0.80 0.00 -vt 0.01 0.74 0.00 -vt 0.20 0.81 0.00 -vt 0.20 0.88 0.00 -vt 0.20 0.74 0.00 -vt 0.20 0.80 0.00 -vt 0.36 0.65 0.00 -vt 0.36 0.75 0.00 -vt 0.34 0.75 0.00 -vt 0.33 0.65 0.00 -vt 0.36 0.89 0.00 -vt 0.33 0.87 0.00 -vt 0.45 0.67 0.00 -vt 0.45 0.76 0.00 -vt 0.43 0.76 0.00 -vt 0.42 0.67 0.00 -vt 0.45 0.89 0.00 -vt 0.42 0.89 0.00 -vt 0.41 0.66 0.00 -vt 0.38 0.66 0.00 -vt 0.39 0.77 0.00 -vt 0.41 0.77 0.00 -vt 0.38 0.88 0.00 -vt 0.41 0.88 0.00 -vt 0.72 0.62 0.00 -vt 0.72 0.52 0.00 -vt 0.73 0.52 0.00 -vt 0.73 0.62 0.00 -vt 0.74 0.62 0.00 -vt 0.74 0.43 0.00 -vt 0.73 0.43 0.00 -vt 0.59 0.58 0.00 -vt 0.64 0.58 0.00 -vt 0.64 0.63 0.00 -vt 0.59 0.63 0.00 -vt 0.75 0.42 0.00 -vt 0.73 0.42 0.00 -vt 0.73 0.36 0.00 -vt 0.75 0.36 0.00 -vt 0.92 0.71 0.00 -vt 0.97 0.71 0.00 -vt 0.92 0.73 0.00 -vt 0.73 0.29 0.00 -vt 0.73 0.24 0.00 -vt 0.75 0.24 0.00 -vt 0.75 0.29 0.00 -vt 0.86 0.72 0.00 -vt 0.86 0.73 0.00 -vt 0.81 0.72 0.00 -vt 0.81 0.70 0.00 -vt 0.73 0.33 0.00 -vt 0.75 0.33 0.00 -vt 0.89 0.74 0.00 -vt 0.89 0.72 0.00 -vt 0.83 0.62 0.00 -vt 0.92 0.62 0.00 -vt 0.92 0.61 0.00 -vt 0.83 0.61 0.00 -vt 0.83 0.63 0.00 -vt 0.92 0.63 0.00 -vt 0.71 0.65 0.00 -vt 0.71 0.66 0.00 -vt 0.75 0.66 0.00 -vt 0.75 0.65 0.00 -vt 0.71 0.64 0.00 -vt 0.75 0.64 0.00 -vt 0.58 0.64 0.00 -vt 0.62 0.66 0.00 -vt 0.62 0.64 0.00 -vt 0.92 0.64 0.00 -vt 0.83 0.64 0.00 -vt 0.75 0.61 0.00 -vt 0.75 0.62 0.00 -vt 0.75 0.63 0.00 -vt 0.67 0.66 0.00 -vt 0.67 0.64 0.00 -vt 0.41 0.65 0.00 -vt 0.41 0.57 0.00 -vt 0.44 0.57 0.00 -vt 0.44 0.66 0.00 -vt 0.48 0.65 0.00 -vt 0.48 0.57 0.00 -# 694 texture coords - -o castle -g castle -f 1/1/1 2/2/2 3/3/2 -f 3/3/2 4/4/1 1/1/1 -f 2/2/2 5/5/3 6/6/3 -f 6/6/3 3/3/2 2/2/2 -f 5/5/3 7/7/4 8/8/4 -f 8/8/4 6/6/3 5/5/3 -f 7/9/4 9/10/5 10/11/5 -f 10/11/5 8/12/4 7/9/4 -f 9/10/5 11/13/6 12/14/6 -f 12/14/6 10/11/5 9/10/5 -f 11/13/6 13/15/7 14/16/7 -f 14/16/7 12/14/6 11/13/6 -f 13/15/7 15/17/8 16/18/8 -f 16/18/8 14/16/7 13/15/7 -f 15/17/8 17/19/9 18/20/9 -f 18/20/9 16/18/8 15/17/8 -f 17/19/9 19/21/10 20/22/10 -f 20/22/10 18/20/9 17/19/9 -f 19/21/10 21/23/11 22/24/11 -f 22/24/11 20/22/10 19/21/10 -f 21/23/11 23/25/12 24/26/12 -f 24/26/12 22/24/11 21/23/11 -f 23/25/12 1/1/1 4/4/1 -f 4/4/1 24/26/12 23/25/12 -f 25/27/13 26/28/13 27/29/13 -f 27/29/13 28/30/13 25/27/13 -f 29/31/14 25/27/14 28/30/14 -f 28/30/14 30/32/14 29/31/14 -f 31/33/15 29/31/15 30/32/15 -f 30/32/15 32/34/15 31/33/15 -f 33/35/16 31/36/16 32/37/16 -f 32/37/16 34/38/16 33/35/16 -f 35/39/17 33/35/17 34/38/17 -f 34/38/17 36/40/17 35/39/17 -f 37/41/18 35/39/18 36/40/18 -f 36/40/18 38/42/18 37/41/18 -f 39/43/19 37/41/19 38/42/19 -f 38/42/19 40/44/19 39/43/19 -f 41/45/20 39/43/20 40/44/20 -f 40/44/20 42/46/20 41/45/20 -f 43/47/21 41/45/21 42/46/21 -f 42/46/21 44/48/21 43/47/21 -f 45/49/22 43/47/22 44/48/22 -f 44/48/22 46/50/22 45/49/22 -f 47/51/23 45/49/23 46/50/23 -f 46/50/23 48/52/23 47/51/23 -f 26/28/24 47/51/25 48/52/25 -f 48/52/25 27/29/24 26/28/24 -f 2/53/26 1/54/26 26/54/26 -f 26/54/26 25/53/26 2/53/26 -f 1/54/26 23/55/26 47/55/26 -f 47/55/26 26/54/26 1/54/26 -f 23/55/26 21/56/26 45/56/26 -f 45/56/26 47/55/26 23/55/26 -f 21/56/26 19/57/26 43/57/26 -f 43/57/26 45/56/26 21/56/26 -f 19/57/26 17/58/26 41/59/26 -f 41/59/26 43/57/26 19/57/26 -f 17/58/26 15/60/26 39/61/26 -f 39/61/26 41/59/26 17/58/26 -f 15/60/26 13/62/26 37/62/26 -f 37/62/26 39/61/26 15/60/26 -f 13/62/26 11/63/26 35/64/26 -f 35/64/26 37/62/26 13/62/26 -f 11/63/26 9/65/26 33/66/26 -f 33/66/26 35/64/26 11/63/26 -f 9/65/26 7/67/26 31/67/26 -f 31/67/26 33/66/26 9/65/26 -f 7/67/26 5/68/26 29/68/26 -f 29/68/26 31/67/26 7/67/26 -f 5/68/26 2/53/26 25/53/26 -f 25/53/26 29/68/26 5/68/26 -f 49/54/27 50/53/27 28/53/27 -f 28/53/27 27/54/27 49/54/27 -f 50/53/27 51/68/27 30/68/27 -f 30/68/27 28/53/27 50/53/27 -f 51/68/27 52/67/27 32/67/27 -f 32/67/27 30/68/27 51/68/27 -f 52/67/27 53/65/27 34/66/27 -f 34/66/27 32/67/27 52/67/27 -f 53/65/27 54/63/27 36/64/27 -f 36/64/27 34/66/27 53/65/27 -f 54/63/27 55/62/27 38/62/27 -f 38/62/27 36/64/27 54/63/27 -f 55/62/27 56/60/27 40/61/27 -f 40/61/27 38/62/27 55/62/27 -f 56/60/27 57/58/27 42/59/27 -f 42/59/27 40/61/27 56/60/27 -f 57/58/27 58/57/27 44/57/27 -f 44/57/27 42/59/27 57/58/27 -f 58/57/27 59/56/27 46/56/27 -f 46/56/27 44/57/27 58/57/27 -f 59/56/27 60/55/27 48/55/27 -f 48/55/27 46/56/27 59/56/27 -f 60/55/27 49/54/27 27/54/27 -f 27/54/27 48/55/27 60/55/27 -f 49/69/1 61/70/1 62/71/2 -f 62/71/2 50/72/2 49/69/1 -f 50/72/2 62/71/2 63/73/14 -f 63/73/14 51/74/14 50/72/2 -f 51/74/15 63/73/15 64/75/15 -f 64/75/15 52/76/15 51/74/15 -f 52/76/16 64/75/16 65/77/5 -f 65/77/5 53/78/5 52/76/16 -f 53/78/5 65/77/5 66/79/6 -f 66/79/6 54/80/6 53/78/5 -f 54/81/6 66/82/6 67/83/7 -f 67/83/7 55/84/7 54/81/6 -f 55/84/7 67/83/7 68/85/8 -f 68/85/8 56/86/8 55/84/7 -f 56/86/8 68/85/8 69/87/9 -f 69/87/9 57/88/9 56/86/8 -f 57/88/9 69/87/9 70/89/10 -f 70/89/10 58/90/10 57/88/9 -f 58/90/10 70/89/10 71/91/11 -f 71/91/11 59/92/11 58/90/10 -f 59/92/11 71/91/11 72/93/12 -f 72/93/12 60/94/12 59/92/11 -f 60/94/12 72/93/12 61/70/1 -f 61/70/1 49/69/1 60/94/12 -f 73/95/26 74/96/26 75/96/26 -f 75/96/26 76/95/26 73/95/26 -f 77/97/26 73/95/26 76/95/26 -f 76/95/26 78/97/26 77/97/26 -f 79/67/26 77/97/26 78/97/26 -f 78/97/26 80/98/26 79/67/26 -f 81/99/26 79/67/26 80/98/26 -f 80/98/26 82/99/26 81/99/26 -f 83/100/26 81/99/26 82/99/26 -f 82/99/26 84/100/26 83/100/26 -f 85/101/26 83/100/26 84/100/26 -f 84/100/26 86/101/26 85/101/26 -f 87/61/26 85/101/26 86/101/26 -f 86/101/26 88/61/26 87/61/26 -f 89/59/26 87/61/26 88/61/26 -f 88/61/26 90/102/26 89/59/26 -f 91/103/26 89/59/26 90/102/26 -f 90/102/26 92/103/26 91/103/26 -f 93/104/26 91/103/26 92/103/26 -f 92/103/26 94/105/26 93/104/26 -f 95/106/26 93/104/26 94/105/26 -f 94/105/26 96/106/26 95/106/26 -f 74/96/26 95/106/26 96/106/26 -f 96/106/26 75/96/26 74/96/26 -f 76/107/28 75/108/28 97/109/28 -f 97/109/28 98/110/28 76/107/28 -f 78/111/29 76/107/29 98/110/29 -f 98/110/29 99/112/29 78/111/29 -f 80/113/30 78/111/30 99/112/30 -f 99/112/30 100/114/30 80/113/30 -f 82/115/31 80/113/31 100/114/31 -f 100/114/31 101/116/31 82/115/31 -f 84/117/32 82/115/32 101/116/32 -f 101/116/32 102/118/32 84/117/32 -f 86/119/33 84/117/33 102/118/33 -f 102/118/33 103/120/33 86/119/33 -f 88/121/34 86/119/34 103/120/34 -f 103/120/34 104/122/34 88/121/34 -f 90/123/35 88/121/35 104/122/35 -f 104/122/35 105/124/35 90/123/35 -f 92/125/36 90/123/36 105/124/36 -f 105/124/36 106/126/36 92/125/36 -f 94/127/37 92/128/37 106/129/37 -f 106/129/37 107/130/37 94/127/37 -f 96/131/38 94/127/38 107/130/38 -f 107/130/38 108/132/38 96/131/38 -f 75/108/39 96/131/39 108/132/39 -f 108/132/39 97/109/39 75/108/39 -f 98/110/40 97/109/40 109/133/40 -f 109/133/40 110/134/40 98/110/40 -f 99/112/41 98/110/41 110/134/41 -f 110/134/41 111/135/41 99/112/41 -f 100/114/42 99/112/42 111/135/42 -f 111/135/42 112/136/43 100/114/42 -f 101/116/44 100/114/44 112/136/44 -f 112/136/44 113/137/44 101/116/44 -f 102/118/45 101/116/45 113/137/45 -f 113/137/45 114/138/45 102/118/45 -f 103/120/46 102/118/46 114/138/46 -f 114/138/46 115/139/46 103/120/46 -f 104/122/47 103/120/48 115/139/48 -f 115/139/48 116/140/48 104/122/47 -f 105/124/49 104/122/49 116/140/49 -f 116/140/49 117/141/49 105/124/49 -f 106/126/50 105/124/50 117/141/50 -f 117/141/50 118/142/50 106/126/50 -f 107/130/51 106/129/51 118/143/52 -f 118/143/52 119/144/51 107/130/51 -f 108/132/53 107/130/53 119/144/53 -f 119/144/53 120/145/53 108/132/53 -f 97/109/54 108/132/55 120/145/54 -f 120/145/54 109/133/54 97/109/54 -f 121/146/56 122/147/56 62/148/56 -f 62/148/56 61/149/56 121/146/56 -f 122/147/57 123/150/58 63/151/58 -f 63/151/58 62/148/57 122/147/57 -f 123/152/59 124/153/59 64/154/59 -f 64/154/59 63/155/59 123/152/59 -f 124/153/60 125/142/60 65/156/60 -f 65/156/60 64/154/60 124/153/60 -f 125/142/61 126/157/62 66/158/61 -f 66/158/61 65/156/62 125/142/61 -f 126/157/63 127/159/63 67/160/63 -f 67/160/63 66/158/63 126/157/63 -f 127/159/64 128/161/64 68/162/64 -f 68/162/64 67/160/64 127/159/64 -f 128/161/65 129/163/66 69/164/66 -f 69/164/66 68/162/66 128/161/65 -f 129/163/67 130/165/67 70/166/67 -f 70/166/67 69/164/67 129/163/67 -f 130/165/68 131/167/68 71/168/68 -f 71/168/68 70/166/68 130/165/68 -f 131/167/69 132/169/70 72/170/70 -f 72/170/70 71/168/70 131/167/69 -f 132/169/71 121/146/71 61/149/71 -f 61/149/71 72/170/71 132/169/71 -f 74/171/1 73/172/2 122/173/2 -f 122/173/2 121/174/1 74/171/1 -f 73/172/2 77/175/3 123/176/3 -f 123/176/3 122/173/2 73/172/2 -f 77/177/3 79/178/4 124/179/4 -f 124/179/4 123/180/3 77/177/3 -f 79/178/4 81/86/5 125/181/5 -f 125/181/5 124/179/4 79/178/4 -f 81/86/5 83/182/6 126/183/6 -f 126/183/6 125/181/5 81/86/5 -f 83/182/6 85/184/7 127/185/7 -f 127/185/7 126/183/6 83/182/6 -f 85/184/7 87/186/8 128/187/8 -f 128/187/8 127/185/7 85/184/7 -f 87/186/8 89/188/9 129/189/9 -f 129/189/9 128/187/8 87/186/8 -f 89/188/9 91/190/10 130/191/10 -f 130/191/10 129/189/9 89/188/9 -f 91/190/10 93/76/11 131/192/11 -f 131/192/11 130/191/10 91/190/10 -f 93/76/11 95/193/12 132/194/12 -f 132/194/12 131/192/11 93/76/11 -f 95/193/12 74/171/1 121/174/1 -f 121/174/1 132/194/12 95/193/12 -f 133/195/72 134/196/72 135/197/72 -f 135/197/72 136/198/72 133/195/72 -f 137/199/73 138/200/73 139/201/73 -f 139/201/73 140/202/73 137/199/73 -f 141/203/74 142/204/74 143/205/74 -f 143/205/74 144/206/74 141/203/74 -f 145/202/75 146/201/75 147/200/75 -f 147/200/75 148/199/75 145/202/75 -f 149/207/76 150/207/76 151/208/76 -f 151/208/76 152/209/76 149/207/76 -f 153/209/77 154/210/77 155/211/77 -f 142/212/78 156/196/78 157/213/78 -f 157/213/78 143/214/78 142/212/78 -f 158/210/79 159/209/79 160/211/79 -f 161/215/80 162/216/80 160/211/80 -f 160/211/80 159/209/80 161/215/80 -f 163/217/81 164/218/81 135/197/81 -f 135/197/81 134/196/81 163/217/81 -f 165/219/82 166/220/82 142/204/82 -f 142/204/82 141/203/82 165/219/82 -f 167/209/83 168/208/83 150/207/83 -f 150/207/83 149/207/83 167/209/83 -f 142/212/84 166/214/84 169/213/84 -f 169/213/84 156/196/84 142/212/84 -f 161/215/85 153/209/85 155/211/85 -f 155/211/85 162/216/85 161/215/85 -f 170/221/75 157/222/75 133/222/75 -f 133/222/75 136/221/75 170/221/75 -f 157/222/86 156/203/86 134/203/86 -f 134/203/86 133/222/86 157/222/86 -f 156/203/87 169/206/87 163/206/87 -f 163/206/87 134/203/87 156/203/87 -f 169/206/73 171/223/73 164/223/73 -f 164/223/73 163/206/73 169/206/73 -f 171/224/88 172/225/88 135/226/88 -f 135/226/88 164/224/88 171/224/88 -f 172/225/89 170/224/89 136/224/89 -f 136/224/89 135/226/89 172/225/89 -f 166/214/79 173/227/79 171/228/79 -f 171/228/79 169/213/79 166/214/79 -f 173/229/75 166/220/75 165/219/75 -f 165/219/75 174/221/75 173/229/75 -f 144/206/73 143/205/73 175/230/73 -f 175/230/73 176/223/73 144/206/73 -f 175/227/77 143/214/77 157/213/77 -f 157/213/77 170/228/77 175/227/77 -f 139/201/73 138/200/73 177/199/73 -f 177/199/73 178/202/73 139/201/73 -f 175/231/90 170/224/90 155/232/90 -f 155/232/90 154/233/91 175/231/90 -f 170/224/89 172/225/89 162/234/89 -f 162/234/89 155/232/89 170/224/89 -f 172/225/88 171/224/88 160/232/88 -f 160/232/88 162/234/88 172/225/88 -f 171/224/92 173/231/92 158/233/92 -f 158/233/92 160/232/92 171/224/92 -f 147/200/75 146/201/75 179/202/75 -f 179/202/75 180/199/75 147/200/75 -f 151/208/76 150/207/76 161/235/76 -f 161/235/76 159/236/76 151/208/76 -f 150/207/83 168/208/83 153/236/83 -f 153/236/83 161/235/83 150/207/83 -f 176/236/27 175/231/27 138/237/27 -f 138/237/27 137/238/27 176/236/27 -f 175/231/27 154/233/27 177/239/27 -f 177/239/27 138/237/27 175/231/27 -f 154/210/93 153/209/93 178/240/94 -f 178/240/94 177/241/94 154/210/93 -f 153/236/26 168/208/26 139/242/26 -f 139/242/26 178/238/26 153/236/26 -f 168/208/26 167/209/26 140/240/26 -f 140/240/26 139/242/26 168/208/26 -f 152/209/26 151/208/26 146/242/26 -f 146/242/26 145/240/26 152/209/26 -f 151/208/26 159/236/26 179/238/26 -f 179/238/26 146/242/26 151/208/26 -f 159/209/95 158/210/95 180/241/95 -f 180/241/95 179/240/95 159/209/95 -f 158/233/27 173/231/27 147/237/27 -f 147/237/27 180/239/27 158/233/27 -f 173/231/27 174/236/27 148/238/27 -f 148/238/27 147/237/27 173/231/27 -f 181/195/96 182/196/96 183/197/96 -f 183/197/96 184/198/96 181/195/96 -f 185/199/97 186/200/98 187/201/98 -f 187/201/98 188/202/97 185/199/97 -f 189/203/99 190/204/99 191/205/99 -f 191/205/99 192/206/99 189/203/99 -f 193/202/100 194/201/101 195/200/101 -f 195/200/101 196/199/100 193/202/100 -f 197/207/102 198/207/102 199/208/102 -f 199/208/102 200/209/102 197/207/102 -f 201/209/103 202/210/103 203/211/103 -f 190/212/104 204/196/104 205/213/104 -f 205/213/104 191/214/104 190/212/104 -f 206/210/105 207/209/105 208/211/105 -f 209/215/106 210/216/106 208/211/106 -f 208/211/106 207/209/106 209/215/106 -f 211/217/107 212/218/107 183/197/107 -f 183/197/107 182/196/107 211/217/107 -f 213/219/108 214/220/108 190/204/108 -f 190/204/108 189/203/108 213/219/108 -f 215/209/109 216/208/109 198/207/109 -f 198/207/109 197/207/109 215/209/109 -f 190/212/110 214/214/110 217/213/110 -f 217/213/110 204/196/110 190/212/110 -f 209/215/111 201/209/111 203/211/111 -f 203/211/111 210/216/111 209/215/111 -f 218/221/100 205/222/100 181/222/101 -f 181/222/101 184/221/101 218/221/100 -f 205/222/112 204/203/112 182/203/112 -f 182/203/112 181/222/112 205/222/112 -f 204/203/113 217/206/113 211/206/113 -f 211/206/113 182/203/113 204/203/113 -f 217/206/98 219/223/98 212/223/98 -f 212/223/98 211/206/98 217/206/98 -f 219/224/114 220/225/114 183/226/114 -f 183/226/114 212/224/114 219/224/114 -f 220/225/115 218/224/115 184/224/115 -f 184/224/115 183/226/115 220/225/115 -f 214/214/105 221/227/105 219/228/105 -f 219/228/105 217/213/105 214/214/105 -f 221/229/100 214/220/100 213/219/100 -f 213/219/100 222/221/100 221/229/100 -f 192/206/98 191/205/98 223/230/98 -f 223/230/98 224/223/98 192/206/98 -f 223/227/103 191/214/103 205/213/103 -f 205/213/103 218/228/103 223/227/103 -f 187/201/98 186/200/98 225/199/97 -f 225/199/97 226/202/97 187/201/98 -f 223/231/116 218/224/116 203/232/116 -f 203/232/116 202/233/116 223/231/116 -f 218/224/115 220/225/115 210/234/115 -f 210/234/115 203/232/115 218/224/115 -f 220/225/114 219/224/114 208/232/114 -f 208/232/114 210/234/114 220/225/114 -f 219/224/117 221/231/117 206/233/117 -f 206/233/117 208/232/117 219/224/117 -f 195/200/101 194/201/101 227/202/100 -f 227/202/100 228/199/100 195/200/101 -f 199/208/102 198/207/102 209/235/102 -f 209/235/102 207/236/102 199/208/102 -f 198/207/109 216/208/109 201/236/109 -f 201/236/109 209/235/109 198/207/109 -f 224/236/27 223/231/27 186/237/27 -f 186/237/27 185/238/27 224/236/27 -f 223/231/27 202/233/27 225/239/27 -f 225/239/27 186/237/27 223/231/27 -f 202/210/118 201/209/118 226/240/118 -f 226/240/118 225/241/118 202/210/118 -f 201/236/26 216/208/26 187/242/26 -f 187/242/26 226/238/26 201/236/26 -f 216/208/26 215/209/26 188/240/26 -f 188/240/26 187/242/26 216/208/26 -f 200/209/26 199/208/26 194/242/26 -f 194/242/26 193/240/26 200/209/26 -f 199/208/26 207/236/26 227/238/26 -f 227/238/26 194/242/26 199/208/26 -f 207/209/119 206/210/119 228/241/119 -f 228/241/119 227/240/119 207/209/119 -f 206/233/27 221/231/27 195/237/27 -f 195/237/27 228/239/27 206/233/27 -f 221/231/27 222/236/27 196/238/27 -f 196/238/27 195/237/27 221/231/27 -f 229/243/120 230/244/120 231/245/120 -f 231/245/120 232/246/120 229/243/120 -f 229/247/121 232/248/121 233/249/121 -f 233/249/121 234/250/121 229/247/121 -f 232/246/122 231/245/122 235/251/122 -f 235/251/122 233/252/122 232/246/122 -f 231/248/123 230/247/123 236/250/123 -f 236/250/123 235/249/123 231/248/123 -f 237/195/124 238/196/124 239/197/124 -f 239/197/124 240/198/124 237/195/124 -f 241/199/125 242/200/98 243/201/98 -f 243/201/98 244/202/125 241/199/125 -f 245/203/99 246/204/99 247/205/99 -f 247/205/99 248/206/99 245/203/99 -f 249/202/100 250/201/101 251/200/101 -f 251/200/101 252/199/100 249/202/100 -f 253/207/102 254/207/102 255/208/102 -f 255/208/102 256/209/102 253/207/102 -f 257/209/103 258/210/103 259/211/103 -f 246/212/104 260/196/104 261/213/104 -f 261/213/104 247/214/104 246/212/104 -f 262/210/105 263/209/105 264/211/105 -f 265/215/106 266/216/106 264/211/106 -f 264/211/106 263/209/106 265/215/106 -f 267/217/107 268/218/107 239/197/107 -f 239/197/107 238/196/107 267/217/107 -f 269/219/126 270/220/126 246/204/108 -f 246/204/108 245/203/108 269/219/126 -f 271/209/109 272/208/109 254/207/109 -f 254/207/109 253/207/109 271/209/109 -f 246/212/110 270/214/110 273/213/110 -f 273/213/110 260/196/110 246/212/110 -f 265/215/111 257/209/111 259/211/111 -f 259/211/111 266/216/111 265/215/111 -f 274/221/100 261/222/100 237/222/100 -f 237/222/100 240/221/100 274/221/100 -f 261/222/112 260/203/112 238/203/112 -f 238/203/112 237/222/112 261/222/112 -f 260/203/113 273/206/113 267/206/113 -f 267/206/113 238/203/113 260/203/113 -f 273/206/98 275/223/98 268/223/98 -f 268/223/98 267/206/98 273/206/98 -f 275/224/114 276/225/114 239/226/114 -f 239/226/114 268/224/114 275/224/114 -f 276/225/115 274/224/115 240/224/115 -f 240/224/115 239/226/115 276/225/115 -f 270/214/105 277/227/105 275/228/105 -f 275/228/105 273/213/105 270/214/105 -f 277/229/101 270/220/101 269/219/101 -f 269/219/101 278/221/101 277/229/101 -f 248/206/98 247/205/97 279/230/97 -f 279/230/97 280/223/98 248/206/98 -f 279/227/103 247/214/103 261/213/103 -f 261/213/103 274/228/103 279/227/103 -f 243/201/98 242/200/98 281/199/97 -f 281/199/97 282/202/97 243/201/98 -f 279/231/116 274/224/116 259/232/116 -f 259/232/116 258/233/116 279/231/116 -f 274/224/115 276/225/115 266/234/115 -f 266/234/115 259/232/115 274/224/115 -f 276/225/114 275/224/114 264/232/114 -f 264/232/114 266/234/114 276/225/114 -f 275/224/117 277/231/117 262/233/117 -f 262/233/117 264/232/117 275/224/117 -f 251/200/101 250/201/101 283/202/100 -f 283/202/100 284/199/100 251/200/101 -f 255/208/102 254/207/102 265/235/102 -f 265/235/102 263/236/102 255/208/102 -f 254/207/109 272/208/109 257/236/109 -f 257/236/109 265/235/109 254/207/109 -f 280/236/27 279/231/27 242/237/27 -f 242/237/27 241/238/27 280/236/27 -f 279/231/27 258/233/27 281/239/27 -f 281/239/27 242/237/27 279/231/27 -f 258/210/118 257/209/118 282/240/118 -f 282/240/118 281/241/118 258/210/118 -f 257/236/26 272/208/26 243/242/26 -f 243/242/26 282/238/26 257/236/26 -f 272/208/26 271/209/26 244/240/26 -f 244/240/26 243/242/26 272/208/26 -f 256/209/26 255/208/26 250/242/26 -f 250/242/26 249/240/26 256/209/26 -f 255/208/26 263/236/26 283/238/26 -f 283/238/26 250/242/26 255/208/26 -f 263/209/119 262/210/119 284/241/119 -f 284/241/119 283/240/119 263/209/119 -f 262/233/27 277/231/27 251/237/27 -f 251/237/27 284/239/27 262/233/27 -f 277/231/27 278/236/27 252/238/27 -f 252/238/27 251/237/27 277/231/27 -f 285/243/127 286/244/127 287/245/127 -f 287/245/127 288/246/127 285/243/127 -f 285/247/128 288/248/128 289/249/128 -f 289/249/128 290/250/128 285/247/128 -f 288/246/129 287/245/129 291/251/129 -f 291/251/129 289/252/129 288/246/129 -f 287/248/130 286/247/130 292/250/130 -f 292/250/130 291/249/130 287/248/130 -f 293/195/131 294/196/131 295/197/131 -f 295/197/131 296/198/131 293/195/131 -f 297/199/75 298/200/75 299/201/75 -f 299/201/75 300/202/75 297/199/75 -f 301/203/132 302/204/132 303/205/132 -f 303/205/132 304/206/132 301/203/132 -f 305/202/73 306/201/73 307/200/73 -f 307/200/73 308/199/73 305/202/73 -f 309/207/83 310/207/83 311/208/83 -f 311/208/83 312/209/83 309/207/83 -f 313/209/133 314/210/133 315/211/133 -f 302/212/134 316/196/134 317/213/134 -f 317/213/134 303/214/134 302/212/134 -f 318/210/135 319/209/135 320/211/135 -f 321/215/136 322/216/136 320/211/136 -f 320/211/136 319/209/136 321/215/136 -f 323/217/137 324/218/137 295/197/138 -f 295/197/138 294/196/138 323/217/137 -f 325/219/139 326/220/139 302/204/139 -f 302/204/139 301/203/139 325/219/139 -f 327/209/76 328/208/76 310/207/76 -f 310/207/76 309/207/76 327/209/76 -f 302/212/140 326/214/140 329/213/140 -f 329/213/140 316/196/140 302/212/140 -f 321/215/141 313/209/141 315/211/141 -f 315/211/141 322/216/141 321/215/141 -f 330/221/73 317/222/73 293/222/73 -f 293/222/73 296/221/73 330/221/73 -f 317/222/87 316/203/87 294/203/87 -f 294/203/87 293/222/87 317/222/87 -f 316/203/86 329/206/86 323/206/86 -f 323/206/86 294/203/86 316/203/86 -f 329/206/75 331/223/75 324/223/75 -f 324/223/75 323/206/75 329/206/75 -f 331/224/142 332/225/142 295/226/142 -f 295/226/142 324/224/142 331/224/142 -f 332/225/143 330/224/143 296/224/143 -f 296/224/143 295/226/143 332/225/143 -f 326/214/135 333/227/135 331/228/135 -f 331/228/135 329/213/135 326/214/135 -f 333/229/73 326/220/73 325/219/73 -f 325/219/73 334/221/73 333/229/73 -f 304/206/75 303/205/75 335/230/75 -f 335/230/75 336/223/75 304/206/75 -f 335/227/133 303/214/133 317/213/133 -f 317/213/133 330/228/133 335/227/133 -f 299/201/75 298/200/75 337/199/75 -f 337/199/75 338/202/75 299/201/75 -f 335/231/144 330/224/144 315/232/144 -f 315/232/144 314/233/144 335/231/144 -f 330/224/143 332/225/143 322/234/143 -f 322/234/143 315/232/143 330/224/143 -f 332/225/142 331/224/142 320/232/142 -f 320/232/142 322/234/142 332/225/142 -f 331/224/145 333/231/145 318/233/145 -f 318/233/145 320/232/145 331/224/145 -f 307/200/73 306/201/73 339/202/73 -f 339/202/73 340/199/73 307/200/73 -f 311/208/83 310/207/83 321/235/83 -f 321/235/83 319/236/83 311/208/83 -f 310/207/76 328/208/76 313/236/76 -f 313/236/76 321/235/76 310/207/76 -f 336/236/27 335/231/27 298/237/27 -f 298/237/27 297/238/27 336/236/27 -f 335/231/27 314/233/27 337/239/27 -f 337/239/27 298/237/27 335/231/27 -f 314/210/146 313/209/146 338/240/146 -f 338/240/146 337/241/146 314/210/146 -f 313/236/26 328/208/26 299/242/26 -f 299/242/26 338/238/26 313/236/26 -f 328/208/26 327/209/26 300/240/26 -f 300/240/26 299/242/26 328/208/26 -f 312/209/26 311/208/26 306/242/26 -f 306/242/26 305/240/26 312/209/26 -f 311/208/26 319/236/26 339/238/26 -f 339/238/26 306/242/26 311/208/26 -f 319/209/147 318/210/147 340/241/147 -f 340/241/147 339/240/147 319/209/147 -f 318/233/27 333/231/27 307/237/27 -f 307/237/27 340/239/27 318/233/27 -f 333/231/27 334/236/27 308/238/27 -f 308/238/27 307/237/27 333/231/27 -f 341/243/148 342/244/148 343/245/148 -f 343/245/148 344/246/148 341/243/148 -f 341/247/1 344/248/1 345/249/1 -f 345/249/1 346/250/1 341/247/1 -f 344/246/149 343/245/149 347/251/149 -f 347/251/149 345/252/149 344/246/149 -f 343/248/7 342/247/7 348/250/7 -f 348/250/7 347/249/7 343/248/7 -f 349/243/150 350/244/150 351/245/150 -f 351/245/150 352/246/150 349/243/150 -f 349/247/151 352/248/151 353/249/151 -f 353/249/151 354/250/151 349/247/151 -f 352/246/152 351/245/152 355/251/152 -f 355/251/152 353/252/152 352/246/152 -f 351/248/153 350/247/153 356/250/153 -f 356/250/153 355/249/153 351/248/153 -f 357/243/154 358/244/154 359/245/154 -f 359/245/154 360/246/154 357/243/154 -f 357/247/7 360/248/7 361/249/7 -f 361/249/7 362/250/7 357/247/7 -f 360/246/155 359/245/155 363/251/155 -f 363/251/155 361/252/155 360/246/155 -f 359/248/1 358/247/1 364/250/1 -f 364/250/1 363/249/1 359/248/1 -f 365/243/156 366/244/156 367/245/156 -f 367/245/156 368/246/156 365/243/156 -f 365/247/157 368/248/157 369/249/157 -f 369/249/157 370/250/157 365/247/157 -f 368/246/158 367/245/158 371/251/158 -f 371/251/158 369/252/158 368/246/158 -f 367/248/159 366/247/159 372/250/159 -f 372/250/159 371/249/159 367/248/159 -f 373/243/160 374/244/160 375/245/160 -f 375/245/160 376/246/160 373/243/160 -f 373/247/161 376/248/161 377/249/161 -f 377/249/161 378/250/161 373/247/161 -f 376/246/162 375/245/162 379/251/162 -f 379/251/162 377/252/162 376/246/162 -f 375/248/163 374/247/163 380/250/163 -f 380/250/163 379/249/163 375/248/163 -f 381/195/131 382/196/131 383/197/131 -f 383/197/131 384/198/131 381/195/131 -f 385/199/75 386/200/75 387/201/75 -f 387/201/75 388/202/75 385/199/75 -f 389/203/132 390/204/132 391/205/132 -f 391/205/132 392/206/132 389/203/132 -f 393/202/73 394/201/73 395/200/73 -f 395/200/73 396/199/73 393/202/73 -f 397/207/83 398/207/83 399/208/83 -f 399/208/83 400/209/83 397/207/83 -f 401/209/133 402/210/133 403/211/133 -f 390/212/134 404/196/134 405/213/134 -f 405/213/134 391/214/134 390/212/134 -f 406/210/135 407/209/135 408/211/135 -f 409/215/136 410/216/136 408/211/136 -f 408/211/136 407/209/136 409/215/136 -f 411/217/137 412/218/137 383/197/138 -f 383/197/138 382/196/138 411/217/137 -f 413/219/139 414/220/139 390/204/139 -f 390/204/139 389/203/139 413/219/139 -f 415/209/76 416/208/76 398/207/76 -f 398/207/76 397/207/76 415/209/76 -f 390/212/140 414/214/140 417/213/140 -f 417/213/140 404/196/140 390/212/140 -f 409/215/141 401/209/141 403/211/141 -f 403/211/141 410/216/141 409/215/141 -f 418/221/73 405/222/73 381/222/73 -f 381/222/73 384/221/73 418/221/73 -f 405/222/87 404/203/87 382/203/87 -f 382/203/87 381/222/87 405/222/87 -f 404/203/86 417/206/86 411/206/86 -f 411/206/86 382/203/86 404/203/86 -f 417/206/75 419/223/75 412/223/75 -f 412/223/75 411/206/75 417/206/75 -f 419/224/142 420/225/142 383/226/142 -f 383/226/142 412/224/142 419/224/142 -f 420/225/143 418/224/143 384/224/143 -f 384/224/143 383/226/143 420/225/143 -f 414/214/135 421/227/135 419/228/135 -f 419/228/135 417/213/135 414/214/135 -f 421/229/73 414/220/73 413/219/73 -f 413/219/73 422/221/73 421/229/73 -f 392/206/75 391/205/75 423/230/75 -f 423/230/75 424/223/75 392/206/75 -f 423/227/133 391/214/133 405/213/133 -f 405/213/133 418/228/133 423/227/133 -f 387/201/75 386/200/75 425/199/75 -f 425/199/75 426/202/75 387/201/75 -f 423/231/144 418/224/144 403/232/144 -f 403/232/144 402/233/144 423/231/144 -f 418/224/143 420/225/143 410/234/143 -f 410/234/143 403/232/143 418/224/143 -f 420/225/142 419/224/142 408/232/142 -f 408/232/142 410/234/142 420/225/142 -f 419/224/145 421/231/145 406/233/145 -f 406/233/145 408/232/145 419/224/145 -f 395/200/73 394/201/73 427/202/73 -f 427/202/73 428/199/73 395/200/73 -f 399/208/83 398/207/83 409/235/83 -f 409/235/83 407/236/83 399/208/83 -f 398/207/76 416/208/76 401/236/76 -f 401/236/76 409/235/76 398/207/76 -f 424/236/27 423/231/27 386/237/27 -f 386/237/27 385/238/27 424/236/27 -f 423/231/27 402/233/27 425/239/27 -f 425/239/27 386/237/27 423/231/27 -f 402/210/146 401/209/146 426/240/146 -f 426/240/146 425/241/146 402/210/146 -f 401/236/26 416/208/26 387/242/26 -f 387/242/26 426/238/26 401/236/26 -f 416/208/26 415/209/26 388/240/26 -f 388/240/26 387/242/26 416/208/26 -f 400/209/26 399/208/26 394/242/26 -f 394/242/26 393/240/26 400/209/26 -f 399/208/26 407/236/26 427/238/26 -f 427/238/26 394/242/26 399/208/26 -f 407/209/147 406/210/147 428/241/147 -f 428/241/147 427/240/147 407/209/147 -f 406/233/27 421/231/27 395/237/27 -f 395/237/27 428/239/27 406/233/27 -f 421/231/27 422/236/27 396/238/27 -f 396/238/27 395/237/27 421/231/27 -f 429/195/164 430/196/10 431/197/10 -f 431/197/10 432/198/164 429/195/164 -f 433/199/165 434/200/165 435/201/165 -f 435/201/165 436/202/165 433/199/165 -f 437/203/108 438/204/108 439/205/108 -f 439/205/108 440/206/108 437/203/108 -f 441/202/125 442/201/125 443/200/125 -f 443/200/125 444/199/125 441/202/125 -f 445/207/166 446/207/166 447/208/166 -f 447/208/166 448/209/166 445/207/166 -f 449/209/167 450/210/167 451/211/167 -f 438/212/168 452/196/168 453/213/168 -f 453/213/168 439/214/168 438/212/168 -f 454/210/169 455/209/169 456/211/169 -f 457/215/170 458/216/170 456/211/170 -f 456/211/170 455/209/170 457/215/170 -f 459/217/171 460/218/171 431/197/171 -f 431/197/171 430/196/171 459/217/171 -f 461/219/172 462/220/99 438/204/99 -f 438/204/99 437/203/99 461/219/172 -f 463/209/173 464/208/173 446/207/173 -f 446/207/173 445/207/173 463/209/173 -f 438/212/174 462/214/174 465/213/174 -f 465/213/174 452/196/174 438/212/174 -f 457/215/175 449/209/175 451/211/175 -f 451/211/175 458/216/175 457/215/175 -f 466/221/125 453/222/125 429/222/125 -f 429/222/125 432/221/125 466/221/125 -f 453/222/113 452/203/113 430/203/113 -f 430/203/113 429/222/113 453/222/113 -f 452/203/112 465/206/112 459/206/112 -f 459/206/112 430/203/112 452/203/112 -f 465/206/165 467/223/165 460/223/165 -f 460/223/165 459/206/165 465/206/165 -f 467/224/176 468/225/176 431/226/176 -f 431/226/176 460/224/176 467/224/176 -f 468/225/117 466/224/117 432/224/117 -f 432/224/117 431/226/117 468/225/117 -f 462/214/169 469/227/169 467/228/169 -f 467/228/169 465/213/169 462/214/169 -f 469/229/125 462/220/125 461/219/125 -f 461/219/125 470/221/125 469/229/125 -f 440/206/165 439/205/165 471/230/165 -f 471/230/165 472/223/165 440/206/165 -f 471/227/167 439/214/167 453/213/167 -f 453/213/167 466/228/167 471/227/167 -f 435/201/165 434/200/165 473/199/165 -f 473/199/165 474/202/165 435/201/165 -f 471/231/177 466/224/177 451/232/177 -f 451/232/177 450/233/177 471/231/177 -f 466/224/117 468/225/117 458/234/117 -f 458/234/117 451/232/117 466/224/117 -f 468/225/176 467/224/176 456/232/176 -f 456/232/176 458/234/176 468/225/176 -f 467/224/115 469/231/115 454/233/115 -f 454/233/115 456/232/115 467/224/115 -f 443/200/125 442/201/125 475/202/125 -f 475/202/125 476/199/125 443/200/125 -f 447/208/166 446/207/166 457/235/166 -f 457/235/166 455/236/166 447/208/166 -f 446/207/173 464/208/173 449/236/173 -f 449/236/173 457/235/173 446/207/173 -f 472/236/27 471/231/27 434/237/27 -f 434/237/27 433/238/27 472/236/27 -f 471/231/27 450/233/27 473/239/27 -f 473/239/27 434/237/27 471/231/27 -f 450/210/178 449/209/178 474/240/178 -f 474/240/178 473/241/178 450/210/178 -f 449/236/26 464/208/26 435/242/26 -f 435/242/26 474/238/26 449/236/26 -f 464/208/26 463/209/26 436/240/26 -f 436/240/26 435/242/26 464/208/26 -f 448/209/26 447/208/26 442/242/26 -f 442/242/26 441/240/26 448/209/26 -f 447/208/26 455/236/26 475/238/26 -f 475/238/26 442/242/26 447/208/26 -f 455/209/179 454/210/179 476/241/179 -f 476/241/179 475/240/179 455/209/179 -f 454/233/27 469/231/27 443/237/27 -f 443/237/27 476/239/27 454/233/27 -f 469/231/27 470/236/27 444/238/27 -f 444/238/27 443/237/27 469/231/27 -f 477/243/180 478/244/180 479/245/180 -f 479/245/180 480/246/180 477/243/180 -f 477/247/153 480/248/153 481/249/153 -f 481/249/153 482/250/153 477/247/153 -f 480/246/181 479/245/181 483/251/181 -f 483/251/181 481/252/182 480/246/181 -f 479/248/151 478/247/151 484/250/151 -f 484/250/151 483/249/151 479/248/151 -f 485/195/10 486/196/10 487/197/10 -f 487/197/10 488/198/10 485/195/10 -f 489/199/165 490/200/165 491/201/165 -f 491/201/165 492/202/165 489/199/165 -f 493/203/108 494/204/108 495/205/108 -f 495/205/108 496/206/108 493/203/108 -f 497/202/125 498/201/125 499/200/125 -f 499/200/125 500/199/125 497/202/125 -f 501/207/166 502/207/166 503/208/166 -f 503/208/166 504/209/166 501/207/166 -f 505/209/167 506/210/167 507/211/167 -f 494/212/168 508/196/168 509/213/168 -f 509/213/168 495/214/168 494/212/168 -f 510/210/169 511/209/169 512/211/169 -f 513/215/170 514/216/170 512/211/170 -f 512/211/170 511/209/170 513/215/170 -f 515/217/171 516/218/171 487/197/171 -f 487/197/171 486/196/171 515/217/171 -f 517/219/99 518/220/99 494/204/172 -f 494/204/172 493/203/99 517/219/99 -f 519/209/173 520/208/173 502/207/173 -f 502/207/173 501/207/173 519/209/173 -f 494/212/174 518/214/174 521/213/174 -f 521/213/174 508/196/174 494/212/174 -f 513/215/175 505/209/175 507/211/175 -f 507/211/175 514/216/175 513/215/175 -f 522/221/125 509/222/125 485/222/125 -f 485/222/125 488/221/125 522/221/125 -f 509/222/113 508/203/113 486/203/113 -f 486/203/113 485/222/113 509/222/113 -f 508/203/112 521/206/112 515/206/112 -f 515/206/112 486/203/112 508/203/112 -f 521/206/165 523/223/165 516/223/165 -f 516/223/165 515/206/165 521/206/165 -f 523/224/176 524/225/176 487/226/176 -f 487/226/176 516/224/176 523/224/176 -f 524/225/117 522/224/117 488/224/117 -f 488/224/117 487/226/117 524/225/117 -f 518/214/169 525/227/169 523/228/169 -f 523/228/169 521/213/169 518/214/169 -f 525/229/125 518/220/125 517/219/125 -f 517/219/125 526/221/125 525/229/125 -f 496/206/165 495/205/165 527/230/165 -f 527/230/165 528/223/165 496/206/165 -f 527/227/167 495/214/167 509/213/167 -f 509/213/167 522/228/167 527/227/167 -f 491/201/165 490/200/165 529/199/165 -f 529/199/165 530/202/165 491/201/165 -f 527/231/177 522/224/177 507/232/177 -f 507/232/177 506/233/177 527/231/177 -f 522/224/117 524/225/117 514/234/117 -f 514/234/117 507/232/117 522/224/117 -f 524/225/176 523/224/176 512/232/176 -f 512/232/176 514/234/176 524/225/176 -f 523/224/115 525/231/115 510/233/115 -f 510/233/115 512/232/115 523/224/115 -f 499/200/125 498/201/125 531/202/125 -f 531/202/125 532/199/125 499/200/125 -f 503/208/166 502/207/166 513/235/166 -f 513/235/166 511/236/166 503/208/166 -f 502/207/173 520/208/173 505/236/173 -f 505/236/173 513/235/173 502/207/173 -f 528/236/27 527/231/27 490/237/27 -f 490/237/27 489/238/27 528/236/27 -f 527/231/27 506/233/27 529/239/27 -f 529/239/27 490/237/27 527/231/27 -f 506/210/178 505/209/178 530/240/178 -f 530/240/178 529/241/178 506/210/178 -f 505/236/26 520/208/26 491/242/26 -f 491/242/26 530/238/26 505/236/26 -f 520/208/26 519/209/26 492/240/26 -f 492/240/26 491/242/26 520/208/26 -f 504/209/26 503/208/26 498/242/26 -f 498/242/26 497/240/26 504/209/26 -f 503/208/26 511/236/26 531/238/26 -f 531/238/26 498/242/26 503/208/26 -f 511/209/179 510/210/179 532/241/179 -f 532/241/179 531/240/179 511/209/179 -f 510/233/27 525/231/27 499/237/27 -f 499/237/27 532/239/27 510/233/27 -f 525/231/27 526/236/27 500/238/27 -f 500/238/27 499/237/27 525/231/27 -f 533/243/183 534/244/183 535/245/183 -f 535/245/183 536/246/183 533/243/183 -f 533/247/184 536/248/184 537/249/184 -f 537/249/184 538/250/184 533/247/184 -f 536/246/185 535/245/185 539/251/185 -f 539/251/185 537/252/185 536/246/185 -f 535/248/186 534/247/186 540/250/186 -f 540/250/186 539/249/186 535/248/186 -f 541/195/72 542/196/72 543/197/72 -f 543/197/72 544/198/72 541/195/72 -f 545/199/73 546/200/73 547/201/73 -f 547/201/73 548/202/73 545/199/73 -f 549/203/74 550/204/74 551/205/74 -f 551/205/74 552/206/74 549/203/74 -f 553/202/75 554/201/75 555/200/75 -f 555/200/75 556/199/75 553/202/75 -f 557/207/76 558/207/76 559/208/76 -f 559/208/76 560/209/76 557/207/76 -f 561/209/77 562/210/77 563/211/77 -f 550/212/78 564/196/78 565/213/78 -f 565/213/78 551/214/78 550/212/78 -f 566/210/79 567/209/79 568/211/79 -f 569/215/80 570/216/80 568/211/80 -f 568/211/80 567/209/80 569/215/80 -f 571/217/81 572/218/81 543/197/81 -f 543/197/81 542/196/81 571/217/81 -f 573/219/82 574/220/82 550/204/82 -f 550/204/82 549/203/82 573/219/82 -f 575/209/83 576/208/83 558/207/83 -f 558/207/83 557/207/83 575/209/83 -f 550/212/84 574/214/84 577/213/84 -f 577/213/84 564/196/84 550/212/84 -f 569/215/85 561/209/85 563/211/85 -f 563/211/85 570/216/85 569/215/85 -f 578/221/75 565/222/75 541/222/75 -f 541/222/75 544/221/75 578/221/75 -f 565/222/86 564/203/86 542/203/86 -f 542/203/86 541/222/86 565/222/86 -f 564/203/87 577/206/87 571/206/87 -f 571/206/87 542/203/87 564/203/87 -f 577/206/73 579/223/73 572/223/73 -f 572/223/73 571/206/73 577/206/73 -f 579/224/88 580/225/88 543/226/88 -f 543/226/88 572/224/88 579/224/88 -f 580/225/89 578/224/89 544/224/89 -f 544/224/89 543/226/89 580/225/89 -f 574/214/79 581/227/79 579/228/79 -f 579/228/79 577/213/79 574/214/79 -f 581/229/75 574/220/75 573/219/75 -f 573/219/75 582/221/75 581/229/75 -f 552/206/73 551/205/73 583/230/73 -f 583/230/73 584/223/73 552/206/73 -f 583/227/77 551/214/77 565/213/77 -f 565/213/77 578/228/77 583/227/77 -f 547/201/73 546/200/73 585/199/73 -f 585/199/73 586/202/73 547/201/73 -f 583/231/90 578/224/90 563/232/90 -f 563/232/90 562/233/90 583/231/90 -f 578/224/89 580/225/89 570/234/89 -f 570/234/89 563/232/89 578/224/89 -f 580/225/88 579/224/88 568/232/88 -f 568/232/88 570/234/88 580/225/88 -f 579/224/92 581/231/92 566/233/92 -f 566/233/92 568/232/92 579/224/92 -f 555/200/75 554/201/75 587/202/75 -f 587/202/75 588/199/75 555/200/75 -f 559/208/76 558/207/76 569/235/76 -f 569/235/76 567/236/76 559/208/76 -f 558/207/83 576/208/83 561/236/83 -f 561/236/83 569/235/83 558/207/83 -f 584/236/27 583/231/27 546/237/27 -f 546/237/27 545/238/27 584/236/27 -f 583/231/27 562/233/27 585/239/27 -f 585/239/27 546/237/27 583/231/27 -f 562/210/94 561/209/94 586/240/94 -f 586/240/94 585/241/94 562/210/94 -f 561/236/26 576/208/26 547/242/26 -f 547/242/26 586/238/26 561/236/26 -f 576/208/26 575/209/26 548/240/26 -f 548/240/26 547/242/26 576/208/26 -f 560/209/26 559/208/26 554/242/26 -f 554/242/26 553/240/26 560/209/26 -f 559/208/26 567/236/26 587/238/26 -f 587/238/26 554/242/26 559/208/26 -f 567/209/95 566/210/95 588/241/95 -f 588/241/95 587/240/95 567/209/95 -f 566/233/27 581/231/27 555/237/27 -f 555/237/27 588/239/27 566/233/27 -f 581/231/27 582/236/27 556/238/27 -f 556/238/27 555/237/27 581/231/27 -f 589/243/187 590/244/187 591/245/187 -f 591/245/187 592/246/187 589/243/187 -f 589/247/163 592/248/163 593/249/163 -f 593/249/163 594/250/163 589/247/163 -f 592/246/188 591/245/188 595/251/189 -f 595/251/189 593/252/188 592/246/188 -f 591/248/161 590/247/161 596/250/161 -f 596/250/161 595/249/161 591/248/161 -f 597/253/13 598/254/13 599/255/13 -f 599/255/13 600/256/13 597/253/13 -f 601/257/14 597/253/14 600/256/14 -f 600/256/14 602/258/14 601/257/14 -f 603/259/118 601/257/118 602/258/118 -f 602/258/118 604/260/15 603/259/118 -f 605/261/16 603/262/16 604/263/16 -f 604/263/16 606/264/16 605/261/16 -f 607/265/17 605/261/17 606/264/17 -f 606/264/17 608/266/17 607/265/17 -f 609/267/18 607/265/18 608/266/18 -f 608/266/18 610/268/18 609/267/18 -f 611/269/190 609/267/19 610/268/19 -f 610/268/19 612/270/190 611/269/190 -f 613/271/20 611/269/20 612/270/20 -f 612/270/20 614/272/20 613/271/20 -f 615/273/21 613/271/21 614/272/21 -f 614/272/21 616/274/21 615/273/21 -f 617/275/191 615/273/191 616/274/22 -f 616/274/22 618/276/191 617/275/191 -f 619/277/23 617/275/23 618/276/23 -f 618/276/23 620/278/23 619/277/23 -f 598/254/24 619/277/25 620/278/25 -f 620/278/25 599/255/24 598/254/24 -f 600/279/27 599/280/27 621/281/27 -f 621/281/27 622/282/27 600/279/27 -f 623/283/27 624/279/27 625/282/27 -f 625/282/27 626/284/27 623/283/27 -f 604/285/27 602/283/27 627/284/27 -f 627/284/27 628/285/27 604/285/27 -f 629/286/27 630/285/27 631/285/27 -f 631/285/27 632/287/27 629/286/27 -f 608/288/27 606/286/27 633/287/27 -f 633/287/27 634/289/27 608/288/27 -f 635/290/27 636/288/27 637/289/27 -f 637/289/27 638/291/27 635/290/27 -f 612/292/27 610/290/27 639/291/27 -f 639/291/27 640/293/27 612/292/27 -f 641/294/27 642/292/27 643/293/27 -f 643/293/27 644/295/27 641/294/27 -f 616/296/27 614/294/27 645/295/27 -f 645/295/27 646/297/27 616/296/27 -f 647/298/27 648/296/27 649/297/27 -f 649/297/27 650/299/27 647/298/27 -f 620/300/27 618/298/27 651/299/27 -f 651/299/27 652/300/27 620/300/27 -f 653/280/27 654/300/27 655/300/27 -f 655/300/27 656/281/27 653/280/27 -f 622/301/19 621/302/19 657/303/19 -f 657/303/19 658/304/19 622/301/19 -f 627/305/20 622/301/20 658/304/20 -f 658/304/20 659/306/20 627/305/20 -f 628/307/21 627/305/21 659/306/21 -f 659/306/21 660/308/21 628/307/21 -f 633/309/22 628/307/22 660/308/22 -f 660/308/22 661/310/22 633/309/22 -f 634/311/23 633/309/23 661/310/23 -f 661/310/23 662/312/23 634/311/23 -f 639/313/24 634/311/24 662/312/24 -f 662/312/24 663/314/24 639/313/24 -f 640/315/192 639/313/13 663/314/13 -f 663/314/13 664/316/192 640/315/192 -f 645/317/14 640/315/14 664/316/14 -f 664/316/14 665/318/14 645/317/14 -f 646/319/15 645/317/15 665/318/15 -f 665/318/15 666/320/15 646/319/15 -f 651/321/16 646/322/16 666/323/193 -f 666/323/193 667/324/16 651/321/16 -f 652/325/17 651/321/17 667/324/17 -f 667/324/17 668/326/17 652/325/17 -f 621/302/18 652/325/194 668/326/194 -f 668/326/194 657/303/18 621/302/18 -f 658/327/27 657/328/27 669/329/27 -f 659/330/27 658/327/27 669/329/27 -f 660/331/27 659/330/27 669/329/27 -f 661/332/27 660/331/27 669/329/27 -f 662/333/27 661/332/27 669/329/27 -f 663/334/27 662/333/27 669/329/27 -f 664/335/27 663/334/27 669/329/27 -f 665/336/27 664/335/27 669/329/27 -f 666/337/27 665/336/27 669/329/27 -f 667/338/27 666/337/27 669/329/27 -f 668/339/27 667/338/27 669/329/27 -f 657/328/27 668/339/27 669/329/27 -f 602/258/14 600/256/14 624/340/14 -f 624/340/14 623/341/14 602/258/14 -f 600/279/161 622/282/161 625/282/161 -f 625/282/161 624/279/161 600/279/161 -f 622/301/20 627/305/20 626/342/20 -f 626/342/20 625/343/20 622/301/20 -f 627/284/195 602/283/195 623/283/195 -f 623/283/195 626/284/195 627/284/195 -f 606/264/16 604/263/16 630/344/193 -f 630/344/193 629/345/16 606/264/16 -f 604/285/1 628/285/1 631/285/1 -f 631/285/1 630/285/1 604/285/1 -f 628/307/22 633/309/22 632/346/22 -f 632/346/22 631/347/22 628/307/22 -f 633/287/196 606/286/196 629/286/196 -f 629/286/196 632/287/196 633/287/196 -f 610/268/18 608/266/18 636/348/18 -f 636/348/18 635/349/18 610/268/18 -f 608/288/153 634/289/153 637/289/153 -f 637/289/153 636/288/153 608/288/153 -f 634/311/24 639/313/24 638/350/24 -f 638/350/24 637/351/24 634/311/24 -f 639/291/10 610/290/10 635/290/10 -f 635/290/10 638/291/10 639/291/10 -f 614/272/20 612/270/20 642/352/20 -f 642/352/20 641/353/20 614/272/20 -f 612/292/163 640/293/163 643/293/163 -f 643/293/163 642/292/163 612/292/163 -f 640/315/14 645/317/14 644/354/14 -f 644/354/14 643/355/14 640/315/14 -f 645/295/197 614/294/197 641/294/197 -f 641/294/197 644/295/197 645/295/197 -f 618/276/191 616/274/22 648/356/22 -f 648/356/22 647/357/22 618/276/191 -f 616/296/7 646/297/7 649/297/7 -f 649/297/7 648/296/7 616/296/7 -f 646/322/16 651/321/16 650/358/16 -f 650/358/16 649/359/16 646/322/16 -f 651/299/198 618/298/198 647/298/198 -f 647/298/198 650/299/198 651/299/198 -f 599/255/24 620/278/25 654/360/24 -f 654/360/24 653/361/24 599/255/24 -f 620/300/151 652/300/151 655/300/151 -f 655/300/151 654/300/151 620/300/151 -f 652/325/194 621/302/18 656/362/18 -f 656/362/18 655/363/194 652/325/194 -f 621/281/4 599/280/4 653/280/4 -f 653/280/4 656/281/4 621/281/4 -f 670/364/199 671/365/199 672/366/199 -f 672/366/199 673/367/199 670/364/199 -f 671/368/200 674/369/200 675/370/200 -f 675/370/200 672/371/200 671/368/200 -f 674/365/201 676/364/201 677/367/201 -f 677/367/201 675/366/201 674/365/201 -f 676/372/202 670/373/202 673/374/202 -f 673/374/202 677/375/202 676/372/202 -f 678/376/7 679/377/7 680/378/7 -f 680/378/7 681/379/7 678/376/7 -f 679/380/4 682/381/4 683/382/4 -f 683/382/4 680/383/4 679/380/4 -f 684/384/1 685/385/1 686/386/1 -f 686/386/1 687/387/1 684/384/1 -f 688/388/10 678/389/10 681/390/10 -f 681/390/10 689/391/10 688/388/10 -f 676/392/26 674/393/26 683/394/26 -f 683/394/26 689/395/26 676/392/26 -f 683/394/26 674/393/26 671/396/26 -f 671/396/26 680/397/26 683/394/26 -f 680/397/26 671/396/26 670/398/26 -f 670/398/26 681/399/26 680/397/26 -f 681/399/26 670/398/26 676/392/26 -f 676/392/26 689/395/26 681/399/26 -f 673/400/27 672/401/27 690/402/27 -f 690/402/27 691/403/27 673/400/27 -f 672/401/27 675/404/27 692/405/27 -f 692/405/27 690/402/27 672/401/27 -f 675/404/27 677/406/27 693/407/27 -f 693/407/27 692/405/27 675/404/27 -f 677/406/27 673/400/27 691/403/27 -f 691/403/27 693/407/27 677/406/27 -f 688/408/1 689/409/1 694/410/1 -f 694/410/1 695/411/1 688/408/1 -f 689/409/1 683/412/1 696/413/1 -f 696/413/1 694/410/1 689/409/1 -f 683/412/1 682/414/1 697/415/1 -f 697/415/1 696/413/1 683/412/1 -f 695/416/10 694/417/10 686/418/10 -f 686/418/10 685/419/10 695/416/10 -f 694/420/27 696/421/27 687/422/27 -f 687/422/27 686/423/27 694/420/27 -f 696/417/4 697/416/4 684/419/4 -f 684/419/4 687/418/4 696/417/4 -f 698/243/150 699/246/150 700/245/150 -f 700/245/150 701/244/150 698/243/150 -f 698/247/153 702/250/153 703/249/153 -f 703/249/153 699/248/153 698/247/153 -f 699/246/152 703/252/152 704/251/152 -f 704/251/152 700/245/152 699/246/152 -f 700/248/151 704/249/151 705/250/151 -f 705/250/151 701/247/151 700/248/151 -f 706/424/203 707/425/204 708/426/205 -f 708/426/205 709/427/27 706/424/203 -f 710/428/1 711/429/1 707/429/1 -f 707/429/1 706/428/1 710/428/1 -f 712/430/206 708/430/206 707/431/206 -f 707/431/206 711/431/206 712/430/206 -f 706/424/203 709/427/27 713/426/207 -f 713/426/207 714/425/208 706/424/203 -f 710/428/1 706/428/1 714/432/1 -f 714/432/1 715/432/1 710/428/1 -f 714/431/209 713/430/209 716/430/209 -f 716/430/209 715/431/209 714/431/209 -f 717/433/210 709/427/27 708/426/205 -f 708/426/205 718/434/211 717/433/210 -f 719/428/7 717/428/7 718/429/7 -f 718/429/7 720/429/7 719/428/7 -f 718/435/212 708/430/212 712/430/212 -f 712/430/212 720/435/212 718/435/212 -f 717/433/210 721/434/213 713/426/207 -f 713/426/207 709/427/27 717/433/210 -f 719/428/7 722/432/7 721/432/7 -f 721/432/7 717/428/7 719/428/7 -f 716/430/214 713/430/214 721/435/214 -f 721/435/214 722/435/214 716/430/214 -f 723/436/4 724/437/4 725/438/4 -f 725/438/4 726/439/4 723/436/4 -f 724/437/215 723/436/215 727/440/215 -f 727/440/215 728/441/215 724/437/215 -f 723/436/216 726/439/216 729/440/216 -f 729/440/216 727/440/216 723/436/216 -f 730/442/217 728/441/217 727/440/217 -f 727/440/217 731/443/217 730/442/217 -f 732/444/216 731/443/216 727/440/216 -f 727/440/216 729/445/216 732/444/216 -f 733/446/10 734/447/10 735/448/10 -f 735/448/10 736/449/10 733/446/10 -f 734/447/218 737/442/218 738/443/218 -f 738/443/218 735/448/218 734/447/218 -f 735/448/219 738/443/219 739/450/219 -f 739/450/219 736/449/219 735/448/219 -f 738/443/220 737/442/220 730/442/220 -f 730/442/220 731/443/220 738/443/220 -f 732/444/219 739/444/219 738/443/219 -f 738/443/219 731/443/219 732/444/219 -f 740/436/4 741/437/4 742/438/4 -f 742/438/4 743/439/4 740/436/4 -f 741/437/221 740/436/221 744/440/221 -f 744/440/221 745/441/221 741/437/221 -f 740/436/222 743/439/222 746/440/222 -f 746/440/222 744/440/222 740/436/222 -f 747/442/223 745/441/223 744/440/223 -f 744/440/223 748/443/223 747/442/223 -f 749/444/222 748/443/222 744/440/222 -f 744/440/222 746/445/222 749/444/222 -f 750/446/10 751/447/10 752/448/10 -f 752/448/10 753/449/10 750/446/10 -f 751/447/224 754/442/224 755/443/224 -f 755/443/224 752/448/224 751/447/224 -f 752/448/222 755/443/222 756/450/222 -f 756/450/222 753/449/222 752/448/222 -f 755/443/225 754/442/225 747/442/225 -f 747/442/225 748/443/225 755/443/225 -f 749/444/222 756/444/222 755/443/222 -f 755/443/222 748/443/222 749/444/222 -f 757/436/4 758/437/4 759/438/4 -f 759/438/4 760/439/4 757/436/4 -f 758/437/226 757/436/226 761/440/226 -f 761/440/226 762/441/227 758/437/226 -f 757/436/228 760/439/228 763/440/229 -f 763/440/229 761/440/229 757/436/228 -f 764/442/230 762/441/230 761/440/230 -f 761/440/230 765/443/230 764/442/230 -f 766/444/228 765/443/228 761/440/228 -f 761/440/228 763/445/228 766/444/228 -f 767/446/10 768/447/10 769/448/10 -f 769/448/10 770/449/10 767/446/10 -f 768/447/231 771/442/232 772/443/231 -f 772/443/231 769/448/232 768/447/231 -f 769/448/229 772/443/229 773/450/229 -f 773/450/229 770/449/229 769/448/229 -f 772/443/233 771/442/233 764/442/233 -f 764/442/233 765/443/233 772/443/233 -f 766/444/229 773/444/229 772/443/229 -f 772/443/229 765/443/229 766/444/229 -f 774/436/4 775/437/4 776/438/4 -f 776/438/4 777/439/4 774/436/4 -f 775/437/226 774/436/227 778/440/227 -f 778/440/227 779/441/227 775/437/226 -f 774/436/229 777/439/229 780/440/229 -f 780/440/229 778/440/229 774/436/229 -f 781/442/230 779/441/230 778/440/230 -f 778/440/230 782/443/230 781/442/230 -f 783/444/229 782/443/229 778/440/229 -f 778/440/229 780/445/229 783/444/229 -f 784/446/10 785/447/10 786/448/10 -f 786/448/10 787/449/10 784/446/10 -f 785/447/231 788/442/232 789/443/232 -f 789/443/232 786/448/231 785/447/231 -f 786/448/228 789/443/229 790/450/229 -f 790/450/229 787/449/228 786/448/228 -f 789/443/233 788/442/233 781/442/233 -f 781/442/233 782/443/233 789/443/233 -f 783/444/229 790/444/229 789/443/229 -f 789/443/229 782/443/229 783/444/229 -f 791/436/4 792/437/4 793/438/4 -f 793/438/4 794/439/4 791/436/4 -f 792/437/234 791/436/234 795/440/234 -f 795/440/234 796/441/234 792/437/234 -f 791/436/235 794/439/235 797/440/235 -f 797/440/235 795/440/235 791/436/235 -f 798/442/236 796/441/236 795/440/236 -f 795/440/236 799/443/236 798/442/236 -f 800/444/235 799/443/235 795/440/235 -f 795/440/235 797/445/235 800/444/235 -f 801/446/10 802/447/10 803/448/10 -f 803/448/10 804/449/10 801/446/10 -f 802/447/237 805/442/237 806/443/237 -f 806/443/237 803/448/237 802/447/237 -f 803/448/235 806/443/235 807/450/235 -f 807/450/235 804/449/235 803/448/235 -f 806/443/238 805/442/238 798/442/238 -f 798/442/238 799/443/238 806/443/238 -f 800/444/239 807/444/239 806/443/239 -f 806/443/239 799/443/239 800/444/239 -f 808/436/4 809/437/4 810/438/4 -f 810/438/4 811/439/4 808/436/4 -f 809/437/240 808/436/240 812/440/240 -f 812/440/240 813/441/240 809/437/240 -f 808/436/241 811/439/241 814/440/241 -f 814/440/241 812/440/241 808/436/241 -f 815/442/236 813/441/236 812/440/236 -f 812/440/236 816/443/236 815/442/236 -f 817/444/241 816/443/241 812/440/241 -f 812/440/241 814/445/241 817/444/241 -f 818/446/10 819/447/10 820/448/10 -f 820/448/10 821/449/10 818/446/10 -f 819/447/242 822/442/242 823/443/242 -f 823/443/242 820/448/242 819/447/242 -f 820/448/243 823/443/241 824/450/241 -f 824/450/241 821/449/243 820/448/243 -f 823/443/238 822/442/238 815/442/238 -f 815/442/238 816/443/238 823/443/238 -f 817/444/241 824/444/241 823/443/241 -f 823/443/241 816/443/241 817/444/241 -f 825/436/4 826/437/4 827/438/4 -f 827/438/4 828/439/4 825/436/4 -f 826/437/215 825/436/215 829/440/215 -f 829/440/215 830/441/215 826/437/215 -f 825/436/216 828/439/216 831/440/216 -f 831/440/216 829/440/216 825/436/216 -f 832/442/217 830/441/217 829/440/217 -f 829/440/217 833/443/217 832/442/217 -f 834/444/216 833/443/216 829/440/216 -f 829/440/216 831/445/216 834/444/216 -f 835/446/10 836/447/10 837/448/10 -f 837/448/10 838/449/10 835/446/10 -f 836/447/218 839/442/218 840/443/218 -f 840/443/218 837/448/218 836/447/218 -f 837/448/219 840/443/219 841/450/219 -f 841/450/219 838/449/219 837/448/219 -f 840/443/220 839/442/220 832/442/220 -f 832/442/220 833/443/220 840/443/220 -f 834/444/219 841/444/219 840/443/219 -f 840/443/219 833/443/219 834/444/219 -f 842/436/4 843/437/4 844/438/4 -f 844/438/4 845/439/4 842/436/4 -f 843/437/215 842/436/215 846/440/215 -f 846/440/215 847/441/215 843/437/215 -f 842/436/216 845/439/216 848/440/216 -f 848/440/216 846/440/216 842/436/216 -f 849/442/217 847/441/217 846/440/217 -f 846/440/217 850/443/217 849/442/217 -f 851/444/216 850/443/216 846/440/216 -f 846/440/216 848/445/216 851/444/216 -f 852/446/10 853/447/10 854/448/10 -f 854/448/10 855/449/10 852/446/10 -f 853/447/218 856/442/218 857/443/218 -f 857/443/218 854/448/218 853/447/218 -f 854/448/219 857/443/219 858/450/219 -f 858/450/219 855/449/219 854/448/219 -f 857/443/220 856/442/220 849/442/220 -f 849/442/220 850/443/220 857/443/220 -f 851/444/219 858/444/219 857/443/219 -f 857/443/219 850/443/219 851/444/219 -f 859/438/4 860/437/4 861/436/4 -f 861/436/4 862/439/4 859/438/4 -f 863/440/244 861/436/244 860/437/244 -f 860/437/244 864/441/244 863/440/244 -f 865/440/245 862/439/245 861/436/245 -f 861/436/245 863/440/245 865/440/245 -f 863/440/246 864/441/246 866/442/246 -f 866/442/246 867/443/246 863/440/246 -f 868/444/245 865/445/245 863/440/245 -f 863/440/245 867/443/245 868/444/245 -f 869/448/10 870/447/10 871/446/10 -f 871/446/10 872/449/10 869/448/10 -f 873/443/247 874/442/247 870/447/247 -f 870/447/247 869/448/247 873/443/247 -f 875/450/248 873/443/248 869/448/248 -f 869/448/248 872/449/248 875/450/248 -f 866/442/249 874/442/249 873/443/249 -f 873/443/249 867/443/249 866/442/249 -f 868/444/248 867/443/248 873/443/248 -f 873/443/248 875/444/248 868/444/248 -f 876/438/4 877/437/4 878/436/4 -f 878/436/4 879/439/4 876/438/4 -f 880/440/250 878/436/250 877/437/250 -f 877/437/250 881/441/250 880/440/250 -f 882/440/251 879/439/251 878/436/251 -f 878/436/251 880/440/251 882/440/251 -f 880/440/252 881/441/252 883/442/252 -f 883/442/252 884/443/252 880/440/252 -f 885/444/251 882/445/251 880/440/251 -f 880/440/251 884/443/251 885/444/251 -f 886/448/10 887/447/10 888/446/10 -f 888/446/10 889/449/10 886/448/10 -f 890/443/253 891/442/253 887/447/253 -f 887/447/253 886/448/253 890/443/253 -f 892/450/251 890/443/251 886/448/254 -f 886/448/254 889/449/254 892/450/251 -f 883/442/255 891/442/255 890/443/255 -f 890/443/255 884/443/255 883/442/255 -f 885/444/251 884/443/251 890/443/251 -f 890/443/251 892/444/251 885/444/251 -f 893/438/4 894/437/4 895/436/4 -f 895/436/4 896/439/4 893/438/4 -f 897/440/256 895/436/257 894/437/256 -f 894/437/256 898/441/256 897/440/256 -f 899/440/258 896/439/258 895/436/258 -f 895/436/258 897/440/258 899/440/258 -f 897/440/259 898/441/259 900/442/259 -f 900/442/259 901/443/259 897/440/259 -f 902/444/258 899/445/258 897/440/258 -f 897/440/258 901/443/258 902/444/258 -f 903/448/10 904/447/10 905/446/10 -f 905/446/10 906/449/10 903/448/10 -f 907/443/260 908/442/260 904/447/260 -f 904/447/260 903/448/260 907/443/260 -f 909/450/261 907/443/261 903/448/261 -f 903/448/261 906/449/261 909/450/261 -f 900/442/262 908/442/262 907/443/262 -f 907/443/262 901/443/262 900/442/262 -f 902/444/261 901/443/261 907/443/261 -f 907/443/261 909/444/261 902/444/261 -f 910/438/4 911/437/4 912/436/4 -f 912/436/4 913/439/4 910/438/4 -f 914/440/257 912/436/257 911/437/257 -f 911/437/257 915/441/256 914/440/257 -f 916/440/261 913/439/261 912/436/261 -f 912/436/261 914/440/261 916/440/261 -f 914/440/259 915/441/259 917/442/259 -f 917/442/259 918/443/259 914/440/259 -f 919/444/261 916/445/261 914/440/261 -f 914/440/261 918/443/261 919/444/261 -f 920/448/10 921/447/10 922/446/10 -f 922/446/10 923/449/10 920/448/10 -f 924/443/263 925/442/260 921/447/263 -f 921/447/263 920/448/263 924/443/263 -f 926/450/258 924/443/258 920/448/261 -f 920/448/261 923/449/261 926/450/258 -f 917/442/262 925/442/262 924/443/262 -f 924/443/262 918/443/262 917/442/262 -f 919/444/261 918/443/261 924/443/261 -f 924/443/261 926/444/261 919/444/261 -f 927/438/4 928/437/4 929/436/4 -f 929/436/4 930/439/4 927/438/4 -f 931/440/264 929/436/264 928/437/264 -f 928/437/264 932/441/264 931/440/264 -f 933/440/265 930/439/265 929/436/265 -f 929/436/265 931/440/265 933/440/265 -f 931/440/266 932/441/266 934/442/266 -f 934/442/266 935/443/266 931/440/266 -f 936/444/265 933/445/265 931/440/265 -f 931/440/265 935/443/265 936/444/265 -f 937/448/10 938/447/10 939/446/10 -f 939/446/10 940/449/10 937/448/10 -f 941/443/267 942/442/267 938/447/267 -f 938/447/267 937/448/267 941/443/267 -f 943/450/265 941/443/265 937/448/265 -f 937/448/265 940/449/265 943/450/265 -f 934/442/268 942/442/268 941/443/268 -f 941/443/268 935/443/268 934/442/268 -f 936/444/269 935/443/269 941/443/269 -f 941/443/269 943/444/269 936/444/269 -f 944/438/4 945/437/4 946/436/4 -f 946/436/4 947/439/4 944/438/4 -f 948/440/270 946/436/270 945/437/270 -f 945/437/270 949/441/270 948/440/270 -f 950/440/271 947/439/271 946/436/271 -f 946/436/271 948/440/271 950/440/271 -f 948/440/266 949/441/266 951/442/266 -f 951/442/266 952/443/266 948/440/266 -f 953/444/271 950/445/271 948/440/271 -f 948/440/271 952/443/271 953/444/271 -f 954/448/10 955/447/10 956/446/10 -f 956/446/10 957/449/10 954/448/10 -f 958/443/272 959/442/272 955/447/272 -f 955/447/272 954/448/272 958/443/272 -f 960/450/271 958/443/271 954/448/273 -f 954/448/273 957/449/273 960/450/271 -f 951/442/268 959/442/268 958/443/268 -f 958/443/268 952/443/268 951/442/268 -f 953/444/271 952/443/271 958/443/271 -f 958/443/271 960/444/271 953/444/271 -f 961/438/4 962/437/4 963/436/4 -f 963/436/4 964/439/4 961/438/4 -f 965/440/244 963/436/244 962/437/244 -f 962/437/244 966/441/244 965/440/244 -f 967/440/245 964/439/245 963/436/245 -f 963/436/245 965/440/245 967/440/245 -f 965/440/246 966/441/246 968/442/274 -f 968/442/274 969/443/246 965/440/246 -f 970/444/245 967/445/245 965/440/245 -f 965/440/245 969/443/245 970/444/245 -f 971/448/10 972/447/10 973/446/10 -f 973/446/10 974/449/10 971/448/10 -f 975/443/247 976/442/247 972/447/247 -f 972/447/247 971/448/247 975/443/247 -f 977/450/248 975/443/248 971/448/248 -f 971/448/248 974/449/248 977/450/248 -f 968/442/275 976/442/249 975/443/249 -f 975/443/249 969/443/249 968/442/275 -f 970/444/248 969/443/248 975/443/248 -f 975/443/248 977/444/248 970/444/248 -f 978/438/4 979/437/4 980/436/4 -f 980/436/4 981/439/4 978/438/4 -f 982/440/244 980/436/244 979/437/244 -f 979/437/244 983/441/244 982/440/244 -f 984/440/245 981/439/245 980/436/245 -f 980/436/245 982/440/245 984/440/245 -f 982/440/246 983/441/246 985/442/246 -f 985/442/246 986/443/246 982/440/246 -f 987/444/245 984/445/245 982/440/245 -f 982/440/245 986/443/245 987/444/245 -f 988/448/10 989/447/10 990/446/10 -f 990/446/10 991/449/10 988/448/10 -f 992/443/247 993/442/247 989/447/247 -f 989/447/247 988/448/247 992/443/247 -f 994/450/248 992/443/248 988/448/248 -f 988/448/248 991/449/248 994/450/248 -f 985/442/249 993/442/249 992/443/249 -f 992/443/249 986/443/249 985/442/249 -f 987/444/248 986/443/248 992/443/248 -f 992/443/248 994/444/248 987/444/248 -f 995/436/4 996/437/4 997/438/4 -f 997/438/4 998/439/4 995/436/4 -f 996/437/276 995/436/276 999/440/276 -f 999/440/276 1000/441/276 996/437/276 -f 995/436/277 998/439/277 1001/440/278 -f 1001/440/278 999/440/278 995/436/277 -f 1002/442/279 1000/441/279 999/440/279 -f 999/440/279 1003/443/279 1002/442/279 -f 1004/444/277 1003/443/277 999/440/277 -f 999/440/277 1001/445/277 1004/444/277 -f 1005/446/10 1006/447/10 1007/448/10 -f 1007/448/10 1008/449/10 1005/446/10 -f 1006/447/280 1009/442/280 1010/443/280 -f 1010/443/280 1007/448/280 1006/447/280 -f 1007/448/278 1010/443/278 1011/450/278 -f 1011/450/278 1008/449/278 1007/448/278 -f 1010/443/281 1009/442/281 1002/442/281 -f 1002/442/281 1003/443/281 1010/443/281 -f 1004/444/278 1011/444/278 1010/443/278 -f 1010/443/278 1003/443/278 1004/444/278 -f 1012/438/4 1013/437/4 1014/436/4 -f 1014/436/4 1015/439/4 1012/438/4 -f 1016/440/282 1014/436/282 1013/437/282 -f 1013/437/282 1017/441/282 1016/440/282 -f 1018/440/283 1015/439/283 1014/436/283 -f 1014/436/283 1016/440/283 1018/440/283 -f 1016/440/284 1017/441/284 1019/442/284 -f 1019/442/284 1020/443/284 1016/440/284 -f 1021/444/283 1018/445/283 1016/440/283 -f 1016/440/283 1020/443/283 1021/444/283 -f 1022/448/10 1023/447/10 1024/446/10 -f 1024/446/10 1025/449/10 1022/448/10 -f 1026/443/285 1027/442/285 1023/447/285 -f 1023/447/285 1022/448/285 1026/443/285 -f 1028/450/286 1026/443/286 1022/448/286 -f 1022/448/286 1025/449/286 1028/450/286 -f 1019/442/287 1027/442/287 1026/443/287 -f 1026/443/287 1020/443/287 1019/442/287 -f 1021/444/286 1020/443/286 1026/443/286 -f 1026/443/286 1028/444/286 1021/444/286 -f 1029/243/187 1030/244/187 1031/245/187 -f 1031/245/187 1032/246/187 1029/243/187 -f 1029/247/163 1032/248/163 1033/249/163 -f 1033/249/163 1034/250/163 1029/247/163 -f 1032/246/188 1031/245/188 1035/251/188 -f 1035/251/188 1033/252/188 1032/246/188 -f 1031/248/161 1030/247/161 1036/250/161 -f 1036/250/161 1035/249/161 1031/248/161 -f 1037/451/27 1038/452/27 1039/453/27 -f 1039/453/27 1040/454/27 1037/451/27 -f 1041/455/7 1042/456/7 1038/457/7 -f 1038/457/7 1037/458/7 1041/455/7 -f 1042/459/4 1043/460/4 1039/461/4 -f 1039/461/4 1038/462/4 1042/459/4 -f 1043/456/1 1044/455/1 1040/458/1 -f 1040/458/1 1039/457/1 1043/456/1 -f 1044/460/10 1041/459/10 1037/462/10 -f 1037/462/10 1040/461/10 1044/460/10 -f 1045/451/27 1046/452/27 1047/453/27 -f 1047/453/27 1048/454/27 1045/451/27 -f 1049/455/7 1050/456/7 1046/457/7 -f 1046/457/7 1045/458/7 1049/455/7 -f 1050/459/4 1051/460/4 1047/461/4 -f 1047/461/4 1046/462/4 1050/459/4 -f 1051/456/1 1052/455/1 1048/458/1 -f 1048/458/1 1047/457/1 1051/456/1 -f 1052/460/10 1049/459/10 1045/462/10 -f 1045/462/10 1048/461/10 1052/460/10 -f 1053/451/27 1054/452/27 1055/453/27 -f 1055/453/27 1056/454/27 1053/451/27 -f 1057/455/7 1058/456/7 1054/457/7 -f 1054/457/7 1053/458/7 1057/455/7 -f 1058/459/4 1059/460/4 1055/461/4 -f 1055/461/4 1054/462/4 1058/459/4 -f 1059/456/1 1060/455/1 1056/458/1 -f 1056/458/1 1055/457/1 1059/456/1 -f 1060/460/10 1057/459/10 1053/462/10 -f 1053/462/10 1056/461/10 1060/460/10 -f 1061/451/27 1062/452/27 1063/453/27 -f 1063/453/27 1064/454/27 1061/451/27 -f 1065/455/10 1066/456/10 1062/457/10 -f 1062/457/10 1061/458/10 1065/455/10 -f 1066/459/7 1067/460/7 1063/461/7 -f 1063/461/7 1062/462/7 1066/459/7 -f 1067/456/4 1068/455/4 1064/458/4 -f 1064/458/4 1063/457/4 1067/456/4 -f 1068/460/1 1065/459/1 1061/462/1 -f 1061/462/1 1064/461/1 1068/460/1 -f 1069/451/27 1070/452/27 1071/453/27 -f 1071/453/27 1072/454/27 1069/451/27 -f 1073/455/10 1074/456/10 1070/457/10 -f 1070/457/10 1069/458/10 1073/455/10 -f 1074/459/7 1075/460/7 1071/461/7 -f 1071/461/7 1070/462/7 1074/459/7 -f 1075/456/4 1076/455/4 1072/458/4 -f 1072/458/4 1071/457/4 1075/456/4 -f 1076/460/1 1073/459/1 1069/462/1 -f 1069/462/1 1072/461/1 1076/460/1 -f 1077/451/27 1078/452/27 1079/453/27 -f 1079/453/27 1080/454/27 1077/451/27 -f 1081/455/10 1082/456/10 1078/457/10 -f 1078/457/10 1077/458/10 1081/455/10 -f 1082/459/7 1083/460/7 1079/461/7 -f 1079/461/7 1078/462/7 1082/459/7 -f 1083/456/4 1084/455/4 1080/458/4 -f 1080/458/4 1079/457/4 1083/456/4 -f 1084/460/1 1081/459/1 1077/462/1 -f 1077/462/1 1080/461/1 1084/460/1 -f 1085/451/27 1086/452/27 1087/453/27 -f 1087/453/27 1088/454/27 1085/451/27 -f 1089/455/10 1090/456/10 1086/457/10 -f 1086/457/10 1085/458/10 1089/455/10 -f 1090/459/7 1091/460/7 1087/461/7 -f 1087/461/7 1086/462/7 1090/459/7 -f 1091/456/4 1092/455/4 1088/458/4 -f 1088/458/4 1087/457/4 1091/456/4 -f 1092/460/1 1089/459/1 1085/462/1 -f 1085/462/1 1088/461/1 1092/460/1 -f 1093/451/27 1094/452/27 1095/453/27 -f 1095/453/27 1096/454/27 1093/451/27 -f 1097/455/7 1098/456/7 1094/457/7 -f 1094/457/7 1093/458/7 1097/455/7 -f 1098/459/4 1099/460/4 1095/461/4 -f 1095/461/4 1094/462/4 1098/459/4 -f 1099/456/1 1100/455/1 1096/458/1 -f 1096/458/1 1095/457/1 1099/456/1 -f 1100/460/10 1097/459/10 1093/462/10 -f 1093/462/10 1096/461/10 1100/460/10 -f 1101/451/27 1102/452/27 1103/453/27 -f 1103/453/27 1104/454/27 1101/451/27 -f 1105/455/7 1106/456/7 1102/457/7 -f 1102/457/7 1101/458/7 1105/455/7 -f 1106/459/4 1107/460/4 1103/461/4 -f 1103/461/4 1102/462/4 1106/459/4 -f 1107/456/1 1108/455/1 1104/458/1 -f 1104/458/1 1103/457/1 1107/456/1 -f 1108/460/10 1105/459/10 1101/462/10 -f 1101/462/10 1104/461/10 1108/460/10 -f 1109/451/27 1110/452/27 1111/453/27 -f 1111/453/27 1112/454/27 1109/451/27 -f 1113/455/7 1114/456/7 1110/457/7 -f 1110/457/7 1109/458/7 1113/455/7 -f 1114/459/4 1115/460/4 1111/461/4 -f 1111/461/4 1110/462/4 1114/459/4 -f 1115/456/1 1116/455/1 1112/458/1 -f 1112/458/1 1111/457/1 1115/456/1 -f 1116/460/10 1113/459/10 1109/462/10 -f 1109/462/10 1112/461/10 1116/460/10 -f 1117/451/27 1118/452/27 1119/453/27 -f 1119/453/27 1120/454/27 1117/451/27 -f 1121/455/7 1122/456/7 1118/457/7 -f 1118/457/7 1117/458/7 1121/455/7 -f 1122/459/4 1123/460/4 1119/461/4 -f 1119/461/4 1118/462/4 1122/459/4 -f 1123/456/1 1124/455/1 1120/458/1 -f 1120/458/1 1119/457/1 1123/456/1 -f 1124/460/10 1121/459/10 1117/462/10 -f 1117/462/10 1120/461/10 1124/460/10 -f 1125/451/27 1126/452/27 1127/453/27 -f 1127/453/27 1128/454/27 1125/451/27 -f 1129/455/7 1130/456/7 1126/457/7 -f 1126/457/7 1125/458/7 1129/455/7 -f 1130/459/4 1131/460/4 1127/461/4 -f 1127/461/4 1126/462/4 1130/459/4 -f 1131/456/1 1132/455/1 1128/458/1 -f 1128/458/1 1127/457/1 1131/456/1 -f 1132/460/10 1129/459/10 1125/462/10 -f 1125/462/10 1128/461/10 1132/460/10 -f 1133/451/27 1134/452/27 1135/453/27 -f 1135/453/27 1136/454/27 1133/451/27 -f 1137/455/7 1138/456/7 1134/457/7 -f 1134/457/7 1133/458/7 1137/455/7 -f 1138/459/4 1139/460/4 1135/461/4 -f 1135/461/4 1134/462/4 1138/459/4 -f 1139/456/1 1140/455/1 1136/458/1 -f 1136/458/1 1135/457/1 1139/456/1 -f 1140/460/10 1137/459/10 1133/462/10 -f 1133/462/10 1136/461/10 1140/460/10 -f 1141/451/27 1142/452/27 1143/453/27 -f 1143/453/27 1144/454/27 1141/451/27 -f 1145/455/7 1146/456/7 1142/457/7 -f 1142/457/7 1141/458/7 1145/455/7 -f 1146/459/4 1147/460/4 1143/461/4 -f 1143/461/4 1142/462/4 1146/459/4 -f 1147/456/1 1148/455/1 1144/458/1 -f 1144/458/1 1143/457/1 1147/456/1 -f 1148/460/10 1145/459/10 1141/462/10 -f 1141/462/10 1144/461/10 1148/460/10 -f 1149/451/27 1150/452/27 1151/453/27 -f 1151/453/27 1152/454/27 1149/451/27 -f 1153/455/7 1154/456/7 1150/457/7 -f 1150/457/7 1149/458/7 1153/455/7 -f 1154/459/4 1155/460/4 1151/461/4 -f 1151/461/4 1150/462/4 1154/459/4 -f 1155/456/1 1156/455/1 1152/458/1 -f 1152/458/1 1151/457/1 1155/456/1 -f 1156/460/10 1153/459/10 1149/462/10 -f 1149/462/10 1152/461/10 1156/460/10 -f 1157/451/27 1158/452/27 1159/453/27 -f 1159/453/27 1160/454/27 1157/451/27 -f 1161/455/7 1162/456/7 1158/457/7 -f 1158/457/7 1157/458/7 1161/455/7 -f 1162/459/4 1163/460/4 1159/461/4 -f 1159/461/4 1158/462/4 1162/459/4 -f 1163/456/1 1164/455/1 1160/458/1 -f 1160/458/1 1159/457/1 1163/456/1 -f 1164/460/10 1161/459/10 1157/462/10 -f 1157/462/10 1160/461/10 1164/460/10 -f 1165/451/27 1166/452/27 1167/453/27 -f 1167/453/27 1168/454/27 1165/451/27 -f 1169/455/7 1170/456/7 1166/457/7 -f 1166/457/7 1165/458/7 1169/455/7 -f 1170/459/4 1171/460/4 1167/461/4 -f 1167/461/4 1166/462/4 1170/459/4 -f 1171/456/1 1172/455/1 1168/458/1 -f 1168/458/1 1167/457/1 1171/456/1 -f 1172/460/10 1169/459/10 1165/462/10 -f 1165/462/10 1168/461/10 1172/460/10 -f 1173/451/27 1174/452/27 1175/453/27 -f 1175/453/27 1176/454/27 1173/451/27 -f 1177/455/7 1178/456/7 1174/457/7 -f 1174/457/7 1173/458/7 1177/455/7 -f 1178/459/4 1179/460/4 1175/461/4 -f 1175/461/4 1174/462/4 1178/459/4 -f 1179/456/1 1180/455/1 1176/458/1 -f 1176/458/1 1175/457/1 1179/456/1 -f 1180/460/10 1177/459/10 1173/462/10 -f 1173/462/10 1176/461/10 1180/460/10 -f 1181/451/27 1182/452/27 1183/453/27 -f 1183/453/27 1184/454/27 1181/451/27 -f 1185/455/7 1186/456/7 1182/457/7 -f 1182/457/7 1181/458/7 1185/455/7 -f 1186/459/4 1187/460/4 1183/461/4 -f 1183/461/4 1182/462/4 1186/459/4 -f 1187/456/1 1188/455/1 1184/458/1 -f 1184/458/1 1183/457/1 1187/456/1 -f 1188/460/10 1185/459/10 1181/462/10 -f 1181/462/10 1184/461/10 1188/460/10 -f 1189/451/27 1190/452/27 1191/453/27 -f 1191/453/27 1192/454/27 1189/451/27 -f 1193/455/7 1194/456/7 1190/457/7 -f 1190/457/7 1189/458/7 1193/455/7 -f 1194/459/4 1195/460/4 1191/461/4 -f 1191/461/4 1190/462/4 1194/459/4 -f 1195/456/1 1196/455/1 1192/458/1 -f 1192/458/1 1191/457/1 1195/456/1 -f 1196/460/10 1193/459/10 1189/462/10 -f 1189/462/10 1192/461/10 1196/460/10 -f 1197/451/27 1198/452/27 1199/453/27 -f 1199/453/27 1200/454/27 1197/451/27 -f 1201/455/7 1202/456/7 1198/457/7 -f 1198/457/7 1197/458/7 1201/455/7 -f 1202/459/4 1203/460/4 1199/461/4 -f 1199/461/4 1198/462/4 1202/459/4 -f 1203/456/1 1204/455/1 1200/458/1 -f 1200/458/1 1199/457/1 1203/456/1 -f 1204/460/10 1201/459/10 1197/462/10 -f 1197/462/10 1200/461/10 1204/460/10 -f 1205/451/27 1206/452/27 1207/453/27 -f 1207/453/27 1208/454/27 1205/451/27 -f 1209/455/7 1210/456/7 1206/457/7 -f 1206/457/7 1205/458/7 1209/455/7 -f 1210/459/4 1211/460/4 1207/461/4 -f 1207/461/4 1206/462/4 1210/459/4 -f 1211/456/1 1212/455/1 1208/458/1 -f 1208/458/1 1207/457/1 1211/456/1 -f 1212/460/10 1209/459/10 1205/462/10 -f 1205/462/10 1208/461/10 1212/460/10 -f 1213/451/27 1214/452/27 1215/453/27 -f 1215/453/27 1216/454/27 1213/451/27 -f 1217/455/7 1218/456/7 1214/457/7 -f 1214/457/7 1213/458/7 1217/455/7 -f 1218/459/4 1219/460/4 1215/461/4 -f 1215/461/4 1214/462/4 1218/459/4 -f 1219/456/1 1220/455/1 1216/458/1 -f 1216/458/1 1215/457/1 1219/456/1 -f 1220/460/10 1217/459/10 1213/462/10 -f 1213/462/10 1216/461/10 1220/460/10 -f 1221/451/27 1222/452/27 1223/453/27 -f 1223/453/27 1224/454/27 1221/451/27 -f 1225/455/7 1226/456/7 1222/457/7 -f 1222/457/7 1221/458/7 1225/455/7 -f 1226/459/4 1227/460/4 1223/461/4 -f 1223/461/4 1222/462/4 1226/459/4 -f 1227/456/1 1228/455/1 1224/458/1 -f 1224/458/1 1223/457/1 1227/456/1 -f 1228/460/10 1225/459/10 1221/462/10 -f 1221/462/10 1224/461/10 1228/460/10 -f 1229/451/27 1230/452/27 1231/453/27 -f 1231/453/27 1232/454/27 1229/451/27 -f 1233/455/4 1234/456/4 1230/457/4 -f 1230/457/4 1229/458/4 1233/455/4 -f 1234/459/1 1235/460/1 1231/461/1 -f 1231/461/1 1230/462/1 1234/459/1 -f 1235/456/10 1236/455/10 1232/458/10 -f 1232/458/10 1231/457/10 1235/456/10 -f 1236/460/7 1233/459/7 1229/462/7 -f 1229/462/7 1232/461/7 1236/460/7 -f 1237/451/27 1238/452/27 1239/453/27 -f 1239/453/27 1240/454/27 1237/451/27 -f 1241/455/4 1242/456/4 1238/457/4 -f 1238/457/4 1237/458/4 1241/455/4 -f 1242/459/1 1243/460/1 1239/461/1 -f 1239/461/1 1238/462/1 1242/459/1 -f 1243/456/10 1244/455/10 1240/458/10 -f 1240/458/10 1239/457/10 1243/456/10 -f 1244/460/7 1241/459/7 1237/462/7 -f 1237/462/7 1240/461/7 1244/460/7 -f 1245/451/27 1246/452/27 1247/453/27 -f 1247/453/27 1248/454/27 1245/451/27 -f 1249/455/4 1250/456/4 1246/457/4 -f 1246/457/4 1245/458/4 1249/455/4 -f 1250/459/1 1251/460/1 1247/461/1 -f 1247/461/1 1246/462/1 1250/459/1 -f 1251/456/10 1252/455/10 1248/458/10 -f 1248/458/10 1247/457/10 1251/456/10 -f 1252/460/7 1249/459/7 1245/462/7 -f 1245/462/7 1248/461/7 1252/460/7 -f 1253/451/27 1254/452/27 1255/453/27 -f 1255/453/27 1256/454/27 1253/451/27 -f 1257/455/4 1258/456/4 1254/457/4 -f 1254/457/4 1253/458/4 1257/455/4 -f 1258/459/1 1259/460/1 1255/461/1 -f 1255/461/1 1254/462/1 1258/459/1 -f 1259/456/10 1260/455/10 1256/458/10 -f 1256/458/10 1255/457/10 1259/456/10 -f 1260/460/7 1257/459/7 1253/462/7 -f 1253/462/7 1256/461/7 1260/460/7 -f 1261/451/27 1262/452/27 1263/453/27 -f 1263/453/27 1264/454/27 1261/451/27 -f 1265/455/7 1266/456/7 1262/457/7 -f 1262/457/7 1261/458/7 1265/455/7 -f 1266/459/4 1267/460/4 1263/461/4 -f 1263/461/4 1262/462/4 1266/459/4 -f 1267/456/1 1268/455/1 1264/458/1 -f 1264/458/1 1263/457/1 1267/456/1 -f 1268/460/10 1265/459/10 1261/462/10 -f 1261/462/10 1264/461/10 1268/460/10 -f 1269/451/27 1270/452/27 1271/453/27 -f 1271/453/27 1272/454/27 1269/451/27 -f 1273/455/7 1274/456/7 1270/457/7 -f 1270/457/7 1269/458/7 1273/455/7 -f 1274/459/4 1275/460/4 1271/461/4 -f 1271/461/4 1270/462/4 1274/459/4 -f 1275/456/1 1276/455/1 1272/458/1 -f 1272/458/1 1271/457/1 1275/456/1 -f 1276/460/10 1273/459/10 1269/462/10 -f 1269/462/10 1272/461/10 1276/460/10 -f 1277/451/27 1278/452/27 1279/453/27 -f 1279/453/27 1280/454/27 1277/451/27 -f 1281/455/7 1282/456/7 1278/457/7 -f 1278/457/7 1277/458/7 1281/455/7 -f 1282/459/4 1283/460/4 1279/461/4 -f 1279/461/4 1278/462/4 1282/459/4 -f 1283/456/1 1284/455/1 1280/458/1 -f 1280/458/1 1279/457/1 1283/456/1 -f 1284/460/10 1281/459/10 1277/462/10 -f 1277/462/10 1280/461/10 1284/460/10 -f 1285/451/27 1286/452/27 1287/453/27 -f 1287/453/27 1288/454/27 1285/451/27 -f 1289/455/7 1290/456/7 1286/457/7 -f 1286/457/7 1285/458/7 1289/455/7 -f 1290/459/4 1291/460/4 1287/461/4 -f 1287/461/4 1286/462/4 1290/459/4 -f 1291/456/1 1292/455/1 1288/458/1 -f 1288/458/1 1287/457/1 1291/456/1 -f 1292/460/10 1289/459/10 1285/462/10 -f 1285/462/10 1288/461/10 1292/460/10 -f 1293/451/27 1294/452/27 1295/453/27 -f 1295/453/27 1296/454/27 1293/451/27 -f 1297/455/7 1298/456/7 1294/457/7 -f 1294/457/7 1293/458/7 1297/455/7 -f 1298/459/4 1299/460/4 1295/461/4 -f 1295/461/4 1294/462/4 1298/459/4 -f 1299/456/1 1300/455/1 1296/458/1 -f 1296/458/1 1295/457/1 1299/456/1 -f 1300/460/10 1297/459/10 1293/462/10 -f 1293/462/10 1296/461/10 1300/460/10 -f 1301/451/27 1302/452/27 1303/453/27 -f 1303/453/27 1304/454/27 1301/451/27 -f 1305/455/7 1306/456/7 1302/457/7 -f 1302/457/7 1301/458/7 1305/455/7 -f 1306/459/4 1307/460/4 1303/461/4 -f 1303/461/4 1302/462/4 1306/459/4 -f 1307/456/1 1308/455/1 1304/458/1 -f 1304/458/1 1303/457/1 1307/456/1 -f 1308/460/10 1305/459/10 1301/462/10 -f 1301/462/10 1304/461/10 1308/460/10 -f 1309/451/27 1310/452/27 1311/453/27 -f 1311/453/27 1312/454/27 1309/451/27 -f 1313/455/7 1314/456/7 1310/457/7 -f 1310/457/7 1309/458/7 1313/455/7 -f 1314/459/4 1315/460/4 1311/461/4 -f 1311/461/4 1310/462/4 1314/459/4 -f 1315/456/1 1316/455/1 1312/458/1 -f 1312/458/1 1311/457/1 1315/456/1 -f 1316/460/10 1313/459/10 1309/462/10 -f 1309/462/10 1312/461/10 1316/460/10 -f 1317/451/27 1318/452/27 1319/453/27 -f 1319/453/27 1320/454/27 1317/451/27 -f 1321/455/4 1322/456/4 1318/457/4 -f 1318/457/4 1317/458/4 1321/455/4 -f 1322/459/1 1323/460/1 1319/461/1 -f 1319/461/1 1318/462/1 1322/459/1 -f 1323/456/10 1324/455/10 1320/458/10 -f 1320/458/10 1319/457/10 1323/456/10 -f 1324/460/7 1321/459/7 1317/462/7 -f 1317/462/7 1320/461/7 1324/460/7 -f 1325/451/27 1326/452/27 1327/453/27 -f 1327/453/27 1328/454/27 1325/451/27 -f 1329/455/4 1330/456/4 1326/457/4 -f 1326/457/4 1325/458/4 1329/455/4 -f 1330/459/1 1331/460/1 1327/461/1 -f 1327/461/1 1326/462/1 1330/459/1 -f 1331/456/10 1332/455/10 1328/458/10 -f 1328/458/10 1327/457/10 1331/456/10 -f 1332/460/7 1329/459/7 1325/462/7 -f 1325/462/7 1328/461/7 1332/460/7 -f 1333/451/27 1334/452/27 1335/453/27 -f 1335/453/27 1336/454/27 1333/451/27 -f 1337/455/4 1338/456/4 1334/457/4 -f 1334/457/4 1333/458/4 1337/455/4 -f 1338/459/1 1339/460/1 1335/461/1 -f 1335/461/1 1334/462/1 1338/459/1 -f 1339/456/10 1340/455/10 1336/458/10 -f 1336/458/10 1335/457/10 1339/456/10 -f 1340/460/7 1337/459/7 1333/462/7 -f 1333/462/7 1336/461/7 1340/460/7 -f 1341/451/27 1342/452/27 1343/453/27 -f 1343/453/27 1344/454/27 1341/451/27 -f 1345/455/4 1346/456/4 1342/457/4 -f 1342/457/4 1341/458/4 1345/455/4 -f 1346/459/1 1347/460/1 1343/461/1 -f 1343/461/1 1342/462/1 1346/459/1 -f 1347/456/10 1348/455/10 1344/458/10 -f 1344/458/10 1343/457/10 1347/456/10 -f 1348/460/7 1345/459/7 1341/462/7 -f 1341/462/7 1344/461/7 1348/460/7 -f 1349/451/27 1350/452/27 1351/453/27 -f 1351/453/27 1352/454/27 1349/451/27 -f 1353/455/4 1354/456/4 1350/457/4 -f 1350/457/4 1349/458/4 1353/455/4 -f 1354/459/1 1355/460/1 1351/461/1 -f 1351/461/1 1350/462/1 1354/459/1 -f 1355/456/10 1356/455/10 1352/458/10 -f 1352/458/10 1351/457/10 1355/456/10 -f 1356/460/7 1353/459/7 1349/462/7 -f 1349/462/7 1352/461/7 1356/460/7 -f 1357/463/27 1358/464/27 1359/465/27 -f 1359/465/27 1360/466/27 1357/463/27 -f 1361/467/4 1362/468/4 1359/469/4 -f 1359/469/4 1358/470/4 1361/467/4 -f 1363/471/4 1364/472/4 1365/473/4 -f 1365/473/4 1366/474/4 1363/471/4 -f 1367/475/1 1368/476/1 1369/477/1 -f 1369/477/1 1370/478/1 1367/475/1 -f 1371/479/27 1372/480/288 1373/480/288 -f 1373/480/288 1374/479/27 1371/479/27 -f 1375/476/7 1376/475/7 1377/481/7 -f 1377/481/7 1378/482/7 1375/476/7 -f 1379/483/26 1380/484/289 1381/485/289 -f 1381/485/289 1382/483/26 1379/483/26 -f 1383/486/4 1384/487/4 1385/488/4 -f 1386/489/4 1387/490/4 1372/491/4 -f 1372/491/4 1371/492/4 1386/489/4 -f 1388/493/4 1389/494/4 1390/495/4 -f 1391/496/4 1392/497/4 1390/495/4 -f 1390/495/4 1389/494/4 1391/496/4 -f 1393/498/4 1394/499/4 1365/473/4 -f 1365/473/4 1364/472/4 1393/498/4 -f 1395/500/290 1371/479/27 1374/479/27 -f 1374/479/27 1396/500/290 1395/500/290 -f 1397/501/291 1379/483/26 1382/483/26 -f 1382/483/26 1398/501/291 1397/501/291 -f 1395/502/4 1399/503/4 1386/489/4 -f 1386/489/4 1371/492/4 1395/502/4 -f 1391/496/4 1383/486/4 1385/488/4 -f 1385/488/4 1392/497/4 1391/496/4 -f 1387/504/7 1363/504/7 1366/505/7 -f 1366/505/7 1400/505/7 1387/504/7 -f 1386/506/292 1364/506/292 1363/504/292 -f 1363/504/292 1387/504/292 1386/506/292 -f 1399/507/293 1393/507/293 1364/506/293 -f 1364/506/293 1386/506/293 1399/507/293 -f 1401/508/1 1394/508/1 1393/507/1 -f 1393/507/1 1399/507/1 1401/508/1 -f 1402/509/210 1365/510/210 1394/511/210 -f 1394/511/210 1401/512/210 1402/509/210 -f 1400/513/294 1366/514/294 1365/510/294 -f 1365/510/294 1402/509/294 1400/513/294 -f 1403/515/4 1401/516/4 1399/503/4 -f 1399/503/4 1395/502/4 1403/515/4 -f 1395/500/7 1396/500/7 1404/517/7 -f 1404/517/7 1403/517/7 1395/500/7 -f 1372/480/1 1405/518/1 1406/518/1 -f 1406/518/1 1373/480/1 1372/480/1 -f 1405/519/4 1372/491/4 1387/490/4 -f 1387/490/4 1400/474/4 1405/519/4 -f 1367/475/1 1407/481/1 1408/482/1 -f 1408/482/1 1368/476/1 1367/475/1 -f 1400/513/295 1385/513/295 1384/485/295 -f 1384/485/295 1405/520/295 1400/513/295 -f 1402/509/294 1392/509/294 1385/513/294 -f 1385/513/294 1400/513/294 1402/509/294 -f 1401/512/210 1390/512/210 1392/509/210 -f 1392/509/210 1402/509/210 1401/512/210 -f 1403/521/296 1388/521/296 1390/512/296 -f 1390/512/296 1401/512/296 1403/521/296 -f 1375/476/7 1409/477/7 1410/478/7 -f 1410/478/7 1376/475/7 1375/476/7 -f 1379/483/289 1391/522/289 1389/523/289 -f 1389/523/289 1380/484/289 1379/483/289 -f 1397/501/291 1383/524/291 1391/522/291 -f 1391/522/291 1379/483/291 1397/501/291 -f 1405/520/27 1367/525/27 1370/526/27 -f 1370/526/27 1406/527/27 1405/520/27 -f 1384/485/27 1407/528/27 1367/525/27 -f 1367/525/27 1405/520/27 1384/485/27 -f 1383/486/4 1408/486/4 1407/487/4 -f 1407/487/4 1384/487/4 1383/486/4 -f 1397/501/26 1368/501/26 1408/524/26 -f 1408/524/26 1383/524/26 1397/501/26 -f 1398/501/26 1369/501/26 1368/501/26 -f 1368/501/26 1397/501/26 1398/501/26 -f 1380/484/26 1375/484/26 1378/485/26 -f 1378/485/26 1381/485/26 1380/484/26 -f 1389/523/26 1409/523/26 1375/484/26 -f 1375/484/26 1380/484/26 1389/523/26 -f 1388/493/4 1410/529/4 1409/530/4 -f 1409/530/4 1389/494/4 1388/493/4 -f 1403/521/27 1376/531/27 1410/532/27 -f 1410/532/27 1388/521/27 1403/521/27 -f 1404/533/27 1377/531/27 1376/531/27 -f 1376/531/27 1403/521/27 1404/533/27 -f 1411/471/4 1412/472/4 1413/473/4 -f 1413/473/4 1414/474/4 1411/471/4 -f 1415/475/1 1416/476/1 1417/477/1 -f 1417/477/1 1418/478/1 1415/475/1 -f 1419/479/27 1420/480/288 1421/480/288 -f 1421/480/288 1422/479/27 1419/479/27 -f 1423/476/7 1424/475/7 1425/481/7 -f 1425/481/7 1426/482/7 1423/476/7 -f 1427/483/26 1428/484/289 1429/485/289 -f 1429/485/289 1430/483/26 1427/483/26 -f 1431/486/4 1432/487/4 1433/488/4 -f 1434/489/4 1435/490/4 1420/491/4 -f 1420/491/4 1419/492/4 1434/489/4 -f 1436/493/4 1437/494/4 1438/495/4 -f 1439/496/4 1440/497/4 1438/495/4 -f 1438/495/4 1437/494/4 1439/496/4 -f 1441/498/4 1442/499/4 1413/473/4 -f 1413/473/4 1412/472/4 1441/498/4 -f 1443/500/290 1419/479/27 1422/479/27 -f 1422/479/27 1444/500/290 1443/500/290 -f 1445/501/291 1427/483/26 1430/483/26 -f 1430/483/26 1446/501/291 1445/501/291 -f 1443/502/4 1447/503/4 1434/489/4 -f 1434/489/4 1419/492/4 1443/502/4 -f 1439/496/4 1431/486/4 1433/488/4 -f 1433/488/4 1440/497/4 1439/496/4 -f 1435/504/7 1411/504/7 1414/505/7 -f 1414/505/7 1448/505/7 1435/504/7 -f 1434/506/292 1412/506/292 1411/504/292 -f 1411/504/292 1435/504/292 1434/506/292 -f 1447/507/293 1441/507/293 1412/506/293 -f 1412/506/293 1434/506/293 1447/507/293 -f 1449/508/1 1442/508/1 1441/507/1 -f 1441/507/1 1447/507/1 1449/508/1 -f 1450/509/210 1413/510/210 1442/511/210 -f 1442/511/210 1449/512/210 1450/509/210 -f 1448/513/294 1414/514/294 1413/510/294 -f 1413/510/294 1450/509/294 1448/513/294 -f 1451/515/4 1449/516/4 1447/503/4 -f 1447/503/4 1443/502/4 1451/515/4 -f 1443/500/7 1444/500/7 1452/517/7 -f 1452/517/7 1451/517/7 1443/500/7 -f 1420/480/1 1453/518/1 1454/518/1 -f 1454/518/1 1421/480/1 1420/480/1 -f 1453/519/4 1420/491/4 1435/490/4 -f 1435/490/4 1448/474/4 1453/519/4 -f 1415/475/1 1455/481/1 1456/482/1 -f 1456/482/1 1416/476/1 1415/475/1 -f 1448/513/295 1433/513/295 1432/485/295 -f 1432/485/295 1453/520/295 1448/513/295 -f 1450/509/294 1440/509/294 1433/513/294 -f 1433/513/294 1448/513/294 1450/509/294 -f 1449/512/210 1438/512/210 1440/509/210 -f 1440/509/210 1450/509/210 1449/512/210 -f 1451/521/296 1436/521/296 1438/512/296 -f 1438/512/296 1449/512/296 1451/521/296 -f 1423/476/7 1457/477/7 1458/478/7 -f 1458/478/7 1424/475/7 1423/476/7 -f 1427/483/289 1439/522/289 1437/523/289 -f 1437/523/289 1428/484/289 1427/483/289 -f 1445/501/291 1431/524/291 1439/522/291 -f 1439/522/291 1427/483/291 1445/501/291 -f 1453/520/27 1415/525/27 1418/526/27 -f 1418/526/27 1454/527/27 1453/520/27 -f 1432/485/27 1455/528/27 1415/525/27 -f 1415/525/27 1453/520/27 1432/485/27 -f 1431/486/4 1456/486/4 1455/487/4 -f 1455/487/4 1432/487/4 1431/486/4 -f 1445/501/26 1416/501/26 1456/524/26 -f 1456/524/26 1431/524/26 1445/501/26 -f 1446/501/26 1417/501/26 1416/501/26 -f 1416/501/26 1445/501/26 1446/501/26 -f 1428/484/26 1423/484/26 1426/485/26 -f 1426/485/26 1429/485/26 1428/484/26 -f 1437/523/26 1457/523/26 1423/484/26 -f 1423/484/26 1428/484/26 1437/523/26 -f 1436/493/4 1458/529/4 1457/530/4 -f 1457/530/4 1437/494/4 1436/493/4 -f 1451/521/27 1424/531/27 1458/532/27 -f 1458/532/27 1436/521/27 1451/521/27 -f 1452/533/27 1425/531/27 1424/531/27 -f 1424/531/27 1451/521/27 1452/533/27 -f 1459/471/4 1460/472/4 1461/473/4 -f 1461/473/4 1462/474/4 1459/471/4 -f 1463/475/1 1464/476/1 1465/477/1 -f 1465/477/1 1466/478/1 1463/475/1 -f 1467/479/27 1468/480/288 1469/480/288 -f 1469/480/288 1470/479/27 1467/479/27 -f 1471/476/7 1472/475/7 1473/481/7 -f 1473/481/7 1474/482/7 1471/476/7 -f 1475/483/26 1476/484/289 1477/485/289 -f 1477/485/289 1478/483/26 1475/483/26 -f 1479/486/4 1480/487/4 1481/488/4 -f 1482/489/4 1483/490/4 1468/491/4 -f 1468/491/4 1467/492/4 1482/489/4 -f 1484/493/4 1485/494/4 1486/495/4 -f 1487/496/4 1488/497/4 1486/495/4 -f 1486/495/4 1485/494/4 1487/496/4 -f 1489/498/4 1490/499/4 1461/473/4 -f 1461/473/4 1460/472/4 1489/498/4 -f 1491/500/290 1467/479/27 1470/479/27 -f 1470/479/27 1492/500/290 1491/500/290 -f 1493/501/291 1475/483/26 1478/483/26 -f 1478/483/26 1494/501/291 1493/501/291 -f 1491/502/4 1495/503/4 1482/489/4 -f 1482/489/4 1467/492/4 1491/502/4 -f 1487/496/4 1479/486/4 1481/488/4 -f 1481/488/4 1488/497/4 1487/496/4 -f 1483/504/7 1459/504/7 1462/505/7 -f 1462/505/7 1496/505/7 1483/504/7 -f 1482/506/292 1460/506/292 1459/504/292 -f 1459/504/292 1483/504/292 1482/506/292 -f 1495/507/293 1489/507/293 1460/506/293 -f 1460/506/293 1482/506/293 1495/507/293 -f 1497/508/1 1490/508/1 1489/507/1 -f 1489/507/1 1495/507/1 1497/508/1 -f 1498/509/210 1461/510/210 1490/511/210 -f 1490/511/210 1497/512/210 1498/509/210 -f 1496/513/294 1462/514/294 1461/510/294 -f 1461/510/294 1498/509/294 1496/513/294 -f 1499/515/4 1497/516/4 1495/503/4 -f 1495/503/4 1491/502/4 1499/515/4 -f 1491/500/7 1492/500/7 1500/517/7 -f 1500/517/7 1499/517/7 1491/500/7 -f 1468/480/1 1501/518/1 1502/518/1 -f 1502/518/1 1469/480/1 1468/480/1 -f 1501/519/4 1468/491/4 1483/490/4 -f 1483/490/4 1496/474/4 1501/519/4 -f 1463/475/1 1503/481/1 1504/482/1 -f 1504/482/1 1464/476/1 1463/475/1 -f 1496/513/295 1481/513/295 1480/485/295 -f 1480/485/295 1501/520/295 1496/513/295 -f 1498/509/294 1488/509/294 1481/513/294 -f 1481/513/294 1496/513/294 1498/509/294 -f 1497/512/210 1486/512/210 1488/509/210 -f 1488/509/210 1498/509/210 1497/512/210 -f 1499/521/296 1484/521/296 1486/512/296 -f 1486/512/296 1497/512/296 1499/521/296 -f 1471/476/7 1505/477/7 1506/478/7 -f 1506/478/7 1472/475/7 1471/476/7 -f 1475/483/289 1487/522/289 1485/523/289 -f 1485/523/289 1476/484/289 1475/483/289 -f 1493/501/291 1479/524/291 1487/522/291 -f 1487/522/291 1475/483/291 1493/501/291 -f 1501/520/27 1463/525/27 1466/526/27 -f 1466/526/27 1502/527/27 1501/520/27 -f 1480/485/27 1503/528/27 1463/525/27 -f 1463/525/27 1501/520/27 1480/485/27 -f 1479/486/4 1504/486/4 1503/487/4 -f 1503/487/4 1480/487/4 1479/486/4 -f 1493/501/26 1464/501/26 1504/524/26 -f 1504/524/26 1479/524/26 1493/501/26 -f 1494/501/26 1465/501/26 1464/501/26 -f 1464/501/26 1493/501/26 1494/501/26 -f 1476/484/26 1471/484/26 1474/485/26 -f 1474/485/26 1477/485/26 1476/484/26 -f 1485/523/26 1505/523/26 1471/484/26 -f 1471/484/26 1476/484/26 1485/523/26 -f 1484/493/4 1506/529/4 1505/530/4 -f 1505/530/4 1485/494/4 1484/493/4 -f 1499/521/27 1472/531/27 1506/532/27 -f 1506/532/27 1484/521/27 1499/521/27 -f 1500/533/27 1473/531/27 1472/531/27 -f 1472/531/27 1499/521/27 1500/533/27 -f 1507/471/4 1508/472/4 1509/473/4 -f 1509/473/4 1510/474/4 1507/471/4 -f 1511/475/1 1512/476/1 1513/477/1 -f 1513/477/1 1514/478/1 1511/475/1 -f 1515/479/27 1516/480/288 1517/480/288 -f 1517/480/288 1518/479/27 1515/479/27 -f 1519/476/7 1520/475/7 1521/481/7 -f 1521/481/7 1522/482/7 1519/476/7 -f 1523/483/26 1524/484/289 1525/485/289 -f 1525/485/289 1526/483/26 1523/483/26 -f 1527/486/4 1528/487/4 1529/488/4 -f 1530/489/4 1531/490/4 1516/491/4 -f 1516/491/4 1515/492/4 1530/489/4 -f 1532/493/4 1533/494/4 1534/495/4 -f 1535/496/4 1536/497/4 1534/495/4 -f 1534/495/4 1533/494/4 1535/496/4 -f 1537/498/4 1538/499/4 1509/473/4 -f 1509/473/4 1508/472/4 1537/498/4 -f 1539/500/290 1515/479/27 1518/479/27 -f 1518/479/27 1540/500/290 1539/500/290 -f 1541/501/291 1523/483/26 1526/483/26 -f 1526/483/26 1542/501/291 1541/501/291 -f 1539/502/4 1543/503/4 1530/489/4 -f 1530/489/4 1515/492/4 1539/502/4 -f 1535/496/4 1527/486/4 1529/488/4 -f 1529/488/4 1536/497/4 1535/496/4 -f 1531/504/7 1507/504/7 1510/505/7 -f 1510/505/7 1544/505/7 1531/504/7 -f 1530/506/292 1508/506/292 1507/504/292 -f 1507/504/292 1531/504/292 1530/506/292 -f 1543/507/293 1537/507/293 1508/506/293 -f 1508/506/293 1530/506/293 1543/507/293 -f 1545/508/1 1538/508/1 1537/507/1 -f 1537/507/1 1543/507/1 1545/508/1 -f 1546/509/210 1509/510/210 1538/511/210 -f 1538/511/210 1545/512/210 1546/509/210 -f 1544/513/294 1510/514/294 1509/510/294 -f 1509/510/294 1546/509/294 1544/513/294 -f 1547/515/4 1545/516/4 1543/503/4 -f 1543/503/4 1539/502/4 1547/515/4 -f 1539/500/7 1540/500/7 1548/517/7 -f 1548/517/7 1547/517/7 1539/500/7 -f 1516/480/1 1549/518/1 1550/518/1 -f 1550/518/1 1517/480/1 1516/480/1 -f 1549/519/4 1516/491/4 1531/490/4 -f 1531/490/4 1544/474/4 1549/519/4 -f 1511/475/1 1551/481/1 1552/482/1 -f 1552/482/1 1512/476/1 1511/475/1 -f 1544/513/295 1529/513/295 1528/485/295 -f 1528/485/295 1549/520/295 1544/513/295 -f 1546/509/294 1536/509/294 1529/513/294 -f 1529/513/294 1544/513/294 1546/509/294 -f 1545/512/210 1534/512/210 1536/509/210 -f 1536/509/210 1546/509/210 1545/512/210 -f 1547/521/296 1532/521/296 1534/512/296 -f 1534/512/296 1545/512/296 1547/521/296 -f 1519/476/7 1553/477/7 1554/478/7 -f 1554/478/7 1520/475/7 1519/476/7 -f 1523/483/289 1535/522/289 1533/523/289 -f 1533/523/289 1524/484/289 1523/483/289 -f 1541/501/291 1527/524/291 1535/522/291 -f 1535/522/291 1523/483/291 1541/501/291 -f 1549/520/27 1511/525/27 1514/526/27 -f 1514/526/27 1550/527/27 1549/520/27 -f 1528/485/27 1551/528/27 1511/525/27 -f 1511/525/27 1549/520/27 1528/485/27 -f 1527/486/4 1552/486/4 1551/487/4 -f 1551/487/4 1528/487/4 1527/486/4 -f 1541/501/26 1512/501/26 1552/524/26 -f 1552/524/26 1527/524/26 1541/501/26 -f 1542/501/26 1513/501/26 1512/501/26 -f 1512/501/26 1541/501/26 1542/501/26 -f 1524/484/26 1519/484/26 1522/485/26 -f 1522/485/26 1525/485/26 1524/484/26 -f 1533/523/26 1553/523/26 1519/484/26 -f 1519/484/26 1524/484/26 1533/523/26 -f 1532/493/4 1554/529/4 1553/530/4 -f 1553/530/4 1533/494/4 1532/493/4 -f 1547/521/27 1520/531/27 1554/532/27 -f 1554/532/27 1532/521/27 1547/521/27 -f 1548/533/27 1521/531/27 1520/531/27 -f 1520/531/27 1547/521/27 1548/533/27 -f 1555/471/4 1556/472/4 1557/473/4 -f 1557/473/4 1558/474/4 1555/471/4 -f 1559/475/1 1560/476/1 1561/477/1 -f 1561/477/1 1562/478/1 1559/475/1 -f 1563/479/27 1564/480/288 1565/480/288 -f 1565/480/288 1566/479/27 1563/479/27 -f 1567/476/7 1568/475/7 1569/481/7 -f 1569/481/7 1570/482/7 1567/476/7 -f 1571/483/26 1572/484/289 1573/485/289 -f 1573/485/289 1574/483/26 1571/483/26 -f 1575/486/4 1576/487/4 1577/488/4 -f 1578/489/4 1579/490/4 1564/491/4 -f 1564/491/4 1563/492/4 1578/489/4 -f 1580/493/4 1581/494/4 1582/495/4 -f 1583/496/4 1584/497/4 1582/495/4 -f 1582/495/4 1581/494/4 1583/496/4 -f 1585/498/4 1586/499/4 1557/473/4 -f 1557/473/4 1556/472/4 1585/498/4 -f 1587/500/290 1563/479/27 1566/479/27 -f 1566/479/27 1588/500/290 1587/500/290 -f 1589/501/291 1571/483/26 1574/483/26 -f 1574/483/26 1590/501/291 1589/501/291 -f 1587/502/4 1591/503/4 1578/489/4 -f 1578/489/4 1563/492/4 1587/502/4 -f 1583/496/4 1575/486/4 1577/488/4 -f 1577/488/4 1584/497/4 1583/496/4 -f 1579/504/7 1555/504/7 1558/505/7 -f 1558/505/7 1592/505/7 1579/504/7 -f 1578/506/292 1556/506/292 1555/504/292 -f 1555/504/292 1579/504/292 1578/506/292 -f 1591/507/293 1585/507/293 1556/506/293 -f 1556/506/293 1578/506/293 1591/507/293 -f 1593/508/1 1586/508/1 1585/507/1 -f 1585/507/1 1591/507/1 1593/508/1 -f 1594/509/210 1557/510/210 1586/511/210 -f 1586/511/210 1593/512/210 1594/509/210 -f 1592/513/294 1558/514/294 1557/510/294 -f 1557/510/294 1594/509/294 1592/513/294 -f 1595/515/4 1593/516/4 1591/503/4 -f 1591/503/4 1587/502/4 1595/515/4 -f 1587/500/7 1588/500/7 1596/517/7 -f 1596/517/7 1595/517/7 1587/500/7 -f 1564/480/1 1597/518/1 1598/518/1 -f 1598/518/1 1565/480/1 1564/480/1 -f 1597/519/4 1564/491/4 1579/490/4 -f 1579/490/4 1592/474/4 1597/519/4 -f 1559/475/1 1599/481/1 1600/482/1 -f 1600/482/1 1560/476/1 1559/475/1 -f 1592/513/295 1577/513/295 1576/485/295 -f 1576/485/295 1597/520/295 1592/513/295 -f 1594/509/294 1584/509/294 1577/513/294 -f 1577/513/294 1592/513/294 1594/509/294 -f 1593/512/210 1582/512/210 1584/509/210 -f 1584/509/210 1594/509/210 1593/512/210 -f 1595/521/296 1580/521/296 1582/512/296 -f 1582/512/296 1593/512/296 1595/521/296 -f 1567/476/7 1601/477/7 1602/478/7 -f 1602/478/7 1568/475/7 1567/476/7 -f 1571/483/289 1583/522/289 1581/523/289 -f 1581/523/289 1572/484/289 1571/483/289 -f 1589/501/291 1575/524/291 1583/522/291 -f 1583/522/291 1571/483/291 1589/501/291 -f 1597/520/27 1559/525/27 1562/526/27 -f 1562/526/27 1598/527/27 1597/520/27 -f 1576/485/27 1599/528/27 1559/525/27 -f 1559/525/27 1597/520/27 1576/485/27 -f 1575/486/4 1600/486/4 1599/487/4 -f 1599/487/4 1576/487/4 1575/486/4 -f 1589/501/26 1560/501/26 1600/524/26 -f 1600/524/26 1575/524/26 1589/501/26 -f 1590/501/26 1561/501/26 1560/501/26 -f 1560/501/26 1589/501/26 1590/501/26 -f 1572/484/26 1567/484/26 1570/485/26 -f 1570/485/26 1573/485/26 1572/484/26 -f 1581/523/26 1601/523/26 1567/484/26 -f 1567/484/26 1572/484/26 1581/523/26 -f 1580/493/4 1602/529/4 1601/530/4 -f 1601/530/4 1581/494/4 1580/493/4 -f 1595/521/27 1568/531/27 1602/532/27 -f 1602/532/27 1580/521/27 1595/521/27 -f 1596/533/27 1569/531/27 1568/531/27 -f 1568/531/27 1595/521/27 1596/533/27 -f 1603/471/4 1604/472/4 1605/473/4 -f 1605/473/4 1606/474/4 1603/471/4 -f 1607/475/1 1608/476/1 1609/477/1 -f 1609/477/1 1610/478/1 1607/475/1 -f 1611/479/27 1612/480/288 1613/480/288 -f 1613/480/288 1614/479/27 1611/479/27 -f 1615/476/7 1616/475/7 1617/481/7 -f 1617/481/7 1618/482/7 1615/476/7 -f 1619/483/26 1620/484/289 1621/485/289 -f 1621/485/289 1622/483/26 1619/483/26 -f 1623/486/4 1624/487/4 1625/488/4 -f 1626/489/4 1627/490/4 1612/491/4 -f 1612/491/4 1611/492/4 1626/489/4 -f 1628/493/4 1629/494/4 1630/495/4 -f 1631/496/4 1632/497/4 1630/495/4 -f 1630/495/4 1629/494/4 1631/496/4 -f 1633/498/4 1634/499/4 1605/473/4 -f 1605/473/4 1604/472/4 1633/498/4 -f 1635/500/290 1611/479/27 1614/479/27 -f 1614/479/27 1636/500/290 1635/500/290 -f 1637/501/291 1619/483/26 1622/483/26 -f 1622/483/26 1638/501/291 1637/501/291 -f 1635/502/4 1639/503/4 1626/489/4 -f 1626/489/4 1611/492/4 1635/502/4 -f 1631/496/4 1623/486/4 1625/488/4 -f 1625/488/4 1632/497/4 1631/496/4 -f 1627/504/7 1603/504/7 1606/505/7 -f 1606/505/7 1640/505/7 1627/504/7 -f 1626/506/292 1604/506/292 1603/504/292 -f 1603/504/292 1627/504/292 1626/506/292 -f 1639/507/293 1633/507/293 1604/506/293 -f 1604/506/293 1626/506/293 1639/507/293 -f 1641/508/1 1634/508/1 1633/507/1 -f 1633/507/1 1639/507/1 1641/508/1 -f 1642/509/210 1605/510/210 1634/511/210 -f 1634/511/210 1641/512/210 1642/509/210 -f 1640/513/294 1606/514/294 1605/510/294 -f 1605/510/294 1642/509/294 1640/513/294 -f 1643/515/4 1641/516/4 1639/503/4 -f 1639/503/4 1635/502/4 1643/515/4 -f 1635/500/7 1636/500/7 1644/517/7 -f 1644/517/7 1643/517/7 1635/500/7 -f 1612/480/1 1645/518/1 1646/518/1 -f 1646/518/1 1613/480/1 1612/480/1 -f 1645/519/4 1612/491/4 1627/490/4 -f 1627/490/4 1640/474/4 1645/519/4 -f 1607/475/1 1647/481/1 1648/482/1 -f 1648/482/1 1608/476/1 1607/475/1 -f 1640/513/295 1625/513/295 1624/485/295 -f 1624/485/295 1645/520/295 1640/513/295 -f 1642/509/294 1632/509/294 1625/513/294 -f 1625/513/294 1640/513/294 1642/509/294 -f 1641/512/210 1630/512/210 1632/509/210 -f 1632/509/210 1642/509/210 1641/512/210 -f 1643/521/296 1628/521/296 1630/512/296 -f 1630/512/296 1641/512/296 1643/521/296 -f 1615/476/7 1649/477/7 1650/478/7 -f 1650/478/7 1616/475/7 1615/476/7 -f 1619/483/289 1631/522/289 1629/523/289 -f 1629/523/289 1620/484/289 1619/483/289 -f 1637/501/291 1623/524/291 1631/522/297 -f 1631/522/297 1619/483/297 1637/501/291 -f 1645/520/27 1607/525/27 1610/526/27 -f 1610/526/27 1646/527/27 1645/520/27 -f 1624/485/27 1647/528/27 1607/525/27 -f 1607/525/27 1645/520/27 1624/485/27 -f 1623/486/4 1648/486/4 1647/487/4 -f 1647/487/4 1624/487/4 1623/486/4 -f 1637/501/26 1608/501/26 1648/524/26 -f 1648/524/26 1623/524/26 1637/501/26 -f 1638/501/26 1609/501/26 1608/501/26 -f 1608/501/26 1637/501/26 1638/501/26 -f 1620/484/26 1615/484/26 1618/485/26 -f 1618/485/26 1621/485/26 1620/484/26 -f 1629/523/26 1649/523/26 1615/484/26 -f 1615/484/26 1620/484/26 1629/523/26 -f 1628/493/4 1650/529/4 1649/530/4 -f 1649/530/4 1629/494/4 1628/493/4 -f 1643/521/27 1616/531/27 1650/532/27 -f 1650/532/27 1628/521/27 1643/521/27 -f 1644/533/27 1617/531/27 1616/531/27 -f 1616/531/27 1643/521/27 1644/533/27 -f 1651/471/4 1652/472/4 1653/473/4 -f 1653/473/4 1654/474/4 1651/471/4 -f 1655/475/1 1656/476/1 1657/477/1 -f 1657/477/1 1658/478/1 1655/475/1 -f 1659/479/27 1660/480/288 1661/480/288 -f 1661/480/288 1662/479/27 1659/479/27 -f 1663/476/7 1664/475/7 1665/481/7 -f 1665/481/7 1666/482/7 1663/476/7 -f 1667/483/26 1668/484/289 1669/485/289 -f 1669/485/289 1670/483/26 1667/483/26 -f 1671/486/4 1672/487/4 1673/488/4 -f 1674/489/4 1675/490/4 1660/491/4 -f 1660/491/4 1659/492/4 1674/489/4 -f 1676/493/4 1677/494/4 1678/495/4 -f 1679/496/4 1680/497/4 1678/495/4 -f 1678/495/4 1677/494/4 1679/496/4 -f 1681/498/4 1682/499/4 1653/473/4 -f 1653/473/4 1652/472/4 1681/498/4 -f 1683/500/290 1659/479/27 1662/479/27 -f 1662/479/27 1684/500/290 1683/500/290 -f 1685/501/291 1667/483/26 1670/483/26 -f 1670/483/26 1686/501/291 1685/501/291 -f 1683/502/4 1687/503/4 1674/489/4 -f 1674/489/4 1659/492/4 1683/502/4 -f 1679/496/4 1671/486/4 1673/488/4 -f 1673/488/4 1680/497/4 1679/496/4 -f 1675/504/7 1651/504/7 1654/505/7 -f 1654/505/7 1688/505/7 1675/504/7 -f 1674/506/292 1652/506/292 1651/504/292 -f 1651/504/292 1675/504/292 1674/506/292 -f 1687/507/293 1681/507/293 1652/506/293 -f 1652/506/293 1674/506/293 1687/507/293 -f 1689/508/1 1682/508/1 1681/507/1 -f 1681/507/1 1687/507/1 1689/508/1 -f 1690/509/210 1653/510/210 1682/511/210 -f 1682/511/210 1689/512/210 1690/509/210 -f 1688/513/294 1654/514/294 1653/510/294 -f 1653/510/294 1690/509/294 1688/513/294 -f 1691/515/4 1689/516/4 1687/503/4 -f 1687/503/4 1683/502/4 1691/515/4 -f 1683/500/7 1684/500/7 1692/517/7 -f 1692/517/7 1691/517/7 1683/500/7 -f 1660/480/1 1693/518/1 1694/518/1 -f 1694/518/1 1661/480/1 1660/480/1 -f 1693/519/4 1660/491/4 1675/490/4 -f 1675/490/4 1688/474/4 1693/519/4 -f 1655/475/1 1695/481/1 1696/482/1 -f 1696/482/1 1656/476/1 1655/475/1 -f 1688/513/295 1673/513/295 1672/485/295 -f 1672/485/295 1693/520/295 1688/513/295 -f 1690/509/294 1680/509/294 1673/513/294 -f 1673/513/294 1688/513/294 1690/509/294 -f 1689/512/210 1678/512/210 1680/509/210 -f 1680/509/210 1690/509/210 1689/512/210 -f 1691/521/296 1676/521/296 1678/512/296 -f 1678/512/296 1689/512/296 1691/521/296 -f 1663/476/7 1697/477/7 1698/478/7 -f 1698/478/7 1664/475/7 1663/476/7 -f 1667/483/298 1679/522/298 1677/523/289 -f 1677/523/289 1668/484/289 1667/483/298 -f 1685/501/291 1671/524/291 1679/522/297 -f 1679/522/297 1667/483/297 1685/501/291 -f 1693/520/27 1655/525/27 1658/526/27 -f 1658/526/27 1694/527/27 1693/520/27 -f 1672/485/27 1695/528/27 1655/525/27 -f 1655/525/27 1693/520/27 1672/485/27 -f 1671/486/4 1696/486/4 1695/487/4 -f 1695/487/4 1672/487/4 1671/486/4 -f 1685/501/26 1656/501/26 1696/524/26 -f 1696/524/26 1671/524/26 1685/501/26 -f 1686/501/26 1657/501/26 1656/501/26 -f 1656/501/26 1685/501/26 1686/501/26 -f 1668/484/26 1663/484/26 1666/485/26 -f 1666/485/26 1669/485/26 1668/484/26 -f 1677/523/26 1697/523/26 1663/484/26 -f 1663/484/26 1668/484/26 1677/523/26 -f 1676/493/4 1698/529/4 1697/530/4 -f 1697/530/4 1677/494/4 1676/493/4 -f 1691/521/27 1664/531/27 1698/532/27 -f 1698/532/27 1676/521/27 1691/521/27 -f 1692/533/27 1665/531/27 1664/531/27 -f 1664/531/27 1691/521/27 1692/533/27 -f 1699/471/1 1700/472/1 1701/473/1 -f 1701/473/1 1702/474/1 1699/471/1 -f 1703/475/10 1704/476/10 1705/477/10 -f 1705/477/10 1706/478/10 1703/475/10 -f 1707/479/27 1708/480/299 1709/480/299 -f 1709/480/299 1710/479/27 1707/479/27 -f 1711/476/4 1712/475/4 1713/481/4 -f 1713/481/4 1714/482/4 1711/476/4 -f 1715/483/26 1716/484/300 1717/485/300 -f 1717/485/300 1718/483/26 1715/483/26 -f 1719/486/1 1720/487/1 1721/488/1 -f 1722/489/1 1723/490/1 1708/491/1 -f 1708/491/1 1707/492/1 1722/489/1 -f 1724/493/1 1725/494/1 1726/495/1 -f 1727/496/1 1728/497/1 1726/495/1 -f 1726/495/1 1725/494/1 1727/496/1 -f 1729/498/1 1730/499/1 1701/473/1 -f 1701/473/1 1700/472/1 1729/498/1 -f 1731/500/301 1707/479/27 1710/479/27 -f 1710/479/27 1732/500/301 1731/500/301 -f 1733/501/302 1715/483/26 1718/483/26 -f 1718/483/26 1734/501/302 1733/501/302 -f 1731/502/1 1735/503/1 1722/489/1 -f 1722/489/1 1707/492/1 1731/502/1 -f 1727/496/1 1719/486/1 1721/488/1 -f 1721/488/1 1728/497/1 1727/496/1 -f 1723/504/4 1699/504/4 1702/505/4 -f 1702/505/4 1736/505/4 1723/504/4 -f 1722/506/303 1700/506/303 1699/504/303 -f 1699/504/303 1723/504/303 1722/506/303 -f 1735/507/304 1729/507/304 1700/506/304 -f 1700/506/304 1722/506/304 1735/507/304 -f 1737/508/10 1730/508/10 1729/507/10 -f 1729/507/10 1735/507/10 1737/508/10 -f 1738/509/305 1701/510/305 1730/511/305 -f 1730/511/305 1737/512/305 1738/509/305 -f 1736/513/306 1702/514/306 1701/510/306 -f 1701/510/306 1738/509/306 1736/513/306 -f 1739/515/1 1737/516/1 1735/503/1 -f 1735/503/1 1731/502/1 1739/515/1 -f 1731/500/4 1732/500/4 1740/517/4 -f 1740/517/4 1739/517/4 1731/500/4 -f 1708/480/10 1741/518/10 1742/518/10 -f 1742/518/10 1709/480/10 1708/480/10 -f 1741/519/1 1708/491/1 1723/490/1 -f 1723/490/1 1736/474/1 1741/519/1 -f 1703/475/10 1743/481/10 1744/482/10 -f 1744/482/10 1704/476/10 1703/475/10 -f 1736/513/307 1721/513/307 1720/485/307 -f 1720/485/307 1741/520/307 1736/513/307 -f 1738/509/306 1728/509/306 1721/513/306 -f 1721/513/306 1736/513/306 1738/509/306 -f 1737/512/305 1726/512/305 1728/509/305 -f 1728/509/305 1738/509/305 1737/512/305 -f 1739/521/308 1724/521/308 1726/512/308 -f 1726/512/308 1737/512/308 1739/521/308 -f 1711/476/4 1745/477/4 1746/478/4 -f 1746/478/4 1712/475/4 1711/476/4 -f 1715/483/300 1727/522/300 1725/523/300 -f 1725/523/300 1716/484/300 1715/483/300 -f 1733/501/302 1719/524/302 1727/522/302 -f 1727/522/302 1715/483/302 1733/501/302 -f 1741/520/27 1703/525/27 1706/526/27 -f 1706/526/27 1742/527/27 1741/520/27 -f 1720/485/27 1743/528/27 1703/525/27 -f 1703/525/27 1741/520/27 1720/485/27 -f 1719/486/1 1744/486/1 1743/487/1 -f 1743/487/1 1720/487/1 1719/486/1 -f 1733/501/26 1704/501/26 1744/524/26 -f 1744/524/26 1719/524/26 1733/501/26 -f 1734/501/26 1705/501/26 1704/501/26 -f 1704/501/26 1733/501/26 1734/501/26 -f 1716/484/26 1711/484/26 1714/485/26 -f 1714/485/26 1717/485/26 1716/484/26 -f 1725/523/26 1745/523/26 1711/484/26 -f 1711/484/26 1716/484/26 1725/523/26 -f 1724/493/1 1746/529/1 1745/530/1 -f 1745/530/1 1725/494/1 1724/493/1 -f 1739/521/27 1712/531/27 1746/532/27 -f 1746/532/27 1724/521/27 1739/521/27 -f 1740/533/27 1713/531/27 1712/531/27 -f 1712/531/27 1739/521/27 1740/533/27 -f 1747/471/1 1748/474/1 1749/473/1 -f 1749/473/1 1750/472/1 1747/471/1 -f 1751/475/4 1752/478/4 1753/477/4 -f 1753/477/4 1754/476/4 1751/475/4 -f 1755/479/27 1756/479/27 1757/480/301 -f 1757/480/301 1758/480/301 1755/479/27 -f 1759/476/10 1760/482/10 1761/481/10 -f 1761/481/10 1762/475/10 1759/476/10 -f 1763/483/26 1764/483/26 1765/485/302 -f 1765/485/302 1766/484/302 1763/483/26 -f 1767/486/1 1768/488/1 1769/487/1 -f 1770/489/1 1755/492/1 1758/491/1 -f 1758/491/1 1771/490/1 1770/489/1 -f 1772/493/1 1773/495/1 1774/494/1 -f 1775/496/1 1774/494/1 1773/495/1 -f 1773/495/1 1776/497/1 1775/496/1 -f 1777/498/1 1750/472/1 1749/473/1 -f 1749/473/1 1778/499/1 1777/498/1 -f 1779/500/299 1780/500/299 1756/479/27 -f 1756/479/27 1755/479/27 1779/500/299 -f 1781/501/300 1782/501/300 1764/483/26 -f 1764/483/26 1763/483/26 1781/501/300 -f 1779/502/1 1755/492/1 1770/489/1 -f 1770/489/1 1783/503/1 1779/502/1 -f 1775/496/1 1776/497/1 1768/488/1 -f 1768/488/1 1767/486/1 1775/496/1 -f 1771/504/10 1784/505/10 1748/505/10 -f 1748/505/10 1747/504/10 1771/504/10 -f 1770/506/304 1771/504/304 1747/504/304 -f 1747/504/304 1750/506/304 1770/506/304 -f 1783/507/303 1770/506/303 1750/506/303 -f 1750/506/303 1777/507/303 1783/507/303 -f 1785/508/4 1783/507/4 1777/507/4 -f 1777/507/4 1778/508/4 1785/508/4 -f 1786/509/309 1785/512/309 1778/511/309 -f 1778/511/309 1749/510/309 1786/509/309 -f 1784/513/310 1786/509/310 1749/510/310 -f 1749/510/310 1748/514/310 1784/513/310 -f 1787/515/1 1779/502/1 1783/503/1 -f 1783/503/1 1785/516/1 1787/515/1 -f 1779/500/10 1787/517/10 1788/517/10 -f 1788/517/10 1780/500/10 1779/500/10 -f 1758/480/4 1757/480/4 1789/518/4 -f 1789/518/4 1790/518/4 1758/480/4 -f 1790/519/1 1784/474/1 1771/490/1 -f 1771/490/1 1758/491/1 1790/519/1 -f 1751/475/4 1754/476/4 1791/482/4 -f 1791/482/4 1792/481/4 1751/475/4 -f 1784/513/311 1790/520/311 1769/485/311 -f 1769/485/311 1768/513/311 1784/513/311 -f 1786/509/310 1784/513/310 1768/513/310 -f 1768/513/310 1776/509/310 1786/509/310 -f 1785/512/309 1786/509/309 1776/509/309 -f 1776/509/309 1773/512/309 1785/512/309 -f 1787/521/312 1785/512/312 1773/512/312 -f 1773/512/312 1772/521/312 1787/521/312 -f 1759/476/10 1762/475/10 1793/478/10 -f 1793/478/10 1794/477/10 1759/476/10 -f 1763/483/302 1766/484/302 1774/523/302 -f 1774/523/302 1775/522/302 1763/483/302 -f 1781/501/300 1763/483/300 1775/522/300 -f 1775/522/300 1767/524/300 1781/501/300 -f 1790/520/27 1789/527/27 1752/526/27 -f 1752/526/27 1751/525/27 1790/520/27 -f 1769/485/27 1790/520/27 1751/525/27 -f 1751/525/27 1792/528/27 1769/485/27 -f 1767/486/1 1769/487/1 1792/487/1 -f 1792/487/1 1791/486/1 1767/486/1 -f 1781/501/26 1767/524/26 1791/524/26 -f 1791/524/26 1754/501/26 1781/501/26 -f 1782/501/26 1781/501/26 1754/501/26 -f 1754/501/26 1753/501/26 1782/501/26 -f 1766/484/26 1765/485/26 1760/485/26 -f 1760/485/26 1759/484/26 1766/484/26 -f 1774/523/26 1766/484/26 1759/484/26 -f 1759/484/26 1794/523/26 1774/523/26 -f 1772/493/1 1774/494/1 1794/530/1 -f 1794/530/1 1793/529/1 1772/493/1 -f 1787/521/27 1772/521/27 1793/532/27 -f 1793/532/27 1762/531/27 1787/521/27 -f 1788/533/27 1787/521/27 1762/531/27 -f 1762/531/27 1761/531/27 1788/533/27 -f 1795/471/10 1796/474/10 1797/473/10 -f 1797/473/10 1798/472/10 1795/471/10 -f 1799/475/1 1800/478/1 1801/477/1 -f 1801/477/1 1802/476/1 1799/475/1 -f 1803/479/27 1804/479/27 1805/480/288 -f 1805/480/288 1806/480/288 1803/479/27 -f 1807/476/7 1808/482/7 1809/481/7 -f 1809/481/7 1810/475/7 1807/476/7 -f 1811/483/26 1812/483/26 1813/485/289 -f 1813/485/289 1814/484/289 1811/483/26 -f 1815/486/10 1816/488/10 1817/487/10 -f 1818/489/10 1803/492/10 1806/491/10 -f 1806/491/10 1819/490/10 1818/489/10 -f 1820/493/10 1821/495/10 1822/494/10 -f 1823/496/10 1822/494/10 1821/495/10 -f 1821/495/10 1824/497/10 1823/496/10 -f 1825/498/10 1798/472/10 1797/473/10 -f 1797/473/10 1826/499/10 1825/498/10 -f 1827/500/290 1828/500/290 1804/479/27 -f 1804/479/27 1803/479/27 1827/500/290 -f 1829/501/291 1830/501/291 1812/483/26 -f 1812/483/26 1811/483/26 1829/501/291 -f 1827/502/10 1803/492/10 1818/489/10 -f 1818/489/10 1831/503/10 1827/502/10 -f 1823/496/10 1824/497/10 1816/488/10 -f 1816/488/10 1815/486/10 1823/496/10 -f 1819/504/7 1832/505/7 1796/505/7 -f 1796/505/7 1795/504/7 1819/504/7 -f 1818/506/292 1819/504/292 1795/504/292 -f 1795/504/292 1798/506/292 1818/506/292 -f 1831/507/293 1818/506/293 1798/506/293 -f 1798/506/293 1825/507/293 1831/507/293 -f 1833/508/1 1831/507/1 1825/507/1 -f 1825/507/1 1826/508/1 1833/508/1 -f 1834/509/210 1833/512/210 1826/511/210 -f 1826/511/210 1797/510/210 1834/509/210 -f 1832/513/294 1834/509/294 1797/510/294 -f 1797/510/294 1796/514/294 1832/513/294 -f 1835/515/10 1827/502/10 1831/503/10 -f 1831/503/10 1833/516/10 1835/515/10 -f 1827/500/7 1835/517/7 1836/517/7 -f 1836/517/7 1828/500/7 1827/500/7 -f 1806/480/1 1805/480/1 1837/518/1 -f 1837/518/1 1838/518/1 1806/480/1 -f 1838/519/10 1832/474/10 1819/490/10 -f 1819/490/10 1806/491/10 1838/519/10 -f 1799/475/1 1802/476/1 1839/482/1 -f 1839/482/1 1840/481/1 1799/475/1 -f 1832/513/313 1838/520/295 1817/485/295 -f 1817/485/295 1816/513/313 1832/513/313 -f 1834/509/294 1832/513/294 1816/513/294 -f 1816/513/294 1824/509/294 1834/509/294 -f 1833/512/210 1834/509/210 1824/509/210 -f 1824/509/210 1821/512/210 1833/512/210 -f 1835/521/296 1833/512/296 1821/512/296 -f 1821/512/296 1820/521/296 1835/521/296 -f 1807/476/7 1810/475/7 1841/478/7 -f 1841/478/7 1842/477/7 1807/476/7 -f 1811/483/289 1814/484/289 1822/523/289 -f 1822/523/289 1823/522/289 1811/483/289 -f 1829/501/291 1811/483/291 1823/522/291 -f 1823/522/291 1815/524/291 1829/501/291 -f 1838/520/27 1837/527/27 1800/526/27 -f 1800/526/27 1799/525/27 1838/520/27 -f 1817/485/27 1838/520/27 1799/525/27 -f 1799/525/27 1840/528/27 1817/485/27 -f 1815/486/10 1817/487/10 1840/487/10 -f 1840/487/10 1839/486/10 1815/486/10 -f 1829/501/26 1815/524/26 1839/524/26 -f 1839/524/26 1802/501/26 1829/501/26 -f 1830/501/26 1829/501/26 1802/501/26 -f 1802/501/26 1801/501/26 1830/501/26 -f 1814/484/26 1813/485/26 1808/485/26 -f 1808/485/26 1807/484/26 1814/484/26 -f 1822/523/26 1814/484/26 1807/484/26 -f 1807/484/26 1842/523/26 1822/523/26 -f 1820/493/10 1822/494/10 1842/530/10 -f 1842/530/10 1841/529/10 1820/493/10 -f 1835/521/27 1820/521/27 1841/532/27 -f 1841/532/27 1810/531/27 1835/521/27 -f 1836/533/27 1835/521/27 1810/531/27 -f 1810/531/27 1809/531/27 1836/533/27 -f 1843/471/10 1844/474/10 1845/473/10 -f 1845/473/10 1846/472/10 1843/471/10 -f 1847/475/1 1848/478/1 1849/477/1 -f 1849/477/1 1850/476/1 1847/475/1 -f 1851/479/27 1852/479/27 1853/480/288 -f 1853/480/288 1854/480/288 1851/479/27 -f 1855/476/7 1856/482/7 1857/481/7 -f 1857/481/7 1858/475/7 1855/476/7 -f 1859/483/26 1860/483/26 1861/485/289 -f 1861/485/289 1862/484/289 1859/483/26 -f 1863/486/10 1864/488/10 1865/487/10 -f 1866/489/10 1851/492/10 1854/491/10 -f 1854/491/10 1867/490/10 1866/489/10 -f 1868/493/10 1869/495/10 1870/494/10 -f 1871/496/10 1870/494/10 1869/495/10 -f 1869/495/10 1872/497/10 1871/496/10 -f 1873/498/10 1846/472/10 1845/473/10 -f 1845/473/10 1874/499/10 1873/498/10 -f 1875/500/290 1876/500/290 1852/479/27 -f 1852/479/27 1851/479/27 1875/500/290 -f 1877/501/291 1878/501/291 1860/483/26 -f 1860/483/26 1859/483/26 1877/501/291 -f 1875/502/10 1851/492/10 1866/489/10 -f 1866/489/10 1879/503/10 1875/502/10 -f 1871/496/10 1872/497/10 1864/488/10 -f 1864/488/10 1863/486/10 1871/496/10 -f 1867/504/7 1880/505/7 1844/505/7 -f 1844/505/7 1843/504/7 1867/504/7 -f 1866/506/292 1867/504/292 1843/504/292 -f 1843/504/292 1846/506/292 1866/506/292 -f 1879/507/293 1866/506/293 1846/506/293 -f 1846/506/293 1873/507/293 1879/507/293 -f 1881/508/1 1879/507/1 1873/507/1 -f 1873/507/1 1874/508/1 1881/508/1 -f 1882/509/210 1881/512/210 1874/511/210 -f 1874/511/210 1845/510/210 1882/509/210 -f 1880/513/294 1882/509/294 1845/510/294 -f 1845/510/294 1844/514/294 1880/513/294 -f 1883/515/10 1875/502/10 1879/503/10 -f 1879/503/10 1881/516/10 1883/515/10 -f 1875/500/7 1883/517/7 1884/517/7 -f 1884/517/7 1876/500/7 1875/500/7 -f 1854/480/1 1853/480/1 1885/518/1 -f 1885/518/1 1886/518/1 1854/480/1 -f 1886/519/10 1880/474/10 1867/490/10 -f 1867/490/10 1854/491/10 1886/519/10 -f 1847/475/1 1850/476/1 1887/482/1 -f 1887/482/1 1888/481/1 1847/475/1 -f 1880/513/295 1886/520/295 1865/485/295 -f 1865/485/295 1864/513/295 1880/513/295 -f 1882/509/294 1880/513/294 1864/513/294 -f 1864/513/294 1872/509/294 1882/509/294 -f 1881/512/210 1882/509/210 1872/509/210 -f 1872/509/210 1869/512/210 1881/512/210 -f 1883/521/296 1881/512/296 1869/512/296 -f 1869/512/296 1868/521/296 1883/521/296 -f 1855/476/7 1858/475/7 1889/478/7 -f 1889/478/7 1890/477/7 1855/476/7 -f 1859/483/289 1862/484/289 1870/523/289 -f 1870/523/289 1871/522/289 1859/483/289 -f 1877/501/291 1859/483/291 1871/522/291 -f 1871/522/291 1863/524/291 1877/501/291 -f 1886/520/27 1885/527/27 1848/526/27 -f 1848/526/27 1847/525/27 1886/520/27 -f 1865/485/27 1886/520/27 1847/525/27 -f 1847/525/27 1888/528/27 1865/485/27 -f 1863/486/10 1865/487/10 1888/487/10 -f 1888/487/10 1887/486/10 1863/486/10 -f 1877/501/26 1863/524/26 1887/524/26 -f 1887/524/26 1850/501/26 1877/501/26 -f 1878/501/26 1877/501/26 1850/501/26 -f 1850/501/26 1849/501/26 1878/501/26 -f 1862/484/26 1861/485/26 1856/485/26 -f 1856/485/26 1855/484/26 1862/484/26 -f 1870/523/26 1862/484/26 1855/484/26 -f 1855/484/26 1890/523/26 1870/523/26 -f 1868/493/10 1870/494/10 1890/530/10 -f 1890/530/10 1889/529/10 1868/493/10 -f 1883/521/27 1868/521/27 1889/532/27 -f 1889/532/27 1858/531/27 1883/521/27 -f 1884/533/27 1883/521/27 1858/531/27 -f 1858/531/27 1857/531/27 1884/533/27 -f 1891/471/10 1892/474/10 1893/473/10 -f 1893/473/10 1894/472/10 1891/471/10 -f 1895/475/1 1896/478/1 1897/477/1 -f 1897/477/1 1898/476/1 1895/475/1 -f 1899/479/27 1900/479/27 1901/480/288 -f 1901/480/288 1902/480/288 1899/479/27 -f 1903/476/7 1904/482/7 1905/481/7 -f 1905/481/7 1906/475/7 1903/476/7 -f 1907/483/26 1908/483/26 1909/485/289 -f 1909/485/289 1910/484/289 1907/483/26 -f 1911/486/10 1912/488/10 1913/487/10 -f 1914/489/10 1899/492/10 1902/491/10 -f 1902/491/10 1915/490/10 1914/489/10 -f 1916/493/10 1917/495/10 1918/494/10 -f 1919/496/10 1918/494/10 1917/495/10 -f 1917/495/10 1920/497/10 1919/496/10 -f 1921/498/10 1894/472/10 1893/473/10 -f 1893/473/10 1922/499/10 1921/498/10 -f 1923/500/290 1924/500/290 1900/479/27 -f 1900/479/27 1899/479/27 1923/500/290 -f 1925/501/291 1926/501/291 1908/483/26 -f 1908/483/26 1907/483/26 1925/501/291 -f 1923/502/10 1899/492/10 1914/489/10 -f 1914/489/10 1927/503/10 1923/502/10 -f 1919/496/10 1920/497/10 1912/488/10 -f 1912/488/10 1911/486/10 1919/496/10 -f 1915/504/7 1928/505/7 1892/505/7 -f 1892/505/7 1891/504/7 1915/504/7 -f 1914/506/292 1915/504/292 1891/504/292 -f 1891/504/292 1894/506/292 1914/506/292 -f 1927/507/293 1914/506/293 1894/506/293 -f 1894/506/293 1921/507/293 1927/507/293 -f 1929/508/1 1927/507/1 1921/507/1 -f 1921/507/1 1922/508/1 1929/508/1 -f 1930/509/210 1929/512/210 1922/511/210 -f 1922/511/210 1893/510/210 1930/509/210 -f 1928/513/294 1930/509/294 1893/510/294 -f 1893/510/294 1892/514/294 1928/513/294 -f 1931/515/10 1923/502/10 1927/503/10 -f 1927/503/10 1929/516/10 1931/515/10 -f 1923/500/7 1931/517/7 1932/517/7 -f 1932/517/7 1924/500/7 1923/500/7 -f 1902/480/1 1901/480/1 1933/518/1 -f 1933/518/1 1934/518/1 1902/480/1 -f 1934/519/10 1928/474/10 1915/490/10 -f 1915/490/10 1902/491/10 1934/519/10 -f 1895/475/1 1898/476/1 1935/482/1 -f 1935/482/1 1936/481/1 1895/475/1 -f 1928/513/295 1934/520/295 1913/485/295 -f 1913/485/295 1912/513/295 1928/513/295 -f 1930/509/294 1928/513/294 1912/513/294 -f 1912/513/294 1920/509/294 1930/509/294 -f 1929/512/210 1930/509/210 1920/509/210 -f 1920/509/210 1917/512/210 1929/512/210 -f 1931/521/296 1929/512/296 1917/512/296 -f 1917/512/296 1916/521/296 1931/521/296 -f 1903/476/7 1906/475/7 1937/478/7 -f 1937/478/7 1938/477/7 1903/476/7 -f 1907/483/289 1910/484/289 1918/523/289 -f 1918/523/289 1919/522/289 1907/483/289 -f 1925/501/291 1907/483/291 1919/522/291 -f 1919/522/291 1911/524/291 1925/501/291 -f 1934/520/27 1933/527/27 1896/526/27 -f 1896/526/27 1895/525/27 1934/520/27 -f 1913/485/27 1934/520/27 1895/525/27 -f 1895/525/27 1936/528/27 1913/485/27 -f 1911/486/10 1913/487/10 1936/487/10 -f 1936/487/10 1935/486/10 1911/486/10 -f 1925/501/26 1911/524/26 1935/524/26 -f 1935/524/26 1898/501/26 1925/501/26 -f 1926/501/26 1925/501/26 1898/501/26 -f 1898/501/26 1897/501/26 1926/501/26 -f 1910/484/26 1909/485/26 1904/485/26 -f 1904/485/26 1903/484/26 1910/484/26 -f 1918/523/26 1910/484/26 1903/484/26 -f 1903/484/26 1938/523/26 1918/523/26 -f 1916/493/10 1918/494/10 1938/530/10 -f 1938/530/10 1937/529/10 1916/493/10 -f 1931/521/27 1916/521/27 1937/532/27 -f 1937/532/27 1906/531/27 1931/521/27 -f 1932/533/27 1931/521/27 1906/531/27 -f 1906/531/27 1905/531/27 1932/533/27 -f 1939/471/10 1940/474/10 1941/473/10 -f 1941/473/10 1942/472/10 1939/471/10 -f 1943/475/1 1944/478/1 1945/477/1 -f 1945/477/1 1946/476/1 1943/475/1 -f 1947/479/27 1948/479/27 1949/480/288 -f 1949/480/288 1950/480/288 1947/479/27 -f 1951/476/7 1952/482/7 1953/481/7 -f 1953/481/7 1954/475/7 1951/476/7 -f 1955/483/26 1956/483/26 1957/485/289 -f 1957/485/289 1958/484/289 1955/483/26 -f 1959/486/10 1960/488/10 1961/487/10 -f 1962/489/10 1947/492/10 1950/491/10 -f 1950/491/10 1963/490/10 1962/489/10 -f 1964/493/10 1965/495/10 1966/494/10 -f 1967/496/10 1966/494/10 1965/495/10 -f 1965/495/10 1968/497/10 1967/496/10 -f 1969/498/10 1942/472/10 1941/473/10 -f 1941/473/10 1970/499/10 1969/498/10 -f 1971/500/290 1972/500/290 1948/479/27 -f 1948/479/27 1947/479/27 1971/500/290 -f 1973/501/291 1974/501/291 1956/483/26 -f 1956/483/26 1955/483/26 1973/501/291 -f 1971/502/10 1947/492/10 1962/489/10 -f 1962/489/10 1975/503/10 1971/502/10 -f 1967/496/10 1968/497/10 1960/488/10 -f 1960/488/10 1959/486/10 1967/496/10 -f 1963/504/7 1976/505/7 1940/505/7 -f 1940/505/7 1939/504/7 1963/504/7 -f 1962/506/292 1963/504/292 1939/504/292 -f 1939/504/292 1942/506/292 1962/506/292 -f 1975/507/293 1962/506/293 1942/506/293 -f 1942/506/293 1969/507/293 1975/507/293 -f 1977/508/1 1975/507/1 1969/507/1 -f 1969/507/1 1970/508/1 1977/508/1 -f 1978/509/210 1977/512/210 1970/511/210 -f 1970/511/210 1941/510/210 1978/509/210 -f 1976/513/294 1978/509/294 1941/510/294 -f 1941/510/294 1940/514/294 1976/513/294 -f 1979/515/10 1971/502/10 1975/503/10 -f 1975/503/10 1977/516/10 1979/515/10 -f 1971/500/7 1979/517/7 1980/517/7 -f 1980/517/7 1972/500/7 1971/500/7 -f 1950/480/1 1949/480/1 1981/518/1 -f 1981/518/1 1982/518/1 1950/480/1 -f 1982/519/10 1976/474/10 1963/490/10 -f 1963/490/10 1950/491/10 1982/519/10 -f 1943/475/1 1946/476/1 1983/482/1 -f 1983/482/1 1984/481/1 1943/475/1 -f 1976/513/295 1982/520/295 1961/485/295 -f 1961/485/295 1960/513/295 1976/513/295 -f 1978/509/294 1976/513/294 1960/513/294 -f 1960/513/294 1968/509/294 1978/509/294 -f 1977/512/210 1978/509/210 1968/509/210 -f 1968/509/210 1965/512/210 1977/512/210 -f 1979/521/296 1977/512/296 1965/512/296 -f 1965/512/296 1964/521/296 1979/521/296 -f 1951/476/7 1954/475/7 1985/478/7 -f 1985/478/7 1986/477/7 1951/476/7 -f 1955/483/289 1958/484/289 1966/523/289 -f 1966/523/289 1967/522/289 1955/483/289 -f 1973/501/291 1955/483/291 1967/522/291 -f 1967/522/291 1959/524/291 1973/501/291 -f 1982/520/27 1981/527/27 1944/526/27 -f 1944/526/27 1943/525/27 1982/520/27 -f 1961/485/27 1982/520/27 1943/525/27 -f 1943/525/27 1984/528/27 1961/485/27 -f 1959/486/10 1961/487/10 1984/487/10 -f 1984/487/10 1983/486/10 1959/486/10 -f 1973/501/26 1959/524/26 1983/524/26 -f 1983/524/26 1946/501/26 1973/501/26 -f 1974/501/26 1973/501/26 1946/501/26 -f 1946/501/26 1945/501/26 1974/501/26 -f 1958/484/26 1957/485/26 1952/485/26 -f 1952/485/26 1951/484/26 1958/484/26 -f 1966/523/26 1958/484/26 1951/484/26 -f 1951/484/26 1986/523/26 1966/523/26 -f 1964/493/10 1966/494/10 1986/530/10 -f 1986/530/10 1985/529/10 1964/493/10 -f 1979/521/27 1964/521/27 1985/532/27 -f 1985/532/27 1954/531/27 1979/521/27 -f 1980/533/27 1979/521/27 1954/531/27 -f 1954/531/27 1953/531/27 1980/533/27 -f 1987/471/10 1988/472/10 1989/473/10 -f 1989/473/10 1990/474/10 1987/471/10 -f 1991/475/7 1992/476/7 1993/477/7 -f 1993/477/7 1994/478/7 1991/475/7 -f 1995/479/27 1996/480/290 1997/480/290 -f 1997/480/290 1998/479/27 1995/479/27 -f 1999/476/1 2000/475/1 2001/481/1 -f 2001/481/1 2002/482/1 1999/476/1 -f 2003/483/26 2004/484/291 2005/485/291 -f 2005/485/291 2006/483/26 2003/483/26 -f 2007/486/10 2008/487/10 2009/488/10 -f 2010/489/10 2011/490/10 1996/491/10 -f 1996/491/10 1995/492/10 2010/489/10 -f 2012/493/10 2013/494/10 2014/495/10 -f 2015/496/10 2016/497/10 2014/495/10 -f 2014/495/10 2013/494/10 2015/496/10 -f 2017/498/10 2018/499/10 1989/473/10 -f 1989/473/10 1988/472/10 2017/498/10 -f 2019/500/288 1995/479/27 1998/479/27 -f 1998/479/27 2020/500/288 2019/500/288 -f 2021/501/289 2003/483/26 2006/483/26 -f 2006/483/26 2022/501/289 2021/501/289 -f 2019/502/10 2023/503/10 2010/489/10 -f 2010/489/10 1995/492/10 2019/502/10 -f 2015/496/10 2007/486/10 2009/488/10 -f 2009/488/10 2016/497/10 2015/496/10 -f 2011/504/1 1987/504/1 1990/505/1 -f 1990/505/1 2024/505/1 2011/504/1 -f 2010/506/293 1988/506/293 1987/504/293 -f 1987/504/293 2011/504/293 2010/506/293 -f 2023/507/292 2017/507/292 1988/506/292 -f 1988/506/292 2010/506/292 2023/507/292 -f 2025/508/7 2018/508/7 2017/507/7 -f 2017/507/7 2023/507/7 2025/508/7 -f 2026/509/203 1989/510/203 2018/511/203 -f 2018/511/203 2025/512/203 2026/509/203 -f 2024/513/296 1990/514/296 1989/510/296 -f 1989/510/296 2026/509/296 2024/513/296 -f 2027/515/10 2025/516/10 2023/503/10 -f 2023/503/10 2019/502/10 2027/515/10 -f 2019/500/1 2020/500/1 2028/517/1 -f 2028/517/1 2027/517/1 2019/500/1 -f 1996/480/7 2029/518/7 2030/518/7 -f 2030/518/7 1997/480/7 1996/480/7 -f 2029/519/10 1996/491/10 2011/490/10 -f 2011/490/10 2024/474/10 2029/519/10 -f 1991/475/7 2031/481/7 2032/482/7 -f 2032/482/7 1992/476/7 1991/475/7 -f 2024/513/314 2009/513/314 2008/485/314 -f 2008/485/314 2029/520/314 2024/513/314 -f 2026/509/296 2016/509/296 2009/513/296 -f 2009/513/296 2024/513/296 2026/509/296 -f 2025/512/203 2014/512/203 2016/509/203 -f 2016/509/203 2026/509/203 2025/512/203 -f 2027/521/294 2012/521/294 2014/512/294 -f 2014/512/294 2025/512/294 2027/521/294 -f 1999/476/1 2033/477/1 2034/478/1 -f 2034/478/1 2000/475/1 1999/476/1 -f 2003/483/291 2015/522/291 2013/523/291 -f 2013/523/291 2004/484/291 2003/483/291 -f 2021/501/289 2007/524/289 2015/522/289 -f 2015/522/289 2003/483/289 2021/501/289 -f 2029/520/27 1991/525/27 1994/526/27 -f 1994/526/27 2030/527/27 2029/520/27 -f 2008/485/27 2031/528/27 1991/525/27 -f 1991/525/27 2029/520/27 2008/485/27 -f 2007/486/10 2032/486/10 2031/487/10 -f 2031/487/10 2008/487/10 2007/486/10 -f 2021/501/26 1992/501/26 2032/524/26 -f 2032/524/26 2007/524/26 2021/501/26 -f 2022/501/26 1993/501/26 1992/501/26 -f 1992/501/26 2021/501/26 2022/501/26 -f 2004/484/26 1999/484/26 2002/485/26 -f 2002/485/26 2005/485/26 2004/484/26 -f 2013/523/26 2033/523/26 1999/484/26 -f 1999/484/26 2004/484/26 2013/523/26 -f 2012/493/10 2034/529/10 2033/530/10 -f 2033/530/10 2013/494/10 2012/493/10 -f 2027/521/27 2000/531/27 2034/532/27 -f 2034/532/27 2012/521/27 2027/521/27 -f 2028/533/27 2001/531/27 2000/531/27 -f 2000/531/27 2027/521/27 2028/533/27 -f 2035/471/10 2036/472/10 2037/473/10 -f 2037/473/10 2038/474/10 2035/471/10 -f 2039/475/7 2040/476/7 2041/477/7 -f 2041/477/7 2042/478/7 2039/475/7 -f 2043/479/27 2044/480/290 2045/480/290 -f 2045/480/290 2046/479/27 2043/479/27 -f 2047/476/1 2048/475/1 2049/481/1 -f 2049/481/1 2050/482/1 2047/476/1 -f 2051/483/26 2052/484/291 2053/485/291 -f 2053/485/291 2054/483/26 2051/483/26 -f 2055/486/10 2056/487/10 2057/488/10 -f 2058/489/10 2059/490/10 2044/491/10 -f 2044/491/10 2043/492/10 2058/489/10 -f 2060/493/10 2061/494/10 2062/495/10 -f 2063/496/10 2064/497/10 2062/495/10 -f 2062/495/10 2061/494/10 2063/496/10 -f 2065/498/10 2066/499/10 2037/473/10 -f 2037/473/10 2036/472/10 2065/498/10 -f 2067/500/288 2043/479/27 2046/479/27 -f 2046/479/27 2068/500/288 2067/500/288 -f 2069/501/289 2051/483/26 2054/483/26 -f 2054/483/26 2070/501/289 2069/501/289 -f 2067/502/10 2071/503/10 2058/489/10 -f 2058/489/10 2043/492/10 2067/502/10 -f 2063/496/10 2055/486/10 2057/488/10 -f 2057/488/10 2064/497/10 2063/496/10 -f 2059/504/1 2035/504/1 2038/505/1 -f 2038/505/1 2072/505/1 2059/504/1 -f 2058/506/293 2036/506/293 2035/504/293 -f 2035/504/293 2059/504/293 2058/506/293 -f 2071/507/292 2065/507/292 2036/506/292 -f 2036/506/292 2058/506/292 2071/507/292 -f 2073/508/7 2066/508/7 2065/507/7 -f 2065/507/7 2071/507/7 2073/508/7 -f 2074/509/203 2037/510/203 2066/511/203 -f 2066/511/203 2073/512/203 2074/509/203 -f 2072/513/296 2038/514/296 2037/510/296 -f 2037/510/296 2074/509/296 2072/513/296 -f 2075/515/10 2073/516/10 2071/503/10 -f 2071/503/10 2067/502/10 2075/515/10 -f 2067/500/1 2068/500/1 2076/517/1 -f 2076/517/1 2075/517/1 2067/500/1 -f 2044/480/7 2077/518/7 2078/518/7 -f 2078/518/7 2045/480/7 2044/480/7 -f 2077/519/10 2044/491/10 2059/490/10 -f 2059/490/10 2072/474/10 2077/519/10 -f 2039/475/7 2079/481/7 2080/482/7 -f 2080/482/7 2040/476/7 2039/475/7 -f 2072/513/314 2057/513/314 2056/485/314 -f 2056/485/314 2077/520/314 2072/513/314 -f 2074/509/296 2064/509/296 2057/513/296 -f 2057/513/296 2072/513/296 2074/509/296 -f 2073/512/203 2062/512/203 2064/509/203 -f 2064/509/203 2074/509/203 2073/512/203 -f 2075/521/294 2060/521/294 2062/512/294 -f 2062/512/294 2073/512/294 2075/521/294 -f 2047/476/1 2081/477/1 2082/478/1 -f 2082/478/1 2048/475/1 2047/476/1 -f 2051/483/291 2063/522/291 2061/523/291 -f 2061/523/291 2052/484/291 2051/483/291 -f 2069/501/289 2055/524/289 2063/522/298 -f 2063/522/298 2051/483/298 2069/501/289 -f 2077/520/27 2039/525/27 2042/526/27 -f 2042/526/27 2078/527/27 2077/520/27 -f 2056/485/27 2079/528/27 2039/525/27 -f 2039/525/27 2077/520/27 2056/485/27 -f 2055/486/10 2080/486/10 2079/487/10 -f 2079/487/10 2056/487/10 2055/486/10 -f 2069/501/26 2040/501/26 2080/524/26 -f 2080/524/26 2055/524/26 2069/501/26 -f 2070/501/26 2041/501/26 2040/501/26 -f 2040/501/26 2069/501/26 2070/501/26 -f 2052/484/26 2047/484/26 2050/485/26 -f 2050/485/26 2053/485/26 2052/484/26 -f 2061/523/26 2081/523/26 2047/484/26 -f 2047/484/26 2052/484/26 2061/523/26 -f 2060/493/10 2082/529/10 2081/530/10 -f 2081/530/10 2061/494/10 2060/493/10 -f 2075/521/27 2048/531/27 2082/532/27 -f 2082/532/27 2060/521/27 2075/521/27 -f 2076/533/27 2049/531/27 2048/531/27 -f 2048/531/27 2075/521/27 2076/533/27 -f 2083/471/7 2084/472/7 2085/473/7 -f 2085/473/7 2086/474/7 2083/471/7 -f 2087/475/4 2088/476/4 2089/477/4 -f 2089/477/4 2090/478/4 2087/475/4 -f 2091/479/27 2092/480/301 2093/480/301 -f 2093/480/301 2094/479/27 2091/479/27 -f 2095/476/10 2096/475/10 2097/481/10 -f 2097/481/10 2098/482/10 2095/476/10 -f 2099/483/26 2100/484/302 2101/485/302 -f 2101/485/302 2102/483/26 2099/483/26 -f 2103/486/7 2104/487/7 2105/488/7 -f 2106/489/7 2107/490/7 2092/491/7 -f 2092/491/7 2091/492/7 2106/489/7 -f 2108/493/7 2109/494/7 2110/495/7 -f 2111/496/7 2112/497/7 2110/495/7 -f 2110/495/7 2109/494/7 2111/496/7 -f 2113/498/7 2114/499/7 2085/473/7 -f 2085/473/7 2084/472/7 2113/498/7 -f 2115/500/299 2091/479/27 2094/479/27 -f 2094/479/27 2116/500/299 2115/500/299 -f 2117/501/300 2099/483/26 2102/483/26 -f 2102/483/26 2118/501/300 2117/501/300 -f 2115/502/7 2119/503/7 2106/489/7 -f 2106/489/7 2091/492/7 2115/502/7 -f 2111/496/7 2103/486/7 2105/488/7 -f 2105/488/7 2112/497/7 2111/496/7 -f 2107/504/10 2083/504/10 2086/505/10 -f 2086/505/10 2120/505/10 2107/504/10 -f 2106/506/304 2084/506/304 2083/504/304 -f 2083/504/304 2107/504/304 2106/506/304 -f 2119/507/303 2113/507/303 2084/506/303 -f 2084/506/303 2106/506/303 2119/507/303 -f 2121/508/4 2114/508/4 2113/507/4 -f 2113/507/4 2119/507/4 2121/508/4 -f 2122/509/309 2085/510/309 2114/511/309 -f 2114/511/309 2121/512/309 2122/509/309 -f 2120/513/310 2086/514/310 2085/510/310 -f 2085/510/310 2122/509/310 2120/513/310 -f 2123/515/7 2121/516/7 2119/503/7 -f 2119/503/7 2115/502/7 2123/515/7 -f 2115/500/10 2116/500/10 2124/517/10 -f 2124/517/10 2123/517/10 2115/500/10 -f 2092/480/4 2125/518/4 2126/518/4 -f 2126/518/4 2093/480/4 2092/480/4 -f 2125/519/7 2092/491/7 2107/490/7 -f 2107/490/7 2120/474/7 2125/519/7 -f 2087/475/4 2127/481/4 2128/482/4 -f 2128/482/4 2088/476/4 2087/475/4 -f 2120/513/311 2105/513/311 2104/485/311 -f 2104/485/311 2125/520/311 2120/513/311 -f 2122/509/310 2112/509/310 2105/513/310 -f 2105/513/310 2120/513/310 2122/509/310 -f 2121/512/309 2110/512/309 2112/509/309 -f 2112/509/309 2122/509/309 2121/512/309 -f 2123/521/312 2108/521/312 2110/512/312 -f 2110/512/312 2121/512/312 2123/521/312 -f 2095/476/10 2129/477/10 2130/478/10 -f 2130/478/10 2096/475/10 2095/476/10 -f 2099/483/302 2111/522/302 2109/523/302 -f 2109/523/302 2100/484/302 2099/483/302 -f 2117/501/300 2103/524/300 2111/522/300 -f 2111/522/300 2099/483/300 2117/501/300 -f 2125/520/27 2087/525/27 2090/526/27 -f 2090/526/27 2126/527/27 2125/520/27 -f 2104/485/27 2127/528/27 2087/525/27 -f 2087/525/27 2125/520/27 2104/485/27 -f 2103/486/7 2128/486/7 2127/487/7 -f 2127/487/7 2104/487/7 2103/486/7 -f 2117/501/26 2088/501/26 2128/524/26 -f 2128/524/26 2103/524/26 2117/501/26 -f 2118/501/26 2089/501/26 2088/501/26 -f 2088/501/26 2117/501/26 2118/501/26 -f 2100/484/26 2095/484/26 2098/485/26 -f 2098/485/26 2101/485/26 2100/484/26 -f 2109/523/26 2129/523/26 2095/484/26 -f 2095/484/26 2100/484/26 2109/523/26 -f 2108/493/7 2130/529/7 2129/530/7 -f 2129/530/7 2109/494/7 2108/493/7 -f 2123/521/27 2096/531/27 2130/532/27 -f 2130/532/27 2108/521/27 2123/521/27 -f 2124/533/27 2097/531/27 2096/531/27 -f 2096/531/27 2123/521/27 2124/533/27 -f 2131/471/7 2132/472/7 2133/473/7 -f 2133/473/7 2134/474/7 2131/471/7 -f 2135/475/4 2136/476/4 2137/477/4 -f 2137/477/4 2138/478/4 2135/475/4 -f 2139/479/27 2140/480/301 2141/480/301 -f 2141/480/301 2142/479/27 2139/479/27 -f 2143/476/10 2144/475/10 2145/481/10 -f 2145/481/10 2146/482/10 2143/476/10 -f 2147/483/26 2148/484/302 2149/485/302 -f 2149/485/302 2150/483/26 2147/483/26 -f 2151/486/7 2152/487/7 2153/488/7 -f 2154/489/7 2155/490/7 2140/491/7 -f 2140/491/7 2139/492/7 2154/489/7 -f 2156/493/7 2157/494/7 2158/495/7 -f 2159/496/7 2160/497/7 2158/495/7 -f 2158/495/7 2157/494/7 2159/496/7 -f 2161/498/7 2162/499/7 2133/473/7 -f 2133/473/7 2132/472/7 2161/498/7 -f 2163/500/299 2139/479/27 2142/479/27 -f 2142/479/27 2164/500/299 2163/500/299 -f 2165/501/300 2147/483/26 2150/483/26 -f 2150/483/26 2166/501/300 2165/501/300 -f 2163/502/7 2167/503/7 2154/489/7 -f 2154/489/7 2139/492/7 2163/502/7 -f 2159/496/7 2151/486/7 2153/488/7 -f 2153/488/7 2160/497/7 2159/496/7 -f 2155/504/10 2131/504/10 2134/505/10 -f 2134/505/10 2168/505/10 2155/504/10 -f 2154/506/304 2132/506/304 2131/504/304 -f 2131/504/304 2155/504/304 2154/506/304 -f 2167/507/303 2161/507/303 2132/506/303 -f 2132/506/303 2154/506/303 2167/507/303 -f 2169/508/4 2162/508/4 2161/507/4 -f 2161/507/4 2167/507/4 2169/508/4 -f 2170/509/309 2133/510/309 2162/511/309 -f 2162/511/309 2169/512/309 2170/509/309 -f 2168/513/310 2134/514/310 2133/510/310 -f 2133/510/310 2170/509/310 2168/513/310 -f 2171/515/7 2169/516/7 2167/503/7 -f 2167/503/7 2163/502/7 2171/515/7 -f 2163/500/10 2164/500/10 2172/517/10 -f 2172/517/10 2171/517/10 2163/500/10 -f 2140/480/4 2173/518/4 2174/518/4 -f 2174/518/4 2141/480/4 2140/480/4 -f 2173/519/7 2140/491/7 2155/490/7 -f 2155/490/7 2168/474/7 2173/519/7 -f 2135/475/4 2175/481/4 2176/482/4 -f 2176/482/4 2136/476/4 2135/475/4 -f 2168/513/311 2153/513/311 2152/485/311 -f 2152/485/311 2173/520/311 2168/513/311 -f 2170/509/310 2160/509/310 2153/513/310 -f 2153/513/310 2168/513/310 2170/509/310 -f 2169/512/309 2158/512/309 2160/509/309 -f 2160/509/309 2170/509/309 2169/512/309 -f 2171/521/312 2156/521/312 2158/512/312 -f 2158/512/312 2169/512/312 2171/521/312 -f 2143/476/10 2177/477/10 2178/478/10 -f 2178/478/10 2144/475/10 2143/476/10 -f 2147/483/302 2159/522/302 2157/523/302 -f 2157/523/302 2148/484/302 2147/483/302 -f 2165/501/300 2151/524/300 2159/522/300 -f 2159/522/300 2147/483/300 2165/501/300 -f 2173/520/27 2135/525/27 2138/526/27 -f 2138/526/27 2174/527/27 2173/520/27 -f 2152/485/27 2175/528/27 2135/525/27 -f 2135/525/27 2173/520/27 2152/485/27 -f 2151/486/7 2176/486/7 2175/487/7 -f 2175/487/7 2152/487/7 2151/486/7 -f 2165/501/26 2136/501/26 2176/524/26 -f 2176/524/26 2151/524/26 2165/501/26 -f 2166/501/26 2137/501/26 2136/501/26 -f 2136/501/26 2165/501/26 2166/501/26 -f 2148/484/26 2143/484/26 2146/485/26 -f 2146/485/26 2149/485/26 2148/484/26 -f 2157/523/26 2177/523/26 2143/484/26 -f 2143/484/26 2148/484/26 2157/523/26 -f 2156/493/7 2178/529/7 2177/530/7 -f 2177/530/7 2157/494/7 2156/493/7 -f 2171/521/27 2144/531/27 2178/532/27 -f 2178/532/27 2156/521/27 2171/521/27 -f 2172/533/27 2145/531/27 2144/531/27 -f 2144/531/27 2171/521/27 2172/533/27 -f 2179/471/7 2180/474/7 2181/473/7 -f 2181/473/7 2182/472/7 2179/471/7 -f 2183/475/10 2184/478/10 2185/477/10 -f 2185/477/10 2186/476/10 2183/475/10 -f 2187/479/27 2188/479/27 2189/480/299 -f 2189/480/299 2190/480/299 2187/479/27 -f 2191/476/4 2192/482/4 2193/481/4 -f 2193/481/4 2194/475/4 2191/476/4 -f 2195/483/26 2196/483/26 2197/485/300 -f 2197/485/300 2198/484/300 2195/483/26 -f 2199/486/7 2200/488/7 2201/487/7 -f 2202/489/7 2187/492/7 2190/491/7 -f 2190/491/7 2203/490/7 2202/489/7 -f 2204/493/7 2205/495/7 2206/494/7 -f 2207/496/7 2206/494/7 2205/495/7 -f 2205/495/7 2208/497/7 2207/496/7 -f 2209/498/7 2182/472/7 2181/473/7 -f 2181/473/7 2210/499/7 2209/498/7 -f 2211/500/301 2212/500/301 2188/479/27 -f 2188/479/27 2187/479/27 2211/500/301 -f 2213/501/302 2214/501/302 2196/483/26 -f 2196/483/26 2195/483/26 2213/501/302 -f 2211/502/7 2187/492/7 2202/489/7 -f 2202/489/7 2215/503/7 2211/502/7 -f 2207/496/7 2208/497/7 2200/488/7 -f 2200/488/7 2199/486/7 2207/496/7 -f 2203/504/4 2216/505/4 2180/505/4 -f 2180/505/4 2179/504/4 2203/504/4 -f 2202/506/303 2203/504/303 2179/504/303 -f 2179/504/303 2182/506/303 2202/506/303 -f 2215/507/304 2202/506/304 2182/506/304 -f 2182/506/304 2209/507/304 2215/507/304 -f 2217/508/10 2215/507/10 2209/507/10 -f 2209/507/10 2210/508/10 2217/508/10 -f 2218/509/305 2217/512/305 2210/511/305 -f 2210/511/305 2181/510/305 2218/509/305 -f 2216/513/306 2218/509/306 2181/510/306 -f 2181/510/306 2180/514/306 2216/513/306 -f 2219/515/7 2211/502/7 2215/503/7 -f 2215/503/7 2217/516/7 2219/515/7 -f 2211/500/4 2219/517/4 2220/517/4 -f 2220/517/4 2212/500/4 2211/500/4 -f 2190/480/10 2189/480/10 2221/518/10 -f 2221/518/10 2222/518/10 2190/480/10 -f 2222/519/7 2216/474/7 2203/490/7 -f 2203/490/7 2190/491/7 2222/519/7 -f 2183/475/10 2186/476/10 2223/482/10 -f 2223/482/10 2224/481/10 2183/475/10 -f 2216/513/307 2222/520/307 2201/485/307 -f 2201/485/307 2200/513/307 2216/513/307 -f 2218/509/306 2216/513/306 2200/513/306 -f 2200/513/306 2208/509/306 2218/509/306 -f 2217/512/305 2218/509/305 2208/509/305 -f 2208/509/305 2205/512/305 2217/512/305 -f 2219/521/308 2217/512/308 2205/512/308 -f 2205/512/308 2204/521/308 2219/521/308 -f 2191/476/4 2194/475/4 2225/478/4 -f 2225/478/4 2226/477/4 2191/476/4 -f 2195/483/300 2198/484/300 2206/523/300 -f 2206/523/300 2207/522/300 2195/483/300 -f 2213/501/302 2195/483/302 2207/522/302 -f 2207/522/302 2199/524/302 2213/501/302 -f 2222/520/27 2221/527/27 2184/526/27 -f 2184/526/27 2183/525/27 2222/520/27 -f 2201/485/27 2222/520/27 2183/525/27 -f 2183/525/27 2224/528/27 2201/485/27 -f 2199/486/7 2201/487/7 2224/487/7 -f 2224/487/7 2223/486/7 2199/486/7 -f 2213/501/26 2199/524/26 2223/524/26 -f 2223/524/26 2186/501/26 2213/501/26 -f 2214/501/26 2213/501/26 2186/501/26 -f 2186/501/26 2185/501/26 2214/501/26 -f 2198/484/26 2197/485/26 2192/485/26 -f 2192/485/26 2191/484/26 2198/484/26 -f 2206/523/26 2198/484/26 2191/484/26 -f 2191/484/26 2226/523/26 2206/523/26 -f 2204/493/7 2206/494/7 2226/530/7 -f 2226/530/7 2225/529/7 2204/493/7 -f 2219/521/27 2204/521/27 2225/532/27 -f 2225/532/27 2194/531/27 2219/521/27 -f 2220/533/27 2219/521/27 2194/531/27 -f 2194/531/27 2193/531/27 2220/533/27 -f 2227/471/10 2228/472/10 2229/473/10 -f 2229/473/10 2230/474/10 2227/471/10 -f 2231/475/7 2232/476/7 2233/477/7 -f 2233/477/7 2234/478/7 2231/475/7 -f 2235/479/27 2236/480/290 2237/480/290 -f 2237/480/290 2238/479/27 2235/479/27 -f 2239/476/1 2240/475/1 2241/481/1 -f 2241/481/1 2242/482/1 2239/476/1 -f 2243/483/26 2244/484/291 2245/485/291 -f 2245/485/291 2246/483/26 2243/483/26 -f 2247/486/10 2248/487/10 2249/488/10 -f 2250/489/10 2251/490/10 2236/491/10 -f 2236/491/10 2235/492/10 2250/489/10 -f 2252/493/10 2253/494/10 2254/495/10 -f 2255/496/10 2256/497/10 2254/495/10 -f 2254/495/10 2253/494/10 2255/496/10 -f 2257/498/10 2258/499/10 2229/473/10 -f 2229/473/10 2228/472/10 2257/498/10 -f 2259/500/288 2235/479/27 2238/479/27 -f 2238/479/27 2260/500/288 2259/500/288 -f 2261/501/289 2243/483/26 2246/483/26 -f 2246/483/26 2262/501/289 2261/501/289 -f 2259/502/10 2263/503/10 2250/489/10 -f 2250/489/10 2235/492/10 2259/502/10 -f 2255/496/10 2247/486/10 2249/488/10 -f 2249/488/10 2256/497/10 2255/496/10 -f 2251/504/1 2227/504/1 2230/505/1 -f 2230/505/1 2264/505/1 2251/504/1 -f 2250/506/293 2228/506/293 2227/504/293 -f 2227/504/293 2251/504/293 2250/506/293 -f 2263/507/292 2257/507/292 2228/506/292 -f 2228/506/292 2250/506/292 2263/507/292 -f 2265/508/7 2258/508/7 2257/507/7 -f 2257/507/7 2263/507/7 2265/508/7 -f 2266/509/203 2229/510/203 2258/511/203 -f 2258/511/203 2265/512/203 2266/509/203 -f 2264/513/296 2230/514/296 2229/510/296 -f 2229/510/296 2266/509/296 2264/513/296 -f 2267/515/10 2265/516/10 2263/503/10 -f 2263/503/10 2259/502/10 2267/515/10 -f 2259/500/1 2260/500/1 2268/517/1 -f 2268/517/1 2267/517/1 2259/500/1 -f 2236/480/7 2269/518/7 2270/518/7 -f 2270/518/7 2237/480/7 2236/480/7 -f 2269/519/10 2236/491/10 2251/490/10 -f 2251/490/10 2264/474/10 2269/519/10 -f 2231/475/7 2271/481/7 2272/482/7 -f 2272/482/7 2232/476/7 2231/475/7 -f 2264/513/314 2249/513/314 2248/485/314 -f 2248/485/314 2269/520/314 2264/513/314 -f 2266/509/296 2256/509/296 2249/513/296 -f 2249/513/296 2264/513/296 2266/509/296 -f 2265/512/203 2254/512/203 2256/509/203 -f 2256/509/203 2266/509/203 2265/512/203 -f 2267/521/294 2252/521/294 2254/512/294 -f 2254/512/294 2265/512/294 2267/521/294 -f 2239/476/1 2273/477/1 2274/478/1 -f 2274/478/1 2240/475/1 2239/476/1 -f 2243/483/297 2255/522/297 2253/523/291 -f 2253/523/291 2244/484/291 2243/483/297 -f 2261/501/289 2247/524/289 2255/522/289 -f 2255/522/289 2243/483/289 2261/501/289 -f 2269/520/27 2231/525/27 2234/526/27 -f 2234/526/27 2270/527/27 2269/520/27 -f 2248/485/27 2271/528/27 2231/525/27 -f 2231/525/27 2269/520/27 2248/485/27 -f 2247/486/10 2272/486/10 2271/487/10 -f 2271/487/10 2248/487/10 2247/486/10 -f 2261/501/26 2232/501/26 2272/524/26 -f 2272/524/26 2247/524/26 2261/501/26 -f 2262/501/26 2233/501/26 2232/501/26 -f 2232/501/26 2261/501/26 2262/501/26 -f 2244/484/26 2239/484/26 2242/485/26 -f 2242/485/26 2245/485/26 2244/484/26 -f 2253/523/26 2273/523/26 2239/484/26 -f 2239/484/26 2244/484/26 2253/523/26 -f 2252/493/10 2274/529/10 2273/530/10 -f 2273/530/10 2253/494/10 2252/493/10 -f 2267/521/27 2240/531/27 2274/532/27 -f 2274/532/27 2252/521/27 2267/521/27 -f 2268/533/27 2241/531/27 2240/531/27 -f 2240/531/27 2267/521/27 2268/533/27 -f 2275/534/4 2276/535/4 2277/536/4 -f 2277/536/4 2278/537/4 2275/534/4 -f 2279/538/4 2280/539/4 2281/540/4 -f 2281/540/4 2282/541/4 2279/538/4 -f 2283/542/4 2284/543/4 2276/535/4 -f 2276/535/4 2275/534/4 2283/542/4 -f 2280/539/4 2278/537/4 2277/536/4 -f 2277/536/4 2281/540/4 2280/539/4 -f 2285/544/315 2286/545/315 2287/546/316 -f 2287/546/316 2288/547/316 2285/544/315 -f 2286/548/4 2289/549/4 2290/550/4 -f 2290/550/4 2287/551/4 2286/548/4 -f 2289/552/317 2291/553/317 2292/554/318 -f 2292/554/318 2290/555/318 2289/552/317 -f 2288/547/316 2287/546/316 2293/556/319 -f 2293/556/319 2294/557/319 2288/547/316 -f 2287/551/4 2290/550/4 2295/558/4 -f 2295/558/4 2293/559/4 2287/551/4 -f 2290/555/318 2292/554/318 2296/560/320 -f 2296/560/320 2295/561/320 2290/555/318 -f 2294/557/319 2293/556/319 2297/562/27 -f 2297/562/27 2298/563/27 2294/557/319 -f 2293/559/4 2295/558/4 2299/564/4 -f 2299/564/4 2297/565/4 2293/559/4 -f 2295/561/320 2296/560/320 2300/566/26 -f 2300/566/26 2299/567/26 2295/561/320 -f 2298/563/27 2297/562/27 2301/556/321 -f 2301/556/321 2302/557/321 2298/563/27 -f 2297/565/4 2299/564/4 2303/568/4 -f 2303/568/4 2301/569/4 2297/565/4 -f 2299/567/26 2300/566/26 2304/560/322 -f 2304/560/322 2303/561/322 2299/567/26 -f 2302/557/321 2301/556/321 2305/546/323 -f 2305/546/323 2306/547/323 2302/557/321 -f 2301/569/4 2303/568/4 2307/570/4 -f 2307/570/4 2305/571/4 2301/569/4 -f 2303/561/322 2304/560/322 2308/554/324 -f 2308/554/324 2307/555/324 2303/561/322 -f 2306/547/323 2305/546/323 2309/545/325 -f 2309/545/325 2310/544/325 2306/547/323 -f 2305/571/4 2307/570/4 2311/572/4 -f 2311/572/4 2309/573/4 2305/571/4 -f 2307/555/324 2308/554/324 2312/553/326 -f 2312/553/326 2311/552/326 2307/555/324 -f 2313/574/327 2314/575/327 2315/576/327 -f 2315/576/327 2316/577/327 2313/574/327 -f 2317/578/328 2313/579/328 2316/580/328 -f 2316/580/328 2318/581/328 2317/578/328 -f 2319/579/329 2317/578/329 2318/581/329 -f 2318/581/329 2320/580/329 2319/579/329 -f 2319/578/330 2320/581/330 2315/580/330 -f 2315/580/330 2314/579/330 2319/578/330 -f 2321/582/331 2316/577/331 2315/576/331 -f 2315/576/331 2322/583/332 2321/582/331 -f 2318/581/333 2316/580/333 2321/584/333 -f 2321/584/333 2323/585/333 2318/581/333 -f 2324/584/334 2320/580/334 2318/581/334 -f 2318/581/334 2323/585/334 2324/584/334 -f 2322/584/335 2315/580/335 2320/581/335 -f 2320/581/335 2324/585/335 2322/584/335 -f 2325/586/336 2326/587/26 2327/588/26 -f 2327/588/26 2328/589/336 2325/586/336 -f 2328/590/1 2327/591/1 2329/592/1 -f 2329/592/1 2330/593/1 2328/590/1 -f 2330/589/337 2329/588/27 2331/587/27 -f 2331/587/27 2332/586/337 2330/589/337 -f 2327/588/26 2326/587/26 2333/594/338 -f 2333/594/338 2334/595/338 2327/588/26 -f 2329/592/1 2327/591/1 2334/596/1 -f 2334/596/1 2335/597/1 2329/592/1 -f 2331/587/27 2329/588/27 2335/595/339 -f 2335/595/339 2336/594/339 2331/587/27 -f 2337/586/340 2338/587/26 2339/588/26 -f 2339/588/26 2340/589/340 2337/586/340 -f 2340/590/4 2339/591/4 2341/592/4 -f 2341/592/4 2342/593/4 2340/590/4 -f 2342/589/341 2341/588/27 2343/587/27 -f 2343/587/27 2344/586/342 2342/589/341 -f 2339/588/26 2338/587/26 2345/594/343 -f 2345/594/343 2346/595/343 2339/588/26 -f 2341/592/4 2339/591/4 2346/596/4 -f 2346/596/4 2347/597/4 2341/592/4 -f 2343/587/27 2341/588/27 2347/595/344 -f 2347/595/344 2348/594/344 2343/587/27 -f 2347/598/1 2346/596/1 2345/599/1 -f 2345/599/1 2348/600/1 2347/598/1 -f 2349/574/345 2350/577/345 2351/576/345 -f 2351/576/345 2352/575/345 2349/574/345 -f 2353/578/346 2354/581/346 2350/580/346 -f 2350/580/346 2349/579/346 2353/578/346 -f 2355/579/347 2356/580/347 2354/581/347 -f 2354/581/347 2353/578/347 2355/579/347 -f 2355/578/348 2352/579/348 2351/580/348 -f 2351/580/348 2356/581/348 2355/578/348 -f 2357/582/175 2358/583/349 2351/576/349 -f 2351/576/349 2350/577/349 2357/582/175 -f 2354/581/350 2359/585/350 2357/584/350 -f 2357/584/350 2350/580/350 2354/581/350 -f 2360/584/351 2359/585/351 2354/581/351 -f 2354/581/351 2356/580/351 2360/584/351 -f 2358/584/352 2360/585/352 2356/581/353 -f 2356/581/353 2351/580/352 2358/584/352 -f 2361/586/340 2362/589/340 2363/588/26 -f 2363/588/26 2364/587/26 2361/586/340 -f 2362/590/10 2365/593/10 2366/592/10 -f 2366/592/10 2363/591/10 2362/590/10 -f 2365/589/341 2367/586/342 2368/587/27 -f 2368/587/27 2366/588/27 2365/589/341 -f 2363/588/26 2369/595/343 2370/594/343 -f 2370/594/343 2364/587/26 2363/588/26 -f 2366/592/10 2371/597/10 2369/596/10 -f 2369/596/10 2363/591/10 2366/592/10 -f 2368/587/27 2372/594/344 2371/595/344 -f 2371/595/344 2366/588/27 2368/587/27 -f 2370/599/1 2369/596/1 2371/598/1 -f 2371/598/1 2372/600/1 2370/599/1 -f 2373/586/354 2374/589/340 2375/588/26 -f 2375/588/26 2376/587/26 2373/586/354 -f 2374/590/10 2377/593/10 2378/592/10 -f 2378/592/10 2375/591/10 2374/590/10 -f 2377/589/342 2379/586/341 2380/587/27 -f 2380/587/27 2378/588/27 2377/589/342 -f 2375/588/26 2381/595/355 2382/594/355 -f 2382/594/355 2376/587/26 2375/588/26 -f 2378/592/10 2383/597/10 2381/596/10 -f 2381/596/10 2375/591/10 2378/592/10 -f 2380/587/27 2384/594/356 2383/595/344 -f 2383/595/344 2378/588/27 2380/587/27 -f 2385/601/7 2386/602/7 2387/603/7 -f 2387/603/7 691/604/7 2385/601/7 -f 2388/605/4 2389/606/4 2390/607/4 -f 2390/607/4 690/608/4 2388/605/4 -f 2391/601/1 2392/602/1 2393/609/1 -f 2393/609/1 692/610/1 2391/601/1 -f 2394/611/10 2395/612/10 2396/613/10 -f 2396/613/10 693/614/10 2394/611/10 -f 690/610/7 2390/609/7 2386/602/7 -f 2386/602/7 2385/601/7 690/610/7 -f 693/604/1 2396/603/1 2392/602/1 -f 2392/602/1 2391/601/1 693/604/1 -f 692/615/4 2393/616/4 2389/606/4 -f 2389/606/4 2388/605/4 692/615/4 -f 691/617/10 2387/618/10 2395/612/10 -f 2395/612/10 2394/611/10 691/617/10 -f 2397/619/357 2398/620/358 2399/621/358 -f 2399/621/358 2400/622/357 2397/619/357 -f 2398/620/358 2401/623/359 2402/624/359 -f 2402/624/359 2399/621/358 2398/620/358 -f 2403/625/360 2404/626/10 2398/627/10 -f 2398/627/10 2397/628/360 2403/625/360 -f 2398/627/10 2404/626/10 2405/629/361 -f 2405/629/361 2401/630/361 2398/627/10 -f 2403/619/315 2406/622/315 2407/621/362 -f 2407/621/362 2404/620/362 2403/619/315 -f 2404/620/362 2407/621/362 2408/624/363 -f 2408/624/363 2405/623/363 2404/620/362 -f 2406/631/364 2400/632/364 2399/633/365 -f 2399/633/365 2407/634/365 2406/631/364 -f 2399/633/365 2402/635/366 2408/636/366 -f 2408/636/366 2407/634/365 2399/633/365 -f 2409/637/7 2410/638/7 2411/639/7 -f 2411/639/7 2412/640/7 2409/637/7 -f 2413/640/4 2412/641/4 2411/642/4 -f 2411/642/4 2414/643/4 2413/640/4 -f 2413/637/1 2414/638/1 2415/639/1 -f 2415/639/1 2416/640/1 2413/637/1 -f 2417/644/1 2418/645/1 2419/646/1 -f 2419/646/1 2420/647/1 2417/644/1 -f 2421/647/7 2422/644/7 2423/645/7 -f 2423/645/7 2424/646/7 2421/647/7 -f 2418/648/367 2417/649/367 2425/650/367 -f 2425/650/367 2426/651/367 2418/648/367 -f 2425/652/4 2417/567/4 2420/653/4 -f 2420/653/4 2427/654/4 2425/652/4 -f 2420/648/368 2419/649/368 2428/650/368 -f 2428/650/368 2427/651/368 2420/648/368 -f 2429/637/7 2430/638/7 2431/639/7 -f 2431/639/7 2432/640/7 2429/637/7 -f 2432/640/4 2431/643/4 2433/642/4 -f 2433/642/4 2434/641/4 2432/640/4 -f 2434/637/1 2433/638/1 2435/639/1 -f 2435/639/1 2436/640/1 2434/637/1 -f 2437/655/369 2423/656/369 2422/657/369 -f 2422/657/369 2438/658/369 2437/655/369 -f 2437/659/4 2439/660/4 2424/661/4 -f 2424/661/4 2423/662/4 2437/659/4 -f 2440/655/370 2421/656/370 2424/657/370 -f 2424/657/370 2439/658/370 2440/655/370 -f 2441/663/298 2442/664/298 2426/651/298 -f 2426/651/298 2425/650/298 2441/663/298 -f 2427/654/4 2443/665/4 2441/666/4 -f 2441/666/4 2425/652/4 2427/654/4 -f 2444/663/371 2443/664/371 2427/651/371 -f 2427/651/371 2428/650/371 2444/663/371 -f 2437/655/297 2438/658/297 2442/664/297 -f 2442/664/297 2441/663/297 2437/655/297 -f 2439/660/4 2437/659/4 2441/666/4 -f 2441/666/4 2443/665/4 2439/660/4 -f 2440/655/372 2439/658/372 2443/664/372 -f 2443/664/372 2444/663/372 2440/655/372 -f 2445/667/373 2446/668/373 2447/669/373 -f 2447/669/373 2448/670/373 2445/667/373 -f 2449/671/374 2450/672/374 2446/668/374 -f 2446/668/374 2445/667/374 2449/671/374 -f 2451/673/7 2452/674/7 2453/675/7 -f 2453/675/7 2454/676/7 2451/673/7 -f 2451/673/7 2450/673/7 2455/673/7 -f 2455/673/7 2452/674/7 2451/673/7 -f 2451/673/7 2447/677/7 2446/677/7 -f 2446/677/7 2450/673/7 2451/673/7 -f 2456/678/7 2447/677/7 2451/673/7 -f 2451/673/7 2454/676/7 2456/678/7 -f 2453/679/27 2452/303/27 2457/680/27 -f 2457/680/27 2458/681/27 2453/679/27 -f 2452/682/375 2455/672/375 2459/671/375 -f 2459/671/375 2457/683/375 2452/682/375 -f 2455/672/376 2450/672/377 2449/671/377 -f 2449/671/377 2459/671/376 2455/672/376 -f 2460/684/373 2461/685/373 2445/667/373 -f 2445/667/373 2448/670/373 2460/684/373 -f 2461/685/374 2462/686/374 2449/671/374 -f 2449/671/374 2445/667/374 2461/685/374 -f 2463/678/1 2464/677/1 2465/673/1 -f 2465/673/1 2466/676/1 2463/678/1 -f 2465/673/1 2464/677/1 2467/677/1 -f 2467/677/1 2462/673/1 2465/673/1 -f 2465/673/1 2462/673/1 2461/673/1 -f 2461/673/1 2460/674/1 2465/673/1 -f 2465/673/1 2460/674/1 2468/675/1 -f 2468/675/1 2466/676/1 2465/673/1 -f 2457/680/27 2464/687/27 2463/688/27 -f 2463/688/27 2458/681/27 2457/680/27 -f 2459/671/375 2467/686/375 2464/678/375 -f 2464/678/375 2457/683/375 2459/671/375 -f 2449/671/377 2462/686/377 2467/686/376 -f 2467/686/376 2459/671/376 2449/671/377 -f 2469/689/4 2470/690/4 2471/691/4 -f 2471/691/4 2472/692/4 2469/689/4 -f 2473/693/4 2472/692/4 2471/691/4 -f 2471/691/4 2474/694/4 2473/693/4 -f 2475/619/357 2476/620/358 2477/621/358 -f 2477/621/358 2478/622/357 2475/619/357 -f 2476/620/358 2479/623/359 2480/624/359 -f 2480/624/359 2477/621/358 2476/620/358 -f 2481/625/360 2482/626/10 2476/627/10 -f 2476/627/10 2475/628/360 2481/625/360 -f 2476/627/10 2482/626/10 2483/629/361 -f 2483/629/361 2479/630/361 2476/627/10 -f 2481/619/315 2484/622/315 2485/621/362 -f 2485/621/362 2482/620/362 2481/619/315 -f 2482/620/362 2485/621/362 2486/624/363 -f 2486/624/363 2483/623/363 2482/620/362 -f 2484/631/364 2478/632/364 2477/633/365 -f 2477/633/365 2485/634/365 2484/631/364 -f 2477/633/365 2480/635/366 2486/636/366 -f 2486/636/366 2485/634/365 2477/633/365 -f 2487/619/357 2488/622/357 2489/621/378 -f 2489/621/378 2490/620/378 2487/619/357 -f 2490/620/378 2489/621/378 2491/624/379 -f 2491/624/379 2492/623/379 2490/620/378 -f 2493/625/365 2487/628/365 2490/627/4 -f 2490/627/4 2494/626/4 2493/625/365 -f 2490/627/4 2492/630/380 2495/629/380 -f 2495/629/380 2494/626/4 2490/627/4 -f 2493/619/315 2494/620/381 2496/621/381 -f 2496/621/381 2497/622/315 2493/619/315 -f 2494/620/381 2495/623/382 2498/624/382 -f 2498/624/382 2496/621/381 2494/620/381 -f 2497/631/383 2496/634/360 2489/633/360 -f 2489/633/360 2488/632/383 2497/631/383 -f 2489/633/360 2496/634/360 2498/636/384 -f 2498/636/384 2491/635/384 2489/633/360 -f 2499/619/357 2500/622/357 2501/621/378 -f 2501/621/378 2502/620/378 2499/619/357 -f 2502/620/378 2501/621/378 2503/624/379 -f 2503/624/379 2504/623/379 2502/620/378 -f 2505/625/365 2499/628/365 2502/627/4 -f 2502/627/4 2506/626/4 2505/625/365 -f 2502/627/4 2504/630/380 2507/629/380 -f 2507/629/380 2506/626/4 2502/627/4 -f 2505/619/315 2506/620/381 2508/621/381 -f 2508/621/381 2509/622/315 2505/619/315 -f 2506/620/381 2507/623/382 2510/624/382 -f 2510/624/382 2508/621/381 2506/620/381 -f 2509/631/383 2508/634/360 2501/633/360 -f 2501/633/360 2500/632/383 2509/631/383 -f 2501/633/360 2508/634/360 2510/636/384 -f 2510/636/384 2503/635/384 2501/633/360 -f 2511/586/336 2512/589/336 2513/588/26 -f 2513/588/26 2514/587/26 2511/586/336 -f 2512/590/7 2515/593/7 2516/592/7 -f 2516/592/7 2513/591/7 2512/590/7 -f 2515/589/337 2517/586/337 2518/587/27 -f 2518/587/27 2516/588/27 2515/589/337 -f 2513/588/26 2519/595/338 2520/594/338 -f 2520/594/338 2514/587/26 2513/588/26 -f 2516/592/7 2521/597/7 2519/596/7 -f 2519/596/7 2513/591/7 2516/592/7 -f 2518/587/27 2522/594/339 2521/595/339 -f 2521/595/339 2516/588/27 2518/587/27 -f 2523/451/27 2524/452/27 2525/453/27 -f 2525/453/27 2526/454/27 2523/451/27 -f 2527/455/4 2528/456/4 2524/457/4 -f 2524/457/4 2523/458/4 2527/455/4 -f 2528/459/1 2529/460/1 2525/461/1 -f 2525/461/1 2524/462/1 2528/459/1 -f 2529/456/10 2530/455/10 2526/458/10 -f 2526/458/10 2525/457/10 2529/456/10 -f 2530/460/7 2527/459/7 2523/462/7 -f 2523/462/7 2526/461/7 2530/460/7 -f 2531/451/27 2532/452/27 2533/453/27 -f 2533/453/27 2534/454/27 2531/451/27 -f 2535/455/7 2536/456/7 2532/457/7 -f 2532/457/7 2531/458/7 2535/455/7 -f 2536/459/4 2537/460/4 2533/461/4 -f 2533/461/4 2532/462/4 2536/459/4 -f 2537/456/1 2538/455/1 2534/458/1 -f 2534/458/1 2533/457/1 2537/456/1 -f 2538/460/10 2535/459/10 2531/462/10 -f 2531/462/10 2534/461/10 2538/460/10 -f 2539/451/27 2540/452/27 2541/453/27 -f 2541/453/27 2542/454/27 2539/451/27 -f 2543/455/7 2544/456/7 2540/457/7 -f 2540/457/7 2539/458/7 2543/455/7 -f 2544/459/4 2545/460/4 2541/461/4 -f 2541/461/4 2540/462/4 2544/459/4 -f 2545/456/1 2546/455/1 2542/458/1 -f 2542/458/1 2541/457/1 2545/456/1 -f 2546/460/10 2543/459/10 2539/462/10 -f 2539/462/10 2542/461/10 2546/460/10 -f 2547/3/12 2548/2/12 2549/1/1 -f 2549/1/1 2550/4/1 2547/3/12 -f 2551/6/11 2552/5/11 2548/2/12 -f 2548/2/12 2547/3/12 2551/6/11 -f 2553/8/10 2554/7/10 2552/5/11 -f 2552/5/11 2551/6/11 2553/8/10 -f 2555/11/9 2556/10/9 2554/9/10 -f 2554/9/10 2553/12/10 2555/11/9 -f 2557/14/8 2558/13/8 2556/10/9 -f 2556/10/9 2555/11/9 2557/14/8 -f 2559/16/7 2560/15/7 2558/13/8 -f 2558/13/8 2557/14/8 2559/16/7 -f 2561/18/6 2562/17/6 2560/15/7 -f 2560/15/7 2559/16/7 2561/18/6 -f 2563/20/5 2564/19/5 2562/17/6 -f 2562/17/6 2561/18/6 2563/20/5 -f 2565/22/4 2566/21/4 2564/19/5 -f 2564/19/5 2563/20/5 2565/22/4 -f 2567/24/3 2568/23/3 2566/21/4 -f 2566/21/4 2565/22/4 2567/24/3 -f 2569/26/2 2570/25/2 2568/23/3 -f 2568/23/3 2567/24/3 2569/26/2 -f 2550/4/1 2549/1/1 2570/25/2 -f 2570/25/2 2569/26/2 2550/4/1 -f 2571/27/24 2572/30/24 2573/29/24 -f 2573/29/24 2574/28/24 2571/27/24 -f 2575/31/23 2576/32/23 2572/30/23 -f 2572/30/23 2571/27/23 2575/31/23 -f 2577/33/22 2578/34/22 2576/32/22 -f 2576/32/22 2575/31/22 2577/33/22 -f 2579/35/21 2580/38/21 2578/37/21 -f 2578/37/21 2577/36/21 2579/35/21 -f 2581/39/20 2582/40/20 2580/38/20 -f 2580/38/20 2579/35/20 2581/39/20 -f 2583/41/19 2584/42/19 2582/40/19 -f 2582/40/19 2581/39/19 2583/41/19 -f 2585/43/18 2586/44/18 2584/42/18 -f 2584/42/18 2583/41/18 2585/43/18 -f 2587/45/17 2588/46/17 2586/44/17 -f 2586/44/17 2585/43/17 2587/45/17 -f 2589/47/16 2590/48/16 2588/46/16 -f 2588/46/16 2587/45/16 2589/47/16 -f 2591/49/15 2592/50/15 2590/48/15 -f 2590/48/15 2589/47/15 2591/49/15 -f 2593/51/14 2594/52/14 2592/50/14 -f 2592/50/14 2591/49/14 2593/51/14 -f 2574/28/13 2573/29/13 2594/52/192 -f 2594/52/192 2593/51/192 2574/28/13 -f 2548/53/26 2571/53/26 2574/54/26 -f 2574/54/26 2549/54/26 2548/53/26 -f 2549/54/26 2574/54/26 2593/55/26 -f 2593/55/26 2570/55/26 2549/54/26 -f 2570/55/26 2593/55/26 2591/56/26 -f 2591/56/26 2568/56/26 2570/55/26 -f 2568/56/26 2591/56/26 2589/57/26 -f 2589/57/26 2566/57/26 2568/56/26 -f 2566/57/26 2589/57/26 2587/59/26 -f 2587/59/26 2564/58/26 2566/57/26 -f 2564/58/26 2587/59/26 2585/61/26 -f 2585/61/26 2562/60/26 2564/58/26 -f 2562/60/26 2585/61/26 2583/62/26 -f 2583/62/26 2560/62/26 2562/60/26 -f 2560/62/26 2583/62/26 2581/64/26 -f 2581/64/26 2558/63/26 2560/62/26 -f 2558/63/26 2581/64/26 2579/66/26 -f 2579/66/26 2556/65/26 2558/63/26 -f 2556/65/26 2579/66/26 2577/67/26 -f 2577/67/26 2554/67/26 2556/65/26 -f 2554/67/26 2577/67/26 2575/68/26 -f 2575/68/26 2552/68/26 2554/67/26 -f 2552/68/26 2575/68/26 2571/53/26 -f 2571/53/26 2548/53/26 2552/68/26 -f 2595/54/27 2573/54/27 2572/53/27 -f 2572/53/27 2596/53/27 2595/54/27 -f 2596/53/27 2572/53/27 2576/68/27 -f 2576/68/27 2597/68/27 2596/53/27 -f 2597/68/27 2576/68/27 2578/67/27 -f 2578/67/27 2598/67/27 2597/68/27 -f 2598/67/27 2578/67/27 2580/66/27 -f 2580/66/27 2599/65/27 2598/67/27 -f 2599/65/27 2580/66/27 2582/64/27 -f 2582/64/27 2600/63/27 2599/65/27 -f 2600/63/27 2582/64/27 2584/62/27 -f 2584/62/27 2601/62/27 2600/63/27 -f 2601/62/27 2584/62/27 2586/61/27 -f 2586/61/27 2602/60/27 2601/62/27 -f 2602/60/27 2586/61/27 2588/59/27 -f 2588/59/27 2603/58/27 2602/60/27 -f 2603/58/27 2588/59/27 2590/57/27 -f 2590/57/27 2604/57/27 2603/58/27 -f 2604/57/27 2590/57/27 2592/56/27 -f 2592/56/27 2605/56/27 2604/57/27 -f 2605/56/27 2592/56/27 2594/55/27 -f 2594/55/27 2606/55/27 2605/56/27 -f 2606/55/27 2594/55/27 2573/54/27 -f 2573/54/27 2595/54/27 2606/55/27 -f 2607/71/12 2608/70/1 2595/69/1 -f 2595/69/1 2596/72/12 2607/71/12 -f 2609/73/23 2607/71/12 2596/72/12 -f 2596/72/12 2597/74/23 2609/73/23 -f 2610/75/22 2609/73/22 2597/74/22 -f 2597/74/22 2598/76/22 2610/75/22 -f 2611/77/9 2610/75/21 2598/76/21 -f 2598/76/21 2599/78/9 2611/77/9 -f 2612/79/8 2611/77/9 2599/78/9 -f 2599/78/9 2600/80/8 2612/79/8 -f 2613/83/7 2612/82/8 2600/81/8 -f 2600/81/8 2601/84/7 2613/83/7 -f 2614/85/6 2613/83/7 2601/84/7 -f 2601/84/7 2602/86/6 2614/85/6 -f 2615/87/5 2614/85/6 2602/86/6 -f 2602/86/6 2603/88/5 2615/87/5 -f 2616/89/4 2615/87/5 2603/88/5 -f 2603/88/5 2604/90/4 2616/89/4 -f 2617/91/3 2616/89/4 2604/90/4 -f 2604/90/4 2605/92/3 2617/91/3 -f 2618/93/2 2617/91/3 2605/92/3 -f 2605/92/3 2606/94/2 2618/93/2 -f 2608/70/1 2618/93/2 2606/94/2 -f 2606/94/2 2595/69/1 2608/70/1 -f 2619/95/26 2620/95/26 2621/96/26 -f 2621/96/26 2622/96/26 2619/95/26 -f 2623/97/26 2624/97/26 2620/95/26 -f 2620/95/26 2619/95/26 2623/97/26 -f 2625/67/26 2626/98/26 2624/97/26 -f 2624/97/26 2623/97/26 2625/67/26 -f 2627/99/26 2628/99/26 2626/98/26 -f 2626/98/26 2625/67/26 2627/99/26 -f 2629/100/26 2630/100/26 2628/99/26 -f 2628/99/26 2627/99/26 2629/100/26 -f 2631/101/26 2632/101/26 2630/100/26 -f 2630/100/26 2629/100/26 2631/101/26 -f 2633/61/26 2634/61/26 2632/101/26 -f 2632/101/26 2631/101/26 2633/61/26 -f 2635/59/26 2636/102/26 2634/61/26 -f 2634/61/26 2633/61/26 2635/59/26 -f 2637/103/26 2638/103/26 2636/102/26 -f 2636/102/26 2635/59/26 2637/103/26 -f 2639/104/26 2640/105/26 2638/103/26 -f 2638/103/26 2637/103/26 2639/104/26 -f 2641/106/26 2642/106/26 2640/105/26 -f 2640/105/26 2639/104/26 2641/106/26 -f 2622/96/26 2621/96/26 2642/106/26 -f 2642/106/26 2641/106/26 2622/96/26 -f 2620/107/39 2643/110/39 2644/109/39 -f 2644/109/39 2621/108/39 2620/107/39 -f 2624/111/38 2645/112/38 2643/110/38 -f 2643/110/38 2620/107/38 2624/111/38 -f 2626/113/37 2646/114/37 2645/112/37 -f 2645/112/37 2624/111/37 2626/113/37 -f 2628/115/36 2647/116/36 2646/114/36 -f 2646/114/36 2626/113/36 2628/115/36 -f 2630/117/35 2648/118/35 2647/116/35 -f 2647/116/35 2628/115/35 2630/117/35 -f 2632/119/34 2649/120/34 2648/118/34 -f 2648/118/34 2630/117/34 2632/119/34 -f 2634/121/33 2650/122/33 2649/120/33 -f 2649/120/33 2632/119/33 2634/121/33 -f 2636/123/32 2651/124/32 2650/122/32 -f 2650/122/32 2634/121/32 2636/123/32 -f 2638/125/31 2652/126/31 2651/124/31 -f 2651/124/31 2636/123/31 2638/125/31 -f 2640/127/30 2653/130/30 2652/129/30 -f 2652/129/30 2638/128/30 2640/127/30 -f 2642/131/29 2654/132/29 2653/130/29 -f 2653/130/29 2640/127/29 2642/131/29 -f 2621/108/28 2644/109/28 2654/132/28 -f 2654/132/28 2642/131/28 2621/108/28 -f 2643/110/54 2655/134/54 2656/133/54 -f 2656/133/54 2644/109/54 2643/110/54 -f 2645/112/53 2657/135/53 2655/134/53 -f 2655/134/53 2643/110/53 2645/112/53 -f 2646/114/51 2658/136/52 2657/135/51 -f 2657/135/51 2645/112/51 2646/114/51 -f 2647/116/50 2659/137/50 2658/136/50 -f 2658/136/50 2646/114/50 2647/116/50 -f 2648/118/49 2660/138/49 2659/137/49 -f 2659/137/49 2647/116/49 2648/118/49 -f 2649/120/48 2661/139/48 2660/138/48 -f 2660/138/48 2648/118/48 2649/120/48 -f 2650/122/385 2662/140/46 2661/139/46 -f 2661/139/46 2649/120/46 2650/122/385 -f 2651/124/45 2663/141/45 2662/140/45 -f 2662/140/45 2650/122/45 2651/124/45 -f 2652/126/44 2664/142/44 2663/141/44 -f 2663/141/44 2651/124/44 2652/126/44 -f 2653/130/42 2665/144/42 2664/143/43 -f 2664/143/43 2652/129/42 2653/130/42 -f 2654/132/41 2666/145/41 2665/144/41 -f 2665/144/41 2653/130/41 2654/132/41 -f 2644/109/40 2656/133/40 2666/145/40 -f 2666/145/40 2654/132/386 2644/109/40 -f 2607/148/71 2667/147/71 2668/146/71 -f 2668/146/71 2608/149/71 2607/148/71 -f 2609/151/69 2669/150/70 2667/147/70 -f 2667/147/70 2607/148/69 2609/151/69 -f 2610/154/68 2670/153/68 2669/152/68 -f 2669/152/68 2609/155/68 2610/154/68 -f 2611/156/67 2671/142/67 2670/153/67 -f 2670/153/67 2610/154/67 2611/156/67 -f 2612/158/65 2672/157/66 2671/142/66 -f 2671/142/66 2611/156/65 2612/158/65 -f 2613/160/64 2673/159/64 2672/157/64 -f 2672/157/64 2612/158/64 2613/160/64 -f 2614/162/63 2674/161/63 2673/159/63 -f 2673/159/63 2613/160/63 2614/162/63 -f 2615/164/62 2675/163/61 2674/161/61 -f 2674/161/61 2614/162/62 2615/164/62 -f 2616/166/60 2676/165/60 2675/163/60 -f 2675/163/60 2615/164/60 2616/166/60 -f 2617/168/59 2677/167/59 2676/165/59 -f 2676/165/59 2616/166/59 2617/168/59 -f 2618/170/58 2678/169/57 2677/167/57 -f 2677/167/57 2617/168/57 2618/170/58 -f 2608/149/56 2668/146/56 2678/169/56 -f 2678/169/56 2618/170/56 2608/149/56 -f 2667/173/12 2619/172/12 2622/171/1 -f 2622/171/1 2668/174/1 2667/173/12 -f 2669/176/11 2623/175/11 2619/172/12 -f 2619/172/12 2667/173/12 2669/176/11 -f 2670/179/10 2625/178/10 2623/177/11 -f 2623/177/11 2669/180/11 2670/179/10 -f 2671/181/9 2627/86/9 2625/178/10 -f 2625/178/10 2670/179/10 2671/181/9 -f 2672/183/8 2629/182/8 2627/86/9 -f 2627/86/9 2671/181/9 2672/183/8 -f 2673/185/7 2631/184/7 2629/182/8 -f 2629/182/8 2672/183/8 2673/185/7 -f 2674/187/6 2633/186/6 2631/184/7 -f 2631/184/7 2673/185/7 2674/187/6 -f 2675/189/5 2635/188/5 2633/186/6 -f 2633/186/6 2674/187/6 2675/189/5 -f 2676/191/4 2637/190/4 2635/188/5 -f 2635/188/5 2675/189/5 2676/191/4 -f 2677/192/3 2639/76/3 2637/190/4 -f 2637/190/4 2676/191/4 2677/192/3 -f 2678/194/2 2641/193/2 2639/76/3 -f 2639/76/3 2677/192/3 2678/194/2 -f 2668/174/1 2622/171/1 2641/193/2 -f 2641/193/2 2678/194/2 2668/174/1 -f 2679/195/387 2680/198/387 2681/197/387 -f 2681/197/387 2682/196/387 2679/195/387 -f 2683/199/388 2684/202/388 2685/201/388 -f 2685/201/388 2686/200/388 2683/199/388 -f 2687/203/389 2688/206/389 2689/205/389 -f 2689/205/389 2690/204/389 2687/203/389 -f 2691/202/390 2692/199/390 2693/200/390 -f 2693/200/390 2694/201/390 2691/202/390 -f 2695/207/391 2696/209/391 2697/208/391 -f 2697/208/391 2698/207/391 2695/207/391 -f 2699/209/392 2700/211/392 2701/210/392 -f 2690/212/393 2689/214/393 2702/213/393 -f 2702/213/393 2703/196/393 2690/212/393 -f 2704/210/394 2705/211/394 2706/209/394 -f 2707/215/395 2706/209/395 2705/211/395 -f 2705/211/395 2708/216/395 2707/215/395 -f 2709/217/396 2682/196/396 2681/197/396 -f 2681/197/396 2710/218/396 2709/217/396 -f 2711/219/397 2687/203/397 2690/204/397 -f 2690/204/397 2712/220/397 2711/219/397 -f 2713/209/398 2695/207/398 2698/207/398 -f 2698/207/398 2714/208/398 2713/209/398 -f 2690/212/399 2703/196/399 2715/213/399 -f 2715/213/399 2712/214/399 2690/212/399 -f 2707/215/400 2708/216/400 2700/211/400 -f 2700/211/400 2699/209/400 2707/215/400 -f 2716/221/390 2680/221/390 2679/222/390 -f 2679/222/390 2702/222/390 2716/221/390 -f 2702/222/401 2679/222/401 2682/203/401 -f 2682/203/401 2703/203/401 2702/222/401 -f 2703/203/402 2682/203/402 2709/206/402 -f 2709/206/402 2715/206/402 2703/203/402 -f 2715/206/388 2709/206/388 2710/223/388 -f 2710/223/388 2717/223/388 2715/206/388 -f 2717/224/403 2710/224/403 2681/226/403 -f 2681/226/403 2718/225/403 2717/224/403 -f 2718/225/404 2681/226/404 2680/224/404 -f 2680/224/404 2716/224/404 2718/225/404 -f 2712/214/394 2715/213/394 2717/228/394 -f 2717/228/394 2719/227/394 2712/214/394 -f 2719/229/390 2720/221/390 2711/219/390 -f 2711/219/390 2712/220/390 2719/229/390 -f 2688/206/388 2721/223/388 2722/230/388 -f 2722/230/388 2689/205/388 2688/206/388 -f 2722/227/392 2716/228/392 2702/213/392 -f 2702/213/392 2689/214/392 2722/227/392 -f 2685/201/388 2723/202/388 2724/199/388 -f 2724/199/388 2686/200/388 2685/201/388 -f 2722/231/405 2701/233/406 2700/232/405 -f 2700/232/405 2716/224/405 2722/231/405 -f 2716/224/404 2700/232/404 2708/234/404 -f 2708/234/404 2718/225/404 2716/224/404 -f 2718/225/403 2708/234/403 2705/232/403 -f 2705/232/403 2717/224/403 2718/225/403 -f 2717/224/407 2705/232/407 2704/233/407 -f 2704/233/407 2719/231/407 2717/224/407 -f 2693/200/390 2725/199/390 2726/202/390 -f 2726/202/390 2694/201/390 2693/200/390 -f 2697/208/391 2706/236/391 2707/235/391 -f 2707/235/391 2698/207/391 2697/208/391 -f 2698/207/398 2707/235/398 2699/236/398 -f 2699/236/398 2714/208/398 2698/207/398 -f 2721/236/27 2683/238/27 2686/237/27 -f 2686/237/27 2722/231/27 2721/236/27 -f 2722/231/27 2686/237/27 2724/239/27 -f 2724/239/27 2701/233/27 2722/231/27 -f 2701/210/408 2724/241/409 2723/240/409 -f 2723/240/409 2699/209/408 2701/210/408 -f 2699/236/26 2723/238/26 2685/242/26 -f 2685/242/26 2714/208/26 2699/236/26 -f 2714/208/26 2685/242/26 2684/240/26 -f 2684/240/26 2713/209/26 2714/208/26 -f 2696/209/26 2691/240/26 2694/242/26 -f 2694/242/26 2697/208/26 2696/209/26 -f 2697/208/26 2694/242/26 2726/238/26 -f 2726/238/26 2706/236/26 2697/208/26 -f 2706/209/410 2726/240/410 2725/241/410 -f 2725/241/410 2704/210/410 2706/209/410 -f 2704/233/27 2725/239/27 2693/237/27 -f 2693/237/27 2719/231/27 2704/233/27 -f 2719/231/27 2693/237/27 2692/238/27 -f 2692/238/27 2720/236/27 2719/231/27 -f 2727/195/411 2728/198/411 2729/197/411 -f 2729/197/411 2730/196/411 2727/195/411 -f 2731/199/412 2732/202/412 2733/201/413 -f 2733/201/413 2734/200/413 2731/199/412 -f 2735/203/414 2736/206/414 2737/205/414 -f 2737/205/414 2738/204/414 2735/203/414 -f 2739/202/415 2740/199/415 2741/200/416 -f 2741/200/416 2742/201/416 2739/202/415 -f 2743/207/417 2744/209/417 2745/208/417 -f 2745/208/417 2746/207/417 2743/207/417 -f 2747/209/171 2748/211/171 2749/210/171 -f 2738/212/418 2737/214/418 2750/213/418 -f 2750/213/418 2751/196/418 2738/212/418 -f 2752/210/419 2753/211/419 2754/209/419 -f 2755/215/420 2754/209/420 2753/211/420 -f 2753/211/420 2756/216/420 2755/215/420 -f 2757/217/167 2730/196/167 2729/197/167 -f 2729/197/167 2758/218/167 2757/217/167 -f 2759/219/421 2735/203/421 2738/204/421 -f 2738/204/421 2760/220/421 2759/219/421 -f 2761/209/422 2743/207/422 2746/207/422 -f 2746/207/422 2762/208/422 2761/209/422 -f 2738/212/423 2751/196/423 2763/213/423 -f 2763/213/423 2760/214/423 2738/212/423 -f 2755/215/424 2756/216/424 2748/211/424 -f 2748/211/424 2747/209/424 2755/215/424 -f 2764/221/415 2728/221/416 2727/222/416 -f 2727/222/416 2750/222/415 2764/221/415 -f 2750/222/425 2727/222/425 2730/203/425 -f 2730/203/425 2751/203/425 2750/222/425 -f 2751/203/426 2730/203/426 2757/206/426 -f 2757/206/426 2763/206/426 2751/203/426 -f 2763/206/413 2757/206/413 2758/223/413 -f 2758/223/413 2765/223/413 2763/206/413 -f 2765/224/427 2758/224/427 2729/226/427 -f 2729/226/427 2766/225/427 2765/224/427 -f 2766/225/428 2729/226/428 2728/224/428 -f 2728/224/428 2764/224/428 2766/225/428 -f 2760/214/419 2763/213/419 2765/228/419 -f 2765/228/419 2767/227/419 2760/214/419 -f 2767/229/415 2768/221/415 2759/219/415 -f 2759/219/415 2760/220/415 2767/229/415 -f 2736/206/413 2769/223/413 2770/230/413 -f 2770/230/413 2737/205/413 2736/206/413 -f 2770/227/171 2764/228/171 2750/213/171 -f 2750/213/171 2737/214/171 2770/227/171 -f 2733/201/413 2771/202/412 2772/199/412 -f 2772/199/412 2734/200/413 2733/201/413 -f 2770/231/429 2749/233/429 2748/232/429 -f 2748/232/429 2764/224/429 2770/231/429 -f 2764/224/428 2748/232/428 2756/234/428 -f 2756/234/428 2766/225/428 2764/224/428 -f 2766/225/427 2756/234/427 2753/232/427 -f 2753/232/427 2765/224/427 2766/225/427 -f 2765/224/430 2753/232/430 2752/233/430 -f 2752/233/430 2767/231/430 2765/224/430 -f 2741/200/416 2773/199/415 2774/202/415 -f 2774/202/415 2742/201/416 2741/200/416 -f 2745/208/417 2754/236/417 2755/235/417 -f 2755/235/417 2746/207/417 2745/208/417 -f 2746/207/422 2755/235/422 2747/236/422 -f 2747/236/422 2762/208/422 2746/207/422 -f 2769/236/27 2731/238/27 2734/237/27 -f 2734/237/27 2770/231/27 2769/236/27 -f 2770/231/27 2734/237/27 2772/239/27 -f 2772/239/27 2749/233/27 2770/231/27 -f 2749/210/191 2772/241/191 2771/240/191 -f 2771/240/191 2747/209/191 2749/210/191 -f 2747/236/26 2771/238/26 2733/242/26 -f 2733/242/26 2762/208/26 2747/236/26 -f 2762/208/26 2733/242/26 2732/240/26 -f 2732/240/26 2761/209/26 2762/208/26 -f 2744/209/26 2739/240/26 2742/242/26 -f 2742/242/26 2745/208/26 2744/209/26 -f 2745/208/26 2742/242/26 2774/238/26 -f 2774/238/26 2754/236/26 2745/208/26 -f 2754/209/431 2774/240/431 2773/241/431 -f 2773/241/431 2752/210/431 2754/209/431 -f 2752/233/27 2773/239/27 2741/237/27 -f 2741/237/27 2767/231/27 2752/233/27 -f 2767/231/27 2741/237/27 2740/238/27 -f 2740/238/27 2768/236/27 2767/231/27 -f 2775/243/432 2776/246/432 2777/245/432 -f 2777/245/432 2778/244/432 2775/243/432 -f 2775/247/433 2779/250/433 2780/249/433 -f 2780/249/433 2776/248/433 2775/247/433 -f 2776/246/434 2780/252/434 2781/251/434 -f 2781/251/434 2777/245/434 2776/246/434 -f 2777/248/435 2781/249/435 2782/250/435 -f 2782/250/435 2778/247/435 2777/248/435 -f 2783/195/436 2784/198/436 2785/197/436 -f 2785/197/436 2786/196/436 2783/195/436 -f 2787/199/437 2788/202/437 2789/201/413 -f 2789/201/413 2790/200/413 2787/199/437 -f 2791/203/414 2792/206/414 2793/205/414 -f 2793/205/414 2794/204/414 2791/203/414 -f 2795/202/415 2796/199/415 2797/200/416 -f 2797/200/416 2798/201/416 2795/202/415 -f 2799/207/417 2800/209/417 2801/208/417 -f 2801/208/417 2802/207/417 2799/207/417 -f 2803/209/171 2804/211/171 2805/210/171 -f 2794/212/418 2793/214/418 2806/213/418 -f 2806/213/418 2807/196/418 2794/212/418 -f 2808/210/419 2809/211/419 2810/209/419 -f 2811/215/420 2810/209/420 2809/211/420 -f 2809/211/420 2812/216/420 2811/215/420 -f 2813/217/167 2786/196/167 2785/197/167 -f 2785/197/167 2814/218/167 2813/217/167 -f 2815/219/438 2791/203/421 2794/204/421 -f 2794/204/421 2816/220/438 2815/219/438 -f 2817/209/422 2799/207/422 2802/207/422 -f 2802/207/422 2818/208/422 2817/209/422 -f 2794/212/423 2807/196/423 2819/213/423 -f 2819/213/423 2816/214/423 2794/212/423 -f 2811/215/424 2812/216/424 2804/211/424 -f 2804/211/424 2803/209/424 2811/215/424 -f 2820/221/415 2784/221/415 2783/222/415 -f 2783/222/415 2806/222/415 2820/221/415 -f 2806/222/425 2783/222/425 2786/203/425 -f 2786/203/425 2807/203/425 2806/222/425 -f 2807/203/426 2786/203/426 2813/206/426 -f 2813/206/426 2819/206/426 2807/203/426 -f 2819/206/413 2813/206/413 2814/223/413 -f 2814/223/413 2821/223/413 2819/206/413 -f 2821/224/427 2814/224/427 2785/226/427 -f 2785/226/427 2822/225/427 2821/224/427 -f 2822/225/428 2785/226/428 2784/224/428 -f 2784/224/428 2820/224/428 2822/225/428 -f 2816/214/419 2819/213/419 2821/228/419 -f 2821/228/419 2823/227/419 2816/214/419 -f 2823/229/416 2824/221/416 2815/219/416 -f 2815/219/416 2816/220/416 2823/229/416 -f 2792/206/413 2825/223/413 2826/230/412 -f 2826/230/412 2793/205/412 2792/206/413 -f 2826/227/171 2820/228/171 2806/213/171 -f 2806/213/171 2793/214/171 2826/227/171 -f 2789/201/413 2827/202/412 2828/199/412 -f 2828/199/412 2790/200/413 2789/201/413 -f 2826/231/429 2805/233/429 2804/232/429 -f 2804/232/429 2820/224/429 2826/231/429 -f 2820/224/428 2804/232/428 2812/234/428 -f 2812/234/428 2822/225/428 2820/224/428 -f 2822/225/427 2812/234/427 2809/232/427 -f 2809/232/427 2821/224/427 2822/225/427 -f 2821/224/430 2809/232/430 2808/233/430 -f 2808/233/430 2823/231/430 2821/224/430 -f 2797/200/416 2829/199/415 2830/202/415 -f 2830/202/415 2798/201/416 2797/200/416 -f 2801/208/417 2810/236/417 2811/235/417 -f 2811/235/417 2802/207/417 2801/208/417 -f 2802/207/422 2811/235/422 2803/236/422 -f 2803/236/422 2818/208/422 2802/207/422 -f 2825/236/27 2787/238/27 2790/237/27 -f 2790/237/27 2826/231/27 2825/236/27 -f 2826/231/27 2790/237/27 2828/239/27 -f 2828/239/27 2805/233/27 2826/231/27 -f 2805/210/191 2828/241/191 2827/240/191 -f 2827/240/191 2803/209/191 2805/210/191 -f 2803/236/26 2827/238/26 2789/242/26 -f 2789/242/26 2818/208/26 2803/236/26 -f 2818/208/26 2789/242/26 2788/240/26 -f 2788/240/26 2817/209/26 2818/208/26 -f 2800/209/26 2795/240/26 2798/242/26 -f 2798/242/26 2801/208/26 2800/209/26 -f 2801/208/26 2798/242/26 2830/238/26 -f 2830/238/26 2810/236/26 2801/208/26 -f 2810/209/431 2830/240/431 2829/241/431 -f 2829/241/431 2808/210/431 2810/209/431 -f 2808/233/27 2829/239/27 2797/237/27 -f 2797/237/27 2823/231/27 2808/233/27 -f 2823/231/27 2797/237/27 2796/238/27 -f 2796/238/27 2824/236/27 2823/231/27 -f 2831/243/439 2832/246/439 2833/245/439 -f 2833/245/439 2834/244/439 2831/243/439 -f 2831/247/440 2835/250/440 2836/249/440 -f 2836/249/440 2832/248/440 2831/247/440 -f 2832/246/441 2836/252/441 2837/251/441 -f 2837/251/441 2833/245/441 2832/246/441 -f 2833/248/442 2837/249/442 2838/250/442 -f 2838/250/442 2834/247/442 2833/248/442 -f 2839/195/443 2840/198/443 2841/197/443 -f 2841/197/443 2842/196/443 2839/195/443 -f 2843/199/390 2844/202/390 2845/201/390 -f 2845/201/390 2846/200/390 2843/199/390 -f 2847/203/444 2848/206/444 2849/205/444 -f 2849/205/444 2850/204/444 2847/203/444 -f 2851/202/388 2852/199/388 2853/200/388