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

# path_record.coffee lib/psd/ |
--- | ---
¶ |
    _ = require 'lodash'

    module.exports = class PathRecord
      constructor: (@file) ->
        @recordType = null

      parse: ->
        @recordType = @file.readShort()

        switch @recordType
          when 0, 3 then @_readPathRecord()
          when 1, 2, 4, 5 then @_readBezierPoint()
          when 7 then @_readClipboardRecord()
          when 8 then @_readInitialFill()
          else @file.seek(24, true)

      export: ->
        _.merge { recordType: @recordType }, switch @recordType
          when 0, 3 then { numPoints: @numPoints }
          when 1, 2, 4, 5
            linked: @linked
            closed: (@recordType in [1, 2])
            preceding:
              vert: @precedingVert
              horiz: @precedingHoriz
            anchor:
              vert: @anchorVert
              horiz: @anchorHoriz
            leaving:
              vert: @leavingVert
              horiz: @leavingHoriz
          when 7
            clipboard:
              top: @clipboardTop
              left: @clipboardLeft
              bottom: @clipboardBottom
              right: @clipboardRight
              resolution: @clipboardResolution
          when 8 then { initialFill: @initialFill }
          else {}

      isBezierPoint: -> @recordType in [1, 2, 4, 5]

      _readPathRecord: ->
        @numPoints = @file.readShort()
        @file.seek 22, true

      _readBezierPoint: ->
        @linked = @recordType in [1, 4]

        @precedingVert = @file.readPathNumber()
        @precedingHoriz = @file.readPathNumber()

        @anchorVert = @file.readPathNumber()
        @anchorHoriz = @file.readPathNumber()

        @leavingVert = @file.readPathNumber()
        @leavingHoriz = @file.readPathNumber()

      _readClipboardRecord: ->
        @clipboardTop = @file.readPathNumber()
        @clipboardLeft = @file.readPathNumber()
        @clipboardBottom = @file.readPathNumber()
        @clipboardRight = @file.readPathNumber()
        @clipboardResolution = @file.readPathNumber()
        @file.seek 4, true

      _readInitialFill: ->
        @initialFill = @file.readShort()
        @file.seek 22, true

generated Tue May 12 2015 11:08:15 GMT-0400 (EDT)