├── .gitignore
├── LICENSE
├── README.md
├── examples
├── asset_browser
│ ├── asset_browser.cpp
│ ├── asset_browser.h
│ ├── imgui_utils.cpp
│ ├── imgui_utils.h
│ ├── item_view.h
│ ├── item_views.cpp
│ └── main.cpp
├── docking_example.cpp
├── editor.cpp
├── imgui_style_example.cpp
└── simple.cpp
├── extras
├── FA6FreeSolidFontData.h
├── FontAwsome_LICENSE.txt
└── IconsFontAwesome6.h
├── imgui_impl_raylib.h
├── premake-VisualStudio.bat
├── premake-mingw.bat
├── premake5
├── premake5.exe
├── premake5.lua
├── premake5.osx
├── raylib_premake5.lua
├── resources
├── driusstraight.ttf
└── parrots.png
├── rlImGui.cpp
├── rlImGui.h
└── rlImGuiColors.h
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # CodeRush personal settings
303 | .cr/personal
304 |
305 | # Python Tools for Visual Studio (PTVS)
306 | __pycache__/
307 | *.pyc
308 |
309 | # Cake - Uncomment if you are using it
310 | # tools/**
311 | # !tools/packages.config
312 |
313 | # Tabs Studio
314 | *.tss
315 |
316 | # Telerik's JustMock configuration file
317 | *.jmconfig
318 |
319 | # BizTalk build output
320 | *.btp.cs
321 | *.btm.cs
322 | *.odx.cs
323 | *.xsd.cs
324 |
325 | # OpenCover UI analysis results
326 | OpenCover/
327 |
328 | # Azure Stream Analytics local run output
329 | ASALocalRun/
330 |
331 | # MSBuild Binary and Structured Log
332 | *.binlog
333 |
334 | # NVidia Nsight GPU debugger configuration file
335 | *.nvuser
336 |
337 | # MFractors (Xamarin productivity tool) working folder
338 | .mfractor/
339 |
340 | # Local History for Visual Studio
341 | .localhistory/
342 |
343 | # BeatPulse healthcheck temp database
344 | healthchecksdb
345 |
346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
347 | MigrationBackup/
348 |
349 | # Ionide (cross platform F# VS Code tools) working folder
350 | .ionide/
351 | /build/ImGuiSample.vcxproj
352 | /build/ImGuiSample.vcxproj.filters
353 | /build/editor.vcxproj
354 | /build/editor.vcxproj.filters
355 | /build/imgui.ini
356 | /build/raylib.vcxproj
357 | /build/raylib.vcxproj.filters
358 | /build/rlImGui.vcxproj
359 | /build/rlImGui.vcxproj.filters
360 | /build/simple.vcxproj
361 | /build/simple.vcxproj.filters
362 | /examples/editor.vcxproj
363 | /examples/editor.vcxproj.filters
364 | /examples/simple.vcxproj
365 | /examples/simple.vcxproj.filters
366 | /premake5.exe
367 | /rlImGui.sln
368 | *.ini
369 | raylib-master
370 | _build
371 | Catalog
372 | imgui-master
373 | build
374 | Makefile
375 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2020-2021 Jeffery Myers
2 |
3 | This software is provided "as-is", without any express or implied warranty. In no event
4 | will the authors be held liable for any damages arising from the use of this software.
5 |
6 | Permission is granted to anyone to use this software for any purpose, including commercial
7 | applications, and to alter it and redistribute it freely, subject to the following restrictions:
8 |
9 | 1. The origin of this software must not be misrepresented; you must not claim that you
10 | wrote the original software. If you use this software in a product, an acknowledgment
11 | in the product documentation would be appreciated but is not required.
12 |
13 | 2. Altered source versions must be plainly marked as such, and must not be misrepresented
14 | as being the original software.
15 |
16 | 3. This notice may not be removed or altered from any source distribution.
17 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # rlImGui
2 |
3 | A Raylib integration with DearImGui
4 |
5 | rlImgui provides a backend for [Dear ImGui](https://github.com/ocornut/imgui) using [Raylib](https://www.raylib.com/).
6 |
7 | # Building
8 | the rlImGui repository itself is setup to use premake to generate a static library and examples for Visual Studio 2019. Premake can also be used to generate makefiles for linux. rlImGui can be used as a static library, or by direclty including the files into your game project.
9 | Preamke is not required to use rlImGui, it is simply just what is used for development.
10 |
11 | ## Other Systems
12 | rlImGui has no dependencies other than raylib and imgui. If you want to use any other build system, you can simply just build rlImGui and ImGui into a library, or even add the files direclty to your game if it can use C++ code. There are no specific build requirements for rlImgui itself.
13 |
14 | # Setup
15 |
16 | Using rlImGui in your code is very easy. Once you have included the library, or source files for rlImGui and ImGui in your project, simply do the following.
17 | ```
18 | #include "rlImGui.h" // include the API header
19 |
20 | // before your game loop
21 | rlImGuiSetup(true); // sets up ImGui with ether a dark or light default theme
22 |
23 | // inside your game loop, between BeginDrawing() and EndDrawing()
24 | rlImGuiBegin(); // starts the ImGui content mode. Make all ImGui calls after this
25 |
26 | rlImGuiEnd(); // ends the ImGui content mode. Make all ImGui calls before this
27 |
28 | // after your game loop is over, before you close the window
29 |
30 | rlImGuiShutdown(); // cleans up ImGui
31 | ```
32 |
33 | # Examples
34 | There are two example programs in the examples folder.
35 |
36 | ## Simple
37 | This is the most simple use of ImGui in raylib, it just shows the ImGui demo window.
38 | 
39 |
40 |
41 | ## Editor
42 | This is a more complex example of ImGui, showing how to use raylib 2d and 3d cameras to draw into ImGui windows using render textures.
43 | 
44 |
45 | # Extras
46 |
47 | ## rlImGuiColors.h
48 | This file has a converter to change Raylib colors into ImGui Colors
49 |
50 | ## Font Awesome Icons
51 | Support for Font Awesome 6 https://fontawesome.com/ is built into rlImGui and enabled by default. You can simply
52 | #include "extras/IconsFontAwesome6.h"
53 | To use the ICON_FA macros for any icon in the free set.
54 |
55 | If you wish to disable font awesome support you can #define NO_FONT_AWESOME
56 |
57 |
58 | # Images
59 | Raylib textures can be drawn in ImGui using the following functions
60 | ```
61 | void rlImGuiImage(const Texture *image);
62 | void rlImGuiImageSize(const Texture *image, int width, int height);
63 | void rlImGuiImageSizeV(const Texture* image, Vector2 size);
64 | void rlImGuiImageRect(const Texture* image, int destWidth, int destHeight, Rectangle sourceRect);
65 | void rlImGuiImageRenderTexture(const RenderTexture* image);
66 | void rlImGuiImageRenderTextureFit(const RenderTexture* image, bool center);
67 |
68 | bool rlImGuiImageButton(const Texture *image);
69 | bool rlImGuiImageButtonSize(const char* name, const Texture* image, Vector2 size);
70 | ```
71 |
72 | # C vs C++
73 | ImGui is a C++ library, so rlImGui uses C++ to create the backend and integration with Raylib.
74 | The rlImGui.h API only uses features that are common to C and C++, so rlImGui can be built as a static library and used by pure C code. Users of ImGui who wish to use pure C must use an ImGui wrapper, such as [https://github.com/cimgui/cimgui].
75 |
76 | # Low level API
77 | If you would like more controll over the ImGui Backend, you can use the low level API that is found in imgui_impl_raylib.h. This is API follows the patterns of other ImGui backends and does not do automatic context management. An example of it's use can be found in imgui_style_example.cpp
78 |
79 | # Note for High DPI displays
80 | If your system does a display scale, like 125% or %150, you will write code to handle that.
81 | If you set the FLAG_WINDOW_HIGHDPI flag in raylib, that will create a frame buffer that is automatically scaled to fit your display. This makes it easy to define all your code in a 'normal' resolution, but has the disadvantage of making it harder to define other bufers in the native resolution. The most common side effect of this is that fonts look blury, because they are rendered at the non scaled resolution.
82 | rlImGui on non-apple platforms will scale the default fonts by the display scale to compensate, but if you have your own fonts, you will need to do the same.
83 | Note that apple platforms have several driver bugs with high DPI (retena displays), and rlImGui tries to compensate for them, but your results may vary or be inconsistent with other platforms.
84 |
85 | The better option is to not use FLAG_WINDOW_HIGHDPI and let raylib run in the native resolution. You should then scale all your input values by GetWindowDPIScale.
86 |
87 | Some examples show how to scale hardcoded values by the display scale to compensate and make your GUI look good in any scale.
88 |
--------------------------------------------------------------------------------
/examples/asset_browser/asset_browser.cpp:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - asset browser
4 | *
5 | * This is a more complex ImGui Integration
6 | * It shows how to build windows on top of 2d and 3d views using a render texture
7 | *
8 | * Copyright (c) 2024 Jeffery Myers
9 | *
10 | ********************************************************************************************/
11 |
12 | #define _CRT_NONSTDC_NO_WARNINGS
13 |
14 | #include "asset_browser.h"
15 | #include "imgui_utils.h"
16 | #include "imgui.h"
17 | #include "imgui_internal.h"
18 | #include "raylib.h"
19 | #include "extras/IconsFontAwesome6.h"
20 |
21 | #include
22 |
23 |
24 | AssetBrowserPanel::AssetBrowserPanel()
25 | {
26 | AssetRoot = GetWorkingDirectory();
27 | RebuildFolderTree();
28 | SetCurrentFolder(&FolderRoot);
29 |
30 | CurrentView = &ListView;
31 | }
32 |
33 | void AssetBrowserPanel::Show()
34 | {
35 | ShowHeader();
36 |
37 | ImGuiTableFlags flags = ImGuiTableFlags_Resizable | ImGuiTableFlags_SizingStretchSame | ImGuiTableFlags_Borders;
38 |
39 | if (ImGui::BeginTable("AssetBrowserTab", 2, flags, ImGui::GetContentRegionAvail()))
40 | {
41 | ImGui::TableSetupColumn("FolderView", ImGuiTableColumnFlags_None, 0.25f);
42 | ImGui::TableSetupColumn("AssetView", ImGuiTableColumnFlags_None, 0.75f);
43 | ImGui::TableNextRow();
44 | ImGui::TableNextColumn();
45 |
46 | if (ImGui::BeginChild("FolderList", ImGui::GetContentRegionAvail(),ImGuiChildFlags_None, ImGuiWindowFlags_None))
47 | {
48 | ShowFolderTree();
49 | ImGui::EndChild();
50 | }
51 |
52 | ImGui::TableNextColumn();
53 | ShowFilePane();
54 | ImGui::EndTable();
55 | }
56 | }
57 |
58 | void AssetBrowserPanel::RebuildFolderTree()
59 | {
60 | FolderRoot.Children.clear();
61 |
62 | FolderRoot.FullPath = AssetRoot;
63 | FolderRoot.Name = GetFileNameWithoutExt(AssetRoot.c_str());
64 | FolderRoot.Parent = nullptr;
65 | FolderRoot.Icon = ICON_FA_SERVER;
66 | FolderRoot.ForceOpenNextFrame = true;
67 | FolderRoot.PopulateChildren();
68 | }
69 |
70 | void AssetBrowserPanel::SetCurrentFolder(FolderInfo* folder)
71 | {
72 | if (CurrentFolderContents.Folder == folder)
73 | return;
74 |
75 | CurrentFolderContents.Folder = folder;
76 | CurrentFolderContents.Files.clear();
77 |
78 | if (folder == nullptr)
79 | return;
80 |
81 | FolderInfo* openFolder = folder;
82 | while (openFolder != nullptr)
83 | {
84 | openFolder->ForceOpenNextFrame = true;
85 | openFolder = openFolder->Parent;
86 | }
87 |
88 | auto files = LoadDirectoryFiles(CurrentFolderContents.Folder->FullPath.c_str());
89 |
90 | for (unsigned int i = 0; i < files.count; i++)
91 | {
92 | if (DirectoryExists(files.paths[i]))
93 | continue;
94 |
95 | const char* name = GetFileName(files.paths[i]);
96 | if (!name || *name == '.')
97 | continue;
98 |
99 | FileInfo& file = CurrentFolderContents.Files.emplace_back();
100 | file.FullPath = files.paths[i];
101 | file.Name = name;
102 | file.Icon = GetFileIcon(name);
103 | }
104 |
105 | UnloadDirectoryFiles(files);
106 | }
107 |
108 | void AssetBrowserPanel::FolderInfo::PopulateChildren()
109 | {
110 | constexpr Color folderColor = { 255,255,145,255 };
111 |
112 | auto folders = LoadDirectoryFiles(FullPath.c_str());
113 |
114 | for (unsigned int i = 0; i < folders.count; i++)
115 | {
116 | if (DirectoryExists(folders.paths[i]))
117 | {
118 | const char* name = GetFileNameWithoutExt(folders.paths[i]);
119 | if (!name || *name == '.')
120 | continue;
121 |
122 | FolderInfo& child = Children.emplace_back();
123 | child.FullPath = folders.paths[i];
124 | child.Name = name;
125 | child.Parent = this;
126 | child.Tint = folderColor;
127 | child.Icon = ICON_FA_FOLDER;
128 | child.PopulateChildren();
129 | }
130 | }
131 | UnloadDirectoryFiles(folders);
132 | }
133 |
134 | bool AssetBrowserPanel::ShowFolderTreeNode(FolderInfo& info)
135 | {
136 | ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick;
137 | if (info.Children.empty())
138 | flags |= ImGuiTreeNodeFlags_Leaf;
139 |
140 | if (CurrentFolderContents.Folder == &info)
141 | flags |= ImGuiTreeNodeFlags_Selected;
142 |
143 | if (info.ForceOpenNextFrame)
144 | {
145 | ImGui::SetNextItemOpen(true);
146 | }
147 |
148 | bool open = ImGui::TreeNodeEx(info.Name.c_str(), flags, "%s %s", info.Icon.c_str(), info.Name.c_str());
149 |
150 | if (info.ForceOpenNextFrame && CurrentFolderContents.Folder == &info)
151 | ImGui::ScrollToItem(ImGuiScrollFlags_KeepVisibleCenterY);
152 |
153 | info.ForceOpenNextFrame = false;
154 | if (ImGui::IsItemClicked())
155 | SetCurrentFolder(&info);
156 |
157 | if (open)
158 | {
159 | for (auto& node : info.Children)
160 | ShowFolderTreeNode(node);
161 |
162 | ImGui::TreePop();
163 | }
164 |
165 | return CurrentFolderContents.Folder == &info;
166 | }
167 |
168 | void AssetBrowserPanel::ShowHeader()
169 | {
170 | ImGui::PushStyleVar(ImGuiStyleVar_ChildBorderSize, 1);
171 | if (ImGui::BeginChild("Header", ImVec2{ ImGui::GetContentRegionAvail().x, ImGui::GetFrameHeight() }))
172 | {
173 | ImGui::Text("%s Root", ICON_FA_FOLDER_OPEN);
174 | ImGui::SameLine();
175 | ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x * 0.33f);
176 | ImGui::InputText("###Path", (char*)(CurrentFolderContents.Folder->FullPath.c_str() + AssetRoot.size()), CurrentFolderContents.Folder->FullPath.size(), ImGuiInputTextFlags_ReadOnly);
177 |
178 | ImGui::EndChild();
179 | }
180 | ImGui::PopStyleVar();
181 | }
182 |
183 | void AssetBrowserPanel::ShowFolderTree()
184 | {
185 | ShowFolderTreeNode(FolderRoot);
186 | }
187 |
188 | void AssetBrowserPanel::ShowFilePane()
189 | {
190 | if (ImGui::BeginChild("FileList", ImGui::GetContentRegionAvail(), ImGuiChildFlags_None, ImGuiWindowFlags_None))
191 | {
192 | if (CurrentView)
193 | {
194 | auto *item = CurrentView->Show(CurrentFolderContents);
195 | if (item)
196 | {
197 | AssetItemInfo* assetItem = static_cast(item);
198 | if (!assetItem->IsFile())
199 | SetCurrentFolder(static_cast(item));
200 | }
201 | }
202 | ImGui::EndChild();
203 | }
204 | }
205 |
206 | ViewableItem* AssetBrowserPanel::AssetContainer::Reset()
207 | {
208 | FileItr = Files.begin();
209 | FolderItr = Folder->Children.begin();
210 | if (FileItr != Files.end())
211 | return &(*FileItr);
212 | if (FolderItr != Folder->Children.end())
213 | return &(*FolderItr);
214 |
215 | return nullptr;
216 | }
217 |
218 | size_t AssetBrowserPanel::AssetContainer::Count()
219 | {
220 | return Files.size() + Folder->Children.size();
221 | }
222 |
223 | ViewableItem* AssetBrowserPanel::AssetContainer::Next()
224 | {
225 | if (FileItr != Files.end())
226 | {
227 | FileItr++;
228 | if (FileItr != Files.end())
229 | return &(*FileItr);
230 | else
231 | {
232 | if (FolderItr != Folder->Children.end())
233 | return &(*FolderItr);
234 | else
235 | return nullptr;
236 | }
237 | }
238 |
239 | if (FolderItr != Folder->Children.end())
240 | {
241 | FolderItr++;
242 | if (FolderItr != Folder->Children.end())
243 | return &(*FolderItr);
244 | }
245 |
246 | return nullptr;
247 | }
248 |
249 | const char* AssetBrowserPanel::GetFileIcon(const char* filename)
250 | {
251 | const char* e = GetFileExtension(filename);
252 |
253 | if (e == nullptr)
254 | return ICON_FA_FILE;
255 |
256 | std::string ext = e;
257 |
258 | std::transform(ext.begin(), ext.end(), ext.begin(),
259 | [](unsigned char c) { return std::tolower(c); } // correct
260 | );
261 |
262 | if (!ext.empty())
263 | {
264 | if (ext==".png")
265 | return ICON_FA_FILE_IMAGE;
266 |
267 | if (ext==".wav" || ext==".mp3" || ext==".oog")
268 | return ICON_FA_FILE_AUDIO;
269 |
270 | if (ext==".ttf" || ext==".otf" || ext==".fnt")
271 | return ICON_FA_FONT;
272 |
273 | if (ext==".txt" || ext==".md")
274 | return ICON_FA_FILE_LINES;
275 |
276 | if (ext==".lua" || ext==".c" || ext==".h" || ext==".cpp")
277 | return ICON_FA_FILE_CODE;
278 | }
279 | return ICON_FA_FILE;
280 | }
--------------------------------------------------------------------------------
/examples/asset_browser/asset_browser.h:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - asset browser
4 | *
5 | * This is a more complex ImGui Integration
6 | * It shows how to build windows on top of 2d and 3d views using a render texture
7 | *
8 | * Copyright (c) 2024 Jeffery Myers
9 | *
10 | ********************************************************************************************/
11 |
12 | #pragma once
13 |
14 | #include "item_view.h"
15 | #include "raylib.h"
16 |
17 | #include
18 | #include
19 | #include
20 |
21 | class AssetBrowserPanel
22 | {
23 | public:
24 | AssetBrowserPanel();
25 |
26 | void Show();
27 |
28 | private:
29 | std::string AssetRoot;
30 |
31 | class AssetItemInfo : public ViewableItem
32 | {
33 | protected:
34 | bool File = false;
35 |
36 | public:
37 | AssetItemInfo(bool file) : File(file) {}
38 | bool IsFile() const { return File; }
39 | };
40 |
41 | class FileInfo : public AssetItemInfo
42 | {
43 | public:
44 | FileInfo() : AssetItemInfo(true) {}
45 |
46 | std::string FullPath;
47 | };
48 |
49 | class FolderInfo : public AssetItemInfo
50 | {
51 | public:
52 | FolderInfo() : AssetItemInfo(false) {}
53 |
54 | std::string FullPath;
55 | FolderInfo* Parent = nullptr;
56 | std::list Children;
57 |
58 | bool ForceOpenNextFrame = false;
59 |
60 | void PopulateChildren();
61 | };
62 |
63 | FolderInfo FolderRoot;
64 |
65 | class AssetContainer : public ViewableItemContainer
66 | {
67 | public:
68 | ViewableItem* Reset() override;
69 | size_t Count() override;
70 | ViewableItem* Next() override;
71 |
72 | FolderInfo* Folder = nullptr;
73 | std::vector Files;
74 |
75 | std::vector::iterator FileItr;
76 | std::list::iterator FolderItr;
77 | };
78 |
79 | AssetContainer CurrentFolderContents;
80 |
81 | ListItemView ListView;
82 |
83 | ItemView* CurrentView = nullptr;
84 |
85 | void RebuildFolderTree();
86 |
87 | void SetCurrentFolder(FolderInfo* folder);
88 |
89 | bool ShowFolderTreeNode(FolderInfo& folder);
90 | void ShowFolderTree();
91 | void ShowFilePane();
92 | void ShowHeader();
93 |
94 | const char* GetFileIcon(const char* filename);
95 | };
--------------------------------------------------------------------------------
/examples/asset_browser/imgui_utils.cpp:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - asset browser
4 | *
5 | * This is a more complex ImGui Integration
6 | * It shows how to build windows on top of 2d and 3d views using a render texture
7 | *
8 | * Copyright (c) 2024 Jeffery Myers
9 | *
10 | ********************************************************************************************/
11 |
12 | #include "imgui_utils.h"
13 |
14 | #include "imgui.h"
15 | #include "imgui_internal.h"
16 |
17 | namespace ImGuiUtils
18 | {
19 |
20 | bool IsSpace(char aCharacter)
21 | {
22 | // all space characters are values 32 or less (space is 32)
23 | // so we can convert them to a bitmask and use a single condition
24 | const int mask = (1 << (' ' - 1)) | (1 << ('\f' - 1)) | (1 << ('\n' - 1)) | (1 << ('\r' - 1)) | (1 << ('\t' - 1)) | (1 << ('\v' - 1));
25 | return (mask & (1 << ((aCharacter && aCharacter <= 32) * (aCharacter - 1)))) != 0;
26 | }
27 |
28 | //-------------------------------------------------------------------------------------------------
29 | // Todo: Add support for soft-hyphens when using word boundaries?
30 | //-------------------------------------------------------------------------------------------------
31 | void TextWithEllipsis(const char* string, float aMaxWidth, bool useWordBoundaries, float aSpacing)
32 | {
33 | char const* partStart = string;
34 | char const* partEnd = string;
35 |
36 | ImWchar elipsisChar = ImGui::GetFont()->EllipsisChar;
37 | char elipsisText[8];
38 | ImTextStrToUtf8(elipsisText, sizeof(elipsisText), &elipsisChar, (&elipsisChar) + 1);
39 |
40 | if (aSpacing < 0.0f) aSpacing = ImGui::GetStyle().ItemSpacing.x;
41 |
42 | float const ellipsisWidth = ImGui::CalcTextSize(elipsisText).x + aSpacing;
43 | float width = 0;
44 | bool addElipsis = false;
45 |
46 | while (*partStart != 0 )
47 | {
48 | // Add space to next segment
49 | while (IsSpace(*partEnd))
50 | partEnd++;
51 |
52 | if (useWordBoundaries)
53 | {
54 | // get next 'word' by looking for space after non-space
55 | while (*partEnd != 0 && !IsSpace(*partEnd))
56 | ++partEnd;
57 | }
58 | else
59 | {
60 | if (*partEnd != 0)
61 | ++partEnd;
62 | }
63 |
64 | ImVec2 const wordSize = ImGui::CalcTextSize(partStart, partEnd);
65 |
66 | // Clearly we have space for this word so just add it
67 | if (wordSize.x + width + ellipsisWidth < aMaxWidth)
68 | {
69 | width += wordSize.x;
70 | partStart = partEnd;
71 | }
72 | // If we're just at the end of the word and we just fit then we can commit here
73 | else if (*partEnd == 0 && wordSize.x + width < aMaxWidth)
74 | {
75 | width += wordSize.x;
76 | partStart = partEnd;
77 | }
78 | // we're done so add elipsis where the current segment starts
79 | else
80 | {
81 | addElipsis = true;
82 | break;
83 | }
84 | }
85 |
86 | ImGui::TextUnformatted(string, partStart);
87 |
88 | if (addElipsis)
89 | {
90 | ImGui::SameLine(0.0f, aSpacing);
91 | ImGui::TextUnformatted(elipsisText);
92 | }
93 | }
94 | }
--------------------------------------------------------------------------------
/examples/asset_browser/imgui_utils.h:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - asset browser
4 | *
5 | * This is a more complex ImGui Integration
6 | * It shows how to build windows on top of 2d and 3d views using a render texture
7 | *
8 | * Copyright (c) 2024 Jeffery Myers
9 | *
10 | ********************************************************************************************/
11 |
12 | #pragma once
13 |
14 | #include
15 | #include "raylib.h"
16 |
17 | namespace ImGuiUtils
18 | {
19 | void TextWithEllipsis(const char* string, float maxWidth, bool useWordBoundaries = false, float aSpacing = 0);
20 |
21 |
22 | // DPI scaling functions
23 | inline float ScaleToDPIF(float value)
24 | {
25 | return GetWindowScaleDPI().x * value;
26 | }
27 |
28 | inline int ScaleToDPII(int value)
29 | {
30 | return int(GetWindowScaleDPI().x * value);
31 | }
32 |
33 | }
--------------------------------------------------------------------------------
/examples/asset_browser/item_view.h:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - asset browser
4 | *
5 | * This is a more complex ImGui Integration
6 | * It shows how to build windows on top of 2d and 3d views using a render texture
7 | *
8 | * Copyright (c) 2024 Jeffery Myers
9 | *
10 | ********************************************************************************************/
11 |
12 | #pragma once
13 |
14 | #include
15 | #include "raylib.h"
16 |
17 | class ViewableItem
18 | {
19 | public:
20 | virtual ~ViewableItem() = default;
21 |
22 | std::string Name;
23 | std::string Icon;
24 | Color Tint = BLANK;
25 | };
26 |
27 | class ViewableItemContainer
28 | {
29 | public:
30 | virtual ~ViewableItemContainer() = default;
31 | virtual ViewableItem* Reset() = 0;
32 | virtual size_t Count() = 0;
33 | virtual ViewableItem* Next() = 0;
34 | };
35 |
36 | class ItemView
37 | {
38 | public:
39 | virtual ~ItemView() = default;
40 | virtual ViewableItem* Show(ViewableItemContainer& container) = 0;
41 | };
42 |
43 | class ListItemView : public ItemView
44 | {
45 | public:
46 | ViewableItem* Show(ViewableItemContainer& container) override;
47 | };
48 |
--------------------------------------------------------------------------------
/examples/asset_browser/item_views.cpp:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - asset browser
4 | *
5 | * This is a more complex ImGui Integration
6 | * It shows how to build windows on top of 2d and 3d views using a render texture
7 | *
8 | * Copyright (c) 2024 Jeffery Myers
9 | *
10 | ********************************************************************************************/
11 |
12 | #include "item_view.h"
13 |
14 | #include "imgui.h"
15 | #include "imgui_utils.h"
16 | #include "rlImGuiColors.h"
17 | #include "raylib.h"
18 |
19 | extern ImFont* IconFont;
20 |
21 | ViewableItem* ListItemView::Show(ViewableItemContainer& container)
22 | {
23 | ViewableItem* item = container.Reset();
24 |
25 | ViewableItem* selected = nullptr;
26 | while (item)
27 | {
28 | float x = ImGui::GetCursorPosX();
29 |
30 | const char* name = TextFormat("###%s", item->Name.c_str());
31 | if (item->Tint.a > 0)
32 | ImGui::TextColored(rlImGuiColors::Convert(item->Tint), " %s", item->Icon.c_str());
33 | else
34 | ImGui::Text(" %s", item->Icon.c_str());
35 |
36 | ImGui::SameLine(0, 0);
37 | ImGui::Text(" %s", item->Name.c_str());
38 | ImGui::SameLine(0, 0);
39 |
40 | ImGui::SetCursorPosX(x);
41 | //ImGui::SetItemAllowOverlap();
42 |
43 | ImGui::Selectable(name);
44 | if (ImGui::IsItemHovered() && ImGui::IsMouseDoubleClicked(0))
45 | {
46 | selected = item;
47 | }
48 |
49 | item = container.Next();
50 | }
51 |
52 | return selected;
53 | }
--------------------------------------------------------------------------------
/examples/asset_browser/main.cpp:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - asset browser
4 | *
5 | * This is a more complex ImGui Integration
6 | * It shows how to build windows on top of 2d and 3d views using a render texture
7 | *
8 | * Copyright (c) 2024 Jeffery Myers
9 | *
10 | ********************************************************************************************/
11 |
12 |
13 | #include "raylib.h"
14 | #include "raymath.h"
15 |
16 | #include "imgui.h"
17 | #include "rlImGui.h"
18 | #include "rlImGuiColors.h"
19 | #include "extras/FA6FreeSolidFontData.h"
20 |
21 | #include "asset_browser.h"
22 |
23 | #include
24 |
25 |
26 | ImFont* IconFont = nullptr;
27 |
28 | int main(int argc, char* argv[])
29 | {
30 | // Initialization
31 | //--------------------------------------------------------------------------------------
32 | int screenWidth = 1280;
33 | int screenHeight = 800;
34 |
35 | SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT);
36 | InitWindow(screenWidth, screenHeight, "raylib-Extras [ImGui] example - Asset browser");
37 | SetTargetFPS(144);
38 |
39 | rlImGuiBeginInitImGui();
40 | ImGui::StyleColorsDark();
41 |
42 | static const ImWchar icons_ranges[] = { ICON_MIN_FA, ICON_MAX_FA, 0 };
43 | ImFontConfig icons_config;
44 | icons_config.MergeMode = true;
45 | icons_config.PixelSnapH = true;
46 | icons_config.FontDataOwnedByAtlas = false;
47 |
48 | icons_config.GlyphMaxAdvanceX = std::numeric_limits::max();
49 | icons_config.RasterizerMultiply = 1.0f;
50 | icons_config.OversampleH = 2;
51 | icons_config.OversampleV = 1;
52 |
53 | icons_config.GlyphRanges = icons_ranges;
54 |
55 | ImGuiIO& io = ImGui::GetIO();
56 | io.Fonts->AddFontFromMemoryCompressedTTF((void*)fa_solid_900_compressed_data, fa_solid_900_compressed_size, 12, &icons_config, icons_ranges);
57 |
58 | icons_config.MergeMode = false;
59 | IconFont = io.Fonts->AddFontFromMemoryCompressedTTF((void*)fa_solid_900_compressed_data, fa_solid_900_compressed_size, 72, &icons_config, icons_ranges);
60 |
61 | rlImGuiEndInitImGui();
62 |
63 | AssetBrowserPanel assetBrowser;
64 |
65 | // Main game loop
66 | while (!WindowShouldClose()) // Detect window close button or ESC key
67 | {
68 |
69 | BeginDrawing();
70 | ClearBackground(DARKGRAY);
71 |
72 | rlImGuiBegin();
73 |
74 | ImGui::SetNextWindowPos(ImVec2(0, 0));
75 | ImGui::SetNextWindowSize(ImVec2(float(GetScreenWidth()), float(GetScreenHeight())));
76 | if (ImGui::Begin("Frame", 0, ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoSavedSettings))
77 | {
78 | assetBrowser.Show();
79 | }
80 | ImGui::End();
81 |
82 | rlImGuiEnd();
83 |
84 | EndDrawing();
85 | //----------------------------------------------------------------------------------
86 | }
87 | rlImGuiShutdown();
88 |
89 | // De-Initialization
90 | //--------------------------------------------------------------------------------------
91 | CloseWindow(); // Close window and OpenGL context
92 | //--------------------------------------------------------------------------------------
93 |
94 | return 0;
95 | }
--------------------------------------------------------------------------------
/examples/docking_example.cpp:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - Docking example
4 | *
5 | * This is an example of using the ImGui docking features that are part of docking branch
6 | * You must replace the default imgui with the code from the docking branch for this to work
7 | * https://github.com/ocornut/imgui/tree/docking
8 | *
9 | * Copyright (c) 2024 Jeffery Myers
10 | *
11 | ********************************************************************************************/
12 |
13 | #include "raylib.h"
14 | #include "raymath.h"
15 |
16 | #include "imgui.h"
17 | #include "rlImGui.h"
18 |
19 | // DPI scaling functions
20 | float ScaleToDPIF(float value)
21 | {
22 | return GetWindowScaleDPI().x * value;
23 | }
24 |
25 | int ScaleToDPII(int value)
26 | {
27 | return int(GetWindowScaleDPI().x * value);
28 | }
29 |
30 | int main(int argc, char* argv[])
31 | {
32 | // Initialization
33 | //--------------------------------------------------------------------------------------
34 | int screenWidth = 1280;
35 | int screenHeight = 800;
36 |
37 | // do not set the FLAG_WINDOW_HIGHDPI flag, that scales a low res framebuffer up to the native resolution.
38 | // use the native resolution and scale your geometry.
39 | SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT | FLAG_WINDOW_RESIZABLE);
40 | InitWindow(screenWidth, screenHeight, "raylib-Extras [ImGui] example - Docking");
41 | SetTargetFPS(144);
42 | rlImGuiSetup(true);
43 |
44 | bool run = true;
45 |
46 | bool showDemoWindow = true;
47 |
48 | // if the linked ImGui has docking, enable it.
49 | // this will only be true if you use the docking branch of ImGui.
50 | #ifdef IMGUI_HAS_DOCK
51 | ImGui::GetIO().ConfigFlags |= ImGuiConfigFlags_DockingEnable;
52 | #endif
53 |
54 | // Main game loop
55 | while (!WindowShouldClose() && run) // Detect window close button or ESC key, or a quit from the menu
56 | {
57 | BeginDrawing();
58 | ClearBackground(DARKGRAY);
59 |
60 | // draw something to the raylib window below the GUI.
61 | DrawCircle(GetScreenWidth() / 2, GetScreenHeight() / 2, GetScreenHeight() * 0.45f, DARKGREEN);
62 |
63 | // start ImGui content
64 | rlImGuiBegin();
65 |
66 | // if you want windows to dock to the viewport, call this.
67 | #ifdef IMGUI_HAS_DOCK
68 | ImGui::DockSpaceOverViewport(0, NULL, ImGuiDockNodeFlags_PassthruCentralNode); // set ImGuiDockNodeFlags_PassthruCentralNode so that we can see the raylib contents behind the dockspace
69 | #endif
70 |
71 | // show a simple menu bar
72 | if (ImGui::BeginMainMenuBar())
73 | {
74 | if (ImGui::BeginMenu("File"))
75 | {
76 | if (ImGui::MenuItem("Quit"))
77 | run = false;
78 |
79 | ImGui::EndMenu();
80 | }
81 |
82 | if (ImGui::BeginMenu("Window"))
83 | {
84 | if (ImGui::MenuItem("Demo Window", nullptr, showDemoWindow))
85 | showDemoWindow = !showDemoWindow;
86 |
87 | ImGui::EndMenu();
88 | }
89 | ImGui::EndMainMenuBar();
90 | }
91 |
92 | // show some windows
93 |
94 | if (showDemoWindow)
95 | ImGui::ShowDemoWindow(&showDemoWindow);
96 |
97 | if (ImGui::Begin("Test Window"))
98 | {
99 | ImGui::TextUnformatted("Another window");
100 | }
101 | ImGui::End();
102 |
103 | // end ImGui Content
104 | rlImGuiEnd();
105 |
106 | EndDrawing();
107 | //----------------------------------------------------------------------------------
108 | }
109 | rlImGuiShutdown();
110 |
111 | // De-Initialization
112 | //--------------------------------------------------------------------------------------
113 | CloseWindow(); // Close window and OpenGL context
114 | //--------------------------------------------------------------------------------------
115 |
116 | return 0;
117 | }
--------------------------------------------------------------------------------
/examples/editor.cpp:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - editor
4 | *
5 | * This is a more complex ImGui Integration
6 | * It shows how to build windows on top of 2d and 3d views using a render texture
7 | *
8 | * Copyright (c) 2021 Jeffery Myers
9 | *
10 | ********************************************************************************************/
11 |
12 |
13 | #include "raylib.h"
14 | #include "raymath.h"
15 |
16 | #include "imgui.h"
17 | #include "rlImGui.h"
18 | #include "rlImGuiColors.h"
19 |
20 | bool Quit = false;
21 |
22 | bool ImGuiDemoOpen = false;
23 |
24 | // DPI scaling functions
25 | float ScaleToDPIF(float value)
26 | {
27 | return GetWindowScaleDPI().x * value;
28 | }
29 |
30 | int ScaleToDPII(int value)
31 | {
32 | return int(GetWindowScaleDPI().x * value);
33 | }
34 |
35 | class DocumentWindow
36 | {
37 | public:
38 | bool Open = false;
39 |
40 | RenderTexture ViewTexture;
41 |
42 | virtual void Setup() = 0;
43 | virtual void Shutdown() = 0;
44 | virtual void Show() = 0;
45 | virtual void Update() = 0;
46 |
47 | bool Focused = false;
48 |
49 | Rectangle ContentRect = { 0 };
50 | };
51 |
52 | class ImageViewerWindow : public DocumentWindow
53 | {
54 | public:
55 |
56 | void Setup() override
57 | {
58 | Camera.zoom = 1;
59 | Camera.target.x = 0;
60 | Camera.target.y = 0;
61 | Camera.rotation = 0;
62 | Camera.offset.x = GetScreenWidth() / 2.0f;
63 | Camera.offset.y = GetScreenHeight() / 2.0f;
64 |
65 | ViewTexture = LoadRenderTexture(GetScreenWidth(), GetScreenHeight());
66 | ImageTexture = LoadTexture("resources/parrots.png");
67 |
68 | UpdateRenderTexture();
69 | }
70 |
71 | void Show() override
72 | {
73 | ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
74 | ImGui::SetNextWindowSizeConstraints(ImVec2(ScaleToDPIF(400.0f), ScaleToDPIF(400.0f)), ImVec2(float(GetScreenWidth()), float(GetScreenHeight())));
75 |
76 | Focused = false;
77 |
78 | if (ImGui::Begin("Image Viewer", &Open, ImGuiWindowFlags_NoScrollbar))
79 | {
80 | // save off the screen space content rectangle
81 | ContentRect = { ImGui::GetWindowPos().x + ImGui::GetCursorScreenPos().x, ImGui::GetWindowPos().y + ImGui::GetCursorScreenPos().y, ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y };
82 |
83 | Focused = ImGui::IsWindowFocused(ImGuiFocusedFlags_RootAndChildWindows);
84 |
85 | ImVec2 size = ImGui::GetContentRegionAvail();
86 |
87 | // center the scratch pad in the view
88 | Rectangle viewRect = { 0 };
89 | viewRect.x = ViewTexture.texture.width / 2 - size.x / 2;
90 | viewRect.y = ViewTexture.texture.height / 2 - size.y / 2;
91 | viewRect.width = size.x;
92 | viewRect.height = -size.y;
93 |
94 | if (ImGui::BeginChild("Toolbar", ImVec2(ImGui::GetContentRegionAvail().x, 25)))
95 | {
96 | ImGui::SetCursorPosX(2);
97 | ImGui::SetCursorPosY(3);
98 |
99 | if (ImGui::Button("None"))
100 | {
101 | CurrentToolMode = ToolMode::None;
102 | }
103 | ImGui::SameLine();
104 |
105 | if (ImGui::Button("Move"))
106 | {
107 | CurrentToolMode = ToolMode::Move;
108 | }
109 |
110 | ImGui::SameLine();
111 | switch (CurrentToolMode)
112 | {
113 | case ToolMode::None:
114 | ImGui::TextUnformatted("No Tool");
115 | break;
116 | case ToolMode::Move:
117 | ImGui::TextUnformatted("Move Tool");
118 | break;
119 | default:
120 | break;
121 | }
122 |
123 | ImGui::SameLine();
124 | ImGui::TextUnformatted(TextFormat("camera target X%f Y%f", Camera.target.x, Camera.target.y));
125 | ImGui::EndChild();
126 | }
127 |
128 | rlImGuiImageRect(&ViewTexture.texture, int(size.x), int(size.y), viewRect);
129 | }
130 | ImGui::End();
131 | ImGui::PopStyleVar();
132 | }
133 |
134 | void Update() override
135 | {
136 | if (!Open)
137 | return;
138 |
139 | if (IsWindowResized())
140 | {
141 | UnloadRenderTexture(ViewTexture);
142 | ViewTexture = LoadRenderTexture(GetScreenWidth(), GetScreenHeight());
143 |
144 | Camera.offset.x = GetScreenWidth() / 2.0f;
145 | Camera.offset.y = GetScreenHeight() / 2.0f;
146 | }
147 |
148 | Vector2 mousePos = GetMousePosition();
149 |
150 | if (Focused)
151 | {
152 | if (CurrentToolMode == ToolMode::Move)
153 | {
154 | // only do this tool when the mouse is in the content area of the window
155 | if (IsMouseButtonDown(0) && CheckCollisionPointRec(mousePos, ContentRect))
156 | {
157 | if (!Dragging)
158 | {
159 | LastMousePos = mousePos;
160 | LastTarget = Camera.target;
161 | }
162 | Dragging = true;
163 | Vector2 mouseDelta = Vector2Subtract(LastMousePos, mousePos);
164 |
165 | mouseDelta.x /= Camera.zoom;
166 | mouseDelta.y /= Camera.zoom;
167 | Camera.target = Vector2Add(LastTarget, mouseDelta);
168 |
169 | DirtyScene = true;
170 |
171 | }
172 | else
173 | {
174 | Dragging = false;
175 | }
176 | }
177 | }
178 | else
179 | {
180 | Dragging = false;
181 | }
182 |
183 | if (DirtyScene)
184 | {
185 | DirtyScene = false;
186 | UpdateRenderTexture();
187 | }
188 | }
189 |
190 | Texture ImageTexture;
191 | Camera2D Camera = { 0 };
192 |
193 | Vector2 LastMousePos = { 0 };
194 | Vector2 LastTarget = { 0 };
195 | bool Dragging = false;
196 |
197 | bool DirtyScene = false;
198 |
199 | enum class ToolMode
200 | {
201 | None,
202 | Move,
203 | };
204 |
205 | ToolMode CurrentToolMode = ToolMode::None;
206 |
207 | void UpdateRenderTexture()
208 | {
209 | BeginTextureMode(ViewTexture);
210 | ClearBackground(BLUE);
211 |
212 | // camera with our view offset with a world origin of 0,0
213 | BeginMode2D(Camera);
214 |
215 | // center the image at 0,0
216 | DrawTexture(ImageTexture, ImageTexture.width / -2, ImageTexture.height / -2, WHITE);
217 |
218 | EndMode2D();
219 | EndTextureMode();
220 | }
221 |
222 | void Shutdown() override
223 | {
224 | UnloadRenderTexture(ViewTexture);
225 | UnloadTexture(ImageTexture);
226 | }
227 | };
228 |
229 | class SceneViewWindow : public DocumentWindow
230 | {
231 | public:
232 | Camera3D Camera = { 0 };
233 |
234 | void Setup() override
235 | {
236 | ViewTexture = LoadRenderTexture(GetScreenWidth(), GetScreenHeight());
237 |
238 | Camera.fovy = 45;
239 | Camera.up.y = 1;
240 | Camera.position.y = 3;
241 | Camera.position.z = -25;
242 |
243 | Image img = GenImageChecked(ScaleToDPII(256), ScaleToDPII(256), ScaleToDPII(32), ScaleToDPII(32), DARKGRAY, WHITE);
244 | GridTexture = LoadTextureFromImage(img);
245 | UnloadImage(img);
246 | GenTextureMipmaps(&GridTexture);
247 | SetTextureFilter(GridTexture, TEXTURE_FILTER_ANISOTROPIC_16X);
248 | SetTextureWrap(GridTexture, TEXTURE_WRAP_CLAMP);
249 | }
250 |
251 | void Shutdown() override
252 | {
253 | UnloadRenderTexture(ViewTexture);
254 | UnloadTexture(GridTexture);
255 | }
256 |
257 | void Show() override
258 | {
259 | ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
260 | ImGui::SetNextWindowSizeConstraints(ImVec2(ScaleToDPIF(400.0f), ScaleToDPIF(400.0f)), ImVec2((float)GetScreenWidth(), (float)GetScreenHeight()));
261 |
262 | if (ImGui::Begin("3D View", &Open, ImGuiWindowFlags_NoScrollbar))
263 | {
264 | Focused = ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows);
265 | // draw the view
266 | rlImGuiImageRenderTextureFit(&ViewTexture, true);
267 | }
268 | ImGui::End();
269 | ImGui::PopStyleVar();
270 | }
271 |
272 | void Update() override
273 | {
274 | if (!Open)
275 | return;
276 |
277 | if (IsWindowResized())
278 | {
279 | UnloadRenderTexture(ViewTexture);
280 | ViewTexture = LoadRenderTexture(GetScreenWidth(), GetScreenHeight());
281 | }
282 |
283 | float period = 10;
284 | float magnitude = 25;
285 |
286 | Camera.position.x = sinf(float(GetTime() / period)) * magnitude;
287 |
288 | BeginTextureMode(ViewTexture);
289 | ClearBackground(SKYBLUE);
290 |
291 | BeginMode3D(Camera);
292 |
293 | // grid of cube trees on a plane to make a "world"
294 | DrawPlane(Vector3{ 0, 0, 0 }, Vector2{ 50, 50 }, BEIGE); // simple world plane
295 | float spacing = 4;
296 | int count = 5;
297 |
298 | for (float x = -count * spacing; x <= count * spacing; x += spacing)
299 | {
300 | for (float z = -count * spacing; z <= count * spacing; z += spacing)
301 | {
302 | Vector3 pos = { x, 0.5f, z };
303 |
304 | Vector3 min = { x - 0.5f,0,z - 0.5f };
305 | Vector3 max = { x + 0.5f,1,z + 0.5f };
306 |
307 | DrawCube(Vector3{ x, 1.5f, z }, 1, 1, 1, GREEN);
308 | DrawCube(Vector3{ x, 0.5f, z }, 0.25f, 1, 0.25f, BROWN);
309 | }
310 | }
311 |
312 | EndMode3D();
313 | EndTextureMode();
314 | }
315 |
316 | Texture2D GridTexture = { 0 };
317 | };
318 |
319 |
320 | ImageViewerWindow ImageViewer;
321 | SceneViewWindow SceneView;
322 |
323 | void DoMainMenu()
324 | {
325 | if (ImGui::BeginMainMenuBar())
326 | {
327 | if (ImGui::BeginMenu("File"))
328 | {
329 | if (ImGui::MenuItem("Exit"))
330 | Quit = true;
331 |
332 | ImGui::EndMenu();
333 | }
334 |
335 | if (ImGui::BeginMenu("Window"))
336 | {
337 | ImGui::MenuItem("ImGui Demo", nullptr, &ImGuiDemoOpen);
338 | ImGui::MenuItem("Image Viewer", nullptr, &ImageViewer.Open);
339 | ImGui::MenuItem("3D View", nullptr, &SceneView.Open);
340 |
341 | ImGui::EndMenu();
342 | }
343 | ImGui::EndMainMenuBar();
344 | }
345 | }
346 |
347 | int main(int argc, char* argv[])
348 | {
349 | // Initialization
350 | //--------------------------------------------------------------------------------------
351 | int screenWidth = 1900;
352 | int screenHeight = 900;
353 |
354 | // do not set the FLAG_WINDOW_HIGHDPI flag, that scales a low res framebuffer up to the native resolution.
355 | // use the native resolution and scale your geometry.
356 | SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT);
357 | InitWindow(screenWidth, screenHeight, "raylib-Extras [ImGui] example - Editor Example");
358 | SetTargetFPS(144);
359 | rlImGuiSetup(true);
360 | ImGui::GetIO().ConfigWindowsMoveFromTitleBarOnly = true;
361 |
362 | ImageViewer.Setup();
363 | ImageViewer.Open = true;
364 |
365 | SceneView.Setup();
366 | SceneView.Open = true;
367 |
368 | // Main game loop
369 | while (!WindowShouldClose() && !Quit) // Detect window close button or ESC key
370 | {
371 | ImageViewer.Update();
372 | SceneView.Update();
373 |
374 | BeginDrawing();
375 | ClearBackground(DARKGRAY);
376 |
377 | rlImGuiBegin();
378 | DoMainMenu();
379 |
380 | if (ImGuiDemoOpen)
381 | ImGui::ShowDemoWindow(&ImGuiDemoOpen);
382 |
383 | if (ImageViewer.Open)
384 | ImageViewer.Show();
385 |
386 | if (SceneView.Open)
387 | SceneView.Show();
388 |
389 | rlImGuiEnd();
390 |
391 | EndDrawing();
392 | //----------------------------------------------------------------------------------
393 | }
394 | rlImGuiShutdown();
395 |
396 | ImageViewer.Shutdown();
397 | SceneView.Shutdown();
398 |
399 | // De-Initialization
400 | //--------------------------------------------------------------------------------------
401 | CloseWindow(); // Close window and OpenGL context
402 | //--------------------------------------------------------------------------------------
403 |
404 | return 0;
405 | }
--------------------------------------------------------------------------------
/examples/imgui_style_example.cpp:
--------------------------------------------------------------------------------
1 | // Dear ImGui: standalone example application for Raylib with OpenGL
2 | // (Raylib is a simple learning library for game development)
3 |
4 | // Learn about Dear ImGui:
5 | // - FAQ https://dearimgui.com/faq
6 | // - Getting Started https://dearimgui.com/getting-started
7 | // - Documentation https://dearimgui.com/docs (same as your local docs/ folder).
8 | // - Introduction, links and more at the top of imgui.cpp
9 |
10 | #include "imgui.h"
11 | #include "imgui_impl_raylib.h"
12 | #include "raylib.h"
13 |
14 | #include
15 |
16 | // DPI scaling functions
17 | // Use these to scale any hardcoded values to the native display resolution
18 | float ScaleToDPIF(float value)
19 | {
20 | return GetWindowScaleDPI().x * value;
21 | }
22 |
23 | int ScaleToDPII(int value)
24 | {
25 | return int(GetWindowScaleDPI().x * value);
26 | }
27 |
28 | // Main code
29 | int main(int, char**)
30 | {
31 | // Setup raylib window
32 | // do not set the FLAG_WINDOW_HIGHDPI flag, that scales a low res framebuffer up to the native resolution.
33 | // use the native resolution and scale your geometry.
34 |
35 | SetConfigFlags(FLAG_WINDOW_RESIZABLE);
36 | InitWindow(1280, 720, "Dear ImGui Raylib(OpenGL) example");
37 |
38 | // Setup Dear ImGui context
39 | ImGui::CreateContext();
40 | ImGuiIO& io = ImGui::GetIO(); (void)io;
41 | io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
42 | io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
43 |
44 | // tell ImGui the display scale
45 | if (!IsWindowState(FLAG_WINDOW_HIGHDPI))
46 | {
47 | io.DisplayFramebufferScale.x = GetWindowScaleDPI().x;
48 | io.DisplayFramebufferScale.y = GetWindowScaleDPI().y;
49 | }
50 |
51 | // Setup Dear ImGui style
52 | ImGui::StyleColorsDark();
53 | //ImGui::StyleColorsLight();
54 |
55 | // Setup Platform/Renderer backends
56 | ImGui_ImplRaylib_Init();
57 |
58 | // Load Fonts
59 | // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
60 | // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
61 | // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
62 | // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
63 | // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering.
64 | // - Read 'docs/FONTS.md' for more instructions and details.
65 | // - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
66 |
67 | // to properly scale for high DPI displays, we need to cale the font size by the dpi sale
68 | static constexpr int DefaultFonSize = 13;
69 | ImFontConfig defaultConfig;
70 | defaultConfig.SizePixels = DefaultFonSize;
71 |
72 | if (!IsWindowState(FLAG_WINDOW_HIGHDPI))
73 | {
74 | defaultConfig.SizePixels = defaultConfig.SizePixels * GetWindowScaleDPI().y;
75 | defaultConfig.RasterizerMultiply = GetWindowScaleDPI().y;
76 | }
77 |
78 | defaultConfig.PixelSnapH = true;
79 | io.Fonts->AddFontDefault(&defaultConfig);
80 |
81 | //io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\segoeui.ttf", 18.0f);
82 | //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
83 | //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
84 | //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
85 | ImFont* font = io.Fonts->AddFontFromFileTTF("resources/driusstraight.ttf", ScaleToDPIF(18.0f), nullptr, io.Fonts->GetGlyphRangesJapanese());
86 | IM_ASSERT(font != nullptr);
87 |
88 | // Our state
89 | bool show_demo_window = true;
90 | bool show_another_window = false;
91 | ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
92 |
93 | // Main loop
94 | bool done = false;
95 | while (!done)
96 | {
97 | // Poll and handle events (inputs, window resize, etc.)
98 | // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
99 | // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
100 | // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
101 | // Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
102 | ImGui_ImplRaylib_ProcessEvents();
103 |
104 | // Start the Dear ImGui frame
105 | ImGui_ImplRaylib_NewFrame();
106 | ImGui::NewFrame();
107 |
108 | // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
109 | if (show_demo_window)
110 | ImGui::ShowDemoWindow(&show_demo_window);
111 |
112 | // 2. Show a simple window that we create ourselves. We use a Begin/End pair to create a named window.
113 | {
114 | static float f = 0.0f;
115 | static int counter = 0;
116 |
117 | ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
118 |
119 | ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
120 | ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
121 | ImGui::Checkbox("Another Window", &show_another_window);
122 |
123 | ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
124 | ImGui::ColorEdit3("clear color", &clear_color.x); // Edit 3 floats representing a color
125 |
126 | if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
127 | counter++;
128 | ImGui::SameLine();
129 | ImGui::Text("counter = %d", counter);
130 |
131 | ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate);
132 | ImGui::End();
133 | }
134 |
135 | // 3. Show another simple window.
136 | if (show_another_window)
137 | {
138 | ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
139 | ImGui::Text("Hello from another window!");
140 | if (ImGui::Button("Close Me"))
141 | show_another_window = false;
142 | ImGui::End();
143 | }
144 |
145 | // Rendering
146 | ImGui::Render();
147 | BeginDrawing();
148 | ClearBackground(Color{ uint8_t(clear_color.x * 255), uint8_t(clear_color.y * 255), uint8_t(clear_color.z * 255), uint8_t(clear_color.w * 255) });
149 | ImGui_ImplRaylib_RenderDrawData(ImGui::GetDrawData());
150 | EndDrawing();
151 |
152 | done = WindowShouldClose();
153 | }
154 | // Cleanup
155 | ImGui_ImplRaylib_Shutdown();
156 | ImGui::DestroyContext();
157 |
158 | CloseWindow();
159 |
160 | return 0;
161 | }
162 |
--------------------------------------------------------------------------------
/examples/simple.cpp:
--------------------------------------------------------------------------------
1 | /*******************************************************************************************
2 | *
3 | * raylib-extras [ImGui] example - Simple Integration
4 | *
5 | * This is a simple ImGui Integration
6 | * It is done using C++ but with C style code
7 | * It can be done in C as well if you use the C ImGui wrapper
8 | * https://github.com/cimgui/cimgui
9 | *
10 | * Copyright (c) 2021 Jeffery Myers
11 | *
12 | ********************************************************************************************/
13 |
14 | #include "raylib.h"
15 | #include "raymath.h"
16 |
17 | #include "imgui.h"
18 | #include "rlImGui.h"
19 |
20 |
21 | // DPI scaling functions
22 | float ScaleToDPIF(float value)
23 | {
24 | return GetWindowScaleDPI().x * value;
25 | }
26 |
27 | int ScaleToDPII(int value)
28 | {
29 | return int(GetWindowScaleDPI().x * value);
30 | }
31 |
32 | int main(int argc, char* argv[])
33 | {
34 | // Initialization
35 | //--------------------------------------------------------------------------------------
36 | int screenWidth = 1280;
37 | int screenHeight = 800;
38 |
39 | SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT | FLAG_WINDOW_RESIZABLE);
40 | InitWindow(screenWidth, screenHeight, "raylib-Extras [ImGui] example - simple ImGui Demo");
41 | SetTargetFPS(144);
42 | rlImGuiSetup(true);
43 |
44 | Texture image = LoadTexture("resources/parrots.png");
45 |
46 | // Main game loop
47 | while (!WindowShouldClose()) // Detect window close button or ESC key
48 | {
49 | BeginDrawing();
50 | ClearBackground(DARKGRAY);
51 |
52 | // start ImGui Conent
53 | rlImGuiBegin();
54 |
55 | // show ImGui Content
56 | bool open = true;
57 | ImGui::ShowDemoWindow(&open);
58 |
59 | open = true;
60 | if (ImGui::Begin("Test Window", &open))
61 | {
62 | ImGui::TextUnformatted(ICON_FA_JEDI);
63 |
64 | rlImGuiImage(&image);
65 | }
66 | ImGui::End();
67 |
68 | // end ImGui Content
69 | rlImGuiEnd();
70 |
71 | EndDrawing();
72 | //----------------------------------------------------------------------------------
73 | }
74 |
75 | // De-Initialization
76 | //--------------------------------------------------------------------------------------
77 | rlImGuiShutdown();
78 | UnloadTexture(image);
79 | CloseWindow(); // Close window and OpenGL context
80 | //--------------------------------------------------------------------------------------
81 |
82 | return 0;
83 | }
--------------------------------------------------------------------------------
/extras/FontAwsome_LICENSE.txt:
--------------------------------------------------------------------------------
1 | Font Awesome Free License
2 | -------------------------
3 |
4 | Font Awesome Free is free, open source, and GPL friendly. You can use it for
5 | commercial projects, open source projects, or really almost whatever you want.
6 | Full Font Awesome Free license: https://fontawesome.com/license/free.
7 |
8 | # Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
9 | In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
10 | packaged as SVG and JS file types.
11 |
12 | # Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
13 | In the Font Awesome Free download, the SIL OFL license applies to all icons
14 | packaged as web and desktop font files.
15 |
16 | # Code: MIT License (https://opensource.org/licenses/MIT)
17 | In the Font Awesome Free download, the MIT license applies to all non-font and
18 | non-icon files.
19 |
20 | # Attribution
21 | Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
22 | Awesome Free files already contain embedded comments with sufficient
23 | attribution, so you shouldn't need to do anything additional when using these
24 | files normally.
25 |
26 | We've kept attribution comments terse, so we ask that you do not actively work
27 | to remove them from files, especially code. They're a great way for folks to
28 | learn about Font Awesome.
29 |
30 | # Brand Icons
31 | All brand icons are trademarks of their respective owners. The use of these
32 | trademarks does not indicate endorsement of the trademark holder by Font
33 | Awesome, nor vice versa. **Please do not use brand logos for any purpose except
34 | to represent the company, product, or service to which they refer.**
35 |
--------------------------------------------------------------------------------
/extras/IconsFontAwesome6.h:
--------------------------------------------------------------------------------
1 | // Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
2 | // from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
3 | // for use with https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-solid-900.ttf
4 | #pragma once
5 |
6 | #define FONT_ICON_FILE_NAME_FAR "fa-regular-400.ttf"
7 | #define FONT_ICON_FILE_NAME_FAS "fa-solid-900.ttf"
8 |
9 | #define ICON_MIN_FA 0xe005
10 | #define ICON_MAX_16_FA 0xf8ff
11 | #define ICON_MAX_FA 0xf8ff
12 | #define ICON_FA_0 "0" // U+0030
13 | #define ICON_FA_1 "1" // U+0031
14 | #define ICON_FA_2 "2" // U+0032
15 | #define ICON_FA_3 "3" // U+0033
16 | #define ICON_FA_4 "4" // U+0034
17 | #define ICON_FA_5 "5" // U+0035
18 | #define ICON_FA_6 "6" // U+0036
19 | #define ICON_FA_7 "7" // U+0037
20 | #define ICON_FA_8 "8" // U+0038
21 | #define ICON_FA_9 "9" // U+0039
22 | #define ICON_FA_A "A" // U+0041
23 | #define ICON_FA_ADDRESS_BOOK "\xef\x8a\xb9" // U+f2b9
24 | #define ICON_FA_ADDRESS_CARD "\xef\x8a\xbb" // U+f2bb
25 | #define ICON_FA_ALIGN_CENTER "\xef\x80\xb7" // U+f037
26 | #define ICON_FA_ALIGN_JUSTIFY "\xef\x80\xb9" // U+f039
27 | #define ICON_FA_ALIGN_LEFT "\xef\x80\xb6" // U+f036
28 | #define ICON_FA_ALIGN_RIGHT "\xef\x80\xb8" // U+f038
29 | #define ICON_FA_ANCHOR "\xef\x84\xbd" // U+f13d
30 | #define ICON_FA_ANCHOR_CIRCLE_CHECK "\xee\x92\xaa" // U+e4aa
31 | #define ICON_FA_ANCHOR_CIRCLE_EXCLAMATION "\xee\x92\xab" // U+e4ab
32 | #define ICON_FA_ANCHOR_CIRCLE_XMARK "\xee\x92\xac" // U+e4ac
33 | #define ICON_FA_ANCHOR_LOCK "\xee\x92\xad" // U+e4ad
34 | #define ICON_FA_ANGLE_DOWN "\xef\x84\x87" // U+f107
35 | #define ICON_FA_ANGLE_LEFT "\xef\x84\x84" // U+f104
36 | #define ICON_FA_ANGLE_RIGHT "\xef\x84\x85" // U+f105
37 | #define ICON_FA_ANGLE_UP "\xef\x84\x86" // U+f106
38 | #define ICON_FA_ANGLES_DOWN "\xef\x84\x83" // U+f103
39 | #define ICON_FA_ANGLES_LEFT "\xef\x84\x80" // U+f100
40 | #define ICON_FA_ANGLES_RIGHT "\xef\x84\x81" // U+f101
41 | #define ICON_FA_ANGLES_UP "\xef\x84\x82" // U+f102
42 | #define ICON_FA_ANKH "\xef\x99\x84" // U+f644
43 | #define ICON_FA_APPLE_WHOLE "\xef\x97\x91" // U+f5d1
44 | #define ICON_FA_ARCHWAY "\xef\x95\x97" // U+f557
45 | #define ICON_FA_ARROW_DOWN "\xef\x81\xa3" // U+f063
46 | #define ICON_FA_ARROW_DOWN_1_9 "\xef\x85\xa2" // U+f162
47 | #define ICON_FA_ARROW_DOWN_9_1 "\xef\xa2\x86" // U+f886
48 | #define ICON_FA_ARROW_DOWN_A_Z "\xef\x85\x9d" // U+f15d
49 | #define ICON_FA_ARROW_DOWN_LONG "\xef\x85\xb5" // U+f175
50 | #define ICON_FA_ARROW_DOWN_SHORT_WIDE "\xef\xa2\x84" // U+f884
51 | #define ICON_FA_ARROW_DOWN_UP_ACROSS_LINE "\xee\x92\xaf" // U+e4af
52 | #define ICON_FA_ARROW_DOWN_UP_LOCK "\xee\x92\xb0" // U+e4b0
53 | #define ICON_FA_ARROW_DOWN_WIDE_SHORT "\xef\x85\xa0" // U+f160
54 | #define ICON_FA_ARROW_DOWN_Z_A "\xef\xa2\x81" // U+f881
55 | #define ICON_FA_ARROW_LEFT "\xef\x81\xa0" // U+f060
56 | #define ICON_FA_ARROW_LEFT_LONG "\xef\x85\xb7" // U+f177
57 | #define ICON_FA_ARROW_POINTER "\xef\x89\x85" // U+f245
58 | #define ICON_FA_ARROW_RIGHT "\xef\x81\xa1" // U+f061
59 | #define ICON_FA_ARROW_RIGHT_ARROW_LEFT "\xef\x83\xac" // U+f0ec
60 | #define ICON_FA_ARROW_RIGHT_FROM_BRACKET "\xef\x82\x8b" // U+f08b
61 | #define ICON_FA_ARROW_RIGHT_LONG "\xef\x85\xb8" // U+f178
62 | #define ICON_FA_ARROW_RIGHT_TO_BRACKET "\xef\x82\x90" // U+f090
63 | #define ICON_FA_ARROW_RIGHT_TO_CITY "\xee\x92\xb3" // U+e4b3
64 | #define ICON_FA_ARROW_ROTATE_LEFT "\xef\x83\xa2" // U+f0e2
65 | #define ICON_FA_ARROW_ROTATE_RIGHT "\xef\x80\x9e" // U+f01e
66 | #define ICON_FA_ARROW_TREND_DOWN "\xee\x82\x97" // U+e097
67 | #define ICON_FA_ARROW_TREND_UP "\xee\x82\x98" // U+e098
68 | #define ICON_FA_ARROW_TURN_DOWN "\xef\x85\x89" // U+f149
69 | #define ICON_FA_ARROW_TURN_UP "\xef\x85\x88" // U+f148
70 | #define ICON_FA_ARROW_UP "\xef\x81\xa2" // U+f062
71 | #define ICON_FA_ARROW_UP_1_9 "\xef\x85\xa3" // U+f163
72 | #define ICON_FA_ARROW_UP_9_1 "\xef\xa2\x87" // U+f887
73 | #define ICON_FA_ARROW_UP_A_Z "\xef\x85\x9e" // U+f15e
74 | #define ICON_FA_ARROW_UP_FROM_BRACKET "\xee\x82\x9a" // U+e09a
75 | #define ICON_FA_ARROW_UP_FROM_GROUND_WATER "\xee\x92\xb5" // U+e4b5
76 | #define ICON_FA_ARROW_UP_FROM_WATER_PUMP "\xee\x92\xb6" // U+e4b6
77 | #define ICON_FA_ARROW_UP_LONG "\xef\x85\xb6" // U+f176
78 | #define ICON_FA_ARROW_UP_RIGHT_DOTS "\xee\x92\xb7" // U+e4b7
79 | #define ICON_FA_ARROW_UP_RIGHT_FROM_SQUARE "\xef\x82\x8e" // U+f08e
80 | #define ICON_FA_ARROW_UP_SHORT_WIDE "\xef\xa2\x85" // U+f885
81 | #define ICON_FA_ARROW_UP_WIDE_SHORT "\xef\x85\xa1" // U+f161
82 | #define ICON_FA_ARROW_UP_Z_A "\xef\xa2\x82" // U+f882
83 | #define ICON_FA_ARROWS_DOWN_TO_LINE "\xee\x92\xb8" // U+e4b8
84 | #define ICON_FA_ARROWS_DOWN_TO_PEOPLE "\xee\x92\xb9" // U+e4b9
85 | #define ICON_FA_ARROWS_LEFT_RIGHT "\xef\x81\xbe" // U+f07e
86 | #define ICON_FA_ARROWS_LEFT_RIGHT_TO_LINE "\xee\x92\xba" // U+e4ba
87 | #define ICON_FA_ARROWS_ROTATE "\xef\x80\xa1" // U+f021
88 | #define ICON_FA_ARROWS_SPIN "\xee\x92\xbb" // U+e4bb
89 | #define ICON_FA_ARROWS_SPLIT_UP_AND_LEFT "\xee\x92\xbc" // U+e4bc
90 | #define ICON_FA_ARROWS_TO_CIRCLE "\xee\x92\xbd" // U+e4bd
91 | #define ICON_FA_ARROWS_TO_DOT "\xee\x92\xbe" // U+e4be
92 | #define ICON_FA_ARROWS_TO_EYE "\xee\x92\xbf" // U+e4bf
93 | #define ICON_FA_ARROWS_TURN_RIGHT "\xee\x93\x80" // U+e4c0
94 | #define ICON_FA_ARROWS_TURN_TO_DOTS "\xee\x93\x81" // U+e4c1
95 | #define ICON_FA_ARROWS_UP_DOWN "\xef\x81\xbd" // U+f07d
96 | #define ICON_FA_ARROWS_UP_DOWN_LEFT_RIGHT "\xef\x81\x87" // U+f047
97 | #define ICON_FA_ARROWS_UP_TO_LINE "\xee\x93\x82" // U+e4c2
98 | #define ICON_FA_ASTERISK "*" // U+002a
99 | #define ICON_FA_AT "@" // U+0040
100 | #define ICON_FA_ATOM "\xef\x97\x92" // U+f5d2
101 | #define ICON_FA_AUDIO_DESCRIPTION "\xef\x8a\x9e" // U+f29e
102 | #define ICON_FA_AUSTRAL_SIGN "\xee\x82\xa9" // U+e0a9
103 | #define ICON_FA_AWARD "\xef\x95\x99" // U+f559
104 | #define ICON_FA_B "B" // U+0042
105 | #define ICON_FA_BABY "\xef\x9d\xbc" // U+f77c
106 | #define ICON_FA_BABY_CARRIAGE "\xef\x9d\xbd" // U+f77d
107 | #define ICON_FA_BACKWARD "\xef\x81\x8a" // U+f04a
108 | #define ICON_FA_BACKWARD_FAST "\xef\x81\x89" // U+f049
109 | #define ICON_FA_BACKWARD_STEP "\xef\x81\x88" // U+f048
110 | #define ICON_FA_BACON "\xef\x9f\xa5" // U+f7e5
111 | #define ICON_FA_BACTERIA "\xee\x81\x99" // U+e059
112 | #define ICON_FA_BACTERIUM "\xee\x81\x9a" // U+e05a
113 | #define ICON_FA_BAG_SHOPPING "\xef\x8a\x90" // U+f290
114 | #define ICON_FA_BAHAI "\xef\x99\xa6" // U+f666
115 | #define ICON_FA_BAHT_SIGN "\xee\x82\xac" // U+e0ac
116 | #define ICON_FA_BAN "\xef\x81\x9e" // U+f05e
117 | #define ICON_FA_BAN_SMOKING "\xef\x95\x8d" // U+f54d
118 | #define ICON_FA_BANDAGE "\xef\x91\xa2" // U+f462
119 | #define ICON_FA_BARCODE "\xef\x80\xaa" // U+f02a
120 | #define ICON_FA_BARS "\xef\x83\x89" // U+f0c9
121 | #define ICON_FA_BARS_PROGRESS "\xef\xa0\xa8" // U+f828
122 | #define ICON_FA_BARS_STAGGERED "\xef\x95\x90" // U+f550
123 | #define ICON_FA_BASEBALL "\xef\x90\xb3" // U+f433
124 | #define ICON_FA_BASEBALL_BAT_BALL "\xef\x90\xb2" // U+f432
125 | #define ICON_FA_BASKET_SHOPPING "\xef\x8a\x91" // U+f291
126 | #define ICON_FA_BASKETBALL "\xef\x90\xb4" // U+f434
127 | #define ICON_FA_BATH "\xef\x8b\x8d" // U+f2cd
128 | #define ICON_FA_BATTERY_EMPTY "\xef\x89\x84" // U+f244
129 | #define ICON_FA_BATTERY_FULL "\xef\x89\x80" // U+f240
130 | #define ICON_FA_BATTERY_HALF "\xef\x89\x82" // U+f242
131 | #define ICON_FA_BATTERY_QUARTER "\xef\x89\x83" // U+f243
132 | #define ICON_FA_BATTERY_THREE_QUARTERS "\xef\x89\x81" // U+f241
133 | #define ICON_FA_BED "\xef\x88\xb6" // U+f236
134 | #define ICON_FA_BED_PULSE "\xef\x92\x87" // U+f487
135 | #define ICON_FA_BEER_MUG_EMPTY "\xef\x83\xbc" // U+f0fc
136 | #define ICON_FA_BELL "\xef\x83\xb3" // U+f0f3
137 | #define ICON_FA_BELL_CONCIERGE "\xef\x95\xa2" // U+f562
138 | #define ICON_FA_BELL_SLASH "\xef\x87\xb6" // U+f1f6
139 | #define ICON_FA_BEZIER_CURVE "\xef\x95\x9b" // U+f55b
140 | #define ICON_FA_BICYCLE "\xef\x88\x86" // U+f206
141 | #define ICON_FA_BINOCULARS "\xef\x87\xa5" // U+f1e5
142 | #define ICON_FA_BIOHAZARD "\xef\x9e\x80" // U+f780
143 | #define ICON_FA_BITCOIN_SIGN "\xee\x82\xb4" // U+e0b4
144 | #define ICON_FA_BLENDER "\xef\x94\x97" // U+f517
145 | #define ICON_FA_BLENDER_PHONE "\xef\x9a\xb6" // U+f6b6
146 | #define ICON_FA_BLOG "\xef\x9e\x81" // U+f781
147 | #define ICON_FA_BOLD "\xef\x80\xb2" // U+f032
148 | #define ICON_FA_BOLT "\xef\x83\xa7" // U+f0e7
149 | #define ICON_FA_BOLT_LIGHTNING "\xee\x82\xb7" // U+e0b7
150 | #define ICON_FA_BOMB "\xef\x87\xa2" // U+f1e2
151 | #define ICON_FA_BONE "\xef\x97\x97" // U+f5d7
152 | #define ICON_FA_BONG "\xef\x95\x9c" // U+f55c
153 | #define ICON_FA_BOOK "\xef\x80\xad" // U+f02d
154 | #define ICON_FA_BOOK_ATLAS "\xef\x95\x98" // U+f558
155 | #define ICON_FA_BOOK_BIBLE "\xef\x99\x87" // U+f647
156 | #define ICON_FA_BOOK_BOOKMARK "\xee\x82\xbb" // U+e0bb
157 | #define ICON_FA_BOOK_JOURNAL_WHILLS "\xef\x99\xaa" // U+f66a
158 | #define ICON_FA_BOOK_MEDICAL "\xef\x9f\xa6" // U+f7e6
159 | #define ICON_FA_BOOK_OPEN "\xef\x94\x98" // U+f518
160 | #define ICON_FA_BOOK_OPEN_READER "\xef\x97\x9a" // U+f5da
161 | #define ICON_FA_BOOK_QURAN "\xef\x9a\x87" // U+f687
162 | #define ICON_FA_BOOK_SKULL "\xef\x9a\xb7" // U+f6b7
163 | #define ICON_FA_BOOKMARK "\xef\x80\xae" // U+f02e
164 | #define ICON_FA_BORDER_ALL "\xef\xa1\x8c" // U+f84c
165 | #define ICON_FA_BORDER_NONE "\xef\xa1\x90" // U+f850
166 | #define ICON_FA_BORDER_TOP_LEFT "\xef\xa1\x93" // U+f853
167 | #define ICON_FA_BORE_HOLE "\xee\x93\x83" // U+e4c3
168 | #define ICON_FA_BOTTLE_DROPLET "\xee\x93\x84" // U+e4c4
169 | #define ICON_FA_BOTTLE_WATER "\xee\x93\x85" // U+e4c5
170 | #define ICON_FA_BOWL_FOOD "\xee\x93\x86" // U+e4c6
171 | #define ICON_FA_BOWL_RICE "\xee\x8b\xab" // U+e2eb
172 | #define ICON_FA_BOWLING_BALL "\xef\x90\xb6" // U+f436
173 | #define ICON_FA_BOX "\xef\x91\xa6" // U+f466
174 | #define ICON_FA_BOX_ARCHIVE "\xef\x86\x87" // U+f187
175 | #define ICON_FA_BOX_OPEN "\xef\x92\x9e" // U+f49e
176 | #define ICON_FA_BOX_TISSUE "\xee\x81\x9b" // U+e05b
177 | #define ICON_FA_BOXES_PACKING "\xee\x93\x87" // U+e4c7
178 | #define ICON_FA_BOXES_STACKED "\xef\x91\xa8" // U+f468
179 | #define ICON_FA_BRAILLE "\xef\x8a\xa1" // U+f2a1
180 | #define ICON_FA_BRAIN "\xef\x97\x9c" // U+f5dc
181 | #define ICON_FA_BRAZILIAN_REAL_SIGN "\xee\x91\xac" // U+e46c
182 | #define ICON_FA_BREAD_SLICE "\xef\x9f\xac" // U+f7ec
183 | #define ICON_FA_BRIDGE "\xee\x93\x88" // U+e4c8
184 | #define ICON_FA_BRIDGE_CIRCLE_CHECK "\xee\x93\x89" // U+e4c9
185 | #define ICON_FA_BRIDGE_CIRCLE_EXCLAMATION "\xee\x93\x8a" // U+e4ca
186 | #define ICON_FA_BRIDGE_CIRCLE_XMARK "\xee\x93\x8b" // U+e4cb
187 | #define ICON_FA_BRIDGE_LOCK "\xee\x93\x8c" // U+e4cc
188 | #define ICON_FA_BRIDGE_WATER "\xee\x93\x8e" // U+e4ce
189 | #define ICON_FA_BRIEFCASE "\xef\x82\xb1" // U+f0b1
190 | #define ICON_FA_BRIEFCASE_MEDICAL "\xef\x91\xa9" // U+f469
191 | #define ICON_FA_BROOM "\xef\x94\x9a" // U+f51a
192 | #define ICON_FA_BROOM_BALL "\xef\x91\x98" // U+f458
193 | #define ICON_FA_BRUSH "\xef\x95\x9d" // U+f55d
194 | #define ICON_FA_BUCKET "\xee\x93\x8f" // U+e4cf
195 | #define ICON_FA_BUG "\xef\x86\x88" // U+f188
196 | #define ICON_FA_BUG_SLASH "\xee\x92\x90" // U+e490
197 | #define ICON_FA_BUGS "\xee\x93\x90" // U+e4d0
198 | #define ICON_FA_BUILDING "\xef\x86\xad" // U+f1ad
199 | #define ICON_FA_BUILDING_CIRCLE_ARROW_RIGHT "\xee\x93\x91" // U+e4d1
200 | #define ICON_FA_BUILDING_CIRCLE_CHECK "\xee\x93\x92" // U+e4d2
201 | #define ICON_FA_BUILDING_CIRCLE_EXCLAMATION "\xee\x93\x93" // U+e4d3
202 | #define ICON_FA_BUILDING_CIRCLE_XMARK "\xee\x93\x94" // U+e4d4
203 | #define ICON_FA_BUILDING_COLUMNS "\xef\x86\x9c" // U+f19c
204 | #define ICON_FA_BUILDING_FLAG "\xee\x93\x95" // U+e4d5
205 | #define ICON_FA_BUILDING_LOCK "\xee\x93\x96" // U+e4d6
206 | #define ICON_FA_BUILDING_NGO "\xee\x93\x97" // U+e4d7
207 | #define ICON_FA_BUILDING_SHIELD "\xee\x93\x98" // U+e4d8
208 | #define ICON_FA_BUILDING_UN "\xee\x93\x99" // U+e4d9
209 | #define ICON_FA_BUILDING_USER "\xee\x93\x9a" // U+e4da
210 | #define ICON_FA_BUILDING_WHEAT "\xee\x93\x9b" // U+e4db
211 | #define ICON_FA_BULLHORN "\xef\x82\xa1" // U+f0a1
212 | #define ICON_FA_BULLSEYE "\xef\x85\x80" // U+f140
213 | #define ICON_FA_BURGER "\xef\xa0\x85" // U+f805
214 | #define ICON_FA_BURST "\xee\x93\x9c" // U+e4dc
215 | #define ICON_FA_BUS "\xef\x88\x87" // U+f207
216 | #define ICON_FA_BUS_SIMPLE "\xef\x95\x9e" // U+f55e
217 | #define ICON_FA_BUSINESS_TIME "\xef\x99\x8a" // U+f64a
218 | #define ICON_FA_C "C" // U+0043
219 | #define ICON_FA_CAKE_CANDLES "\xef\x87\xbd" // U+f1fd
220 | #define ICON_FA_CALCULATOR "\xef\x87\xac" // U+f1ec
221 | #define ICON_FA_CALENDAR "\xef\x84\xb3" // U+f133
222 | #define ICON_FA_CALENDAR_CHECK "\xef\x89\xb4" // U+f274
223 | #define ICON_FA_CALENDAR_DAY "\xef\x9e\x83" // U+f783
224 | #define ICON_FA_CALENDAR_DAYS "\xef\x81\xb3" // U+f073
225 | #define ICON_FA_CALENDAR_MINUS "\xef\x89\xb2" // U+f272
226 | #define ICON_FA_CALENDAR_PLUS "\xef\x89\xb1" // U+f271
227 | #define ICON_FA_CALENDAR_WEEK "\xef\x9e\x84" // U+f784
228 | #define ICON_FA_CALENDAR_XMARK "\xef\x89\xb3" // U+f273
229 | #define ICON_FA_CAMERA "\xef\x80\xb0" // U+f030
230 | #define ICON_FA_CAMERA_RETRO "\xef\x82\x83" // U+f083
231 | #define ICON_FA_CAMERA_ROTATE "\xee\x83\x98" // U+e0d8
232 | #define ICON_FA_CAMPGROUND "\xef\x9a\xbb" // U+f6bb
233 | #define ICON_FA_CANDY_CANE "\xef\x9e\x86" // U+f786
234 | #define ICON_FA_CANNABIS "\xef\x95\x9f" // U+f55f
235 | #define ICON_FA_CAPSULES "\xef\x91\xab" // U+f46b
236 | #define ICON_FA_CAR "\xef\x86\xb9" // U+f1b9
237 | #define ICON_FA_CAR_BATTERY "\xef\x97\x9f" // U+f5df
238 | #define ICON_FA_CAR_BURST "\xef\x97\xa1" // U+f5e1
239 | #define ICON_FA_CAR_ON "\xee\x93\x9d" // U+e4dd
240 | #define ICON_FA_CAR_REAR "\xef\x97\x9e" // U+f5de
241 | #define ICON_FA_CAR_SIDE "\xef\x97\xa4" // U+f5e4
242 | #define ICON_FA_CAR_TUNNEL "\xee\x93\x9e" // U+e4de
243 | #define ICON_FA_CARAVAN "\xef\xa3\xbf" // U+f8ff
244 | #define ICON_FA_CARET_DOWN "\xef\x83\x97" // U+f0d7
245 | #define ICON_FA_CARET_LEFT "\xef\x83\x99" // U+f0d9
246 | #define ICON_FA_CARET_RIGHT "\xef\x83\x9a" // U+f0da
247 | #define ICON_FA_CARET_UP "\xef\x83\x98" // U+f0d8
248 | #define ICON_FA_CARROT "\xef\x9e\x87" // U+f787
249 | #define ICON_FA_CART_ARROW_DOWN "\xef\x88\x98" // U+f218
250 | #define ICON_FA_CART_FLATBED "\xef\x91\xb4" // U+f474
251 | #define ICON_FA_CART_FLATBED_SUITCASE "\xef\x96\x9d" // U+f59d
252 | #define ICON_FA_CART_PLUS "\xef\x88\x97" // U+f217
253 | #define ICON_FA_CART_SHOPPING "\xef\x81\xba" // U+f07a
254 | #define ICON_FA_CASH_REGISTER "\xef\x9e\x88" // U+f788
255 | #define ICON_FA_CAT "\xef\x9a\xbe" // U+f6be
256 | #define ICON_FA_CEDI_SIGN "\xee\x83\x9f" // U+e0df
257 | #define ICON_FA_CENT_SIGN "\xee\x8f\xb5" // U+e3f5
258 | #define ICON_FA_CERTIFICATE "\xef\x82\xa3" // U+f0a3
259 | #define ICON_FA_CHAIR "\xef\x9b\x80" // U+f6c0
260 | #define ICON_FA_CHALKBOARD "\xef\x94\x9b" // U+f51b
261 | #define ICON_FA_CHALKBOARD_USER "\xef\x94\x9c" // U+f51c
262 | #define ICON_FA_CHAMPAGNE_GLASSES "\xef\x9e\x9f" // U+f79f
263 | #define ICON_FA_CHARGING_STATION "\xef\x97\xa7" // U+f5e7
264 | #define ICON_FA_CHART_AREA "\xef\x87\xbe" // U+f1fe
265 | #define ICON_FA_CHART_BAR "\xef\x82\x80" // U+f080
266 | #define ICON_FA_CHART_COLUMN "\xee\x83\xa3" // U+e0e3
267 | #define ICON_FA_CHART_GANTT "\xee\x83\xa4" // U+e0e4
268 | #define ICON_FA_CHART_LINE "\xef\x88\x81" // U+f201
269 | #define ICON_FA_CHART_PIE "\xef\x88\x80" // U+f200
270 | #define ICON_FA_CHART_SIMPLE "\xee\x91\xb3" // U+e473
271 | #define ICON_FA_CHECK "\xef\x80\x8c" // U+f00c
272 | #define ICON_FA_CHECK_DOUBLE "\xef\x95\xa0" // U+f560
273 | #define ICON_FA_CHECK_TO_SLOT "\xef\x9d\xb2" // U+f772
274 | #define ICON_FA_CHEESE "\xef\x9f\xaf" // U+f7ef
275 | #define ICON_FA_CHESS "\xef\x90\xb9" // U+f439
276 | #define ICON_FA_CHESS_BISHOP "\xef\x90\xba" // U+f43a
277 | #define ICON_FA_CHESS_BOARD "\xef\x90\xbc" // U+f43c
278 | #define ICON_FA_CHESS_KING "\xef\x90\xbf" // U+f43f
279 | #define ICON_FA_CHESS_KNIGHT "\xef\x91\x81" // U+f441
280 | #define ICON_FA_CHESS_PAWN "\xef\x91\x83" // U+f443
281 | #define ICON_FA_CHESS_QUEEN "\xef\x91\x85" // U+f445
282 | #define ICON_FA_CHESS_ROOK "\xef\x91\x87" // U+f447
283 | #define ICON_FA_CHEVRON_DOWN "\xef\x81\xb8" // U+f078
284 | #define ICON_FA_CHEVRON_LEFT "\xef\x81\x93" // U+f053
285 | #define ICON_FA_CHEVRON_RIGHT "\xef\x81\x94" // U+f054
286 | #define ICON_FA_CHEVRON_UP "\xef\x81\xb7" // U+f077
287 | #define ICON_FA_CHILD "\xef\x86\xae" // U+f1ae
288 | #define ICON_FA_CHILD_DRESS "\xee\x96\x9c" // U+e59c
289 | #define ICON_FA_CHILD_REACHING "\xee\x96\x9d" // U+e59d
290 | #define ICON_FA_CHILD_RIFLE "\xee\x93\xa0" // U+e4e0
291 | #define ICON_FA_CHILDREN "\xee\x93\xa1" // U+e4e1
292 | #define ICON_FA_CHURCH "\xef\x94\x9d" // U+f51d
293 | #define ICON_FA_CIRCLE "\xef\x84\x91" // U+f111
294 | #define ICON_FA_CIRCLE_ARROW_DOWN "\xef\x82\xab" // U+f0ab
295 | #define ICON_FA_CIRCLE_ARROW_LEFT "\xef\x82\xa8" // U+f0a8
296 | #define ICON_FA_CIRCLE_ARROW_RIGHT "\xef\x82\xa9" // U+f0a9
297 | #define ICON_FA_CIRCLE_ARROW_UP "\xef\x82\xaa" // U+f0aa
298 | #define ICON_FA_CIRCLE_CHECK "\xef\x81\x98" // U+f058
299 | #define ICON_FA_CIRCLE_CHEVRON_DOWN "\xef\x84\xba" // U+f13a
300 | #define ICON_FA_CIRCLE_CHEVRON_LEFT "\xef\x84\xb7" // U+f137
301 | #define ICON_FA_CIRCLE_CHEVRON_RIGHT "\xef\x84\xb8" // U+f138
302 | #define ICON_FA_CIRCLE_CHEVRON_UP "\xef\x84\xb9" // U+f139
303 | #define ICON_FA_CIRCLE_DOLLAR_TO_SLOT "\xef\x92\xb9" // U+f4b9
304 | #define ICON_FA_CIRCLE_DOT "\xef\x86\x92" // U+f192
305 | #define ICON_FA_CIRCLE_DOWN "\xef\x8d\x98" // U+f358
306 | #define ICON_FA_CIRCLE_EXCLAMATION "\xef\x81\xaa" // U+f06a
307 | #define ICON_FA_CIRCLE_H "\xef\x91\xbe" // U+f47e
308 | #define ICON_FA_CIRCLE_HALF_STROKE "\xef\x81\x82" // U+f042
309 | #define ICON_FA_CIRCLE_INFO "\xef\x81\x9a" // U+f05a
310 | #define ICON_FA_CIRCLE_LEFT "\xef\x8d\x99" // U+f359
311 | #define ICON_FA_CIRCLE_MINUS "\xef\x81\x96" // U+f056
312 | #define ICON_FA_CIRCLE_NODES "\xee\x93\xa2" // U+e4e2
313 | #define ICON_FA_CIRCLE_NOTCH "\xef\x87\x8e" // U+f1ce
314 | #define ICON_FA_CIRCLE_PAUSE "\xef\x8a\x8b" // U+f28b
315 | #define ICON_FA_CIRCLE_PLAY "\xef\x85\x84" // U+f144
316 | #define ICON_FA_CIRCLE_PLUS "\xef\x81\x95" // U+f055
317 | #define ICON_FA_CIRCLE_QUESTION "\xef\x81\x99" // U+f059
318 | #define ICON_FA_CIRCLE_RADIATION "\xef\x9e\xba" // U+f7ba
319 | #define ICON_FA_CIRCLE_RIGHT "\xef\x8d\x9a" // U+f35a
320 | #define ICON_FA_CIRCLE_STOP "\xef\x8a\x8d" // U+f28d
321 | #define ICON_FA_CIRCLE_UP "\xef\x8d\x9b" // U+f35b
322 | #define ICON_FA_CIRCLE_USER "\xef\x8a\xbd" // U+f2bd
323 | #define ICON_FA_CIRCLE_XMARK "\xef\x81\x97" // U+f057
324 | #define ICON_FA_CITY "\xef\x99\x8f" // U+f64f
325 | #define ICON_FA_CLAPPERBOARD "\xee\x84\xb1" // U+e131
326 | #define ICON_FA_CLIPBOARD "\xef\x8c\xa8" // U+f328
327 | #define ICON_FA_CLIPBOARD_CHECK "\xef\x91\xac" // U+f46c
328 | #define ICON_FA_CLIPBOARD_LIST "\xef\x91\xad" // U+f46d
329 | #define ICON_FA_CLIPBOARD_QUESTION "\xee\x93\xa3" // U+e4e3
330 | #define ICON_FA_CLIPBOARD_USER "\xef\x9f\xb3" // U+f7f3
331 | #define ICON_FA_CLOCK "\xef\x80\x97" // U+f017
332 | #define ICON_FA_CLOCK_ROTATE_LEFT "\xef\x87\x9a" // U+f1da
333 | #define ICON_FA_CLONE "\xef\x89\x8d" // U+f24d
334 | #define ICON_FA_CLOSED_CAPTIONING "\xef\x88\x8a" // U+f20a
335 | #define ICON_FA_CLOUD "\xef\x83\x82" // U+f0c2
336 | #define ICON_FA_CLOUD_ARROW_DOWN "\xef\x83\xad" // U+f0ed
337 | #define ICON_FA_CLOUD_ARROW_UP "\xef\x83\xae" // U+f0ee
338 | #define ICON_FA_CLOUD_BOLT "\xef\x9d\xac" // U+f76c
339 | #define ICON_FA_CLOUD_MEATBALL "\xef\x9c\xbb" // U+f73b
340 | #define ICON_FA_CLOUD_MOON "\xef\x9b\x83" // U+f6c3
341 | #define ICON_FA_CLOUD_MOON_RAIN "\xef\x9c\xbc" // U+f73c
342 | #define ICON_FA_CLOUD_RAIN "\xef\x9c\xbd" // U+f73d
343 | #define ICON_FA_CLOUD_SHOWERS_HEAVY "\xef\x9d\x80" // U+f740
344 | #define ICON_FA_CLOUD_SHOWERS_WATER "\xee\x93\xa4" // U+e4e4
345 | #define ICON_FA_CLOUD_SUN "\xef\x9b\x84" // U+f6c4
346 | #define ICON_FA_CLOUD_SUN_RAIN "\xef\x9d\x83" // U+f743
347 | #define ICON_FA_CLOVER "\xee\x84\xb9" // U+e139
348 | #define ICON_FA_CODE "\xef\x84\xa1" // U+f121
349 | #define ICON_FA_CODE_BRANCH "\xef\x84\xa6" // U+f126
350 | #define ICON_FA_CODE_COMMIT "\xef\x8e\x86" // U+f386
351 | #define ICON_FA_CODE_COMPARE "\xee\x84\xba" // U+e13a
352 | #define ICON_FA_CODE_FORK "\xee\x84\xbb" // U+e13b
353 | #define ICON_FA_CODE_MERGE "\xef\x8e\x87" // U+f387
354 | #define ICON_FA_CODE_PULL_REQUEST "\xee\x84\xbc" // U+e13c
355 | #define ICON_FA_COINS "\xef\x94\x9e" // U+f51e
356 | #define ICON_FA_COLON_SIGN "\xee\x85\x80" // U+e140
357 | #define ICON_FA_COMMENT "\xef\x81\xb5" // U+f075
358 | #define ICON_FA_COMMENT_DOLLAR "\xef\x99\x91" // U+f651
359 | #define ICON_FA_COMMENT_DOTS "\xef\x92\xad" // U+f4ad
360 | #define ICON_FA_COMMENT_MEDICAL "\xef\x9f\xb5" // U+f7f5
361 | #define ICON_FA_COMMENT_SLASH "\xef\x92\xb3" // U+f4b3
362 | #define ICON_FA_COMMENT_SMS "\xef\x9f\x8d" // U+f7cd
363 | #define ICON_FA_COMMENTS "\xef\x82\x86" // U+f086
364 | #define ICON_FA_COMMENTS_DOLLAR "\xef\x99\x93" // U+f653
365 | #define ICON_FA_COMPACT_DISC "\xef\x94\x9f" // U+f51f
366 | #define ICON_FA_COMPASS "\xef\x85\x8e" // U+f14e
367 | #define ICON_FA_COMPASS_DRAFTING "\xef\x95\xa8" // U+f568
368 | #define ICON_FA_COMPRESS "\xef\x81\xa6" // U+f066
369 | #define ICON_FA_COMPUTER "\xee\x93\xa5" // U+e4e5
370 | #define ICON_FA_COMPUTER_MOUSE "\xef\xa3\x8c" // U+f8cc
371 | #define ICON_FA_COOKIE "\xef\x95\xa3" // U+f563
372 | #define ICON_FA_COOKIE_BITE "\xef\x95\xa4" // U+f564
373 | #define ICON_FA_COPY "\xef\x83\x85" // U+f0c5
374 | #define ICON_FA_COPYRIGHT "\xef\x87\xb9" // U+f1f9
375 | #define ICON_FA_COUCH "\xef\x92\xb8" // U+f4b8
376 | #define ICON_FA_COW "\xef\x9b\x88" // U+f6c8
377 | #define ICON_FA_CREDIT_CARD "\xef\x82\x9d" // U+f09d
378 | #define ICON_FA_CROP "\xef\x84\xa5" // U+f125
379 | #define ICON_FA_CROP_SIMPLE "\xef\x95\xa5" // U+f565
380 | #define ICON_FA_CROSS "\xef\x99\x94" // U+f654
381 | #define ICON_FA_CROSSHAIRS "\xef\x81\x9b" // U+f05b
382 | #define ICON_FA_CROW "\xef\x94\xa0" // U+f520
383 | #define ICON_FA_CROWN "\xef\x94\xa1" // U+f521
384 | #define ICON_FA_CRUTCH "\xef\x9f\xb7" // U+f7f7
385 | #define ICON_FA_CRUZEIRO_SIGN "\xee\x85\x92" // U+e152
386 | #define ICON_FA_CUBE "\xef\x86\xb2" // U+f1b2
387 | #define ICON_FA_CUBES "\xef\x86\xb3" // U+f1b3
388 | #define ICON_FA_CUBES_STACKED "\xee\x93\xa6" // U+e4e6
389 | #define ICON_FA_D "D" // U+0044
390 | #define ICON_FA_DATABASE "\xef\x87\x80" // U+f1c0
391 | #define ICON_FA_DELETE_LEFT "\xef\x95\x9a" // U+f55a
392 | #define ICON_FA_DEMOCRAT "\xef\x9d\x87" // U+f747
393 | #define ICON_FA_DESKTOP "\xef\x8e\x90" // U+f390
394 | #define ICON_FA_DHARMACHAKRA "\xef\x99\x95" // U+f655
395 | #define ICON_FA_DIAGRAM_NEXT "\xee\x91\xb6" // U+e476
396 | #define ICON_FA_DIAGRAM_PREDECESSOR "\xee\x91\xb7" // U+e477
397 | #define ICON_FA_DIAGRAM_PROJECT "\xef\x95\x82" // U+f542
398 | #define ICON_FA_DIAGRAM_SUCCESSOR "\xee\x91\xba" // U+e47a
399 | #define ICON_FA_DIAMOND "\xef\x88\x99" // U+f219
400 | #define ICON_FA_DIAMOND_TURN_RIGHT "\xef\x97\xab" // U+f5eb
401 | #define ICON_FA_DICE "\xef\x94\xa2" // U+f522
402 | #define ICON_FA_DICE_D20 "\xef\x9b\x8f" // U+f6cf
403 | #define ICON_FA_DICE_D6 "\xef\x9b\x91" // U+f6d1
404 | #define ICON_FA_DICE_FIVE "\xef\x94\xa3" // U+f523
405 | #define ICON_FA_DICE_FOUR "\xef\x94\xa4" // U+f524
406 | #define ICON_FA_DICE_ONE "\xef\x94\xa5" // U+f525
407 | #define ICON_FA_DICE_SIX "\xef\x94\xa6" // U+f526
408 | #define ICON_FA_DICE_THREE "\xef\x94\xa7" // U+f527
409 | #define ICON_FA_DICE_TWO "\xef\x94\xa8" // U+f528
410 | #define ICON_FA_DISEASE "\xef\x9f\xba" // U+f7fa
411 | #define ICON_FA_DISPLAY "\xee\x85\xa3" // U+e163
412 | #define ICON_FA_DIVIDE "\xef\x94\xa9" // U+f529
413 | #define ICON_FA_DNA "\xef\x91\xb1" // U+f471
414 | #define ICON_FA_DOG "\xef\x9b\x93" // U+f6d3
415 | #define ICON_FA_DOLLAR_SIGN "$" // U+0024
416 | #define ICON_FA_DOLLY "\xef\x91\xb2" // U+f472
417 | #define ICON_FA_DONG_SIGN "\xee\x85\xa9" // U+e169
418 | #define ICON_FA_DOOR_CLOSED "\xef\x94\xaa" // U+f52a
419 | #define ICON_FA_DOOR_OPEN "\xef\x94\xab" // U+f52b
420 | #define ICON_FA_DOVE "\xef\x92\xba" // U+f4ba
421 | #define ICON_FA_DOWN_LEFT_AND_UP_RIGHT_TO_CENTER "\xef\x90\xa2" // U+f422
422 | #define ICON_FA_DOWN_LONG "\xef\x8c\x89" // U+f309
423 | #define ICON_FA_DOWNLOAD "\xef\x80\x99" // U+f019
424 | #define ICON_FA_DRAGON "\xef\x9b\x95" // U+f6d5
425 | #define ICON_FA_DRAW_POLYGON "\xef\x97\xae" // U+f5ee
426 | #define ICON_FA_DROPLET "\xef\x81\x83" // U+f043
427 | #define ICON_FA_DROPLET_SLASH "\xef\x97\x87" // U+f5c7
428 | #define ICON_FA_DRUM "\xef\x95\xa9" // U+f569
429 | #define ICON_FA_DRUM_STEELPAN "\xef\x95\xaa" // U+f56a
430 | #define ICON_FA_DRUMSTICK_BITE "\xef\x9b\x97" // U+f6d7
431 | #define ICON_FA_DUMBBELL "\xef\x91\x8b" // U+f44b
432 | #define ICON_FA_DUMPSTER "\xef\x9e\x93" // U+f793
433 | #define ICON_FA_DUMPSTER_FIRE "\xef\x9e\x94" // U+f794
434 | #define ICON_FA_DUNGEON "\xef\x9b\x99" // U+f6d9
435 | #define ICON_FA_E "E" // U+0045
436 | #define ICON_FA_EAR_DEAF "\xef\x8a\xa4" // U+f2a4
437 | #define ICON_FA_EAR_LISTEN "\xef\x8a\xa2" // U+f2a2
438 | #define ICON_FA_EARTH_AFRICA "\xef\x95\xbc" // U+f57c
439 | #define ICON_FA_EARTH_AMERICAS "\xef\x95\xbd" // U+f57d
440 | #define ICON_FA_EARTH_ASIA "\xef\x95\xbe" // U+f57e
441 | #define ICON_FA_EARTH_EUROPE "\xef\x9e\xa2" // U+f7a2
442 | #define ICON_FA_EARTH_OCEANIA "\xee\x91\xbb" // U+e47b
443 | #define ICON_FA_EGG "\xef\x9f\xbb" // U+f7fb
444 | #define ICON_FA_EJECT "\xef\x81\x92" // U+f052
445 | #define ICON_FA_ELEVATOR "\xee\x85\xad" // U+e16d
446 | #define ICON_FA_ELLIPSIS "\xef\x85\x81" // U+f141
447 | #define ICON_FA_ELLIPSIS_VERTICAL "\xef\x85\x82" // U+f142
448 | #define ICON_FA_ENVELOPE "\xef\x83\xa0" // U+f0e0
449 | #define ICON_FA_ENVELOPE_CIRCLE_CHECK "\xee\x93\xa8" // U+e4e8
450 | #define ICON_FA_ENVELOPE_OPEN "\xef\x8a\xb6" // U+f2b6
451 | #define ICON_FA_ENVELOPE_OPEN_TEXT "\xef\x99\x98" // U+f658
452 | #define ICON_FA_ENVELOPES_BULK "\xef\x99\xb4" // U+f674
453 | #define ICON_FA_EQUALS "=" // U+003d
454 | #define ICON_FA_ERASER "\xef\x84\xad" // U+f12d
455 | #define ICON_FA_ETHERNET "\xef\x9e\x96" // U+f796
456 | #define ICON_FA_EURO_SIGN "\xef\x85\x93" // U+f153
457 | #define ICON_FA_EXCLAMATION "!" // U+0021
458 | #define ICON_FA_EXPAND "\xef\x81\xa5" // U+f065
459 | #define ICON_FA_EXPLOSION "\xee\x93\xa9" // U+e4e9
460 | #define ICON_FA_EYE "\xef\x81\xae" // U+f06e
461 | #define ICON_FA_EYE_DROPPER "\xef\x87\xbb" // U+f1fb
462 | #define ICON_FA_EYE_LOW_VISION "\xef\x8a\xa8" // U+f2a8
463 | #define ICON_FA_EYE_SLASH "\xef\x81\xb0" // U+f070
464 | #define ICON_FA_F "F" // U+0046
465 | #define ICON_FA_FACE_ANGRY "\xef\x95\x96" // U+f556
466 | #define ICON_FA_FACE_DIZZY "\xef\x95\xa7" // U+f567
467 | #define ICON_FA_FACE_FLUSHED "\xef\x95\xb9" // U+f579
468 | #define ICON_FA_FACE_FROWN "\xef\x84\x99" // U+f119
469 | #define ICON_FA_FACE_FROWN_OPEN "\xef\x95\xba" // U+f57a
470 | #define ICON_FA_FACE_GRIMACE "\xef\x95\xbf" // U+f57f
471 | #define ICON_FA_FACE_GRIN "\xef\x96\x80" // U+f580
472 | #define ICON_FA_FACE_GRIN_BEAM "\xef\x96\x82" // U+f582
473 | #define ICON_FA_FACE_GRIN_BEAM_SWEAT "\xef\x96\x83" // U+f583
474 | #define ICON_FA_FACE_GRIN_HEARTS "\xef\x96\x84" // U+f584
475 | #define ICON_FA_FACE_GRIN_SQUINT "\xef\x96\x85" // U+f585
476 | #define ICON_FA_FACE_GRIN_SQUINT_TEARS "\xef\x96\x86" // U+f586
477 | #define ICON_FA_FACE_GRIN_STARS "\xef\x96\x87" // U+f587
478 | #define ICON_FA_FACE_GRIN_TEARS "\xef\x96\x88" // U+f588
479 | #define ICON_FA_FACE_GRIN_TONGUE "\xef\x96\x89" // U+f589
480 | #define ICON_FA_FACE_GRIN_TONGUE_SQUINT "\xef\x96\x8a" // U+f58a
481 | #define ICON_FA_FACE_GRIN_TONGUE_WINK "\xef\x96\x8b" // U+f58b
482 | #define ICON_FA_FACE_GRIN_WIDE "\xef\x96\x81" // U+f581
483 | #define ICON_FA_FACE_GRIN_WINK "\xef\x96\x8c" // U+f58c
484 | #define ICON_FA_FACE_KISS "\xef\x96\x96" // U+f596
485 | #define ICON_FA_FACE_KISS_BEAM "\xef\x96\x97" // U+f597
486 | #define ICON_FA_FACE_KISS_WINK_HEART "\xef\x96\x98" // U+f598
487 | #define ICON_FA_FACE_LAUGH "\xef\x96\x99" // U+f599
488 | #define ICON_FA_FACE_LAUGH_BEAM "\xef\x96\x9a" // U+f59a
489 | #define ICON_FA_FACE_LAUGH_SQUINT "\xef\x96\x9b" // U+f59b
490 | #define ICON_FA_FACE_LAUGH_WINK "\xef\x96\x9c" // U+f59c
491 | #define ICON_FA_FACE_MEH "\xef\x84\x9a" // U+f11a
492 | #define ICON_FA_FACE_MEH_BLANK "\xef\x96\xa4" // U+f5a4
493 | #define ICON_FA_FACE_ROLLING_EYES "\xef\x96\xa5" // U+f5a5
494 | #define ICON_FA_FACE_SAD_CRY "\xef\x96\xb3" // U+f5b3
495 | #define ICON_FA_FACE_SAD_TEAR "\xef\x96\xb4" // U+f5b4
496 | #define ICON_FA_FACE_SMILE "\xef\x84\x98" // U+f118
497 | #define ICON_FA_FACE_SMILE_BEAM "\xef\x96\xb8" // U+f5b8
498 | #define ICON_FA_FACE_SMILE_WINK "\xef\x93\x9a" // U+f4da
499 | #define ICON_FA_FACE_SURPRISE "\xef\x97\x82" // U+f5c2
500 | #define ICON_FA_FACE_TIRED "\xef\x97\x88" // U+f5c8
501 | #define ICON_FA_FAN "\xef\xa1\xa3" // U+f863
502 | #define ICON_FA_FAUCET "\xee\x80\x85" // U+e005
503 | #define ICON_FA_FAUCET_DRIP "\xee\x80\x86" // U+e006
504 | #define ICON_FA_FAX "\xef\x86\xac" // U+f1ac
505 | #define ICON_FA_FEATHER "\xef\x94\xad" // U+f52d
506 | #define ICON_FA_FEATHER_POINTED "\xef\x95\xab" // U+f56b
507 | #define ICON_FA_FERRY "\xee\x93\xaa" // U+e4ea
508 | #define ICON_FA_FILE "\xef\x85\x9b" // U+f15b
509 | #define ICON_FA_FILE_ARROW_DOWN "\xef\x95\xad" // U+f56d
510 | #define ICON_FA_FILE_ARROW_UP "\xef\x95\xb4" // U+f574
511 | #define ICON_FA_FILE_AUDIO "\xef\x87\x87" // U+f1c7
512 | #define ICON_FA_FILE_CIRCLE_CHECK "\xee\x92\x93" // U+e493
513 | #define ICON_FA_FILE_CIRCLE_EXCLAMATION "\xee\x93\xab" // U+e4eb
514 | #define ICON_FA_FILE_CIRCLE_MINUS "\xee\x93\xad" // U+e4ed
515 | #define ICON_FA_FILE_CIRCLE_PLUS "\xee\x93\xae" // U+e4ee
516 | #define ICON_FA_FILE_CIRCLE_QUESTION "\xee\x93\xaf" // U+e4ef
517 | #define ICON_FA_FILE_CIRCLE_XMARK "\xee\x92\x94" // U+e494
518 | #define ICON_FA_FILE_CODE "\xef\x87\x89" // U+f1c9
519 | #define ICON_FA_FILE_CONTRACT "\xef\x95\xac" // U+f56c
520 | #define ICON_FA_FILE_CSV "\xef\x9b\x9d" // U+f6dd
521 | #define ICON_FA_FILE_EXCEL "\xef\x87\x83" // U+f1c3
522 | #define ICON_FA_FILE_EXPORT "\xef\x95\xae" // U+f56e
523 | #define ICON_FA_FILE_IMAGE "\xef\x87\x85" // U+f1c5
524 | #define ICON_FA_FILE_IMPORT "\xef\x95\xaf" // U+f56f
525 | #define ICON_FA_FILE_INVOICE "\xef\x95\xb0" // U+f570
526 | #define ICON_FA_FILE_INVOICE_DOLLAR "\xef\x95\xb1" // U+f571
527 | #define ICON_FA_FILE_LINES "\xef\x85\x9c" // U+f15c
528 | #define ICON_FA_FILE_MEDICAL "\xef\x91\xb7" // U+f477
529 | #define ICON_FA_FILE_PDF "\xef\x87\x81" // U+f1c1
530 | #define ICON_FA_FILE_PEN "\xef\x8c\x9c" // U+f31c
531 | #define ICON_FA_FILE_POWERPOINT "\xef\x87\x84" // U+f1c4
532 | #define ICON_FA_FILE_PRESCRIPTION "\xef\x95\xb2" // U+f572
533 | #define ICON_FA_FILE_SHIELD "\xee\x93\xb0" // U+e4f0
534 | #define ICON_FA_FILE_SIGNATURE "\xef\x95\xb3" // U+f573
535 | #define ICON_FA_FILE_VIDEO "\xef\x87\x88" // U+f1c8
536 | #define ICON_FA_FILE_WAVEFORM "\xef\x91\xb8" // U+f478
537 | #define ICON_FA_FILE_WORD "\xef\x87\x82" // U+f1c2
538 | #define ICON_FA_FILE_ZIPPER "\xef\x87\x86" // U+f1c6
539 | #define ICON_FA_FILL "\xef\x95\xb5" // U+f575
540 | #define ICON_FA_FILL_DRIP "\xef\x95\xb6" // U+f576
541 | #define ICON_FA_FILM "\xef\x80\x88" // U+f008
542 | #define ICON_FA_FILTER "\xef\x82\xb0" // U+f0b0
543 | #define ICON_FA_FILTER_CIRCLE_DOLLAR "\xef\x99\xa2" // U+f662
544 | #define ICON_FA_FILTER_CIRCLE_XMARK "\xee\x85\xbb" // U+e17b
545 | #define ICON_FA_FINGERPRINT "\xef\x95\xb7" // U+f577
546 | #define ICON_FA_FIRE "\xef\x81\xad" // U+f06d
547 | #define ICON_FA_FIRE_BURNER "\xee\x93\xb1" // U+e4f1
548 | #define ICON_FA_FIRE_EXTINGUISHER "\xef\x84\xb4" // U+f134
549 | #define ICON_FA_FIRE_FLAME_CURVED "\xef\x9f\xa4" // U+f7e4
550 | #define ICON_FA_FIRE_FLAME_SIMPLE "\xef\x91\xaa" // U+f46a
551 | #define ICON_FA_FISH "\xef\x95\xb8" // U+f578
552 | #define ICON_FA_FISH_FINS "\xee\x93\xb2" // U+e4f2
553 | #define ICON_FA_FLAG "\xef\x80\xa4" // U+f024
554 | #define ICON_FA_FLAG_CHECKERED "\xef\x84\x9e" // U+f11e
555 | #define ICON_FA_FLAG_USA "\xef\x9d\x8d" // U+f74d
556 | #define ICON_FA_FLASK "\xef\x83\x83" // U+f0c3
557 | #define ICON_FA_FLASK_VIAL "\xee\x93\xb3" // U+e4f3
558 | #define ICON_FA_FLOPPY_DISK "\xef\x83\x87" // U+f0c7
559 | #define ICON_FA_FLORIN_SIGN "\xee\x86\x84" // U+e184
560 | #define ICON_FA_FOLDER "\xef\x81\xbb" // U+f07b
561 | #define ICON_FA_FOLDER_CLOSED "\xee\x86\x85" // U+e185
562 | #define ICON_FA_FOLDER_MINUS "\xef\x99\x9d" // U+f65d
563 | #define ICON_FA_FOLDER_OPEN "\xef\x81\xbc" // U+f07c
564 | #define ICON_FA_FOLDER_PLUS "\xef\x99\x9e" // U+f65e
565 | #define ICON_FA_FOLDER_TREE "\xef\xa0\x82" // U+f802
566 | #define ICON_FA_FONT "\xef\x80\xb1" // U+f031
567 | #define ICON_FA_FONT_AWESOME "\xef\x8a\xb4" // U+f2b4
568 | #define ICON_FA_FOOTBALL "\xef\x91\x8e" // U+f44e
569 | #define ICON_FA_FORWARD "\xef\x81\x8e" // U+f04e
570 | #define ICON_FA_FORWARD_FAST "\xef\x81\x90" // U+f050
571 | #define ICON_FA_FORWARD_STEP "\xef\x81\x91" // U+f051
572 | #define ICON_FA_FRANC_SIGN "\xee\x86\x8f" // U+e18f
573 | #define ICON_FA_FROG "\xef\x94\xae" // U+f52e
574 | #define ICON_FA_FUTBOL "\xef\x87\xa3" // U+f1e3
575 | #define ICON_FA_G "G" // U+0047
576 | #define ICON_FA_GAMEPAD "\xef\x84\x9b" // U+f11b
577 | #define ICON_FA_GAS_PUMP "\xef\x94\xaf" // U+f52f
578 | #define ICON_FA_GAUGE "\xef\x98\xa4" // U+f624
579 | #define ICON_FA_GAUGE_HIGH "\xef\x98\xa5" // U+f625
580 | #define ICON_FA_GAUGE_SIMPLE "\xef\x98\xa9" // U+f629
581 | #define ICON_FA_GAUGE_SIMPLE_HIGH "\xef\x98\xaa" // U+f62a
582 | #define ICON_FA_GAVEL "\xef\x83\xa3" // U+f0e3
583 | #define ICON_FA_GEAR "\xef\x80\x93" // U+f013
584 | #define ICON_FA_GEARS "\xef\x82\x85" // U+f085
585 | #define ICON_FA_GEM "\xef\x8e\xa5" // U+f3a5
586 | #define ICON_FA_GENDERLESS "\xef\x88\xad" // U+f22d
587 | #define ICON_FA_GHOST "\xef\x9b\xa2" // U+f6e2
588 | #define ICON_FA_GIFT "\xef\x81\xab" // U+f06b
589 | #define ICON_FA_GIFTS "\xef\x9e\x9c" // U+f79c
590 | #define ICON_FA_GLASS_WATER "\xee\x93\xb4" // U+e4f4
591 | #define ICON_FA_GLASS_WATER_DROPLET "\xee\x93\xb5" // U+e4f5
592 | #define ICON_FA_GLASSES "\xef\x94\xb0" // U+f530
593 | #define ICON_FA_GLOBE "\xef\x82\xac" // U+f0ac
594 | #define ICON_FA_GOLF_BALL_TEE "\xef\x91\x90" // U+f450
595 | #define ICON_FA_GOPURAM "\xef\x99\xa4" // U+f664
596 | #define ICON_FA_GRADUATION_CAP "\xef\x86\x9d" // U+f19d
597 | #define ICON_FA_GREATER_THAN ">" // U+003e
598 | #define ICON_FA_GREATER_THAN_EQUAL "\xef\x94\xb2" // U+f532
599 | #define ICON_FA_GRIP "\xef\x96\x8d" // U+f58d
600 | #define ICON_FA_GRIP_LINES "\xef\x9e\xa4" // U+f7a4
601 | #define ICON_FA_GRIP_LINES_VERTICAL "\xef\x9e\xa5" // U+f7a5
602 | #define ICON_FA_GRIP_VERTICAL "\xef\x96\x8e" // U+f58e
603 | #define ICON_FA_GROUP_ARROWS_ROTATE "\xee\x93\xb6" // U+e4f6
604 | #define ICON_FA_GUARANI_SIGN "\xee\x86\x9a" // U+e19a
605 | #define ICON_FA_GUITAR "\xef\x9e\xa6" // U+f7a6
606 | #define ICON_FA_GUN "\xee\x86\x9b" // U+e19b
607 | #define ICON_FA_H "H" // U+0048
608 | #define ICON_FA_HAMMER "\xef\x9b\xa3" // U+f6e3
609 | #define ICON_FA_HAMSA "\xef\x99\xa5" // U+f665
610 | #define ICON_FA_HAND "\xef\x89\x96" // U+f256
611 | #define ICON_FA_HAND_BACK_FIST "\xef\x89\x95" // U+f255
612 | #define ICON_FA_HAND_DOTS "\xef\x91\xa1" // U+f461
613 | #define ICON_FA_HAND_FIST "\xef\x9b\x9e" // U+f6de
614 | #define ICON_FA_HAND_HOLDING "\xef\x92\xbd" // U+f4bd
615 | #define ICON_FA_HAND_HOLDING_DOLLAR "\xef\x93\x80" // U+f4c0
616 | #define ICON_FA_HAND_HOLDING_DROPLET "\xef\x93\x81" // U+f4c1
617 | #define ICON_FA_HAND_HOLDING_HAND "\xee\x93\xb7" // U+e4f7
618 | #define ICON_FA_HAND_HOLDING_HEART "\xef\x92\xbe" // U+f4be
619 | #define ICON_FA_HAND_HOLDING_MEDICAL "\xee\x81\x9c" // U+e05c
620 | #define ICON_FA_HAND_LIZARD "\xef\x89\x98" // U+f258
621 | #define ICON_FA_HAND_MIDDLE_FINGER "\xef\xa0\x86" // U+f806
622 | #define ICON_FA_HAND_PEACE "\xef\x89\x9b" // U+f25b
623 | #define ICON_FA_HAND_POINT_DOWN "\xef\x82\xa7" // U+f0a7
624 | #define ICON_FA_HAND_POINT_LEFT "\xef\x82\xa5" // U+f0a5
625 | #define ICON_FA_HAND_POINT_RIGHT "\xef\x82\xa4" // U+f0a4
626 | #define ICON_FA_HAND_POINT_UP "\xef\x82\xa6" // U+f0a6
627 | #define ICON_FA_HAND_POINTER "\xef\x89\x9a" // U+f25a
628 | #define ICON_FA_HAND_SCISSORS "\xef\x89\x97" // U+f257
629 | #define ICON_FA_HAND_SPARKLES "\xee\x81\x9d" // U+e05d
630 | #define ICON_FA_HAND_SPOCK "\xef\x89\x99" // U+f259
631 | #define ICON_FA_HANDCUFFS "\xee\x93\xb8" // U+e4f8
632 | #define ICON_FA_HANDS "\xef\x8a\xa7" // U+f2a7
633 | #define ICON_FA_HANDS_ASL_INTERPRETING "\xef\x8a\xa3" // U+f2a3
634 | #define ICON_FA_HANDS_BOUND "\xee\x93\xb9" // U+e4f9
635 | #define ICON_FA_HANDS_BUBBLES "\xee\x81\x9e" // U+e05e
636 | #define ICON_FA_HANDS_CLAPPING "\xee\x86\xa8" // U+e1a8
637 | #define ICON_FA_HANDS_HOLDING "\xef\x93\x82" // U+f4c2
638 | #define ICON_FA_HANDS_HOLDING_CHILD "\xee\x93\xba" // U+e4fa
639 | #define ICON_FA_HANDS_HOLDING_CIRCLE "\xee\x93\xbb" // U+e4fb
640 | #define ICON_FA_HANDS_PRAYING "\xef\x9a\x84" // U+f684
641 | #define ICON_FA_HANDSHAKE "\xef\x8a\xb5" // U+f2b5
642 | #define ICON_FA_HANDSHAKE_ANGLE "\xef\x93\x84" // U+f4c4
643 | #define ICON_FA_HANDSHAKE_SIMPLE "\xef\x93\x86" // U+f4c6
644 | #define ICON_FA_HANDSHAKE_SIMPLE_SLASH "\xee\x81\x9f" // U+e05f
645 | #define ICON_FA_HANDSHAKE_SLASH "\xee\x81\xa0" // U+e060
646 | #define ICON_FA_HANUKIAH "\xef\x9b\xa6" // U+f6e6
647 | #define ICON_FA_HARD_DRIVE "\xef\x82\xa0" // U+f0a0
648 | #define ICON_FA_HASHTAG "#" // U+0023
649 | #define ICON_FA_HAT_COWBOY "\xef\xa3\x80" // U+f8c0
650 | #define ICON_FA_HAT_COWBOY_SIDE "\xef\xa3\x81" // U+f8c1
651 | #define ICON_FA_HAT_WIZARD "\xef\x9b\xa8" // U+f6e8
652 | #define ICON_FA_HEAD_SIDE_COUGH "\xee\x81\xa1" // U+e061
653 | #define ICON_FA_HEAD_SIDE_COUGH_SLASH "\xee\x81\xa2" // U+e062
654 | #define ICON_FA_HEAD_SIDE_MASK "\xee\x81\xa3" // U+e063
655 | #define ICON_FA_HEAD_SIDE_VIRUS "\xee\x81\xa4" // U+e064
656 | #define ICON_FA_HEADING "\xef\x87\x9c" // U+f1dc
657 | #define ICON_FA_HEADPHONES "\xef\x80\xa5" // U+f025
658 | #define ICON_FA_HEADPHONES_SIMPLE "\xef\x96\x8f" // U+f58f
659 | #define ICON_FA_HEADSET "\xef\x96\x90" // U+f590
660 | #define ICON_FA_HEART "\xef\x80\x84" // U+f004
661 | #define ICON_FA_HEART_CIRCLE_BOLT "\xee\x93\xbc" // U+e4fc
662 | #define ICON_FA_HEART_CIRCLE_CHECK "\xee\x93\xbd" // U+e4fd
663 | #define ICON_FA_HEART_CIRCLE_EXCLAMATION "\xee\x93\xbe" // U+e4fe
664 | #define ICON_FA_HEART_CIRCLE_MINUS "\xee\x93\xbf" // U+e4ff
665 | #define ICON_FA_HEART_CIRCLE_PLUS "\xee\x94\x80" // U+e500
666 | #define ICON_FA_HEART_CIRCLE_XMARK "\xee\x94\x81" // U+e501
667 | #define ICON_FA_HEART_CRACK "\xef\x9e\xa9" // U+f7a9
668 | #define ICON_FA_HEART_PULSE "\xef\x88\x9e" // U+f21e
669 | #define ICON_FA_HELICOPTER "\xef\x94\xb3" // U+f533
670 | #define ICON_FA_HELICOPTER_SYMBOL "\xee\x94\x82" // U+e502
671 | #define ICON_FA_HELMET_SAFETY "\xef\xa0\x87" // U+f807
672 | #define ICON_FA_HELMET_UN "\xee\x94\x83" // U+e503
673 | #define ICON_FA_HIGHLIGHTER "\xef\x96\x91" // U+f591
674 | #define ICON_FA_HILL_AVALANCHE "\xee\x94\x87" // U+e507
675 | #define ICON_FA_HILL_ROCKSLIDE "\xee\x94\x88" // U+e508
676 | #define ICON_FA_HIPPO "\xef\x9b\xad" // U+f6ed
677 | #define ICON_FA_HOCKEY_PUCK "\xef\x91\x93" // U+f453
678 | #define ICON_FA_HOLLY_BERRY "\xef\x9e\xaa" // U+f7aa
679 | #define ICON_FA_HORSE "\xef\x9b\xb0" // U+f6f0
680 | #define ICON_FA_HORSE_HEAD "\xef\x9e\xab" // U+f7ab
681 | #define ICON_FA_HOSPITAL "\xef\x83\xb8" // U+f0f8
682 | #define ICON_FA_HOSPITAL_USER "\xef\xa0\x8d" // U+f80d
683 | #define ICON_FA_HOT_TUB_PERSON "\xef\x96\x93" // U+f593
684 | #define ICON_FA_HOTDOG "\xef\xa0\x8f" // U+f80f
685 | #define ICON_FA_HOTEL "\xef\x96\x94" // U+f594
686 | #define ICON_FA_HOURGLASS "\xef\x89\x94" // U+f254
687 | #define ICON_FA_HOURGLASS_EMPTY "\xef\x89\x92" // U+f252
688 | #define ICON_FA_HOURGLASS_END "\xef\x89\x93" // U+f253
689 | #define ICON_FA_HOURGLASS_START "\xef\x89\x91" // U+f251
690 | #define ICON_FA_HOUSE "\xef\x80\x95" // U+f015
691 | #define ICON_FA_HOUSE_CHIMNEY "\xee\x8e\xaf" // U+e3af
692 | #define ICON_FA_HOUSE_CHIMNEY_CRACK "\xef\x9b\xb1" // U+f6f1
693 | #define ICON_FA_HOUSE_CHIMNEY_MEDICAL "\xef\x9f\xb2" // U+f7f2
694 | #define ICON_FA_HOUSE_CHIMNEY_USER "\xee\x81\xa5" // U+e065
695 | #define ICON_FA_HOUSE_CHIMNEY_WINDOW "\xee\x80\x8d" // U+e00d
696 | #define ICON_FA_HOUSE_CIRCLE_CHECK "\xee\x94\x89" // U+e509
697 | #define ICON_FA_HOUSE_CIRCLE_EXCLAMATION "\xee\x94\x8a" // U+e50a
698 | #define ICON_FA_HOUSE_CIRCLE_XMARK "\xee\x94\x8b" // U+e50b
699 | #define ICON_FA_HOUSE_CRACK "\xee\x8e\xb1" // U+e3b1
700 | #define ICON_FA_HOUSE_FIRE "\xee\x94\x8c" // U+e50c
701 | #define ICON_FA_HOUSE_FLAG "\xee\x94\x8d" // U+e50d
702 | #define ICON_FA_HOUSE_FLOOD_WATER "\xee\x94\x8e" // U+e50e
703 | #define ICON_FA_HOUSE_FLOOD_WATER_CIRCLE_ARROW_RIGHT "\xee\x94\x8f" // U+e50f
704 | #define ICON_FA_HOUSE_LAPTOP "\xee\x81\xa6" // U+e066
705 | #define ICON_FA_HOUSE_LOCK "\xee\x94\x90" // U+e510
706 | #define ICON_FA_HOUSE_MEDICAL "\xee\x8e\xb2" // U+e3b2
707 | #define ICON_FA_HOUSE_MEDICAL_CIRCLE_CHECK "\xee\x94\x91" // U+e511
708 | #define ICON_FA_HOUSE_MEDICAL_CIRCLE_EXCLAMATION "\xee\x94\x92" // U+e512
709 | #define ICON_FA_HOUSE_MEDICAL_CIRCLE_XMARK "\xee\x94\x93" // U+e513
710 | #define ICON_FA_HOUSE_MEDICAL_FLAG "\xee\x94\x94" // U+e514
711 | #define ICON_FA_HOUSE_SIGNAL "\xee\x80\x92" // U+e012
712 | #define ICON_FA_HOUSE_TSUNAMI "\xee\x94\x95" // U+e515
713 | #define ICON_FA_HOUSE_USER "\xee\x86\xb0" // U+e1b0
714 | #define ICON_FA_HRYVNIA_SIGN "\xef\x9b\xb2" // U+f6f2
715 | #define ICON_FA_HURRICANE "\xef\x9d\x91" // U+f751
716 | #define ICON_FA_I "I" // U+0049
717 | #define ICON_FA_I_CURSOR "\xef\x89\x86" // U+f246
718 | #define ICON_FA_ICE_CREAM "\xef\xa0\x90" // U+f810
719 | #define ICON_FA_ICICLES "\xef\x9e\xad" // U+f7ad
720 | #define ICON_FA_ICONS "\xef\xa1\xad" // U+f86d
721 | #define ICON_FA_ID_BADGE "\xef\x8b\x81" // U+f2c1
722 | #define ICON_FA_ID_CARD "\xef\x8b\x82" // U+f2c2
723 | #define ICON_FA_ID_CARD_CLIP "\xef\x91\xbf" // U+f47f
724 | #define ICON_FA_IGLOO "\xef\x9e\xae" // U+f7ae
725 | #define ICON_FA_IMAGE "\xef\x80\xbe" // U+f03e
726 | #define ICON_FA_IMAGE_PORTRAIT "\xef\x8f\xa0" // U+f3e0
727 | #define ICON_FA_IMAGES "\xef\x8c\x82" // U+f302
728 | #define ICON_FA_INBOX "\xef\x80\x9c" // U+f01c
729 | #define ICON_FA_INDENT "\xef\x80\xbc" // U+f03c
730 | #define ICON_FA_INDIAN_RUPEE_SIGN "\xee\x86\xbc" // U+e1bc
731 | #define ICON_FA_INDUSTRY "\xef\x89\xb5" // U+f275
732 | #define ICON_FA_INFINITY "\xef\x94\xb4" // U+f534
733 | #define ICON_FA_INFO "\xef\x84\xa9" // U+f129
734 | #define ICON_FA_ITALIC "\xef\x80\xb3" // U+f033
735 | #define ICON_FA_J "J" // U+004a
736 | #define ICON_FA_JAR "\xee\x94\x96" // U+e516
737 | #define ICON_FA_JAR_WHEAT "\xee\x94\x97" // U+e517
738 | #define ICON_FA_JEDI "\xef\x99\xa9" // U+f669
739 | #define ICON_FA_JET_FIGHTER "\xef\x83\xbb" // U+f0fb
740 | #define ICON_FA_JET_FIGHTER_UP "\xee\x94\x98" // U+e518
741 | #define ICON_FA_JOINT "\xef\x96\x95" // U+f595
742 | #define ICON_FA_JUG_DETERGENT "\xee\x94\x99" // U+e519
743 | #define ICON_FA_K "K" // U+004b
744 | #define ICON_FA_KAABA "\xef\x99\xab" // U+f66b
745 | #define ICON_FA_KEY "\xef\x82\x84" // U+f084
746 | #define ICON_FA_KEYBOARD "\xef\x84\x9c" // U+f11c
747 | #define ICON_FA_KHANDA "\xef\x99\xad" // U+f66d
748 | #define ICON_FA_KIP_SIGN "\xee\x87\x84" // U+e1c4
749 | #define ICON_FA_KIT_MEDICAL "\xef\x91\xb9" // U+f479
750 | #define ICON_FA_KITCHEN_SET "\xee\x94\x9a" // U+e51a
751 | #define ICON_FA_KIWI_BIRD "\xef\x94\xb5" // U+f535
752 | #define ICON_FA_L "L" // U+004c
753 | #define ICON_FA_LAND_MINE_ON "\xee\x94\x9b" // U+e51b
754 | #define ICON_FA_LANDMARK "\xef\x99\xaf" // U+f66f
755 | #define ICON_FA_LANDMARK_DOME "\xef\x9d\x92" // U+f752
756 | #define ICON_FA_LANDMARK_FLAG "\xee\x94\x9c" // U+e51c
757 | #define ICON_FA_LANGUAGE "\xef\x86\xab" // U+f1ab
758 | #define ICON_FA_LAPTOP "\xef\x84\x89" // U+f109
759 | #define ICON_FA_LAPTOP_CODE "\xef\x97\xbc" // U+f5fc
760 | #define ICON_FA_LAPTOP_FILE "\xee\x94\x9d" // U+e51d
761 | #define ICON_FA_LAPTOP_MEDICAL "\xef\xa0\x92" // U+f812
762 | #define ICON_FA_LARI_SIGN "\xee\x87\x88" // U+e1c8
763 | #define ICON_FA_LAYER_GROUP "\xef\x97\xbd" // U+f5fd
764 | #define ICON_FA_LEAF "\xef\x81\xac" // U+f06c
765 | #define ICON_FA_LEFT_LONG "\xef\x8c\x8a" // U+f30a
766 | #define ICON_FA_LEFT_RIGHT "\xef\x8c\xb7" // U+f337
767 | #define ICON_FA_LEMON "\xef\x82\x94" // U+f094
768 | #define ICON_FA_LESS_THAN "<" // U+003c
769 | #define ICON_FA_LESS_THAN_EQUAL "\xef\x94\xb7" // U+f537
770 | #define ICON_FA_LIFE_RING "\xef\x87\x8d" // U+f1cd
771 | #define ICON_FA_LIGHTBULB "\xef\x83\xab" // U+f0eb
772 | #define ICON_FA_LINES_LEANING "\xee\x94\x9e" // U+e51e
773 | #define ICON_FA_LINK "\xef\x83\x81" // U+f0c1
774 | #define ICON_FA_LINK_SLASH "\xef\x84\xa7" // U+f127
775 | #define ICON_FA_LIRA_SIGN "\xef\x86\x95" // U+f195
776 | #define ICON_FA_LIST "\xef\x80\xba" // U+f03a
777 | #define ICON_FA_LIST_CHECK "\xef\x82\xae" // U+f0ae
778 | #define ICON_FA_LIST_OL "\xef\x83\x8b" // U+f0cb
779 | #define ICON_FA_LIST_UL "\xef\x83\x8a" // U+f0ca
780 | #define ICON_FA_LITECOIN_SIGN "\xee\x87\x93" // U+e1d3
781 | #define ICON_FA_LOCATION_ARROW "\xef\x84\xa4" // U+f124
782 | #define ICON_FA_LOCATION_CROSSHAIRS "\xef\x98\x81" // U+f601
783 | #define ICON_FA_LOCATION_DOT "\xef\x8f\x85" // U+f3c5
784 | #define ICON_FA_LOCATION_PIN "\xef\x81\x81" // U+f041
785 | #define ICON_FA_LOCATION_PIN_LOCK "\xee\x94\x9f" // U+e51f
786 | #define ICON_FA_LOCK "\xef\x80\xa3" // U+f023
787 | #define ICON_FA_LOCK_OPEN "\xef\x8f\x81" // U+f3c1
788 | #define ICON_FA_LOCUST "\xee\x94\xa0" // U+e520
789 | #define ICON_FA_LUNGS "\xef\x98\x84" // U+f604
790 | #define ICON_FA_LUNGS_VIRUS "\xee\x81\xa7" // U+e067
791 | #define ICON_FA_M "M" // U+004d
792 | #define ICON_FA_MAGNET "\xef\x81\xb6" // U+f076
793 | #define ICON_FA_MAGNIFYING_GLASS "\xef\x80\x82" // U+f002
794 | #define ICON_FA_MAGNIFYING_GLASS_ARROW_RIGHT "\xee\x94\xa1" // U+e521
795 | #define ICON_FA_MAGNIFYING_GLASS_CHART "\xee\x94\xa2" // U+e522
796 | #define ICON_FA_MAGNIFYING_GLASS_DOLLAR "\xef\x9a\x88" // U+f688
797 | #define ICON_FA_MAGNIFYING_GLASS_LOCATION "\xef\x9a\x89" // U+f689
798 | #define ICON_FA_MAGNIFYING_GLASS_MINUS "\xef\x80\x90" // U+f010
799 | #define ICON_FA_MAGNIFYING_GLASS_PLUS "\xef\x80\x8e" // U+f00e
800 | #define ICON_FA_MANAT_SIGN "\xee\x87\x95" // U+e1d5
801 | #define ICON_FA_MAP "\xef\x89\xb9" // U+f279
802 | #define ICON_FA_MAP_LOCATION "\xef\x96\x9f" // U+f59f
803 | #define ICON_FA_MAP_LOCATION_DOT "\xef\x96\xa0" // U+f5a0
804 | #define ICON_FA_MAP_PIN "\xef\x89\xb6" // U+f276
805 | #define ICON_FA_MARKER "\xef\x96\xa1" // U+f5a1
806 | #define ICON_FA_MARS "\xef\x88\xa2" // U+f222
807 | #define ICON_FA_MARS_AND_VENUS "\xef\x88\xa4" // U+f224
808 | #define ICON_FA_MARS_AND_VENUS_BURST "\xee\x94\xa3" // U+e523
809 | #define ICON_FA_MARS_DOUBLE "\xef\x88\xa7" // U+f227
810 | #define ICON_FA_MARS_STROKE "\xef\x88\xa9" // U+f229
811 | #define ICON_FA_MARS_STROKE_RIGHT "\xef\x88\xab" // U+f22b
812 | #define ICON_FA_MARS_STROKE_UP "\xef\x88\xaa" // U+f22a
813 | #define ICON_FA_MARTINI_GLASS "\xef\x95\xbb" // U+f57b
814 | #define ICON_FA_MARTINI_GLASS_CITRUS "\xef\x95\xa1" // U+f561
815 | #define ICON_FA_MARTINI_GLASS_EMPTY "\xef\x80\x80" // U+f000
816 | #define ICON_FA_MASK "\xef\x9b\xba" // U+f6fa
817 | #define ICON_FA_MASK_FACE "\xee\x87\x97" // U+e1d7
818 | #define ICON_FA_MASK_VENTILATOR "\xee\x94\xa4" // U+e524
819 | #define ICON_FA_MASKS_THEATER "\xef\x98\xb0" // U+f630
820 | #define ICON_FA_MATTRESS_PILLOW "\xee\x94\xa5" // U+e525
821 | #define ICON_FA_MAXIMIZE "\xef\x8c\x9e" // U+f31e
822 | #define ICON_FA_MEDAL "\xef\x96\xa2" // U+f5a2
823 | #define ICON_FA_MEMORY "\xef\x94\xb8" // U+f538
824 | #define ICON_FA_MENORAH "\xef\x99\xb6" // U+f676
825 | #define ICON_FA_MERCURY "\xef\x88\xa3" // U+f223
826 | #define ICON_FA_MESSAGE "\xef\x89\xba" // U+f27a
827 | #define ICON_FA_METEOR "\xef\x9d\x93" // U+f753
828 | #define ICON_FA_MICROCHIP "\xef\x8b\x9b" // U+f2db
829 | #define ICON_FA_MICROPHONE "\xef\x84\xb0" // U+f130
830 | #define ICON_FA_MICROPHONE_LINES "\xef\x8f\x89" // U+f3c9
831 | #define ICON_FA_MICROPHONE_LINES_SLASH "\xef\x94\xb9" // U+f539
832 | #define ICON_FA_MICROPHONE_SLASH "\xef\x84\xb1" // U+f131
833 | #define ICON_FA_MICROSCOPE "\xef\x98\x90" // U+f610
834 | #define ICON_FA_MILL_SIGN "\xee\x87\xad" // U+e1ed
835 | #define ICON_FA_MINIMIZE "\xef\x9e\x8c" // U+f78c
836 | #define ICON_FA_MINUS "\xef\x81\xa8" // U+f068
837 | #define ICON_FA_MITTEN "\xef\x9e\xb5" // U+f7b5
838 | #define ICON_FA_MOBILE "\xef\x8f\x8e" // U+f3ce
839 | #define ICON_FA_MOBILE_BUTTON "\xef\x84\x8b" // U+f10b
840 | #define ICON_FA_MOBILE_RETRO "\xee\x94\xa7" // U+e527
841 | #define ICON_FA_MOBILE_SCREEN "\xef\x8f\x8f" // U+f3cf
842 | #define ICON_FA_MOBILE_SCREEN_BUTTON "\xef\x8f\x8d" // U+f3cd
843 | #define ICON_FA_MONEY_BILL "\xef\x83\x96" // U+f0d6
844 | #define ICON_FA_MONEY_BILL_1 "\xef\x8f\x91" // U+f3d1
845 | #define ICON_FA_MONEY_BILL_1_WAVE "\xef\x94\xbb" // U+f53b
846 | #define ICON_FA_MONEY_BILL_TRANSFER "\xee\x94\xa8" // U+e528
847 | #define ICON_FA_MONEY_BILL_TREND_UP "\xee\x94\xa9" // U+e529
848 | #define ICON_FA_MONEY_BILL_WAVE "\xef\x94\xba" // U+f53a
849 | #define ICON_FA_MONEY_BILL_WHEAT "\xee\x94\xaa" // U+e52a
850 | #define ICON_FA_MONEY_BILLS "\xee\x87\xb3" // U+e1f3
851 | #define ICON_FA_MONEY_CHECK "\xef\x94\xbc" // U+f53c
852 | #define ICON_FA_MONEY_CHECK_DOLLAR "\xef\x94\xbd" // U+f53d
853 | #define ICON_FA_MONUMENT "\xef\x96\xa6" // U+f5a6
854 | #define ICON_FA_MOON "\xef\x86\x86" // U+f186
855 | #define ICON_FA_MORTAR_PESTLE "\xef\x96\xa7" // U+f5a7
856 | #define ICON_FA_MOSQUE "\xef\x99\xb8" // U+f678
857 | #define ICON_FA_MOSQUITO "\xee\x94\xab" // U+e52b
858 | #define ICON_FA_MOSQUITO_NET "\xee\x94\xac" // U+e52c
859 | #define ICON_FA_MOTORCYCLE "\xef\x88\x9c" // U+f21c
860 | #define ICON_FA_MOUND "\xee\x94\xad" // U+e52d
861 | #define ICON_FA_MOUNTAIN "\xef\x9b\xbc" // U+f6fc
862 | #define ICON_FA_MOUNTAIN_CITY "\xee\x94\xae" // U+e52e
863 | #define ICON_FA_MOUNTAIN_SUN "\xee\x94\xaf" // U+e52f
864 | #define ICON_FA_MUG_HOT "\xef\x9e\xb6" // U+f7b6
865 | #define ICON_FA_MUG_SAUCER "\xef\x83\xb4" // U+f0f4
866 | #define ICON_FA_MUSIC "\xef\x80\x81" // U+f001
867 | #define ICON_FA_N "N" // U+004e
868 | #define ICON_FA_NAIRA_SIGN "\xee\x87\xb6" // U+e1f6
869 | #define ICON_FA_NETWORK_WIRED "\xef\x9b\xbf" // U+f6ff
870 | #define ICON_FA_NEUTER "\xef\x88\xac" // U+f22c
871 | #define ICON_FA_NEWSPAPER "\xef\x87\xaa" // U+f1ea
872 | #define ICON_FA_NOT_EQUAL "\xef\x94\xbe" // U+f53e
873 | #define ICON_FA_NOTE_STICKY "\xef\x89\x89" // U+f249
874 | #define ICON_FA_NOTES_MEDICAL "\xef\x92\x81" // U+f481
875 | #define ICON_FA_O "O" // U+004f
876 | #define ICON_FA_OBJECT_GROUP "\xef\x89\x87" // U+f247
877 | #define ICON_FA_OBJECT_UNGROUP "\xef\x89\x88" // U+f248
878 | #define ICON_FA_OIL_CAN "\xef\x98\x93" // U+f613
879 | #define ICON_FA_OIL_WELL "\xee\x94\xb2" // U+e532
880 | #define ICON_FA_OM "\xef\x99\xb9" // U+f679
881 | #define ICON_FA_OTTER "\xef\x9c\x80" // U+f700
882 | #define ICON_FA_OUTDENT "\xef\x80\xbb" // U+f03b
883 | #define ICON_FA_P "P" // U+0050
884 | #define ICON_FA_PAGER "\xef\xa0\x95" // U+f815
885 | #define ICON_FA_PAINT_ROLLER "\xef\x96\xaa" // U+f5aa
886 | #define ICON_FA_PAINTBRUSH "\xef\x87\xbc" // U+f1fc
887 | #define ICON_FA_PALETTE "\xef\x94\xbf" // U+f53f
888 | #define ICON_FA_PALLET "\xef\x92\x82" // U+f482
889 | #define ICON_FA_PANORAMA "\xee\x88\x89" // U+e209
890 | #define ICON_FA_PAPER_PLANE "\xef\x87\x98" // U+f1d8
891 | #define ICON_FA_PAPERCLIP "\xef\x83\x86" // U+f0c6
892 | #define ICON_FA_PARACHUTE_BOX "\xef\x93\x8d" // U+f4cd
893 | #define ICON_FA_PARAGRAPH "\xef\x87\x9d" // U+f1dd
894 | #define ICON_FA_PASSPORT "\xef\x96\xab" // U+f5ab
895 | #define ICON_FA_PASTE "\xef\x83\xaa" // U+f0ea
896 | #define ICON_FA_PAUSE "\xef\x81\x8c" // U+f04c
897 | #define ICON_FA_PAW "\xef\x86\xb0" // U+f1b0
898 | #define ICON_FA_PEACE "\xef\x99\xbc" // U+f67c
899 | #define ICON_FA_PEN "\xef\x8c\x84" // U+f304
900 | #define ICON_FA_PEN_CLIP "\xef\x8c\x85" // U+f305
901 | #define ICON_FA_PEN_FANCY "\xef\x96\xac" // U+f5ac
902 | #define ICON_FA_PEN_NIB "\xef\x96\xad" // U+f5ad
903 | #define ICON_FA_PEN_RULER "\xef\x96\xae" // U+f5ae
904 | #define ICON_FA_PEN_TO_SQUARE "\xef\x81\x84" // U+f044
905 | #define ICON_FA_PENCIL "\xef\x8c\x83" // U+f303
906 | #define ICON_FA_PEOPLE_ARROWS_LEFT_RIGHT "\xee\x81\xa8" // U+e068
907 | #define ICON_FA_PEOPLE_CARRY_BOX "\xef\x93\x8e" // U+f4ce
908 | #define ICON_FA_PEOPLE_GROUP "\xee\x94\xb3" // U+e533
909 | #define ICON_FA_PEOPLE_LINE "\xee\x94\xb4" // U+e534
910 | #define ICON_FA_PEOPLE_PULLING "\xee\x94\xb5" // U+e535
911 | #define ICON_FA_PEOPLE_ROBBERY "\xee\x94\xb6" // U+e536
912 | #define ICON_FA_PEOPLE_ROOF "\xee\x94\xb7" // U+e537
913 | #define ICON_FA_PEPPER_HOT "\xef\xa0\x96" // U+f816
914 | #define ICON_FA_PERCENT "%" // U+0025
915 | #define ICON_FA_PERSON "\xef\x86\x83" // U+f183
916 | #define ICON_FA_PERSON_ARROW_DOWN_TO_LINE "\xee\x94\xb8" // U+e538
917 | #define ICON_FA_PERSON_ARROW_UP_FROM_LINE "\xee\x94\xb9" // U+e539
918 | #define ICON_FA_PERSON_BIKING "\xef\xa1\x8a" // U+f84a
919 | #define ICON_FA_PERSON_BOOTH "\xef\x9d\x96" // U+f756
920 | #define ICON_FA_PERSON_BREASTFEEDING "\xee\x94\xba" // U+e53a
921 | #define ICON_FA_PERSON_BURST "\xee\x94\xbb" // U+e53b
922 | #define ICON_FA_PERSON_CANE "\xee\x94\xbc" // U+e53c
923 | #define ICON_FA_PERSON_CHALKBOARD "\xee\x94\xbd" // U+e53d
924 | #define ICON_FA_PERSON_CIRCLE_CHECK "\xee\x94\xbe" // U+e53e
925 | #define ICON_FA_PERSON_CIRCLE_EXCLAMATION "\xee\x94\xbf" // U+e53f
926 | #define ICON_FA_PERSON_CIRCLE_MINUS "\xee\x95\x80" // U+e540
927 | #define ICON_FA_PERSON_CIRCLE_PLUS "\xee\x95\x81" // U+e541
928 | #define ICON_FA_PERSON_CIRCLE_QUESTION "\xee\x95\x82" // U+e542
929 | #define ICON_FA_PERSON_CIRCLE_XMARK "\xee\x95\x83" // U+e543
930 | #define ICON_FA_PERSON_DIGGING "\xef\xa1\x9e" // U+f85e
931 | #define ICON_FA_PERSON_DOTS_FROM_LINE "\xef\x91\xb0" // U+f470
932 | #define ICON_FA_PERSON_DRESS "\xef\x86\x82" // U+f182
933 | #define ICON_FA_PERSON_DRESS_BURST "\xee\x95\x84" // U+e544
934 | #define ICON_FA_PERSON_DROWNING "\xee\x95\x85" // U+e545
935 | #define ICON_FA_PERSON_FALLING "\xee\x95\x86" // U+e546
936 | #define ICON_FA_PERSON_FALLING_BURST "\xee\x95\x87" // U+e547
937 | #define ICON_FA_PERSON_HALF_DRESS "\xee\x95\x88" // U+e548
938 | #define ICON_FA_PERSON_HARASSING "\xee\x95\x89" // U+e549
939 | #define ICON_FA_PERSON_HIKING "\xef\x9b\xac" // U+f6ec
940 | #define ICON_FA_PERSON_MILITARY_POINTING "\xee\x95\x8a" // U+e54a
941 | #define ICON_FA_PERSON_MILITARY_RIFLE "\xee\x95\x8b" // U+e54b
942 | #define ICON_FA_PERSON_MILITARY_TO_PERSON "\xee\x95\x8c" // U+e54c
943 | #define ICON_FA_PERSON_PRAYING "\xef\x9a\x83" // U+f683
944 | #define ICON_FA_PERSON_PREGNANT "\xee\x8c\x9e" // U+e31e
945 | #define ICON_FA_PERSON_RAYS "\xee\x95\x8d" // U+e54d
946 | #define ICON_FA_PERSON_RIFLE "\xee\x95\x8e" // U+e54e
947 | #define ICON_FA_PERSON_RUNNING "\xef\x9c\x8c" // U+f70c
948 | #define ICON_FA_PERSON_SHELTER "\xee\x95\x8f" // U+e54f
949 | #define ICON_FA_PERSON_SKATING "\xef\x9f\x85" // U+f7c5
950 | #define ICON_FA_PERSON_SKIING "\xef\x9f\x89" // U+f7c9
951 | #define ICON_FA_PERSON_SKIING_NORDIC "\xef\x9f\x8a" // U+f7ca
952 | #define ICON_FA_PERSON_SNOWBOARDING "\xef\x9f\x8e" // U+f7ce
953 | #define ICON_FA_PERSON_SWIMMING "\xef\x97\x84" // U+f5c4
954 | #define ICON_FA_PERSON_THROUGH_WINDOW "\xee\x90\xb3" // U+e433
955 | #define ICON_FA_PERSON_WALKING "\xef\x95\x94" // U+f554
956 | #define ICON_FA_PERSON_WALKING_ARROW_LOOP_LEFT "\xee\x95\x91" // U+e551
957 | #define ICON_FA_PERSON_WALKING_ARROW_RIGHT "\xee\x95\x92" // U+e552
958 | #define ICON_FA_PERSON_WALKING_DASHED_LINE_ARROW_RIGHT "\xee\x95\x93" // U+e553
959 | #define ICON_FA_PERSON_WALKING_LUGGAGE "\xee\x95\x94" // U+e554
960 | #define ICON_FA_PERSON_WALKING_WITH_CANE "\xef\x8a\x9d" // U+f29d
961 | #define ICON_FA_PESETA_SIGN "\xee\x88\xa1" // U+e221
962 | #define ICON_FA_PESO_SIGN "\xee\x88\xa2" // U+e222
963 | #define ICON_FA_PHONE "\xef\x82\x95" // U+f095
964 | #define ICON_FA_PHONE_FLIP "\xef\xa1\xb9" // U+f879
965 | #define ICON_FA_PHONE_SLASH "\xef\x8f\x9d" // U+f3dd
966 | #define ICON_FA_PHONE_VOLUME "\xef\x8a\xa0" // U+f2a0
967 | #define ICON_FA_PHOTO_FILM "\xef\xa1\xbc" // U+f87c
968 | #define ICON_FA_PIGGY_BANK "\xef\x93\x93" // U+f4d3
969 | #define ICON_FA_PILLS "\xef\x92\x84" // U+f484
970 | #define ICON_FA_PIZZA_SLICE "\xef\xa0\x98" // U+f818
971 | #define ICON_FA_PLACE_OF_WORSHIP "\xef\x99\xbf" // U+f67f
972 | #define ICON_FA_PLANE "\xef\x81\xb2" // U+f072
973 | #define ICON_FA_PLANE_ARRIVAL "\xef\x96\xaf" // U+f5af
974 | #define ICON_FA_PLANE_CIRCLE_CHECK "\xee\x95\x95" // U+e555
975 | #define ICON_FA_PLANE_CIRCLE_EXCLAMATION "\xee\x95\x96" // U+e556
976 | #define ICON_FA_PLANE_CIRCLE_XMARK "\xee\x95\x97" // U+e557
977 | #define ICON_FA_PLANE_DEPARTURE "\xef\x96\xb0" // U+f5b0
978 | #define ICON_FA_PLANE_LOCK "\xee\x95\x98" // U+e558
979 | #define ICON_FA_PLANE_SLASH "\xee\x81\xa9" // U+e069
980 | #define ICON_FA_PLANE_UP "\xee\x88\xad" // U+e22d
981 | #define ICON_FA_PLANT_WILT "\xee\x90\xbb" // U+e43b
982 | #define ICON_FA_PLATE_WHEAT "\xee\x95\x9a" // U+e55a
983 | #define ICON_FA_PLAY "\xef\x81\x8b" // U+f04b
984 | #define ICON_FA_PLUG "\xef\x87\xa6" // U+f1e6
985 | #define ICON_FA_PLUG_CIRCLE_BOLT "\xee\x95\x9b" // U+e55b
986 | #define ICON_FA_PLUG_CIRCLE_CHECK "\xee\x95\x9c" // U+e55c
987 | #define ICON_FA_PLUG_CIRCLE_EXCLAMATION "\xee\x95\x9d" // U+e55d
988 | #define ICON_FA_PLUG_CIRCLE_MINUS "\xee\x95\x9e" // U+e55e
989 | #define ICON_FA_PLUG_CIRCLE_PLUS "\xee\x95\x9f" // U+e55f
990 | #define ICON_FA_PLUG_CIRCLE_XMARK "\xee\x95\xa0" // U+e560
991 | #define ICON_FA_PLUS "+" // U+002b
992 | #define ICON_FA_PLUS_MINUS "\xee\x90\xbc" // U+e43c
993 | #define ICON_FA_PODCAST "\xef\x8b\x8e" // U+f2ce
994 | #define ICON_FA_POO "\xef\x8b\xbe" // U+f2fe
995 | #define ICON_FA_POO_STORM "\xef\x9d\x9a" // U+f75a
996 | #define ICON_FA_POOP "\xef\x98\x99" // U+f619
997 | #define ICON_FA_POWER_OFF "\xef\x80\x91" // U+f011
998 | #define ICON_FA_PRESCRIPTION "\xef\x96\xb1" // U+f5b1
999 | #define ICON_FA_PRESCRIPTION_BOTTLE "\xef\x92\x85" // U+f485
1000 | #define ICON_FA_PRESCRIPTION_BOTTLE_MEDICAL "\xef\x92\x86" // U+f486
1001 | #define ICON_FA_PRINT "\xef\x80\xaf" // U+f02f
1002 | #define ICON_FA_PUMP_MEDICAL "\xee\x81\xaa" // U+e06a
1003 | #define ICON_FA_PUMP_SOAP "\xee\x81\xab" // U+e06b
1004 | #define ICON_FA_PUZZLE_PIECE "\xef\x84\xae" // U+f12e
1005 | #define ICON_FA_Q "Q" // U+0051
1006 | #define ICON_FA_QRCODE "\xef\x80\xa9" // U+f029
1007 | #define ICON_FA_QUESTION "?" // U+003f
1008 | #define ICON_FA_QUOTE_LEFT "\xef\x84\x8d" // U+f10d
1009 | #define ICON_FA_QUOTE_RIGHT "\xef\x84\x8e" // U+f10e
1010 | #define ICON_FA_R "R" // U+0052
1011 | #define ICON_FA_RADIATION "\xef\x9e\xb9" // U+f7b9
1012 | #define ICON_FA_RADIO "\xef\xa3\x97" // U+f8d7
1013 | #define ICON_FA_RAINBOW "\xef\x9d\x9b" // U+f75b
1014 | #define ICON_FA_RANKING_STAR "\xee\x95\xa1" // U+e561
1015 | #define ICON_FA_RECEIPT "\xef\x95\x83" // U+f543
1016 | #define ICON_FA_RECORD_VINYL "\xef\xa3\x99" // U+f8d9
1017 | #define ICON_FA_RECTANGLE_AD "\xef\x99\x81" // U+f641
1018 | #define ICON_FA_RECTANGLE_LIST "\xef\x80\xa2" // U+f022
1019 | #define ICON_FA_RECTANGLE_XMARK "\xef\x90\x90" // U+f410
1020 | #define ICON_FA_RECYCLE "\xef\x86\xb8" // U+f1b8
1021 | #define ICON_FA_REGISTERED "\xef\x89\x9d" // U+f25d
1022 | #define ICON_FA_REPEAT "\xef\x8d\xa3" // U+f363
1023 | #define ICON_FA_REPLY "\xef\x8f\xa5" // U+f3e5
1024 | #define ICON_FA_REPLY_ALL "\xef\x84\xa2" // U+f122
1025 | #define ICON_FA_REPUBLICAN "\xef\x9d\x9e" // U+f75e
1026 | #define ICON_FA_RESTROOM "\xef\x9e\xbd" // U+f7bd
1027 | #define ICON_FA_RETWEET "\xef\x81\xb9" // U+f079
1028 | #define ICON_FA_RIBBON "\xef\x93\x96" // U+f4d6
1029 | #define ICON_FA_RIGHT_FROM_BRACKET "\xef\x8b\xb5" // U+f2f5
1030 | #define ICON_FA_RIGHT_LEFT "\xef\x8d\xa2" // U+f362
1031 | #define ICON_FA_RIGHT_LONG "\xef\x8c\x8b" // U+f30b
1032 | #define ICON_FA_RIGHT_TO_BRACKET "\xef\x8b\xb6" // U+f2f6
1033 | #define ICON_FA_RING "\xef\x9c\x8b" // U+f70b
1034 | #define ICON_FA_ROAD "\xef\x80\x98" // U+f018
1035 | #define ICON_FA_ROAD_BARRIER "\xee\x95\xa2" // U+e562
1036 | #define ICON_FA_ROAD_BRIDGE "\xee\x95\xa3" // U+e563
1037 | #define ICON_FA_ROAD_CIRCLE_CHECK "\xee\x95\xa4" // U+e564
1038 | #define ICON_FA_ROAD_CIRCLE_EXCLAMATION "\xee\x95\xa5" // U+e565
1039 | #define ICON_FA_ROAD_CIRCLE_XMARK "\xee\x95\xa6" // U+e566
1040 | #define ICON_FA_ROAD_LOCK "\xee\x95\xa7" // U+e567
1041 | #define ICON_FA_ROAD_SPIKES "\xee\x95\xa8" // U+e568
1042 | #define ICON_FA_ROBOT "\xef\x95\x84" // U+f544
1043 | #define ICON_FA_ROCKET "\xef\x84\xb5" // U+f135
1044 | #define ICON_FA_ROTATE "\xef\x8b\xb1" // U+f2f1
1045 | #define ICON_FA_ROTATE_LEFT "\xef\x8b\xaa" // U+f2ea
1046 | #define ICON_FA_ROTATE_RIGHT "\xef\x8b\xb9" // U+f2f9
1047 | #define ICON_FA_ROUTE "\xef\x93\x97" // U+f4d7
1048 | #define ICON_FA_RSS "\xef\x82\x9e" // U+f09e
1049 | #define ICON_FA_RUBLE_SIGN "\xef\x85\x98" // U+f158
1050 | #define ICON_FA_RUG "\xee\x95\xa9" // U+e569
1051 | #define ICON_FA_RULER "\xef\x95\x85" // U+f545
1052 | #define ICON_FA_RULER_COMBINED "\xef\x95\x86" // U+f546
1053 | #define ICON_FA_RULER_HORIZONTAL "\xef\x95\x87" // U+f547
1054 | #define ICON_FA_RULER_VERTICAL "\xef\x95\x88" // U+f548
1055 | #define ICON_FA_RUPEE_SIGN "\xef\x85\x96" // U+f156
1056 | #define ICON_FA_RUPIAH_SIGN "\xee\x88\xbd" // U+e23d
1057 | #define ICON_FA_S "S" // U+0053
1058 | #define ICON_FA_SACK_DOLLAR "\xef\xa0\x9d" // U+f81d
1059 | #define ICON_FA_SACK_XMARK "\xee\x95\xaa" // U+e56a
1060 | #define ICON_FA_SAILBOAT "\xee\x91\x85" // U+e445
1061 | #define ICON_FA_SATELLITE "\xef\x9e\xbf" // U+f7bf
1062 | #define ICON_FA_SATELLITE_DISH "\xef\x9f\x80" // U+f7c0
1063 | #define ICON_FA_SCALE_BALANCED "\xef\x89\x8e" // U+f24e
1064 | #define ICON_FA_SCALE_UNBALANCED "\xef\x94\x95" // U+f515
1065 | #define ICON_FA_SCALE_UNBALANCED_FLIP "\xef\x94\x96" // U+f516
1066 | #define ICON_FA_SCHOOL "\xef\x95\x89" // U+f549
1067 | #define ICON_FA_SCHOOL_CIRCLE_CHECK "\xee\x95\xab" // U+e56b
1068 | #define ICON_FA_SCHOOL_CIRCLE_EXCLAMATION "\xee\x95\xac" // U+e56c
1069 | #define ICON_FA_SCHOOL_CIRCLE_XMARK "\xee\x95\xad" // U+e56d
1070 | #define ICON_FA_SCHOOL_FLAG "\xee\x95\xae" // U+e56e
1071 | #define ICON_FA_SCHOOL_LOCK "\xee\x95\xaf" // U+e56f
1072 | #define ICON_FA_SCISSORS "\xef\x83\x84" // U+f0c4
1073 | #define ICON_FA_SCREWDRIVER "\xef\x95\x8a" // U+f54a
1074 | #define ICON_FA_SCREWDRIVER_WRENCH "\xef\x9f\x99" // U+f7d9
1075 | #define ICON_FA_SCROLL "\xef\x9c\x8e" // U+f70e
1076 | #define ICON_FA_SCROLL_TORAH "\xef\x9a\xa0" // U+f6a0
1077 | #define ICON_FA_SD_CARD "\xef\x9f\x82" // U+f7c2
1078 | #define ICON_FA_SECTION "\xee\x91\x87" // U+e447
1079 | #define ICON_FA_SEEDLING "\xef\x93\x98" // U+f4d8
1080 | #define ICON_FA_SERVER "\xef\x88\xb3" // U+f233
1081 | #define ICON_FA_SHAPES "\xef\x98\x9f" // U+f61f
1082 | #define ICON_FA_SHARE "\xef\x81\xa4" // U+f064
1083 | #define ICON_FA_SHARE_FROM_SQUARE "\xef\x85\x8d" // U+f14d
1084 | #define ICON_FA_SHARE_NODES "\xef\x87\xa0" // U+f1e0
1085 | #define ICON_FA_SHEET_PLASTIC "\xee\x95\xb1" // U+e571
1086 | #define ICON_FA_SHEKEL_SIGN "\xef\x88\x8b" // U+f20b
1087 | #define ICON_FA_SHIELD "\xef\x84\xb2" // U+f132
1088 | #define ICON_FA_SHIELD_CAT "\xee\x95\xb2" // U+e572
1089 | #define ICON_FA_SHIELD_DOG "\xee\x95\xb3" // U+e573
1090 | #define ICON_FA_SHIELD_HALVED "\xef\x8f\xad" // U+f3ed
1091 | #define ICON_FA_SHIELD_HEART "\xee\x95\xb4" // U+e574
1092 | #define ICON_FA_SHIELD_VIRUS "\xee\x81\xac" // U+e06c
1093 | #define ICON_FA_SHIP "\xef\x88\x9a" // U+f21a
1094 | #define ICON_FA_SHIRT "\xef\x95\x93" // U+f553
1095 | #define ICON_FA_SHOE_PRINTS "\xef\x95\x8b" // U+f54b
1096 | #define ICON_FA_SHOP "\xef\x95\x8f" // U+f54f
1097 | #define ICON_FA_SHOP_LOCK "\xee\x92\xa5" // U+e4a5
1098 | #define ICON_FA_SHOP_SLASH "\xee\x81\xb0" // U+e070
1099 | #define ICON_FA_SHOWER "\xef\x8b\x8c" // U+f2cc
1100 | #define ICON_FA_SHRIMP "\xee\x91\x88" // U+e448
1101 | #define ICON_FA_SHUFFLE "\xef\x81\xb4" // U+f074
1102 | #define ICON_FA_SHUTTLE_SPACE "\xef\x86\x97" // U+f197
1103 | #define ICON_FA_SIGN_HANGING "\xef\x93\x99" // U+f4d9
1104 | #define ICON_FA_SIGNAL "\xef\x80\x92" // U+f012
1105 | #define ICON_FA_SIGNATURE "\xef\x96\xb7" // U+f5b7
1106 | #define ICON_FA_SIGNS_POST "\xef\x89\xb7" // U+f277
1107 | #define ICON_FA_SIM_CARD "\xef\x9f\x84" // U+f7c4
1108 | #define ICON_FA_SINK "\xee\x81\xad" // U+e06d
1109 | #define ICON_FA_SITEMAP "\xef\x83\xa8" // U+f0e8
1110 | #define ICON_FA_SKULL "\xef\x95\x8c" // U+f54c
1111 | #define ICON_FA_SKULL_CROSSBONES "\xef\x9c\x94" // U+f714
1112 | #define ICON_FA_SLASH "\xef\x9c\x95" // U+f715
1113 | #define ICON_FA_SLEIGH "\xef\x9f\x8c" // U+f7cc
1114 | #define ICON_FA_SLIDERS "\xef\x87\x9e" // U+f1de
1115 | #define ICON_FA_SMOG "\xef\x9d\x9f" // U+f75f
1116 | #define ICON_FA_SMOKING "\xef\x92\x8d" // U+f48d
1117 | #define ICON_FA_SNOWFLAKE "\xef\x8b\x9c" // U+f2dc
1118 | #define ICON_FA_SNOWMAN "\xef\x9f\x90" // U+f7d0
1119 | #define ICON_FA_SNOWPLOW "\xef\x9f\x92" // U+f7d2
1120 | #define ICON_FA_SOAP "\xee\x81\xae" // U+e06e
1121 | #define ICON_FA_SOCKS "\xef\x9a\x96" // U+f696
1122 | #define ICON_FA_SOLAR_PANEL "\xef\x96\xba" // U+f5ba
1123 | #define ICON_FA_SORT "\xef\x83\x9c" // U+f0dc
1124 | #define ICON_FA_SORT_DOWN "\xef\x83\x9d" // U+f0dd
1125 | #define ICON_FA_SORT_UP "\xef\x83\x9e" // U+f0de
1126 | #define ICON_FA_SPA "\xef\x96\xbb" // U+f5bb
1127 | #define ICON_FA_SPAGHETTI_MONSTER_FLYING "\xef\x99\xbb" // U+f67b
1128 | #define ICON_FA_SPELL_CHECK "\xef\xa2\x91" // U+f891
1129 | #define ICON_FA_SPIDER "\xef\x9c\x97" // U+f717
1130 | #define ICON_FA_SPINNER "\xef\x84\x90" // U+f110
1131 | #define ICON_FA_SPLOTCH "\xef\x96\xbc" // U+f5bc
1132 | #define ICON_FA_SPOON "\xef\x8b\xa5" // U+f2e5
1133 | #define ICON_FA_SPRAY_CAN "\xef\x96\xbd" // U+f5bd
1134 | #define ICON_FA_SPRAY_CAN_SPARKLES "\xef\x97\x90" // U+f5d0
1135 | #define ICON_FA_SQUARE "\xef\x83\x88" // U+f0c8
1136 | #define ICON_FA_SQUARE_ARROW_UP_RIGHT "\xef\x85\x8c" // U+f14c
1137 | #define ICON_FA_SQUARE_CARET_DOWN "\xef\x85\x90" // U+f150
1138 | #define ICON_FA_SQUARE_CARET_LEFT "\xef\x86\x91" // U+f191
1139 | #define ICON_FA_SQUARE_CARET_RIGHT "\xef\x85\x92" // U+f152
1140 | #define ICON_FA_SQUARE_CARET_UP "\xef\x85\x91" // U+f151
1141 | #define ICON_FA_SQUARE_CHECK "\xef\x85\x8a" // U+f14a
1142 | #define ICON_FA_SQUARE_ENVELOPE "\xef\x86\x99" // U+f199
1143 | #define ICON_FA_SQUARE_FULL "\xef\x91\x9c" // U+f45c
1144 | #define ICON_FA_SQUARE_H "\xef\x83\xbd" // U+f0fd
1145 | #define ICON_FA_SQUARE_MINUS "\xef\x85\x86" // U+f146
1146 | #define ICON_FA_SQUARE_NFI "\xee\x95\xb6" // U+e576
1147 | #define ICON_FA_SQUARE_PARKING "\xef\x95\x80" // U+f540
1148 | #define ICON_FA_SQUARE_PEN "\xef\x85\x8b" // U+f14b
1149 | #define ICON_FA_SQUARE_PERSON_CONFINED "\xee\x95\xb7" // U+e577
1150 | #define ICON_FA_SQUARE_PHONE "\xef\x82\x98" // U+f098
1151 | #define ICON_FA_SQUARE_PHONE_FLIP "\xef\xa1\xbb" // U+f87b
1152 | #define ICON_FA_SQUARE_PLUS "\xef\x83\xbe" // U+f0fe
1153 | #define ICON_FA_SQUARE_POLL_HORIZONTAL "\xef\x9a\x82" // U+f682
1154 | #define ICON_FA_SQUARE_POLL_VERTICAL "\xef\x9a\x81" // U+f681
1155 | #define ICON_FA_SQUARE_ROOT_VARIABLE "\xef\x9a\x98" // U+f698
1156 | #define ICON_FA_SQUARE_RSS "\xef\x85\x83" // U+f143
1157 | #define ICON_FA_SQUARE_SHARE_NODES "\xef\x87\xa1" // U+f1e1
1158 | #define ICON_FA_SQUARE_UP_RIGHT "\xef\x8d\xa0" // U+f360
1159 | #define ICON_FA_SQUARE_VIRUS "\xee\x95\xb8" // U+e578
1160 | #define ICON_FA_SQUARE_XMARK "\xef\x8b\x93" // U+f2d3
1161 | #define ICON_FA_STAFF_AESCULAPIUS "\xee\x95\xb9" // U+e579
1162 | #define ICON_FA_STAIRS "\xee\x8a\x89" // U+e289
1163 | #define ICON_FA_STAMP "\xef\x96\xbf" // U+f5bf
1164 | #define ICON_FA_STAR "\xef\x80\x85" // U+f005
1165 | #define ICON_FA_STAR_AND_CRESCENT "\xef\x9a\x99" // U+f699
1166 | #define ICON_FA_STAR_HALF "\xef\x82\x89" // U+f089
1167 | #define ICON_FA_STAR_HALF_STROKE "\xef\x97\x80" // U+f5c0
1168 | #define ICON_FA_STAR_OF_DAVID "\xef\x9a\x9a" // U+f69a
1169 | #define ICON_FA_STAR_OF_LIFE "\xef\x98\xa1" // U+f621
1170 | #define ICON_FA_STERLING_SIGN "\xef\x85\x94" // U+f154
1171 | #define ICON_FA_STETHOSCOPE "\xef\x83\xb1" // U+f0f1
1172 | #define ICON_FA_STOP "\xef\x81\x8d" // U+f04d
1173 | #define ICON_FA_STOPWATCH "\xef\x8b\xb2" // U+f2f2
1174 | #define ICON_FA_STOPWATCH_20 "\xee\x81\xaf" // U+e06f
1175 | #define ICON_FA_STORE "\xef\x95\x8e" // U+f54e
1176 | #define ICON_FA_STORE_SLASH "\xee\x81\xb1" // U+e071
1177 | #define ICON_FA_STREET_VIEW "\xef\x88\x9d" // U+f21d
1178 | #define ICON_FA_STRIKETHROUGH "\xef\x83\x8c" // U+f0cc
1179 | #define ICON_FA_STROOPWAFEL "\xef\x95\x91" // U+f551
1180 | #define ICON_FA_SUBSCRIPT "\xef\x84\xac" // U+f12c
1181 | #define ICON_FA_SUITCASE "\xef\x83\xb2" // U+f0f2
1182 | #define ICON_FA_SUITCASE_MEDICAL "\xef\x83\xba" // U+f0fa
1183 | #define ICON_FA_SUITCASE_ROLLING "\xef\x97\x81" // U+f5c1
1184 | #define ICON_FA_SUN "\xef\x86\x85" // U+f185
1185 | #define ICON_FA_SUN_PLANT_WILT "\xee\x95\xba" // U+e57a
1186 | #define ICON_FA_SUPERSCRIPT "\xef\x84\xab" // U+f12b
1187 | #define ICON_FA_SWATCHBOOK "\xef\x97\x83" // U+f5c3
1188 | #define ICON_FA_SYNAGOGUE "\xef\x9a\x9b" // U+f69b
1189 | #define ICON_FA_SYRINGE "\xef\x92\x8e" // U+f48e
1190 | #define ICON_FA_T "T" // U+0054
1191 | #define ICON_FA_TABLE "\xef\x83\x8e" // U+f0ce
1192 | #define ICON_FA_TABLE_CELLS "\xef\x80\x8a" // U+f00a
1193 | #define ICON_FA_TABLE_CELLS_LARGE "\xef\x80\x89" // U+f009
1194 | #define ICON_FA_TABLE_COLUMNS "\xef\x83\x9b" // U+f0db
1195 | #define ICON_FA_TABLE_LIST "\xef\x80\x8b" // U+f00b
1196 | #define ICON_FA_TABLE_TENNIS_PADDLE_BALL "\xef\x91\x9d" // U+f45d
1197 | #define ICON_FA_TABLET "\xef\x8f\xbb" // U+f3fb
1198 | #define ICON_FA_TABLET_BUTTON "\xef\x84\x8a" // U+f10a
1199 | #define ICON_FA_TABLET_SCREEN_BUTTON "\xef\x8f\xba" // U+f3fa
1200 | #define ICON_FA_TABLETS "\xef\x92\x90" // U+f490
1201 | #define ICON_FA_TACHOGRAPH_DIGITAL "\xef\x95\xa6" // U+f566
1202 | #define ICON_FA_TAG "\xef\x80\xab" // U+f02b
1203 | #define ICON_FA_TAGS "\xef\x80\xac" // U+f02c
1204 | #define ICON_FA_TAPE "\xef\x93\x9b" // U+f4db
1205 | #define ICON_FA_TARP "\xee\x95\xbb" // U+e57b
1206 | #define ICON_FA_TARP_DROPLET "\xee\x95\xbc" // U+e57c
1207 | #define ICON_FA_TAXI "\xef\x86\xba" // U+f1ba
1208 | #define ICON_FA_TEETH "\xef\x98\xae" // U+f62e
1209 | #define ICON_FA_TEETH_OPEN "\xef\x98\xaf" // U+f62f
1210 | #define ICON_FA_TEMPERATURE_ARROW_DOWN "\xee\x80\xbf" // U+e03f
1211 | #define ICON_FA_TEMPERATURE_ARROW_UP "\xee\x81\x80" // U+e040
1212 | #define ICON_FA_TEMPERATURE_EMPTY "\xef\x8b\x8b" // U+f2cb
1213 | #define ICON_FA_TEMPERATURE_FULL "\xef\x8b\x87" // U+f2c7
1214 | #define ICON_FA_TEMPERATURE_HALF "\xef\x8b\x89" // U+f2c9
1215 | #define ICON_FA_TEMPERATURE_HIGH "\xef\x9d\xa9" // U+f769
1216 | #define ICON_FA_TEMPERATURE_LOW "\xef\x9d\xab" // U+f76b
1217 | #define ICON_FA_TEMPERATURE_QUARTER "\xef\x8b\x8a" // U+f2ca
1218 | #define ICON_FA_TEMPERATURE_THREE_QUARTERS "\xef\x8b\x88" // U+f2c8
1219 | #define ICON_FA_TENGE_SIGN "\xef\x9f\x97" // U+f7d7
1220 | #define ICON_FA_TENT "\xee\x95\xbd" // U+e57d
1221 | #define ICON_FA_TENT_ARROW_DOWN_TO_LINE "\xee\x95\xbe" // U+e57e
1222 | #define ICON_FA_TENT_ARROW_LEFT_RIGHT "\xee\x95\xbf" // U+e57f
1223 | #define ICON_FA_TENT_ARROW_TURN_LEFT "\xee\x96\x80" // U+e580
1224 | #define ICON_FA_TENT_ARROWS_DOWN "\xee\x96\x81" // U+e581
1225 | #define ICON_FA_TENTS "\xee\x96\x82" // U+e582
1226 | #define ICON_FA_TERMINAL "\xef\x84\xa0" // U+f120
1227 | #define ICON_FA_TEXT_HEIGHT "\xef\x80\xb4" // U+f034
1228 | #define ICON_FA_TEXT_SLASH "\xef\xa1\xbd" // U+f87d
1229 | #define ICON_FA_TEXT_WIDTH "\xef\x80\xb5" // U+f035
1230 | #define ICON_FA_THERMOMETER "\xef\x92\x91" // U+f491
1231 | #define ICON_FA_THUMBS_DOWN "\xef\x85\xa5" // U+f165
1232 | #define ICON_FA_THUMBS_UP "\xef\x85\xa4" // U+f164
1233 | #define ICON_FA_THUMBTACK "\xef\x82\x8d" // U+f08d
1234 | #define ICON_FA_TICKET "\xef\x85\x85" // U+f145
1235 | #define ICON_FA_TICKET_SIMPLE "\xef\x8f\xbf" // U+f3ff
1236 | #define ICON_FA_TIMELINE "\xee\x8a\x9c" // U+e29c
1237 | #define ICON_FA_TOGGLE_OFF "\xef\x88\x84" // U+f204
1238 | #define ICON_FA_TOGGLE_ON "\xef\x88\x85" // U+f205
1239 | #define ICON_FA_TOILET "\xef\x9f\x98" // U+f7d8
1240 | #define ICON_FA_TOILET_PAPER "\xef\x9c\x9e" // U+f71e
1241 | #define ICON_FA_TOILET_PAPER_SLASH "\xee\x81\xb2" // U+e072
1242 | #define ICON_FA_TOILET_PORTABLE "\xee\x96\x83" // U+e583
1243 | #define ICON_FA_TOILETS_PORTABLE "\xee\x96\x84" // U+e584
1244 | #define ICON_FA_TOOLBOX "\xef\x95\x92" // U+f552
1245 | #define ICON_FA_TOOTH "\xef\x97\x89" // U+f5c9
1246 | #define ICON_FA_TORII_GATE "\xef\x9a\xa1" // U+f6a1
1247 | #define ICON_FA_TORNADO "\xef\x9d\xaf" // U+f76f
1248 | #define ICON_FA_TOWER_BROADCAST "\xef\x94\x99" // U+f519
1249 | #define ICON_FA_TOWER_CELL "\xee\x96\x85" // U+e585
1250 | #define ICON_FA_TOWER_OBSERVATION "\xee\x96\x86" // U+e586
1251 | #define ICON_FA_TRACTOR "\xef\x9c\xa2" // U+f722
1252 | #define ICON_FA_TRADEMARK "\xef\x89\x9c" // U+f25c
1253 | #define ICON_FA_TRAFFIC_LIGHT "\xef\x98\xb7" // U+f637
1254 | #define ICON_FA_TRAILER "\xee\x81\x81" // U+e041
1255 | #define ICON_FA_TRAIN "\xef\x88\xb8" // U+f238
1256 | #define ICON_FA_TRAIN_SUBWAY "\xef\x88\xb9" // U+f239
1257 | #define ICON_FA_TRAIN_TRAM "\xef\x9f\x9a" // U+f7da
1258 | #define ICON_FA_TRANSGENDER "\xef\x88\xa5" // U+f225
1259 | #define ICON_FA_TRASH "\xef\x87\xb8" // U+f1f8
1260 | #define ICON_FA_TRASH_ARROW_UP "\xef\xa0\xa9" // U+f829
1261 | #define ICON_FA_TRASH_CAN "\xef\x8b\xad" // U+f2ed
1262 | #define ICON_FA_TRASH_CAN_ARROW_UP "\xef\xa0\xaa" // U+f82a
1263 | #define ICON_FA_TREE "\xef\x86\xbb" // U+f1bb
1264 | #define ICON_FA_TREE_CITY "\xee\x96\x87" // U+e587
1265 | #define ICON_FA_TRIANGLE_EXCLAMATION "\xef\x81\xb1" // U+f071
1266 | #define ICON_FA_TROPHY "\xef\x82\x91" // U+f091
1267 | #define ICON_FA_TROWEL "\xee\x96\x89" // U+e589
1268 | #define ICON_FA_TROWEL_BRICKS "\xee\x96\x8a" // U+e58a
1269 | #define ICON_FA_TRUCK "\xef\x83\x91" // U+f0d1
1270 | #define ICON_FA_TRUCK_ARROW_RIGHT "\xee\x96\x8b" // U+e58b
1271 | #define ICON_FA_TRUCK_DROPLET "\xee\x96\x8c" // U+e58c
1272 | #define ICON_FA_TRUCK_FAST "\xef\x92\x8b" // U+f48b
1273 | #define ICON_FA_TRUCK_FIELD "\xee\x96\x8d" // U+e58d
1274 | #define ICON_FA_TRUCK_FIELD_UN "\xee\x96\x8e" // U+e58e
1275 | #define ICON_FA_TRUCK_FRONT "\xee\x8a\xb7" // U+e2b7
1276 | #define ICON_FA_TRUCK_MEDICAL "\xef\x83\xb9" // U+f0f9
1277 | #define ICON_FA_TRUCK_MONSTER "\xef\x98\xbb" // U+f63b
1278 | #define ICON_FA_TRUCK_MOVING "\xef\x93\x9f" // U+f4df
1279 | #define ICON_FA_TRUCK_PICKUP "\xef\x98\xbc" // U+f63c
1280 | #define ICON_FA_TRUCK_PLANE "\xee\x96\x8f" // U+e58f
1281 | #define ICON_FA_TRUCK_RAMP_BOX "\xef\x93\x9e" // U+f4de
1282 | #define ICON_FA_TTY "\xef\x87\xa4" // U+f1e4
1283 | #define ICON_FA_TURKISH_LIRA_SIGN "\xee\x8a\xbb" // U+e2bb
1284 | #define ICON_FA_TURN_DOWN "\xef\x8e\xbe" // U+f3be
1285 | #define ICON_FA_TURN_UP "\xef\x8e\xbf" // U+f3bf
1286 | #define ICON_FA_TV "\xef\x89\xac" // U+f26c
1287 | #define ICON_FA_U "U" // U+0055
1288 | #define ICON_FA_UMBRELLA "\xef\x83\xa9" // U+f0e9
1289 | #define ICON_FA_UMBRELLA_BEACH "\xef\x97\x8a" // U+f5ca
1290 | #define ICON_FA_UNDERLINE "\xef\x83\x8d" // U+f0cd
1291 | #define ICON_FA_UNIVERSAL_ACCESS "\xef\x8a\x9a" // U+f29a
1292 | #define ICON_FA_UNLOCK "\xef\x82\x9c" // U+f09c
1293 | #define ICON_FA_UNLOCK_KEYHOLE "\xef\x84\xbe" // U+f13e
1294 | #define ICON_FA_UP_DOWN "\xef\x8c\xb8" // U+f338
1295 | #define ICON_FA_UP_DOWN_LEFT_RIGHT "\xef\x82\xb2" // U+f0b2
1296 | #define ICON_FA_UP_LONG "\xef\x8c\x8c" // U+f30c
1297 | #define ICON_FA_UP_RIGHT_AND_DOWN_LEFT_FROM_CENTER "\xef\x90\xa4" // U+f424
1298 | #define ICON_FA_UP_RIGHT_FROM_SQUARE "\xef\x8d\x9d" // U+f35d
1299 | #define ICON_FA_UPLOAD "\xef\x82\x93" // U+f093
1300 | #define ICON_FA_USER "\xef\x80\x87" // U+f007
1301 | #define ICON_FA_USER_ASTRONAUT "\xef\x93\xbb" // U+f4fb
1302 | #define ICON_FA_USER_CHECK "\xef\x93\xbc" // U+f4fc
1303 | #define ICON_FA_USER_CLOCK "\xef\x93\xbd" // U+f4fd
1304 | #define ICON_FA_USER_DOCTOR "\xef\x83\xb0" // U+f0f0
1305 | #define ICON_FA_USER_GEAR "\xef\x93\xbe" // U+f4fe
1306 | #define ICON_FA_USER_GRADUATE "\xef\x94\x81" // U+f501
1307 | #define ICON_FA_USER_GROUP "\xef\x94\x80" // U+f500
1308 | #define ICON_FA_USER_INJURED "\xef\x9c\xa8" // U+f728
1309 | #define ICON_FA_USER_LARGE "\xef\x90\x86" // U+f406
1310 | #define ICON_FA_USER_LARGE_SLASH "\xef\x93\xba" // U+f4fa
1311 | #define ICON_FA_USER_LOCK "\xef\x94\x82" // U+f502
1312 | #define ICON_FA_USER_MINUS "\xef\x94\x83" // U+f503
1313 | #define ICON_FA_USER_NINJA "\xef\x94\x84" // U+f504
1314 | #define ICON_FA_USER_NURSE "\xef\xa0\xaf" // U+f82f
1315 | #define ICON_FA_USER_PEN "\xef\x93\xbf" // U+f4ff
1316 | #define ICON_FA_USER_PLUS "\xef\x88\xb4" // U+f234
1317 | #define ICON_FA_USER_SECRET "\xef\x88\x9b" // U+f21b
1318 | #define ICON_FA_USER_SHIELD "\xef\x94\x85" // U+f505
1319 | #define ICON_FA_USER_SLASH "\xef\x94\x86" // U+f506
1320 | #define ICON_FA_USER_TAG "\xef\x94\x87" // U+f507
1321 | #define ICON_FA_USER_TIE "\xef\x94\x88" // U+f508
1322 | #define ICON_FA_USER_XMARK "\xef\x88\xb5" // U+f235
1323 | #define ICON_FA_USERS "\xef\x83\x80" // U+f0c0
1324 | #define ICON_FA_USERS_BETWEEN_LINES "\xee\x96\x91" // U+e591
1325 | #define ICON_FA_USERS_GEAR "\xef\x94\x89" // U+f509
1326 | #define ICON_FA_USERS_LINE "\xee\x96\x92" // U+e592
1327 | #define ICON_FA_USERS_RAYS "\xee\x96\x93" // U+e593
1328 | #define ICON_FA_USERS_RECTANGLE "\xee\x96\x94" // U+e594
1329 | #define ICON_FA_USERS_SLASH "\xee\x81\xb3" // U+e073
1330 | #define ICON_FA_USERS_VIEWFINDER "\xee\x96\x95" // U+e595
1331 | #define ICON_FA_UTENSILS "\xef\x8b\xa7" // U+f2e7
1332 | #define ICON_FA_V "V" // U+0056
1333 | #define ICON_FA_VAN_SHUTTLE "\xef\x96\xb6" // U+f5b6
1334 | #define ICON_FA_VAULT "\xee\x8b\x85" // U+e2c5
1335 | #define ICON_FA_VECTOR_SQUARE "\xef\x97\x8b" // U+f5cb
1336 | #define ICON_FA_VENUS "\xef\x88\xa1" // U+f221
1337 | #define ICON_FA_VENUS_DOUBLE "\xef\x88\xa6" // U+f226
1338 | #define ICON_FA_VENUS_MARS "\xef\x88\xa8" // U+f228
1339 | #define ICON_FA_VEST "\xee\x82\x85" // U+e085
1340 | #define ICON_FA_VEST_PATCHES "\xee\x82\x86" // U+e086
1341 | #define ICON_FA_VIAL "\xef\x92\x92" // U+f492
1342 | #define ICON_FA_VIAL_CIRCLE_CHECK "\xee\x96\x96" // U+e596
1343 | #define ICON_FA_VIAL_VIRUS "\xee\x96\x97" // U+e597
1344 | #define ICON_FA_VIALS "\xef\x92\x93" // U+f493
1345 | #define ICON_FA_VIDEO "\xef\x80\xbd" // U+f03d
1346 | #define ICON_FA_VIDEO_SLASH "\xef\x93\xa2" // U+f4e2
1347 | #define ICON_FA_VIHARA "\xef\x9a\xa7" // U+f6a7
1348 | #define ICON_FA_VIRUS "\xee\x81\xb4" // U+e074
1349 | #define ICON_FA_VIRUS_COVID "\xee\x92\xa8" // U+e4a8
1350 | #define ICON_FA_VIRUS_COVID_SLASH "\xee\x92\xa9" // U+e4a9
1351 | #define ICON_FA_VIRUS_SLASH "\xee\x81\xb5" // U+e075
1352 | #define ICON_FA_VIRUSES "\xee\x81\xb6" // U+e076
1353 | #define ICON_FA_VOICEMAIL "\xef\xa2\x97" // U+f897
1354 | #define ICON_FA_VOLCANO "\xef\x9d\xb0" // U+f770
1355 | #define ICON_FA_VOLLEYBALL "\xef\x91\x9f" // U+f45f
1356 | #define ICON_FA_VOLUME_HIGH "\xef\x80\xa8" // U+f028
1357 | #define ICON_FA_VOLUME_LOW "\xef\x80\xa7" // U+f027
1358 | #define ICON_FA_VOLUME_OFF "\xef\x80\xa6" // U+f026
1359 | #define ICON_FA_VOLUME_XMARK "\xef\x9a\xa9" // U+f6a9
1360 | #define ICON_FA_VR_CARDBOARD "\xef\x9c\xa9" // U+f729
1361 | #define ICON_FA_W "W" // U+0057
1362 | #define ICON_FA_WALKIE_TALKIE "\xef\xa3\xaf" // U+f8ef
1363 | #define ICON_FA_WALLET "\xef\x95\x95" // U+f555
1364 | #define ICON_FA_WAND_MAGIC "\xef\x83\x90" // U+f0d0
1365 | #define ICON_FA_WAND_MAGIC_SPARKLES "\xee\x8b\x8a" // U+e2ca
1366 | #define ICON_FA_WAND_SPARKLES "\xef\x9c\xab" // U+f72b
1367 | #define ICON_FA_WAREHOUSE "\xef\x92\x94" // U+f494
1368 | #define ICON_FA_WATER "\xef\x9d\xb3" // U+f773
1369 | #define ICON_FA_WATER_LADDER "\xef\x97\x85" // U+f5c5
1370 | #define ICON_FA_WAVE_SQUARE "\xef\xa0\xbe" // U+f83e
1371 | #define ICON_FA_WEIGHT_HANGING "\xef\x97\x8d" // U+f5cd
1372 | #define ICON_FA_WEIGHT_SCALE "\xef\x92\x96" // U+f496
1373 | #define ICON_FA_WHEAT_AWN "\xee\x8b\x8d" // U+e2cd
1374 | #define ICON_FA_WHEAT_AWN_CIRCLE_EXCLAMATION "\xee\x96\x98" // U+e598
1375 | #define ICON_FA_WHEELCHAIR "\xef\x86\x93" // U+f193
1376 | #define ICON_FA_WHEELCHAIR_MOVE "\xee\x8b\x8e" // U+e2ce
1377 | #define ICON_FA_WHISKEY_GLASS "\xef\x9e\xa0" // U+f7a0
1378 | #define ICON_FA_WIFI "\xef\x87\xab" // U+f1eb
1379 | #define ICON_FA_WIND "\xef\x9c\xae" // U+f72e
1380 | #define ICON_FA_WINDOW_MAXIMIZE "\xef\x8b\x90" // U+f2d0
1381 | #define ICON_FA_WINDOW_MINIMIZE "\xef\x8b\x91" // U+f2d1
1382 | #define ICON_FA_WINDOW_RESTORE "\xef\x8b\x92" // U+f2d2
1383 | #define ICON_FA_WINE_BOTTLE "\xef\x9c\xaf" // U+f72f
1384 | #define ICON_FA_WINE_GLASS "\xef\x93\xa3" // U+f4e3
1385 | #define ICON_FA_WINE_GLASS_EMPTY "\xef\x97\x8e" // U+f5ce
1386 | #define ICON_FA_WON_SIGN "\xef\x85\x99" // U+f159
1387 | #define ICON_FA_WORM "\xee\x96\x99" // U+e599
1388 | #define ICON_FA_WRENCH "\xef\x82\xad" // U+f0ad
1389 | #define ICON_FA_X "X" // U+0058
1390 | #define ICON_FA_X_RAY "\xef\x92\x97" // U+f497
1391 | #define ICON_FA_XMARK "\xef\x80\x8d" // U+f00d
1392 | #define ICON_FA_XMARKS_LINES "\xee\x96\x9a" // U+e59a
1393 | #define ICON_FA_Y "Y" // U+0059
1394 | #define ICON_FA_YEN_SIGN "\xef\x85\x97" // U+f157
1395 | #define ICON_FA_YIN_YANG "\xef\x9a\xad" // U+f6ad
1396 | #define ICON_FA_Z "Z" // U+005a
1397 |
--------------------------------------------------------------------------------
/imgui_impl_raylib.h:
--------------------------------------------------------------------------------
1 | /**********************************************************************************************
2 | *
3 | * raylibExtras * Utilities and Shared Components for Raylib
4 | *
5 | * rlImGui * basic ImGui integration
6 | *
7 | * LICENSE: ZLIB
8 | *
9 | * Copyright (c) 2024 Jeffery Myers
10 | *
11 | * Permission is hereby granted, free of charge, to any person obtaining a copy
12 | * of this software and associated documentation files (the "Software"), to deal
13 | * in the Software without restriction, including without limitation the rights
14 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | * copies of the Software, and to permit persons to whom the Software is
16 | * furnished to do so, subject to the following conditions:
17 | *
18 | * The above copyright notice and this permission notice shall be included in all
19 | * copies or substantial portions of the Software.
20 | *
21 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 | * SOFTWARE.
28 | *
29 | **********************************************************************************************/
30 |
31 | // dear imgui: Platform Backend for Raylib
32 | // (Info: Raylib is a cross-platform general purpose library for handling windows, inputs, graphics context creation, etc. using OpenGL)
33 | // This is is the low level ImGui backend for raylib, a higher level API that matches the raylib API can be found in rlImGui.h
34 |
35 | // You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
36 | // Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
37 | // Learn about Dear ImGui:
38 | // - FAQ https://dearimgui.com/faq
39 | // - Getting Started https://dearimgui.com/getting-started
40 | // - Documentation https://dearimgui.com/docs (same as your local docs/ folder).
41 | // - Introduction, links and more at the top of imgui.cpp
42 |
43 | #pragma once
44 | #include "imgui.h" // IMGUI_IMPL_API
45 | #ifndef IMGUI_DISABLE
46 |
47 | IMGUI_IMPL_API bool ImGui_ImplRaylib_Init(void);
48 | IMGUI_IMPL_API void ImGui_ImplRaylib_BuildFontAtlas(void);
49 | IMGUI_IMPL_API void ImGui_ImplRaylib_Shutdown(void);
50 | IMGUI_IMPL_API void ImGui_ImplRaylib_NewFrame(void);
51 | IMGUI_IMPL_API void ImGui_ImplRaylib_RenderDrawData(ImDrawData* draw_data);
52 | IMGUI_IMPL_API bool ImGui_ImplRaylib_ProcessEvents(void);
53 |
54 | #endif // #ifndef IMGUI_DISABLE
55 |
--------------------------------------------------------------------------------
/premake-VisualStudio.bat:
--------------------------------------------------------------------------------
1 | premake5.exe vs2022
2 | pause
3 |
--------------------------------------------------------------------------------
/premake-mingw.bat:
--------------------------------------------------------------------------------
1 | premake5.exe gmake2
2 | pause
3 |
--------------------------------------------------------------------------------
/premake5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raylib-extras/rlImGui/9512b36b8cb563274138ec10d82568a51e40d812/premake5
--------------------------------------------------------------------------------
/premake5.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raylib-extras/rlImGui/9512b36b8cb563274138ec10d82568a51e40d812/premake5.exe
--------------------------------------------------------------------------------
/premake5.lua:
--------------------------------------------------------------------------------
1 | newoption
2 | {
3 | trigger = "graphics",
4 | value = "OPENGL_VERSION",
5 | description = "version of OpenGL to build raylib against",
6 | allowed = {
7 | { "opengl11", "OpenGL 1.1"},
8 | { "opengl21", "OpenGL 2.1"},
9 | { "opengl33", "OpenGL 3.3"},
10 | { "opengl43", "OpenGL 4.3"}
11 | },
12 | default = "opengl33"
13 | }
14 |
15 | function define_C()
16 | language "C"
17 | end
18 |
19 | function define_Cpp()
20 | language "C++"
21 | end
22 |
23 | function string.starts(String,Start)
24 | return string.sub(String,1,string.len(Start))==Start
25 | end
26 |
27 | function link_to(lib)
28 | links (lib)
29 | includedirs ("../"..lib.."/include", "../"..lib.."/" )
30 | end
31 |
32 | function download_progress(total, current)
33 | local ratio = current / total;
34 | ratio = math.min(math.max(ratio, 0), 1);
35 | local percent = math.floor(ratio * 100);
36 | print("Download progress (" .. percent .. "%/100%)")
37 | end
38 |
39 | function check_raylib()
40 | if(os.isdir("raylib") == false and os.isdir("raylib-master") == false) then
41 | if(not os.isfile("raylib-master.zip")) then
42 | print("Raylib not found, downloading from github")
43 | local result_str, response_code = http.download("https://github.com/raysan5/raylib/archive/refs/heads/master.zip", "raylib-master.zip", {
44 | progress = download_progress,
45 | headers = { "From: Premake", "Referer: Premake" }
46 | })
47 | end
48 | print("Unzipping to " .. os.getcwd())
49 | zip.extract("raylib-master.zip", os.getcwd())
50 | os.remove("raylib-master.zip")
51 | end
52 | end
53 |
54 | function check_imgui()
55 | if(os.isdir("imgui") == false and os.isdir("imgui-master") == false) then
56 | if(not os.isfile("imgui-master.zip")) then
57 | print("imgui not found, downloading from github")
58 | local result_str, response_code = http.download("https://github.com/ocornut/imgui/archive/refs/heads/master.zip", "imgui-master.zip", {
59 | progress = download_progress,
60 | headers = { "From: Premake", "Referer: Premake" }
61 | })
62 | end
63 | print("Unzipping to " .. os.getcwd())
64 | zip.extract("imgui-master.zip", os.getcwd())
65 | os.remove("imgui-master.zip")
66 | end
67 | end
68 |
69 | workspace "rlImGui"
70 | configurations { "Debug", "Release" }
71 | platforms { "x64"}
72 | defaultplatform "x64"
73 |
74 | filter "configurations:Debug"
75 | defines { "DEBUG" }
76 | symbols "On"
77 |
78 | filter "configurations:Release"
79 | defines { "NDEBUG" }
80 | optimize "On"
81 |
82 | filter { "platforms:x64" }
83 | architecture "x86_64"
84 |
85 | filter { "system:linux" }
86 | defines { "_GLFW_X11" }
87 | defines { "_GNU_SOURCE" }
88 |
89 | targetdir "bin/%{cfg.buildcfg}/"
90 |
91 |
92 | cdialect "C99"
93 | cppdialect "C++17"
94 | check_raylib()
95 | check_imgui()
96 |
97 | include ("raylib_premake5.lua")
98 |
99 | project "rlImGui"
100 | kind "StaticLib"
101 | location "build"
102 | targetdir "bin/%{cfg.buildcfg}"
103 | language "C++"
104 | cdialect "C99"
105 | cppdialect "C++17"
106 | include_raylib()
107 | includedirs { "rlImGui", "imgui", "imgui-master"}
108 | vpaths
109 | {
110 | ["Header Files"] = { "*.h"},
111 | ["Source Files"] = {"*.cpp"},
112 | ["ImGui Files"] = { "imgui/*.h","imgui/*.cpp", "imgui-master/*.h","imgui-master/*.cpp" },
113 | }
114 | files {"imgui-master/*.h", "imgui-master/*.cpp", "imgui/*.h", "imgui/*.cpp", "*.cpp", "*.h", "extras/**.h"}
115 |
116 | defines {"IMGUI_DISABLE_OBSOLETE_FUNCTIONS","IMGUI_DISABLE_OBSOLETE_KEYIO"}
117 |
118 | group "Examples"
119 | project "simple"
120 | kind "ConsoleApp"
121 | language "C++"
122 | cdialect "C99"
123 | cppdialect "C++17"
124 | location "build"
125 | targetdir "bin/%{cfg.buildcfg}"
126 |
127 | vpaths
128 | {
129 | ["Header Files"] = { "examples/**.h"},
130 | ["Source Files"] = {"examples/**.cpp", "examples/**.c"},
131 | }
132 | files {"examples/simple.cpp"}
133 | link_raylib()
134 | links {"rlImGui"}
135 | includedirs {"./", "imgui", "imgui-master" }
136 |
137 | filter "action:vs*"
138 | debugdir "$(SolutionDir)"
139 |
140 |
141 | project "editor"
142 | kind "ConsoleApp"
143 | language "C++"
144 | cdialect "C99"
145 | cppdialect "C++17"
146 | location "build"
147 | targetdir "bin/%{cfg.buildcfg}"
148 |
149 |
150 | vpaths
151 | {
152 | ["Header Files"] = { "examples/**.h"},
153 | ["Source Files"] = {"examples/**.cpp", "examples/**.c"},
154 | }
155 | files {"examples/editor.cpp"}
156 | link_raylib()
157 | links {"rlImGui"}
158 | includedirs {"./", "imgui", "imgui-master" }
159 |
160 | filter "action:vs*"
161 | debugdir "$(SolutionDir)"
162 |
163 |
164 | project "imgui_style_example"
165 | kind "ConsoleApp"
166 | language "C++"
167 | cdialect "C99"
168 | cppdialect "C++17"
169 | location "build"
170 | targetdir "bin/%{cfg.buildcfg}"
171 |
172 | vpaths
173 | {
174 | ["Header Files"] = { "examples/**.h"},
175 | ["Source Files"] = {"examples/**.cpp", "examples/**.c"},
176 | }
177 | files {"examples/imgui_style_example.cpp"}
178 | link_raylib()
179 | links {"rlImGui"}
180 | includedirs {"./", "imgui", "imgui-master" }
181 |
182 | filter "action:vs*"
183 | debugdir "$(SolutionDir)"
184 |
185 | project "docking_example"
186 | kind "ConsoleApp"
187 | language "C++"
188 | cdialect "C99"
189 | cppdialect "C++17"
190 | location "build"
191 | targetdir "bin/%{cfg.buildcfg}"
192 |
193 | vpaths
194 | {
195 | ["Header Files"] = { "examples/**.h"},
196 | ["Source Files"] = {"examples/**.cpp", "examples/**.c"},
197 | }
198 | files {"examples/docking_example.cpp"}
199 | link_raylib()
200 | links {"rlImGui"}
201 | includedirs {"./", "imgui", "imgui-master" }
202 |
203 | filter "action:vs*"
204 | debugdir "$(SolutionDir)"
205 |
206 | project "asset_browser"
207 | kind "ConsoleApp"
208 | language "C++"
209 | cdialect "C99"
210 | cppdialect "C++17"
211 | location "build"
212 | targetdir "bin/%{cfg.buildcfg}"
213 |
214 | vpaths
215 | {
216 | ["Header Files"] = { "examples/asset_browser/**.h"},
217 | ["Source Files"] = {"examples/asset_browser/**.cpp", "examples/asset_browser/**.c"},
218 | }
219 | files {"examples/asset_browser/**.cpp", "examples/asset_browser/**.h"}
220 | link_raylib()
221 | links {"rlImGui"}
222 | includedirs {"./", "examples/asset_browser/", "imgui", "imgui-master" }
223 |
224 | filter "action:vs*"
225 | debugdir "$(SolutionDir)"
226 |
--------------------------------------------------------------------------------
/premake5.osx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raylib-extras/rlImGui/9512b36b8cb563274138ec10d82568a51e40d812/premake5.osx
--------------------------------------------------------------------------------
/raylib_premake5.lua:
--------------------------------------------------------------------------------
1 | -- Copyright (c) 2020-2024 Jeffery Myers
2 | --
3 | --This software is provided "as-is", without any express or implied warranty. In no event
4 | --will the authors be held liable for any damages arising from the use of this software.
5 |
6 | --Permission is granted to anyone to use this software for any purpose, including commercial
7 | --applications, and to alter it and redistribute it freely, subject to the following restrictions:
8 |
9 | -- 1. The origin of this software must not be misrepresented; you must not claim that you
10 | -- wrote the original software. If you use this software in a product, an acknowledgment
11 | -- in the product documentation would be appreciated but is not required.
12 | --
13 | -- 2. Altered source versions must be plainly marked as such, and must not be misrepresented
14 | -- as being the original software.
15 | --
16 | -- 3. This notice may not be removed or altered from any source distribution.
17 |
18 | function platform_defines()
19 | defines{"PLATFORM_DESKTOP"}
20 |
21 | filter {"options:graphics=opengl43"}
22 | defines{"GRAPHICS_API_OPENGL_43"}
23 |
24 | filter {"options:graphics=opengl33"}
25 | defines{"GRAPHICS_API_OPENGL_33"}
26 |
27 | filter {"options:graphics=opengl21"}
28 | defines{"GRAPHICS_API_OPENGL_21"}
29 |
30 | filter {"options:graphics=opengl11"}
31 | defines{"GRAPHICS_API_OPENGL_11"}
32 |
33 | filter {"system:macosx"}
34 | disablewarnings {"deprecated-declarations"}
35 |
36 | filter {"system:linux"}
37 | defines {"_GLFW_X11"}
38 | defines {"_GNU_SOURCE"}
39 | -- This is necessary, otherwise compilation will fail since
40 | -- there is no CLOCK_MONOTOMIC. raylib claims to have a workaround
41 | -- to compile under c99 without -D_GNU_SOURCE, but it didn't seem
42 | -- to work. raylib's Makefile also adds this flag, probably why it went
43 | -- unnoticed for so long.
44 | -- It compiles under c11 without -D_GNU_SOURCE, because c11 requires
45 | -- to have CLOCK_MONOTOMIC
46 | -- See: https://github.com/raysan5/raylib/issues/2729
47 |
48 | filter{}
49 | end
50 |
51 | function get_raylib_dir()
52 | if (os.isdir("raylib-master")) then
53 | return "raylib-master"
54 | end
55 | if (os.isdir("../raylib-master")) then
56 | return "raylib-master"
57 | end
58 | return "raylib"
59 | end
60 |
61 | function link_raylib()
62 | links {"raylib"}
63 |
64 | raylib_dir = get_raylib_dir();
65 | includedirs {raylib_dir .. "/src" }
66 | includedirs {raylib_dir .."/src/external" }
67 | includedirs {raylib_dir .."/src/external/glfw/include" }
68 | platform_defines()
69 | filter "action:vs*"
70 | defines{"_WINSOCK_DEPRECATED_NO_WARNINGS", "_CRT_SECURE_NO_WARNINGS"}
71 | dependson {"raylib"}
72 | links {"raylib.lib"}
73 | characterset ("MBCS")
74 | buildoptions { "/Zc:__cplusplus" }
75 |
76 | filter "system:windows"
77 | defines{"_WIN32"}
78 | links {"winmm", "gdi32"}
79 | libdirs {"bin/%{cfg.buildcfg}"}
80 |
81 | filter "system:linux"
82 | links {"pthread", "m", "dl", "rt", "X11"}
83 |
84 | filter "system:macosx"
85 | links {"OpenGL.framework", "Cocoa.framework", "IOKit.framework", "CoreFoundation.framework", "CoreAudio.framework", "CoreVideo.framework", "AudioToolbox.framework"}
86 |
87 | filter{}
88 | end
89 |
90 | function include_raylib()
91 | raylib_dir = get_raylib_dir();
92 | includedirs {raylib_dir .."/src" }
93 | includedirs {raylib_dir .."/src/external" }
94 | includedirs {raylib_dir .."/src/external/glfw/include" }
95 | platform_defines()
96 |
97 | filter "action:vs*"
98 | defines{"_WINSOCK_DEPRECATED_NO_WARNINGS", "_CRT_SECURE_NO_WARNINGS"}
99 |
100 | filter{}
101 | end
102 |
103 | project "raylib"
104 | kind "StaticLib"
105 |
106 | platform_defines()
107 |
108 | location "build"
109 | language "C"
110 | cdialect "C99"
111 | cppdialect "C++17"
112 | targetdir "bin/%{cfg.buildcfg}"
113 |
114 | filter "action:vs*"
115 | defines{"_WINSOCK_DEPRECATED_NO_WARNINGS", "_CRT_SECURE_NO_WARNINGS"}
116 | characterset ("MBCS")
117 | buildoptions { "/Zc:__cplusplus" }
118 | filter{}
119 |
120 | raylib_dir = get_raylib_dir();
121 | print ("Using raylib dir " .. raylib_dir);
122 | includedirs {raylib_dir .. "/src", raylib_dir .. "/src/external/glfw/include" }
123 | vpaths
124 | {
125 | ["Header Files"] = { raylib_dir .. "/src/**.h"},
126 | ["Source Files/*"] = { raylib_dir .. "/src/**.c"},
127 | }
128 | files {raylib_dir .. "/src/*.h", raylib_dir .. "/src/*.c"}
129 | removefiles {raylib_dir .. "/src/rcore_*.c"}
130 |
131 | filter { "system:macosx", "files:" .. raylib_dir .. "/src/rglfw.c" }
132 | compileas "Objective-C"
133 |
134 | filter{}
135 |
--------------------------------------------------------------------------------
/resources/driusstraight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raylib-extras/rlImGui/9512b36b8cb563274138ec10d82568a51e40d812/resources/driusstraight.ttf
--------------------------------------------------------------------------------
/resources/parrots.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raylib-extras/rlImGui/9512b36b8cb563274138ec10d82568a51e40d812/resources/parrots.png
--------------------------------------------------------------------------------
/rlImGui.cpp:
--------------------------------------------------------------------------------
1 | /**********************************************************************************************
2 | *
3 | * raylibExtras * Utilities and Shared Components for Raylib
4 | *
5 | * rlImGui * basic ImGui integration
6 | *
7 | * LICENSE: ZLIB
8 | *
9 | * Copyright (c) 2024 Jeffery Myers
10 | *
11 | * Permission is hereby granted, free of charge, to any person obtaining a copy
12 | * of this software and associated documentation files (the "Software"), to deal
13 | * in the Software without restriction, including without limitation the rights
14 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | * copies of the Software, and to permit persons to whom the Software is
16 | * furnished to do so, subject to the following conditions:
17 | *
18 | * The above copyright notice and this permission notice shall be included in all
19 | * copies or substantial portions of the Software.
20 | *
21 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 | * SOFTWARE.
28 | *
29 | **********************************************************************************************/
30 | #include "rlImGui.h"
31 |
32 | #include "imgui_impl_raylib.h"
33 |
34 | #include "raylib.h"
35 | #include "rlgl.h"
36 |
37 | #include "imgui.h"
38 |
39 | #include
40 | #include