image_paradise 0.1.12

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of image_paradise might be problematic. Click here for more details.

Files changed (115) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +38 -0
  3. data/README.md +179 -0
  4. data/USAGE.md +10 -0
  5. data/bin/black_white +10 -0
  6. data/bin/display_text_from_this_image +7 -0
  7. data/bin/image_paradise +7 -0
  8. data/bin/image_paradise_shell +7 -0
  9. data/bin/image_to_ascii +54 -0
  10. data/bin/image_to_pdf +7 -0
  11. data/bin/make_this_image_transparent +7 -0
  12. data/bin/rotate_left +7 -0
  13. data/bin/rotate_right +7 -0
  14. data/doc/README.gen +162 -0
  15. data/doc/TODO_FOR_THE_GTK_GUI.md +1 -0
  16. data/image_paradise.gemspec +50 -0
  17. data/lib/image_paradise.rb +5 -0
  18. data/lib/image_paradise/base/base.rb +91 -0
  19. data/lib/image_paradise/black_white.rb +89 -0
  20. data/lib/image_paradise/confree_generator/class.rb +614 -0
  21. data/lib/image_paradise/confree_generator/constants.rb +61 -0
  22. data/lib/image_paradise/confree_generator/gui/gtk_confree_generator.rb +752 -0
  23. data/lib/image_paradise/confree_generator/gui/insert_button.rb +78 -0
  24. data/lib/image_paradise/confree_generator/reset.rb +61 -0
  25. data/lib/image_paradise/confree_generator/shared/shared.rb +100 -0
  26. data/lib/image_paradise/constants.rb +43 -0
  27. data/lib/image_paradise/constants/image_file_types.rb +21 -0
  28. data/lib/image_paradise/create_animated_gif.rb +47 -0
  29. data/lib/image_paradise/crop/crop.rb +302 -0
  30. data/lib/image_paradise/gm_support.rb +34 -0
  31. data/lib/image_paradise/graphs.rb +36 -0
  32. data/lib/image_paradise/graphs/accumulator_bar.rb +29 -0
  33. data/lib/image_paradise/graphs/area.rb +64 -0
  34. data/lib/image_paradise/graphs/bar.rb +117 -0
  35. data/lib/image_paradise/graphs/bar_conversion.rb +53 -0
  36. data/lib/image_paradise/graphs/base.rb +1392 -0
  37. data/lib/image_paradise/graphs/bezier.rb +45 -0
  38. data/lib/image_paradise/graphs/bullet.rb +115 -0
  39. data/lib/image_paradise/graphs/deprecated.rb +42 -0
  40. data/lib/image_paradise/graphs/dot.rb +129 -0
  41. data/lib/image_paradise/graphs/line.rb +328 -0
  42. data/lib/image_paradise/graphs/mini/bar.rb +42 -0
  43. data/lib/image_paradise/graphs/mini/legend.rb +109 -0
  44. data/lib/image_paradise/graphs/mini/pie.rb +42 -0
  45. data/lib/image_paradise/graphs/mini/side_bar.rb +41 -0
  46. data/lib/image_paradise/graphs/net.rb +133 -0
  47. data/lib/image_paradise/graphs/photo_bar.rb +106 -0
  48. data/lib/image_paradise/graphs/pie.rb +139 -0
  49. data/lib/image_paradise/graphs/scatter.rb +264 -0
  50. data/lib/image_paradise/graphs/scene.rb +216 -0
  51. data/lib/image_paradise/graphs/side_bar.rb +144 -0
  52. data/lib/image_paradise/graphs/side_stacked_bar.rb +116 -0
  53. data/lib/image_paradise/graphs/spider.rb +163 -0
  54. data/lib/image_paradise/graphs/stacked_area.rb +73 -0
  55. data/lib/image_paradise/graphs/stacked_bar.rb +68 -0
  56. data/lib/image_paradise/graphs/stacked_mixin.rb +30 -0
  57. data/lib/image_paradise/graphs/themes.rb +117 -0
  58. data/lib/image_paradise/graphviz/README.md +2 -0
  59. data/lib/image_paradise/graphviz/generate_graphviz_image.rb +274 -0
  60. data/lib/image_paradise/gui/gtk/control_panel.rb +126 -0
  61. data/lib/image_paradise/identify.rb +145 -0
  62. data/lib/image_paradise/image_border.rb +231 -0
  63. data/lib/image_paradise/image_manipulations.rb +320 -0
  64. data/lib/image_paradise/image_paradise.rb +150 -0
  65. data/lib/image_paradise/image_to_ascii/image_to_ascii.rb +187 -0
  66. data/lib/image_paradise/image_to_pdf/image_to_pdf.rb +99 -0
  67. data/lib/image_paradise/label/README.md +2 -0
  68. data/lib/image_paradise/label/simple_label.rb +206 -0
  69. data/lib/image_paradise/optimizer.rb +483 -0
  70. data/lib/image_paradise/project/project.rb +29 -0
  71. data/lib/image_paradise/random_text_to_image.rb +363 -0
  72. data/lib/image_paradise/requires/common_base_requires.rb +17 -0
  73. data/lib/image_paradise/requires/require_colours.rb +9 -0
  74. data/lib/image_paradise/requires/require_gtk_components.rb +8 -0
  75. data/lib/image_paradise/requires/require_image_to_ascii.rb +7 -0
  76. data/lib/image_paradise/requires/require_the_image_paradise_project.rb +24 -0
  77. data/lib/image_paradise/requires/require_toplevel_methods.rb +21 -0
  78. data/lib/image_paradise/rotate/README.md +2 -0
  79. data/lib/image_paradise/rotate/rotate.rb +98 -0
  80. data/lib/image_paradise/shell/interactive.rb +156 -0
  81. data/lib/image_paradise/svg/README.md +5 -0
  82. data/lib/image_paradise/svg/circle.rb +106 -0
  83. data/lib/image_paradise/svg/feature.rb +48 -0
  84. data/lib/image_paradise/svg/rectangle.rb +154 -0
  85. data/lib/image_paradise/svg/svg.rb +102 -0
  86. data/lib/image_paradise/to_gif.rb +91 -0
  87. data/lib/image_paradise/to_jpg.rb +90 -0
  88. data/lib/image_paradise/toplevel_methods/add_black_border_to_this_image.rb +56 -0
  89. data/lib/image_paradise/toplevel_methods/crop.rb +28 -0
  90. data/lib/image_paradise/toplevel_methods/e.rb +16 -0
  91. data/lib/image_paradise/toplevel_methods/esystem.rb +19 -0
  92. data/lib/image_paradise/toplevel_methods/extract_text_from_this_image.rb +56 -0
  93. data/lib/image_paradise/toplevel_methods/file_related_code.rb +25 -0
  94. data/lib/image_paradise/toplevel_methods/flip_image_left_right.rb +32 -0
  95. data/lib/image_paradise/toplevel_methods/greyscale_this_image.rb +59 -0
  96. data/lib/image_paradise/toplevel_methods/help.rb +30 -0
  97. data/lib/image_paradise/toplevel_methods/make_this_image_transparent.rb +30 -0
  98. data/lib/image_paradise/toplevel_methods/menu.rb +92 -0
  99. data/lib/image_paradise/toplevel_methods/merge_these_images.rb +49 -0
  100. data/lib/image_paradise/toplevel_methods/mirror_image.rb +28 -0
  101. data/lib/image_paradise/toplevel_methods/misc.rb +31 -0
  102. data/lib/image_paradise/toplevel_methods/png_to_svg.rb +34 -0
  103. data/lib/image_paradise/toplevel_methods/roebe.rb +17 -0
  104. data/lib/image_paradise/toplevel_methods/to_png.rb +105 -0
  105. data/lib/image_paradise/toplevel_methods/wallpaper.rb +37 -0
  106. data/lib/image_paradise/toplevel_methods/write_this_text.rb +76 -0
  107. data/lib/image_paradise/version/version.rb +19 -0
  108. data/test/16x16_red_square_image_for_testing.png +0 -0
  109. data/test/testing_confree_generator.rb +8 -0
  110. data/test/testing_crop.rb +19 -0
  111. data/test/testing_image_magick_commands.rb +39 -0
  112. data/test/testing_image_paradise.rb +49 -0
  113. data/test/testing_the_svg_component.html +261 -0
  114. data/test/testing_the_svg_component.rb +106 -0
  115. metadata +217 -0
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'image_paradise/project/project.rb'
6
+ # =========================================================================== #
7
+ module ImageParadise
8
+
9
+ # ========================================================================= #
10
+ # === ImageParadise::PROJECT_BASE_DIRECTORY
11
+ # ========================================================================= #
12
+ PROJECT_BASE_DIRECTORY =
13
+ File.absolute_path("#{__dir__}/..")+'/'
14
+
15
+ # ========================================================================= #
16
+ # === ImageParadise.project_base_directory?
17
+ # ========================================================================= #
18
+ def self.project_base_directory?
19
+ PROJECT_BASE_DIRECTORY
20
+ end; self.instance_eval { alias project_base_dir? project_base_directory? } # === ImageParadise.project_base_dir?
21
+ self.instance_eval { alias project_dir? project_base_directory? } # === ImageParadise.project_dir?
22
+ self.instance_eval { alias base_dir? project_base_directory? } # === ImageParadise.base_dir?
23
+ self.instance_eval { alias base_directory? project_base_directory? } # === ImageParadise.base_directory?
24
+
25
+ end
26
+
27
+ if __FILE__ == $PROGRAM_NAME
28
+ puts ImageParadise.project_base_dir?
29
+ end
@@ -0,0 +1,363 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === RandomTextToImage
6
+ # =========================================================================== #
7
+ require 'yaml'
8
+ require 'fileutils'
9
+ require 'image_paradise/requires/require_colours.rb'
10
+
11
+ module ImageParadise
12
+
13
+ class RandomTextToImage
14
+
15
+ begin
16
+ require 'opn'
17
+ rescue LoadError; end
18
+
19
+ include Colours
20
+
21
+ N = "\n"
22
+
23
+ attr_writer :be_verbose
24
+
25
+ # ========================================================================= #
26
+ # === DEFAULT_TEXT
27
+ # ========================================================================= #
28
+ DEFAULT_TEXT = 'Hello Ruby!'
29
+
30
+ # ========================================================================= #
31
+ # === DEFAULT_FONT
32
+ # ========================================================================= #
33
+ DEFAULT_FONT = 'DejaVu Sans Mono' # 17Bookman-DemiItalic
34
+
35
+ # ========================================================================= #
36
+ # === IMAGE_DIRECTORY
37
+ # ========================================================================= #
38
+ IMAGE_DIRECTORY = '/Depot/Images'
39
+
40
+ # ========================================================================= #
41
+ # === IMAGE_TYPE
42
+ # ========================================================================= #
43
+ IMAGE_TYPE = '.png'
44
+ STORE_INTO_THIS_YAML_FILE = 'last_command_for_random_text_to_image.yml'
45
+
46
+ # ========================================================================= #
47
+ # === DEFAULT_FONT_SIZE
48
+ # ========================================================================= #
49
+ DEFAULT_FONT_SIZE = '25'
50
+
51
+ # ========================================================================= #
52
+ # === BE_VERBOSE
53
+ # ========================================================================= #
54
+ BE_VERBOSE = true
55
+
56
+ # ========================================================================= #
57
+ # === RUN_SYSTEM
58
+ # ========================================================================= #
59
+ RUN_SYSTEM = true # Can be change to debug.
60
+
61
+ # ========================================================================= #
62
+ # === initialize
63
+ # ========================================================================= #
64
+ def initialize(
65
+ i = DEFAULT_TEXT,
66
+ append_this_to_saved_filename = '',
67
+ run_already = true,
68
+ be_verbose = BE_VERBOSE
69
+ )
70
+ set_be_verbose(be_verbose)
71
+ reset
72
+ set_append_this_to_saved_filename(append_this_to_saved_filename)
73
+ set_text(i)
74
+ set_everything
75
+ run if run_already
76
+ end
77
+
78
+ # ========================================================================= #
79
+ # === set_be_verbose
80
+ # ========================================================================= #
81
+ def set_be_verbose(i) # Setter for @be_verbose.
82
+ @be_verbose = i
83
+ end
84
+
85
+ # ========================================================================= #
86
+ # === set_text
87
+ # ========================================================================= #
88
+ def set_text(i = DEFAULT_TEXT) # this sets the @text variable.
89
+ _ = STORE_INTO_THIS_YAML_FILE
90
+ if i.is_a? Array
91
+ if i.empty?
92
+ i = DEFAULT_TEXT
93
+ else
94
+ i = i.join(' ').strip
95
+ end
96
+ end
97
+ i = DEFAULT_TEXT if i.nil?
98
+ if i == 'LAST' # treat LAST as special instruction.
99
+ if File.exist? _
100
+ i = YAML.load_file(_)
101
+ else
102
+ opn; e 'Sorry, file '+sfile(_)+' does not exist.'
103
+ end
104
+ end
105
+ i.gsub!("'", "\\\\'") if i.include? "'"
106
+ @text = i
107
+ end
108
+
109
+ # ========================================================================= #
110
+ # === run_n_times
111
+ # ========================================================================= #
112
+ def run_n_times(n_times = HOW_MANY_TIMES) # use this to create not one but several images.
113
+ n_times.times { |t|
114
+ reset
115
+ set_append_this_to_saved_filename(t+1)
116
+ set_everything
117
+ run
118
+ }
119
+ end
120
+
121
+ # ========================================================================= #
122
+ # === set_append_this_to_saved_filename
123
+ # ========================================================================= #
124
+ def set_append_this_to_saved_filename(i)
125
+ @append_this_to_saved_filename = i.to_s
126
+ end
127
+
128
+ # ========================================================================= #
129
+ # === set_everything
130
+ # ========================================================================= #
131
+ def set_everything # wrapper to set everything.
132
+ random_plus = rd(225)
133
+ set_width
134
+ set_height
135
+ set_size(
136
+ @width.to_i * 8+random_plus,
137
+ @height.to_i * 7+random_plus
138
+ )
139
+ set_canvas
140
+ set_font
141
+ set_pointsize
142
+ set_draw1
143
+ set_channel
144
+ set_blur
145
+ set_transparent # if we want a transparent background.
146
+ # set_background_colour
147
+ set_fill
148
+ set_stroke
149
+ set_draw2
150
+ # set_border # Something is weird here.
151
+ set_name # This here should come right before run_sys_cmd is called.
152
+ end
153
+
154
+ # ========================================================================= #
155
+ # === set_width
156
+ # ========================================================================= #
157
+ def set_width
158
+ @width = ( 25+random_number(6) ).to_s
159
+ end
160
+
161
+ # ========================================================================= #
162
+ # === set_height
163
+ # ========================================================================= #
164
+ def set_height
165
+ @height = ( 25+random_number(6) ).to_s
166
+ end
167
+
168
+ # ========================================================================= #
169
+ # === set_draw1
170
+ # ========================================================================= #
171
+ def set_draw1 # this is the draw for text.
172
+ _ = "'"+@text+"'"
173
+ @_ << ' -draw "text '+@width+','+@height+' '+_+'"'
174
+ end
175
+
176
+ # ========================================================================= #
177
+ # === set_draw2
178
+ # ========================================================================= #
179
+ def set_draw2 # This is the draw for -stroke
180
+ _ = "'"+@text+"'"
181
+ @_ << ' -draw "text 20,'+DEFAULT_FONT_SIZE+' '+_+'"'
182
+ end
183
+
184
+ # ========================================================================= #
185
+ # === set_fill
186
+ # ========================================================================= #
187
+ def set_fill(which_colour = get_random_colour)
188
+ @_ << ' -fill '+which_colour
189
+ end
190
+
191
+ # ========================================================================= #
192
+ # === set_canvas
193
+ # ========================================================================= #
194
+ def set_canvas
195
+ @_ << ' canvas:none'
196
+ end
197
+
198
+ # ========================================================================= #
199
+ # === set_transparent
200
+ # ========================================================================= #
201
+ def set_transparent
202
+ @_ << ' -transparent white'
203
+ end
204
+
205
+ # ========================================================================= #
206
+ # === set_background_colour
207
+ # ========================================================================= #
208
+ def set_background_colour # background tag.
209
+ @_ << ' -background '
210
+ @_ << 'black'
211
+ end
212
+
213
+ # ========================================================================= #
214
+ # === reset
215
+ # ========================================================================= #
216
+ def reset # reset @_ again.
217
+ @_ = 'convert '
218
+ end
219
+
220
+ # ========================================================================= #
221
+ # === random_number
222
+ # ========================================================================= #
223
+ def random_number(i = 20)
224
+ rand(i)
225
+ end; alias rd random_number # === rd
226
+ alias random_plus random_number # === random_plus
227
+
228
+ # ========================================================================= #
229
+ # === set_border
230
+ # ========================================================================= #
231
+ def set_border
232
+ n = random_number.to_s
233
+ @_ << ' -border '+n+'x'+n
234
+ @_ << ' -bordercolor '+random_colour
235
+ end
236
+
237
+ # ========================================================================= #
238
+ # === store_last_command_into_yaml_file
239
+ # ========================================================================= #
240
+ def store_last_command_into_yaml_file
241
+ File.open(STORE_INTO_THIS_YAML_FILE, 'w') {|f| YAML.dump(@text,f)}
242
+ end
243
+
244
+ # ========================================================================= #
245
+ # === set_name
246
+ # ========================================================================= #
247
+ def set_name(this_name = 'output')
248
+ this_name << @append_this_to_saved_filename
249
+ this_name << IMAGE_TYPE
250
+ @stored_where = IMAGE_DIRECTORY+'/'+this_name# keep a reference where it is stored.
251
+ @_ << ' '+@stored_where
252
+ end
253
+
254
+ # ========================================================================= #
255
+ # === report_where_we_stored_it
256
+ # ========================================================================= #
257
+ def report_where_we_stored_it
258
+ e 'Stored at `'+sfile(@stored_where)+'`.'
259
+ end
260
+
261
+ # ========================================================================= #
262
+ # === set_stroke
263
+ # ========================================================================= #
264
+ def set_stroke
265
+ @_ << ' -stroke '+random_colour
266
+ end
267
+
268
+ # ========================================================================= #
269
+ # === set_blur
270
+ # ========================================================================= #
271
+ def set_blur
272
+ i = ( 0+random_plus(5) ).to_s
273
+ @_ << ' -blur 0x'+i
274
+ end
275
+
276
+ # ========================================================================= #
277
+ # === set_channel
278
+ # ========================================================================= #
279
+ def set_channel
280
+ @_ << ' -channel RGBA'
281
+ end
282
+
283
+ # ========================================================================= #
284
+ # === set_pointsize
285
+ # ========================================================================= #
286
+ def set_pointsize(i = 12+random_plus(75))
287
+ @_ << ' -pointsize '+i.to_s
288
+ end
289
+
290
+ # ========================================================================= #
291
+ # === set_font
292
+ # ========================================================================= #
293
+ def set_font(this_font = DEFAULT_FONT)
294
+ this_font = '"'+this_font.to_s+'"' # Pad this first.
295
+ @_ << ' -font '+this_font
296
+ end
297
+
298
+ # ========================================================================= #
299
+ # === set_size
300
+ #
301
+ # This method will set the size of the canvas.
302
+ # ========================================================================= #
303
+ def set_size(width = 500, height = 500)
304
+ @_ << "-size #{width}x#{height}"
305
+ end
306
+
307
+ # ========================================================================= #
308
+ # === remove_old_image_file
309
+ # ========================================================================= #
310
+ def remove_old_image_file(i = @stored_where)
311
+ FileUtils.remove(i) if File.exist? i
312
+ end
313
+
314
+ # ========================================================================= #
315
+ # === get_random_colour
316
+ #
317
+ # get random colours
318
+ # ========================================================================= #
319
+ def get_random_colour
320
+ Colours.html_colours?.sample
321
+ end; alias random_colour get_random_colour # === random_colour
322
+
323
+ # ========================================================================= #
324
+ # === run_sys_cmd
325
+ # ========================================================================= #
326
+ def run_sys_cmd
327
+ remove_old_image_file # remove the image file if it exsts.
328
+ if @be_verbose
329
+ opn; e N+YEL+'Running this convert command next:'
330
+ e ' '+@_
331
+ end
332
+ system @_ if run_system?
333
+ end
334
+
335
+ # ========================================================================= #
336
+ # === stored_where?
337
+ # ========================================================================= #
338
+ def stored_where?
339
+ @stored_where
340
+ end; alias stored_where stored_where? # === stored_where
341
+
342
+ # ========================================================================= #
343
+ # === run_system?
344
+ # ========================================================================= #
345
+ def run_system?
346
+ RUN_SYSTEM
347
+ end
348
+
349
+ # ========================================================================= #
350
+ # === run
351
+ # ========================================================================= #
352
+ def run # bundle some methods together (run tag).
353
+ run_sys_cmd
354
+ store_last_command_into_yaml_file
355
+ report_where_we_stored_it
356
+ end
357
+
358
+ end; end
359
+
360
+ if __FILE__ == $PROGRAM_NAME
361
+ HOW_MANY_TIMES = 15
362
+ HOW_MANY_TIMES.times { |t| ImageParadise::RandomTextToImage.new(ARGV, t+1) }
363
+ end # rtext "We are the BORG."
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'image_paradise/requires/common_base_requires.rb'
6
+ # =========================================================================== #
7
+ require 'fileutils'
8
+ require 'image_paradise/requires/require_colours.rb'
9
+ begin
10
+ require 'esystem/method'
11
+ rescue LoadError; end
12
+ begin
13
+ require 'opn'
14
+ rescue LoadError; end
15
+ begin
16
+ require 'save_file'
17
+ rescue LoadError; end
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'image_paradise/requires/require_colours.rb'
6
+ # =========================================================================== #
7
+ begin
8
+ require 'colours'
9
+ rescue LoadError; end
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'image_paradise/requires/require_gtk_components.rb'
6
+ # =========================================================================== #
7
+ require 'image_paradise/requires/require_the_image_paradise_project.rb'
8
+ require 'image_paradise/gui/gtk/control_panel.rb'
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'image_paradise/requires/require_image_to_ascii.rb'
6
+ # =========================================================================== #
7
+ require 'image_paradise/image_to_ascii/image_to_ascii.rb'
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # Delegate to the following file in order to load the other .rb
6
+ # files of this project.
7
+ # =========================================================================== #
8
+ # require 'image_paradise/requires/require_the_image_paradise_project.rb'
9
+ # =========================================================================== #
10
+ require 'image_paradise/image_paradise.rb'
11
+ require 'image_paradise/black_white.rb'
12
+ require 'image_paradise/shell/interactive.rb'
13
+ require 'image_paradise/image_manipulations.rb'
14
+ require 'image_paradise/rotate/rotate.rb'
15
+ require 'image_paradise/constants/image_file_types.rb'
16
+ require 'image_paradise/svg/svg.rb'
17
+ # =========================================================================== #
18
+ # Include all image_paradise/class_methods next:
19
+ # =========================================================================== #
20
+ require 'image_paradise/requires/require_toplevel_methods.rb'
21
+
22
+ ImageParadise.require_toplevel_methods
23
+
24
+ require 'image_paradise/requires/require_image_to_ascii.rb'