psd 0.4.1 → 0.4.2
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/README.md +2 -0
- data/lib/psd/image_exports/png.rb +2 -2
- data/lib/psd/layer.rb +6 -5
- data/lib/psd/layer_info/typetool.rb +29 -13
- data/lib/psd/layer_mask.rb +1 -1
- data/lib/psd/resources/layer_comps.rb +11 -1
- data/lib/psd/version.rb +1 -1
- data/psd.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db9f14cd10de0296d8511ad83cf909f20519d3ca
|
4
|
+
data.tar.gz: 0246042fd4037c9466a0cde4f215ebe411d529e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e05a52e512a93122255bda14fb3cbb329b75dd5e7be620eed20e7bccf9f109e1ea969b5430383e7910313a22afa6e4e2842631182fd11d4925d998f2a52bfa44
|
7
|
+
data.tar.gz: 82ebbb3fcee334bc73f039dde683c635724cf674f6b392f9523dd30cbf43d17ec54d04f4c2eeb360b93c7f09f781812abb5db30363efc35e6cf2bdcb2245e879
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'oily_png'
|
2
2
|
|
3
3
|
class PSD::Image
|
4
4
|
module Export
|
@@ -8,7 +8,7 @@ class PSD::Image
|
|
8
8
|
# data.
|
9
9
|
def to_png
|
10
10
|
PSD.logger.debug "Beginning PNG export"
|
11
|
-
png = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT)
|
11
|
+
png = ChunkyPNG::Image.new(width.to_i, height.to_i, ChunkyPNG::Color::TRANSPARENT)
|
12
12
|
|
13
13
|
i = 0
|
14
14
|
height.times do |y|
|
data/lib/psd/layer.rb
CHANGED
@@ -287,8 +287,10 @@ class PSD
|
|
287
287
|
# not UTF-8. Luckily Ruby kicks ass at character conversion.
|
288
288
|
def parse_legacy_layer_name
|
289
289
|
@legacy_name_start = @file.tell
|
290
|
-
|
291
|
-
|
290
|
+
|
291
|
+
len = Util.pad4 @file.read(1).bytes.to_a[0]
|
292
|
+
@legacy_name = @file.read_string(len)
|
293
|
+
|
292
294
|
@legacy_name_end = @file.tell
|
293
295
|
end
|
294
296
|
|
@@ -302,7 +304,7 @@ class PSD
|
|
302
304
|
@file.seek 4, IO::SEEK_CUR
|
303
305
|
|
304
306
|
# Key, very important
|
305
|
-
key = @file.
|
307
|
+
key = @file.read_string(4)
|
306
308
|
@info_keys << key
|
307
309
|
|
308
310
|
length = Util.pad2 @file.read_int
|
@@ -329,14 +331,13 @@ class PSD
|
|
329
331
|
end
|
330
332
|
|
331
333
|
if !info_parsed
|
332
|
-
PSD.logger.debug "
|
334
|
+
PSD.logger.debug "Skipping: key = #{key}, pos = #{@file.tell}, length = #{length}"
|
333
335
|
@file.seek pos + length
|
334
336
|
end
|
335
337
|
|
336
338
|
@file.seek pos + length if @file.tell != (pos + length)
|
337
339
|
end
|
338
340
|
|
339
|
-
# puts "Layer = #{name}, Parsed = #{@info_keys - PSD.keys.uniq}, Unparsed = #{PSD.keys.uniq - @info_keys}"
|
340
341
|
@extra_data_end = @file.tell
|
341
342
|
end
|
342
343
|
|
@@ -71,30 +71,46 @@ class PSD
|
|
71
71
|
|
72
72
|
# Return all font sizes for this layer.
|
73
73
|
def sizes
|
74
|
-
return [] if engine_data.nil?
|
75
|
-
|
76
|
-
r.StyleSheet.StyleSheetData.FontSize
|
77
|
-
end.uniq
|
74
|
+
return [] if engine_data.nil? || !styles.has_key?('FontSize')
|
75
|
+
styles['FontSize'].uniq
|
78
76
|
end
|
79
77
|
|
80
|
-
# Return all colors used for text in this layer. The colors are returned in
|
78
|
+
# Return all colors used for text in this layer. The colors are returned in RGBA
|
81
79
|
# format as an array of arrays.
|
82
80
|
#
|
83
|
-
# => [[255, 0, 0], [0, 0, 255]]
|
81
|
+
# => [[255, 0, 0, 255], [0, 0, 255, 255]]
|
84
82
|
def colors
|
85
|
-
return [] if engine_data.nil?
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
91
|
-
end.uniq
|
83
|
+
return [] if engine_data.nil? || !styles.has_key?('FillColor')
|
84
|
+
styles['FillColor'].map { |s|
|
85
|
+
values = s['Values'].map { |v| (v * 255).round }
|
86
|
+
values << values.shift # Change ARGB -> RGBA for consistency
|
87
|
+
}.uniq
|
92
88
|
end
|
93
89
|
|
94
90
|
def engine_data
|
95
91
|
@data[:engine_data]
|
96
92
|
end
|
97
93
|
|
94
|
+
def styles
|
95
|
+
return {} if engine_data.nil?
|
96
|
+
|
97
|
+
@styles ||= (
|
98
|
+
data = engine_data.EngineDict.StyleRun.RunArray.map do |r|
|
99
|
+
r.StyleSheet.StyleSheetData
|
100
|
+
end
|
101
|
+
|
102
|
+
Hash[data.reduce({}) { |m, o|
|
103
|
+
o.each do |k, v|
|
104
|
+
(m[k] ||= []) << v
|
105
|
+
end
|
106
|
+
|
107
|
+
m
|
108
|
+
}.map { |k, v|
|
109
|
+
[k, v.uniq]
|
110
|
+
}]
|
111
|
+
)
|
112
|
+
end
|
113
|
+
|
98
114
|
def parser
|
99
115
|
@parser ||= PSD::EngineData.new(@data[:text]['EngineData'])
|
100
116
|
end
|
data/lib/psd/layer_mask.rb
CHANGED
@@ -8,7 +8,17 @@ class PSD
|
|
8
8
|
def parse
|
9
9
|
# Descriptor version
|
10
10
|
@file.seek 4, IO::SEEK_CUR
|
11
|
-
|
11
|
+
|
12
|
+
@data = Descriptor.new(@file).parse
|
13
|
+
@resource.data = self
|
14
|
+
end
|
15
|
+
|
16
|
+
def names
|
17
|
+
@data['list'].map { |c| c['Nm '] }
|
18
|
+
end
|
19
|
+
|
20
|
+
def [](val)
|
21
|
+
@data[val]
|
12
22
|
end
|
13
23
|
end
|
14
24
|
end
|
data/lib/psd/version.rb
CHANGED
data/psd.gemspec
CHANGED
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: 0.4.
|
4
|
+
version: 0.4.2
|
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: 2013-08-
|
12
|
+
date: 2013-08-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bindata
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: oily_png
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - '>='
|