Class: Gsplat::IO::ColmapBinary::Cursor

Inherits:
Object
  • Object
show all
Defined in:
lib/gsplat/io/colmap_binary.rb

Overview

Bounds-checked little-endian binary cursor.

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Cursor

Returns a new instance of Cursor.



14
15
16
17
# File 'lib/gsplat/io/colmap_binary.rb', line 14

def initialize(data)
  @data = data
  @offset = 0
end

Instance Method Details

#array(format, width, count) ⇒ Object



27
28
29
# File 'lib/gsplat/io/colmap_binary.rb', line 27

def array(format, width, count)
  Array.new(count) { scalar(format, width) }
end

#cstringObject

Raises:



31
32
33
34
35
36
37
38
# File 'lib/gsplat/io/colmap_binary.rb', line 31

def cstring
  finish = @data.index("\0", @offset)
  raise Gsplat::Error, "unterminated COLMAP image name" unless finish

  value = @data.byteslice(@offset, finish - @offset)
  @offset = finish + 1
  value.force_encoding(Encoding::UTF_8)
end

#scalar(format, width) ⇒ Object

Raises:



19
20
21
22
23
24
25
# File 'lib/gsplat/io/colmap_binary.rb', line 19

def scalar(format, width)
  bytes = @data.byteslice(@offset, width)
  raise Gsplat::Error, "truncated COLMAP binary file" unless bytes&.bytesize == width

  @offset += width
  bytes.unpack1(format)
end