File: SCsub

package info (click to toggle)
zytrax 0%2Bgit20201215-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 2,488 kB
  • sloc: cpp: 41,800; ansic: 3,387; makefile: 8; sh: 3
file content (96 lines) | stat: -rw-r--r-- 2,011 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96

import os

try:
	from StringIO import StringIO
except ImportError:
	from io import StringIO

Import('env');
Export('env');


targets=[]

def make_gui_icons_action(target, source, env):

	dst = target[0]
	png_icons = source

	icons_string = StringIO()
	icons_sizes = ""
	for f in png_icons:

		fname = str(f)

		icons_string.write('\t"')
		size=0
		with open(fname, 'rb') as pngf:
			b = pngf.read(1)
			while(len(b) == 1):
				icons_string.write("\\" + str(hex(ord(b)))[1:])
				size+=1
				b = pngf.read(1)
		if (icons_sizes!=""):
			icons_sizes+=","
		icons_sizes+=str(size)


		icons_string.write('"')
		if fname != png_icons[-1]:
			icons_string.write(",")
		icons_string.write('\n')

	s = StringIO()
	s.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
	s.write("#ifndef _EDITOR_ICONS_H\n")
	s.write("#define _EDITOR_ICONS_H\n")

	s.write("static const int gui_icons_count = {};\n".format(len(png_icons)))
	s.write("static const char *gui_icons_sources[] = {\n")
	s.write(icons_string.getvalue())
	s.write('};\n\n')

	s.write("static const int gui_icons_sizes[] = {\n")
	s.write("\t"+icons_sizes+"\n")
	s.write('};\n\n')

	s.write("static const char *gui_icons_names[] = {\n")

	# this is used to store the indices of thumbnail icons
	thumb_medium_indices = [];
	index = 0
	for f in png_icons:

		fname = str(f)

		icon_name = os.path.basename(fname)[5:-4].title().replace("_", "")
		# some special cases
		s.write('\t"{0}"'.format(icon_name))
		if fname != png_icons[-1]:
			s.write(",")
		s.write('\n')

		index += 1

	s.write('};\n')

	s.write("#endif\n")


	with open(str(dst), "w") as f:
		f.write(s.getvalue())

	s.close()
	icons_string.close()

env.add_sources(targets,"*.cpp")

make_gui_icons_builder = Builder(action=make_gui_icons_action,
				    suffix='.h',
				    src_suffix='.png')

env['BUILDERS']['MakeEditorIconsBuilder'] = make_gui_icons_builder
env.Alias('gui_icons', [env.MakeEditorIconsBuilder('#gui/gui_icons.gen.h', Glob("icons/*.png"))])

env.libs+=env.Library('gui', targets);