Sha256: 5d9d0c135733cb53b27ab20fdb00c13e7ac504147e3ea3353b05e9bbba729b5c

Contents?: true

Size: 1.17 KB

Versions: 10

Compression:

Stored size: 1.17 KB

Contents

# coding: utf-8
# frozen_string_literal: true

#
class PDF::Reader # :nodoc:
  module Filter # :nodoc:
    # implementation of the run length stream filter
    class RunLength
      def initialize(options = {})
        @options = options
      end

      ################################################################################
      # Decode the specified data with the RunLengthDecode compression algorithm
      def filter(data)
        pos = 0
        out = "".dup

        while pos < data.length
          length = data.getbyte(pos)
          pos += 1

          case
          when length == 128
            break
          when length < 128
            # When the length is < 128, we copy the following length+1 bytes
            # literally.
            out << data[pos, length + 1]
            pos += length
          else
            # When the length is > 128, we copy the next byte (257 - length)
            # times; i.e., "\xFA\x00" ([250, 0]) will expand to
            # "\x00\x00\x00\x00\x00\x00\x00".
            out << data[pos, 1] * (257 - length)
          end

          pos += 1
        end

        Depredict.new(@options).filter(out)
      end
    end
  end
end

Version data entries

10 entries across 9 versions & 2 rubygems

Version Path
pdf-reader-2.6.0 lib/pdf/reader/filter/run_length.rb
pdf-reader-2.5.0 lib/pdf/reader/filter/run_length.rb
pdf-reader-2.4.2 lib/pdf/reader/filter/run_length.rb
pdf-reader-2.4.1 lib/pdf/reader/filter/run_length.rb
pdf-reader-2.4.0 lib/pdf/reader/filter/run_length.rb
pdf-reader-2.3.0 lib/pdf/reader/filter/run_length.rb
pdf-reader-2.2.1 lib/pdf/reader/filter/run_length.rb
embulk-input-druginfo_interview_form-0.1.0 vendor/bundle/ruby/2.4.0/gems/pdf-reader-2.2.0/lib/pdf/reader/filter/run_length.rb
embulk-input-druginfo_interview_form-0.1.0 vendor/bundle/ruby/2.5.0/gems/pdf-reader-2.2.0/lib/pdf/reader/filter/run_length.rb
pdf-reader-2.2.0 lib/pdf/reader/filter/run_length.rb