aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/edje/utils/gimp-edje-export.py
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/edje/utils/gimp-edje-export.py')
-rwxr-xr-xlibraries/edje/utils/gimp-edje-export.py146
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
34from gimpfu import *
35import os.path
36import re, gettext
37
38
39def 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
47def 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
53def 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
86def 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
101def 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
128register(
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
146main()