Jump To …
README lib / psd / blend_mode.coffee lib / psd / channel_image.coffee lib / psd / color.coffee lib / psd / descriptor.coffee lib / psd / file.coffee lib / psd / header.coffee lib / psd / image.coffee lib / psd / image_export.coffee lib / psd / image_exports / png.coffee lib / psd / image_format.coffee lib / psd / image_formats / layer_raw.coffee lib / psd / image_formats / layer_rle.coffee lib / psd / image_formats / raw.coffee lib / psd / image_formats / rle.coffee lib / psd / image_mode.coffee lib / psd / image_modes / cmyk.coffee lib / psd / image_modes / greyscale.coffee lib / psd / image_modes / rgb.coffee lib / psd / init.coffee lib / psd / layer / blend_modes.coffee lib / psd / layer / blending_ranges.coffee lib / psd / layer / channel_image.coffee lib / psd / layer / helpers.coffee lib / psd / layer / info.coffee lib / psd / layer / mask.coffee lib / psd / layer / name.coffee lib / psd / layer / position_channels.coffee lib / psd / layer.coffee lib / psd / layer_info / blend_clipping_elements.coffee lib / psd / layer_info / blend_interior_elements.coffee lib / psd / layer_info / fill_opacity.coffee lib / psd / layer_info / gradient_fill.coffee lib / psd / layer_info / layer_id.coffee lib / psd / layer_info / layer_name_source.coffee lib / psd / layer_info / legacy_typetool.coffee lib / psd / layer_info / locked.coffee lib / psd / layer_info / metadata.coffee lib / psd / layer_info / nested_section_divider.coffee lib / psd / layer_info / object_effects.coffee lib / psd / layer_info / section_divider.coffee lib / psd / layer_info / solid_color.coffee lib / psd / layer_info / typetool.coffee lib / psd / layer_info / unicode_name.coffee lib / psd / layer_info / vector_mask.coffee lib / psd / layer_info / vector_origination.coffee lib / psd / layer_info / vector_stroke.coffee lib / psd / layer_info / vector_stroke_content.coffee lib / psd / layer_info.coffee lib / psd / layer_mask.coffee lib / psd / lazy_execute.coffee lib / psd / mask.coffee lib / psd / node.coffee lib / psd / nodes / ancestry.coffee lib / psd / nodes / build_preview.coffee lib / psd / nodes / group.coffee lib / psd / nodes / layer.coffee lib / psd / nodes / root.coffee lib / psd / nodes / search.coffee lib / psd / path_record.coffee lib / psd / resource.coffee lib / psd / resource_section.coffee lib / psd / resources / layer_comps.coffee lib / psd / resources.coffee lib / psd / util.coffee lib / psd.coffee shims / init.coffee shims / png.coffee

# layer.coffee

lib/psd/

¶

    {Module} = require 'coffeescript-module'

¶

Represents a single layer and all of the data associated with that layer. Typically you will access this data from a Node object, which simplifies access for you.

    module.exports = class Layer extends Module

¶

Mixins for all of the various data each layer contains.

      @includes require('./layer/position_channels.coffee')
      @includes require('./layer/blend_modes.coffee')
      @includes require('./layer/mask.coffee')
      @includes require('./layer/blending_ranges.coffee')
      @includes require('./layer/name.coffee')
      @includes require('./layer/info.coffee')
      @includes require('./layer/helpers.coffee')
      @includes require('./layer/channel_image.coffee')

      constructor: (@file, @header) ->
        @mask = {}
        @blendingRanges = {}
        @adjustments = {}
        @channelsInfo = []
        @blendMode = {}
        @groupLayer = null

        @infoKeys = []

¶

The layer's name can come from one of two places, depending on what version of Photoshop was used to create the PSD.

        Object.defineProperty @, 'name',
          get: ->
            if @adjustments['name']?
              @adjustments['name'].data
            else
              @legacyName

¶

Every layer starts with the same set of data, and ends with a dynamic number of layer info blocks.

      parse: ->
        @parsePositionAndChannels()
        @parseBlendModes()

        extraLen = @file.readInt()
        @layerEnd = @file.tell() + extraLen

        @parseMaskData()
        @parseBlendingRanges()
        @parseLegacyLayerName()
        @parseLayerInfo()

        @file.seek @layerEnd
        return @

      export: ->
        name: @name
        top: @top
        right: @right
        bottom: @bottom
        left: @left
        width: @width
        height: @height
        opacity: @opacity
        visible: @visible
        clipped: @clipped
        mask: @mask.export()

generated Tue May 12 2015 10:08:56 GMT-0400 (EDT)