Class: O3D3XX::Chunk

Inherits:
Object
  • Object
show all
Defined in:
lib/o3d3xx/pcic.rb

Overview

Handle PCIC binary/image chunks

Class Method Summary collapse

Class Method Details

.info(chunk) ⇒ Object



251
252
253
254
255
256
257
258
259
260
261
262
263
# File 'lib/o3d3xx/pcic.rb', line 251

def self.info(chunk)
  info = Array.new
  info.push("CHUNK type        : #{chunk[:CHUNK_TYPE]}")
  info.push("CHUNK size        : #{chunk[:CHUNK_SIZE]}")
  info.push("CHUNK header size : #{chunk[:HEADER_SIZE]}")
  info.push("CHUNK version     : #{chunk[:HEADER_VERSION]}")
  info.push("CHUNK height      : #{chunk[:IMAGE_HEIGTH]}")
  info.push("CHUNK width       : #{chunk[:IMAGE_WIDTH]}")
  info.push("CHUNK format      : #{chunk[:PIXEL_FORMAT]}")
  info.push("CHUNK time stamp  : #{chunk[:TIME_STAMP]}")
  info.push("CHUNK frame count : #{chunk[:FRAME_COUNT]}")
  info.push("CHUNK data size   : #{chunk[:PIXEL_DATA].length}")
end

.parse(data) ⇒ Object



236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
# File 'lib/o3d3xx/pcic.rb', line 236

def self.parse(data)
  chunk_header =  data.unpack('L<9*')
  result = {
    :CHUNK_TYPE => chunk_header[0],
    :CHUNK_SIZE => chunk_header[1],
    :HEADER_SIZE => chunk_header[2],
    :HEADER_VERSION => chunk_header[3],
    :IMAGE_WIDTH => chunk_header[4],
    :IMAGE_HEIGTH => chunk_header[5],
    :PIXEL_FORMAT => chunk_header[6],
    :TIME_STAMP => chunk_header[7],
    :FRAME_COUNT => chunk_header[8],
    :PIXEL_DATA => data[chunk_header[2]...chunk_header[1]],
  }
end

.parseChunkArray(data) ⇒ Object



265
266
267
268
269
270
271
272
273
274
# File 'lib/o3d3xx/pcic.rb', line 265

def self.parseChunkArray(data)
  result = Array.new
  offset = 0
  while offset < data.size
    chunk = self.parse(data[offset..data.size])
    result << chunk
    offset += chunk[:CHUNK_SIZE]
  end
  return result
end