summaryrefslogtreecommitdiff
path: root/editor/icons/SCsub
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2017-03-05 14:21:25 +0100
committerRémi Verschelde <rverschelde@gmail.com>2017-03-05 14:21:25 +0100
commit49c065d29ca07040c3fd810026121164ad86b247 (patch)
tree285176e0c80a41c22c3e8f171024472cfdc7d765 /editor/icons/SCsub
parent532f6d4b431f940432e82b7fc7826652b7a4520d (diff)
Refactoring: rename tools/editor/ to editor/
The other subfolders of tools/ had already been moved to either editor/, misc/ or thirdparty/, so the hiding the editor code that deep was no longer meaningful.
Diffstat (limited to 'editor/icons/SCsub')
-rw-r--r--editor/icons/SCsub96
1 files changed, 96 insertions, 0 deletions
diff --git a/editor/icons/SCsub b/editor/icons/SCsub
new file mode 100644
index 0000000000..3fc8e5461f
--- /dev/null
+++ b/editor/icons/SCsub
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+
+Import('env')
+
+
+def make_editor_icons_action(target, source, env):
+
+ import os
+ import cStringIO
+
+ dst = target[0].srcnode().abspath
+ pixmaps = source
+
+ s = cStringIO.StringIO()
+
+ s.write("#include \"editor_icons.h\"\n\n")
+ s.write("#include \"editor_scale.h\"\n\n")
+ s.write("#include \"scene/resources/theme.h\"\n\n")
+
+ hidpi_list = []
+
+ for x in pixmaps:
+
+ x = str(x)
+ var_str = os.path.basename(x)[:-4] + "_png"
+ # print(var_str)
+
+ s.write("static const unsigned char " + var_str + "[]={\n")
+
+ pngf = open(x, "rb")
+
+ b = pngf.read(1)
+ while(len(b) == 1):
+ s.write(hex(ord(b)))
+ b = pngf.read(1)
+ if (len(b) == 1):
+ s.write(",")
+
+ s.write("\n};\n\n")
+
+ pngf.close()
+ var_str = os.path.basename(x)[:-4] + "_hidpi_png"
+ try:
+
+ pngf = open(os.path.dirname(x) + "/2x/" + os.path.basename(x), "rb")
+
+ s.write("static const unsigned char " + var_str + "[]={\n")
+
+ b = pngf.read(1)
+ while(len(b) == 1):
+ s.write(hex(ord(b)))
+ b = pngf.read(1)
+ if (len(b) == 1):
+ s.write(",")
+
+ s.write("\n};\n\n\n")
+ hidpi_list.append(x)
+
+ except:
+ s.write("static const unsigned char* " + var_str + "=NULL;\n\n\n")
+
+ s.write("static Ref<ImageTexture> make_icon(const uint8_t* p_png,const uint8_t* p_hidpi_png) {\n")
+ s.write("\tRef<ImageTexture> texture( memnew( ImageTexture ) );\n")
+ s.write("\tbool use_hidpi_image=(editor_get_scale()>1.0&&p_hidpi_png);\n")
+ s.write("\tImage img(use_hidpi_image?p_hidpi_png:p_png);\n")
+ s.write("\tif (editor_get_scale()>1.0 && !p_hidpi_png) { img.convert(Image::FORMAT_RGBA8); img.expand_x2_hq2x(); use_hidpi_image=true;}\n")
+ s.write("\timg.resize(img.get_width()*EDSCALE/(use_hidpi_image?2:1),img.get_height()*EDSCALE/(use_hidpi_image?2:1));\n")
+ s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n")
+ s.write("\treturn texture;\n")
+ s.write("}\n\n")
+
+ s.write("void editor_register_icons(Ref<Theme> p_theme) {\n\n")
+
+ for x in pixmaps:
+
+ x = os.path.basename(str(x))
+ type = x[5:-4].title().replace("_", "")
+ var_str = x[:-4] + "_png"
+ var_str_hidpi = x[:-4] + "_hidpi_png"
+ s.write("\tp_theme->set_icon(\"" + type + "\",\"EditorIcons\",make_icon(" + var_str + "," + var_str_hidpi + "));\n")
+
+ s.write("\n\n}\n\n")
+
+ f = open(dst, "wb")
+ f.write(s.getvalue())
+ f.close()
+ s.close()
+
+make_editor_icons_builder = Builder(action=make_editor_icons_action,
+ suffix='.cpp',
+ src_suffix='.png')
+env['BUILDERS']['MakeEditorIconsBuilder'] = make_editor_icons_builder
+env.Alias('editor_icons', [env.MakeEditorIconsBuilder('#editor/editor_icons.cpp', Glob("*.png"))])
+
+env.editor_sources.append("#editor/editor_icons.cpp")
+Export('env')