rszr 0.4.0 → 0.8.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/README.md +129 -12
- data/Rakefile +6 -0
- data/ext/rszr/errors.c +68 -0
- data/ext/rszr/errors.h +15 -0
- data/ext/rszr/extconf.rb +18 -0
- data/ext/rszr/image.c +482 -0
- data/ext/rszr/image.h +12 -0
- data/ext/rszr/rszr.c +17 -0
- data/ext/rszr/rszr.h +11 -0
- data/lib/rszr/batch_transformation.rb +24 -0
- data/lib/rszr/buffered.rb +25 -0
- data/lib/rszr/identification.rb +60 -0
- data/lib/rszr/image.rb +151 -98
- data/lib/rszr/image_processing.rb +82 -0
- data/lib/rszr/orientation.rb +107 -0
- data/lib/rszr/stream.rb +61 -0
- data/lib/rszr/version.rb +1 -1
- data/lib/rszr.rb +21 -7
- metadata +27 -114
- data/lib/rszr/base.rb +0 -29
- data/lib/rszr/errors.rb +0 -42
- data/lib/rszr/handle.rb +0 -37
- data/lib/rszr/lib.rb +0 -73
- data/lib/rszr/lock.rb +0 -23
metadata
CHANGED
@@ -1,131 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rszr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthias Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.9'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.9'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: byebug
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: simplecov
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: gd2-ffij
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: mini_magick
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
11
|
+
date: 2021-10-08 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
111
13
|
description: Fast image resizer - do one thing and do it fast.
|
112
14
|
email:
|
113
15
|
- mtgrosser@gmx.net
|
114
16
|
executables: []
|
115
|
-
extensions:
|
17
|
+
extensions:
|
18
|
+
- ext/rszr/extconf.rb
|
116
19
|
extra_rdoc_files: []
|
117
20
|
files:
|
21
|
+
- lib/rszr/batch_transformation.rb
|
22
|
+
- lib/rszr/buffered.rb
|
23
|
+
- lib/rszr/identification.rb
|
24
|
+
- lib/rszr/image.rb
|
25
|
+
- lib/rszr/image_processing.rb
|
26
|
+
- lib/rszr/orientation.rb
|
27
|
+
- lib/rszr/stream.rb
|
28
|
+
- lib/rszr/version.rb
|
29
|
+
- lib/rszr.rb
|
30
|
+
- ext/rszr/extconf.rb
|
31
|
+
- ext/rszr/errors.h
|
32
|
+
- ext/rszr/image.h
|
33
|
+
- ext/rszr/rszr.h
|
34
|
+
- ext/rszr/errors.c
|
35
|
+
- ext/rszr/image.c
|
36
|
+
- ext/rszr/rszr.c
|
118
37
|
- LICENSE
|
119
38
|
- README.md
|
120
39
|
- Rakefile
|
121
|
-
- lib/rszr.rb
|
122
|
-
- lib/rszr/base.rb
|
123
|
-
- lib/rszr/errors.rb
|
124
|
-
- lib/rszr/handle.rb
|
125
|
-
- lib/rszr/image.rb
|
126
|
-
- lib/rszr/lib.rb
|
127
|
-
- lib/rszr/lock.rb
|
128
|
-
- lib/rszr/version.rb
|
129
40
|
homepage: https://github.com/mtgrosser/rszr
|
130
41
|
licenses:
|
131
42
|
- MIT
|
@@ -134,19 +45,21 @@ post_install_message:
|
|
134
45
|
rdoc_options: []
|
135
46
|
require_paths:
|
136
47
|
- lib
|
48
|
+
- ext
|
137
49
|
required_ruby_version: !ruby/object:Gem::Requirement
|
138
50
|
requirements:
|
139
|
-
- -
|
51
|
+
- - '>='
|
140
52
|
- !ruby/object:Gem::Version
|
141
53
|
version: '0'
|
142
54
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
55
|
requirements:
|
144
|
-
- -
|
56
|
+
- - '>='
|
145
57
|
- !ruby/object:Gem::Version
|
146
58
|
version: '0'
|
147
|
-
requirements:
|
59
|
+
requirements:
|
60
|
+
- imlib2
|
148
61
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.
|
62
|
+
rubygems_version: 2.0.14.1
|
150
63
|
signing_key:
|
151
64
|
specification_version: 4
|
152
65
|
summary: Fast image resizer
|
data/lib/rszr/base.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
module Rszr
|
2
|
-
module Base
|
3
|
-
|
4
|
-
def self.included(base)
|
5
|
-
Rszr::Lib.delegate(base)
|
6
|
-
Rszr::Lib.delegate(base.singleton_class)
|
7
|
-
base.include(Lock)
|
8
|
-
base.extend(Lock)
|
9
|
-
end
|
10
|
-
|
11
|
-
protected
|
12
|
-
|
13
|
-
def handle
|
14
|
-
@handle
|
15
|
-
end
|
16
|
-
|
17
|
-
def ptr
|
18
|
-
@handle.ptr
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def assert_valid_keys(hsh, *valid_keys)
|
24
|
-
if unknown_key = (hsh.keys - valid_keys).first
|
25
|
-
raise ArgumentError.new("Unknown key: #{unknown_key.inspect}. Valid keys are: #{valid_keys.map(&:inspect).join(', ')}")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/lib/rszr/errors.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
module Rszr
|
2
|
-
class Error < StandardError; end
|
3
|
-
|
4
|
-
class ErrorWithMessage < Error
|
5
|
-
MESSAGES = [nil,
|
6
|
-
'File does not exist',
|
7
|
-
'File is a directory',
|
8
|
-
'Read permission denied',
|
9
|
-
'Unsupported format',
|
10
|
-
'Path too long',
|
11
|
-
'Non-existant path component',
|
12
|
-
'Path component is not a directory',
|
13
|
-
'Path outside address space',
|
14
|
-
'Too many symbolic links',
|
15
|
-
'Out of memory',
|
16
|
-
'Out of file descriptors',
|
17
|
-
'Write permission denied',
|
18
|
-
'Out of disk space',
|
19
|
-
'Unknown error']
|
20
|
-
|
21
|
-
attr_reader :ptr
|
22
|
-
|
23
|
-
def initialize
|
24
|
-
@ptr = Fiddle::Pointer.malloc(Rszr::Lib.sizeof('Imlib_Load_Error'))
|
25
|
-
end
|
26
|
-
|
27
|
-
def error?
|
28
|
-
return if ptr.null?
|
29
|
-
0 != ptr[0]
|
30
|
-
end
|
31
|
-
|
32
|
-
def message
|
33
|
-
MESSAGES[ptr[0]] unless ptr.null?
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
class FileNotFound < Error; end
|
39
|
-
class LoadError < ErrorWithMessage; end
|
40
|
-
class TransformationError < Error; end
|
41
|
-
class SaveError < ErrorWithMessage; end
|
42
|
-
end
|
data/lib/rszr/handle.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
module Rszr
|
2
|
-
class Handle
|
3
|
-
attr_reader :ptr, :klass
|
4
|
-
|
5
|
-
def initialize(obj, ptr)
|
6
|
-
@ptr = ptr
|
7
|
-
raise ArgumentError, "#{obj.class.inspect} does not define the finalize class method" unless obj.class.respond_to?(:finalize, true)
|
8
|
-
@klass = obj.class
|
9
|
-
ObjectSpace.define_finalizer(obj, self)
|
10
|
-
end
|
11
|
-
|
12
|
-
def replace!(other_ptr)
|
13
|
-
raise ArgumentError, "Cannot replace pointer with itself" if ptr == other_ptr
|
14
|
-
finalize!
|
15
|
-
@ptr = other_ptr
|
16
|
-
end
|
17
|
-
|
18
|
-
def finalize!(*args)
|
19
|
-
#puts "Finalizing #{args.inspect} #{ptr.inspect}"
|
20
|
-
if !ptr.null? && klass
|
21
|
-
#puts " calling #{args.inspect}"
|
22
|
-
klass.send(:finalize, ptr)
|
23
|
-
@ptr = Fiddle::Pointer.new(0)
|
24
|
-
#else
|
25
|
-
#puts " skipping #{args.inspect}"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def release!
|
30
|
-
replace! Fiddle::Pointer.new(0)
|
31
|
-
end
|
32
|
-
|
33
|
-
def call(object_id)
|
34
|
-
finalize!(object_id)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
data/lib/rszr/lib.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
module Rszr
|
2
|
-
|
3
|
-
module Lib
|
4
|
-
extend Fiddle::Importer
|
5
|
-
|
6
|
-
library, message = case RbConfig::CONFIG['arch']
|
7
|
-
when /darwin/ then ['libImlib2.dylib', 'brew install imlib2']
|
8
|
-
when /mswin/, /cygwin/ then ['imlib2.dll', nil]
|
9
|
-
else
|
10
|
-
['libImlib2.so', "yum install imlib2 imlib2-devel\napt-get install libimlib2 libimlib2-dev"]
|
11
|
-
end
|
12
|
-
|
13
|
-
begin
|
14
|
-
dlload library
|
15
|
-
rescue Fiddle::DLError => e
|
16
|
-
print "\n The Imlib2 library could not be loaded. "
|
17
|
-
puts "You can install it using\n\n #{message}\n" if message
|
18
|
-
puts ''
|
19
|
-
raise e
|
20
|
-
end
|
21
|
-
|
22
|
-
typealias 'Imlib_Image', 'void *'
|
23
|
-
typealias 'Imlib_Context', 'void *'
|
24
|
-
typealias 'enum', 'int'
|
25
|
-
typealias 'Imlib_Load_Error', 'enum'
|
26
|
-
|
27
|
-
#typedef void *Imlib_Color_Modifier;
|
28
|
-
#typedef void *Imlib_Updates;
|
29
|
-
#typedef void *Imlib_Font;
|
30
|
-
#typedef void *Imlib_Color_Range;
|
31
|
-
#typedef void *Imlib_Filter;
|
32
|
-
#typedef struct _imlib_border Imlib_Border;
|
33
|
-
#typedef struct _imlib_color Imlib_Color;
|
34
|
-
#typedef void *ImlibPolygon;
|
35
|
-
|
36
|
-
extern 'int imlib_get_cache_size()'
|
37
|
-
extern 'void imlib_set_cache_size(int)'
|
38
|
-
|
39
|
-
extern 'Imlib_Image imlib_load_image(const char *)'
|
40
|
-
extern 'Imlib_Image imlib_load_image_without_cache(const char *)'
|
41
|
-
extern 'Imlib_Image imlib_load_image_with_error_return(const char *, Imlib_Load_Error *)'
|
42
|
-
extern 'Imlib_Image imlib_create_image(int, int)'
|
43
|
-
extern 'void imlib_context_set_image(Imlib_Image)'
|
44
|
-
extern 'int imlib_image_get_width()'
|
45
|
-
extern 'int imlib_image_get_height()'
|
46
|
-
extern 'void imlib_context_set_anti_alias(char)'
|
47
|
-
|
48
|
-
# source_x, source_y, source_width, source_height, destination_width, destination_height
|
49
|
-
extern 'Imlib_Image imlib_create_cropped_scaled_image(int, int, int, int, int, int)'
|
50
|
-
# x, y, width, height
|
51
|
-
extern 'Imlib_Image imlib_create_cropped_image(int, int, int, int)'
|
52
|
-
|
53
|
-
extern 'char * imlib_image_format()'
|
54
|
-
extern 'void imlib_image_set_format(const char *)'
|
55
|
-
extern 'void imlib_save_image(const char *)'
|
56
|
-
extern 'void imlib_save_image_with_error_return(const char *, Imlib_Load_Error *)'
|
57
|
-
|
58
|
-
extern 'void imlib_free_image()'
|
59
|
-
extern 'void imlib_free_image_and_decache()'
|
60
|
-
|
61
|
-
def self.delegate(base)
|
62
|
-
Lib.methods.grep(/\Aimlib_/).each do |method|
|
63
|
-
line_no = __LINE__; str = %Q{
|
64
|
-
def #{method}(*args, &block)
|
65
|
-
Lib.#{method}(*args, &block)
|
66
|
-
end
|
67
|
-
}
|
68
|
-
base.class_eval(str, __FILE__, line_no)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
73
|
-
end
|
data/lib/rszr/lock.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Rszr
|
2
|
-
@mutex = Mutex.new
|
3
|
-
|
4
|
-
class << self
|
5
|
-
|
6
|
-
def with_lock(&block) # :nodoc:
|
7
|
-
mutex.synchronize(&block)
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def mutex
|
13
|
-
@mutex
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
module Lock # :nodoc:
|
18
|
-
def with_lock(&block)
|
19
|
-
Rszr.with_lock(&block)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|