Method: PSD::LayerMask#parse
- Defined in:
- lib/psd/layer_mask.rb
#parse ⇒ Object
Parse this section, including all of the layers and folders. Once implemented, this will also trigger parsing of the channel images for each layer.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/psd/layer_mask.rb', line 30 def parse start_section mask_size = @file.read_int finish = @file.tell + mask_size return self if mask_size <= 0 layer_info_size = Util.pad2(@file.read_int) if layer_info_size > 0 layer_count = @file.read_short if layer_count < 0 layer_count = layer_count.abs @merged_alpha = true end if layer_count * (18 + 6 * @header.channels) > layer_info_size raise "Unlikely number of layers parsed: #{layer_count}" end @layer_section_start = @file.tell layer_count.times do @layers << PSD::Layer.new(@file, @header).parse end layers.each do |layer| @file.seek 8, IO::SEEK_CUR and next if layer.folder? || layer.folder_end? layer.parse_channel_image(@header, @options[:parse_layer_images]) end end # Layers are parsed in reverse order layers.reverse! group_layers parse_global_mask # Ensure we're at the end of this section @file.seek finish end_section return self end |