apple_png 0.1.3 → 0.2.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 +7 -0
- data/ext/apple_png/apple_png.c +30 -4
- metadata +8 -10
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ee347d852329d08bb54a22f38a656b74f8abffac
|
4
|
+
data.tar.gz: 2a70ad73f16d77366845d179df821116cac8f3ed
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eaff6ca90ba20fb20dc3d779fa3f0d941c933f7f774cbd36e2a18c6b4c682b18e470825e31b532fa8e2dde89ba4758227ea8e60213097f840261ef927a9f2053
|
7
|
+
data.tar.gz: e42c0562ef5a25d983c07cd12dc7876e7e5c4440ec514f6cfc93cb605cc9f7cc1be1c0a616a76c70f89aaa4643590a132a72955b2fbef740e4adbc1d1e3b83be
|
data/ext/apple_png/apple_png.c
CHANGED
@@ -14,6 +14,24 @@
|
|
14
14
|
#define APPLE_PNG_ZLIB_VERSION_ERROR Z_VERSION_ERROR
|
15
15
|
#define APPLE_PNG_NO_MEM_ERROR Z_MEM_ERROR
|
16
16
|
|
17
|
+
#define N_VALID_CHUNK_NAMES 14
|
18
|
+
static const char *VALID_CHUNK_NAMES[] = {
|
19
|
+
"IHDR",
|
20
|
+
"PLTE",
|
21
|
+
"IDAT",
|
22
|
+
"IEND",
|
23
|
+
"cHRM",
|
24
|
+
"gAMA",
|
25
|
+
"sBIT",
|
26
|
+
"bKGD",
|
27
|
+
"hIST",
|
28
|
+
"tRNS",
|
29
|
+
"pHYs",
|
30
|
+
"tIME",
|
31
|
+
"tEXt",
|
32
|
+
"zTXt"
|
33
|
+
};
|
34
|
+
|
17
35
|
/* calculate how many scanlines an adam7 interlaced png will result in */
|
18
36
|
static uint32_t interlaced_count_scanlines(uint32_t width, uint32_t height) {
|
19
37
|
uint32_t pass[7];
|
@@ -238,7 +256,18 @@ static int readPngChunks(VALUE self, const char *oldPNG, size_t oldPngLength, dy
|
|
238
256
|
const char *chunkCRC_raw = &oldPNG[cursor + 8 + chunkLength];
|
239
257
|
cursor += chunkLength + 12;
|
240
258
|
|
241
|
-
|
259
|
+
int isValidChunkName = 0;
|
260
|
+
for (unsigned int i = 0; i < N_VALID_CHUNK_NAMES; i++) {
|
261
|
+
if (strncmp(chunkType, VALID_CHUNK_NAMES[i], 4) == 0) {
|
262
|
+
isValidChunkName = 1;
|
263
|
+
break;
|
264
|
+
}
|
265
|
+
}
|
266
|
+
|
267
|
+
if (!isValidChunkName) {
|
268
|
+
/* filter out Apple-specific chunks such as CgBI and iDOT */
|
269
|
+
continue;
|
270
|
+
} else if (strncmp(chunkType, "IHDR", 4) == 0) {
|
242
271
|
/* extract dimensions from header */
|
243
272
|
width = PNG_BYTES2UINT(&chunkData[0]);
|
244
273
|
height = PNG_BYTES2UINT(&chunkData[4]);
|
@@ -249,9 +278,6 @@ static int readPngChunks(VALUE self, const char *oldPNG, size_t oldPngLength, dy
|
|
249
278
|
/* collect pixel data to process it once an IEND chunk appears */
|
250
279
|
dyn_arr_append(applePngCompressedPixelData, chunkData, chunkLength);
|
251
280
|
continue;
|
252
|
-
} else if (strncmp(chunkType, "CgBI", 4) == 0) {
|
253
|
-
/* don't write CgBI chunks to the output png */
|
254
|
-
continue;
|
255
281
|
} else if (strncmp(chunkType, "IEND", 4) == 0) {
|
256
282
|
/* all png data has been procssed, now flip the color bytes */
|
257
283
|
unsigned char *decompressedPixelData, *standardPngCompressedPixelData;
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apple_png
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Marvin Killing
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-12-23 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Converts the Apple PNG format used in iOS packages to standard PNG
|
15
14
|
email: marvinkilling@gmail.com
|
@@ -18,33 +17,32 @@ extensions:
|
|
18
17
|
- ext/apple_png/extconf.rb
|
19
18
|
extra_rdoc_files: []
|
20
19
|
files:
|
21
|
-
- lib/apple_png.rb
|
22
20
|
- ext/apple_png/apple_png.c
|
23
21
|
- ext/apple_png/dyn_arr.h
|
24
22
|
- ext/apple_png/extconf.rb
|
23
|
+
- lib/apple_png.rb
|
25
24
|
homepage: http://rubygems.org/gems/apple_png
|
26
25
|
licenses: []
|
26
|
+
metadata: {}
|
27
27
|
post_install_message:
|
28
28
|
rdoc_options: []
|
29
29
|
require_paths:
|
30
30
|
- lib
|
31
31
|
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
-
none: false
|
33
32
|
requirements:
|
34
|
-
- -
|
33
|
+
- - ">="
|
35
34
|
- !ruby/object:Gem::Version
|
36
35
|
version: '0'
|
37
36
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
|
-
none: false
|
39
37
|
requirements:
|
40
|
-
- -
|
38
|
+
- - ">="
|
41
39
|
- !ruby/object:Gem::Version
|
42
40
|
version: '0'
|
43
41
|
requirements: []
|
44
42
|
rubyforge_project:
|
45
|
-
rubygems_version:
|
43
|
+
rubygems_version: 2.4.6
|
46
44
|
signing_key:
|
47
|
-
specification_version:
|
45
|
+
specification_version: 4
|
48
46
|
summary: Converts the Apple PNG format to standard PNG
|
49
47
|
test_files: []
|
50
48
|
has_rdoc:
|