qttk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/Gemfile +6 -0
  4. data/Gemfile.lock +36 -0
  5. data/README.markdown +131 -0
  6. data/Rakefile +17 -0
  7. data/TODO.markdown +236 -0
  8. data/bin/qt +7 -0
  9. data/etc/gutenprint/gp-tool.rb +56 -0
  10. data/etc/gutenprint/gutenprint-filter.c +400 -0
  11. data/etc/gutenprint/gutenprint.rb +86 -0
  12. data/etc/gutenprint/stp-test +326 -0
  13. data/etc/images/3551599565_db282cf840_o.jpg +0 -0
  14. data/etc/images/4843122063_d582c569e9_o.jpg +0 -0
  15. data/etc/images/4843128953_83c1770907_o.jpg +0 -0
  16. data/lib/quadtone.rb +56 -0
  17. data/lib/quadtone/cgats.rb +137 -0
  18. data/lib/quadtone/cluster_calculator.rb +81 -0
  19. data/lib/quadtone/color.rb +83 -0
  20. data/lib/quadtone/color/cmyk.rb +112 -0
  21. data/lib/quadtone/color/device_n.rb +23 -0
  22. data/lib/quadtone/color/gray.rb +46 -0
  23. data/lib/quadtone/color/lab.rb +150 -0
  24. data/lib/quadtone/color/qtr.rb +71 -0
  25. data/lib/quadtone/color/rgb.rb +71 -0
  26. data/lib/quadtone/color/xyz.rb +80 -0
  27. data/lib/quadtone/curve.rb +138 -0
  28. data/lib/quadtone/curve_set.rb +196 -0
  29. data/lib/quadtone/descendants.rb +9 -0
  30. data/lib/quadtone/environment.rb +5 -0
  31. data/lib/quadtone/extensions/math.rb +11 -0
  32. data/lib/quadtone/extensions/pathname3.rb +11 -0
  33. data/lib/quadtone/printer.rb +106 -0
  34. data/lib/quadtone/profile.rb +217 -0
  35. data/lib/quadtone/quad_file.rb +59 -0
  36. data/lib/quadtone/renderer.rb +139 -0
  37. data/lib/quadtone/run.rb +10 -0
  38. data/lib/quadtone/sample.rb +32 -0
  39. data/lib/quadtone/separator.rb +36 -0
  40. data/lib/quadtone/target.rb +277 -0
  41. data/lib/quadtone/tool.rb +61 -0
  42. data/lib/quadtone/tools/add_printer.rb +73 -0
  43. data/lib/quadtone/tools/characterize.rb +43 -0
  44. data/lib/quadtone/tools/chart.rb +31 -0
  45. data/lib/quadtone/tools/check.rb +16 -0
  46. data/lib/quadtone/tools/dir.rb +15 -0
  47. data/lib/quadtone/tools/edit.rb +23 -0
  48. data/lib/quadtone/tools/init.rb +82 -0
  49. data/lib/quadtone/tools/install.rb +15 -0
  50. data/lib/quadtone/tools/linearize.rb +28 -0
  51. data/lib/quadtone/tools/list.rb +19 -0
  52. data/lib/quadtone/tools/print.rb +38 -0
  53. data/lib/quadtone/tools/printer_options.rb +40 -0
  54. data/lib/quadtone/tools/rename.rb +17 -0
  55. data/lib/quadtone/tools/render.rb +43 -0
  56. data/lib/quadtone/tools/rewrite.rb +15 -0
  57. data/lib/quadtone/tools/separate.rb +71 -0
  58. data/lib/quadtone/tools/show.rb +15 -0
  59. data/lib/quadtone/tools/test.rb +26 -0
  60. data/qttk.gemspec +34 -0
  61. metadata +215 -0
@@ -0,0 +1,86 @@
1
+ module Quadtone
2
+
3
+ class Gutenprint
4
+
5
+ attr_accessor :printer
6
+
7
+ def initialize(printer)
8
+ @printer = printer
9
+ end
10
+
11
+ def channels
12
+ run_filter(%w{-s}).split(/\n/).map { |s| s.split(/:\s+/, 2) }
13
+ end
14
+
15
+ def geometry
16
+ Hash[
17
+ run_filter(%w{-g}).split(/\n/).map do |s|
18
+ key, value = s.split(/:\s+/, 2)
19
+ value = case value
20
+ when /^\d+$/
21
+ value.to_i
22
+ when /^\d+\.\d+$/
23
+ value.to_f
24
+ else
25
+ value
26
+ end
27
+ [key.to_sym, value]
28
+ end
29
+ ]
30
+ end
31
+
32
+ def print(args, &block)
33
+ run_filter(
34
+ [
35
+ '-c', args[:num_channels],
36
+ '-h', args[:rows],
37
+ '-w', args[:columns],
38
+ '-o', args[:output_file],
39
+ '-'
40
+ ], 'w'
41
+ ) do |io|
42
+ yield(io)
43
+ end
44
+ end
45
+
46
+ private
47
+
48
+ def run_filter(args, mode='r', &block)
49
+ cmd = [
50
+ File.join(File.realpath(File.dirname($0)), 'gutenprint-filter'),
51
+ '-d', @printer,
52
+ ] + args
53
+ cmd = cmd.map { |c| c.to_s }
54
+ ;;warn cmd.join(' ')
55
+
56
+ IO.popen(cmd, mode) do |io|
57
+ if block_given?
58
+ yield(io)
59
+ else
60
+ io.read
61
+ end
62
+ end
63
+ end
64
+
65
+ # currently unused
66
+ class ChannelMap
67
+
68
+ def initialize(gp_channels)
69
+ @qtr_channels = {}
70
+ gp_channels.each_with_index do |channel, i|
71
+ short, long = *channel
72
+ qtr_key = long.split(/\s+/).map { |s| (s == 'Black') ? 'K' : s[0] }.join.to_sym
73
+ raise "Unknown channel: #{long}" unless Color::QTR::Channels.index(qtr_key)
74
+ @qtr_channels[qtr_key] = i
75
+ end
76
+ end
77
+
78
+ def qtr_to_raw_channel_index(qtr_color)
79
+ @qtr_channels[qtr_color.channel]
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+
86
+ end
@@ -0,0 +1,326 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'ffi'
4
+
5
+ module Gutenprint
6
+
7
+ module FFI
8
+
9
+ extend ::FFI::Library
10
+
11
+ ffi_lib('/usr/lib/libgutenprint.dylib')
12
+
13
+ STP_CHANNEL_LIMIT = 32
14
+
15
+ STP_IMAGE_STATUS_OK = 0
16
+ STP_IMAGE_STATUS_ABORT = 1
17
+
18
+ class ImageS < ::FFI::Struct
19
+
20
+ end
21
+
22
+ attach_function :stp_init, [], :void
23
+
24
+ ### printers.h
25
+
26
+ attach_function :stp_printer_model_count, [], :int
27
+ attach_function :stp_get_printer_by_index, [:int], :pointer
28
+ attach_function :stp_get_printer, [:pointer], :string
29
+ attach_function :stp_printer_get_driver, [:pointer], :string
30
+ attach_function :stp_printer_get_long_name, [:pointer], :string
31
+ attach_function :stp_printer_get_device_id, [:pointer], :string
32
+ attach_function :stp_printer_get_family, [:pointer], :string
33
+ attach_function :stp_printer_get_manufacturer, [:pointer], :string
34
+ attach_function :stp_printer_get_defaults, [:pointer], :pointer
35
+ attach_function :stp_set_printer_defaults, [:pointer, :pointer], :void
36
+ attach_function :stp_set_printer_defaults_soft, [:pointer, :pointer], :void
37
+
38
+ ###
39
+ ### vars.h
40
+ ###
41
+
42
+ enum :stp_parameter_type, [
43
+ :string_list,
44
+ :int,
45
+ :boolean,
46
+ :double,
47
+ :curve,
48
+ :file,
49
+ :raw,
50
+ :array,
51
+ :dimension,
52
+ :invalid
53
+ ]
54
+
55
+ enum :stp_parameter_class, [
56
+ :feature,
57
+ :output,
58
+ :core,
59
+ :invalid
60
+ ]
61
+
62
+ enum :stp_parameter_level, [
63
+ :basic,
64
+ :advanced,
65
+ :advanced1,
66
+ :advanced2,
67
+ :advanced3,
68
+ :advanced4,
69
+ :internal,
70
+ :external,
71
+ :invalid
72
+ ]
73
+
74
+ enum :stp_parameter_activity, [
75
+ :inactive,
76
+ :defaulted,
77
+ :active
78
+ ]
79
+
80
+ # basic printer settings
81
+ attach_function :stp_vars_create, [], :pointer
82
+ attach_function :stp_vars_copy, [:pointer, :pointer], :void
83
+ attach_function :stp_default_settings, [], :void
84
+ attach_function :stp_vars_create_copy, [:pointer], :pointer
85
+ attach_function :stp_vars_destroy, [:pointer], :void
86
+ attach_function :stp_set_driver, [:pointer, :string], :void
87
+ attach_function :stp_get_driver, [:pointer], :string
88
+ attach_function :stp_set_color_conversion, [:pointer, :string], :void
89
+ attach_function :stp_get_color_conversion, [:pointer], :string
90
+ attach_function :stp_set_left, [:pointer, :int], :void
91
+ attach_function :stp_get_left, [:pointer], :int
92
+ attach_function :stp_set_top, [:pointer, :int], :void
93
+ attach_function :stp_get_top, [:pointer], :int
94
+ attach_function :stp_set_width, [:pointer, :int], :void
95
+ attach_function :stp_get_width, [:pointer], :int
96
+ attach_function :stp_set_height, [:pointer, :int], :void
97
+ attach_function :stp_get_height, [:pointer], :int
98
+ attach_function :stp_set_page_width, [:pointer, :int], :void
99
+ attach_function :stp_get_page_width, [:pointer], :int
100
+ attach_function :stp_set_page_height, [:pointer, :int], :void
101
+ attach_function :stp_get_page_height, [:pointer], :int
102
+ attach_function :stp_set_outfunc, [:pointer, :pointer], :void
103
+ attach_function :stp_get_outfunc, [:pointer], :pointer
104
+ attach_function :stp_set_errfunc, [:pointer, :pointer], :void
105
+ attach_function :stp_get_errfunc, [:pointer], :pointer
106
+ attach_function :stp_set_outdata, [:pointer, :pointer], :void
107
+ attach_function :stp_get_outdata, [:pointer], :void
108
+ attach_function :stp_set_errdata, [:pointer, :pointer], :void
109
+ attach_function :stp_get_errdata, [:pointer], :void
110
+
111
+ # parameter management
112
+ attach_function :stp_get_parameter_list, [:pointer], :pointer
113
+ attach_function :stp_parameter_list_count, [:pointer], :int
114
+ attach_function :stp_parameter_find, [:pointer, :string], :pointer
115
+ attach_function :stp_parameter_list_param, [:pointer, :int], :pointer
116
+ attach_function :stp_parameter_list_destroy, [:pointer], :void
117
+ attach_function :stp_parameter_list_create, [], :pointer
118
+ attach_function :stp_parameter_list_add_param, [:pointer, :pointer], :void
119
+ attach_function :stp_parameter_list_copy, [:pointer], :pointer
120
+ attach_function :stp_parameter_list_append, [:pointer, :pointer], :void
121
+ attach_function :stp_describe_parameter, [:pointer, :string, :pointer], :void
122
+ attach_function :stp_parameter_description_destroy, [:pointer], :void
123
+ attach_function :stp_parameter_find_in_settings, [:pointer, :string], :pointer
124
+ attach_function :stp_set_string_parameter, [:pointer, :string, :string], :void
125
+ attach_function :stp_set_string_parameter_n, [:pointer, :string, :string, :int], :void
126
+ attach_function :stp_set_file_parameter, [:pointer, :string, :string], :void
127
+ attach_function :stp_set_file_parameter_n, [:pointer, :string, :string, :int], :void
128
+ attach_function :stp_set_float_parameter, [:pointer, :string, :double], :void
129
+ attach_function :stp_set_int_parameter, [:pointer, :string, :int], :void
130
+ attach_function :stp_set_dimension_parameter, [:pointer, :string, :int], :void
131
+ attach_function :stp_set_boolean_parameter, [:pointer, :string, :int], :void
132
+ attach_function :stp_set_curve_parameter, [:pointer, :string, :pointer], :void
133
+ attach_function :stp_set_array_parameter, [:pointer, :string, :pointer], :void
134
+ attach_function :stp_set_raw_parameter, [:pointer, :string, :pointer, :int], :void
135
+ attach_function :stp_scale_float_parameter, [:pointer, :string, :double], :void
136
+ attach_function :stp_set_default_string_parameter, [:pointer, :string, :string], :void
137
+ attach_function :stp_set_default_string_parameter_n, [:pointer, :string, :string, :int], :void
138
+ attach_function :stp_set_default_file_parameter, [:pointer, :string, :string], :void
139
+ attach_function :stp_set_default_file_parameter_n, [:pointer, :string, :string, :int], :void
140
+ attach_function :stp_set_default_float_parameter, [:pointer, :string, :double], :void
141
+ attach_function :stp_set_default_int_parameter, [:pointer, :string, :int], :void
142
+ attach_function :stp_set_default_dimension_parameter, [:pointer, :string, :int], :void
143
+ attach_function :stp_set_default_boolean_parameter, [:pointer, :string, :int], :void
144
+ attach_function :stp_set_default_curve_parameter, [:pointer, :string, :pointer], :void
145
+ attach_function :stp_set_default_array_parameter, [:pointer, :string, :pointer], :void
146
+ attach_function :stp_set_default_raw_parameter, [:pointer, :string, :pointer, :int], :void
147
+ attach_function :stp_get_string_parameter, [:pointer, :string], :string
148
+ attach_function :stp_get_file_parameter, [:pointer, :string], :string
149
+ attach_function :stp_get_float_parameter, [:pointer, :string], :double
150
+ attach_function :stp_get_int_parameter, [:pointer, :string], :int
151
+ attach_function :stp_get_dimension_parameter, [:pointer, :string], :int
152
+ attach_function :stp_get_boolean_parameter, [:pointer, :string], :int
153
+ attach_function :stp_get_curve_parameter, [:pointer, :string], :pointer
154
+ attach_function :stp_get_array_parameter, [:pointer, :string], :pointer
155
+ attach_function :stp_get_raw_parameter, [:pointer, :string], :pointer
156
+ attach_function :stp_clear_string_parameter, [:pointer, :string], :void
157
+ attach_function :stp_clear_file_parameter, [:pointer, :string], :void
158
+ attach_function :stp_clear_float_parameter, [:pointer, :string], :void
159
+ attach_function :stp_clear_int_parameter, [:pointer, :string], :void
160
+ attach_function :stp_clear_dimension_parameter, [:pointer, :string], :void
161
+ attach_function :stp_clear_boolean_parameter, [:pointer, :string], :void
162
+ attach_function :stp_clear_curve_parameter, [:pointer, :string], :void
163
+ attach_function :stp_clear_array_parameter, [:pointer, :string], :void
164
+ attach_function :stp_clear_raw_parameter, [:pointer, :string], :void
165
+ attach_function :stp_clear_parameter, [:pointer, :string, :stp_parameter_type], :void
166
+ attach_function :stp_list_string_parameters, [:pointer], :pointer
167
+ attach_function :stp_list_file_parameters, [:pointer], :pointer
168
+ attach_function :stp_list_float_parameters, [:pointer], :pointer
169
+ attach_function :stp_list_int_parameters, [:pointer], :pointer
170
+ attach_function :stp_list_dimension_parameters, [:pointer], :pointer
171
+ attach_function :stp_list_boolean_parameters, [:pointer], :pointer
172
+ attach_function :stp_list_curve_parameters, [:pointer], :pointer
173
+ attach_function :stp_list_array_parameters, [:pointer], :pointer
174
+ attach_function :stp_list_raw_parameters, [:pointer], :pointer
175
+ attach_function :stp_list_parameters, [:pointer, :stp_parameter_type], :pointer
176
+ attach_function :stp_set_string_parameter_active, [:pointer, :string, :stp_parameter_activity], :void
177
+ attach_function :stp_set_file_parameter_active, [:pointer, :string, :stp_parameter_activity], :void
178
+ attach_function :stp_set_float_parameter_active, [:pointer, :string, :stp_parameter_activity], :void
179
+ attach_function :stp_set_int_parameter_active, [:pointer, :string, :stp_parameter_activity], :void
180
+ attach_function :stp_set_dimension_parameter_active, [:pointer, :string, :stp_parameter_activity], :void
181
+ attach_function :stp_set_boolean_parameter_active, [:pointer, :string, :stp_parameter_activity], :void
182
+ attach_function :stp_set_curve_parameter_active, [:pointer, :string, :stp_parameter_activity], :void
183
+ attach_function :stp_set_array_parameter_active, [:pointer, :string, :stp_parameter_activity], :void
184
+ attach_function :stp_set_raw_parameter_active, [:pointer, :string, :stp_parameter_activity], :void
185
+ attach_function :stp_set_parameter_active, [:pointer, :string, :stp_parameter_activity, :stp_parameter_type], :void
186
+ attach_function :stp_check_string_parameter, [:pointer, :string, :stp_parameter_activity], :int
187
+ attach_function :stp_check_file_parameter, [:pointer, :string, :stp_parameter_activity], :int
188
+ attach_function :stp_check_float_parameter, [:pointer, :string, :stp_parameter_activity], :int
189
+ attach_function :stp_check_int_parameter, [:pointer, :string, :stp_parameter_activity], :int
190
+ attach_function :stp_check_dimension_parameter, [:pointer, :string, :stp_parameter_activity], :int
191
+ attach_function :stp_check_boolean_parameter, [:pointer, :string, :stp_parameter_activity], :int
192
+ attach_function :stp_check_curve_parameter, [:pointer, :string, :stp_parameter_activity], :int
193
+ attach_function :stp_check_array_parameter, [:pointer, :string, :stp_parameter_activity], :int
194
+ attach_function :stp_check_raw_parameter, [:pointer, :string, :stp_parameter_activity], :int
195
+ attach_function :stp_check_parameter, [:pointer, :string, :stp_parameter_activity, :stp_parameter_type], :int
196
+ attach_function :stp_get_string_parameter_active, [:pointer, :string], :pointer
197
+ attach_function :stp_get_file_parameter_active, [:pointer, :string], :pointer
198
+ attach_function :stp_get_float_parameter_active, [:pointer, :string], :pointer
199
+ attach_function :stp_get_int_parameter_active, [:pointer, :string], :pointer
200
+ attach_function :stp_get_dimension_parameter_active, [:pointer, :string], :pointer
201
+ attach_function :stp_get_boolean_parameter_active, [:pointer, :string], :pointer
202
+ attach_function :stp_get_curve_parameter_active, [:pointer, :string], :pointer
203
+ attach_function :stp_get_array_parameter_active, [:pointer, :string], :pointer
204
+ attach_function :stp_get_raw_parameter_active, [:pointer, :string], :pointer
205
+ attach_function :stp_get_parameter_active, [:pointer, :string, :stp_parameter_type], :pointer
206
+
207
+ # informational queries
208
+
209
+ ###
210
+ ###
211
+ ###
212
+
213
+ end
214
+
215
+ FFI.stp_init
216
+
217
+ class Printer
218
+
219
+ def self.all_printers
220
+ FFI.stp_printer_model_count.times.map do |i|
221
+ new(FFI.stp_get_printer_by_index(i))
222
+ end
223
+ end
224
+
225
+ def initialize(stp_printer)
226
+ @stp_printer = stp_printer
227
+ end
228
+
229
+ def driver
230
+ FFI.stp_printer_get_driver(@stp_printer)
231
+ end
232
+
233
+ def long_name
234
+ FFI.stp_printer_get_long_name(@stp_printer)
235
+ end
236
+
237
+ def device_id
238
+ FFI.stp_printer_get_device_id(@stp_printer)
239
+ end
240
+
241
+ def family
242
+ FFI.stp_printer_get_family(@stp_printer)
243
+ end
244
+
245
+ def manufacturer
246
+ FFI.stp_printer_get_manufacturer(@stp_printer)
247
+ end
248
+
249
+ end
250
+
251
+ class Vars
252
+
253
+ include FFI
254
+
255
+ def initialize
256
+ @vars = stp_vars_create
257
+ stp_vars_copy(@vars, stp_default_settings)
258
+ @printer = stp_get_printer(@vars)
259
+ stp_set_printer_defaults(@vars, @printer)
260
+ end
261
+
262
+ end
263
+
264
+ class Image
265
+
266
+ def initialize
267
+ end
268
+
269
+ def init
270
+ end
271
+
272
+ def reset
273
+ end
274
+
275
+ def width
276
+ end
277
+
278
+ def height
279
+ end
280
+
281
+ def get_row(data, limit, row)
282
+ end
283
+
284
+ def get_appname
285
+ end
286
+
287
+ def conclude
288
+ end
289
+
290
+ end
291
+
292
+ end
293
+
294
+ if $0 == __FILE__
295
+
296
+ require 'pp'
297
+
298
+ # puts "Valid printers are:"
299
+ # Gutenprint::Printer.all_printers.select { |p| p.driver =~ /^escp2-/ }.each do |printer|
300
+ # puts "%-30s %s (device id = %s, family = %s, manufacturer = %s)" % [
301
+ # printer.driver,
302
+ # printer.long_name.inspect,
303
+ # printer.device_id.inspect,
304
+ # printer.family.inspect,
305
+ # printer.manufacturer.inspect
306
+ # ]
307
+ # end
308
+
309
+ Gutenprint::FFI.stp_init
310
+ vars = Gutenprint::FFI.stp_vars_create
311
+ defaults = Gutenprint::FFI.stp_default_settings
312
+ Gutenprint::FFI.stp_vars_copy(vars, defaults) if defaults
313
+ printer = Gutenprint::FFI.stp_get_printer(vars)
314
+ Gutenprint::FFI.stp_set_printer_defaults(vars, printer)
315
+
316
+ # vars = Gutenprint::Vars.new
317
+ # vars.driver = "escp2-r2400"
318
+ # vars.printer_defaults = vars.printer
319
+ #
320
+ # param = vars.describe_parameter("RawChannelNames")
321
+ # channels = param.bounds or raise "No channels found"
322
+ # channels.each do |desc|
323
+ # puts "\t%s (%s)" % [desc.text, desc.name]
324
+ # end
325
+
326
+ end
@@ -0,0 +1,56 @@
1
+ # system
2
+ require 'pp'
3
+
4
+ # gems
5
+ require 'pathname3'
6
+ require 'rvg/rvg' # loads 'rmagick'
7
+ require 'builder'
8
+ require 'cupsffi'
9
+ require 'hashstruct'
10
+ require 'descriptive_statistics'
11
+ require 'spliner'
12
+
13
+ # ours
14
+ require 'quadtone/cgats'
15
+ require 'quadtone/color'
16
+ require 'quadtone/color/device_n'
17
+ require 'quadtone/color/cmyk'
18
+ require 'quadtone/color/gray'
19
+ require 'quadtone/color/lab'
20
+ require 'quadtone/color/qtr'
21
+ require 'quadtone/color/rgb'
22
+ require 'quadtone/color/xyz'
23
+ require 'quadtone/cluster_calculator'
24
+ require 'quadtone/curve'
25
+ require 'quadtone/curve_set'
26
+ require 'quadtone/descendants'
27
+ require 'quadtone/environment'
28
+ require 'quadtone/extensions/math'
29
+ require 'quadtone/extensions/pathname3'
30
+ require 'quadtone/printer'
31
+ require 'quadtone/profile'
32
+ require 'quadtone/quad_file'
33
+ require 'quadtone/renderer'
34
+ require 'quadtone/run'
35
+ require 'quadtone/sample'
36
+ require 'quadtone/separator'
37
+ require 'quadtone/target'
38
+ require 'quadtone/tool'
39
+ require 'quadtone/tools/add_printer'
40
+ require 'quadtone/tools/characterize'
41
+ require 'quadtone/tools/chart'
42
+ require 'quadtone/tools/check'
43
+ require 'quadtone/tools/dir'
44
+ require 'quadtone/tools/edit'
45
+ require 'quadtone/tools/init'
46
+ require 'quadtone/tools/install'
47
+ require 'quadtone/tools/linearize'
48
+ require 'quadtone/tools/list'
49
+ require 'quadtone/tools/print'
50
+ require 'quadtone/tools/printer_options'
51
+ require 'quadtone/tools/rename'
52
+ require 'quadtone/tools/render'
53
+ require 'quadtone/tools/rewrite'
54
+ require 'quadtone/tools/separate'
55
+ require 'quadtone/tools/show'
56
+ require 'quadtone/tools/test'