psd 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/psd/node.rb +6 -6
- data/lib/psd/node_group.rb +2 -2
- data/lib/psd/node_layer.rb +3 -3
- data/lib/psd/nodes/search.rb +39 -14
- data/lib/psd/resources/layer_comps.rb +12 -0
- data/lib/psd/version.rb +1 -1
- data/psd.gemspec +1 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9b96175c4675aceb277aa64cf381aa9d7f20561
|
4
|
+
data.tar.gz: 1c4d5d7d68921e1a1dbd222f8022d3f02e3b9d2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b86b19b017831e85e3c8b28a0d045a3858cc96a7c03e6c501c61225d32c7018f58e03dc4fbfd5252e2016ef67e593435493960cb9eabf76fcfba2cb85487666
|
7
|
+
data.tar.gz: 65e4d1d26be0132d00e4215803dbb709a4af2c39f8ca604ac470daedc5dce5b7ecc5cbadaa134f0a392986c7b8c4f3cbb5fbc322fc660a9fc4649a8f93a634bd
|
data/lib/psd/node.rb
CHANGED
@@ -5,6 +5,7 @@ require_relative 'nodes/search'
|
|
5
5
|
# A lot of method names borrowed from the Ruby ancestry gem.
|
6
6
|
class PSD
|
7
7
|
class Node
|
8
|
+
include ParseLayers
|
8
9
|
include Ancestry
|
9
10
|
include Search
|
10
11
|
include BuildPreview
|
@@ -12,16 +13,14 @@ class PSD
|
|
12
13
|
# Default properties that all nodes contain
|
13
14
|
PROPERTIES = [:name, :left, :right, :top, :bottom, :height, :width]
|
14
15
|
|
15
|
-
attr_accessor :parent, :children, :layer, :force_visible
|
16
|
+
attr_accessor :parent, :children, :layer, :force_visible, :top, :left
|
16
17
|
|
17
18
|
def initialize(layers=[])
|
18
|
-
|
19
|
-
layers.each do |layer|
|
20
|
-
layer.parent = self
|
21
|
-
@children << layer
|
22
|
-
end
|
19
|
+
parse_layers(layers)
|
23
20
|
|
24
21
|
@force_visible = nil
|
22
|
+
@top = @layer.top
|
23
|
+
@left = @layer.left
|
25
24
|
end
|
26
25
|
|
27
26
|
def hidden?
|
@@ -29,6 +28,7 @@ class PSD
|
|
29
28
|
end
|
30
29
|
|
31
30
|
def visible?
|
31
|
+
return false if @layer.clipped? && !next_sibling.visible?
|
32
32
|
force_visible.nil? ? @layer.visible? : force_visible
|
33
33
|
end
|
34
34
|
|
data/lib/psd/node_group.rb
CHANGED
@@ -5,7 +5,6 @@ class PSD::Node
|
|
5
5
|
# zero or more children nodes.
|
6
6
|
class Group < PSD::Node
|
7
7
|
include PSD::HasChildren
|
8
|
-
include PSD::Node::ParseLayers
|
9
8
|
include PSD::Node::LockToOrigin
|
10
9
|
|
11
10
|
attr_reader :name, :top, :left, :bottom, :right
|
@@ -15,7 +14,8 @@ class PSD::Node
|
|
15
14
|
def initialize(folder)
|
16
15
|
@name = folder[:name]
|
17
16
|
@layer = folder[:layer]
|
18
|
-
|
17
|
+
|
18
|
+
super(folder[:layers])
|
19
19
|
get_dimensions
|
20
20
|
end
|
21
21
|
|
data/lib/psd/node_layer.rb
CHANGED
@@ -8,14 +8,14 @@ class PSD::Node
|
|
8
8
|
|
9
9
|
# Stores a reference to the PSD::Layer
|
10
10
|
def initialize(layer)
|
11
|
-
super([])
|
12
|
-
|
13
11
|
@layer = layer
|
14
12
|
layer.node = self
|
13
|
+
|
14
|
+
super([])
|
15
15
|
end
|
16
16
|
|
17
17
|
# Delegates some methods to the PSD::Layer
|
18
|
-
|
18
|
+
[:text, :ref_x, :ref_y].each do |meth|
|
19
19
|
define_method meth do
|
20
20
|
@layer.send(meth)
|
21
21
|
end
|
data/lib/psd/nodes/search.rb
CHANGED
@@ -33,34 +33,59 @@ class PSD
|
|
33
33
|
raise "Layer comp not found" if comp.nil?
|
34
34
|
|
35
35
|
id = comp[:id]
|
36
|
-
|
37
|
-
|
36
|
+
else
|
37
|
+
comp = psd.layer_comps.select { |c| c[:id] == id }.first
|
38
|
+
raise "Layer comp not found" if comp.nil?
|
38
39
|
end
|
39
40
|
|
40
41
|
root = PSD::Node::Root.new(psd)
|
41
|
-
filter_for_comp!(
|
42
|
+
filter_for_comp!(comp, root)
|
42
43
|
|
43
44
|
return root
|
44
45
|
end
|
45
46
|
|
46
47
|
private
|
47
48
|
|
48
|
-
def filter_for_comp!(
|
49
|
+
def filter_for_comp!(comp, node)
|
49
50
|
# Force layers to be visible if they are enabled for the comp
|
50
51
|
node.children.each do |c|
|
51
|
-
|
52
|
+
set_visibility(comp, c) if Resource::Section::LayerComps.visibility_captured?(comp)
|
53
|
+
set_position(comp, c) if Resource::Section::LayerComps.position_captured?(comp)
|
52
54
|
|
53
|
-
c
|
54
|
-
.metadata
|
55
|
-
.data[:layer_comp]['layerSettings'].each do |l|
|
56
|
-
enabled = l['enab'] if l.has_key?('enab')
|
57
|
-
break if l['compList'].include?(id)
|
58
|
-
end
|
59
|
-
|
60
|
-
c.force_visible = enabled
|
61
|
-
filter_for_comp!(id, c) if c.group?
|
55
|
+
filter_for_comp!(comp, c) if c.group?
|
62
56
|
end
|
63
57
|
end
|
58
|
+
|
59
|
+
def set_visibility(comp, c)
|
60
|
+
visible = true
|
61
|
+
|
62
|
+
c
|
63
|
+
.metadata
|
64
|
+
.data[:layer_comp]['layerSettings'].each do |l|
|
65
|
+
visible = l['enab'] if l.has_key?('enab')
|
66
|
+
break if l['compList'].include?(comp[:id])
|
67
|
+
end
|
68
|
+
|
69
|
+
c.force_visible = visible
|
70
|
+
end
|
71
|
+
|
72
|
+
def set_position(comp, c)
|
73
|
+
x = 0
|
74
|
+
y = 0
|
75
|
+
|
76
|
+
c
|
77
|
+
.metadata
|
78
|
+
.data[:layer_comp]['layerSettings'].each do |l|
|
79
|
+
next unless l.has_key?('Ofst')
|
80
|
+
|
81
|
+
x = l['Ofst']['Hrzn']
|
82
|
+
y = l['Ofst']['Vrtc']
|
83
|
+
break if l['compList'].include?(comp[:id])
|
84
|
+
end
|
85
|
+
|
86
|
+
c.left += x
|
87
|
+
c.top += y
|
88
|
+
end
|
64
89
|
end
|
65
90
|
end
|
66
91
|
end
|
@@ -5,6 +5,18 @@ class PSD
|
|
5
5
|
def self.id; 1065; end
|
6
6
|
def self.name; :layer_comps; end
|
7
7
|
|
8
|
+
def self.visibility_captured?(comp)
|
9
|
+
comp[:captured_info] & 0b001 > 0
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.position_captured?(comp)
|
13
|
+
comp[:captured_info] & 0b010 > 0
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.appearance_captured?(comp)
|
17
|
+
comp[:captured_info] & 0b100 > 0
|
18
|
+
end
|
19
|
+
|
8
20
|
def parse
|
9
21
|
# Descriptor version
|
10
22
|
@file.seek 4, IO::SEEK_CUR
|
data/lib/psd/version.rb
CHANGED
data/psd.gemspec
CHANGED
@@ -28,8 +28,5 @@ Gem::Specification.new do |gem|
|
|
28
28
|
gem.add_development_dependency 'rspec'
|
29
29
|
gem.add_development_dependency 'guard'
|
30
30
|
gem.add_development_dependency 'guard-rspec'
|
31
|
-
|
32
|
-
if RUBY_PLATFORM =~ /darwin/
|
33
|
-
gem.add_development_dependency 'rb-fsevent', '~> 0.9'
|
34
|
-
end
|
31
|
+
gem.add_development_dependency 'rb-fsevent', '~> 0.9'
|
35
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: psd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan LeFevre
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|