Compare commits

..

No commits in common. "main" and "docs-ben" have entirely different histories.

524 changed files with 3829 additions and 10624 deletions

View File

@ -24,6 +24,7 @@ BraceWrapping:
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: true
AfterObjCDeclaration: true
AfterUnion: true

7
.gitignore vendored
View File

@ -14,7 +14,6 @@ build
*.wasm
*.app
*.dylib
*.a
Debug/*
@ -36,8 +35,6 @@ src/graphics/orca_gl31.h
__pycache__
scripts/files
# explicitly abandon old ext dir
/ext
src/ext/angle
ext/angle
sketches/*/bin
sketches/*/bin

View File

@ -1,2 +0,0 @@
github: orca-app
custom: "https://orca-app.dev/sponsor.html"

View File

@ -1,207 +0,0 @@
Orca
Copyright (C) 2023 Martin Fouilleul
Orca is distributed under the MIT license or the Apache License version 2.0,
at your option.
-------------------------------------------------------------------------------
MIT License
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.
-------------------------------------------------------------------------------
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS

122
Readme.md
View File

@ -1,2 +1,122 @@
**This repository is not used anymore. Development of Orca was moved here: [https://github.com/orca-app/orca](https://github.com/orca-app/orca)**
------
**DISCLAIMER: This project is very much a Work In Progress. We are making it accessible in this very early state so that participants in the [2023 Wheel Reinvention Jam](https://handmade.network/jam/2023) can try it out and possibly use it as their jamming platform. Expect bugs, missing and/or incomplete features, unstable APIs, and sparse documentation. Some current issues might be a show stopper for you, so make sure you can build and run the sample apps before jumping in.**
**If you do choose to try out Orca anyway, thank you! We'll do our best to answer your questions, and we'd really appreciate your feedback!**
------
# Orca
Orca is a development platform and runtime environment for cross-platform, sandboxed graphical WebAssembly applications. In this early MVP you can:
- Receive mouse and keyboard input.
- Draw paths, images and text using a 2D vector graphics API.
- Draw 2D/3D graphics using OpenGL ES 3.1 (minus a few features)
- Build user interfaces using our UI API and default widgets.
- Read and write files using a capability-based API.
## Installing
The Orca command-line tools must be installed to your system in order to use them in your own projects.
**At this early stage, you must build Orca yourself - in the future, this installation process will be streamlined.**
### Requirements
- Windows or Mac (Linux is not yet supported)
- [Python 3](https://www.python.org/) (for command line tools)
- Clang
- **Windows users:** `clang` can be installed via the Visual Studio installer. Search for "C++ Clang Compiler".
- **Mac users:** Apple's built-in `clang` does not support WebAssembly. We recommend installing `clang` via [Homebrew](https://brew.sh/) with `brew install clang`.
- MSVC (Visual Studio 2022 17.5 or newer) (Windows only)
- This can be installed through the [Visual Studio Community](https://visualstudio.microsoft.com/) installer.
- Please note the version requirement! Orca requires C11 atomics, which were only added to MSVC in late 2022.
### Installation instructions
Clone the repo, then `cd` into the `orca` directory:
```
git clone git@git.handmade.network:hmn/orca.git
cd orca
```
Build the Orca runtime:
```
./orca dev build-runtime
```
Install the Orca dev tools. If on Windows, the tool can automatically add `orca` to your PATH. Otherwise, you must manually add the Orca install directory to your PATH, e.g. by updating `.zshrc` or `.bashrc`.
```
./orca dev install
```
Finally, verify that Orca is successfully installed by running the `orca version` command. Note the lack of `./`!
```
orca version
```
If you encounter any errors, see the FAQ below.
Once the `orca` tools are installed, you can use them from anywhere to
### Building the sample Orca apps
The `samples` directory contains several sample apps that demonstrate various Orca features. To build one, `cd` to a sample project's directory and run its build script. For example, for the `breakout` sample:
```
cd samples/breakout
# Windows
build.bat
# Mac
./build.sh
```
On Windows this creates a `Breakout` directory in `samples/breakout`. You can launch the app by running `Breakout/bin/Breakout.exe`. On macOS this creates a `Breakout.app` bundle in `samples/breakout` that you can double-click to run.
## Writing an Orca app
Orca apps are WebAssembly modules that use the Orca APIs. The process for creating an Orca application is:
1. Compile a WebAssembly module using your language and toolchain of choice.
2. Bundle the WebAssembly module into a native executable using the Orca command-line tools.
For a more thorough overview, please read the [Quick Start Guide](./doc/QuickStart.md), which will walk you through building a simple application.
The following additional resources may also help you familiarize yourself with Orca and its APIs:
- The [samples folder](./samples) contains sample applications that show various aspects of the Orca API and support library:
- [`breakout`](./samples/breakout) is a small breakout game making use of the vector graphics API.
- [`clock`](./samples/clock) is a simple clock showcasing vector graphics and the time API.
- [`triangle`](./samples/triangle) shows how to draw a spinning triangle using the GLES API.
- [`fluid`](./samples/fluid) is a fluid simulation using a more complex GLES setup.
- [`ui`](./samples/ui) showcases the UI API and Orca's default UI widgets.
- The [API Cheatsheets](./doc/cheatsheets) provide a list of Orca API functions, grouped by topic.
## FAQ
**What languages can I use with Orca?**
In principle, you can use any language and toolchain that can produce an Orca-compatible WebAssembly module. However, several important parts of Orca, such as the UI, are provided as part of the support library, which is written in C. Therefore, at this early stage, it may be difficult to use any language other than C.
We look forward to expanding the number of officially-supported languages in the future.
**I am getting errors about atomics when building the runtime on Windows.**
Please ensure that you have the latest version of Visual Studio and MSVC installed. The Orca runtime requires the use of C11 atomics, which were not added to MSVC until late 2022.
**I am getting errors saying that `orca` is not found.**
Please ensure that you have installed Orca to your system per the installation instructions above. Please also ensure that the Orca install directory is on your PATH. The installation path is printed when running `./orca dev install`.
## License
Orca is distributed under the terms of the GNU Affero General Public License version 3, with additional terms in accordance with section 7 of AGPLv3. These additional terms ensure that:
- Modified versions of Orca must reasonably inform users that they are modified.
- You can distribute your application's WebAssembly modules under the terms of your choice, and are not required to license them under the terms of the AGPLv3.
Copyright and License details can be found in [LICENSE.txt](./LICENSE.txt)

View File

@ -6,86 +6,51 @@
--------
# Orca Quick Start Guide
---
This is a short introduction to developing an application that can be run by the Orca runtime. We'll present the basic structure of an Orca application, and walk through a simple example in C.
## What is an Orca app?
An Orca app is a WebAssembly module designed for the Orca runtime. Your app interacts with the Orca runtime via WebAssembly imports and exports. For example, you can import functions from the Orca runtime to get user input, and export functions to the Orca runtime to draw to the screen.
Orca also ships with a core library, written in C, which facilitates interaction with the Orca runtime and provides features like UI. This library should be compiled along with your app as part of producing your WebAssembly module.
You can, in principle, write an Orca app in any programming language that supports WebAssembly. However, at this early stage, C is the only officially supported language.
![Basic structure of a C app](images/app_c.png)
Once you have compiled your WebAssembly module, you can bundle this module into an executable using the `orca bundle` command. The application bundle can include images, fonts, or any other private data that the app needs in order to function. These files can be read or written from the app without asking the user for permission. The resulting Orca executables are therefore self-contained.
![Example Orca application bundle](images/app_bundle.png)
This is a short introduction to developping an application that can be run by the Orca runtime. We'll present the basic structure of an Orca application, and walk through a simple example in C.
## Basic structure
Orca exposes a number of types and functions to applications. In order to use them the first thing to do is to include `orca.h`.
```c
```
#include<orca.h>
```
The Orca runtime manages the application's window and event loop. In order to receive a specific kind of event, you can define an associated _event handler_ and export it to the runtime. For instance, to be notified when your application's window is resized, you should define the `oc_on_resize()` handler:
```c
```
ORCA_EXPORT void oc_on_resize(u32 width, u32 height)
{
// handle the window resize event
}
```
The `ORCA_EXPORT` macro makes the handler visible to the Orca runtime, which automatically binds it to the window resize event.
The `ORCA_EXPORT` macro makes the handler visible to the orca runtime, which automatically binds it to the window resize event.
Handlers are optional. If you don't care about an event, you can just omit the associated handler. However, you will almost certainly want to define at least two important handlers:
Handlers are optional. If you don't care about an event, you can just omit the associated handler. You probably want to define at least two important handlers:
- `oc_on_init()` is called once when your application starts and can be use to initialize your application's resources.
- `oc_on_init()` is called once when your application starts and can be use to initialize your application's resources
- `oc_on_frame_refresh()` is called when your application needs to render a new frame, typically tied to the refresh rate of the monitor.
For a list of available handlers and their signatures, see the [app cheatsheet](../doc/cheatsheets/cheatsheet_app.h).
## Clock example
## Clock Example
Let's look at the [clock example](../samples/clock). This is a simple app that shows an analog clock and showcases a couple of interesting Orca APIs.
Open [`main.c`](../samples/clock/src/main.c) and look at the definition of `oc_on_init()`. This handler is called when the application starts, right after the application window has been created.
Open [`main.c`](../samples/clock/src/main.c) and look at the definition of `oc_on_init()`. This handler is called when the applications starts, right after the application window has been created.
The first thing we do here is set the title and dimensions of the window. We then create the graphics resources that we'll use to draw the clock onto the window.
```c
ORCA_EXPORT void oc_on_init(void)
{
oc_window_set_title(OC_STR8("clock"));
oc_window_set_size((oc_vec2){ .x = 400, .y = 400 });
// ...
}
```
### Graphics surfaces
The next line of `oc_on_init()` creates a _graphics surface_. A surface represents a destination you can draw into using a specific API. In this sample, we're going to use a canvas surface, which allows drawing with a 2D vector graphics API. Other samples use a GLES surface to draw with the OpenGL ES API.
The next line of `oc_init()` creates a _graphics surface_. A surface represents a destination you can draw into using a specific API. In this sample, we're going to use a canvas surface, which allows drawing with a 2D vector graphics API. Other samples use a GLES surface to draw with the OpenGL ES API.
Before drawing into it, the surface must be selected as the current surface by calling `oc_surface_select()`. Once all drawing is done you can display the result by calling `oc_surface_present()`.
```c
oc_surface surface = { 0 };
oc_canvas canvas = { 0 };
ORCA_EXPORT void oc_on_init(void)
{
// ...
surface = oc_surface_canvas();
canvas = oc_canvas_create();
// ...
}
```
### Canvas
After creating the surface, we create a _canvas_. A canvas holds some context for drawing commands, like the current color or stroke width, as well as a command buffer that records all drawing commands. All canvas drawing functions use an implicit _current canvas_. You can select a canvas to be the current canvas by calling `oc_canvas_select()`, as seen at the begining of `oc_on_frame_refresh()`.
@ -94,17 +59,14 @@ Canvas drawing functions like `oc_fill()` or `oc_stroke` merely add to the curre
To summarize, the general structure of canvas drawing code is like the following:
```c
ORCA_EXPORT void oc_on_frame_refresh(void)
{
oc_canvas_select(canvas); // make the canvas current
```
oc_canvas_select(canvas); // make the canvas current
//... add commands to the canvas command buffer using drawing functions
//... add commands to the canvas command buffer using drawing functions
oc_surface_select(surface); // select the canvas surface
oc_render(canvas); // render the canvas commands into it
oc_surface_present(surface); // display the result
}
oc_surface_select(surface); // select the canvas surface
oc_render(canvas); // render the canvas commands into it
oc_surface_present(surface); // display the result
```
### Drawing
@ -112,55 +74,56 @@ ORCA_EXPORT void oc_on_frame_refresh(void)
Canvas drawing functions can be roughly divided into three groups:
- Path functions like `oc_line_to()` or `oc_cubic_to()` are used to specify paths using lines and curves.
- Attribute setup functions like `oc_set_color()` or `oc_set_width()` are used to set attributes used by subsequent commands.
- Attributes setup functions like `oc_set_color()` or `oc_set_width()` are used to set attributes used by subsequent commands.
- Command functions like `oc_stroke()` and `oc_fill()` encode commands into the canvas command buffer using the current path and attributes.
Some helpers combine a path specification and a command, like `oc_circle_fill()`.
As an example, the back of the clock is drawn using these two calls:
```c
oc_set_color_rgba(1, 1, 1, 1);
oc_circle_fill(centerX, centerY, clockRadius);
```
// clock backing
oc_set_color_rgba(1, 1, 1, 1);
oc_circle_fill(centerX, centerY, clockRadius);
```
For a list of canvas drawing functions, see the [graphics API cheatsheet](../doc/cheatsheets/cheatsheet_graphics.h).
#### Transforms
A special case of attribute setting function is the pair `oc_matrix_multiply_push()` and `oc_matrix_pop()`, which are used to manipulate a stack of transform matrices:
A special case of attribute setting function is the pair `oc_matrix_push()` and `oc_matrix_pop()`, which are used to manipulate a stack of transform matrices:
- `oc_matrix_multiply_push()` multiplies the matrix currently on top of the stack with its argument, and pushes the result on the stack.
- `oc_matrix_push()` multiplies the matrix currently on top of the stack with its argument, and pushes the result on the stack.
- `oc_matrix_pop()` pops a matrix from the stack.
The matrix on the top of the stack at the time a command is encoded is used to transform the path of that command.
You can see an example of using transform matrices when drawing the clock's hands:
```c
// hour hand
oc_matrix_multiply_push(mat_transform(centerX, centerY, hoursRotation));
{
oc_set_color_rgba(.2, 0.2, 0.2, 1);
oc_rounded_rectangle_fill(0, -7.5 * uiScale, clockRadius * 0.5f, 15 * uiScale, 5 * uiScale);
}
oc_matrix_pop();
```
// hours hand
oc_matrix_push(mat_transform(centerX, centerY, hoursRotation));
{
oc_set_color_rgba(.2, 0.2, 0.2, 1);
oc_rounded_rectangle_fill(0, -7.5 * uiScale, clockRadius * 0.5f, 15 * uiScale, 5 * uiScale);
}
oc_matrix_pop();
```
### Fonts and text
Going back to `oc_init()`, after creating a surface and a canvas, we create a font that we will use to draw the numbers on the clock's face:
```c
oc_unicode_range ranges[5] = {
OC_UNICODE_BASIC_LATIN,
OC_UNICODE_C1_CONTROLS_AND_LATIN_1_SUPPLEMENT,
OC_UNICODE_LATIN_EXTENDED_A,
OC_UNICODE_LATIN_EXTENDED_B,
OC_UNICODE_SPECIALS
};
```
oc_unicode_range ranges[5] = {
OC_UNICODE_BASIC_LATIN,
OC_UNICODE_C1_CONTROLS_AND_LATIN_1_SUPPLEMENT,
OC_UNICODE_LATIN_EXTENDED_A,
OC_UNICODE_LATIN_EXTENDED_B,
OC_UNICODE_SPECIALS
};
font = oc_font_create_from_path(OC_STR8("/segoeui.ttf"), 5, ranges);
font = oc_font_create_from_path(OC_STR8("/segoeui.ttf"), 5, ranges);
```
The font is loaded from a font file located in a data folder inside the app bundle. By default, Orca apps use this data folder as their "root" for file operations.
@ -169,37 +132,35 @@ Along with the path of the font file, we pass to the creation function the unico
We then use the font to draw the clock's face:
```c
// clock face
for(int i = 0; i < oc_array_size(clockNumberStrings); ++i)
{
oc_rect textRect = oc_font_text_metrics(font, fontSize, clockNumberStrings[i]).ink;
```
// clock face
for(int i = 0; i < oc_array_size(clockNumberStrings); ++i)
{
oc_rect textRect = oc_text_bounding_box(font, fontSize, clockNumberStrings[i]);
textRect.h -= 10 * uiScale; // oc_text_bounding_box height doesn't seem to be a tight fit around the glyph
const f32 angle = i * ((M_PI * 2) / 12.0f) - (M_PI / 2);
oc_mat2x3 transform = mat_transform(centerX - (textRect.w / 2) - textRect.x,
centerY - (textRect.h / 2) - textRect.y,
angle);
const f32 angle = i * ((M_PI * 2) / 12.0f) - (M_PI / 2);
oc_mat2x3 transform = mat_transform(centerX - (textRect.w / 2), centerY + (textRect.h / 2), angle);
oc_vec2 pos = oc_mat2x3_mul(transform, (oc_vec2){ clockRadius * 0.8f, 0 });
oc_vec2 pos = oc_mat2x3_mul(transform, (oc_vec2){ clockRadius * 0.8f, 0 });
oc_set_color_rgba(0.2, 0.2, 0.2, 1);
oc_text_fill(pos.x, pos.y, clockNumberStrings[i]);
}
oc_set_color_rgba(0.2, 0.2, 0.2, 1);
oc_text_fill(pos.x, pos.y, clockNumberStrings[i]);
}
```
### Logging and asserts
The runtime has a console overlay whose visiblity can be toggled on and off with `⌘ + Shift + D` on macOS, or `Ctrl + Shift + D` on Windows. Your application can log messages, warnings, or errors to that console using the following functions:
The runtime has a console overlay whose visiblity can be toggled on and off with `Shift + Cmd + D` on macOS, or `Shift + Ctrl + D` on Windows. Your application can log messages, warnings or errors to that console using the following functions:
```c
```
void oc_log_info(const char* fmt, ...); // informational messages
void oc_log_warning(const char* fmt, ...); // warnings, displayed in orange.
void oc_log_error(const char* fmt, ...); // errors, displayed in red.
void oc_log_error(const char* fmt, ...); // errors, displayed in red.
```
If you started the application from a terminal, the log entries are also duplicated there.
You can assert on a condition using `OC_ASSERT(test, fmt, ...)`. If the test fails, the runtime displays a message box and terminates the application.
You can assert on a condition using `OC_ASSERT(test, fmt, ...)`. If the test fails, the runtime displays a message box including your message, and terminates the application.
You can unconditionally abort the application with a message box using `OC_ABORT(fmt, ...)`.
@ -207,10 +168,10 @@ You can unconditionally abort the application with a message box using `OC_ABORT
For more examples of how to use Orca APIs, you can look at the other [sample apps](../samples):
- [breakout](../samples/breakout) is a mini breakout game making use of the vector graphics API. It demonstrates using input and drawing images.
- [triangle](../samples/triangle) shows how to draw a spining triangle using the GLES API.
- [fluid](../samples/fluid) is a fluid simulation using a more complex GLES setup.
- [ui](../samples/ui) showcases the UI API and Orca's default UI widgets.
- [breakout](./samples/breakout) is a mini breakout game making use of the vector graphics API. It demonstrates using input and drawing images.
- [triangle](./samples/triangle) shows how to draw a spining triangle using the GLES API.
- [fluid](./samples/fluid) is a fluid simulation using a more complex GLES setup.
- [ui](./samples/ui) showcases the UI API and Orca's default UI widgets.
For a list of Orca APIs, you can look at the [API cheatsheets](../doc/cheatsheets).

View File

@ -1,7 +0,0 @@
# UI Colors
## Dark (default theme)
![Dark theme colors](images/UIDarkPalette.svg)
## Light
![Light theme colors](images/UILightPalette.svg)

View File

@ -16,8 +16,8 @@ void oc_on_mouse_enter(void);
void oc_on_mouse_leave(void);
void oc_on_mouse_move(f32 x, f32 y, f32 deltaX, f32 deltaY);
void oc_on_mouse_wheel(f32 deltaX, f32 deltaY);
void oc_on_key_down(oc_scan_code scan, oc_key_code key);
void oc_on_key_up(oc_scan_code scan, oc_key_code key);
void oc_on_key_down(oc_key_code key);
void oc_on_key_up(oc_key_code key);
void oc_on_frame_refresh(void);
void oc_on_resize(f32 width, f32 height);
void oc_on_raw_event(oc_event* event);

View File

@ -39,7 +39,6 @@ void oc_render(oc_canvas canvas);
//------------------------------------------------------------------------------------------
void oc_matrix_push(oc_mat2x3 matrix);
void oc_matrix_multiply_push(oc_mat2x3 matrix);
void oc_matrix_pop(void);
oc_mat2x3 oc_matrix_top();
@ -117,21 +116,21 @@ oc_font oc_font_nil(void);
bool oc_font_is_nil(oc_font font);
oc_font oc_font_create_from_memory(oc_str8 mem, u32 rangeCount, oc_unicode_range* ranges);
oc_font oc_font_create_from_file(oc_file file, u32 rangeCount, oc_unicode_range* ranges);
oc_font oc_font_create_from_path(oc_str8 path, u32 rangeCount, oc_unicode_range* ranges);
void oc_font_destroy(oc_font font);
oc_str32 oc_font_get_glyph_indices(oc_font font, oc_str32 codePoints, oc_str32 backing);
oc_str32 oc_font_push_glyph_indices(oc_arena* arena, oc_font font, oc_str32 codePoints);
u32 oc_font_get_glyph_index(oc_font font, oc_utf32 codePoint);
oc_font_metrics oc_font_get_metrics(oc_font font, f32 emSize);
oc_font_metrics oc_font_get_metrics_unscaled(oc_font font);
oc_font_extents oc_font_get_extents(oc_font font);
oc_font_extents oc_font_get_scaled_extents(oc_font font, f32 emSize);
f32 oc_font_get_scale_for_em_pixels(oc_font font, f32 emSize);
oc_text_metrics oc_font_text_metrics_utf32(oc_font font, f32 fontSize, oc_str32 codepoints);
oc_text_metrics oc_font_text_metrics(oc_font font, f32 fontSize, oc_str8 text);
u32 oc_font_get_glyph_index(oc_font font, oc_utf32 codePoint);
oc_str32 oc_font_get_glyph_indices(oc_font font, oc_str32 codePoints, oc_str32 backing);
oc_str32 oc_font_push_glyph_indices(oc_font font, oc_arena* arena, oc_str32 codePoints);
int oc_font_get_codepoint_extents(oc_font font, oc_utf32 codePoint, oc_text_extents* outExtents);
int oc_font_get_glyph_extents(oc_font font, oc_str32 glyphIndices, oc_text_extents* outExtents);
oc_rect oc_text_bounding_box_utf32(oc_font font, f32 fontSize, oc_str32 text);
oc_rect oc_text_bounding_box(oc_font font, f32 fontSize, oc_str8 text);
//------------------------------------------------------------------------------------------
// images
@ -142,8 +141,7 @@ bool oc_image_is_nil(oc_image a);
oc_image oc_image_create(oc_surface surface, u32 width, u32 height);
oc_image oc_image_create_from_rgba8(oc_surface surface, u32 width, u32 height, u8* pixels);
oc_image oc_image_create_from_memory(oc_surface surface, oc_str8 mem, bool flip);
oc_image oc_image_create_from_file(oc_surface surface, oc_file file, bool flip);
oc_image oc_image_create_from_path(oc_surface surface, oc_str8 path, bool flip);
oc_image oc_image_create_from_file(oc_surface surface, oc_str8 path, bool flip);
void oc_image_destroy(oc_image image);
@ -159,8 +157,6 @@ oc_rect oc_rect_atlas_alloc(oc_rect_atlas* atlas, i32 width, i32 height);
void oc_rect_atlas_recycle(oc_rect_atlas* atlas, oc_rect rect);
oc_image_region oc_image_atlas_alloc_from_rgba8(oc_rect_atlas* atlas, oc_image backingImage, u32 width, u32 height, u8* pixels);
oc_image_region oc_image_atlas_alloc_from_memory(oc_rect_atlas* atlas, oc_image backingImage, oc_str8 mem, bool flip);
oc_image_region oc_image_atlas_alloc_from_file(oc_rect_atlas* atlas, oc_image backingImage, oc_file file, bool flip);
oc_image_region oc_image_atlas_alloc_from_path(oc_rect_atlas* atlas, oc_image backingImage, oc_str8 path, bool flip);
oc_image_region oc_image_atlas_alloc_from_data(oc_rect_atlas* atlas, oc_image backingImage, oc_str8 data, bool flip);
oc_image_region oc_image_atlas_alloc_from_file(oc_rect_atlas* atlas, oc_image backingImage, oc_str8 path, bool flip);
void oc_image_atlas_recycle(oc_rect_atlas* atlas, oc_image_region imageRgn);

View File

@ -1,500 +0,0 @@
<?xml version="1.0"?>
<!-- Generated by SVGo -->
<svg width="1200" height="1050"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<style type="text/css">
<![CDATA[
text {
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"
}
]]>
</style>
<rect x="0" y="0" width="150" height="50" style="fill: #6C090B" />
<text x="5" y="29" style="font-size: 16px; fill: #fff3ef" >red0</text>
<text x="5" y="45" style="font-size: 12px; fill: #fff3ef" >#6C090B</text>
<rect x="0" y="50" width="150" height="50" style="fill: #901110" />
<text x="5" y="79" style="font-size: 16px; fill: #fff3ef" >red1</text>
<text x="5" y="95" style="font-size: 12px; fill: #fff3ef" >#901110</text>
<rect x="0" y="100" width="150" height="50" style="fill: #B42019" />
<text x="5" y="129" style="font-size: 16px; fill: #fff3ef" >red2</text>
<text x="5" y="145" style="font-size: 12px; fill: #fff3ef" >#B42019</text>
<rect x="0" y="150" width="150" height="50" style="fill: #D73324" />
<text x="5" y="179" style="font-size: 16px; fill: #fff3ef" >red3</text>
<text x="5" y="195" style="font-size: 12px; fill: #fff3ef" >#D73324</text>
<rect x="0" y="200" width="150" height="50" style="fill: #FB4932" />
<text x="5" y="229" style="font-size: 16px; fill: #fff3ef" >red4</text>
<text x="5" y="245" style="font-size: 12px; fill: #fff3ef" >#FB4932</text>
<rect x="0" y="250" width="150" height="50" style="fill: #FC725A" />
<text x="5" y="279" style="font-size: 16px; fill: #6c090b" >red5</text>
<text x="5" y="295" style="font-size: 12px; fill: #6c090b" >#FC725A</text>
<rect x="0" y="300" width="150" height="50" style="fill: #FD9983" />
<text x="5" y="329" style="font-size: 16px; fill: #6c090b" >red6</text>
<text x="5" y="345" style="font-size: 12px; fill: #6c090b" >#FD9983</text>
<rect x="0" y="350" width="150" height="50" style="fill: #FDBEAC" />
<text x="5" y="379" style="font-size: 16px; fill: #6c090b" >red7</text>
<text x="5" y="395" style="font-size: 12px; fill: #6c090b" >#FDBEAC</text>
<rect x="0" y="400" width="150" height="50" style="fill: #FEE0D5" />
<text x="5" y="429" style="font-size: 16px; fill: #6c090b" >red8</text>
<text x="5" y="445" style="font-size: 12px; fill: #6c090b" >#FEE0D5</text>
<rect x="0" y="450" width="150" height="50" style="fill: #FFF3EF" />
<text x="5" y="479" style="font-size: 16px; fill: #6c090b" >red9</text>
<text x="5" y="495" style="font-size: 12px; fill: #6c090b" >#FFF3EF</text>
<rect x="150" y="0" width="150" height="50" style="fill: #551F03" />
<text x="155" y="29" style="font-size: 16px; fill: #fff9ed" >orange0</text>
<text x="155" y="45" style="font-size: 12px; fill: #fff9ed" >#551F03</text>
<rect x="150" y="50" width="150" height="50" style="fill: #803506" />
<text x="155" y="79" style="font-size: 16px; fill: #fff9ed" >orange1</text>
<text x="155" y="95" style="font-size: 12px; fill: #fff9ed" >#803506</text>
<rect x="150" y="100" width="150" height="50" style="fill: #AA500A" />
<text x="155" y="129" style="font-size: 16px; fill: #fff9ed" >orange2</text>
<text x="155" y="145" style="font-size: 12px; fill: #fff9ed" >#AA500A</text>
<rect x="150" y="150" width="150" height="50" style="fill: #D56F0F" />
<text x="155" y="179" style="font-size: 16px; fill: #fff9ed" >orange3</text>
<text x="155" y="195" style="font-size: 12px; fill: #fff9ed" >#D56F0F</text>
<rect x="150" y="200" width="150" height="50" style="fill: #FF9214" />
<text x="155" y="229" style="font-size: 16px; fill: #fff9ed" >orange4</text>
<text x="155" y="245" style="font-size: 12px; fill: #fff9ed" >#FF9214</text>
<rect x="150" y="250" width="150" height="50" style="fill: #FFAE43" />
<text x="155" y="279" style="font-size: 16px; fill: #551f03" >orange5</text>
<text x="155" y="295" style="font-size: 12px; fill: #551f03" >#FFAE43</text>
<rect x="150" y="300" width="150" height="50" style="fill: #FFC772" />
<text x="155" y="329" style="font-size: 16px; fill: #551f03" >orange6</text>
<text x="155" y="345" style="font-size: 12px; fill: #551f03" >#FFC772</text>
<rect x="150" y="350" width="150" height="50" style="fill: #FFDDA1" />
<text x="155" y="379" style="font-size: 16px; fill: #551f03" >orange7</text>
<text x="155" y="395" style="font-size: 12px; fill: #551f03" >#FFDDA1</text>
<rect x="150" y="400" width="150" height="50" style="fill: #FFEFD0" />
<text x="155" y="429" style="font-size: 16px; fill: #551f03" >orange8</text>
<text x="155" y="445" style="font-size: 12px; fill: #551f03" >#FFEFD0</text>
<rect x="150" y="450" width="150" height="50" style="fill: #FFF9ED" />
<text x="155" y="479" style="font-size: 16px; fill: #551f03" >orange9</text>
<text x="155" y="495" style="font-size: 12px; fill: #551f03" >#FFF9ED</text>
<rect x="300" y="0" width="150" height="50" style="fill: #512E09" />
<text x="305" y="29" style="font-size: 16px; fill: #fefbed" >amber0</text>
<text x="305" y="45" style="font-size: 12px; fill: #fefbed" >#512E09</text>
<rect x="300" y="50" width="150" height="50" style="fill: #794B0F" />
<text x="305" y="79" style="font-size: 16px; fill: #fefbed" >amber1</text>
<text x="305" y="95" style="font-size: 12px; fill: #fefbed" >#794B0F</text>
<rect x="300" y="100" width="150" height="50" style="fill: #A16B16" />
<text x="305" y="129" style="font-size: 16px; fill: #fefbed" >amber2</text>
<text x="305" y="145" style="font-size: 12px; fill: #fefbed" >#A16B16</text>
<rect x="300" y="150" width="150" height="50" style="fill: #CA8F1E" />
<text x="305" y="179" style="font-size: 16px; fill: #fefbed" >amber3</text>
<text x="305" y="195" style="font-size: 12px; fill: #fefbed" >#CA8F1E</text>
<rect x="300" y="200" width="150" height="50" style="fill: #F2B726" />
<text x="305" y="229" style="font-size: 16px; fill: #fefbed" >amber4</text>
<text x="305" y="245" style="font-size: 12px; fill: #fefbed" >#F2B726</text>
<rect x="300" y="250" width="150" height="50" style="fill: #F5CA50" />
<text x="305" y="279" style="font-size: 16px; fill: #512e09" >amber5</text>
<text x="305" y="295" style="font-size: 12px; fill: #512e09" >#F5CA50</text>
<rect x="300" y="300" width="150" height="50" style="fill: #F7DB7A" />
<text x="305" y="329" style="font-size: 16px; fill: #512e09" >amber6</text>
<text x="305" y="345" style="font-size: 12px; fill: #512e09" >#F7DB7A</text>
<rect x="300" y="350" width="150" height="50" style="fill: #FAEAA6" />
<text x="305" y="379" style="font-size: 16px; fill: #512e09" >amber7</text>
<text x="305" y="395" style="font-size: 12px; fill: #512e09" >#FAEAA6</text>
<rect x="300" y="400" width="150" height="50" style="fill: #FCF6D2" />
<text x="305" y="429" style="font-size: 16px; fill: #512e09" >amber8</text>
<text x="305" y="445" style="font-size: 12px; fill: #512e09" >#FCF6D2</text>
<rect x="300" y="450" width="150" height="50" style="fill: #FEFBED" />
<text x="305" y="479" style="font-size: 16px; fill: #512e09" >amber9</text>
<text x="305" y="495" style="font-size: 12px; fill: #512e09" >#FEFBED</text>
<rect x="450" y="0" width="150" height="50" style="fill: #544903" />
<text x="455" y="29" style="font-size: 16px; fill: #fffeec" >yellow0</text>
<text x="455" y="45" style="font-size: 12px; fill: #fffeec" >#544903</text>
<rect x="450" y="50" width="150" height="50" style="fill: #7E6C06" />
<text x="455" y="79" style="font-size: 16px; fill: #fffeec" >yellow1</text>
<text x="455" y="95" style="font-size: 12px; fill: #fffeec" >#7E6C06</text>
<rect x="450" y="100" width="150" height="50" style="fill: #A88E0A" />
<text x="455" y="129" style="font-size: 16px; fill: #fffeec" >yellow2</text>
<text x="455" y="145" style="font-size: 12px; fill: #fffeec" >#A88E0A</text>
<rect x="450" y="150" width="150" height="50" style="fill: #D2AF0F" />
<text x="455" y="179" style="font-size: 16px; fill: #fffeec" >yellow3</text>
<text x="455" y="195" style="font-size: 12px; fill: #fffeec" >#D2AF0F</text>
<rect x="450" y="200" width="150" height="50" style="fill: #FCCE14" />
<text x="455" y="229" style="font-size: 16px; fill: #fffeec" >yellow4</text>
<text x="455" y="245" style="font-size: 12px; fill: #fffeec" >#FCCE14</text>
<rect x="450" y="250" width="150" height="50" style="fill: #FDDE43" />
<text x="455" y="279" style="font-size: 16px; fill: #544903" >yellow5</text>
<text x="455" y="295" style="font-size: 12px; fill: #544903" >#FDDE43</text>
<rect x="450" y="300" width="150" height="50" style="fill: #FDEB71" />
<text x="455" y="329" style="font-size: 16px; fill: #544903" >yellow6</text>
<text x="455" y="345" style="font-size: 12px; fill: #544903" >#FDEB71</text>
<rect x="450" y="350" width="150" height="50" style="fill: #FEF5A0" />
<text x="455" y="379" style="font-size: 16px; fill: #544903" >yellow7</text>
<text x="455" y="395" style="font-size: 12px; fill: #544903" >#FEF5A0</text>
<rect x="450" y="400" width="150" height="50" style="fill: #FEFBD0" />
<text x="455" y="429" style="font-size: 16px; fill: #544903" >yellow8</text>
<text x="455" y="445" style="font-size: 12px; fill: #544903" >#FEFBD0</text>
<rect x="450" y="450" width="150" height="50" style="fill: #FFFEEC" />
<text x="455" y="479" style="font-size: 16px; fill: #544903" >yellow9</text>
<text x="455" y="495" style="font-size: 12px; fill: #544903" >#FFFEEC</text>
<rect x="600" y="0" width="150" height="50" style="fill: #314603" />
<text x="605" y="29" style="font-size: 16px; fill: #f3fbe9" >lime0</text>
<text x="605" y="45" style="font-size: 12px; fill: #f3fbe9" >#314603</text>
<rect x="600" y="50" width="150" height="50" style="fill: #4B6905" />
<text x="605" y="79" style="font-size: 16px; fill: #f3fbe9" >lime1</text>
<text x="605" y="95" style="font-size: 12px; fill: #f3fbe9" >#4B6905</text>
<rect x="600" y="100" width="150" height="50" style="fill: #678D09" />
<text x="605" y="129" style="font-size: 16px; fill: #f3fbe9" >lime2</text>
<text x="605" y="145" style="font-size: 12px; fill: #f3fbe9" >#678D09</text>
<rect x="600" y="150" width="150" height="50" style="fill: #84B00C" />
<text x="605" y="179" style="font-size: 16px; fill: #f3fbe9" >lime3</text>
<text x="605" y="195" style="font-size: 12px; fill: #f3fbe9" >#84B00C</text>
<rect x="600" y="200" width="150" height="50" style="fill: #A2D311" />
<text x="605" y="229" style="font-size: 16px; fill: #f3fbe9" >lime4</text>
<text x="605" y="245" style="font-size: 12px; fill: #f3fbe9" >#A2D311</text>
<rect x="600" y="250" width="150" height="50" style="fill: #AEDC3A" />
<text x="605" y="279" style="font-size: 16px; fill: #314603" >lime5</text>
<text x="605" y="295" style="font-size: 12px; fill: #314603" >#AEDC3A</text>
<rect x="600" y="300" width="150" height="50" style="fill: #BDE566" />
<text x="605" y="329" style="font-size: 16px; fill: #314603" >lime6</text>
<text x="605" y="345" style="font-size: 12px; fill: #314603" >#BDE566</text>
<rect x="600" y="350" width="150" height="50" style="fill: #CFED96" />
<text x="605" y="379" style="font-size: 16px; fill: #314603" >lime7</text>
<text x="605" y="395" style="font-size: 12px; fill: #314603" >#CFED96</text>
<rect x="600" y="400" width="150" height="50" style="fill: #E5F6C9" />
<text x="605" y="429" style="font-size: 16px; fill: #314603" >lime8</text>
<text x="605" y="445" style="font-size: 12px; fill: #314603" >#E5F6C9</text>
<rect x="600" y="450" width="150" height="50" style="fill: #F3FBE9" />
<text x="605" y="479" style="font-size: 16px; fill: #314603" >lime9</text>
<text x="605" y="495" style="font-size: 12px; fill: #314603" >#F3FBE9</text>
<rect x="750" y="0" width="150" height="50" style="fill: #263D13" />
<text x="755" y="29" style="font-size: 16px; fill: #f3f8ed" >lightGreen0</text>
<text x="755" y="45" style="font-size: 12px; fill: #f3f8ed" >#263D13</text>
<rect x="750" y="50" width="150" height="50" style="fill: #3B5C1D" />
<text x="755" y="79" style="font-size: 16px; fill: #f3f8ed" >lightGreen1</text>
<text x="755" y="95" style="font-size: 12px; fill: #f3f8ed" >#3B5C1D</text>
<rect x="750" y="100" width="150" height="50" style="fill: #517B28" />
<text x="755" y="129" style="font-size: 16px; fill: #f3f8ed" >lightGreen2</text>
<text x="755" y="145" style="font-size: 12px; fill: #f3f8ed" >#517B28</text>
<rect x="750" y="150" width="150" height="50" style="fill: #679934" />
<text x="755" y="179" style="font-size: 16px; fill: #f3f8ed" >lightGreen3</text>
<text x="755" y="195" style="font-size: 12px; fill: #f3f8ed" >#679934</text>
<rect x="750" y="200" width="150" height="50" style="fill: #7FB840" />
<text x="755" y="229" style="font-size: 16px; fill: #f3f8ed" >lightGreen4</text>
<text x="755" y="245" style="font-size: 12px; fill: #f3f8ed" >#7FB840</text>
<rect x="750" y="250" width="150" height="50" style="fill: #97C65F" />
<text x="755" y="279" style="font-size: 16px; fill: #263d13" >lightGreen5</text>
<text x="755" y="295" style="font-size: 12px; fill: #263d13" >#97C65F</text>
<rect x="750" y="300" width="150" height="50" style="fill: #B0D481" />
<text x="755" y="329" style="font-size: 16px; fill: #263d13" >lightGreen6</text>
<text x="755" y="345" style="font-size: 12px; fill: #263d13" >#B0D481</text>
<rect x="750" y="350" width="150" height="50" style="fill: #C9E3A7" />
<text x="755" y="379" style="font-size: 16px; fill: #263d13" >lightGreen7</text>
<text x="755" y="395" style="font-size: 12px; fill: #263d13" >#C9E3A7</text>
<rect x="750" y="400" width="150" height="50" style="fill: #E4F1D1" />
<text x="755" y="429" style="font-size: 16px; fill: #263d13" >lightGreen8</text>
<text x="755" y="445" style="font-size: 12px; fill: #263d13" >#E4F1D1</text>
<rect x="750" y="450" width="150" height="50" style="fill: #F3F8ED" />
<text x="755" y="479" style="font-size: 16px; fill: #263d13" >lightGreen9</text>
<text x="755" y="495" style="font-size: 12px; fill: #263d13" >#F3F8ED</text>
<rect x="900" y="0" width="150" height="50" style="fill: #123C19" />
<text x="905" y="29" style="font-size: 16px; fill: #ecf7ec" >green0</text>
<text x="905" y="45" style="font-size: 12px; fill: #ecf7ec" >#123C19</text>
<rect x="900" y="50" width="150" height="50" style="fill: #1C5A25" />
<text x="905" y="79" style="font-size: 16px; fill: #ecf7ec" >green1</text>
<text x="905" y="95" style="font-size: 12px; fill: #ecf7ec" >#1C5A25</text>
<rect x="900" y="100" width="150" height="50" style="fill: #277731" />
<text x="905" y="129" style="font-size: 16px; fill: #ecf7ec" >green2</text>
<text x="905" y="145" style="font-size: 12px; fill: #ecf7ec" >#277731</text>
<rect x="900" y="150" width="150" height="50" style="fill: #32953D" />
<text x="905" y="179" style="font-size: 16px; fill: #ecf7ec" >green3</text>
<text x="905" y="195" style="font-size: 12px; fill: #ecf7ec" >#32953D</text>
<rect x="900" y="200" width="150" height="50" style="fill: #3EB349" />
<text x="905" y="229" style="font-size: 16px; fill: #ecf7ec" >green4</text>
<text x="905" y="245" style="font-size: 12px; fill: #ecf7ec" >#3EB349</text>
<rect x="900" y="250" width="150" height="50" style="fill: #5DC264" />
<text x="905" y="279" style="font-size: 16px; fill: #123c19" >green5</text>
<text x="905" y="295" style="font-size: 12px; fill: #123c19" >#5DC264</text>
<rect x="900" y="300" width="150" height="50" style="fill: #7FD184" />
<text x="905" y="329" style="font-size: 16px; fill: #123c19" >green6</text>
<text x="905" y="345" style="font-size: 12px; fill: #123c19" >#7FD184</text>
<rect x="900" y="350" width="150" height="50" style="fill: #A6E1A8" />
<text x="905" y="379" style="font-size: 16px; fill: #123c19" >green7</text>
<text x="905" y="395" style="font-size: 12px; fill: #123c19" >#A6E1A8</text>
<rect x="900" y="400" width="150" height="50" style="fill: #D0F0D1" />
<text x="905" y="429" style="font-size: 16px; fill: #123c19" >green8</text>
<text x="905" y="445" style="font-size: 12px; fill: #123c19" >#D0F0D1</text>
<rect x="900" y="450" width="150" height="50" style="fill: #ECF7EC" />
<text x="905" y="479" style="font-size: 16px; fill: #123c19" >green9</text>
<text x="905" y="495" style="font-size: 12px; fill: #123c19" >#ECF7EC</text>
<rect x="1050" y="0" width="150" height="50" style="fill: #023C39" />
<text x="1055" y="29" style="font-size: 16px; fill: #e6f7f4" >teal0</text>
<text x="1055" y="45" style="font-size: 12px; fill: #e6f7f4" >#023C39</text>
<rect x="1050" y="50" width="150" height="50" style="fill: #045A55" />
<text x="1055" y="79" style="font-size: 16px; fill: #e6f7f4" >teal1</text>
<text x="1055" y="95" style="font-size: 12px; fill: #e6f7f4" >#045A55</text>
<rect x="1050" y="100" width="150" height="50" style="fill: #07776F" />
<text x="1055" y="129" style="font-size: 16px; fill: #e6f7f4" >teal2</text>
<text x="1055" y="145" style="font-size: 12px; fill: #e6f7f4" >#07776F</text>
<rect x="1050" y="150" width="150" height="50" style="fill: #0A9588" />
<text x="1055" y="179" style="font-size: 16px; fill: #e6f7f4" >teal3</text>
<text x="1055" y="195" style="font-size: 12px; fill: #e6f7f4" >#0A9588</text>
<rect x="1050" y="200" width="150" height="50" style="fill: #0EB3A1" />
<text x="1055" y="229" style="font-size: 16px; fill: #e6f7f4" >teal4</text>
<text x="1055" y="245" style="font-size: 12px; fill: #e6f7f4" >#0EB3A1</text>
<rect x="1050" y="250" width="150" height="50" style="fill: #33C2B0" />
<text x="1055" y="279" style="font-size: 16px; fill: #023c39" >teal5</text>
<text x="1055" y="295" style="font-size: 12px; fill: #023c39" >#33C2B0</text>
<rect x="1050" y="300" width="150" height="50" style="fill: #5ED1C1" />
<text x="1055" y="329" style="font-size: 16px; fill: #023c39" >teal6</text>
<text x="1055" y="345" style="font-size: 12px; fill: #023c39" >#5ED1C1</text>
<rect x="1050" y="350" width="150" height="50" style="fill: #8EE1D3" />
<text x="1055" y="379" style="font-size: 16px; fill: #023c39" >teal7</text>
<text x="1055" y="395" style="font-size: 12px; fill: #023c39" >#8EE1D3</text>
<rect x="1050" y="400" width="150" height="50" style="fill: #C4F0E8" />
<text x="1055" y="429" style="font-size: 16px; fill: #023c39" >teal8</text>
<text x="1055" y="445" style="font-size: 12px; fill: #023c39" >#C4F0E8</text>
<rect x="1050" y="450" width="150" height="50" style="fill: #E6F7F4" />
<text x="1055" y="479" style="font-size: 16px; fill: #023c39" >teal9</text>
<text x="1055" y="495" style="font-size: 12px; fill: #023c39" >#E6F7F4</text>
<rect x="0" y="500" width="150" height="50" style="fill: #04343D" />
<text x="5" y="529" style="font-size: 16px; fill: #e7f7f8" >cyan0</text>
<text x="5" y="545" style="font-size: 12px; fill: #e7f7f8" >#04343D</text>
<rect x="0" y="550" width="150" height="50" style="fill: #074F5C" />
<text x="5" y="579" style="font-size: 16px; fill: #e7f7f8" >cyan1</text>
<text x="5" y="595" style="font-size: 12px; fill: #e7f7f8" >#074F5C</text>
<rect x="0" y="600" width="150" height="50" style="fill: #0A6C7B" />
<text x="5" y="629" style="font-size: 16px; fill: #e7f7f8" >cyan2</text>
<text x="5" y="645" style="font-size: 12px; fill: #e7f7f8" >#0A6C7B</text>
<rect x="0" y="650" width="150" height="50" style="fill: #0E8999" />
<text x="5" y="679" style="font-size: 16px; fill: #e7f7f8" >cyan3</text>
<text x="5" y="695" style="font-size: 12px; fill: #e7f7f8" >#0E8999</text>
<rect x="0" y="700" width="150" height="50" style="fill: #13A8B8" />
<text x="5" y="729" style="font-size: 16px; fill: #e7f7f8" >cyan4</text>
<text x="5" y="745" style="font-size: 12px; fill: #e7f7f8" >#13A8B8</text>
<rect x="0" y="750" width="150" height="50" style="fill: #38BBC6" />
<text x="5" y="779" style="font-size: 16px; fill: #04343d" >cyan5</text>
<text x="5" y="795" style="font-size: 12px; fill: #04343d" >#38BBC6</text>
<rect x="0" y="800" width="150" height="50" style="fill: #62CDD4" />
<text x="5" y="829" style="font-size: 16px; fill: #04343d" >cyan6</text>
<text x="5" y="845" style="font-size: 12px; fill: #04343d" >#62CDD4</text>
<rect x="0" y="850" width="150" height="50" style="fill: #91DFE3" />
<text x="5" y="879" style="font-size: 16px; fill: #04343d" >cyan7</text>
<text x="5" y="895" style="font-size: 12px; fill: #04343d" >#91DFE3</text>
<rect x="0" y="900" width="150" height="50" style="fill: #C6EFF1" />
<text x="5" y="929" style="font-size: 16px; fill: #04343d" >cyan8</text>
<text x="5" y="945" style="font-size: 12px; fill: #04343d" >#C6EFF1</text>
<rect x="0" y="950" width="150" height="50" style="fill: #E7F7F8" />
<text x="5" y="979" style="font-size: 16px; fill: #04343d" >cyan9</text>
<text x="5" y="995" style="font-size: 12px; fill: #04343d" >#E7F7F8</text>
<rect x="150" y="500" width="150" height="50" style="fill: #003761" />
<text x="155" y="529" style="font-size: 16px; fill: #ebf8fe" >lightBlue0</text>
<text x="155" y="545" style="font-size: 12px; fill: #ebf8fe" >#003761</text>
<rect x="150" y="550" width="150" height="50" style="fill: #004D85" />
<text x="155" y="579" style="font-size: 16px; fill: #ebf8fe" >lightBlue1</text>
<text x="155" y="595" style="font-size: 12px; fill: #ebf8fe" >#004D85</text>
<rect x="150" y="600" width="150" height="50" style="fill: #0366A9" />
<text x="155" y="629" style="font-size: 16px; fill: #ebf8fe" >lightBlue2</text>
<text x="155" y="645" style="font-size: 12px; fill: #ebf8fe" >#0366A9</text>
<rect x="150" y="650" width="150" height="50" style="fill: #0A81CC" />
<text x="155" y="679" style="font-size: 16px; fill: #ebf8fe" >lightBlue3</text>
<text x="155" y="695" style="font-size: 12px; fill: #ebf8fe" >#0A81CC</text>
<rect x="150" y="700" width="150" height="50" style="fill: #139FF0" />
<text x="155" y="729" style="font-size: 16px; fill: #ebf8fe" >lightBlue4</text>
<text x="155" y="745" style="font-size: 12px; fill: #ebf8fe" >#139FF0</text>
<rect x="150" y="750" width="150" height="50" style="fill: #40B4F3" />
<text x="155" y="779" style="font-size: 16px; fill: #003761" >lightBlue5</text>
<text x="155" y="795" style="font-size: 12px; fill: #003761" >#40B4F3</text>
<rect x="150" y="800" width="150" height="50" style="fill: #6EC8F6" />
<text x="155" y="829" style="font-size: 16px; fill: #003761" >lightBlue6</text>
<text x="155" y="845" style="font-size: 12px; fill: #003761" >#6EC8F6</text>
<rect x="150" y="850" width="150" height="50" style="fill: #9DDCF9" />
<text x="155" y="879" style="font-size: 16px; fill: #003761" >lightBlue7</text>
<text x="155" y="895" style="font-size: 12px; fill: #003761" >#9DDCF9</text>
<rect x="150" y="900" width="150" height="50" style="fill: #CEEEFC" />
<text x="155" y="929" style="font-size: 16px; fill: #003761" >lightBlue8</text>
<text x="155" y="945" style="font-size: 12px; fill: #003761" >#CEEEFC</text>
<rect x="150" y="950" width="150" height="50" style="fill: #EBF8FE" />
<text x="155" y="979" style="font-size: 16px; fill: #003761" >lightBlue9</text>
<text x="155" y="995" style="font-size: 12px; fill: #003761" >#EBF8FE</text>
<rect x="300" y="500" width="150" height="50" style="fill: #053170" />
<text x="305" y="529" style="font-size: 16px; fill: #eff8ff" >blue0</text>
<text x="305" y="545" style="font-size: 12px; fill: #eff8ff" >#053170</text>
<rect x="300" y="550" width="150" height="50" style="fill: #0A4694" />
<text x="305" y="579" style="font-size: 16px; fill: #eff8ff" >blue1</text>
<text x="305" y="595" style="font-size: 12px; fill: #eff8ff" >#0A4694</text>
<rect x="300" y="600" width="150" height="50" style="fill: #135CB8" />
<text x="305" y="629" style="font-size: 16px; fill: #eff8ff" >blue2</text>
<text x="305" y="645" style="font-size: 12px; fill: #eff8ff" >#135CB8</text>
<rect x="300" y="650" width="150" height="50" style="fill: #1D75DB" />
<text x="305" y="679" style="font-size: 16px; fill: #eff8ff" >blue3</text>
<text x="305" y="695" style="font-size: 12px; fill: #eff8ff" >#1D75DB</text>
<rect x="300" y="700" width="150" height="50" style="fill: #2990FF" />
<text x="305" y="729" style="font-size: 16px; fill: #eff8ff" >blue4</text>
<text x="305" y="745" style="font-size: 12px; fill: #eff8ff" >#2990FF</text>
<rect x="300" y="750" width="150" height="50" style="fill: #54A9FF" />
<text x="305" y="779" style="font-size: 16px; fill: #053170" >blue5</text>
<text x="305" y="795" style="font-size: 12px; fill: #053170" >#54A9FF</text>
<rect x="300" y="800" width="150" height="50" style="fill: #7FC1FF" />
<text x="305" y="829" style="font-size: 16px; fill: #053170" >blue6</text>
<text x="305" y="845" style="font-size: 12px; fill: #053170" >#7FC1FF</text>
<rect x="300" y="850" width="150" height="50" style="fill: #A9D7FF" />
<text x="305" y="879" style="font-size: 16px; fill: #053170" >blue7</text>
<text x="305" y="895" style="font-size: 12px; fill: #053170" >#A9D7FF</text>
<rect x="300" y="900" width="150" height="50" style="fill: #D4ECFF" />
<text x="305" y="929" style="font-size: 16px; fill: #053170" >blue8</text>
<text x="305" y="945" style="font-size: 12px; fill: #053170" >#D4ECFF</text>
<rect x="300" y="950" width="150" height="50" style="fill: #EFF8FF" />
<text x="305" y="979" style="font-size: 16px; fill: #053170" >blue9</text>
<text x="305" y="995" style="font-size: 12px; fill: #053170" >#EFF8FF</text>
<rect x="450" y="500" width="150" height="50" style="fill: #171E65" />
<text x="455" y="529" style="font-size: 16px; fill: #edeff8" >indigo0</text>
<text x="455" y="545" style="font-size: 12px; fill: #edeff8" >#171E65</text>
<rect x="450" y="550" width="150" height="50" style="fill: #20297A" />
<text x="455" y="579" style="font-size: 16px; fill: #edeff8" >indigo1</text>
<text x="455" y="595" style="font-size: 12px; fill: #edeff8" >#20297A</text>
<rect x="450" y="600" width="150" height="50" style="fill: #29368E" />
<text x="455" y="629" style="font-size: 16px; fill: #edeff8" >indigo2</text>
<text x="455" y="645" style="font-size: 12px; fill: #edeff8" >#29368E</text>
<rect x="450" y="650" width="150" height="50" style="fill: #3444A3" />
<text x="455" y="679" style="font-size: 16px; fill: #edeff8" >indigo3</text>
<text x="455" y="695" style="font-size: 12px; fill: #edeff8" >#3444A3</text>
<rect x="450" y="700" width="150" height="50" style="fill: #4053B7" />
<text x="455" y="729" style="font-size: 16px; fill: #edeff8" >indigo4</text>
<text x="455" y="745" style="font-size: 12px; fill: #edeff8" >#4053B7</text>
<rect x="450" y="750" width="150" height="50" style="fill: #5F71C5" />
<text x="455" y="779" style="font-size: 16px; fill: #171e65" >indigo5</text>
<text x="455" y="795" style="font-size: 12px; fill: #171e65" >#5F71C5</text>
<rect x="450" y="800" width="150" height="50" style="fill: #8191D4" />
<text x="455" y="829" style="font-size: 16px; fill: #171e65" >indigo6</text>
<text x="455" y="845" style="font-size: 12px; fill: #171e65" >#8191D4</text>
<rect x="450" y="850" width="150" height="50" style="fill: #A7B4E2" />
<text x="455" y="879" style="font-size: 16px; fill: #171e65" >indigo7</text>
<text x="455" y="895" style="font-size: 12px; fill: #171e65" >#A7B4E2</text>
<rect x="450" y="900" width="150" height="50" style="fill: #D1D8F1" />
<text x="455" y="929" style="font-size: 16px; fill: #171e65" >indigo8</text>
<text x="455" y="945" style="font-size: 12px; fill: #171e65" >#D1D8F1</text>
<rect x="450" y="950" width="150" height="50" style="fill: #EDEFF8" />
<text x="455" y="979" style="font-size: 16px; fill: #171e65" >indigo9</text>
<text x="455" y="995" style="font-size: 12px; fill: #171e65" >#EDEFF8</text>
<rect x="600" y="500" width="150" height="50" style="fill: #401B77" />
<text x="605" y="529" style="font-size: 16px; fill: #f1eefa" >violet0</text>
<text x="605" y="545" style="font-size: 12px; fill: #f1eefa" >#401B77</text>
<rect x="600" y="550" width="150" height="50" style="fill: #4C248C" />
<text x="605" y="579" style="font-size: 16px; fill: #f1eefa" >violet1</text>
<text x="605" y="595" style="font-size: 12px; fill: #f1eefa" >#4C248C</text>
<rect x="600" y="600" width="150" height="50" style="fill: #582EA0" />
<text x="605" y="629" style="font-size: 16px; fill: #f1eefa" >violet2</text>
<text x="605" y="645" style="font-size: 12px; fill: #f1eefa" >#582EA0</text>
<rect x="600" y="650" width="150" height="50" style="fill: #6439B5" />
<text x="605" y="679" style="font-size: 16px; fill: #f1eefa" >violet3</text>
<text x="605" y="695" style="font-size: 12px; fill: #f1eefa" >#6439B5</text>
<rect x="600" y="700" width="150" height="50" style="fill: #7246C9" />
<text x="605" y="729" style="font-size: 16px; fill: #f1eefa" >violet4</text>
<text x="605" y="745" style="font-size: 12px; fill: #f1eefa" >#7246C9</text>
<rect x="600" y="750" width="150" height="50" style="fill: #8865D4" />
<text x="605" y="779" style="font-size: 16px; fill: #401b77" >violet5</text>
<text x="605" y="795" style="font-size: 12px; fill: #401b77" >#8865D4</text>
<rect x="600" y="800" width="150" height="50" style="fill: #A288DF" />
<text x="605" y="829" style="font-size: 16px; fill: #401b77" >violet6</text>
<text x="605" y="845" style="font-size: 12px; fill: #401b77" >#A288DF</text>
<rect x="600" y="850" width="150" height="50" style="fill: #BEADE9" />
<text x="605" y="879" style="font-size: 16px; fill: #401b77" >violet7</text>
<text x="605" y="895" style="font-size: 12px; fill: #401b77" >#BEADE9</text>
<rect x="600" y="900" width="150" height="50" style="fill: #DDD4F4" />
<text x="605" y="929" style="font-size: 16px; fill: #401b77" >violet8</text>
<text x="605" y="945" style="font-size: 12px; fill: #401b77" >#DDD4F4</text>
<rect x="600" y="950" width="150" height="50" style="fill: #F1EEFA" />
<text x="605" y="979" style="font-size: 16px; fill: #401b77" >violet9</text>
<text x="605" y="995" style="font-size: 12px; fill: #401b77" >#F1EEFA</text>
<rect x="750" y="500" width="150" height="50" style="fill: #4A1061" />
<text x="755" y="529" style="font-size: 16px; fill: #f7ebf7" >purple0</text>
<text x="755" y="545" style="font-size: 12px; fill: #f7ebf7" >#4A1061</text>
<rect x="750" y="550" width="150" height="50" style="fill: #5E1776" />
<text x="755" y="579" style="font-size: 16px; fill: #f7ebf7" >purple1</text>
<text x="755" y="595" style="font-size: 12px; fill: #f7ebf7" >#5E1776</text>
<rect x="750" y="600" width="150" height="50" style="fill: #731F8A" />
<text x="755" y="629" style="font-size: 16px; fill: #f7ebf7" >purple2</text>
<text x="755" y="645" style="font-size: 12px; fill: #f7ebf7" >#731F8A</text>
<rect x="750" y="650" width="150" height="50" style="fill: #89289F" />
<text x="755" y="679" style="font-size: 16px; fill: #f7ebf7" >purple3</text>
<text x="755" y="695" style="font-size: 12px; fill: #f7ebf7" >#89289F</text>
<rect x="750" y="700" width="150" height="50" style="fill: #A033B3" />
<text x="755" y="729" style="font-size: 16px; fill: #f7ebf7" >purple4</text>
<text x="755" y="745" style="font-size: 12px; fill: #f7ebf7" >#A033B3</text>
<rect x="750" y="750" width="150" height="50" style="fill: #B553C2" />
<text x="755" y="779" style="font-size: 16px; fill: #4a1061" >purple5</text>
<text x="755" y="795" style="font-size: 12px; fill: #4a1061" >#B553C2</text>
<rect x="750" y="800" width="150" height="50" style="fill: #CA78D1" />
<text x="755" y="829" style="font-size: 16px; fill: #4a1061" >purple6</text>
<text x="755" y="845" style="font-size: 12px; fill: #4a1061" >#CA78D1</text>
<rect x="750" y="850" width="150" height="50" style="fill: #DDA0E1" />
<text x="755" y="879" style="font-size: 16px; fill: #4a1061" >purple7</text>
<text x="755" y="895" style="font-size: 12px; fill: #4a1061" >#DDA0E1</text>
<rect x="750" y="900" width="150" height="50" style="fill: #EFCEF0" />
<text x="755" y="929" style="font-size: 16px; fill: #4a1061" >purple8</text>
<text x="755" y="945" style="font-size: 12px; fill: #4a1061" >#EFCEF0</text>
<rect x="750" y="950" width="150" height="50" style="fill: #F7EBF7" />
<text x="755" y="979" style="font-size: 16px; fill: #4a1061" >purple9</text>
<text x="755" y="995" style="font-size: 12px; fill: #4a1061" >#F7EBF7</text>
<rect x="900" y="500" width="150" height="50" style="fill: #5C0730" />
<text x="905" y="529" style="font-size: 16px; fill: #fdeef1" >pink0</text>
<text x="905" y="545" style="font-size: 12px; fill: #fdeef1" >#5C0730</text>
<rect x="900" y="550" width="150" height="50" style="fill: #800E41" />
<text x="905" y="579" style="font-size: 16px; fill: #fdeef1" >pink1</text>
<text x="905" y="595" style="font-size: 12px; fill: #fdeef1" >#800E41</text>
<rect x="900" y="600" width="150" height="50" style="fill: #A41751" />
<text x="905" y="629" style="font-size: 16px; fill: #fdeef1" >pink2</text>
<text x="905" y="645" style="font-size: 12px; fill: #fdeef1" >#A41751</text>
<rect x="900" y="650" width="150" height="50" style="fill: #C72261" />
<text x="905" y="679" style="font-size: 16px; fill: #fdeef1" >pink3</text>
<text x="905" y="695" style="font-size: 12px; fill: #fdeef1" >#C72261</text>
<rect x="900" y="700" width="150" height="50" style="fill: #EB2F71" />
<text x="905" y="729" style="font-size: 16px; fill: #fdeef1" >pink4</text>
<text x="905" y="745" style="font-size: 12px; fill: #fdeef1" >#EB2F71</text>
<rect x="900" y="750" width="150" height="50" style="fill: #EF5686" />
<text x="905" y="779" style="font-size: 16px; fill: #5c0730" >pink5</text>
<text x="905" y="795" style="font-size: 12px; fill: #5c0730" >#EF5686</text>
<rect x="900" y="800" width="150" height="50" style="fill: #F37E9F" />
<text x="905" y="829" style="font-size: 16px; fill: #5c0730" >pink6</text>
<text x="905" y="845" style="font-size: 12px; fill: #5c0730" >#F37E9F</text>
<rect x="900" y="850" width="150" height="50" style="fill: #F7A8BC" />
<text x="905" y="879" style="font-size: 16px; fill: #5c0730" >pink7</text>
<text x="905" y="895" style="font-size: 12px; fill: #5c0730" >#F7A8BC</text>
<rect x="900" y="900" width="150" height="50" style="fill: #FBD3DC" />
<text x="905" y="929" style="font-size: 16px; fill: #5c0730" >pink8</text>
<text x="905" y="945" style="font-size: 12px; fill: #5c0730" >#FBD3DC</text>
<rect x="900" y="950" width="150" height="50" style="fill: #FDEEF1" />
<text x="905" y="979" style="font-size: 16px; fill: #5c0730" >pink9</text>
<text x="905" y="995" style="font-size: 12px; fill: #5c0730" >#FDEEF1</text>
<rect x="1050" y="500" width="150" height="50" style="fill: #1C1F23" />
<text x="1055" y="529" style="font-size: 16px; fill: #f9f9f9" >grey0</text>
<text x="1055" y="545" style="font-size: 12px; fill: #f9f9f9" >#1C1F23</text>
<rect x="1050" y="550" width="150" height="50" style="fill: #2E3238" />
<text x="1055" y="579" style="font-size: 16px; fill: #f9f9f9" >grey1</text>
<text x="1055" y="595" style="font-size: 12px; fill: #f9f9f9" >#2E3238</text>
<rect x="1050" y="600" width="150" height="50" style="fill: #41464C" />
<text x="1055" y="629" style="font-size: 16px; fill: #f9f9f9" >grey2</text>
<text x="1055" y="645" style="font-size: 12px; fill: #f9f9f9" >#41464C</text>
<rect x="1050" y="650" width="150" height="50" style="fill: #555B61" />
<text x="1055" y="679" style="font-size: 16px; fill: #f9f9f9" >grey3</text>
<text x="1055" y="695" style="font-size: 12px; fill: #f9f9f9" >#555B61</text>
<rect x="1050" y="700" width="150" height="50" style="fill: #6B7075" />
<text x="1055" y="729" style="font-size: 16px; fill: #f9f9f9" >grey4</text>
<text x="1055" y="745" style="font-size: 12px; fill: #f9f9f9" >#6B7075</text>
<rect x="1050" y="750" width="150" height="50" style="fill: #888D92" />
<text x="1055" y="779" style="font-size: 16px; fill: #1c1f23" >grey5</text>
<text x="1055" y="795" style="font-size: 12px; fill: #1c1f23" >#888D92</text>
<rect x="1050" y="800" width="150" height="50" style="fill: #A7ABB0" />
<text x="1055" y="829" style="font-size: 16px; fill: #1c1f23" >grey6</text>
<text x="1055" y="845" style="font-size: 12px; fill: #1c1f23" >#A7ABB0</text>
<rect x="1050" y="850" width="150" height="50" style="fill: #C6CACD" />
<text x="1055" y="879" style="font-size: 16px; fill: #1c1f23" >grey7</text>
<text x="1055" y="895" style="font-size: 12px; fill: #1c1f23" >#C6CACD</text>
<rect x="1050" y="900" width="150" height="50" style="fill: #E6E8EA" />
<text x="1055" y="929" style="font-size: 16px; fill: #1c1f23" >grey8</text>
<text x="1055" y="945" style="font-size: 12px; fill: #1c1f23" >#E6E8EA</text>
<rect x="1050" y="950" width="150" height="50" style="fill: #F9F9F9" />
<text x="1055" y="979" style="font-size: 16px; fill: #1c1f23" >grey9</text>
<text x="1055" y="995" style="font-size: 12px; fill: #1c1f23" >#F9F9F9</text>
<rect x="0" y="1000" width="600" height="50" style="fill: #FFFFFF" />
<text x="5" y="1029" style="font-size: 16px; fill: #808080" >white</text>
<text x="5" y="1045" style="font-size: 12px; fill: #808080" >#FFFFFF</text>
<rect x="600" y="1000" width="600" height="50" style="fill: #000000" />
<text x="605" y="1029" style="font-size: 16px; fill: #808080" >black</text>
<text x="605" y="1045" style="font-size: 12px; fill: #808080" >#000000</text>
</svg>

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,500 +0,0 @@
<?xml version="1.0"?>
<!-- Generated by SVGo -->
<svg width="1200" height="1050"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<style type="text/css">
<![CDATA[
text {
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"
}
]]>
</style>
<rect x="0" y="0" width="150" height="50" style="fill: #FEF2ED" />
<text x="5" y="29" style="font-size: 16px; fill: #6a0103" >red0</text>
<text x="5" y="45" style="font-size: 12px; fill: #6a0103" >#FEF2ED</text>
<rect x="0" y="50" width="150" height="50" style="fill: #FEDDD2" />
<text x="5" y="79" style="font-size: 16px; fill: #6a0103" >red1</text>
<text x="5" y="95" style="font-size: 12px; fill: #6a0103" >#FEDDD2</text>
<rect x="0" y="100" width="150" height="50" style="fill: #FDB7A5" />
<text x="5" y="129" style="font-size: 16px; fill: #6a0103" >red2</text>
<text x="5" y="145" style="font-size: 12px; fill: #6a0103" >#FDB7A5</text>
<rect x="0" y="150" width="150" height="50" style="fill: #FB9078" />
<text x="5" y="179" style="font-size: 16px; fill: #6a0103" >red3</text>
<text x="5" y="195" style="font-size: 12px; fill: #6a0103" >#FB9078</text>
<rect x="0" y="200" width="150" height="50" style="fill: #FA664C" />
<text x="5" y="229" style="font-size: 16px; fill: #6a0103" >red4</text>
<text x="5" y="245" style="font-size: 12px; fill: #6a0103" >#FA664C</text>
<rect x="0" y="250" width="150" height="50" style="fill: #F93920" />
<text x="5" y="279" style="font-size: 16px; fill: #fef2ed" >red5</text>
<text x="5" y="295" style="font-size: 12px; fill: #fef2ed" >#F93920</text>
<rect x="0" y="300" width="150" height="50" style="fill: #D52515" />
<text x="5" y="329" style="font-size: 16px; fill: #fef2ed" >red6</text>
<text x="5" y="345" style="font-size: 12px; fill: #fef2ed" >#D52515</text>
<rect x="0" y="350" width="150" height="50" style="fill: #B2140C" />
<text x="5" y="379" style="font-size: 16px; fill: #fef2ed" >red7</text>
<text x="5" y="395" style="font-size: 12px; fill: #fef2ed" >#B2140C</text>
<rect x="0" y="400" width="150" height="50" style="fill: #8E0805" />
<text x="5" y="429" style="font-size: 16px; fill: #fef2ed" >red8</text>
<text x="5" y="445" style="font-size: 12px; fill: #fef2ed" >#8E0805</text>
<rect x="0" y="450" width="150" height="50" style="fill: #6A0103" />
<text x="5" y="479" style="font-size: 16px; fill: #fef2ed" >red9</text>
<text x="5" y="495" style="font-size: 12px; fill: #fef2ed" >#6A0103</text>
<rect x="150" y="0" width="150" height="50" style="fill: #FFF8EA" />
<text x="155" y="29" style="font-size: 16px; fill: #541d00" >orange0</text>
<text x="155" y="45" style="font-size: 12px; fill: #541d00" >#FFF8EA</text>
<rect x="150" y="50" width="150" height="50" style="fill: #FEEECC" />
<text x="155" y="79" style="font-size: 16px; fill: #541d00" >orange1</text>
<text x="155" y="95" style="font-size: 12px; fill: #541d00" >#FEEECC</text>
<rect x="150" y="100" width="150" height="50" style="fill: #FED998" />
<text x="155" y="129" style="font-size: 16px; fill: #541d00" >orange2</text>
<text x="155" y="145" style="font-size: 12px; fill: #541d00" >#FED998</text>
<rect x="150" y="150" width="150" height="50" style="fill: #FDC165" />
<text x="155" y="179" style="font-size: 16px; fill: #541d00" >orange3</text>
<text x="155" y="195" style="font-size: 12px; fill: #541d00" >#FDC165</text>
<rect x="150" y="200" width="150" height="50" style="fill: #FDA633" />
<text x="155" y="229" style="font-size: 16px; fill: #541d00" >orange4</text>
<text x="155" y="245" style="font-size: 12px; fill: #541d00" >#FDA633</text>
<rect x="150" y="250" width="150" height="50" style="fill: #FC8800" />
<text x="155" y="279" style="font-size: 16px; fill: #fff8ea" >orange5</text>
<text x="155" y="295" style="font-size: 12px; fill: #fff8ea" >#FC8800</text>
<rect x="150" y="300" width="150" height="50" style="fill: #D26700" />
<text x="155" y="329" style="font-size: 16px; fill: #fff8ea" >orange6</text>
<text x="155" y="345" style="font-size: 12px; fill: #fff8ea" >#D26700</text>
<rect x="150" y="350" width="150" height="50" style="fill: #A84A00" />
<text x="155" y="379" style="font-size: 16px; fill: #fff8ea" >orange7</text>
<text x="155" y="395" style="font-size: 12px; fill: #fff8ea" >#A84A00</text>
<rect x="150" y="400" width="150" height="50" style="fill: #7E3100" />
<text x="155" y="429" style="font-size: 16px; fill: #fff8ea" >orange8</text>
<text x="155" y="445" style="font-size: 12px; fill: #fff8ea" >#7E3100</text>
<rect x="150" y="450" width="150" height="50" style="fill: #541D00" />
<text x="155" y="479" style="font-size: 16px; fill: #fff8ea" >orange9</text>
<text x="155" y="495" style="font-size: 12px; fill: #fff8ea" >#541D00</text>
<rect x="300" y="0" width="150" height="50" style="fill: #FEFBEB" />
<text x="305" y="29" style="font-size: 16px; fill: #502b03" >amber0</text>
<text x="305" y="45" style="font-size: 12px; fill: #502b03" >#FEFBEB</text>
<rect x="300" y="50" width="150" height="50" style="fill: #FCF5CE" />
<text x="305" y="79" style="font-size: 16px; fill: #502b03" >amber1</text>
<text x="305" y="95" style="font-size: 12px; fill: #502b03" >#FCF5CE</text>
<rect x="300" y="100" width="150" height="50" style="fill: #F9E89E" />
<text x="305" y="129" style="font-size: 16px; fill: #502b03" >amber2</text>
<text x="305" y="145" style="font-size: 12px; fill: #502b03" >#F9E89E</text>
<rect x="300" y="150" width="150" height="50" style="fill: #F6D86F" />
<text x="305" y="179" style="font-size: 16px; fill: #502b03" >amber3</text>
<text x="305" y="195" style="font-size: 12px; fill: #502b03" >#F6D86F</text>
<rect x="300" y="200" width="150" height="50" style="fill: #F3C641" />
<text x="305" y="229" style="font-size: 16px; fill: #502b03" >amber4</text>
<text x="305" y="245" style="font-size: 12px; fill: #502b03" >#F3C641</text>
<rect x="300" y="250" width="150" height="50" style="fill: #F0B114" />
<text x="305" y="279" style="font-size: 16px; fill: #fefbeb" >amber5</text>
<text x="305" y="295" style="font-size: 12px; fill: #fefbeb" >#F0B114</text>
<rect x="300" y="300" width="150" height="50" style="fill: #C88A0F" />
<text x="305" y="329" style="font-size: 16px; fill: #fefbeb" >amber6</text>
<text x="305" y="345" style="font-size: 12px; fill: #fefbeb" >#C88A0F</text>
<rect x="300" y="350" width="150" height="50" style="fill: #A0660A" />
<text x="305" y="379" style="font-size: 16px; fill: #fefbeb" >amber7</text>
<text x="305" y="395" style="font-size: 12px; fill: #fefbeb" >#A0660A</text>
<rect x="300" y="400" width="150" height="50" style="fill: #784606" />
<text x="305" y="429" style="font-size: 16px; fill: #fefbeb" >amber8</text>
<text x="305" y="445" style="font-size: 12px; fill: #fefbeb" >#784606</text>
<rect x="300" y="450" width="150" height="50" style="fill: #502B03" />
<text x="305" y="479" style="font-size: 16px; fill: #fefbeb" >amber9</text>
<text x="305" y="495" style="font-size: 12px; fill: #fefbeb" >#502B03</text>
<rect x="450" y="0" width="150" height="50" style="fill: #FFFDEA" />
<text x="455" y="29" style="font-size: 16px; fill: #534800" >yellow0</text>
<text x="455" y="45" style="font-size: 12px; fill: #534800" >#FFFDEA</text>
<rect x="450" y="50" width="150" height="50" style="fill: #FEFBCB" />
<text x="455" y="79" style="font-size: 16px; fill: #534800" >yellow1</text>
<text x="455" y="95" style="font-size: 12px; fill: #534800" >#FEFBCB</text>
<rect x="450" y="100" width="150" height="50" style="fill: #FDF398" />
<text x="455" y="129" style="font-size: 16px; fill: #534800" >yellow2</text>
<text x="455" y="145" style="font-size: 12px; fill: #534800" >#FDF398</text>
<rect x="450" y="150" width="150" height="50" style="fill: #FCE865" />
<text x="455" y="179" style="font-size: 16px; fill: #534800" >yellow3</text>
<text x="455" y="195" style="font-size: 12px; fill: #534800" >#FCE865</text>
<rect x="450" y="200" width="150" height="50" style="fill: #FBDA32" />
<text x="455" y="229" style="font-size: 16px; fill: #534800" >yellow4</text>
<text x="455" y="245" style="font-size: 12px; fill: #534800" >#FBDA32</text>
<rect x="450" y="250" width="150" height="50" style="fill: #FAC800" />
<text x="455" y="279" style="font-size: 16px; fill: #fffdea" >yellow5</text>
<text x="455" y="295" style="font-size: 12px; fill: #fffdea" >#FAC800</text>
<rect x="450" y="300" width="150" height="50" style="fill: #D0AA00" />
<text x="455" y="329" style="font-size: 16px; fill: #fffdea" >yellow6</text>
<text x="455" y="345" style="font-size: 12px; fill: #fffdea" >#D0AA00</text>
<rect x="450" y="350" width="150" height="50" style="fill: #A78B00" />
<text x="455" y="379" style="font-size: 16px; fill: #fffdea" >yellow7</text>
<text x="455" y="395" style="font-size: 12px; fill: #fffdea" >#A78B00</text>
<rect x="450" y="400" width="150" height="50" style="fill: #7D6A00" />
<text x="455" y="429" style="font-size: 16px; fill: #fffdea" >yellow8</text>
<text x="455" y="445" style="font-size: 12px; fill: #fffdea" >#7D6A00</text>
<rect x="450" y="450" width="150" height="50" style="fill: #534800" />
<text x="455" y="479" style="font-size: 16px; fill: #fffdea" >yellow9</text>
<text x="455" y="495" style="font-size: 12px; fill: #fffdea" >#534800</text>
<rect x="600" y="0" width="150" height="50" style="fill: #F2FAE6" />
<text x="605" y="29" style="font-size: 16px; fill: #2f4600" >lime0</text>
<text x="605" y="45" style="font-size: 12px; fill: #2f4600" >#F2FAE6</text>
<rect x="600" y="50" width="150" height="50" style="fill: #E3F6C5" />
<text x="605" y="79" style="font-size: 16px; fill: #2f4600" >lime1</text>
<text x="605" y="95" style="font-size: 12px; fill: #2f4600" >#E3F6C5</text>
<rect x="600" y="100" width="150" height="50" style="fill: #CBED8E" />
<text x="605" y="129" style="font-size: 16px; fill: #2f4600" >lime2</text>
<text x="605" y="145" style="font-size: 12px; fill: #2f4600" >#CBED8E</text>
<rect x="600" y="150" width="150" height="50" style="fill: #B7E35B" />
<text x="605" y="179" style="font-size: 16px; fill: #2f4600" >lime3</text>
<text x="605" y="195" style="font-size: 12px; fill: #2f4600" >#B7E35B</text>
<rect x="600" y="200" width="150" height="50" style="fill: #A7DA2C" />
<text x="605" y="229" style="font-size: 16px; fill: #2f4600" >lime4</text>
<text x="605" y="245" style="font-size: 12px; fill: #2f4600" >#A7DA2C</text>
<rect x="600" y="250" width="150" height="50" style="fill: #9BD100" />
<text x="605" y="279" style="font-size: 16px; fill: #f2fae6" >lime5</text>
<text x="605" y="295" style="font-size: 12px; fill: #f2fae6" >#9BD100</text>
<rect x="600" y="300" width="150" height="50" style="fill: #7EAE00" />
<text x="605" y="329" style="font-size: 16px; fill: #f2fae6" >lime6</text>
<text x="605" y="345" style="font-size: 12px; fill: #f2fae6" >#7EAE00</text>
<rect x="600" y="350" width="150" height="50" style="fill: #638B00" />
<text x="605" y="379" style="font-size: 16px; fill: #f2fae6" >lime7</text>
<text x="605" y="395" style="font-size: 12px; fill: #f2fae6" >#638B00</text>
<rect x="600" y="400" width="150" height="50" style="fill: #486800" />
<text x="605" y="429" style="font-size: 16px; fill: #f2fae6" >lime8</text>
<text x="605" y="445" style="font-size: 12px; fill: #f2fae6" >#486800</text>
<rect x="600" y="450" width="150" height="50" style="fill: #2F4600" />
<text x="605" y="479" style="font-size: 16px; fill: #f2fae6" >lime9</text>
<text x="605" y="495" style="font-size: 12px; fill: #f2fae6" >#2F4600</text>
<rect x="750" y="0" width="150" height="50" style="fill: #F3F8EC" />
<text x="755" y="29" style="font-size: 16px; fill: #253d12" >lightGreen0</text>
<text x="755" y="45" style="font-size: 12px; fill: #253d12" >#F3F8EC</text>
<rect x="750" y="50" width="150" height="50" style="fill: #E3F0D0" />
<text x="755" y="79" style="font-size: 16px; fill: #253d12" >lightGreen1</text>
<text x="755" y="95" style="font-size: 12px; fill: #253d12" >#E3F0D0</text>
<rect x="750" y="100" width="150" height="50" style="fill: #C8E2A5" />
<text x="755" y="129" style="font-size: 16px; fill: #253d12" >lightGreen2</text>
<text x="755" y="145" style="font-size: 12px; fill: #253d12" >#C8E2A5</text>
<rect x="750" y="150" width="150" height="50" style="fill: #ADD37E" />
<text x="755" y="179" style="font-size: 16px; fill: #253d12" >lightGreen3</text>
<text x="755" y="195" style="font-size: 12px; fill: #253d12" >#ADD37E</text>
<rect x="750" y="200" width="150" height="50" style="fill: #93C55B" />
<text x="755" y="229" style="font-size: 16px; fill: #253d12" >lightGreen4</text>
<text x="755" y="245" style="font-size: 12px; fill: #253d12" >#93C55B</text>
<rect x="750" y="250" width="150" height="50" style="fill: #7BB63C" />
<text x="755" y="279" style="font-size: 16px; fill: #f3f8ec" >lightGreen5</text>
<text x="755" y="295" style="font-size: 12px; fill: #f3f8ec" >#7BB63C</text>
<rect x="750" y="300" width="150" height="50" style="fill: #649830" />
<text x="755" y="329" style="font-size: 16px; fill: #f3f8ec" >lightGreen6</text>
<text x="755" y="345" style="font-size: 12px; fill: #f3f8ec" >#649830</text>
<rect x="750" y="350" width="150" height="50" style="fill: #4E7926" />
<text x="755" y="379" style="font-size: 16px; fill: #f3f8ec" >lightGreen7</text>
<text x="755" y="395" style="font-size: 12px; fill: #f3f8ec" >#4E7926</text>
<rect x="750" y="400" width="150" height="50" style="fill: #395B1B" />
<text x="755" y="429" style="font-size: 16px; fill: #f3f8ec" >lightGreen8</text>
<text x="755" y="445" style="font-size: 12px; fill: #f3f8ec" >#395B1B</text>
<rect x="750" y="450" width="150" height="50" style="fill: #253D12" />
<text x="755" y="479" style="font-size: 16px; fill: #f3f8ec" >lightGreen9</text>
<text x="755" y="495" style="font-size: 12px; fill: #f3f8ec" >#253D12</text>
<rect x="900" y="0" width="150" height="50" style="fill: #ECF7EC" />
<text x="905" y="29" style="font-size: 16px; fill: #113c18" >green0</text>
<text x="905" y="45" style="font-size: 12px; fill: #113c18" >#ECF7EC</text>
<rect x="900" y="50" width="150" height="50" style="fill: #D0F0D1" />
<text x="905" y="79" style="font-size: 16px; fill: #113c18" >green1</text>
<text x="905" y="95" style="font-size: 12px; fill: #113c18" >#D0F0D1</text>
<rect x="900" y="100" width="150" height="50" style="fill: #A4E0A7" />
<text x="905" y="129" style="font-size: 16px; fill: #113c18" >green2</text>
<text x="905" y="145" style="font-size: 12px; fill: #113c18" >#A4E0A7</text>
<rect x="900" y="150" width="150" height="50" style="fill: #7DD182" />
<text x="905" y="179" style="font-size: 16px; fill: #113c18" >green3</text>
<text x="905" y="195" style="font-size: 12px; fill: #113c18" >#7DD182</text>
<rect x="900" y="200" width="150" height="50" style="fill: #5AC262" />
<text x="905" y="229" style="font-size: 16px; fill: #113c18" >green4</text>
<text x="905" y="245" style="font-size: 12px; fill: #113c18" >#5AC262</text>
<rect x="900" y="250" width="150" height="50" style="fill: #3BB346" />
<text x="905" y="279" style="font-size: 16px; fill: #ecf7ec" >green5</text>
<text x="905" y="295" style="font-size: 12px; fill: #ecf7ec" >#3BB346</text>
<rect x="900" y="300" width="150" height="50" style="fill: #30953B" />
<text x="905" y="329" style="font-size: 16px; fill: #ecf7ec" >green6</text>
<text x="905" y="345" style="font-size: 12px; fill: #ecf7ec" >#30953B</text>
<rect x="900" y="350" width="150" height="50" style="fill: #25772F" />
<text x="905" y="379" style="font-size: 16px; fill: #ecf7ec" >green7</text>
<text x="905" y="395" style="font-size: 12px; fill: #ecf7ec" >#25772F</text>
<rect x="900" y="400" width="150" height="50" style="fill: #1B5924" />
<text x="905" y="429" style="font-size: 16px; fill: #ecf7ec" >green8</text>
<text x="905" y="445" style="font-size: 12px; fill: #ecf7ec" >#1B5924</text>
<rect x="900" y="450" width="150" height="50" style="fill: #113C18" />
<text x="905" y="479" style="font-size: 16px; fill: #ecf7ec" >green9</text>
<text x="905" y="495" style="font-size: 12px; fill: #ecf7ec" >#113C18</text>
<rect x="1050" y="0" width="150" height="50" style="fill: #E4F7F4" />
<text x="1055" y="29" style="font-size: 16px; fill: #003c3a" >teal0</text>
<text x="1055" y="45" style="font-size: 12px; fill: #003c3a" >#E4F7F4</text>
<rect x="1050" y="50" width="150" height="50" style="fill: #C0F0E8" />
<text x="1055" y="79" style="font-size: 16px; fill: #003c3a" >teal1</text>
<text x="1055" y="95" style="font-size: 12px; fill: #003c3a" >#C0F0E8</text>
<rect x="1050" y="100" width="150" height="50" style="fill: #87E0D3" />
<text x="1055" y="129" style="font-size: 16px; fill: #003c3a" >teal2</text>
<text x="1055" y="145" style="font-size: 12px; fill: #003c3a" >#87E0D3</text>
<rect x="1050" y="150" width="150" height="50" style="fill: #54D1C1" />
<text x="1055" y="179" style="font-size: 16px; fill: #003c3a" >teal3</text>
<text x="1055" y="195" style="font-size: 12px; fill: #003c3a" >#54D1C1</text>
<rect x="1050" y="200" width="150" height="50" style="fill: #27C2B0" />
<text x="1055" y="229" style="font-size: 16px; fill: #003c3a" >teal4</text>
<text x="1055" y="245" style="font-size: 12px; fill: #003c3a" >#27C2B0</text>
<rect x="1050" y="250" width="150" height="50" style="fill: #00B3A1" />
<text x="1055" y="279" style="font-size: 16px; fill: #e4f7f4" >teal5</text>
<text x="1055" y="295" style="font-size: 12px; fill: #e4f7f4" >#00B3A1</text>
<rect x="1050" y="300" width="150" height="50" style="fill: #009589" />
<text x="1055" y="329" style="font-size: 16px; fill: #e4f7f4" >teal6</text>
<text x="1055" y="345" style="font-size: 12px; fill: #e4f7f4" >#009589</text>
<rect x="1050" y="350" width="150" height="50" style="fill: #00776F" />
<text x="1055" y="379" style="font-size: 16px; fill: #e4f7f4" >teal7</text>
<text x="1055" y="395" style="font-size: 12px; fill: #e4f7f4" >#00776F</text>
<rect x="1050" y="400" width="150" height="50" style="fill: #005955" />
<text x="1055" y="429" style="font-size: 16px; fill: #e4f7f4" >teal8</text>
<text x="1055" y="445" style="font-size: 12px; fill: #e4f7f4" >#005955</text>
<rect x="1050" y="450" width="150" height="50" style="fill: #003C3A" />
<text x="1055" y="479" style="font-size: 16px; fill: #e4f7f4" >teal9</text>
<text x="1055" y="495" style="font-size: 12px; fill: #e4f7f4" >#003C3A</text>
<rect x="0" y="500" width="150" height="50" style="fill: #E5F7F8" />
<text x="5" y="529" style="font-size: 16px; fill: #00323d" >cyan0</text>
<text x="5" y="545" style="font-size: 12px; fill: #00323d" >#E5F7F8</text>
<rect x="0" y="550" width="150" height="50" style="fill: #C2EFF0" />
<text x="5" y="579" style="font-size: 16px; fill: #00323d" >cyan1</text>
<text x="5" y="595" style="font-size: 12px; fill: #00323d" >#C2EFF0</text>
<rect x="0" y="600" width="150" height="50" style="fill: #8ADDE2" />
<text x="5" y="629" style="font-size: 16px; fill: #00323d" >cyan2</text>
<text x="5" y="645" style="font-size: 12px; fill: #00323d" >#8ADDE2</text>
<rect x="0" y="650" width="150" height="50" style="fill: #58CBD3" />
<text x="5" y="679" style="font-size: 16px; fill: #00323d" >cyan3</text>
<text x="5" y="695" style="font-size: 12px; fill: #00323d" >#58CBD3</text>
<rect x="0" y="700" width="150" height="50" style="fill: #2CB8C5" />
<text x="5" y="729" style="font-size: 16px; fill: #00323d" >cyan4</text>
<text x="5" y="745" style="font-size: 12px; fill: #00323d" >#2CB8C5</text>
<rect x="0" y="750" width="150" height="50" style="fill: #05A4B6" />
<text x="5" y="779" style="font-size: 16px; fill: #e5f7f8" >cyan5</text>
<text x="5" y="795" style="font-size: 12px; fill: #e5f7f8" >#05A4B6</text>
<rect x="0" y="800" width="150" height="50" style="fill: #038698" />
<text x="5" y="829" style="font-size: 16px; fill: #e5f7f8" >cyan6</text>
<text x="5" y="845" style="font-size: 12px; fill: #e5f7f8" >#038698</text>
<rect x="0" y="850" width="150" height="50" style="fill: #016979" />
<text x="5" y="879" style="font-size: 16px; fill: #e5f7f8" >cyan7</text>
<text x="5" y="895" style="font-size: 12px; fill: #e5f7f8" >#016979</text>
<rect x="0" y="900" width="150" height="50" style="fill: #004D5B" />
<text x="5" y="929" style="font-size: 16px; fill: #e5f7f8" >cyan8</text>
<text x="5" y="945" style="font-size: 12px; fill: #e5f7f8" >#004D5B</text>
<rect x="0" y="950" width="150" height="50" style="fill: #00323D" />
<text x="5" y="979" style="font-size: 16px; fill: #e5f7f8" >cyan9</text>
<text x="5" y="995" style="font-size: 12px; fill: #e5f7f8" >#00323D</text>
<rect x="150" y="500" width="150" height="50" style="fill: #E9F7FD" />
<text x="155" y="529" style="font-size: 16px; fill: #00355f" >lightBlue0</text>
<text x="155" y="545" style="font-size: 12px; fill: #00355f" >#E9F7FD</text>
<rect x="150" y="550" width="150" height="50" style="fill: #C9ECFC" />
<text x="155" y="579" style="font-size: 16px; fill: #00355f" >lightBlue1</text>
<text x="155" y="595" style="font-size: 12px; fill: #00355f" >#C9ECFC</text>
<rect x="150" y="600" width="150" height="50" style="fill: #95D8F8" />
<text x="155" y="629" style="font-size: 16px; fill: #00355f" >lightBlue2</text>
<text x="155" y="645" style="font-size: 12px; fill: #00355f" >#95D8F8</text>
<rect x="150" y="650" width="150" height="50" style="fill: #62C3F5" />
<text x="155" y="679" style="font-size: 16px; fill: #00355f" >lightBlue3</text>
<text x="155" y="695" style="font-size: 12px; fill: #00355f" >#62C3F5</text>
<rect x="150" y="700" width="150" height="50" style="fill: #30ACF1" />
<text x="155" y="729" style="font-size: 16px; fill: #00355f" >lightBlue4</text>
<text x="155" y="745" style="font-size: 12px; fill: #00355f" >#30ACF1</text>
<rect x="150" y="750" width="150" height="50" style="fill: #0095EE" />
<text x="155" y="779" style="font-size: 16px; fill: #e9f7fd" >lightBlue5</text>
<text x="155" y="795" style="font-size: 12px; fill: #e9f7fd" >#0095EE</text>
<rect x="150" y="800" width="150" height="50" style="fill: #007BCA" />
<text x="155" y="829" style="font-size: 16px; fill: #e9f7fd" >lightBlue6</text>
<text x="155" y="845" style="font-size: 12px; fill: #e9f7fd" >#007BCA</text>
<rect x="150" y="850" width="150" height="50" style="fill: #0063A7" />
<text x="155" y="879" style="font-size: 16px; fill: #e9f7fd" >lightBlue7</text>
<text x="155" y="895" style="font-size: 12px; fill: #e9f7fd" >#0063A7</text>
<rect x="150" y="900" width="150" height="50" style="fill: #004B83" />
<text x="155" y="929" style="font-size: 16px; fill: #e9f7fd" >lightBlue8</text>
<text x="155" y="945" style="font-size: 12px; fill: #e9f7fd" >#004B83</text>
<rect x="150" y="950" width="150" height="50" style="fill: #00355F" />
<text x="155" y="979" style="font-size: 16px; fill: #e9f7fd" >lightBlue9</text>
<text x="155" y="995" style="font-size: 12px; fill: #e9f7fd" >#00355F</text>
<rect x="300" y="500" width="150" height="50" style="fill: #EAF5FF" />
<text x="305" y="529" style="font-size: 16px; fill: #002c6b" >blue0</text>
<text x="305" y="545" style="font-size: 12px; fill: #002c6b" >#EAF5FF</text>
<rect x="300" y="550" width="150" height="50" style="fill: #CBE7FE" />
<text x="305" y="579" style="font-size: 16px; fill: #002c6b" >blue1</text>
<text x="305" y="595" style="font-size: 12px; fill: #002c6b" >#CBE7FE</text>
<rect x="300" y="600" width="150" height="50" style="fill: #98CDFD" />
<text x="305" y="629" style="font-size: 16px; fill: #002c6b" >blue2</text>
<text x="305" y="645" style="font-size: 12px; fill: #002c6b" >#98CDFD</text>
<rect x="300" y="650" width="150" height="50" style="fill: #65B2FC" />
<text x="305" y="679" style="font-size: 16px; fill: #002c6b" >blue3</text>
<text x="305" y="695" style="font-size: 12px; fill: #002c6b" >#65B2FC</text>
<rect x="300" y="700" width="150" height="50" style="fill: #3295FB" />
<text x="305" y="729" style="font-size: 16px; fill: #002c6b" >blue4</text>
<text x="305" y="745" style="font-size: 12px; fill: #002c6b" >#3295FB</text>
<rect x="300" y="750" width="150" height="50" style="fill: #0064FA" />
<text x="305" y="779" style="font-size: 16px; fill: #eaf5ff" >blue5</text>
<text x="305" y="795" style="font-size: 12px; fill: #eaf5ff" >#0064FA</text>
<rect x="300" y="800" width="150" height="50" style="fill: #0062D6" />
<text x="305" y="829" style="font-size: 16px; fill: #eaf5ff" >blue6</text>
<text x="305" y="845" style="font-size: 12px; fill: #eaf5ff" >#0062D6</text>
<rect x="300" y="850" width="150" height="50" style="fill: #004FB3" />
<text x="305" y="879" style="font-size: 16px; fill: #eaf5ff" >blue7</text>
<text x="305" y="895" style="font-size: 12px; fill: #eaf5ff" >#004FB3</text>
<rect x="300" y="900" width="150" height="50" style="fill: #003D8F" />
<text x="305" y="929" style="font-size: 16px; fill: #eaf5ff" >blue8</text>
<text x="305" y="945" style="font-size: 12px; fill: #eaf5ff" >#003D8F</text>
<rect x="300" y="950" width="150" height="50" style="fill: #002C6B" />
<text x="305" y="979" style="font-size: 16px; fill: #eaf5ff" >blue9</text>
<text x="305" y="995" style="font-size: 12px; fill: #eaf5ff" >#002C6B</text>
<rect x="450" y="500" width="150" height="50" style="fill: #ECEFF8" />
<text x="455" y="529" style="font-size: 16px; fill: #171d63" >indigo0</text>
<text x="455" y="545" style="font-size: 12px; fill: #171d63" >#ECEFF8</text>
<rect x="450" y="550" width="150" height="50" style="fill: #D1D8F0" />
<text x="455" y="579" style="font-size: 16px; fill: #171d63" >indigo1</text>
<text x="455" y="595" style="font-size: 12px; fill: #171d63" >#D1D8F0</text>
<rect x="450" y="600" width="150" height="50" style="fill: #A7B3E1" />
<text x="455" y="629" style="font-size: 16px; fill: #171d63" >indigo2</text>
<text x="455" y="645" style="font-size: 12px; fill: #171d63" >#A7B3E1</text>
<rect x="450" y="650" width="150" height="50" style="fill: #8090D3" />
<text x="455" y="679" style="font-size: 16px; fill: #171d63" >indigo3</text>
<text x="455" y="695" style="font-size: 12px; fill: #171d63" >#8090D3</text>
<rect x="450" y="700" width="150" height="50" style="fill: #5E6FC4" />
<text x="455" y="729" style="font-size: 16px; fill: #171d63" >indigo4</text>
<text x="455" y="745" style="font-size: 12px; fill: #171d63" >#5E6FC4</text>
<rect x="450" y="750" width="150" height="50" style="fill: #3F51B5" />
<text x="455" y="779" style="font-size: 16px; fill: #eceff8" >indigo5</text>
<text x="455" y="795" style="font-size: 12px; fill: #eceff8" >#3F51B5</text>
<rect x="450" y="800" width="150" height="50" style="fill: #3342A1" />
<text x="455" y="829" style="font-size: 16px; fill: #eceff8" >indigo6</text>
<text x="455" y="845" style="font-size: 12px; fill: #eceff8" >#3342A1</text>
<rect x="450" y="850" width="150" height="50" style="fill: #28348C" />
<text x="455" y="879" style="font-size: 16px; fill: #eceff8" >indigo7</text>
<text x="455" y="895" style="font-size: 12px; fill: #eceff8" >#28348C</text>
<rect x="450" y="900" width="150" height="50" style="fill: #1F2878" />
<text x="455" y="929" style="font-size: 16px; fill: #eceff8" >indigo8</text>
<text x="455" y="945" style="font-size: 12px; fill: #eceff8" >#1F2878</text>
<rect x="450" y="950" width="150" height="50" style="fill: #171D63" />
<text x="455" y="979" style="font-size: 16px; fill: #eceff8" >indigo9</text>
<text x="455" y="995" style="font-size: 12px; fill: #eceff8" >#171D63</text>
<rect x="600" y="500" width="150" height="50" style="fill: #F3EDF9" />
<text x="605" y="529" style="font-size: 16px; fill: #281475" >violet0</text>
<text x="605" y="545" style="font-size: 12px; fill: #281475" >#F3EDF9</text>
<rect x="600" y="550" width="150" height="50" style="fill: #E2D1F4" />
<text x="605" y="579" style="font-size: 16px; fill: #281475" >violet1</text>
<text x="605" y="595" style="font-size: 12px; fill: #281475" >#E2D1F4</text>
<rect x="600" y="600" width="150" height="50" style="fill: #C4A7E9" />
<text x="605" y="629" style="font-size: 16px; fill: #281475" >violet2</text>
<text x="605" y="645" style="font-size: 12px; fill: #281475" >#C4A7E9</text>
<rect x="600" y="650" width="150" height="50" style="fill: #A67FDD" />
<text x="605" y="679" style="font-size: 16px; fill: #281475" >violet3</text>
<text x="605" y="695" style="font-size: 12px; fill: #281475" >#A67FDD</text>
<rect x="600" y="700" width="150" height="50" style="fill: #885BD2" />
<text x="605" y="729" style="font-size: 16px; fill: #281475" >violet4</text>
<text x="605" y="745" style="font-size: 12px; fill: #281475" >#885BD2</text>
<rect x="600" y="750" width="150" height="50" style="fill: #6A3AC7" />
<text x="605" y="779" style="font-size: 16px; fill: #f3edf9" >violet5</text>
<text x="605" y="795" style="font-size: 12px; fill: #f3edf9" >#6A3AC7</text>
<rect x="600" y="800" width="150" height="50" style="fill: #572FB3" />
<text x="605" y="829" style="font-size: 16px; fill: #f3edf9" >violet6</text>
<text x="605" y="845" style="font-size: 12px; fill: #f3edf9" >#572FB3</text>
<rect x="600" y="850" width="150" height="50" style="fill: #46259E" />
<text x="605" y="879" style="font-size: 16px; fill: #f3edf9" >violet7</text>
<text x="605" y="895" style="font-size: 12px; fill: #f3edf9" >#46259E</text>
<rect x="600" y="900" width="150" height="50" style="fill: #361C8A" />
<text x="605" y="929" style="font-size: 16px; fill: #f3edf9" >violet8</text>
<text x="605" y="945" style="font-size: 12px; fill: #f3edf9" >#361C8A</text>
<rect x="600" y="950" width="150" height="50" style="fill: #281475" />
<text x="605" y="979" style="font-size: 16px; fill: #f3edf9" >violet9</text>
<text x="605" y="995" style="font-size: 12px; fill: #f3edf9" >#281475</text>
<rect x="750" y="500" width="150" height="50" style="fill: #F7E9F7" />
<text x="755" y="529" style="font-size: 16px; fill: #490a61" >purple0</text>
<text x="755" y="545" style="font-size: 12px; fill: #490a61" >#F7E9F7</text>
<rect x="750" y="550" width="150" height="50" style="fill: #EFCAF0" />
<text x="755" y="579" style="font-size: 16px; fill: #490a61" >purple1</text>
<text x="755" y="595" style="font-size: 12px; fill: #490a61" >#EFCAF0</text>
<rect x="750" y="600" width="150" height="50" style="fill: #DD9BE0" />
<text x="755" y="629" style="font-size: 16px; fill: #490a61" >purple2</text>
<text x="755" y="645" style="font-size: 12px; fill: #490a61" >#DD9BE0</text>
<rect x="750" y="650" width="150" height="50" style="fill: #C96FD1" />
<text x="755" y="679" style="font-size: 16px; fill: #490a61" >purple3</text>
<text x="755" y="695" style="font-size: 12px; fill: #490a61" >#C96FD1</text>
<rect x="750" y="700" width="150" height="50" style="fill: #B449C2" />
<text x="755" y="729" style="font-size: 16px; fill: #490a61" >purple4</text>
<text x="755" y="745" style="font-size: 12px; fill: #490a61" >#B449C2</text>
<rect x="750" y="750" width="150" height="50" style="fill: #9E28B3" />
<text x="755" y="779" style="font-size: 16px; fill: #f7e9f7" >purple5</text>
<text x="755" y="795" style="font-size: 12px; fill: #f7e9f7" >#9E28B3</text>
<rect x="750" y="800" width="150" height="50" style="fill: #871E9E" />
<text x="755" y="829" style="font-size: 16px; fill: #f7e9f7" >purple6</text>
<text x="755" y="845" style="font-size: 12px; fill: #f7e9f7" >#871E9E</text>
<rect x="750" y="850" width="150" height="50" style="fill: #71168A" />
<text x="755" y="879" style="font-size: 16px; fill: #f7e9f7" >purple7</text>
<text x="755" y="895" style="font-size: 12px; fill: #f7e9f7" >#71168A</text>
<rect x="750" y="900" width="150" height="50" style="fill: #5C0F75" />
<text x="755" y="929" style="font-size: 16px; fill: #f7e9f7" >purple8</text>
<text x="755" y="945" style="font-size: 12px; fill: #f7e9f7" >#5C0F75</text>
<rect x="750" y="950" width="150" height="50" style="fill: #490A61" />
<text x="755" y="979" style="font-size: 16px; fill: #f7e9f7" >purple9</text>
<text x="755" y="995" style="font-size: 12px; fill: #f7e9f7" >#490A61</text>
<rect x="900" y="500" width="150" height="50" style="fill: #FDECEF" />
<text x="905" y="529" style="font-size: 16px; fill: #5a012b" >pink0</text>
<text x="905" y="545" style="font-size: 12px; fill: #5a012b" >#FDECEF</text>
<rect x="900" y="550" width="150" height="50" style="fill: #FBCFD8" />
<text x="905" y="579" style="font-size: 16px; fill: #5a012b" >pink1</text>
<text x="905" y="595" style="font-size: 12px; fill: #5a012b" >#FBCFD8</text>
<rect x="900" y="600" width="150" height="50" style="fill: #F6A0B5" />
<text x="905" y="629" style="font-size: 16px; fill: #5a012b" >pink2</text>
<text x="905" y="645" style="font-size: 12px; fill: #5a012b" >#F6A0B5</text>
<rect x="900" y="650" width="150" height="50" style="fill: #F27396" />
<text x="905" y="679" style="font-size: 16px; fill: #5a012b" >pink3</text>
<text x="905" y="695" style="font-size: 12px; fill: #5a012b" >#F27396</text>
<rect x="900" y="700" width="150" height="50" style="fill: #ED487B" />
<text x="905" y="729" style="font-size: 16px; fill: #5a012b" >pink4</text>
<text x="905" y="745" style="font-size: 12px; fill: #5a012b" >#ED487B</text>
<rect x="900" y="750" width="150" height="50" style="fill: #E91E63" />
<text x="905" y="779" style="font-size: 16px; fill: #fdecef" >pink5</text>
<text x="905" y="795" style="font-size: 12px; fill: #fdecef" >#E91E63</text>
<rect x="900" y="800" width="150" height="50" style="fill: #C51356" />
<text x="905" y="829" style="font-size: 16px; fill: #fdecef" >pink6</text>
<text x="905" y="845" style="font-size: 12px; fill: #fdecef" >#C51356</text>
<rect x="900" y="850" width="150" height="50" style="fill: #A20B48" />
<text x="905" y="879" style="font-size: 16px; fill: #fdecef" >pink7</text>
<text x="905" y="895" style="font-size: 12px; fill: #fdecef" >#A20B48</text>
<rect x="900" y="900" width="150" height="50" style="fill: #7E053A" />
<text x="905" y="929" style="font-size: 16px; fill: #fdecef" >pink8</text>
<text x="905" y="945" style="font-size: 12px; fill: #fdecef" >#7E053A</text>
<rect x="900" y="950" width="150" height="50" style="fill: #5A012B" />
<text x="905" y="979" style="font-size: 16px; fill: #fdecef" >pink9</text>
<text x="905" y="995" style="font-size: 12px; fill: #fdecef" >#5A012B</text>
<rect x="1050" y="500" width="150" height="50" style="fill: #F9F9F9" />
<text x="1055" y="529" style="font-size: 16px; fill: #1c1f23" >grey0</text>
<text x="1055" y="545" style="font-size: 12px; fill: #1c1f23" >#F9F9F9</text>
<rect x="1050" y="550" width="150" height="50" style="fill: #E6E8EA" />
<text x="1055" y="579" style="font-size: 16px; fill: #1c1f23" >grey1</text>
<text x="1055" y="595" style="font-size: 12px; fill: #1c1f23" >#E6E8EA</text>
<rect x="1050" y="600" width="150" height="50" style="fill: #C6CACD" />
<text x="1055" y="629" style="font-size: 16px; fill: #1c1f23" >grey2</text>
<text x="1055" y="645" style="font-size: 12px; fill: #1c1f23" >#C6CACD</text>
<rect x="1050" y="650" width="150" height="50" style="fill: #A7ABB0" />
<text x="1055" y="679" style="font-size: 16px; fill: #1c1f23" >grey3</text>
<text x="1055" y="695" style="font-size: 12px; fill: #1c1f23" >#A7ABB0</text>
<rect x="1050" y="700" width="150" height="50" style="fill: #888D92" />
<text x="1055" y="729" style="font-size: 16px; fill: #1c1f23" >grey4</text>
<text x="1055" y="745" style="font-size: 12px; fill: #1c1f23" >#888D92</text>
<rect x="1050" y="750" width="150" height="50" style="fill: #6B7075" />
<text x="1055" y="779" style="font-size: 16px; fill: #f9f9f9" >grey5</text>
<text x="1055" y="795" style="font-size: 12px; fill: #f9f9f9" >#6B7075</text>
<rect x="1050" y="800" width="150" height="50" style="fill: #555B61" />
<text x="1055" y="829" style="font-size: 16px; fill: #f9f9f9" >grey6</text>
<text x="1055" y="845" style="font-size: 12px; fill: #f9f9f9" >#555B61</text>
<rect x="1050" y="850" width="150" height="50" style="fill: #41464C" />
<text x="1055" y="879" style="font-size: 16px; fill: #f9f9f9" >grey7</text>
<text x="1055" y="895" style="font-size: 12px; fill: #f9f9f9" >#41464C</text>
<rect x="1050" y="900" width="150" height="50" style="fill: #2E3238" />
<text x="1055" y="929" style="font-size: 16px; fill: #f9f9f9" >grey8</text>
<text x="1055" y="945" style="font-size: 12px; fill: #f9f9f9" >#2E3238</text>
<rect x="1050" y="950" width="150" height="50" style="fill: #1C1F23" />
<text x="1055" y="979" style="font-size: 16px; fill: #f9f9f9" >grey9</text>
<text x="1055" y="995" style="font-size: 12px; fill: #f9f9f9" >#1C1F23</text>
<rect x="0" y="1000" width="600" height="50" style="fill: #FFFFFF" />
<text x="5" y="1029" style="font-size: 16px; fill: #808080" >white</text>
<text x="5" y="1045" style="font-size: 12px; fill: #808080" >#FFFFFF</text>
<rect x="600" y="1000" width="600" height="50" style="fill: #000000" />
<text x="605" y="1029" style="font-size: 16px; fill: #808080" >black</text>
<text x="605" y="1045" style="font-size: 12px; fill: #808080" >#000000</text>
</svg>

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Some files were not shown because too many files have changed in this diff Show More