[フレーム]

Class: Vips::Object

Inherits:
GObject::GObject show all
Defined in:
lib/vips/object.rb

Direct Known Subclasses

Connection , Image , Interpolate , MutableImage , Operation , Region

Defined Under Namespace

Modules: ObjectLayout Classes: ManagedStruct , Struct

Instance Attribute Summary

Attributes inherited from GObject::GObject

#ptr , #references

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from GObject::GObject

ffi_managed_struct , #ffi_managed_struct , #ffi_struct , ffi_struct , #initialize

Constructor Details

This class inherits a constructor from GObject::GObject

Class Method Details

print all active VipsObjects, with their reference counts. Handy for debugging ruby-vips.

166
167
168
169
# File 'lib/vips/object.rb', line 166
def self.print_all
 GC.start
 Vips .vips_object_print_all
end

Instance Method Details

#get(name) ⇒ Object

231
232
233
234
235
236
237
238
239
240
241
242
# File 'lib/vips/object.rb', line 231
def get name
 gtype = get_typeof_error name
 gvalue = GObject ::GValue .alloc 
 gvalue.init gtype
 GObject .g_object_get_property self, name, gvalue
 result = gvalue.get
 gvalue.unset
 GLib .logger .debug("Vips::Object.get") { "#{name} == #{result}" }
 result
end

#get_pspec(name) ⇒ Object

return a pspec, or nil ... nil wil leave a message in the error log which you must clear

200
201
202
203
204
205
206
207
208
209
210
# File 'lib/vips/object.rb', line 200
def get_pspec name
 ppspec = GObject ::GParamSpecPtr .new
 argument_class = Vips ::ArgumentClassPtr .new
 argument_instance = Vips ::ArgumentInstancePtr .new
 result = Vips .vips_object_get_argument self, name,
 ppspec, argument_class, argument_instance
 return nil if result != 0
 ppspec[:value]
end

#get_typeof(name) ⇒ Object

return a gtype, 0 on not found

221
222
223
224
225
226
227
228
229
# File 'lib/vips/object.rb', line 221
def get_typeof name
 pspec = get_pspec name
 unless pspec
 Vips .vips_error_clear
 return 0
 end
 pspec[:value_type]
end

#get_typeof_error(name) ⇒ Object

return a gtype, raise an error on not found

Raises:

213
214
215
216
217
218
# File 'lib/vips/object.rb', line 213
def get_typeof_error name
 pspec = get_pspec name
 raise Vips ::Error  unless pspec
 pspec[:value_type]
end

#set(name, value) ⇒ Object

244
245
246
247
248
249
250
251
252
253
# File 'lib/vips/object.rb', line 244
def set name, value
 GLib .logger .debug("Vips::Object.set") { "#{name} = #{value}" }
 gtype = get_typeof_error name
 gvalue = GObject ::GValue .alloc 
 gvalue.init gtype
 gvalue.set value
 GObject .g_object_set_property self, name, gvalue
 gvalue.unset
end

#signal_connect(name, handler = nil, &block) ⇒ Object

Raises:

255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
# File 'lib/vips/object.rb', line 255
def signal_connect name, handler = nil, &block
 marshal = MARSHAL_ALL[name.to_sym]
 raise Vips ::Error , "unsupported signal #{name}" if marshal.nil?
 if block
 # our block as a Proc
 prc = block
 elsif handler
 # We assume the hander is a Proc (perhaps we should test)
 prc = handler
 else
 raise Vips ::Error , "must supply either block or handler"
 end
 # The marshal function will make a closure with the right type signature
 # for the selected signal
 callback = marshal.call(prc)
 # we need to make sure this is not GCd while self is alive
 @references << callback
 GObject .g_signal_connect_data(self, name.to_s, callback, nil, nil, 0)
end

AltStyle によって変換されたページ (->オリジナル) /