Class: ImageFilterDsl::Dsl::Kernel::FilterKernel

Inherits:
Object
  • Object
show all
Defined in:
lib/image_filter_dsl/dsl/kernel.rb

Overview

IFD Filter Kernel class

Author:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(inputs = [], outputs = []) ⇒ FilterKernel

Kernel constructor

Parameters:

  • inputs (Array) (defaults to: [])

    Input symbols

  • outputs (Array) (defaults to: [])

    Output symbols



22
23
24
25
26
# File 'lib/image_filter_dsl/dsl/kernel.rb', line 22

def initialize(inputs=[],outputs=[])
    @inputs = inputs
    @outputs = outputs
    @instructions = []
end

Instance Attribute Details

#inputsObject

Returns the value of attribute inputs.



15
16
17
# File 'lib/image_filter_dsl/dsl/kernel.rb', line 15

def inputs
  @inputs
end

#instructionsObject

Returns the value of attribute instructions.



14
15
16
# File 'lib/image_filter_dsl/dsl/kernel.rb', line 14

def instructions
  @instructions
end

#outputsObject

Returns the value of attribute outputs.



16
17
18
# File 'lib/image_filter_dsl/dsl/kernel.rb', line 16

def outputs
  @outputs
end

Instance Method Details

#process(initial_values) ⇒ Hash

Process filter kernel and produce output hash

Parameters:

  • initial_values (Hash)

    Hash of values for inputs

Returns:

  • (Hash)

    hash of result values for output symbols



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/image_filter_dsl/dsl/kernel.rb', line 41

def process(initial_values)
    outs = Hash[* @outputs.map{|o| [o,nil] }.flatten]
    @instructions.each do |i|
        v = i.calculate(initial_values)
        if @outputs.include?(i.out)
            outs[i.out] = v
        else
            initial_values[i.out] = v
        end
    end
    outs
end

#store_instruction(instruction) ⇒ Integer

Store instruction in kernel

Parameters:

Returns:

  • (Integer)

    total number of instructions



32
33
34
35
# File 'lib/image_filter_dsl/dsl/kernel.rb', line 32

def store_instruction(instruction)
    @instructions.append(instruction)
    @instructions.length
end