image_filter_dsl 0.0.1 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dad7597cc47d2d15fbba4c15de8222bd7fd60599709c34801d909ba1b8c4e9e3
4
- data.tar.gz: 53dc7843ef41747dc96baac57a440da580821c6b1ff18e3ecad479846343c51d
3
+ metadata.gz: f36219d0037d3f5d26ca5d4aa9c06465964094c89afe256ad3d79e63dda611d6
4
+ data.tar.gz: 310be0964d3c2f293b43c2022437effbdefa1df00588d27b36743642c0502ac8
5
5
  SHA512:
6
- metadata.gz: 18274358415905e80d5969243832d30847496bc219510d3a11d5fd88be347c7a5de70eeb8415095413c684999beb24a269f5137b3a88c58bb223b6e78fb05a20
7
- data.tar.gz: 61fcf052a2afb9f8445fcda605c6e94a84007680d55c5bda9bff4b995f5ff0854f3ba674b072a99da10f6ba037b5991b8308d563f270e73545d0ee95610908d1
6
+ metadata.gz: db69c17700799b782c73169fab41f56fcec07ba2695dcb15815eb8aa53944bc65af5684205a09f0bdc99164e01a6e24939fb15603375fd0cfc2991422bdcfa7a
7
+ data.tar.gz: 9b765299f432bab3d67d40ce3e29568461409ec83b394cb248979b4826d73dfe5e9a4c04d4a52c69208d73e4bcf863fe224d61029f5379d235eaae0d2bf89457
@@ -0,0 +1,194 @@
1
+ # Image Filter DSL
2
+
3
+ _An Image Filter DSL (duh)_
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/image_filter_dsl.svg)](https://badge.fury.io/rb/image_filter_dsl)
6
+
7
+ {file:CHANGELOG.md Change Log}
8
+
9
+ ## Features
10
+
11
+ - DSL with customizable input and output variables, and a set of basic instructions
12
+ - IO with serialization so Kernels can be written to binary files and loaded from binary files
13
+ - Image Processor that generates image file by applying Filter Kernel to every pixel of input image (supports multi-threading)
14
+
15
+ ## DSL
16
+
17
+ ### Filter Block
18
+
19
+ Using `ImageFilterDsl::Dsl::Filter`
20
+
21
+
22
+ # - First array contains input variables
23
+ # x, y, r, g, b, a, :width and :hght are automatically
24
+ # populated by image filter process
25
+ # - Second array contains output vars; r,g,b,a and optionally
26
+ # x,y for images
27
+ filter = Filter.define [:x,:y,:r,:g,:b], [:r,:g,:b] do
28
+ # Instructions go here
29
+ # instruction [input(s)], output
30
+ add [:x,:r], :g
31
+
32
+ # output can be an existing symbol in out, or a custom one up to 5 letters
33
+ # long (longer will be trimmed if serialized to a binary file)
34
+
35
+ # input can be any declared input or custom variable
36
+ end
37
+
38
+
39
+ ### Instructions
40
+
41
+ Basic Use:
42
+
43
+ ``instruction [argument1,argument2,...], :output_variable``
44
+
45
+ __Math__
46
+
47
+ - `add` add 2 or more input values, storing in output (<code>a+b</code>)
48
+
49
+ ```ruby
50
+ add [:r,5], :r # replace r with r + 5
51
+ ```
52
+
53
+ - `mult` add 2 or more inputs, storing in out (<code>a*b</code>)
54
+
55
+ ```ruby
56
+ mult [:r,2], :r # Replace r with r * 2
57
+ ```
58
+
59
+ - `div` divide 2 inputs
60
+
61
+ ```ruby
62
+ div [:r, 2], :g # Write r/2 to g
63
+ ```
64
+
65
+ - `mod` store modulo of two inputs in output
66
+
67
+ ```ruby
68
+ mod [2,4], :t # Write 2$4 (2) to t
69
+ ```
70
+
71
+ - `abs` store absolute value of input in output
72
+
73
+ ```ruby
74
+ abs [-5], :r # Writes abs(5) to r
75
+ ```
76
+
77
+ __Collection__
78
+
79
+ - `min` store smallest of inputs in output (accepts 2 or more values)
80
+
81
+ ```ruby
82
+ min [:r,255,:g], :s # Writes smallest of r, 255 and g to s
83
+ ```
84
+
85
+ - `max` store largest of inputs in output (accepts 2 or more values)
86
+
87
+ ```ruby
88
+ max [:r,0,:g], :s # Writes largest of r, 0 and g to s
89
+ ```
90
+
91
+ - `avg` store average of inputs in output (accepts 2 or more values)
92
+
93
+ ```ruby
94
+ avg [:r,:g,:b], :ca # Writes (r+g+b)/3 to ca
95
+ ```
96
+
97
+
98
+ __Logic/Conversion/Memory__
99
+
100
+ - `above` choose one of two values based on greater than comparison (4 values) `[n1,n1,true_val,false_val]`
101
+
102
+ ```ruby
103
+ # if r > g, store 0 in g, else store g in g (keep g the same)
104
+ above [:r,:g,0,:g], :g
105
+ ```
106
+
107
+ - `below` choose one of two values based on less than comparison (4 values) `[n1,n1,true_val,false_val]`
108
+
109
+ ```ruby
110
+ # if r < g, store 0 in r, else store r in r (keep r the same)
111
+ below [:r,:g,0,:r], :r
112
+ ```
113
+
114
+ - `switch` choose one of two values based on condition value (1/1.0 = true, 0/0.0 = false) `[cond,true_val,false_val]`
115
+
116
+ ```ruby
117
+ # If c is true, store r in a, else store g in a
118
+ switch [:c,:r,:g], :a
119
+ ```
120
+
121
+ - `eq` if two input values are equal, store 1, else 0 (`[val1,val2]`)
122
+ - `bnot` if input is 1 or 1.0, store 0, else 1 (`[bool]`)
123
+ - `copy` copy input directly to output (`[src]`)
124
+ - `ceil` nearest whole integer of input, rounded up (`[val]`)
125
+ - `float` cast input to float (`[val]`)
126
+ - `round` round first input value to second value decimals (`[value,decimal_count]`)
127
+ - `mix` Mix two values together with a ratio (0*a + (1-r)*b) (`[ratio,a,b]`)
128
+
129
+ ```ruby
130
+ # store (0.3*r) + (0.7*g) in b
131
+ mix [0.3,:r,:g], :b
132
+ ```
133
+
134
+ __Generators__
135
+
136
+ - `rand` random float between min and max (`[min,max]`)
137
+ - `sin` sine function on single value
138
+ - `cos` cosine function on single value
139
+ - `tan` tangent function on single value
140
+
141
+ ### Sample
142
+
143
+ Define filter
144
+
145
+ <!--```ruby-->
146
+ swizzle = Filter.define [:r,:g,:b], [:r,:g,:b] do
147
+ copy [:g], :t # copy green to temp
148
+ copy [:r], :g # copy red to green
149
+ copy [:b], :r # copy blue to red
150
+ copy [:t], :b # copy temp (original green) to blue
151
+ end
152
+ <!--```-->
153
+
154
+ Optionally write filter kernal to binary file on disk
155
+
156
+ <!--```ruby-->
157
+ ImageFilterDsl::Engine::IO.write("./swizzle.ifdk", swizzle)
158
+ <!--```-->
159
+
160
+ Use filter kernal to process image
161
+
162
+ <!--```ruby-->
163
+ # From binary kernal file
164
+ processor = ImageFilterDsl::Engine::ImageProcessor.new('./swizzle.ifdk')
165
+ # OR from filter object
166
+ processor = ImageFilterDsl::Engine::ImageProcessor.new(swizzle)
167
+ # or use aliases in main module
168
+ processor = ImageFilterDsl.image_processor(swizzle)
169
+
170
+ # Process image and store output
171
+ processor.process_image('./my_source.png', './my_output.png')
172
+ <!--```-->
173
+
174
+ - See `./sample_filters/samples.rb` for sample filters
175
+ - See Also: [image_filter_dsl_samples](https://bitbucket.org/WadeH/image_filter_dsl_samples/src/master/) for more samples
176
+
177
+ ## Gem
178
+
179
+ Either
180
+
181
+ - Build into a gem using included `gemspec` file; includes CLI functionality
182
+ - Install using gem with `gem install image_filter_dsl`
183
+
184
+ ## CLI
185
+
186
+ Image Filter DSL can be made to process an image from a binary kernal using
187
+ its CLI tool, `image_filter_dsl`
188
+
189
+ - Usage: `image_filter_dsl <kernel_file> <image_in> <image_out>`
190
+
191
+ ## License
192
+
193
+ (c) 2018-2020, Wade H. (vdtdev.prod@gmail.com). All Rights Reserved.
194
+ Released under MIT license
@@ -8,8 +8,8 @@ require_relative './image_filter_dsl/engine/image_processor.rb'
8
8
 
9
9
  ##
10
10
  # Image Filter DSL Library
11
- # (c) 2018 VDTDEV/Wade H. ~ MIT License
12
- # @author Wade H. <vdtdev@gmail.com>
11
+ # (c) 2018-2020 VDTDEV/Wade H. ~ MIT License
12
+ # @author Wade H. <vdtdev.prod@gmail.com>
13
13
  module ImageFilterDsl
14
14
 
15
15
  ##
@@ -1,8 +1,10 @@
1
1
  ##
2
2
  # Image Filter DSL Library
3
- # (c) 2018 VDTDEV/Wade H. ~ MIT License
4
- # @author Wade H. <vdtdev@gmail.com>
3
+ # (c) 2018-2020 VDTDEV/Wade H. ~ MIT License
4
+ # @author Wade H. <vdtdev.prod@gmail.com>
5
5
  module ImageFilterDsl
6
+ ##
7
+ # Module containing binary kernal related logic
6
8
  module Binary
7
9
  ##
8
10
  # Module providing serialization functionality for converting between
@@ -1,8 +1,8 @@
1
1
  require 'bindata'
2
2
  ##
3
3
  # Image Filter DSL Library
4
- # (c) 2018 VDTDEV/Wade H. ~ MIT License
5
- # @author Wade H. <vdtdev@gmail.com>
4
+ # (c) 2018-2020 VDTDEV/Wade H. ~ MIT License
5
+ # @author Wade H. <vdtdev.prod@gmail.com>
6
6
  module ImageFilterDsl
7
7
  module Binary
8
8
  ##
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  # Image Filter DSL Library
3
- # (c) 2018 VDTDEV/Wade H. ~ MIT License
4
- # @author Wade H. <vdtdev@gmail.com>
3
+ # (c) 2018-2020 VDTDEV/Wade H. ~ MIT License
4
+ # @author Wade H. <vdtdev.prod@gmail.com>
5
5
  module ImageFilterDsl
6
6
  module Dsl
7
7
  ##
@@ -12,7 +12,7 @@ module ImageFilterDsl
12
12
  # Define method
13
13
  # @param [Array] ins Input symbols
14
14
  # @param [Array] outs Output symbols
15
- # @param [Proc] &block Filter instructions body
15
+ # @param [Proc] block Filter instructions body
16
16
  # @return [FilterKernel] new Filter Kernel
17
17
  def self.define(ins,outs,&block)
18
18
  kernel = Kernel::FilterKernel.new(ins,outs)
@@ -1,8 +1,11 @@
1
1
  ##
2
2
  # Image Filter DSL Library
3
- # (c) 2018 VDTDEV/Wade H. ~ MIT License
4
- # @author Wade H. <vdtdev@gmail.com>
3
+ # (c) 2018-2020 VDTDEV/Wade H. ~ MIT License
4
+ # @author Wade H. <vdtdev.prod@gmail.com>
5
5
  module ImageFilterDsl
6
+ ##
7
+ # Module defining DSL
8
+ # {include:file:dsl.md}
6
9
  module Dsl
7
10
  ##
8
11
  # Module defining filter kernel instruction logic
@@ -31,7 +34,13 @@ module ImageFilterDsl
31
34
  round: 0xd6,
32
35
  switch: 0xd7,
33
36
  eq: 0xd8,
34
- bnot: 0xd9
37
+ bnot: 0xd9,
38
+ mix: 0xda,
39
+ # generation
40
+ rand: 0xf0,
41
+ sin: 0xf1,
42
+ cos: 0xf2,
43
+ tan: 0xf3
35
44
  }
36
45
 
37
46
  ##
@@ -40,7 +49,7 @@ module ImageFilterDsl
40
49
 
41
50
  ##
42
51
  # Add instruction
43
- # @param [Array] input values
52
+ # @param [Array] i input values
44
53
  # @return [Integer|Float] output value
45
54
  def self.add(i)
46
55
  i.sum
@@ -48,7 +57,7 @@ module ImageFilterDsl
48
57
 
49
58
  ##
50
59
  # Multiply instruction
51
- # @param [Array] input values
60
+ # @param [Array] i input values
52
61
  # @return [Integer|Float] output value
53
62
  def self.mult(i)
54
63
  v=1;
@@ -58,14 +67,14 @@ module ImageFilterDsl
58
67
 
59
68
  ##
60
69
  # Multiply instruction
61
- # @param [Array] input values
70
+ # @param [Array] i input values
62
71
  # @return [Integer|Float] output value
63
72
  def self.div(i)
64
73
  i[0]/i[1]
65
74
  end
66
75
  ##
67
76
  # Calculate modulo
68
- # @param [Array] input values
77
+ # @param [Array] i input values
69
78
  # @return [Integer|] output value
70
79
  def self.mod(i)
71
80
  i[0] % i[1]
@@ -73,7 +82,7 @@ module ImageFilterDsl
73
82
 
74
83
  ##
75
84
  # Absolute value
76
- # @param [Array] input value
85
+ # @param [Array] i input value
77
86
  # @return [Integer|Float] output value
78
87
  def self.abs(i)
79
88
  i[0].abs
@@ -81,7 +90,7 @@ module ImageFilterDsl
81
90
 
82
91
  ##
83
92
  # Minimum instruction
84
- # @param [Array] input values
93
+ # @param [Array] i input values
85
94
  # @return [Integer|Float] output value
86
95
  def self.min(i)
87
96
  i.min
@@ -89,7 +98,7 @@ module ImageFilterDsl
89
98
 
90
99
  ##
91
100
  # Maximum instruction
92
- # @param [Array] input values
101
+ # @param [Array] i input values
93
102
  # @return [Integer|Float] output value
94
103
  def self.max(i)
95
104
  i.max
@@ -97,7 +106,7 @@ module ImageFilterDsl
97
106
 
98
107
  ##
99
108
  # Average instruction
100
- # @param [Array] input values
109
+ # @param [Array] i input values
101
110
  # @return [Integer|Float] output value
102
111
  def self.avg(i)
103
112
  i.sum / (1.0 * i.length)
@@ -105,7 +114,7 @@ module ImageFilterDsl
105
114
 
106
115
  ##
107
116
  # Copy instruction
108
- # @param [Array] input values (src)
117
+ # @param [Array] i input values (src)
109
118
  # @return [Integer|Float] output value
110
119
  def self.copy(i)
111
120
  i[0]
@@ -113,7 +122,7 @@ module ImageFilterDsl
113
122
 
114
123
  ##
115
124
  # Above instruction
116
- # @param [Array] input values (a,b,trueVal,falseVal)
125
+ # @param [Array] i input values (a,b,trueVal,falseVal)
117
126
  # @return [Integer|Float] output value
118
127
  def self.above(i)
119
128
  if(i[0]>i[1])
@@ -133,7 +142,7 @@ module ImageFilterDsl
133
142
 
134
143
  ##
135
144
  # Below instruction
136
- # @param [Array] input values (a,b,trueVal,falseVal)
145
+ # @param [Array] i input values (a,b,trueVal,falseVal)
137
146
  # @return [Integer|Float] output value
138
147
  def self.below(i)
139
148
  if(i[0]<i[1])
@@ -153,7 +162,7 @@ module ImageFilterDsl
153
162
 
154
163
  ##
155
164
  # Floor instruction
156
- # @param [Array] input value (v)
165
+ # @param [Array] i input value (v)
157
166
  # @return [Integer|Float] output value
158
167
  def self.floor(i)
159
168
  i[0].floor
@@ -161,7 +170,7 @@ module ImageFilterDsl
161
170
 
162
171
  ##
163
172
  # Ceil instruction
164
- # @param [Array] input value (v)
173
+ # @param [Array] i input value (v)
165
174
  # @return [Integer|Float] output value
166
175
  def self.ceil(i)
167
176
  i[0].ceil
@@ -169,7 +178,7 @@ module ImageFilterDsl
169
178
 
170
179
  ##
171
180
  # Float cast instruction
172
- # @param [Array] input value (v)
181
+ # @param [Array] i input value (v)
173
182
  # @return [Integer|Float] output value
174
183
  def self.float(i)
175
184
  i[0].to_f
@@ -177,7 +186,7 @@ module ImageFilterDsl
177
186
 
178
187
  ##
179
188
  # Round instruction
180
- # @param [Array] input value (val, decimal_places)
189
+ # @param [Array] i input values (val, decimal_places)
181
190
  # @return [Integer|Float] output value
182
191
  def self.round(i)
183
192
  i[0].round(i[1])
@@ -186,8 +195,8 @@ module ImageFilterDsl
186
195
  ##
187
196
  # 'Switch' instruction (basically if)
188
197
  #
189
- # switch [condition (0/1/0.0/1.0), trueval, falseval]
190
- # @param [Array] input value (condition, true val, false val)
198
+ # switch condition (0/1/0.0/1.0), trueval, falseval]
199
+ # @param [Array] i input value (condition, true val, false val)
191
200
  # @return [Integer|Float] output value
192
201
  def self.switch(i)
193
202
  if i[0].to_i == 1
@@ -199,7 +208,7 @@ module ImageFilterDsl
199
208
 
200
209
  ##
201
210
  # Equal condition instruction
202
- # @param [Array] input value (a, b)
211
+ # @param [Array] i input values (a, b)
203
212
  # @return [Integer|Float] output value 1 true 0 falsew
204
213
  def self.eq(i)
205
214
  if i[0] == i[1]
@@ -211,7 +220,7 @@ module ImageFilterDsl
211
220
 
212
221
  ##
213
222
  # Logic invert instruction
214
- # @param [Array] input value (0 or 1)
223
+ # @param [Array] i input value (0 or 1)
215
224
  # @return [Integer|Float] output value (1 if in 0, 0 if in 1)
216
225
  def self.bnot(i)
217
226
  if i[0].to_i == 1
@@ -220,6 +229,49 @@ module ImageFilterDsl
220
229
  1
221
230
  end
222
231
  end
232
+
233
+ ##
234
+ # Mix two values with a ratio
235
+ # @param [Array] i input values (ratio (0-1.0), a, b)
236
+ # @return [Float] output value of ((ratio*a) + ((1.0-ratio)*b))
237
+ def self.mix(i)
238
+ ratio, a, b = i
239
+ (ratio*a)+((1.0-ratio)*b)
240
+ end
241
+
242
+ ##
243
+ # Random number instruction
244
+ # @param [Array] i input values (min, max)
245
+ # @return [Float] Random number between min and max
246
+ def self.rand(i)
247
+ r=Random.new
248
+ min,max = i
249
+ (-min) + (r.rand * (max + min))
250
+ end
251
+
252
+ ##
253
+ # Sine function
254
+ # @param [Array] i input value to use sin on
255
+ # @return [Float] Sine of input value
256
+ def self.sin(i)
257
+ Math.sin(i[0])
258
+ end
259
+
260
+ ##
261
+ # Cosine function
262
+ # @param [Array] i input value to use cos on
263
+ # @return [Float] Cosine of input value
264
+ def self.cos(i)
265
+ Math.cos(i[0])
266
+ end
267
+
268
+ ##
269
+ # Tangent function
270
+ # @param [Array] i input value to use tan on
271
+ # @return [Float] Tangent of input value
272
+ def self.tan(i)
273
+ Math.tan(i[0])
274
+ end
223
275
  end
224
276
  end
225
277
  end
@@ -1,9 +1,11 @@
1
1
  ##
2
2
  # Image Filter DSL Library
3
- # (c) 2018 VDTDEV/Wade H. ~ MIT License
4
- # @author Wade H. <vdtdev@gmail.com>
3
+ # (c) 2018-2020 VDTDEV/Wade H. ~ MIT License
4
+ # @author Wade H. <vdtdev.prod@gmail.com>
5
5
  module ImageFilterDsl
6
6
  module Dsl
7
+ ##
8
+ # Kernal module
7
9
  module Kernel
8
10
  ##
9
11
  # IFD Filter Kernel class
@@ -2,9 +2,10 @@ require 'chunky_png'
2
2
 
3
3
  ##
4
4
  # Image Filter DSL Library
5
- # (c) 2018 VDTDEV/Wade H. ~ MIT License
6
- # @author Wade H. <vdtdev@gmail.com>
5
+ # (c) 2018-2020 VDTDEV/Wade H. ~ MIT License
6
+ # @author Wade H. <vdtdev.prod@gmail.com>
7
7
  module ImageFilterDsl
8
+ # Module containing processing engine related code
8
9
  module Engine
9
10
  ##
10
11
  # Image Processor class applies Filter Kernels to images
@@ -12,6 +13,8 @@ module ImageFilterDsl
12
13
 
13
14
  attr_accessor :kernel, :config
14
15
 
16
+
17
+
15
18
  ##
16
19
  # Constructor
17
20
  # @param [Dsl::Kernel::FilterKernel|String] filter_kernel FilterKernel object or path to binary kernel file
@@ -120,7 +123,6 @@ module ImageFilterDsl
120
123
  b = clr.b(pixel)
121
124
  a = clr.a(pixel)
122
125
 
123
-
124
126
  inputs = Hash[*@kernel.inputs.map{|k|[k,0]}.flatten]
125
127
  inputs[:x] = x if inputs.keys.include?(:x)
126
128
  inputs[:y] = y if inputs.keys.include?(:y)
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  # Image Filter DSL Library
3
- # (c) 2018 VDTDEV/Wade H. ~ MIT License
4
- # @author Wade H. <vdtdev@gmail.com>
3
+ # (c) 2018-2020 VDTDEV/Wade H. ~ MIT License
4
+ # @author Wade H. <vdtdev.prod@gmail.com>
5
5
  module ImageFilterDsl
6
6
  module Engine
7
7
  ##
@@ -10,8 +10,13 @@ module ImageFilterDsl
10
10
 
11
11
  ##
12
12
  # Constants for format option used in read
13
+ # Dictates what is returned
13
14
  module DataFormat
15
+ ##
16
+ # Filter Kernal instance
14
17
  KERNEL = :kernel
18
+ ##
19
+ # Filter kernal record
15
20
  RECORD = :record
16
21
  end
17
22
 
metadata CHANGED
@@ -1,22 +1,87 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_filter_dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wade H.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-02 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Image Filter DSL with processing
11
+ date: 2020-02-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: chunky_png
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.3.10
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.10
33
+ - !ruby/object:Gem::Dependency
34
+ name: bindata
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.4'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.4.3
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.4'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.4.3
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 3.7.0
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '3.7'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 3.7.0
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '3.7'
73
+ description: |2
74
+ Image filtering DSL including a CLI for running filters and ability
75
+ to write kernals to a binary format that will can be used to run filters
76
+ from the CLI, and potentially allow filters to be compatible with implementation
77
+ in other languages.
14
78
  email: vdtdev.prod@gmail.com
15
79
  executables:
16
80
  - image_filter_dsl
17
81
  extensions: []
18
82
  extra_rdoc_files: []
19
83
  files:
84
+ - README.md
20
85
  - bin/image_filter_dsl
21
86
  - lib/image_filter_dsl.rb
22
87
  - lib/image_filter_dsl/binary/serialize.rb
@@ -26,11 +91,12 @@ files:
26
91
  - lib/image_filter_dsl/dsl/kernel.rb
27
92
  - lib/image_filter_dsl/engine/image_processor.rb
28
93
  - lib/image_filter_dsl/engine/io.rb
29
- homepage: https://bitbucket.org/WadeH/image_filter_dsl/src
94
+ homepage: https://bitbucket.org/WadeH/image_filter_dsl
30
95
  licenses:
31
96
  - MIT
32
97
  metadata:
33
- source_code_uri: https://bitbucket.org/WadeH/image_filter_dsl/src
98
+ source_code_uri: https://bitbucket.org/WadeH/image_filter_dsl
99
+ documentation_uri: https://rubydoc.info/gems/image_filter_dsl/0.0.6
34
100
  post_install_message:
35
101
  rdoc_options: []
36
102
  require_paths: