[フレーム]

Class: Vips::TargetCustom

Inherits:
Target show all
Defined in:
lib/vips/targetcustom.rb

Overview

A target you can attach action signal handlers to to implememt custom output types.

For example:

file = File.open "some/file/name", "wb"
target = Vips ::TargetCustom.new 
target.on_write { |bytes| file.write bytes }
image.write_to_target target, ".png"

(just an example – of course in practice you'd use Vips::Target.new_to_file to write to a named file)

Defined Under Namespace

Modules: TargetCustomLayout Classes: ManagedStruct , Struct

Instance Attribute Summary

Attributes inherited from GObject::GObject

#ptr , #references

Instance Method Summary collapse

Methods inherited from Target

new_to_descriptor , new_to_file , new_to_memory

Methods inherited from Connection

#filename , #nick

Methods inherited from Object

#get , #get_pspec , #get_typeof , #get_typeof_error , print_all , #set , #signal_connect

Methods inherited from GObject::GObject

#ffi_managed_struct , ffi_managed_struct , #ffi_struct , ffi_struct

Constructor Details

#initializeTargetCustom

Returns a new instance of TargetCustom.

Raises:

46
47
48
49
50
51
# File 'lib/vips/targetcustom.rb', line 46
def initialize
 pointer = Vips .vips_target_custom_new
 raise Vips ::Error  if pointer.null?
 super pointer
end

Instance Method Details

#on_finish(&block) ⇒ Object

The block is executed at the end of write. It should do any necessary finishing action, such as closing a file.

71
72
73
74
75
# File 'lib/vips/targetcustom.rb', line 71
def on_finish &block
 signal_connect "finish" do
 block.call
 end
end

#on_write {|bytes| ... } ⇒ Object

The block is executed to write data to the source. The interface is exactly as IO::write, ie. it should write the string and return the number of bytes written.

Yield Parameters:

  • bytes (String)

    Write these bytes to the file

Yield Returns:

  • (Integer)

    The number of bytes written, or -1 on error

59
60
61
62
63
64
65
66
67
# File 'lib/vips/targetcustom.rb', line 59
def on_write &block
 signal_connect "write" do |p, len|
 chunk = p.get_bytes(0, len)
 bytes_written = block.call chunk
 chunk.clear
 bytes_written
 end
end

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