vips 8.7.0.1 → 8.8.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +25 -22
  3. data/CHANGELOG.md +266 -0
  4. data/example/annotate.rb +2 -2
  5. data/example/daltonize8.rb +14 -14
  6. data/example/example2.rb +6 -6
  7. data/example/example3.rb +5 -5
  8. data/example/example4.rb +4 -4
  9. data/example/example5.rb +2 -2
  10. data/example/inheritance_with_refcount.rb +207 -207
  11. data/example/thumb.rb +10 -10
  12. data/example/trim8.rb +2 -2
  13. data/example/watermark.rb +14 -35
  14. data/example/wobble.rb +24 -24
  15. data/lib/vips.rb +335 -306
  16. data/lib/vips/access.rb +9 -9
  17. data/lib/vips/align.rb +7 -7
  18. data/lib/vips/angle.rb +8 -8
  19. data/lib/vips/angle45.rb +12 -12
  20. data/lib/vips/bandformat.rb +16 -16
  21. data/lib/vips/blend_mode.rb +34 -0
  22. data/lib/vips/coding.rb +11 -11
  23. data/lib/vips/compass_direction.rb +13 -13
  24. data/lib/vips/direction.rb +7 -7
  25. data/lib/vips/extend.rb +13 -13
  26. data/lib/vips/gobject.rb +94 -94
  27. data/lib/vips/gvalue.rb +232 -232
  28. data/lib/vips/image.rb +1329 -1327
  29. data/lib/vips/interesting.rb +10 -10
  30. data/lib/vips/interpolate.rb +51 -51
  31. data/lib/vips/interpretation.rb +25 -25
  32. data/lib/vips/kernel.rb +18 -18
  33. data/lib/vips/methods.rb +2226 -2139
  34. data/lib/vips/object.rb +208 -208
  35. data/lib/vips/operation.rb +323 -321
  36. data/lib/vips/operationboolean.rb +10 -10
  37. data/lib/vips/operationcomplex.rb +8 -8
  38. data/lib/vips/operationcomplex2.rb +6 -6
  39. data/lib/vips/operationcomplexget.rb +7 -7
  40. data/lib/vips/operationmath.rb +14 -14
  41. data/lib/vips/operationmath2.rb +6 -6
  42. data/lib/vips/operationrelational.rb +11 -11
  43. data/lib/vips/operationround.rb +7 -7
  44. data/lib/vips/size.rb +9 -9
  45. data/lib/vips/version.rb +1 -1
  46. data/vips.gemspec +1 -1
  47. metadata +9 -8
data/example/example3.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'vips'
4
4
 
5
- # this makes vips keep a list of all active objects
5
+ # this makes vips keep a list of all active objects
6
6
  Vips::leak_set true
7
7
 
8
8
  # disable the operation cache
@@ -12,8 +12,8 @@ Vips::leak_set true
12
12
  GLib::logger.level = Logger::DEBUG
13
13
 
14
14
  1.times do |i|
15
- puts "loop #{i} ..."
16
- im = Vips::Image.new_from_file ARGV[0]
17
- im = im.embed 100, 100, 3000, 3000, :extend => :mirror
18
- im.write_to_file "x.v"
15
+ puts "loop #{i} ..."
16
+ im = Vips::Image.new_from_file ARGV[0]
17
+ im = im.embed 100, 100, 3000, 3000, :extend => :mirror
18
+ im.write_to_file "x.v"
19
19
  end
data/example/example4.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'vips'
4
4
 
5
- # this makes vips keep a list of all active objects
5
+ # this makes vips keep a list of all active objects
6
6
  Vips::leak_set true
7
7
 
8
8
  # disable the operation cache
@@ -12,7 +12,7 @@ Vips::leak_set true
12
12
  #Vips.set_debug true
13
13
 
14
14
  ARGV.each do |filename|
15
- im = Vips::Image.new_from_file filename
16
- profile = im.get_value "icc-profile-data"
17
- puts "profile has #{profile.length} bytes"
15
+ im = Vips::Image.new_from_file filename
16
+ profile = im.get_value "icc-profile-data"
17
+ puts "profile has #{profile.length} bytes"
18
18
  end
data/example/example5.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'vips'
4
4
 
5
- # this makes vips keep a list of all active objects
5
+ # this makes vips keep a list of all active objects
6
6
  # Vips::leak_set true
7
7
 
8
8
  # disable the operation cache
@@ -12,7 +12,7 @@ require 'vips'
12
12
  #Vips.set_debug true
13
13
 
14
14
  if ARGV.length < 2
15
- raise "usage: #{$PROGRAM_NAME}: input-file output-file"
15
+ raise "usage: #{$PROGRAM_NAME}: input-file output-file"
16
16
  end
17
17
 
18
18
  im = Vips::Image.new_from_file ARGV[0], :access => :sequential
@@ -10,277 +10,277 @@ $vips_debug = true
10
10
 
11
11
  # @private
12
12
  def log str
13
- if $vips_debug
14
- puts str
15
- end
13
+ if $vips_debug
14
+ puts str
15
+ end
16
16
  end
17
17
 
18
18
  def set_debug debug
19
- $vips_debug = debug
19
+ $vips_debug = debug
20
20
  end
21
21
 
22
22
  module Libc
23
- extend FFI::Library
24
- ffi_lib FFI::Library::LIBC
23
+ extend FFI::Library
24
+ ffi_lib FFI::Library::LIBC
25
25
 
26
- attach_function :malloc, [:size_t], :pointer
27
- attach_function :free, [:pointer], :void
26
+ attach_function :malloc, [:size_t], :pointer
27
+ attach_function :free, [:pointer], :void
28
28
  end
29
29
 
30
30
  module GLib
31
- extend FFI::Library
32
- ffi_lib 'gobject-2.0'
33
-
34
- # nil being the default
35
- glib_log_domain = nil
36
-
37
- def self.set_log_domain(domain)
38
- glib_log_domain = domain
39
- end
40
-
41
- # we have a set of things we need to inherit in different ways:
42
- #
43
- # - we want to be able to subclass GObject in a simple way
44
- # - the layouts of the nested structs
45
- # - casting between structs which share a base
46
- # - gobject refcounting
47
- #
48
- # the solution is to split the class into four areas which we treat
49
- # differently:
50
- #
51
- # - we have a "wrapper" Ruby class to allow easy subclassing ... this has a
52
- # @struct member which holds the actual pointer
53
- # - we use "forwardable" to forward the various ffi methods on to the
54
- # @struct member ... we arrange things so that subclasses do not need to
55
- # do the forwarding themselves
56
- # - we have two versions of the struct: a plain one which we can use for
57
- # casting that will not change the refcounts
58
- # - and a managed one with an unref which we just use for .new
59
- # - we separate the struct layout into a separate module to avoid repeating
60
- # ourselves
61
-
62
- class GObject
63
- extend Forwardable
64
- extend SingleForwardable
65
-
66
- def_instance_delegators :@struct, :[], :to_ptr
67
- def_single_delegators :ffi_struct, :ptr
68
-
69
- # the layout of the GObject struct
70
- module GObjectLayout
71
- def self.included(base)
72
- base.class_eval do
73
- layout :g_type_instance, :pointer,
74
- :ref_count, :uint,
75
- :qdata, :pointer
76
- end
77
- end
31
+ extend FFI::Library
32
+ ffi_lib 'gobject-2.0'
33
+
34
+ # nil being the default
35
+ glib_log_domain = nil
36
+
37
+ def self.set_log_domain(domain)
38
+ glib_log_domain = domain
39
+ end
40
+
41
+ # we have a set of things we need to inherit in different ways:
42
+ #
43
+ # - we want to be able to subclass GObject in a simple way
44
+ # - the layouts of the nested structs
45
+ # - casting between structs which share a base
46
+ # - gobject refcounting
47
+ #
48
+ # the solution is to split the class into four areas which we treat
49
+ # differently:
50
+ #
51
+ # - we have a "wrapper" Ruby class to allow easy subclassing ... this has a
52
+ # @struct member which holds the actual pointer
53
+ # - we use "forwardable" to forward the various ffi methods on to the
54
+ # @struct member ... we arrange things so that subclasses do not need to
55
+ # do the forwarding themselves
56
+ # - we have two versions of the struct: a plain one which we can use for
57
+ # casting that will not change the refcounts
58
+ # - and a managed one with an unref which we just use for .new
59
+ # - we separate the struct layout into a separate module to avoid repeating
60
+ # ourselves
61
+
62
+ class GObject
63
+ extend Forwardable
64
+ extend SingleForwardable
65
+
66
+ def_instance_delegators :@struct, :[], :to_ptr
67
+ def_single_delegators :ffi_struct, :ptr
68
+
69
+ # the layout of the GObject struct
70
+ module GObjectLayout
71
+ def self.included(base)
72
+ base.class_eval do
73
+ layout :g_type_instance, :pointer,
74
+ :ref_count, :uint,
75
+ :qdata, :pointer
78
76
  end
77
+ end
78
+ end
79
79
 
80
- # the struct with unref ... manage object lifetime with this
81
- class ManagedStruct < FFI::ManagedStruct
82
- include GObjectLayout
83
-
84
- def initialize(ptr)
85
- log "GLib::GObject::ManagedStruct.new: #{ptr}"
86
- super
87
- end
80
+ # the struct with unref ... manage object lifetime with this
81
+ class ManagedStruct < FFI::ManagedStruct
82
+ include GObjectLayout
88
83
 
89
- def self.release(ptr)
90
- log "GLib::GObject::ManagedStruct.release: unreffing #{ptr}"
91
- GLib::g_object_unref(ptr) unless ptr.null?
92
- end
84
+ def initialize(ptr)
85
+ log "GLib::GObject::ManagedStruct.new: #{ptr}"
86
+ super
87
+ end
93
88
 
94
- end
89
+ def self.release(ptr)
90
+ log "GLib::GObject::ManagedStruct.release: unreffing #{ptr}"
91
+ GLib::g_object_unref(ptr) unless ptr.null?
92
+ end
95
93
 
96
- # the plain struct ... cast with this
97
- class Struct < FFI::Struct
98
- include GObjectLayout
94
+ end
99
95
 
100
- def initialize(ptr)
101
- log "GLib::GObject::Struct.new: #{ptr}"
102
- super
103
- end
96
+ # the plain struct ... cast with this
97
+ class Struct < FFI::Struct
98
+ include GObjectLayout
104
99
 
105
- end
100
+ def initialize(ptr)
101
+ log "GLib::GObject::Struct.new: #{ptr}"
102
+ super
103
+ end
106
104
 
107
- # don't allow ptr == nil, we never want to allocate a GObject struct
108
- # ourselves, we just want to wrap GLib-allocated GObjects
109
- #
110
- # here we use ManagedStruct, not Struct, since this is the ref that will
111
- # need the unref
112
- def initialize(ptr)
113
- log "GLib::GObject.initialize: ptr = #{ptr}"
114
- @struct = ffi_managed_struct.new(ptr)
115
- end
105
+ end
116
106
 
117
- # access to the cast struct for this class
118
- def ffi_struct
119
- self.class.ffi_struct
120
- end
107
+ # don't allow ptr == nil, we never want to allocate a GObject struct
108
+ # ourselves, we just want to wrap GLib-allocated GObjects
109
+ #
110
+ # here we use ManagedStruct, not Struct, since this is the ref that will
111
+ # need the unref
112
+ def initialize(ptr)
113
+ log "GLib::GObject.initialize: ptr = #{ptr}"
114
+ @struct = ffi_managed_struct.new(ptr)
115
+ end
121
116
 
122
- class << self
123
- def ffi_struct
124
- self.const_get(:Struct)
125
- end
126
- end
117
+ # access to the cast struct for this class
118
+ def ffi_struct
119
+ self.class.ffi_struct
120
+ end
127
121
 
128
- # access to the lifetime managed struct for this class
129
- def ffi_managed_struct
130
- self.class.ffi_managed_struct
131
- end
122
+ class << self
123
+ def ffi_struct
124
+ self.const_get(:Struct)
125
+ end
126
+ end
132
127
 
133
- class << self
134
- def ffi_managed_struct
135
- self.const_get(:ManagedStruct)
136
- end
137
- end
128
+ # access to the lifetime managed struct for this class
129
+ def ffi_managed_struct
130
+ self.class.ffi_managed_struct
131
+ end
138
132
 
133
+ class << self
134
+ def ffi_managed_struct
135
+ self.const_get(:ManagedStruct)
136
+ end
139
137
  end
140
138
 
141
- # :gtype will usually be 64-bit, but will be 32-bit on 32-bit Windows
142
- typedef :ulong, :GType
139
+ end
140
+
141
+ # :gtype will usually be 64-bit, but will be 32-bit on 32-bit Windows
142
+ typedef :ulong, :GType
143
143
 
144
144
  end
145
145
 
146
146
  module Vips
147
- extend FFI::Library
148
- ffi_lib 'vips'
147
+ extend FFI::Library
148
+ ffi_lib 'vips'
149
149
 
150
- LOG_DOMAIN = "VIPS"
151
- GLib::set_log_domain(LOG_DOMAIN)
150
+ LOG_DOMAIN = "VIPS"
151
+ GLib::set_log_domain(LOG_DOMAIN)
152
152
 
153
- # need to repeat this
154
- typedef :ulong, :GType
153
+ # need to repeat this
154
+ typedef :ulong, :GType
155
155
 
156
- attach_function :vips_init, [:string], :int
157
- attach_function :vips_shutdown, [], :void
156
+ attach_function :vips_init, [:string], :int
157
+ attach_function :vips_shutdown, [], :void
158
158
 
159
- attach_function :vips_error_buffer, [], :string
160
- attach_function :vips_error_clear, [], :void
159
+ attach_function :vips_error_buffer, [], :string
160
+ attach_function :vips_error_clear, [], :void
161
161
 
162
- def self.get_error
163
- errstr = Vips::vips_error_buffer
164
- Vips::vips_error_clear
165
- errstr
166
- end
167
-
168
- if Vips::vips_init($0) != 0
169
- puts Vips::get_error
170
- exit 1
171
- end
162
+ def self.get_error
163
+ errstr = Vips::vips_error_buffer
164
+ Vips::vips_error_clear
165
+ errstr
166
+ end
172
167
 
173
- at_exit {
174
- Vips::vips_shutdown
175
- }
168
+ if Vips::vips_init($0) != 0
169
+ puts Vips::get_error
170
+ exit 1
171
+ end
176
172
 
177
- attach_function :vips_object_print_all, [], :void
178
- attach_function :vips_leak_set, [:int], :void
173
+ at_exit {
174
+ Vips::vips_shutdown
175
+ }
179
176
 
180
- def self.showall
181
- if $vips_debug
182
- GC.start
183
- vips_object_print_all
184
- end
185
- end
177
+ attach_function :vips_object_print_all, [], :void
178
+ attach_function :vips_leak_set, [:int], :void
186
179
 
180
+ def self.showall
187
181
  if $vips_debug
188
- vips_leak_set 1
182
+ GC.start
183
+ vips_object_print_all
189
184
  end
190
-
191
- class VipsObject < GLib::GObject
192
-
193
- # the layout of the VipsObject struct
194
- module VipsObjectLayout
195
- def self.included(base)
196
- base.class_eval do
197
- # don't actually need most of these, remove them later
198
- layout :parent, GLib::GObject::Struct,
199
- :constructed, :int,
200
- :static_object, :int,
201
- :argument_table, :pointer,
202
- :nickname, :string,
203
- :description, :string,
204
- :preclose, :int,
205
- :close, :int,
206
- :postclose, :int,
207
- :local_memory, :size_t
208
- end
209
- end
185
+ end
186
+
187
+ if $vips_debug
188
+ vips_leak_set 1
189
+ end
190
+
191
+ class VipsObject < GLib::GObject
192
+
193
+ # the layout of the VipsObject struct
194
+ module VipsObjectLayout
195
+ def self.included(base)
196
+ base.class_eval do
197
+ # don't actually need most of these, remove them later
198
+ layout :parent, GLib::GObject::Struct,
199
+ :constructed, :int,
200
+ :static_object, :int,
201
+ :argument_table, :pointer,
202
+ :nickname, :string,
203
+ :description, :string,
204
+ :preclose, :int,
205
+ :close, :int,
206
+ :postclose, :int,
207
+ :local_memory, :size_t
210
208
  end
209
+ end
210
+ end
211
211
 
212
- class Struct < GLib::GObject::Struct
213
- include VipsObjectLayout
214
-
215
- def initialize(ptr)
216
- log "Vips::VipsObject::Struct.new: #{ptr}"
217
- super
218
- end
212
+ class Struct < GLib::GObject::Struct
213
+ include VipsObjectLayout
219
214
 
220
- end
215
+ def initialize(ptr)
216
+ log "Vips::VipsObject::Struct.new: #{ptr}"
217
+ super
218
+ end
221
219
 
222
- class ManagedStruct < GLib::GObject::ManagedStruct
223
- include VipsObjectLayout
220
+ end
224
221
 
225
- def initialize(ptr)
226
- log "Vips::VipsObject::ManagedStruct.new: #{ptr}"
227
- super
228
- end
222
+ class ManagedStruct < GLib::GObject::ManagedStruct
223
+ include VipsObjectLayout
229
224
 
230
- end
225
+ def initialize(ptr)
226
+ log "Vips::VipsObject::ManagedStruct.new: #{ptr}"
227
+ super
228
+ end
231
229
 
232
230
  end
233
231
 
234
- class VipsImage < VipsObject
232
+ end
235
233
 
236
- # the layout of the VipsImage struct
237
- module VipsImageLayout
238
- def self.included(base)
239
- base.class_eval do
240
- layout :parent, VipsObject::Struct
241
- # rest opaque
242
- end
243
- end
244
- end
234
+ class VipsImage < VipsObject
245
235
 
246
- class Struct < VipsObject::Struct
247
- include VipsImageLayout
236
+ # the layout of the VipsImage struct
237
+ module VipsImageLayout
238
+ def self.included(base)
239
+ base.class_eval do
240
+ layout :parent, VipsObject::Struct
241
+ # rest opaque
242
+ end
243
+ end
244
+ end
248
245
 
249
- def initialize(ptr)
250
- log "Vips::VipsImage::Struct.new: #{ptr}"
251
- super
252
- end
246
+ class Struct < VipsObject::Struct
247
+ include VipsImageLayout
253
248
 
254
- end
249
+ def initialize(ptr)
250
+ log "Vips::VipsImage::Struct.new: #{ptr}"
251
+ super
252
+ end
255
253
 
256
- class ManagedStruct < VipsObject::ManagedStruct
257
- include VipsImageLayout
254
+ end
258
255
 
259
- def initialize(ptr)
260
- log "Vips::VipsImage::ManagedStruct.new: #{ptr}"
261
- super
262
- end
256
+ class ManagedStruct < VipsObject::ManagedStruct
257
+ include VipsImageLayout
263
258
 
264
- end
259
+ def initialize(ptr)
260
+ log "Vips::VipsImage::ManagedStruct.new: #{ptr}"
261
+ super
262
+ end
265
263
 
266
- def self.new_partial
267
- VipsImage.new(Vips::vips_image_new)
268
- end
264
+ end
269
265
 
266
+ def self.new_partial
267
+ VipsImage.new(Vips::vips_image_new)
270
268
  end
271
269
 
272
- attach_function :vips_image_new, [], :pointer
270
+ end
271
+
272
+ attach_function :vips_image_new, [], :pointer
273
273
 
274
274
  end
275
275
 
276
276
  puts "creating image"
277
277
  begin
278
- x = Vips::VipsImage.new_partial
279
- puts "x = #{x}"
280
- puts ""
281
- puts "x[:parent] = #{x[:parent]}"
282
- puts ""
283
- puts "x[:parent][:description] = #{x[:parent][:description]}"
284
- puts ""
278
+ x = Vips::VipsImage.new_partial
279
+ puts "x = #{x}"
280
+ puts ""
281
+ puts "x[:parent] = #{x[:parent]}"
282
+ puts ""
283
+ puts "x[:parent][:description] = #{x[:parent][:description]}"
284
+ puts ""
285
285
  end
286
286