Commit 28ac2075 authored by Ryan LeFevre's avatar Ryan LeFevre

Name, blending ranges, mask data

parent 32ef374a
...@@ -37,5 +37,5 @@ module.exports = class File ...@@ -37,5 +37,5 @@ module.exports = class File
seek: (amt, rel = false) -> if rel then @pos += amt else @pos = amt seek: (amt, rel = false) -> if rel then @pos += amt else @pos = amt
readString: (length) -> @read(length).toString() readString: (length) -> @read(length).toString().replace /\u0000/g, ''
readByte: -> @read(1)[0] readByte: -> @read(1)[0]
\ No newline at end of file
...@@ -5,6 +5,7 @@ module.exports = class Layer extends Module ...@@ -5,6 +5,7 @@ module.exports = class Layer extends Module
@includes require('./layer/blend_modes.coffee') @includes require('./layer/blend_modes.coffee')
@includes require('./layer/mask.coffee') @includes require('./layer/mask.coffee')
@includes require('./layer/blending_ranges.coffee') @includes require('./layer/blending_ranges.coffee')
@includes require('./layer/name.coffee')
# @includes require('./layer/channel_image.coffee') # @includes require('./layer/channel_image.coffee')
constructor: (@file, @header) -> constructor: (@file, @header) ->
...@@ -26,11 +27,13 @@ module.exports = class Layer extends Module ...@@ -26,11 +27,13 @@ module.exports = class Layer extends Module
@parseMaskData() @parseMaskData()
@parseBlendingRanges() @parseBlendingRanges()
@parseLegacyLayerName()
@file.seek @layerEnd @file.seek @layerEnd
return @ return @
export: -> export: ->
name: @name
top: @top top: @top
right: @right right: @right
bottom: @bottom bottom: @bottom
......
module.exports =
parseBlendingRanges: ->
length = @file.readInt()
@blendingRanges.grey =
source:
black: [@file.readByte(), @file.readByte()]
white: [@file.readByte(), @file.readByte()]
dest:
black: [@file.readByte(), @file.readByte()]
white: [@file.readByte(), @file.readByte()]
numChannels = (length - 8) / 8
@blendingRanges.channels = []
for i in [0...numChannels]
@blendingRanges.channels.push
source:
black: [@file.readByte(), @file.readByte()]
white: [@file.readByte(), @file.readByte()]
dest:
black: [@file.readByte(), @file.readByte()]
white: [@file.readByte(), @file.readByte()]
\ No newline at end of file
Mask = require '../mask.coffee'
module.exports =
parseMaskData: ->
@mask = new Mask(@file).parse()
\ No newline at end of file
Util = require '../util.coffee'
module.exports =
parseLegacyLayerName: ->
len = Util.pad4 @file.readByte()
@legacyName = @file.readString(len)
Object.defineProperty @, 'name',
get: ->
if @adjustments['name']?
@adjustments['name'].data
else
@legacyName
\ No newline at end of file
module.exports = class Mask
constructor: (@file) ->
@top = 0
@right = 0
@bottom = 0
@left = 0
parse: ->
@size = @file.readInt()
return @ if @size is 0
maskEnd = @file.tell() + @size
@top = @file.readInt()
@left = @file.readInt()
@bottom = @file.readInt()
@right = @file.readInt()
@width = @right - @left
@height = @bottom - @top
@relative = (@flags & 0x01) > 0
@disabled = (@flags & (0x01 << 1)) > 0
@invert = (@flags & (0x01 << 2)) > 0
@defaultColor = @file.readByte()
@flags = @file.readByte()
@file.seek maskEnd
return @
export: ->
return {} if @size is 0
top: @top
left: @left
bottom: @bottom
right: @right
width: @width
height: @height
defaultColor: @defaultColor
relative: @relative
disabled: @disabled
invert: @invert
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment