diff options
author | David Walter Seikel | 2012-01-04 18:41:13 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-01-04 18:41:13 +1000 |
commit | dd7595a3475407a7fa96a97393bae8c5220e8762 (patch) | |
tree | e341e911d7eb911a51684a7412ef7f7c7605d28e /libraries/edje/utils/gimp-edje-export.py | |
parent | Add the skeleton. (diff) | |
download | SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.zip SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.gz SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.bz2 SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.xz |
Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje.
Note that embryo wont be used, but I'm not sure yet if you can build edje without it.
Diffstat (limited to '')
-rwxr-xr-x | libraries/edje/utils/gimp-edje-export.py | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/libraries/edje/utils/gimp-edje-export.py b/libraries/edje/utils/gimp-edje-export.py new file mode 100755 index 0000000..88e1cb6 --- /dev/null +++ b/libraries/edje/utils/gimp-edje-export.py | |||
@@ -0,0 +1,146 @@ | |||
1 | #!/usr/bin/env python | ||
2 | |||
3 | # Gimp-Python - allows the writing of Gimp plugins in Python. | ||
4 | # Copyright (C) 2007 Renato Chencarek <renato.chencarek@openbossa.org> | ||
5 | # | ||
6 | # This program is free software; you can redistribute it and/or modify | ||
7 | # it under the terms of the GNU General Public License as published by | ||
8 | # the Free Software Foundation; either version 2 of the License, or | ||
9 | # (at your option) any later version. | ||
10 | # | ||
11 | # This program is distributed in the hope that it will be useful, | ||
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | # GNU General Public License for more details. | ||
15 | # | ||
16 | # You should have received a copy of the GNU General Public License | ||
17 | # along with this program; if not, write to the Free Software | ||
18 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
19 | # | ||
20 | # INSTALL: | ||
21 | # | ||
22 | # cp gimp-edje-export.py ~/.gimp/plug-ins/ | ||
23 | # chmod +x ~/.gimp/plug-ins/gimp-edje-export.py | ||
24 | # | ||
25 | # Notes: | ||
26 | # - ~/.gimp may change depending on gimp version, ie: ~/.gimp-2.4. | ||
27 | # - Make sure this file is marked as executable! | ||
28 | # | ||
29 | # USAGE: | ||
30 | # Load an image and go to "Python-Fu > Edje Save" that will | ||
31 | # appear on the image's window. | ||
32 | # | ||
33 | |||
34 | from gimpfu import * | ||
35 | import os.path | ||
36 | import re, gettext | ||
37 | |||
38 | |||
39 | def save_layer(layer, filename): | ||
40 | temp_image = pdb.gimp_image_new (layer.width, layer.height, layer.image.base_type) | ||
41 | temp_drawable = pdb.gimp_layer_new_from_drawable (layer, temp_image) | ||
42 | temp_image.add_layer (temp_drawable, -1) | ||
43 | pdb.gimp_file_save(temp_image, temp_drawable, filename, filename) | ||
44 | gimp.delete(temp_image) | ||
45 | return | ||
46 | |||
47 | def write_image_section(layers, edje_file, filenames): | ||
48 | edje_file.write("images {\n") | ||
49 | for layer in layers: | ||
50 | edje_file.write(' image: "%s" COMP;\n' % filenames[layer.name]) | ||
51 | edje_file.write("\n}\n") | ||
52 | |||
53 | def write_layer_data(layer, edje_file, filename): | ||
54 | expr = re.compile('\W') | ||
55 | name = expr.sub("_", layer.name) | ||
56 | data = {'name':name, 'width':layer.width, 'height':layer.height, | ||
57 | 'x0':layer.offsets[0], 'y0':layer.offsets[1], | ||
58 | 'x1':layer.offsets[0] + layer.width, 'y1':layer.offsets[1] + layer.height, | ||
59 | 'path':filename, 'visible':int(layer.visible) | ||
60 | } | ||
61 | text = """\ | ||
62 | part { | ||
63 | name: "%(name)s"; | ||
64 | type: IMAGE; | ||
65 | mouse_events: 0; | ||
66 | description { | ||
67 | state: "default" 0.0; | ||
68 | min: %(width)d %(height)d; | ||
69 | max: %(width)d %(height)d; | ||
70 | rel1 { | ||
71 | relative: 0.0 0.0; | ||
72 | offset: %(x0)d %(y0)d; | ||
73 | } | ||
74 | rel2 { | ||
75 | relative: 0.0 0.0; | ||
76 | offset: %(x1)d %(y1)d; | ||
77 | } | ||
78 | image { | ||
79 | normal: "%(path)s"; | ||
80 | } | ||
81 | visible: %(visible)d; | ||
82 | } | ||
83 | }\n""" % data | ||
84 | edje_file.write(text) | ||
85 | |||
86 | def fix_layers_name(img, save_path): | ||
87 | filenames = {} | ||
88 | for layer in img.layers: | ||
89 | expr = re.compile('\W') | ||
90 | name = expr.sub("_", layer.name) | ||
91 | if not name: | ||
92 | name = "unnamed" | ||
93 | layer.name = name | ||
94 | if name in filenames.keys(): | ||
95 | continue | ||
96 | filename = os.path.join(save_path, name + ".png") | ||
97 | filenames[name] = filename | ||
98 | |||
99 | return filenames | ||
100 | |||
101 | def edje_save(img, drawable, save_path, save_layers, edje_filename, invisible): | ||
102 | layers = [] | ||
103 | filenames = {} | ||
104 | for layer in img.layers: | ||
105 | if layer.visible or invisible: | ||
106 | expr = re.compile('\W') | ||
107 | name = expr.sub("_", layer.name) | ||
108 | layer.name = name | ||
109 | if name in filenames.keys(): | ||
110 | continue | ||
111 | filename = os.path.join(save_path, name + ".png") | ||
112 | filenames[name] = filename | ||
113 | layers.append(layer) | ||
114 | |||
115 | edje_file = open(os.path.join(save_path, edje_filename), 'w') | ||
116 | write_image_section(layers, edje_file, filenames) | ||
117 | |||
118 | edje_file.write('collections {\n group {\n name: "%s";\n' % img.name) | ||
119 | edje_file.write(' min: %d %d;\n max: %d %d;\n parts {\n' % (img.width, img.height,img.width, img.height)) | ||
120 | layers.reverse() | ||
121 | for l in layers: | ||
122 | if save_layers: | ||
123 | save_layer(l, filenames[l.name]) | ||
124 | write_layer_data(l, edje_file,filenames[l.name]) | ||
125 | edje_file.write(' }\n }\n}\n') | ||
126 | edje_file.close() | ||
127 | |||
128 | register( | ||
129 | "python_fu_edje_save", | ||
130 | "Export the Image as Edje file", | ||
131 | "Export the Image as Edje file", | ||
132 | "Renato Chencarek", | ||
133 | "Renato Chencarek", | ||
134 | "2007", | ||
135 | "<Image>/Python-Fu/_Edje Save", | ||
136 | "RGBA, GRAYA", | ||
137 | [ | ||
138 | (PF_STRING, "save_path", "Path", "/tmp/"), | ||
139 | (PF_TOGGLE, "save_layers", "Save Layers ?", True), | ||
140 | (PF_STRING, "edje_filename", "Filename for edje", "edje.edc"), | ||
141 | (PF_TOGGLE, "export_invisible_layers", "Export invisible layers", False) | ||
142 | ], | ||
143 | [], | ||
144 | edje_save) | ||
145 | |||
146 | main() | ||