summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/editor/icons/source/icon_zoom_less.svg79
-rw-r--r--tools/editor/icons/source/icon_zoom_reset.svg112
-rw-r--r--tools/editor/icons/svgs_2_pngs.py99
-rw-r--r--tools/scripts/svgs_2_pngs.py137
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()