Class: ZIMG::JPEG::Lossless::Component

Inherits:
Object
  • Object
show all
Defined in:
lib/zimg/jpeg/lossless.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, hv, qid) ⇒ Component

Returns a new instance of Component.



30
31
32
33
34
35
36
# File 'lib/zimg/jpeg/lossless.rb', line 30

def initialize(id, hv, qid)
  @id = id
  @qid = qid # quantization_idx
  @h = hv >> 4
  @v = hv & 0x0f
  raise "Invalid sampling factor, expected values above 0" if @h <= 0 || @v <= 0
end

Instance Attribute Details

#hObject (readonly)

attributes set from JPEG data



24
25
26
# File 'lib/zimg/jpeg/lossless.rb', line 24

def h
  @h
end

#huffman_table_acObject

externally-calculated values



28
29
30
# File 'lib/zimg/jpeg/lossless.rb', line 28

def huffman_table_ac
  @huffman_table_ac
end

#huffman_table_dcObject

externally-calculated values



28
29
30
# File 'lib/zimg/jpeg/lossless.rb', line 28

def huffman_table_dc
  @huffman_table_dc
end

#idObject (readonly)

attributes set from JPEG data



24
25
26
# File 'lib/zimg/jpeg/lossless.rb', line 24

def id
  @id
end

#qidObject (readonly)

attributes set from JPEG data



24
25
26
# File 'lib/zimg/jpeg/lossless.rb', line 24

def qid
  @qid
end

#resultsObject (readonly)

self-calculated values



26
27
28
# File 'lib/zimg/jpeg/lossless.rb', line 26

def results
  @results
end

#vObject (readonly)

attributes set from JPEG data



24
25
26
# File 'lib/zimg/jpeg/lossless.rb', line 24

def v
  @v
end

Instance Method Details

#decoded_linesObject

TODO: optimize



47
48
49
# File 'lib/zimg/jpeg/lossless.rb', line 47

def decoded_lines
  [@results.pack("C*")]
end

#inspectObject



38
39
40
# File 'lib/zimg/jpeg/lossless.rb', line 38

def inspect
  format("<%d %d %d %d>", id, h, v, qid)
end

#prepare(frame) ⇒ Object



42
43
44
# File 'lib/zimg/jpeg/lossless.rb', line 42

def prepare(frame)
  @results = [0] * frame.width * frame.height
end

#to_enum(_width, _height) ⇒ Object



51
52
53
# File 'lib/zimg/jpeg/lossless.rb', line 51

def to_enum(_width, _height)
  @results.to_enum
end