diff options
48 files changed, 2505 insertions, 174 deletions
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_print_metal_visitor.cpp b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_print_metal_visitor.cpp index f9988a31f61..9f7071d9564 100644 --- a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_print_metal_visitor.cpp +++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_print_metal_visitor.cpp @@ -1020,7 +1020,17 @@ void ir_print_metal_visitor::visit(ir_expression *ir) const bool halfCast = (arg_prec == glsl_precision_medium || arg_prec == glsl_precision_low); buffer.asprintf_append (halfCast ? "((half)1.0/(" : "(1.0/("); } else { - buffer.asprintf_append ("%s(", operator_glsl_strs[ir->operation]); + switch(ir->operation) { + case ir_unop_dFdy: + case ir_unop_dFdy_coarse: + case ir_unop_dFdy_fine: + buffer.asprintf_append ("%s(-", operator_glsl_strs[ir->operation]); + break; + + default: + buffer.asprintf_append ("%s(", operator_glsl_strs[ir->operation]); + break; + } } if (ir->operands[0]) ir->operands[0]->accept(this); diff --git a/3rdparty/bgfx/3rdparty/iconfontheaders/.gitignore b/3rdparty/bgfx/3rdparty/iconfontheaders/.gitignore new file mode 100644 index 00000000000..31b83a9bc9a --- /dev/null +++ b/3rdparty/bgfx/3rdparty/iconfontheaders/.gitignore @@ -0,0 +1,58 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ +.idea/ diff --git a/3rdparty/bgfx/3rdparty/iconfontheaders/GenerateIconFontCppHeaders.py b/3rdparty/bgfx/3rdparty/iconfontheaders/GenerateIconFontCppHeaders.py new file mode 100644 index 00000000000..09eae5c4566 --- /dev/null +++ b/3rdparty/bgfx/3rdparty/iconfontheaders/GenerateIconFontCppHeaders.py @@ -0,0 +1,183 @@ +#!/usr/bin/python +# Convert Font Awesome, Google Material Design and Kenney Game icon font +# parameters to C++11 and C89 compatible formats. +# +#------------------------------------------------------------------------------ +# 1 - Source material +# +# 1.1 - Font Awesome - https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml +# 1.2 - Material Design - https://raw.githubusercontent.com/google/material-design-icons/master/iconfont/codepoints +# 1.3 - Kenney icons - https://raw.githubusercontent.com/SamBrishes/kenney-icon-font/master/css/kenney-icons.css +# +#------------------------------------------------------------------------------ +# 2 - Data samples +# +# 2.1 - Font Awesome +# - input: - name: Music +# id: music +# unicode: f001 +# created: 1.0 +# filter: +# - note +# - sound +# categories: +# - Web Application Icons +# - output C++11: #define ICON_FA_MUSIC u8"\uf001" +# - output C89: #define ICON_FA_MUSIC "\xEF\x80\x81" +# +# 2.2 - Google Material Design icons +# - input: 3d_rotation e84d +# - output C++11: #define ICON_MD_3D_ROTATION u8"\ue84d" +# - output C89: #define ICON_MD_3D_ROTATION "\xEE\xA1\x8D" +# +# 2.3 - Kenney Game icons +# - input: .ki-home:before{ content: "\e900"; } +# - output C++11: #define ICON_KI_HOME u8"\ue900" +# - output C89: #define ICON_KI_HOME "\xEE\xA4\x80" +# +# 2.4 - All fonts +# - computed min and max unicode fonts ICON_MIN and ICON_MAX +# - output: #define ICON_MIN_FA 0xf000 +# #define ICON_MAX_FA 0xf295 +# +#------------------------------------------------------------------------------ +# 3 - Script dependencies +# +# 3.1 - Python 2.7 - https://www.python.org/download/releases/2.7/ +# 3.2 - Requests - http://docs.python-requests.org/ +# 3.3 - PyYAML - http://pyyaml.org/ +# +#------------------------------------------------------------------------------ + + +import requests +import yaml + + +LINE_FORMAT_MINMAX = '#define ICON_{!s}_{!s} 0x{!s}\n' + +UNICODE_MIN = 'ffff' +UNICODE_MAX = '0' +TIMEOUT = 2 + +MESSAGE_SUCCESS = '{!s} fonts - conversion success: {!s}' +MESSAGE_ERROR = '{!s} fonts - error \n\t{!s}' + + +def get_prelude( url ): + prelude = '// Generated by GenerateIconFontCppHeaders.py \n// from {!s}\n#pragma once\n\n'.format( url ) + return prelude + + +def line_format( font_abbr, font, unicode, cpp11 = True ): + if cpp11: + result = '#define ICON_{!s}_{!s} u8"\u{!s}"\n'.format( font_abbr, font, unicode ) + else: + unicode_base = ''.join([ '{0:x}'.format( ord( x )) for x in unichr( int( unicode, 16 )).encode( 'utf-8' )]).upper() + unicode = '\\x' + unicode_base[ :2 ] + '\\x' + unicode_base[ 2:4 ] + '\\x' + unicode_base[ 4: ] + result = '#define ICON_{!s}_{!s} "{!s}"\n'.format( font_abbr, font, unicode ) + return result + + +def convert_font_awesome( font_name, font_abbr, source_url, output_file, cpp11 ): + try: + response = requests.get( source_url, timeout = TIMEOUT ) + if response.status_code == 200: + input = yaml.safe_load( response.content ) + min = UNICODE_MIN + max = UNICODE_MAX + output_fonts = '' + for item in input[ 'icons' ]: + font = '' + for char in item[ 'id' ]: + font += '_' if ( char == '-' ) else str.upper( char ) + unicode = item[ 'unicode' ] + if unicode < min: + min = unicode + elif unicode >= max: + max = unicode + output_fonts += line_format( font_abbr, font, unicode, cpp11 ) + output = get_prelude( source_url ) + \ + LINE_FORMAT_MINMAX.format( 'MIN', font_abbr, min ) + \ + LINE_FORMAT_MINMAX.format( 'MAX', font_abbr, max ) + \ + output_fonts + with open( output_file, 'w' ) as f: + f.write( output ) + print( MESSAGE_SUCCESS.format( font_name, output_file )) + except Exception as e: + print( MESSAGE_ERROR.format( font_name, e )) + + +def convert_material_design( font_name, font_abbr, source_url, output_file, cpp11 ): + try: + response = requests.get( source_url, timeout = TIMEOUT ) + if response.status_code == 200: + input = str.split( response.content, '\n' ) + min = UNICODE_MIN + max = UNICODE_MAX + output_fonts = '' + for line in input: + words = str.split( line ) + if words: + font = '' + for char in words[ 0 ]: + font += '_' if ( char == '-' ) else str.upper( char ) + unicode = words[ 1 ] + if unicode < min: + min = unicode + elif unicode >= max: + max = unicode + output_fonts += line_format( font_abbr, font, unicode, cpp11 ) + output = get_prelude( source_url ) + \ + LINE_FORMAT_MINMAX.format( 'MIN', font_abbr, min ) + \ + LINE_FORMAT_MINMAX.format( 'MAX', font_abbr, max ) + \ + output_fonts + with open( output_file, 'w' ) as f: + f.write( output ) + print( MESSAGE_SUCCESS.format( font_name, output_file )) + except Exception as e: + print( MESSAGE_ERROR.format( font_name, e )) + + +def convert_kenney( font_name, font_abbr, source_url, output_file, cpp11 ): + try: + response = requests.get( source_url, timeout = TIMEOUT ) + if response.status_code == 200: + input = str.split( response.content, '\n' ) + min = UNICODE_MIN + max = UNICODE_MAX + output_fonts = '' + font_begin= '.ki-' + font_end = ':before' + unicode_begin = '"\\' + unicode_end = '";' + for line in input: + words = str.split( line ) + if words: + if font_begin in words[ 0 ]: + font = '' + word = words[ 0 ][( words[ 0 ].find( font_begin ) + len( font_begin )) : ( words[ 0 ].find( font_end ))] + for char in word: + font += '_' if ( char == '-' ) else str.upper( char ) + unicode = str( words[ 2 ][( words[ 2 ].find( unicode_begin ) + len( unicode_begin )) : words[ 2 ].find( unicode_end )]) + if unicode < min: + min = unicode + elif unicode >= max: + max = unicode + output_fonts += line_format( font_abbr, font, unicode, cpp11 ) + output = get_prelude( source_url ) + \ + LINE_FORMAT_MINMAX.format( 'MIN', font_abbr, min ) + \ + LINE_FORMAT_MINMAX.format( 'MAX', font_abbr, max ) + \ + output_fonts + with open( output_file, 'w' ) as f: + f.write( output ) + print( MESSAGE_SUCCESS.format( font_name, output_file )) + except Exception as e: + print( MESSAGE_ERROR.format( font_name, e )) + + +# Main + +convert_font_awesome( 'Font Awesome', 'FA', 'https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml', 'icons_font_awesome.h', False ) +convert_material_design( 'Material Design', 'MD', 'https://raw.githubusercontent.com/google/material-design-icons/master/iconfont/codepoints', 'icons_material_design.h', False ) +convert_kenney( 'Kenney', 'KI', 'https://raw.githubusercontent.com/SamBrishes/kenney-icon-font/master/css/kenney-icons.css', 'icons_kenney.h', False ) diff --git a/3rdparty/bgfx/3rdparty/iconfontheaders/LICENSE b/3rdparty/bgfx/3rdparty/iconfontheaders/LICENSE new file mode 100644 index 00000000000..f54b795b715 --- /dev/null +++ b/3rdparty/bgfx/3rdparty/iconfontheaders/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Juliette Foucaut + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/3rdparty/bgfx/3rdparty/iconfontheaders/README.md b/3rdparty/bgfx/3rdparty/iconfontheaders/README.md new file mode 100644 index 00000000000..2170dee402f --- /dev/null +++ b/3rdparty/bgfx/3rdparty/iconfontheaders/README.md @@ -0,0 +1,29 @@ +# IconFontCHeaders +C++11 and C89 headers for icon fonts Font Awesome, Google Material Design icons and Kenney game icons. + +A set of header files for using icon fonts in C and C++, 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 and max code points for font loading purposes. + +## Fonts + +* [Font Awesome](http://fortawesome.github.io/Font-Awesome/) - [github repository](https://github.com/FortAwesome/Font-Awesome/) +* [Google Material Design icons](https://design.google.com/icons/) - [github repository](https://github.com/google/material-design-icons/) +* [Kenney Game icons](http://kenney.nl/assets/game-icons) and [Game icons expansion](http://kenney.nl/assets/game-icons-expansion) - [github repository](https://github.com/SamBrishes/kenney-icon-font) + +## Usage + +Using [dear imgui](https://github.com/ocornut/imgui) as an example UI library: + + #include "IconsFontAwesome.h" + + ImGuiIO& io = ImGui::GetIO(); + io.Fonts->AddFontDefault(); + + // merge in icons from Font Awesome + static const ImWchar icons_ranges[] = { ICON_MIN_FA, ICON_MAX_FA, 0 }; + ImFontConfig icons_config; icons_config.MergeMode = true; icons_config.PixelSnapH = true; + io.Fonts->AddFontFromFileTTF( fontFile.c_str(), 16.0f, &icons_config, icons_ranges); + + // in an imgui window somewhere... + ImGui::Text( ICON_FA_FILE " File" ); // use string literal concatenation, ouputs a file icon and File as a string. diff --git a/3rdparty/bgfx/3rdparty/iconfontheaders/icons_font_awesome.h b/3rdparty/bgfx/3rdparty/iconfontheaders/icons_font_awesome.h new file mode 100644 index 00000000000..346358f0044 --- /dev/null +++ b/3rdparty/bgfx/3rdparty/iconfontheaders/icons_font_awesome.h @@ -0,0 +1,611 @@ +// Generated by GenerateIconFontCppHeaders.py +// from https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml +#pragma once + +#define ICON_MIN_FA 0xf000 +#define ICON_MAX_FA 0xf295 +#define ICON_FA_GLASS "\xEF\x80\x80" +#define ICON_FA_MUSIC "\xEF\x80\x81" +#define ICON_FA_SEARCH "\xEF\x80\x82" +#define ICON_FA_ENVELOPE_O "\xEF\x80\x83" +#define ICON_FA_HEART "\xEF\x80\x84" +#define ICON_FA_STAR "\xEF\x80\x85" +#define ICON_FA_STAR_O "\xEF\x80\x86" +#define ICON_FA_USER "\xEF\x80\x87" +#define ICON_FA_FILM "\xEF\x80\x88" +#define ICON_FA_TH_LARGE "\xEF\x80\x89" +#define ICON_FA_TH "\xEF\x80\x8A" +#define ICON_FA_TH_LIST "\xEF\x80\x8B" +#define ICON_FA_CHECK "\xEF\x80\x8C" +#define ICON_FA_TIMES "\xEF\x80\x8D" +#define ICON_FA_SEARCH_PLUS "\xEF\x80\x8E" +#define ICON_FA_SEARCH_MINUS "\xEF\x80\x90" +#define ICON_FA_POWER_OFF "\xEF\x80\x91" +#define ICON_FA_SIGNAL "\xEF\x80\x92" +#define ICON_FA_COG "\xEF\x80\x93" +#define ICON_FA_TRASH_O "\xEF\x80\x94" +#define ICON_FA_HOME "\xEF\x80\x95" +#define ICON_FA_FILE_O "\xEF\x80\x96" +#define ICON_FA_CLOCK_O "\xEF\x80\x97" +#define ICON_FA_ROAD "\xEF\x80\x98" +#define ICON_FA_DOWNLOAD "\xEF\x80\x99" +#define ICON_FA_ARROW_CIRCLE_O_DOWN "\xEF\x80\x9A" +#define ICON_FA_ARROW_CIRCLE_O_UP "\xEF\x80\x9B" +#define ICON_FA_INBOX "\xEF\x80\x9C" +#define ICON_FA_PLAY_CIRCLE_O "\xEF\x80\x9D" +#define ICON_FA_REPEAT "\xEF\x80\x9E" +#define ICON_FA_REFRESH "\xEF\x80\xA1" +#define ICON_FA_LIST_ALT "\xEF\x80\xA2" +#define ICON_FA_LOCK "\xEF\x80\xA3" +#define ICON_FA_FLAG "\xEF\x80\xA4" +#define ICON_FA_HEADPHONES "\xEF\x80\xA5" +#define ICON_FA_VOLUME_OFF "\xEF\x80\xA6" +#define ICON_FA_VOLUME_DOWN "\xEF\x80\xA7" +#define ICON_FA_VOLUME_UP "\xEF\x80\xA8" +#define ICON_FA_QRCODE "\xEF\x80\xA9" +#define ICON_FA_BARCODE "\xEF\x80\xAA" +#define ICON_FA_TAG "\xEF\x80\xAB" +#define ICON_FA_TAGS "\xEF\x80\xAC" +#define ICON_FA_BOOK "\xEF\x80\xAD" +#define ICON_FA_BOOKMARK "\xEF\x80\xAE" +#define ICON_FA_PRINT "\xEF\x80\xAF" +#define ICON_FA_CAMERA "\xEF\x80\xB0" +#define ICON_FA_FONT "\xEF\x80\xB1" +#define ICON_FA_BOLD "\xEF\x80\xB2" +#define ICON_FA_ITALIC "\xEF\x80\xB3" +#define ICON_FA_TEXT_HEIGHT "\xEF\x80\xB4" +#define ICON_FA_TEXT_WIDTH "\xEF\x80\xB5" +#define ICON_FA_ALIGN_LEFT "\xEF\x80\xB6" +#define ICON_FA_ALIGN_CENTER "\xEF\x80\xB7" +#define ICON_FA_ALIGN_RIGHT "\xEF\x80\xB8" +#define ICON_FA_ALIGN_JUSTIFY "\xEF\x80\xB9" +#define ICON_FA_LIST "\xEF\x80\xBA" +#define ICON_FA_OUTDENT "\xEF\x80\xBB" +#define ICON_FA_INDENT "\xEF\x80\xBC" +#define ICON_FA_VIDEO_CAMERA "\xEF\x80\xBD" +#define ICON_FA_PICTURE_O "\xEF\x80\xBE" +#define ICON_FA_PENCIL "\xEF\x81\x80" +#define ICON_FA_MAP_MARKER "\xEF\x81\x81" +#define ICON_FA_ADJUST "\xEF\x81\x82" +#define ICON_FA_TINT "\xEF\x81\x83" +#define ICON_FA_PENCIL_SQUARE_O "\xEF\x81\x84" +#define ICON_FA_SHARE_SQUARE_O "\xEF\x81\x85" +#define ICON_FA_CHECK_SQUARE_O "\xEF\x81\x86" +#define ICON_FA_ARROWS "\xEF\x81\x87" +#define ICON_FA_STEP_BACKWARD "\xEF\x81\x88" +#define ICON_FA_FAST_BACKWARD "\xEF\x81\x89" +#define ICON_FA_BACKWARD "\xEF\x81\x8A" +#define ICON_FA_PLAY "\xEF\x81\x8B" +#define ICON_FA_PAUSE "\xEF\x81\x8C" +#define ICON_FA_STOP "\xEF\x81\x8D" +#define ICON_FA_FORWARD "\xEF\x81\x8E" +#define ICON_FA_FAST_FORWARD "\xEF\x81\x90" +#define ICON_FA_STEP_FORWARD "\xEF\x81\x91" +#define ICON_FA_EJECT "\xEF\x81\x92" +#define ICON_FA_CHEVRON_LEFT "\xEF\x81\x93" +#define ICON_FA_CHEVRON_RIGHT "\xEF\x81\x94" +#define ICON_FA_PLUS_CIRCLE "\xEF\x81\x95" +#define ICON_FA_MINUS_CIRCLE "\xEF\x81\x96" +#define ICON_FA_TIMES_CIRCLE "\xEF\x81\x97" +#define ICON_FA_CHECK_CIRCLE "\xEF\x81\x98" +#define ICON_FA_QUESTION_CIRCLE "\xEF\x81\x99" +#define ICON_FA_INFO_CIRCLE "\xEF\x81\x9A" +#define ICON_FA_CROSSHAIRS "\xEF\x81\x9B" +#define ICON_FA_TIMES_CIRCLE_O "\xEF\x81\x9C" +#define ICON_FA_CHECK_CIRCLE_O "\xEF\x81\x9D" +#define ICON_FA_BAN "\xEF\x81\x9E" +#define ICON_FA_ARROW_LEFT "\xEF\x81\xA0" +#define ICON_FA_ARROW_RIGHT "\xEF\x81\xA1" +#define ICON_FA_ARROW_UP "\xEF\x81\xA2" +#define ICON_FA_ARROW_DOWN "\xEF\x81\xA3" +#define ICON_FA_SHARE "\xEF\x81\xA4" +#define ICON_FA_EXPAND "\xEF\x81\xA5" +#define ICON_FA_COMPRESS "\xEF\x81\xA6" +#define ICON_FA_PLUS "\xEF\x81\xA7" +#define ICON_FA_MINUS "\xEF\x81\xA8" +#define ICON_FA_ASTERISK "\xEF\x81\xA9" +#define ICON_FA_EXCLAMATION_CIRCLE "\xEF\x81\xAA" +#define ICON_FA_GIFT "\xEF\x81\xAB" +#define ICON_FA_LEAF "\xEF\x81\xAC" +#define ICON_FA_FIRE "\xEF\x81\xAD" +#define ICON_FA_EYE "\xEF\x81\xAE" +#define ICON_FA_EYE_SLASH "\xEF\x81\xB0" +#define ICON_FA_EXCLAMATION_TRIANGLE "\xEF\x81\xB1" +#define ICON_FA_PLANE "\xEF\x81\xB2" +#define ICON_FA_CALENDAR "\xEF\x81\xB3" +#define ICON_FA_RANDOM "\xEF\x81\xB4" +#define ICON_FA_COMMENT "\xEF\x81\xB5" +#define ICON_FA_MAGNET "\xEF\x81\xB6" +#define ICON_FA_CHEVRON_UP "\xEF\x81\xB7" +#define ICON_FA_CHEVRON_DOWN "\xEF\x81\xB8" +#define ICON_FA_RETWEET "\xEF\x81\xB9" +#define ICON_FA_SHOPPING_CART "\xEF\x81\xBA" +#define ICON_FA_FOLDER "\xEF\x81\xBB" +#define ICON_FA_FOLDER_OPEN "\xEF\x81\xBC" +#define ICON_FA_ARROWS_V "\xEF\x81\xBD" +#define ICON_FA_ARROWS_H "\xEF\x81\xBE" +#define ICON_FA_BAR_CHART "\xEF\x82\x80" +#define ICON_FA_TWITTER_SQUARE "\xEF\x82\x81" +#define ICON_FA_FACEBOOK_SQUARE "\xEF\x82\x82" +#define ICON_FA_CAMERA_RETRO "\xEF\x82\x83" +#define ICON_FA_KEY "\xEF\x82\x84" +#define ICON_FA_COGS "\xEF\x82\x85" +#define ICON_FA_COMMENTS "\xEF\x82\x86" +#define ICON_FA_THUMBS_O_UP "\xEF\x82\x87" +#define ICON_FA_THUMBS_O_DOWN "\xEF\x82\x88" +#define ICON_FA_STAR_HALF "\xEF\x82\x89" +#define ICON_FA_HEART_O "\xEF\x82\x8A" +#define ICON_FA_SIGN_OUT "\xEF\x82\x8B" +#define ICON_FA_LINKEDIN_SQUARE "\xEF\x82\x8C" +#define ICON_FA_THUMB_TACK "\xEF\x82\x8D" +#define ICON_FA_EXTERNAL_LINK "\xEF\x82\x8E" +#define ICON_FA_SIGN_IN "\xEF\x82\x90" +#define ICON_FA_TROPHY "\xEF\x82\x91" +#define ICON_FA_GITHUB_SQUARE "\xEF\x82\x92" +#define ICON_FA_UPLOAD "\xEF\x82\x93" +#define ICON_FA_LEMON_O "\xEF\x82\x94" +#define ICON_FA_PHONE "\xEF\x82\x95" +#define ICON_FA_SQUARE_O "\xEF\x82\x96" +#define ICON_FA_BOOKMARK_O "\xEF\x82\x97" +#define ICON_FA_PHONE_SQUARE "\xEF\x82\x98" +#define ICON_FA_TWITTER "\xEF\x82\x99" +#define ICON_FA_FACEBOOK "\xEF\x82\x9A" +#define ICON_FA_GITHUB "\xEF\x82\x9B" +#define ICON_FA_UNLOCK "\xEF\x82\x9C" +#define ICON_FA_CREDIT_CARD "\xEF\x82\x9D" +#define ICON_FA_RSS "\xEF\x82\x9E" +#define ICON_FA_HDD_O "\xEF\x82\xA0" +#define ICON_FA_BULLHORN "\xEF\x82\xA1" +#define ICON_FA_BELL "\xEF\x83\xB3" +#define ICON_FA_CERTIFICATE "\xEF\x82\xA3" +#define ICON_FA_HAND_O_RIGHT "\xEF\x82\xA4" +#define ICON_FA_HAND_O_LEFT "\xEF\x82\xA5" +#define ICON_FA_HAND_O_UP "\xEF\x82\xA6" +#define ICON_FA_HAND_O_DOWN "\xEF\x82\xA7" +#define ICON_FA_ARROW_CIRCLE_LEFT "\xEF\x82\xA8" +#define ICON_FA_ARROW_CIRCLE_RIGHT "\xEF\x82\xA9" +#define ICON_FA_ARROW_CIRCLE_UP "\xEF\x82\xAA" +#define ICON_FA_ARROW_CIRCLE_DOWN "\xEF\x82\xAB" +#define ICON_FA_GLOBE "\xEF\x82\xAC" +#define ICON_FA_WRENCH "\xEF\x82\xAD" +#define ICON_FA_TASKS "\xEF\x82\xAE" +#define ICON_FA_FILTER "\xEF\x82\xB0" +#define ICON_FA_BRIEFCASE "\xEF\x82\xB1" +#define ICON_FA_ARROWS_ALT "\xEF\x82\xB2" +#define ICON_FA_USERS "\xEF\x83\x80" +#define ICON_FA_LINK "\xEF\x83\x81" +#define ICON_FA_CLOUD "\xEF\x83\x82" +#define ICON_FA_FLASK "\xEF\x83\x83" +#define ICON_FA_SCISSORS "\xEF\x83\x84" +#define ICON_FA_FILES_O "\xEF\x83\x85" +#define ICON_FA_PAPERCLIP "\xEF\x83\x86" +#define ICON_FA_FLOPPY_O "\xEF\x83\x87" +#define ICON_FA_SQUARE "\xEF\x83\x88" +#define ICON_FA_BARS "\xEF\x83\x89" +#define ICON_FA_LIST_UL "\xEF\x83\x8A" +#define ICON_FA_LIST_OL "\xEF\x83\x8B" +#define ICON_FA_STRIKETHROUGH "\xEF\x83\x8C" +#define ICON_FA_UNDERLINE "\xEF\x83\x8D" +#define ICON_FA_TABLE "\xEF\x83\x8E" +#define ICON_FA_MAGIC "\xEF\x83\x90" +#define ICON_FA_TRUCK "\xEF\x83\x91" +#define ICON_FA_PINTEREST "\xEF\x83\x92" +#define ICON_FA_PINTEREST_SQUARE "\xEF\x83\x93" +#define ICON_FA_GOOGLE_PLUS_SQUARE "\xEF\x83\x94" +#define ICON_FA_GOOGLE_PLUS "\xEF\x83\x95" +#define ICON_FA_MONEY "\xEF\x83\x96" +#define ICON_FA_CARET_DOWN "\xEF\x83\x97" +#define ICON_FA_CARET_UP "\xEF\x83\x98" +#define ICON_FA_CARET_LEFT "\xEF\x83\x99" +#define ICON_FA_CARET_RIGHT "\xEF\x83\x9A" +#define ICON_FA_COLUMNS "\xEF\x83\x9B" +#define ICON_FA_SORT "\xEF\x83\x9C" +#define ICON_FA_SORT_DESC "\xEF\x83\x9D" +#define ICON_FA_SORT_ASC "\xEF\x83\x9E" +#define ICON_FA_ENVELOPE "\xEF\x83\xA0" +#define ICON_FA_LINKEDIN "\xEF\x83\xA1" +#define ICON_FA_UNDO "\xEF\x83\xA2" +#define ICON_FA_GAVEL "\xEF\x83\xA3" +#define ICON_FA_TACHOMETER "\xEF\x83\xA4" +#define ICON_FA_COMMENT_O "\xEF\x83\xA5" +#define ICON_FA_COMMENTS_O "\xEF\x83\xA6" +#define ICON_FA_BOLT "\xEF\x83\xA7" +#define ICON_FA_SITEMAP "\xEF\x83\xA8" +#define ICON_FA_UMBRELLA "\xEF\x83\xA9" +#define ICON_FA_CLIPBOARD "\xEF\x83\xAA" +#define ICON_FA_LIGHTBULB_O "\xEF\x83\xAB" +#define ICON_FA_EXCHANGE "\xEF\x83\xAC" +#define ICON_FA_CLOUD_DOWNLOAD "\xEF\x83\xAD" +#define ICON_FA_CLOUD_UPLOAD "\xEF\x83\xAE" +#define ICON_FA_USER_MD "\xEF\x83\xB0" +#define ICON_FA_STETHOSCOPE "\xEF\x83\xB1" +#define ICON_FA_SUITCASE "\xEF\x83\xB2" +#define ICON_FA_BELL_O "\xEF\x82\xA2" +#define ICON_FA_COFFEE "\xEF\x83\xB4" +#define ICON_FA_CUTLERY "\xEF\x83\xB5" +#define ICON_FA_FILE_TEXT_O "\xEF\x83\xB6" +#define ICON_FA_BUILDING_O "\xEF\x83\xB7" +#define ICON_FA_HOSPITAL_O "\xEF\x83\xB8" +#define ICON_FA_AMBULANCE "\xEF\x83\xB9" +#define ICON_FA_MEDKIT "\xEF\x83\xBA" +#define ICON_FA_FIGHTER_JET "\xEF\x83\xBB" +#define ICON_FA_BEER "\xEF\x83\xBC" +#define ICON_FA_H_SQUARE "\xEF\x83\xBD" +#define ICON_FA_PLUS_SQUARE "\xEF\x83\xBE" +#define ICON_FA_ANGLE_DOUBLE_LEFT "\xEF\x84\x80" +#define ICON_FA_ANGLE_DOUBLE_RIGHT "\xEF\x84\x81" +#define ICON_FA_ANGLE_DOUBLE_UP "\xEF\x84\x82" +#define ICON_FA_ANGLE_DOUBLE_DOWN "\xEF\x84\x83" +#define ICON_FA_ANGLE_LEFT "\xEF\x84\x84" +#define ICON_FA_ANGLE_RIGHT "\xEF\x84\x85" +#define ICON_FA_ANGLE_UP "\xEF\x84\x86" +#define ICON_FA_ANGLE_DOWN "\xEF\x84\x87" +#define ICON_FA_DESKTOP "\xEF\x84\x88" +#define ICON_FA_LAPTOP "\xEF\x84\x89" +#define ICON_FA_TABLET "\xEF\x84\x8A" +#define ICON_FA_MOBILE "\xEF\x84\x8B" +#define ICON_FA_CIRCLE_O "\xEF\x84\x8C" +#define ICON_FA_QUOTE_LEFT "\xEF\x84\x8D" +#define ICON_FA_QUOTE_RIGHT "\xEF\x84\x8E" +#define ICON_FA_SPINNER "\xEF\x84\x90" +#define ICON_FA_CIRCLE "\xEF\x84\x91" +#define ICON_FA_REPLY "\xEF\x84\x92" +#define ICON_FA_GITHUB_ALT "\xEF\x84\x93" +#define ICON_FA_FOLDER_O "\xEF\x84\x94" +#define ICON_FA_FOLDER_OPEN_O "\xEF\x84\x95" +#define ICON_FA_SMILE_O "\xEF\x84\x98" +#define ICON_FA_FROWN_O "\xEF\x84\x99" +#define ICON_FA_MEH_O "\xEF\x84\x9A" +#define ICON_FA_GAMEPAD "\xEF\x84\x9B" +#define ICON_FA_KEYBOARD_O "\xEF\x84\x9C" +#define ICON_FA_FLAG_O "\xEF\x84\x9D" +#define ICON_FA_FLAG_CHECKERED "\xEF\x84\x9E" +#define ICON_FA_TERMINAL "\xEF\x84\xA0" +#define ICON_FA_CODE "\xEF\x84\xA1" +#define ICON_FA_REPLY_ALL "\xEF\x84\xA2" +#define ICON_FA_STAR_HALF_O "\xEF\x84\xA3" +#define ICON_FA_LOCATION_ARROW "\xEF\x84\xA4" +#define ICON_FA_CROP "\xEF\x84\xA5" +#define ICON_FA_CODE_FORK "\xEF\x84\xA6" +#define ICON_FA_CHAIN_BROKEN "\xEF\x84\xA7" +#define ICON_FA_QUESTION "\xEF\x84\xA8" +#define ICON_FA_INFO "\xEF\x84\xA9" +#define ICON_FA_EXCLAMATION "\xEF\x84\xAA" +#define ICON_FA_SUPERSCRIPT "\xEF\x84\xAB" +#define ICON_FA_SUBSCRIPT "\xEF\x84\xAC" +#define ICON_FA_ERASER "\xEF\x84\xAD" +#define ICON_FA_PUZZLE_PIECE "\xEF\x84\xAE" +#define ICON_FA_MICROPHONE "\xEF\x84\xB0" +#define ICON_FA_MICROPHONE_SLASH "\xEF\x84\xB1" +#define ICON_FA_SHIELD "\xEF\x84\xB2" +#define ICON_FA_CALENDAR_O "\xEF\x84\xB3" +#define ICON_FA_FIRE_EXTINGUISHER "\xEF\x84\xB4" +#define ICON_FA_ROCKET "\xEF\x84\xB5" +#define ICON_FA_MAXCDN "\xEF\x84\xB6" +#define ICON_FA_CHEVRON_CIRCLE_LEFT "\xEF\x84\xB7" +#define ICON_FA_CHEVRON_CIRCLE_RIGHT "\xEF\x84\xB8" +#define ICON_FA_CHEVRON_CIRCLE_UP "\xEF\x84\xB9" +#define ICON_FA_CHEVRON_CIRCLE_DOWN "\xEF\x84\xBA" +#define ICON_FA_HTML5 "\xEF\x84\xBB" +#define ICON_FA_CSS3 "\xEF\x84\xBC" +#define ICON_FA_ANCHOR "\xEF\x84\xBD" +#define ICON_FA_UNLOCK_ALT "\xEF\x84\xBE" +#define ICON_FA_BULLSEYE "\xEF\x85\x80" +#define ICON_FA_ELLIPSIS_H "\xEF\x85\x81" +#define ICON_FA_ELLIPSIS_V "\xEF\x85\x82" +#define ICON_FA_RSS_SQUARE "\xEF\x85\x83" +#define ICON_FA_PLAY_CIRCLE "\xEF\x85\x84" +#define ICON_FA_TICKET "\xEF\x85\x85" +#define ICON_FA_MINUS_SQUARE "\xEF\x85\x86" +#define ICON_FA_MINUS_SQUARE_O "\xEF\x85\x87" +#define ICON_FA_LEVEL_UP "\xEF\x85\x88" +#define ICON_FA_LEVEL_DOWN "\xEF\x85\x89" +#define ICON_FA_CHECK_SQUARE "\xEF\x85\x8A" +#define ICON_FA_PENCIL_SQUARE "\xEF\x85\x8B" +#define ICON_FA_EXTERNAL_LINK_SQUARE "\xEF\x85\x8C" +#define ICON_FA_SHARE_SQUARE "\xEF\x85\x8D" +#define ICON_FA_COMPASS "\xEF\x85\x8E" +#define ICON_FA_CARET_SQUARE_O_DOWN "\xEF\x85\x90" +#define ICON_FA_CARET_SQUARE_O_UP "\xEF\x85\x91" +#define ICON_FA_CARET_SQUARE_O_RIGHT "\xEF\x85\x92" +#define ICON_FA_EUR "\xEF\x85\x93" +#define ICON_FA_GBP "\xEF\x85\x94" +#define ICON_FA_USD "\xEF\x85\x95" +#define ICON_FA_INR "\xEF\x85\x96" +#define ICON_FA_JPY "\xEF\x85\x97" +#define ICON_FA_RUB "\xEF\x85\x98" +#define ICON_FA_KRW "\xEF\x85\x99" +#define ICON_FA_BTC "\xEF\x85\x9A" +#define ICON_FA_FILE "\xEF\x85\x9B" +#define ICON_FA_FILE_TEXT "\xEF\x85\x9C" +#define ICON_FA_SORT_ALPHA_ASC "\xEF\x85\x9D" +#define ICON_FA_SORT_ALPHA_DESC "\xEF\x85\x9E" +#define ICON_FA_SORT_AMOUNT_ASC "\xEF\x85\xA0" +#define ICON_FA_SORT_AMOUNT_DESC "\xEF\x85\xA1" +#define ICON_FA_SORT_NUMERIC_ASC "\xEF\x85\xA2" +#define ICON_FA_SORT_NUMERIC_DESC "\xEF\x85\xA3" +#define ICON_FA_THUMBS_UP "\xEF\x85\xA4" +#define ICON_FA_THUMBS_DOWN "\xEF\x85\xA5" +#define ICON_FA_YOUTUBE_SQUARE "\xEF\x85\xA6" +#define ICON_FA_YOUTUBE "\xEF\x85\xA7" +#define ICON_FA_XING "\xEF\x85\xA8" +#define ICON_FA_XING_SQUARE "\xEF\x85\xA9" +#define ICON_FA_YOUTUBE_PLAY "\xEF\x85\xAA" +#define ICON_FA_DROPBOX "\xEF\x85\xAB" +#define ICON_FA_STACK_OVERFLOW "\xEF\x85\xAC" +#define ICON_FA_INSTAGRAM "\xEF\x85\xAD" +#define ICON_FA_FLICKR "\xEF\x85\xAE" +#define ICON_FA_ADN "\xEF\x85\xB0" +#define ICON_FA_BITBUCKET "\xEF\x85\xB1" +#define ICON_FA_BITBUCKET_SQUARE "\xEF\x85\xB2" +#define ICON_FA_TUMBLR "\xEF\x85\xB3" +#define ICON_FA_TUMBLR_SQUARE "\xEF\x85\xB4" +#define ICON_FA_LONG_ARROW_DOWN "\xEF\x85\xB5" +#define ICON_FA_LONG_ARROW_UP "\xEF\x85\xB6" +#define ICON_FA_LONG_ARROW_LEFT "\xEF\x85\xB7" +#define ICON_FA_LONG_ARROW_RIGHT "\xEF\x85\xB8" +#define ICON_FA_APPLE "\xEF\x85\xB9" +#define ICON_FA_WINDOWS "\xEF\x85\xBA" +#define ICON_FA_ANDROID "\xEF\x85\xBB" +#define ICON_FA_LINUX "\xEF\x85\xBC" +#define ICON_FA_DRIBBBLE "\xEF\x85\xBD" +#define ICON_FA_SKYPE "\xEF\x85\xBE" +#define ICON_FA_FOURSQUARE "\xEF\x86\x80" +#define ICON_FA_TRELLO "\xEF\x86\x81" +#define ICON_FA_FEMALE "\xEF\x86\x82" +#define ICON_FA_MALE "\xEF\x86\x83" +#define ICON_FA_GRATIPAY "\xEF\x86\x84" +#define ICON_FA_SUN_O "\xEF\x86\x85" +#define ICON_FA_MOON_O "\xEF\x86\x86" +#define ICON_FA_ARCHIVE "\xEF\x86\x87" +#define ICON_FA_BUG "\xEF\x86\x88" +#define ICON_FA_VK "\xEF\x86\x89" +#define ICON_FA_WEIBO "\xEF\x86\x8A" +#define ICON_FA_RENREN "\xEF\x86\x8B" +#define ICON_FA_PAGELINES "\xEF\x86\x8C" +#define ICON_FA_STACK_EXCHANGE "\xEF\x86\x8D" +#define ICON_FA_ARROW_CIRCLE_O_RIGHT "\xEF\x86\x8E" +#define ICON_FA_ARROW_CIRCLE_O_LEFT "\xEF\x86\x90" +#define ICON_FA_CARET_SQUARE_O_LEFT "\xEF\x86\x91" +#define ICON_FA_DOT_CIRCLE_O "\xEF\x86\x92" +#define ICON_FA_WHEELCHAIR "\xEF\x86\x93" +#define ICON_FA_VIMEO_SQUARE "\xEF\x86\x94" +#define ICON_FA_TRY "\xEF\x86\x95" +#define ICON_FA_PLUS_SQUARE_O "\xEF\x86\x96" +#define ICON_FA_SPACE_SHUTTLE "\xEF\x86\x97" +#define ICON_FA_SLACK "\xEF\x86\x98" +#define ICON_FA_ENVELOPE_SQUARE "\xEF\x86\x99" +#define ICON_FA_WORDPRESS "\xEF\x86\x9A" +#define ICON_FA_OPENID "\xEF\x86\x9B" +#define ICON_FA_UNIVERSITY "\xEF\x86\x9C" +#define ICON_FA_GRADUATION_CAP "\xEF\x86\x9D" +#define ICON_FA_YAHOO "\xEF\x86\x9E" +#define ICON_FA_GOOGLE "\xEF\x86\xA0" +#define ICON_FA_REDDIT "\xEF\x86\xA1" +#define ICON_FA_REDDIT_SQUARE "\xEF\x86\xA2" +#define ICON_FA_STUMBLEUPON_CIRCLE "\xEF\x86\xA3" +#define ICON_FA_STUMBLEUPON "\xEF\x86\xA4" +#define ICON_FA_DELICIOUS "\xEF\x86\xA5" +#define ICON_FA_DIGG "\xEF\x86\xA6" +#define ICON_FA_PIED_PIPER "\xEF\x86\xA7" +#define ICON_FA_PIED_PIPER_ALT "\xEF\x86\xA8" +#define ICON_FA_DRUPAL "\xEF\x86\xA9" +#define ICON_FA_JOOMLA "\xEF\x86\xAA" +#define ICON_FA_LANGUAGE "\xEF\x86\xAB" +#define ICON_FA_FAX "\xEF\x86\xAC" +#define ICON_FA_BUILDING "\xEF\x86\xAD" +#define ICON_FA_CHILD "\xEF\x86\xAE" +#define ICON_FA_PAW "\xEF\x86\xB0" +#define ICON_FA_SPOON "\xEF\x86\xB1" +#define ICON_FA_CUBE "\xEF\x86\xB2" +#define ICON_FA_CUBES "\xEF\x86\xB3" +#define ICON_FA_BEHANCE "\xEF\x86\xB4" +#define ICON_FA_BEHANCE_SQUARE "\xEF\x86\xB5" +#define ICON_FA_STEAM "\xEF\x86\xB6" +#define ICON_FA_STEAM_SQUARE "\xEF\x86\xB7" +#define ICON_FA_RECYCLE "\xEF\x86\xB8" +#define ICON_FA_CAR "\xEF\x86\xB9" +#define ICON_FA_TAXI "\xEF\x86\xBA" +#define ICON_FA_TREE "\xEF\x86\xBB" +#define ICON_FA_SPOTIFY "\xEF\x86\xBC" +#define ICON_FA_DEVIANTART "\xEF\x86\xBD" +#define ICON_FA_SOUNDCLOUD "\xEF\x86\xBE" +#define ICON_FA_DATABASE "\xEF\x87\x80" +#define ICON_FA_FILE_PDF_O "\xEF\x87\x81" +#define ICON_FA_FILE_WORD_O "\xEF\x87\x82" +#define ICON_FA_FILE_EXCEL_O "\xEF\x87\x83" +#define ICON_FA_FILE_POWERPOINT_O "\xEF\x87\x84" +#define ICON_FA_FILE_IMAGE_O "\xEF\x87\x85" +#define ICON_FA_FILE_ARCHIVE_O "\xEF\x87\x86" +#define ICON_FA_FILE_AUDIO_O "\xEF\x87\x87" +#define ICON_FA_FILE_VIDEO_O "\xEF\x87\x88" +#define ICON_FA_FILE_CODE_O "\xEF\x87\x89" +#define ICON_FA_VINE "\xEF\x87\x8A" +#define ICON_FA_CODEPEN "\xEF\x87\x8B" +#define ICON_FA_JSFIDDLE "\xEF\x87\x8C" +#define ICON_FA_LIFE_RING "\xEF\x87\x8D" +#define ICON_FA_CIRCLE_O_NOTCH "\xEF\x87\x8E" +#define ICON_FA_REBEL "\xEF\x87\x90" +#define ICON_FA_EMPIRE "\xEF\x87\x91" +#define ICON_FA_GIT_SQUARE "\xEF\x87\x92" +#define ICON_FA_GIT "\xEF\x87\x93" +#define ICON_FA_HACKER_NEWS "\xEF\x87\x94" +#define ICON_FA_TENCENT_WEIBO "\xEF\x87\x95" +#define ICON_FA_QQ "\xEF\x87\x96" +#define ICON_FA_WEIXIN "\xEF\x87\x97" +#define ICON_FA_PAPER_PLANE "\xEF\x87\x98" +#define ICON_FA_PAPER_PLANE_O "\xEF\x87\x99" +#define ICON_FA_HISTORY "\xEF\x87\x9A" +#define ICON_FA_CIRCLE_THIN "\xEF\x87\x9B" +#define ICON_FA_HEADER "\xEF\x87\x9C" +#define ICON_FA_PARAGRAPH "\xEF\x87\x9D" +#define ICON_FA_SLIDERS "\xEF\x87\x9E" +#define ICON_FA_SHARE_ALT "\xEF\x87\xA0" +#define ICON_FA_SHARE_ALT_SQUARE "\xEF\x87\xA1" +#define ICON_FA_BOMB "\xEF\x87\xA2" +#define ICON_FA_FUTBOL_O "\xEF\x87\xA3" +#define ICON_FA_TTY "\xEF\x87\xA4" +#define ICON_FA_BINOCULARS "\xEF\x87\xA5" +#define ICON_FA_PLUG "\xEF\x87\xA6" +#define ICON_FA_SLIDESHARE "\xEF\x87\xA7" +#define ICON_FA_TWITCH "\xEF\x87\xA8" +#define ICON_FA_YELP "\xEF\x87\xA9" +#define ICON_FA_NEWSPAPER_O "\xEF\x87\xAA" +#define ICON_FA_WIFI "\xEF\x87\xAB" +#define ICON_FA_CALCULATOR "\xEF\x87\xAC" +#define ICON_FA_PAYPAL "\xEF\x87\xAD" +#define ICON_FA_GOOGLE_WALLET "\xEF\x87\xAE" +#define ICON_FA_CC_VISA "\xEF\x87\xB0" +#define ICON_FA_CC_MASTERCARD "\xEF\x87\xB1" +#define ICON_FA_CC_DISCOVER "\xEF\x87\xB2" +#define ICON_FA_CC_AMEX "\xEF\x87\xB3" +#define ICON_FA_CC_PAYPAL "\xEF\x87\xB4" +#define ICON_FA_CC_STRIPE "\xEF\x87\xB5" +#define ICON_FA_BELL_SLASH "\xEF\x87\xB6" +#define ICON_FA_BELL_SLASH_O "\xEF\x87\xB7" +#define ICON_FA_TRASH "\xEF\x87\xB8" +#define ICON_FA_COPYRIGHT "\xEF\x87\xB9" +#define ICON_FA_AT "\xEF\x87\xBA" +#define ICON_FA_EYEDROPPER "\xEF\x87\xBB" +#define ICON_FA_PAINT_BRUSH "\xEF\x87\xBC" +#define ICON_FA_BIRTHDAY_CAKE "\xEF\x87\xBD" +#define ICON_FA_AREA_CHART "\xEF\x87\xBE" +#define ICON_FA_PIE_CHART "\xEF\x88\x80" +#define ICON_FA_LINE_CHART "\xEF\x88\x81" +#define ICON_FA_LASTFM "\xEF\x88\x82" +#define ICON_FA_LASTFM_SQUARE "\xEF\x88\x83" +#define ICON_FA_TOGGLE_OFF "\xEF\x88\x84" +#define ICON_FA_TOGGLE_ON "\xEF\x88\x85" +#define ICON_FA_BICYCLE "\xEF\x88\x86" +#define ICON_FA_BUS "\xEF\x88\x87" +#define ICON_FA_IOXHOST "\xEF\x88\x88" +#define ICON_FA_ANGELLIST "\xEF\x88\x89" +#define ICON_FA_CC "\xEF\x88\x8A" +#define ICON_FA_ILS "\xEF\x88\x8B" +#define ICON_FA_MEANPATH "\xEF\x88\x8C" +#define ICON_FA_BUYSELLADS "\xEF\x88\x8D" +#define ICON_FA_CONNECTDEVELOP "\xEF\x88\x8E" +#define ICON_FA_DASHCUBE "\xEF\x88\x90" +#define ICON_FA_FORUMBEE "\xEF\x88\x91" +#define ICON_FA_LEANPUB "\xEF\x88\x92" +#define ICON_FA_SELLSY "\xEF\x88\x93" +#define ICON_FA_SHIRTSINBULK "\xEF\x88\x94" +#define ICON_FA_SIMPLYBUILT "\xEF\x88\x95" +#define ICON_FA_SKYATLAS "\xEF\x88\x96" +#define ICON_FA_CART_PLUS "\xEF\x88\x97" +#define ICON_FA_CART_ARROW_DOWN "\xEF\x88\x98" +#define ICON_FA_DIAMOND "\xEF\x88\x99" +#define ICON_FA_SHIP "\xEF\x88\x9A" +#define ICON_FA_USER_SECRET "\xEF\x88\x9B" +#define ICON_FA_MOTORCYCLE "\xEF\x88\x9C" +#define ICON_FA_STREET_VIEW "\xEF\x88\x9D" +#define ICON_FA_HEARTBEAT "\xEF\x88\x9E" +#define ICON_FA_VENUS "\xEF\x88\xA1" +#define ICON_FA_MARS "\xEF\x88\xA2" +#define ICON_FA_MERCURY "\xEF\x88\xA3" +#define ICON_FA_TRANSGENDER "\xEF\x88\xA4" +#define ICON_FA_TRANSGENDER_ALT "\xEF\x88\xA5" +#define ICON_FA_VENUS_DOUBLE "\xEF\x88\xA6" +#define ICON_FA_MARS_DOUBLE "\xEF\x88\xA7" +#define ICON_FA_VENUS_MARS "\xEF\x88\xA8" +#define ICON_FA_MARS_STROKE "\xEF\x88\xA9" +#define ICON_FA_MARS_STROKE_V "\xEF\x88\xAA" +#define ICON_FA_MARS_STROKE_H "\xEF\x88\xAB" +#define ICON_FA_NEUTER "\xEF\x88\xAC" +#define ICON_FA_GENDERLESS "\xEF\x88\xAD" +#define ICON_FA_FACEBOOK_OFFICIAL "\xEF\x88\xB0" +#define ICON_FA_PINTEREST_P "\xEF\x88\xB1" +#define ICON_FA_WHATSAPP "\xEF\x88\xB2" +#define ICON_FA_SERVER "\xEF\x88\xB3" +#define ICON_FA_USER_PLUS "\xEF\x88\xB4" +#define ICON_FA_USER_TIMES "\xEF\x88\xB5" +#define ICON_FA_BED "\xEF\x88\xB6" +#define ICON_FA_VIACOIN "\xEF\x88\xB7" +#define ICON_FA_TRAIN "\xEF\x88\xB8" +#define ICON_FA_SUBWAY "\xEF\x88\xB9" +#define ICON_FA_MEDIUM "\xEF\x88\xBA" +#define ICON_FA_Y_COMBINATOR "\xEF\x88\xBB" +#define ICON_FA_OPTIN_MONSTER "\xEF\x88\xBC" +#define ICON_FA_OPENCART "\xEF\x88\xBD" +#define ICON_FA_EXPEDITEDSSL "\xEF\x88\xBE" +#define ICON_FA_BATTERY_FULL "\xEF\x89\x80" +#define ICON_FA_BATTERY_THREE_QUARTERS "\xEF\x89\x81" +#define ICON_FA_BATTERY_HALF "\xEF\x89\x82" +#define ICON_FA_BATTERY_QUARTER "\xEF\x89\x83" +#define ICON_FA_BATTERY_EMPTY "\xEF\x89\x84" +#define ICON_FA_MOUSE_POINTER "\xEF\x89\x85" +#define ICON_FA_I_CURSOR "\xEF\x89\x86" +#define ICON_FA_OBJECT_GROUP "\xEF\x89\x87" +#define ICON_FA_OBJECT_UNGROUP "\xEF\x89\x88" +#define ICON_FA_STICKY_NOTE "\xEF\x89\x89" +#define ICON_FA_STICKY_NOTE_O "\xEF\x89\x8A" +#define ICON_FA_CC_JCB "\xEF\x89\x8B" +#define ICON_FA_CC_DINERS_CLUB "\xEF\x89\x8C" +#define ICON_FA_CLONE "\xEF\x89\x8D" +#define ICON_FA_BALANCE_SCALE "\xEF\x89\x8E" +#define ICON_FA_HOURGLASS_O "\xEF\x89\x90" +#define ICON_FA_HOURGLASS_START "\xEF\x89\x91" +#define ICON_FA_HOURGLASS_HALF "\xEF\x89\x92" +#define ICON_FA_HOURGLASS_END "\xEF\x89\x93" +#define ICON_FA_HOURGLASS "\xEF\x89\x94" +#define ICON_FA_HAND_ROCK_O "\xEF\x89\x95" +#define ICON_FA_HAND_PAPER_O "\xEF\x89\x96" +#define ICON_FA_HAND_SCISSORS_O "\xEF\x89\x97" +#define ICON_FA_HAND_LIZARD_O "\xEF\x89\x98" +#define ICON_FA_HAND_SPOCK_O "\xEF\x89\x99" +#define ICON_FA_HAND_POINTER_O "\xEF\x89\x9A" +#define ICON_FA_HAND_PEACE_O "\xEF\x89\x9B" +#define ICON_FA_TRADEMARK "\xEF\x89\x9C" +#define ICON_FA_REGISTERED "\xEF\x89\x9D" +#define ICON_FA_CREATIVE_COMMONS "\xEF\x89\x9E" +#define ICON_FA_GG "\xEF\x89\xA0" +#define ICON_FA_GG_CIRCLE "\xEF\x89\xA1" +#define ICON_FA_TRIPADVISOR "\xEF\x89\xA2" +#define ICON_FA_ODNOKLASSNIKI "\xEF\x89\xA3" +#define ICON_FA_ODNOKLASSNIKI_SQUARE "\xEF\x89\xA4" +#define ICON_FA_GET_POCKET "\xEF\x89\xA5" +#define ICON_FA_WIKIPEDIA_W "\xEF\x89\xA6" +#define ICON_FA_SAFARI "\xEF\x89\xA7" +#define ICON_FA_CHROME "\xEF\x89\xA8" +#define ICON_FA_FIREFOX "\xEF\x89\xA9" +#define ICON_FA_OPERA "\xEF\x89\xAA" +#define ICON_FA_INTERNET_EXPLORER "\xEF\x89\xAB" +#define ICON_FA_TELEVISION "\xEF\x89\xAC" +#define ICON_FA_CONTAO "\xEF\x89\xAD" +#define ICON_FA_500PX "\xEF\x89\xAE" +#define ICON_FA_AMAZON "\xEF\x89\xB0" +#define ICON_FA_CALENDAR_PLUS_O "\xEF\x89\xB1" +#define ICON_FA_CALENDAR_MINUS_O "\xEF\x89\xB2" +#define ICON_FA_CALENDAR_TIMES_O "\xEF\x89\xB3" +#define ICON_FA_CALENDAR_CHECK_O "\xEF\x89\xB4" +#define ICON_FA_INDUSTRY "\xEF\x89\xB5" +#define ICON_FA_MAP_PIN "\xEF\x89\xB6" +#define ICON_FA_MAP_SIGNS "\xEF\x89\xB7" +#define ICON_FA_MAP_O "\xEF\x89\xB8" +#define ICON_FA_MAP "\xEF\x89\xB9" +#define ICON_FA_COMMENTING "\xEF\x89\xBA" +#define ICON_FA_COMMENTING_O "\xEF\x89\xBB" +#define ICON_FA_HOUZZ "\xEF\x89\xBC" +#define ICON_FA_VIMEO "\xEF\x89\xBD" +#define ICON_FA_BLACK_TIE "\xEF\x89\xBE" +#define ICON_FA_FONTICONS "\xEF\x8A\x80" +#define ICON_FA_REDDIT_ALIEN "\xEF\x8A\x81" +#define ICON_FA_EDGE "\xEF\x8A\x82" +#define ICON_FA_CREDIT_CARD_ALT "\xEF\x8A\x83" +#define ICON_FA_CODIEPIE "\xEF\x8A\x84" +#define ICON_FA_MODX "\xEF\x8A\x85" +#define ICON_FA_FORT_AWESOME "\xEF\x8A\x86" +#define ICON_FA_USB "\xEF\x8A\x87" +#define ICON_FA_PRODUCT_HUNT "\xEF\x8A\x88" +#define ICON_FA_MIXCLOUD "\xEF\x8A\x89" +#define ICON_FA_SCRIBD "\xEF\x8A\x8A" +#define ICON_FA_PAUSE_CIRCLE "\xEF\x8A\x8B" +#define ICON_FA_PAUSE_CIRCLE_O "\xEF\x8A\x8C" +#define ICON_FA_STOP_CIRCLE "\xEF\x8A\x8D" +#define ICON_FA_STOP_CIRCLE_O "\xEF\x8A\x8E" +#define ICON_FA_SHOPPING_BAG "\xEF\x8A\x90" +#define ICON_FA_SHOPPING_BASKET "\xEF\x8A\x91" +#define ICON_FA_HASHTAG "\xEF\x8A\x92" +#define ICON_FA_BLUETOOTH "\xEF\x8A\x93" +#define ICON_FA_BLUETOOTH_B "\xEF\x8A\x94" +#define ICON_FA_PERCENT "\xEF\x8A\x95" diff --git a/3rdparty/bgfx/3rdparty/iconfontheaders/icons_kenney.h b/3rdparty/bgfx/3rdparty/iconfontheaders/icons_kenney.h new file mode 100644 index 00000000000..dbbcb48d904 --- /dev/null +++ b/3rdparty/bgfx/3rdparty/iconfontheaders/icons_kenney.h @@ -0,0 +1,234 @@ +// Generated by GenerateIconFontCppHeaders.py +// from https://raw.githubusercontent.com/SamBrishes/kenney-icon-font/master/css/kenney-icons.css +#pragma once + +#define ICON_MIN_KI 0xe900 +#define ICON_MAX_KI 0xe9e3 +#define ICON_KI_HOME "\xEE\xA4\x80" +#define ICON_KI_ADJUST "\xEE\xA4\x81" +#define ICON_KI_WRENCH "\xEE\xA4\x82" +#define ICON_KI_COG "\xEE\xA4\x83" +#define ICON_KI_OFF "\xEE\xA4\x84" +#define ICON_KI_EXPAND "\xEE\xA4\x85" +#define ICON_KI_REDUCE "\xEE\xA4\x86" +#define ICON_KI_MOVIE "\xEE\xA4\x87" +#define ICON_KI_FLAP "\xEE\xA4\x88" +#define ICON_KI_SHOPPING_CART "\xEE\xA4\x89" +#define ICON_KI_SHOPPING_CASE "\xEE\xA4\x8A" +#define ICON_KI_EXTERNAL "\xEE\xA4\x8B" +#define ICON_KI_NETWORK "\xEE\xA4\x8C" +#define ICON_KI_CHECK "\xEE\xA4\x8D" +#define ICON_KI_TIMES "\xEE\xA4\x8E" +#define ICON_KI_TIMES_CIRCLE "\xEE\xA4\x8F" +#define ICON_KI_PLUS "\xEE\xA4\x90" +#define ICON_KI_PLUS_CIRCLE "\xEE\xA4\x91" +#define ICON_KI_MINUS "\xEE\xA4\x92" +#define ICON_KI_MINUS_CIRCLE "\xEE\xA4\x93" +#define ICON_KI_INFO "\xEE\xA4\x94" +#define ICON_KI_INFO_CIRCLE "\xEE\xA4\x95" +#define ICON_KI_QUESTION "\xEE\xA4\x96" +#define ICON_KI_QUESTION_CIRCLE "\xEE\xA4\x97" +#define ICON_KI_EXLAMATION "\xEE\xA4\x98" +#define ICON_KI_EXCLAMATION_CIRCLE "\xEE\xA4\x99" +#define ICON_KI_EXCLAMATION_TRIANGLE "\xEE\xA4\x9A" +#define ICON_KI_PAINT_BRUSH "\xEE\xA4\x9B" +#define ICON_KI_PENCIL "\xEE\xA4\x9C" +#define ICON_KI_CHECKBOX "\xEE\xA4\x9D" +#define ICON_KI_CHECKBOX_CHECKED "\xEE\xA4\x9E" +#define ICON_KI_RADIO "\xEE\xA4\x9F" +#define ICON_KI_RADIO_CHECKED "\xEE\xA4\xA0" +#define ICON_KI_SORT_VERTICAL "\xEE\xA4\xA1" +#define ICON_KI_SORT_HORIZONTAL "\xEE\xA4\xA2" +#define ICON_KI_GRID "\xEE\xA4\xA3" +#define ICON_KI_LIST "\xEE\xA4\xA4" +#define ICON_KI_ROWS "\xEE\xA4\xA5" +#define ICON_KI_CELLS "\xEE\xA4\xA6" +#define ICON_KI_SIGNAL_LOW "\xEE\xA4\xA7" +#define ICON_KI_SIGNAL_MEDIUM "\xEE\xA4\xA8" +#define ICON_KI_SIGNAL_HIGH "\xEE\xA4\xA9" +#define ICON_KI_TRASH "\xEE\xA4\xAA" +#define ICON_KI_TRASH_ALT "\xEE\xA4\xAB" +#define ICON_KI_RELOAD_INVERSE "\xEE\xA4\xAC" +#define ICON_KI_RELOAD "\xEE\xA4\xAD" +#define ICON_KI_TOP "\xEE\xA4\xAE" +#define ICON_KI_BOTTOM "\xEE\xA4\xAF" +#define ICON_KI_UPLOAD "\xEE\xA4\xB0" +#define ICON_KI_DOWNLOAD "\xEE\xA4\xB1" +#define ICON_KI_CLOUD "\xEE\xA4\xB2" +#define ICON_KI_CLOUD_UPLOAD "\xEE\xA4\xB3" +#define ICON_KI_CLOUD_DOWNLOAD "\xEE\xA4\xB4" +#define ICON_KI_SEARCH "\xEE\xA4\xB5" +#define ICON_KI_SEARCH_PLUS "\xEE\xA4\xB6" +#define ICON_KI_SEARCH_MINUS "\xEE\xA4\xB7" +#define ICON_KI_SEARCH_EQUAL "\xEE\xA4\xB8" +#define ICON_KI_LOCK "\xEE\xA4\xB9" +#define ICON_KI_UNLOCK "\xEE\xA4\xBA" +#define ICON_KI_USER "\xEE\xA4\xBB" +#define ICON_KI_USERS "\xEE\xA4\xBC" +#define ICON_KI_USERS_ALT "\xEE\xA4\xBD" +#define ICON_KI_SIGN_IN "\xEE\xA4\xBE" +#define ICON_KI_SIGN_IN_INVERSE "\xEE\xA4\xBF" +#define ICON_KI_SIGN_OUT "\xEE\xA5\x80" +#define ICON_KI_SIGN_OUT_INVERSE "\xEE\xA5\x81" +#define ICON_KI_ARROW_TOP "\xEE\xA5\x82" +#define ICON_KI_ARROW_RIGHT "\xEE\xA5\x83" +#define ICON_KI_ARROW_BOTTOM "\xEE\xA5\x84" +#define ICON_KI_ARROW_LEFT "\xEE\xA5\x85" +#define ICON_KI_ARROW_TOP_LEFT "\xEE\xA5\x86" +#define ICON_KI_ARROW_TOP_RIGHT "\xEE\xA5\x87" +#define ICON_KI_ARROW_BOTTOM_RIGHT "\xEE\xA5\x88" +#define ICON_KI_ARROW_BOTTOM_LEFT "\xEE\xA5\x89" +#define ICON_KI_CARET_TOP "\xEE\xA5\x8A" +#define ICON_KI_CARET_RIGHT "\xEE\xA5\x8B" +#define ICON_KI_CARET_BOTTOM "\xEE\xA5\x8C" +#define ICON_KI_CARET_LEFT "\xEE\xA5\x8D" +#define ICON_KI_NEXT_ALT "\xEE\xA5\x8E" +#define ICON_KI_NEXT "\xEE\xA5\x8F" +#define ICON_KI_PREVIOUS "\xEE\xA5\x90" +#define ICON_KI_PREVIOUS_ALT "\xEE\xA5\x91" +#define ICON_KI_FILL "\xEE\xA5\x92" +#define ICON_KI_ERASER "\xEE\xA5\x93" +#define ICON_KI_SAVE "\xEE\xA5\x94" +#define ICON_KI_STEP_BACKWARD "\xEE\xA5\x95" +#define ICON_KI_BACKWARD "\xEE\xA5\x96" +#define ICON_KI_PAUSE "\xEE\xA5\x97" +#define ICON_KI_FORWARD "\xEE\xA5\x98" +#define ICON_KI_STEP_FORWARD "\xEE\xA5\x99" +#define ICON_KI_STOP "\xEE\xA5\x9A" +#define ICON_KI_REC "\xEE\xA5\x9B" +#define ICON_KI_CURSOR "\xEE\xA5\x9C" +#define ICON_KI_POINTER "\xEE\xA5\x9D" +#define ICON_KI_EXIT "\xEE\xA5\x9E" +#define ICON_KI_FIGURE "\xEE\xA5\x9F" +#define ICON_KI_CAR "\xEE\xA5\xA0" +#define ICON_KI_COIN "\xEE\xA5\xA1" +#define ICON_KI_KEY "\xEE\xA5\xA2" +#define ICON_KI_CUB "\xEE\xA5\xA3" +#define ICON_KI_DIAMOND "\xEE\xA5\xA4" +#define ICON_KI_BADGE "\xEE\xA5\xA5" +#define ICON_KI_BADGE_ALT "\xEE\xA5\xA6" +#define ICON_KI_PODIUM "\xEE\xA5\xA7" +#define ICON_KI_PODIUM_ALT "\xEE\xA5\xA8" +#define ICON_KI_FLAG "\xEE\xA5\xA9" +#define ICON_KI_FIST "\xEE\xA5\xAA" +#define ICON_KI_FIST_CIRCLE "\xEE\xA5\xAB" +#define ICON_KI_HEART "\xEE\xA5\xAC" +#define ICON_KI_HEART_HALF "\xEE\xA5\xAD" +#define ICON_KI_HEART_HALF_O "\xEE\xA5\xAE" +#define ICON_KI_HEART_O "\xEE\xA5\xAF" +#define ICON_KI_STAR "\xEE\xA5\xB0" +#define ICON_KI_STAR_HALF "\xEE\xA5\xB1" +#define ICON_KI_STAR_HALF_O "\xEE\xA5\xB2" +#define ICON_KI_STAR_O "\xEE\xA5\xB3" +#define ICON_KI_BUTTON_B "\xEE\xA5\xB4" +#define ICON_KI_MUSIC_ON "\xEE\xA5\xB5" +#define ICON_KI_MUSIC_OFF "\xEE\xA5\xB6" +#define ICON_KI_SOUND_ON "\xEE\xA5\xB7" +#define ICON_KI_SOUND_OFF "\xEE\xA5\xB8" +#define ICON_KI_SOUND_OFF_ALT "\xEE\xA5\xB9" +#define ICON_KI_ROBOT "\xEE\xA5\xBA" +#define ICON_KI_COMPUTER "\xEE\xA5\xBB" +#define ICON_KI_TABLET "\xEE\xA5\xBC" +#define ICON_KI_SMARTPHONE "\xEE\xA5\xBD" +#define ICON_KI_DEVICE "\xEE\xA5\xBE" +#define ICON_KI_DEVICE_TILT_LEFT "\xEE\xA5\xBF" +#define ICON_KI_DEVICE_TILT_RIGHT "\xEE\xA6\x80" +#define ICON_KI_GAMEPAD "\xEE\xA6\x81" +#define ICON_KI_GAMEPAD_ALT "\xEE\xA6\x82" +#define ICON_KI_GAMEPAD_TILT_LEFT "\xEE\xA6\x83" +#define ICON_KI_GAMEPAD_TILT_RIGHT "\xEE\xA6\x84" +#define ICON_KI_PLAYER_ONE "\xEE\xA6\x85" +#define ICON_KI_PLAYER_TWO "\xEE\xA6\x86" +#define ICON_KI_PLAYER_THREE "\xEE\xA6\x87" +#define ICON_KI_PLAYER_FOUR "\xEE\xA6\x88" +#define ICON_KI_JOYSTICK "\xEE\xA6\x89" +#define ICON_KI_JOYSTICK_ALT "\xEE\xA6\x8A" +#define ICON_KI_JOYSTICK_LEFT "\xEE\xA6\x8B" +#define ICON_KI_JOYSTICK_RIGHT "\xEE\xA6\x8C" +#define ICON_KI_MOUSE_ALT "\xEE\xA6\x8D" +#define ICON_KI_MOUSE "\xEE\xA6\x8E" +#define ICON_KI_MOUSE_LEFT_BUTTON "\xEE\xA6\x8F" +#define ICON_KI_MOUSE_RIGHT_BUTTON "\xEE\xA6\x90" +#define ICON_KI_BUTTON_ONE "\xEE\xA6\x91" +#define ICON_KI_BUTTON_TWO "\xEE\xA6\x92" +#define ICON_KI_BUTTON_THREE "\xEE\xA6\x93" +#define ICON_KI_BUTTON_A "\xEE\xA6\x94" +#define ICON_KI_BUTTON_X "\xEE\xA6\x95" +#define ICON_KI_BUTON_Y "\xEE\xA6\x96" +#define ICON_KI_BUTTON_TIMES "\xEE\xA6\x97" +#define ICON_KI_BUTTON_SQUARE "\xEE\xA6\x98" +#define ICON_KI_BUTTON_CIRCLE "\xEE\xA6\x99" +#define ICON_KI_BUTTON_TRIANGLE "\xEE\xA6\x9A" +#define ICON_KI_BUTTON_LEFT "\xEE\xA6\x9B" +#define ICON_KI_BUTTON_L "\xEE\xA6\x9C" +#define ICON_KI_BUTTON_L1 "\xEE\xA6\x9D" +#define ICON_KI_BUTTON_L2 "\xEE\xA6\x9E" +#define ICON_KI_BUTTON_LB "\xEE\xA6\x9F" +#define ICON_KI_BUTTON_LT "\xEE\xA6\xA0" +#define ICON_KI_BUTTON_RT "\xEE\xA6\xA1" +#define ICON_KI_BUTTON_RB "\xEE\xA6\xA2" +#define ICON_KI_BUTTON_R2 "\xEE\xA6\xA3" +#define ICON_KI_BUTTON_R1 "\xEE\xA6\xA4" +#define ICON_KI_BUTTON_R "\xEE\xA6\xA5" +#define ICON_KI_BUTTON_RIGHT "\xEE\xA6\xA6" +#define ICON_KI_BUTTON_EMPTY "\xEE\xA6\xA7" +#define ICON_KI_BUTTON_START "\xEE\xA6\xA8" +#define ICON_KI_BUTTON_SELECT "\xEE\xA6\xA9" +#define ICON_KI_DPAD "\xEE\xA6\xAA" +#define ICON_KI_DPAD_ALT "\xEE\xA6\xAB" +#define ICON_KI_DPAD_TOP "\xEE\xA6\xAC" +#define ICON_KI_DPAD_RIGHT "\xEE\xA6\xAD" +#define ICON_KI_DPAD_BOTTOM "\xEE\xA6\xAE" +#define ICON_KI_DPAD_LEFT "\xEE\xA6\xAF" +#define ICON_KI_KEY_LARGE "\xEE\xA6\xB0" +#define ICON_KI_KEY_LARGE_3D "\xEE\xA6\xB1" +#define ICON_KI_KEY_SMALL "\xEE\xA6\xB2" +#define ICON_KI_KEY_SMALL_3D "\xEE\xA6\xB3" +#define ICON_KI_STICK_LEFT_TOP "\xEE\xA6\xB4" +#define ICON_KI_STICK_LEFT_SIDE "\xEE\xA6\xB5" +#define ICON_KI_STICK_RIGHT_SIDE "\xEE\xA6\xB6" +#define ICON_KI_STICK_RIGHT_TOP "\xEE\xA6\xB7" +#define ICON_KI_STICK_SIDE "\xEE\xA6\xB8" +#define ICON_KI_STICK_TILT_LEFT "\xEE\xA6\xB9" +#define ICON_KI_STICK_TILT_RIGHT "\xEE\xA6\xBA" +#define ICON_KI_MOVE_BL "\xEE\xA6\xBB" +#define ICON_KI_MOVE_BR "\xEE\xA6\xBC" +#define ICON_KI_MOVE_BT "\xEE\xA6\xBD" +#define ICON_KI_MOVE_BT_ALT "\xEE\xA6\xBE" +#define ICON_KI_MOVE_LB "\xEE\xA6\xBF" +#define ICON_KI_MOVE_LR "\xEE\xA7\x80" +#define ICON_KI_MOVE_LR_ALT "\xEE\xA7\x81" +#define ICON_KI_MOVE_LT "\xEE\xA7\x82" +#define ICON_KI_MOVE_RB "\xEE\xA7\x83" +#define ICON_KI_MOVE_RL "\xEE\xA7\x84" +#define ICON_KI_MOVE_RL_ALT "\xEE\xA7\x85" +#define ICON_KI_MOVE_RT "\xEE\xA7\x86" +#define ICON_KI_MOVE_TB "\xEE\xA7\x87" +#define ICON_KI_MOVE_TB_ALT "\xEE\xA7\x88" +#define ICON_KI_MOVE_TL "\xEE\xA7\x89" +#define ICON_KI_MOVE_TR "\xEE\xA7\x8A" +#define ICON_KI_STICK_MOVE_BL "\xEE\xA7\x8B" +#define ICON_KI_STICK_MOVE_BR "\xEE\xA7\x8C" +#define ICON_KI_STICK_MOVE_BT "\xEE\xA7\x8D" +#define ICON_KI_STICK_MOVE_BT_ALT "\xEE\xA7\x8E" +#define ICON_KI_STICK_MOVE_LB "\xEE\xA7\x8F" +#define ICON_KI_STICK_MOVE_LR "\xEE\xA7\x90" +#define ICON_KI_STICK_MOVE_LR_ALT "\xEE\xA7\x91" +#define ICON_KI_STICK_MOVE_LT "\xEE\xA7\x92" +#define ICON_KI_STICK_MOVE_RB "\xEE\xA7\x93" +#define ICON_KI_STICK_MOVE_RL "\xEE\xA7\x94" +#define ICON_KI_STICK_MOVE_RL_ALT "\xEE\xA7\x95" +#define ICON_KI_STICK_MOVE_RT "\xEE\xA7\x96" +#define ICON_KI_STICK_MOVE_TB "\xEE\xA7\x97" +#define ICON_KI_STICK_MOVE_TB_ALT "\xEE\xA7\x98" +#define ICON_KI_STICK_MOVE_TL "\xEE\xA7\x99" +#define ICON_KI_STICK_MOVE_TR "\xEE\xA7\x9A" +#define ICON_KI_GITHUB "\xEE\xA7\x9B" +#define ICON_KI_GITHUB_ALT "\xEE\xA7\x9C" +#define ICON_KI_TWITTER "\xEE\xA7\x9D" +#define ICON_KI_FACEBOOK "\xEE\xA7\x9E" +#define ICON_KI_GOOGLE_PLUS "\xEE\xA7\x9F" +#define ICON_KI_YOUTUBE "\xEE\xA7\xA2" +#define ICON_KI_WE_HEART "\xEE\xA7\xA3" +#define ICON_KI_WOLFCMS "\xEE\xA7\xA0" +#define ICON_KI_WOLFCMS_ALT "\xEE\xA7\xA1" diff --git a/3rdparty/bgfx/3rdparty/iconfontheaders/icons_material_design.h b/3rdparty/bgfx/3rdparty/iconfontheaders/icons_material_design.h new file mode 100644 index 00000000000..00ec9f68e91 --- /dev/null +++ b/3rdparty/bgfx/3rdparty/iconfontheaders/icons_material_design.h @@ -0,0 +1,938 @@ +// Generated by GenerateIconFontCppHeaders.py +// from https://raw.githubusercontent.com/google/material-design-icons/master/iconfont/codepoints +#pragma once + +#define ICON_MIN_MD 0xe000 +#define ICON_MAX_MD 0xeb4c +#define ICON_MD_3D_ROTATION "\xEE\xA1\x8D" +#define ICON_MD_AC_UNIT "\xEE\xAC\xBB" +#define ICON_MD_ACCESS_ALARM "\xEE\x86\x90" +#define ICON_MD_ACCESS_ALARMS "\xEE\x86\x91" +#define ICON_MD_ACCESS_TIME "\xEE\x86\x92" +#define ICON_MD_ACCESSIBILITY "\xEE\xA1\x8E" +#define ICON_MD_ACCESSIBLE "\xEE\xA4\x94" +#define ICON_MD_ACCOUNT_BALANCE "\xEE\xA1\x8F" +#define ICON_MD_ACCOUNT_BALANCE_WALLET "\xEE\xA1\x90" +#define ICON_MD_ACCOUNT_BOX "\xEE\xA1\x91" +#define ICON_MD_ACCOUNT_CIRCLE "\xEE\xA1\x93" +#define ICON_MD_ADB "\xEE\x98\x8E" +#define ICON_MD_ADD "\xEE\x85\x85" +#define ICON_MD_ADD_A_PHOTO "\xEE\x90\xB9" +#define ICON_MD_ADD_ALARM "\xEE\x86\x93" +#define ICON_MD_ADD_ALERT "\xEE\x80\x83" +#define ICON_MD_ADD_BOX "\xEE\x85\x86" +#define ICON_MD_ADD_CIRCLE "\xEE\x85\x87" +#define ICON_MD_ADD_CIRCLE_OUTLINE "\xEE\x85\x88" +#define ICON_MD_ADD_LOCATION "\xEE\x95\xA7" +#define ICON_MD_ADD_SHOPPING_CART "\xEE\xA1\x94" +#define ICON_MD_ADD_TO_PHOTOS "\xEE\x8E\x9D" +#define ICON_MD_ADD_TO_QUEUE "\xEE\x81\x9C" +#define ICON_MD_ADJUST "\xEE\x8E\x9E" +#define ICON_MD_AIRLINE_SEAT_FLAT "\xEE\x98\xB0" +#define ICON_MD_AIRLINE_SEAT_FLAT_ANGLED "\xEE\x98\xB1" +#define ICON_MD_AIRLINE_SEAT_INDIVIDUAL_SUITE "\xEE\x98\xB2" +#define ICON_MD_AIRLINE_SEAT_LEGROOM_EXTRA "\xEE\x98\xB3" +#define ICON_MD_AIRLINE_SEAT_LEGROOM_NORMAL "\xEE\x98\xB4" +#define ICON_MD_AIRLINE_SEAT_LEGROOM_REDUCED "\xEE\x98\xB5" +#define ICON_MD_AIRLINE_SEAT_RECLINE_EXTRA "\xEE\x98\xB6" +#define ICON_MD_AIRLINE_SEAT_RECLINE_NORMAL "\xEE\x98\xB7" +#define ICON_MD_AIRPLANEMODE_ACTIVE "\xEE\x86\x95" +#define ICON_MD_AIRPLANEMODE_INACTIVE "\xEE\x86\x94" +#define ICON_MD_AIRPLAY "\xEE\x81\x95" +#define ICON_MD_AIRPORT_SHUTTLE "\xEE\xAC\xBC" +#define ICON_MD_ALARM "\xEE\xA1\x95" +#define ICON_MD_ALARM_ADD "\xEE\xA1\x96" +#define ICON_MD_ALARM_OFF "\xEE\xA1\x97" +#define ICON_MD_ALARM_ON "\xEE\xA1\x98" +#define ICON_MD_ALBUM "\xEE\x80\x99" +#define ICON_MD_ALL_INCLUSIVE "\xEE\xAC\xBD" +#define ICON_MD_ALL_OUT "\xEE\xA4\x8B" +#define ICON_MD_ANDROID "\xEE\xA1\x99" +#define ICON_MD_ANNOUNCEMENT "\xEE\xA1\x9A" +#define ICON_MD_APPS "\xEE\x97\x83" +#define ICON_MD_ARCHIVE "\xEE\x85\x89" +#define ICON_MD_ARROW_BACK "\xEE\x97\x84" +#define ICON_MD_ARROW_DOWNWARD "\xEE\x97\x9B" +#define ICON_MD_ARROW_DROP_DOWN "\xEE\x97\x85" +#define ICON_MD_ARROW_DROP_DOWN_CIRCLE "\xEE\x97\x86" +#define ICON_MD_ARROW_DROP_UP "\xEE\x97\x87" +#define ICON_MD_ARROW_FORWARD "\xEE\x97\x88" +#define ICON_MD_ARROW_UPWARD "\xEE\x97\x98" +#define ICON_MD_ART_TRACK "\xEE\x81\xA0" +#define ICON_MD_ASPECT_RATIO "\xEE\xA1\x9B" +#define ICON_MD_ASSESSMENT "\xEE\xA1\x9C" +#define ICON_MD_ASSIGNMENT "\xEE\xA1\x9D" +#define ICON_MD_ASSIGNMENT_IND "\xEE\xA1\x9E" +#define ICON_MD_ASSIGNMENT_LATE "\xEE\xA1\x9F" +#define ICON_MD_ASSIGNMENT_RETURN "\xEE\xA1\xA0" +#define ICON_MD_ASSIGNMENT_RETURNED "\xEE\xA1\xA1" +#define ICON_MD_ASSIGNMENT_TURNED_IN "\xEE\xA1\xA2" +#define ICON_MD_ASSISTANT "\xEE\x8E\x9F" +#define ICON_MD_ASSISTANT_PHOTO "\xEE\x8E\xA0" +#define ICON_MD_ATTACH_FILE "\xEE\x88\xA6" +#define ICON_MD_ATTACH_MONEY "\xEE\x88\xA7" +#define ICON_MD_ATTACHMENT "\xEE\x8A\xBC" +#define ICON_MD_AUDIOTRACK "\xEE\x8E\xA1" +#define ICON_MD_AUTORENEW "\xEE\xA1\xA3" +#define ICON_MD_AV_TIMER "\xEE\x80\x9B" +#define ICON_MD_BACKSPACE "\xEE\x85\x8A" +#define ICON_MD_BACKUP "\xEE\xA1\xA4" +#define ICON_MD_BATTERY_ALERT "\xEE\x86\x9C" +#define ICON_MD_BATTERY_CHARGING_FULL "\xEE\x86\xA3" +#define ICON_MD_BATTERY_FULL "\xEE\x86\xA4" +#define ICON_MD_BATTERY_STD "\xEE\x86\xA5" +#define ICON_MD_BATTERY_UNKNOWN "\xEE\x86\xA6" +#define ICON_MD_BEACH_ACCESS "\xEE\xAC\xBE" +#define ICON_MD_BEENHERE "\xEE\x94\xAD" +#define ICON_MD_BLOCK "\xEE\x85\x8B" +#define ICON_MD_BLUETOOTH "\xEE\x86\xA7" +#define ICON_MD_BLUETOOTH_AUDIO "\xEE\x98\x8F" +#define ICON_MD_BLUETOOTH_CONNECTED "\xEE\x86\xA8" +#define ICON_MD_BLUETOOTH_DISABLED "\xEE\x86\xA9" +#define ICON_MD_BLUETOOTH_SEARCHING "\xEE\x86\xAA" +#define ICON_MD_BLUR_CIRCULAR "\xEE\x8E\xA2" +#define ICON_MD_BLUR_LINEAR "\xEE\x8E\xA3" +#define ICON_MD_BLUR_OFF "\xEE\x8E\xA4" +#define ICON_MD_BLUR_ON "\xEE\x8E\xA5" +#define ICON_MD_BOOK "\xEE\xA1\xA5" +#define ICON_MD_BOOKMARK "\xEE\xA1\xA6" +#define ICON_MD_BOOKMARK_BORDER "\xEE\xA1\xA7" +#define ICON_MD_BORDER_ALL "\xEE\x88\xA8" +#define ICON_MD_BORDER_BOTTOM "\xEE\x88\xA9" +#define ICON_MD_BORDER_CLEAR "\xEE\x88\xAA" +#define ICON_MD_BORDER_COLOR "\xEE\x88\xAB" +#define ICON_MD_BORDER_HORIZONTAL "\xEE\x88\xAC" +#define ICON_MD_BORDER_INNER "\xEE\x88\xAD" +#define ICON_MD_BORDER_LEFT "\xEE\x88\xAE" +#define ICON_MD_BORDER_OUTER "\xEE\x88\xAF" +#define ICON_MD_BORDER_RIGHT "\xEE\x88\xB0" +#define ICON_MD_BORDER_STYLE "\xEE\x88\xB1" +#define ICON_MD_BORDER_TOP "\xEE\x88\xB2" +#define ICON_MD_BORDER_VERTICAL "\xEE\x88\xB3" +#define ICON_MD_BRANDING_WATERMARK "\xEE\x81\xAB" +#define ICON_MD_BRIGHTNESS_1 "\xEE\x8E\xA6" +#define ICON_MD_BRIGHTNESS_2 "\xEE\x8E\xA7" +#define ICON_MD_BRIGHTNESS_3 "\xEE\x8E\xA8" +#define ICON_MD_BRIGHTNESS_4 "\xEE\x8E\xA9" +#define ICON_MD_BRIGHTNESS_5 "\xEE\x8E\xAA" +#define ICON_MD_BRIGHTNESS_6 "\xEE\x8E\xAB" +#define ICON_MD_BRIGHTNESS_7 "\xEE\x8E\xAC" +#define ICON_MD_BRIGHTNESS_AUTO "\xEE\x86\xAB" +#define ICON_MD_BRIGHTNESS_HIGH "\xEE\x86\xAC" +#define ICON_MD_BRIGHTNESS_LOW "\xEE\x86\xAD" +#define ICON_MD_BRIGHTNESS_MEDIUM "\xEE\x86\xAE" +#define ICON_MD_BROKEN_IMAGE "\xEE\x8E\xAD" +#define ICON_MD_BRUSH "\xEE\x8E\xAE" +#define ICON_MD_BUBBLE_CHART "\xEE\x9B\x9D" +#define ICON_MD_BUG_REPORT "\xEE\xA1\xA8" +#define ICON_MD_BUILD "\xEE\xA1\xA9" +#define ICON_MD_BURST_MODE "\xEE\x90\xBC" +#define ICON_MD_BUSINESS "\xEE\x82\xAF" +#define ICON_MD_BUSINESS_CENTER "\xEE\xAC\xBF" +#define ICON_MD_CACHED "\xEE\xA1\xAA" +#define ICON_MD_CAKE "\xEE\x9F\xA9" +#define ICON_MD_CALL "\xEE\x82\xB0" +#define ICON_MD_CALL_END "\xEE\x82\xB1" +#define ICON_MD_CALL_MADE "\xEE\x82\xB2" +#define ICON_MD_CALL_MERGE "\xEE\x82\xB3" +#define ICON_MD_CALL_MISSED "\xEE\x82\xB4" +#define ICON_MD_CALL_MISSED_OUTGOING "\xEE\x83\xA4" +#define ICON_MD_CALL_RECEIVED "\xEE\x82\xB5" +#define ICON_MD_CALL_SPLIT "\xEE\x82\xB6" +#define ICON_MD_CALL_TO_ACTION "\xEE\x81\xAC" +#define ICON_MD_CAMERA "\xEE\x8E\xAF" +#define ICON_MD_CAMERA_ALT "\xEE\x8E\xB0" +#define ICON_MD_CAMERA_ENHANCE "\xEE\xA3\xBC" +#define ICON_MD_CAMERA_FRONT "\xEE\x8E\xB1" +#define ICON_MD_CAMERA_REAR "\xEE\x8E\xB2" +#define ICON_MD_CAMERA_ROLL "\xEE\x8E\xB3" +#define ICON_MD_CANCEL "\xEE\x97\x89" +#define ICON_MD_CARD_GIFTCARD "\xEE\xA3\xB6" +#define ICON_MD_CARD_MEMBERSHIP "\xEE\xA3\xB7" +#define ICON_MD_CARD_TRAVEL "\xEE\xA3\xB8" +#define ICON_MD_CASINO "\xEE\xAD\x80" +#define ICON_MD_CAST "\xEE\x8C\x87" +#define ICON_MD_CAST_CONNECTED "\xEE\x8C\x88" +#define ICON_MD_CENTER_FOCUS_STRONG "\xEE\x8E\xB4" +#define ICON_MD_CENTER_FOCUS_WEAK "\xEE\x8E\xB5" +#define ICON_MD_CHANGE_HISTORY "\xEE\xA1\xAB" +#define ICON_MD_CHAT "\xEE\x82\xB7" +#define ICON_MD_CHAT_BUBBLE "\xEE\x83\x8A" +#define ICON_MD_CHAT_BUBBLE_OUTLINE "\xEE\x83\x8B" +#define ICON_MD_CHECK "\xEE\x97\x8A" +#define ICON_MD_CHECK_BOX "\xEE\xA0\xB4" +#define ICON_MD_CHECK_BOX_OUTLINE_BLANK "\xEE\xA0\xB5" +#define ICON_MD_CHECK_CIRCLE "\xEE\xA1\xAC" +#define ICON_MD_CHEVRON_LEFT "\xEE\x97\x8B" +#define ICON_MD_CHEVRON_RIGHT "\xEE\x97\x8C" +#define ICON_MD_CHILD_CARE "\xEE\xAD\x81" +#define ICON_MD_CHILD_FRIENDLY "\xEE\xAD\x82" +#define ICON_MD_CHROME_READER_MODE "\xEE\xA1\xAD" +#define ICON_MD_CLASS "\xEE\xA1\xAE" +#define ICON_MD_CLEAR "\xEE\x85\x8C" +#define ICON_MD_CLEAR_ALL "\xEE\x82\xB8" +#define ICON_MD_CLOSE "\xEE\x97\x8D" +#define ICON_MD_CLOSED_CAPTION "\xEE\x80\x9C" +#define ICON_MD_CLOUD "\xEE\x8A\xBD" +#define ICON_MD_CLOUD_CIRCLE "\xEE\x8A\xBE" +#define ICON_MD_CLOUD_DONE "\xEE\x8A\xBF" +#define ICON_MD_CLOUD_DOWNLOAD "\xEE\x8B\x80" +#define ICON_MD_CLOUD_OFF "\xEE\x8B\x81" +#define ICON_MD_CLOUD_QUEUE "\xEE\x8B\x82" +#define ICON_MD_CLOUD_UPLOAD "\xEE\x8B\x83" +#define ICON_MD_CODE "\xEE\xA1\xAF" +#define ICON_MD_COLLECTIONS "\xEE\x8E\xB6" +#define ICON_MD_COLLECTIONS_BOOKMARK "\xEE\x90\xB1" +#define ICON_MD_COLOR_LENS "\xEE\x8E\xB7" +#define ICON_MD_COLORIZE "\xEE\x8E\xB8" +#define ICON_MD_COMMENT "\xEE\x82\xB9" +#define ICON_MD_COMPARE "\xEE\x8E\xB9" +#define ICON_MD_COMPARE_ARROWS "\xEE\xA4\x95" +#define ICON_MD_COMPUTER "\xEE\x8C\x8A" +#define ICON_MD_CONFIRMATION_NUMBER "\xEE\x98\xB8" +#define ICON_MD_CONTACT_MAIL "\xEE\x83\x90" +#define ICON_MD_CONTACT_PHONE "\xEE\x83\x8F" +#define ICON_MD_CONTACTS "\xEE\x82\xBA" +#define ICON_MD_CONTENT_COPY "\xEE\x85\x8D" +#define ICON_MD_CONTENT_CUT "\xEE\x85\x8E" +#define ICON_MD_CONTENT_PASTE "\xEE\x85\x8F" +#define ICON_MD_CONTROL_POINT "\xEE\x8E\xBA" +#define ICON_MD_CONTROL_POINT_DUPLICATE "\xEE\x8E\xBB" +#define ICON_MD_COPYRIGHT "\xEE\xA4\x8C" +#define ICON_MD_CREATE "\xEE\x85\x90" +#define ICON_MD_CREATE_NEW_FOLDER "\xEE\x8B\x8C" +#define ICON_MD_CREDIT_CARD "\xEE\xA1\xB0" +#define ICON_MD_CROP "\xEE\x8E\xBE" +#define ICON_MD_CROP_16_9 "\xEE\x8E\xBC" +#define ICON_MD_CROP_3_2 "\xEE\x8E\xBD" +#define ICON_MD_CROP_5_4 "\xEE\x8E\xBF" +#define ICON_MD_CROP_7_5 "\xEE\x8F\x80" +#define ICON_MD_CROP_DIN "\xEE\x8F\x81" +#define ICON_MD_CROP_FREE "\xEE\x8F\x82" +#define ICON_MD_CROP_LANDSCAPE "\xEE\x8F\x83" +#define ICON_MD_CROP_ORIGINAL "\xEE\x8F\x84" +#define ICON_MD_CROP_PORTRAIT "\xEE\x8F\x85" +#define ICON_MD_CROP_ROTATE "\xEE\x90\xB7" +#define ICON_MD_CROP_SQUARE "\xEE\x8F\x86" +#define ICON_MD_DASHBOARD "\xEE\xA1\xB1" +#define ICON_MD_DATA_USAGE "\xEE\x86\xAF" +#define ICON_MD_DATE_RANGE "\xEE\xA4\x96" +#define ICON_MD_DEHAZE "\xEE\x8F\x87" +#define ICON_MD_DELETE "\xEE\xA1\xB2" +#define ICON_MD_DELETE_FOREVER "\xEE\xA4\xAB" +#define ICON_MD_DELETE_SWEEP "\xEE\x85\xAC" +#define ICON_MD_DESCRIPTION "\xEE\xA1\xB3" +#define ICON_MD_DESKTOP_MAC "\xEE\x8C\x8B" +#define ICON_MD_DESKTOP_WINDOWS "\xEE\x8C\x8C" +#define ICON_MD_DETAILS "\xEE\x8F\x88" +#define ICON_MD_DEVELOPER_BOARD "\xEE\x8C\x8D" +#define ICON_MD_DEVELOPER_MODE "\xEE\x86\xB0" +#define ICON_MD_DEVICE_HUB "\xEE\x8C\xB5" +#define ICON_MD_DEVICES "\xEE\x86\xB1" +#define ICON_MD_DEVICES_OTHER "\xEE\x8C\xB7" +#define ICON_MD_DIALER_SIP "\xEE\x82\xBB" +#define ICON_MD_DIALPAD "\xEE\x82\xBC" +#define ICON_MD_DIRECTIONS "\xEE\x94\xAE" +#define ICON_MD_DIRECTIONS_BIKE "\xEE\x94\xAF" +#define ICON_MD_DIRECTIONS_BOAT "\xEE\x94\xB2" +#define ICON_MD_DIRECTIONS_BUS "\xEE\x94\xB0" +#define ICON_MD_DIRECTIONS_CAR "\xEE\x94\xB1" +#define ICON_MD_DIRECTIONS_RAILWAY "\xEE\x94\xB4" +#define ICON_MD_DIRECTIONS_RUN "\xEE\x95\xA6" +#define ICON_MD_DIRECTIONS_SUBWAY "\xEE\x94\xB3" +#define ICON_MD_DIRECTIONS_TRANSIT "\xEE\x94\xB5" +#define ICON_MD_DIRECTIONS_WALK "\xEE\x94\xB6" +#define ICON_MD_DISC_FULL "\xEE\x98\x90" +#define ICON_MD_DNS "\xEE\xA1\xB5" +#define ICON_MD_DO_NOT_DISTURB "\xEE\x98\x92" +#define ICON_MD_DO_NOT_DISTURB_ALT "\xEE\x98\x91" +#define ICON_MD_DO_NOT_DISTURB_OFF "\xEE\x99\x83" +#define ICON_MD_DO_NOT_DISTURB_ON "\xEE\x99\x84" +#define ICON_MD_DOCK "\xEE\x8C\x8E" +#define ICON_MD_DOMAIN "\xEE\x9F\xAE" +#define ICON_MD_DONE "\xEE\xA1\xB6" +#define ICON_MD_DONE_ALL "\xEE\xA1\xB7" +#define ICON_MD_DONUT_LARGE "\xEE\xA4\x97" +#define ICON_MD_DONUT_SMALL "\xEE\xA4\x98" +#define ICON_MD_DRAFTS "\xEE\x85\x91" +#define ICON_MD_DRAG_HANDLE "\xEE\x89\x9D" +#define ICON_MD_DRIVE_ETA "\xEE\x98\x93" +#define ICON_MD_DVR "\xEE\x86\xB2" +#define ICON_MD_EDIT "\xEE\x8F\x89" +#define ICON_MD_EDIT_LOCATION "\xEE\x95\xA8" +#define ICON_MD_EJECT "\xEE\xA3\xBB" +#define ICON_MD_EMAIL "\xEE\x82\xBE" +#define ICON_MD_ENHANCED_ENCRYPTION "\xEE\x98\xBF" +#define ICON_MD_EQUALIZER "\xEE\x80\x9D" +#define ICON_MD_ERROR "\xEE\x80\x80" +#define ICON_MD_ERROR_OUTLINE "\xEE\x80\x81" +#define ICON_MD_EURO_SYMBOL "\xEE\xA4\xA6" +#define ICON_MD_EV_STATION "\xEE\x95\xAD" +#define ICON_MD_EVENT "\xEE\xA1\xB8" +#define ICON_MD_EVENT_AVAILABLE "\xEE\x98\x94" +#define ICON_MD_EVENT_BUSY "\xEE\x98\x95" +#define ICON_MD_EVENT_NOTE "\xEE\x98\x96" +#define ICON_MD_EVENT_SEAT "\xEE\xA4\x83" +#define ICON_MD_EXIT_TO_APP "\xEE\xA1\xB9" +#define ICON_MD_EXPAND_LESS "\xEE\x97\x8E" +#define ICON_MD_EXPAND_MORE "\xEE\x97\x8F" +#define ICON_MD_EXPLICIT "\xEE\x80\x9E" +#define ICON_MD_EXPLORE "\xEE\xA1\xBA" +#define ICON_MD_EXPOSURE "\xEE\x8F\x8A" +#define ICON_MD_EXPOSURE_NEG_1 "\xEE\x8F\x8B" +#define ICON_MD_EXPOSURE_NEG_2 "\xEE\x8F\x8C" +#define ICON_MD_EXPOSURE_PLUS_1 "\xEE\x8F\x8D" +#define ICON_MD_EXPOSURE_PLUS_2 "\xEE\x8F\x8E" +#define ICON_MD_EXPOSURE_ZERO "\xEE\x8F\x8F" +#define ICON_MD_EXTENSION "\xEE\xA1\xBB" +#define ICON_MD_FACE "\xEE\xA1\xBC" +#define ICON_MD_FAST_FORWARD "\xEE\x80\x9F" +#define ICON_MD_FAST_REWIND "\xEE\x80\xA0" +#define ICON_MD_FAVORITE "\xEE\xA1\xBD" +#define ICON_MD_FAVORITE_BORDER "\xEE\xA1\xBE" +#define ICON_MD_FEATURED_PLAY_LIST "\xEE\x81\xAD" +#define ICON_MD_FEATURED_VIDEO "\xEE\x81\xAE" +#define ICON_MD_FEEDBACK "\xEE\xA1\xBF" +#define ICON_MD_FIBER_DVR "\xEE\x81\x9D" +#define ICON_MD_FIBER_MANUAL_RECORD "\xEE\x81\xA1" +#define ICON_MD_FIBER_NEW "\xEE\x81\x9E" +#define ICON_MD_FIBER_PIN "\xEE\x81\xAA" +#define ICON_MD_FIBER_SMART_RECORD "\xEE\x81\xA2" +#define ICON_MD_FILE_DOWNLOAD "\xEE\x8B\x84" +#define ICON_MD_FILE_UPLOAD "\xEE\x8B\x86" +#define ICON_MD_FILTER "\xEE\x8F\x93" +#define ICON_MD_FILTER_1 "\xEE\x8F\x90" +#define ICON_MD_FILTER_2 "\xEE\x8F\x91" +#define ICON_MD_FILTER_3 "\xEE\x8F\x92" +#define ICON_MD_FILTER_4 "\xEE\x8F\x94" +#define ICON_MD_FILTER_5 "\xEE\x8F\x95" +#define ICON_MD_FILTER_6 "\xEE\x8F\x96" +#define ICON_MD_FILTER_7 "\xEE\x8F\x97" +#define ICON_MD_FILTER_8 "\xEE\x8F\x98" +#define ICON_MD_FILTER_9 "\xEE\x8F\x99" +#define ICON_MD_FILTER_9_PLUS "\xEE\x8F\x9A" +#define ICON_MD_FILTER_B_AND_W "\xEE\x8F\x9B" +#define ICON_MD_FILTER_CENTER_FOCUS "\xEE\x8F\x9C" +#define ICON_MD_FILTER_DRAMA "\xEE\x8F\x9D" +#define ICON_MD_FILTER_FRAMES "\xEE\x8F\x9E" +#define ICON_MD_FILTER_HDR "\xEE\x8F\x9F" +#define ICON_MD_FILTER_LIST "\xEE\x85\x92" +#define ICON_MD_FILTER_NONE "\xEE\x8F\xA0" +#define ICON_MD_FILTER_TILT_SHIFT "\xEE\x8F\xA2" +#define ICON_MD_FILTER_VINTAGE "\xEE\x8F\xA3" +#define ICON_MD_FIND_IN_PAGE "\xEE\xA2\x80" +#define ICON_MD_FIND_REPLACE "\xEE\xA2\x81" +#define ICON_MD_FINGERPRINT "\xEE\xA4\x8D" +#define ICON_MD_FIRST_PAGE "\xEE\x97\x9C" +#define ICON_MD_FITNESS_CENTER "\xEE\xAD\x83" +#define ICON_MD_FLAG "\xEE\x85\x93" +#define ICON_MD_FLARE "\xEE\x8F\xA4" +#define ICON_MD_FLASH_AUTO "\xEE\x8F\xA5" +#define ICON_MD_FLASH_OFF "\xEE\x8F\xA6" +#define ICON_MD_FLASH_ON "\xEE\x8F\xA7" +#define ICON_MD_FLIGHT "\xEE\x94\xB9" +#define ICON_MD_FLIGHT_LAND "\xEE\xA4\x84" +#define ICON_MD_FLIGHT_TAKEOFF "\xEE\xA4\x85" +#define ICON_MD_FLIP "\xEE\x8F\xA8" +#define ICON_MD_FLIP_TO_BACK "\xEE\xA2\x82" +#define ICON_MD_FLIP_TO_FRONT "\xEE\xA2\x83" +#define ICON_MD_FOLDER "\xEE\x8B\x87" +#define ICON_MD_FOLDER_OPEN "\xEE\x8B\x88" +#define ICON_MD_FOLDER_SHARED "\xEE\x8B\x89" +#define ICON_MD_FOLDER_SPECIAL "\xEE\x98\x97" +#define ICON_MD_FONT_DOWNLOAD "\xEE\x85\xA7" +#define ICON_MD_FORMAT_ALIGN_CENTER "\xEE\x88\xB4" +#define ICON_MD_FORMAT_ALIGN_JUSTIFY "\xEE\x88\xB5" +#define ICON_MD_FORMAT_ALIGN_LEFT "\xEE\x88\xB6" +#define ICON_MD_FORMAT_ALIGN_RIGHT "\xEE\x88\xB7" +#define ICON_MD_FORMAT_BOLD "\xEE\x88\xB8" +#define ICON_MD_FORMAT_CLEAR "\xEE\x88\xB9" +#define ICON_MD_FORMAT_COLOR_FILL "\xEE\x88\xBA" +#define ICON_MD_FORMAT_COLOR_RESET "\xEE\x88\xBB" +#define ICON_MD_FORMAT_COLOR_TEXT "\xEE\x88\xBC" +#define ICON_MD_FORMAT_INDENT_DECREASE "\xEE\x88\xBD" +#define ICON_MD_FORMAT_INDENT_INCREASE "\xEE\x88\xBE" +#define ICON_MD_FORMAT_ITALIC "\xEE\x88\xBF" +#define ICON_MD_FORMAT_LINE_SPACING "\xEE\x89\x80" +#define ICON_MD_FORMAT_LIST_BULLETED "\xEE\x89\x81" +#define ICON_MD_FORMAT_LIST_NUMBERED "\xEE\x89\x82" +#define ICON_MD_FORMAT_PAINT "\xEE\x89\x83" +#define ICON_MD_FORMAT_QUOTE "\xEE\x89\x84" +#define ICON_MD_FORMAT_SHAPES "\xEE\x89\x9E" +#define ICON_MD_FORMAT_SIZE "\xEE\x89\x85" +#define ICON_MD_FORMAT_STRIKETHROUGH "\xEE\x89\x86" +#define ICON_MD_FORMAT_TEXTDIRECTION_L_TO_R "\xEE\x89\x87" +#define ICON_MD_FORMAT_TEXTDIRECTION_R_TO_L "\xEE\x89\x88" +#define ICON_MD_FORMAT_UNDERLINED "\xEE\x89\x89" +#define ICON_MD_FORUM "\xEE\x82\xBF" +#define ICON_MD_FORWARD "\xEE\x85\x94" +#define ICON_MD_FORWARD_10 "\xEE\x81\x96" +#define ICON_MD_FORWARD_30 "\xEE\x81\x97" +#define ICON_MD_FORWARD_5 "\xEE\x81\x98" +#define ICON_MD_FREE_BREAKFAST "\xEE\xAD\x84" +#define ICON_MD_FULLSCREEN "\xEE\x97\x90" +#define ICON_MD_FULLSCREEN_EXIT "\xEE\x97\x91" +#define ICON_MD_FUNCTIONS "\xEE\x89\x8A" +#define ICON_MD_G_TRANSLATE "\xEE\xA4\xA7" +#define ICON_MD_GAMEPAD "\xEE\x8C\x8F" +#define ICON_MD_GAMES "\xEE\x80\xA1" +#define ICON_MD_GAVEL "\xEE\xA4\x8E" +#define ICON_MD_GESTURE "\xEE\x85\x95" +#define ICON_MD_GET_APP "\xEE\xA2\x84" +#define ICON_MD_GIF "\xEE\xA4\x88" +#define ICON_MD_GOLF_COURSE "\xEE\xAD\x85" +#define ICON_MD_GPS_FIXED "\xEE\x86\xB3" +#define ICON_MD_GPS_NOT_FIXED "\xEE\x86\xB4" +#define ICON_MD_GPS_OFF "\xEE\x86\xB5" +#define ICON_MD_GRADE "\xEE\xA2\x85" +#define ICON_MD_GRADIENT "\xEE\x8F\xA9" +#define ICON_MD_GRAIN "\xEE\x8F\xAA" +#define ICON_MD_GRAPHIC_EQ "\xEE\x86\xB8" +#define ICON_MD_GRID_OFF "\xEE\x8F\xAB" +#define ICON_MD_GRID_ON "\xEE\x8F\xAC" +#define ICON_MD_GROUP "\xEE\x9F\xAF" +#define ICON_MD_GROUP_ADD "\xEE\x9F\xB0" +#define ICON_MD_GROUP_WORK "\xEE\xA2\x86" +#define ICON_MD_HD "\xEE\x81\x92" +#define ICON_MD_HDR_OFF "\xEE\x8F\xAD" +#define ICON_MD_HDR_ON "\xEE\x8F\xAE" +#define ICON_MD_HDR_STRONG "\xEE\x8F\xB1" +#define ICON_MD_HDR_WEAK "\xEE\x8F\xB2" +#define ICON_MD_HEADSET "\xEE\x8C\x90" +#define ICON_MD_HEADSET_MIC "\xEE\x8C\x91" +#define ICON_MD_HEALING "\xEE\x8F\xB3" +#define ICON_MD_HEARING "\xEE\x80\xA3" +#define ICON_MD_HELP "\xEE\xA2\x87" +#define ICON_MD_HELP_OUTLINE "\xEE\xA3\xBD" +#define ICON_MD_HIGH_QUALITY "\xEE\x80\xA4" +#define ICON_MD_HIGHLIGHT "\xEE\x89\x9F" +#define ICON_MD_HIGHLIGHT_OFF "\xEE\xA2\x88" +#define ICON_MD_HISTORY "\xEE\xA2\x89" +#define ICON_MD_HOME "\xEE\xA2\x8A" +#define ICON_MD_HOT_TUB "\xEE\xAD\x86" +#define ICON_MD_HOTEL "\xEE\x94\xBA" +#define ICON_MD_HOURGLASS_EMPTY "\xEE\xA2\x8B" +#define ICON_MD_HOURGLASS_FULL "\xEE\xA2\x8C" +#define ICON_MD_HTTP "\xEE\xA4\x82" +#define ICON_MD_HTTPS "\xEE\xA2\x8D" +#define ICON_MD_IMAGE "\xEE\x8F\xB4" +#define ICON_MD_IMAGE_ASPECT_RATIO "\xEE\x8F\xB5" +#define ICON_MD_IMPORT_CONTACTS "\xEE\x83\xA0" +#define ICON_MD_IMPORT_EXPORT "\xEE\x83\x83" +#define ICON_MD_IMPORTANT_DEVICES "\xEE\xA4\x92" +#define ICON_MD_INBOX "\xEE\x85\x96" +#define ICON_MD_INDETERMINATE_CHECK_BOX "\xEE\xA4\x89" +#define ICON_MD_INFO "\xEE\xA2\x8E" +#define ICON_MD_INFO_OUTLINE "\xEE\xA2\x8F" +#define ICON_MD_INPUT "\xEE\xA2\x90" +#define ICON_MD_INSERT_CHART "\xEE\x89\x8B" +#define ICON_MD_INSERT_COMMENT "\xEE\x89\x8C" +#define ICON_MD_INSERT_DRIVE_FILE "\xEE\x89\x8D" +#define ICON_MD_INSERT_EMOTICON "\xEE\x89\x8E" +#define ICON_MD_INSERT_INVITATION "\xEE\x89\x8F" +#define ICON_MD_INSERT_LINK "\xEE\x89\x90" +#define ICON_MD_INSERT_PHOTO "\xEE\x89\x91" +#define ICON_MD_INVERT_COLORS "\xEE\xA2\x91" +#define ICON_MD_INVERT_COLORS_OFF "\xEE\x83\x84" +#define ICON_MD_ISO "\xEE\x8F\xB6" +#define ICON_MD_KEYBOARD "\xEE\x8C\x92" +#define ICON_MD_KEYBOARD_ARROW_DOWN "\xEE\x8C\x93" +#define ICON_MD_KEYBOARD_ARROW_LEFT "\xEE\x8C\x94" +#define ICON_MD_KEYBOARD_ARROW_RIGHT "\xEE\x8C\x95" +#define ICON_MD_KEYBOARD_ARROW_UP "\xEE\x8C\x96" +#define ICON_MD_KEYBOARD_BACKSPACE "\xEE\x8C\x97" +#define ICON_MD_KEYBOARD_CAPSLOCK "\xEE\x8C\x98" +#define ICON_MD_KEYBOARD_HIDE "\xEE\x8C\x9A" +#define ICON_MD_KEYBOARD_RETURN "\xEE\x8C\x9B" +#define ICON_MD_KEYBOARD_TAB "\xEE\x8C\x9C" +#define ICON_MD_KEYBOARD_VOICE "\xEE\x8C\x9D" +#define ICON_MD_KITCHEN "\xEE\xAD\x87" +#define ICON_MD_LABEL "\xEE\xA2\x92" +#define ICON_MD_LABEL_OUTLINE "\xEE\xA2\x93" +#define ICON_MD_LANDSCAPE "\xEE\x8F\xB7" +#define ICON_MD_LANGUAGE "\xEE\xA2\x94" +#define ICON_MD_LAPTOP "\xEE\x8C\x9E" +#define ICON_MD_LAPTOP_CHROMEBOOK "\xEE\x8C\x9F" +#define ICON_MD_LAPTOP_MAC "\xEE\x8C\xA0" +#define ICON_MD_LAPTOP_WINDOWS "\xEE\x8C\xA1" +#define ICON_MD_LAST_PAGE "\xEE\x97\x9D" +#define ICON_MD_LAUNCH "\xEE\xA2\x95" +#define ICON_MD_LAYERS "\xEE\x94\xBB" +#define ICON_MD_LAYERS_CLEAR "\xEE\x94\xBC" +#define ICON_MD_LEAK_ADD "\xEE\x8F\xB8" +#define ICON_MD_LEAK_REMOVE "\xEE\x8F\xB9" +#define ICON_MD_LENS "\xEE\x8F\xBA" +#define ICON_MD_LIBRARY_ADD "\xEE\x80\xAE" +#define ICON_MD_LIBRARY_BOOKS "\xEE\x80\xAF" +#define ICON_MD_LIBRARY_MUSIC "\xEE\x80\xB0" +#define ICON_MD_LIGHTBULB_OUTLINE "\xEE\xA4\x8F" +#define ICON_MD_LINE_STYLE "\xEE\xA4\x99" +#define ICON_MD_LINE_WEIGHT "\xEE\xA4\x9A" +#define ICON_MD_LINEAR_SCALE "\xEE\x89\xA0" +#define ICON_MD_LINK "\xEE\x85\x97" +#define ICON_MD_LINKED_CAMERA "\xEE\x90\xB8" +#define ICON_MD_LIST "\xEE\xA2\x96" +#define ICON_MD_LIVE_HELP "\xEE\x83\x86" +#define ICON_MD_LIVE_TV "\xEE\x98\xB9" +#define ICON_MD_LOCAL_ACTIVITY "\xEE\x94\xBF" +#define ICON_MD_LOCAL_AIRPORT "\xEE\x94\xBD" +#define ICON_MD_LOCAL_ATM "\xEE\x94\xBE" +#define ICON_MD_LOCAL_BAR "\xEE\x95\x80" +#define ICON_MD_LOCAL_CAFE "\xEE\x95\x81" +#define ICON_MD_LOCAL_CAR_WASH "\xEE\x95\x82" +#define ICON_MD_LOCAL_CONVENIENCE_STORE "\xEE\x95\x83" +#define ICON_MD_LOCAL_DINING "\xEE\x95\x96" +#define ICON_MD_LOCAL_DRINK "\xEE\x95\x84" +#define ICON_MD_LOCAL_FLORIST "\xEE\x95\x85" +#define ICON_MD_LOCAL_GAS_STATION "\xEE\x95\x86" +#define ICON_MD_LOCAL_GROCERY_STORE "\xEE\x95\x87" +#define ICON_MD_LOCAL_HOSPITAL "\xEE\x95\x88" +#define ICON_MD_LOCAL_HOTEL "\xEE\x95\x89" +#define ICON_MD_LOCAL_LAUNDRY_SERVICE "\xEE\x95\x8A" +#define ICON_MD_LOCAL_LIBRARY "\xEE\x95\x8B" +#define ICON_MD_LOCAL_MALL "\xEE\x95\x8C" +#define ICON_MD_LOCAL_MOVIES "\xEE\x95\x8D" +#define ICON_MD_LOCAL_OFFER "\xEE\x95\x8E" +#define ICON_MD_LOCAL_PARKING "\xEE\x95\x8F" +#define ICON_MD_LOCAL_PHARMACY "\xEE\x95\x90" +#define ICON_MD_LOCAL_PHONE "\xEE\x95\x91" +#define ICON_MD_LOCAL_PIZZA "\xEE\x95\x92" +#define ICON_MD_LOCAL_PLAY "\xEE\x95\x93" +#define ICON_MD_LOCAL_POST_OFFICE "\xEE\x95\x94" +#define ICON_MD_LOCAL_PRINTSHOP "\xEE\x95\x95" +#define ICON_MD_LOCAL_SEE "\xEE\x95\x97" +#define ICON_MD_LOCAL_SHIPPING "\xEE\x95\x98" +#define ICON_MD_LOCAL_TAXI "\xEE\x95\x99" +#define ICON_MD_LOCATION_CITY "\xEE\x9F\xB1" +#define ICON_MD_LOCATION_DISABLED "\xEE\x86\xB6" +#define ICON_MD_LOCATION_OFF "\xEE\x83\x87" +#define ICON_MD_LOCATION_ON "\xEE\x83\x88" +#define ICON_MD_LOCATION_SEARCHING "\xEE\x86\xB7" +#define ICON_MD_LOCK "\xEE\xA2\x97" +#define ICON_MD_LOCK_OPEN "\xEE\xA2\x98" +#define ICON_MD_LOCK_OUTLINE "\xEE\xA2\x99" +#define ICON_MD_LOOKS "\xEE\x8F\xBC" +#define ICON_MD_LOOKS_3 "\xEE\x8F\xBB" +#define ICON_MD_LOOKS_4 "\xEE\x8F\xBD" +#define ICON_MD_LOOKS_5 "\xEE\x8F\xBE" +#define ICON_MD_LOOKS_6 "\xEE\x8F\xBF" +#define ICON_MD_LOOKS_ONE "\xEE\x90\x80" +#define ICON_MD_LOOKS_TWO "\xEE\x90\x81" +#define ICON_MD_LOOP "\xEE\x80\xA8" +#define ICON_MD_LOUPE "\xEE\x90\x82" +#define ICON_MD_LOW_PRIORITY "\xEE\x85\xAD" +#define ICON_MD_LOYALTY "\xEE\xA2\x9A" +#define ICON_MD_MAIL "\xEE\x85\x98" +#define ICON_MD_MAIL_OUTLINE "\xEE\x83\xA1" +#define ICON_MD_MAP "\xEE\x95\x9B" +#define ICON_MD_MARKUNREAD "\xEE\x85\x99" +#define ICON_MD_MARKUNREAD_MAILBOX "\xEE\xA2\x9B" +#define ICON_MD_MEMORY "\xEE\x8C\xA2" +#define ICON_MD_MENU "\xEE\x97\x92" +#define ICON_MD_MERGE_TYPE "\xEE\x89\x92" +#define ICON_MD_MESSAGE "\xEE\x83\x89" +#define ICON_MD_MIC "\xEE\x80\xA9" +#define ICON_MD_MIC_NONE "\xEE\x80\xAA" +#define ICON_MD_MIC_OFF "\xEE\x80\xAB" +#define ICON_MD_MMS "\xEE\x98\x98" +#define ICON_MD_MODE_COMMENT "\xEE\x89\x93" +#define ICON_MD_MODE_EDIT "\xEE\x89\x94" +#define ICON_MD_MONETIZATION_ON "\xEE\x89\xA3" +#define ICON_MD_MONEY_OFF "\xEE\x89\x9C" +#define ICON_MD_MONOCHROME_PHOTOS "\xEE\x90\x83" +#define ICON_MD_MOOD "\xEE\x9F\xB2" +#define ICON_MD_MOOD_BAD "\xEE\x9F\xB3" +#define ICON_MD_MORE "\xEE\x98\x99" +#define ICON_MD_MORE_HORIZ "\xEE\x97\x93" +#define ICON_MD_MORE_VERT "\xEE\x97\x94" +#define ICON_MD_MOTORCYCLE "\xEE\xA4\x9B" +#define ICON_MD_MOUSE "\xEE\x8C\xA3" +#define ICON_MD_MOVE_TO_INBOX "\xEE\x85\xA8" +#define ICON_MD_MOVIE "\xEE\x80\xAC" +#define ICON_MD_MOVIE_CREATION "\xEE\x90\x84" +#define ICON_MD_MOVIE_FILTER "\xEE\x90\xBA" +#define ICON_MD_MULTILINE_CHART "\xEE\x9B\x9F" +#define ICON_MD_MUSIC_NOTE "\xEE\x90\x85" +#define ICON_MD_MUSIC_VIDEO "\xEE\x81\xA3" +#define ICON_MD_MY_LOCATION "\xEE\x95\x9C" +#define ICON_MD_NATURE "\xEE\x90\x86" +#define ICON_MD_NATURE_PEOPLE "\xEE\x90\x87" +#define ICON_MD_NAVIGATE_BEFORE "\xEE\x90\x88" +#define ICON_MD_NAVIGATE_NEXT "\xEE\x90\x89" +#define ICON_MD_NAVIGATION "\xEE\x95\x9D" +#define ICON_MD_NEAR_ME "\xEE\x95\xA9" +#define ICON_MD_NETWORK_CELL "\xEE\x86\xB9" +#define ICON_MD_NETWORK_CHECK "\xEE\x99\x80" +#define ICON_MD_NETWORK_LOCKED "\xEE\x98\x9A" +#define ICON_MD_NETWORK_WIFI "\xEE\x86\xBA" +#define ICON_MD_NEW_RELEASES "\xEE\x80\xB1" +#define ICON_MD_NEXT_WEEK "\xEE\x85\xAA" +#define ICON_MD_NFC "\xEE\x86\xBB" +#define ICON_MD_NO_ENCRYPTION "\xEE\x99\x81" +#define ICON_MD_NO_SIM "\xEE\x83\x8C" +#define ICON_MD_NOT_INTERESTED "\xEE\x80\xB3" +#define ICON_MD_NOTE "\xEE\x81\xAF" +#define ICON_MD_NOTE_ADD "\xEE\xA2\x9C" +#define ICON_MD_NOTIFICATIONS "\xEE\x9F\xB4" +#define ICON_MD_NOTIFICATIONS_ACTIVE "\xEE\x9F\xB7" +#define ICON_MD_NOTIFICATIONS_NONE "\xEE\x9F\xB5" +#define ICON_MD_NOTIFICATIONS_OFF "\xEE\x9F\xB6" +#define ICON_MD_NOTIFICATIONS_PAUSED "\xEE\x9F\xB8" +#define ICON_MD_OFFLINE_PIN "\xEE\xA4\x8A" +#define ICON_MD_ONDEMAND_VIDEO "\xEE\x98\xBA" +#define ICON_MD_OPACITY "\xEE\xA4\x9C" +#define ICON_MD_OPEN_IN_BROWSER "\xEE\xA2\x9D" +#define ICON_MD_OPEN_IN_NEW "\xEE\xA2\x9E" +#define ICON_MD_OPEN_WITH "\xEE\xA2\x9F" +#define ICON_MD_PAGES "\xEE\x9F\xB9" +#define ICON_MD_PAGEVIEW "\xEE\xA2\xA0" +#define ICON_MD_PALETTE "\xEE\x90\x8A" +#define ICON_MD_PAN_TOOL "\xEE\xA4\xA5" +#define ICON_MD_PANORAMA "\xEE\x90\x8B" +#define ICON_MD_PANORAMA_FISH_EYE "\xEE\x90\x8C" +#define ICON_MD_PANORAMA_HORIZONTAL "\xEE\x90\x8D" +#define ICON_MD_PANORAMA_VERTICAL "\xEE\x90\x8E" +#define ICON_MD_PANORAMA_WIDE_ANGLE "\xEE\x90\x8F" +#define ICON_MD_PARTY_MODE "\xEE\x9F\xBA" +#define ICON_MD_PAUSE "\xEE\x80\xB4" +#define ICON_MD_PAUSE_CIRCLE_FILLED "\xEE\x80\xB5" +#define ICON_MD_PAUSE_CIRCLE_OUTLINE "\xEE\x80\xB6" +#define ICON_MD_PAYMENT "\xEE\xA2\xA1" +#define ICON_MD_PEOPLE "\xEE\x9F\xBB" +#define ICON_MD_PEOPLE_OUTLINE "\xEE\x9F\xBC" +#define ICON_MD_PERM_CAMERA_MIC "\xEE\xA2\xA2" +#define ICON_MD_PERM_CONTACT_CALENDAR "\xEE\xA2\xA3" +#define ICON_MD_PERM_DATA_SETTING "\xEE\xA2\xA4" +#define ICON_MD_PERM_DEVICE_INFORMATION "\xEE\xA2\xA5" +#define ICON_MD_PERM_IDENTITY "\xEE\xA2\xA6" +#define ICON_MD_PERM_MEDIA "\xEE\xA2\xA7" +#define ICON_MD_PERM_PHONE_MSG "\xEE\xA2\xA8" +#define ICON_MD_PERM_SCAN_WIFI "\xEE\xA2\xA9" +#define ICON_MD_PERSON "\xEE\x9F\xBD" +#define ICON_MD_PERSON_ADD "\xEE\x9F\xBE" +#define ICON_MD_PERSON_OUTLINE "\xEE\x9F\xBF" +#define ICON_MD_PERSON_PIN "\xEE\x95\x9A" +#define ICON_MD_PERSON_PIN_CIRCLE "\xEE\x95\xAA" +#define ICON_MD_PERSONAL_VIDEO "\xEE\x98\xBB" +#define ICON_MD_PETS "\xEE\xA4\x9D" +#define ICON_MD_PHONE "\xEE\x83\x8D" +#define ICON_MD_PHONE_ANDROID "\xEE\x8C\xA4" +#define ICON_MD_PHONE_BLUETOOTH_SPEAKER "\xEE\x98\x9B" +#define ICON_MD_PHONE_FORWARDED "\xEE\x98\x9C" +#define ICON_MD_PHONE_IN_TALK "\xEE\x98\x9D" +#define ICON_MD_PHONE_IPHONE "\xEE\x8C\xA5" +#define ICON_MD_PHONE_LOCKED "\xEE\x98\x9E" +#define ICON_MD_PHONE_MISSED "\xEE\x98\x9F" +#define ICON_MD_PHONE_PAUSED "\xEE\x98\xA0" +#define ICON_MD_PHONELINK "\xEE\x8C\xA6" +#define ICON_MD_PHONELINK_ERASE "\xEE\x83\x9B" +#define ICON_MD_PHONELINK_LOCK "\xEE\x83\x9C" +#define ICON_MD_PHONELINK_OFF "\xEE\x8C\xA7" +#define ICON_MD_PHONELINK_RING "\xEE\x83\x9D" +#define ICON_MD_PHONELINK_SETUP "\xEE\x83\x9E" +#define ICON_MD_PHOTO "\xEE\x90\x90" +#define ICON_MD_PHOTO_ALBUM "\xEE\x90\x91" +#define ICON_MD_PHOTO_CAMERA "\xEE\x90\x92" +#define ICON_MD_PHOTO_FILTER "\xEE\x90\xBB" +#define ICON_MD_PHOTO_LIBRARY "\xEE\x90\x93" +#define ICON_MD_PHOTO_SIZE_SELECT_ACTUAL "\xEE\x90\xB2" +#define ICON_MD_PHOTO_SIZE_SELECT_LARGE "\xEE\x90\xB3" +#define ICON_MD_PHOTO_SIZE_SELECT_SMALL "\xEE\x90\xB4" +#define ICON_MD_PICTURE_AS_PDF "\xEE\x90\x95" +#define ICON_MD_PICTURE_IN_PICTURE "\xEE\xA2\xAA" +#define ICON_MD_PICTURE_IN_PICTURE_ALT "\xEE\xA4\x91" +#define ICON_MD_PIE_CHART "\xEE\x9B\x84" +#define ICON_MD_PIE_CHART_OUTLINED "\xEE\x9B\x85" +#define ICON_MD_PIN_DROP "\xEE\x95\x9E" +#define ICON_MD_PLACE "\xEE\x95\x9F" +#define ICON_MD_PLAY_ARROW "\xEE\x80\xB7" +#define ICON_MD_PLAY_CIRCLE_FILLED "\xEE\x80\xB8" +#define ICON_MD_PLAY_CIRCLE_OUTLINE "\xEE\x80\xB9" +#define ICON_MD_PLAY_FOR_WORK "\xEE\xA4\x86" +#define ICON_MD_PLAYLIST_ADD "\xEE\x80\xBB" +#define ICON_MD_PLAYLIST_ADD_CHECK "\xEE\x81\xA5" +#define ICON_MD_PLAYLIST_PLAY "\xEE\x81\x9F" +#define ICON_MD_PLUS_ONE "\xEE\xA0\x80" +#define ICON_MD_POLL "\xEE\xA0\x81" +#define ICON_MD_POLYMER "\xEE\xA2\xAB" +#define ICON_MD_POOL "\xEE\xAD\x88" +#define ICON_MD_PORTABLE_WIFI_OFF "\xEE\x83\x8E" +#define ICON_MD_PORTRAIT "\xEE\x90\x96" +#define ICON_MD_POWER "\xEE\x98\xBC" +#define ICON_MD_POWER_INPUT "\xEE\x8C\xB6" +#define ICON_MD_POWER_SETTINGS_NEW "\xEE\xA2\xAC" +#define ICON_MD_PREGNANT_WOMAN "\xEE\xA4\x9E" +#define ICON_MD_PRESENT_TO_ALL "\xEE\x83\x9F" +#define ICON_MD_PRINT "\xEE\xA2\xAD" +#define ICON_MD_PRIORITY_HIGH "\xEE\x99\x85" +#define ICON_MD_PUBLIC "\xEE\xA0\x8B" +#define ICON_MD_PUBLISH "\xEE\x89\x95" +#define ICON_MD_QUERY_BUILDER "\xEE\xA2\xAE" +#define ICON_MD_QUESTION_ANSWER "\xEE\xA2\xAF" +#define ICON_MD_QUEUE "\xEE\x80\xBC" +#define ICON_MD_QUEUE_MUSIC "\xEE\x80\xBD" +#define ICON_MD_QUEUE_PLAY_NEXT "\xEE\x81\xA6" +#define ICON_MD_RADIO "\xEE\x80\xBE" +#define ICON_MD_RADIO_BUTTON_CHECKED "\xEE\xA0\xB7" +#define ICON_MD_RADIO_BUTTON_UNCHECKED "\xEE\xA0\xB6" +#define ICON_MD_RATE_REVIEW "\xEE\x95\xA0" +#define ICON_MD_RECEIPT "\xEE\xA2\xB0" +#define ICON_MD_RECENT_ACTORS "\xEE\x80\xBF" +#define ICON_MD_RECORD_VOICE_OVER "\xEE\xA4\x9F" +#define ICON_MD_REDEEM "\xEE\xA2\xB1" +#define ICON_MD_REDO "\xEE\x85\x9A" +#define ICON_MD_REFRESH "\xEE\x97\x95" +#define ICON_MD_REMOVE "\xEE\x85\x9B" +#define ICON_MD_REMOVE_CIRCLE "\xEE\x85\x9C" +#define ICON_MD_REMOVE_CIRCLE_OUTLINE "\xEE\x85\x9D" +#define ICON_MD_REMOVE_FROM_QUEUE "\xEE\x81\xA7" +#define ICON_MD_REMOVE_RED_EYE "\xEE\x90\x97" +#define ICON_MD_REMOVE_SHOPPING_CART "\xEE\xA4\xA8" +#define ICON_MD_REORDER "\xEE\xA3\xBE" +#define ICON_MD_REPEAT "\xEE\x81\x80" +#define ICON_MD_REPEAT_ONE "\xEE\x81\x81" +#define ICON_MD_REPLAY "\xEE\x81\x82" +#define ICON_MD_REPLAY_10 "\xEE\x81\x99" +#define ICON_MD_REPLAY_30 "\xEE\x81\x9A" +#define ICON_MD_REPLAY_5 "\xEE\x81\x9B" +#define ICON_MD_REPLY "\xEE\x85\x9E" +#define ICON_MD_REPLY_ALL "\xEE\x85\x9F" +#define ICON_MD_REPORT "\xEE\x85\xA0" +#define ICON_MD_REPORT_PROBLEM "\xEE\xA2\xB2" +#define ICON_MD_RESTAURANT "\xEE\x95\xAC" +#define ICON_MD_RESTAURANT_MENU "\xEE\x95\xA1" +#define ICON_MD_RESTORE "\xEE\xA2\xB3" +#define ICON_MD_RESTORE_PAGE "\xEE\xA4\xA9" +#define ICON_MD_RING_VOLUME "\xEE\x83\x91" +#define ICON_MD_ROOM "\xEE\xA2\xB4" +#define ICON_MD_ROOM_SERVICE "\xEE\xAD\x89" +#define ICON_MD_ROTATE_90_DEGREES_CCW "\xEE\x90\x98" +#define ICON_MD_ROTATE_LEFT "\xEE\x90\x99" +#define ICON_MD_ROTATE_RIGHT "\xEE\x90\x9A" +#define ICON_MD_ROUNDED_CORNER "\xEE\xA4\xA0" +#define ICON_MD_ROUTER "\xEE\x8C\xA8" +#define ICON_MD_ROWING "\xEE\xA4\xA1" +#define ICON_MD_RSS_FEED "\xEE\x83\xA5" +#define ICON_MD_RV_HOOKUP "\xEE\x99\x82" +#define ICON_MD_SATELLITE "\xEE\x95\xA2" +#define ICON_MD_SAVE "\xEE\x85\xA1" +#define ICON_MD_SCANNER "\xEE\x8C\xA9" +#define ICON_MD_SCHEDULE "\xEE\xA2\xB5" +#define ICON_MD_SCHOOL "\xEE\xA0\x8C" +#define ICON_MD_SCREEN_LOCK_LANDSCAPE "\xEE\x86\xBE" +#define ICON_MD_SCREEN_LOCK_PORTRAIT "\xEE\x86\xBF" +#define ICON_MD_SCREEN_LOCK_ROTATION "\xEE\x87\x80" +#define ICON_MD_SCREEN_ROTATION "\xEE\x87\x81" +#define ICON_MD_SCREEN_SHARE "\xEE\x83\xA2" +#define ICON_MD_SD_CARD "\xEE\x98\xA3" +#define ICON_MD_SD_STORAGE "\xEE\x87\x82" +#define ICON_MD_SEARCH "\xEE\xA2\xB6" +#define ICON_MD_SECURITY "\xEE\x8C\xAA" +#define ICON_MD_SELECT_ALL "\xEE\x85\xA2" +#define ICON_MD_SEND "\xEE\x85\xA3" +#define ICON_MD_SENTIMENT_DISSATISFIED "\xEE\xA0\x91" +#define ICON_MD_SENTIMENT_NEUTRAL "\xEE\xA0\x92" +#define ICON_MD_SENTIMENT_SATISFIED "\xEE\xA0\x93" +#define ICON_MD_SENTIMENT_VERY_DISSATISFIED "\xEE\xA0\x94" +#define ICON_MD_SENTIMENT_VERY_SATISFIED "\xEE\xA0\x95" +#define ICON_MD_SETTINGS "\xEE\xA2\xB8" +#define ICON_MD_SETTINGS_APPLICATIONS "\xEE\xA2\xB9" +#define ICON_MD_SETTINGS_BACKUP_RESTORE "\xEE\xA2\xBA" +#define ICON_MD_SETTINGS_BLUETOOTH "\xEE\xA2\xBB" +#define ICON_MD_SETTINGS_BRIGHTNESS "\xEE\xA2\xBD" +#define ICON_MD_SETTINGS_CELL "\xEE\xA2\xBC" +#define ICON_MD_SETTINGS_ETHERNET "\xEE\xA2\xBE" +#define ICON_MD_SETTINGS_INPUT_ANTENNA "\xEE\xA2\xBF" +#define ICON_MD_SETTINGS_INPUT_COMPONENT "\xEE\xA3\x80" +#define ICON_MD_SETTINGS_INPUT_COMPOSITE "\xEE\xA3\x81" +#define ICON_MD_SETTINGS_INPUT_HDMI "\xEE\xA3\x82" +#define ICON_MD_SETTINGS_INPUT_SVIDEO "\xEE\xA3\x83" +#define ICON_MD_SETTINGS_OVERSCAN "\xEE\xA3\x84" +#define ICON_MD_SETTINGS_PHONE "\xEE\xA3\x85" +#define ICON_MD_SETTINGS_POWER "\xEE\xA3\x86" +#define ICON_MD_SETTINGS_REMOTE "\xEE\xA3\x87" +#define ICON_MD_SETTINGS_SYSTEM_DAYDREAM "\xEE\x87\x83" +#define ICON_MD_SETTINGS_VOICE "\xEE\xA3\x88" +#define ICON_MD_SHARE "\xEE\xA0\x8D" +#define ICON_MD_SHOP "\xEE\xA3\x89" +#define ICON_MD_SHOP_TWO "\xEE\xA3\x8A" +#define ICON_MD_SHOPPING_BASKET "\xEE\xA3\x8B" +#define ICON_MD_SHOPPING_CART "\xEE\xA3\x8C" +#define ICON_MD_SHORT_TEXT "\xEE\x89\xA1" +#define ICON_MD_SHOW_CHART "\xEE\x9B\xA1" +#define ICON_MD_SHUFFLE "\xEE\x81\x83" +#define ICON_MD_SIGNAL_CELLULAR_4_BAR "\xEE\x87\x88" +#define ICON_MD_SIGNAL_CELLULAR_CONNECTED_NO_INTERNET_4_BAR "\xEE\x87\x8D" +#define ICON_MD_SIGNAL_CELLULAR_NO_SIM "\xEE\x87\x8E" +#define ICON_MD_SIGNAL_CELLULAR_NULL "\xEE\x87\x8F" +#define ICON_MD_SIGNAL_CELLULAR_OFF "\xEE\x87\x90" +#define ICON_MD_SIGNAL_WIFI_4_BAR "\xEE\x87\x98" +#define ICON_MD_SIGNAL_WIFI_4_BAR_LOCK "\xEE\x87\x99" +#define ICON_MD_SIGNAL_WIFI_OFF "\xEE\x87\x9A" +#define ICON_MD_SIM_CARD "\xEE\x8C\xAB" +#define ICON_MD_SIM_CARD_ALERT "\xEE\x98\xA4" +#define ICON_MD_SKIP_NEXT "\xEE\x81\x84" +#define ICON_MD_SKIP_PREVIOUS "\xEE\x81\x85" +#define ICON_MD_SLIDESHOW "\xEE\x90\x9B" +#define ICON_MD_SLOW_MOTION_VIDEO "\xEE\x81\xA8" +#define ICON_MD_SMARTPHONE "\xEE\x8C\xAC" +#define ICON_MD_SMOKE_FREE "\xEE\xAD\x8A" +#define ICON_MD_SMOKING_ROOMS "\xEE\xAD\x8B" +#define ICON_MD_SMS "\xEE\x98\xA5" +#define ICON_MD_SMS_FAILED "\xEE\x98\xA6" +#define ICON_MD_SNOOZE "\xEE\x81\x86" +#define ICON_MD_SORT "\xEE\x85\xA4" +#define ICON_MD_SORT_BY_ALPHA "\xEE\x81\x93" +#define ICON_MD_SPA "\xEE\xAD\x8C" +#define ICON_MD_SPACE_BAR "\xEE\x89\x96" +#define ICON_MD_SPEAKER "\xEE\x8C\xAD" +#define ICON_MD_SPEAKER_GROUP "\xEE\x8C\xAE" +#define ICON_MD_SPEAKER_NOTES "\xEE\xA3\x8D" +#define ICON_MD_SPEAKER_NOTES_OFF "\xEE\xA4\xAA" +#define ICON_MD_SPEAKER_PHONE "\xEE\x83\x92" +#define ICON_MD_SPELLCHECK "\xEE\xA3\x8E" +#define ICON_MD_STAR "\xEE\xA0\xB8" +#define ICON_MD_STAR_BORDER "\xEE\xA0\xBA" +#define ICON_MD_STAR_HALF "\xEE\xA0\xB9" +#define ICON_MD_STARS "\xEE\xA3\x90" +#define ICON_MD_STAY_CURRENT_LANDSCAPE "\xEE\x83\x93" +#define ICON_MD_STAY_CURRENT_PORTRAIT "\xEE\x83\x94" +#define ICON_MD_STAY_PRIMARY_LANDSCAPE "\xEE\x83\x95" +#define ICON_MD_STAY_PRIMARY_PORTRAIT "\xEE\x83\x96" +#define ICON_MD_STOP "\xEE\x81\x87" +#define ICON_MD_STOP_SCREEN_SHARE "\xEE\x83\xA3" +#define ICON_MD_STORAGE "\xEE\x87\x9B" +#define ICON_MD_STORE "\xEE\xA3\x91" +#define ICON_MD_STORE_MALL_DIRECTORY "\xEE\x95\xA3" +#define ICON_MD_STRAIGHTEN "\xEE\x90\x9C" +#define ICON_MD_STREETVIEW "\xEE\x95\xAE" +#define ICON_MD_STRIKETHROUGH_S "\xEE\x89\x97" +#define ICON_MD_STYLE "\xEE\x90\x9D" +#define ICON_MD_SUBDIRECTORY_ARROW_LEFT "\xEE\x97\x99" +#define ICON_MD_SUBDIRECTORY_ARROW_RIGHT "\xEE\x97\x9A" +#define ICON_MD_SUBJECT "\xEE\xA3\x92" +#define ICON_MD_SUBSCRIPTIONS "\xEE\x81\xA4" +#define ICON_MD_SUBTITLES "\xEE\x81\x88" +#define ICON_MD_SUBWAY "\xEE\x95\xAF" +#define ICON_MD_SUPERVISOR_ACCOUNT "\xEE\xA3\x93" +#define ICON_MD_SURROUND_SOUND "\xEE\x81\x89" +#define ICON_MD_SWAP_CALLS "\xEE\x83\x97" +#define ICON_MD_SWAP_HORIZ "\xEE\xA3\x94" +#define ICON_MD_SWAP_VERT "\xEE\xA3\x95" +#define ICON_MD_SWAP_VERTICAL_CIRCLE "\xEE\xA3\x96" +#define ICON_MD_SWITCH_CAMERA "\xEE\x90\x9E" +#define ICON_MD_SWITCH_VIDEO "\xEE\x90\x9F" +#define ICON_MD_SYNC "\xEE\x98\xA7" +#define ICON_MD_SYNC_DISABLED "\xEE\x98\xA8" +#define ICON_MD_SYNC_PROBLEM "\xEE\x98\xA9" +#define ICON_MD_SYSTEM_UPDATE "\xEE\x98\xAA" +#define ICON_MD_SYSTEM_UPDATE_ALT "\xEE\xA3\x97" +#define ICON_MD_TAB "\xEE\xA3\x98" +#define ICON_MD_TAB_UNSELECTED "\xEE\xA3\x99" +#define ICON_MD_TABLET "\xEE\x8C\xAF" +#define ICON_MD_TABLET_ANDROID "\xEE\x8C\xB0" +#define ICON_MD_TABLET_MAC "\xEE\x8C\xB1" +#define ICON_MD_TAG_FACES "\xEE\x90\xA0" +#define ICON_MD_TAP_AND_PLAY "\xEE\x98\xAB" +#define ICON_MD_TERRAIN "\xEE\x95\xA4" +#define ICON_MD_TEXT_FIELDS "\xEE\x89\xA2" +#define ICON_MD_TEXT_FORMAT "\xEE\x85\xA5" +#define ICON_MD_TEXTSMS "\xEE\x83\x98" +#define ICON_MD_TEXTURE "\xEE\x90\xA1" +#define ICON_MD_THEATERS "\xEE\xA3\x9A" +#define ICON_MD_THUMB_DOWN "\xEE\xA3\x9B" +#define ICON_MD_THUMB_UP "\xEE\xA3\x9C" +#define ICON_MD_THUMBS_UP_DOWN "\xEE\xA3\x9D" +#define ICON_MD_TIME_TO_LEAVE "\xEE\x98\xAC" +#define ICON_MD_TIMELAPSE "\xEE\x90\xA2" +#define ICON_MD_TIMELINE "\xEE\xA4\xA2" +#define ICON_MD_TIMER "\xEE\x90\xA5" +#define ICON_MD_TIMER_10 "\xEE\x90\xA3" +#define ICON_MD_TIMER_3 "\xEE\x90\xA4" +#define ICON_MD_TIMER_OFF "\xEE\x90\xA6" +#define ICON_MD_TITLE "\xEE\x89\xA4" +#define ICON_MD_TOC "\xEE\xA3\x9E" +#define ICON_MD_TODAY "\xEE\xA3\x9F" +#define ICON_MD_TOLL "\xEE\xA3\xA0" +#define ICON_MD_TONALITY "\xEE\x90\xA7" +#define ICON_MD_TOUCH_APP "\xEE\xA4\x93" +#define ICON_MD_TOYS "\xEE\x8C\xB2" +#define ICON_MD_TRACK_CHANGES "\xEE\xA3\xA1" +#define ICON_MD_TRAFFIC "\xEE\x95\xA5" +#define ICON_MD_TRAIN "\xEE\x95\xB0" +#define ICON_MD_TRAM "\xEE\x95\xB1" +#define ICON_MD_TRANSFER_WITHIN_A_STATION "\xEE\x95\xB2" +#define ICON_MD_TRANSFORM "\xEE\x90\xA8" +#define ICON_MD_TRANSLATE "\xEE\xA3\xA2" +#define ICON_MD_TRENDING_DOWN "\xEE\xA3\xA3" +#define ICON_MD_TRENDING_FLAT "\xEE\xA3\xA4" +#define ICON_MD_TRENDING_UP "\xEE\xA3\xA5" +#define ICON_MD_TUNE "\xEE\x90\xA9" +#define ICON_MD_TURNED_IN "\xEE\xA3\xA6" +#define ICON_MD_TURNED_IN_NOT "\xEE\xA3\xA7" +#define ICON_MD_TV "\xEE\x8C\xB3" +#define ICON_MD_UNARCHIVE "\xEE\x85\xA9" +#define ICON_MD_UNDO "\xEE\x85\xA6" +#define ICON_MD_UNFOLD_LESS "\xEE\x97\x96" +#define ICON_MD_UNFOLD_MORE "\xEE\x97\x97" +#define ICON_MD_UPDATE "\xEE\xA4\xA3" +#define ICON_MD_USB "\xEE\x87\xA0" +#define ICON_MD_VERIFIED_USER "\xEE\xA3\xA8" +#define ICON_MD_VERTICAL_ALIGN_BOTTOM "\xEE\x89\x98" +#define ICON_MD_VERTICAL_ALIGN_CENTER "\xEE\x89\x99" +#define ICON_MD_VERTICAL_ALIGN_TOP "\xEE\x89\x9A" +#define ICON_MD_VIBRATION "\xEE\x98\xAD" +#define ICON_MD_VIDEO_CALL "\xEE\x81\xB0" +#define ICON_MD_VIDEO_LABEL "\xEE\x81\xB1" +#define ICON_MD_VIDEO_LIBRARY "\xEE\x81\x8A" +#define ICON_MD_VIDEOCAM "\xEE\x81\x8B" +#define ICON_MD_VIDEOCAM_OFF "\xEE\x81\x8C" +#define ICON_MD_VIDEOGAME_ASSET "\xEE\x8C\xB8" +#define ICON_MD_VIEW_AGENDA "\xEE\xA3\xA9" +#define ICON_MD_VIEW_ARRAY "\xEE\xA3\xAA" +#define ICON_MD_VIEW_CAROUSEL "\xEE\xA3\xAB" +#define ICON_MD_VIEW_COLUMN "\xEE\xA3\xAC" +#define ICON_MD_VIEW_COMFY "\xEE\x90\xAA" +#define ICON_MD_VIEW_COMPACT "\xEE\x90\xAB" +#define ICON_MD_VIEW_DAY "\xEE\xA3\xAD" +#define ICON_MD_VIEW_HEADLINE "\xEE\xA3\xAE" +#define ICON_MD_VIEW_LIST "\xEE\xA3\xAF" +#define ICON_MD_VIEW_MODULE "\xEE\xA3\xB0" +#define ICON_MD_VIEW_QUILT "\xEE\xA3\xB1" +#define ICON_MD_VIEW_STREAM "\xEE\xA3\xB2" +#define ICON_MD_VIEW_WEEK "\xEE\xA3\xB3" +#define ICON_MD_VIGNETTE "\xEE\x90\xB5" +#define ICON_MD_VISIBILITY "\xEE\xA3\xB4" +#define ICON_MD_VISIBILITY_OFF "\xEE\xA3\xB5" +#define ICON_MD_VOICE_CHAT "\xEE\x98\xAE" +#define ICON_MD_VOICEMAIL "\xEE\x83\x99" +#define ICON_MD_VOLUME_DOWN "\xEE\x81\x8D" +#define ICON_MD_VOLUME_MUTE "\xEE\x81\x8E" +#define ICON_MD_VOLUME_OFF "\xEE\x81\x8F" +#define ICON_MD_VOLUME_UP "\xEE\x81\x90" +#define ICON_MD_VPN_KEY "\xEE\x83\x9A" +#define ICON_MD_VPN_LOCK "\xEE\x98\xAF" +#define ICON_MD_WALLPAPER "\xEE\x86\xBC" +#define ICON_MD_WARNING "\xEE\x80\x82" +#define ICON_MD_WATCH "\xEE\x8C\xB4" +#define ICON_MD_WATCH_LATER "\xEE\xA4\xA4" +#define ICON_MD_WB_AUTO "\xEE\x90\xAC" +#define ICON_MD_WB_CLOUDY "\xEE\x90\xAD" +#define ICON_MD_WB_INCANDESCENT "\xEE\x90\xAE" +#define ICON_MD_WB_IRIDESCENT "\xEE\x90\xB6" +#define ICON_MD_WB_SUNNY "\xEE\x90\xB0" +#define ICON_MD_WC "\xEE\x98\xBD" +#define ICON_MD_WEB "\xEE\x81\x91" +#define ICON_MD_WEB_ASSET "\xEE\x81\xA9" +#define ICON_MD_WEEKEND "\xEE\x85\xAB" +#define ICON_MD_WHATSHOT "\xEE\xA0\x8E" +#define ICON_MD_WIDGETS "\xEE\x86\xBD" +#define ICON_MD_WIFI "\xEE\x98\xBE" +#define ICON_MD_WIFI_LOCK "\xEE\x87\xA1" +#define ICON_MD_WIFI_TETHERING "\xEE\x87\xA2" +#define ICON_MD_WORK "\xEE\xA3\xB9" +#define ICON_MD_WRAP_TEXT "\xEE\x89\x9B" +#define ICON_MD_YOUTUBE_SEARCHED_FOR "\xEE\xA3\xBA" +#define ICON_MD_ZOOM_IN "\xEE\xA3\xBF" +#define ICON_MD_ZOOM_OUT "\xEE\xA4\x80" +#define ICON_MD_ZOOM_OUT_MAP "\xEE\x95\xAB" diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp index 0949fe7de96..aa8d8f1d657 100644 --- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp +++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp @@ -830,10 +830,9 @@ int ImStrnicmp(const char* str1, const char* str2, int count) char* ImStrdup(const char *str) { - char *buff = (char*)ImGui::MemAlloc(strlen(str) + 1); - IM_ASSERT(buff); - strcpy(buff, str); - return buff; + size_t len = strlen(str) + 1; + void* buff = ImGui::MemAlloc(len); + return (char*)memcpy(buff, (const void*)str, len); } int ImStrlenW(const ImWchar* str) diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp index 8fd48b0b01b..7c9653772d9 100644 --- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp +++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp @@ -1894,6 +1894,11 @@ struct ExampleAppConsole free(History[i]); } + // Portable helpers + static int Stricmp(const char* str1, const char* str2) { int d; while ((d = toupper(*str2) - toupper(*str1)) == 0 && *str1) { str1++; str2++; } return d; } + static int Strnicmp(const char* str1, const char* str2, int n) { int d = 0; while (n > 0 && (d = toupper(*str2) - toupper(*str1)) == 0 && *str1) { str1++; str2++; n--; } return d; } + static char* Strdup(const char *str) { size_t len = strlen(str) + 1; void* buff = ImGui::MemAlloc(len); return (char*)memcpy(buff, (const void*)str, len); } + void ClearLog() { for (int i = 0; i < Items.Size; i++) @@ -1910,7 +1915,7 @@ struct ExampleAppConsole vsnprintf(buf, IM_ARRAYSIZE(buf), fmt, args); buf[IM_ARRAYSIZE(buf)-1] = 0; va_end(args); - Items.push_back(strdup(buf)); + Items.push_back(Strdup(buf)); ScrollToBottom = true; } @@ -1987,9 +1992,6 @@ struct ExampleAppConsole ImGui::End(); } - static int Stricmp(const char* str1, const char* str2) { int d; while ((d = toupper(*str2) - toupper(*str1)) == 0 && *str1) { str1++; str2++; } return d; } - static int Strnicmp(const char* str1, const char* str2, int count) { int d = 0; while (count > 0 && (d = toupper(*str2) - toupper(*str1)) == 0 && *str1) { str1++; str2++; count--; } return d; } - void ExecCommand(const char* command_line) { AddLog("# %s\n", command_line); @@ -2003,7 +2005,7 @@ struct ExampleAppConsole History.erase(History.begin() + i); break; } - History.push_back(strdup(command_line)); + History.push_back(Strdup(command_line)); // Process command if (Stricmp(command_line, "CLEAR") == 0) diff --git a/3rdparty/bgfx/README.md b/3rdparty/bgfx/README.md index 2b444eb809f..521853b6f2b 100644 --- a/3rdparty/bgfx/README.md +++ b/3rdparty/bgfx/README.md @@ -37,6 +37,7 @@ Supported platforms: * Native Client (PPAPI 37+, ARM, x86, x64, PNaCl) * OSX (10.9+) * RaspberryPi + * SteamLink * Windows (XP, Vista, 7, 8, 10) * WinRT (WinPhone 8.0+) @@ -99,7 +100,7 @@ deployment model of web with the performance of native code and GPU acceleration https://github.com/nem0/LumixEngine LumixEngine is a MIT licensed 3D engine. The main goal is performance and Unity-like usability. - + https://github.com/podgorskiy/KeplerOrbits KeplerOrbits - Tool that calculates positions of celestial bodies using their orbital elements. [Web Demo](http://podgorskiy.com/KeplerOrbits/KeplerOrbits.html) diff --git a/3rdparty/bgfx/examples/10-font/font.cpp b/3rdparty/bgfx/examples/10-font/font.cpp index 97111e1b175..a15cef4baae 100644 --- a/3rdparty/bgfx/examples/10-font/font.cpp +++ b/3rdparty/bgfx/examples/10-font/font.cpp @@ -14,6 +14,9 @@ #include "font/text_buffer_manager.h" #include "entry/input.h" +#include <iconfontheaders/icons_font_awesome.h> +#include <iconfontheaders/icons_kenney.h> + #include <stdio.h> #include <wchar.h> @@ -105,10 +108,12 @@ int _main_(int _argc, char** _argv) } TrueTypeHandle fontAwesomeTtf = loadTtf(fontManager, "font/fontawesome-webfont.ttf"); + TrueTypeHandle fontKenneyTtf = loadTtf(fontManager, "font/kenney-icon-font.ttf"); // This font doesn't have any preloaded glyph's but the truetype file // is loaded so glyph will be generated as needed. FontHandle fontAwesome72 = fontManager->createFontByPixelSize(fontAwesomeTtf, 0, 72); + FontHandle fontKenney64 = fontManager->createFontByPixelSize(fontKenneyTtf, 0, 64); TrueTypeHandle visitorTtf = loadTtf(fontManager, "font/visitor1.ttf"); @@ -160,7 +165,24 @@ int _main_(int _argc, char** _argv) textBufferManager->appendText(staticText, fonts[0], L"dog\n"); textBufferManager->setStyle(staticText, STYLE_NORMAL); - textBufferManager->appendText(staticText, fontAwesome72, L"\xf011 \xf02e \xf061 \xf087 \xf0d9 \xf099 \xf05c \xf021 \xf113\n"); + textBufferManager->appendText(staticText, fontAwesome72, + " " ICON_FA_POWER_OFF + " " ICON_FA_TWITTER_SQUARE + " " ICON_FA_CERTIFICATE + " " ICON_FA_FLOPPY_O + " " ICON_FA_GITHUB + " " ICON_FA_GITHUB_ALT + "\n" + ); + textBufferManager->appendText(staticText, fontKenney64, + " " ICON_KI_COMPUTER + " " ICON_KI_JOYSTICK + " " ICON_KI_EXLAMATION + " " ICON_KI_STAR + " " ICON_KI_BUTTON_START + " " ICON_KI_DOWNLOAD + "\n" + ); // Create a transient buffer for real-time data. TextBufferHandle transientText = textBufferManager->createTextBuffer(FONT_TYPE_ALPHA, BufferType::Transient); @@ -242,10 +264,12 @@ int _main_(int _argc, char** _argv) bgfx::frame(); } + fontManager->destroyTtf(fontKenneyTtf); fontManager->destroyTtf(fontAwesomeTtf); fontManager->destroyTtf(visitorTtf); // Destroy the fonts. + fontManager->destroyFont(fontKenney64); fontManager->destroyFont(fontAwesome72); fontManager->destroyFont(visitor10); for (uint32_t ii = 0; ii < numFonts; ++ii) diff --git a/3rdparty/bgfx/examples/common/bounds.cpp b/3rdparty/bgfx/examples/common/bounds.cpp index d2228e7eb63..3937b550567 100644 --- a/3rdparty/bgfx/examples/common/bounds.cpp +++ b/3rdparty/bgfx/examples/common/bounds.cpp @@ -277,6 +277,102 @@ void calcMinBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _num _sphere.m_radius = bx::fsqrt(maxDistSq); } +void buildFrustumPlanes(Plane* _result, const float* _viewProj) +{ + const float xw = _viewProj[ 3]; + const float yw = _viewProj[ 7]; + const float zw = _viewProj[11]; + const float ww = _viewProj[15]; + + const float xz = _viewProj[ 2]; + const float yz = _viewProj[ 6]; + const float zz = _viewProj[10]; + const float wz = _viewProj[14]; + + Plane& near = _result[0]; + Plane& far = _result[1]; + Plane& left = _result[2]; + Plane& right = _result[3]; + Plane& top = _result[4]; + Plane& bottom = _result[5]; + + near.m_normal[0] = xw - xz; + near.m_normal[1] = yw - yz; + near.m_normal[2] = zw - zz; + near.m_dist = ww - wz; + + far.m_normal[0] = xw + xz; + far.m_normal[1] = yw + yz; + far.m_normal[2] = zw + zz; + far.m_dist = ww + wz; + + const float xx = _viewProj[ 0]; + const float yx = _viewProj[ 4]; + const float zx = _viewProj[ 8]; + const float wx = _viewProj[12]; + + left.m_normal[0] = xw - xx; + left.m_normal[1] = yw - yx; + left.m_normal[2] = zw - zx; + left.m_dist = ww - wx; + + right.m_normal[0] = xw + xx; + right.m_normal[1] = yw + yx; + right.m_normal[2] = zw + zx; + right.m_dist = ww + wx; + + const float xy = _viewProj[ 1]; + const float yy = _viewProj[ 5]; + const float zy = _viewProj[ 9]; + const float wy = _viewProj[13]; + + top.m_normal[0] = xw + xy; + top.m_normal[1] = yw + yy; + top.m_normal[2] = zw + zy; + top.m_dist = ww + wy; + + bottom.m_normal[0] = xw - xy; + bottom.m_normal[1] = yw - yy; + bottom.m_normal[2] = zw - zy; + bottom.m_dist = ww - wy; + + Plane* plane = _result; + for (uint32_t ii = 0; ii < 6; ++ii) + { + float invLen = 1.0f / bx::vec3Norm(plane->m_normal, plane->m_normal); + plane->m_dist *= invLen; + ++plane; + } +} + +void intersectPlanes(float _result[3], const Plane& _pa, const Plane& _pb, const Plane& _pc) +{ + float axb[3]; + bx::vec3Cross(axb, _pa.m_normal, _pb.m_normal); + + float bxc[3]; + bx::vec3Cross(bxc, _pb.m_normal, _pc.m_normal); + + float cxa[3]; + bx::vec3Cross(cxa, _pc.m_normal, _pa.m_normal); + + float tmp0[3]; + bx::vec3Mul(tmp0, bxc, _pa.m_dist); + + float tmp1[3]; + bx::vec3Mul(tmp1, cxa, _pb.m_dist); + + float tmp2[3]; + bx::vec3Mul(tmp2, axb, _pc.m_dist); + + float tmp[3]; + bx::vec3Add(tmp, tmp0, tmp1); + bx::vec3Add(tmp0, tmp, tmp2); + + float denom = bx::vec3Dot(_pa.m_normal, bxc); + bx::vec3Mul(_result, tmp0, -1.0f/denom); +} + Ray makeRay(float _x, float _y, const float* _invVp) { Ray ray; diff --git a/3rdparty/bgfx/examples/common/bounds.h b/3rdparty/bgfx/examples/common/bounds.h index f59c2b2230f..24f23414f10 100644 --- a/3rdparty/bgfx/examples/common/bounds.h +++ b/3rdparty/bgfx/examples/common/bounds.h @@ -94,6 +94,12 @@ void calcMaxBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _num /// Calculate minimum bounding sphere. void calcMinBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _numVertices, uint32_t _stride, float _step = 0.01f); +/// Returns 6 (near, far, left, right, top, bottom) planes representing frustum planes. +void buildFrustumPlanes(Plane* _planes, const float* _viewProj); + +/// Returns point from 3 intersecting planes. +void intersectPlanes(float _result[3], const Plane& _pa, const Plane& _pb, const Plane& _pc); + /// Make screen space ray from x, y coordinate and inverse view-projection matrix. Ray makeRay(float _x, float _y, const float* _invVp); diff --git a/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp b/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp index 2bff902302c..989d0ae0667 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp @@ -218,6 +218,8 @@ namespace entry return wmi.info.cocoa.window; # elif BX_PLATFORM_WINDOWS return wmi.info.win.window; +# elif BX_PLATFORM_STEAMLINK + return wmi.info.vivante.window; # endif // BX_PLATFORM_ } diff --git a/3rdparty/bgfx/examples/common/imgui/imgui.cpp b/3rdparty/bgfx/examples/common/imgui/imgui.cpp index 2655e6ce0a1..4cdc5f30fe5 100644 --- a/3rdparty/bgfx/examples/common/imgui/imgui.cpp +++ b/3rdparty/bgfx/examples/common/imgui/imgui.cpp @@ -3572,3 +3572,10 @@ bool imguiMouseOverArea() { return s_imgui.m_insideArea; } + +bgfx::ProgramHandle imguiGetImageProgram(uint8_t _mip) +{ + const float lodEnabled[4] = { float(_mip), 1.0f, 0.0f, 0.0f }; + bgfx::setUniform(s_imgui.u_imageLodEnabled, lodEnabled); + return s_imgui.m_imageProgram; +} diff --git a/3rdparty/bgfx/examples/common/imgui/imgui.h b/3rdparty/bgfx/examples/common/imgui/imgui.h index 75269500c85..0ab18cb9f8a 100644 --- a/3rdparty/bgfx/examples/common/imgui/imgui.h +++ b/3rdparty/bgfx/examples/common/imgui/imgui.h @@ -208,12 +208,13 @@ bool imguiMouseOverArea(); namespace ImGui { -#define IMGUI_FLAGS_NONE UINT16_C(0x0000) -#define IMGUI_FLAGS_ALPHA_BLEND UINT16_C(0x0001) +#define IMGUI_FLAGS_NONE UINT8_C(0x00) +#define IMGUI_FLAGS_ALPHA_BLEND UINT8_C(0x01) // Helper function for passing bgfx::TextureHandle to ImGui::Image. inline void Image(bgfx::TextureHandle _handle - , uint16_t _flags + , uint8_t _flags + , uint8_t _mip , const ImVec2& _size , const ImVec2& _uv0 = ImVec2(0.0f, 0.0f) , const ImVec2& _uv1 = ImVec2(1.0f, 1.0f) @@ -221,9 +222,10 @@ namespace ImGui , const ImVec4& _borderCol = ImVec4(0.0f, 0.0f, 0.0f, 0.0f) ) { - union { struct { uint16_t flags; bgfx::TextureHandle handle; } s; ImTextureID ptr; } texture; - texture.s.flags = _flags; + union { struct { bgfx::TextureHandle handle; uint8_t flags; uint8_t mip; } s; ImTextureID ptr; } texture; texture.s.handle = _handle; + texture.s.flags = _flags; + texture.s.mip = _mip; Image(texture.ptr, _size, _uv0, _uv1, _tintCol, _borderCol); } @@ -236,12 +238,13 @@ namespace ImGui , const ImVec4& _borderCol = ImVec4(0.0f, 0.0f, 0.0f, 0.0f) ) { - Image(_handle, IMGUI_FLAGS_ALPHA_BLEND, _size, _uv0, _uv1, _tintCol, _borderCol); + Image(_handle, IMGUI_FLAGS_ALPHA_BLEND, 0, _size, _uv0, _uv1, _tintCol, _borderCol); } // Helper function for passing bgfx::TextureHandle to ImGui::ImageButton. inline bool ImageButton(bgfx::TextureHandle _handle - , uint16_t _flags + , uint8_t _flags + , uint8_t _mip , const ImVec2& _size , const ImVec2& _uv0 = ImVec2(0.0f, 0.0f) , const ImVec2& _uv1 = ImVec2(1.0f, 1.0f) @@ -250,9 +253,10 @@ namespace ImGui , const ImVec4& _tintCol = ImVec4(1.0f, 1.0f, 1.0f, 1.0f) ) { - union { struct { uint16_t flags; bgfx::TextureHandle handle; } s; ImTextureID ptr; } texture; - texture.s.flags = _flags; + union { struct { bgfx::TextureHandle handle; uint8_t flags; uint8_t mip; } s; ImTextureID ptr; } texture; texture.s.handle = _handle; + texture.s.flags = _flags; + texture.s.mip = _mip; return ImageButton(texture.ptr, _size, _uv0, _uv1, _framePadding, _bgCol, _tintCol); } @@ -266,7 +270,7 @@ namespace ImGui , const ImVec4& _tintCol = ImVec4(1.0f, 1.0f, 1.0f, 1.0f) ) { - return ImageButton(_handle, IMGUI_FLAGS_ALPHA_BLEND, _size, _uv0, _uv1, _framePadding, _bgCol, _tintCol); + return ImageButton(_handle, IMGUI_FLAGS_ALPHA_BLEND, 0, _size, _uv0, _uv1, _framePadding, _bgCol, _tintCol); } } // namespace ImGui diff --git a/3rdparty/bgfx/examples/common/imgui/ocornut_imgui.cpp b/3rdparty/bgfx/examples/common/imgui/ocornut_imgui.cpp index 4545bb998a0..f6f0a4e2bdd 100644 --- a/3rdparty/bgfx/examples/common/imgui/ocornut_imgui.cpp +++ b/3rdparty/bgfx/examples/common/imgui/ocornut_imgui.cpp @@ -305,15 +305,21 @@ struct OcornutImguiContext ; bgfx::TextureHandle th = m_texture; + bgfx::ProgramHandle program = m_program; if (NULL != cmd->TextureId) { - union { ImTextureID ptr; struct { uint16_t flags; bgfx::TextureHandle handle; } s; } texture = { cmd->TextureId }; + union { ImTextureID ptr; struct { bgfx::TextureHandle handle; uint8_t flags; uint8_t mip; } s; } texture = { cmd->TextureId }; state |= 0 != (IMGUI_FLAGS_ALPHA_BLEND & texture.s.flags) ? BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) : BGFX_STATE_NONE ; th = texture.s.handle; + if (0 != texture.s.mip) + { + extern bgfx::ProgramHandle imguiGetImageProgram(uint8_t _mip); + program = imguiGetImageProgram(texture.s.mip); + } } else { @@ -331,7 +337,7 @@ struct OcornutImguiContext bgfx::setTexture(0, s_tex, th); bgfx::setVertexBuffer(&tvb, 0, numVertices); bgfx::setIndexBuffer(&tib, offset, cmd->ElemCount); - bgfx::submit(cmd->ViewId, m_program); + bgfx::submit(cmd->ViewId, program); } offset += cmd->ElemCount; diff --git a/3rdparty/bgfx/examples/runtime/font/kenney-icon-font.ttf b/3rdparty/bgfx/examples/runtime/font/kenney-icon-font.ttf Binary files differnew file mode 100644 index 00000000000..9a3e406003c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/font/kenney-icon-font.ttf diff --git a/3rdparty/bgfx/include/bgfx/bgfx.h b/3rdparty/bgfx/include/bgfx/bgfx.h index 16c5e46a6e7..e30d7417158 100644 --- a/3rdparty/bgfx/include/bgfx/bgfx.h +++ b/3rdparty/bgfx/include/bgfx/bgfx.h @@ -532,6 +532,14 @@ namespace bgfx bool cubeMap; //!< Texture is cubemap. }; + /// + struct Attachment + { + TextureHandle handle; //!< Texture handle. + uint16_t mip; //!< Mip level. + uint16_t layer; //!< Cubemap side or depth layer/slice. + }; + /// Transform data. /// /// @attention C99 equivalent is `bgfx_transform_t`. @@ -1362,8 +1370,8 @@ namespace bgfx /// Update Cube texture. /// /// @param[in] _handle Texture handle. - /// @param[in] _side Cubemap side, where 0 is +X, 1 is -X, 2 is +Y, 3 is - /// -Y, 4 is +Z, and 5 is -Z. + /// @param[in] _side Cubemap side `BGFX_CUBE_MAP_<POSITIVE or NEGATIVE>_<X, Y or Z>`, + /// where 0 is +X, 1 is -X, 2 is +Y, 3 is -Y, 4 is +Z, and 5 is -Z. /// /// +----------+ /// |-z 2| @@ -1470,6 +1478,17 @@ namespace bgfx /// FrameBufferHandle createFrameBuffer(uint8_t _num, const TextureHandle* _handles, bool _destroyTextures = false); + /// Create frame buffer. + /// + /// @param[in] _num Number of texture attachments. + /// @param[in] _attachment Attachment info. See: `Attachment`. + /// @param[in] _destroyTextures If true, textures will be destroyed when + /// frame buffer is destroyed. + /// + /// @attention C99 equivalent is `bgfx_create_frame_buffer_from_handles`. + /// + FrameBufferHandle createFrameBuffer(uint8_t _num, const Attachment* _attachment, bool _destroyTextures = false); + /// Create frame buffer for multiple window rendering. /// /// @param[in] _nwh OS' target native window handle. diff --git a/3rdparty/bgfx/include/bgfx/bgfxdefines.h b/3rdparty/bgfx/include/bgfx/bgfxdefines.h index 3c1b3671a6b..b80622743a6 100644 --- a/3rdparty/bgfx/include/bgfx/bgfxdefines.h +++ b/3rdparty/bgfx/include/bgfx/bgfxdefines.h @@ -6,7 +6,7 @@ #ifndef BGFX_DEFINES_H_HEADER_GUARD #define BGFX_DEFINES_H_HEADER_GUARD -#define BGFX_API_VERSION UINT32_C(7) +#define BGFX_API_VERSION UINT32_C(9) /// #define BGFX_STATE_RGB_WRITE UINT64_C(0x0000000000000001) //!< Enable RGB write. @@ -422,4 +422,12 @@ #define BGFX_HMD_DEVICE_RESOLUTION UINT8_C(0x01) //!< Has HMD native resolution. #define BGFX_HMD_RENDERING UINT8_C(0x02) //!< Rendering to HMD. +/// +#define BGFX_CUBE_MAP_POSITIVE_X UINT8_C(0x00) //!< Cubemap +x. +#define BGFX_CUBE_MAP_NEGATIVE_X UINT8_C(0x01) //!< Cubemap -x. +#define BGFX_CUBE_MAP_POSITIVE_Y UINT8_C(0x02) //!< Cubemap +y. +#define BGFX_CUBE_MAP_NEGATIVE_Y UINT8_C(0x03) //!< Cubemap -y. +#define BGFX_CUBE_MAP_POSITIVE_Z UINT8_C(0x04) //!< Cubemap +z. +#define BGFX_CUBE_MAP_NEGATIVE_Z UINT8_C(0x05) //!< Cubemap -z. + #endif // BGFX_DEFINES_H_HEADER_GUARD diff --git a/3rdparty/bgfx/include/bgfx/bgfxplatform.h b/3rdparty/bgfx/include/bgfx/bgfxplatform.h index 1b6e336b675..52b330112d5 100644 --- a/3rdparty/bgfx/include/bgfx/bgfxplatform.h +++ b/3rdparty/bgfx/include/bgfx/bgfxplatform.h @@ -279,6 +279,9 @@ namespace bgfx # elif BX_PLATFORM_WINDOWS pd.ndt = NULL; pd.nwh = wmi.info.win.window; +# elif BX_PLATFORM_STEAMLINK + pd.ndt = wmi.info.vivante.display; + pd.nwh = wmi.info.vivante.window; # endif // BX_PLATFORM_ pd.context = NULL; pd.backBuffer = NULL; diff --git a/3rdparty/bgfx/include/bgfx/c99/bgfx.h b/3rdparty/bgfx/include/bgfx/c99/bgfx.h index fa585759ce9..cba442ef0be 100644 --- a/3rdparty/bgfx/include/bgfx/c99/bgfx.h +++ b/3rdparty/bgfx/include/bgfx/c99/bgfx.h @@ -350,6 +350,15 @@ typedef struct bgfx_texture_info } bgfx_texture_info_t; /**/ +typedef struct bgfx_attachment +{ + bgfx_texture_handle_t handle; + uint16_t mip; + uint16_t layer; + +} bgfx_attachment_t; + +/**/ typedef struct bgfx_caps_gpu { uint16_t vendorId; @@ -639,7 +648,7 @@ BGFX_C_API bgfx_frame_buffer_handle_t bgfx_create_frame_buffer(uint16_t _width, BGFX_C_API bgfx_frame_buffer_handle_t bgfx_create_frame_buffer_scaled(bgfx_backbuffer_ratio_t _ratio, bgfx_texture_format_t _format, uint32_t _textureFlags); /**/ -BGFX_C_API bgfx_frame_buffer_handle_t bgfx_create_frame_buffer_from_handles(uint8_t _num, const bgfx_texture_handle_t* _handles, bool _destroyTextures); +BGFX_C_API bgfx_frame_buffer_handle_t bgfx_create_frame_buffer_from_attachment(uint8_t _num, const bgfx_attachment_t* _attachment, bool _destroyTextures); /**/ BGFX_C_API bgfx_frame_buffer_handle_t bgfx_create_frame_buffer_from_nwh(void* _nwh, uint16_t _width, uint16_t _height, bgfx_texture_format_t _depthFormat); diff --git a/3rdparty/bgfx/include/bgfx/c99/bgfxplatform.h b/3rdparty/bgfx/include/bgfx/c99/bgfxplatform.h index 1fb82c974f8..61ff57d2b29 100644 --- a/3rdparty/bgfx/include/bgfx/c99/bgfxplatform.h +++ b/3rdparty/bgfx/include/bgfx/c99/bgfxplatform.h @@ -137,7 +137,7 @@ typedef struct bgfx_interface_vtbl void (*destroy_texture)(bgfx_texture_handle_t _handle); bgfx_frame_buffer_handle_t (*create_frame_buffer)(uint16_t _width, uint16_t _height, bgfx_texture_format_t _format, uint32_t _textureFlags); bgfx_frame_buffer_handle_t (*create_frame_buffer_scaled)(bgfx_backbuffer_ratio_t _ratio, bgfx_texture_format_t _format, uint32_t _textureFlags); - bgfx_frame_buffer_handle_t (*create_frame_buffer_from_handles)(uint8_t _num, const bgfx_texture_handle_t* _handles, bool _destroyTextures); + bgfx_frame_buffer_handle_t (*create_frame_buffer_from_attachment)(uint8_t _num, const bgfx_attachment_t* _attachment, bool _destroyTextures); bgfx_frame_buffer_handle_t (*create_frame_buffer_from_nwh)(void* _nwh, uint16_t _width, uint16_t _height, bgfx_texture_format_t _depthFormat); void (*destroy_frame_buffer)(bgfx_frame_buffer_handle_t _handle); bgfx_uniform_handle_t (*create_uniform)(const char* _name, bgfx_uniform_type_t _type, uint16_t _num); diff --git a/3rdparty/bgfx/scripts/bgfx.lua b/3rdparty/bgfx/scripts/bgfx.lua index cc646b6e261..97ec723ddba 100644 --- a/3rdparty/bgfx/scripts/bgfx.lua +++ b/3rdparty/bgfx/scripts/bgfx.lua @@ -88,12 +88,18 @@ function bgfxProject(_name, _kind, _defines) "-weak_framework Metal", } - configuration { "not nacl" } + configuration { "not nacl", "not linux-steamlink" } includedirs { --nacl has GLES2 headers modified... + --steamlink has EGL headers modified... path.join(BGFX_DIR, "3rdparty/khronos"), } + configuration { "linux-steamlink" } + defines { + "EGL_API_FB", + } + configuration {} includedirs { diff --git a/3rdparty/bgfx/scripts/example-common.lua b/3rdparty/bgfx/scripts/example-common.lua index 1832f9836ac..fcaca364f64 100644 --- a/3rdparty/bgfx/scripts/example-common.lua +++ b/3rdparty/bgfx/scripts/example-common.lua @@ -60,6 +60,11 @@ project ("example-common") "ENTRY_CONFIG_USE_GLFW=1", } end + + configuration { "linux-steamlink" } + defines { + "EGL_API_FB", + } configuration { "osx or ios* or tvos*" } files { diff --git a/3rdparty/bgfx/scripts/genie.lua b/3rdparty/bgfx/scripts/genie.lua index 77fe35d4cb6..52554366dfb 100644 --- a/3rdparty/bgfx/scripts/genie.lua +++ b/3rdparty/bgfx/scripts/genie.lua @@ -304,13 +304,21 @@ function exampleProject(_name) kind "ConsoleApp" targetextension ".bc" - configuration { "linux-* or freebsd" } + configuration { "linux-* or freebsd", "not linux-steamlink" } links { "X11", "GL", "pthread", } + configuration { "linux-steamlink" } + links { + "EGL", + "GLESv2", + "SDL2", + "pthread", + } + configuration { "rpi" } links { "X11", diff --git a/3rdparty/bgfx/src/bgfx.cpp b/3rdparty/bgfx/src/bgfx.cpp index aae0311ebd5..e16d4f71c3f 100644 --- a/3rdparty/bgfx/src/bgfx.cpp +++ b/3rdparty/bgfx/src/bgfx.cpp @@ -2259,13 +2259,10 @@ again: uint8_t num; _cmdbuf.read(num); - TextureHandle textureHandles[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS]; - for (uint32_t ii = 0; ii < num; ++ii) - { - _cmdbuf.read(textureHandles[ii]); - } + Attachment attachment[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS]; + _cmdbuf.read(attachment, sizeof(Attachment) * num); - m_renderCtx->createFrameBuffer(handle, num, textureHandles); + m_renderCtx->createFrameBuffer(handle, num, attachment); } } break; @@ -3112,14 +3109,27 @@ again: FrameBufferHandle createFrameBuffer(uint8_t _num, const TextureHandle* _handles, bool _destroyTextures) { + Attachment attachment[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS]; + for (uint8_t ii = 0; ii < _num; ++ii) + { + Attachment& at = attachment[ii]; + at.handle = _handles[ii]; + at.mip = 0; + at.layer = 0; + } + return createFrameBuffer(_num, attachment, _destroyTextures); + } + + FrameBufferHandle createFrameBuffer(uint8_t _num, const Attachment* _attachment, bool _destroyTextures) + { BGFX_CHECK_MAIN_THREAD(); BX_CHECK(_num != 0, "Number of frame buffer attachments can't be 0."); BX_CHECK(_num <= BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS, "Number of frame buffer attachments is larger than allowed %d (max: %d)." , _num , BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS ); - BX_CHECK(NULL != _handles, "_handles can't be NULL"); - return s_ctx->createFrameBuffer(_num, _handles, _destroyTextures); + BX_CHECK(NULL != _attachment, "_attachment can't be NULL"); + return s_ctx->createFrameBuffer(_num, _attachment, _destroyTextures); } FrameBufferHandle createFrameBuffer(void* _nwh, uint16_t _width, uint16_t _height, TextureFormat::Enum _depthFormat) @@ -4114,10 +4124,10 @@ BGFX_C_API bgfx_frame_buffer_handle_t bgfx_create_frame_buffer_scaled(bgfx_backb return handle.c; } -BGFX_C_API bgfx_frame_buffer_handle_t bgfx_create_frame_buffer_from_handles(uint8_t _num, const bgfx_texture_handle_t* _handles, bool _destroyTextures) +BGFX_C_API bgfx_frame_buffer_handle_t bgfx_create_frame_buffer_from_attachment(uint8_t _num, const bgfx_attachment_t* _attachment, bool _destroyTextures) { union { bgfx_frame_buffer_handle_t c; bgfx::FrameBufferHandle cpp; } handle; - handle.cpp = bgfx::createFrameBuffer(_num, (const bgfx::TextureHandle*)_handles, _destroyTextures); + handle.cpp = bgfx::createFrameBuffer(_num, (const bgfx::Attachment*)_attachment, _destroyTextures); return handle.c; } @@ -4560,7 +4570,7 @@ BGFX_C_API bgfx_interface_vtbl_t* bgfx_get_interface(uint32_t _version) BGFX_IMPORT_FUNC(destroy_texture) \ BGFX_IMPORT_FUNC(create_frame_buffer) \ BGFX_IMPORT_FUNC(create_frame_buffer_scaled) \ - BGFX_IMPORT_FUNC(create_frame_buffer_from_handles) \ + BGFX_IMPORT_FUNC(create_frame_buffer_from_attachment) \ BGFX_IMPORT_FUNC(create_frame_buffer_from_nwh) \ BGFX_IMPORT_FUNC(destroy_frame_buffer) \ BGFX_IMPORT_FUNC(create_uniform) \ diff --git a/3rdparty/bgfx/src/bgfx_p.h b/3rdparty/bgfx/src/bgfx_p.h index 594310d284f..1434b5ca41f 100644 --- a/3rdparty/bgfx/src/bgfx_p.h +++ b/3rdparty/bgfx/src/bgfx_p.h @@ -573,8 +573,14 @@ namespace bgfx const char* getPredefinedUniformName(PredefinedUniform::Enum _enum); PredefinedUniform::Enum nameToPredefinedUniformEnum(const char* _name); - struct CommandBuffer + class CommandBuffer { + BX_CLASS(CommandBuffer + , NO_COPY + , NO_ASSIGNMENT + ); + + public: CommandBuffer() : m_pos(0) , m_size(BGFX_CONFIG_MAX_COMMAND_BUFFER_SIZE) @@ -690,10 +696,6 @@ namespace bgfx uint32_t m_pos; uint32_t m_size; uint8_t m_buffer[BGFX_CONFIG_MAX_COMMAND_BUFFER_SIZE]; - - private: - CommandBuffer(const CommandBuffer&); - void operator=(const CommandBuffer&); }; #define SORT_KEY_NUM_BITS_TRANS 2 @@ -2050,7 +2052,7 @@ namespace bgfx virtual void overrideInternal(TextureHandle _handle, uintptr_t _ptr) = 0; virtual uintptr_t getInternal(TextureHandle _handle) = 0; virtual void destroyTexture(TextureHandle _handle) = 0; - virtual void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const TextureHandle* _textureHandles) = 0; + virtual void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const Attachment* _attachment) = 0; virtual void createFrameBuffer(FrameBufferHandle _handle, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat) = 0; virtual void destroyFrameBuffer(FrameBufferHandle _handle) = 0; virtual void createUniform(UniformHandle _handle, UniformType::Enum _type, uint16_t _num, const char* _name) = 0; @@ -3182,14 +3184,14 @@ namespace bgfx cmdbuf.write(_mem); } - bool checkFrameBuffer(uint8_t _num, const TextureHandle* _handles) const + bool checkFrameBuffer(uint8_t _num, const Attachment* _attachment) const { uint8_t color = 0; uint8_t depth = 0; for (uint32_t ii = 0; ii < _num; ++ii) { - TextureHandle texHandle = _handles[ii]; + TextureHandle texHandle = _attachment[ii].handle; if (isDepth(TextureFormat::Enum(m_textureRef[texHandle.idx].m_format))) { ++depth; @@ -3205,9 +3207,9 @@ namespace bgfx ; } - BGFX_API_FUNC(FrameBufferHandle createFrameBuffer(uint8_t _num, const TextureHandle* _handles, bool _destroyTextures) ) + BGFX_API_FUNC(FrameBufferHandle createFrameBuffer(uint8_t _num, const Attachment* _attachment, bool _destroyTextures) ) { - BX_CHECK(checkFrameBuffer(_num, _handles) + BX_CHECK(checkFrameBuffer(_num, _attachment) , "Too many frame buffer attachments (num attachments: %d, max color attachments %d)!" , _num , g_caps.maxFBAttachments @@ -3226,26 +3228,26 @@ namespace bgfx FrameBufferRef& ref = m_frameBufferRef[handle.idx]; ref.m_window = false; memset(ref.un.m_th, 0xff, sizeof(ref.un.m_th) ); - BackbufferRatio::Enum bbRatio = BackbufferRatio::Enum(m_textureRef[_handles[0].idx].m_bbRatio); + BackbufferRatio::Enum bbRatio = BackbufferRatio::Enum(m_textureRef[_attachment[0].handle.idx].m_bbRatio); for (uint32_t ii = 0; ii < _num; ++ii) { - TextureHandle texHandle = _handles[ii]; + TextureHandle texHandle = _attachment[ii].handle; BGFX_CHECK_HANDLE("createFrameBuffer texture handle", m_textureHandle, texHandle); BX_CHECK(bbRatio == m_textureRef[texHandle.idx].m_bbRatio, "Mismatch in texture back-buffer ratio."); BX_UNUSED(bbRatio); - cmdbuf.write(texHandle); - ref.un.m_th[ii] = texHandle; textureIncRef(texHandle); } + + cmdbuf.write(_attachment, sizeof(Attachment) * _num); } if (_destroyTextures) { for (uint32_t ii = 0; ii < _num; ++ii) { - textureTakeOwnership(_handles[ii]); + textureTakeOwnership(_attachment[ii].handle); } } diff --git a/3rdparty/bgfx/src/image.cpp b/3rdparty/bgfx/src/image.cpp index 6f8f79775fa..34dcae9e54c 100644 --- a/3rdparty/bgfx/src/image.cpp +++ b/3rdparty/bgfx/src/image.cpp @@ -4,8 +4,6 @@ */ #include "bgfx_p.h" -#include <math.h> // powf, sqrtf - #include "image.h" namespace bgfx @@ -345,30 +343,30 @@ namespace bgfx const uint8_t* rgba = src; for (uint32_t xx = 0; xx < dstwidth; ++xx, rgba += 8, dst += 4) { - float rr = powf(rgba[ 0], 2.2f); - float gg = powf(rgba[ 1], 2.2f); - float bb = powf(rgba[ 2], 2.2f); - float aa = rgba[ 3]; - rr += powf(rgba[ 4], 2.2f); - gg += powf(rgba[ 5], 2.2f); - bb += powf(rgba[ 6], 2.2f); - aa += rgba[ 7]; - rr += powf(rgba[_pitch+0], 2.2f); - gg += powf(rgba[_pitch+1], 2.2f); - bb += powf(rgba[_pitch+2], 2.2f); - aa += rgba[_pitch+3]; - rr += powf(rgba[_pitch+4], 2.2f); - gg += powf(rgba[_pitch+5], 2.2f); - bb += powf(rgba[_pitch+6], 2.2f); - aa += rgba[_pitch+7]; + float rr = bx::fpow(rgba[ 0], 2.2f); + float gg = bx::fpow(rgba[ 1], 2.2f); + float bb = bx::fpow(rgba[ 2], 2.2f); + float aa = rgba[ 3]; + rr += bx::fpow(rgba[ 4], 2.2f); + gg += bx::fpow(rgba[ 5], 2.2f); + bb += bx::fpow(rgba[ 6], 2.2f); + aa += rgba[ 7]; + rr += bx::fpow(rgba[_pitch+0], 2.2f); + gg += bx::fpow(rgba[_pitch+1], 2.2f); + bb += bx::fpow(rgba[_pitch+2], 2.2f); + aa += rgba[_pitch+3]; + rr += bx::fpow(rgba[_pitch+4], 2.2f); + gg += bx::fpow(rgba[_pitch+5], 2.2f); + bb += bx::fpow(rgba[_pitch+6], 2.2f); + aa += rgba[_pitch+7]; rr *= 0.25f; gg *= 0.25f; bb *= 0.25f; aa *= 0.25f; - rr = powf(rr, 1.0f/2.2f); - gg = powf(gg, 1.0f/2.2f); - bb = powf(bb, 1.0f/2.2f); + rr = bx::fpow(rr, 1.0f/2.2f); + gg = bx::fpow(gg, 1.0f/2.2f); + bb = bx::fpow(bb, 1.0f/2.2f); dst[0] = (uint8_t)rr; dst[1] = (uint8_t)gg; dst[2] = (uint8_t)bb; @@ -3176,7 +3174,7 @@ namespace bgfx { float nx = temp[ii*4+2]*2.0f/255.0f - 1.0f; float ny = temp[ii*4+1]*2.0f/255.0f - 1.0f; - float nz = sqrtf(1.0f - nx*nx - ny*ny); + float nz = bx::fsqrt(1.0f - nx*nx - ny*ny); temp[ii*4+0] = uint8_t( (nz + 1.0f)*255.0f/2.0f); temp[ii*4+3] = 0; } @@ -3323,10 +3321,10 @@ namespace bgfx const uint8_t* rgba = src; for (uint32_t xx = 0; xx < dstwidth; ++xx, rgba += 4, dst += 4) { - dst[0] = powf(rgba[ 0], 2.2f); - dst[1] = powf(rgba[ 1], 2.2f); - dst[2] = powf(rgba[ 2], 2.2f); - dst[3] = rgba[ 3]; + dst[0] = bx::fpow(rgba[0], 2.2f); + dst[1] = bx::fpow(rgba[1], 2.2f); + dst[2] = bx::fpow(rgba[2], 2.2f); + dst[3] = rgba[3]; } } } @@ -3395,7 +3393,7 @@ namespace bgfx { float nx = temp[ii*4+2]*2.0f/255.0f - 1.0f; float ny = temp[ii*4+1]*2.0f/255.0f - 1.0f; - float nz = sqrtf(1.0f - nx*nx - ny*ny); + float nz = bx::fsqrt(1.0f - nx*nx - ny*ny); const uint32_t offset = (yy*4 + ii/4)*_width*16 + (xx*4 + ii%4)*16; float* block = (float*)&dst[offset]; diff --git a/3rdparty/bgfx/src/renderer_d3d11.cpp b/3rdparty/bgfx/src/renderer_d3d11.cpp index 5bacc5561d4..4446d6b0324 100644 --- a/3rdparty/bgfx/src/renderer_d3d11.cpp +++ b/3rdparty/bgfx/src/renderer_d3d11.cpp @@ -1778,9 +1778,9 @@ BX_PRAGMA_DIAGNOSTIC_POP(); m_textures[_handle.idx].destroy(); } - void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const TextureHandle* _textureHandles) BX_OVERRIDE + void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const Attachment* _attachment) BX_OVERRIDE { - m_frameBuffers[_handle.idx].create(_num, _textureHandles); + m_frameBuffers[_handle.idx].create(_num, _attachment); } void createFrameBuffer(FrameBufferHandle _handle, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat) BX_OVERRIDE @@ -4252,7 +4252,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); return handle; } - void FrameBufferD3D11::create(uint8_t _num, const TextureHandle* _handles) + void FrameBufferD3D11::create(uint8_t _num, const Attachment* _attachment) { for (uint32_t ii = 0; ii < BX_COUNTOF(m_rtv); ++ii) { @@ -4262,7 +4262,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); m_swapChain = NULL; m_numTh = _num; - memcpy(m_th, _handles, _num*sizeof(TextureHandle) ); + memcpy(m_attachment, _attachment, _num*sizeof(Attachment) ); postReset(); } @@ -4355,7 +4355,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); m_num = 0; for (uint32_t ii = 0; ii < m_numTh; ++ii) { - TextureHandle handle = m_th[ii]; + TextureHandle handle = m_attachment[ii].handle; if (isValid(handle) ) { const TextureD3D11& texture = s_renderD3D11->m_textures[handle.idx]; @@ -4404,7 +4404,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); : D3D11_DSV_DIMENSION_TEXTURE2D ; dsvDesc.Flags = 0; - dsvDesc.Texture2D.MipSlice = 0; + dsvDesc.Texture2D.MipSlice = m_attachment[ii].mip; DX_CHECK(s_renderD3D11->m_device->CreateDepthStencilView(texture.m_ptr, &dsvDesc, &m_dsv) ); } break; @@ -4417,14 +4417,14 @@ BX_PRAGMA_DIAGNOSTIC_POP(); { dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY; dsvDesc.Texture2DMSArray.ArraySize = 1; - dsvDesc.Texture2DMSArray.FirstArraySlice = 0; + dsvDesc.Texture2DMSArray.FirstArraySlice = m_attachment[ii].layer; } else { dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DARRAY; dsvDesc.Texture2DArray.ArraySize = 1; - dsvDesc.Texture2DArray.FirstArraySlice = 0; - dsvDesc.Texture2DArray.MipSlice = 0; + dsvDesc.Texture2DArray.FirstArraySlice = m_attachment[ii].layer; + dsvDesc.Texture2DArray.MipSlice = m_attachment[ii].mip; } dsvDesc.Flags = 0; DX_CHECK(s_renderD3D11->m_device->CreateDepthStencilView(texture.m_ptr, &dsvDesc, &m_dsv) ); @@ -4438,7 +4438,20 @@ BX_PRAGMA_DIAGNOSTIC_POP(); { default: case TextureD3D11::Texture2D: - DX_CHECK(s_renderD3D11->m_device->CreateRenderTargetView(texture.m_ptr, NULL, &m_rtv[m_num]) ); + { + D3D11_RENDER_TARGET_VIEW_DESC desc; + desc.Format = s_textureFormat[texture.m_textureFormat].m_fmt; + if (1 < msaa.Count) + { + desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMS; + } + else + { + desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; + desc.Texture2D.MipSlice = m_attachment[ii].mip; + } + DX_CHECK(s_renderD3D11->m_device->CreateRenderTargetView(texture.m_ptr, &desc, &m_rtv[m_num]) ); + } break; case TextureD3D11::TextureCube: @@ -4449,14 +4462,14 @@ BX_PRAGMA_DIAGNOSTIC_POP(); { desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY; desc.Texture2DMSArray.ArraySize = 1; - desc.Texture2DMSArray.FirstArraySlice = 0; + desc.Texture2DMSArray.FirstArraySlice = m_attachment[ii].layer; } else { desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; desc.Texture2DArray.ArraySize = 1; - desc.Texture2DArray.FirstArraySlice = 0; - desc.Texture2DArray.MipSlice = 0; + desc.Texture2DArray.FirstArraySlice = m_attachment[ii].layer; + desc.Texture2DArray.MipSlice = m_attachment[ii].mip; } DX_CHECK(s_renderD3D11->m_device->CreateRenderTargetView(texture.m_ptr, &desc, &m_rtv[m_num]) ); } @@ -4467,9 +4480,9 @@ BX_PRAGMA_DIAGNOSTIC_POP(); D3D11_RENDER_TARGET_VIEW_DESC desc; desc.Format = s_textureFormat[texture.m_textureFormat].m_fmt; desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE3D; - desc.Texture3D.MipSlice = 0; + desc.Texture3D.MipSlice = m_attachment[ii].mip; desc.Texture3D.WSize = 1; - desc.Texture3D.FirstWSlice = 0; + desc.Texture3D.FirstWSlice = m_attachment[ii].layer; DX_CHECK(s_renderD3D11->m_device->CreateRenderTargetView(texture.m_ptr, &desc, &m_rtv[m_num]) ); } break; diff --git a/3rdparty/bgfx/src/renderer_d3d11.h b/3rdparty/bgfx/src/renderer_d3d11.h index 151d3ce5cc7..833eda40e1a 100644 --- a/3rdparty/bgfx/src/renderer_d3d11.h +++ b/3rdparty/bgfx/src/renderer_d3d11.h @@ -261,7 +261,7 @@ namespace bgfx { namespace d3d11 { } - void create(uint8_t _num, const TextureHandle* _handles); + void create(uint8_t _num, const Attachment* _attachment); void create(uint16_t _denseIdx, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat); uint16_t destroy(); void preReset(bool _force = false); @@ -278,7 +278,7 @@ namespace bgfx { namespace d3d11 uint16_t m_denseIdx; uint8_t m_num; uint8_t m_numTh; - TextureHandle m_th[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS]; + Attachment m_attachment[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS]; }; struct TimerQueryD3D11 diff --git a/3rdparty/bgfx/src/renderer_d3d12.cpp b/3rdparty/bgfx/src/renderer_d3d12.cpp index 76eb52e0e21..409d33bce10 100644 --- a/3rdparty/bgfx/src/renderer_d3d12.cpp +++ b/3rdparty/bgfx/src/renderer_d3d12.cpp @@ -1388,9 +1388,9 @@ namespace bgfx { namespace d3d12 m_textures[_handle.idx].destroy(); } - void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const TextureHandle* _textureHandles) BX_OVERRIDE + void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const Attachment* _attachment) BX_OVERRIDE { - m_frameBuffers[_handle.idx].create(_num, _textureHandles); + m_frameBuffers[_handle.idx].create(_num, _attachment); } void createFrameBuffer(FrameBufferHandle _handle, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat) BX_OVERRIDE @@ -4184,10 +4184,10 @@ data.NumQualityLevels = 0; return _state; } - void FrameBufferD3D12::create(uint8_t _num, const TextureHandle* _handles) + void FrameBufferD3D12::create(uint8_t _num, const Attachment* _attachment) { m_numTh = _num; - memcpy(m_th, _handles, _num*sizeof(TextureHandle) ); + memcpy(m_attachment, _attachment, _num*sizeof(Attachment) ); postReset(); } @@ -4217,7 +4217,7 @@ data.NumQualityLevels = 0; m_num = 0; for (uint32_t ii = 0; ii < m_numTh; ++ii) { - TextureHandle handle = m_th[ii]; + TextureHandle handle = m_attachment[ii].handle; if (isValid(handle) ) { const TextureD3D12& texture = s_renderD3D12->m_textures[handle.idx]; diff --git a/3rdparty/bgfx/src/renderer_d3d12.h b/3rdparty/bgfx/src/renderer_d3d12.h index d046b275142..39f165a03da 100644 --- a/3rdparty/bgfx/src/renderer_d3d12.h +++ b/3rdparty/bgfx/src/renderer_d3d12.h @@ -295,7 +295,7 @@ namespace bgfx { namespace d3d12 m_depth.idx = bgfx::invalidHandle; } - void create(uint8_t _num, const TextureHandle* _handles); + void create(uint8_t _num, const Attachment* _attachment); void create(uint16_t _denseIdx, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat); uint16_t destroy(); void preReset(); @@ -311,7 +311,7 @@ namespace bgfx { namespace d3d12 uint16_t m_denseIdx; uint8_t m_num; uint8_t m_numTh; - TextureHandle m_th[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS]; + Attachment m_attachment[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS]; }; struct CommandQueueD3D12 diff --git a/3rdparty/bgfx/src/renderer_d3d9.cpp b/3rdparty/bgfx/src/renderer_d3d9.cpp index 4fb4d435b4a..919a952260b 100644 --- a/3rdparty/bgfx/src/renderer_d3d9.cpp +++ b/3rdparty/bgfx/src/renderer_d3d9.cpp @@ -1018,9 +1018,9 @@ namespace bgfx { namespace d3d9 m_textures[_handle.idx].destroy(); } - void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const TextureHandle* _textureHandles) BX_OVERRIDE + void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const Attachment* _attachment) BX_OVERRIDE { - m_frameBuffers[_handle.idx].create(_num, _textureHandles); + m_frameBuffers[_handle.idx].create(_num, _attachment); } void createFrameBuffer(FrameBufferHandle _handle, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat) BX_OVERRIDE @@ -3062,7 +3062,7 @@ namespace bgfx { namespace d3d9 } } - void FrameBufferD3D9::create(uint8_t _num, const TextureHandle* _handles) + void FrameBufferD3D9::create(uint8_t _num, const Attachment* _attachment) { for (uint32_t ii = 0; ii < BX_COUNTOF(m_color); ++ii) { @@ -3074,7 +3074,7 @@ namespace bgfx { namespace d3d9 m_needResolve = false; for (uint32_t ii = 0; ii < _num; ++ii) { - TextureHandle handle = _handles[ii]; + TextureHandle handle = _attachment[ii].handle; if (isValid(handle) ) { const TextureD3D9& texture = s_renderD3D9->m_textures[handle.idx]; @@ -3102,7 +3102,7 @@ namespace bgfx { namespace d3d9 } else { - m_color[m_num] = texture.getSurface(); + m_color[m_num] = texture.getSurface(uint8_t(_attachment[ii].layer) ); } m_num++; } diff --git a/3rdparty/bgfx/src/renderer_d3d9.h b/3rdparty/bgfx/src/renderer_d3d9.h index aecfba57322..0b0e030dc5c 100644 --- a/3rdparty/bgfx/src/renderer_d3d9.h +++ b/3rdparty/bgfx/src/renderer_d3d9.h @@ -389,7 +389,7 @@ namespace bgfx { namespace d3d9 m_depthHandle.idx = invalidHandle; } - void create(uint8_t _num, const TextureHandle* _handles); + void create(uint8_t _num, const Attachment* _attachment); void create(uint16_t _denseIdx, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat); uint16_t destroy(); HRESULT present(); diff --git a/3rdparty/bgfx/src/renderer_gl.cpp b/3rdparty/bgfx/src/renderer_gl.cpp index ff6184ccc98..0feccaf9680 100644 --- a/3rdparty/bgfx/src/renderer_gl.cpp +++ b/3rdparty/bgfx/src/renderer_gl.cpp @@ -2243,9 +2243,9 @@ namespace bgfx { namespace gl m_textures[_handle.idx].destroy(); } - void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const TextureHandle* _textureHandles) BX_OVERRIDE + void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const Attachment* _attachment) BX_OVERRIDE { - m_frameBuffers[_handle.idx].create(_num, _textureHandles); + m_frameBuffers[_handle.idx].create(_num, _attachment); } void createFrameBuffer(FrameBufferHandle _handle, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat) BX_OVERRIDE @@ -5017,12 +5017,12 @@ namespace bgfx { namespace gl BX_UNUSED(complete); } - void FrameBufferGL::create(uint8_t _num, const TextureHandle* _handles) + void FrameBufferGL::create(uint8_t _num, const Attachment* _attachment) { GL_CHECK(glGenFramebuffers(1, &m_fbo[0]) ); m_numTh = _num; - memcpy(m_th, _handles, _num*sizeof(TextureHandle) ); + memcpy(m_attachment, _attachment, _num*sizeof(Attachment) ); postReset(); } @@ -5040,15 +5040,15 @@ namespace bgfx { namespace gl uint32_t colorIdx = 0; for (uint32_t ii = 0; ii < m_numTh; ++ii) { - TextureHandle handle = m_th[ii]; + TextureHandle handle = m_attachment[ii].handle; if (isValid(handle) ) { const TextureGL& texture = s_renderGL->m_textures[handle.idx]; if (0 == colorIdx) { - m_width = texture.m_width; - m_height = texture.m_height; + m_width = bx::uint32_max(texture.m_width >> m_attachment[ii].mip, 1); + m_height = bx::uint32_max(texture.m_height >> m_attachment[ii].mip, 1); } GLenum attachment = GL_COLOR_ATTACHMENT0 + colorIdx; @@ -5086,7 +5086,7 @@ namespace bgfx { namespace gl else { GLenum target = GL_TEXTURE_CUBE_MAP == texture.m_target - ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + m_attachment[ii].layer : texture.m_target ; @@ -5094,7 +5094,7 @@ namespace bgfx { namespace gl , attachment , target , texture.m_id - , 0 + , m_attachment[ii].mip ) ); } @@ -5134,7 +5134,7 @@ namespace bgfx { namespace gl colorIdx = 0; for (uint32_t ii = 0; ii < m_numTh; ++ii) { - TextureHandle handle = m_th[ii]; + TextureHandle handle = m_attachment[ii].handle; if (isValid(handle) ) { const TextureGL& texture = s_renderGL->m_textures[handle.idx]; @@ -5145,11 +5145,17 @@ namespace bgfx { namespace gl if (!isDepth( (TextureFormat::Enum)texture.m_textureFormat) ) { ++colorIdx; + + GLenum target = GL_TEXTURE_CUBE_MAP == texture.m_target + ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + m_attachment[ii].layer + : texture.m_target + ; + GL_CHECK(glFramebufferTexture2D(GL_FRAMEBUFFER , attachment - , texture.m_target + , target , texture.m_id - , 0 + , m_attachment[ii].mip ) ); } } diff --git a/3rdparty/bgfx/src/renderer_gl.h b/3rdparty/bgfx/src/renderer_gl.h index 06b1525fd64..91c49c22f02 100644 --- a/3rdparty/bgfx/src/renderer_gl.h +++ b/3rdparty/bgfx/src/renderer_gl.h @@ -13,6 +13,7 @@ || BX_PLATFORM_BSD \ || BX_PLATFORM_QNX \ || BX_PLATFORM_RPI \ + || BX_PLATFORM_STEAMLINK \ || BX_PLATFORM_WINDOWS \ ) ) @@ -1169,7 +1170,7 @@ namespace bgfx { namespace gl memset(m_fbo, 0, sizeof(m_fbo) ); } - void create(uint8_t _num, const TextureHandle* _handles); + void create(uint8_t _num, const Attachment* _attachment); void create(uint16_t _denseIdx, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat); void postReset(); uint16_t destroy(); @@ -1183,7 +1184,7 @@ namespace bgfx { namespace gl uint16_t m_denseIdx; uint8_t m_num; uint8_t m_numTh; - TextureHandle m_th[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS]; + Attachment m_attachment[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS]; }; struct ProgramGL diff --git a/3rdparty/bgfx/src/renderer_mtl.h b/3rdparty/bgfx/src/renderer_mtl.h index 2b683cff891..f471ee5d457 100644 --- a/3rdparty/bgfx/src/renderer_mtl.h +++ b/3rdparty/bgfx/src/renderer_mtl.h @@ -694,7 +694,7 @@ namespace bgfx { namespace mtl m_depthHandle.idx = invalidHandle; } - void create(uint8_t _num, const TextureHandle* _handles); + void create(uint8_t _num, const Attachment* _attachment); void create(uint16_t _denseIdx, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat); void postReset(); uint16_t destroy(); diff --git a/3rdparty/bgfx/src/renderer_mtl.mm b/3rdparty/bgfx/src/renderer_mtl.mm index 833a53bea0d..08faee495f7 100644 --- a/3rdparty/bgfx/src/renderer_mtl.mm +++ b/3rdparty/bgfx/src/renderer_mtl.mm @@ -694,9 +694,9 @@ namespace bgfx { namespace mtl m_textures[_handle.idx].destroy(); } - void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const TextureHandle* _textureHandles) BX_OVERRIDE + void createFrameBuffer(FrameBufferHandle _handle, uint8_t _num, const Attachment* _attachment) BX_OVERRIDE { - m_frameBuffers[_handle.idx].create(_num, _textureHandles); + m_frameBuffers[_handle.idx].create(_num, _attachment); } void createFrameBuffer(FrameBufferHandle _handle, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _depthFormat) BX_OVERRIDE @@ -2079,12 +2079,12 @@ namespace bgfx { namespace mtl : m_sampler, _stage); } - void FrameBufferMtl::create(uint8_t _num, const TextureHandle* _handles) + void FrameBufferMtl::create(uint8_t _num, const Attachment* _attachment) { m_num = 0; for (uint32_t ii = 0; ii < _num; ++ii) { - TextureHandle handle = _handles[ii]; + TextureHandle handle = _attachment[ii].handle; if (isValid(handle) ) { const TextureMtl& texture = s_renderMtl->m_textures[handle.idx]; diff --git a/3rdparty/bgfx/src/renderer_null.cpp b/3rdparty/bgfx/src/renderer_null.cpp index a68e66f0d68..9b3de91416b 100644 --- a/3rdparty/bgfx/src/renderer_null.cpp +++ b/3rdparty/bgfx/src/renderer_null.cpp @@ -134,7 +134,7 @@ namespace bgfx { namespace noop { } - void createFrameBuffer(FrameBufferHandle /*_handle*/, uint8_t /*_num*/, const TextureHandle* /*_textureHandles*/) BX_OVERRIDE + void createFrameBuffer(FrameBufferHandle /*_handle*/, uint8_t /*_num*/, const Attachment* /*_attachment*/) BX_OVERRIDE { } diff --git a/3rdparty/bgfx/tools/geometryc/geometryc.cpp b/3rdparty/bgfx/tools/geometryc/geometryc.cpp index b5fc62affe2..7687f3c5e38 100644 --- a/3rdparty/bgfx/tools/geometryc/geometryc.cpp +++ b/3rdparty/bgfx/tools/geometryc/geometryc.cpp @@ -811,7 +811,7 @@ int main(int _argc, const char* _argv[]) PrimitiveArray primitives; bx::CrtFileWriter writer; - if (bx::open(&writer, outFilePath) ) + if (!bx::open(&writer, outFilePath) ) { printf("Unable to open output file '%s'.", outFilePath); exit(EXIT_FAILURE); diff --git a/3rdparty/bx/include/bx/fpumath.h b/3rdparty/bx/include/bx/fpumath.h index b76da2f9a31..be125aa69eb 100644 --- a/3rdparty/bx/include/bx/fpumath.h +++ b/3rdparty/bx/include/bx/fpumath.h @@ -149,6 +149,11 @@ namespace bx return _a - floorf(_a); } + inline float fmod(float _a, float _b) + { + return fmodf(_a, _b); + } + inline bool fequal(float _a, float _b, float _epsilon) { // http://realtimecollisiondetection.net/blog/?p=89 @@ -169,7 +174,7 @@ namespace bx inline float fwrap(float _a, float _wrap) { - const float mod = fmodf(_a, _wrap); + const float mod = fmod(_a, _wrap); const float result = mod < 0.0f ? _wrap + mod : mod; return result; } @@ -422,8 +427,8 @@ namespace bx inline void quatRotateAxis(float* __restrict _result, const float* _axis, float _angle) { const float ha = _angle * 0.5f; - const float ca = cosf(ha); - const float sa = sinf(ha); + const float ca = fcos(ha); + const float sa = fsin(ha); _result[0] = _axis[0] * sa; _result[1] = _axis[1] * sa; _result[2] = _axis[2] * sa; @@ -433,8 +438,8 @@ namespace bx inline void quatRotateX(float* _result, float _ax) { const float hx = _ax * 0.5f; - const float cx = cosf(hx); - const float sx = sinf(hx); + const float cx = fcos(hx); + const float sx = fsin(hx); _result[0] = sx; _result[1] = 0.0f; _result[2] = 0.0f; @@ -444,8 +449,8 @@ namespace bx inline void quatRotateY(float* _result, float _ay) { const float hy = _ay * 0.5f; - const float cy = cosf(hy); - const float sy = sinf(hy); + const float cy = fcos(hy); + const float sy = fsin(hy); _result[0] = 0.0f; _result[1] = sy; _result[2] = 0.0f; @@ -455,8 +460,8 @@ namespace bx inline void quatRotateZ(float* _result, float _az) { const float hz = _az * 0.5f; - const float cz = cosf(hz); - const float sz = sinf(hz); + const float cz = fcos(hz); + const float sz = fsin(hz); _result[0] = 0.0f; _result[1] = 0.0f; _result[2] = sz; @@ -736,8 +741,8 @@ namespace bx inline void mtxRotateX(float* _result, float _ax) { - const float sx = sinf(_ax); - const float cx = cosf(_ax); + const float sx = fsin(_ax); + const float cx = fcos(_ax); memset(_result, 0, sizeof(float)*16); _result[ 0] = 1.0f; @@ -750,8 +755,8 @@ namespace bx inline void mtxRotateY(float* _result, float _ay) { - const float sy = sinf(_ay); - const float cy = cosf(_ay); + const float sy = fsin(_ay); + const float cy = fcos(_ay); memset(_result, 0, sizeof(float)*16); _result[ 0] = cy; @@ -764,8 +769,8 @@ namespace bx inline void mtxRotateZ(float* _result, float _az) { - const float sz = sinf(_az); - const float cz = cosf(_az); + const float sz = fsin(_az); + const float cz = fcos(_az); memset(_result, 0, sizeof(float)*16); _result[ 0] = cz; @@ -778,10 +783,10 @@ namespace bx inline void mtxRotateXY(float* _result, float _ax, float _ay) { - const float sx = sinf(_ax); - const float cx = cosf(_ax); - const float sy = sinf(_ay); - const float cy = cosf(_ay); + const float sx = fsin(_ax); + const float cx = fcos(_ax); + const float sy = fsin(_ay); + const float cy = fcos(_ay); memset(_result, 0, sizeof(float)*16); _result[ 0] = cy; @@ -797,12 +802,12 @@ namespace bx inline void mtxRotateXYZ(float* _result, float _ax, float _ay, float _az) { - const float sx = sinf(_ax); - const float cx = cosf(_ax); - const float sy = sinf(_ay); - const float cy = cosf(_ay); - const float sz = sinf(_az); - const float cz = cosf(_az); + const float sx = fsin(_ax); + const float cx = fcos(_ax); + const float sy = fsin(_ay); + const float cy = fcos(_ay); + const float sz = fsin(_az); + const float cz = fcos(_az); memset(_result, 0, sizeof(float)*16); _result[ 0] = cy*cz; @@ -819,12 +824,12 @@ namespace bx inline void mtxRotateZYX(float* _result, float _ax, float _ay, float _az) { - const float sx = sinf(_ax); - const float cx = cosf(_ax); - const float sy = sinf(_ay); - const float cy = cosf(_ay); - const float sz = sinf(_az); - const float cz = cosf(_az); + const float sx = fsin(_ax); + const float cx = fcos(_ax); + const float sy = fsin(_ay); + const float cy = fcos(_ay); + const float sz = fsin(_az); + const float cz = fcos(_az); memset(_result, 0, sizeof(float)*16); _result[ 0] = cy*cz; @@ -841,12 +846,12 @@ namespace bx inline void mtxSRT(float* _result, float _sx, float _sy, float _sz, float _ax, float _ay, float _az, float _tx, float _ty, float _tz) { - const float sx = sinf(_ax); - const float cx = cosf(_ax); - const float sy = sinf(_ay); - const float cy = cosf(_ay); - const float sz = sinf(_az); - const float cz = cosf(_az); + const float sx = fsin(_ax); + const float cx = fcos(_ax); + const float sy = fsin(_ay); + const float cy = fcos(_ay); + const float sz = fsin(_az); + const float cz = fcos(_az); const float sxsz = sx*sz; const float cycz = cy*cz; diff --git a/3rdparty/bx/include/bx/hash.h b/3rdparty/bx/include/bx/hash.h index de3f21c4c0e..4250115622f 100644 --- a/3rdparty/bx/include/bx/hash.h +++ b/3rdparty/bx/include/bx/hash.h @@ -103,7 +103,7 @@ namespace bx static void readUnaligned(const void* _data, uint32_t& _out) { const uint8_t* data = (const uint8_t*)_data; - if (BX_ENABLED(BX_CPU_ENDIAN_LITTLE) ) + if (BX_ENABLED(BX_CPU_ENDIAN_BIG) ) { _out = 0 | data[0]<<24 diff --git a/3rdparty/bx/scripts/toolchain.lua b/3rdparty/bx/scripts/toolchain.lua index ad3a3e647e1..fc674de9570 100644 --- a/3rdparty/bx/scripts/toolchain.lua +++ b/3rdparty/bx/scripts/toolchain.lua @@ -1126,7 +1126,13 @@ function strip() "$(SILENT) $(ANDROID_NDK_X86)/bin/i686-linux-android-strip -s \"$(TARGET)\"" } - configuration { "linux-* or rpi", "Release" } + configuration { "linux-steamlink", "Release" } + postbuildcommands { + "$(SILENT) echo Stripping symbols.", + "$(SILENT) $(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-strip -s \"$(TARGET)\"" + } + + configuration { "linux-* or rpi", "not linux-steamlink", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", "$(SILENT) strip -s \"$(TARGET)\"" diff --git a/3rdparty/bx/tools/bin/darwin/genie b/3rdparty/bx/tools/bin/darwin/genie Binary files differindex f79dbd8456f..a7c61b7300e 100644 --- a/3rdparty/bx/tools/bin/darwin/genie +++ b/3rdparty/bx/tools/bin/darwin/genie diff --git a/3rdparty/bx/tools/bin/linux/genie b/3rdparty/bx/tools/bin/linux/genie Binary files differindex c3a323a0b1e..223ef23852e 100644 --- a/3rdparty/bx/tools/bin/linux/genie +++ b/3rdparty/bx/tools/bin/linux/genie diff --git a/3rdparty/bx/tools/bin/windows/genie.exe b/3rdparty/bx/tools/bin/windows/genie.exe Binary files differindex 7e62285f703..59575ce272e 100644 --- a/3rdparty/bx/tools/bin/windows/genie.exe +++ b/3rdparty/bx/tools/bin/windows/genie.exe |