├── .github
├── FUNDING.yml
└── workflows
│ ├── linux.yml
│ ├── macos.yml
│ ├── webassembly.yml
│ └── windows.yml
├── .gitignore
├── LICENSE
├── README.md
├── design
├── rguiicons_mockup01.png
├── rguiicons_mockup02.png
├── rguiicons_mockup03.png
├── rguiicons_mockup04.png
├── ricons.old.png
├── ricons.png
├── ricons_design.png
├── ricons_light.png
└── ricons_test.png
├── logo
├── rguiicons.icns
├── rguiicons.ico
├── rguiicons_1024x1024.png
├── rguiicons_128x128.png
├── rguiicons_16x16.png
├── rguiicons_184x184.png
├── rguiicons_240x240.png
├── rguiicons_24x24.png
├── rguiicons_256x256.png
├── rguiicons_32x32.png
├── rguiicons_48x48.png
├── rguiicons_512x512.png
├── rguiicons_64x64.png
└── rguiicons_96x96.png
├── projects
└── VS2022
│ ├── raylib
│ ├── Directory.Build.props
│ └── raylib.vcxproj
│ ├── rguiicons.sln
│ └── rguiicons
│ └── rguiicons.vcxproj
├── screenshots
├── rguiicons_v100_shot01.png
├── rguiicons_v100_shot02.png
├── rguiicons_v100_shot03.png
├── rguiicons_v100_shot04.png
├── rguiicons_v100_shot05.png
├── rguiicons_v100_shot06.png
├── rguiicons_v150_shot01.png
├── rguiicons_v200_shot01.png
├── rguiicons_v200_shot02.png
├── rguiicons_v200_shot03.png
├── rguiicons_v200_shot04.png
├── rguiicons_v200_shot05.png
├── rguiicons_v200_shot06.png
├── rguiicons_v200_shot07.png
├── rguiicons_v200_shot08.png
├── rguiicons_v300_shot01.png
├── rguiicons_v300_shot02.png
├── rguiicons_v300_shot03.png
├── rguiicons_v300_shot04.png
├── rguiicons_v300_shot05.png
└── rguiicons_v300_shot06.png
└── src
├── Info.plist
├── Makefile
├── external
├── raygui.h
├── rpng.h
├── tinyfiledialogs.c
└── tinyfiledialogs.h
├── gui_file_dialogs.h
├── gui_main_toolbar.h
├── gui_window_about.h
├── gui_window_help.h
├── layouts
├── rguiicons_v050.rgl
└── rguiicons_v100.rgl
├── minshell.html
├── rguiicons.c
├── rguiicons.ico
├── rguiicons.rc
├── rguiicons.rc.data
└── styles
├── style_amber.h
├── style_ashes.h
├── style_bluish.h
├── style_candy.h
├── style_cherry.h
├── style_cyber.h
├── style_dark.h
├── style_enefete.h
├── style_genesis.h
├── style_jungle.h
├── style_lavanda.h
├── style_sunny.h
└── style_terminal.h
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: raysan5
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/.github/workflows/linux.yml:
--------------------------------------------------------------------------------
1 | name: Linux
2 |
3 | on:
4 | workflow_dispatch:
5 | release:
6 | types: [published]
7 |
8 | jobs:
9 | build:
10 | runs-on: ubuntu-latest
11 |
12 | env:
13 | PROJECT_NAME: ${{ github.event.repository.name }}
14 | PROJECT_BUILD_PATH: ${{ github.event.repository.name }}/src
15 | PROJECT_RELEASE_PATH: ${{ github.event.repository.name }}_dev_linux_x64
16 | PROJECT_SOURCES: "'${{ github.event.repository.name }}.c external/tinyfiledialogs.c'"
17 | PROJECT_CUSTOM_FLAGS: "-DPLATFORM_DESKTOP"
18 | RAYLIB_CONFIG_FLAGS: "'-DSUPPORT_MODULE_RSHAPES -DSUPPORT_MODULE_RTEXTURES -DSUPPORT_MODULE_RTEXT -DSUPPORT_EVENTS_WAITING -DSUPPORT_COMPRESSION_API -DSUPPORT_QUADS_DRAW_MODE -DSUPPORT_IMAGE_MANIPULATION -DSUPPORT_FILEFORMAT_PNG -DSUPPORT_IMAGE_EXPORT -DSUPPORT_DEFAULT_FONT -DSUPPORT_TEXT_MANIPULATION -DSUPPORT_STANDARD_FILEIO -DSUPPORT_TRACELOG'"
19 |
20 | steps:
21 | - name: Checkout this repo
22 | uses: actions/checkout@master
23 | with:
24 | path: ${{ env.PROJECT_NAME }}
25 |
26 | - name: Checkout raylib repo
27 | uses: actions/checkout@v4
28 | with:
29 | repository: raysan5/raylib
30 | path: raylib
31 |
32 | - name: Setup Release Paths
33 | run: |
34 | echo "PROJECT_RELEASE_PATH=${{ env.PROJECT_NAME }}_v${{ github.event.release.tag_name }}_linux_x64" >> $GITHUB_ENV
35 | shell: bash
36 | if: github.event_name == 'release' && github.event.action == 'published'
37 |
38 | - name: Setup Environment
39 | run: |
40 | sudo apt-get update -qq
41 | sudo apt-get install -y --no-install-recommends libglfw3 libglfw3-dev libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libxext-dev libxfixes-dev libwayland-dev libxkbcommon-dev
42 | mkdir ${{ env.PROJECT_RELEASE_PATH }}
43 | ls
44 | shell: bash
45 |
46 | - name: Build raylib Library
47 | run: |
48 | cd raylib/src
49 | gcc --version
50 | make PLATFORM=PLATFORM_DESKTOP BUILD_MODE=RELEASE RAYLIB_LIBTYPE=STATIC RAYLIB_CONFIG_FLAGS=${{ env.RAYLIB_CONFIG_FLAGS }} RAYLIB_PROJECT_RELEASE_PATH=. -B
51 |
52 | - name: Build Product
53 | run: |
54 | cd ${{ env.PROJECT_NAME }}/src
55 | make PLATFORM=PLATFORM_DESKTOP BUILD_MODE=RELEASE PROJECT_SOURCE_FILES=${{ env.PROJECT_SOURCES }} PROJECT_CUSTOM_FLAGS=${{ env.PROJECT_CUSTOM_FLAGS }} PROJECT_BUILD_PATH=. RAYLIB_PATH=../../raylib
56 |
57 | - name: Generate Artifacts
58 | run: |
59 | ls ${{ env.PROJECT_BUILD_PATH }}
60 | cp ${{ env.PROJECT_BUILD_PATH }}/${{ env.PROJECT_NAME }} ${{ env.PROJECT_RELEASE_PATH }}
61 | cp ${{ env.PROJECT_NAME }}/README.md ${{ env.PROJECT_RELEASE_PATH }}
62 | cp ${{ env.PROJECT_NAME }}/LICENSE ${{ env.PROJECT_RELEASE_PATH }}
63 | ls ${{ env.PROJECT_RELEASE_PATH }}
64 | 7z a ./${{ env.PROJECT_RELEASE_PATH }}.zip ./${{ env.PROJECT_RELEASE_PATH }}
65 |
66 | - name: Upload Artifacts
67 | uses: actions/upload-artifact@v4
68 | with:
69 | name: ${{ env.PROJECT_RELEASE_PATH }}.zip
70 | path: ./${{ env.PROJECT_RELEASE_PATH }}.zip
71 |
72 | - name: Upload Artifact to Release
73 | uses: softprops/action-gh-release@v1
74 | with:
75 | files: ${{ env.PROJECT_RELEASE_PATH }}.zip
76 | env:
77 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
78 | if: github.event_name == 'release' && github.event.action == 'published'
79 |
--------------------------------------------------------------------------------
/.github/workflows/macos.yml:
--------------------------------------------------------------------------------
1 | name: macOS
2 |
3 | on:
4 | workflow_dispatch:
5 | release:
6 | types: [published]
7 |
8 | permissions:
9 | contents: read
10 |
11 | jobs:
12 | build:
13 | permissions:
14 | contents: write # for actions/upload-release-asset to upload release asset
15 | runs-on: macos-latest
16 |
17 | env:
18 | PROJECT_NAME: ${{ github.event.repository.name }}
19 | PROJECT_BUILD_PATH: ${{ github.event.repository.name }}/src
20 | PROJECT_RELEASE_PATH: ${{ github.event.repository.name }}_dev_macos
21 | PROJECT_SOURCES: "'${{ github.event.repository.name }}.c external/tinyfiledialogs.c'"
22 | PROJECT_CUSTOM_FLAGS: ""
23 | RAYLIB_CONFIG_FLAGS: "-DSUPPORT_MODULE_RSHAPES -DSUPPORT_MODULE_RTEXTURES -DSUPPORT_MODULE_RTEXT -DSUPPORT_COMPRESSION_API -DSUPPORT_QUADS_DRAW_MODE -DSUPPORT_IMAGE_MANIPULATION -DSUPPORT_FILEFORMAT_PNG -DSUPPORT_IMAGE_EXPORT -DSUPPORT_DEFAULT_FONT -DSUPPORT_TEXT_MANIPULATION -DSUPPORT_STANDARD_FILEIO -DSUPPORT_TRACELOG"
24 |
25 | steps:
26 | - name: Checkout this repo
27 | uses: actions/checkout@master
28 | with:
29 | path: ${{ env.PROJECT_NAME }}
30 |
31 | - name: Checkout raylib repo
32 | uses: actions/checkout@v4
33 | with:
34 | repository: raysan5/raylib
35 | path: raylib
36 |
37 | - name: Setup Release Paths
38 | run: |
39 | echo "PROJECT_RELEASE_PATH=${{ env.PROJECT_NAME }}_v${{ github.event.release.tag_name }}_macos" >> $GITHUB_ENV
40 | shell: bash
41 | if: github.event_name == 'release' && github.event.action == 'published'
42 |
43 | - name: Setup Environment
44 | run: |
45 | mkdir ${{ env.PROJECT_RELEASE_PATH }}
46 | cd ${{ env.PROJECT_RELEASE_PATH }}
47 | mkdir ${{ env.PROJECT_NAME }}.app
48 | cd ${{ env.PROJECT_NAME }}.app
49 | mkdir Contents
50 | cd Contents
51 | mkdir MacOS
52 | mkdir Resources
53 | cd ../../..
54 | ls
55 | shell: bash
56 |
57 | # Generating static library, note that i386 architecture is deprecated
58 | # Defining GL_SILENCE_DEPRECATION because OpenGL is deprecated on macOS
59 | - name: Build raylib Library
60 | run: |
61 | cd raylib/src
62 | clang --version
63 |
64 | # Extract version numbers from Makefile
65 | brew install grep
66 | RAYLIB_API_VERSION=`ggrep -Po 'RAYLIB_API_VERSION\s*=\s\K(.*)' Makefile`
67 | RAYLIB_VERSION=`ggrep -Po 'RAYLIB_VERSION\s*=\s\K(.*)' Makefile`
68 |
69 | # Build raylib x86_64 static
70 | make PLATFORM=PLATFORM_DESKTOP RAYLIB_LIBTYPE=STATIC CUSTOM_CFLAGS="-target x86_64-apple-macos10.12 -DGL_SILENCE_DEPRECATION"
71 | mv -v -f libraylib.a libraylib_x86_64.a
72 | make clean
73 |
74 | # Build raylib arm64 static
75 | make PLATFORM=PLATFORM_DESKTOP RAYLIB_LIBTYPE=STATIC CUSTOM_CFLAGS="-target arm64-apple-macos11 -DGL_SILENCE_DEPRECATION" -B
76 | mv -v -f libraylib.a libraylib_arm64.a
77 | make clean
78 |
79 | # Join x86_64 and arm64 static
80 | lipo -create -output libraylib.a libraylib_x86_64.a libraylib_arm64.a
81 | lipo libraylib.a -detailed_info
82 | cd ../..
83 |
84 | - name: Build Product
85 | run: |
86 | cd ${{ env.PROJECT_NAME }}/src
87 |
88 | # Build project x86_64 binary
89 | # TODO: Link with x86_64 raylib library: libraylib_x86_64.a
90 | make PLATFORM=PLATFORM_DESKTOP BUILD_MODE=RELEASE PROJECT_SOURCE_FILES=${{ env.PROJECT_SOURCES }} PROJECT_CUSTOM_FLAGS=${{ env.PROJECT_CUSTOM_FLAGS }} PROJECT_BUILD_PATH=. RAYLIB_PATH=../../raylib PROJECT_CUSTOM_FLAGS="-target x86_64-apple-macos10.12"
91 | mv -v -f ${{ env.PROJECT_NAME }} ${{ env.PROJECT_NAME }}_x86_64
92 | make clean
93 |
94 | # Build project arm64 binary
95 | # TODO: Link with arm64 raylib library: libraylib_arm.a
96 | make PLATFORM=PLATFORM_DESKTOP BUILD_MODE=RELEASE PROJECT_SOURCE_FILES=${{ env.PROJECT_SOURCES }} PROJECT_CUSTOM_FLAGS=${{ env.PROJECT_CUSTOM_FLAGS }} PROJECT_BUILD_PATH=. RAYLIB_PATH=../../raylib PROJECT_CUSTOM_FLAGS="-target arm64-apple-macos11"
97 | mv -v -f ${{ env.PROJECT_NAME }} ${{ env.PROJECT_NAME }}_arm64
98 | make clean
99 |
100 | # Join x86_64 and arm64 binaries
101 | lipo -create -output ${{ env.PROJECT_NAME }} ${{ env.PROJECT_NAME }}_x86_64 ${{ env.PROJECT_NAME }}_arm64
102 | lipo ${{ env.PROJECT_NAME }} -detailed_info
103 | cd ..
104 |
105 | - name: Generate Artifacts
106 | run: |
107 | ls ${{ env.PROJECT_BUILD_PATH }}
108 | cp ${{ env.PROJECT_BUILD_PATH }}/${{ env.PROJECT_NAME }} ${{ env.PROJECT_RELEASE_PATH }}/${{ env.PROJECT_NAME }}.app/Contents/MacOS
109 | cp ${{ env.PROJECT_NAME }}/logo/${{ env.PROJECT_NAME }}.icns ${{ env.PROJECT_RELEASE_PATH }}/${{ env.PROJECT_NAME }}.app/Contents/Resources
110 | cp ${{ env.PROJECT_NAME }}/src/Info.plist ${{ env.PROJECT_RELEASE_PATH }}/${{ env.PROJECT_NAME }}.app/Contents
111 | cp ${{ env.PROJECT_NAME }}/README.md ${{ env.PROJECT_RELEASE_PATH }}
112 | cp ${{ env.PROJECT_NAME }}/LICENSE ${{ env.PROJECT_RELEASE_PATH }}
113 | ls ${{ env.PROJECT_RELEASE_PATH }}
114 | 7z a ./${{ env.PROJECT_RELEASE_PATH }}.zip ./${{ env.PROJECT_RELEASE_PATH }}
115 |
116 | - name: Upload Artifacts
117 | uses: actions/upload-artifact@v4
118 | with:
119 | name: ${{ env.PROJECT_RELEASE_PATH }}.zip
120 | path: ./${{ env.PROJECT_RELEASE_PATH }}.zip
121 |
122 | - name: Upload Artifact to Release
123 | uses: softprops/action-gh-release@v1
124 | with:
125 | files: ${{ env.PROJECT_RELEASE_PATH }}.zip
126 | env:
127 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
128 | if: github.event_name == 'release' && github.event.action == 'published'
129 |
--------------------------------------------------------------------------------
/.github/workflows/webassembly.yml:
--------------------------------------------------------------------------------
1 | name: WebAssembly
2 |
3 | on:
4 | workflow_dispatch:
5 | release:
6 | types: [published]
7 |
8 | jobs:
9 | build:
10 | runs-on: windows-latest
11 |
12 | env:
13 | PROJECT_NAME: ${{ github.event.repository.name }}
14 | PROJECT_BUILD_PATH: ${{ github.event.repository.name }}\\src
15 | PROJECT_RELEASE_PATH: ${{ github.event.repository.name }}_dev_wasm
16 | PROJECT_SOURCES: ${{ github.event.repository.name }}.c
17 | RAYLIB_CONFIG_FLAGS: "'-DSUPPORT_MODULE_RSHAPES -DSUPPORT_MODULE_RTEXTURES -DSUPPORT_MODULE_RTEXT -DSUPPORT_EVENTS_WAITING -DSUPPORT_COMPRESSION_API -DSUPPORT_QUADS_DRAW_MODE -DSUPPORT_IMAGE_MANIPULATION -DSUPPORT_FILEFORMAT_PNG -DSUPPORT_IMAGE_EXPORT -DSUPPORT_DEFAULT_FONT -DSUPPORT_TEXT_MANIPULATION -DSUPPORT_STANDARD_FILEIO -DSUPPORT_TRACELOG'"
18 | BUILD_WEB_SHELL: minshell.html
19 |
20 | steps:
21 | - name: Checkout this repo
22 | uses: actions/checkout@master
23 | with:
24 | path: ${{ env.PROJECT_NAME }}
25 |
26 | - name: Checkout raylib repo
27 | uses: actions/checkout@v4
28 | with:
29 | repository: raysan5/raylib
30 | path: raylib
31 |
32 | - name: Setup emsdk
33 | uses: mymindstorm/setup-emsdk@v14
34 | with:
35 | version: 3.1.64
36 | actions-cache-folder: 'emsdk-cache'
37 |
38 | - name: Setup Release Paths
39 | run: |
40 | echo "PROJECT_RELEASE_PATH=${{ env.PROJECT_NAME }}_v${{ github.event.release.tag_name }}_wasm" >> $GITHUB_ENV
41 | shell: bash
42 | if: github.event_name == 'release' && github.event.action == 'published'
43 |
44 | - name: Setup Environment
45 | run: |
46 | mkdir ${{ env.PROJECT_RELEASE_PATH }}
47 | dir
48 |
49 | - name: Build raylib Library
50 | run: |
51 | cd raylib/src
52 | emcc -v
53 | make PLATFORM=PLATFORM_WEB RAYLIB_BUILD_MODE=RELEASE RAYLIB_LIBTYPE=STATIC EMSDK_PATH="D:/a/${{ env.PROJECT_NAME }}/${{ env.PROJECT_NAME }}/emsdk-cache/emsdk-main" RAYLIB_CONFIG_FLAGS=${{ env.RAYLIB_CONFIG_FLAGS }} RAYLIB_PROJECT_RELEASE_PATH=. -B
54 |
55 | - name: Build Product
56 | run: |
57 | cd ${{ env.PROJECT_NAME }}/src
58 | make PLATFORM=PLATFORM_WEB BUILD_MODE=RELEASE EMSDK_PATH="D:/a/${{ env.PROJECT_NAME }}/${{ env.PROJECT_NAME }}/emsdk-cache/emsdk-main" PROJECT_SOURCE_FILES=${{ env.PROJECT_SOURCES }} PROJECT_BUILD_PATH=. RAYLIB_PATH=../../raylib -B
59 |
60 | - name: Generate Artifacts
61 | run: |
62 | dir ${{ env.PROJECT_BUILD_PATH }}
63 | copy /Y ${{ env.PROJECT_BUILD_PATH }}\${{ env.PROJECT_NAME }}.wasm ${{ env.PROJECT_RELEASE_PATH }}\${{ env.PROJECT_NAME }}.wasm
64 | copy /Y ${{ env.PROJECT_BUILD_PATH }}\${{ env.PROJECT_NAME }}.data ${{ env.PROJECT_RELEASE_PATH }}\${{ env.PROJECT_NAME }}.data
65 | copy /Y ${{ env.PROJECT_BUILD_PATH }}\${{ env.PROJECT_NAME }}.js ${{ env.PROJECT_RELEASE_PATH }}\${{ env.PROJECT_NAME }}.js
66 | copy /Y ${{ env.PROJECT_BUILD_PATH }}\${{ env.PROJECT_NAME }}.html ${{ env.PROJECT_RELEASE_PATH }}\index.html
67 | copy /Y ${{ env.PROJECT_NAME }}\README.md ${{ env.PROJECT_RELEASE_PATH }}\README.md
68 | copy /Y ${{ env.PROJECT_NAME }}\LICENSE ${{ env.PROJECT_RELEASE_PATH }}\LICENSE
69 | dir ${{ env.PROJECT_RELEASE_PATH }}
70 | 7z a -tzip -r .\${{ env.PROJECT_RELEASE_PATH }}.zip .\${{ env.PROJECT_RELEASE_PATH }}\*
71 | shell: cmd
72 |
73 | - name: Upload Artifacts
74 | uses: actions/upload-artifact@v4
75 | with:
76 | name: ${{ env.PROJECT_RELEASE_PATH }}.zip
77 | path: ./${{ env.PROJECT_RELEASE_PATH }}.zip
78 |
79 | - name: Upload Artifact to Release
80 | uses: softprops/action-gh-release@v1
81 | with:
82 | files: ${{ env.PROJECT_RELEASE_PATH }}.zip
83 | env:
84 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
85 | if: github.event_name == 'release' && github.event.action == 'published'
86 |
--------------------------------------------------------------------------------
/.github/workflows/windows.yml:
--------------------------------------------------------------------------------
1 | name: Windows
2 |
3 | on:
4 | workflow_dispatch:
5 | release:
6 | types: [published]
7 |
8 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
9 | jobs:
10 | build:
11 | runs-on: windows-latest
12 |
13 | env:
14 | PROJECT_NAME: ${{ github.event.repository.name }}
15 | PROJECT_BUILD_PATH: "${{ github.event.repository.name }}\\projects\\VS2022\\build\\${{ github.event.repository.name }}\\bin\\x64\\Release"
16 | PROJECT_RELEASE_PATH: ${{ github.event.repository.name }}_dev_win_x64
17 |
18 | steps:
19 | - name: Checkout this repo
20 | uses: actions/checkout@master
21 | with:
22 | path: ${{ env.PROJECT_NAME }}
23 |
24 | - name: Checkout raylib repo
25 | uses: actions/checkout@v4
26 | with:
27 | repository: raysan5/raylib
28 | path: raylib
29 |
30 | # NOTE: Visual Studio project build configuration already defines all required directories where project is generated:
31 | # $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
32 | - name: Setup Release Paths
33 | run: |
34 | echo "PROJECT_RELEASE_PATH=${{ env.PROJECT_NAME }}_v${{ github.event.release.tag_name }}_win_x64" >> $GITHUB_ENV
35 | shell: bash
36 | if: github.event_name == 'release' && github.event.action == 'published'
37 |
38 | - name: Setup Environment
39 | run: |
40 | mkdir ${{ env.PROJECT_RELEASE_PATH }}
41 | dir
42 | shell: cmd
43 |
44 | # Setup MSBuild.exe path if required
45 | - name: Setup MSBuild path
46 | uses: microsoft/setup-msbuild@v2
47 |
48 | - name: Build raylib Library + Product (VS2022 solution)
49 | run: |
50 | dir
51 | cd ${{ env.PROJECT_NAME }}/projects/VS2022
52 | msbuild.exe ${{ env.PROJECT_NAME }}.sln /target:${{ env.PROJECT_NAME }} /property:Configuration=Release /property:Platform=x64
53 | cd ../..
54 | shell: cmd
55 |
56 | - name: Generate Artifacts
57 | run: |
58 | dir ${{ env.PROJECT_BUILD_PATH }}
59 | copy /Y ${{ env.PROJECT_BUILD_PATH }}\${{ env.PROJECT_NAME }}.exe ${{ env.PROJECT_RELEASE_PATH }}\${{ env.PROJECT_NAME }}.exe
60 | copy /Y ${{ env.PROJECT_NAME }}\README.md ${{ env.PROJECT_RELEASE_PATH }}\README.md
61 | copy /Y ${{ env.PROJECT_NAME }}\LICENSE ${{ env.PROJECT_RELEASE_PATH }}\LICENSE
62 | dir ${{ env.PROJECT_RELEASE_PATH }}
63 | 7z a .\${{ env.PROJECT_RELEASE_PATH }}.zip .\${{ env.PROJECT_RELEASE_PATH }}
64 | shell: cmd
65 |
66 | - name: Upload Artifacts
67 | uses: actions/upload-artifact@v4
68 | with:
69 | name: ${{ env.PROJECT_RELEASE_PATH }}.zip
70 | path: ./${{ env.PROJECT_RELEASE_PATH }}.zip
71 |
72 | - name: Upload Artifact to Release
73 | uses: softprops/action-gh-release@v1
74 | with:
75 | files: ${{ env.PROJECT_RELEASE_PATH }}.zip
76 | env:
77 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
78 | if: github.event_name == 'release' && github.event.action == 'published'
79 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Prerequisites
2 | *.d
3 |
4 | # Object files
5 | *.o
6 | *.ko
7 | *.obj
8 | *.elf
9 |
10 | # Linker output
11 | *.ilk
12 | *.map
13 | *.exp
14 |
15 | # Precompiled Headers
16 | *.gch
17 | *.pch
18 |
19 | # Libraries
20 | *.lib
21 | *.a
22 | *.la
23 | *.lo
24 |
25 | # Shared objects (inc. Windows DLLs)
26 | *.dll
27 | *.so
28 | *.so.*
29 | *.dylib
30 |
31 | # Executables
32 | *.exe
33 | *.out
34 | *.app
35 | *.i*86
36 | *.x86_64
37 | *.hex
38 |
39 | # Debug files
40 | *.dSYM/
41 | *.su
42 | *.idb
43 | *.pdb
44 |
45 | # Kernel Module Compile Results
46 | *.mod*
47 | *.cmd
48 | .tmp_versions/
49 | modules.order
50 | Module.symvers
51 | Mkfile.old
52 | dkms.conf
53 |
54 | # Visual Studio files
55 | [Dd]ebug/
56 | [Dd]ebug.DLL/
57 | [R]elease/
58 | [Rr]elease.DLL/
59 | *.user
60 | .vs
61 |
62 | # Build folder
63 | [Bb]uild
64 |
65 | # WebAssembly release files
66 | *.data
67 | *.wasm
68 | *.html
69 | *.js
70 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | zlib License
2 |
3 | Copyright (c) 2017-2024 raylib technologies (@raylibtech) / Ramon Santamaria (@raysan5)
4 |
5 | This software is provided "as-is", without any express or implied warranty. In no event
6 | will the authors be held liable for any damages arising from the use of this software.
7 |
8 | Permission is granted to anyone to use this software for any purpose, including commercial
9 | applications, and to alter it and redistribute it freely, subject to the following restrictions:
10 |
11 | 1. The origin of this software must not be misrepresented; you must not claim that you
12 | wrote the original software. If you use this software in a product, an acknowledgment
13 | in the product documentation would be appreciated but is not required.
14 |
15 | 2. Altered source versions must be plainly marked as such, and must not be misrepresented
16 | as being the original software.
17 |
18 | 3. This notice may not be removed or altered from any source distribution.
19 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # `rGuiIcons`
2 |
3 | A simple and easy-to-use [raygui](https://github.com/raysan5/raygui) icons editor.
4 |
5 | Useful for tools icons customization. The best tool companion for [rGuiLayout](https://raylibtech.itch.io/rguilayout) and [rGuiStyler](https://github.com/raysan5/rguistyler).
6 |
7 | `rGuiIcons` can be used for free as a [WebAssembly online tool](https://raylibtech.itch.io/rguiicons) and it can also be downloaded as a **standalone tool** for _Windows_ and _Linux_ with some extra features.
8 |
9 | **NOTE: Latest `rGuiIcons 3.0` release is intended to be used with [`raygui 4.0`](https://github.com/raysan5/raygui/releases/tag/4.0) release.**
10 |
11 | ## Features
12 |
13 | - **Icon editing** and preview at multiple sizes
14 | - **Cut, copy, paste** icons for easy editing
15 | - **Undo/Redo** system for icon changes
16 | - Save and load as binary iconset file `.rgi`
17 | - Export iconset as an embeddable **code file** (`.h`)
18 | - Export iconset as a `.png` black&white image
19 | - Icon name ids exported as standard PNG chunk (`zTXt`)
20 | - Multiple UI styles for tools reference
21 | - **+200 custom icons for reference** and basic edition
22 | - Command-line support for `.rgi`/`.h`/`.png` batch conversion
23 | - **Completely portable (single-file, no-dependencies)**
24 | - **Free and open source**
25 |
26 | ## Screenshot
27 |
28 | 
29 |
30 | ## Usage
31 |
32 | The tool is quite intuitive, the expected steps to follow are:
33 | 1. Choose the icon to edit from icons panel
34 | 2. Edit the icon pixels in the right panel
35 | 3. Select next icon for edit or export set/individual icon
36 |
37 | NOTE: Icon changes are previewed in real time in the same tool!
38 |
39 | Once icons have been created/edited, they can be saved as a raygui-ready icon set (.rgi), exported as an embeddable `.h` **code file** or exported as a `.png` image. Note that the `.png` contains the icons ids information in a standard chunk (`tEXt`/`zTXt`).
40 |
41 | - raygui icon set file (`.rgi`) can be loaded by raygui using the function `GuiLoadIcons()`.
42 |
43 | - raygui icon set code file (`.h`) can be embedded into a raygui-based application just defining:
44 |
45 | ```c
46 | #define RAYGUI_IMPLEMENTATION
47 | #define RAYGUI_CUSTOM_ICONS // Custom icons set required
48 | #include "gui_iconset.h" // Custom icons set provided, generated with rGuiIcons tool
49 | #include "raygui.h"
50 | ```
51 |
52 | `rGuiIcons Standalone` comes with command-line support for batch conversion. For usage help:
53 |
54 | > rguiicons.exe --help
55 |
56 | ## License
57 |
58 | `rGuiIcons` source code is distributed as **open source**, licensed under an unmodified [zlib/libpng license](LICENSE).
59 |
60 | `rGuiIcons` binaries are completely free for anyone willing to compile it directly from source.
61 |
62 | `rGuiIcons Standalone` desktop tool is distributed as freeware.
63 |
64 | In any case, consider some donation to help the author keep working on software for games development.
65 |
66 | *Copyright (c) 2019-2025 raylib technologies ([@raylibtech](https://twitter.com/raylibtech)) / Ramon Santamaria ([@raysan5](https://twitter.com/raysan5))*
67 |
--------------------------------------------------------------------------------
/design/rguiicons_mockup01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/design/rguiicons_mockup01.png
--------------------------------------------------------------------------------
/design/rguiicons_mockup02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/design/rguiicons_mockup02.png
--------------------------------------------------------------------------------
/design/rguiicons_mockup03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/design/rguiicons_mockup03.png
--------------------------------------------------------------------------------
/design/rguiicons_mockup04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/design/rguiicons_mockup04.png
--------------------------------------------------------------------------------
/design/ricons.old.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/design/ricons.old.png
--------------------------------------------------------------------------------
/design/ricons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/design/ricons.png
--------------------------------------------------------------------------------
/design/ricons_design.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/design/ricons_design.png
--------------------------------------------------------------------------------
/design/ricons_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/design/ricons_light.png
--------------------------------------------------------------------------------
/design/ricons_test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/design/ricons_test.png
--------------------------------------------------------------------------------
/logo/rguiicons.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons.icns
--------------------------------------------------------------------------------
/logo/rguiicons.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons.ico
--------------------------------------------------------------------------------
/logo/rguiicons_1024x1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_1024x1024.png
--------------------------------------------------------------------------------
/logo/rguiicons_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_128x128.png
--------------------------------------------------------------------------------
/logo/rguiicons_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_16x16.png
--------------------------------------------------------------------------------
/logo/rguiicons_184x184.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_184x184.png
--------------------------------------------------------------------------------
/logo/rguiicons_240x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_240x240.png
--------------------------------------------------------------------------------
/logo/rguiicons_24x24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_24x24.png
--------------------------------------------------------------------------------
/logo/rguiicons_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_256x256.png
--------------------------------------------------------------------------------
/logo/rguiicons_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_32x32.png
--------------------------------------------------------------------------------
/logo/rguiicons_48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_48x48.png
--------------------------------------------------------------------------------
/logo/rguiicons_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_512x512.png
--------------------------------------------------------------------------------
/logo/rguiicons_64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_64x64.png
--------------------------------------------------------------------------------
/logo/rguiicons_96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/logo/rguiicons_96x96.png
--------------------------------------------------------------------------------
/projects/VS2022/raylib/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | %(PreProcessorDefinitions);EXTERNAL_CONFIG_FLAGS;SUPPORT_MODULE_RSHAPES;SUPPORT_MODULE_RTEXTURES;SUPPORT_MODULE_RTEXT;SUPPORT_EVENTS_WAITING;SUPPORT_COMPRESSION_API;SUPPORT_QUADS_DRAW_MODE;SUPPORT_DEFAULT_FONT;SUPPORT_FILEFORMAT_TTF;SUPPORT_IMAGE_MANIPULATION;SUPPORT_TEXT_MANIPULATION;SUPPORT_FILEFORMAT_PNG;SUPPORT_IMAGE_EXPORT;SUPPORT_STANDARD_FILEIO;SUPPORT_TRACELOG
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/projects/VS2022/raylib/raylib.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug.DLL
6 | Win32
7 |
8 |
9 | Debug.DLL
10 | x64
11 |
12 |
13 | Debug
14 | Win32
15 |
16 |
17 | Debug
18 | x64
19 |
20 |
21 | Release.DLL
22 | Win32
23 |
24 |
25 | Release.DLL
26 | x64
27 |
28 |
29 | Release
30 | Win32
31 |
32 |
33 | Release
34 | x64
35 |
36 |
37 |
38 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}
39 | Win32Proj
40 | raylib
41 | 10.0
42 |
43 |
44 |
45 | StaticLibrary
46 | true
47 | $(DefaultPlatformToolset)
48 | Unicode
49 |
50 |
51 | StaticLibrary
52 | true
53 | $(DefaultPlatformToolset)
54 | Unicode
55 |
56 |
57 | DynamicLibrary
58 | true
59 | $(DefaultPlatformToolset)
60 | Unicode
61 |
62 |
63 | DynamicLibrary
64 | true
65 | $(DefaultPlatformToolset)
66 | Unicode
67 |
68 |
69 | StaticLibrary
70 | false
71 | $(DefaultPlatformToolset)
72 | Unicode
73 |
74 |
75 | StaticLibrary
76 | false
77 | $(DefaultPlatformToolset)
78 | Unicode
79 |
80 |
81 | DynamicLibrary
82 | false
83 | $(DefaultPlatformToolset)
84 | Unicode
85 |
86 |
87 | DynamicLibrary
88 | false
89 | $(DefaultPlatformToolset)
90 | Unicode
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
124 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
125 |
126 |
127 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
128 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
129 |
130 |
131 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
132 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
133 |
134 |
135 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
136 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
137 |
138 |
139 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
140 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
141 |
142 |
143 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
144 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
145 |
146 |
147 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
148 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
149 |
150 |
151 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
152 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
153 |
154 |
155 |
156 |
157 |
158 | Level3
159 | Disabled
160 | _CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP
161 | CompileAsC
162 | $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include
163 |
164 |
165 | Windows
166 |
167 |
168 | %(AdditionalLibraryDirectories)
169 |
170 |
171 |
172 |
173 |
174 |
175 | Level3
176 | Disabled
177 | _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP
178 | CompileAsC
179 | $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include
180 |
181 |
182 | Windows
183 |
184 |
185 | %(AdditionalLibraryDirectories)
186 |
187 |
188 |
189 |
190 |
191 |
192 | Level3
193 | Disabled
194 | _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED
195 | CompileAsC
196 | $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include
197 | MultiThreadedDebug
198 |
199 |
200 | Windows
201 | kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
202 |
203 |
204 | %(AdditionalLibraryDirectories)
205 |
206 |
207 |
208 |
209 |
210 |
211 | Level3
212 | Disabled
213 | _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED
214 | CompileAsC
215 | $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include
216 | MultiThreadedDebug
217 |
218 |
219 | Windows
220 | kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
221 |
222 |
223 | %(AdditionalLibraryDirectories)
224 |
225 |
226 |
227 |
228 | Level3
229 |
230 |
231 | MaxSpeed
232 | true
233 | true
234 | _CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP
235 | $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include
236 | CompileAsC
237 | MultiThreaded
238 |
239 |
240 | Windows
241 | true
242 | true
243 |
244 |
245 |
246 |
247 | Level3
248 |
249 |
250 | MaxSpeed
251 | true
252 | true
253 | _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP
254 | $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include
255 | CompileAsC
256 |
257 | MultiThreaded
258 |
259 |
260 | Windows
261 | true
262 | true
263 |
264 |
265 |
266 |
267 | Level3
268 |
269 |
270 | MaxSpeed
271 | true
272 | true
273 | _CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED
274 | $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include
275 | CompileAsC
276 | MultiThreaded
277 |
278 |
279 | Windows
280 | true
281 | true
282 | kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
283 |
284 |
285 |
286 |
287 | Level3
288 |
289 |
290 | MaxSpeed
291 | true
292 | true
293 | _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED
294 | $(ProjectDir)..\..\..\..\raylib\src\external\glfw\include
295 | CompileAsC
296 | MultiThreaded
297 |
298 |
299 |
300 | Windows
301 | true
302 | true
303 | kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
--------------------------------------------------------------------------------
/projects/VS2022/rguiicons.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.0.31912.275
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raylib", "raylib\raylib.vcxproj", "{E89D61AC-55DE-4482-AFD4-DF7242EBC859}"
7 | EndProject
8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rguiicons", "rguiicons\rguiicons.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug.DLL|x64 = Debug.DLL|x64
13 | Debug.DLL|x86 = Debug.DLL|x86
14 | Debug|x64 = Debug|x64
15 | Debug|x86 = Debug|x86
16 | Release.DLL|x64 = Release.DLL|x64
17 | Release.DLL|x86 = Release.DLL|x86
18 | Release|x64 = Release|x64
19 | Release|x86 = Release|x86
20 | EndGlobalSection
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
22 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
23 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
24 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
25 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
26 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.ActiveCfg = Debug|x64
27 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.Build.0 = Debug|x64
28 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.ActiveCfg = Debug|Win32
29 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.Build.0 = Debug|Win32
30 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
31 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.Build.0 = Release.DLL|x64
32 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
33 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.Build.0 = Release.DLL|Win32
34 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.ActiveCfg = Release|x64
35 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.Build.0 = Release|x64
36 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.ActiveCfg = Release|Win32
37 | {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.Build.0 = Release|Win32
38 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
39 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
40 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
41 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
42 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64
43 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64
44 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32
45 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32
46 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
47 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64
48 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
49 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32
50 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64
51 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64
52 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32
53 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32
54 | EndGlobalSection
55 | GlobalSection(SolutionProperties) = preSolution
56 | HideSolutionNode = FALSE
57 | EndGlobalSection
58 | GlobalSection(ExtensibilityGlobals) = postSolution
59 | SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29}
60 | EndGlobalSection
61 | EndGlobal
62 |
--------------------------------------------------------------------------------
/projects/VS2022/rguiicons/rguiicons.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug.DLL
6 | Win32
7 |
8 |
9 | Debug.DLL
10 | x64
11 |
12 |
13 | Debug
14 | Win32
15 |
16 |
17 | Debug
18 | x64
19 |
20 |
21 | Release.DLL
22 | Win32
23 |
24 |
25 | Release.DLL
26 | x64
27 |
28 |
29 | Release
30 | Win32
31 |
32 |
33 | Release
34 | x64
35 |
36 |
37 |
38 | {0981CA98-E4A5-4DF1-987F-A41D09131EFC}
39 | Win32Proj
40 | rguiicons
41 | rguiicons
42 | 10.0
43 |
44 |
45 |
46 | Application
47 | true
48 | $(DefaultPlatformToolset)
49 | Unicode
50 |
51 |
52 | Application
53 | true
54 | $(DefaultPlatformToolset)
55 | Unicode
56 |
57 |
58 | Application
59 | true
60 | $(DefaultPlatformToolset)
61 | Unicode
62 |
63 |
64 | Application
65 | true
66 | $(DefaultPlatformToolset)
67 | Unicode
68 |
69 |
70 | Application
71 | false
72 | $(DefaultPlatformToolset)
73 | true
74 | Unicode
75 |
76 |
77 | Application
78 | false
79 | $(DefaultPlatformToolset)
80 | true
81 | Unicode
82 |
83 |
84 | Application
85 | false
86 | $(DefaultPlatformToolset)
87 | true
88 | Unicode
89 |
90 |
91 | Application
92 | false
93 | $(DefaultPlatformToolset)
94 | true
95 | Unicode
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 | true
129 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
130 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
131 |
132 |
133 | true
134 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
135 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
136 |
137 |
138 | true
139 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
140 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
141 |
142 |
143 | true
144 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
145 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
146 |
147 |
148 | false
149 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
150 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
151 |
152 |
153 | false
154 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
155 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
156 |
157 |
158 | false
159 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
160 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
161 |
162 |
163 | false
164 | $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
165 | $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
166 |
167 |
168 |
169 |
170 |
171 | Level3
172 | Disabled
173 | _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
174 | CompileAsC
175 | $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories)
176 |
177 |
178 | Console
179 | true
180 | $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
181 | raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
182 |
183 |
184 |
185 |
186 |
187 |
188 | Level3
189 | Disabled
190 | _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
191 | CompileAsC
192 | $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories)
193 | /FS %(AdditionalOptions)
194 |
195 |
196 | Console
197 | true
198 | $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
199 | raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
200 |
201 |
202 |
203 |
204 |
205 |
206 | Level3
207 | Disabled
208 | _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
209 | CompileAsC
210 | $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories)
211 |
212 |
213 | Console
214 | true
215 | $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
216 | raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
217 |
218 |
219 | xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
220 | Copy Debug DLL to output directory
221 |
222 |
223 |
224 |
225 |
226 |
227 | Level3
228 | Disabled
229 | _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
230 | CompileAsC
231 | $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories)
232 |
233 |
234 | Console
235 | true
236 | $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
237 | raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
238 |
239 |
240 | xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
241 | Copy Debug DLL to output directory
242 |
243 |
244 |
245 |
246 | Level3
247 |
248 |
249 | MaxSpeed
250 | true
251 | true
252 | _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
253 | $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories)
254 | CompileAsC
255 | true
256 | MultiThreaded
257 |
258 |
259 | Console
260 | true
261 | true
262 | true
263 | raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
264 | $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
265 |
266 |
267 |
268 |
269 | Level3
270 |
271 |
272 | MaxSpeed
273 | true
274 | true
275 | _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
276 | $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories)
277 | CompileAsC
278 | true
279 | MultiThreaded
280 |
281 |
282 | Console
283 | true
284 | true
285 | true
286 | raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
287 | $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
288 |
289 |
290 |
291 |
292 | Level3
293 |
294 |
295 | MaxSpeed
296 | true
297 | true
298 | _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
299 | $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories)
300 | CompileAsC
301 | true
302 |
303 |
304 | Console
305 | true
306 | true
307 | true
308 | raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
309 | $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
310 |
311 |
312 | xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
313 |
314 |
315 | Copy Release DLL to output directory
316 |
317 |
318 |
319 |
320 | Level3
321 |
322 |
323 | MaxSpeed
324 | true
325 | true
326 | _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
327 | $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories)
328 | CompileAsC
329 | true
330 |
331 |
332 | Console
333 | true
334 | true
335 | true
336 | raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
337 | $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
338 |
339 |
340 | xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
341 |
342 |
343 | Copy Release DLL to output directory
344 |
345 |
346 |
347 |
348 | {e89d61ac-55de-4482-afd4-df7242ebc859}
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
--------------------------------------------------------------------------------
/screenshots/rguiicons_v100_shot01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v100_shot01.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v100_shot02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v100_shot02.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v100_shot03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v100_shot03.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v100_shot04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v100_shot04.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v100_shot05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v100_shot05.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v100_shot06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v100_shot06.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v150_shot01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v150_shot01.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v200_shot01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v200_shot01.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v200_shot02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v200_shot02.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v200_shot03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v200_shot03.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v200_shot04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v200_shot04.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v200_shot05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v200_shot05.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v200_shot06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v200_shot06.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v200_shot07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v200_shot07.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v200_shot08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v200_shot08.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v300_shot01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v300_shot01.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v300_shot02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v300_shot02.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v300_shot03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v300_shot03.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v300_shot04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v300_shot04.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v300_shot05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v300_shot05.png
--------------------------------------------------------------------------------
/screenshots/rguiicons_v300_shot06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/screenshots/rguiicons_v300_shot06.png
--------------------------------------------------------------------------------
/src/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | rguiicons
9 | CFBundleIconFile
10 | rguiicons.icns
11 | CFBundleIdentifier
12 | com.raylibtech.rguiicons
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | rguiicons
17 | CFBundlePackageType
18 | APPL
19 | CFBundleVersion
20 | 3.0
21 | CFBundleShortVersionString
22 | 3.0.0
23 | LSMinimumSystemVersion
24 | 10.12
25 | NSHumanReadableCopyright
26 | Copyright (c) 2023 raylib technologies (@raylibtech)
27 | CFBundleSignature
28 | ????
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/Makefile:
--------------------------------------------------------------------------------
1 | #**************************************************************************************************
2 | #
3 | # raylib makefile for Desktop platforms, Raspberry Pi and Web Assembly
4 | #
5 | # Copyright (c) 2021-2025 Ramon Santamaria (@raysan5)
6 | #
7 | # This software is provided "as-is", without any express or implied warranty. In no event
8 | # will the authors be held liable for any damages arising from the use of this software.
9 | #
10 | # Permission is granted to anyone to use this software for any purpose, including commercial
11 | # applications, and to alter it and redistribute it freely, subject to the following restrictions:
12 | #
13 | # 1. The origin of this software must not be misrepresented; you must not claim that you
14 | # wrote the original software. If you use this software in a product, an acknowledgment
15 | # in the product documentation would be appreciated but is not required.
16 | #
17 | # 2. Altered source versions must be plainly marked as such, and must not be misrepresented
18 | # as being the original software.
19 | #
20 | # 3. This notice may not be removed or altered from any source distribution.
21 | #
22 | #**************************************************************************************************
23 |
24 | .PHONY: all clean
25 |
26 | # Define required environment variables
27 | #------------------------------------------------------------------------------------------------
28 | # Define target platform: PLATFORM_DESKTOP, PLATFORM_WEB, PLATFORM_DRM
29 | PLATFORM ?= PLATFORM_DESKTOP
30 |
31 | # Define project variables
32 | PROJECT_NAME ?= rguiicons
33 | PROJECT_VERSION ?= 1.0
34 | PROJECT_BUILD_PATH ?= .
35 | PROJECT_SOURCE_FILES ?= rguiicons.c
36 | ifneq ($(PLATFORM),PLATFORM_WEB)
37 | PROJECT_SOURCE_FILES += external/tinyfiledialogs.c
38 | endif
39 |
40 | RAYLIB_PATH ?= C:/GitHub/raylib
41 | RAYLIB_INCLUDE_PATH ?= $(RAYLIB_PATH)/src
42 | RAYLIB_LIB_PATH ?= $(RAYLIB_PATH)/src
43 |
44 | # Build mode for project: DEBUG or RELEASE
45 | BUILD_MODE ?= RELEASE
46 |
47 | # PLATFORM_WEB: Default properties
48 | BUILD_WEB_ASYNCIFY ?= TRUE
49 | BUILD_WEB_SHELL ?= minshell.html
50 | BUILD_WEB_HEAP_SIZE ?= 128MB
51 | BUILD_WEB_STACK_SIZE ?= 1MB
52 | BUILD_WEB_ASYNCIFY_STACK_SIZE ?= 1048576
53 | BUILD_WEB_RESOURCES ?= FALSE
54 | BUILD_WEB_RESOURCES_PATH ?= resources
55 |
56 | # Determine PLATFORM_OS in case PLATFORM_DESKTOP selected
57 | ifeq ($(PLATFORM),PLATFORM_DESKTOP)
58 | # No uname.exe on MinGW!, but OS=Windows_NT on Windows!
59 | # ifeq ($(UNAME),Msys) -> Windows
60 | ifeq ($(OS),Windows_NT)
61 | PLATFORM_OS = WINDOWS
62 | else
63 | UNAMEOS = $(shell uname)
64 | ifeq ($(UNAMEOS),Linux)
65 | PLATFORM_OS = LINUX
66 | endif
67 | ifeq ($(UNAMEOS),FreeBSD)
68 | PLATFORM_OS = BSD
69 | endif
70 | ifeq ($(UNAMEOS),OpenBSD)
71 | PLATFORM_OS = BSD
72 | endif
73 | ifeq ($(UNAMEOS),NetBSD)
74 | PLATFORM_OS = BSD
75 | endif
76 | ifeq ($(UNAMEOS),DragonFly)
77 | PLATFORM_OS = BSD
78 | endif
79 | ifeq ($(UNAMEOS),Darwin)
80 | PLATFORM_OS = OSX
81 | endif
82 | endif
83 | endif
84 | ifeq ($(PLATFORM),PLATFORM_DRM)
85 | UNAMEOS = $(shell uname)
86 | ifeq ($(UNAMEOS),Linux)
87 | PLATFORM_OS = LINUX
88 | endif
89 | endif
90 |
91 | ifeq ($(PLATFORM),PLATFORM_WEB)
92 | # Emscripten required variables
93 | EMSDK_PATH ?= C:/raylib/emsdk
94 | EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten
95 | CLANG_PATH = $(EMSDK_PATH)/upstream/bin
96 | PYTHON_PATH = $(EMSDK_PATH)/python/3.9.2-nuget_64bit
97 | NODE_PATH = $(EMSDK_PATH)/node/20.18.0_64bit/bin
98 | export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH)
99 | endif
100 |
101 | # Define default C compiler: CC
102 | #------------------------------------------------------------------------------------------------
103 | CC = gcc
104 |
105 | ifeq ($(PLATFORM),PLATFORM_DESKTOP)
106 | ifeq ($(PLATFORM_OS),OSX)
107 | # OSX default compiler
108 | CC = clang
109 | endif
110 | ifeq ($(PLATFORM_OS),BSD)
111 | # FreeBSD, OpenBSD, NetBSD, DragonFly default compiler
112 | CC = clang
113 | endif
114 | endif
115 | ifeq ($(PLATFORM),PLATFORM_WEB)
116 | # HTML5 emscripten compiler
117 | # WARNING: To compile to HTML5, code must be redesigned
118 | # to use emscripten.h and emscripten_set_main_loop()
119 | CC = emcc
120 | endif
121 | ifeq ($(PLATFORM),PLATFORM_DRM)
122 | ifeq ($(USE_RPI_CROSS_COMPILER),TRUE)
123 | # Define RPI cross-compiler
124 | #CC = armv6j-hardfloat-linux-gnueabi-gcc
125 | CC = $(RPI_TOOLCHAIN)/bin/arm-linux-gnueabihf-gcc
126 | endif
127 | endif
128 |
129 |
130 | # Define default make program: MAKE
131 | #------------------------------------------------------------------------------------------------
132 | MAKE ?= make
133 |
134 | ifeq ($(PLATFORM),PLATFORM_DESKTOP)
135 | ifeq ($(PLATFORM_OS),WINDOWS)
136 | MAKE = mingw32-make
137 | endif
138 | endif
139 |
140 | # Define compiler flags: CFLAGS
141 | #------------------------------------------------------------------------------------------------
142 | # -O1 defines optimization level
143 | # -g include debug information on compilation
144 | # -s strip unnecessary data from build
145 | # -Wall turns on most, but not all, compiler warnings
146 | # -std=c99 defines C language mode (standard C from 1999 revision)
147 | # -std=gnu99 defines C language mode (GNU C from 1999 revision)
148 | # -Wno-missing-braces ignore invalid warning (GCC bug 53119)
149 | # -Wno-unused-value ignore unused return values of some functions (i.e. fread())
150 | # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec
151 | CFLAGS = -Wall -D_DEFAULT_SOURCE -Wno-missing-braces -Wno-unused-value -Wno-pointer-sign $(PROJECT_CUSTOM_FLAGS)
152 | #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes
153 |
154 | ifeq ($(PLATFORM),PLATFORM_WEB)
155 | CFLAGS += -std=gnu99
156 | else
157 | CFLAGS += -std=c99
158 | endif
159 |
160 | ifeq ($(BUILD_MODE),DEBUG)
161 | CFLAGS += -g -D_DEBUG
162 | else
163 | ifeq ($(PLATFORM),PLATFORM_WEB)
164 | ifeq ($(BUILD_WEB_ASYNCIFY),TRUE)
165 | CFLAGS += -O3
166 | else
167 | CFLAGS += -Os
168 | endif
169 | else
170 | ifeq ($(PLATFORM_OS),OSX)
171 | CFLAGS += -O2
172 | else
173 | CFLAGS += -s -O2
174 | endif
175 | endif
176 | endif
177 | ifeq ($(PLATFORM),PLATFORM_DRM)
178 | CFLAGS += -std=gnu99 -DEGL_NO_X11
179 | endif
180 |
181 | # Define include paths for required headers: INCLUDE_PATHS
182 | #------------------------------------------------------------------------------------------------
183 | # NOTE: Several external required libraries (stb and others)
184 | INCLUDE_PATHS += -I. -Iexternal -I$(RAYLIB_INCLUDE_PATH)
185 |
186 | # Define additional directories containing required header files
187 | ifeq ($(PLATFORM),PLATFORM_DRM)
188 | # DRM required libraries
189 | INCLUDE_PATHS += -I/usr/include/libdrm
190 | endif
191 | ifeq ($(PLATFORM),PLATFORM_DESKTOP)
192 | ifeq ($(PLATFORM_OS),BSD)
193 | # Consider -L$(RAYLIB_H_INSTALL_PATH)
194 | INCLUDE_PATHS += -I/usr/local/include
195 | endif
196 | endif
197 |
198 | # Define library paths containing required libs: LDFLAGS
199 | #------------------------------------------------------------------------------------------------
200 | LDFLAGS = -L. -L$(RAYLIB_LIB_PATH)
201 |
202 | ifeq ($(PLATFORM),PLATFORM_DESKTOP)
203 | ifeq ($(PLATFORM_OS),WINDOWS)
204 | # NOTE: The resource .rc file contains windows executable icon and properties
205 | LDFLAGS += $(PROJECT_NAME).rc.data
206 | # -Wl,--subsystem,windows hides the console window
207 | ifeq ($(BUILD_MODE), RELEASE)
208 | LDFLAGS += -Wl,--subsystem,windows
209 | endif
210 | endif
211 | ifeq ($(PLATFORM_OS),BSD)
212 | # Consider -L$(RAYLIB_INSTALL_PATH)
213 | LDFLAGS += -Lsrc -L/usr/local/lib
214 | endif
215 | ifeq ($(PLATFORM_OS),LINUX)
216 | # Reset everything.
217 | # Precedence: immediately local, installed version, raysan5 provided libs
218 | #LDFLAGS += -L$(RAYLIB_RELEASE_PATH)
219 | endif
220 | endif
221 | ifeq ($(PLATFORM),PLATFORM_WEB)
222 | # -Os # size optimization
223 | # -O2 # optimization level 2, if used, also set --memory-init-file 0
224 | # -sUSE_GLFW=3 # Use glfw3 library (context/input management)
225 | # -sALLOW_MEMORY_GROWTH=1 # to allow memory resizing -> WARNING: Audio buffers could FAIL!
226 | # -sTOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) (67108864 = 64MB)
227 | # -sUSE_PTHREADS=1 # multithreading support
228 | # -sWASM=0 # disable Web Assembly, emitted by default
229 | # -sASYNCIFY # lets synchronous C/C++ code interact with asynchronous JS
230 | # -sFORCE_FILESYSTEM=1 # force filesystem to load/save files data
231 | # -sASSERTIONS=1 # enable runtime checks for common memory allocation errors (-O1 and above turn it off)
232 | # -sMINIFY_HTML=0 # minify generated html from shell.html
233 | # --profiling # include information for code profiling
234 | # --memory-init-file 0 # to avoid an external memory initialization code file (.mem)
235 | # --preload-file resources # specify a resources folder for data compilation
236 | # --source-map-base # allow debugging in browser with source map
237 | # --shell-file shell.html # define a custom shell .html and output extension
238 | LDFLAGS += -sUSE_GLFW=3 -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sSTACK_SIZE=$(BUILD_WEB_STACK_SIZE) -sFORCE_FILESYSTEM=1 -sMINIFY_HTML=0
239 |
240 | # Build using asyncify
241 | ifeq ($(BUILD_WEB_ASYNCIFY),TRUE)
242 | LDFLAGS += -sASYNCIFY -sASYNCIFY_STACK_SIZE=$(BUILD_WEB_ASYNCIFY_STACK_SIZE)
243 | endif
244 |
245 | # Add resources building if required
246 | ifeq ($(BUILD_WEB_RESOURCES),TRUE)
247 | LDFLAGS += --preload-file $(BUILD_WEB_RESOURCES_PATH)
248 | endif
249 |
250 | # Add debug mode flags if required
251 | ifeq ($(BUILD_MODE),DEBUG)
252 | LDFLAGS += -sASSERTIONS=1 --profiling
253 | endif
254 |
255 | # Define a custom shell .html and output extension
256 | LDFLAGS += --shell-file $(BUILD_WEB_SHELL)
257 | EXT = .html
258 | endif
259 |
260 | # Define libraries required on linking: LDLIBS
261 | # NOTE: To link libraries (lib.so or lib.a), use -l
262 | #------------------------------------------------------------------------------------------------
263 | ifeq ($(PLATFORM),PLATFORM_DESKTOP)
264 | ifeq ($(PLATFORM_OS),WINDOWS)
265 | # Libraries for Windows desktop compilation
266 | # NOTE: WinMM library required to set high-res timer resolution
267 | LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm -lcomdlg32 -lole32
268 | # Required for physac examples
269 | LDLIBS += -static -lpthread
270 | endif
271 | ifeq ($(PLATFORM_OS),LINUX)
272 | # Libraries for Debian GNU/Linux desktop compiling
273 | # NOTE: Required packages: libegl1-mesa-dev
274 | LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt
275 |
276 | # On Wayland windowing system, additional libraries requires
277 | ifeq ($(USE_WAYLAND_DISPLAY),TRUE)
278 | LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon
279 | else
280 | # On X11 requires also below libraries
281 | LDLIBS += -lX11
282 | # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them
283 | #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
284 | endif
285 | # Explicit link to libc
286 | ifeq ($(RAYLIB_LIBTYPE),SHARED)
287 | LDLIBS += -lc
288 | endif
289 | endif
290 | ifeq ($(PLATFORM_OS),OSX)
291 | # Libraries for OSX 10.9 desktop compiling
292 | # NOTE: Required packages: libopenal-dev libegl1-mesa-dev
293 | LDLIBS = -lraylib -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo
294 | endif
295 | ifeq ($(PLATFORM_OS),BSD)
296 | # Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling
297 | # NOTE: Required packages: mesa-libs
298 | LDLIBS = -lraylib -lGL -lpthread -lm
299 |
300 | # On XWindow requires also below libraries
301 | LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
302 | endif
303 | endif
304 | ifeq ($(PLATFORM),PLATFORM_WEB)
305 | # Libraries for web (HTML5) compiling
306 | LDLIBS = $(RAYLIB_LIB_PATH)/libraylib.web.a
307 | endif
308 | ifeq ($(PLATFORM),PLATFORM_DRM)
309 | # Libraries for DRM compiling
310 | # NOTE: Required packages: libasound2-dev (ALSA)
311 | LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lgbm -ldrm -ldl
312 | endif
313 |
314 |
315 | # Define all object files from source files
316 | #------------------------------------------------------------------------------------------------
317 | OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES))
318 |
319 | # Define processes to execute
320 | #------------------------------------------------------------------------------------------------
321 | # Default target entry
322 | all:
323 | $(MAKE) $(PROJECT_NAME)
324 |
325 | # Project target defined by PROJECT_NAME
326 | $(PROJECT_NAME): $(OBJS)
327 | $(CC) -o $(PROJECT_BUILD_PATH)/$(PROJECT_NAME)$(EXT) $(OBJS) $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
328 |
329 | # Compile source files
330 | # NOTE: This pattern will compile every module defined on $(OBJS)
331 | %.o: %.c
332 | $(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM)
333 |
334 | # Clean everything
335 | clean:
336 | ifeq ($(PLATFORM),PLATFORM_DESKTOP)
337 | ifeq ($(PLATFORM_OS),WINDOWS)
338 | del *.o *.exe /s
339 | endif
340 | ifeq ($(PLATFORM_OS),LINUX)
341 | find . -type f -executable -delete
342 | rm -fv *.o
343 | endif
344 | ifeq ($(PLATFORM_OS),OSX)
345 | rm -f *.o external/*.o $(PROJECT_NAME)
346 | endif
347 | endif
348 | ifeq ($(PLATFORM),PLATFORM_DRM)
349 | find . -type f -executable -delete
350 | rm -fv *.o
351 | endif
352 | ifeq ($(PLATFORM),PLATFORM_WEB)
353 | del *.o *.html *.js
354 | endif
355 | @echo Cleaning done
356 |
357 |
--------------------------------------------------------------------------------
/src/external/rpng.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/src/external/rpng.h
--------------------------------------------------------------------------------
/src/external/tinyfiledialogs.h:
--------------------------------------------------------------------------------
1 | /* SPDX-License-Identifier: Zlib
2 | Copyright (c) 2014 - 2024 Guillaume Vareille http://ysengrin.com
3 | ____________________________________________________________________
4 | | |
5 | | 100% compatible C C++ -> You can rename tinfiledialogs.c as .cpp |
6 | |____________________________________________________________________|
7 |
8 | ********* TINY FILE DIALOGS OFFICIAL WEBSITE IS ON SOURCEFORGE *********
9 | _________
10 | / \ tinyfiledialogs.h v3.19.1 [Jan 27, 2025]
11 | |tiny file| Unique header file created [November 9, 2014]
12 | | dialogs |
13 | \____ ___/ http://tinyfiledialogs.sourceforge.net
14 | \| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
15 | ____________________________________________
16 | | |
17 | | email: tinyfiledialogs at ysengrin.com |
18 | |____________________________________________|
19 | ________________________________________________________________________________
20 | | ____________________________________________________________________________ |
21 | | | | |
22 | | | - in tinyfiledialogs, char is UTF-8 by default (since v3.6) | |
23 | | | | |
24 | | | on windows: | |
25 | | | - for UTF-16, use the wchar_t functions at the bottom of the header file | |
26 | | | | |
27 | | | - _wfopen() requires wchar_t | |
28 | | | - fopen() uses char but expects ASCII or MBCS (not UTF-8) | |
29 | | | - if you want char to be MBCS: set tinyfd_winUtf8 to 0 | |
30 | | | | |
31 | | | - alternatively, tinyfiledialogs provides | |
32 | | | functions to convert between UTF-8, UTF-16 and MBCS | |
33 | | |____________________________________________________________________________| |
34 | |________________________________________________________________________________|
35 |
36 | If you like tinyfiledialogs, please upvote my stackoverflow answer
37 | https://stackoverflow.com/a/47651444
38 |
39 | - License -
40 | This software is provided 'as-is', without any express or implied
41 | warranty. In no event will the authors be held liable for any damages
42 | arising from the use of this software.
43 | Permission is granted to anyone to use this software for any purpose,
44 | including commercial applications, and to alter it and redistribute it
45 | freely, subject to the following restrictions:
46 | 1. The origin of this software must not be misrepresented; you must not
47 | claim that you wrote the original software. If you use this software
48 | in a product, an acknowledgment in the product documentation would be
49 | appreciated but is not required.
50 | 2. Altered source versions must be plainly marked as such, and must not be
51 | misrepresented as being the original software.
52 | 3. This notice may not be removed or altered from any source distribution.
53 |
54 | __________________________________________
55 | | ______________________________________ |
56 | | | | |
57 | | | DO NOT USE USER INPUT IN THE DIALOGS | |
58 | | |______________________________________| |
59 | |__________________________________________|
60 | */
61 |
62 | #ifndef TINYFILEDIALOGS_H
63 | #define TINYFILEDIALOGS_H
64 |
65 | #ifdef __cplusplus
66 | extern "C" {
67 | #endif
68 |
69 | /******************************************************************************************************/
70 | /**************************************** UTF-8 on Windows ********************************************/
71 | /******************************************************************************************************/
72 | #ifdef _WIN32
73 | /* On windows, if you want to use UTF-8 ( instead of the UTF-16/wchar_t functions at the end of this file )
74 | Make sure your code is really prepared for UTF-8 (on windows, functions like fopen() expect MBCS and not UTF-8) */
75 | extern int tinyfd_winUtf8; /* on windows char strings can be 1:UTF-8(default) or 0:MBCS */
76 | /* for MBCS change this to 0, in tinyfiledialogs.c or in your code */
77 |
78 | /* Here are some functions to help you convert between UTF-16 UTF-8 MBSC */
79 | char * tinyfd_utf8toMbcs(char const * aUtf8string);
80 | char * tinyfd_utf16toMbcs(wchar_t const * aUtf16string);
81 | wchar_t * tinyfd_mbcsTo16(char const * aMbcsString);
82 | char * tinyfd_mbcsTo8(char const * aMbcsString);
83 | wchar_t * tinyfd_utf8to16(char const * aUtf8string);
84 | char * tinyfd_utf16to8(wchar_t const * aUtf16string);
85 | #endif
86 | /******************************************************************************************************/
87 | /******************************************************************************************************/
88 | /******************************************************************************************************/
89 |
90 | /************* 3 funtions for C# (you don't need this in C or C++) : */
91 | char const * tinyfd_getGlobalChar(char const * aCharVariableName); /* returns NULL on error */
92 | int tinyfd_getGlobalInt(char const * aIntVariableName); /* returns -1 on error */
93 | int tinyfd_setGlobalInt(char const * aIntVariableName, int aValue); /* returns -1 on error */
94 | /* aCharVariableName: "tinyfd_version" "tinyfd_needs" "tinyfd_response"
95 | aIntVariableName : "tinyfd_verbose" "tinyfd_silent" "tinyfd_allowCursesDialogs"
96 | "tinyfd_forceConsole" "tinyfd_assumeGraphicDisplay" "tinyfd_winUtf8"
97 | **************/
98 |
99 | extern char tinyfd_version[8]; /* contains tinyfd current version number */
100 | extern char tinyfd_needs[]; /* info about requirements */
101 | extern int tinyfd_verbose; /* 0 (default) or 1 : on unix, prints the command line calls */
102 | extern int tinyfd_silent; /* 1 (default) or 0 : on unix, hide errors and warnings from called dialogs */
103 |
104 | /** Curses dialogs are difficult to use and counter-intuitive.
105 | On windows they are only ascii and still uses the unix backslash ! **/
106 | extern int tinyfd_allowCursesDialogs; /* 0 (default) or 1 */
107 |
108 | extern int tinyfd_forceConsole; /* 0 (default) or 1 */
109 | /* for unix & windows: 0 (graphic mode) or 1 (console mode).
110 | 0: try to use a graphic solution, if it fails then it uses console mode.
111 | 1: forces all dialogs into console mode even when an X server is present.
112 | if enabled, it can use the package Dialog or dialog.exe.
113 | on windows it only make sense for console applications */
114 |
115 | /* extern int tinyfd_assumeGraphicDisplay; */ /* 0 (default) or 1 */
116 | /* some systems don't set the environment variable DISPLAY even when a graphic display is present.
117 | set this to 1 to tell tinyfiledialogs to assume the existence of a graphic display */
118 |
119 | extern char tinyfd_response[1024];
120 | /* if you pass "tinyfd_query" as aTitle,
121 | the functions will not display the dialogs
122 | but will return 0 for console mode, 1 for graphic mode.
123 | tinyfd_response is then filled with the retain solution.
124 | possible values for tinyfd_response are (all lowercase)
125 | for graphic mode:
126 | windows_wchar windows applescript kdialog zenity zenity3 yad matedialog
127 | shellementary qarma python2-tkinter python3-tkinter python-dbus
128 | perl-dbus gxmessage gmessage xmessage xdialog gdialog dunst
129 | for console mode:
130 | dialog whiptail basicinput no_solution */
131 |
132 | void tinyfd_beep(void);
133 |
134 | int tinyfd_notifyPopup(
135 | char const * aTitle, /* NULL or "" */
136 | char const * aMessage, /* NULL or "" may contain \n \t */
137 | char const * aIconType); /* "info" "warning" "error" */
138 | /* return has only meaning for tinyfd_query */
139 |
140 | int tinyfd_messageBox(
141 | char const * aTitle , /* NULL or "" */
142 | char const * aMessage , /* NULL or "" may contain \n \t */
143 | char const * aDialogType , /* "ok" "okcancel" "yesno" "yesnocancel" */
144 | char const * aIconType , /* "info" "warning" "error" "question" */
145 | int aDefaultButton ) ;
146 | /* 0 for cancel/no , 1 for ok/yes , 2 for no in yesnocancel */
147 |
148 | char * tinyfd_inputBox(
149 | char const * aTitle , /* NULL or "" */
150 | char const * aMessage , /* NULL or "" (\n and \t have no effect) */
151 | char const * aDefaultInput ) ; /* NULL = passwordBox, "" = inputbox */
152 | /* returns NULL on cancel */
153 |
154 | char * tinyfd_saveFileDialog(
155 | char const * aTitle , /* NULL or "" */
156 | char const * aDefaultPathAndOrFile , /* NULL or "" , ends with / to set only a directory */
157 | int aNumOfFilterPatterns , /* 0 (1 in the following example) */
158 | char const * const * aFilterPatterns , /* NULL or char const * lFilterPatterns[1]={"*.txt"} */
159 | char const * aSingleFilterDescription ) ; /* NULL or "text files" */
160 | /* returns NULL on cancel */
161 |
162 | char * tinyfd_openFileDialog(
163 | char const * aTitle, /* NULL or "" */
164 | char const * aDefaultPathAndOrFile, /* NULL or "" , ends with / to set only a directory */
165 | int aNumOfFilterPatterns , /* 0 (2 in the following example) */
166 | char const * const * aFilterPatterns, /* NULL or char const * lFilterPatterns[2]={"*.png","*.jpg"}; */
167 | char const * aSingleFilterDescription, /* NULL or "image files" */
168 | int aAllowMultipleSelects ) ; /* 0 or 1 */
169 | /* in case of multiple files, the separator is | */
170 | /* returns NULL on cancel */
171 |
172 | char * tinyfd_selectFolderDialog(
173 | char const * aTitle, /* NULL or "" */
174 | char const * aDefaultPath); /* NULL or "" */
175 | /* returns NULL on cancel */
176 |
177 | char * tinyfd_colorChooser(
178 | char const * aTitle, /* NULL or "" */
179 | char const * aDefaultHexRGB, /* NULL or "" or "#FF0000" */
180 | unsigned char const aDefaultRGB[3] , /* unsigned char lDefaultRGB[3] = { 0 , 128 , 255 }; */
181 | unsigned char aoResultRGB[3] ) ; /* unsigned char lResultRGB[3]; */
182 | /* aDefaultRGB is used only if aDefaultHexRGB is absent */
183 | /* aDefaultRGB and aoResultRGB can be the same array */
184 | /* returns NULL on cancel */
185 | /* returns the hexcolor as a string "#FF0000" */
186 | /* aoResultRGB also contains the result */
187 |
188 |
189 | /************ WINDOWS ONLY SECTION ************************/
190 | #ifdef _WIN32
191 |
192 | /* windows only - utf-16 version */
193 | int tinyfd_notifyPopupW(
194 | wchar_t const * aTitle, /* NULL or L"" */
195 | wchar_t const * aMessage, /* NULL or L"" may contain \n \t */
196 | wchar_t const * aIconType); /* L"info" L"warning" L"error" */
197 |
198 | /* windows only - utf-16 version */
199 | int tinyfd_messageBoxW(
200 | wchar_t const * aTitle, /* NULL or L"" */
201 | wchar_t const * aMessage, /* NULL or L"" may contain \n \t */
202 | wchar_t const * aDialogType, /* L"ok" L"okcancel" L"yesno" */
203 | wchar_t const * aIconType, /* L"info" L"warning" L"error" L"question" */
204 | int aDefaultButton ); /* 0 for cancel/no , 1 for ok/yes */
205 | /* returns 0 for cancel/no , 1 for ok/yes */
206 |
207 | /* windows only - utf-16 version */
208 | wchar_t * tinyfd_inputBoxW(
209 | wchar_t const * aTitle, /* NULL or L"" */
210 | wchar_t const * aMessage, /* NULL or L"" (\n nor \t not respected) */
211 | wchar_t const * aDefaultInput); /* NULL passwordBox, L"" inputbox */
212 |
213 | /* windows only - utf-16 version */
214 | wchar_t * tinyfd_saveFileDialogW(
215 | wchar_t const * aTitle, /* NULL or L"" */
216 | wchar_t const * aDefaultPathAndOrFile, /* NULL or L"" , ends with / to set only a directory */
217 | int aNumOfFilterPatterns, /* 0 (1 in the following example) */
218 | wchar_t const * const * aFilterPatterns, /* NULL or wchar_t const * lFilterPatterns[1]={L"*.txt"} */
219 | wchar_t const * aSingleFilterDescription); /* NULL or L"text files" */
220 | /* returns NULL on cancel */
221 |
222 | /* windows only - utf-16 version */
223 | wchar_t * tinyfd_openFileDialogW(
224 | wchar_t const * aTitle, /* NULL or L"" */
225 | wchar_t const * aDefaultPathAndOrFile, /* NULL or L"" , ends with / to set only a directory */
226 | int aNumOfFilterPatterns , /* 0 (2 in the following example) */
227 | wchar_t const * const * aFilterPatterns, /* NULL or wchar_t const * lFilterPatterns[2]={L"*.png","*.jpg"} */
228 | wchar_t const * aSingleFilterDescription, /* NULL or L"image files" */
229 | int aAllowMultipleSelects ) ; /* 0 or 1 */
230 | /* in case of multiple files, the separator is | */
231 | /* returns NULL on cancel */
232 |
233 | /* windows only - utf-16 version */
234 | wchar_t * tinyfd_selectFolderDialogW(
235 | wchar_t const * aTitle, /* NULL or L"" */
236 | wchar_t const * aDefaultPath); /* NULL or L"" */
237 | /* returns NULL on cancel */
238 |
239 | /* windows only - utf-16 version */
240 | wchar_t * tinyfd_colorChooserW(
241 | wchar_t const * aTitle, /* NULL or L"" */
242 | wchar_t const * aDefaultHexRGB, /* NULL or L"#FF0000" */
243 | unsigned char const aDefaultRGB[3], /* unsigned char lDefaultRGB[3] = { 0 , 128 , 255 }; */
244 | unsigned char aoResultRGB[3]); /* unsigned char lResultRGB[3]; */
245 | /* returns the hexcolor as a string L"#FF0000" */
246 | /* aoResultRGB also contains the result */
247 | /* aDefaultRGB is used only if aDefaultHexRGB is NULL */
248 | /* aDefaultRGB and aoResultRGB can be the same array */
249 | /* returns NULL on cancel */
250 |
251 | #endif /*_WIN32 */
252 |
253 | #ifdef __cplusplus
254 | } /*extern "C"*/
255 | #endif
256 |
257 | #endif /* TINYFILEDIALOGS_H */
258 |
259 | /*
260 | ________________________________________________________________________________
261 | | ____________________________________________________________________________ |
262 | | | | |
263 | | | on windows: | |
264 | | | - for UTF-16, use the wchar_t functions at the bottom of the header file | |
265 | | | - _wfopen() requires wchar_t | |
266 | | | | |
267 | | | - in tinyfiledialogs, char is UTF-8 by default (since v3.6) | |
268 | | | - but fopen() expects MBCS (not UTF-8) | |
269 | | | - if you want char to be MBCS: set tinyfd_winUtf8 to 0 | |
270 | | | | |
271 | | | - alternatively, tinyfiledialogs provides | |
272 | | | functions to convert between UTF-8, UTF-16 and MBCS | |
273 | | |____________________________________________________________________________| |
274 | |________________________________________________________________________________|
275 |
276 | - This is not for ios nor android (it works in termux though).
277 | - The files can be renamed with extension ".cpp" as the code is 100% compatible C C++
278 | (just comment out << extern "C" >> in the header file)
279 | - Windows is fully supported from XP to 10 (maybe even older versions)
280 | - C# & LUA via dll, see files in the folder EXTRAS
281 | - OSX supported from 10.4 to latest (maybe even older versions)
282 | - Do not use " and ' as the dialogs will be displayed with a warning
283 | instead of the title, message, etc...
284 | - There's one file filter only, it may contain several patterns.
285 | - If no filter description is provided,
286 | the list of patterns will become the description.
287 | - On windows link against Comdlg32.lib and Ole32.lib
288 | (on windows the no linking claim is a lie)
289 | - On unix: it tries command line calls, so no such need (NO LINKING).
290 | - On unix you need one of the following:
291 | applescript, kdialog, zenity, matedialog, shellementary, qarma, yad,
292 | python (2 or 3)/tkinter/python-dbus (optional), Xdialog
293 | or curses dialogs (opens terminal if running without console).
294 | - One of those is already included on most (if not all) desktops.
295 | - In the absence of those it will use gdialog, gxmessage or whiptail
296 | with a textinputbox. If nothing is found, it switches to basic console input,
297 | it opens a console if needed (requires xterm + bash).
298 | - for curses dialogs you must set tinyfd_allowCursesDialogs=1
299 | - You can query the type of dialog that will be used (pass "tinyfd_query" as aTitle)
300 | - String memory is preallocated statically for all the returned values.
301 | - File and path names are tested before return, they should be valid.
302 | - tinyfd_forceConsole=1; at run time, forces dialogs into console mode.
303 | - On windows, console mode only make sense for console applications.
304 | - On windows, console mode is not implemented for wchar_T UTF-16.
305 | - Mutiple selects are not possible in console mode.
306 | - The package dialog must be installed to run in curses dialogs in console mode.
307 | It is already installed on most unix systems.
308 | - On osx, the package dialog can be installed via
309 | http://macappstore.org/dialog or http://macports.org
310 | - On windows, for curses dialogs console mode,
311 | dialog.exe should be copied somewhere on your executable path.
312 | It can be found at the bottom of the following page:
313 | http://andrear.altervista.org/home/cdialog.php
314 | */
315 |
--------------------------------------------------------------------------------
/src/gui_file_dialogs.h:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * File Dialogs
4 | *
5 | * MODULE USAGE:
6 | * #define GUI_FILE_DIALOGS_IMPLEMENTATION
7 | * #include "gui_file_dialogs.h"
8 | *
9 | * On game draw call: GuiFileDialog(...);
10 | *
11 | * LICENSE: zlib/libpng
12 | *
13 | * Copyright (c) 2019-2025 raylib technologies (@raylibtech).
14 | *
15 | * This software is provided "as-is", without any express or implied warranty. In no event
16 | * will the authors be held liable for any damages arising from the use of this software.
17 | *
18 | * Permission is granted to anyone to use this software for any purpose, including commercial
19 | * applications, and to alter it and redistribute it freely, subject to the following restrictions:
20 | *
21 | * 1. The origin of this software must not be misrepresented; you must not claim that you
22 | * wrote the original software. If you use this software in a product, an acknowledgment
23 | * in the product documentation would be appreciated but is not required.
24 | *
25 | * 2. Altered source versions must be plainly marked as such, and must not be misrepresented
26 | * as being the original software.
27 | *
28 | * 3. This notice may not be removed or altered from any source distribution.
29 | *
30 | **********************************************************************************************/
31 |
32 | #ifndef GUI_FILE_DIALOGS_H
33 | #define GUI_FILE_DIALOGS_H
34 |
35 | //----------------------------------------------------------------------------------
36 | // Defines and Macros
37 | //----------------------------------------------------------------------------------
38 | //...
39 |
40 | //----------------------------------------------------------------------------------
41 | // Types and Structures Definition
42 | //----------------------------------------------------------------------------------
43 | // Dialog type
44 | typedef enum DialogType {
45 | DIALOG_OPEN_FILE = 0,
46 | DIALOG_OPEN_FILE_MULTI,
47 | DIALOG_OPEN_DIRECTORY,
48 | DIALOG_SAVE_FILE,
49 | DIALOG_MESSAGE,
50 | DIALOG_TEXTINPUT,
51 | DIALOG_OTHER
52 | } DialogType;
53 |
54 |
55 | #ifdef __cplusplus
56 | extern "C" { // Prevents name mangling of functions
57 | #endif
58 |
59 | //----------------------------------------------------------------------------------
60 | // Global Variables Definition
61 | //----------------------------------------------------------------------------------
62 | //...
63 |
64 | //----------------------------------------------------------------------------------
65 | // Module Functions Declaration
66 | //----------------------------------------------------------------------------------
67 | // Multiplatform file dialogs
68 | // NOTE 1: fileName parameters is used to display and store selected file name
69 | // NOTE 2: Value returned is the operation result, on custom dialogs represents button option pressed
70 | // NOTE 3: filters and message are used for buttons and dialog messages on DIALOG_MESSAGE and DIALOG_TEXTINPUT
71 | int GuiFileDialog(int dialogType, const char *title, char *fileName, const char *filters, const char *message);
72 |
73 | #ifdef __cplusplus
74 | }
75 | #endif
76 |
77 | #endif // GUI_FILE_DIALOGS_H
78 |
79 |
80 | /***********************************************************************************
81 | *
82 | * GUI_FILE_DIALOGS IMPLEMENTATION
83 | *
84 | ************************************************************************************/
85 |
86 | #if defined(GUI_FILE_DIALOGS_IMPLEMENTATION)
87 |
88 | #include "raylib.h" // Required for: TextSplit()
89 |
90 | #if defined(PLATFORM_DESKTOP) && !defined(CUSTOM_MODAL_DIALOGS)
91 | #include "external/tinyfiledialogs.h" // Required for: Native open/save file dialogs
92 | #else
93 | #include "raygui.h"
94 | #endif
95 |
96 | //----------------------------------------------------------------------------------
97 | // Defines and Macros
98 | //----------------------------------------------------------------------------------
99 | //...
100 |
101 | //----------------------------------------------------------------------------------
102 | // Types and Structures Definition
103 | //----------------------------------------------------------------------------------
104 | // ...
105 |
106 | //----------------------------------------------------------------------------------
107 | // Global Variables Definition
108 | //----------------------------------------------------------------------------------
109 | //...
110 |
111 | //----------------------------------------------------------------------------------
112 | // Module Functions Definition
113 | //----------------------------------------------------------------------------------
114 |
115 | // Multiplatform file dialogs
116 | int GuiFileDialog(int dialogType, const char *title, char *fileName, const char *filters, const char *message)
117 | {
118 | int result = -1;
119 |
120 | #if defined(CUSTOM_MODAL_DIALOGS)
121 | switch (dialogType)
122 | {
123 | case DIALOG_OPEN_FILE: /* TODO: Load file modal dialog */ break;
124 | case DIALOG_OPEN_FILE_MULTI: /* TODO: Load multiple files modal dialog */ break;
125 | case DIALOG_OPEN_DIRECTORY: /* TODO: Load directory modal dialog */ break;
126 | case DIALOG_SAVE_FILE: /* TODO: Save file modal dialog */ break;
127 | case DIALOG_MESSAGE: result = GuiMessageBox((Rectangle){ GetScreenWidth()/2 - 160, GetScreenHeight()/2 - 120, 320, 120 }, title, message, filters); break;
128 | case DIALOG_TEXTINPUT: result = GuiTextInputBox((Rectangle){ GetScreenWidth()/2 - 160, GetScreenHeight()/2 - 120, 320, 120 }, title, message, filters, fileName, 512, NULL); break;
129 | default: break;
130 | }
131 | #else // Use native OS dialogs (tinyfiledialogs)
132 |
133 | char *tempFileName = NULL;
134 | int filterCount = 0;
135 | const char **filterSplit = (const char **)TextSplit(filters, ';', &filterCount);
136 |
137 | switch (dialogType)
138 | {
139 | case DIALOG_OPEN_FILE: tempFileName = tinyfd_openFileDialog(title, fileName, filterCount, filterSplit, message, 0); break;
140 | case DIALOG_OPEN_FILE_MULTI: tempFileName = tinyfd_openFileDialog(title, fileName, filterCount, filterSplit, message, 1); break;
141 | case DIALOG_OPEN_DIRECTORY: tempFileName = tinyfd_selectFolderDialog(title, fileName); break;
142 | case DIALOG_SAVE_FILE: tempFileName = tinyfd_saveFileDialog(title, fileName, filterCount, filterSplit, message); break;
143 | case DIALOG_MESSAGE: result = tinyfd_messageBox(title, message, "ok", "info", 0); break;
144 | case DIALOG_TEXTINPUT: tempFileName = tinyfd_inputBox(title, message, ""); break;
145 | default: break;
146 | }
147 |
148 | if (tempFileName != NULL)
149 | {
150 | strcpy(fileName, tempFileName);
151 | result = 1;
152 | }
153 | else result = 0;
154 | #endif
155 |
156 | return result;
157 | }
158 |
159 | #endif // GUI_WINDOW_ABOUT_IMPLEMENTATION
--------------------------------------------------------------------------------
/src/gui_main_toolbar.h:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * Main Toolbar
4 | *
5 | * MODULE USAGE:
6 | * #define GUI_MAIN_TOOLBAR_IMPLEMENTATION
7 | * #include "gui_main_toolbar.h"
8 | *
9 | * INIT: GuiMainToolbarState state = InitGuiMainToolbar();
10 | * DRAW: GuiMainToolbar(&state);
11 | *
12 | * LICENSE: zlib/libpng
13 | *
14 | * Copyright (c) 2019-2022 raylib technologies (@raylibtech) / Ramon Santamaria (@raysan5)
15 | *
16 | * This software is provided "as-is", without any express or implied warranty. In no event
17 | * will the authors be held liable for any damages arising from the use of this software.
18 | *
19 | * Permission is granted to anyone to use this software for any purpose, including commercial
20 | * applications, and to alter it and redistribute it freely, subject to the following restrictions:
21 | *
22 | * 1. The origin of this software must not be misrepresented; you must not claim that you
23 | * wrote the original software. If you use this software in a product, an acknowledgment
24 | * in the product documentation would be appreciated but is not required.
25 | *
26 | * 2. Altered source versions must be plainly marked as such, and must not be misrepresented
27 | * as being the original software.
28 | *
29 | * 3. This notice may not be removed or altered from any source distribution.
30 | *
31 | **********************************************************************************************/
32 |
33 | #include "raylib.h"
34 |
35 | // WARNING: raygui implementation is expected to be defined before including this header
36 |
37 | #ifndef GUI_MAIN_TOOLBAR_H
38 | #define GUI_MAIN_TOOLBAR_H
39 |
40 | typedef struct {
41 |
42 | // Anchors for panels
43 | Vector2 anchorFile;
44 | Vector2 anchorEdit;
45 | Vector2 anchorTools;
46 | Vector2 anchorVisuals;
47 | Vector2 anchorRight;
48 |
49 | // File options
50 | bool btnNewFilePressed;
51 | bool btnLoadFilePressed;
52 | bool btnSaveFilePressed;
53 | bool btnExportFilePressed;
54 |
55 | // Editor options
56 | bool btnCutPressed;
57 | bool btnCopyPressed;
58 | bool btnPastePressed;
59 | bool btnCleanPressed;
60 |
61 | // Tool options
62 | //...
63 |
64 | // Visual options
65 | int visualStyleActive;
66 | int prevVisualStyleActive;
67 | int btnReloadStylePressed;
68 | int languageActive;
69 |
70 | // Info options
71 | bool btnHelpPressed;
72 | bool btnAboutPressed;
73 | bool btnIssuePressed;
74 | bool btnUserPressed;
75 |
76 | // Custom variables
77 | // TODO.
78 |
79 | } GuiMainToolbarState;
80 |
81 | #ifdef __cplusplus
82 | extern "C" { // Prevents name mangling of functions
83 | #endif
84 |
85 | //----------------------------------------------------------------------------------
86 | // Defines and Macros
87 | //----------------------------------------------------------------------------------
88 | //...
89 |
90 | //----------------------------------------------------------------------------------
91 | // Types and Structures Definition
92 | //----------------------------------------------------------------------------------
93 | // ...
94 |
95 | //----------------------------------------------------------------------------------
96 | // Global Variables Definition
97 | //----------------------------------------------------------------------------------
98 | //...
99 |
100 | //----------------------------------------------------------------------------------
101 | // Internal Module Functions Definition
102 | //----------------------------------------------------------------------------------
103 | //...
104 |
105 | //----------------------------------------------------------------------------------
106 | // Module Functions Declaration
107 | //----------------------------------------------------------------------------------
108 | GuiMainToolbarState InitGuiMainToolbar(void);
109 | void GuiMainToolbar(GuiMainToolbarState *state);
110 |
111 | #ifdef __cplusplus
112 | }
113 | #endif
114 |
115 | #endif // GUI_MAIN_TOOLBAR_H
116 |
117 | /***********************************************************************************
118 | *
119 | * GUI_MAIN_TOOLBAR IMPLEMENTATION
120 | *
121 | ************************************************************************************/
122 | #if defined(GUI_MAIN_TOOLBAR_IMPLEMENTATION)
123 |
124 | #include "raygui.h"
125 |
126 | GuiMainToolbarState InitGuiMainToolbar(void)
127 | {
128 | GuiMainToolbarState state = { 0 };
129 |
130 | // Anchors for panels
131 | state.anchorFile = (Vector2){ 0, 0 };
132 | state.anchorEdit = (Vector2){ state.anchorFile.x + 132 - 1, 0 };
133 | state.anchorTools = (Vector2){ state.anchorEdit.x + 168 - 1, 0 };
134 | state.anchorVisuals = (Vector2){ 0, 0 }; // Anchor right, depends on screen width
135 | state.anchorRight = (Vector2){ 0, 0 }; // Anchor right, depends on screen width
136 |
137 | // Project/File options
138 | state.btnNewFilePressed = false;
139 | state.btnLoadFilePressed = false;
140 | state.btnSaveFilePressed = false;
141 | state.btnExportFilePressed = false;
142 |
143 | // Edit options
144 | state.btnCutPressed = false;
145 | state.btnCopyPressed = false;
146 | state.btnPastePressed = false;
147 | state.btnCleanPressed = false;
148 |
149 | // Tool options
150 | //...
151 |
152 | // Visuals options
153 | state.visualStyleActive = 0;
154 | state.prevVisualStyleActive = 0;
155 | state.languageActive = 0;
156 |
157 | // Info options
158 | state.btnHelpPressed = false;
159 | state.btnAboutPressed = false;
160 | state.btnIssuePressed = false;
161 | state.btnUserPressed = false;
162 |
163 | // Custom variables
164 | // TODO.
165 |
166 | // Enable tooltips by default
167 | GuiEnableTooltip();
168 |
169 | return state;
170 | }
171 |
172 | void GuiMainToolbar(GuiMainToolbarState *state)
173 | {
174 | int screenWidth = 640; // WARNING: Screen width is hardcoded to avoid issues on screen scaling!
175 |
176 | // Toolbar panels
177 | state->anchorRight.x = screenWidth - 104; // Update right-anchor panel
178 | state->anchorVisuals.x = state->anchorRight.x - 190 + 1; // Update right-anchor panel
179 |
180 | GuiPanel((Rectangle){ state->anchorFile.x, state->anchorFile.y, 132, 40 }, NULL);
181 | GuiPanel((Rectangle){ state->anchorEdit.x, state->anchorEdit.y, 168, 40 }, NULL);
182 | GuiPanel((Rectangle){ state->anchorTools.x, state->anchorTools.y, state->anchorVisuals.x - state->anchorTools.x + 1, 40 }, NULL);
183 | GuiPanel((Rectangle){ state->anchorVisuals.x, state->anchorVisuals.y, 220, 40 }, NULL);
184 | GuiPanel((Rectangle){ state->anchorRight.x, state->anchorRight.y, 104, 40 }, NULL);
185 |
186 | // Project/File options
187 | GuiSetTooltip("Create new icons project (LCTRL+N)");
188 | state->btnNewFilePressed = GuiButton((Rectangle){ state->anchorFile.x + 12, state->anchorFile.y + 8, 24, 24 }, "#8#");
189 | GuiSetTooltip("Load icons .rgi file (LCTRL+O)");
190 | state->btnLoadFilePressed = GuiButton((Rectangle){ state->anchorFile.x + 12 + 24 + 4, state->anchorFile.y + 8, 24, 24 }, "#5#");
191 | GuiSetTooltip("Save icons .rgi file (LCTRL+S)");
192 | state->btnSaveFilePressed = GuiButton((Rectangle){ state->anchorFile.x + 12 + 48 + 8, state->anchorFile.y + 8, 24, 24 }, "#6#");
193 | GuiSetTooltip("Export icons file (LCTRL+E)");
194 | state->btnExportFilePressed = GuiButton((Rectangle){ state->anchorFile.x + 12 + 72 + 12, state->anchorFile.y + 8, 24, 24 }, "#7#");
195 |
196 | // Edit options
197 | GuiSetTooltip("Cut selected icon (LCTRL+X)");
198 | state->btnCutPressed = GuiButton((Rectangle){ state->anchorEdit.x + 12, state->anchorEdit.y + 8, 24, 24 }, "#17#"); // Cut
199 | GuiSetTooltip("Copy selected icon (LCTRL+C)");
200 | state->btnCopyPressed = GuiButton((Rectangle){ state->anchorEdit.x + 12 + 24 + 4, state->anchorEdit.y + 8, 24, 24 }, "#16#"); // Copy
201 | GuiSetTooltip("Paste icon previously cut/copied (LCTRL+V)");
202 | state->btnPastePressed = GuiButton((Rectangle){ state->anchorEdit.x + 12 + 48 + 8, state->anchorEdit.y + 8, 24, 24 }, "#18#"); // Paste
203 | GuiGroupBox((Rectangle){ state->anchorEdit.x + 12 + 72 + 16, state->anchorEdit.y + 8, 24, 24 }, NULL);
204 | GuiSetTooltip("Clear previously cut/copied icon");
205 | state->btnCleanPressed = GuiButton((Rectangle){ state->anchorEdit.x + 12 + 96 + 24, state->anchorEdit.y + 8, 24, 24 }, "#079#"); // Clean
206 |
207 | // Visuals options
208 | GuiLabel((Rectangle){ state->anchorVisuals.x + 10, state->anchorVisuals.y + 8, 60, 24 }, "Style:");
209 | GuiSetTooltip("Select visual UI style");
210 | GuiSetStyle(COMBOBOX, COMBO_BUTTON_WIDTH, 42);
211 | GuiComboBox((Rectangle){ state->anchorVisuals.x + 8 + 48, state->anchorVisuals.y + 8, 120, 24 }, "Light;Jungle;Candy;Lavanda;Cyber;Terminal;Ashes;Bluish;Dark;Cherry;Sunny;Enefete;Amber;Genesis", &state->visualStyleActive);
212 | GuiSetStyle(COMBOBOX, COMBO_BUTTON_WIDTH, 36);
213 |
214 | // Info options
215 | GuiSetTooltip("Show help window (F1)");
216 | state->btnHelpPressed = GuiButton((Rectangle){ state->anchorRight.x + (screenWidth - state->anchorRight.x) - 12 - 72 - 8, state->anchorRight.y + 8, 24, 24 }, "#221#");
217 | GuiSetTooltip("Show info window (F2)");
218 | state->btnAboutPressed = GuiButton((Rectangle){ state->anchorRight.x + (screenWidth - state->anchorRight.x) - 12 - 48 - 4, state->anchorRight.y + 8, 24, 24 }, "#222#");
219 | GuiSetTooltip("Report an issue (F3)");
220 | state->btnIssuePressed = GuiButton((Rectangle){ state->anchorRight.x + (screenWidth - state->anchorRight.x) - 12 - 24, state->anchorRight.y + 8, 24, 24 }, "#220#");
221 |
222 | GuiSetTooltip(NULL);
223 | }
224 |
225 | #endif // GUI_MAIN_TOOLBAR_IMPLEMENTATION
226 |
--------------------------------------------------------------------------------
/src/gui_window_about.h:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * Window About
4 | *
5 | * NOTES:
6 | * This module is generic for all tools, so, tools info should be customized
7 | * just defining some tool info before including this file:
8 | *
9 | * #define TOOL_NAME "rToolName"
10 | * #define TOOL_SHORT_NAME "rTN"
11 | * #define TOOL_VERSION "1.0"
12 | * #define TOOL_DESCRIPTION "Tool description"
13 | * #define TOOL_RELEASE_DATE "Jan.2022"
14 | * #define TOOL_LOGO_COLOR 0x000000ff
15 | *
16 | * MODULE USAGE:
17 | * #define GUI_WINDOW_ABOUT_IMPLEMENTATION
18 | * #include "gui_window_about.h"
19 | *
20 | * On game init call: GuiWindowAboutState state = InitGuiWindowAbout();
21 | * On game draw call: GuiWindowAbout(&state);
22 | *
23 | *
24 | * LICENSE: zlib/libpng
25 | *
26 | * Copyright (c) 2018-2024 raylib technologies (@raylibtech) / Ramon Santamaria (@raysan5)
27 | *
28 | * This software is provided "as-is", without any express or implied warranty. In no event
29 | * will the authors be held liable for any damages arising from the use of this software.
30 | *
31 | * Permission is granted to anyone to use this software for any purpose, including commercial
32 | * applications, and to alter it and redistribute it freely, subject to the following restrictions:
33 | *
34 | * 1. The origin of this software must not be misrepresented; you must not claim that you
35 | * wrote the original software. If you use this software in a product, an acknowledgment
36 | * in the product documentation would be appreciated but is not required.
37 | *
38 | * 2. Altered source versions must be plainly marked as such, and must not be misrepresented
39 | * as being the original software.
40 | *
41 | * 3. This notice may not be removed or altered from any source distribution.
42 | *
43 | **********************************************************************************************/
44 |
45 | #include "raylib.h"
46 |
47 | // WARNING: raygui implementation is expected to be defined before including this header
48 |
49 | #ifndef GUI_WINDOW_ABOUT_H
50 | #define GUI_WINDOW_ABOUT_H
51 |
52 | //----------------------------------------------------------------------------------
53 | // Defines and Macros
54 | //----------------------------------------------------------------------------------
55 | //...
56 |
57 | //----------------------------------------------------------------------------------
58 | // Types and Structures Definition
59 | //----------------------------------------------------------------------------------
60 | // Gui window structure declaration
61 | typedef struct {
62 | bool windowActive;
63 |
64 | Rectangle windowBounds;
65 | Vector2 panOffset;
66 | bool dragMode;
67 | bool supportDrag;
68 |
69 | } GuiWindowAboutState;
70 |
71 | #ifdef __cplusplus
72 | extern "C" { // Prevents name mangling of functions
73 | #endif
74 |
75 | //----------------------------------------------------------------------------------
76 | // Global Variables Definition
77 | //----------------------------------------------------------------------------------
78 | //...
79 |
80 | //----------------------------------------------------------------------------------
81 | // Module Functions Declaration
82 | //----------------------------------------------------------------------------------
83 | GuiWindowAboutState InitGuiWindowAbout(void);
84 | void GuiWindowAbout(GuiWindowAboutState *state);
85 |
86 | #ifdef __cplusplus
87 | }
88 | #endif
89 |
90 | #endif // GUI_WINDOW_ABOUT_H
91 |
92 | /***********************************************************************************
93 | *
94 | * GUI_WINDOW_ABOUT IMPLEMENTATION
95 | *
96 | ************************************************************************************/
97 |
98 | #if defined(GUI_WINDOW_ABOUT_IMPLEMENTATION)
99 |
100 | #include "raygui.h"
101 |
102 | #include // Required for: ceil()
103 |
104 | //----------------------------------------------------------------------------------
105 | // Defines and Macros
106 | //----------------------------------------------------------------------------------
107 | // The following defines are required to customize the about info,
108 | // they are usually defined externally in the tool code
109 | #if !defined(TOOL_NAME)
110 | #define TOOL_NAME "rTool"
111 | #endif
112 | #if !defined(TOOL_SHORT_NAME)
113 | #define TOOL_SHORT_NAME "rTN"
114 | #endif
115 | #if !defined(TOOL_VERSION)
116 | #define TOOL_VERSION "1.0"
117 | #endif
118 | #if !defined(TOOL_DESCRIPTION)
119 | #define TOOL_DESCRIPTION "A simple and easy-to-use tool to do something"
120 | #endif
121 | #if !defined(TOOL_RELEASE_DATE)
122 | #define TOOL_RELEASE_DATE "Dec.2021"
123 | #endif
124 | #if !defined(TOOL_LOGO_COLOR)
125 | #define TOOL_LOGO_COLOR 0x000000ff
126 | #endif
127 |
128 | #if defined(NO_ALPHA_BLENDING)
129 | #define FADE(c,a) c
130 | #else
131 | #define FADE(c,a) Fade(c,a)
132 | #endif
133 |
134 | //----------------------------------------------------------------------------------
135 | // Types and Structures Definition
136 | //----------------------------------------------------------------------------------
137 | // ...
138 |
139 | //----------------------------------------------------------------------------------
140 | // Global Variables Definition
141 | //----------------------------------------------------------------------------------
142 | static const char *lblUsedLibsText = "Powered by:";
143 | static const char *linkraylibText = "www.raylib.com";
144 | static const char *linkGitraylibText = "github.com/raysan5/raylib";
145 | static const char *linkGitrayguiText = "github.com/raysan5/raygui";
146 | static const char *lblCopyrightText = "Copyright (c) 2023 raylib technologies.";
147 | static const char *linkraylibtechText = "[@raylibtech]";
148 | static const char *lblMoreInfoText = "More info:";
149 | static const char *linkMailText = "ray@raylibtech.com";
150 | static const char *lblSupportText = "Support:";
151 | static const char *btnSponsorText = "#146#Sponsor";
152 | static const char *btnCloseText = "#159#Close";
153 |
154 | //----------------------------------------------------------------------------------
155 | // Internal Module Functions Definition
156 | //----------------------------------------------------------------------------------
157 | // Draw rTool generated icon
158 | static void DrawTechIcon(int posX, int posY, int size, const char *text, int textSize, bool corner, Color color)
159 | {
160 | float borderSize = ceilf((float)size/16.0f);
161 | bool offsetY = true;
162 |
163 | // Make sure there is no character with pixels down the text baseline for a perfect y-aligned icon
164 | for (int i = 0; text[i] != '\0'; i++) if ((text[i] == 'q') || (text[i] == 'y') || (text[i] == 'p') || (text[i] == 'j') || (text[i] == 'g')) { offsetY = false; break; }
165 |
166 | int textPosX = posX + size - (int)(2.0f*borderSize) - MeasureText(text, textSize);
167 | int textPosY = posY + size - (int)(2.0f*borderSize) - textSize + (offsetY? (2*textSize/10) : 0);
168 |
169 | DrawRectangle(posX - 1, posY - 1, size + 2, size + 2, GetColor(GuiGetStyle(DEFAULT, LINE_COLOR)));
170 | DrawRectangle(posX, posY, size, size, RAYWHITE);
171 | DrawRectangleLinesEx((Rectangle){ (float)posX, (float)posY, (float)size, (float)size }, borderSize, color);
172 | DrawText(text, textPosX, textPosY, textSize, color);
173 |
174 | if (corner)
175 | {
176 | DrawTriangle((Vector2){ (float)posX + (float)size - 2*borderSize - (float)size/4, (float)posY + 2*borderSize },
177 | (Vector2){ (float)posX + (float)size - 2*borderSize, (float)posY + 2*borderSize + (float)size/4 },
178 | (Vector2){ (float)posX + (float)size - 2*borderSize, (float)posY + 2*borderSize }, color);
179 | }
180 | }
181 |
182 | //----------------------------------------------------------------------------------
183 | // Module Functions Definition
184 | //----------------------------------------------------------------------------------
185 |
186 | // Init Window About
187 | GuiWindowAboutState InitGuiWindowAbout(void)
188 | {
189 | GuiWindowAboutState state = { 0 };
190 |
191 | state.windowActive = false;
192 |
193 | state.windowBounds = (Rectangle){ GetScreenWidth()/2 - 360/2, GetScreenHeight()/2 - 340/2, 360, 340 };
194 | state.panOffset = (Vector2){ 0, 0 };
195 | state.dragMode = false;
196 | state.supportDrag = false;
197 |
198 | return state;
199 | }
200 |
201 | // Gui about window
202 | void GuiWindowAbout(GuiWindowAboutState *state)
203 | {
204 | if (state->windowActive)
205 | {
206 | // Update window dragging
207 | //----------------------------------------------------------------------------------------
208 | if (state->supportDrag)
209 | {
210 | Vector2 mousePosition = GetMousePosition();
211 |
212 | if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
213 | {
214 | // Window can be dragged from the top window bar
215 | if (CheckCollisionPointRec(mousePosition, (Rectangle){ state->windowBounds.x, state->windowBounds.y, (float)state->windowBounds.width, RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }))
216 | {
217 | state->dragMode = true;
218 | state->panOffset.x = mousePosition.x - state->windowBounds.x;
219 | state->panOffset.y = mousePosition.y - state->windowBounds.y;
220 | }
221 | }
222 |
223 | if (state->dragMode)
224 | {
225 | state->windowBounds.x = (mousePosition.x - state->panOffset.x);
226 | state->windowBounds.y = (mousePosition.y - state->panOffset.y);
227 |
228 | // Check screen limits to avoid moving out of screen
229 | if (state->windowBounds.x < 0) state->windowBounds.x = 0;
230 | else if (state->windowBounds.x > (GetScreenWidth() - state->windowBounds.width)) state->windowBounds.x = GetScreenWidth() - state->windowBounds.width;
231 |
232 | if (state->windowBounds.y < 40) state->windowBounds.y = 40;
233 | else if (state->windowBounds.y > (GetScreenHeight() - state->windowBounds.height - 24)) state->windowBounds.y = GetScreenHeight() - state->windowBounds.height - 24;
234 |
235 | if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) state->dragMode = false;
236 | }
237 | }
238 | //----------------------------------------------------------------------------------------
239 |
240 | // Draw window and controls
241 | //----------------------------------------------------------------------------------------
242 | state->windowActive = !GuiWindowBox(state->windowBounds, TextFormat("#191#About %s", TOOL_NAME));
243 |
244 | int labelTextAlign = GuiGetStyle(LABEL, TEXT_ALIGNMENT);
245 | GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT);
246 | DrawTechIcon((int)state->windowBounds.x + 10, (int)state->windowBounds.y + 35, 64, TOOL_SHORT_NAME, 20, true, GetColor(TOOL_LOGO_COLOR));
247 |
248 | bool singleLine = false;
249 | GuiLabel((Rectangle){ state->windowBounds.x + 85, state->windowBounds.y + (singleLine? 55 : 35), 200, 30 }, TextFormat("%s %s (%s)", TOOL_NAME, TOOL_VERSION, TOOL_RELEASE_DATE));
250 | GuiLabel((Rectangle){ state->windowBounds.x + 85, state->windowBounds.y + (singleLine? 78 : 64), (float)state->windowBounds.width, 40 }, singleLine? TOOL_DESCRIPTION : TOOL_DESCRIPTION_BREAK);
251 |
252 | // Draw a background rectangle for convenience
253 | DrawRectangle((int)state->windowBounds.x + 1, (int)state->windowBounds.y + 110, state->windowBounds.width - 2, 100, FADE(GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_NORMAL)), 0.5f));
254 |
255 | GuiLine((Rectangle){ state->windowBounds.x, state->windowBounds.y + 100, (float)state->windowBounds.width, 20 }, NULL);
256 | GuiLabel((Rectangle){ state->windowBounds.x + 8, state->windowBounds.y + 112, 126, 24 }, lblUsedLibsText);
257 |
258 | DrawTechIcon((int)state->windowBounds.x + 10, (int)state->windowBounds.y + 135, 64, "raylib", 10, false, BLACK);
259 | DrawTechIcon((int)state->windowBounds.x + 80, (int)state->windowBounds.y + 135, 64, "raygui", 10, false, GRAY);
260 |
261 | if (GuiLabelButton((Rectangle){ state->windowBounds.x + 155, state->windowBounds.y + 135, 80, 16 }, linkraylibText)) { OpenURL("https://www.raylib.com/"); }
262 | if (GuiLabelButton((Rectangle){ state->windowBounds.x + 155, state->windowBounds.y + 160, 180, 16 }, linkGitraylibText)) { OpenURL("https://github.com/raysan5/raylib"); }
263 | if (GuiLabelButton((Rectangle){ state->windowBounds.x + 155, state->windowBounds.y + 180, 180, 16 }, linkGitrayguiText)) { OpenURL("https://github.com/raysan5/raygui"); }
264 |
265 | GuiLine((Rectangle){ state->windowBounds.x, state->windowBounds.y + 200, (float)state->windowBounds.width, 20 }, NULL);
266 |
267 | GuiLabel((Rectangle){ state->windowBounds.x + 10, state->windowBounds.y + 220, 289, 20 }, lblCopyrightText);
268 | GuiLabel((Rectangle){ state->windowBounds.x + 10, state->windowBounds.y + 250, 65, 16 }, lblMoreInfoText);
269 |
270 | float linkMailTextWidth = MeasureTextEx(GuiGetFont(), linkMailText, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING)).x;
271 | if (GuiLabelButton((Rectangle){ state->windowBounds.x + 90, state->windowBounds.y + 250, 165, 16 }, TextFormat("www.raylibtech.com/%s", TextToLower(TOOL_NAME)))) { OpenURL("https://www.raylibtech.com/"); }
272 | if (GuiLabelButton((Rectangle){ state->windowBounds.x + 90, state->windowBounds.y + 270, linkMailTextWidth, 16 }, linkMailText)) { OpenURL("mailto:ray@raylibtech.com"); }
273 | if (GuiLabelButton((Rectangle){ state->windowBounds.x + 90 + linkMailTextWidth + 4, state->windowBounds.y + 270, MeasureTextEx(GuiGetFont(), linkraylibtechText, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING)).x, 16 }, linkraylibtechText)) { OpenURL("https://twitter.com/raylibtech"); }
274 |
275 | GuiLabel((Rectangle){ state->windowBounds.x + 10, state->windowBounds.y + 270, 65, 16 }, lblSupportText);
276 | GuiLine((Rectangle){ state->windowBounds.x, state->windowBounds.y + 285, (float)state->windowBounds.width, 20 }, NULL);
277 | GuiSetStyle(LABEL, TEXT_ALIGNMENT, labelTextAlign);
278 |
279 | DrawRectangle((int)state->windowBounds.x + 1, (int)state->windowBounds.y + 285 + 11, (int)state->windowBounds.width - 2, 43, FADE(GetColor(GuiGetStyle(DEFAULT, BASE_COLOR_NORMAL)), 0.5f));
280 |
281 | int buttonTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT);
282 | GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER);
283 |
284 | if (GuiButton((Rectangle){ state->windowBounds.x + state->windowBounds.width - 80 - 90, state->windowBounds.y + 305, 80, 24 }, btnSponsorText)) { OpenURL("https://github.com/sponsors/raysan5"); }
285 | if (GuiButton((Rectangle){ state->windowBounds.x + state->windowBounds.width - 80, state->windowBounds.y + 305, 70, 24 }, btnCloseText)) state->windowActive = false;
286 | GuiSetStyle(BUTTON, TEXT_ALIGNMENT, buttonTextAlign);
287 | //----------------------------------------------------------------------------------------
288 | }
289 | else state->windowBounds = (Rectangle){ GetScreenWidth()/2 - state->windowBounds.width/2, GetScreenHeight()/2 - state->windowBounds.height/2, state->windowBounds.width, state->windowBounds.height };
290 | }
291 |
292 | #endif // GUI_WINDOW_ABOUT_IMPLEMENTATION
--------------------------------------------------------------------------------
/src/gui_window_help.h:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * Window Help
4 | *
5 | * MODULE USAGE:
6 | * #define GUI_WINDOW_HELP_IMPLEMENTATION
7 | * #include "gui_window_help.h"
8 | *
9 | * On game init call: GuiWindowHelpState state = InitGuiWindowHelp();
10 | * On game draw call: GuiWindowHelp(&state);
11 | *
12 | *
13 | * LICENSE: zlib/libpng
14 | *
15 | * Copyright (c) 2022-2024 raylib technologies (@raylibtech) / Ramon Santamaria (@raysan5)
16 | *
17 | * This software is provided "as-is", without any express or implied warranty. In no event
18 | * will the authors be held liable for any damages arising from the use of this software.
19 | *
20 | * Permission is granted to anyone to use this software for any purpose, including commercial
21 | * applications, and to alter it and redistribute it freely, subject to the following restrictions:
22 | *
23 | * 1. The origin of this software must not be misrepresented; you must not claim that you
24 | * wrote the original software. If you use this software in a product, an acknowledgment
25 | * in the product documentation would be appreciated but is not required.
26 | *
27 | * 2. Altered source versions must be plainly marked as such, and must not be misrepresented
28 | * as being the original software.
29 | *
30 | * 3. This notice may not be removed or altered from any source distribution.
31 | *
32 | **********************************************************************************************/
33 |
34 | #include "raylib.h"
35 |
36 | // WARNING: raygui implementation is expected to be defined before including this header
37 |
38 | #ifndef GUI_WINDOW_HELP_H
39 | #define GUI_WINDOW_HELP_H
40 |
41 | //----------------------------------------------------------------------------------
42 | // Defines and Macros
43 | //----------------------------------------------------------------------------------
44 | //...
45 |
46 | //----------------------------------------------------------------------------------
47 | // Types and Structures Definition
48 | //----------------------------------------------------------------------------------
49 | // Gui window structure declaration
50 | typedef struct {
51 | bool windowActive;
52 |
53 | Rectangle windowBounds;
54 | Vector2 panOffset;
55 | bool dragMode;
56 | bool supportDrag;
57 |
58 | int contentHeight;
59 | Vector2 scrollPanelOffset;
60 |
61 | } GuiWindowHelpState;
62 |
63 | #ifdef __cplusplus
64 | extern "C" { // Prevents name mangling of functions
65 | #endif
66 |
67 | //----------------------------------------------------------------------------------
68 | // Global Variables Definition
69 | //----------------------------------------------------------------------------------
70 | //...
71 |
72 | //----------------------------------------------------------------------------------
73 | // Module Functions Declaration
74 | //----------------------------------------------------------------------------------
75 | GuiWindowHelpState InitGuiWindowHelp(void);
76 | void GuiWindowHelp(GuiWindowHelpState *state);
77 |
78 | #ifdef __cplusplus
79 | }
80 | #endif
81 |
82 | #endif // GUI_WINDOW_HELP_H
83 |
84 | /***********************************************************************************
85 | *
86 | * GUI_WINDOW_HELP IMPLEMENTATION
87 | *
88 | ************************************************************************************/
89 |
90 | #if defined(GUI_WINDOW_HELP_IMPLEMENTATION)
91 |
92 | #include "raygui.h"
93 |
94 | //----------------------------------------------------------------------------------
95 | // Defines and Macros
96 | //----------------------------------------------------------------------------------
97 | #define GUIHELPWINDOW_MAX_LINES 128
98 |
99 | #define GUIHELPWINDOW_LINE_HEIGHT 24
100 | #define GUIHELPWINDOW_LINE_EMPTY_HEIGHT 12
101 |
102 | //----------------------------------------------------------------------------------
103 | // Types and Structures Definition
104 | //----------------------------------------------------------------------------------
105 | // ...
106 |
107 | //----------------------------------------------------------------------------------
108 | // Global Variables Definition
109 | //----------------------------------------------------------------------------------
110 | // Tool help info
111 | static const char *helpLines[] = {
112 | "F1 - Show Help window",
113 | "F2 - Show About window",
114 | "F3 - Show Issue Report window",
115 | //"F4 - Show User window",
116 | "-File Controls",
117 | "LCTRL + N - New iconset file (.rgi)",
118 | "LCTRL + O - Open iconset file (.rgi)",
119 | "LCTRL + S - Save iconset file (.rgi)",
120 | "LCTRL + E - Export iconset file",
121 | "-Tool Controls",
122 | "LCTRL + X,C,V - Cut, copy, paste icon",
123 | "LCTRL + Z,Y - Undo/Redo icon edition",
124 | "DEL - Clean current selected icon",
125 | "-Tool Visuals",
126 | "LEFT | RIGHT - Select style template",
127 | "LCTRL + F - Toggle double screen size",
128 | "-",
129 | "ESCAPE - Close Window/Exit",
130 | NULL
131 | };
132 |
133 | //----------------------------------------------------------------------------------
134 | // Module Functions Definition
135 | //----------------------------------------------------------------------------------
136 | // Init window Help
137 | GuiWindowHelpState InitGuiWindowHelp(void)
138 | {
139 | GuiWindowHelpState state = { 0 };
140 |
141 | state.windowActive = false;
142 | state.supportDrag = false;
143 |
144 | state.windowBounds = (Rectangle){ (float)GetScreenWidth()/2 - 360/2, 0, 360, 0 };
145 | state.panOffset = (Vector2){ 0, 0 };
146 | state.dragMode = false;
147 |
148 | // Calculate content height
149 | state.contentHeight = 0;
150 | for (int i = 0; i < GUIHELPWINDOW_MAX_LINES; i++)
151 | {
152 | if (helpLines[i] == NULL) break;
153 | else if ((helpLines[i][0] == '-') && (helpLines[i][1] == '\0')) state.contentHeight += GUIHELPWINDOW_LINE_EMPTY_HEIGHT;
154 | else state.contentHeight += GUIHELPWINDOW_LINE_HEIGHT;
155 | }
156 | state.contentHeight += 8; // Marging at the end
157 |
158 | // Calculate window height if not specifically defined
159 | if (state.windowBounds.height == 0) state.windowBounds.height = (float)(state.contentHeight + 24 + 4);
160 | state.windowBounds.y = GetScreenHeight()/2 - state.windowBounds.height/2;
161 |
162 | // Review size if it does not fit on the screen
163 | if (state.windowBounds.height > (GetScreenHeight() - 80))
164 | {
165 | state.windowBounds.height = (float)GetScreenHeight() - 80;
166 | state.windowBounds.y = GetScreenHeight()/2 - state.windowBounds.height/2;
167 | }
168 |
169 | // Init scroll offset
170 | state.scrollPanelOffset = (Vector2){ 0, 0 };
171 |
172 | return state;
173 | }
174 |
175 | // Gui window help
176 | void GuiWindowHelp(GuiWindowHelpState *state)
177 | {
178 | if (state->windowActive)
179 | {
180 | // Update window dragging
181 | //----------------------------------------------------------------------------------------
182 | if (state->supportDrag)
183 | {
184 | Vector2 mousePosition = GetMousePosition();
185 |
186 | if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
187 | {
188 | // Window can be dragged from the top window bar
189 | if (CheckCollisionPointRec(mousePosition, (Rectangle){ state->windowBounds.x, state->windowBounds.y, state->windowBounds.width, RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }))
190 | {
191 | state->dragMode = true;
192 | state->panOffset.x = mousePosition.x - state->windowBounds.x;
193 | state->panOffset.y = mousePosition.y - state->windowBounds.y;
194 | }
195 | }
196 |
197 | if (state->dragMode)
198 | {
199 | state->windowBounds.x = (mousePosition.x - state->panOffset.x);
200 | state->windowBounds.y = (mousePosition.y - state->panOffset.y);
201 |
202 | // Check screen limits to avoid moving out of screen
203 | if (state->windowBounds.x < 0) state->windowBounds.x = 0;
204 | else if (state->windowBounds.x > (GetScreenWidth() - state->windowBounds.width)) state->windowBounds.x = GetScreenWidth() - state->windowBounds.width;
205 |
206 | if (state->windowBounds.y < 40) state->windowBounds.y = 40;
207 | else if (state->windowBounds.y > (GetScreenHeight() - state->windowBounds.height - 24)) state->windowBounds.y = GetScreenHeight() - state->windowBounds.height - 24;
208 |
209 | if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) state->dragMode = false;
210 | }
211 | }
212 | //----------------------------------------------------------------------------------------
213 |
214 | // Update window bounds and size: center to screen and allow scrolling
215 | //----------------------------------------------------------------------------------------
216 | state->windowBounds.x = GetScreenWidth()/2 - state->windowBounds.width/2;
217 | state->windowBounds.height = (float)(state->contentHeight + 24 + 4);
218 | state->windowBounds.y = GetScreenHeight()/2 - state->windowBounds.height/2;
219 |
220 | // Review size if it does not fit on the screen
221 | if (state->windowBounds.height > (GetScreenHeight() - 80))
222 | {
223 | state->windowBounds.height = (float)GetScreenHeight() - 80;
224 | state->windowBounds.y = GetScreenHeight()/2 - state->windowBounds.height/2;
225 | }
226 | //----------------------------------------------------------------------------------------
227 |
228 | // Draw window and controls
229 | //----------------------------------------------------------------------------------------
230 | state->windowActive = !GuiWindowBox(state->windowBounds, TextFormat("#193#%s Help", TOOL_NAME));
231 |
232 | int nextLineY = (GUIHELPWINDOW_LINE_HEIGHT + 4);
233 |
234 | // Draw scroll panel considering window bounds and content size (only if required)
235 | Rectangle scissor = { 0 };
236 | if (state->contentHeight > (state->windowBounds.height - 24))
237 | {
238 | GuiScrollPanel((Rectangle){ state->windowBounds.x, state->windowBounds.y + GUIHELPWINDOW_LINE_HEIGHT - 1, state->windowBounds.width, state->windowBounds.height - 24 + 1 }, NULL,
239 | (Rectangle){ state->windowBounds.x, state->windowBounds.y + GUIHELPWINDOW_LINE_HEIGHT, state->windowBounds.width - 16, (float)state->contentHeight }, &state->scrollPanelOffset, &scissor);
240 | }
241 |
242 | // Draw help info and separation lines
243 | // WARNING: We only scissor if scrolling is required, scissor mode forces a new draw call
244 | if (state->contentHeight > (state->windowBounds.height - 24)) BeginScissorMode((int)scissor.x, (int)scissor.y, (int)scissor.width + 2, (int)scissor.height);
245 |
246 | for (int i = 0; i < GUIHELPWINDOW_MAX_LINES; i++)
247 | {
248 | if (helpLines[i] == NULL) break;
249 | else if ((helpLines[i][0] == '-') && (helpLines[i][1] == '\0')) GuiLine((Rectangle){ state->windowBounds.x, state->windowBounds.y + nextLineY + state->scrollPanelOffset.y, state->windowBounds.width, GUIHELPWINDOW_LINE_EMPTY_HEIGHT }, NULL);
250 | else if (helpLines[i][0] == '-') GuiLine((Rectangle){ state->windowBounds.x, state->windowBounds.y + nextLineY + state->scrollPanelOffset.y, state->windowBounds.width, GUIHELPWINDOW_LINE_HEIGHT }, helpLines[i] + 1);
251 | else GuiLabel((Rectangle){ state->windowBounds.x + 12, state->windowBounds.y + nextLineY + state->scrollPanelOffset.y, state->windowBounds.width, GUIHELPWINDOW_LINE_HEIGHT }, helpLines[i]);
252 |
253 | if ((helpLines[i][0] == '-') && (helpLines[i][1] == '\0')) nextLineY += GUIHELPWINDOW_LINE_EMPTY_HEIGHT;
254 | else nextLineY += GUIHELPWINDOW_LINE_HEIGHT;
255 | }
256 |
257 | if (state->contentHeight > (state->windowBounds.height - 24)) EndScissorMode();
258 | }
259 | }
260 |
261 | #endif // GUI_WINDOW_HELP_IMPLEMENTATION
--------------------------------------------------------------------------------
/src/layouts/rguiicons_v050.rgl:
--------------------------------------------------------------------------------
1 | #
2 | # rgl text file (v2.0) - raygui layout text file generated using rGuiLayout
3 | #
4 | # Total number of controls: 22
5 | # Ref. window: r
6 | # Anchor info: a
7 | # Control info: c
8 | #
9 | r 0 0 -1 -1
10 | a 000 anchorMain 0 0 0
11 | a 001 anchor01 0 0 0
12 | a 002 anchor02 0 0 0
13 | a 003 anchor03 0 0 0
14 | a 004 anchor04 0 0 0
15 | a 005 anchor05 0 0 0
16 | a 006 anchor06 0 0 0
17 | a 007 anchor07 0 0 0
18 | c 000 3 Panel021 50 50 320 45 0
19 | c 001 5 Button000 60 60 25 25 0 o
20 | c 002 5 Button001 90 60 25 25 0 o
21 | c 003 5 Button002 150 60 25 25 0 o
22 | c 004 5 Button003 180 60 25 25 0 o
23 | c 005 5 Button004 210 60 25 25 0 o
24 | c 006 4 Label006 60 105 140 25 0 Choose rIcon for Edit:
25 | c 007 11 ComboBox007 235 105 125 25 0 ONE;TWO;THREE
26 | c 008 24 MessageBox008 50 135 320 180 0 SAMPLE TEXT
27 | c 009 14 TextmultiBox009 65 325 225 30 0 SAMPLE TEXT
28 | c 010 5 Button010 295 325 30 30 0 o
29 | c 011 24 MessageBox011 65 365 260 260 0 SAMPLE TEXT
30 | c 012 5 Button012 335 365 25 25 0 o
31 | c 013 5 Button013 335 395 25 25 0 o
32 | c 014 5 Button014 335 450 25 25 0 o
33 | c 015 5 Button015 335 480 25 25 0 o
34 | c 016 5 Button016 335 540 25 25 0 o
35 | c 017 5 Button017 335 570 25 25 0 o
36 | c 018 5 Button018 335 60 25 25 0 o
37 | c 019 5 Button019 305 60 25 25 0 o
38 | c 020 20 StatusBar020 50 640 320 25 0 SAMPLE TEXT
39 | c 021 5 Button021 335 600 25 25 0 o
40 |
--------------------------------------------------------------------------------
/src/layouts/rguiicons_v100.rgl:
--------------------------------------------------------------------------------
1 | #
2 | # rgl layout text file (v2.1) - raygui layout file generated using rGuiLayout
3 | #
4 | # Number of controls: 20
5 | #
6 | # Ref. window: r
7 | # Anchor info: a
8 | # Control info: c
9 | #
10 | r 0 0 -1 -1
11 | a 000 anchorMain 0 0 0
12 | a 001 anchor01 50 50 1
13 | a 002 anchor02 0 0 0
14 | a 003 anchor03 0 0 0
15 | a 004 anchor04 0 0 0
16 | a 005 anchor05 0 0 0
17 | a 006 anchor06 0 0 0
18 | a 007 anchor07 0 0 0
19 | c 000 3 mainPanel 0 0 640 45 1
20 | c 001 5 btnLoad 10 10 25 25 1 #01#
21 | c 002 5 btnSave 40 10 25 25 1 #02#
22 | c 003 5 btnExport 70 10 25 25 1 #07#
23 | c 004 5 btnCopy 115 10 25 25 1 #16#
24 | c 005 5 btnCut 145 10 25 25 1 #17#
25 | c 006 5 btnPaste 175 10 25 25 1 #18#
26 | c 007 5 btnAbout 260 10 75 25 1 #191#ABOUT
27 | c 008 4 lblChooseIcon 15 45 140 25 1 Choose rIcon for Edit:
28 | c 009 24 dummy01 15 65 320 320 1 rIcons File
29 | c 010 11 fileType 15 400 160 25 1 rIcons FIle (.rgi);rIcons Image (.png);rIcons Code (.h)
30 | c 011 5 btnExport 185 400 150 25 1 #07#Export rIcons
31 | c 012 4 lblIconNameId 365 45 126 25 1 rIcon Name ID:
32 | c 013 13 iconNameId 365 65 260 25 1 SAMPLE TEXT
33 | c 014 18 zoom 410 110 180 10 1 ZOOM:
34 | c 015 24 dummy02 367 126 260 260 1 rIcon Edit
35 | c 016 5 btnSaveIcon 440 400 100 25 1 #012#Save Image
36 | c 017 5 btnClearIcon 545 400 80 25 1 #079#Clear
37 | c 018 20 statusFile 0 435 350 25 1 TOTAL FILE ICONS: 0/0
38 | c 019 20 statusSelected 350 435 290 25 1 SELECTED: 0/0 - NAME_ID
39 |
--------------------------------------------------------------------------------
/src/minshell.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | rGuiIcons | A simple and easy-to-use raygui icons editor
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
43 |
44 |
61 |
62 |
63 |
64 |
65 |
85 | {{{ SCRIPT }}}
86 |
87 |
88 |
--------------------------------------------------------------------------------
/src/rguiicons.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/src/rguiicons.ico
--------------------------------------------------------------------------------
/src/rguiicons.rc:
--------------------------------------------------------------------------------
1 | GLFW_ICON ICON "rguiicons.ico"
2 | 1 VERSIONINFO
3 | FILEVERSION 3,1,0,0
4 | PRODUCTVERSION 3,1,0,0
5 | BEGIN
6 | BLOCK "StringFileInfo"
7 | BEGIN
8 | BLOCK "040904E4" // English US
9 | BEGIN
10 | VALUE "CompanyName", "raylib technologies"
11 | VALUE "FileDescription", "rGuiIcons | A simple and easy-to-use raygui icons editor"
12 | VALUE "FileVersion", "3.1"
13 | VALUE "InternalName", "rguiicons"
14 | VALUE "LegalCopyright", "(c) 2025 raylib technologies (@raylibtech)"
15 | VALUE "OriginalFilename", "rguiicons"
16 | VALUE "ProductName", "rGuiIcons"
17 | VALUE "ProductVersion", "3.1"
18 | END
19 | END
20 | BLOCK "VarFileInfo"
21 | BEGIN
22 | VALUE "Translation", 0x409, 1252 // English US
23 | END
24 | END
25 |
--------------------------------------------------------------------------------
/src/rguiicons.rc.data:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raysan5/rguiicons/966cd43d28c47245bb1717e0348684c09ffdf34e/src/rguiicons.rc.data
--------------------------------------------------------------------------------
/src/styles/style_jungle.h:
--------------------------------------------------------------------------------
1 | //////////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // StyleAsCode exporter v2.0 - Style data exported as a values array //
4 | // //
5 | // USAGE: On init call: GuiLoadStyleJungle(); //
6 | // //
7 | // more info and bugs-report: github.com/raysan5/raygui //
8 | // feedback and support: ray[at]raylibtech.com //
9 | // //
10 | // Copyright (c) 2020-2024 raylib technologies (@raylibtech) //
11 | // //
12 | //////////////////////////////////////////////////////////////////////////////////
13 |
14 | #define JUNGLE_STYLE_PROPS_COUNT 17
15 |
16 | // Custom style name: Jungle
17 | static const GuiStyleProp jungleStyleProps[JUNGLE_STYLE_PROPS_COUNT] = {
18 | { 0, 0, 0x60827dff }, // DEFAULT_BORDER_COLOR_NORMAL
19 | { 0, 1, 0x2c3334ff }, // DEFAULT_BASE_COLOR_NORMAL
20 | { 0, 2, 0x82a29fff }, // DEFAULT_TEXT_COLOR_NORMAL
21 | { 0, 3, 0x5f9aa8ff }, // DEFAULT_BORDER_COLOR_FOCUSED
22 | { 0, 4, 0x334e57ff }, // DEFAULT_BASE_COLOR_FOCUSED
23 | { 0, 5, 0x6aa9b8ff }, // DEFAULT_TEXT_COLOR_FOCUSED
24 | { 0, 6, 0xa9cb8dff }, // DEFAULT_BORDER_COLOR_PRESSED
25 | { 0, 7, 0x3b6357ff }, // DEFAULT_BASE_COLOR_PRESSED
26 | { 0, 8, 0x97af81ff }, // DEFAULT_TEXT_COLOR_PRESSED
27 | { 0, 9, 0x5b6462ff }, // DEFAULT_BORDER_COLOR_DISABLED
28 | { 0, 10, 0x2c3334ff }, // DEFAULT_BASE_COLOR_DISABLED
29 | { 0, 11, 0x666b69ff }, // DEFAULT_TEXT_COLOR_DISABLED
30 | { 0, 16, 0x0000000c }, // DEFAULT_TEXT_SIZE
31 | { 0, 17, 0x00000000 }, // DEFAULT_TEXT_SPACING
32 | { 0, 18, 0x638465ff }, // DEFAULT_LINE_COLOR
33 | { 0, 19, 0x2b3a3aff }, // DEFAULT_BACKGROUND_COLOR
34 | { 0, 20, 0x00000012 }, // DEFAULT_TEXT_LINE_SPACING
35 | };
36 |
37 | // WARNING: This style uses a custom font: "Pixel Intv.otf" (size: 12, spacing: 0)
38 |
39 | #define JUNGLE_STYLE_FONT_ATLAS_COMP_SIZE 2030
40 |
41 | // Font atlas image pixels data: DEFLATE compressed
42 | static unsigned char jungleFontData[JUNGLE_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed,
43 | 0x9d, 0x3d, 0x8e, 0x25, 0x35, 0x14, 0x85, 0x8d, 0xe9, 0x8c, 0x10, 0x11, 0x80, 0x84, 0x20, 0x41, 0x22, 0x21, 0x61, 0x34,
44 | 0x12, 0x64, 0xb3, 0x00, 0x62, 0x84, 0x08, 0x10, 0x11, 0x09, 0xb0, 0x07, 0x66, 0x65, 0x93, 0x90, 0xb3, 0x01, 0x76, 0xc1,
45 | 0x02, 0x2e, 0x9a, 0xbf, 0x9e, 0x9f, 0xae, 0xb2, 0x7d, 0x8f, 0xaf, 0xcb, 0xae, 0x7a, 0x5f, 0x7f, 0x9a, 0xd1, 0xcc, 0xf3,
46 | 0x73, 0x95, 0xcb, 0xc7, 0xd7, 0x55, 0xaf, 0x7d, 0xde, 0xb5, 0x25, 0x00, 0x00, 0x00, 0x80, 0x07, 0x3c, 0xff, 0xd9, 0x7e,
47 | 0x6d, 0xab, 0x24, 0xbd, 0x2a, 0x69, 0x3f, 0xd6, 0xeb, 0xd7, 0x5f, 0x96, 0xe4, 0xdd, 0x77, 0x6c, 0x1f, 0x31, 0xef, 0xb4,
48 | 0x61, 0xaf, 0xd5, 0xfb, 0x2d, 0x4b, 0xae, 0x92, 0xfd, 0xe3, 0xef, 0xf7, 0x57, 0x72, 0x5c, 0xc3, 0xbb, 0x3f, 0xc9, 0x71,
49 | 0x2d, 0xe5, 0x7a, 0xa3, 0xf5, 0x2f, 0xf7, 0xc1, 0x7e, 0xd9, 0xcb, 0x3f, 0xcf, 0x7b, 0x22, 0x3b, 0x8e, 0xb9, 0xff, 0xfe,
50 | 0xe4, 0x1a, 0x81, 0xfe, 0x91, 0xe1, 0xeb, 0xdd, 0xd2, 0xbb, 0x6b, 0xd7, 0x60, 0xce, 0x16, 0xbc, 0x7e, 0x7d, 0xa4, 0xfe,
51 | 0xe9, 0xfe, 0x1c, 0xed, 0xf1, 0x5f, 0x53, 0xc5, 0xec, 0x6e, 0xb3, 0x27, 0x52, 0x51, 0x9b, 0x2c, 0x9c, 0x29, 0x62, 0x34,
52 | 0xa7, 0xa0, 0xde, 0xcd, 0xc5, 0x6b, 0x30, 0x41, 0x7f, 0x6d, 0x84, 0x46, 0x1d, 0x47, 0x8b, 0xff, 0xe7, 0xdc, 0xbd, 0x18,
53 | 0x01, 0xe5, 0xa3, 0xf6, 0xb7, 0x38, 0x2a, 0xfe, 0xd3, 0x50, 0xf5, 0x7b, 0xf4, 0x3f, 0x62, 0xfe, 0x2f, 0xbf, 0xbf, 0xdc,
54 | 0x67, 0xdb, 0xc7, 0xcb, 0xaf, 0xe2, 0xdf, 0x7f, 0xf7, 0x8c, 0xd0, 0xdf, 0x7f, 0xff, 0x1f, 0xab, 0x7e, 0xc4, 0xfc, 0xbf,
55 | 0xe2, 0x73, 0x64, 0xed, 0x3e, 0xbe, 0x3d, 0x76, 0x6c, 0x78, 0xfc, 0xcf, 0xa0, 0xa4, 0x7e, 0xed, 0xf9, 0xcf, 0x3a, 0xe6,
56 | 0xd9, 0xd1, 0xf1, 0xaf, 0x1c, 0xeb, 0x75, 0x4f, 0x98, 0x10, 0x9f, 0x67, 0xd5, 0xbf, 0xa4, 0x3e, 0x44, 0xcc, 0x35, 0x9e,
57 | 0xbb, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x35, 0x57, 0x4c, 0xca, 0xeb, 0xef,
58 | 0x91, 0x2b, 0x91, 0xa3, 0xca, 0xda, 0xdd, 0x06, 0x1e, 0xe7, 0x4a, 0x16, 0x7a, 0x6c, 0x56, 0xbf, 0x8c, 0x72, 0xfb, 0x25,
59 | 0xb7, 0x37, 0xa3, 0xa5, 0x35, 0xea, 0xf9, 0x7a, 0xf4, 0xcf, 0xce, 0xb5, 0xd7, 0xb2, 0x43, 0x6f, 0xcf, 0xcf, 0xb8, 0xbf,
60 | 0x72, 0xdd, 0x7b, 0x7d, 0xde, 0x32, 0xdf, 0x0c, 0x90, 0x0e, 0x89, 0xff, 0x36, 0x0f, 0xd3, 0x18, 0x77, 0xe3, 0xb6, 0xcf,
61 | 0xac, 0xd4, 0xd6, 0x3b, 0xb7, 0xa3, 0xf0, 0xcd, 0x6a, 0xf3, 0xd8, 0xf1, 0x1d, 0xed, 0xfa, 0x54, 0x1d, 0x25, 0xca, 0x98,
62 | 0x54, 0x1c, 0xac, 0x11, 0xf3, 0x7f, 0x4c, 0xfc, 0x97, 0xc6, 0xa9, 0xbd, 0xf7, 0x27, 0x66, 0x1e, 0x9f, 0xa5, 0xff, 0x88,
63 | 0xb9, 0x3a, 0x35, 0xcc, 0x0a, 0x6a, 0x5b, 0xb4, 0xfb, 0xbf, 0xe2, 0xd4, 0x29, 0xb9, 0x95, 0xf4, 0xe7, 0xa9, 0x19, 0xf1,
64 | 0xdf, 0x13, 0xe3, 0xda, 0xfc, 0x5f, 0xd6, 0x3f, 0xce, 0xdd, 0x66, 0x53, 0x9e, 0xa6, 0x5b, 0x62, 0x6c, 0xad, 0xfb, 0x3f,
65 | 0x44, 0xfa, 0x19, 0xe7, 0x7d, 0x9e, 0x42, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66 | 0x18, 0xeb, 0xc7, 0x3b, 0xca, 0x53, 0x62, 0x8d, 0x59, 0x7c, 0xf6, 0xfd, 0x5a, 0x47, 0xb9, 0xf5, 0x8e, 0xef, 0xef, 0x68,
67 | 0xdf, 0x47, 0xc4, 0x9a, 0xb4, 0x92, 0xc1, 0xac, 0xdf, 0x8b, 0x68, 0x4b, 0x38, 0xf2, 0x46, 0xf4, 0xdb, 0x4c, 0xfd, 0x95,
68 | 0xf6, 0xe8, 0xfa, 0x9b, 0x98, 0x61, 0xb0, 0x96, 0x19, 0x66, 0x2d, 0xfd, 0x15, 0xd7, 0x41, 0x8f, 0xfe, 0xf5, 0xb9, 0x2a,
69 | 0x15, 0xf4, 0xf0, 0xcf, 0xf1, 0xaa, 0xfe, 0x26, 0xe6, 0x7d, 0x1c, 0x73, 0x17, 0x1b, 0xa3, 0xbf, 0xd2, 0x6f, 0x57, 0x99,
70 | 0xff, 0xeb, 0xc7, 0xcc, 0xe2, 0xfc, 0x6f, 0xd5, 0x59, 0xc5, 0xc2, 0xdd, 0xa8, 0xfe, 0x98, 0x6a, 0xed, 0x9f, 0xdb, 0xd5,
71 | 0x3f, 0x0d, 0xd1, 0x7f, 0xcc, 0x19, 0xcf, 0x73, 0xff, 0x57, 0xb2, 0x57, 0xcf, 0xf0, 0xb9, 0xf5, 0x79, 0xc3, 0x6b, 0xa5,
72 | 0x47, 0xf4, 0xcc, 0xb8, 0xf9, 0x1f, 0x17, 0xe0, 0x79, 0x5c, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
73 | 0x00, 0x00, 0x00, 0x47, 0xac, 0x51, 0xe8, 0x6b, 0x67, 0x23, 0x56, 0x00, 0x1f, 0xbe, 0x9e, 0x1b, 0xd6, 0x30, 0xdf, 0x7f,
74 | 0x3d, 0xef, 0x38, 0x46, 0xcc, 0x99, 0xf3, 0x4f, 0xdb, 0x8f, 0xb7, 0x35, 0x0f, 0x9a, 0xee, 0x20, 0x8c, 0x58, 0x07, 0x3c,
75 | 0x5e, 0xff, 0xd4, 0xb4, 0x1e, 0xfb, 0x50, 0xc9, 0x2c, 0x78, 0x86, 0xb2, 0x33, 0xe3, 0x53, 0x29, 0x43, 0x94, 0xdf, 0xcd,
76 | 0x54, 0xef, 0x05, 0x25, 0xd7, 0x5d, 0xed, 0x68, 0xda, 0x0e, 0xc5, 0x25, 0x77, 0x4c, 0xcd, 0xcb, 0xe2, 0xbf, 0xf2, 0xec,
77 | 0xbe, 0xb6, 0xdc, 0x30, 0x07, 0x8c, 0xf7, 0x48, 0x27, 0x77, 0x3c, 0xf6, 0xf9, 0xee, 0xc6, 0xeb, 0x9f, 0x1a, 0x3c, 0x7e,
78 | 0xd1, 0x8e, 0x14, 0xab, 0xec, 0x7e, 0xab, 0x8c, 0x80, 0xd1, 0xfa, 0xd7, 0xae, 0x55, 0x77, 0x09, 0xa5, 0xd0, 0x71, 0x13,
79 | 0xad, 0x7f, 0xcb, 0x38, 0x8d, 0x1e, 0xc1, 0xca, 0x08, 0x38, 0x26, 0xfe, 0xcd, 0xad, 0x7f, 0x79, 0x6e, 0x88, 0xef, 0x3d,
80 | 0xc5, 0x05, 0xa4, 0xcd, 0x28, 0xbd, 0x6e, 0x35, 0x45, 0xc5, 0x2c, 0xcd, 0x1c, 0x47, 0x3c, 0x41, 0x6b, 0x7b, 0x55, 0x47,
81 | 0x3b, 0x36, 0xb5, 0x9e, 0x38, 0x5e, 0x7f, 0x93, 0x77, 0xfc, 0xce, 0xcb, 0xed, 0x7e, 0xad, 0x45, 0x9d, 0xee, 0xd8, 0x8b,
82 | 0x8f, 0xff, 0xf5, 0xbe, 0x8d, 0x76, 0x44, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
83 | 0xdb, 0xcc, 0x51, 0xe0, 0xcf, 0x54, 0x53, 0xaf, 0xa1, 0xee, 0x9d, 0x75, 0xe4, 0xde, 0xb9, 0xa3, 0xf6, 0xb7, 0xd3, 0xf3,
84 | 0x82, 0xd9, 0x90, 0x1d, 0xe0, 0xe2, 0xd7, 0xcd, 0xfa, 0xb2, 0x98, 0xd5, 0x7a, 0x48, 0xcd, 0xb8, 0xe5, 0xf5, 0x60, 0xf4,
85 | 0xf8, 0x7a, 0x54, 0xcf, 0x47, 0xbc, 0x0f, 0x2f, 0xc6, 0xdb, 0xa6, 0xc5, 0xbf, 0xe6, 0x0b, 0x59, 0x4d, 0xff, 0x74, 0x90,
86 | 0x3f, 0xaf, 0x47, 0xff, 0xde, 0xdd, 0x9f, 0x75, 0x47, 0x96, 0xbf, 0x57, 0xaf, 0xa0, 0x7f, 0x9b, 0x7b, 0x57, 0xf1, 0x11,
87 | 0x46, 0xfb, 0xf0, 0x66, 0xe9, 0x6f, 0xd2, 0xde, 0xb9, 0x3d, 0xfa, 0xf7, 0xf9, 0xe5, 0x8f, 0x8b, 0x7f, 0xfd, 0x8c, 0x69,
88 | 0xc8, 0xce, 0xe8, 0xbd, 0xd1, 0xea, 0xcb, 0xd4, 0x38, 0xc3, 0xa9, 0x15, 0xef, 0x97, 0x1b, 0xe5, 0xec, 0x9a, 0xeb, 0x5e,
89 | 0x8c, 0xf2, 0xaf, 0xf6, 0x66, 0xff, 0x9e, 0xa1, 0x3f, 0xde, 0xb1, 0x6b, 0x8f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5b, 0x5b, 0xc7, 0x89, 0xdb, 0x8f, 0xca, 0x9b, 0xd5, 0xcd, 0x36, 0x33, 0x7a, 0xa8,
91 | 0xb9, 0x63, 0xbc, 0xde, 0x8a, 0xd2, 0x5a, 0xe5, 0x77, 0xf6, 0xe5, 0x3d, 0x8f, 0xec, 0x13, 0x57, 0xef, 0xd4, 0xea, 0xe6,
92 | 0xb7, 0xea, 0x66, 0x77, 0xed, 0xd7, 0x59, 0x50, 0xb2, 0x70, 0x66, 0xbf, 0x03, 0xc0, 0x97, 0xab, 0xcd, 0xf7, 0x6a, 0x2e,
93 | 0x3a, 0x45, 0x62, 0x5c, 0x17, 0x6a, 0x86, 0xbe, 0xc7, 0xef, 0xf4, 0xc1, 0xa3, 0xe0, 0xba, 0xf9, 0x1d, 0x25, 0x7d, 0xb5,
94 | 0xf3, 0x7d, 0x66, 0xc3, 0xec, 0xae, 0xeb, 0xd3, 0x3f, 0xbb, 0x73, 0xb5, 0xf9, 0xd5, 0x89, 0xf1, 0x15, 0x6a, 0x59, 0x71,
95 | 0x4a, 0xc7, 0xfc, 0xb2, 0xf0, 0xbf, 0xda, 0x35, 0xd5, 0xeb, 0xbe, 0x3d, 0xf3, 0xfa, 0x6b, 0xdf, 0xdd, 0xff, 0xed, 0xad,
96 | 0xeb, 0x75, 0xf2, 0x68, 0x2e, 0xae, 0xde, 0x11, 0x10, 0x99, 0x4d, 0x51, 0x75, 0x64, 0xb5, 0xe8, 0xbf, 0x77, 0xce, 0x36,
97 | 0xfd, 0xdf, 0xfc, 0xdb, 0x57, 0xbb, 0x14, 0xff, 0x9a, 0xfe, 0x71, 0x3e, 0xf7, 0xb1, 0xf1, 0x3f, 0x22, 0x2b, 0xde, 0x5e,
98 | 0x49, 0x6b, 0xfc, 0x6b, 0x63, 0xa7, 0x27, 0xfe, 0x4b, 0xf7, 0x7f, 0xbf, 0xfe, 0xaa, 0x0b, 0xee, 0x68, 0xfd, 0x93, 0xec,
99 | 0x53, 0xd5, 0x9e, 0x1a, 0xeb, 0x3d, 0xd9, 0x33, 0x77, 0x94, 0xee, 0xff, 0xaa, 0x86, 0xd1, 0xf1, 0xbf, 0x9e, 0xfe, 0xa9,
100 | 0xc3, 0x59, 0xeb, 0x1d, 0x53, 0xad, 0x3d, 0x69, 0xe2, 0x0c, 0xbe, 0xff, 0xfc, 0x7f, 0xac, 0xfe, 0xb1, 0xce, 0x4a, 0x2d,
101 | 0xab, 0xe3, 0x8a, 0xfc, 0xf2, 0xd6, 0x27, 0xa9, 0xc7, 0xf6, 0xbd, 0x6b, 0xfe, 0xaf, 0xd5, 0xed, 0x3b, 0xf3, 0xa8, 0xba,
102 | 0x10, 0x39, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xa3, 0xd7, 0x89, 0xf6, 0xe9,
103 | 0xa6, 0x43, 0xa4, 0x56, 0x6f, 0x74, 0x79, 0xcd, 0xd3, 0xf6, 0x95, 0x7d, 0x63, 0x9f, 0x3f, 0x78, 0xf5, 0x99, 0x3d, 0xb3,
104 | 0x5f, 0x27, 0xb4, 0x35, 0xef, 0xee, 0x70, 0xbc, 0xf5, 0xa3, 0xbc, 0xa7, 0xb4, 0x8a, 0xd1, 0xe3, 0x44, 0xfb, 0xc1, 0x9e,
105 | 0xd8, 0x1f, 0x1b, 0x47, 0xad, 0xd5, 0x1b, 0x5d, 0x5e, 0xd2, 0xff, 0x33, 0xfb, 0xd7, 0xfe, 0xb1, 0xa7, 0xf6, 0xc5, 0x66,
106 | 0xad, 0xbf, 0x0e, 0x6f, 0x6b, 0xc9, 0xcd, 0xe3, 0xd9, 0x47, 0x59, 0xcb, 0x03, 0xd5, 0xe7, 0x44, 0xf9, 0xd9, 0x3e, 0xb0,
107 | 0x1f, 0x37, 0x7c, 0x68, 0xb5, 0x7a, 0xa3, 0xcb, 0x4b, 0xfa, 0xff, 0x69, 0x66, 0x7f, 0xdb, 0x6f, 0xf6, 0xe1, 0x83, 0x92,
108 | 0x27, 0xf6, 0x64, 0x42, 0x5b, 0x93, 0xdd, 0xbd, 0x68, 0xe7, 0x5d, 0xe7, 0x3e, 0xda, 0x6a, 0xfc, 0xf7, 0x38, 0xd1, 0x3e,
109 | 0xb6, 0x9f, 0xec, 0x5b, 0xc1, 0x85, 0x30, 0x53, 0xff, 0xaf, 0xed, 0xbf, 0x1d, 0xfd, 0x35, 0x47, 0x45, 0x6f, 0x79, 0x6b,
110 | 0xfc, 0xdb, 0xa0, 0xfc, 0x6f, 0x3d, 0xfa, 0xcf, 0xea, 0xb3, 0x76, 0x6f, 0xe6, 0x56, 0x9f, 0x7c, 0x64, 0x4f, 0x17, 0xd2,
111 | 0xbf, 0x76, 0xff, 0x4f, 0x8e, 0x8c, 0xb3, 0xd1, 0xf7, 0xff, 0x33, 0xeb, 0x5f, 0x6a, 0xdf, 0xef, 0x0b, 0xe9, 0xdf, 0xe2,
112 | 0xb0, 0x1a, 0xe7, 0x31, 0x19, 0xe3, 0x44, 0x43, 0xff, 0x38, 0xfd, 0xf5, 0xd8, 0x1e, 0xef, 0x81, 0x53, 0xeb, 0x8d, 0x2e,
113 | 0xaf, 0xe1, 0xd1, 0x7f, 0x76, 0x5b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xb4,
114 | 0xe4, 0x8b, 0x2b, 0xaf, 0x3e, 0xe7, 0xe2, 0xda, 0x62, 0x69, 0xd5, 0x31, 0x17, 0x4a, 0x14, 0xa7, 0x43, 0xdb, 0xce, 0xc2,
115 | 0x26, 0xe6, 0x3a, 0x8c, 0xbd, 0xce, 0xfa, 0xb5, 0xc4, 0x9e, 0x6f, 0x0f, 0x7f, 0xbe, 0xb8, 0xd6, 0xb6, 0xa4, 0x62, 0xf6,
116 | 0xb0, 0xbc, 0xab, 0x71, 0x4f, 0x9f, 0x99, 0xbc, 0x8a, 0x5e, 0x7b, 0x4f, 0xfc, 0x75, 0x1e, 0x7b, 0xbe, 0x9e, 0x7c, 0x31,
117 | 0x67, 0xcf, 0x70, 0xe1, 0xd1, 0xff, 0xd6, 0x68, 0x75, 0x52, 0x79, 0x33, 0xa0, 0xac, 0x5a, 0xa6, 0xe6, 0x0f, 0x3d, 0xdb,
118 | 0x75, 0x46, 0xea, 0xaf, 0xc4, 0xd5, 0x59, 0xca, 0x3c, 0xd7, 0x79, 0x54, 0xd9, 0xc8, 0xe3, 0xaa, 0xfa, 0x9f, 0x59, 0xe3,
119 | 0xde, 0xfb, 0xff, 0xad, 0xeb, 0x7f, 0xf6, 0xb9, 0xaf, 0xc5, 0x21, 0x6f, 0xe2, 0x3e, 0xe1, 0x23, 0xca, 0x8e, 0xd4, 0xbf,
120 | 0xc7, 0x9d, 0x76, 0xb6, 0x18, 0x6f, 0xbd, 0x9e, 0x5b, 0x8a, 0xff, 0x51, 0xcf, 0xd5, 0xe7, 0xd3, 0xdf, 0xd0, 0xff, 0xa6,
121 | 0xf5, 0x4f, 0x37, 0xf9, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0xa5, 0xf6, 0x3b, 0x55,
122 | 0xab, 0xec, 0x0c, 0x6a, 0x8b, 0xfb, 0x02, 0xdb, 0xae, 0x6f, 0x0d, 0xcf, 0x5f, 0x96, 0xf6, 0xce, 0xec, 0xfb, 0x9d, 0xaf,
123 | 0xde, 0x77, 0x65, 0xaf, 0xe1, 0x3a, 0xbe, 0x40, 0x3d, 0x73, 0xd6, 0xd1, 0x9e, 0xbf, 0xd2, 0x4e, 0xbb, 0xca, 0x0e, 0xd6,
124 | 0x31, 0xeb, 0x1e, 0xd7, 0xf1, 0xff, 0x6d, 0xbd, 0x9e, 0x4f, 0xb0, 0x5e, 0x32, 0x72, 0xdd, 0x4b, 0x1d, 0x5b, 0x56, 0xe8,
125 | 0xdb, 0xb5, 0xd6, 0xbd, 0x6a, 0x25, 0xf9, 0x02, 0xde, 0xa6, 0xbe, 0x11, 0xac, 0xf8, 0xa6, 0x29, 0xbb, 0x1d, 0xdf, 0xcb,
126 | 0x7e, 0xcc, 0x9d, 0xbb, 0x0f, 0xce, 0xa4, 0xf1, 0xc8, 0xfb, 0x7f, 0xdd, 0xdf, 0x1d, 0x79, 0xdf, 0x58, 0x4b, 0xff, 0x33,
127 | 0x5c, 0x43, 0xdd, 0xef, 0x63, 0x43, 0xf4, 0xaf, 0xd7, 0x39, 0xb7, 0xfe, 0xab, 0xcd, 0x0d, 0xb3, 0xbc, 0x3b, 0xba, 0xfe,
128 | 0xd7, 0xf5, 0x7e, 0xcd, 0x68, 0xe7, 0x2c, 0xed, 0x95, 0x71, 0x67, 0x85, 0xac, 0xd1, 0x57, 0xf0, 0xbd, 0xcd, 0x68, 0x27,
129 | 0xbe, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x46, 0xf3, 0x39, 0xcd, 0xce, 0xe1, 0xb7, 0xba,
130 | 0x9b, 0xef, 0xd8, 0xf3, 0xf5, 0x79, 0x00, 0x95, 0x96, 0x1e, 0x9b, 0xc3, 0xaf, 0x7f, 0x75, 0xe5, 0xec, 0x19, 0xfc, 0xea,
131 | 0xab, 0x5c, 0x57, 0x5e, 0x3f, 0x68, 0x8b, 0xff, 0x5b, 0x76, 0x71, 0x6b, 0x33, 0xc0, 0xd1, 0xb9, 0x8d, 0x7a, 0xca, 0xfa,
132 | 0xb2, 0xa2, 0xcc, 0x70, 0x1d, 0x7a, 0x33, 0xcd, 0xa8, 0x65, 0xbd, 0x2e, 0xc0, 0xf5, 0x33, 0xe3, 0xf5, 0xdd, 0xff, 0x57,
133 | 0x5b, 0xcd, 0x8f, 0x2e, 0xd3, 0xf5, 0x3f, 0x4b, 0xfc, 0x47, 0x39, 0xd9, 0xd6, 0x58, 0xcd, 0x5f, 0x4b, 0xff, 0x24, 0xcc,
134 | 0xb9, 0x47, 0x97, 0x79, 0xbe, 0xaf, 0x30, 0x7f, 0x0e, 0x9b, 0xa1, 0xbf, 0x75, 0xc6, 0xff, 0x95, 0xf3, 0x57, 0x5d, 0x25,
135 | 0x8b, 0x25, 0xd9, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xcd, 0xfb, 0x67, 0x15,
136 | 0x3f, 0xda, 0x3a, 0xde, 0x40, 0xc5, 0xfb, 0x12, 0x7d, 0x05, 0x3d, 0x59, 0xfc, 0x4c, 0xf0, 0xb5, 0x8d, 0x76, 0x0e, 0x95,
137 | 0xf3, 0xf8, 0xad, 0xe4, 0x0d, 0xdc, 0xef, 0xbb, 0x1c, 0xee, 0xfb, 0x8c, 0xcf, 0xe2, 0x97, 0x96, 0xd4, 0xff, 0x7c, 0x0e,
138 | 0xb7, 0xed, 0x92, 0x7c, 0x82, 0xbe, 0x5b, 0x71, 0xfd, 0xf6, 0xfc, 0x2b, 0xdc, 0x6a, 0x76, 0xbc, 0x51, 0x65, 0x4a, 0xcd,
139 | 0x99, 0x99, 0x36, 0xcf, 0x93, 0xc7, 0x4d, 0xf3, 0x76, 0x1d, 0xeb, 0x52, 0x9a, 0xe5, 0x7d, 0xba, 0x05, 0xfd, 0xd3, 0xf2,
140 | 0xee, 0x36, 0xf4, 0x47, 0x7f, 0x6b, 0xf0, 0x30, 0x9f, 0x47, 0xff, 0x73, 0x3b, 0xdc, 0xe6, 0x65, 0x1b, 0x36, 0xf9, 0x1b,
141 | 0x0a, 0x3c, 0xeb, 0x5f, 0xe3, 0xd3, 0x8a, 0xf2, 0xfd, 0x2c, 0xf4, 0xbf, 0xee, 0xe7, 0xd4, 0xf3, 0x7d, 0x36, 0x04, 0x00,
142 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xb2,
144 | 0x0c, 0xa2, 0x3f, 0xfa, 0xdf, 0xb8, 0xfe, 0xff, 0x03 };
145 |
146 | // Font glyphs rectangles data (on atlas)
147 | static const Rectangle jungleFontRecs[189] = {
148 | { 4, 4, 5 , 12 },
149 | { 17, 4, 2 , 7 },
150 | { 27, 4, 5 , 3 },
151 | { 40, 4, 5 , 5 },
152 | { 53, 4, 6 , 7 },
153 | { 67, 4, 7 , 7 },
154 | { 82, 4, 5 , 7 },
155 | { 95, 4, 3 , 3 },
156 | { 106, 4, 4 , 8 },
157 | { 118, 4, 4 , 8 },
158 | { 130, 4, 5 , 5 },
159 | { 143, 4, 5 , 5 },
160 | { 156, 4, 2 , 3 },
161 | { 166, 4, 5 , 1 },
162 | { 179, 4, 2 , 2 },
163 | { 189, 4, 7 , 7 },
164 | { 204, 4, 7 , 6 },
165 | { 219, 4, 6 , 6 },
166 | { 233, 4, 6 , 6 },
167 | { 4, 24, 6 , 6 },
168 | { 18, 24, 6 , 6 },
169 | { 32, 24, 6 , 6 },
170 | { 46, 24, 6 , 6 },
171 | { 60, 24, 6 , 6 },
172 | { 74, 24, 6 , 6 },
173 | { 88, 24, 6 , 6 },
174 | { 102, 24, 2 , 5 },
175 | { 112, 24, 2 , 6 },
176 | { 122, 24, 3 , 5 },
177 | { 133, 24, 5 , 3 },
178 | { 146, 24, 3 , 5 },
179 | { 157, 24, 6 , 7 },
180 | { 171, 24, 7 , 7 },
181 | { 186, 24, 6 , 7 },
182 | { 200, 24, 6 , 7 },
183 | { 214, 24, 6 , 7 },
184 | { 228, 24, 6 , 7 },
185 | { 4, 44, 6 , 7 },
186 | { 18, 44, 6 , 7 },
187 | { 32, 44, 6 , 7 },
188 | { 46, 44, 6 , 7 },
189 | { 60, 44, 6 , 7 },
190 | { 74, 44, 6 , 7 },
191 | { 88, 44, 6 , 7 },
192 | { 102, 44, 6 , 7 },
193 | { 116, 44, 7 , 7 },
194 | { 131, 44, 6 , 7 },
195 | { 145, 44, 6 , 7 },
196 | { 159, 44, 6 , 7 },
197 | { 173, 44, 7 , 8 },
198 | { 188, 44, 6 , 7 },
199 | { 202, 44, 6 , 7 },
200 | { 216, 44, 6 , 7 },
201 | { 230, 44, 6 , 7 },
202 | { 4, 64, 6 , 7 },
203 | { 18, 64, 7 , 7 },
204 | { 33, 64, 6 , 7 },
205 | { 47, 64, 6 , 7 },
206 | { 61, 64, 6 , 7 },
207 | { 75, 64, 4 , 8 },
208 | { 87, 64, 7 , 7 },
209 | { 102, 64, 4 , 8 },
210 | { 114, 64, 4 , 2 },
211 | { 126, 64, 6 , 1 },
212 | { 140, 64, 2 , 2 },
213 | { 150, 64, 6 , 5 },
214 | { 164, 64, 6 , 7 },
215 | { 178, 64, 6 , 5 },
216 | { 192, 64, 6 , 7 },
217 | { 206, 64, 6 , 5 },
218 | { 220, 64, 6 , 7 },
219 | { 234, 64, 6 , 7 },
220 | { 4, 84, 6 , 7 },
221 | { 18, 84, 6 , 7 },
222 | { 32, 84, 5 , 8 },
223 | { 45, 84, 6 , 7 },
224 | { 59, 84, 6 , 7 },
225 | { 73, 84, 7 , 5 },
226 | { 88, 84, 6 , 5 },
227 | { 102, 84, 6 , 5 },
228 | { 116, 84, 6 , 7 },
229 | { 130, 84, 6 , 7 },
230 | { 144, 84, 6 , 5 },
231 | { 158, 84, 6 , 5 },
232 | { 172, 84, 6 , 6 },
233 | { 186, 84, 6 , 5 },
234 | { 200, 84, 6 , 5 },
235 | { 214, 84, 7 , 5 },
236 | { 229, 84, 6 , 5 },
237 | { 4, 104, 6 , 7 },
238 | { 18, 104, 6 , 5 },
239 | { 32, 104, 4 , 8 },
240 | { 44, 104, 2 , 8 },
241 | { 54, 104, 4 , 8 },
242 | { 66, 104, 5 , 2 },
243 | { 79, 104, 2 , 7 },
244 | { 89, 104, 6 , 6 },
245 | { 103, 104, 6 , 7 },
246 | { 117, 104, 6 , 7 },
247 | { 131, 104, 6 , 7 },
248 | { 145, 104, 8 , 8 },
249 | { 161, 104, 6 , 9 },
250 | { 175, 104, 8 , 8 },
251 | { 191, 104, 7 , 7 },
252 | { 206, 104, 8 , 8 },
253 | { 222, 104, 6 , 5 },
254 | { 236, 104, 8 , 8 },
255 | { 4, 124, 7 , 7 },
256 | { 19, 124, 8 , 8 },
257 | { 35, 124, 4 , 4 },
258 | { 47, 124, 8 , 8 },
259 | { 63, 124, 8 , 8 },
260 | { 79, 124, 8 , 8 },
261 | { 95, 124, 8 , 8 },
262 | { 111, 124, 6 , 7 },
263 | { 125, 124, 5 , 8 },
264 | { 138, 124, 3 , 3 },
265 | { 149, 124, 8 , 8 },
266 | { 165, 124, 8 , 8 },
267 | { 181, 124, 8 , 8 },
268 | { 197, 124, 6 , 5 },
269 | { 211, 124, 10 , 7 },
270 | { 229, 124, 10 , 5 },
271 | { 4, 144, 8 , 8 },
272 | { 20, 144, 6 , 7 },
273 | { 34, 144, 6 , 10 },
274 | { 48, 144, 6 , 10 },
275 | { 62, 144, 6 , 10 },
276 | { 76, 144, 6 , 10 },
277 | { 90, 144, 6 , 10 },
278 | { 104, 144, 6 , 10 },
279 | { 118, 144, 10 , 7 },
280 | { 136, 144, 6 , 9 },
281 | { 150, 144, 6 , 10 },
282 | { 164, 144, 6 , 10 },
283 | { 178, 144, 6 , 10 },
284 | { 192, 144, 6 , 10 },
285 | { 206, 144, 6 , 10 },
286 | { 220, 144, 6 , 10 },
287 | { 234, 144, 6 , 10 },
288 | { 4, 164, 6 , 10 },
289 | { 18, 164, 6 , 7 },
290 | { 32, 164, 6 , 10 },
291 | { 46, 164, 6 , 10 },
292 | { 60, 164, 6 , 10 },
293 | { 74, 164, 6 , 10 },
294 | { 88, 164, 6 , 10 },
295 | { 102, 164, 6 , 10 },
296 | { 116, 164, 6 , 5 },
297 | { 130, 164, 6 , 7 },
298 | { 144, 164, 6 , 10 },
299 | { 158, 164, 6 , 10 },
300 | { 172, 164, 6 , 10 },
301 | { 186, 164, 6 , 10 },
302 | { 200, 164, 6 , 10 },
303 | { 214, 164, 6 , 7 },
304 | { 228, 164, 6 , 7 },
305 | { 4, 184, 6 , 8 },
306 | { 18, 184, 6 , 8 },
307 | { 32, 184, 6 , 8 },
308 | { 46, 184, 6 , 8 },
309 | { 60, 184, 6 , 8 },
310 | { 74, 184, 6 , 8 },
311 | { 88, 184, 9 , 5 },
312 | { 105, 184, 6 , 7 },
313 | { 119, 184, 6 , 8 },
314 | { 133, 184, 6 , 8 },
315 | { 147, 184, 6 , 8 },
316 | { 161, 184, 6 , 8 },
317 | { 175, 184, 6 , 8 },
318 | { 189, 184, 6 , 8 },
319 | { 203, 184, 6 , 8 },
320 | { 217, 184, 6 , 8 },
321 | { 231, 184, 6 , 7 },
322 | { 4, 204, 6 , 8 },
323 | { 18, 204, 6 , 8 },
324 | { 32, 204, 6 , 8 },
325 | { 46, 204, 6 , 8 },
326 | { 60, 204, 6 , 8 },
327 | { 74, 204, 6 , 8 },
328 | { 88, 204, 5 , 5 },
329 | { 101, 204, 6 , 5 },
330 | { 115, 204, 6 , 8 },
331 | { 129, 204, 6 , 8 },
332 | { 143, 204, 6 , 8 },
333 | { 157, 204, 6 , 8 },
334 | { 171, 204, 6 , 10 },
335 | { 185, 204, 6 , 9 },
336 | { 199, 204, 6 , 10 },
337 | };
338 |
339 | // Font glyphs info data
340 | // NOTE: No glyphs.image data provided
341 | static const GlyphInfo jungleFontGlyphs[189] = {
342 | { 32, 0, 9, 5, { 0 }},
343 | { 33, 0, 2, 3, { 0 }},
344 | { 34, 0, 2, 6, { 0 }},
345 | { 35, 0, 3, 6, { 0 }},
346 | { 36, 0, 2, 7, { 0 }},
347 | { 37, 0, 2, 8, { 0 }},
348 | { 38, 0, 2, 6, { 0 }},
349 | { 39, 0, 2, 4, { 0 }},
350 | { 40, 0, 2, 5, { 0 }},
351 | { 41, 0, 2, 5, { 0 }},
352 | { 42, 0, 2, 6, { 0 }},
353 | { 43, 0, 3, 6, { 0 }},
354 | { 44, 0, 7, 3, { 0 }},
355 | { 45, 0, 5, 6, { 0 }},
356 | { 46, 0, 7, 3, { 0 }},
357 | { 47, 0, 2, 8, { 0 }},
358 | { 48, 0, 3, 8, { 0 }},
359 | { 49, 0, 3, 7, { 0 }},
360 | { 50, 0, 3, 7, { 0 }},
361 | { 51, 0, 3, 7, { 0 }},
362 | { 52, 0, 3, 7, { 0 }},
363 | { 53, 0, 3, 7, { 0 }},
364 | { 54, 0, 3, 7, { 0 }},
365 | { 55, 0, 3, 7, { 0 }},
366 | { 56, 0, 3, 7, { 0 }},
367 | { 57, 0, 3, 7, { 0 }},
368 | { 58, 0, 4, 3, { 0 }},
369 | { 59, 0, 4, 3, { 0 }},
370 | { 60, 0, 3, 4, { 0 }},
371 | { 61, 0, 4, 6, { 0 }},
372 | { 62, 0, 3, 4, { 0 }},
373 | { 63, 0, 2, 7, { 0 }},
374 | { 64, 0, 2, 8, { 0 }},
375 | { 65, 0, 2, 7, { 0 }},
376 | { 66, 0, 2, 7, { 0 }},
377 | { 67, 0, 2, 7, { 0 }},
378 | { 68, 0, 2, 7, { 0 }},
379 | { 69, 0, 2, 7, { 0 }},
380 | { 70, 0, 2, 7, { 0 }},
381 | { 71, 0, 2, 7, { 0 }},
382 | { 72, 0, 2, 7, { 0 }},
383 | { 73, 0, 2, 7, { 0 }},
384 | { 74, 0, 2, 7, { 0 }},
385 | { 75, 0, 2, 7, { 0 }},
386 | { 76, 0, 2, 7, { 0 }},
387 | { 77, 0, 2, 8, { 0 }},
388 | { 78, 0, 2, 7, { 0 }},
389 | { 79, 0, 2, 7, { 0 }},
390 | { 80, 0, 2, 7, { 0 }},
391 | { 81, 0, 2, 7, { 0 }},
392 | { 82, 0, 2, 7, { 0 }},
393 | { 83, 0, 2, 7, { 0 }},
394 | { 84, 0, 2, 7, { 0 }},
395 | { 85, 0, 2, 7, { 0 }},
396 | { 86, 0, 2, 7, { 0 }},
397 | { 87, 0, 2, 8, { 0 }},
398 | { 88, 0, 2, 7, { 0 }},
399 | { 89, 0, 2, 7, { 0 }},
400 | { 90, 0, 2, 7, { 0 }},
401 | { 91, 0, 2, 5, { 0 }},
402 | { 92, 0, 2, 8, { 0 }},
403 | { 93, 0, 2, 5, { 0 }},
404 | { 94, 0, -1, 5, { 0 }},
405 | { 95, 0, 10, 7, { 0 }},
406 | { 96, 0, -1, 3, { 0 }},
407 | { 97, 0, 4, 7, { 0 }},
408 | { 98, 0, 2, 7, { 0 }},
409 | { 99, 0, 4, 7, { 0 }},
410 | { 100, 0, 2, 7, { 0 }},
411 | { 101, 0, 4, 7, { 0 }},
412 | { 102, 0, 2, 7, { 0 }},
413 | { 103, 0, 4, 7, { 0 }},
414 | { 104, 0, 2, 7, { 0 }},
415 | { 105, 0, 2, 7, { 0 }},
416 | { 106, 0, 2, 6, { 0 }},
417 | { 107, 0, 2, 7, { 0 }},
418 | { 108, 0, 2, 7, { 0 }},
419 | { 109, 0, 4, 8, { 0 }},
420 | { 110, 0, 4, 7, { 0 }},
421 | { 111, 0, 4, 7, { 0 }},
422 | { 112, 0, 4, 7, { 0 }},
423 | { 113, 0, 4, 7, { 0 }},
424 | { 114, 0, 4, 7, { 0 }},
425 | { 115, 0, 4, 7, { 0 }},
426 | { 116, 0, 3, 7, { 0 }},
427 | { 117, 0, 4, 7, { 0 }},
428 | { 118, 0, 4, 7, { 0 }},
429 | { 119, 0, 4, 8, { 0 }},
430 | { 120, 0, 4, 7, { 0 }},
431 | { 121, 0, 4, 7, { 0 }},
432 | { 122, 0, 4, 7, { 0 }},
433 | { 123, 0, 2, 5, { 0 }},
434 | { 124, 0, 2, 3, { 0 }},
435 | { 125, 0, 2, 5, { 0 }},
436 | { 126, 0, -1, 6, { 0 }},
437 | { 161, 0, 2, 3, { 0 }},
438 | { 162, 0, 3, 7, { 0 }},
439 | { 163, 0, 2, 7, { 0 }},
440 | { 8364, 0, 2, 7, { 0 }},
441 | { 165, 0, 2, 7, { 0 }},
442 | { 352, 0, 1, 8, { 0 }},
443 | { 167, 0, 1, 7, { 0 }},
444 | { 353, 0, 1, 8, { 0 }},
445 | { 169, 0, 2, 8, { 0 }},
446 | { 170, 0, 1, 8, { 0 }},
447 | { 171, 0, 3, 7, { 0 }},
448 | { 172, 0, 1, 8, { 0 }},
449 | { 174, 0, 2, 8, { 0 }},
450 | { 175, 0, 1, 8, { 0 }},
451 | { 176, 0, 1, 2, { 0 }},
452 | { 177, 0, 1, 8, { 0 }},
453 | { 178, 0, 1, 8, { 0 }},
454 | { 179, 0, 1, 8, { 0 }},
455 | { 381, 0, 1, 8, { 0 }},
456 | { 181, 0, 4, 7, { 0 }},
457 | { 182, 0, 1, 4, { 0 }},
458 | { 183, 0, 4, 4, { 0 }},
459 | { 382, 0, 1, 8, { 0 }},
460 | { 185, 0, 1, 8, { 0 }},
461 | { 186, 0, 1, 8, { 0 }},
462 | { 187, 0, 3, 7, { 0 }},
463 | { 338, 0, 2, 11, { 0 }},
464 | { 339, 0, 4, 11, { 0 }},
465 | { 376, 0, 1, 8, { 0 }},
466 | { 191, 0, 2, 7, { 0 }},
467 | { 192, 0, -1, 7, { 0 }},
468 | { 193, 0, -1, 7, { 0 }},
469 | { 194, 0, -1, 7, { 0 }},
470 | { 195, 0, -1, 7, { 0 }},
471 | { 196, 0, -1, 7, { 0 }},
472 | { 197, 0, -1, 7, { 0 }},
473 | { 198, 0, 2, 11, { 0 }},
474 | { 199, 0, 2, 7, { 0 }},
475 | { 200, 0, -1, 7, { 0 }},
476 | { 201, 0, -1, 7, { 0 }},
477 | { 202, 0, -1, 7, { 0 }},
478 | { 203, 0, -1, 7, { 0 }},
479 | { 204, 0, -1, 7, { 0 }},
480 | { 205, 0, -1, 7, { 0 }},
481 | { 206, 0, -1, 7, { 0 }},
482 | { 207, 0, -1, 7, { 0 }},
483 | { 208, 0, 2, 7, { 0 }},
484 | { 209, 0, -1, 7, { 0 }},
485 | { 210, 0, -1, 7, { 0 }},
486 | { 211, 0, -1, 7, { 0 }},
487 | { 212, 0, -1, 7, { 0 }},
488 | { 213, 0, -1, 7, { 0 }},
489 | { 214, 0, -1, 7, { 0 }},
490 | { 215, 0, 3, 7, { 0 }},
491 | { 216, 0, 2, 7, { 0 }},
492 | { 217, 0, -1, 7, { 0 }},
493 | { 218, 0, -1, 7, { 0 }},
494 | { 219, 0, -1, 7, { 0 }},
495 | { 220, 0, -1, 7, { 0 }},
496 | { 221, 0, -1, 7, { 0 }},
497 | { 222, 0, 2, 7, { 0 }},
498 | { 223, 0, 2, 7, { 0 }},
499 | { 224, 0, 1, 7, { 0 }},
500 | { 225, 0, 1, 7, { 0 }},
501 | { 226, 0, 1, 7, { 0 }},
502 | { 227, 0, 1, 7, { 0 }},
503 | { 228, 0, 1, 7, { 0 }},
504 | { 229, 0, 1, 7, { 0 }},
505 | { 230, 0, 4, 10, { 0 }},
506 | { 231, 0, 4, 7, { 0 }},
507 | { 232, 0, 1, 7, { 0 }},
508 | { 233, 0, 1, 7, { 0 }},
509 | { 234, 0, 1, 7, { 0 }},
510 | { 235, 0, 1, 7, { 0 }},
511 | { 236, 0, 1, 7, { 0 }},
512 | { 237, 0, 1, 7, { 0 }},
513 | { 238, 0, 1, 7, { 0 }},
514 | { 239, 0, 1, 7, { 0 }},
515 | { 240, 0, 2, 7, { 0 }},
516 | { 241, 0, 1, 7, { 0 }},
517 | { 242, 0, 1, 7, { 0 }},
518 | { 243, 0, 1, 7, { 0 }},
519 | { 244, 0, 1, 7, { 0 }},
520 | { 245, 0, 1, 7, { 0 }},
521 | { 246, 0, 1, 7, { 0 }},
522 | { 247, 0, 3, 6, { 0 }},
523 | { 248, 0, 4, 7, { 0 }},
524 | { 249, 0, 1, 7, { 0 }},
525 | { 250, 0, 1, 7, { 0 }},
526 | { 251, 0, 1, 7, { 0 }},
527 | { 252, 0, 1, 7, { 0 }},
528 | { 253, 0, 1, 7, { 0 }},
529 | { 254, 0, 2, 7, { 0 }},
530 | { 255, 0, 1, 7, { 0 }},
531 | };
532 |
533 | // Style loading function: Jungle
534 | static void GuiLoadStyleJungle(void)
535 | {
536 | // Load style properties provided
537 | // NOTE: Default properties are propagated
538 | for (int i = 0; i < JUNGLE_STYLE_PROPS_COUNT; i++)
539 | {
540 | GuiSetStyle(jungleStyleProps[i].controlId, jungleStyleProps[i].propertyId, jungleStyleProps[i].propertyValue);
541 | }
542 |
543 | // Custom font loading
544 | // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function
545 | int jungleFontDataSize = 0;
546 | unsigned char *data = DecompressData(jungleFontData, JUNGLE_STYLE_FONT_ATLAS_COMP_SIZE, &jungleFontDataSize);
547 | Image imFont = { data, 256, 256, 1, 2 };
548 |
549 | Font font = { 0 };
550 | font.baseSize = 12;
551 | font.glyphCount = 189;
552 |
553 | // Load texture from image
554 | font.texture = LoadTextureFromImage(imFont);
555 | UnloadImage(imFont); // Uncompressed image data can be unloaded from memory
556 |
557 | // Copy char recs data from global fontRecs
558 | // NOTE: Required to avoid issues if trying to free font
559 | font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle));
560 | memcpy(font.recs, jungleFontRecs, font.glyphCount*sizeof(Rectangle));
561 |
562 | // Copy font char info data from global fontChars
563 | // NOTE: Required to avoid issues if trying to free font
564 | font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo));
565 | memcpy(font.glyphs, jungleFontGlyphs, font.glyphCount*sizeof(GlyphInfo));
566 |
567 | GuiSetFont(font);
568 |
569 | // Setup a white rectangle on the font to be used on shapes drawing,
570 | // it makes possible to draw shapes and text (full UI) in a single draw call
571 | Rectangle fontWhiteRec = { 254, 254, 1, 1 };
572 | SetShapesTexture(font.texture, fontWhiteRec);
573 |
574 | //-----------------------------------------------------------------
575 |
576 | // TODO: Custom user style setup: Set specific properties here (if required)
577 | // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT
578 | }
579 |
--------------------------------------------------------------------------------
/src/styles/style_terminal.h:
--------------------------------------------------------------------------------
1 | //////////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // StyleAsCode exporter v2.0 - Style data exported as a values array //
4 | // //
5 | // USAGE: On init call: GuiLoadStyleTerminal(); //
6 | // //
7 | // more info and bugs-report: github.com/raysan5/raygui //
8 | // feedback and support: ray[at]raylibtech.com //
9 | // //
10 | // Copyright (c) 2020-2024 raylib technologies (@raylibtech) //
11 | // //
12 | //////////////////////////////////////////////////////////////////////////////////
13 |
14 | #define TERMINAL_STYLE_PROPS_COUNT 17
15 |
16 | // Custom style name: Terminal
17 | static const GuiStyleProp terminalStyleProps[TERMINAL_STYLE_PROPS_COUNT] = {
18 | { 0, 0, 0x1c8d00ff }, // DEFAULT_BORDER_COLOR_NORMAL
19 | { 0, 1, 0x161313ff }, // DEFAULT_BASE_COLOR_NORMAL
20 | { 0, 2, 0x38f620ff }, // DEFAULT_TEXT_COLOR_NORMAL
21 | { 0, 3, 0xc3fbc6ff }, // DEFAULT_BORDER_COLOR_FOCUSED
22 | { 0, 4, 0x43bf2eff }, // DEFAULT_BASE_COLOR_FOCUSED
23 | { 0, 5, 0xdcfadcff }, // DEFAULT_TEXT_COLOR_FOCUSED
24 | { 0, 6, 0x1f5b19ff }, // DEFAULT_BORDER_COLOR_PRESSED
25 | { 0, 7, 0x43ff28ff }, // DEFAULT_BASE_COLOR_PRESSED
26 | { 0, 8, 0x1e6f15ff }, // DEFAULT_TEXT_COLOR_PRESSED
27 | { 0, 9, 0x223b22ff }, // DEFAULT_BORDER_COLOR_DISABLED
28 | { 0, 10, 0x182c18ff }, // DEFAULT_BASE_COLOR_DISABLED
29 | { 0, 11, 0x244125ff }, // DEFAULT_TEXT_COLOR_DISABLED
30 | { 0, 16, 0x00000010 }, // DEFAULT_TEXT_SIZE
31 | { 0, 17, 0x00000000 }, // DEFAULT_TEXT_SPACING
32 | { 0, 18, 0xe6fce3ff }, // DEFAULT_LINE_COLOR
33 | { 0, 19, 0x0c1505ff }, // DEFAULT_BACKGROUND_COLOR
34 | { 0, 20, 0x00000018 }, // DEFAULT_TEXT_LINE_SPACING
35 | };
36 |
37 | // WARNING: This style uses a custom font: "Mecha.ttf" (size: 16, spacing: 0)
38 |
39 | #define TERMINAL_STYLE_FONT_ATLAS_COMP_SIZE 1860
40 |
41 | // Font atlas image pixels data: DEFLATE compressed
42 | static unsigned char terminalFontData[TERMINAL_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed,
43 | 0xdd, 0x41, 0x92, 0xa4, 0x36, 0x10, 0x05, 0x50, 0xee, 0x7f, 0xe9, 0xf4, 0x62, 0x62, 0x16, 0x76, 0xb8, 0x1b, 0x94, 0x4a,
44 | 0x89, 0x04, 0x9e, 0x5f, 0x78, 0xd3, 0xd5, 0x53, 0x4d, 0x01, 0xbf, 0x24, 0x84, 0x94, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x7c,
45 | 0x5e, 0xfc, 0xef, 0x4f, 0xe2, 0xc7, 0xdf, 0x8c, 0xcb, 0xef, 0xf3, 0xe7, 0xa7, 0xf1, 0xe3, 0x5f, 0xf9, 0xfb, 0xdf, 0x95,
46 | 0x77, 0xba, 0xfe, 0x5b, 0x31, 0xb4, 0x75, 0x73, 0x5b, 0x95, 0x7b, 0x9f, 0xd1, 0xdf, 0xfe, 0x7d, 0x7b, 0xaa, 0xde, 0xad,
47 | 0xf6, 0x95, 0xb1, 0xb3, 0x23, 0xbf, 0xe7, 0xae, 0x6e, 0x61, 0x6c, 0xdf, 0x2b, 0xc7, 0xa6, 0x7d, 0x1c, 0x0d, 0xf2, 0x7f,
48 | 0x7e, 0xcc, 0x46, 0xf2, 0x14, 0xe9, 0xf4, 0x8e, 0x7f, 0x3b, 0xad, 0xfc, 0x0e, 0x1d, 0xdd, 0xc6, 0xdc, 0x3e, 0x89, 0x92,
49 | 0xf7, 0x9f, 0xf9, 0x3b, 0x51, 0xb6, 0xd7, 0x72, 0xff, 0x26, 0x86, 0xdb, 0x88, 0xf9, 0x4f, 0x78, 0xbe, 0x8f, 0x63, 0xd1,
50 | 0x71, 0xef, 0x99, 0xff, 0xfc, 0x51, 0xcb, 0x9f, 0x29, 0x57, 0xb7, 0x3c, 0xd7, 0xa6, 0xaf, 0x3a, 0x27, 0xe5, 0xff, 0xec,
51 | 0x9b, 0xfa, 0xe7, 0x16, 0xb4, 0xa2, 0xdd, 0x90, 0xff, 0x5c, 0x06, 0x62, 0x22, 0x47, 0xbb, 0xf2, 0x5f, 0xdb, 0xd6, 0xc8,
52 | 0xff, 0x33, 0xda, 0xff, 0xb3, 0x6d, 0xff, 0xf7, 0x79, 0x2b, 0xff, 0xd9, 0xa3, 0x90, 0x6d, 0xff, 0x63, 0x7a, 0xfb, 0x3b,
53 | 0xe7, 0x7f, 0x74, 0xdc, 0x43, 0xfe, 0xcf, 0xaf, 0xe8, 0x73, 0xbf, 0x7d, 0xb6, 0x27, 0xe4, 0x7f, 0x5d, 0xfe, 0x7f, 0xeb,
54 | 0xb3, 0x9d, 0xf5, 0xf4, 0x76, 0xe4, 0xff, 0xd8, 0x9e, 0xff, 0xb3, 0xeb, 0xa8, 0xeb, 0xfb, 0x62, 0xc7, 0x08, 0xd4, 0x91,
55 | 0x1c, 0xdb, 0x89, 0xc1, 0x0c, 0xdf, 0xd3, 0x0b, 0x3b, 0xcb, 0x7f, 0x66, 0x4f, 0x66, 0xf2, 0x7f, 0x76, 0x5c, 0x8e, 0x5f,
56 | 0x7a, 0x30, 0xab, 0xf6, 0x7e, 0x45, 0xfe, 0x67, 0x46, 0xe4, 0x9e, 0x9d, 0xff, 0x38, 0xd9, 0x57, 0x31, 0x31, 0xbe, 0xb9,
57 | 0xb3, 0xcf, 0x30, 0xd3, 0x4f, 0xeb, 0x7b, 0x1c, 0xde, 0xd3, 0xff, 0x8f, 0xd6, 0xed, 0xbf, 0xfc, 0xcf, 0x5d, 0xff, 0xbf,
58 | 0x2d, 0xff, 0xb1, 0xfd, 0x58, 0xc5, 0x85, 0x33, 0x56, 0xfe, 0xe7, 0xf6, 0xf0, 0x79, 0x8f, 0x23, 0x16, 0x5d, 0xbf, 0x74,
59 | 0xcd, 0x7f, 0xee, 0xd3, 0x7d, 0xb1, 0xfd, 0x8f, 0x1b, 0x8f, 0x8f, 0xfc, 0xaf, 0xd8, 0x9b, 0x23, 0x77, 0xd8, 0x66, 0xe7,
60 | 0x2f, 0xc8, 0xbf, 0xfc, 0xcb, 0x7f, 0xef, 0xfe, 0x7f, 0x0c, 0x8e, 0xdc, 0xc6, 0xe3, 0xc7, 0xff, 0xe2, 0x52, 0x6f, 0x69,
61 | 0x7e, 0xb6, 0xe0, 0x78, 0x9f, 0x2b, 0xf7, 0x6e, 0xf9, 0xd9, 0x75, 0x4f, 0xb9, 0xfe, 0xdf, 0x39, 0x93, 0xf2, 0x28, 0x99,
62 | 0x87, 0xb2, 0x7e, 0xfe, 0xdf, 0x33, 0xe7, 0x28, 0x77, 0xcf, 0x3f, 0xb0, 0x7a, 0x95, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
63 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x65, 0x0d, 0x4d, 0x94, 0xad, 0x7b, 0x8c, 0x16, 0x95, 0xe7, 0xf7, 0xd4, 0x58,
64 | 0xbf, 0xb6, 0x87, 0xaa, 0xde, 0x71, 0xec, 0x59, 0x02, 0x63, 0xeb, 0x30, 0x73, 0x2b, 0xff, 0x56, 0xaf, 0x6e, 0x9b, 0x59,
65 | 0xdd, 0x58, 0xb3, 0x65, 0x15, 0xb5, 0x2d, 0xee, 0x49, 0xc7, 0xca, 0x75, 0xe2, 0x71, 0x69, 0x75, 0x70, 0x6d, 0x92, 0x56,
66 | 0xaf, 0xd8, 0xce, 0xac, 0x7d, 0xdf, 0x99, 0xff, 0xb1, 0x33, 0x70, 0xfc, 0x73, 0x46, 0x62, 0x35, 0x55, 0x6d, 0x0d, 0x98,
67 | 0x63, 0xe9, 0xb9, 0x19, 0x8b, 0xd6, 0x90, 0x8d, 0xef, 0x83, 0x3d, 0xe9, 0x90, 0xff, 0x2f, 0xe7, 0x3f, 0x57, 0x23, 0x7b,
68 | 0xc7, 0xb3, 0x50, 0xe4, 0x5f, 0xfe, 0xe5, 0xff, 0xad, 0xf9, 0x8f, 0xe2, 0xfe, 0x77, 0xbe, 0x5a, 0x47, 0xcd, 0x95, 0x55,
69 | 0x6d, 0x4a, 0xe4, 0x5f, 0xfe, 0x7f, 0xef, 0x6d, 0xc7, 0xc5, 0x56, 0x6c, 0xa4, 0xc5, 0xdb, 0x59, 0xb3, 0x64, 0x5f, 0x15,
70 | 0xad, 0xd1, 0x6f, 0x93, 0x28, 0x4c, 0xf0, 0x57, 0xf2, 0x9f, 0xaf, 0x7b, 0xbe, 0x67, 0xdc, 0x2b, 0xb3, 0xe5, 0x99, 0xda,
71 | 0x57, 0xf5, 0xf9, 0x3f, 0x7b, 0x1e, 0x42, 0xe6, 0xfb, 0xe9, 0x5b, 0xf9, 0x1f, 0xfd, 0x6c, 0xf2, 0x7f, 0x6c, 0x7e, 0xb6,
72 | 0xcc, 0xfd, 0x35, 0x16, 0x23, 0xd9, 0xd2, 0x57, 0x6d, 0x75, 0xa4, 0x46, 0xdb, 0xaa, 0x7e, 0x9e, 0xab, 0xd2, 0xf8, 0xde,
73 | 0xfc, 0x47, 0xc1, 0x7d, 0xae, 0xb9, 0x56, 0x52, 0xfe, 0xe5, 0xff, 0x98, 0xac, 0xc0, 0xdb, 0x3d, 0xff, 0x2b, 0xae, 0xbf,
74 | 0x2b, 0x9f, 0xe6, 0xfa, 0xcc, 0xf6, 0xff, 0x59, 0xf7, 0xff, 0xbe, 0x92, 0xff, 0xb3, 0x63, 0x79, 0x77, 0xfe, 0x3b, 0xd5,
75 | 0x4c, 0xcd, 0x8c, 0x30, 0xce, 0xfc, 0x9b, 0x8e, 0xf9, 0xdf, 0x35, 0x9f, 0x47, 0xfe, 0x77, 0xe5, 0xff, 0xe7, 0xa7, 0x8d,
76 | 0xcb, 0x7f, 0xaf, 0xfc, 0xaf, 0xeb, 0xff, 0x3f, 0x3b, 0xff, 0xeb, 0x7a, 0x5f, 0xab, 0xfb, 0x73, 0xb5, 0x5b, 0x9e, 0x99,
77 | 0x01, 0xf7, 0xdb, 0xfc, 0xbb, 0x48, 0x57, 0x6d, 0xaf, 0x98, 0x87, 0x37, 0x33, 0x3b, 0x68, 0xf7, 0x95, 0x41, 0xf5, 0xbf,
78 | 0xa9, 0x1f, 0xb3, 0xe8, 0x9b, 0x7f, 0x78, 0x46, 0xfe, 0xbf, 0xb0, 0xaf, 0x71, 0x3c, 0xee, 0x69, 0x59, 0x57, 0xfe, 0x3e,
79 | 0xce, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xd3, 0x2a, 0xac, 0xaa, 0xba, 0x8d, 0x3b,
80 | 0xab, 0x65, 0xe4, 0xd6, 0xf9, 0xc5, 0xe5, 0xba, 0x2e, 0x99, 0x55, 0xe4, 0x23, 0x6b, 0xf9, 0x6a, 0xd6, 0x34, 0xe6, 0xcf,
81 | 0x81, 0x48, 0xad, 0x96, 0x3b, 0x3f, 0x53, 0x32, 0x35, 0xec, 0xd7, 0xcd, 0xb6, 0xff, 0xbd, 0x7e, 0x43, 0xbe, 0x92, 0xc8,
82 | 0xaa, 0xf5, 0x05, 0x75, 0xf5, 0x9f, 0x8e, 0x82, 0xd5, 0x8a, 0xd9, 0x35, 0xf4, 0xf7, 0xe6, 0x7f, 0x74, 0xf5, 0xdb, 0xf5,
83 | 0x9f, 0x55, 0xd4, 0x5b, 0x89, 0xc4, 0xca, 0xbc, 0xca, 0xfc, 0x57, 0x9c, 0xe3, 0x51, 0xf6, 0xbe, 0xb1, 0xb8, 0x4e, 0xc1,
84 | 0x95, 0x56, 0xe2, 0xd9, 0x6b, 0xa2, 0xe2, 0xd5, 0xf9, 0xaf, 0xad, 0x96, 0x5b, 0xff, 0x9d, 0x90, 0xaf, 0x4f, 0x70, 0x5f,
85 | 0xfe, 0xff, 0x6e, 0x57, 0x75, 0xfe, 0x33, 0xef, 0x5b, 0x53, 0xd9, 0x6a, 0x2e, 0xff, 0x3d, 0x56, 0xf6, 0xc5, 0xf2, 0x9e,
86 | 0x47, 0x26, 0xff, 0x63, 0xfd, 0xb6, 0x15, 0xf9, 0xcf, 0x57, 0xe6, 0x39, 0x36, 0x65, 0xfd, 0x28, 0x4e, 0xf9, 0xfa, 0xfc,
87 | 0xd7, 0x9f, 0x69, 0xf1, 0x9f, 0xff, 0xbb, 0xac, 0xb6, 0x7d, 0x4b, 0xfe, 0x73, 0xd5, 0x69, 0x66, 0xf3, 0x9f, 0xbd, 0xe2,
88 | 0xbd, 0xbb, 0xfd, 0x5f, 0x73, 0x4d, 0xb0, 0x3e, 0xff, 0x91, 0xaa, 0x0c, 0xde, 0x27, 0xff, 0xb1, 0x20, 0xb9, 0xf2, 0x9f,
89 | 0x6d, 0x03, 0xdf, 0x90, 0xff, 0xea, 0xe7, 0x7c, 0x74, 0xc8, 0x7f, 0x6e, 0xc4, 0x2b, 0x4a, 0x73, 0x1a, 0xed, 0xdb, 0xff,
90 | 0x63, 0xdb, 0xf8, 0x5f, 0xff, 0xfc, 0x47, 0x49, 0xbf, 0xf0, 0xce, 0xfc, 0xd7, 0x57, 0xcb, 0xcd, 0x56, 0x0d, 0xbc, 0x3e,
91 | 0xd6, 0xd7, 0xa7, 0xfd, 0xaf, 0xbf, 0x1e, 0x5e, 0xd1, 0xfe, 0x1f, 0x0b, 0xee, 0x52, 0xac, 0xbf, 0xaa, 0xee, 0x9f, 0xff,
92 | 0xaa, 0xeb, 0xc2, 0xcc, 0x73, 0x93, 0x46, 0xef, 0xff, 0xc5, 0xe9, 0x59, 0x3c, 0x7a, 0xe7, 0x68, 0x3c, 0x4f, 0x31, 0xf8,
93 | 0xf4, 0xa2, 0xfe, 0xd7, 0xff, 0x95, 0xed, 0xff, 0x9a, 0x51, 0xef, 0xae, 0xa3, 0xe9, 0xd7, 0x9e, 0x2f, 0xde, 0x63, 0x8b,
94 | 0xf3, 0x4f, 0xdc, 0x8a, 0xed, 0x57, 0x56, 0x7d, 0x8e, 0xf1, 0xfc, 0x67, 0x5f, 0x93, 0xff, 0x8a, 0x8a, 0xd3, 0xf5, 0xed,
95 | 0xe1, 0xf7, 0xe6, 0xbc, 0xcc, 0xdc, 0x75, 0xef, 0xb1, 0xb5, 0xd5, 0xe7, 0xc5, 0x3b, 0xf2, 0x5f, 0xf7, 0xd9, 0x63, 0xc9,
96 | 0xb7, 0x4a, 0xa6, 0x96, 0x77, 0x2c, 0x9f, 0x0f, 0x23, 0xff, 0xcf, 0xcd, 0x7f, 0xdc, 0x70, 0xcf, 0xf0, 0x58, 0x3c, 0x1e,
97 | 0xdd, 0x61, 0x0f, 0xef, 0xcd, 0x3f, 0xfd, 0xce, 0x88, 0xee, 0xf9, 0x5f, 0x3f, 0x2f, 0xf4, 0xcb, 0xed, 0x81, 0x2a, 0xf9,
98 | 0x3c, 0xf1, 0x5a, 0x56, 0xfe, 0x73, 0xfd, 0x96, 0xd9, 0xf9, 0xff, 0x20, 0xff, 0xdf, 0xdd, 0xeb, 0xd0, 0x7f, 0x76, 0x03,
99 | 0xf2, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfb, 0x67, 0xbb, 0x45, 0x6a, 0x7d, 0x5b, 0x0c, 0x56,
100 | 0x32, 0x88, 0x74, 0xa5, 0xf8, 0x6c, 0x7d, 0x8c, 0x18, 0x5c, 0xf7, 0x35, 0x5f, 0x37, 0xf8, 0xfa, 0xf3, 0x15, 0x66, 0xd6,
101 | 0x0f, 0xae, 0x3f, 0x8e, 0x75, 0x15, 0xd6, 0xeb, 0x8f, 0x52, 0xe6, 0xef, 0x47, 0x79, 0xed, 0xb5, 0xfe, 0x99, 0x99, 0xdf,
102 | 0xcf, 0x99, 0x95, 0xbe, 0xb5, 0x67, 0xd4, 0xb5, 0x63, 0x5b, 0xb7, 0xba, 0x33, 0x26, 0x92, 0x3e, 0x3e, 0x4f, 0xfb, 0xf7,
103 | 0xaa, 0x9f, 0x5d, 0x8f, 0x63, 0x2e, 0x4b, 0x51, 0xba, 0x06, 0x37, 0xf7, 0xd7, 0x9f, 0xb6, 0xaf, 0xaf, 0x57, 0x01, 0xd8,
104 | 0xdd, 0x5f, 0xc8, 0x3f, 0x35, 0x28, 0x6e, 0x9f, 0x8b, 0xbf, 0xae, 0xa2, 0x4e, 0x5d, 0xad, 0xe2, 0xbb, 0x8f, 0xe3, 0x71,
105 | 0xfa, 0x0c, 0x93, 0x68, 0xb8, 0xbe, 0xe5, 0xac, 0xff, 0x18, 0x2d, 0xf7, 0x75, 0x5c, 0xee, 0x23, 0xe6, 0xf3, 0x9f, 0x7f,
106 | 0x3e, 0x53, 0x14, 0x57, 0xe6, 0xcd, 0x57, 0xc7, 0xac, 0xde, 0xfa, 0x7c, 0xfb, 0x9f, 0xb9, 0x52, 0x88, 0xe5, 0x9f, 0xaa,
107 | 0xf6, 0x3b, 0x39, 0x4e, 0x6a, 0xb9, 0xae, 0x3e, 0x2b, 0x56, 0xbc, 0x12, 0x1b, 0xce, 0xad, 0xdc, 0xf5, 0xde, 0xb5, 0x33,
108 | 0x64, 0x26, 0xff, 0x7d, 0x8f, 0xcd, 0xd1, 0xe6, 0x95, 0xdd, 0xf9, 0x7f, 0xee, 0x2b, 0xef, 0xc9, 0x7f, 0x9f, 0xb3, 0xef,
109 | 0xb7, 0xcf, 0x33, 0xfb, 0xac, 0xc2, 0x0e, 0x47, 0xe0, 0xac, 0x4e, 0xec, 0x5b, 0xf3, 0x1f, 0x3f, 0x8e, 0x0c, 0xf6, 0xff,
110 | 0x4e, 0xfe, 0xb9, 0x5f, 0xf0, 0xb4, 0xfc, 0x57, 0xb6, 0xcb, 0x15, 0x6d, 0xf9, 0xde, 0x6b, 0x66, 0xed, 0xbf, 0xf6, 0xff,
111 | 0xdb, 0xf9, 0xbf, 0xff, 0x2a, 0x6c, 0x6f, 0x66, 0xfa, 0xed, 0xb3, 0x3e, 0xf9, 0x1f, 0x19, 0xf3, 0x92, 0xff, 0xb7, 0xe7,
112 | 0xff, 0x09, 0xdf, 0x4d, 0xb3, 0xf7, 0xff, 0xde, 0x31, 0xfe, 0x57, 0xf5, 0x8a, 0xf6, 0x7f, 0x6e, 0x8c, 0xfd, 0xee, 0x6d,
113 | 0xcb, 0x1f, 0xf3, 0xb7, 0x1c, 0x85, 0xd1, 0x3e, 0x80, 0xfe, 0xbf, 0xfc, 0xbf, 0x27, 0xff, 0x47, 0x7a, 0xf6, 0xc1, 0xb3,
114 | 0xae, 0x33, 0x46, 0x8e, 0xc7, 0x73, 0xf2, 0x5f, 0x79, 0xc7, 0xee, 0x29, 0xe3, 0x7f, 0x4f, 0xfb, 0x66, 0x78, 0x63, 0xfe,
115 | 0xef, 0xbd, 0xd7, 0xda, 0x63, 0xe6, 0xef, 0x33, 0xfb, 0x32, 0x4f, 0xce, 0xff, 0xb3, 0xfb, 0x64, 0xc7, 0x6d, 0x57, 0x85,
116 | 0x51, 0xb8, 0xa7, 0x79, 0x46, 0xfe, 0x63, 0x53, 0xfe, 0x47, 0xc6, 0x06, 0xde, 0x9d, 0xff, 0xf1, 0xd6, 0x2a, 0x6e, 0x1f,
117 | 0x63, 0x96, 0xff, 0xbb, 0xf3, 0xbf, 0x7f, 0xeb, 0x77, 0xf5, 0xc4, 0x62, 0x49, 0xd2, 0xc7, 0x8f, 0xc9, 0x13, 0xfb, 0xa4,
118 | 0x3b, 0xb7, 0x4d, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xef, 0xcc, 0x00, 0x1e, 0x7b, 0xb5,
119 | 0x43, 0x05, 0xfd, 0x23, 0x5d, 0x6d, 0xbd, 0xee, 0xf3, 0x1e, 0x89, 0xaa, 0xee, 0x99, 0x6d, 0xe8, 0x5c, 0x41, 0xdf, 0xac,
120 | 0xdb, 0xb7, 0x7e, 0x03, 0xf4, 0xae, 0xa0, 0x7f, 0x5e, 0xe5, 0x63, 0xfd, 0xe7, 0xad, 0x9c, 0x3f, 0xdf, 0xbb, 0x82, 0x7e,
121 | 0xbf, 0xb5, 0xab, 0xf4, 0xfb, 0x26, 0xd9, 0x59, 0x41, 0x7f, 0xbc, 0xbf, 0x71, 0x6c, 0xdc, 0xae, 0x6c, 0x35, 0x83, 0xae,
122 | 0x15, 0xf4, 0xbb, 0xaf, 0x05, 0xe3, 0xfe, 0xb5, 0x59, 0x63, 0xcf, 0xb4, 0xa8, 0xaa, 0xa0, 0xf1, 0xb4, 0x0a, 0xfa, 0x67,
123 | 0x19, 0x7b, 0x52, 0x9d, 0x6c, 0xf9, 0xb7, 0xfe, 0xf7, 0xbe, 0xfc, 0xf7, 0xad, 0x93, 0x91, 0xad, 0x52, 0xd3, 0xbb, 0x82,
124 | 0xa6, 0xfc, 0xcb, 0xbf, 0xfc, 0xaf, 0xaa, 0x91, 0x20, 0xff, 0x3c, 0x3d, 0xff, 0x3b, 0x2b, 0xe8, 0xa8, 0xa0, 0xb9, 0xbb,
125 | 0x22, 0xd0, 0x21, 0xff, 0xae, 0xff, 0x1f, 0xf1, 0x04, 0x3d, 0xf9, 0x5f, 0xf3, 0x8a, 0xfc, 0x7f, 0xfd, 0xde, 0x9f, 0x0a,
126 | 0xda, 0x2b, 0xf3, 0x1f, 0x4d, 0xc7, 0xff, 0xf6, 0xdf, 0xf1, 0xe1, 0x89, 0xf9, 0xd7, 0xff, 0xcf, 0xe7, 0xe2, 0xfe, 0x0a,
127 | 0x9a, 0xf9, 0x34, 0xcb, 0xbf, 0xfe, 0x7f, 0xc5, 0xfc, 0x9f, 0x9a, 0xb6, 0x47, 0x05, 0xcd, 0xb9, 0x6d, 0x93, 0x7f, 0xd0,
128 | 0x2b, 0xd4, 0xff, 0x07, 0xbd, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
129 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
130 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
131 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
132 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
133 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
134 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
135 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xf9, 0xf3, 0x9f, 0xfd, 0x00, 0xf2, 0x0f, 0x7c, 0x2e, 0xff, 0xff, 0x00 };
136 |
137 | // Font glyphs rectangles data (on atlas)
138 | static const Rectangle terminalFontRecs[189] = {
139 | { 4, 4, 4 , 16 },
140 | { 16, 4, 1 , 11 },
141 | { 25, 4, 3 , 3 },
142 | { 36, 4, 6 , 11 },
143 | { 50, 4, 5 , 11 },
144 | { 63, 4, 5 , 11 },
145 | { 76, 4, 5 , 11 },
146 | { 89, 4, 1 , 2 },
147 | { 98, 4, 2 , 13 },
148 | { 108, 4, 2 , 13 },
149 | { 118, 4, 3 , 3 },
150 | { 129, 4, 5 , 5 },
151 | { 142, 4, 1 , 3 },
152 | { 151, 4, 5 , 1 },
153 | { 164, 4, 1 , 1 },
154 | { 173, 4, 6 , 12 },
155 | { 187, 4, 5 , 11 },
156 | { 200, 4, 2 , 11 },
157 | { 210, 4, 5 , 11 },
158 | { 223, 4, 5 , 11 },
159 | { 236, 4, 5 , 11 },
160 | { 249, 4, 5 , 11 },
161 | { 262, 4, 5 , 11 },
162 | { 275, 4, 5 , 11 },
163 | { 288, 4, 5 , 11 },
164 | { 301, 4, 5 , 11 },
165 | { 314, 4, 1 , 8 },
166 | { 323, 4, 1 , 10 },
167 | { 332, 4, 4 , 5 },
168 | { 344, 4, 5 , 3 },
169 | { 357, 4, 4 , 5 },
170 | { 369, 4, 5 , 11 },
171 | { 382, 4, 11 , 11 },
172 | { 401, 4, 5 , 11 },
173 | { 414, 4, 5 , 11 },
174 | { 427, 4, 5 , 11 },
175 | { 440, 4, 5 , 11 },
176 | { 453, 4, 5 , 11 },
177 | { 466, 4, 5 , 11 },
178 | { 479, 4, 5 , 11 },
179 | { 492, 4, 5 , 11 },
180 | { 4, 28, 1 , 11 },
181 | { 13, 28, 5 , 11 },
182 | { 26, 28, 5 , 11 },
183 | { 39, 28, 5 , 11 },
184 | { 52, 28, 7 , 11 },
185 | { 67, 28, 5 , 11 },
186 | { 80, 28, 5 , 11 },
187 | { 93, 28, 5 , 11 },
188 | { 106, 28, 5 , 13 },
189 | { 119, 28, 5 , 11 },
190 | { 132, 28, 5 , 11 },
191 | { 145, 28, 5 , 11 },
192 | { 158, 28, 5 , 11 },
193 | { 171, 28, 5 , 11 },
194 | { 184, 28, 7 , 11 },
195 | { 199, 28, 5 , 11 },
196 | { 212, 28, 5 , 11 },
197 | { 225, 28, 5 , 11 },
198 | { 238, 28, 2 , 13 },
199 | { 248, 28, 6 , 12 },
200 | { 262, 28, 2 , 13 },
201 | { 272, 28, 5 , 4 },
202 | { 285, 28, 5 , 1 },
203 | { 298, 28, 2 , 2 },
204 | { 308, 28, 5 , 8 },
205 | { 321, 28, 5 , 11 },
206 | { 334, 28, 5 , 8 },
207 | { 347, 28, 5 , 11 },
208 | { 360, 28, 5 , 8 },
209 | { 373, 28, 4 , 11 },
210 | { 385, 28, 5 , 10 },
211 | { 398, 28, 5 , 11 },
212 | { 411, 28, 1 , 11 },
213 | { 420, 28, 1 , 13 },
214 | { 429, 28, 5 , 11 },
215 | { 442, 28, 1 , 11 },
216 | { 451, 28, 7 , 8 },
217 | { 466, 28, 5 , 8 },
218 | { 479, 28, 5 , 8 },
219 | { 492, 28, 5 , 10 },
220 | { 4, 52, 5 , 10 },
221 | { 17, 52, 4 , 8 },
222 | { 29, 52, 5 , 8 },
223 | { 42, 52, 3 , 11 },
224 | { 53, 52, 5 , 8 },
225 | { 66, 52, 5 , 8 },
226 | { 79, 52, 7 , 8 },
227 | { 94, 52, 5 , 8 },
228 | { 107, 52, 5 , 10 },
229 | { 120, 52, 5 , 8 },
230 | { 133, 52, 3 , 13 },
231 | { 144, 52, 1 , 15 },
232 | { 153, 52, 3 , 13 },
233 | { 164, 52, 5 , 3 },
234 | { 177, 52, 1 , 11 },
235 | { 186, 52, 5 , 11 },
236 | { 199, 52, 5 , 10 },
237 | { 212, 52, 5 , 10 },
238 | { 225, 52, 5 , 10 },
239 | { 238, 52, 0 , 0 },
240 | { 246, 52, 0 , 0 },
241 | { 254, 52, 0 , 0 },
242 | { 262, 52, 7 , 8 },
243 | { 277, 52, 0 , 0 },
244 | { 285, 52, 0 , 0 },
245 | { 293, 52, 5 , 3 },
246 | { 306, 52, 7 , 8 },
247 | { 321, 52, 5 , 1 },
248 | { 334, 52, 3 , 3 },
249 | { 345, 52, 5 , 7 },
250 | { 358, 52, 0 , 0 },
251 | { 366, 52, 0 , 0 },
252 | { 374, 52, 0 , 0 },
253 | { 382, 52, 5 , 10 },
254 | { 395, 52, 7 , 11 },
255 | { 410, 52, 1 , 1 },
256 | { 419, 52, 0 , 0 },
257 | { 427, 52, 0 , 0 },
258 | { 435, 52, 0 , 0 },
259 | { 443, 52, 0 , 0 },
260 | { 451, 52, 0 , 0 },
261 | { 459, 52, 0 , 0 },
262 | { 467, 52, 5 , 13 },
263 | { 480, 52, 5 , 11 },
264 | { 493, 52, 5 , 14 },
265 | { 4, 76, 5 , 14 },
266 | { 17, 76, 5 , 14 },
267 | { 30, 76, 5 , 14 },
268 | { 43, 76, 5 , 13 },
269 | { 56, 76, 5 , 13 },
270 | { 69, 76, 9 , 11 },
271 | { 86, 76, 5 , 13 },
272 | { 99, 76, 5 , 14 },
273 | { 112, 76, 5 , 14 },
274 | { 125, 76, 5 , 14 },
275 | { 138, 76, 5 , 13 },
276 | { 151, 76, 2 , 14 },
277 | { 161, 76, 2 , 14 },
278 | { 171, 76, 3 , 14 },
279 | { 182, 76, 3 , 13 },
280 | { 193, 76, 5 , 11 },
281 | { 206, 76, 5 , 14 },
282 | { 219, 76, 5 , 14 },
283 | { 232, 76, 5 , 14 },
284 | { 245, 76, 5 , 14 },
285 | { 258, 76, 5 , 14 },
286 | { 271, 76, 5 , 13 },
287 | { 284, 76, 5 , 5 },
288 | { 297, 76, 5 , 13 },
289 | { 310, 76, 5 , 14 },
290 | { 323, 76, 5 , 14 },
291 | { 336, 76, 5 , 14 },
292 | { 349, 76, 5 , 13 },
293 | { 362, 76, 5 , 14 },
294 | { 375, 76, 5 , 11 },
295 | { 388, 76, 5 , 11 },
296 | { 401, 76, 5 , 11 },
297 | { 414, 76, 5 , 11 },
298 | { 427, 76, 5 , 11 },
299 | { 440, 76, 5 , 11 },
300 | { 453, 76, 5 , 10 },
301 | { 466, 76, 5 , 10 },
302 | { 479, 76, 9 , 8 },
303 | { 496, 76, 5 , 10 },
304 | { 4, 100, 5 , 11 },
305 | { 17, 100, 5 , 11 },
306 | { 30, 100, 5 , 11 },
307 | { 43, 100, 5 , 10 },
308 | { 56, 100, 2 , 11 },
309 | { 66, 100, 2 , 11 },
310 | { 76, 100, 3 , 11 },
311 | { 87, 100, 3 , 10 },
312 | { 98, 100, 5 , 11 },
313 | { 111, 100, 5 , 11 },
314 | { 124, 100, 5 , 11 },
315 | { 137, 100, 5 , 11 },
316 | { 150, 100, 5 , 11 },
317 | { 163, 100, 5 , 11 },
318 | { 176, 100, 5 , 10 },
319 | { 189, 100, 5 , 5 },
320 | { 202, 100, 5 , 10 },
321 | { 215, 100, 5 , 11 },
322 | { 228, 100, 5 , 11 },
323 | { 241, 100, 5 , 11 },
324 | { 254, 100, 5 , 10 },
325 | { 267, 100, 5 , 13 },
326 | { 280, 100, 4 , 8 },
327 | { 292, 100, 5 , 12 },
328 | };
329 |
330 | // Font glyphs info data
331 | // NOTE: No glyphs.image data provided
332 | static const GlyphInfo terminalFontGlyphs[189] = {
333 | { 32, 0, 14, 4, { 0 }},
334 | { 33, 1, 3, 3, { 0 }},
335 | { 34, 1, 3, 5, { 0 }},
336 | { 35, 1, 3, 8, { 0 }},
337 | { 36, 1, 3, 7, { 0 }},
338 | { 37, 1, 3, 7, { 0 }},
339 | { 38, 1, 3, 7, { 0 }},
340 | { 39, 1, 3, 3, { 0 }},
341 | { 40, 1, 2, 4, { 0 }},
342 | { 41, 1, 2, 4, { 0 }},
343 | { 42, 1, 3, 5, { 0 }},
344 | { 43, 1, 7, 7, { 0 }},
345 | { 44, 1, 13, 3, { 0 }},
346 | { 45, 1, 9, 7, { 0 }},
347 | { 46, 1, 13, 3, { 0 }},
348 | { 47, 1, 2, 8, { 0 }},
349 | { 48, 1, 3, 7, { 0 }},
350 | { 49, 1, 3, 4, { 0 }},
351 | { 50, 1, 3, 7, { 0 }},
352 | { 51, 1, 3, 7, { 0 }},
353 | { 52, 1, 3, 7, { 0 }},
354 | { 53, 1, 3, 7, { 0 }},
355 | { 54, 1, 3, 7, { 0 }},
356 | { 55, 1, 3, 7, { 0 }},
357 | { 56, 1, 3, 7, { 0 }},
358 | { 57, 1, 3, 7, { 0 }},
359 | { 58, 1, 6, 3, { 0 }},
360 | { 59, 1, 6, 3, { 0 }},
361 | { 60, 1, 7, 6, { 0 }},
362 | { 61, 1, 8, 7, { 0 }},
363 | { 62, 1, 7, 6, { 0 }},
364 | { 63, 1, 3, 7, { 0 }},
365 | { 64, 2, 3, 15, { 0 }},
366 | { 65, 1, 3, 7, { 0 }},
367 | { 66, 1, 3, 7, { 0 }},
368 | { 67, 1, 3, 7, { 0 }},
369 | { 68, 1, 3, 7, { 0 }},
370 | { 69, 1, 3, 7, { 0 }},
371 | { 70, 1, 3, 7, { 0 }},
372 | { 71, 1, 3, 7, { 0 }},
373 | { 72, 1, 3, 7, { 0 }},
374 | { 73, 1, 3, 3, { 0 }},
375 | { 74, 1, 3, 7, { 0 }},
376 | { 75, 1, 3, 7, { 0 }},
377 | { 76, 1, 3, 7, { 0 }},
378 | { 77, 1, 3, 9, { 0 }},
379 | { 78, 1, 3, 7, { 0 }},
380 | { 79, 1, 3, 7, { 0 }},
381 | { 80, 1, 3, 7, { 0 }},
382 | { 81, 1, 3, 7, { 0 }},
383 | { 82, 1, 3, 7, { 0 }},
384 | { 83, 1, 3, 7, { 0 }},
385 | { 84, 1, 3, 7, { 0 }},
386 | { 85, 1, 3, 7, { 0 }},
387 | { 86, 1, 3, 7, { 0 }},
388 | { 87, 1, 3, 9, { 0 }},
389 | { 88, 1, 3, 7, { 0 }},
390 | { 89, 1, 3, 7, { 0 }},
391 | { 90, 1, 3, 7, { 0 }},
392 | { 91, 1, 2, 4, { 0 }},
393 | { 92, 1, 2, 8, { 0 }},
394 | { 93, 1, 2, 4, { 0 }},
395 | { 94, 1, 3, 7, { 0 }},
396 | { 95, 1, 15, 7, { 0 }},
397 | { 96, 1, 0, 4, { 0 }},
398 | { 97, 1, 6, 7, { 0 }},
399 | { 98, 1, 3, 7, { 0 }},
400 | { 99, 1, 6, 7, { 0 }},
401 | { 100, 1, 3, 7, { 0 }},
402 | { 101, 1, 6, 7, { 0 }},
403 | { 102, 1, 3, 6, { 0 }},
404 | { 103, 1, 6, 7, { 0 }},
405 | { 104, 1, 3, 7, { 0 }},
406 | { 105, 1, 3, 3, { 0 }},
407 | { 106, 1, 3, 3, { 0 }},
408 | { 107, 1, 3, 7, { 0 }},
409 | { 108, 1, 3, 3, { 0 }},
410 | { 109, 1, 6, 9, { 0 }},
411 | { 110, 1, 6, 7, { 0 }},
412 | { 111, 1, 6, 7, { 0 }},
413 | { 112, 1, 6, 7, { 0 }},
414 | { 113, 1, 6, 7, { 0 }},
415 | { 114, 1, 6, 6, { 0 }},
416 | { 115, 1, 6, 7, { 0 }},
417 | { 116, 1, 3, 5, { 0 }},
418 | { 117, 1, 6, 7, { 0 }},
419 | { 118, 1, 6, 7, { 0 }},
420 | { 119, 1, 6, 9, { 0 }},
421 | { 120, 1, 6, 7, { 0 }},
422 | { 121, 1, 6, 7, { 0 }},
423 | { 122, 1, 6, 7, { 0 }},
424 | { 123, 1, 2, 5, { 0 }},
425 | { 124, 1, 1, 3, { 0 }},
426 | { 125, 1, 2, 5, { 0 }},
427 | { 126, 1, 8, 7, { 0 }},
428 | { 161, 1, 3, 3, { 0 }},
429 | { 162, 1, 3, 7, { 0 }},
430 | { 163, 1, 3, 7, { 0 }},
431 | { 8364, 1, 3, 7, { 0 }},
432 | { 165, 1, 3, 7, { 0 }},
433 | { 352, 0, 14, 4, { 0 }},
434 | { 167, 0, 14, 4, { 0 }},
435 | { 353, 0, 14, 4, { 0 }},
436 | { 169, 1, 3, 9, { 0 }},
437 | { 170, 0, 14, 4, { 0 }},
438 | { 171, 0, 14, 4, { 0 }},
439 | { 172, 1, 8, 7, { 0 }},
440 | { 174, 1, 3, 9, { 0 }},
441 | { 175, 1, 1, 7, { 0 }},
442 | { 176, 1, 0, 5, { 0 }},
443 | { 177, 1, 7, 7, { 0 }},
444 | { 178, 0, 14, 4, { 0 }},
445 | { 179, 0, 14, 4, { 0 }},
446 | { 381, 0, 14, 4, { 0 }},
447 | { 181, 1, 6, 7, { 0 }},
448 | { 182, 1, 3, 9, { 0 }},
449 | { 183, 1, 8, 3, { 0 }},
450 | { 382, 0, 14, 4, { 0 }},
451 | { 185, 0, 14, 4, { 0 }},
452 | { 186, 0, 14, 4, { 0 }},
453 | { 187, 0, 14, 4, { 0 }},
454 | { 338, 0, 14, 4, { 0 }},
455 | { 339, 0, 14, 4, { 0 }},
456 | { 376, 1, 1, 7, { 0 }},
457 | { 191, 1, 3, 7, { 0 }},
458 | { 192, 1, 0, 7, { 0 }},
459 | { 193, 1, 0, 7, { 0 }},
460 | { 194, 1, 0, 7, { 0 }},
461 | { 195, 1, 0, 7, { 0 }},
462 | { 196, 1, 1, 7, { 0 }},
463 | { 197, 1, 1, 7, { 0 }},
464 | { 198, 1, 3, 11, { 0 }},
465 | { 199, 1, 3, 7, { 0 }},
466 | { 200, 1, 0, 7, { 0 }},
467 | { 201, 1, 0, 7, { 0 }},
468 | { 202, 1, 0, 7, { 0 }},
469 | { 203, 1, 1, 7, { 0 }},
470 | { 204, 0, 0, 3, { 0 }},
471 | { 205, 1, 0, 3, { 0 }},
472 | { 206, 0, 0, 3, { 0 }},
473 | { 207, 0, 1, 3, { 0 }},
474 | { 208, 1, 3, 7, { 0 }},
475 | { 209, 1, 0, 7, { 0 }},
476 | { 210, 1, 0, 7, { 0 }},
477 | { 211, 1, 0, 7, { 0 }},
478 | { 212, 1, 0, 7, { 0 }},
479 | { 213, 1, 0, 7, { 0 }},
480 | { 214, 1, 1, 7, { 0 }},
481 | { 215, 1, 7, 7, { 0 }},
482 | { 216, 1, 2, 7, { 0 }},
483 | { 217, 1, 0, 7, { 0 }},
484 | { 218, 1, 0, 7, { 0 }},
485 | { 219, 1, 0, 7, { 0 }},
486 | { 220, 1, 1, 7, { 0 }},
487 | { 221, 1, 0, 7, { 0 }},
488 | { 222, 1, 3, 7, { 0 }},
489 | { 223, 1, 3, 7, { 0 }},
490 | { 224, 1, 3, 7, { 0 }},
491 | { 225, 1, 3, 7, { 0 }},
492 | { 226, 1, 3, 7, { 0 }},
493 | { 227, 1, 3, 7, { 0 }},
494 | { 228, 1, 4, 7, { 0 }},
495 | { 229, 1, 4, 7, { 0 }},
496 | { 230, 1, 6, 11, { 0 }},
497 | { 231, 1, 6, 7, { 0 }},
498 | { 232, 1, 3, 7, { 0 }},
499 | { 233, 1, 3, 7, { 0 }},
500 | { 234, 1, 3, 7, { 0 }},
501 | { 235, 1, 4, 7, { 0 }},
502 | { 236, 0, 3, 3, { 0 }},
503 | { 237, 1, 3, 3, { 0 }},
504 | { 238, 0, 3, 3, { 0 }},
505 | { 239, 0, 4, 3, { 0 }},
506 | { 240, 1, 3, 7, { 0 }},
507 | { 241, 1, 3, 7, { 0 }},
508 | { 242, 1, 3, 7, { 0 }},
509 | { 243, 1, 3, 7, { 0 }},
510 | { 244, 1, 3, 7, { 0 }},
511 | { 245, 1, 3, 7, { 0 }},
512 | { 246, 1, 4, 7, { 0 }},
513 | { 247, 1, 7, 7, { 0 }},
514 | { 248, 1, 5, 7, { 0 }},
515 | { 249, 1, 3, 7, { 0 }},
516 | { 250, 1, 3, 7, { 0 }},
517 | { 251, 1, 3, 7, { 0 }},
518 | { 252, 1, 4, 7, { 0 }},
519 | { 253, 1, 3, 7, { 0 }},
520 | { 254, 1, 6, 6, { 0 }},
521 | { 255, 1, 4, 7, { 0 }},
522 | };
523 |
524 | // Style loading function: Terminal
525 | static void GuiLoadStyleTerminal(void)
526 | {
527 | // Load style properties provided
528 | // NOTE: Default properties are propagated
529 | for (int i = 0; i < TERMINAL_STYLE_PROPS_COUNT; i++)
530 | {
531 | GuiSetStyle(terminalStyleProps[i].controlId, terminalStyleProps[i].propertyId, terminalStyleProps[i].propertyValue);
532 | }
533 |
534 | // Custom font loading
535 | // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function
536 | int terminalFontDataSize = 0;
537 | unsigned char *data = DecompressData(terminalFontData, TERMINAL_STYLE_FONT_ATLAS_COMP_SIZE, &terminalFontDataSize);
538 | Image imFont = { data, 512, 256, 1, 2 };
539 |
540 | Font font = { 0 };
541 | font.baseSize = 16;
542 | font.glyphCount = 189;
543 |
544 | // Load texture from image
545 | font.texture = LoadTextureFromImage(imFont);
546 | UnloadImage(imFont); // Uncompressed image data can be unloaded from memory
547 |
548 | // Copy char recs data from global fontRecs
549 | // NOTE: Required to avoid issues if trying to free font
550 | font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle));
551 | memcpy(font.recs, terminalFontRecs, font.glyphCount*sizeof(Rectangle));
552 |
553 | // Copy font char info data from global fontChars
554 | // NOTE: Required to avoid issues if trying to free font
555 | font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo));
556 | memcpy(font.glyphs, terminalFontGlyphs, font.glyphCount*sizeof(GlyphInfo));
557 |
558 | GuiSetFont(font);
559 |
560 | // Setup a white rectangle on the font to be used on shapes drawing,
561 | // it makes possible to draw shapes and text (full UI) in a single draw call
562 | Rectangle fontWhiteRec = { 510, 254, 1, 1 };
563 | SetShapesTexture(font.texture, fontWhiteRec);
564 |
565 | //-----------------------------------------------------------------
566 |
567 | // TODO: Custom user style setup: Set specific properties here (if required)
568 | // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT
569 | }
570 |
--------------------------------------------------------------------------------