image_paradise 0.1.12

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.

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'