Make it work

This commit is contained in:
Zachary Hall 2024-09-28 10:31:06 -07:00
parent 9068c04cc2
commit 25c8d7b01b
473 changed files with 216164 additions and 1849 deletions

1
.gitignore vendored
View file

@ -15,3 +15,4 @@ __pycache__
.cxx
.gradle
/sdl-android-project/app/jni
wasm-rt/wasmer

21
.gitmodules vendored
View file

@ -1,39 +1,60 @@
[submodule "backends/ui/imgui/IconFontCppHeaders"]
path = backends/ui/imgui/IconFontCppHeaders
url = https://github.com/juliettef/IconFontCppHeaders.git
required = true
[submodule "subprojects/SDL-Mixer-X"]
path = subprojects/SDL-Mixer-X
url = https://github.com/WohlSoft/SDL-Mixer-X.git
branch = 22aed1f6bcfa6912a34d3241edf3bd90498a6bc2
required = true
[submodule "subprojects/jsoncpp"]
path = subprojects/jsoncpp
url = https://github.com/open-source-parsers/jsoncpp
branch = master
required = true
[submodule "subprojects/vgmstream"]
path = subprojects/vgmstream
url = https://github.com/vgmstream/vgmstream.git
branch = master
required = true
[submodule "backends/ui/imgui/imgui"]
path = backends/ui/imgui/imgui
url = https://github.com/ocornut/imgui.git
branch = v1.91.2-docking
required = true
[submodule "subprojects/soundtouch"]
path = subprojects/soundtouch
url = https://codeberg.org/soundtouch/soundtouch.git
required = false
[submodule "subprojects/SDL"]
path = subprojects/SDL
url = https://github.com/libsdl-org/SDL.git
required = false
[submodule "subprojects/SDL_image"]
path = subprojects/SDL_image
url = https://github.com/libsdl-org/SDL_image.git
required = false
[submodule "subprojects/libintl-lite"]
path = subprojects/libintl-lite
url = https://github.com/hathlife/libintl-lite.git
required = false
[submodule "subprojects/oboe"]
path = subprojects/oboe
url = https://github.com/google/oboe.git
required = false
[submodule "subprojects/protobuf"]
path = subprojects/protobuf
url = https://github.com/protocolbuffers/protobuf.git
required = false
[submodule "subprojects/fmt"]
path = subprojects/fmt
url = https://github.com/fmtlib/fmt.git
branch = master
required = true
[submodule "subprojects/grpc"]
path = subprojects/grpc
url = https://github.com/grpc/grpc
required = false
[submodule "subprojects/googletest"]
path = subprojects/googletest
url = https://github.com/google/googletest.git

View file

@ -2,9 +2,11 @@ cmake_minimum_required(VERSION 3.22)
project(looper VERSION 1.0.0 LANGUAGES C CXX)
option(SHARED_LIB "Enables building as a shared library." OFF)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten")
set(EMSCRIPTEN ON)
message("Building for WASM.")
set(EMSCRIPTEN ON)
message("Building for WASM.")
endif()
option(TESTS "Enables unit testing" OFF)
find_package(Threads)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
include(SanitizerBuildTypes)
sanitizer_build_types(ASAN AddressSanitizer LSAN LeakSanitizer MSAN MemorySanitizer TSAN ThreadSanitizer UBSAN UndefinedBehaviorSanitizer)
@ -39,95 +41,102 @@ set(JSONCPP_WITH_CMAKE_PACKAGE OFF CACHE BOOL "" FORCE)
option(ENABLE_DBUS "Enables DBus support" ON)
option(USE_PORTALS "Enables libportal" ON)
if (DEFINED EMSCRIPTEN)
set(BUILD_STATIC ON CACHE BOOL "" FORCE)
set(ENABLE_DBUS OFF CACHE BOOL "" FORCE)
set(DOWNLOAD_AUDIO_CODECS_DEPENDENCY ON CACHE BOOL "" FORCE)
set(SDL_MIXER_X_SHARED OFF CACHE BOOL "" FORCE)
set(SDL_MIXER_X_STATIC ON CACHE BOOL "" FORCE)
set(USE_OGG_VORBIS_STB ON CACHE BOOL "" FORCE)
set(USE_OPUS OFF CACHE BOOL "" FORCE)
set(USE_MODPLUG OFF CACHE BOOL "" FORCE)
set(USE_GME OFF CACHE BOOL "" FORCE)
set(USE_WAVPACK OFF CACHE BOOL "" FORCE)
set(USE_XMP OFF CACHE BOOL "" FORCE)
set(USE_MIDI_EDMIDI OFF CACHE BOOL "" FORCE)
set(USE_PORTALS OFF CACHE BOOL "" FORCE)
set(USE_SYSTEM_SDL2 ON CACHE BOOL "" FORCE)
set(USE_MPEG OFF CACHE BOOL "" FORCE)
set(USE_CELT OFF CACHE BOOL "" FORCE)
set(USE_ATRAC9 OFF CACHE BOOL "" FORCE)
set(USE_SPEEX OFF CACHE BOOL "" FORCE)
set(USE_G719 OFF CACHE BOOL "" FORCE)
set(EXTRA_FLAGS "-sUSE_VORBIS -sUSE_MPG123=1 -sUSE_ZLIB -sUSE_OGG=1 -sUSE_MODPLUG=1 -sUSE_SDL=2 -sUSE_SDL_IMAGE=2 --shell-file=${CMAKE_CURRENT_SOURCE_DIR}/web/shell.html --js-library=${CMAKE_CURRENT_SOURCE_DIR}/web/api.js -sNO_DISABLE_EXCEPTION_CATCHING")
set(DEBUG_INFO ${CMAKE_BUILD_TYPE} STREQUAL Debug OR ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo)
set(RELASE_OPTS ${CMAKE_BUILD_TYPE} STREQUAL Release OR ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo)
set(PROFILE_ENABLED ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo)
set(EXTRA_LINKER_FLAGS "-sALLOW_MEMORY_GROWTH=1 -sEXPORTED_RUNTIME_METHODS=UTF8ToString,stringToUTF8,lengthBytesUTF8 -sEXPORTED_FUNCTIONS=_malloc,_main,_memset,_write_log,_write_logln -sASYNCIFY_IMPORTS=read_file,read_storage,write_storage,remove_storage,find_keys")
set(OPENMP OFF CACHE BOOL "" FORCE)
set(SOUNDSTRETCH OFF CACHE BOOL "" FORCE)
set(SOUNDTOUCH_DLL OFF CACHE BOOL "" FORCE)
if(DEBUG_INFO)
option(STACK_OVERFLOW_CHECK "Enables extra stack overflow checks" OFF)
if(${STACK_OVERFLOW_CHECK})
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} -sSTACK_OVERFLOW_CHECK=2")
endif()
set(EXTRA_FLAGS "${EXTRA_FLAGS} -g -gsource-map")
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} --emit-symbol-map -sASSERTIONS=1")
endif()
if(RELEASE_OPTS)
set(EXTRA_FLAGS "${EXTRA_FLAGS} -flto")
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} --closure 1")
endif()
if(PROFILE_ENABLED)
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} --profiling --profiling-funcs")
endif()
set(CMAKE_FIND_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/web/cmake" ${CMAKE_FIND_ROOT_PATH})
set(SDL2_DIR ${CMAKE_CURRENT_SOURCE_DIR}/web/cmake)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_FLAGS}")
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} ${EXTRA_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINKER_FLAGS}")
option(FOR_WASMER "Enables support for wasmer" OFF)
set(BUILD_STATIC ON CACHE BOOL "" FORCE)
set(ENABLE_DBUS OFF CACHE BOOL "" FORCE)
set(DOWNLOAD_AUDIO_CODECS_DEPENDENCY ON CACHE BOOL "" FORCE)
set(SDL_MIXER_X_SHARED OFF CACHE BOOL "" FORCE)
set(SDL_MIXER_X_STATIC ON CACHE BOOL "" FORCE)
set(USE_OGG_VORBIS_STB ON CACHE BOOL "" FORCE)
set(USE_OPUS OFF CACHE BOOL "" FORCE)
set(USE_MODPLUG OFF CACHE BOOL "" FORCE)
set(USE_GME OFF CACHE BOOL "" FORCE)
set(USE_WAVPACK OFF CACHE BOOL "" FORCE)
set(USE_XMP OFF CACHE BOOL "" FORCE)
set(USE_MIDI_EDMIDI OFF CACHE BOOL "" FORCE)
set(USE_PORTALS OFF CACHE BOOL "" FORCE)
set(USE_SYSTEM_SDL2 ON CACHE BOOL "" FORCE)
set(USE_MPEG OFF CACHE BOOL "" FORCE)
set(USE_CELT OFF CACHE BOOL "" FORCE)
set(USE_ATRAC9 OFF CACHE BOOL "" FORCE)
set(USE_SPEEX OFF CACHE BOOL "" FORCE)
set(BUILD_PROTOC OFF CACHE BOOL "" FORCE)
# set(BUILD_LIBUPB OFF CACHE BOOL "" FORCE)
set(USE_G719 OFF CACHE BOOL "" FORCE)
set(EXTRA_FLAGS "-sUSE_VORBIS -sUSE_MPG123=1 -sUSE_ZLIB -sUSE_OGG=1 -sUSE_MODPLUG=1 -sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sNO_DISABLE_EXCEPTION_CATCHING")
set(DEBUG_INFO ${CMAKE_BUILD_TYPE} STREQUAL Debug OR ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo)
set(RELASE_OPTS ${CMAKE_BUILD_TYPE} STREQUAL Release OR ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo)
set(PROFILE_ENABLED ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo)
set(EXTRA_LINKER_FLAGS "-sALLOW_MEMORY_GROWTH=1 -sEXPORTED_RUNTIME_METHODS=UTF8ToString,stringToUTF8,lengthBytesUTF8 -sEXPORTED_FUNCTIONS=_malloc,_main,_memset,_write_log,_write_logln")
if (NOT FOR_WASMER)
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} -sASYNCIFY_IMPORTS=read_file,read_storage,write_storage,remove_storage,find_keys")
set(EXTRA_FLAGS "${EXTRA_FLAGS} --shell-file=${CMAKE_CURRENT_SOURCE_DIR}/web/shell.html --js-library=${CMAKE_CURRENT_SOURCE_DIR}/web/api.js")
endif()
set(OPENMP OFF CACHE BOOL "" FORCE)
set(SOUNDSTRETCH OFF CACHE BOOL "" FORCE)
set(SOUNDTOUCH_DLL OFF CACHE BOOL "" FORCE)
if(DEBUG_INFO)
option(STACK_OVERFLOW_CHECK "Enables extra stack overflow checks" OFF)
if(${STACK_OVERFLOW_CHECK})
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} -sSTACK_OVERFLOW_CHECK=2")
endif()
set(EXTRA_FLAGS "${EXTRA_FLAGS} -g -gsource-map")
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} --emit-symbol-map -sASSERTIONS=1")
endif()
if(RELEASE_OPTS)
set(EXTRA_FLAGS "${EXTRA_FLAGS} -flto")
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} --closure 1")
endif()
if(PROFILE_ENABLED)
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} --profiling --profiling-funcs")
endif()
set(CMAKE_FIND_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/web/cmake" ${CMAKE_FIND_ROOT_PATH})
set(SDL2_DIR ${CMAKE_CURRENT_SOURCE_DIR}/web/cmake)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_FLAGS}")
set(EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} ${EXTRA_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINKER_FLAGS}")
else()
set(BUILD_STATIC OFF CACHE BOOL "")
set(BUILD_STATIC OFF CACHE BOOL "")
endif()
option(BUILD_SDL "Enables built-in SDL" OFF)
option(BUILD_SDL_IMAGE "Enables built-in SDL_image" ${BUILD_SDL})
if(DEFINED ANDROID_NDK)
set(USE_SYSTEM_SDL2 ON CACHE BOOL "" FORCE)
set(AUDIOCODECS_BUILD_TIMIDITYSDL OFF CACHE BOOL "" FORCE)
set(AUDIOCODECS_BUILD_OPUS OFF CACHE BOOL "" FORCE)
set(USE_OGG_VORBIS_STB ON CACHE BOOL "" FORCE)
set(AUDIOCODECS_BUILD_WAVPACK OFF CACHE BOOL "" FORCE)
set(USE_WAVPACK OFF CACHE BOOL "" FORCE)
set(USE_MODPLUG OFF CACHE BOOL "" FORCE)
set(USE_XMP OFF CACHE BOOL "" FORCE)
set(USE_GME OFF CACHE BOOL "" FORCE)
set(USE_MIDI_EDMIDI OFF CACHE BOOL "" FORCE)
set(USE_OPUS OFF CACHE BOOL "" FORCE)
set(USE_MPEG OFF CACHE BOOL "" FORCE)
set(USE_CELT OFF CACHE BOOL "" FORCE)
set(USE_ATRAC9 OFF CACHE BOOL "" FORCE)
set(USE_SPEEX OFF CACHE BOOL "" FORCE)
set(USE_G719 OFF CACHE BOOL "" FORCE)
set(USE_VORBIS OFF CACHE BOOL "" FORCE)
set(USE_SYSTEM_SDL2 ON CACHE BOOL "" FORCE)
set(AUDIOCODECS_BUILD_TIMIDITYSDL OFF CACHE BOOL "" FORCE)
set(AUDIOCODECS_BUILD_OPUS OFF CACHE BOOL "" FORCE)
set(USE_OGG_VORBIS_STB ON CACHE BOOL "" FORCE)
set(AUDIOCODECS_BUILD_WAVPACK OFF CACHE BOOL "" FORCE)
set(USE_WAVPACK OFF CACHE BOOL "" FORCE)
set(USE_MODPLUG OFF CACHE BOOL "" FORCE)
set(USE_XMP OFF CACHE BOOL "" FORCE)
set(USE_GME OFF CACHE BOOL "" FORCE)
set(USE_MIDI_EDMIDI OFF CACHE BOOL "" FORCE)
set(USE_OPUS OFF CACHE BOOL "" FORCE)
set(USE_MPEG OFF CACHE BOOL "" FORCE)
set(USE_CELT OFF CACHE BOOL "" FORCE)
set(USE_ATRAC9 OFF CACHE BOOL "" FORCE)
set(USE_SPEEX OFF CACHE BOOL "" FORCE)
set(USE_G719 OFF CACHE BOOL "" FORCE)
set(USE_VORBIS OFF CACHE BOOL "" FORCE)
endif()
if (BUILD_SDL)
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
set(SDL_STATIC ON CACHE BOOL "" FORCE)
set(SDL_TEST OFF CACHE BOOL "" FORCE)
set(USE_SYSTEM_SDL2 ON CACHE BOOL "" FORCE)
set(SDL_MIXER_X_STATIC ON CACHE BOOL "" FORCE)
add_subdirectory(${CMAKE_SOURCE_DIR}/subprojects/SDL)
install(TARGETS SDL2-static SDL2main EXPORT SDL_EXPORTS)
install(EXPORT SDL_EXPORTS DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
export(TARGETS SDL2-static sdl-build-options SDL2main FILE ${CMAKE_CURRENT_BINARY_DIR}/SDL2Config.cmake NAMESPACE SDL2)
set(SDL2_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake/built_sdl)
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
set(SDL_STATIC ON CACHE BOOL "" FORCE)
set(SDL_TEST OFF CACHE BOOL "" FORCE)
set(USE_SYSTEM_SDL2 ON CACHE BOOL "" FORCE)
set(SDL_MIXER_X_STATIC ON CACHE BOOL "" FORCE)
add_subdirectory(${CMAKE_SOURCE_DIR}/subprojects/SDL)
install(TARGETS SDL2-static SDL2main EXPORT SDL_EXPORTS)
install(EXPORT SDL_EXPORTS DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
export(TARGETS SDL2-static sdl-build-options SDL2main FILE ${CMAKE_CURRENT_BINARY_DIR}/SDL2Config.cmake NAMESPACE SDL2)
set(SDL2_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake/built_sdl)
endif()
if (BUILD_SDL_IMAGE)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(SDL2IMAGE_SAMPLES OFF CACHE BOOL "" FORCE)
set(SDL2IMAGE_TESTS OFF CACHE BOOL "" FORCE)
add_subdirectory(${CMAKE_SOURCE_DIR}/subprojects/SDL_image)
set(SDL2_image_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake/built_sdl_image)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(SDL2IMAGE_SAMPLES OFF CACHE BOOL "" FORCE)
set(SDL2IMAGE_TESTS OFF CACHE BOOL "" FORCE)
add_subdirectory(${CMAKE_SOURCE_DIR}/subprojects/SDL_image)
set(SDL2_image_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake/built_sdl_image)
endif()
find_package(PkgConfig)
#add_subdirectory(subprojects/jsoncpp)
@ -136,26 +145,26 @@ include(GNUInstallDirs)
add_subdirectory(subprojects/SDL-Mixer-X)
add_subdirectory(subprojects/vgmstream)
if (DEFINED EMSCRIPTEN)
set(EXTRA_LIBS )
set(EXTRA_LIBS )
else()
set(EXTRA_LIBS libvgmstream_shared)
set(EXTRA_LIBS libvgmstream_shared)
endif()
if(SDL_MIXER_X_STATIC)
set(SDL_MIXER_X_TARGET SDL2_mixer_ext_Static)
set(SDL_MIXER_X_TARGET SDL2_mixer_ext_Static)
else()
set(SDL_MIXER_X_TARGET SDL2_mixer_ext)
set(EXTRA_LIBS ${EXTRA_LIBS} ${SDL_MIXER_X_TARGET})
set(SDL_MIXER_X_TARGET SDL2_mixer_ext)
set(EXTRA_LIBS ${EXTRA_LIBS} ${SDL_MIXER_X_TARGET})
endif()
add_custom_target(looper_assets COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/assets/update_assets.py WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
find_package(Git)
if (Git_FOUND)
execute_process(COMMAND ./version.sh OUTPUT_VARIABLE TAG WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
message("" ${TAG})
execute_process(COMMAND ./version.sh OUTPUT_VARIABLE TAG WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
message("" ${TAG})
else()
set(TAG "unknown")
set(TAG "unknown")
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(DEBUG ON)
set(DEBUG ON)
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
@ -165,243 +174,251 @@ set(DEBUG_MODE_VALUE ${DEBUG})
configure_file(config.cmake.h.in config.h)
add_subdirectory(subprojects/fmt)
macro(target_pkgconfig)
push_fnstack("target_pkgconfig")
cmake_parse_arguments(PARSED_ARGS "OPTIONAL;PRIVATE;PUBLIC;INTERFACE" "PREFIX" "TARGETS;LIBRARIES" ${ARGN})
if (NOT ${PARSED_ARGS_PREFIX})
warning(MESSAGE "No prefix specified for reading thie PKGConfig variable to. Attempting to guess it from the library specification...")
if (NOT ${PARSED_ARGS_LIBRARIES})
fatal(MESSAGE "... But it turns out no library specification was specified. Giving up.")
else()
set(PARSED_ARGS_PREFIX ${PARSED_ARGS_LIBRARIES})
endif()
else()
if(NOT ${PARSED_ARGS_NAME})
warning(MESSAGE "No library name was specified. Assuming it is the same as the prefix.")
set(PARSED_ARGS_LIBSPEC ${PARSED_ARGS_LIBRARIES})
endif()
endif()
pkg_check_modules(${PARSED_ARGS_PREFIX} IMPORTED_TARGET ${PARSED_ARGS_LIBRARIES})
set(PARSED_ARGS_PUBLICITY PRIVATE)
if(${PARSED_ARGS_PRIVATE})
set(PARSED_ARGS_PUBLICITY PRIVATE)
elseif(${PARSED_ARGS_PUBLIC})
set(PARSED_ARGS_PUBLICITY PUBLIC)
elseif(${PARSED_ARGS_INTERFACE})
set(PARSED_ARGS_PUBLICITY INTERFACE)
endif()
foreach(TARGET IN ITEMS ${PARSED_ARGS_TARGETS})
target_link_libraries(${TARGET} ${PARSED_ARGS_PUBLICITY} PkgConfig::${PARSED_ARGS_PREFIX})
endforeach()
pop_fnstack()
push_fnstack("target_pkgconfig")
cmake_parse_arguments(PARSED_ARGS "OPTIONAL;PRIVATE;PUBLIC;INTERFACE" "PREFIX" "TARGETS;LIBRARIES" ${ARGN})
if (NOT ${PARSED_ARGS_PREFIX})
warning(MESSAGE "No prefix specified for reading thie PKGConfig variable to. Attempting to guess it from the library specification...")
if (NOT ${PARSED_ARGS_LIBRARIES})
fatal(MESSAGE "... But it turns out no library specification was specified. Giving up.")
else()
set(PARSED_ARGS_PREFIX ${PARSED_ARGS_LIBRARIES})
endif()
else()
if(NOT ${PARSED_ARGS_NAME})
warning(MESSAGE "No library name was specified. Assuming it is the same as the prefix.")
set(PARSED_ARGS_LIBSPEC ${PARSED_ARGS_LIBRARIES})
endif()
endif()
pkg_check_modules(${PARSED_ARGS_PREFIX} IMPORTED_TARGET ${PARSED_ARGS_LIBRARIES})
set(PARSED_ARGS_PUBLICITY PRIVATE)
if(${PARSED_ARGS_PRIVATE})
set(PARSED_ARGS_PUBLICITY PRIVATE)
elseif(${PARSED_ARGS_PUBLIC})
set(PARSED_ARGS_PUBLICITY PUBLIC)
elseif(${PARSED_ARGS_INTERFACE})
set(PARSED_ARGS_PUBLICITY INTERFACE)
endif()
foreach(TARGET IN ITEMS ${PARSED_ARGS_TARGETS})
target_link_libraries(${TARGET} ${PARSED_ARGS_PUBLICITY} PkgConfig::${PARSED_ARGS_PREFIX})
endforeach()
pop_fnstack()
endmacro()
set(INC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} subprojects/vgmstream/src subprojects/vgmstream/src/base)
set(UI_BACKENDS "")
list(POP_FRONT UI_BACKENDS)
macro(prefix_all)
set(ARGS ${ARGV})
list(POP_FRONT ARGS OUT_VAR PREFIX)
set(${OUT_VAR} )
foreach(ARG IN ITEMS ${ARGS})
list(APPEND ${OUT_VAR} ${PREFIX}${ARG})
endforeach()
set(ARGS ${ARGV})
list(POP_FRONT ARGS OUT_VAR PREFIX)
set(${OUT_VAR} )
foreach(ARG IN ITEMS ${ARGS})
list(APPEND ${OUT_VAR} ${PREFIX}${ARG})
endforeach()
endmacro()
find_package(gRPC CONFIG REQUIRED)
set(_PROTOBUF_LIBPROTOBUF ${Protobuf_LIBRARY_RELEASE})
set(_REFLECTION gRPC::grpc++_reflection)
set(_GRPC_GRPCPP gRPC::grpc++)
find_program(_GRPC_CPP_PLUGIN_EXE grpc_cpp_plugin)
if(BUILD_PROTOBUF)
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
else()
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
endif()
find_program(_PROTOBUF_PROTOC protoc)
function(grpc_proto)
cmake_parse_arguments(GRPC_PROTO "" "TARGET"
"SOURCES" ${ARGV})
foreach (GRPC_PROTO_SOURCE ${GRPC_PROTO_SOURCES})
set(GRPC_PROTO_SRCS)
set(GRPC_PROTO_HDRS)
set(GRPC_GRPC_SRCS)
set(GRPC_GRPC_HDRS)
get_filename_component(src_stem "${GRPC_PROTO_SOURCE}" NAME_WE)
get_filename_component(src_path "${GRPC_PROTO_SOURCE}" DIRECTORY)
cmake_path(RELATIVE_PATH src_path BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE src_rel_path)
set(src_out ${CMAKE_CURRENT_BINARY_DIR}/${src_rel_path})
message("Output directory: ${src_out}")
list(APPEND GRPC_PROTO_SRCS ${src_out}/${src_stem}.pb.cc)
list(APPEND GRPC_PROTO_HDRS ${src_out}/${src_stem}.pb.h)
list(APPEND GRPC_GRPC_SRCS ${src_out}/${src_stem}.grpc.pb.cc)
list(APPEND GRPC_GRPC_HDRS ${src_out}/${src_stem}.grpc.pb.h)
make_directory(${src_out})
add_custom_command(
OUTPUT ${GRPC_PROTO_SRCS} ${GRPC_PROTO_HDRS} ${GRPC_GRPC_SRCS} ${GRPC_GRPC_HDRS}
COMMAND ${_PROTOBUF_PROTOC}
ARGS --grpc_out "${src_out}"
--cpp_out "${src_out}"
-I "${src_path}"
--plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXE}"
"${GRPC_PROTO_SOURCE}"
DEPENDS "${GRPC_PROTO_SOURCE}"
)
target_sources(${GRPC_PROTO_TARGET} PRIVATE ${GRPC_PROTO_SRCS} ${GRPC_GRPC_SRCS})
target_include_directories(${GRPC_PROTO_TARGET} PRIVATE ${src_out})
endforeach()
target_include_directories(${GRPC_PROTO_TARGET} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(${GRPC_PROTO_TARGET} PUBLIC ${_REFLECTION} ${_GRPC_GRPCPP} ${_PROTOBUF_LIBPROTOBUF})
cmake_parse_arguments(GRPC_PROTO "" "TARGET"
"SOURCES" ${ARGV})
foreach (GRPC_PROTO_SOURCE ${GRPC_PROTO_SOURCES})
set(GRPC_PROTO_SRCS)
set(GRPC_PROTO_HDRS)
get_filename_component(src_stem "${GRPC_PROTO_SOURCE}" NAME_WE)
get_filename_component(src_path "${GRPC_PROTO_SOURCE}" DIRECTORY)
cmake_path(RELATIVE_PATH src_path BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE src_rel_path)
set(src_out ${CMAKE_CURRENT_BINARY_DIR}/${src_rel_path})
message("Output directory: ${src_out}")
list(APPEND GRPC_PROTO_SRCS ${src_out}/${src_stem}.pb.cc)
list(APPEND GRPC_PROTO_HDRS ${src_out}/${src_stem}.pb.h)
make_directory(${src_out})
add_custom_command(
OUTPUT ${GRPC_PROTO_SRCS} ${GRPC_PROTO_HDRS}
COMMAND ${_PROTOBUF_PROTOC}
--cpp_out "${src_out}"
-I "${src_path}"
"${GRPC_PROTO_SOURCE}"
DEPENDS "${GRPC_PROTO_SOURCE}"
)
target_sources(${GRPC_PROTO_TARGET} PRIVATE ${GRPC_PROTO_SRCS})
target_include_directories(${GRPC_PROTO_TARGET} PRIVATE ${src_out})
endforeach()
target_include_directories(${GRPC_PROTO_TARGET} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
if (BUILD_PROTOBUF)
target_include_directories(${GRPC_PROTO_TARGET} PUBLIC ${CMAKE_SOURCE_DIR}/subprojects/protobuf/src ${CMAKE_SOURCE_DIR}/subprojects/protobuf/third_party/abseil-cpp)
endif()
target_link_libraries(${GRPC_PROTO_TARGET} PUBLIC ${_PROTOBUF_LIBPROTOBUF})
endfunction()
prefix_all(LIBRARY_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/
backend.cpp
options.cpp
playback.cpp
util.cpp
log.cpp
dbus.cpp
file_backend.cpp
playback_backend.cpp
translation.cpp
playback_process.cpp
${CMAKE_CURRENT_SOURCE_DIR}/
backend.cpp
options.cpp
playback.cpp
util.cpp
log.cpp
dbus.cpp
file_backend.cpp
playback_backend.cpp
translation.cpp
playback_process.cpp
base85.cpp
)
add_library(liblooper STATIC ${LIBRARY_SOURCES})
if(FOR_WASMER)
target_compile_definitions(liblooper PUBLIC FOR_WASMER)
endif()
grpc_proto(TARGET liblooper SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ipc/internal.proto ${CMAKE_CURRENT_SOURCE_DIR}/ipc/common.proto)
target_include_directories(liblooper PUBLIC ${INC})
target_link_libraries(liblooper PUBLIC grpc++)
target_include_directories(liblooper PUBLIC)
set(JSONCPP_TARGET PkgConfig::jsoncpp)
set(SOUNDTOUCH_TARGET PkgConfig::SoundTouch)
function(set_to_value_of_condition var)
if (${ARGN})
set(${var} ON PARENT_SCOPE)
else()
set(${var} OFF PARENT_SCOPE)
endif()
if (${ARGN})
set(${var} ON PARENT_SCOPE)
else()
set(${var} OFF PARENT_SCOPE)
endif()
endfunction()
set_to_value_of_condition(BUILD_THIRDPARTY DEFINED EMSCRIPTEN OR DEFINED ANDROID_NDK)
find_package(Intl)
set_to_value_of_condition(_USE_LIBINTL_LITE NOT Intl_FOUND)
option(BUILD_JSONCPP "Builds JsonCpp instead of using the system package." ${BUILD_THIRDPARTY})
option(BUILD_SOUNDTOUCH "Builds SoundTouch instead of using the system package" ${BUILD_THIRDPARTY})
option(BUILD_PROTOBUF "Builds protobuf instead of using the system package" ${BUILD_THIRDPARTY})
option(USE_LIBINTL_LITE "Set to ON to build and use libintl-lite" ${_USE_LIBINTL_LITE})
set(LIBINTL_LIBRARY)
set(LIBINTL_INCDIRS)
if(BUILD_JSONCPP)
add_subdirectory(subprojects/jsoncpp)
set(JSONCPP_TARGET jsoncpp_static)
add_subdirectory(subprojects/jsoncpp)
set(JSONCPP_TARGET jsoncpp_static)
endif()
if(BUILD_SOUNDTOUCH)
add_subdirectory(subprojects/soundtouch)
set(SOUNDTOUCH_TARGET SoundTouch)
set(SOUNDSTRETCH OFF CACHE BOOL "" FORCE)
set(INTEGER_SAMPLES OFF CACHE BOOL "")
add_subdirectory(subprojects/soundtouch)
set(SOUNDTOUCH_TARGET SoundTouch)
endif()
if(BUILD_PROTOBUF)
add_subdirectory(subprojects/protobuf)
else()
find_package(protobuf REQUIRED)
find_package(absl CONFIG REQUIRED)
endif()
if(USE_LIBINTL_LITE)
add_subdirectory(subprojects/libintl-lite)
set(LIBINTL_LIBRARY intl CACHE INTERNAL "")
set(LIBINTL_INCDIRS "subprojects/libintl-lite" CACHE INTERNAL "")
add_subdirectory(subprojects/libintl-lite)
set(LIBINTL_LIBRARY intl CACHE INTERNAL "")
set(LIBINTL_INCDIRS "subprojects/libintl-lite" CACHE INTERNAL "")
else()
find_package(Intl REQUIRED)
set(LIBINTL_LIBRARY Intl::Intl CACHE INTERNAL "")
set(LIBINTL_INCDIRS ${Intl_INCLUDE_DIRS} CACHE INTERNAL "")
find_package(Intl REQUIRED)
set(LIBINTL_LIBRARY Intl::Intl CACHE INTERNAL "")
set(LIBINTL_INCDIRS ${Intl_INCLUDE_DIRS} CACHE INTERNAL "")
endif()
if (DEFINED ANDROID_NDK)
add_subdirectory(subprojects/oboe)
target_link_libraries(liblooper PUBLIC oboe)
add_subdirectory(subprojects/oboe)
target_link_libraries(liblooper PUBLIC oboe)
endif()
find_package(absl CONFIG REQUIRED)
target_link_libraries(liblooper PUBLIC ${Protobuf_LIBRARY_RELEASE} fmt::fmt)
target_include_directories(liblooper PUBLIC ${LIBINTL_INCDIRS})
target_link_libraries(liblooper PUBLIC ${LIBINTL_LIBRARY})
if(DEFINED EMSCRIPTEN)
target_link_libraries(liblooper PUBLIC ${SDL_MIXER_X_TARGET} ${SOUNDTOUCH_TARGET} libvgmstream ${JSONCPP_TARGET})
target_compile_options(liblooper PUBLIC "-sUSE_SDL=2")
target_link_libraries(liblooper PUBLIC ${SDL_MIXER_X_TARGET} ${SOUNDTOUCH_TARGET} libvgmstream ${JSONCPP_TARGET})
target_compile_options(liblooper PUBLIC "-sUSE_SDL=2")
else()
if(NOT BUILD_SOUNDTOUCH)
pkg_check_modules(SoundTouch IMPORTED_TARGET soundtouch)
endif()
if (NOT BUILD_JSONCPP)
pkg_check_modules(jsoncpp IMPORTED_TARGET jsoncpp)
endif()
if (NOT BUILD_SDL)
find_package(SDL2 REQUIRED)
endif()
if (ENABLE_DBUS)
find_package(sdbus-c++)
if(NOT ${sdbus-c++_FOUND})
set(ENABLE_DBUS OFF)
message("Warning: Dbus support not found - Not enabling DBus")
endif()
endif()
set(SDL2_TARGET SDL2::SDL2)
if (TARGET SDL2-static)
set(SDL2_TARGET SDL2-static)
endif()
target_link_libraries(liblooper PUBLIC ${SDL2_TARGET} SDL2main ${SDL_MIXER_X_TARGET} ${SOUNDTOUCH_TARGET} libvgmstream libvgmstream_shared ${JSONCPP_TARGET})
if(NOT BUILD_SOUNDTOUCH)
pkg_check_modules(SoundTouch IMPORTED_TARGET soundtouch)
endif()
if (NOT BUILD_JSONCPP)
pkg_check_modules(jsoncpp IMPORTED_TARGET jsoncpp)
endif()
if (NOT BUILD_SDL)
find_package(SDL2 REQUIRED)
endif()
if (ENABLE_DBUS)
find_package(sdbus-c++)
if(NOT ${sdbus-c++_FOUND})
set(ENABLE_DBUS OFF)
message("Warning: Dbus support not found - Not enabling DBus")
endif()
endif()
set(SDL2_TARGET SDL2::SDL2)
if (TARGET SDL2-static)
set(SDL2_TARGET SDL2-static)
endif()
target_link_libraries(liblooper PUBLIC ${SDL2_TARGET} SDL2main ${SDL_MIXER_X_TARGET} ${SOUNDTOUCH_TARGET} libvgmstream libvgmstream_shared ${JSONCPP_TARGET})
endif()
if (${ENABLE_DBUS})
target_link_libraries(liblooper PUBLIC SDBusCpp::sdbus-c++)
target_compile_definitions(liblooper PUBLIC DBUS_ENABLED)
target_link_libraries(liblooper PUBLIC SDBusCpp::sdbus-c++)
target_compile_definitions(liblooper PUBLIC DBUS_ENABLED)
endif()
macro(add_ui_backend)
set(ARGS ${ARGV})
list(POP_FRONT ARGS target)
add_library(${target} STATIC ${ARGS})
message("Enabling UI backend '" ${target} "'...")
list(APPEND UI_BACKENDS ${target})
set(UI_BACKENDS ${UI_BACKENDS} PARENT_SCOPE)
add_dependencies(${target} looper_assets)
target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${INC})
target_link_libraries(${target} PRIVATE liblooper)
if(${USE_PORTALS})
target_pkgconfig(TARGETS ${target} PRIVATE PREFIX libPortal LIBRARIES libportal)
if (NOT ${libPortal_FOUND} EQUAL "1")
set(USE_PORTALS OFF)
else()
info("Enabling libportal support...")
target_compile_definitions(imgui_ui PRIVATE "PORTALS")
endif()
endif()
set(ARGS ${ARGV})
list(POP_FRONT ARGS target)
add_library(${target} STATIC ${ARGS})
message("Enabling UI backend '" ${target} "'...")
list(APPEND UI_BACKENDS ${target})
set(UI_BACKENDS ${UI_BACKENDS} PARENT_SCOPE)
add_dependencies(${target} looper_assets)
target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${INC})
target_link_libraries(${target} PRIVATE liblooper)
if(${USE_PORTALS})
target_pkgconfig(TARGETS ${target} PRIVATE PREFIX libPortal LIBRARIES libportal)
if (NOT ${libPortal_FOUND} EQUAL "1")
set(USE_PORTALS OFF)
else()
info("Enabling libportal support...")
target_compile_definitions(imgui_ui PRIVATE "PORTALS")
endif()
endif()
endmacro()
macro(ui_backend_subdir)
cmake_parse_arguments(UI_OPTS "" "SUBDIR;NAME;READABLE_NAME" "" ${ARGN} )
message("Backend ${UI_OPTS_READABLE_NAME} defined...")
set(UI_DISABLE_OPT DISABLE_${UI_OPTS_NAME}_UI)
option(${UI_DISABLE_OPT} "Disables the ${UI_OPTS_READABLE_NAME} UI" OFF)
if (NOT ${${UI_DISABLE_OPT}})
cmake_path(GET UI_OPTS_SUBDIR STEM UI_OPTS_DIRNAME)
set(BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${UI_OPTS_SUBDIR})
add_subdirectory(${UI_OPTS_SUBDIR})
list(APPEND ENABLED_UIS "${UI_OPTS_DIRNAME}")
message("Enabled backend ${UI_OPTS_READABLE_NAME}.")
else()
message("Disabled backend ${UI_OPTS_READABLE_NAME}")
endif()
cmake_parse_arguments(UI_OPTS "" "SUBDIR;NAME;READABLE_NAME" "" ${ARGN} )
message("Backend ${UI_OPTS_READABLE_NAME} defined...")
set(UI_DISABLE_OPT DISABLE_${UI_OPTS_NAME}_UI)
option(${UI_DISABLE_OPT} "Disables the ${UI_OPTS_READABLE_NAME} UI" OFF)
if (NOT ${${UI_DISABLE_OPT}})
cmake_path(GET UI_OPTS_SUBDIR STEM UI_OPTS_DIRNAME)
set(BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${UI_OPTS_SUBDIR})
add_subdirectory(${UI_OPTS_SUBDIR})
list(APPEND ENABLED_UIS "${UI_OPTS_DIRNAME}")
message("Enabled backend ${UI_OPTS_READABLE_NAME}.")
else()
message("Disabled backend ${UI_OPTS_READABLE_NAME}")
endif()
endmacro()
macro(add_playback_backend)
set(ARGS ${ARGV})
list(POP_FRONT ARGS target)
add_library(${target} STATIC ${ARGS})
message("Enabling playback backend '" ${target} "'...")
list(APPEND PLAYBACK_BACKENDS ${target})
set(PLAYBACK_BACKENDS ${PLAYBACK_BACKENDS} PARENT_SCOPE)
add_dependencies(${target} looper_assets)
target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${INC})
target_link_libraries(${target} PRIVATE liblooper)
set(ARGS ${ARGV})
list(POP_FRONT ARGS target)
add_library(${target} STATIC ${ARGS})
message("Enabling playback backend '" ${target} "'...")
list(APPEND PLAYBACK_BACKENDS ${target})
set(PLAYBACK_BACKENDS ${PLAYBACK_BACKENDS} PARENT_SCOPE)
add_dependencies(${target} looper_assets)
target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${INC})
target_link_libraries(${target} PRIVATE liblooper)
endmacro()
macro(playback_backend_subdir)
cmake_parse_arguments(PLAYBACK_OPTS "" "SUBDIR;NAME;READABLE_NAME" "" ${ARGN} )
message("Backend ${PLAYBACK_OPTS_READABLE_NAME} defined...")
set(PLAYBACK_DISABLE_OPT DISABLE_${PLAYBACK_OPTS_NAME}_PLAYBACK_BACKEND)
option(${PLAYBACK_DISABLE_OPT} "Disables the ${PLAYBACK_OPTS_READABLE_NAME} playback backend" OFF)
if (NOT ${${PLAYBACK_DISABLE_OPT}})
cmake_path(GET PLAYBACK_OPTS_SUBDIR STEM PLAYBACK_OPTS_DIRNAME)
set(BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${PLAYBACK_OPTS_SUBDIR})
add_subdirectory(${PLAYBACK_OPTS_SUBDIR})
list(APPEND ENABLED_PLAYBACK_BACKENDS "${PLAYBACK_OPTS_DIRNAME}")
message("Enabled backend ${PLAYBACK_OPTS_READABLE_NAME}.")
else()
message("Disabled backend ${PLAYBACK_OPTS_READABLE_NAME}")
endif()
cmake_parse_arguments(PLAYBACK_OPTS "" "SUBDIR;NAME;READABLE_NAME" "" ${ARGN} )
message("Backend ${PLAYBACK_OPTS_READABLE_NAME} defined...")
set(PLAYBACK_DISABLE_OPT DISABLE_${PLAYBACK_OPTS_NAME}_PLAYBACK_BACKEND)
option(${PLAYBACK_DISABLE_OPT} "Disables the ${PLAYBACK_OPTS_READABLE_NAME} playback backend" OFF)
if (NOT ${${PLAYBACK_DISABLE_OPT}})
cmake_path(GET PLAYBACK_OPTS_SUBDIR STEM PLAYBACK_OPTS_DIRNAME)
set(BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${PLAYBACK_OPTS_SUBDIR})
add_subdirectory(${PLAYBACK_OPTS_SUBDIR})
list(APPEND ENABLED_PLAYBACK_BACKENDS "${PLAYBACK_OPTS_DIRNAME}")
message("Enabled backend ${PLAYBACK_OPTS_READABLE_NAME}.")
else()
message("Disabled backend ${PLAYBACK_OPTS_READABLE_NAME}")
endif()
endmacro()
set(ENABLED_UIS )
set(ENABLED_PLAYBACK_BACKENDS )
ui_backend_subdir(NAME "IMGUI" READABLE_NAME "Dear ImGui" SUBDIR backends/ui/imgui)
if (NOT (DEFINED EMSCRIPTEN OR DEFINED ANDROID_NDK))
ui_backend_subdir(NAME "GTK" READABLE_NAME "GTK4" SUBDIR backends/ui/gtk)
ui_backend_subdir(NAME "GTK" READABLE_NAME "GTK4" SUBDIR backends/ui/gtk)
endif()
playback_backend_subdir(NAME "VGMSTREAM" READABLE_NAME "VgmStream" SUBDIR backends/playback/vgmstream)
playback_backend_subdir(NAME "SDL_MIXER_X" READABLE_NAME "SDL Mixer X" SUBDIR backends/playback/sdl_mixer_x)
@ -410,52 +427,67 @@ execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/gen_ui_backend_inc.py ${CMAK
prefix_all(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ main.cpp daemon_backend.cpp proxy_backend.cpp)
list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/backend_glue.cpp)
if(DEFINED EMSCRIPTEN)
set(CMAKE_EXECUTABLE_SUFFIX ".html")
set(CMAKE_EXECUTABLE_SUFFIX ".html")
endif()
set(TARGET_NAME looper)
if(DEFINED EMSCRIPTEN)
set(TARGET_NAME index)
set(TARGET_NAME index)
endif()
function(copy_to_bindir src dst)
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/${src}" "$<TARGET_FILE_DIR:${TARGET_NAME}>/${dst}")
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/${src}" "$<TARGET_FILE_DIR:${TARGET_NAME}>/${dst}")
endfunction()
if (DEFINED ANDROID_NDK OR SHARED_LIB)
add_library(${TARGET_NAME} SHARED ${SOURCES})
add_library(${TARGET_NAME} SHARED ${SOURCES})
else()
add_executable(${TARGET_NAME} ${SOURCES})
add_executable(${TARGET_NAME} ${SOURCES})
endif()
add_dependencies(${TARGET_NAME} looper_assets ${UI_BACKENDS})
if(DEFINED EMSCRIPTEN)
copy_to_bindir(assets/icon.svg icon.svg)
copy_to_bindir(assets/icon.png icon.png)
copy_to_bindir(web/shell.js shell.js)
copy_to_bindir(web/style.css style.css)
copy_to_bindir(web/serviceWorker.js serviceWorker.js)
copy_to_bindir(web/manifest.json manifest.json)
copy_to_bindir(assets/ForkAwesome/fonts/forkawesome-webfont.ttf forkawesome-webfont.ttf)
copy_to_bindir(assets/ForkAwesome/css/fork-awesome.min.css fork-awesome.min.css)
copy_to_bindir(assets/ForkAwesome/css/fork-awesome.min.css.map fork-awesome.min.css.map)
endif()
find_program(ASCLI_EXE NAMES "appstreamcli" NO_CACHE)
if(${ASCLI_EXE} STREQUAL "ASCLIEXE-NOTFOUND")
message("Cannot verify Appstream Metadata.")
else()
add_test(NAME "verify appstream metadata" COMMAND ${ASCLI_EXE} validate --no-net --pedantic "assets/com.complecwaft.Looper.metainfo.xml")
copy_to_bindir(assets/icon.svg icon.svg)
copy_to_bindir(assets/icon.png icon.png)
copy_to_bindir(web/shell.js shell.js)
copy_to_bindir(web/style.css style.css)
copy_to_bindir(web/serviceWorker.js serviceWorker.js)
copy_to_bindir(web/manifest.json manifest.json)
copy_to_bindir(assets/ForkAwesome/fonts/forkawesome-webfont.ttf forkawesome-webfont.ttf)
copy_to_bindir(assets/ForkAwesome/css/fork-awesome.min.css fork-awesome.min.css)
copy_to_bindir(assets/ForkAwesome/css/fork-awesome.min.css.map fork-awesome.min.css.map)
endif()
target_link_libraries(${TARGET_NAME} PUBLIC liblooper ${UI_BACKENDS} ${PLAYBACK_BACKENDS})
install(TARGETS ${TARGET_NAME} ${EXTRA_LIBS})
if (${BUILD_SDL2})
install(EXPORT SDL2-static SDL2main)
install(EXPORT SDL2-static SDL2main)
endif()
if (NOT DEFINED EMSCRIPTEN)
install(FILES assets/icon.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/)
install(FILES assets/com.complecwaft.Looper.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
install(FILES assets/com.complecwaft.Looper.metainfo.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
install(DIRECTORY assets/translations/ TYPE LOCALE PATTERN "*" EXCLUDE PATTERN "looper.pot")
install(FILES assets/icon.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/)
install(FILES assets/com.complecwaft.Looper.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
install(FILES assets/com.complecwaft.Looper.metainfo.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
install(DIRECTORY assets/translations/ TYPE LOCALE PATTERN "*" EXCLUDE PATTERN "looper.pot")
endif()
if (SHARED_LIB)
target_compile_definitions(${TARGET_NAME} PRIVATE "LIBRARY_MODE")
target_compile_definitions(${TARGET_NAME} PRIVATE "LIBRARY_MODE")
endif()
if(TESTS)
include(GoogleTest)
include(CTest)
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
add_subdirectory(subprojects/googletest)
add_executable(looper_tests tests.cpp ${CMAKE_CURRENT_BINARY_DIR}/backend_glue.cpp)
add_dependencies(looper_tests looper_assets)
target_link_libraries(looper_tests PRIVATE ${PLAYBACK_BACKENDS} ${UI_BACKENDS})
set(TESTS "FileBackend.Seeking" "FileBackend.Reading" "FileBackend.ReadingSeeking" "PlaybackBackend.Looping")
foreach (test ${TESTS})
get_filename_component(test_cat ${test} NAME_WE)
get_filename_component(test_name ${test} EXT)
string(SUBSTRING ${test_name} 1 -1 test_name)
add_test(NAME ${test_name} COMMAND ${CMAKE_CURRENT_BINARY_DIR}/looper_tests --gtest_filter=${test} PROPERTY LABELS ${test_cat})
endforeach()
target_include_directories(liblooper SYSTEM PUBLIC subprojects/googletest/googletest/include)
target_link_libraries(looper_tests PRIVATE liblooper)
target_link_libraries(liblooper PUBLIC gtest_main)
target_compile_definitions(liblooper PUBLIC TESTS)
endif()

BIN
assets/testdata/test.flac vendored Normal file

Binary file not shown.

BIN
assets/testdata/test.wav vendored Normal file

Binary file not shown.

View file

@ -26,10 +26,12 @@ def run_btcc(args: list[str], outpath: str):
actual_args += [arg]
actual_args += [outpath]
subprocess.call(actual_args, stdout=f)
def add_basic(input: str, output: str, ASSETS = ASSETS):
def add_basic(input: str, output: str):
global ASSETS
ASSETS += [output + ".h"]
run_btcc(["-nocompress", input], output)
def add_base85(input: str, output: str, ASSETS = ASSETS):
def add_base85(input: str, output: str):
global ASSETS
ASSETS += [output + ".h"]
run_btcc(["-base85", input], output)
def add_font(input: str, output: str|None = None):
@ -90,7 +92,8 @@ add_license("../backends/ui/imgui/IconFontCppHeaders/licence.txt", "icnfntcpphdr
add_css("gtk-frontend.css", "gtk_frontend_css")
add_dbus('app.dbus.xml', 'dbus_stub')
add_dbus('mpris.dbus.xml', 'mpris_stub')
def finalize(output: str, ASSETS = ASSETS):
def finalize(output: str):
global ASSETS
print("Writing a header including all previous asset headers and writing it to '%s'..." % output)
with open(output, "wt+") as f:
f.write("#pragma once\n")
@ -99,6 +102,10 @@ def finalize(output: str, ASSETS = ASSETS):
f.write("#include \"%s\"\n" % asset)
ASSETS = []
finalize("assets.h")
for file in os.listdir("testdata"):
fpath = path.join(os.curdir, "testdata", path.basename(file))
add_basic(fpath, "testdata_%s_%s" % (path.splitext(path.basename(file))[0], path.splitext(file)[1].removeprefix(".")))
finalize("test_assets.h")
os.remove("btcc")
print("Returning to previous directory, now that we're done!")
os.chdir(olddir)

View file

@ -1,21 +1,23 @@
#include "sdl_mixer_x.hpp"
#include <endian.h>
#include <filesystem>
#include "file_backend.hpp"
#include <stddef.h>
#include <log.hpp>
#include <util.hpp>
#include <string.h>
std::optional<uint64_t> SDLMixerXBackend::get_max_samples() {
return 100;
return 4096;
}
void SDLMixerXBackend::load(const char *filename) {
Mix_Init(MIX_INIT_FLAC|MIX_INIT_MID|MIX_INIT_MOD|MIX_INIT_MP3|MIX_INIT_OGG|MIX_INIT_OPUS|MIX_INIT_WAVPACK);
memset(&spec, 0, sizeof(spec));
spec.callback = NULL;
spec.channels = 2;
spec.userdata = NULL;
spec.format = AUDIO_F32SYS;
spec.freq = 48000;
spec.samples = get_max_samples().value();
spec.size = spec.samples * sizeof(float);
spec.size = spec.samples * 4 * spec.channels;
Mix_InitMixer(&spec, SDL_FALSE);
mixer = Mix_GetGeneralMixer();
{
@ -42,11 +44,18 @@ void SDLMixerXBackend::load(const char *filename) {
DEBUG.writefln("Opening file: %s", filename);
file = open_file(filename);
DEBUG.writeln("Loading file...");
Mix_Music *output = Mix_LoadMUS_RW(get_sdl_file(this->file), 0);
this->music = nullptr;
Mix_Music *output = Mix_LoadMUS_RW(get_sdl_file(this->file), SDL_TRUE);
if (output == nullptr) {
ERROR.writefln("Error occurred: %s", Mix_GetError());
throw std::exception();
}
Mix_PlayMusicStream(output, -1);
if (Mix_PlayMusicStream(output, -1) < 0) {
ERROR.writefln("Error occurred: %s", Mix_GetError());
this->music = output;
throw std::exception();
}
Mix_ResumeMusicStream(output);
length = Mix_MusicDuration(output);
current_file = std::string(filename);
const char *title_tag = Mix_GetMusicTitleTag(output);
@ -65,8 +74,11 @@ void SDLMixerXBackend::load(const char *filename) {
stream.name = current_title;
streams.push_back(stream);
open = true;
initial = true;
}
void SDLMixerXBackend::switch_stream(int idx) {
seek(0.0);
}
void SDLMixerXBackend::switch_stream(int idx) { }
void SDLMixerXBackend::seek(double position) {
if (music == nullptr || file == nullptr) {
open = false;
@ -79,14 +91,34 @@ size_t SDLMixerXBackend::render(void *buf, size_t maxlen) {
open = false;
return 0;
}
if (maxlen > spec.size) {
maxlen = spec.size;
if (initial) {
seek(0.0);
}
size_t i = 0;
size_t bytes_per_iter = maxlen;
if (bytes_per_iter > spec.size) {
bytes_per_iter = spec.size;
}
// Remove partial sample frames.
maxlen /= sizeof(float);
maxlen *= sizeof(float);
mixer(NULL, (Uint8*)buf, maxlen);
return maxlen;
bytes_per_iter /= sizeof(float);
bytes_per_iter *= sizeof(float);
while (i < maxlen) {
if (i + bytes_per_iter > maxlen) {
bytes_per_iter = maxlen - i;
// Remove partial sample frames.
bytes_per_iter /= sizeof(float);
bytes_per_iter *= sizeof(float);
}
mixer(NULL, (Uint8*)(buf) + i, bytes_per_iter);
i += bytes_per_iter;
}
if (get_position() > (((double)maxlen) / ((double)spec.freq))) {
if (initial) {
seek(0.0);
}
initial = false;
}
return i;
}
double SDLMixerXBackend::get_position() {
if (music == nullptr || file == nullptr) {
@ -95,12 +127,29 @@ double SDLMixerXBackend::get_position() {
}
return Mix_GetMusicPosition(music);
}
SDLMixerXBackend::SDLMixerXBackend() {
Mix_Init(MIX_INIT_FLAC|MIX_INIT_MID|MIX_INIT_MOD|MIX_INIT_MP3|MIX_INIT_OGG|MIX_INIT_OPUS|MIX_INIT_WAVPACK);
}
SDLMixerXBackend::~SDLMixerXBackend() {
Mix_Quit();
}
void SDLMixerXBackend::cleanup() {
streams.clear();
Mix_HaltMusicStream(music);
Mix_FreeMusic(music);
position = 0.0;
rate = 0.0;
memset(&spec, 0, sizeof(spec));
current_file = "";
current_title = "";
length = 0.0;
if (music != nullptr) {
Mix_HaltMusicStream(music);
Mix_FreeMusic(music);
}
Mix_SetSoundFonts(NULL);
mixer = nullptr;
music = nullptr;
delete file;
file = nullptr;
Mix_Quit();
open = false;
Mix_CloseAudio();
}

View file

@ -6,6 +6,7 @@ class SDLMixerXBackend : public PlaybackBackend {
Mix_Music *music;
Mix_CommonMixer_t mixer;
File *file;
bool initial = false;
public:
inline std::string get_id() override {
return "sdl_mixer_x";
@ -20,5 +21,6 @@ class SDLMixerXBackend : public PlaybackBackend {
void switch_stream(int idx) override;
void cleanup() override;
size_t render(void *buf, size_t maxlen) override;
inline ~SDLMixerXBackend() override { }
SDLMixerXBackend();
~SDLMixerXBackend() override;
};

View file

@ -1,7 +1,7 @@
// Commander X16 Emulator
// Copyright (c) 2020 Frank van den Hoef
// All rights reserved. License: 2-clause BSD
#define IN_AUDIO
#include "audio.h"
#include "glue.h"
#include "vera_psg.h"
@ -50,9 +50,8 @@ static const int16_t filter[512] = {
-80, -74, -69, -63, -58, -53, -47, -42, -37, -32, -27, -22, -17, -12, -7, -2
};
static SDL_AudioDeviceID audio_dev;
static int16_t * buffer;
static uint32_t buffer_size = 0;
uint32_t buffer_size = 0;
static uint32_t rdidx = 0;
static uint32_t wridx = 0;
static uint32_t buffer_written = 0;
@ -105,18 +104,8 @@ audio_callback(void *userdata, Uint8 *stream, int len)
SDL_AudioSpec obtained;
void
audio_init(const char *dev_name, int num_audio_buffers)
audio_init(int num_audio_buffers)
{
if (audio_dev > 0) {
audio_close();
}
if (dev_name) {
if (!strcmp("none", dev_name)) {
return;
}
}
// Set number of buffers
int num_bufs = num_audio_buffers;
if (num_bufs < 3) {
@ -141,7 +130,6 @@ audio_init(const char *dev_name, int num_audio_buffers)
desired.format = AUDIO_S16SYS;
desired.samples = SAMPLES_PER_BUFFER;
desired.channels = 2;
desired.callback = audio_callback;
obtained = desired;
if (obtained.freq <= 0 || (AUDIO_SAMPLERATE / obtained.freq) > SAMPLES_PER_BUFFER) {
@ -299,6 +287,7 @@ audio_render()
}
buffer[wridx++] = (int16_t)((mix_l * limiter_amp) >> 16);
buffer[wridx++] = (int16_t)((mix_r * limiter_amp) >> 16);
wridx %= buffer_size;
if (limiter_amp < (1 << 16)) limiter_amp++;
vera_samp_pos_rd = (vera_samp_pos_rd + vera_samps_per_host_samps) & SAMP_POS_MASK_FRAC;
ym_samp_pos_rd = (ym_samp_pos_rd + ym_samps_per_host_samps) & SAMP_POS_MASK_FRAC;
@ -321,22 +310,3 @@ audio_render()
ym_samp_pos_rd = (ym_samp_pos_rd + ym_samps_per_host_samps) & SAMP_POS_MASK_FRAC;
}
}
void
audio_usage(void)
{
// SDL_GetAudioDeviceName doesn't work if audio isn't initialized.
// Since argument parsing happens before initializing SDL, ensure the
// audio subsystem is initialized before printing audio device names.
SDL_InitSubSystem(SDL_INIT_AUDIO);
// List all available sound devices
printf("The following sound output devices are available:\n");
const int sounds = SDL_GetNumAudioDevices(0);
for (int i = 0; i < sounds; ++i) {
printf("\t%s\n", SDL_GetAudioDeviceName(i, 0));
}
SDL_Quit();
exit(1);
}

View file

@ -20,9 +20,12 @@
#define AUDIO_SAMPLERATE (25000000 / 512)
void audio_callback(void *userdata, Uint8 *stream, int len);
void audio_init(const char *dev_name, int num_audio_buffers);
void audio_init(int num_audio_buffers);
void audio_close(void);
void audio_step(int cpu_clocks);
void audio_render();
void audio_usage(void);
#ifndef IN_AUDIO_C
extern uint32_t buffer_size;
#endif

View file

@ -12,10 +12,12 @@ extern "C" {
#include <string.h>
#include <file_backend.hpp>
void ZsmBackend::load(const char *filename) {
memset(&spec, 0, sizeof(spec));
spec.format = AUDIO_S16SYS;
spec.samples = SAMPLES_PER_BUFFER;
spec.channels = 2;
spec.size = spec.samples * SAMPLE_BYTES;
spec.freq = AUDIO_SAMPLERATE;
spec.size = SAMPLES_PER_BUFFER * SAMPLE_BYTES;
file = open_file(filename);
char magic[2];
file->read(magic, 2, 1);
@ -49,8 +51,9 @@ extern SDL_AudioSpec obtained;
void ZsmBackend::switch_stream(int idx) {
psg_reset();
audio_close();
audio_init(NULL, 16);
audio_init(16);
spec = obtained;
spec.size = SAMPLES_PER_BUFFER * SAMPLE_BYTES;
}
void ZsmBackend::cleanup() {
audio_close();
@ -102,15 +105,17 @@ size_t ZsmBackend::render(void *buf, size_t maxlen) {
}
audio_step((int)(clocks));
}
audio_render();
maxlen *= sample_type_len;
if (audio_buf.size() < maxlen) {
size_t oldlen = audio_buf.size();
audio_buf.resize(audio_buf.size() + spec.size);
audio_callback(nullptr, (Uint8*)(audio_buf.data() + oldlen), spec.size);
if (audio_buf.size() < maxlen || audio_buf.size() == 0) {
size_t oldlen = audio_buf.size();
uint32_t diff = SAMPLES_PER_BUFFER * SAMPLE_BYTES;
audio_buf.resize(audio_buf.size() + diff);
audio_callback(nullptr, (Uint8*)(audio_buf.data() + oldlen), diff);
}
memcpy(buf, audio_buf.data(), maxlen);
if (audio_buf.size() - maxlen != 0) {
memmove(audio_buf.data(), audio_buf.data() + maxlen, audio_buf.size() - maxlen);
}
memcpy(audio_buf.data(), buf, maxlen);
memmove(audio_buf.data(), audio_buf.data() + maxlen, audio_buf.size() - maxlen);
audio_buf.resize(audio_buf.size() - maxlen);
return maxlen;
}
@ -121,9 +126,9 @@ ZsmCommand ZsmBackend::get_command() {
if (cmd_byte == 0x80) {
cmdid = ZsmEOF;
} else {
if ((cmd_byte & 0b11000000) == 0) {
if ((cmd_byte >> 6) == 0) {
cmdid = PsgWrite;
} else if ((cmd_byte & 0b11000000) == 0b01) {
} else if ((cmd_byte >> 6) == 0b01) {
if (cmd_byte == 0b01000000) {
cmdid = ExtCmd;
} else {
@ -143,14 +148,15 @@ ZsmCommand ZsmBackend::get_command() {
output.psg_write.reg = cmd_byte & 0x3F;
output.psg_write.val = value;
} else if (cmdid == FmWrite) {
uint8_t value[2];
uint16_t _value;
uint8_t *value = (uint8_t*)(void*)(&_value);
uint8_t pairs = cmd_byte & 0b111111;
output.fm_write.len = pairs;
output.fm_write.regs = (reg_pair*)malloc((sizeof(uint8_t)*2)*pairs);
output.fm_write.regs = (reg_pair*)malloc((sizeof(reg_pair))*pairs);
for (uint8_t i = 0; i < pairs; i++) {
file->read(value, 2, 1);
output.fm_write.regs[i].reg = value[0];
output.fm_write.regs[i].val = value[1];
file->read(value, 2, 1);
}
} else if (cmdid == ExtCmd) {
uint8_t ext_cmd_byte;
@ -160,7 +166,7 @@ ZsmCommand ZsmBackend::get_command() {
output.extcmd.channel = ch;
output.extcmd.bytes = bytes;
if (ch == 1) {
output.extcmd.expansion.write_bytes = (uint8_t*)malloc(bytes - 2);
output.extcmd.expansion.write_bytes = NULL;
} else {
output.extcmd.pcm = (uint8_t*)malloc(bytes); // Handles all other cases due to them being in a union, and each having the same type.
}
@ -176,6 +182,7 @@ ZsmCommand ZsmBackend::get_command() {
output.extcmd.expansion.chip_id = byte;
} else if (i == 1) {
output.extcmd.expansion.writes = byte;
output.extcmd.expansion.write_bytes = (uint8_t*)malloc(byte);
} else {
output.extcmd.expansion.write_bytes[i - 2] = byte;
}
@ -195,7 +202,9 @@ ZsmCommand::~ZsmCommand() {
switch (id) {
case ExtCmd: {
if (extcmd.channel == 1) {
free(extcmd.expansion.write_bytes);
if (extcmd.expansion.write_bytes != NULL) {
free(extcmd.expansion.write_bytes);
}
} else {
free(extcmd.pcm);
}

View file

@ -9,7 +9,7 @@ option(USE_GLES "Enable using OpenGL ES" ${GLES_NORMALLY_REQUIRED_FOR_ARCHITECTU
option(GLES_VERSION "Version of OpenGL ES" 3)
set(IMGUI_SRC imgui_demo.cpp imgui_draw.cpp imgui_tables.cpp imgui_widgets.cpp imgui.cpp misc/cpp/imgui_stdlib.cpp)
set(IMGUI_BACKEND_SRC imgui_impl_sdlrenderer2.cpp imgui_impl_sdl2.cpp)
set(BACKEND_IMGUI_SRC_BASE main.cpp base85.cpp file_browser.cpp main.cpp RendererBackend.cpp theme.cpp)
set(BACKEND_IMGUI_SRC_BASE main.cpp file_browser.cpp main.cpp RendererBackend.cpp theme.cpp)
foreach(SRC IN ITEMS ${IMGUI_BACKEND_SRC})
list(APPEND IMGUI_SRC backends/${SRC})
endforeach()

View file

@ -1,55 +1,92 @@
# Convert Font Awesome, Fork Awesome, Google Material Design, Kenney Game, Fontaudio and Codicons
# icon font parameters to C, C++, C#, Python, Rust and Go compatible formats.
# Convert Font Awesome, Fork Awesome, Google Material Design, Pictogrammers Material Design Icons, Kenney Game,
# Fontaudio, Codicons and Lucide icon font parameters to C, C++, C#, Python, Rust and Go compatible formats.
#
#------------------------------------------------------------------------------
#
# 1 - Source material
#
# 1.1 - Font Awesome
# 1.1 - Font Awesome [ FA ]
# https://fontawesome.com
# https://github.com/FortAwesome/Font-Awesome
#
# 1.1.1 - version 4
# https://github.com/FortAwesome/Font-Awesome/tree/4.x
# https://github.com/FortAwesome/Font-Awesome/blob/4.x/src/icons.yml
# https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
#
# 1.1.2 - version 5 Free
# https://github.com/FortAwesome/Font-Awesome/tree/5.x
# https://github.com/FortAwesome/Font-Awesome/blob/5.x/metadata/icons.yml
# https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
# https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf
# https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
# https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf [ FAB ]
# https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf [ FAR ]
# https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf [ FAS ]
#
# 1.1.3 - version 5 Pro
# Download files from https://fontawesome.com
# \fontawesome-pro-n.n.n-web\metadata\icons.yml
# \fontawesome-pro-n.n.n-web\webfonts\fa-brands-400.ttf
# \fontawesome-pro-n.n.n-web\webfonts\fa-light-300.ttf
# \fontawesome-pro-n.n.n-web\webfonts\fa-regular-400.ttf
# \fontawesome-pro-n.n.n-web\webfonts\fa-solid-900.ttf
# \fontawesome-pro-n.n.n-web\webfonts\fa-brands-400.ttf [ FAB ]
# \fontawesome-pro-n.n.n-web\webfonts\fa-light-300.ttf [ FAL ]
# \fontawesome-pro-n.n.n-web\webfonts\fa-regular-400.ttf [ FAR ]
# \fontawesome-pro-n.n.n-web\webfonts\fa-solid-900.ttf [ FAS ]
#
# 1.1.4 - version 6 Free
# https://github.com/FortAwesome/Font-Awesome/tree/6.x
# https://github.com/FortAwesome/Font-Awesome/blob/6.x/metadata/icons.yml
# https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
# 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
# https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf [ FAB ]
# https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-regular-400.ttf [ FAR ]
# https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-solid-900.ttf [ FAS ]
#
# 1.2 - Fork Awesome
# 1.2 - Fork Awesome [ FK ]
# https://forkaweso.me/Fork-Awesome/
# https://github.com/ForkAwesome/Fork-Awesome
# https://github.com/ForkAwesome/Fork-Awesome/blob/master/src/icons/icons.yml
# https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf
#
# 1.3 - Google Material Design
# 1.3 - Google Material Design Icons [ MD ] and Material Symbols [ MS ]
# https://fonts.google.com/icons
# https://github.com/google/material-design-icons
#
# 1.3.1 - Material Design Icons [ MD ]
# https://fonts.google.com/icons?icon.set=Material+Icons
# https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.codepoints
# https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
#
# 1.4 - Kenney Game icons
# 1.3.2 - Material Symbols [ MS ]
# https://fonts.google.com/icons?icon.set=Material+Symbols
# https://github.com/google/material-design-icons/blob/master/variablefont/MaterialSymbolsOutlined%5BFILL%2CGRAD%2Copsz%2Cwght%5D.codepoints
# https://github.com/google/material-design-icons/blob/master/variablefont/MaterialSymbolsOutlined%5BFILL,GRAD,opsz,wght%5D.ttf [ MSO ]
# https://github.com/google/material-design-icons/blob/master/variablefont/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf [ MSR ]
# https://github.com/google/material-design-icons/blob/master/variablefont/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf [ MSS ]
#
# 1.4 - Pictogrammers Material Design Icons [ MDI ]
# https://pictogrammers.com/library/mdi/
# https://github.com/Templarian/MaterialDesign-Webfont
# https://github.com/Templarian/MaterialDesign-Webfont/blob/master/css/materialdesignicons.css
# https://github.com/Templarian/MaterialDesign-Webfont/blob/master/fonts/materialdesignicons-webfont.ttf
#
# 1.5 - Kenney Game Icons and Expansion [ KI ]
# http://kenney.nl/assets/game-icons http://kenney.nl/assets/game-icons-expansion
# https://github.com/nicodinh/kenney-icon-font
# https://github.com/nicodinh/kenney-icon-font/blob/master/css/kenney-icons.css
# https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
#
# 1.5 - Fontaudio
# 1.6 - Fontaudio [ FAD ]
# https://github.com/fefanto/fontaudio
# https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.css
# https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
#
# 1.6 - Codicons
# https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.css
# https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.ttf
# 1.7 - Codicons [ CI ]
# https://microsoft.github.io/vscode-codicons/dist/codicon.html
# https://github.com/microsoft/vscode-codicons
# https://microsoft.github.io/vscode-codicons/dist/codicon.css
# https://microsoft.github.io/vscode-codicons/dist/codicon.ttf
#
# 1.8 - Lucide [ LC ]
# https://lucide.dev
# https://github.com/lucide-icons/lucide
# https://unpkg.com/lucide-static@latest/font/lucide.css
# https://unpkg.com/lucide-static@latest/font/lucide.ttf
#
#
#------------------------------------------------------------------------------
#
@ -302,7 +339,7 @@ class FontFA6Brands( FontFA5Brands ): # Font Awesome version 6 - Brand style
ttfs = [[ 'FAB', 'fa-brands-400.ttf', 'https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf' ]]
class FontMD( Font ): # Material Design
class FontMD( Font ): # Google Material Design
font_name = 'Material Design'
font_abbr = 'MD'
font_data = 'https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints'
@ -345,6 +382,89 @@ class FontMD( Font ): # Material Design
return icons_data
class FontMS( Font ): # Google Material Symbols
font_name = 'Material Symbols'
font_abbr = 'MS'
font_data = 'https://github.com/google/material-design-icons/raw/master/variablefont/MaterialSymbolsOutlined%5BFILL%2CGRAD%2Copsz%2Cwght%5D.codepoints'
ttfs = [[ 'MSO', 'MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf', 'https://github.com/google/material-design-icons/raw/master/variablefont/MaterialSymbolsOutlined%5BFILL,GRAD,opsz,wght%5D.ttf' ],
[ 'MSR', 'MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf', 'https://github.com/google/material-design-icons/raw/master/variablefont/MaterialSymbolsRounded%5BFILL,GRAD,opsz,wght%5D.ttf' ],
[ 'MSS', 'MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf', 'https://github.com/google/material-design-icons/raw/master/variablefont/MaterialSymbolsSharp%5BFILL,GRAD,opsz,wght%5D.ttf' ]]
@classmethod
def get_icons( cls, input_data ):
icons_data = {}
lines = str.split( input_data, '\n' )
if lines:
font_min = '0x10ffff'
font_min_int = int( font_min, 16 )
font_max_16 = '0x0' # 16 bit max
font_max_16_int = int( font_max_16, 16 )
font_max = '0x0'
font_max_int = int( font_max, 16 )
icons = []
for line in lines :
words = str.split(line)
if words and len( words ) >= 2:
word_unicode = words[ 1 ].zfill( 4 )
word_int = int( word_unicode, 16 )
if word_int < font_min_int and word_int > 0x0127 : # exclude ASCII characters code points
font_min = word_unicode
font_min_int = word_int
if word_int > font_max_16_int and word_int <= 0xffff: # exclude code points > 16 bits
font_max_16 = word_unicode
font_max_16_int = word_int
if word_int > font_max_int:
font_max = word_unicode
font_max_int = word_int
icons.append( words )
icons_data.update({ 'font_min' : font_min,
'font_max_16' : font_max_16,
'font_max' : font_max,
'icons' : icons })
return icons_data
class FontMDI( Font ): # Pictogrammers Material Design Icons
font_name = 'Material Design Icons'
font_abbr = 'MDI'
font_data_prefix = '.mdi-'
font_data = 'https://github.com/Templarian/MaterialDesign-Webfont/raw/master/css/materialdesignicons.css'
ttfs = [[ font_abbr, 'materialdesignicons-webfont.ttf', 'https://github.com/Templarian/MaterialDesign-Webfont/raw/master/fonts/materialdesignicons-webfont.ttf' ]]
@classmethod
def get_icons( cls, input_data ):
icons_data = {}
lines = str.split( input_data, '}\n' )
if lines:
font_min = '0x10ffff'
font_min_int = int( font_min, 16 )
font_max_16 = '0x0' # 16 bit max
font_max_16_int = int( font_max_16, 16 )
font_max = '0x0'
font_max_int = int( font_max, 16 )
icons = []
for line in lines :
if cls.font_data_prefix in line and '::before' in line:
font_id = line.partition( cls.font_data_prefix )[ 2 ].partition( '::before' )[ 0 ]
font_code = line.partition( '"\\' )[ 2 ].partition( '"' )[ 0 ].zfill( 4 )
font_code_int = int( font_code, 16 )
if font_code_int < font_min_int and font_code_int > 0x0127 : # exclude ASCII characters code points
font_min = font_code
font_min_int = font_code_int
if font_code_int > font_max_16_int and font_code_int <= 0xffff: # exclude code points > 16 bits
font_max_16 = font_code
font_max_16_int = font_code_int
if font_code_int > font_max_int:
font_max = font_code
font_max_int = font_code_int
icons.append([ font_id, font_code ])
icons_data.update({ 'font_min' : font_min,
'font_max_16' : font_max_16,
'font_max' : font_max,
'icons' : icons })
return icons_data
class FontKI( Font ): # Kenney Game icons
font_name = 'Kenney'
font_abbr = 'KI'
@ -398,8 +518,16 @@ class FontCI( FontKI ): # Codicons
font_name = 'Codicons'
font_abbr = 'CI'
font_data_prefix = '.codicon-'
font_data = 'https://raw.githubusercontent.com/microsoft/vscode-codicons/main/dist/codicon.css'
ttfs = [[ font_abbr, 'codicon.ttf', 'https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.ttf' ]]
font_data = 'https://microsoft.github.io/vscode-codicons/dist/codicon.css'
ttfs = [[ font_abbr, 'codicon.ttf', 'https://microsoft.github.io/vscode-codicons/dist/codicon.ttf' ]]
class FontLC( FontKI ): # Lucide
font_name = 'Lucide'
font_abbr = 'LC'
font_data_prefix = '.icon-'
font_data = 'https://unpkg.com/lucide-static@latest/font/lucide.css' # alt 'https://cdn.jsdelivr.net/npm/lucide-static@latest/font/lucide.css'
ttfs = [[ font_abbr, 'lucide.ttf', 'https://unpkg.com/lucide-static@latest/font/lucide.ttf' ]] # alt 'https://cdn.jsdelivr.net/npm/lucide-static@latest/font/lucide.ttf'
# Languages
@ -453,9 +581,10 @@ class LanguageC( Language ):
@classmethod
def prelude( cls ):
tmpl_prelude = '// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages {lang}\n' + \
'// from {font_data}\n' + \
'// for use with {ttf_files}\n' + \
tmpl_prelude = '// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py\n' + \
'// for {lang}\n' + \
'// from codepoints {font_data}\n' + \
'// for use with font {ttf_files}\n\n' + \
'#pragma once\n\n'
ttf_files = []
for ttf in cls.intermediate.get( 'ttfs' ):
@ -478,7 +607,7 @@ class LanguageC( Language ):
val = cls.intermediate.get( 'font_max_16' )) + \
tmpl_line_minmax.format( minmax = 'MAX',
abbr = abbreviation,
val = cls.intermediate.get( 'font_max' ))
val = cls.intermediate.get( 'font_max' )) + '\n'
return result
@classmethod
@ -516,9 +645,10 @@ class LanguageC( Language ):
# convert to header and save to disk
if ttf_data:
# convert ttf to header
tmpl_prelude_ttf = '// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages {lang}\n' + \
'// from {ttf_file}\n' + \
'// Requires #include <stdint.h>\n' + \
tmpl_prelude_ttf = '// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py\n' + \
'// for {lang}\n' + \
'// from font {ttf_file}\n' + \
'// Requires #include <stdint.h>\n\n' + \
'#pragma once\n\n' + \
'static const uint8_t s_{name}_ttf[{size}] = \n{{'
result = tmpl_prelude_ttf.format( lang = cls.language_name,
@ -548,9 +678,13 @@ class LanguageCSharp( Language ):
@classmethod
def prelude( cls ):
tmpl_prelude = '// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language {lang}\n' + \
'// from {font_data}\n' + \
'// for use with {ttf_files}\n' + \
tmpl_prelude = \
'// <auto-generated>\n' + \
'// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py\n' + \
'// for {lang}\n' + \
'// from codepoints {font_data}\n' + \
'// for use with font {ttf_files}\n' + \
'// </auto-generated>\n\n' + \
'namespace IconFonts\n' + \
'{{\n' + \
' public class {font_name}\n' + \
@ -573,7 +707,7 @@ class LanguageCSharp( Language ):
tmpl_line_minmax.format( minmax = 'Max16',
val = cls.intermediate.get( 'font_max_16' )) + \
tmpl_line_minmax.format( minmax = 'Max',
val = cls.intermediate.get( 'font_max' ))
val = cls.intermediate.get( 'font_max' )) + '\n'
return result
@classmethod
@ -583,7 +717,7 @@ class LanguageCSharp( Language ):
@classmethod
def line_icon( cls, icon ):
tmpl_line_icon = ' public const string {icon} = "\\u{code}";\n'
tmpl_line_icon = ' public const string {icon} = {literal};\n'
icon_name = cls.to_camelcase( icon[ 0 ])
icon_code = icon[ 1 ]
if icon_name[ 0 ].isdigit():
@ -592,7 +726,14 @@ class LanguageCSharp( Language ):
if icon_name == cls.intermediate.get( 'font_name' ).replace( ' ', '' ):
# Member may not have same name as enclosing class
icon_name += 'Icon'
result = tmpl_line_icon.format( icon = icon_name, code = icon_code )
# "\u1234"
if len( icon_code ) <= 4:
literal = '"\\u{code}"'.format( code = icon_code.rjust( 4, '0' ))
# "\U12345678"
else:
literal = '"\\U{code}"'.format( code = icon_code.rjust( 8, '0' ))
result = tmpl_line_icon.format( icon = icon_name, literal = literal )
return result
@classmethod
@ -610,10 +751,11 @@ class LanguagePython( Language ):
@classmethod
def prelude( cls ):
tmpl_prelude = '# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language {lang}\n' + \
'# from {font_data}\n' + \
'# for use with {ttf_files}\n' + \
'class Icons{font_name}:\n'
tmpl_prelude = '# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py\n' + \
'# for {lang}\n' + \
'# from codepoints {font_data}\n' + \
'# for use with font {ttf_files}\n\n' + \
'class Icons{font_name}:\n\n'
ttf_files = []
for ttf in cls.intermediate.get( 'ttfs' ):
ttf_files.append( ttf[ 2] )
@ -632,7 +774,7 @@ class LanguagePython( Language ):
tmpl_line_minmax.format( minmax = 'MAX_16',
val = cls.intermediate.get( 'font_max_16' )) + \
tmpl_line_minmax.format( minmax = 'MAX',
val = cls.intermediate.get( 'font_max' ))
val = cls.intermediate.get( 'font_max' )) + '\n'
return result
@classmethod
@ -643,15 +785,17 @@ class LanguagePython( Language ):
result = tmpl_line_icon.format( icon = icon_name, code = icon_code )
return result
class LanguageRust( Language ):
language_name = "Rust"
file_name = 'Icons{name}.rs'
@classmethod
def prelude( cls ):
tmpl_prelude = '//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language {lang}\n' + \
'//! from {font_data}\n' + \
'//! for use with {ttf_files}\n'
tmpl_prelude = '//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py\n' + \
'//! for {lang}\n' + \
'//! from codepoints {font_data}\n' + \
'//! for use with font {ttf_files}\n\n'
ttf_files = []
for ttf in cls.intermediate.get( 'ttfs' ):
ttf_files.append( ttf[ 2] )
@ -670,7 +814,7 @@ class LanguageRust( Language ):
tmpl_line_minmax.format( minmax = 'MAX_16',
val = cls.intermediate.get( 'font_max_16' )) + \
tmpl_line_minmax.format( minmax = 'MAX',
val = cls.intermediate.get( 'font_max' ))
val = cls.intermediate.get( 'font_max' )) + '\n'
return result
@classmethod
@ -688,9 +832,10 @@ class LanguageGo( Language ):
@classmethod
def prelude( cls ):
tmpl_prelude = '// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages {lang}\n' + \
'// from {font_data}\n' + \
'// for use with {ttf_files}\n\n' + \
tmpl_prelude = '// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py\n' + \
'// for {lang}\n' + \
'// from codepoints {font_data}\n' + \
'// for use with font {ttf_files}\n\n' + \
'package IconFontCppHeaders\n\n'
ttf_files = []
for ttf in cls.intermediate.get( 'ttfs' ):
@ -749,11 +894,11 @@ class LanguageGo( Language ):
# Main
fonts = [ FontFA4, FontFA5, FontFA5Brands, FontFA5Pro, FontFA5ProBrands, FontFA6, FontFA6Brands, FontFK, FontMD, FontKI, FontFAD, FontCI ]
fonts = [ FontFA4, FontFA5, FontFA5Brands, FontFA5Pro, FontFA5ProBrands, FontFA6, FontFA6Brands, FontFK, FontMD, FontMS, FontMDI, FontKI, FontFAD, FontCI, FontLC ]
languages = [ LanguageC, LanguageCSharp, LanguagePython, LanguageRust, LanguageGo ]
ttf2headerC = False # convert ttf files to C and C++ headers
logging.basicConfig( format='%(levelname)s : %(message)s', level = logging.INFO )
logging.basicConfig( format='%(levelname)s : %(message)s', level = logging.WARNING )
intermediates = []
for font in fonts:

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://raw.githubusercontent.com/microsoft/vscode-codicons/main/dist/codicon.css
// for use with https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://microsoft.github.io/vscode-codicons/dist/codicon.css
// for use with font https://microsoft.github.io/vscode-codicons/dist/codicon.ttf
// </auto-generated>
namespace IconFonts
{
public class Codicons
@ -8,8 +12,9 @@ namespace IconFonts
public const string FontIconFileNameCI = "codicon.ttf";
public const int IconMin = 0xea60;
public const int IconMax16 = 0xec11;
public const int IconMax = 0xec11;
public const int IconMax16 = 0xf101;
public const int IconMax = 0xf101;
public const string Add = "\uea60";
public const string Plus = "\uea60";
public const string GistNew = "\uea60";
@ -25,6 +30,7 @@ namespace IconFonts
public const string RecordKeys = "\uea65";
public const string Keyboard = "\uea65";
public const string Tag = "\uea66";
public const string GitPullRequestLabel = "\uea66";
public const string TagAdd = "\uea66";
public const string TagRemove = "\uea66";
public const string Person = "\uea67";
@ -217,6 +223,7 @@ namespace IconFonts
public const string DiffRemoved = "\ueadf";
public const string DiffRenamed = "\ueae0";
public const string Diff = "\ueae1";
public const string DiffSidebyside = "\ueae1";
public const string Discard = "\ueae2";
public const string EditorLayout = "\ueae3";
public const string EmptyWindow = "\ueae4";
@ -280,6 +287,7 @@ namespace IconFonts
public const string Megaphone = "\ueb1e";
public const string Mention = "\ueb1f";
public const string Milestone = "\ueb20";
public const string GitPullRequestMilestone = "\ueb20";
public const string MortarBoard = "\ueb21";
public const string Move = "\ueb22";
public const string MultipleWindows = "\ueb23";
@ -405,9 +413,11 @@ namespace IconFonts
public const string Menu = "\ueb94";
public const string ExpandAll = "\ueb95";
public const string Feedback = "\ueb96";
public const string GitPullRequestReviewer = "\ueb96";
public const string GroupByRefType = "\ueb97";
public const string UngroupByRefType = "\ueb98";
public const string Account = "\ueb99";
public const string GitPullRequestAssignee = "\ueb99";
public const string BellDot = "\ueb9a";
public const string DebugConsole = "\ueb9b";
public const string Library = "\ueb9c";
@ -521,7 +531,11 @@ namespace IconFonts
public const string Blank = "\uec03";
public const string HeartFilled = "\uec04";
public const string Map = "\uec05";
public const string MapHorizontal = "\uec05";
public const string FoldHorizontal = "\uec05";
public const string MapFilled = "\uec06";
public const string MapHorizontalFilled = "\uec06";
public const string FoldHorizontalFilled = "\uec06";
public const string CircleSmall = "\uec07";
public const string BellSlash = "\uec08";
public const string BellSlashDot = "\uec09";
@ -533,5 +547,44 @@ namespace IconFonts
public const string Send = "\uec0f";
public const string Sparkle = "\uec10";
public const string Insert = "\uec11";
public const string Mic = "\uec12";
public const string ThumbsdownFilled = "\uec13";
public const string ThumbsupFilled = "\uec14";
public const string Coffee = "\uec15";
public const string Snake = "\uec16";
public const string Game = "\uec17";
public const string Vr = "\uec18";
public const string Chip = "\uec19";
public const string Piano = "\uec1a";
public const string Music = "\uec1b";
public const string MicFilled = "\uec1c";
public const string RepoFetch = "\uec1d";
public const string Copilot = "\uec1e";
public const string LightbulbSparkle = "\uec1f";
public const string Robot = "\uec20";
public const string SparkleFilled = "\uec21";
public const string DiffSingle = "\uec22";
public const string DiffMultiple = "\uec23";
public const string SurroundWith = "\uec24";
public const string Share = "\uec25";
public const string GitStash = "\uec26";
public const string GitStashApply = "\uec27";
public const string GitStashPop = "\uec28";
public const string Vscode = "\uec29";
public const string VscodeInsiders = "\uec2a";
public const string CodeOss = "\uec2b";
public const string RunCoverage = "\uec2c";
public const string RunAllCoverage = "\uec2d";
public const string Coverage = "\uec2e";
public const string GithubProject = "\uec2f";
public const string MapVertical = "\uec30";
public const string FoldVertical = "\uec30";
public const string MapVerticalFilled = "\uec31";
public const string FoldVerticalFilled = "\uec31";
public const string GoToSearch = "\uec32";
public const string Percentage = "\uec33";
public const string SortPercentage = "\uec33";
public const string Attach = "\uec34";
public const string GitFetch = "\uf101";
}
}

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from https://raw.githubusercontent.com/microsoft/vscode-codicons/main/dist/codicon.css
// for use with https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints https://microsoft.github.io/vscode-codicons/dist/codicon.css
// for use with font https://microsoft.github.io/vscode-codicons/dist/codicon.ttf
package IconFontCppHeaders
@ -9,8 +10,8 @@ var IconsCodicons = Font{
{"CI", "codicon.ttf"},
},
Min: 0xea60,
Max16: 0xec11,
Max: 0xec11,
Max16: 0xf101,
Max: 0xf101,
Icons: map[string]string{
"Add": "\xee\xa9\xa0", // U+ea60
"Plus": "\xee\xa9\xa0", // U+ea60
@ -27,6 +28,7 @@ var IconsCodicons = Font{
"RecordKeys": "\xee\xa9\xa5", // U+ea65
"Keyboard": "\xee\xa9\xa5", // U+ea65
"Tag": "\xee\xa9\xa6", // U+ea66
"GitPullRequestLabel": "\xee\xa9\xa6", // U+ea66
"TagAdd": "\xee\xa9\xa6", // U+ea66
"TagRemove": "\xee\xa9\xa6", // U+ea66
"Person": "\xee\xa9\xa7", // U+ea67
@ -219,6 +221,7 @@ var IconsCodicons = Font{
"DiffRemoved": "\xee\xab\x9f", // U+eadf
"DiffRenamed": "\xee\xab\xa0", // U+eae0
"Diff": "\xee\xab\xa1", // U+eae1
"DiffSidebyside": "\xee\xab\xa1", // U+eae1
"Discard": "\xee\xab\xa2", // U+eae2
"EditorLayout": "\xee\xab\xa3", // U+eae3
"EmptyWindow": "\xee\xab\xa4", // U+eae4
@ -282,6 +285,7 @@ var IconsCodicons = Font{
"Megaphone": "\xee\xac\x9e", // U+eb1e
"Mention": "\xee\xac\x9f", // U+eb1f
"Milestone": "\xee\xac\xa0", // U+eb20
"GitPullRequestMilestone": "\xee\xac\xa0", // U+eb20
"MortarBoard": "\xee\xac\xa1", // U+eb21
"Move": "\xee\xac\xa2", // U+eb22
"MultipleWindows": "\xee\xac\xa3", // U+eb23
@ -407,9 +411,11 @@ var IconsCodicons = Font{
"Menu": "\xee\xae\x94", // U+eb94
"ExpandAll": "\xee\xae\x95", // U+eb95
"Feedback": "\xee\xae\x96", // U+eb96
"GitPullRequestReviewer": "\xee\xae\x96", // U+eb96
"GroupByRefType": "\xee\xae\x97", // U+eb97
"UngroupByRefType": "\xee\xae\x98", // U+eb98
"Account": "\xee\xae\x99", // U+eb99
"GitPullRequestAssignee": "\xee\xae\x99", // U+eb99
"BellDot": "\xee\xae\x9a", // U+eb9a
"DebugConsole": "\xee\xae\x9b", // U+eb9b
"Library": "\xee\xae\x9c", // U+eb9c
@ -523,7 +529,11 @@ var IconsCodicons = Font{
"Blank": "\xee\xb0\x83", // U+ec03
"HeartFilled": "\xee\xb0\x84", // U+ec04
"Map": "\xee\xb0\x85", // U+ec05
"MapHorizontal": "\xee\xb0\x85", // U+ec05
"FoldHorizontal": "\xee\xb0\x85", // U+ec05
"MapFilled": "\xee\xb0\x86", // U+ec06
"MapHorizontalFilled": "\xee\xb0\x86", // U+ec06
"FoldHorizontalFilled": "\xee\xb0\x86", // U+ec06
"CircleSmall": "\xee\xb0\x87", // U+ec07
"BellSlash": "\xee\xb0\x88", // U+ec08
"BellSlashDot": "\xee\xb0\x89", // U+ec09
@ -535,5 +545,44 @@ var IconsCodicons = Font{
"Send": "\xee\xb0\x8f", // U+ec0f
"Sparkle": "\xee\xb0\x90", // U+ec10
"Insert": "\xee\xb0\x91", // U+ec11
"Mic": "\xee\xb0\x92", // U+ec12
"ThumbsdownFilled": "\xee\xb0\x93", // U+ec13
"ThumbsupFilled": "\xee\xb0\x94", // U+ec14
"Coffee": "\xee\xb0\x95", // U+ec15
"Snake": "\xee\xb0\x96", // U+ec16
"Game": "\xee\xb0\x97", // U+ec17
"Vr": "\xee\xb0\x98", // U+ec18
"Chip": "\xee\xb0\x99", // U+ec19
"Piano": "\xee\xb0\x9a", // U+ec1a
"Music": "\xee\xb0\x9b", // U+ec1b
"MicFilled": "\xee\xb0\x9c", // U+ec1c
"RepoFetch": "\xee\xb0\x9d", // U+ec1d
"Copilot": "\xee\xb0\x9e", // U+ec1e
"LightbulbSparkle": "\xee\xb0\x9f", // U+ec1f
"Robot": "\xee\xb0\xa0", // U+ec20
"SparkleFilled": "\xee\xb0\xa1", // U+ec21
"DiffSingle": "\xee\xb0\xa2", // U+ec22
"DiffMultiple": "\xee\xb0\xa3", // U+ec23
"SurroundWith": "\xee\xb0\xa4", // U+ec24
"Share": "\xee\xb0\xa5", // U+ec25
"GitStash": "\xee\xb0\xa6", // U+ec26
"GitStashApply": "\xee\xb0\xa7", // U+ec27
"GitStashPop": "\xee\xb0\xa8", // U+ec28
"Vscode": "\xee\xb0\xa9", // U+ec29
"VscodeInsiders": "\xee\xb0\xaa", // U+ec2a
"CodeOss": "\xee\xb0\xab", // U+ec2b
"RunCoverage": "\xee\xb0\xac", // U+ec2c
"RunAllCoverage": "\xee\xb0\xad", // U+ec2d
"Coverage": "\xee\xb0\xae", // U+ec2e
"GithubProject": "\xee\xb0\xaf", // U+ec2f
"MapVertical": "\xee\xb0\xb0", // U+ec30
"FoldVertical": "\xee\xb0\xb0", // U+ec30
"MapVerticalFilled": "\xee\xb0\xb1", // U+ec31
"FoldVerticalFilled": "\xee\xb0\xb1", // U+ec31
"GoToSearch": "\xee\xb0\xb2", // U+ec32
"Percentage": "\xee\xb0\xb3", // U+ec33
"SortPercentage": "\xee\xb0\xb3", // U+ec33
"Attach": "\xee\xb0\xb4", // U+ec34
"GitFetch": "\xef\x84\x81", // U+f101
},
}

View file

@ -1,13 +1,16 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://raw.githubusercontent.com/microsoft/vscode-codicons/main/dist/codicon.css
// for use with https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://microsoft.github.io/vscode-codicons/dist/codicon.css
// for use with font https://microsoft.github.io/vscode-codicons/dist/codicon.ttf
#pragma once
#define FONT_ICON_FILE_NAME_CI "codicon.ttf"
#define ICON_MIN_CI 0xea60
#define ICON_MAX_16_CI 0xec11
#define ICON_MAX_CI 0xec11
#define ICON_MAX_16_CI 0xf101
#define ICON_MAX_CI 0xf101
#define ICON_CI_ADD "\xee\xa9\xa0" // U+ea60
#define ICON_CI_PLUS "\xee\xa9\xa0" // U+ea60
#define ICON_CI_GIST_NEW "\xee\xa9\xa0" // U+ea60
@ -23,6 +26,7 @@
#define ICON_CI_RECORD_KEYS "\xee\xa9\xa5" // U+ea65
#define ICON_CI_KEYBOARD "\xee\xa9\xa5" // U+ea65
#define ICON_CI_TAG "\xee\xa9\xa6" // U+ea66
#define ICON_CI_GIT_PULL_REQUEST_LABEL "\xee\xa9\xa6" // U+ea66
#define ICON_CI_TAG_ADD "\xee\xa9\xa6" // U+ea66
#define ICON_CI_TAG_REMOVE "\xee\xa9\xa6" // U+ea66
#define ICON_CI_PERSON "\xee\xa9\xa7" // U+ea67
@ -215,6 +219,7 @@
#define ICON_CI_DIFF_REMOVED "\xee\xab\x9f" // U+eadf
#define ICON_CI_DIFF_RENAMED "\xee\xab\xa0" // U+eae0
#define ICON_CI_DIFF "\xee\xab\xa1" // U+eae1
#define ICON_CI_DIFF_SIDEBYSIDE "\xee\xab\xa1" // U+eae1
#define ICON_CI_DISCARD "\xee\xab\xa2" // U+eae2
#define ICON_CI_EDITOR_LAYOUT "\xee\xab\xa3" // U+eae3
#define ICON_CI_EMPTY_WINDOW "\xee\xab\xa4" // U+eae4
@ -278,6 +283,7 @@
#define ICON_CI_MEGAPHONE "\xee\xac\x9e" // U+eb1e
#define ICON_CI_MENTION "\xee\xac\x9f" // U+eb1f
#define ICON_CI_MILESTONE "\xee\xac\xa0" // U+eb20
#define ICON_CI_GIT_PULL_REQUEST_MILESTONE "\xee\xac\xa0" // U+eb20
#define ICON_CI_MORTAR_BOARD "\xee\xac\xa1" // U+eb21
#define ICON_CI_MOVE "\xee\xac\xa2" // U+eb22
#define ICON_CI_MULTIPLE_WINDOWS "\xee\xac\xa3" // U+eb23
@ -403,9 +409,11 @@
#define ICON_CI_MENU "\xee\xae\x94" // U+eb94
#define ICON_CI_EXPAND_ALL "\xee\xae\x95" // U+eb95
#define ICON_CI_FEEDBACK "\xee\xae\x96" // U+eb96
#define ICON_CI_GIT_PULL_REQUEST_REVIEWER "\xee\xae\x96" // U+eb96
#define ICON_CI_GROUP_BY_REF_TYPE "\xee\xae\x97" // U+eb97
#define ICON_CI_UNGROUP_BY_REF_TYPE "\xee\xae\x98" // U+eb98
#define ICON_CI_ACCOUNT "\xee\xae\x99" // U+eb99
#define ICON_CI_GIT_PULL_REQUEST_ASSIGNEE "\xee\xae\x99" // U+eb99
#define ICON_CI_BELL_DOT "\xee\xae\x9a" // U+eb9a
#define ICON_CI_DEBUG_CONSOLE "\xee\xae\x9b" // U+eb9b
#define ICON_CI_LIBRARY "\xee\xae\x9c" // U+eb9c
@ -519,7 +527,11 @@
#define ICON_CI_BLANK "\xee\xb0\x83" // U+ec03
#define ICON_CI_HEART_FILLED "\xee\xb0\x84" // U+ec04
#define ICON_CI_MAP "\xee\xb0\x85" // U+ec05
#define ICON_CI_MAP_HORIZONTAL "\xee\xb0\x85" // U+ec05
#define ICON_CI_FOLD_HORIZONTAL "\xee\xb0\x85" // U+ec05
#define ICON_CI_MAP_FILLED "\xee\xb0\x86" // U+ec06
#define ICON_CI_MAP_HORIZONTAL_FILLED "\xee\xb0\x86" // U+ec06
#define ICON_CI_FOLD_HORIZONTAL_FILLED "\xee\xb0\x86" // U+ec06
#define ICON_CI_CIRCLE_SMALL "\xee\xb0\x87" // U+ec07
#define ICON_CI_BELL_SLASH "\xee\xb0\x88" // U+ec08
#define ICON_CI_BELL_SLASH_DOT "\xee\xb0\x89" // U+ec09
@ -531,3 +543,42 @@
#define ICON_CI_SEND "\xee\xb0\x8f" // U+ec0f
#define ICON_CI_SPARKLE "\xee\xb0\x90" // U+ec10
#define ICON_CI_INSERT "\xee\xb0\x91" // U+ec11
#define ICON_CI_MIC "\xee\xb0\x92" // U+ec12
#define ICON_CI_THUMBSDOWN_FILLED "\xee\xb0\x93" // U+ec13
#define ICON_CI_THUMBSUP_FILLED "\xee\xb0\x94" // U+ec14
#define ICON_CI_COFFEE "\xee\xb0\x95" // U+ec15
#define ICON_CI_SNAKE "\xee\xb0\x96" // U+ec16
#define ICON_CI_GAME "\xee\xb0\x97" // U+ec17
#define ICON_CI_VR "\xee\xb0\x98" // U+ec18
#define ICON_CI_CHIP "\xee\xb0\x99" // U+ec19
#define ICON_CI_PIANO "\xee\xb0\x9a" // U+ec1a
#define ICON_CI_MUSIC "\xee\xb0\x9b" // U+ec1b
#define ICON_CI_MIC_FILLED "\xee\xb0\x9c" // U+ec1c
#define ICON_CI_REPO_FETCH "\xee\xb0\x9d" // U+ec1d
#define ICON_CI_COPILOT "\xee\xb0\x9e" // U+ec1e
#define ICON_CI_LIGHTBULB_SPARKLE "\xee\xb0\x9f" // U+ec1f
#define ICON_CI_ROBOT "\xee\xb0\xa0" // U+ec20
#define ICON_CI_SPARKLE_FILLED "\xee\xb0\xa1" // U+ec21
#define ICON_CI_DIFF_SINGLE "\xee\xb0\xa2" // U+ec22
#define ICON_CI_DIFF_MULTIPLE "\xee\xb0\xa3" // U+ec23
#define ICON_CI_SURROUND_WITH "\xee\xb0\xa4" // U+ec24
#define ICON_CI_SHARE "\xee\xb0\xa5" // U+ec25
#define ICON_CI_GIT_STASH "\xee\xb0\xa6" // U+ec26
#define ICON_CI_GIT_STASH_APPLY "\xee\xb0\xa7" // U+ec27
#define ICON_CI_GIT_STASH_POP "\xee\xb0\xa8" // U+ec28
#define ICON_CI_VSCODE "\xee\xb0\xa9" // U+ec29
#define ICON_CI_VSCODE_INSIDERS "\xee\xb0\xaa" // U+ec2a
#define ICON_CI_CODE_OSS "\xee\xb0\xab" // U+ec2b
#define ICON_CI_RUN_COVERAGE "\xee\xb0\xac" // U+ec2c
#define ICON_CI_RUN_ALL_COVERAGE "\xee\xb0\xad" // U+ec2d
#define ICON_CI_COVERAGE "\xee\xb0\xae" // U+ec2e
#define ICON_CI_GITHUB_PROJECT "\xee\xb0\xaf" // U+ec2f
#define ICON_CI_MAP_VERTICAL "\xee\xb0\xb0" // U+ec30
#define ICON_CI_FOLD_VERTICAL "\xee\xb0\xb0" // U+ec30
#define ICON_CI_MAP_VERTICAL_FILLED "\xee\xb0\xb1" // U+ec31
#define ICON_CI_FOLD_VERTICAL_FILLED "\xee\xb0\xb1" // U+ec31
#define ICON_CI_GO_TO_SEARCH "\xee\xb0\xb2" // U+ec32
#define ICON_CI_PERCENTAGE "\xee\xb0\xb3" // U+ec33
#define ICON_CI_SORT_PERCENTAGE "\xee\xb0\xb3" // U+ec33
#define ICON_CI_ATTACH "\xee\xb0\xb4" // U+ec34
#define ICON_CI_GIT_FETCH "\xef\x84\x81" // U+f101

View file

@ -1,12 +1,16 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://raw.githubusercontent.com/microsoft/vscode-codicons/main/dist/codicon.css
# for use with https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://microsoft.github.io/vscode-codicons/dist/codicon.css
# for use with font https://microsoft.github.io/vscode-codicons/dist/codicon.ttf
class IconsCodicons:
FONT_ICON_FILE_NAME_CI = 'codicon.ttf'
ICON_MIN = 0xea60
ICON_MAX_16 = 0xec11
ICON_MAX = 0xec11
ICON_MAX_16 = 0xf101
ICON_MAX = 0xf101
ICON_ADD = '\uea60'
ICON_PLUS = '\uea60'
ICON_GIST_NEW = '\uea60'
@ -22,6 +26,7 @@ class IconsCodicons:
ICON_RECORD_KEYS = '\uea65'
ICON_KEYBOARD = '\uea65'
ICON_TAG = '\uea66'
ICON_GIT_PULL_REQUEST_LABEL = '\uea66'
ICON_TAG_ADD = '\uea66'
ICON_TAG_REMOVE = '\uea66'
ICON_PERSON = '\uea67'
@ -214,6 +219,7 @@ class IconsCodicons:
ICON_DIFF_REMOVED = '\ueadf'
ICON_DIFF_RENAMED = '\ueae0'
ICON_DIFF = '\ueae1'
ICON_DIFF_SIDEBYSIDE = '\ueae1'
ICON_DISCARD = '\ueae2'
ICON_EDITOR_LAYOUT = '\ueae3'
ICON_EMPTY_WINDOW = '\ueae4'
@ -277,6 +283,7 @@ class IconsCodicons:
ICON_MEGAPHONE = '\ueb1e'
ICON_MENTION = '\ueb1f'
ICON_MILESTONE = '\ueb20'
ICON_GIT_PULL_REQUEST_MILESTONE = '\ueb20'
ICON_MORTAR_BOARD = '\ueb21'
ICON_MOVE = '\ueb22'
ICON_MULTIPLE_WINDOWS = '\ueb23'
@ -402,9 +409,11 @@ class IconsCodicons:
ICON_MENU = '\ueb94'
ICON_EXPAND_ALL = '\ueb95'
ICON_FEEDBACK = '\ueb96'
ICON_GIT_PULL_REQUEST_REVIEWER = '\ueb96'
ICON_GROUP_BY_REF_TYPE = '\ueb97'
ICON_UNGROUP_BY_REF_TYPE = '\ueb98'
ICON_ACCOUNT = '\ueb99'
ICON_GIT_PULL_REQUEST_ASSIGNEE = '\ueb99'
ICON_BELL_DOT = '\ueb9a'
ICON_DEBUG_CONSOLE = '\ueb9b'
ICON_LIBRARY = '\ueb9c'
@ -518,7 +527,11 @@ class IconsCodicons:
ICON_BLANK = '\uec03'
ICON_HEART_FILLED = '\uec04'
ICON_MAP = '\uec05'
ICON_MAP_HORIZONTAL = '\uec05'
ICON_FOLD_HORIZONTAL = '\uec05'
ICON_MAP_FILLED = '\uec06'
ICON_MAP_HORIZONTAL_FILLED = '\uec06'
ICON_FOLD_HORIZONTAL_FILLED = '\uec06'
ICON_CIRCLE_SMALL = '\uec07'
ICON_BELL_SLASH = '\uec08'
ICON_BELL_SLASH_DOT = '\uec09'
@ -530,3 +543,42 @@ class IconsCodicons:
ICON_SEND = '\uec0f'
ICON_SPARKLE = '\uec10'
ICON_INSERT = '\uec11'
ICON_MIC = '\uec12'
ICON_THUMBSDOWN_FILLED = '\uec13'
ICON_THUMBSUP_FILLED = '\uec14'
ICON_COFFEE = '\uec15'
ICON_SNAKE = '\uec16'
ICON_GAME = '\uec17'
ICON_VR = '\uec18'
ICON_CHIP = '\uec19'
ICON_PIANO = '\uec1a'
ICON_MUSIC = '\uec1b'
ICON_MIC_FILLED = '\uec1c'
ICON_REPO_FETCH = '\uec1d'
ICON_COPILOT = '\uec1e'
ICON_LIGHTBULB_SPARKLE = '\uec1f'
ICON_ROBOT = '\uec20'
ICON_SPARKLE_FILLED = '\uec21'
ICON_DIFF_SINGLE = '\uec22'
ICON_DIFF_MULTIPLE = '\uec23'
ICON_SURROUND_WITH = '\uec24'
ICON_SHARE = '\uec25'
ICON_GIT_STASH = '\uec26'
ICON_GIT_STASH_APPLY = '\uec27'
ICON_GIT_STASH_POP = '\uec28'
ICON_VSCODE = '\uec29'
ICON_VSCODE_INSIDERS = '\uec2a'
ICON_CODE_OSS = '\uec2b'
ICON_RUN_COVERAGE = '\uec2c'
ICON_RUN_ALL_COVERAGE = '\uec2d'
ICON_COVERAGE = '\uec2e'
ICON_GITHUB_PROJECT = '\uec2f'
ICON_MAP_VERTICAL = '\uec30'
ICON_FOLD_VERTICAL = '\uec30'
ICON_MAP_VERTICAL_FILLED = '\uec31'
ICON_FOLD_VERTICAL_FILLED = '\uec31'
ICON_GO_TO_SEARCH = '\uec32'
ICON_PERCENTAGE = '\uec33'
ICON_SORT_PERCENTAGE = '\uec33'
ICON_ATTACH = '\uec34'
ICON_GIT_FETCH = '\uf101'

View file

@ -1,11 +1,14 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://raw.githubusercontent.com/microsoft/vscode-codicons/main/dist/codicon.css
//! for use with https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://microsoft.github.io/vscode-codicons/dist/codicon.css
//! for use with font https://microsoft.github.io/vscode-codicons/dist/codicon.ttf
pub const FONT_ICON_FILE_NAME_CI: &str = "codicon.ttf";
pub const ICON_MIN: char = '\u{ea60}';
pub const ICON_MAX_16: char = '\u{ec11}';
pub const ICON_MAX: char = '\u{ec11}';
pub const ICON_MAX_16: char = '\u{f101}';
pub const ICON_MAX: char = '\u{f101}';
pub const ICON_ADD: char = '\u{ea60}';
pub const ICON_PLUS: char = '\u{ea60}';
pub const ICON_GIST_NEW: char = '\u{ea60}';
@ -21,6 +24,7 @@ pub const ICON_GIT_PULL_REQUEST_ABANDONED: char = '\u{ea64}';
pub const ICON_RECORD_KEYS: char = '\u{ea65}';
pub const ICON_KEYBOARD: char = '\u{ea65}';
pub const ICON_TAG: char = '\u{ea66}';
pub const ICON_GIT_PULL_REQUEST_LABEL: char = '\u{ea66}';
pub const ICON_TAG_ADD: char = '\u{ea66}';
pub const ICON_TAG_REMOVE: char = '\u{ea66}';
pub const ICON_PERSON: char = '\u{ea67}';
@ -213,6 +217,7 @@ pub const ICON_DIFF_MODIFIED: char = '\u{eade}';
pub const ICON_DIFF_REMOVED: char = '\u{eadf}';
pub const ICON_DIFF_RENAMED: char = '\u{eae0}';
pub const ICON_DIFF: char = '\u{eae1}';
pub const ICON_DIFF_SIDEBYSIDE: char = '\u{eae1}';
pub const ICON_DISCARD: char = '\u{eae2}';
pub const ICON_EDITOR_LAYOUT: char = '\u{eae3}';
pub const ICON_EMPTY_WINDOW: char = '\u{eae4}';
@ -276,6 +281,7 @@ pub const ICON_MARKDOWN: char = '\u{eb1d}';
pub const ICON_MEGAPHONE: char = '\u{eb1e}';
pub const ICON_MENTION: char = '\u{eb1f}';
pub const ICON_MILESTONE: char = '\u{eb20}';
pub const ICON_GIT_PULL_REQUEST_MILESTONE: char = '\u{eb20}';
pub const ICON_MORTAR_BOARD: char = '\u{eb21}';
pub const ICON_MOVE: char = '\u{eb22}';
pub const ICON_MULTIPLE_WINDOWS: char = '\u{eb23}';
@ -401,9 +407,11 @@ pub const ICON_CALL_OUTGOING: char = '\u{eb93}';
pub const ICON_MENU: char = '\u{eb94}';
pub const ICON_EXPAND_ALL: char = '\u{eb95}';
pub const ICON_FEEDBACK: char = '\u{eb96}';
pub const ICON_GIT_PULL_REQUEST_REVIEWER: char = '\u{eb96}';
pub const ICON_GROUP_BY_REF_TYPE: char = '\u{eb97}';
pub const ICON_UNGROUP_BY_REF_TYPE: char = '\u{eb98}';
pub const ICON_ACCOUNT: char = '\u{eb99}';
pub const ICON_GIT_PULL_REQUEST_ASSIGNEE: char = '\u{eb99}';
pub const ICON_BELL_DOT: char = '\u{eb9a}';
pub const ICON_DEBUG_CONSOLE: char = '\u{eb9b}';
pub const ICON_LIBRARY: char = '\u{eb9c}';
@ -517,7 +525,11 @@ pub const ICON_LAYOUT_SIDEBAR_LEFT_OFF: char = '\u{ec02}';
pub const ICON_BLANK: char = '\u{ec03}';
pub const ICON_HEART_FILLED: char = '\u{ec04}';
pub const ICON_MAP: char = '\u{ec05}';
pub const ICON_MAP_HORIZONTAL: char = '\u{ec05}';
pub const ICON_FOLD_HORIZONTAL: char = '\u{ec05}';
pub const ICON_MAP_FILLED: char = '\u{ec06}';
pub const ICON_MAP_HORIZONTAL_FILLED: char = '\u{ec06}';
pub const ICON_FOLD_HORIZONTAL_FILLED: char = '\u{ec06}';
pub const ICON_CIRCLE_SMALL: char = '\u{ec07}';
pub const ICON_BELL_SLASH: char = '\u{ec08}';
pub const ICON_BELL_SLASH_DOT: char = '\u{ec09}';
@ -529,3 +541,42 @@ pub const ICON_COMMENT_DRAFT: char = '\u{ec0e}';
pub const ICON_SEND: char = '\u{ec0f}';
pub const ICON_SPARKLE: char = '\u{ec10}';
pub const ICON_INSERT: char = '\u{ec11}';
pub const ICON_MIC: char = '\u{ec12}';
pub const ICON_THUMBSDOWN_FILLED: char = '\u{ec13}';
pub const ICON_THUMBSUP_FILLED: char = '\u{ec14}';
pub const ICON_COFFEE: char = '\u{ec15}';
pub const ICON_SNAKE: char = '\u{ec16}';
pub const ICON_GAME: char = '\u{ec17}';
pub const ICON_VR: char = '\u{ec18}';
pub const ICON_CHIP: char = '\u{ec19}';
pub const ICON_PIANO: char = '\u{ec1a}';
pub const ICON_MUSIC: char = '\u{ec1b}';
pub const ICON_MIC_FILLED: char = '\u{ec1c}';
pub const ICON_REPO_FETCH: char = '\u{ec1d}';
pub const ICON_COPILOT: char = '\u{ec1e}';
pub const ICON_LIGHTBULB_SPARKLE: char = '\u{ec1f}';
pub const ICON_ROBOT: char = '\u{ec20}';
pub const ICON_SPARKLE_FILLED: char = '\u{ec21}';
pub const ICON_DIFF_SINGLE: char = '\u{ec22}';
pub const ICON_DIFF_MULTIPLE: char = '\u{ec23}';
pub const ICON_SURROUND_WITH: char = '\u{ec24}';
pub const ICON_SHARE: char = '\u{ec25}';
pub const ICON_GIT_STASH: char = '\u{ec26}';
pub const ICON_GIT_STASH_APPLY: char = '\u{ec27}';
pub const ICON_GIT_STASH_POP: char = '\u{ec28}';
pub const ICON_VSCODE: char = '\u{ec29}';
pub const ICON_VSCODE_INSIDERS: char = '\u{ec2a}';
pub const ICON_CODE_OSS: char = '\u{ec2b}';
pub const ICON_RUN_COVERAGE: char = '\u{ec2c}';
pub const ICON_RUN_ALL_COVERAGE: char = '\u{ec2d}';
pub const ICON_COVERAGE: char = '\u{ec2e}';
pub const ICON_GITHUB_PROJECT: char = '\u{ec2f}';
pub const ICON_MAP_VERTICAL: char = '\u{ec30}';
pub const ICON_FOLD_VERTICAL: char = '\u{ec30}';
pub const ICON_MAP_VERTICAL_FILLED: char = '\u{ec31}';
pub const ICON_FOLD_VERTICAL_FILLED: char = '\u{ec31}';
pub const ICON_GO_TO_SEARCH: char = '\u{ec32}';
pub const ICON_PERCENTAGE: char = '\u{ec33}';
pub const ICON_SORT_PERCENTAGE: char = '\u{ec33}';
pub const ICON_ATTACH: char = '\u{ec34}';
pub const ICON_GIT_FETCH: char = '\u{f101}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
// </auto-generated>
namespace IconFonts
{
public class FontAwesome4
@ -10,6 +14,7 @@ namespace IconFonts
public const int IconMin = 0xf000;
public const int IconMax16 = 0xf2e0;
public const int IconMax = 0xf2e0;
public const string Glass = "\uf000";
public const string Music = "\uf001";
public const string Search = "\uf002";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
package IconFontCppHeaders

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
#pragma once
#define FONT_ICON_FILE_NAME_FA "fontawesome-webfont.ttf"
@ -8,6 +10,7 @@
#define ICON_MIN_FA 0xf000
#define ICON_MAX_16_FA 0xf2e0
#define ICON_MAX_FA 0xf2e0
#define ICON_FA_GLASS "\xef\x80\x80" // U+f000
#define ICON_FA_MUSIC "\xef\x80\x81" // U+f001
#define ICON_FA_SEARCH "\xef\x80\x82" // U+f002

View file

@ -1,12 +1,16 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
# for use with https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
# for use with font https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
class IconsFontAwesome4:
FONT_ICON_FILE_NAME_FA = 'fontawesome-webfont.ttf'
ICON_MIN = 0xf000
ICON_MAX_16 = 0xf2e0
ICON_MAX = 0xf2e0
ICON_GLASS = '\uf000'
ICON_MUSIC = '\uf001'
ICON_SEARCH = '\uf002'

View file

@ -1,11 +1,14 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
//! for use with https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://github.com/FortAwesome/Font-Awesome/raw/4.x/src/icons.yml
//! for use with font https://github.com/FortAwesome/Font-Awesome/blob/4.x/fonts/fontawesome-webfont.ttf
pub const FONT_ICON_FILE_NAME_FA: &str = "fontawesome-webfont.ttf";
pub const ICON_MIN: char = '\u{f000}';
pub const ICON_MAX_16: char = '\u{f2e0}';
pub const ICON_MAX: char = '\u{f2e0}';
pub const ICON_GLASS: char = '\u{f000}';
pub const ICON_MUSIC: char = '\u{f001}';
pub const ICON_SEARCH: char = '\u{f002}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
// </auto-generated>
namespace IconFonts
{
public class FontAwesome5
@ -11,6 +15,7 @@ namespace IconFonts
public const int IconMin = 0xe005;
public const int IconMax16 = 0xf8ff;
public const int IconMax = 0xf8ff;
public const string Ad = "\uf641";
public const string AddressBook = "\uf2b9";
public const string AddressCard = "\uf2bb";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
package IconFontCppHeaders

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
#pragma once
#define FONT_ICON_FILE_NAME_FAR "fa-regular-400.ttf"
@ -9,6 +11,7 @@
#define ICON_MIN_FA 0xe005
#define ICON_MAX_16_FA 0xf8ff
#define ICON_MAX_FA 0xf8ff
#define ICON_FA_AD "\xef\x99\x81" // U+f641
#define ICON_FA_ADDRESS_BOOK "\xef\x8a\xb9" // U+f2b9
#define ICON_FA_ADDRESS_CARD "\xef\x8a\xbb" // U+f2bb

View file

@ -1,13 +1,17 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
# for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
# for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
class IconsFontAwesome5:
FONT_ICON_FILE_NAME_FAR = 'fa-regular-400.ttf'
FONT_ICON_FILE_NAME_FAS = 'fa-solid-900.ttf'
ICON_MIN = 0xe005
ICON_MAX_16 = 0xf8ff
ICON_MAX = 0xf8ff
ICON_AD = '\uf641'
ICON_ADDRESS_BOOK = '\uf2b9'
ICON_ADDRESS_CARD = '\uf2bb'

View file

@ -1,12 +1,15 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
//! for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
//! for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-solid-900.ttf
pub const FONT_ICON_FILE_NAME_FAR: &str = "fa-regular-400.ttf";
pub const FONT_ICON_FILE_NAME_FAS: &str = "fa-solid-900.ttf";
pub const ICON_MIN: char = '\u{e005}';
pub const ICON_MAX_16: char = '\u{f8ff}';
pub const ICON_MAX: char = '\u{f8ff}';
pub const ICON_AD: char = '\u{f641}';
pub const ICON_ADDRESS_BOOK: char = '\u{f2b9}';
pub const ICON_ADDRESS_CARD: char = '\u{f2bb}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
// </auto-generated>
namespace IconFonts
{
public class FontAwesome5Brands
@ -10,6 +14,7 @@ namespace IconFonts
public const int IconMin = 0xe007;
public const int IconMax16 = 0xf8e8;
public const int IconMax = 0xf8e8;
public const string Num500px = "\uf26e";
public const string AccessibleIcon = "\uf368";
public const string Accusoft = "\uf369";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
package IconFontCppHeaders

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
#pragma once
#define FONT_ICON_FILE_NAME_FAB "fa-brands-400.ttf"
@ -8,6 +10,7 @@
#define ICON_MIN_FAB 0xe007
#define ICON_MAX_16_FAB 0xf8e8
#define ICON_MAX_FAB 0xf8e8
#define ICON_FA_500PX "\xef\x89\xae" // U+f26e
#define ICON_FA_ACCESSIBLE_ICON "\xef\x8d\xa8" // U+f368
#define ICON_FA_ACCUSOFT "\xef\x8d\xa9" // U+f369

View file

@ -1,12 +1,16 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
# for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
# for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
class IconsFontAwesome5Brands:
FONT_ICON_FILE_NAME_FAB = 'fa-brands-400.ttf'
ICON_MIN = 0xe007
ICON_MAX_16 = 0xf8e8
ICON_MAX = 0xf8e8
ICON_500PX = '\uf26e'
ICON_ACCESSIBLE_ICON = '\uf368'
ICON_ACCUSOFT = '\uf369'

View file

@ -1,11 +1,14 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
//! for use with https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://github.com/FortAwesome/Font-Awesome/raw/5.x/metadata/icons.yml
//! for use with font https://github.com/FortAwesome/Font-Awesome/blob/5.x/webfonts/fa-brands-400.ttf
pub const FONT_ICON_FILE_NAME_FAB: &str = "fa-brands-400.ttf";
pub const ICON_MIN: char = '\u{e007}';
pub const ICON_MAX_16: char = '\u{f8e8}';
pub const ICON_MAX: char = '\u{f8e8}';
pub const ICON_500PX: char = '\u{f26e}';
pub const ICON_ACCESSIBLE_ICON: char = '\u{f368}';
pub const ICON_ACCUSOFT: char = '\u{f369}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from icons.yml
// for use with fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints icons.yml
// for use with font fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
// </auto-generated>
namespace IconFonts
{
public class FontAwesome5Pro
@ -12,6 +16,7 @@ namespace IconFonts
public const int IconMin = 0xe000;
public const int IconMax16 = 0xf8ff;
public const int IconMax = 0xf8ff;
public const string Abacus = "\uf640";
public const string Acorn = "\uf6ae";
public const string Ad = "\uf641";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from icons.yml
// for use with fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints icons.yml
// for use with font fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
package IconFontCppHeaders

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from icons.yml
// for use with fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints icons.yml
// for use with font fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
#pragma once
#define FONT_ICON_FILE_NAME_FAL "fa-light-300.ttf"
@ -10,6 +12,7 @@
#define ICON_MIN_FA 0xe000
#define ICON_MAX_16_FA 0xf8ff
#define ICON_MAX_FA 0xf8ff
#define ICON_FA_ABACUS "\xef\x99\x80" // U+f640
#define ICON_FA_ACORN "\xef\x9a\xae" // U+f6ae
#define ICON_FA_AD "\xef\x99\x81" // U+f641

View file

@ -1,7 +1,10 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from icons.yml
# for use with fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints icons.yml
# for use with font fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
class IconsFontAwesome5Pro:
FONT_ICON_FILE_NAME_FAL = 'fa-light-300.ttf'
FONT_ICON_FILE_NAME_FAR = 'fa-regular-400.ttf'
FONT_ICON_FILE_NAME_FAS = 'fa-solid-900.ttf'
@ -9,6 +12,7 @@ class IconsFontAwesome5Pro:
ICON_MIN = 0xe000
ICON_MAX_16 = 0xf8ff
ICON_MAX = 0xf8ff
ICON_ABACUS = '\uf640'
ICON_ACORN = '\uf6ae'
ICON_AD = '\uf641'

View file

@ -1,6 +1,8 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from icons.yml
//! for use with fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints icons.yml
//! for use with font fa-light-300.ttf, fa-regular-400.ttf, fa-solid-900.ttf
pub const FONT_ICON_FILE_NAME_FAL: &str = "fa-light-300.ttf";
pub const FONT_ICON_FILE_NAME_FAR: &str = "fa-regular-400.ttf";
pub const FONT_ICON_FILE_NAME_FAS: &str = "fa-solid-900.ttf";
@ -8,6 +10,7 @@ pub const FONT_ICON_FILE_NAME_FAS: &str = "fa-solid-900.ttf";
pub const ICON_MIN: char = '\u{e000}';
pub const ICON_MAX_16: char = '\u{f8ff}';
pub const ICON_MAX: char = '\u{f8ff}';
pub const ICON_ABACUS: char = '\u{f640}';
pub const ICON_ACORN: char = '\u{f6ae}';
pub const ICON_AD: char = '\u{f641}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from icons.yml
// for use with fa-brands-400.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints icons.yml
// for use with font fa-brands-400.ttf
// </auto-generated>
namespace IconFonts
{
public class FontAwesome5ProBrands
@ -10,6 +14,7 @@ namespace IconFonts
public const int IconMin = 0xe007;
public const int IconMax16 = 0xf8e8;
public const int IconMax = 0xf8e8;
public const string Num500px = "\uf26e";
public const string AccessibleIcon = "\uf368";
public const string Accusoft = "\uf369";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from icons.yml
// for use with fa-brands-400.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints icons.yml
// for use with font fa-brands-400.ttf
package IconFontCppHeaders

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from icons.yml
// for use with fa-brands-400.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints icons.yml
// for use with font fa-brands-400.ttf
#pragma once
#define FONT_ICON_FILE_NAME_FAB "fa-brands-400.ttf"
@ -8,6 +10,7 @@
#define ICON_MIN_FAB 0xe007
#define ICON_MAX_16_FAB 0xf8e8
#define ICON_MAX_FAB 0xf8e8
#define ICON_FA_500PX "\xef\x89\xae" // U+f26e
#define ICON_FA_ACCESSIBLE_ICON "\xef\x8d\xa8" // U+f368
#define ICON_FA_ACCUSOFT "\xef\x8d\xa9" // U+f369

View file

@ -1,12 +1,16 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from icons.yml
# for use with fa-brands-400.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints icons.yml
# for use with font fa-brands-400.ttf
class IconsFontAwesome5ProBrands:
FONT_ICON_FILE_NAME_FAB = 'fa-brands-400.ttf'
ICON_MIN = 0xe007
ICON_MAX_16 = 0xf8e8
ICON_MAX = 0xf8e8
ICON_500PX = '\uf26e'
ICON_ACCESSIBLE_ICON = '\uf368'
ICON_ACCUSOFT = '\uf369'

View file

@ -1,11 +1,14 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from icons.yml
//! for use with fa-brands-400.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints icons.yml
//! for use with font fa-brands-400.ttf
pub const FONT_ICON_FILE_NAME_FAB: &str = "fa-brands-400.ttf";
pub const ICON_MIN: char = '\u{e007}';
pub const ICON_MAX_16: char = '\u{f8e8}';
pub const ICON_MAX: char = '\u{f8e8}';
pub const ICON_500PX: char = '\u{f26e}';
pub const ICON_ACCESSIBLE_ICON: char = '\u{f368}';
pub const ICON_ACCUSOFT: char = '\u{f369}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// 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
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// for use with font 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
// </auto-generated>
namespace IconFonts
{
public class FontAwesome6
@ -11,6 +15,7 @@ namespace IconFonts
public const int IconMin = 0xe005;
public const int IconMax16 = 0xf8ff;
public const int IconMax = 0xf8ff;
public const string Num0 = "\u0030";
public const string Num1 = "\u0031";
public const string Num2 = "\u0032";
@ -1197,7 +1202,10 @@ namespace IconFonts
public const string T = "\u0054";
public const string Table = "\uf0ce";
public const string TableCells = "\uf00a";
public const string TableCellsColumnLock = "\ue678";
public const string TableCellsLarge = "\uf009";
public const string TableCellsRowLock = "\ue67a";
public const string TableCellsRowUnlock = "\ue691";
public const string TableColumns = "\uf0db";
public const string TableList = "\uf00b";
public const string TableTennisPaddleBall = "\uf45d";
@ -1238,6 +1246,7 @@ namespace IconFonts
public const string ThumbsDown = "\uf165";
public const string ThumbsUp = "\uf164";
public const string Thumbtack = "\uf08d";
public const string ThumbtackSlash = "\ue68f";
public const string Ticket = "\uf145";
public const string TicketSimple = "\uf3ff";
public const string Timeline = "\ue29c";
@ -1375,6 +1384,7 @@ namespace IconFonts
public const string Water = "\uf773";
public const string WaterLadder = "\uf5c5";
public const string WaveSquare = "\uf83e";
public const string WebAwesome = "\ue682";
public const string WeightHanging = "\uf5cd";
public const string WeightScale = "\uf496";
public const string WheatAwn = "\ue2cd";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// 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
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// for use with font 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
package IconFontCppHeaders
@ -1199,7 +1200,10 @@ var IconsFontAwesome6 = Font{
"T": "T", // U+0054
"Table": "\xef\x83\x8e", // U+f0ce
"TableCells": "\xef\x80\x8a", // U+f00a
"TableCellsColumnLock": "\xee\x99\xb8", // U+e678
"TableCellsLarge": "\xef\x80\x89", // U+f009
"TableCellsRowLock": "\xee\x99\xba", // U+e67a
"TableCellsRowUnlock": "\xee\x9a\x91", // U+e691
"TableColumns": "\xef\x83\x9b", // U+f0db
"TableList": "\xef\x80\x8b", // U+f00b
"TableTennisPaddleBall": "\xef\x91\x9d", // U+f45d
@ -1240,6 +1244,7 @@ var IconsFontAwesome6 = Font{
"ThumbsDown": "\xef\x85\xa5", // U+f165
"ThumbsUp": "\xef\x85\xa4", // U+f164
"Thumbtack": "\xef\x82\x8d", // U+f08d
"ThumbtackSlash": "\xee\x9a\x8f", // U+e68f
"Ticket": "\xef\x85\x85", // U+f145
"TicketSimple": "\xef\x8f\xbf", // U+f3ff
"Timeline": "\xee\x8a\x9c", // U+e29c
@ -1377,6 +1382,7 @@ var IconsFontAwesome6 = Font{
"Water": "\xef\x9d\xb3", // U+f773
"WaterLadder": "\xef\x97\x85", // U+f5c5
"WaveSquare": "\xef\xa0\xbe", // U+f83e
"WebAwesome": "\xee\x9a\x82", // U+e682
"WeightHanging": "\xef\x97\x8d", // U+f5cd
"WeightScale": "\xef\x92\x96", // U+f496
"WheatAwn": "\xee\x8b\x8d", // U+e2cd

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// 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
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// for use with font 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
#pragma once
#define FONT_ICON_FILE_NAME_FAR "fa-regular-400.ttf"
@ -9,6 +11,7 @@
#define ICON_MIN_FA 0xe005
#define ICON_MAX_16_FA 0xf8ff
#define ICON_MAX_FA 0xf8ff
#define ICON_FA_0 "0" // U+0030
#define ICON_FA_1 "1" // U+0031
#define ICON_FA_2 "2" // U+0032
@ -1195,7 +1198,10 @@
#define ICON_FA_T "T" // U+0054
#define ICON_FA_TABLE "\xef\x83\x8e" // U+f0ce
#define ICON_FA_TABLE_CELLS "\xef\x80\x8a" // U+f00a
#define ICON_FA_TABLE_CELLS_COLUMN_LOCK "\xee\x99\xb8" // U+e678
#define ICON_FA_TABLE_CELLS_LARGE "\xef\x80\x89" // U+f009
#define ICON_FA_TABLE_CELLS_ROW_LOCK "\xee\x99\xba" // U+e67a
#define ICON_FA_TABLE_CELLS_ROW_UNLOCK "\xee\x9a\x91" // U+e691
#define ICON_FA_TABLE_COLUMNS "\xef\x83\x9b" // U+f0db
#define ICON_FA_TABLE_LIST "\xef\x80\x8b" // U+f00b
#define ICON_FA_TABLE_TENNIS_PADDLE_BALL "\xef\x91\x9d" // U+f45d
@ -1236,6 +1242,7 @@
#define ICON_FA_THUMBS_DOWN "\xef\x85\xa5" // U+f165
#define ICON_FA_THUMBS_UP "\xef\x85\xa4" // U+f164
#define ICON_FA_THUMBTACK "\xef\x82\x8d" // U+f08d
#define ICON_FA_THUMBTACK_SLASH "\xee\x9a\x8f" // U+e68f
#define ICON_FA_TICKET "\xef\x85\x85" // U+f145
#define ICON_FA_TICKET_SIMPLE "\xef\x8f\xbf" // U+f3ff
#define ICON_FA_TIMELINE "\xee\x8a\x9c" // U+e29c
@ -1373,6 +1380,7 @@
#define ICON_FA_WATER "\xef\x9d\xb3" // U+f773
#define ICON_FA_WATER_LADDER "\xef\x97\x85" // U+f5c5
#define ICON_FA_WAVE_SQUARE "\xef\xa0\xbe" // U+f83e
#define ICON_FA_WEB_AWESOME "\xee\x9a\x82" // U+e682
#define ICON_FA_WEIGHT_HANGING "\xef\x97\x8d" // U+f5cd
#define ICON_FA_WEIGHT_SCALE "\xef\x92\x96" // U+f496
#define ICON_FA_WHEAT_AWN "\xee\x8b\x8d" // U+e2cd

View file

@ -1,13 +1,17 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
# 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
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
# for use with font 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
class IconsFontAwesome6:
FONT_ICON_FILE_NAME_FAR = 'fa-regular-400.ttf'
FONT_ICON_FILE_NAME_FAS = 'fa-solid-900.ttf'
ICON_MIN = 0xe005
ICON_MAX_16 = 0xf8ff
ICON_MAX = 0xf8ff
ICON_0 = '\u0030'
ICON_1 = '\u0031'
ICON_2 = '\u0032'
@ -1194,7 +1198,10 @@ class IconsFontAwesome6:
ICON_T = '\u0054'
ICON_TABLE = '\uf0ce'
ICON_TABLE_CELLS = '\uf00a'
ICON_TABLE_CELLS_COLUMN_LOCK = '\ue678'
ICON_TABLE_CELLS_LARGE = '\uf009'
ICON_TABLE_CELLS_ROW_LOCK = '\ue67a'
ICON_TABLE_CELLS_ROW_UNLOCK = '\ue691'
ICON_TABLE_COLUMNS = '\uf0db'
ICON_TABLE_LIST = '\uf00b'
ICON_TABLE_TENNIS_PADDLE_BALL = '\uf45d'
@ -1235,6 +1242,7 @@ class IconsFontAwesome6:
ICON_THUMBS_DOWN = '\uf165'
ICON_THUMBS_UP = '\uf164'
ICON_THUMBTACK = '\uf08d'
ICON_THUMBTACK_SLASH = '\ue68f'
ICON_TICKET = '\uf145'
ICON_TICKET_SIMPLE = '\uf3ff'
ICON_TIMELINE = '\ue29c'
@ -1372,6 +1380,7 @@ class IconsFontAwesome6:
ICON_WATER = '\uf773'
ICON_WATER_LADDER = '\uf5c5'
ICON_WAVE_SQUARE = '\uf83e'
ICON_WEB_AWESOME = '\ue682'
ICON_WEIGHT_HANGING = '\uf5cd'
ICON_WEIGHT_SCALE = '\uf496'
ICON_WHEAT_AWN = '\ue2cd'

View file

@ -1,12 +1,15 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
//! 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
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
//! for use with font 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
pub const FONT_ICON_FILE_NAME_FAR: &str = "fa-regular-400.ttf";
pub const FONT_ICON_FILE_NAME_FAS: &str = "fa-solid-900.ttf";
pub const ICON_MIN: char = '\u{e005}';
pub const ICON_MAX_16: char = '\u{f8ff}';
pub const ICON_MAX: char = '\u{f8ff}';
pub const ICON_0: char = '\u{0030}';
pub const ICON_1: char = '\u{0031}';
pub const ICON_2: char = '\u{0032}';
@ -1193,7 +1196,10 @@ pub const ICON_SYRINGE: char = '\u{f48e}';
pub const ICON_T: char = '\u{0054}';
pub const ICON_TABLE: char = '\u{f0ce}';
pub const ICON_TABLE_CELLS: char = '\u{f00a}';
pub const ICON_TABLE_CELLS_COLUMN_LOCK: char = '\u{e678}';
pub const ICON_TABLE_CELLS_LARGE: char = '\u{f009}';
pub const ICON_TABLE_CELLS_ROW_LOCK: char = '\u{e67a}';
pub const ICON_TABLE_CELLS_ROW_UNLOCK: char = '\u{e691}';
pub const ICON_TABLE_COLUMNS: char = '\u{f0db}';
pub const ICON_TABLE_LIST: char = '\u{f00b}';
pub const ICON_TABLE_TENNIS_PADDLE_BALL: char = '\u{f45d}';
@ -1234,6 +1240,7 @@ pub const ICON_THERMOMETER: char = '\u{f491}';
pub const ICON_THUMBS_DOWN: char = '\u{f165}';
pub const ICON_THUMBS_UP: char = '\u{f164}';
pub const ICON_THUMBTACK: char = '\u{f08d}';
pub const ICON_THUMBTACK_SLASH: char = '\u{e68f}';
pub const ICON_TICKET: char = '\u{f145}';
pub const ICON_TICKET_SIMPLE: char = '\u{f3ff}';
pub const ICON_TIMELINE: char = '\u{e29c}';
@ -1371,6 +1378,7 @@ pub const ICON_WAREHOUSE: char = '\u{f494}';
pub const ICON_WATER: char = '\u{f773}';
pub const ICON_WATER_LADDER: char = '\u{f5c5}';
pub const ICON_WAVE_SQUARE: char = '\u{f83e}';
pub const ICON_WEB_AWESOME: char = '\u{e682}';
pub const ICON_WEIGHT_HANGING: char = '\u{f5cd}';
pub const ICON_WEIGHT_SCALE: char = '\u{f496}';
pub const ICON_WHEAT_AWN: char = '\u{e2cd}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
// </auto-generated>
namespace IconFonts
{
public class FontAwesome6Brands
@ -10,6 +14,7 @@ namespace IconFonts
public const int IconMin = 0xe007;
public const int IconMax16 = 0xf8e8;
public const int IconMax = 0xf8e8;
public const string Num42Group = "\ue080";
public const string Num500px = "\uf26e";
public const string AccessibleIcon = "\uf368";
@ -52,10 +57,13 @@ namespace IconFonts
public const string Blackberry = "\uf37b";
public const string Blogger = "\uf37c";
public const string BloggerB = "\uf37d";
public const string Bluesky = "\ue671";
public const string Bluetooth = "\uf293";
public const string BluetoothB = "\uf294";
public const string Bootstrap = "\uf836";
public const string Bots = "\ue340";
public const string Brave = "\ue63c";
public const string BraveReverse = "\ue63d";
public const string Btc = "\uf15a";
public const string Buffer = "\uf837";
public const string Buromobelexperte = "\uf37f";
@ -109,7 +117,9 @@ namespace IconFonts
public const string DAndD = "\uf38d";
public const string DAndDBeyond = "\uf6ca";
public const string Dailymotion = "\ue052";
public const string DartLang = "\ue693";
public const string Dashcube = "\uf210";
public const string Debian = "\ue60b";
public const string Deezer = "\ue077";
public const string Delicious = "\uf1a5";
public const string Deploydog = "\uf38e";
@ -157,6 +167,7 @@ namespace IconFonts
public const string Firstdraft = "\uf3a1";
public const string Flickr = "\uf16e";
public const string Flipboard = "\uf44d";
public const string Flutter = "\ue694";
public const string Fly = "\uf417";
public const string FontAwesome = "\uf2b4";
public const string Fonticons = "\uf280";
@ -192,6 +203,7 @@ namespace IconFonts
public const string GooglePlay = "\uf3ab";
public const string GooglePlus = "\uf2b3";
public const string GooglePlusG = "\uf0d5";
public const string GoogleScholar = "\ue63b";
public const string GoogleWallet = "\uf1ee";
public const string Gratipay = "\uf184";
public const string Grav = "\uf2d6";
@ -230,6 +242,7 @@ namespace IconFonts
public const string Joomla = "\uf1aa";
public const string Js = "\uf3b8";
public const string Jsfiddle = "\uf1cc";
public const string Jxl = "\ue67b";
public const string Kaggle = "\uf5fa";
public const string Keybase = "\uf4f5";
public const string Keycdn = "\uf3ba";
@ -240,6 +253,7 @@ namespace IconFonts
public const string Lastfm = "\uf202";
public const string Leanpub = "\uf212";
public const string Less = "\uf41d";
public const string Letterboxd = "\ue62d";
public const string Line = "\uf3c0";
public const string Linkedin = "\uf08c";
public const string LinkedinIn = "\uf0e1";
@ -262,6 +276,7 @@ namespace IconFonts
public const string Meta = "\ue49b";
public const string Microblog = "\ue01a";
public const string Microsoft = "\uf3ca";
public const string Mintbit = "\ue62f";
public const string Mix = "\uf3cb";
public const string Mixcloud = "\uf289";
public const string Mixer = "\ue056";
@ -284,6 +299,7 @@ namespace IconFonts
public const string OldRepublic = "\uf510";
public const string Opencart = "\uf23d";
public const string Openid = "\uf19b";
public const string Opensuse = "\ue62b";
public const string Opera = "\uf26a";
public const string OptinMonster = "\uf23c";
public const string Orcid = "\uf8d2";
@ -307,6 +323,7 @@ namespace IconFonts
public const string Pinterest = "\uf0d2";
public const string PinterestP = "\uf231";
public const string Pix = "\ue43a";
public const string Pixiv = "\ue640";
public const string Playstation = "\uf3df";
public const string ProductHunt = "\uf288";
public const string Pushed = "\uf3e1";
@ -344,8 +361,10 @@ namespace IconFonts
public const string Sellsy = "\uf213";
public const string Servicestack = "\uf3ec";
public const string Shirtsinbulk = "\uf214";
public const string Shoelace = "\ue60c";
public const string Shopify = "\ue057";
public const string Shopware = "\uf5b5";
public const string SignalMessenger = "\ue663";
public const string Simplybuilt = "\uf215";
public const string Sistrix = "\uf3ee";
public const string Sith = "\uf512";
@ -375,17 +394,23 @@ namespace IconFonts
public const string SquareInstagram = "\ue055";
public const string SquareJs = "\uf3b9";
public const string SquareLastfm = "\uf203";
public const string SquareLetterboxd = "\ue62e";
public const string SquareOdnoklassniki = "\uf264";
public const string SquarePiedPiper = "\ue01e";
public const string SquarePinterest = "\uf0d3";
public const string SquareReddit = "\uf1a2";
public const string SquareSnapchat = "\uf2ad";
public const string SquareSteam = "\uf1b7";
public const string SquareThreads = "\ue619";
public const string SquareTumblr = "\uf174";
public const string SquareTwitter = "\uf081";
public const string SquareUpwork = "\ue67c";
public const string SquareViadeo = "\uf2aa";
public const string SquareVimeo = "\uf194";
public const string SquareWebAwesome = "\ue683";
public const string SquareWebAwesomeStroke = "\ue684";
public const string SquareWhatsapp = "\uf40c";
public const string SquareXTwitter = "\ue61a";
public const string SquareXing = "\uf169";
public const string SquareYoutube = "\uf431";
public const string Squarespace = "\uf5be";
@ -415,6 +440,7 @@ namespace IconFonts
public const string Themeco = "\uf5c6";
public const string Themeisle = "\uf2b2";
public const string ThinkPeaks = "\uf731";
public const string Threads = "\ue618";
public const string Tiktok = "\ue07b";
public const string TradeFederation = "\uf513";
public const string Trello = "\uf181";
@ -432,6 +458,7 @@ namespace IconFonts
public const string Unsplash = "\ue07c";
public const string Untappd = "\uf405";
public const string Ups = "\uf7e0";
public const string Upwork = "\ue641";
public const string Usb = "\uf287";
public const string Usps = "\uf7e1";
public const string Ussunnah = "\uf407";
@ -447,6 +474,8 @@ namespace IconFonts
public const string Vuejs = "\uf41f";
public const string WatchmanMonitoring = "\ue087";
public const string Waze = "\uf83f";
public const string WebAwesome = "\ue682";
public const string Webflow = "\ue65c";
public const string Weebly = "\uf5cc";
public const string Weibo = "\uf18a";
public const string Weixin = "\uf1d7";
@ -465,6 +494,7 @@ namespace IconFonts
public const string Wpexplorer = "\uf2de";
public const string Wpforms = "\uf298";
public const string Wpressr = "\uf3e4";
public const string XTwitter = "\ue61b";
public const string Xbox = "\uf412";
public const string Xing = "\uf168";
public const string YCombinator = "\uf23b";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
package IconFontCppHeaders
@ -54,10 +55,13 @@ var IconsFontAwesome6Brands = Font{
"Blackberry": "\xef\x8d\xbb", // U+f37b
"Blogger": "\xef\x8d\xbc", // U+f37c
"BloggerB": "\xef\x8d\xbd", // U+f37d
"Bluesky": "\xee\x99\xb1", // U+e671
"Bluetooth": "\xef\x8a\x93", // U+f293
"BluetoothB": "\xef\x8a\x94", // U+f294
"Bootstrap": "\xef\xa0\xb6", // U+f836
"Bots": "\xee\x8d\x80", // U+e340
"Brave": "\xee\x98\xbc", // U+e63c
"BraveReverse": "\xee\x98\xbd", // U+e63d
"Btc": "\xef\x85\x9a", // U+f15a
"Buffer": "\xef\xa0\xb7", // U+f837
"Buromobelexperte": "\xef\x8d\xbf", // U+f37f
@ -111,7 +115,9 @@ var IconsFontAwesome6Brands = Font{
"DAndD": "\xef\x8e\x8d", // U+f38d
"DAndDBeyond": "\xef\x9b\x8a", // U+f6ca
"Dailymotion": "\xee\x81\x92", // U+e052
"DartLang": "\xee\x9a\x93", // U+e693
"Dashcube": "\xef\x88\x90", // U+f210
"Debian": "\xee\x98\x8b", // U+e60b
"Deezer": "\xee\x81\xb7", // U+e077
"Delicious": "\xef\x86\xa5", // U+f1a5
"Deploydog": "\xef\x8e\x8e", // U+f38e
@ -159,6 +165,7 @@ var IconsFontAwesome6Brands = Font{
"Firstdraft": "\xef\x8e\xa1", // U+f3a1
"Flickr": "\xef\x85\xae", // U+f16e
"Flipboard": "\xef\x91\x8d", // U+f44d
"Flutter": "\xee\x9a\x94", // U+e694
"Fly": "\xef\x90\x97", // U+f417
"FontAwesome": "\xef\x8a\xb4", // U+f2b4
"Fonticons": "\xef\x8a\x80", // U+f280
@ -194,6 +201,7 @@ var IconsFontAwesome6Brands = Font{
"GooglePlay": "\xef\x8e\xab", // U+f3ab
"GooglePlus": "\xef\x8a\xb3", // U+f2b3
"GooglePlusG": "\xef\x83\x95", // U+f0d5
"GoogleScholar": "\xee\x98\xbb", // U+e63b
"GoogleWallet": "\xef\x87\xae", // U+f1ee
"Gratipay": "\xef\x86\x84", // U+f184
"Grav": "\xef\x8b\x96", // U+f2d6
@ -232,6 +240,7 @@ var IconsFontAwesome6Brands = Font{
"Joomla": "\xef\x86\xaa", // U+f1aa
"Js": "\xef\x8e\xb8", // U+f3b8
"Jsfiddle": "\xef\x87\x8c", // U+f1cc
"Jxl": "\xee\x99\xbb", // U+e67b
"Kaggle": "\xef\x97\xba", // U+f5fa
"Keybase": "\xef\x93\xb5", // U+f4f5
"Keycdn": "\xef\x8e\xba", // U+f3ba
@ -242,6 +251,7 @@ var IconsFontAwesome6Brands = Font{
"Lastfm": "\xef\x88\x82", // U+f202
"Leanpub": "\xef\x88\x92", // U+f212
"Less": "\xef\x90\x9d", // U+f41d
"Letterboxd": "\xee\x98\xad", // U+e62d
"Line": "\xef\x8f\x80", // U+f3c0
"Linkedin": "\xef\x82\x8c", // U+f08c
"LinkedinIn": "\xef\x83\xa1", // U+f0e1
@ -264,6 +274,7 @@ var IconsFontAwesome6Brands = Font{
"Meta": "\xee\x92\x9b", // U+e49b
"Microblog": "\xee\x80\x9a", // U+e01a
"Microsoft": "\xef\x8f\x8a", // U+f3ca
"Mintbit": "\xee\x98\xaf", // U+e62f
"Mix": "\xef\x8f\x8b", // U+f3cb
"Mixcloud": "\xef\x8a\x89", // U+f289
"Mixer": "\xee\x81\x96", // U+e056
@ -286,6 +297,7 @@ var IconsFontAwesome6Brands = Font{
"OldRepublic": "\xef\x94\x90", // U+f510
"Opencart": "\xef\x88\xbd", // U+f23d
"Openid": "\xef\x86\x9b", // U+f19b
"Opensuse": "\xee\x98\xab", // U+e62b
"Opera": "\xef\x89\xaa", // U+f26a
"OptinMonster": "\xef\x88\xbc", // U+f23c
"Orcid": "\xef\xa3\x92", // U+f8d2
@ -309,6 +321,7 @@ var IconsFontAwesome6Brands = Font{
"Pinterest": "\xef\x83\x92", // U+f0d2
"PinterestP": "\xef\x88\xb1", // U+f231
"Pix": "\xee\x90\xba", // U+e43a
"Pixiv": "\xee\x99\x80", // U+e640
"Playstation": "\xef\x8f\x9f", // U+f3df
"ProductHunt": "\xef\x8a\x88", // U+f288
"Pushed": "\xef\x8f\xa1", // U+f3e1
@ -346,8 +359,10 @@ var IconsFontAwesome6Brands = Font{
"Sellsy": "\xef\x88\x93", // U+f213
"Servicestack": "\xef\x8f\xac", // U+f3ec
"Shirtsinbulk": "\xef\x88\x94", // U+f214
"Shoelace": "\xee\x98\x8c", // U+e60c
"Shopify": "\xee\x81\x97", // U+e057
"Shopware": "\xef\x96\xb5", // U+f5b5
"SignalMessenger": "\xee\x99\xa3", // U+e663
"Simplybuilt": "\xef\x88\x95", // U+f215
"Sistrix": "\xef\x8f\xae", // U+f3ee
"Sith": "\xef\x94\x92", // U+f512
@ -377,17 +392,23 @@ var IconsFontAwesome6Brands = Font{
"SquareInstagram": "\xee\x81\x95", // U+e055
"SquareJs": "\xef\x8e\xb9", // U+f3b9
"SquareLastfm": "\xef\x88\x83", // U+f203
"SquareLetterboxd": "\xee\x98\xae", // U+e62e
"SquareOdnoklassniki": "\xef\x89\xa4", // U+f264
"SquarePiedPiper": "\xee\x80\x9e", // U+e01e
"SquarePinterest": "\xef\x83\x93", // U+f0d3
"SquareReddit": "\xef\x86\xa2", // U+f1a2
"SquareSnapchat": "\xef\x8a\xad", // U+f2ad
"SquareSteam": "\xef\x86\xb7", // U+f1b7
"SquareThreads": "\xee\x98\x99", // U+e619
"SquareTumblr": "\xef\x85\xb4", // U+f174
"SquareTwitter": "\xef\x82\x81", // U+f081
"SquareUpwork": "\xee\x99\xbc", // U+e67c
"SquareViadeo": "\xef\x8a\xaa", // U+f2aa
"SquareVimeo": "\xef\x86\x94", // U+f194
"SquareWebAwesome": "\xee\x9a\x83", // U+e683
"SquareWebAwesomeStroke": "\xee\x9a\x84", // U+e684
"SquareWhatsapp": "\xef\x90\x8c", // U+f40c
"SquareXTwitter": "\xee\x98\x9a", // U+e61a
"SquareXing": "\xef\x85\xa9", // U+f169
"SquareYoutube": "\xef\x90\xb1", // U+f431
"Squarespace": "\xef\x96\xbe", // U+f5be
@ -417,6 +438,7 @@ var IconsFontAwesome6Brands = Font{
"Themeco": "\xef\x97\x86", // U+f5c6
"Themeisle": "\xef\x8a\xb2", // U+f2b2
"ThinkPeaks": "\xef\x9c\xb1", // U+f731
"Threads": "\xee\x98\x98", // U+e618
"Tiktok": "\xee\x81\xbb", // U+e07b
"TradeFederation": "\xef\x94\x93", // U+f513
"Trello": "\xef\x86\x81", // U+f181
@ -434,6 +456,7 @@ var IconsFontAwesome6Brands = Font{
"Unsplash": "\xee\x81\xbc", // U+e07c
"Untappd": "\xef\x90\x85", // U+f405
"Ups": "\xef\x9f\xa0", // U+f7e0
"Upwork": "\xee\x99\x81", // U+e641
"Usb": "\xef\x8a\x87", // U+f287
"Usps": "\xef\x9f\xa1", // U+f7e1
"Ussunnah": "\xef\x90\x87", // U+f407
@ -449,6 +472,8 @@ var IconsFontAwesome6Brands = Font{
"Vuejs": "\xef\x90\x9f", // U+f41f
"WatchmanMonitoring": "\xee\x82\x87", // U+e087
"Waze": "\xef\xa0\xbf", // U+f83f
"WebAwesome": "\xee\x9a\x82", // U+e682
"Webflow": "\xee\x99\x9c", // U+e65c
"Weebly": "\xef\x97\x8c", // U+f5cc
"Weibo": "\xef\x86\x8a", // U+f18a
"Weixin": "\xef\x87\x97", // U+f1d7
@ -467,6 +492,7 @@ var IconsFontAwesome6Brands = Font{
"Wpexplorer": "\xef\x8b\x9e", // U+f2de
"Wpforms": "\xef\x8a\x98", // U+f298
"Wpressr": "\xef\x8f\xa4", // U+f3e4
"XTwitter": "\xee\x98\x9b", // U+e61b
"Xbox": "\xef\x90\x92", // U+f412
"Xing": "\xef\x85\xa8", // U+f168
"YCombinator": "\xef\x88\xbb", // U+f23b

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
// for use with font https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
#pragma once
#define FONT_ICON_FILE_NAME_FAB "fa-brands-400.ttf"
@ -8,6 +10,7 @@
#define ICON_MIN_FAB 0xe007
#define ICON_MAX_16_FAB 0xf8e8
#define ICON_MAX_FAB 0xf8e8
#define ICON_FA_42_GROUP "\xee\x82\x80" // U+e080
#define ICON_FA_500PX "\xef\x89\xae" // U+f26e
#define ICON_FA_ACCESSIBLE_ICON "\xef\x8d\xa8" // U+f368
@ -50,10 +53,13 @@
#define ICON_FA_BLACKBERRY "\xef\x8d\xbb" // U+f37b
#define ICON_FA_BLOGGER "\xef\x8d\xbc" // U+f37c
#define ICON_FA_BLOGGER_B "\xef\x8d\xbd" // U+f37d
#define ICON_FA_BLUESKY "\xee\x99\xb1" // U+e671
#define ICON_FA_BLUETOOTH "\xef\x8a\x93" // U+f293
#define ICON_FA_BLUETOOTH_B "\xef\x8a\x94" // U+f294
#define ICON_FA_BOOTSTRAP "\xef\xa0\xb6" // U+f836
#define ICON_FA_BOTS "\xee\x8d\x80" // U+e340
#define ICON_FA_BRAVE "\xee\x98\xbc" // U+e63c
#define ICON_FA_BRAVE_REVERSE "\xee\x98\xbd" // U+e63d
#define ICON_FA_BTC "\xef\x85\x9a" // U+f15a
#define ICON_FA_BUFFER "\xef\xa0\xb7" // U+f837
#define ICON_FA_BUROMOBELEXPERTE "\xef\x8d\xbf" // U+f37f
@ -107,7 +113,9 @@
#define ICON_FA_D_AND_D "\xef\x8e\x8d" // U+f38d
#define ICON_FA_D_AND_D_BEYOND "\xef\x9b\x8a" // U+f6ca
#define ICON_FA_DAILYMOTION "\xee\x81\x92" // U+e052
#define ICON_FA_DART_LANG "\xee\x9a\x93" // U+e693
#define ICON_FA_DASHCUBE "\xef\x88\x90" // U+f210
#define ICON_FA_DEBIAN "\xee\x98\x8b" // U+e60b
#define ICON_FA_DEEZER "\xee\x81\xb7" // U+e077
#define ICON_FA_DELICIOUS "\xef\x86\xa5" // U+f1a5
#define ICON_FA_DEPLOYDOG "\xef\x8e\x8e" // U+f38e
@ -155,6 +163,7 @@
#define ICON_FA_FIRSTDRAFT "\xef\x8e\xa1" // U+f3a1
#define ICON_FA_FLICKR "\xef\x85\xae" // U+f16e
#define ICON_FA_FLIPBOARD "\xef\x91\x8d" // U+f44d
#define ICON_FA_FLUTTER "\xee\x9a\x94" // U+e694
#define ICON_FA_FLY "\xef\x90\x97" // U+f417
#define ICON_FA_FONT_AWESOME "\xef\x8a\xb4" // U+f2b4
#define ICON_FA_FONTICONS "\xef\x8a\x80" // U+f280
@ -190,6 +199,7 @@
#define ICON_FA_GOOGLE_PLAY "\xef\x8e\xab" // U+f3ab
#define ICON_FA_GOOGLE_PLUS "\xef\x8a\xb3" // U+f2b3
#define ICON_FA_GOOGLE_PLUS_G "\xef\x83\x95" // U+f0d5
#define ICON_FA_GOOGLE_SCHOLAR "\xee\x98\xbb" // U+e63b
#define ICON_FA_GOOGLE_WALLET "\xef\x87\xae" // U+f1ee
#define ICON_FA_GRATIPAY "\xef\x86\x84" // U+f184
#define ICON_FA_GRAV "\xef\x8b\x96" // U+f2d6
@ -228,6 +238,7 @@
#define ICON_FA_JOOMLA "\xef\x86\xaa" // U+f1aa
#define ICON_FA_JS "\xef\x8e\xb8" // U+f3b8
#define ICON_FA_JSFIDDLE "\xef\x87\x8c" // U+f1cc
#define ICON_FA_JXL "\xee\x99\xbb" // U+e67b
#define ICON_FA_KAGGLE "\xef\x97\xba" // U+f5fa
#define ICON_FA_KEYBASE "\xef\x93\xb5" // U+f4f5
#define ICON_FA_KEYCDN "\xef\x8e\xba" // U+f3ba
@ -238,6 +249,7 @@
#define ICON_FA_LASTFM "\xef\x88\x82" // U+f202
#define ICON_FA_LEANPUB "\xef\x88\x92" // U+f212
#define ICON_FA_LESS "\xef\x90\x9d" // U+f41d
#define ICON_FA_LETTERBOXD "\xee\x98\xad" // U+e62d
#define ICON_FA_LINE "\xef\x8f\x80" // U+f3c0
#define ICON_FA_LINKEDIN "\xef\x82\x8c" // U+f08c
#define ICON_FA_LINKEDIN_IN "\xef\x83\xa1" // U+f0e1
@ -260,6 +272,7 @@
#define ICON_FA_META "\xee\x92\x9b" // U+e49b
#define ICON_FA_MICROBLOG "\xee\x80\x9a" // U+e01a
#define ICON_FA_MICROSOFT "\xef\x8f\x8a" // U+f3ca
#define ICON_FA_MINTBIT "\xee\x98\xaf" // U+e62f
#define ICON_FA_MIX "\xef\x8f\x8b" // U+f3cb
#define ICON_FA_MIXCLOUD "\xef\x8a\x89" // U+f289
#define ICON_FA_MIXER "\xee\x81\x96" // U+e056
@ -282,6 +295,7 @@
#define ICON_FA_OLD_REPUBLIC "\xef\x94\x90" // U+f510
#define ICON_FA_OPENCART "\xef\x88\xbd" // U+f23d
#define ICON_FA_OPENID "\xef\x86\x9b" // U+f19b
#define ICON_FA_OPENSUSE "\xee\x98\xab" // U+e62b
#define ICON_FA_OPERA "\xef\x89\xaa" // U+f26a
#define ICON_FA_OPTIN_MONSTER "\xef\x88\xbc" // U+f23c
#define ICON_FA_ORCID "\xef\xa3\x92" // U+f8d2
@ -305,6 +319,7 @@
#define ICON_FA_PINTEREST "\xef\x83\x92" // U+f0d2
#define ICON_FA_PINTEREST_P "\xef\x88\xb1" // U+f231
#define ICON_FA_PIX "\xee\x90\xba" // U+e43a
#define ICON_FA_PIXIV "\xee\x99\x80" // U+e640
#define ICON_FA_PLAYSTATION "\xef\x8f\x9f" // U+f3df
#define ICON_FA_PRODUCT_HUNT "\xef\x8a\x88" // U+f288
#define ICON_FA_PUSHED "\xef\x8f\xa1" // U+f3e1
@ -342,8 +357,10 @@
#define ICON_FA_SELLSY "\xef\x88\x93" // U+f213
#define ICON_FA_SERVICESTACK "\xef\x8f\xac" // U+f3ec
#define ICON_FA_SHIRTSINBULK "\xef\x88\x94" // U+f214
#define ICON_FA_SHOELACE "\xee\x98\x8c" // U+e60c
#define ICON_FA_SHOPIFY "\xee\x81\x97" // U+e057
#define ICON_FA_SHOPWARE "\xef\x96\xb5" // U+f5b5
#define ICON_FA_SIGNAL_MESSENGER "\xee\x99\xa3" // U+e663
#define ICON_FA_SIMPLYBUILT "\xef\x88\x95" // U+f215
#define ICON_FA_SISTRIX "\xef\x8f\xae" // U+f3ee
#define ICON_FA_SITH "\xef\x94\x92" // U+f512
@ -373,17 +390,23 @@
#define ICON_FA_SQUARE_INSTAGRAM "\xee\x81\x95" // U+e055
#define ICON_FA_SQUARE_JS "\xef\x8e\xb9" // U+f3b9
#define ICON_FA_SQUARE_LASTFM "\xef\x88\x83" // U+f203
#define ICON_FA_SQUARE_LETTERBOXD "\xee\x98\xae" // U+e62e
#define ICON_FA_SQUARE_ODNOKLASSNIKI "\xef\x89\xa4" // U+f264
#define ICON_FA_SQUARE_PIED_PIPER "\xee\x80\x9e" // U+e01e
#define ICON_FA_SQUARE_PINTEREST "\xef\x83\x93" // U+f0d3
#define ICON_FA_SQUARE_REDDIT "\xef\x86\xa2" // U+f1a2
#define ICON_FA_SQUARE_SNAPCHAT "\xef\x8a\xad" // U+f2ad
#define ICON_FA_SQUARE_STEAM "\xef\x86\xb7" // U+f1b7
#define ICON_FA_SQUARE_THREADS "\xee\x98\x99" // U+e619
#define ICON_FA_SQUARE_TUMBLR "\xef\x85\xb4" // U+f174
#define ICON_FA_SQUARE_TWITTER "\xef\x82\x81" // U+f081
#define ICON_FA_SQUARE_UPWORK "\xee\x99\xbc" // U+e67c
#define ICON_FA_SQUARE_VIADEO "\xef\x8a\xaa" // U+f2aa
#define ICON_FA_SQUARE_VIMEO "\xef\x86\x94" // U+f194
#define ICON_FA_SQUARE_WEB_AWESOME "\xee\x9a\x83" // U+e683
#define ICON_FA_SQUARE_WEB_AWESOME_STROKE "\xee\x9a\x84" // U+e684
#define ICON_FA_SQUARE_WHATSAPP "\xef\x90\x8c" // U+f40c
#define ICON_FA_SQUARE_X_TWITTER "\xee\x98\x9a" // U+e61a
#define ICON_FA_SQUARE_XING "\xef\x85\xa9" // U+f169
#define ICON_FA_SQUARE_YOUTUBE "\xef\x90\xb1" // U+f431
#define ICON_FA_SQUARESPACE "\xef\x96\xbe" // U+f5be
@ -413,6 +436,7 @@
#define ICON_FA_THEMECO "\xef\x97\x86" // U+f5c6
#define ICON_FA_THEMEISLE "\xef\x8a\xb2" // U+f2b2
#define ICON_FA_THINK_PEAKS "\xef\x9c\xb1" // U+f731
#define ICON_FA_THREADS "\xee\x98\x98" // U+e618
#define ICON_FA_TIKTOK "\xee\x81\xbb" // U+e07b
#define ICON_FA_TRADE_FEDERATION "\xef\x94\x93" // U+f513
#define ICON_FA_TRELLO "\xef\x86\x81" // U+f181
@ -430,6 +454,7 @@
#define ICON_FA_UNSPLASH "\xee\x81\xbc" // U+e07c
#define ICON_FA_UNTAPPD "\xef\x90\x85" // U+f405
#define ICON_FA_UPS "\xef\x9f\xa0" // U+f7e0
#define ICON_FA_UPWORK "\xee\x99\x81" // U+e641
#define ICON_FA_USB "\xef\x8a\x87" // U+f287
#define ICON_FA_USPS "\xef\x9f\xa1" // U+f7e1
#define ICON_FA_USSUNNAH "\xef\x90\x87" // U+f407
@ -445,6 +470,8 @@
#define ICON_FA_VUEJS "\xef\x90\x9f" // U+f41f
#define ICON_FA_WATCHMAN_MONITORING "\xee\x82\x87" // U+e087
#define ICON_FA_WAZE "\xef\xa0\xbf" // U+f83f
#define ICON_FA_WEB_AWESOME "\xee\x9a\x82" // U+e682
#define ICON_FA_WEBFLOW "\xee\x99\x9c" // U+e65c
#define ICON_FA_WEEBLY "\xef\x97\x8c" // U+f5cc
#define ICON_FA_WEIBO "\xef\x86\x8a" // U+f18a
#define ICON_FA_WEIXIN "\xef\x87\x97" // U+f1d7
@ -463,6 +490,7 @@
#define ICON_FA_WPEXPLORER "\xef\x8b\x9e" // U+f2de
#define ICON_FA_WPFORMS "\xef\x8a\x98" // U+f298
#define ICON_FA_WPRESSR "\xef\x8f\xa4" // U+f3e4
#define ICON_FA_X_TWITTER "\xee\x98\x9b" // U+e61b
#define ICON_FA_XBOX "\xef\x90\x92" // U+f412
#define ICON_FA_XING "\xef\x85\xa8" // U+f168
#define ICON_FA_Y_COMBINATOR "\xef\x88\xbb" // U+f23b

View file

@ -1,12 +1,16 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
# for use with https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
# for use with font https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
class IconsFontAwesome6Brands:
FONT_ICON_FILE_NAME_FAB = 'fa-brands-400.ttf'
ICON_MIN = 0xe007
ICON_MAX_16 = 0xf8e8
ICON_MAX = 0xf8e8
ICON_42_GROUP = '\ue080'
ICON_500PX = '\uf26e'
ICON_ACCESSIBLE_ICON = '\uf368'
@ -49,10 +53,13 @@ class IconsFontAwesome6Brands:
ICON_BLACKBERRY = '\uf37b'
ICON_BLOGGER = '\uf37c'
ICON_BLOGGER_B = '\uf37d'
ICON_BLUESKY = '\ue671'
ICON_BLUETOOTH = '\uf293'
ICON_BLUETOOTH_B = '\uf294'
ICON_BOOTSTRAP = '\uf836'
ICON_BOTS = '\ue340'
ICON_BRAVE = '\ue63c'
ICON_BRAVE_REVERSE = '\ue63d'
ICON_BTC = '\uf15a'
ICON_BUFFER = '\uf837'
ICON_BUROMOBELEXPERTE = '\uf37f'
@ -106,7 +113,9 @@ class IconsFontAwesome6Brands:
ICON_D_AND_D = '\uf38d'
ICON_D_AND_D_BEYOND = '\uf6ca'
ICON_DAILYMOTION = '\ue052'
ICON_DART_LANG = '\ue693'
ICON_DASHCUBE = '\uf210'
ICON_DEBIAN = '\ue60b'
ICON_DEEZER = '\ue077'
ICON_DELICIOUS = '\uf1a5'
ICON_DEPLOYDOG = '\uf38e'
@ -154,6 +163,7 @@ class IconsFontAwesome6Brands:
ICON_FIRSTDRAFT = '\uf3a1'
ICON_FLICKR = '\uf16e'
ICON_FLIPBOARD = '\uf44d'
ICON_FLUTTER = '\ue694'
ICON_FLY = '\uf417'
ICON_FONT_AWESOME = '\uf2b4'
ICON_FONTICONS = '\uf280'
@ -189,6 +199,7 @@ class IconsFontAwesome6Brands:
ICON_GOOGLE_PLAY = '\uf3ab'
ICON_GOOGLE_PLUS = '\uf2b3'
ICON_GOOGLE_PLUS_G = '\uf0d5'
ICON_GOOGLE_SCHOLAR = '\ue63b'
ICON_GOOGLE_WALLET = '\uf1ee'
ICON_GRATIPAY = '\uf184'
ICON_GRAV = '\uf2d6'
@ -227,6 +238,7 @@ class IconsFontAwesome6Brands:
ICON_JOOMLA = '\uf1aa'
ICON_JS = '\uf3b8'
ICON_JSFIDDLE = '\uf1cc'
ICON_JXL = '\ue67b'
ICON_KAGGLE = '\uf5fa'
ICON_KEYBASE = '\uf4f5'
ICON_KEYCDN = '\uf3ba'
@ -237,6 +249,7 @@ class IconsFontAwesome6Brands:
ICON_LASTFM = '\uf202'
ICON_LEANPUB = '\uf212'
ICON_LESS = '\uf41d'
ICON_LETTERBOXD = '\ue62d'
ICON_LINE = '\uf3c0'
ICON_LINKEDIN = '\uf08c'
ICON_LINKEDIN_IN = '\uf0e1'
@ -259,6 +272,7 @@ class IconsFontAwesome6Brands:
ICON_META = '\ue49b'
ICON_MICROBLOG = '\ue01a'
ICON_MICROSOFT = '\uf3ca'
ICON_MINTBIT = '\ue62f'
ICON_MIX = '\uf3cb'
ICON_MIXCLOUD = '\uf289'
ICON_MIXER = '\ue056'
@ -281,6 +295,7 @@ class IconsFontAwesome6Brands:
ICON_OLD_REPUBLIC = '\uf510'
ICON_OPENCART = '\uf23d'
ICON_OPENID = '\uf19b'
ICON_OPENSUSE = '\ue62b'
ICON_OPERA = '\uf26a'
ICON_OPTIN_MONSTER = '\uf23c'
ICON_ORCID = '\uf8d2'
@ -304,6 +319,7 @@ class IconsFontAwesome6Brands:
ICON_PINTEREST = '\uf0d2'
ICON_PINTEREST_P = '\uf231'
ICON_PIX = '\ue43a'
ICON_PIXIV = '\ue640'
ICON_PLAYSTATION = '\uf3df'
ICON_PRODUCT_HUNT = '\uf288'
ICON_PUSHED = '\uf3e1'
@ -341,8 +357,10 @@ class IconsFontAwesome6Brands:
ICON_SELLSY = '\uf213'
ICON_SERVICESTACK = '\uf3ec'
ICON_SHIRTSINBULK = '\uf214'
ICON_SHOELACE = '\ue60c'
ICON_SHOPIFY = '\ue057'
ICON_SHOPWARE = '\uf5b5'
ICON_SIGNAL_MESSENGER = '\ue663'
ICON_SIMPLYBUILT = '\uf215'
ICON_SISTRIX = '\uf3ee'
ICON_SITH = '\uf512'
@ -372,17 +390,23 @@ class IconsFontAwesome6Brands:
ICON_SQUARE_INSTAGRAM = '\ue055'
ICON_SQUARE_JS = '\uf3b9'
ICON_SQUARE_LASTFM = '\uf203'
ICON_SQUARE_LETTERBOXD = '\ue62e'
ICON_SQUARE_ODNOKLASSNIKI = '\uf264'
ICON_SQUARE_PIED_PIPER = '\ue01e'
ICON_SQUARE_PINTEREST = '\uf0d3'
ICON_SQUARE_REDDIT = '\uf1a2'
ICON_SQUARE_SNAPCHAT = '\uf2ad'
ICON_SQUARE_STEAM = '\uf1b7'
ICON_SQUARE_THREADS = '\ue619'
ICON_SQUARE_TUMBLR = '\uf174'
ICON_SQUARE_TWITTER = '\uf081'
ICON_SQUARE_UPWORK = '\ue67c'
ICON_SQUARE_VIADEO = '\uf2aa'
ICON_SQUARE_VIMEO = '\uf194'
ICON_SQUARE_WEB_AWESOME = '\ue683'
ICON_SQUARE_WEB_AWESOME_STROKE = '\ue684'
ICON_SQUARE_WHATSAPP = '\uf40c'
ICON_SQUARE_X_TWITTER = '\ue61a'
ICON_SQUARE_XING = '\uf169'
ICON_SQUARE_YOUTUBE = '\uf431'
ICON_SQUARESPACE = '\uf5be'
@ -412,6 +436,7 @@ class IconsFontAwesome6Brands:
ICON_THEMECO = '\uf5c6'
ICON_THEMEISLE = '\uf2b2'
ICON_THINK_PEAKS = '\uf731'
ICON_THREADS = '\ue618'
ICON_TIKTOK = '\ue07b'
ICON_TRADE_FEDERATION = '\uf513'
ICON_TRELLO = '\uf181'
@ -429,6 +454,7 @@ class IconsFontAwesome6Brands:
ICON_UNSPLASH = '\ue07c'
ICON_UNTAPPD = '\uf405'
ICON_UPS = '\uf7e0'
ICON_UPWORK = '\ue641'
ICON_USB = '\uf287'
ICON_USPS = '\uf7e1'
ICON_USSUNNAH = '\uf407'
@ -444,6 +470,8 @@ class IconsFontAwesome6Brands:
ICON_VUEJS = '\uf41f'
ICON_WATCHMAN_MONITORING = '\ue087'
ICON_WAZE = '\uf83f'
ICON_WEB_AWESOME = '\ue682'
ICON_WEBFLOW = '\ue65c'
ICON_WEEBLY = '\uf5cc'
ICON_WEIBO = '\uf18a'
ICON_WEIXIN = '\uf1d7'
@ -462,6 +490,7 @@ class IconsFontAwesome6Brands:
ICON_WPEXPLORER = '\uf2de'
ICON_WPFORMS = '\uf298'
ICON_WPRESSR = '\uf3e4'
ICON_X_TWITTER = '\ue61b'
ICON_XBOX = '\uf412'
ICON_XING = '\uf168'
ICON_Y_COMBINATOR = '\uf23b'

View file

@ -1,11 +1,14 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
//! for use with https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml
//! for use with font https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-brands-400.ttf
pub const FONT_ICON_FILE_NAME_FAB: &str = "fa-brands-400.ttf";
pub const ICON_MIN: char = '\u{e007}';
pub const ICON_MAX_16: char = '\u{f8e8}';
pub const ICON_MAX: char = '\u{f8e8}';
pub const ICON_42_GROUP: char = '\u{e080}';
pub const ICON_500PX: char = '\u{f26e}';
pub const ICON_ACCESSIBLE_ICON: char = '\u{f368}';
@ -48,10 +51,13 @@ pub const ICON_BLACK_TIE: char = '\u{f27e}';
pub const ICON_BLACKBERRY: char = '\u{f37b}';
pub const ICON_BLOGGER: char = '\u{f37c}';
pub const ICON_BLOGGER_B: char = '\u{f37d}';
pub const ICON_BLUESKY: char = '\u{e671}';
pub const ICON_BLUETOOTH: char = '\u{f293}';
pub const ICON_BLUETOOTH_B: char = '\u{f294}';
pub const ICON_BOOTSTRAP: char = '\u{f836}';
pub const ICON_BOTS: char = '\u{e340}';
pub const ICON_BRAVE: char = '\u{e63c}';
pub const ICON_BRAVE_REVERSE: char = '\u{e63d}';
pub const ICON_BTC: char = '\u{f15a}';
pub const ICON_BUFFER: char = '\u{f837}';
pub const ICON_BUROMOBELEXPERTE: char = '\u{f37f}';
@ -105,7 +111,9 @@ pub const ICON_CUTTLEFISH: char = '\u{f38c}';
pub const ICON_D_AND_D: char = '\u{f38d}';
pub const ICON_D_AND_D_BEYOND: char = '\u{f6ca}';
pub const ICON_DAILYMOTION: char = '\u{e052}';
pub const ICON_DART_LANG: char = '\u{e693}';
pub const ICON_DASHCUBE: char = '\u{f210}';
pub const ICON_DEBIAN: char = '\u{e60b}';
pub const ICON_DEEZER: char = '\u{e077}';
pub const ICON_DELICIOUS: char = '\u{f1a5}';
pub const ICON_DEPLOYDOG: char = '\u{f38e}';
@ -153,6 +161,7 @@ pub const ICON_FIRST_ORDER_ALT: char = '\u{f50a}';
pub const ICON_FIRSTDRAFT: char = '\u{f3a1}';
pub const ICON_FLICKR: char = '\u{f16e}';
pub const ICON_FLIPBOARD: char = '\u{f44d}';
pub const ICON_FLUTTER: char = '\u{e694}';
pub const ICON_FLY: char = '\u{f417}';
pub const ICON_FONT_AWESOME: char = '\u{f2b4}';
pub const ICON_FONTICONS: char = '\u{f280}';
@ -188,6 +197,7 @@ pub const ICON_GOOGLE_PAY: char = '\u{e079}';
pub const ICON_GOOGLE_PLAY: char = '\u{f3ab}';
pub const ICON_GOOGLE_PLUS: char = '\u{f2b3}';
pub const ICON_GOOGLE_PLUS_G: char = '\u{f0d5}';
pub const ICON_GOOGLE_SCHOLAR: char = '\u{e63b}';
pub const ICON_GOOGLE_WALLET: char = '\u{f1ee}';
pub const ICON_GRATIPAY: char = '\u{f184}';
pub const ICON_GRAV: char = '\u{f2d6}';
@ -226,6 +236,7 @@ pub const ICON_JOGET: char = '\u{f3b7}';
pub const ICON_JOOMLA: char = '\u{f1aa}';
pub const ICON_JS: char = '\u{f3b8}';
pub const ICON_JSFIDDLE: char = '\u{f1cc}';
pub const ICON_JXL: char = '\u{e67b}';
pub const ICON_KAGGLE: char = '\u{f5fa}';
pub const ICON_KEYBASE: char = '\u{f4f5}';
pub const ICON_KEYCDN: char = '\u{f3ba}';
@ -236,6 +247,7 @@ pub const ICON_LARAVEL: char = '\u{f3bd}';
pub const ICON_LASTFM: char = '\u{f202}';
pub const ICON_LEANPUB: char = '\u{f212}';
pub const ICON_LESS: char = '\u{f41d}';
pub const ICON_LETTERBOXD: char = '\u{e62d}';
pub const ICON_LINE: char = '\u{f3c0}';
pub const ICON_LINKEDIN: char = '\u{f08c}';
pub const ICON_LINKEDIN_IN: char = '\u{f0e1}';
@ -258,6 +270,7 @@ pub const ICON_MENDELEY: char = '\u{f7b3}';
pub const ICON_META: char = '\u{e49b}';
pub const ICON_MICROBLOG: char = '\u{e01a}';
pub const ICON_MICROSOFT: char = '\u{f3ca}';
pub const ICON_MINTBIT: char = '\u{e62f}';
pub const ICON_MIX: char = '\u{f3cb}';
pub const ICON_MIXCLOUD: char = '\u{f289}';
pub const ICON_MIXER: char = '\u{e056}';
@ -280,6 +293,7 @@ pub const ICON_ODYSEE: char = '\u{e5c6}';
pub const ICON_OLD_REPUBLIC: char = '\u{f510}';
pub const ICON_OPENCART: char = '\u{f23d}';
pub const ICON_OPENID: char = '\u{f19b}';
pub const ICON_OPENSUSE: char = '\u{e62b}';
pub const ICON_OPERA: char = '\u{f26a}';
pub const ICON_OPTIN_MONSTER: char = '\u{f23c}';
pub const ICON_ORCID: char = '\u{f8d2}';
@ -303,6 +317,7 @@ pub const ICON_PIED_PIPER_PP: char = '\u{f1a7}';
pub const ICON_PINTEREST: char = '\u{f0d2}';
pub const ICON_PINTEREST_P: char = '\u{f231}';
pub const ICON_PIX: char = '\u{e43a}';
pub const ICON_PIXIV: char = '\u{e640}';
pub const ICON_PLAYSTATION: char = '\u{f3df}';
pub const ICON_PRODUCT_HUNT: char = '\u{f288}';
pub const ICON_PUSHED: char = '\u{f3e1}';
@ -340,8 +355,10 @@ pub const ICON_SELLCAST: char = '\u{f2da}';
pub const ICON_SELLSY: char = '\u{f213}';
pub const ICON_SERVICESTACK: char = '\u{f3ec}';
pub const ICON_SHIRTSINBULK: char = '\u{f214}';
pub const ICON_SHOELACE: char = '\u{e60c}';
pub const ICON_SHOPIFY: char = '\u{e057}';
pub const ICON_SHOPWARE: char = '\u{f5b5}';
pub const ICON_SIGNAL_MESSENGER: char = '\u{e663}';
pub const ICON_SIMPLYBUILT: char = '\u{f215}';
pub const ICON_SISTRIX: char = '\u{f3ee}';
pub const ICON_SITH: char = '\u{f512}';
@ -371,17 +388,23 @@ pub const ICON_SQUARE_HACKER_NEWS: char = '\u{f3af}';
pub const ICON_SQUARE_INSTAGRAM: char = '\u{e055}';
pub const ICON_SQUARE_JS: char = '\u{f3b9}';
pub const ICON_SQUARE_LASTFM: char = '\u{f203}';
pub const ICON_SQUARE_LETTERBOXD: char = '\u{e62e}';
pub const ICON_SQUARE_ODNOKLASSNIKI: char = '\u{f264}';
pub const ICON_SQUARE_PIED_PIPER: char = '\u{e01e}';
pub const ICON_SQUARE_PINTEREST: char = '\u{f0d3}';
pub const ICON_SQUARE_REDDIT: char = '\u{f1a2}';
pub const ICON_SQUARE_SNAPCHAT: char = '\u{f2ad}';
pub const ICON_SQUARE_STEAM: char = '\u{f1b7}';
pub const ICON_SQUARE_THREADS: char = '\u{e619}';
pub const ICON_SQUARE_TUMBLR: char = '\u{f174}';
pub const ICON_SQUARE_TWITTER: char = '\u{f081}';
pub const ICON_SQUARE_UPWORK: char = '\u{e67c}';
pub const ICON_SQUARE_VIADEO: char = '\u{f2aa}';
pub const ICON_SQUARE_VIMEO: char = '\u{f194}';
pub const ICON_SQUARE_WEB_AWESOME: char = '\u{e683}';
pub const ICON_SQUARE_WEB_AWESOME_STROKE: char = '\u{e684}';
pub const ICON_SQUARE_WHATSAPP: char = '\u{f40c}';
pub const ICON_SQUARE_X_TWITTER: char = '\u{e61a}';
pub const ICON_SQUARE_XING: char = '\u{f169}';
pub const ICON_SQUARE_YOUTUBE: char = '\u{f431}';
pub const ICON_SQUARESPACE: char = '\u{f5be}';
@ -411,6 +434,7 @@ pub const ICON_THE_RED_YETI: char = '\u{f69d}';
pub const ICON_THEMECO: char = '\u{f5c6}';
pub const ICON_THEMEISLE: char = '\u{f2b2}';
pub const ICON_THINK_PEAKS: char = '\u{f731}';
pub const ICON_THREADS: char = '\u{e618}';
pub const ICON_TIKTOK: char = '\u{e07b}';
pub const ICON_TRADE_FEDERATION: char = '\u{f513}';
pub const ICON_TRELLO: char = '\u{f181}';
@ -428,6 +452,7 @@ pub const ICON_UNITY: char = '\u{e049}';
pub const ICON_UNSPLASH: char = '\u{e07c}';
pub const ICON_UNTAPPD: char = '\u{f405}';
pub const ICON_UPS: char = '\u{f7e0}';
pub const ICON_UPWORK: char = '\u{e641}';
pub const ICON_USB: char = '\u{f287}';
pub const ICON_USPS: char = '\u{f7e1}';
pub const ICON_USSUNNAH: char = '\u{f407}';
@ -443,6 +468,8 @@ pub const ICON_VNV: char = '\u{f40b}';
pub const ICON_VUEJS: char = '\u{f41f}';
pub const ICON_WATCHMAN_MONITORING: char = '\u{e087}';
pub const ICON_WAZE: char = '\u{f83f}';
pub const ICON_WEB_AWESOME: char = '\u{e682}';
pub const ICON_WEBFLOW: char = '\u{e65c}';
pub const ICON_WEEBLY: char = '\u{f5cc}';
pub const ICON_WEIBO: char = '\u{f18a}';
pub const ICON_WEIXIN: char = '\u{f1d7}';
@ -461,6 +488,7 @@ pub const ICON_WPBEGINNER: char = '\u{f297}';
pub const ICON_WPEXPLORER: char = '\u{f2de}';
pub const ICON_WPFORMS: char = '\u{f298}';
pub const ICON_WPRESSR: char = '\u{f3e4}';
pub const ICON_X_TWITTER: char = '\u{e61b}';
pub const ICON_XBOX: char = '\u{f412}';
pub const ICON_XING: char = '\u{f168}';
pub const ICON_Y_COMBINATOR: char = '\u{f23b}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
// for use with https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
// for use with font https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
// </auto-generated>
namespace IconFonts
{
public class Fontaudio
@ -10,6 +14,7 @@ namespace IconFonts
public const int IconMin = 0xf101;
public const int IconMax16 = 0xf19b;
public const int IconMax = 0xf19b;
public const string Adr = "\uf101";
public const string Adsr = "\uf102";
public const string Ahdsr = "\uf103";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
// for use with https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
// for use with font https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
package IconFontCppHeaders

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
// for use with https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
// for use with font https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
#pragma once
#define FONT_ICON_FILE_NAME_FAD "fontaudio.ttf"
@ -8,6 +10,7 @@
#define ICON_MIN_FAD 0xf101
#define ICON_MAX_16_FAD 0xf19b
#define ICON_MAX_FAD 0xf19b
#define ICON_FAD_ADR "\xef\x84\x81" // U+f101
#define ICON_FAD_ADSR "\xef\x84\x82" // U+f102
#define ICON_FAD_AHDSR "\xef\x84\x83" // U+f103

View file

@ -1,12 +1,16 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
# for use with https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
# for use with font https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
class IconsFontaudio:
FONT_ICON_FILE_NAME_FAD = 'fontaudio.ttf'
ICON_MIN = 0xf101
ICON_MAX_16 = 0xf19b
ICON_MAX = 0xf19b
ICON_ADR = '\uf101'
ICON_ADSR = '\uf102'
ICON_AHDSR = '\uf103'

View file

@ -1,11 +1,14 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
//! for use with https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://github.com/fefanto/fontaudio/raw/master/font/fontaudio.css
//! for use with font https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf
pub const FONT_ICON_FILE_NAME_FAD: &str = "fontaudio.ttf";
pub const ICON_MIN: char = '\u{f101}';
pub const ICON_MAX_16: char = '\u{f19b}';
pub const ICON_MAX: char = '\u{f19b}';
pub const ICON_ADR: char = '\u{f101}';
pub const ICON_ADSR: char = '\u{f102}';
pub const ICON_AHDSR: char = '\u{f103}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://raw.githubusercontent.com/ForkAwesome/Fork-Awesome/master/src/icons/icons.yml
// for use with https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://github.com/ForkAwesome/Fork-Awesome/raw/master/src/icons/icons.yml
// for use with font https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf
// </auto-generated>
namespace IconFonts
{
public class ForkAwesome
@ -10,6 +14,7 @@ namespace IconFonts
public const int IconMin = 0xf000;
public const int IconMax16 = 0xf372;
public const int IconMax = 0xf372;
public const string Glass = "\uf000";
public const string Music = "\uf001";
public const string Search = "\uf002";

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://raw.githubusercontent.com/ForkAwesome/Fork-Awesome/master/src/icons/icons.yml
// for use with https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://github.com/ForkAwesome/Fork-Awesome/raw/master/src/icons/icons.yml
// for use with font https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf
#pragma once
#define FONT_ICON_FILE_NAME_FK "forkawesome-webfont.ttf"
@ -8,6 +10,7 @@
#define ICON_MIN_FK 0xf000
#define ICON_MAX_16_FK 0xf372
#define ICON_MAX_FK 0xf372
#define ICON_FK_GLASS "\xef\x80\x80" // U+f000
#define ICON_FK_MUSIC "\xef\x80\x81" // U+f001
#define ICON_FK_SEARCH "\xef\x80\x82" // U+f002

View file

@ -1,12 +1,16 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://raw.githubusercontent.com/ForkAwesome/Fork-Awesome/master/src/icons/icons.yml
# for use with https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://github.com/ForkAwesome/Fork-Awesome/raw/master/src/icons/icons.yml
# for use with font https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf
class IconsForkAwesome:
FONT_ICON_FILE_NAME_FK = 'forkawesome-webfont.ttf'
ICON_MIN = 0xf000
ICON_MAX_16 = 0xf372
ICON_MAX = 0xf372
ICON_GLASS = '\uf000'
ICON_MUSIC = '\uf001'
ICON_SEARCH = '\uf002'

View file

@ -1,11 +1,14 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://raw.githubusercontent.com/ForkAwesome/Fork-Awesome/master/src/icons/icons.yml
//! for use with https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://github.com/ForkAwesome/Fork-Awesome/raw/master/src/icons/icons.yml
//! for use with font https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf
pub const FONT_ICON_FILE_NAME_FK: &str = "forkawesome-webfont.ttf";
pub const ICON_MIN: char = '\u{f000}';
pub const ICON_MAX_16: char = '\u{f372}';
pub const ICON_MAX: char = '\u{f372}';
pub const ICON_GLASS: char = '\u{f000}';
pub const ICON_MUSIC: char = '\u{f001}';
pub const ICON_SEARCH: char = '\u{f002}';

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
// for use with https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
// for use with font https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
// </auto-generated>
namespace IconFonts
{
public class Kenney
@ -10,6 +14,7 @@ namespace IconFonts
public const int IconMin = 0xe900;
public const int IconMax16 = 0xe9e3;
public const int IconMax = 0xe9e3;
public const string Home = "\ue900";
public const string Adjust = "\ue901";
public const string Wrench = "\ue902";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
// for use with https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
// for use with font https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
package IconFontCppHeaders

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
// for use with https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
// for use with font https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
#pragma once
#define FONT_ICON_FILE_NAME_KI "kenney-icon-font.ttf"
@ -8,6 +10,7 @@
#define ICON_MIN_KI 0xe900
#define ICON_MAX_16_KI 0xe9e3
#define ICON_MAX_KI 0xe9e3
#define ICON_KI_HOME "\xee\xa4\x80" // U+e900
#define ICON_KI_ADJUST "\xee\xa4\x81" // U+e901
#define ICON_KI_WRENCH "\xee\xa4\x82" // U+e902

View file

@ -1,12 +1,16 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
# for use with https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
# for use with font https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
class IconsKenney:
FONT_ICON_FILE_NAME_KI = 'kenney-icon-font.ttf'
ICON_MIN = 0xe900
ICON_MAX_16 = 0xe9e3
ICON_MAX = 0xe9e3
ICON_HOME = '\ue900'
ICON_ADJUST = '\ue901'
ICON_WRENCH = '\ue902'

View file

@ -1,11 +1,14 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
//! for use with https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://github.com/nicodinh/kenney-icon-font/raw/master/css/kenney-icons.css
//! for use with font https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
pub const FONT_ICON_FILE_NAME_KI: &str = "kenney-icon-font.ttf";
pub const ICON_MIN: char = '\u{e900}';
pub const ICON_MAX_16: char = '\u{e9e3}';
pub const ICON_MAX: char = '\u{e9e3}';
pub const ICON_HOME: char = '\u{e900}';
pub const ICON_ADJUST: char = '\u{e901}';
pub const ICON_WRENCH: char = '\u{e902}';

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,10 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C#
// from https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
// for use with https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
// <auto-generated>
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C#
// from codepoints https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
// for use with font https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
// </auto-generated>
namespace IconFonts
{
public class MaterialDesign
@ -10,6 +14,7 @@ namespace IconFonts
public const int IconMin = 0xe000;
public const int IconMax16 = 0xf8ff;
public const int IconMax = 0x10fffd;
public const string Num10k = "\ue951";
public const string Num10mp = "\ue952";
public const string Num11mp = "\ue953";
@ -905,7 +910,7 @@ namespace IconFonts
public const string Gif_box = "\ue7a3";
public const string Girl = "\ueb68";
public const string Gite = "\ue58b";
public const string Goat = "\u10fffd";
public const string Goat = "\U0010fffd";
public const string Golf_course = "\ueb45";
public const string Gpp_bad = "\uf012";
public const string Gpp_good = "\uf013";

View file

@ -1,6 +1,7 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages Go
// from https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
// for use with https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for Go
// from codepoints https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
// for use with font https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
package IconFontCppHeaders

View file

@ -1,6 +1,8 @@
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
// for use with https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
// for C and C++
// from codepoints https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
// for use with font https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
#pragma once
#define FONT_ICON_FILE_NAME_MD "MaterialIcons-Regular.ttf"
@ -8,6 +10,7 @@
#define ICON_MIN_MD 0xe000
#define ICON_MAX_16_MD 0xf8ff
#define ICON_MAX_MD 0x10fffd
#define ICON_MD_10K "\xee\xa5\x91" // U+e951
#define ICON_MD_10MP "\xee\xa5\x92" // U+e952
#define ICON_MD_11MP "\xee\xa5\x93" // U+e953

View file

@ -1,12 +1,16 @@
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Python
# from https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
# for use with https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
# Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
# for Python
# from codepoints https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
# for use with font https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
class IconsMaterialDesign:
FONT_ICON_FILE_NAME_MD = 'MaterialIcons-Regular.ttf'
ICON_MIN = 0xe000
ICON_MAX_16 = 0xf8ff
ICON_MAX = 0x10fffd
ICON_10K = '\ue951'
ICON_10MP = '\ue952'
ICON_11MP = '\ue953'

View file

@ -1,11 +1,14 @@
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language Rust
//! from https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
//! for use with https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
//! Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py
//! for Rust
//! from codepoints https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
//! for use with font https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
pub const FONT_ICON_FILE_NAME_MD: &str = "MaterialIcons-Regular.ttf";
pub const ICON_MIN: char = '\u{e000}';
pub const ICON_MAX_16: char = '\u{f8ff}';
pub const ICON_MAX: char = '\u{10fffd}';
pub const ICON_10K: char = '\u{e951}';
pub const ICON_10MP: char = '\u{e952}';
pub const ICON_11MP: char = '\u{e953}';

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -7,19 +7,19 @@ Support development of IconFontCppHeaders through [GitHub Sponsors](https://gith
[https://github.com/juliettef/IconFontCppHeaders](https://github.com/juliettef/IconFontCppHeaders)
C and C++ headers, C# and Python classes, Rust files and Go package for icon fonts Font Awesome, Fork Awesome, Google Material Design icons, Kenney game icons, Fontaudio and Codicons.
C and C++ headers, C# and Python classes, Rust files and Go package for icon fonts Font Awesome, Fork Awesome, Google Material Design, Pictogrammers Material Design icons, Kenney game icons, Fontaudio, Codicons and Lucide.
A set of header files and classes for using icon fonts in C, C++, C#, Python, Rust and Go, along with the python generator used to create the files.
Each header contains defines for one font, with each icon code point defined as ICON_*, along with the min, max and max 16 bit code points for font loading purposes. The min excludes the ASCII characters code points. The max 16 bit is for use with libraries that only support 16 bit code points, for example Dear ImGui.
Each header contains defines for one font, with each icon code point defined as `ICON_*`, along with the *min*, *max* and *max 16 bit* code points for font loading purposes. The min excludes the ASCII characters code points. The max 16 bit is for use with libraries that only support 16 bit code points, for example Dear ImGui.
In addition the python script can be used to convert ttf font files to C and C++ headers.
Each ttf icon font file is converted to a C and C++ header file containing a single array of bytes.
To enable conversion, run the GenerateIconFontCppHeaders.py script with 'ttf2headerC = True'.
To enable conversion, run the `GenerateIconFontCppHeaders.py` script with `ttf2headerC = True`.
## Icon Fonts
### Font Awesome
### Font Awesome [ FA ]
* [fontawesome.com](https://fontawesome.com)
* [github.com/FortAwesome/Font-Awesome](https://github.com/FortAwesome/Font-Awesome)
@ -48,50 +48,71 @@ To enable conversion, run the GenerateIconFontCppHeaders.py script with 'ttf2hea
#### Font Awesome 6 pro
* Commercial product, not supported but [generation should be similar to FA5 Pro](#notes-about-font-awesome-5-and-6), or see [@jakerieger's fork](https://github.com/jakerieger/IconFontCppHeaders)
### Fork Awesome
* [forkawesome.github.io/Fork-Awesome](https://forkawesome.github.io/Fork-Awesome)
### Fork Awesome [ FK ]
* [forkaweso.me/Fork-Awesome](https://forkaweso.me/Fork-Awesome)
* [github.com/ForkAwesome/Fork-Awesome](https://github.com/ForkAwesome/Fork-Awesome)
* [icons.yml](https://github.com/ForkAwesome/Fork-Awesome/blob/master/src/icons/icons.yml)
* [forkawesome-webfont.ttf](https://github.com/ForkAwesome/Fork-Awesome/blob/master/fonts/forkawesome-webfont.ttf)
### Google Material Design icons
* [design.google.com/icon](https://design.google.com/icons)
### Google Material Design Icons [ MD ] and Material Symbols [ MS ]
* [fonts.google.com/icons](https://fonts.google.com/icons)
* [github.com/google/material-design-icons](https://github.com/google/material-design-icons)
* [codepoints](https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.codepoints)
#### Material Design Icons [ MD ]
* [fonts.google.com/icons?icon.set=Material+Icons](https://fonts.google.com/icons?icon.set=Material+Icons)
* [Codepoints](https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.codepoints)
* [MaterialIcons-Regular.ttf](https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf)
#### Material Symbols [ MS ]
* [fonts.google.com/icons?icon.set=Material+Symbols](https://fonts.google.com/icons?icon.set=Material+Symbols)
* [Codepoints](https://github.com/google/material-design-icons/blob/master/variablefont/MaterialSymbolsOutlined%5BFILL%2CGRAD%2Copsz%2Cwght%5D.codepoints)
* [MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf](https://github.com/google/material-design-icons/blob/master/variablefont/MaterialSymbolsOutlined%5BFILL,GRAD,opsz,wght%5D.ttf)
* [MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf](https://github.com/google/material-design-icons/blob/master/variablefont/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf)
* [MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf](https://github.com/google/material-design-icons/blob/master/variablefont/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf)
### Kenney Game icons and expansion
### Pictogrammers Material Design Icons [ MDI ]
* [pictogrammers.com/library/mdi](https://pictogrammers.com/library/mdi/)
* [github.com/Templarian/MaterialDesign-Webfont](https://github.com/Templarian/MaterialDesign-Webfont)
* [materialdesignicons.css](https://github.com/Templarian/MaterialDesign-Webfont/blob/master/css/materialdesignicons.css)
* [materialdesignicons-webfont.ttf](https://github.com/Templarian/MaterialDesign-Webfont/blob/master/fonts/materialdesignicons-webfont.ttf)
### Kenney Game Icons and Expansion [ KI ]
* [kenney.nl/assets/game-icons](http://kenney.nl/assets/game-icons) and [kenney.nl/assets/game-icons-expansion](http://kenney.nl/assets/game-icons-expansion)
* [github.com/nicodinh/kenney-icon-font](https://github.com/nicodinh/kenney-icon-font)
* [kenney-icons.css](https://github.com/nicodinh/kenney-icon-font/blob/master/css/kenney-icons.css)
* [kenney-icon-font.ttf](https://github.com/nicodinh/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf)
### Fontaudio
### Fontaudio [ FAD ]
* [github.com/fefanto/fontaudio](https://github.com/fefanto/fontaudio)
* [fontaudio.css](https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.css)
* [fontaudio.ttf](https://github.com/fefanto/fontaudio/blob/master/font/fontaudio.ttf)
### Codicons
### Codicons [ CI ]
* [microsoft.github.io/vscode-codicons/dist/codicon](https://microsoft.github.io/vscode-codicons/dist/codicon.html)
* [github.com/microsoft/vscode-codicons](https://github.com/microsoft/vscode-codicons)
* [codicon.css](https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.css)
* [codicon.ttf](https://github.com/microsoft/vscode-codicons/blob/main/dist/codicon.ttf)
* [codicon.css](https://microsoft.github.io/vscode-codicons/dist/codicon.css)
* [codicon.ttf](https://microsoft.github.io/vscode-codicons/dist/codicon.ttf)
### Ionicons and webfont Material Design Icons
### Lucide [ LC ]
* [lucide.dev](https://lucide.dev)
* [github.com/lucide-icons/lucide](https://github.com/lucide-icons/lucide)
* [lucide.css](https://unpkg.com/lucide-static@latest/font/lucide.css)
* [lucide.ttf](https://unpkg.com/lucide-static@latest/font/lucide.ttf)
### Ionicons
* Unsupported as of 29 Apr 2020. See [Issue #16](https://github.com/juliettef/IconFontCppHeaders/issues/16).
### Notes about Font Awesome 5 and 6
#### Codepoints grouping
Font Awesome 5 and 6 split the different styles of icons into different font files with identical codepoints for *light*, *regular* and *solid* styles, and a different set of codepoints for *brands*. We have put the brands into a separate header file.
#### Generating Pro header files (Font Awesome 5)
Download the Font Awesome Pro Web package from [fontawesome.com](https://fontawesome.com). To generate the headers, drop *icons.yml* in the same directory as *GenerateIconFontCppHeaders.py* before running the script. The file *icons.yml* is under *..\fontawesome-pro-n.n.n-web\metadata\icons.yml* where *n.n.n* is the version number.
Download the Font Awesome Pro Web package from [fontawesome.com](https://fontawesome.com). To generate the headers, drop `icons.yml` in the same directory as `GenerateIconFontCppHeaders.py` before running the script. The file `icons.yml` is under `..\fontawesome-pro-n.n.n-web\metadata\icons.yml` where `n.n.n` is the version number.
Icon files:
* ..\fontawesome-pro-n.n.n-web\metadata\icons.yml
* ..\fontawesome-pro-n.n.n-web\webfonts\fa-brands-400.ttf
* ..\fontawesome-pro-n.n.n-web\webfonts\fa-light-300.ttf
* ..\fontawesome-pro-n.n.n-web\webfonts\fa-regular-400.ttf
* ..\fontawesome-pro-n.n.n-web\webfonts\fa-solid-900.ttf
* `..\fontawesome-pro-n.n.n-web\metadata\icons.yml`
* `..\fontawesome-pro-n.n.n-web\webfonts\fa-brands-400.ttf`
* `..\fontawesome-pro-n.n.n-web\webfonts\fa-light-300.ttf`
* `..\fontawesome-pro-n.n.n-web\webfonts\fa-regular-400.ttf`
* `..\fontawesome-pro-n.n.n-web\webfonts\fa-solid-900.ttf`
## Example Code
@ -163,12 +184,25 @@ Transistor level 6502 Hardware Simulation
[floooh.github.io/visual6502remix](https://floooh.github.io/visual6502remix)
[github.com/floooh/v6502r](https://github.com/floooh/v6502r)
### Games
- [Avatar: Frontiers of Pandora](https://www.mobygames.com/game/213552/avatar-frontiers-of-pandora/)
- [Avoyd](https://www.avoyd.com)
- [Wonder Boy: The Dragon's Trap](https://www.mobygames.com/game/87084/wonder-boy-the-dragons-trap/)
## Related Tools
### ImGuiFontStudio
Create font subsets
[github.com/aiekick/ImGuiFontStudio](https://github.com/aiekick/ImGuiFontStudio)
## Contributing
Thanks to everyone who has contributed to IconFontCppHeaders so far. In order to make things easier please bear in mind the following:
- I regularly update the repository. If you urgently need an update and can't run the generator yourself, raise an issue specifying the icon set(s) you need updated.
- Don't submit PRs for updating the defines (the output of the generator).
- Before submitting a PR, please raise an issue describing the problem or the enhancement you suggest. If you're able, propose an implementation.
- If you use IconFontCppHeaders and would like your project to be featured on this page, raise an issue or email me at juliette@enkisoftware.com.
## Credits
Development - [Juliette Foucaut](http://www.enkisoftware.com/about.html#juliette) - [@juliettef](https://github.com/juliettef)
@ -186,3 +220,5 @@ Python language implementation - Hang Yu - [@yhyu13](https://github.com/yhyu13)
Go language implementation - Matt Pharr - [@mpp](https://github.com/mmp)
Codicons implementation - Robert Ryan - [@rtryan98](https://github.com/rtryan98)
Rust language implementation - Gaeel Bradshaw-Rodriguez - [@Bradshaw](https://github.com/Bradshaw)
Pictogrammers Material Design icons implementation - Bobby Anguelov - [@BobbyAnguelov](https://github.com/BobbyAnguelov)
Lucide icons implementation - Lucide Contributors - [@lucide-icons](https://github.com/lucide-icons/lucide#credits)

View file

@ -156,7 +156,7 @@ void RendererBackend::LoopFunction() {
SDL_SetRenderDrawColor(rend, (Uint8)(clear_color.x * clear_color.w * 255), (Uint8)(clear_color.y * clear_color.w * 255), (Uint8)(clear_color.z * clear_color.w * 255), (Uint8)(clear_color.w * 255));
SDL_RenderClear(rend);
// Tell ImGui to render.
ImGui_ImplSDLRenderer2_RenderDrawData(ImGui::GetDrawData());
ImGui_ImplSDLRenderer2_RenderDrawData(ImGui::GetDrawData(), rend);
// Swap the buffers, and do VSync if enabled.

View file

@ -1,10 +1,2 @@
#pragma once
#include <vector>
#include <cstring>
#include <string>
// Modified from Dear ImGui
std::vector<unsigned char> DecodeBase85(const char *src);
// May not be needed now, but could be useful in the future.
static inline std::vector<unsigned char> DecodeBase85(const std::string src) {
return DecodeBase85(src.c_str());
}
#include "../../../base85.h"

@ -1 +1 @@
Subproject commit 1db579d458da29fa43376af9d88d486910d9406a
Subproject commit bc77cccd311da97e1f9af67899cb707edaf9c830

View file

@ -152,7 +152,7 @@ void MainLoop::GuiFunction() {
FileLoaded();
}
bool lengthKnown = length > 0.0;
auto dockid = ImGui::DockSpaceOverViewport(nullptr, ImGuiDockNodeFlags_PassthruCentralNode|ImGuiDockNodeFlags_AutoHideTabBar);
auto dockid = ImGui::DockSpaceOverViewport(0, nullptr, ImGuiDockNodeFlags_PassthruCentralNode|ImGuiDockNodeFlags_AutoHideTabBar);
// 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!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);

View file

@ -6,16 +6,15 @@ static unsigned int DecodeBase85Byte(char c) {
}
vector<unsigned char> DecodeBase85(const char *src) {
vector<unsigned char> dst_vec;
dst_vec.reserve((strlen(src) / 5) * 4);
dst_vec.resize(((strlen(src) + 4) / 5) * 4);
unsigned char *dst = dst_vec.data();
size_t dst_size = 0;
while (*src)
{
dst_vec.resize(dst_size);
unsigned int tmp = DecodeBase85Byte(src[0]) + 85 * (DecodeBase85Byte(src[1]) + 85 * (DecodeBase85Byte(src[2]) + 85 * (DecodeBase85Byte(src[3]) + 85 * DecodeBase85Byte(src[4]))));
dst[0] = ((tmp >> 0) & 0xFF); dst[1] = ((tmp >> 8) & 0xFF); dst[2] = ((tmp >> 16) & 0xFF); dst[3] = ((tmp >> 24) & 0xFF); // We can't assume little-endianness.
src += 5;
dst = dst_vec.data() + dst_size;
dst += 4;
dst_size += 4;
}
dst_vec.resize(dst_size);

10
base85.h Normal file
View file

@ -0,0 +1,10 @@
#pragma once
#include <vector>
#include <cstring>
#include <string>
// Modified from Dear ImGui
std::vector<unsigned char> DecodeBase85(const char *src);
// May not be needed now, but could be useful in the future.
static inline std::vector<unsigned char> DecodeBase85(const std::string src) {
return DecodeBase85(src.c_str());
}

5
cmake/FindThreads.cmake Normal file
View file

@ -0,0 +1,5 @@
if (NOT TARGET Threads::Threads)
add_library(Threads::Threads IMPORTED INTERFACE)
add_library(atomic IMPORTED INTERFACE)
endif()

20
download-modules.sh Executable file
View file

@ -0,0 +1,20 @@
git config -f .gitmodules --get-regexp '^submodule\..*\.path$' |
while read -r KEY MODULE_PATH; do
[ -d "${MODULE_PATH}" ] && rm -rf "${MODULE_PATH}"
NAME="$(echo "${KEY}" | sed 's/^submodule\.\(.*\)\.path$/\1/')"
url_key="$(echo "${KEY}" | sed 's/\.path$/.url/')"
branch_key="$(echo "${KEY}" | sed 's/\.path$/.branch/')"
required_key="$(echo "${KEY}" | sed 's/\.path$/.required/')"
commit_key="$(echo "${KEY}" | sed 's/\.path$/.commit/')"
URL="$(git config -f .gitmodules --get "${url_key}")"
BRANCH="$(git config -f .gitmodules --default "$(git config -f .gitmodules --get "${branch_key}")" --get "${commit_key}")"
REQUIRED="$(git config -f .gitmodules --get "${required_key}")"
if [ -n "$BRANCH" ]; then
BRANCH=( "-b" "${BRANCH}" )
else
BRANCH=( )
fi
if [ ! "$REQUIRED" = "false" ]; then
git clone ${BRANCH[@]} --recursive --depth 1 -- "${URL}" "${MODULE_PATH}" || continue
fi
done

0
dummy.c Normal file
View file

View file

@ -2,21 +2,19 @@
#include <filesystem>
#include <string.h>
File::File(const char *fname) {
open(fname);
File::File() {
}
size_t File::get_len() {
return len;
}
CFile::CFile(const char *fname) : File(fname) {
open(fname);
CFile::CFile() : File() {
}
void CFile::open(const char *fname) {
name = fname;
file = fopen(fname, "rb");
if (file == NULL) {
return;
throw std::exception();
}
fseek(file, 0, SEEK_END);
len = ftell(file);
@ -31,32 +29,110 @@ size_t CFile::read(void *ptr, size_t size, size_t len) {
if (file == NULL) return 0;
return fread(ptr, size, len, file);
}
void CFile::seek(size_t pos, SeekType seek_type) {
void CFile::seek(int64_t pos, SeekType seek_type) {
int whence;
switch (seek_type) {
case SeekType::SET: {
whence = SEEK_SET;
if (pos < 0) throw std::exception();
} break;
case SeekType::CUR: {
whence = SEEK_CUR;
if (get_pos() + pos < 0) throw std::exception();
} break;
case SeekType::END: {
whence = SEEK_END;
if (((int64_t)get_len()) + pos < 0) throw std::exception();
} break;
}
if (file == NULL) return;
if (file == NULL) throw std::exception();
fseek(file, pos, whence);
}
size_t CFile::get_pos() {
int64_t CFile::get_pos() {
if (file == NULL) return 0;
return ftell(file);
}
bool CFile::is_open() {
return file != NULL;
}
MemFile::MemFile() {
ptr = NULL;
len = 0;
}
void MemFile::open(const char *path) {
CFile file;
file.open(path);
this->name = strdup(file.name);
this->ptr = malloc(file.get_len());
this->len = file.read(this->ptr, 1, file.get_len());
file.close();
this->pos = 0;
}
void MemFile::close() {
free(this->ptr);
free((void*)this->name);
this->ptr = NULL;
this->name = NULL;
this->len = 0;
this->pos = 0;
}
size_t MemFile::read(void *ptr, size_t size, size_t len) {
if (this->ptr == NULL) {
ERROR.writeln("Attempt to read invalid memfile");
return 0;
}
if (size == 0) return 0;
if (len == 0) return 0;
uint8_t *ptr8 = (uint8_t*)ptr;
uint8_t *myptr8 = (uint8_t*)this->ptr;
size_t i;
size_t maxbytes = size * len;
size_t validbytes = std::min(maxbytes, (size_t)std::max((int64_t)this->len - (int64_t)this->pos, (int64_t)0));
size_t remainder = maxbytes - validbytes;
memcpy(ptr8, myptr8 + this->pos, validbytes);
if (this->pos < this->len) {
if (remainder > 0) {
seek(0, SeekType::END);
} else {
seek(maxbytes, SeekType::CUR);
}
}
return validbytes / size;
}
int64_t MemFile::get_pos() {
return pos;
}
bool MemFile::is_open() {
return ptr != NULL;
}
size_t MemFile::get_len() {
return len;
}
void MemFile::seek(int64_t pos, SeekType seek_type) {
int64_t new_pos = this->pos;
switch (seek_type) {
case SeekType::CUR: {
new_pos += pos;
} break;
case SeekType::END: {
new_pos = this->len + pos;
} break;
case SeekType::SET: {
new_pos = pos;
} break;
}
if (new_pos < 0) throw std::exception();
this->pos = new_pos;
}
size_t rwops_read(SDL_RWops *rwops, void *ptr, size_t size, size_t maxnum) {
File *file = (File*)rwops->hidden.unknown.data1;
return file->read(ptr, size, maxnum);
int64_t oldpos = file->get_pos();
try {
return file->read(ptr, size, maxnum);
} catch (std::exception) {
return (file->get_pos() - oldpos) / size;
}
}
int rwops_close(SDL_RWops *rwops) {
File *file = (File*)rwops->hidden.unknown.data1;
@ -77,12 +153,17 @@ Sint64 rwops_seek(SDL_RWops *rwops, Sint64 offset, int whence) {
} break;
}
File *file = (File*)rwops->hidden.unknown.data1;
file->seek((size_t)offset, type);
return file->get_pos();
if (type == SeekType::CUR && offset == 0) return file->get_pos();
try {
file->seek((int64_t)offset, type);
} catch (std::exception) {
return -1;
}
return (Sint64)file->get_pos();
}
Sint64 rwops_size(SDL_RWops *rwops) {
FILE_TYPE *file = (FILE_TYPE*)rwops->hidden.unknown.data1;
return file->get_len();
return (Sint64)file->get_len();
}
SDL_RWops *get_sdl_file(File *file) {
SDL_RWops *rwops = new SDL_RWops();
@ -139,5 +220,7 @@ STREAMFILE *get_sf_from_file(File *file) {
return &sf->vt;
}
File *open_file(const char *name) {
return new FILE_TYPE(name);
auto output = new FILE_TYPE();
output->open(name);
return output;
}

View file

@ -2,12 +2,17 @@
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <optional>
#include <stddef.h>
#include <string.h>
#include <map>
#include <stdlib.h>
#include <SDL.h>
#include <vector>
extern "C" {
#include <vgmstream.h>
}
#include "log.hpp"
enum class SeekType {
SET,
CUR,
@ -16,15 +21,16 @@ enum class SeekType {
class File {
protected:
size_t len;
int64_t pos;
public:
const char *name;
File(const char *fname);
File();
inline virtual void open(const char *fname) { name = fname; }
inline virtual void close() { }
virtual size_t read(void *ptr, size_t size, size_t len) = 0;
virtual void seek(size_t pos, SeekType seek_type) = 0;
virtual void seek(int64_t pos, SeekType seek_type) = 0;
virtual size_t get_len();
virtual size_t get_pos() = 0;
virtual int64_t get_pos() = 0;
inline virtual bool is_open() {
return false;
}
@ -36,43 +42,57 @@ class CFile : public File {
protected:
FILE *file;
public:
CFile(const char *fname);
CFile();
void open(const char *fname) override;
void close() override;
size_t read(void *ptr, size_t size, size_t len) override;
void seek(size_t pos, SeekType seek_type) override;
size_t get_pos() override;
void seek(int64_t pos, SeekType seek_type) override;
int64_t get_pos() override;
bool is_open() override;
};
class MemFile : public File {
void *ptr;
size_t len;
int64_t pos;
public:
MemFile();
void open(const char *path) override;
void close() override;
size_t read(void *ptr, size_t size, size_t len) override;
void seek(int64_t pos, SeekType seek_type) override;
int64_t get_pos() override;
bool is_open() override;
size_t get_len() override;
};
class HttpFile : public File {
std::vector<uint8_t> data;
public:
HttpFile(const char *url);
HttpFile();
void open(const char *url) override;
void close() override;
size_t read(void *ptr, size_t size, size_t len) override;
void seek(size_t pos, SeekType type) override;
size_t get_pos();
bool is_open();
void seek(int64_t pos, SeekType type) override;
int64_t get_pos() override;
bool is_open() override;
};
#ifdef __ANDROID__
class AndroidFile : public File {
protected:
void *handle;
public:
AndroidFile(const char *fname);
AndroidFile();
void open(const char *fname) override;
void close() override;
size_t read(void *ptr, size_t size, size_t len) override;
void seek(size_t pos, SeekType seek_type) override;
size_t get_pos() override;
void seek(int64_t pos, SeekType seek_type) override;
int64_t get_pos() override;
bool is_open() override;
}
};
#endif
#ifdef __ANDROID__
#define FILE_TYPE AndroidFile
#else
#define FILE_TYPE CFile
#define FILE_TYPE MemFile
#endif
STREAMFILE *get_sf_from_file(File *file);
SDL_RWops *get_sdl_file(File *file);

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