Improve the default project theme
The new default project theme uses StyleBoxFlat extensively for a more modern design and better scalability to multiple resolutions. SVG icons are now used in place of PNG icons. While this does not allow for true vector-based icon drawing (icons are still rasterized at load-time), this makes the design work easier for contributors and opens the door to vector drawing in the future (e.g. with polygons or SDFs). Like for editor icons, the SVG header file is now built automatically when a SVG file is changed. This removing the need for running `make_header.py` manually (TODO). The "Use Hidpi" project setting has been removed in favor of a "Default Theme Scale" project setting, which allows creating the default theme at a higher/lower scale than the default. This can be used when designing GUIs with a high base resolution to ensure crisp visuals. Co-authored-by: Yuri Sizov <yuris@humnom.net>
|
|
@ -4,6 +4,7 @@ Import("env")
|
|||
|
||||
from platform_methods import run_in_subprocess
|
||||
import default_theme_builders
|
||||
import default_theme_icons_builders
|
||||
|
||||
env.add_source_files(env.scene_sources, "*.cpp")
|
||||
|
||||
|
|
@ -13,3 +14,19 @@ env.CommandNoCache(
|
|||
"#thirdparty/fonts/OpenSans_SemiBold.ttf",
|
||||
run_in_subprocess(default_theme_builders.make_fonts_header),
|
||||
)
|
||||
|
||||
env["BUILDERS"]["MakeDefaultThemeIconsBuilder"] = Builder(
|
||||
action=env.Run(
|
||||
default_theme_icons_builders.make_default_theme_icons_action, "Generating default project theme icons header."
|
||||
),
|
||||
suffix=".h",
|
||||
src_suffix=".svg",
|
||||
)
|
||||
|
||||
# Default theme icons
|
||||
icon_sources = Glob("*.svg")
|
||||
|
||||
env.Alias(
|
||||
"default_theme_icons",
|
||||
[env.MakeDefaultThemeIconsBuilder("#scene/resources/default_theme/default_theme_icons.gen.h", icon_sources)],
|
||||
)
|
||||
|
|
|
|||
1
scene/resources/default_theme/add.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m7 1v6h-6v2h6v6h2v-6h6v-2h-6v-6z" fill="#b2b2b2" fill-rule="nonzero"/></svg>
|
||||
|
After Width: | Height: | Size: 232 B |
|
Before Width: | Height: | Size: 109 B |
1
scene/resources/default_theme/arrow_down.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m5 7 3 3 3-3" fill="none" stroke="#b2b2b2" stroke-opacity=".45" stroke-width="2"/></svg>
|
||||
|
After Width: | Height: | Size: 245 B |
|
Before Width: | Height: | Size: 159 B |
1
scene/resources/default_theme/arrow_left.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m9 11-3-3 3-3" fill="none" stroke="#b2b2b2" stroke-opacity=".45" stroke-width="2"/></svg>
|
||||
|
After Width: | Height: | Size: 246 B |
|
Before Width: | Height: | Size: 103 B |
1
scene/resources/default_theme/arrow_right.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m6 11 3-3-3-3" fill="none" stroke="#b2b2b2" stroke-opacity=".45" stroke-width="2"/></svg>
|
||||
|
After Width: | Height: | Size: 246 B |
|
Before Width: | Height: | Size: 208 B |
|
Before Width: | Height: | Size: 160 B |
1
scene/resources/default_theme/bookmark.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill="#fefffe" fill-opacity=".85"><path d="m14.505 1.476h-12.995v13.049l6.491-5.185 6.504 5.185z"/><path d="m15.018 1.476c0-.25-.23-.452-.514-.452h-12.994c-.284 0-.513.202-.513.452v13.049c0 .178.119.34.306.413.185.071.402.041.552-.079l6.146-4.909 6.158 4.909c.151.12.367.15.553.079.187-.073.306-.235.306-.413zm-.514 0h-12.994v13.049l6.491-5.185 6.503 5.185z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 520 B |
1
scene/resources/default_theme/breakpoint.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m15 8c0 3.84-3.16 7-7 7s-7-3.16-7-7 3.16-7 7-7 7 3.16 7 7" fill="#ff5d5d" fill-opacity=".5" fill-rule="nonzero"/></svg>
|
||||
|
After Width: | Height: | Size: 275 B |
|
Before Width: | Height: | Size: 256 B |
|
Before Width: | Height: | Size: 203 B |
|
Before Width: | Height: | Size: 342 B |
|
Before Width: | Height: | Size: 336 B |
|
Before Width: | Height: | Size: 499 B |
|
Before Width: | Height: | Size: 363 B |
1
scene/resources/default_theme/checked.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 15.999999" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m3.3333333 1c-1.2887 0-2.3333333 1.0446683-2.3333333 2.3333333v9.3333337c0 1.2887 1.0446683 2.333333 2.3333333 2.333333h9.3333337c1.2887 0 2.333333-1.044668 2.333333-2.333333v-9.3333337c0-1.2887-1.044668-2.3333333-2.333333-2.3333333z" fill="#fff" fill-opacity=".75" stroke-width="1.16667"/><path d="m11.500773 3.7343508-5.6117507 5.6117502-1.7045017-1.6814543-1.4992276 1.4992276 3.2037293 3.1806817 7.1109777-7.1109775z" fill="#1a1a1a" stroke-width="1.06023"/></svg>
|
||||
|
After Width: | Height: | Size: 567 B |
|
Before Width: | Height: | Size: 421 B |
1
scene/resources/default_theme/checked_disabled.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 15.999999" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m3.3333333 1c-1.2887 0-2.3333333 1.0446683-2.3333333 2.3333333v9.3333337c0 1.2887 1.0446683 2.333333 2.3333333 2.333333h9.3333337c1.2887 0 2.333333-1.044668 2.333333-2.333333v-9.3333337c0-1.2887-1.044668-2.3333333-2.333333-2.3333333z" fill="#fff" fill-opacity=".37" stroke-width="1.16667"/><path d="m11.500773 3.7343508-5.6117507 5.6117502-1.7045017-1.6814543-1.4992276 1.4992276 3.2037293 3.1806817 7.1109777-7.1109775z" fill="#1a1a1a" fill-opacity=".5" stroke-width="1.06023"/></svg>
|
||||
|
After Width: | Height: | Size: 585 B |
|
Before Width: | Height: | Size: 77 B |
|
Before Width: | Height: | Size: 155 B |
1
scene/resources/default_theme/close.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 15.999999" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m1 3 2-2 5 5 5-5 2 2-5 5 5 5-2 2-5.3020979-5-4.6979021 5-2-2 5-5z" fill="#fff" fill-opacity=".75"/></svg>
|
||||
|
After Width: | Height: | Size: 205 B |
|
Before Width: | Height: | Size: 155 B |
1
scene/resources/default_theme/close_hl.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 15.999999" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m1 3 2-2 5 5 5-5 2 2-5 5 5 5-2 2-5.3020979-5-4.6979021 5-2-2 5-5z" fill="#fff"/></svg>
|
||||
|
After Width: | Height: | Size: 186 B |
1
scene/resources/default_theme/color_picker_bar_arrow.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 20" xmlns="http://www.w3.org/2000/svg"><path d="m3.564 15.218h8.872l-4.436-4.436z" fill="#b2b2b2" fill-rule="nonzero" stroke="#b2b2b2"/></svg>
|
||||
|
After Width: | Height: | Size: 250 B |
1
scene/resources/default_theme/color_picker_cursor.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6-6 6 6 0 0 0 -6-6zm0 1a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5-5 5 5 0 0 1 5-5z" fill="#fff"/><path d="m8 3a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 5-5 5 5 0 0 0 -5-5zm-.0605469 1a4 4 0 0 1 .0605469 0 4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4-4 4 4 0 0 1 3.9394531-4z"/></svg>
|
||||
|
After Width: | Height: | Size: 415 B |
|
Before Width: | Height: | Size: 141 B |
1
scene/resources/default_theme/color_picker_hue.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 1 256" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 256 -256 0 0 0)" gradientUnits="userSpaceOnUse" x1="0" x2="1" y1="0" y2="0"><stop offset="0" stop-color="#f00"/><stop offset=".04" stop-color="#ff4000"/><stop offset=".08" stop-color="#ff8000"/><stop offset=".17" stop-color="#ff0"/><stop offset=".25" stop-color="#80ff00"/><stop offset=".33" stop-color="#0f0"/><stop offset=".42" stop-color="#00ff80"/><stop offset=".5" stop-color="#0ff"/><stop offset=".58" stop-color="#0080ff"/><stop offset=".63" stop-color="#0040ff"/><stop offset=".67" stop-color="#00f"/><stop offset=".75" stop-color="#8000ff"/><stop offset=".83" stop-color="#f0f"/><stop offset=".92" stop-color="#ff0080"/><stop offset="1" stop-color="#f00"/></linearGradient><path d="m0 0h1v256h-1z" fill="url(#a)"/></svg>
|
||||
|
After Width: | Height: | Size: 970 B |
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m.5.5v10l10-10z" fill="#fff" stroke="#000"/><path d="m0 12 12-12h-1.714286l-10.285714 10.285714z" fill="#000003" stroke-width="2"/></svg>
|
||||
|
After Width: | Height: | Size: 230 B |
1
scene/resources/default_theme/color_picker_pipette.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m8 1c-1.108 0-2 .892-2 2v2h-1v2h1v5c.001.712.383 1.372 1 1.729v1.271h2v-1.27c.618-.356.999-1.017 1-1.73v-5h1v-2h-1v-2c0-1.108-.892-2-2-2zm-1 6h2v5c0 .549-.451 1-1 1s-1-.451-1-1z" fill="#b2b2b2" fill-rule="nonzero"/></svg>
|
||||
|
After Width: | Height: | Size: 377 B |
|
Before Width: | Height: | Size: 117 B |
1
scene/resources/default_theme/color_picker_sample.svg
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
|
|
@ -35,8 +35,8 @@
|
|||
|
||||
const int default_font_size = 16;
|
||||
|
||||
void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const Ref<Font> &large_font, Ref<Texture2D> &default_icon, Ref<StyleBox> &default_style, float p_scale);
|
||||
void make_default_theme(bool p_hidpi, Ref<Font> p_font);
|
||||
void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, Ref<Texture2D> &default_icon, Ref<StyleBox> &default_style, float p_scale);
|
||||
void make_default_theme(float p_scale, Ref<Font> p_font);
|
||||
void clear_default_theme();
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -0,0 +1,78 @@
|
|||
"""Functions used to generate source files during build time
|
||||
|
||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
from io import StringIO
|
||||
from platform_methods import subprocess_main
|
||||
|
||||
|
||||
# See also `editor/icons/editor_icons_builders.py`.
|
||||
def make_default_theme_icons_action(target, source, env):
|
||||
|
||||
dst = target[0]
|
||||
svg_icons = source
|
||||
|
||||
icons_string = StringIO()
|
||||
|
||||
for f in svg_icons:
|
||||
|
||||
fname = str(f)
|
||||
|
||||
icons_string.write('\t"')
|
||||
|
||||
with open(fname, "rb") as svgf:
|
||||
b = svgf.read(1)
|
||||
while len(b) == 1:
|
||||
icons_string.write("\\" + str(hex(ord(b)))[1:])
|
||||
b = svgf.read(1)
|
||||
|
||||
icons_string.write('"')
|
||||
if fname != svg_icons[-1]:
|
||||
icons_string.write(",")
|
||||
icons_string.write("\n")
|
||||
|
||||
s = StringIO()
|
||||
s.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n\n")
|
||||
s.write('#include "modules/modules_enabled.gen.h"\n\n')
|
||||
s.write("#ifndef _DEFAULT_THEME_ICONS_H\n")
|
||||
s.write("#define _DEFAULT_THEME_ICONS_H\n")
|
||||
s.write("static const int default_theme_icons_count = {};\n\n".format(len(svg_icons)))
|
||||
s.write("#ifdef MODULE_SVG_ENABLED\n")
|
||||
s.write("static const char *default_theme_icons_sources[] = {\n")
|
||||
s.write(icons_string.getvalue())
|
||||
s.write("};\n")
|
||||
s.write("#endif // MODULE_SVG_ENABLED\n\n")
|
||||
s.write("static const char *default_theme_icons_names[] = {\n")
|
||||
|
||||
index = 0
|
||||
for f in svg_icons:
|
||||
|
||||
fname = str(f)
|
||||
|
||||
# Trim the `.svg` extension from the string.
|
||||
icon_name = os.path.basename(fname)[:-4]
|
||||
|
||||
s.write('\t"{0}"'.format(icon_name))
|
||||
|
||||
if fname != svg_icons[-1]:
|
||||
s.write(",")
|
||||
s.write("\n")
|
||||
|
||||
index += 1
|
||||
|
||||
s.write("};\n")
|
||||
|
||||
s.write("#endif\n")
|
||||
|
||||
with open(dst, "w") as f:
|
||||
f.write(s.getvalue())
|
||||
|
||||
s.close()
|
||||
icons_string.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
subprocess_main(globals())
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 133 B |
|
Before Width: | Height: | Size: 193 B |
|
Before Width: | Height: | Size: 106 B |
1
scene/resources/default_theme/error_icon.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m2 1v8.5859l1.293-1.293a1.0001 1.0001 0 0 1 .69141-.29102 1.0001 1.0001 0 0 1 .72266.29102l2.293 2.293 2.293-2.293a1.0001 1.0001 0 0 1 1.4141 0l2.293 2.293 1-1v-3.5859h-5v-5h-7zm8 0v4h4zm-6 9.4141-2 2v2.5859h12v-2.5859l-.29297.29297a1.0001 1.0001 0 0 1 -1.4141 0l-2.293-2.293-2.293 2.293a1.0001 1.0001 0 0 1 -1.4141 0l-2.293-2.293z" fill="#ff5d5d" transform="translate(0 -.000017)"/></svg>
|
||||
|
After Width: | Height: | Size: 482 B |
|
|
@ -1,38 +0,0 @@
|
|||
/* XPM */
|
||||
static const char * error_icon_xpm[] = {
|
||||
"32 32 3 1",
|
||||
" c None",
|
||||
". c #FF00FF",
|
||||
"+ c #000000",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"....++++.+++..+++...++..+++.....",
|
||||
"....+....+..+.+..+.+..+.+..+....",
|
||||
"....+....+..+.+..+.+..+.+..+....",
|
||||
"....+++..+++..+++..+..+.+++.....",
|
||||
"....+....+..+.+..+.+..+.+..+....",
|
||||
"....+....+..+.+..+.+..+.+..+....",
|
||||
"....++++.+..+.+..+..++..+..+....",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................"};
|
||||
1
scene/resources/default_theme/file.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 1v14h12v-9h-5v-5zm8 0v4h4z" fill="#b2b2b2" fill-rule="nonzero"/></svg>
|
||||
|
After Width: | Height: | Size: 229 B |
|
Before Width: | Height: | Size: 200 B |
1
scene/resources/default_theme/folder.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 2c-.549 0-1 .451-1 1v10c0 .549.451 1 1 1h12c.549 0 1-.451 1-1v-7c0-.549-.451-1-1-1h-4c-.549 0-1-.451-1-1v-1c0-.549-.451-1-1-1z" fill="#b2b2b2" fill-rule="nonzero"/></svg>
|
||||
|
After Width: | Height: | Size: 329 B |
1
scene/resources/default_theme/folder_up.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m3 8c.003.26.107.509.291.693.388.388 1.026.388 1.414 0l2.293-2.293v4.586c0 .553.448 1 1 1s1-.447 1-1v-4.586l2.293 2.293c.388.388 1.026.388 1.414 0 .388-.387.388-1.026 0-1.414l-4-4c-.388-.387-1.026-.387-1.414 0l-4 4c-.19.191-.295.451-.291.721z" fill="#b2b2b2" fill-rule="nonzero"/></svg>
|
||||
|
After Width: | Height: | Size: 442 B |
|
Before Width: | Height: | Size: 762 B |
|
Before Width: | Height: | Size: 140 B |
|
Before Width: | Height: | Size: 152 B |
|
Before Width: | Height: | Size: 382 B |
|
Before Width: | Height: | Size: 373 B |
|
Before Width: | Height: | Size: 205 B |
|
Before Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 140 B |
|
Before Width: | Height: | Size: 827 B |
|
Before Width: | Height: | Size: 167 B |
1
scene/resources/default_theme/graph_port.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m10 5c0 2.743-2.257 5-5 5s-5-2.257-5-5 2.257-5 5-5 5 2.257 5 5" fill="#fff"/><path d="m8.667 5c0 2.011-1.656 3.667-3.667 3.667s-3.667-1.656-3.667-3.667 1.656-3.667 3.667-3.667 3.667 1.656 3.667 3.667" fill="#b2b2b2" fill-opacity=".65"/></g></svg>
|
||||
|
After Width: | Height: | Size: 425 B |
1
scene/resources/default_theme/grid_layout.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke-width="1.3"><g stroke="#fefffe"><path d="m1.87 6.541h2.917v2.917h-2.917z"/><path d="m6.536 6.541h2.917v2.917h-2.917z"/><path d="m11.202 6.541h2.917v2.917h-2.917z"/></g><g stroke="#e0e0e0" stroke-opacity=".65"><path d="m5.432 1.112-1.95 1.95 1.95 1.95" stroke-linejoin="miter" stroke-miterlimit="10"/><path d="m3.482 3.062h9.386"/><path d="m10.731 11.112 1.95 1.95-1.95 1.95" stroke-linejoin="miter" stroke-miterlimit="10"/><path d="m3.294 13.062h9.387"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 662 B |
1
scene/resources/default_theme/grid_minimap.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m14 2.199v2.615l-2.625 1.313v-2.615zm-12 4.065 2.625 1.312v2.551l-2.625-1.313zm12 0v2.55l-2.625 1.313v-2.551zm-8 1.455h4v2.64h-4zm-4 2.56 2.625 1.313v2.521l-2.625-1.312zm12 0v2.522l-2.625 1.312v-2.521zm-8 1.455h4v2.641h-4zm1.701-8.109h2.299v2.734h-4.156s-.749.647-.875.641c-.131-.007-1.51-1.456-1.51-1.456l-1.459-.73v-2.615l.068.034s.027-.457.063-.676c.034-.212.197-.592.197-.592l-1.049-.524c-.079-.04-.167-.062-.256-.066-.354-.013-.648.27-.648.625v12c0 .237.134.453.346.559l4 2c.086.043.182.066.279.066h6c.097 0 .193-.023.279-.066l4-2c.212-.106.346-.322.346-.559v-12c0-.464-.489-.766-.904-.559l-3.869 1.934h-2.971s.033.417.016.625c-.03.346-.196.625-.196.625z" fill="#b2b2b2" fill-opacity=".65"/><path d="m5 6s-2.219-2.162-2.219-3.243c0-1.08 0-2.607 2.219-2.607s2.219 1.527 2.219 2.607c0 1.081-2.219 3.243-2.219 3.243z" fill="#fefffe"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
1
scene/resources/default_theme/grid_snap.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m3 0v3h-3v2h3v4h-3v2h3v3h2v-9h9v-2h-3v-3h-2v3h-4v-3zm4 13v2h2v-2zm6 0v2h2v-2z" fill="#b2b2b2" fill-opacity=".65"/><path d="m11 7c-2.194 0-4 1.806-4 4v2h2v-2c0-1.097.903-2 2-2s2 .903 2 2v2h2v-2c0-2.194-1.806-4-4-4z" fill="#fefffe"/></g></svg>
|
||||
|
After Width: | Height: | Size: 420 B |
|
Before Width: | Height: | Size: 112 B |
|
Before Width: | Height: | Size: 263 B |
|
Before Width: | Height: | Size: 300 B |
|
Before Width: | Height: | Size: 288 B |
|
Before Width: | Height: | Size: 450 B |
|
Before Width: | Height: | Size: 149 B |
1
scene/resources/default_theme/hslider_tick.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 4 15.999999" width="4" xmlns="http://www.w3.org/2000/svg"><path d="m1 0h2v16h-2z" fill="#fff" fill-opacity=".25" stroke-width=".285079"/></svg>
|
||||
|
After Width: | Height: | Size: 174 B |
|
Before Width: | Height: | Size: 85 B |
|
Before Width: | Height: | Size: 97 B |
1
scene/resources/default_theme/hsplitter.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" viewBox="0 0 8 48" xmlns="http://www.w3.org/2000/svg"><path d="m4 4.012v39.976" fill="none" stroke="#808080" stroke-opacity=".65" stroke-width="1.7"/></svg>
|
||||
|
After Width: | Height: | Size: 225 B |
|
Before Width: | Height: | Size: 86 B |
|
Before Width: | Height: | Size: 155 B |
|
Before Width: | Height: | Size: 227 B |
|
Before Width: | Height: | Size: 183 B |
|
Before Width: | Height: | Size: 103 B |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 640 B |
|
Before Width: | Height: | Size: 161 B |
|
Before Width: | Height: | Size: 234 B |
|
Before Width: | Height: | Size: 226 B |
|
Before Width: | Height: | Size: 448 B |
|
Before Width: | Height: | Size: 76 B |
|
Before Width: | Height: | Size: 85 B |
|
Before Width: | Height: | Size: 108 B |
|
Before Width: | Height: | Size: 242 B |
1
scene/resources/default_theme/indeterminate.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 15.999999" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m3.3333333 1c-1.2887 0-2.3333333 1.0446683-2.3333333 2.3333333v9.3333337c0 1.2887 1.0446683 2.333333 2.3333333 2.333333h9.3333337c1.2887 0 2.333333-1.044668 2.333333-2.333333v-9.3333337c0-1.2887-1.044668-2.3333333-2.333333-2.3333333z" fill="#fff" fill-opacity=".75" stroke-width="1.16667"/><path d="m3 7h10v2h-10z" fill="#1a1a1a" stroke-linecap="square" stroke-opacity=".75" stroke-width="2"/></svg>
|
||||
|
After Width: | Height: | Size: 499 B |
|
Before Width: | Height: | Size: 176 B |
|
Before Width: | Height: | Size: 158 B |
1
scene/resources/default_theme/line_edit_clear.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1 3 2-2 5 5 5-5 2 2-5 5 5 5-2 2-5.302-5-4.698 5-2-2 5-5z" fill="#fff" fill-opacity=".75" fill-rule="nonzero"/></svg>
|
||||
|
After Width: | Height: | Size: 273 B |
|
Before Width: | Height: | Size: 135 B |
|
|
@ -1,73 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import glob
|
||||
import os
|
||||
|
||||
enc = "utf-8"
|
||||
|
||||
# Change to the directory where the script is located,
|
||||
# so that the script can be run from any location
|
||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||
|
||||
# Generate include files
|
||||
|
||||
f = open("theme_data.h", "wb")
|
||||
|
||||
f.write(b"// THIS FILE HAS BEEN AUTOGENERATED, DON'T EDIT!!\n")
|
||||
|
||||
# Generate png image block
|
||||
f.write(b"\n// png image block\n")
|
||||
|
||||
pixmaps = glob.glob("*.png")
|
||||
pixmaps.sort()
|
||||
|
||||
for x in pixmaps:
|
||||
|
||||
var_str = x[:-4] + "_png"
|
||||
|
||||
s = "\nstatic const unsigned char " + var_str + "[] = {\n\t"
|
||||
f.write(s.encode(enc))
|
||||
|
||||
pngf = open(x, "rb")
|
||||
|
||||
b = pngf.read(1)
|
||||
while len(b) == 1:
|
||||
f.write(hex(ord(b)).encode(enc))
|
||||
b = pngf.read(1)
|
||||
if len(b) == 1:
|
||||
f.write(b", ")
|
||||
|
||||
f.write(b"\n};\n")
|
||||
pngf.close()
|
||||
|
||||
# Generate shaders block
|
||||
f.write(b"\n// shaders block\n")
|
||||
|
||||
shaders = glob.glob("*.gsl")
|
||||
shaders.sort()
|
||||
|
||||
for x in shaders:
|
||||
|
||||
var_str = x[:-4] + "_shader_code"
|
||||
|
||||
s = "\nstatic const char *" + var_str + " = \n"
|
||||
f.write(s.encode(enc))
|
||||
|
||||
sf = open(x, "rb")
|
||||
|
||||
b = sf.readline()
|
||||
while b != "":
|
||||
if b.endswith("\r\n"):
|
||||
b = b[:-2]
|
||||
if b.endswith("\n"):
|
||||
b = b[:-1]
|
||||
s = ' "' + b
|
||||
f.write(s.encode(enc))
|
||||
b = sf.readline()
|
||||
if b != "":
|
||||
f.write(b'"\n')
|
||||
|
||||
f.write(b'";\n')
|
||||
sf.close()
|
||||
|
||||
f.close()
|
||||
|
Before Width: | Height: | Size: 80 B |
1
scene/resources/default_theme/mini_checkerboard.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g stroke-linecap="round" stroke-linejoin="round" stroke-width="1.9994"><path d="m0 0v8h8v-8zm8 8v8h8v-8z" fill="#e0e0e0"/><path d="m8 0v8h8v-8zm0 8h-8v8h8z" fill="#fff"/></g></svg>
|
||||
|
After Width: | Height: | Size: 265 B |
|
Before Width: | Height: | Size: 119 B |
1
scene/resources/default_theme/option_button_arrow.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg"><path d="m10 3c-.264.01-.514.117-.697.307l-3.293 3.293-3.293-3.293c-.189-.194-.447-.303-.717-.303-.897 0-1.34 1.091-.697 1.717l4 4c.39.39 1.023.39 1.414 0l4-4c.657-.632.195-1.742-.717-1.721z" fill="#b2b2b2" fill-opacity=".85" fill-rule="nonzero"/></svg>
|
||||
|
After Width: | Height: | Size: 400 B |
|
Before Width: | Height: | Size: 656 B |
|
Before Width: | Height: | Size: 704 B |
|
Before Width: | Height: | Size: 667 B |
|
Before Width: | Height: | Size: 728 B |