rmagick 2.13.2 → 2.13.3
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 +15 -0
- data/LICENSE +20 -0
- data/README +15 -0
- data/README.rc +231 -0
- data/Rakefile +40 -0
- data/doc/comtasks.html +2 -2
- data/doc/constants.html +2 -2
- data/doc/draw.html +2 -2
- data/doc/ex/PreserveAspectRatio.rb +0 -0
- data/doc/ex/ViewBox.rb +0 -0
- data/doc/ex/adaptive_threshold.rb +0 -0
- data/doc/ex/add_noise.rb +0 -0
- data/doc/ex/affine.rb +0 -0
- data/doc/ex/affine_transform.rb +0 -0
- data/doc/ex/arc.rb +0 -0
- data/doc/ex/arcpath.rb +0 -0
- data/doc/ex/average.rb +0 -0
- data/doc/ex/axes.rb +0 -0
- data/doc/ex/bilevel_channel.rb +0 -0
- data/doc/ex/blur_image.rb +0 -0
- data/doc/ex/border.rb +0 -0
- data/doc/ex/bounding_box.rb +0 -0
- data/doc/ex/cbezier1.rb +0 -0
- data/doc/ex/cbezier2.rb +0 -0
- data/doc/ex/cbezier3.rb +0 -0
- data/doc/ex/cbezier4.rb +0 -0
- data/doc/ex/cbezier5.rb +0 -0
- data/doc/ex/cbezier6.rb +0 -0
- data/doc/ex/channel.rb +0 -0
- data/doc/ex/charcoal.rb +0 -0
- data/doc/ex/chop.rb +0 -0
- data/doc/ex/circle.rb +0 -0
- data/doc/ex/clip_path.rb +0 -0
- data/doc/ex/coalesce.rb +0 -0
- data/doc/ex/color_fill_to_border.rb +0 -0
- data/doc/ex/color_floodfill.rb +0 -0
- data/doc/ex/color_histogram.rb +0 -0
- data/doc/ex/color_reset.rb +0 -0
- data/doc/ex/colorize.rb +0 -0
- data/doc/ex/colors.rb +0 -0
- data/doc/ex/composite.rb +0 -0
- data/doc/ex/composite_layers.rb +0 -0
- data/doc/ex/contrast.rb +0 -0
- data/doc/ex/crop.rb +0 -0
- data/doc/ex/cycle_colormap.rb +0 -0
- data/doc/ex/drawcomp.rb +0 -0
- data/doc/ex/drop_shadow.rb +0 -0
- data/doc/ex/edge.rb +0 -0
- data/doc/ex/ellipse.rb +0 -0
- data/doc/ex/emboss.rb +0 -0
- data/doc/ex/enhance.rb +0 -0
- data/doc/ex/equalize.rb +0 -0
- data/doc/ex/evenodd.rb +0 -0
- data/doc/ex/flatten_images.rb +0 -0
- data/doc/ex/flip.rb +0 -0
- data/doc/ex/flop.rb +0 -0
- data/doc/ex/fonts.rb +0 -0
- data/doc/ex/frame.rb +0 -0
- data/doc/ex/gaussian_blur.rb +0 -0
- data/doc/ex/get_pixels.rb +0 -0
- data/doc/ex/gradientfill.rb +0 -0
- data/doc/ex/grav.rb +0 -0
- data/doc/ex/gravity.rb +0 -0
- data/doc/ex/hatchfill.rb +0 -0
- data/doc/ex/images/logo400x83.gif +0 -0
- data/doc/ex/implode.rb +0 -0
- data/doc/ex/level.rb +0 -0
- data/doc/ex/line.rb +0 -0
- data/doc/ex/matte_fill_to_border.rb +0 -0
- data/doc/ex/matte_floodfill.rb +0 -0
- data/doc/ex/matte_replace.rb +0 -0
- data/doc/ex/median_filter.rb +0 -0
- data/doc/ex/modulate.rb +0 -0
- data/doc/ex/mono.rb +0 -0
- data/doc/ex/morph.rb +0 -0
- data/doc/ex/mosaic.rb +0 -0
- data/doc/ex/motion_blur.rb +0 -0
- data/doc/ex/negate.rb +0 -0
- data/doc/ex/nested_rvg.rb +0 -0
- data/doc/ex/nonzero.rb +0 -0
- data/doc/ex/normalize.rb +0 -0
- data/doc/ex/oil_paint.rb +0 -0
- data/doc/ex/opacity.rb +0 -0
- data/doc/ex/ordered_dither.rb +0 -0
- data/doc/ex/path.rb +0 -0
- data/doc/ex/pattern1.rb +0 -0
- data/doc/ex/pattern2.rb +0 -0
- data/doc/ex/polygon.rb +0 -0
- data/doc/ex/polyline.rb +0 -0
- data/doc/ex/preview.rb +0 -0
- data/doc/ex/qbezierpath.rb +0 -0
- data/doc/ex/quantize-m.rb +0 -0
- data/doc/ex/radial_blur.rb +0 -0
- data/doc/ex/raise.rb +0 -0
- data/doc/ex/rectangle.rb +0 -0
- data/doc/ex/reduce_noise.rb +0 -0
- data/doc/ex/roll.rb +0 -0
- data/doc/ex/rotate.rb +0 -0
- data/doc/ex/rotate_f.rb +0 -0
- data/doc/ex/roundrect.rb +0 -0
- data/doc/ex/rubyname.rb +0 -0
- data/doc/ex/rvg_linecap.rb +0 -0
- data/doc/ex/rvg_linejoin.rb +0 -0
- data/doc/ex/rvg_opacity.rb +0 -0
- data/doc/ex/rvg_stroke_dasharray.rb +0 -0
- data/doc/ex/segment.rb +0 -0
- data/doc/ex/shade.rb +0 -0
- data/doc/ex/shave.rb +0 -0
- data/doc/ex/shear.rb +0 -0
- data/doc/ex/sketch.rb +0 -0
- data/doc/ex/skewx.rb +0 -0
- data/doc/ex/skewy.rb +0 -0
- data/doc/ex/smile.rb +0 -0
- data/doc/ex/solarize.rb +0 -0
- data/doc/ex/spread.rb +0 -0
- data/doc/ex/stegano.rb +0 -0
- data/doc/ex/stroke_dasharray.rb +0 -0
- data/doc/ex/stroke_fill.rb +0 -0
- data/doc/ex/stroke_linecap.rb +0 -0
- data/doc/ex/stroke_linejoin.rb +0 -0
- data/doc/ex/stroke_width.rb +0 -0
- data/doc/ex/swirl.rb +0 -0
- data/doc/ex/text.rb +0 -0
- data/doc/ex/text_align.rb +0 -0
- data/doc/ex/text_antialias.rb +0 -0
- data/doc/ex/text_undercolor.rb +0 -0
- data/doc/ex/texture_fill_to_border.rb +0 -0
- data/doc/ex/texture_floodfill.rb +0 -0
- data/doc/ex/texturefill.rb +0 -0
- data/doc/ex/threshold.rb +0 -0
- data/doc/ex/to_blob.rb +0 -0
- data/doc/ex/translate.rb +0 -0
- data/doc/ex/transparent.rb +0 -0
- data/doc/ex/unsharp_mask.rb +0 -0
- data/doc/ex/wave.rb +0 -0
- data/doc/ilist.html +2 -2
- data/doc/image1.html +2 -2
- data/doc/image2.html +2 -2
- data/doc/image3.html +2 -2
- data/doc/imageattrs.html +2 -2
- data/doc/imusage.html +2 -2
- data/doc/index.html +3 -3
- data/doc/info.html +2 -2
- data/doc/magick.html +2 -2
- data/doc/optequiv.html +2 -2
- data/doc/rvg.html +2 -2
- data/doc/rvgclip.html +2 -2
- data/doc/rvggroup.html +2 -2
- data/doc/rvgimage.html +2 -2
- data/doc/rvgpattern.html +2 -2
- data/doc/rvgshape.html +2 -2
- data/doc/rvgstyle.html +2 -2
- data/doc/rvgtext.html +2 -2
- data/doc/rvgtspan.html +2 -2
- data/doc/rvgtut.html +2 -2
- data/doc/rvguse.html +2 -2
- data/doc/rvgxform.html +2 -2
- data/doc/struct.html +2 -2
- data/doc/usage.html +2 -2
- data/examples/crop_with_gravity.rb +0 -0
- data/examples/demo.rb +0 -0
- data/examples/describe.rb +0 -0
- data/examples/rotating_text.rb +0 -0
- data/ext/RMagick/extconf.rb +1 -9
- data/ext/RMagick/rmimage.c +1 -1
- data/lib/rmagick/version.rb +3 -0
- data/lib/rvg/to_c.rb +103 -0
- data/pkg/rmagick-2.13.3.rc1.gem +0 -0
- data/rmagick.gemspec +7 -4
- data/test/Draw.rb +121 -0
- data/test/Image1.rb +763 -0
- data/test/Image2.rb +1308 -0
- data/test/Image3.rb +1002 -0
- data/test/ImageList1.rb +808 -0
- data/test/ImageList2.rb +389 -0
- data/test/Image_attributes.rb +683 -0
- data/test/Import_Export.rb +116 -0
- data/test/Info.rb +349 -0
- data/test/Magick.rb +364 -0
- data/test/Pixel.rb +120 -0
- data/test/Preview.rb +62 -0
- data/test/all_basic.rb +42 -0
- data/test/cmyk.icm +0 -0
- data/test/srgb.icm +0 -0
- metadata +340 -318
- data/README.html +0 -10
- data/ext/RMagick/MANIFEST +0 -358
data/lib/rvg/to_c.rb
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
class Magick::RVG
|
|
2
|
+
|
|
3
|
+
private
|
|
4
|
+
def header_text(pgm, name)
|
|
5
|
+
pgm.puts <<"END_HEADER"
|
|
6
|
+
/*
|
|
7
|
+
Version: #{Magick_version}
|
|
8
|
+
|
|
9
|
+
gcc `Magick-config --cflags --cppflags` #{name}.c `Magick-config --ldflags --libs` -o #{name}
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
#include <stdio.h>
|
|
13
|
+
#include <time.h>
|
|
14
|
+
#include <sys/types.h>
|
|
15
|
+
#include <string.h>
|
|
16
|
+
#include <stdlib.h>
|
|
17
|
+
#include <magick/api.h>
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
int main(int argc,char **argv)
|
|
21
|
+
{
|
|
22
|
+
Image *image;
|
|
23
|
+
ImageInfo *info;
|
|
24
|
+
DrawInfo *draw;
|
|
25
|
+
const char * const primitives =
|
|
26
|
+
END_HEADER
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def list_primitives(pgm, gc)
|
|
30
|
+
primitives = gc.inspect.split("\n")
|
|
31
|
+
indent = 0
|
|
32
|
+
primitives.each do |cmd|
|
|
33
|
+
indent -= 1 if cmd['pop ']
|
|
34
|
+
pgm.print(' ', (' '*indent), '"', cmd, '\n"', "\n")
|
|
35
|
+
indent += 1 if cmd['push ']
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def trailer_text(pgm, name)
|
|
40
|
+
pgm.puts <<"END_TRAILER"
|
|
41
|
+
;
|
|
42
|
+
|
|
43
|
+
InitializeMagick("#{name}");
|
|
44
|
+
|
|
45
|
+
info = CloneImageInfo(NULL);
|
|
46
|
+
if (!info)
|
|
47
|
+
{
|
|
48
|
+
MagickError(ResourceLimitError,"Unable to allocate ImageInfo",
|
|
49
|
+
"Memory allocation failed");
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
info->size = AcquireMagickMemory(20);
|
|
53
|
+
sprintf(info->size, "%dx%d", #{@width.to_i}, #{@height.to_i});
|
|
54
|
+
|
|
55
|
+
image = AllocateImage(info);
|
|
56
|
+
if (!image)
|
|
57
|
+
{
|
|
58
|
+
MagickError(ResourceLimitError,"Unable to allocate Image",
|
|
59
|
+
"Memory allocation failed");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
SetImage(image, OpaqueOpacity);
|
|
63
|
+
|
|
64
|
+
draw = CloneDrawInfo(info, NULL);
|
|
65
|
+
CloneString(&(draw->primitive), primitives);
|
|
66
|
+
DrawImage(image, draw);
|
|
67
|
+
|
|
68
|
+
if (image->exception.severity != UndefinedException)
|
|
69
|
+
{
|
|
70
|
+
printf("%s: %s", image->exception.reason, image->exception.description);
|
|
71
|
+
exit(1);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
strcpy(image->filename, "#{name+".gif"}");
|
|
75
|
+
WriteImage(info, image);
|
|
76
|
+
|
|
77
|
+
DestroyDrawInfo(draw);
|
|
78
|
+
DestroyImage(image);
|
|
79
|
+
DestroyImageInfo(info);
|
|
80
|
+
DestroyMagick();
|
|
81
|
+
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
END_TRAILER
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
public
|
|
88
|
+
|
|
89
|
+
# Convert an RVG object to a stand-alone C program
|
|
90
|
+
# suitable for reproducing a bug.
|
|
91
|
+
def to_c(name)
|
|
92
|
+
pgm = File.open(name+".c", "w")
|
|
93
|
+
header_text(pgm, name)
|
|
94
|
+
gc = Draw.new
|
|
95
|
+
add_primitives(gc)
|
|
96
|
+
list_primitives(pgm, gc)
|
|
97
|
+
trailer_text(pgm, name)
|
|
98
|
+
pgm.close
|
|
99
|
+
$stderr.puts "Done"
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end # class Magick::RVG
|
|
103
|
+
|
|
Binary file
|
data/rmagick.gemspec
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
require 'date'
|
|
2
|
+
require './lib/rmagick/version'
|
|
2
3
|
Gem::Specification.new do |s|
|
|
3
4
|
s.name = %q{rmagick}
|
|
4
|
-
s.version =
|
|
5
|
+
s.version = Magick::VERSION
|
|
5
6
|
s.date = Date.today.to_s
|
|
6
7
|
s.summary = %q{Ruby binding to ImageMagick}
|
|
7
8
|
s.description = %q{RMagick is an interface between Ruby and ImageMagick.}
|
|
8
|
-
s.authors = [%q{Tim Hunter}, %q{Omer Bar-or}, %q{Benjamin Thomas}]
|
|
9
|
-
s.
|
|
10
|
-
s.
|
|
9
|
+
s.authors = [%q{Tim Hunter}, %q{Omer Bar-or}, %q{Benjamin Thomas}, %q{Moncef Maiza}]
|
|
10
|
+
s.post_install_message = "Please report any bugs. See https://github.com/gemhome/rmagick/compare/RMagick_2-13-2...master and https://github.com/rmagick/rmagick/issues/18"
|
|
11
|
+
s.email = %q{github@benjaminfleischer.com}
|
|
12
|
+
s.homepage = %q{https://github.com/gemhome/rmagick}
|
|
13
|
+
s.license = 'MIT'
|
|
11
14
|
s.files = Dir.glob('**/*')
|
|
12
15
|
s.bindir = 'bin'
|
|
13
16
|
s.executables = Dir.glob('bin/*').collect {|f| File.basename(f)}
|
data/test/Draw.rb
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
|
|
2
|
+
#! /usr/local/bin/ruby -w
|
|
3
|
+
|
|
4
|
+
require 'RMagick'
|
|
5
|
+
require 'test/unit'
|
|
6
|
+
require 'test/unit/ui/console/testrunner' if !RUBY_VERSION[/^1\.9|^2/]
|
|
7
|
+
|
|
8
|
+
class Magick::Draw
|
|
9
|
+
def self._dummy_img_
|
|
10
|
+
@@_dummy_img_
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class Draw_UT < Test::Unit::TestCase
|
|
15
|
+
|
|
16
|
+
def setup
|
|
17
|
+
@draw = Magick::Draw.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Ensure @@_dummy_img_ class var is working properly
|
|
21
|
+
def test_dummy_img
|
|
22
|
+
# initially this variable is not defined.
|
|
23
|
+
assert_raise(NameError) do
|
|
24
|
+
Magick::Draw._dummy_img_
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# cause it to become defined. save the object id.
|
|
28
|
+
@draw.get_type_metrics("ABCDEF")
|
|
29
|
+
dummy = nil
|
|
30
|
+
assert_nothing_raised do
|
|
31
|
+
dummy = Magick::Draw._dummy_img_
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
assert_instance_of(Magick::Image, dummy)
|
|
35
|
+
|
|
36
|
+
# ensure that it is always the same object
|
|
37
|
+
@draw.get_type_metrics("ABCDEF")
|
|
38
|
+
dummy2 = nil
|
|
39
|
+
assert_nothing_raised do
|
|
40
|
+
dummy2 = Magick::Draw._dummy_img_
|
|
41
|
+
end
|
|
42
|
+
assert_same(dummy, dummy2)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_kerning
|
|
46
|
+
assert_nothing_raised { @draw.kerning = 1 }
|
|
47
|
+
assert_nothing_raised { @draw.kerning(1) }
|
|
48
|
+
assert_raise(ArgumentError) { @draw.kerning("a") }
|
|
49
|
+
assert_raise(TypeError) { @draw.kerning([]) }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_interline_spacing
|
|
53
|
+
assert_nothing_raised { @draw.interline_spacing = 1 }
|
|
54
|
+
assert_nothing_raised { @draw.interline_spacing(1) }
|
|
55
|
+
assert_raise(ArgumentError) { @draw.interline_spacing("a") }
|
|
56
|
+
assert_raise(TypeError) { @draw.interline_spacing([]) }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_interword_spacing
|
|
60
|
+
assert_nothing_raised { @draw.interword_spacing = 1 }
|
|
61
|
+
assert_nothing_raised { @draw.interword_spacing(1) }
|
|
62
|
+
assert_raise(ArgumentError) { @draw.interword_spacing("a") }
|
|
63
|
+
assert_raise(TypeError) { @draw.interword_spacing([]) }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def assert_marshal
|
|
67
|
+
rose = Magick::Image.read("rose:").first
|
|
68
|
+
granite = Magick::Image.read("granite:").first
|
|
69
|
+
s = granite.to_blob {self.format="miff"}
|
|
70
|
+
granite = Magick::Image.from_blob(s).first
|
|
71
|
+
blue_stroke = Magick::Image.new(20,20) {self.background_color = "blue"}
|
|
72
|
+
s = blue_stroke.to_blob {self.format="miff"}
|
|
73
|
+
blue_stroke = Magick::Image.from_blob(s).first
|
|
74
|
+
|
|
75
|
+
@draw.affine = Magick::AffineMatrix.new(1, 2, 3, 4, 5, 6)
|
|
76
|
+
@draw.decorate = Magick::LineThroughDecoration
|
|
77
|
+
@draw.encoding = "AdobeCustom"
|
|
78
|
+
@draw.gravity = Magick::CenterGravity
|
|
79
|
+
@draw.fill = Magick::Pixel.from_color("red")
|
|
80
|
+
@draw.stroke = Magick::Pixel.from_color("blue")
|
|
81
|
+
@draw.stroke_width = 5
|
|
82
|
+
@draw.fill_pattern = granite
|
|
83
|
+
@draw.stroke_pattern = blue_stroke
|
|
84
|
+
@draw.text_antialias = true
|
|
85
|
+
@draw.font = "Arial-Bold"
|
|
86
|
+
@draw.font_family = "arial"
|
|
87
|
+
@draw.font_style = Magick::ItalicStyle
|
|
88
|
+
@draw.font_stretch = Magick::CondensedStretch
|
|
89
|
+
@draw.font_weight = Magick::BoldWeight
|
|
90
|
+
@draw.pointsize = 12
|
|
91
|
+
@draw.density = "72x72"
|
|
92
|
+
@draw.align = Magick::CenterAlign
|
|
93
|
+
@draw.undercolor = Magick::Pixel.from_color("green")
|
|
94
|
+
@draw.kerning = 10.5
|
|
95
|
+
@draw.interword_spacing = 3.75
|
|
96
|
+
|
|
97
|
+
@draw.circle(20, 25, 20, 28)
|
|
98
|
+
dumped = nil
|
|
99
|
+
assert_nothing_raised { dumped = Marshal.dump(@draw) }
|
|
100
|
+
assert_nothing_raised { Marshal.load(dumped) }
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_patterns
|
|
104
|
+
img = Magick::Image.new(20,20)
|
|
105
|
+
assert_nothing_raised { @draw.fill_pattern = img }
|
|
106
|
+
assert_nothing_raised { @draw.stroke_pattern = img }
|
|
107
|
+
|
|
108
|
+
ilist = Magick::ImageList.new
|
|
109
|
+
ilist << img
|
|
110
|
+
assert_nothing_raised { @draw.fill_pattern = ilist }
|
|
111
|
+
assert_nothing_raised { @draw.stroke_pattern = ilist }
|
|
112
|
+
|
|
113
|
+
assert_raise(NoMethodError) { @draw.fill_pattern = 1 }
|
|
114
|
+
assert_raise(NoMethodError) { @draw.stroke_pattern = 1 }
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
if __FILE__ == $0
|
|
119
|
+
Test::Unit::UI::Console::TestRunner.run(Draw_UT) if !RUBY_VERSION[/^1\.9|^2/]
|
|
120
|
+
end
|
|
121
|
+
|