diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/editor/icons/source/icon_zoom_less.svg | 79 | ||||
-rw-r--r-- | tools/editor/icons/source/icon_zoom_reset.svg | 112 | ||||
-rw-r--r-- | tools/editor/icons/svgs_2_pngs.py | 99 | ||||
-rw-r--r-- | tools/scripts/svgs_2_pngs.py | 137 |
4 files changed, 328 insertions, 99 deletions
diff --git a/tools/editor/icons/source/icon_zoom_less.svg b/tools/editor/icons/source/icon_zoom_less.svg new file mode 100644 index 0000000000..970b1954bb --- /dev/null +++ b/tools/editor/icons/source/icon_zoom_less.svg @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="16" + viewBox="0 0 16 16" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_zoom_less.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="3.0997291" + inkscape:cy="9.8345523" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1036.3622)"> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4137" + width="14" + height="1.9999478" + x="1" + y="1043.3622" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_zoom_reset.svg b/tools/editor/icons/source/icon_zoom_reset.svg new file mode 100644 index 0000000000..a82f93dfea --- /dev/null +++ b/tools/editor/icons/source/icon_zoom_reset.svg @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="16" + viewBox="0 0 16 16" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_zoom_reset.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="16.000001" + inkscape:cx="-8.8962151" + inkscape:cy="11.998138" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1036.3622)"> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4137" + width="2" + height="14.000017" + x="3" + y="1037.3622" /> + <rect + y="1037.3622" + x="12" + height="14.000017" + width="2" + id="rect4156" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4160" + width="2" + height="1.9999995" + x="7" + y="1046.3622" /> + <rect + y="1040.3622" + x="7" + height="1.9999995" + width="2" + id="rect4162" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 1,1040.3622 2,-3 2,0 0,3 z" + id="path4164" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4166" + d="m 10,1040.3622 2,-3 2,0 0,3 z" + style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/svgs_2_pngs.py b/tools/editor/icons/svgs_2_pngs.py deleted file mode 100644 index d47d8ed798..0000000000 --- a/tools/editor/icons/svgs_2_pngs.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- - -# Basic exporter for svg icons (requires Inkscape) - -import os.path -from os import listdir -from os.path import isfile, join -import subprocess -import sys - -import rsvg -import cairo - -SVGS_PATH = 'source/' -OUT_DIR = './' -DPI = 90 - -if len(sys.argv) >= 2: - try: - scale = int(sys.argv[1]) - if scale > 1: - OUT_DIR = '%sx/' % scale - DPI *= scale - except: - pass - -rsvg.set_default_dpi(DPI) - -last_svg_path = None -last_svg_data = None - -def svg_to_png(svg_path, png_path, dpi): - global last_svg_path, last_svg_data - - zoom = int(dpi / 90) - if last_svg_path != svg_path: - last_svg_data = open(svg_path, 'r').read() - last_svg_path = svg_path - svg = rsvg.Handle(data=last_svg_data) - img = cairo.ImageSurface( - cairo.FORMAT_ARGB32, - svg.props.width * zoom, - svg.props.height * zoom - ) - ctx = cairo.Context(img) - ctx.set_antialias(cairo.ANTIALIAS_DEFAULT) - ctx.scale(zoom, zoom) - svg.render_cairo(ctx) - img.write_to_png('%s.png' % png_path) - svg.close() - - -def export_all(svgs_path=SVGS_PATH, out_dir=OUT_DIR, dpi=DPI): - if not os.path.isdir(out_dir): - os.makedirs(out_dir) - - file_names = [f for f in listdir(svgs_path) if isfile(join(svgs_path, f))] - - for file_name in file_names: - # name without extensions - name_only = file_name.replace('.svg', '') - - icon_from_name = name_only - out_icon_names = [name_only] # export to a png with the same file name - rotations = [] - transforms = [] - - # special cases - if special_icons.has_key(name_only): - special_icon = special_icons[name_only] - if type(special_icon) is dict: - if special_icon.has_key('output_names'): - out_icon_names += special_icon['output_names'] - - svg_file_path = '%s%s.svg' % (svgs_path, icon_from_name) - - for index, out_icon_name in enumerate(out_icon_names): - svg_to_png(svg_file_path, out_dir + out_icon_name, dpi) - - -# special cases for icons that will be exported to multiple target pngs or that require transforms. -special_icons = { - 'icon_add_track': dict( output_names=['icon_add'] ), - 'icon_new': dict( output_names=['icon_file'] ), - 'icon_animation_tree_player': dict( output_names=['icon_animation_tree'] ), - 'icon_tool_rotate': dict( output_names=['icon_reload'] ), - 'icon_multi_edit': dict( output_names=['icon_multi_node_edit'] ), - 'icon_folder': dict( output_names=['icon_load', 'icon_open'] ), - 'icon_file_list': dict( output_names=['icon_enum'] ), - 'icon_collision_2d': dict( output_names=['icon_collision_polygon_2d', 'icon_polygon_2d'] ), - 'icon_class_list': dict( output_names=['icon_filesystem'] ), - 'icon_color_ramp': dict( output_names=['icon_graph_color_ramp'] ), - 'icon_translation': dict( output_names=['icon_p_hash_translation'] ), - 'icon_shader': dict( output_names=['icon_shader_material', 'icon_material_shader'] ), - 'icon_canvas_item_shader_graph': dict( output_names=['icon_material_shader_graph'] ), - -} - -export_all() diff --git a/tools/scripts/svgs_2_pngs.py b/tools/scripts/svgs_2_pngs.py new file mode 100644 index 0000000000..acb50892c3 --- /dev/null +++ b/tools/scripts/svgs_2_pngs.py @@ -0,0 +1,137 @@ +# -*- coding: utf-8 -*- + +# Basic exporter for svg icons + +from os import listdir +from os.path import isfile, join, dirname, realpath +import subprocess +import sys + +import rsvg +import cairo + +last_svg_path = None +last_svg_data = None + +SCRIPT_FOLDER = dirname(realpath(__file__)) + '/' +theme_dir_base = SCRIPT_FOLDER + '../../scene/resources/default_theme/' +theme_dir_source = theme_dir_base + 'source/' +icons_dir_base = SCRIPT_FOLDER + '../editor/icons/' +icons_dir_2x = icons_dir_base + '2x/' +icons_dir_source = icons_dir_base + 'source/' + + +def svg_to_png(svg_path, png_path, dpi): + global last_svg_path, last_svg_data + + zoom = int(dpi / 90) + if last_svg_path != svg_path: + last_svg_data = open(svg_path, 'r').read() + last_svg_path = svg_path + svg = rsvg.Handle(data=last_svg_data) + img = cairo.ImageSurface( + cairo.FORMAT_ARGB32, + svg.props.width * zoom, + svg.props.height * zoom + ) + ctx = cairo.Context(img) + ctx.set_antialias(cairo.ANTIALIAS_DEFAULT) + ctx.scale(zoom, zoom) + svg.render_cairo(ctx) + img.write_to_png('%s.png' % png_path) + svg.close() + + +def export_icons(): + svgs_path = icons_dir_source + + file_names = [f for f in listdir(svgs_path) if isfile(join(svgs_path, f))] + + for file_name in file_names: + # name without extensions + name_only = file_name.replace('.svg', '') + + out_icon_names = [name_only] # export to a png with the same file name + theme_out_icon_names = [] + # special cases + if special_icons.has_key(name_only): + special_icon = special_icons[name_only] + if type(special_icon) is dict: + if special_icon.get('avoid_self'): + out_icon_names = [] + if special_icon.has_key('output_names'): + out_icon_names += special_icon['output_names'] + if special_icon.has_key('theme_output_names'): + theme_out_icon_names += special_icon['theme_output_names'] + + source_path = '%s%s.svg' % (svgs_path, name_only) + + for out_icon_name in out_icon_names: + svg_to_png(source_path, icons_dir_base + out_icon_name, 90) + svg_to_png(source_path, icons_dir_2x + out_icon_name, 180) + for theme_out_icon_name in theme_out_icon_names: + svg_to_png(source_path, theme_dir_base + theme_out_icon_name, 90) + + + +def export_theme(): + svgs_path = theme_dir_source + file_names = [f for f in listdir(svgs_path) if isfile(join(svgs_path, f))] + + for file_name in file_names: + # name without extensions + name_only = file_name.replace('.svg', '') + + out_icon_names = [name_only] # export to a png with the same file name + # special cases + if theme_icons.has_key(name_only): + special_icon = theme_icons[name_only] + if type(special_icon) is dict: + if special_icon.has_key('output_names'): + out_icon_names += special_icon['output_names'] + + source_path = '%s%s.svg' % (svgs_path, name_only) + + for out_icon_name in out_icon_names: + svg_to_png(source_path, theme_dir_base + out_icon_name, 90) + + +# special cases for icons that will be exported to multiple target pngs or that require transforms. +special_icons = { + 'icon_add_track': dict( + output_names=['icon_add'], + theme_output_names=['icon_add', 'icon_zoom_more'] + ), + 'icon_new': dict( output_names=['icon_file'] ), + 'icon_animation_tree_player': dict( output_names=['icon_animation_tree'] ), + 'icon_tool_rotate': dict( + output_names=['icon_reload'], + theme_output_names= ['icon_reload'] + ), + 'icon_multi_edit': dict( output_names=['icon_multi_node_edit'] ), + 'icon_folder': dict( + output_names=['icon_load', 'icon_open'], + theme_output_names= ['icon_folder'] + ), + 'icon_file_list': dict( output_names=['icon_enum'] ), + 'icon_collision_2d': dict( output_names=['icon_collision_polygon_2d', 'icon_polygon_2d'] ), + 'icon_class_list': dict( output_names=['icon_filesystem'] ), + 'icon_color_ramp': dict( output_names=['icon_graph_color_ramp'] ), + 'icon_translation': dict( output_names=['icon_p_hash_translation'] ), + 'icon_shader': dict( output_names=['icon_shader_material', 'icon_material_shader'] ), + 'icon_canvas_item_shader_graph': dict( output_names=['icon_material_shader_graph'] ), + + 'icon_color_pick': dict( theme_output_names= ['icon_color_pick'], avoid_self=True ), + 'icon_play': dict( theme_output_names= ['icon_play'] ), + 'icon_stop': dict( theme_output_names= ['icon_stop'] ), + 'icon_zoom_less': dict( theme_output_names= ['icon_zoom_less'], avoid_self=True ), + 'icon_zoom_reset': dict( theme_output_names= ['icon_zoom_reset'], avoid_self=True ) +} + +theme_icons = { + 'icon_close': dict(output_names=['close', 'close_hl']), + 'tab_menu': dict(output_names=['tab_menu_hl']) +} + +export_icons() +export_theme() |