Sha256: c258213f3d57abbc2a78557a801a84b5221bbafa452116545eb6b3dd0abf5cdb

Contents?: true

Size: 1.01 KB

Versions: 18

Compression:

Stored size: 1.01 KB

Contents

require 'psd/layer_info'

class PSD
  class LayerSectionDivider < LayerInfo
    def self.should_parse?(key)
      key == 'lsct'
    end

    attr_reader :layer_type, :is_folder, :is_hidden, :blend_mode, :sub_type

    SECTION_DIVIDER_TYPES = [
      "other",
      "open folder",
      "closed folder",
      "bounding section divider"
    ]

    def initialize(file, length)
      super

      @is_folder = false
      @is_hidden = false
      @blend_mode = nil
      @sub_type = nil
    end

    def parse
      code = @file.read_int
      @layer_type = SECTION_DIVIDER_TYPES[code]

      case code
      when 1, 2 then @is_folder = true
      when 3 then @is_hidden = true
      end

      PSD.logger.warn "Section divider is unexpected value: #{code}" if code > 4

      return self unless @length >= 12

      @file.seek 4, IO::SEEK_CUR # sig
      @blend_mode = @file.read_string(4)

      return self unless @length >= 16

      @sub_type = @file.read_int == 0 ? 'normal' : 'scene group'

      return self
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
psd-3.9.0 lib/psd/layer/info/layer_section_divider.rb
psd-3.8.0 lib/psd/layer/info/layer_section_divider.rb
psd-3.7.0 lib/psd/layer/info/layer_section_divider.rb
psd-3.6.0 lib/psd/layer/info/layer_section_divider.rb
psd-3.5.0 lib/psd/layer/info/layer_section_divider.rb
psd-3.4.0 lib/psd/layer/info/layer_section_divider.rb
psd-3.3.3 lib/psd/layer/info/layer_section_divider.rb
psd-3.3.2 lib/psd/layer/info/layer_section_divider.rb
psd-3.3.1 lib/psd/layer/info/layer_section_divider.rb
psd-3.2.4 lib/psd/layer_info/layer_section_divider.rb
psd-3.2.3 lib/psd/layer_info/layer_section_divider.rb
psd-3.2.2 lib/psd/layer_info/layer_section_divider.rb
psd-3.2.1 lib/psd/layer_info/layer_section_divider.rb
psd-3.2.0 lib/psd/layer_info/layer_section_divider.rb
psd-3.1.5 lib/psd/layer_info/layer_section_divider.rb
psd-3.1.4 lib/psd/layer_info/layer_section_divider.rb
psd-3.1.3 lib/psd/layer_info/layer_section_divider.rb
psd-3.1.2 lib/psd/layer_info/layer_section_divider.rb