gmagick 0.0.1
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/.gitignore +21 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +38 -0
- data/ext/gmagick/depend +1 -0
- data/ext/gmagick/extconf.rb +13 -0
- data/ext/gmagick/gmagick.h +112 -0
- data/ext/gmagick/gmdrawing.c +345 -0
- data/ext/gmagick/gmimage.c +346 -0
- data/ext/gmagick/gminit.c +97 -0
- data/ext/gmagick/gmpixel.c +82 -0
- data/ext/gmagick/gmutil.c +62 -0
- data/gmagick.gemspec +26 -0
- data/lib/gmagick.rb +6 -0
- data/lib/gmagick/version.rb +3 -0
- data/spec/files/src/dice.png +0 -0
- data/spec/files/src/earth.gif +0 -0
- data/spec/files/src/flower.jpg +0 -0
- data/spec/gmagick_spec.rb +496 -0
- data/spec/spec_helper.rb +40 -0
- metadata +115 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bc90ff3ec1b8209e0de9e0fdfa0ff85e85a856a2
|
4
|
+
data.tar.gz: c5c0f6649589a03255bf2a793ecd64c8f476a582
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: da782a343463b9b25cb5d3a1216a5b430fc8c7229ac68e6c6a3eabc3f886c7a4217220356fc3cb9b7ae2c5e22d520b788f726f1a9125430da509723f488152cf
|
7
|
+
data.tar.gz: 2e656e513769e6eb93260ae14794e3af200cc0cce73e38e585159f5261ad061514f1bd47be12b5ed3681b1273a9ed7d2b7c2f8f19b18b6815387cc0f36023a35
|
data/.gitignore
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
vendor
|
19
|
+
lib/gmagickn.*
|
20
|
+
html
|
21
|
+
spec/files/dst
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 aoyagikouhei
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Gmagick
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'gmagick'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install gmagick
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require "bundler/gem_helper"
|
2
|
+
gem_helper = Bundler::GemHelper.new(Dir.pwd)
|
3
|
+
gem_helper.install
|
4
|
+
gem_spec = gem_helper.gemspec
|
5
|
+
|
6
|
+
require 'rdoc/task'
|
7
|
+
RDoc::Task.new do |rdoc|
|
8
|
+
rdoc.rdoc_files.include("lib/**/*.rb", "ext/gmagick/*.c")
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'rake/clean'
|
12
|
+
|
13
|
+
require 'rake/testtask'
|
14
|
+
Rake::TestTask.new
|
15
|
+
|
16
|
+
require 'rake/extensiontask'
|
17
|
+
module Rake
|
18
|
+
class BaseExtensionTask
|
19
|
+
def binary(platform = nil)
|
20
|
+
ext = case platform
|
21
|
+
when /darwin/
|
22
|
+
'bundle'
|
23
|
+
when /mingw|mswin|linux/
|
24
|
+
'so'
|
25
|
+
when /java/
|
26
|
+
'jar'
|
27
|
+
else
|
28
|
+
RbConfig::CONFIG['DLEXT']
|
29
|
+
end
|
30
|
+
"#{@name}n.#{ext}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
Rake::ExtensionTask.new(gem_spec.name, gem_spec)
|
36
|
+
|
37
|
+
require "rspec/core/rake_task"
|
38
|
+
RSpec::Core::RakeTask.new(:spec)
|
data/ext/gmagick/depend
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
gmagick.o: gminit.c gmutil.c gmimage.c gmpixel.c gmdrawing.c gmagick.h
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "mkmf"
|
2
|
+
|
3
|
+
if gmconfig = ( find_executable('GraphicsMagickWand-config') )
|
4
|
+
$stderr.puts "Using config values from %s" % [ gmconfig ]
|
5
|
+
$CPPFLAGS << " " + `"#{gmconfig}" --cppflags`.chomp
|
6
|
+
$LDFLAGS << " " + `"#{gmconfig}" --ldflags`.chomp
|
7
|
+
$LOCAL_LIBS << " " + `"#{gmconfig}" --libs`.chomp
|
8
|
+
else
|
9
|
+
$stderr.puts "No GraphicsMagickWand-config... trying anyway. If building fails, please try again with",
|
10
|
+
" --with-gm-config=/path/to/GraphicsMagickWand-config"
|
11
|
+
end
|
12
|
+
|
13
|
+
create_makefile("gmagickn")
|
@@ -0,0 +1,112 @@
|
|
1
|
+
#ifndef _GMAGICK_H_
|
2
|
+
#define _GMAGICK_H_
|
3
|
+
|
4
|
+
#include <stdio.h>
|
5
|
+
#include <ruby.h>
|
6
|
+
#include <wand/magick_wand.h>
|
7
|
+
|
8
|
+
typedef struct {
|
9
|
+
MagickWand* wand;
|
10
|
+
} GmImage;
|
11
|
+
|
12
|
+
typedef struct {
|
13
|
+
PixelWand* wand;
|
14
|
+
} GmPixel;
|
15
|
+
|
16
|
+
typedef struct {
|
17
|
+
DrawingWand* wand;
|
18
|
+
} GmDrawing;
|
19
|
+
|
20
|
+
extern VALUE Module_Gmagick;
|
21
|
+
extern VALUE Class_Image;
|
22
|
+
extern VALUE Class_Pixel;
|
23
|
+
extern VALUE Class_Drawing;
|
24
|
+
|
25
|
+
extern ID id_new;
|
26
|
+
|
27
|
+
void gum_check_image_exception(MagickWand *wand, MagickPassFail status);
|
28
|
+
MagickWand* gmu_get_image_wand(VALUE self);
|
29
|
+
PixelWand* gmu_get_pixel_wand(VALUE self);
|
30
|
+
DrawingWand* gmu_get_drawing_wand(VALUE self);
|
31
|
+
char* gmu_str2cstr(VALUE src, long *len);
|
32
|
+
PixelWand* gmu_get_pixel_string_or_pixel(VALUE pixel_arg);
|
33
|
+
void gmu_clear_pixel_string_or_pixel(VALUE pixel_arg, PixelWand* pixel);
|
34
|
+
|
35
|
+
VALUE gmi_alloc(VALUE klass);
|
36
|
+
VALUE gmi_initialize(int argc, VALUE *argv, VALUE self);
|
37
|
+
VALUE gmi_read_image(VALUE self, VALUE path_arg);
|
38
|
+
VALUE gmi_write_image(int argc, VALUE *argv, VALUE self);
|
39
|
+
VALUE gmi_get_width(VALUE self);
|
40
|
+
VALUE gmi_get_height(VALUE self);
|
41
|
+
VALUE gmi_get_format(VALUE self);
|
42
|
+
VALUE gmi_get_depth(VALUE self);
|
43
|
+
VALUE gmi_get_colors(VALUE self);
|
44
|
+
VALUE gmi_get_resolution(VALUE self);
|
45
|
+
VALUE gmi_get_number_images(VALUE self);
|
46
|
+
VALUE gmi_read_image_blob(VALUE self, VALUE blob_arg);
|
47
|
+
VALUE gmi_write_image_blob(VALUE self);
|
48
|
+
VALUE gmi_resize(int argc, VALUE *argv, VALUE self);
|
49
|
+
VALUE gmi_rotate(VALUE self, VALUE pixel_arg, VALUE degree_arg);
|
50
|
+
VALUE gmi_draw(VALUE self, VALUE drawing_arg);
|
51
|
+
VALUE gmi_resample(int argc, VALUE *argv, VALUE self);
|
52
|
+
VALUE gmi_flip(VALUE self);
|
53
|
+
VALUE gmi_flop(VALUE self);
|
54
|
+
VALUE gmi_crop(VALUE self, VALUE width_arg, VALUE height_arg, VALUE x_arg, VALUE y_arg);
|
55
|
+
VALUE gmi_set_format(VALUE self, VALUE format_arg);
|
56
|
+
VALUE gmi_border(VALUE self, VALUE pixel_arg, VALUE width_arg, VALUE height_arg);
|
57
|
+
VALUE gmi_frame(VALUE self, VALUE pixel_arg, VALUE width_arg, VALUE height_arg, VALUE inner_arg, VALUE outer_arg);
|
58
|
+
VALUE gmi_blur(VALUE self, VALUE radius_arg, VALUE sigma_arg);
|
59
|
+
VALUE gmi_swirl(VALUE self, VALUE degree_arg);
|
60
|
+
VALUE gmi_charcoal(VALUE self, VALUE radius_arg, VALUE sigma_arg);
|
61
|
+
VALUE gmi_oil_paint(VALUE self, VALUE radius_arg);
|
62
|
+
VALUE gmi_cycle_colormap(VALUE self, VALUE displace_arg);
|
63
|
+
VALUE gmi_solarize(VALUE self, VALUE threshold_arg);
|
64
|
+
VALUE gmi_shear(VALUE self, VALUE pixel_arg, VALUE x_arg, VALUE y_arg);
|
65
|
+
|
66
|
+
VALUE gmp_alloc(VALUE klass);
|
67
|
+
VALUE gmp_initialize(int argc, VALUE *argv, VALUE self);
|
68
|
+
VALUE gmp_set_color(VALUE self, VALUE color_arg);
|
69
|
+
VALUE gmp_get_color(VALUE self);
|
70
|
+
VALUE gmp_set_color_count(VALUE self, VALUE color_count_arg);
|
71
|
+
VALUE gmp_get_color_count(VALUE self);
|
72
|
+
|
73
|
+
VALUE gmd_alloc(VALUE klass);
|
74
|
+
VALUE gmd_initialize(VALUE self);
|
75
|
+
VALUE gmd_annotation(VALUE self, VALUE x_arg, VALUE y_arg, VALUE text_arg);
|
76
|
+
VALUE gmd_arc(VALUE self, VALUE sx_arg, VALUE sy_arg, VALUE ex_arg, VALUE ey_arg, VALUE sd_arg, VALUE ed_arg);
|
77
|
+
VALUE gmd_bezier(VALUE self, VALUE points_arg);
|
78
|
+
VALUE gmd_circle(VALUE self, VALUE ox_arg, VALUE oy_arg, VALUE px_arg, VALUE py_arg);
|
79
|
+
VALUE gmd_ellipse(int argc, VALUE *argv, VALUE self);
|
80
|
+
VALUE gmd_line(VALUE self, VALUE sx_arg, VALUE sy_arg, VALUE ex_arg, VALUE ey_arg);
|
81
|
+
VALUE gmd_point(VALUE self, VALUE x_arg, VALUE y_arg);
|
82
|
+
VALUE gmd_rectangle(VALUE self, VALUE x1_arg, VALUE y1_arg, VALUE x2_arg, VALUE y2_arg);
|
83
|
+
VALUE gmd_rotate(VALUE self, VALUE degree_arg);
|
84
|
+
VALUE gmd_scale(VALUE self, VALUE x_arg, VALUE y_arg);
|
85
|
+
VALUE gmd_set_fill_color(VALUE self, VALUE pixel_arg);
|
86
|
+
VALUE gmd_get_fill_color(VALUE self);
|
87
|
+
VALUE gmd_set_fill_opacity(VALUE self, VALUE opacity_arg);
|
88
|
+
VALUE gmd_get_fill_opacity(VALUE self);
|
89
|
+
VALUE gmd_set_stroke_color(VALUE self, VALUE pixel_arg);
|
90
|
+
VALUE gmd_get_stroke_color(VALUE self);
|
91
|
+
VALUE gmd_set_stroke_opacity(VALUE self, VALUE opacity_arg);
|
92
|
+
VALUE gmd_get_stroke_opacity(VALUE self);
|
93
|
+
VALUE gmd_set_stroke_width(VALUE self, VALUE width_arg);
|
94
|
+
VALUE gmd_get_stroke_width(VALUE self);
|
95
|
+
VALUE gmd_round_rectangle(VALUE self, VALUE x1_arg, VALUE y1_arg, VALUE x2_arg, VALUE y2_arg, VALUE rx_arg, VALUE ry_arg);
|
96
|
+
VALUE gmd_set_font(VALUE self, VALUE name_arg);
|
97
|
+
VALUE gmd_get_font(VALUE self);
|
98
|
+
VALUE gmd_set_font_family(VALUE self, VALUE family_arg);
|
99
|
+
VALUE gmd_get_font_family(VALUE self);
|
100
|
+
VALUE gmd_set_font_size(VALUE self, VALUE pointsize_arg);
|
101
|
+
VALUE gmd_get_font_size(VALUE self);
|
102
|
+
VALUE gmd_set_font_stretch(VALUE self, VALUE stretch_arg);
|
103
|
+
VALUE gmd_get_font_stretch(VALUE self);
|
104
|
+
VALUE gmd_set_font_style(VALUE self, VALUE style_arg);
|
105
|
+
VALUE gmd_get_font_style(VALUE self);
|
106
|
+
VALUE gmd_set_font_weight(VALUE self, VALUE weight_arg);
|
107
|
+
VALUE gmd_get_font_weight(VALUE self);
|
108
|
+
VALUE gmd_set_text_decoration(VALUE self, VALUE decoration_arg);
|
109
|
+
VALUE gmd_get_text_decoration(VALUE self);
|
110
|
+
VALUE gmd_set_text_encoding(VALUE self, VALUE encoding_arg);
|
111
|
+
VALUE gmd_get_text_encoding(VALUE self);
|
112
|
+
#endif
|
@@ -0,0 +1,345 @@
|
|
1
|
+
#include "gmagick.h"
|
2
|
+
|
3
|
+
static void
|
4
|
+
gmd_free(GmDrawing *ptr)
|
5
|
+
{
|
6
|
+
if (ptr != (GmDrawing *)NULL) {
|
7
|
+
if (ptr->wand != (DrawingWand *)NULL) {
|
8
|
+
DestroyDrawingWand(ptr->wand);
|
9
|
+
}
|
10
|
+
ruby_xfree(ptr);
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
VALUE
|
15
|
+
gmd_alloc(VALUE klass) {
|
16
|
+
GmDrawing *ptr = ALLOC(GmDrawing);
|
17
|
+
ptr->wand = (DrawingWand *)NULL;
|
18
|
+
return Data_Wrap_Struct(klass, 0, gmd_free, ptr);
|
19
|
+
}
|
20
|
+
|
21
|
+
/*
|
22
|
+
* Document-method: new
|
23
|
+
*
|
24
|
+
* call-seq:
|
25
|
+
* Gmagick::Drawing.new -> drawing
|
26
|
+
*
|
27
|
+
* Create a GraphicsMagick Drawing Object
|
28
|
+
*
|
29
|
+
* Examples:
|
30
|
+
*
|
31
|
+
* # Make drawing object
|
32
|
+
* Gmagick::Drawing.new
|
33
|
+
*
|
34
|
+
*/
|
35
|
+
VALUE
|
36
|
+
gmd_initialize(VALUE self) {
|
37
|
+
GmDrawing *ptr;
|
38
|
+
Data_Get_Struct(self, GmDrawing, ptr);
|
39
|
+
ptr->wand = NewDrawingWand();
|
40
|
+
return Qnil;
|
41
|
+
}
|
42
|
+
|
43
|
+
VALUE
|
44
|
+
gmd_annotation(VALUE self, VALUE x_arg, VALUE y_arg, VALUE text_arg) {
|
45
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
46
|
+
double x = NUM2DBL(x_arg);
|
47
|
+
double y = NUM2DBL(y_arg);
|
48
|
+
char* text = StringValuePtr(text_arg);
|
49
|
+
DrawAnnotation(drawing, 50, 50, (unsigned char*)text);
|
50
|
+
return Qnil;
|
51
|
+
}
|
52
|
+
|
53
|
+
VALUE
|
54
|
+
gmd_set_fill_color(VALUE self, VALUE pixel_arg) {
|
55
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
56
|
+
PixelWand *pixel = gmu_get_pixel_string_or_pixel(pixel_arg);
|
57
|
+
DrawSetFillColor(drawing, pixel);
|
58
|
+
gmu_clear_pixel_string_or_pixel(pixel_arg, pixel);
|
59
|
+
return Qnil;
|
60
|
+
}
|
61
|
+
|
62
|
+
VALUE
|
63
|
+
gmd_get_fill_color(VALUE self) {
|
64
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
65
|
+
VALUE pixel_value = rb_funcall(Class_Pixel, id_new, 0);
|
66
|
+
PixelWand *pixel = gmu_get_pixel_wand(pixel_value);
|
67
|
+
DrawGetFillColor(drawing, pixel);
|
68
|
+
return pixel_value;
|
69
|
+
}
|
70
|
+
|
71
|
+
VALUE
|
72
|
+
gmd_set_fill_opacity(VALUE self, VALUE opacity_arg) {
|
73
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
74
|
+
double opacity = NUM2DBL(opacity_arg);
|
75
|
+
DrawSetFillOpacity(drawing, opacity);
|
76
|
+
return Qnil;
|
77
|
+
}
|
78
|
+
|
79
|
+
VALUE
|
80
|
+
gmd_get_fill_opacity(VALUE self) {
|
81
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
82
|
+
return DBL2NUM(DrawGetFillOpacity(drawing));
|
83
|
+
}
|
84
|
+
|
85
|
+
VALUE gmd_set_stroke_color(VALUE self, VALUE pixel_arg) {
|
86
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
87
|
+
PixelWand *pixel = gmu_get_pixel_string_or_pixel(pixel_arg);
|
88
|
+
DrawSetStrokeColor(drawing, pixel);
|
89
|
+
gmu_clear_pixel_string_or_pixel(pixel_arg, pixel);
|
90
|
+
return Qnil;
|
91
|
+
}
|
92
|
+
|
93
|
+
VALUE
|
94
|
+
gmd_get_stroke_color(VALUE self) {
|
95
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
96
|
+
VALUE pixel_value = rb_funcall(Class_Pixel, id_new, 0);
|
97
|
+
PixelWand *pixel = gmu_get_pixel_wand(pixel_value);
|
98
|
+
DrawGetStrokeColor(drawing, pixel);
|
99
|
+
return pixel_value;
|
100
|
+
}
|
101
|
+
|
102
|
+
VALUE
|
103
|
+
gmd_set_stroke_opacity(VALUE self, VALUE opacity_arg) {
|
104
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
105
|
+
double opacity = NUM2DBL(opacity_arg);
|
106
|
+
DrawSetStrokeOpacity(drawing, opacity);
|
107
|
+
return Qnil;
|
108
|
+
}
|
109
|
+
|
110
|
+
VALUE
|
111
|
+
gmd_get_stroke_opacity(VALUE self) {
|
112
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
113
|
+
return DBL2NUM(DrawGetStrokeOpacity(drawing));
|
114
|
+
}
|
115
|
+
|
116
|
+
VALUE
|
117
|
+
gmd_set_stroke_width(VALUE self, VALUE width_arg) {
|
118
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
119
|
+
double width = NUM2DBL(width_arg);
|
120
|
+
DrawSetStrokeWidth(drawing, width);
|
121
|
+
return Qnil;
|
122
|
+
}
|
123
|
+
|
124
|
+
VALUE
|
125
|
+
gmd_get_stroke_width(VALUE self) {
|
126
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
127
|
+
return DBL2NUM(DrawGetStrokeWidth(drawing));
|
128
|
+
}
|
129
|
+
|
130
|
+
VALUE gmd_round_rectangle(VALUE self, VALUE x1_arg, VALUE y1_arg, VALUE x2_arg, VALUE y2_arg, VALUE rx_arg, VALUE ry_arg) {
|
131
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
132
|
+
double x1 = NUM2DBL(x1_arg);
|
133
|
+
double y1 = NUM2DBL(y1_arg);
|
134
|
+
double x2 = NUM2DBL(x2_arg);
|
135
|
+
double y2 = NUM2DBL(y2_arg);
|
136
|
+
double rx = NUM2DBL(rx_arg);
|
137
|
+
double ry = NUM2DBL(ry_arg);
|
138
|
+
DrawRoundRectangle(drawing, x1, y1, x2, y2, rx, ry);
|
139
|
+
return Qnil;
|
140
|
+
}
|
141
|
+
|
142
|
+
VALUE
|
143
|
+
gmd_set_font(VALUE self, VALUE name_arg) {
|
144
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
145
|
+
char *name = StringValuePtr(name_arg);
|
146
|
+
DrawSetFont(drawing, name);
|
147
|
+
return Qnil;
|
148
|
+
}
|
149
|
+
|
150
|
+
VALUE
|
151
|
+
gmd_get_font(VALUE self) {
|
152
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
153
|
+
return rb_str_new2(DrawGetFont(drawing));
|
154
|
+
}
|
155
|
+
|
156
|
+
VALUE
|
157
|
+
gmd_set_font_family(VALUE self, VALUE family_arg) {
|
158
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
159
|
+
char *family = StringValuePtr(family_arg);
|
160
|
+
DrawSetFontFamily(drawing, family);
|
161
|
+
return Qnil;
|
162
|
+
}
|
163
|
+
|
164
|
+
VALUE
|
165
|
+
gmd_get_font_family(VALUE self) {
|
166
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
167
|
+
return rb_str_new2(DrawGetFontFamily(drawing));
|
168
|
+
}
|
169
|
+
|
170
|
+
VALUE
|
171
|
+
gmd_set_font_size(VALUE self, VALUE pointsize_arg) {
|
172
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
173
|
+
double pointsize = NUM2DBL(pointsize_arg);
|
174
|
+
DrawSetFontSize(drawing, pointsize);
|
175
|
+
return Qnil;
|
176
|
+
}
|
177
|
+
|
178
|
+
VALUE
|
179
|
+
gmd_get_font_size(VALUE self) {
|
180
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
181
|
+
return DBL2NUM(DrawGetFontSize(drawing));
|
182
|
+
}
|
183
|
+
|
184
|
+
VALUE
|
185
|
+
gmd_set_font_stretch(VALUE self, VALUE stretch_arg) {
|
186
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
187
|
+
unsigned long stretch = NUM2LONG(stretch_arg);
|
188
|
+
DrawSetFontStretch(drawing, stretch);
|
189
|
+
return Qnil;
|
190
|
+
}
|
191
|
+
|
192
|
+
VALUE
|
193
|
+
gmd_get_font_stretch(VALUE self) {
|
194
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
195
|
+
return LONG2NUM(DrawGetFontStretch(drawing));
|
196
|
+
}
|
197
|
+
|
198
|
+
VALUE
|
199
|
+
gmd_set_font_style(VALUE self, VALUE style_arg) {
|
200
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
201
|
+
unsigned long style = NUM2LONG(style_arg);
|
202
|
+
DrawSetFontStyle(drawing, style);
|
203
|
+
return Qnil;
|
204
|
+
}
|
205
|
+
|
206
|
+
VALUE
|
207
|
+
gmd_get_font_style(VALUE self) {
|
208
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
209
|
+
return LONG2NUM(DrawGetFontStyle(drawing));
|
210
|
+
}
|
211
|
+
|
212
|
+
VALUE
|
213
|
+
gmd_set_font_weight(VALUE self, VALUE weight_arg) {
|
214
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
215
|
+
unsigned long weight = NUM2LONG(weight_arg);
|
216
|
+
DrawSetFontWeight(drawing, weight);
|
217
|
+
return Qnil;
|
218
|
+
}
|
219
|
+
|
220
|
+
VALUE
|
221
|
+
gmd_get_font_weight(VALUE self) {
|
222
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
223
|
+
return LONG2NUM(DrawGetFontWeight(drawing));
|
224
|
+
}
|
225
|
+
|
226
|
+
VALUE
|
227
|
+
gmd_set_text_decoration(VALUE self, VALUE decoration_arg) {
|
228
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
229
|
+
unsigned long decoration = NUM2LONG(decoration_arg);
|
230
|
+
DrawSetTextDecoration(drawing, decoration);
|
231
|
+
return Qnil;
|
232
|
+
}
|
233
|
+
|
234
|
+
VALUE
|
235
|
+
gmd_get_text_decoration(VALUE self) {
|
236
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
237
|
+
return LONG2NUM(DrawGetTextDecoration(drawing));
|
238
|
+
}
|
239
|
+
|
240
|
+
VALUE
|
241
|
+
gmd_set_text_encoding(VALUE self, VALUE encoding_arg) {
|
242
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
243
|
+
char *encoding = StringValuePtr(encoding_arg);
|
244
|
+
DrawSetTextEncoding(drawing, encoding);
|
245
|
+
return Qnil;
|
246
|
+
}
|
247
|
+
|
248
|
+
VALUE
|
249
|
+
gmd_get_text_encoding(VALUE self) {
|
250
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
251
|
+
return rb_str_new2(DrawGetTextEncoding(drawing));
|
252
|
+
}
|
253
|
+
|
254
|
+
VALUE
|
255
|
+
gmd_arc(VALUE self, VALUE sx_arg, VALUE sy_arg, VALUE ex_arg, VALUE ey_arg, VALUE sd_arg, VALUE ed_arg) {
|
256
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
257
|
+
double sx = NUM2DBL(sx_arg);
|
258
|
+
double sy = NUM2DBL(sy_arg);
|
259
|
+
double ex = NUM2DBL(ex_arg);
|
260
|
+
double ey = NUM2DBL(ey_arg);
|
261
|
+
double sd = NUM2DBL(sd_arg);
|
262
|
+
double ed = NUM2DBL(ed_arg);
|
263
|
+
DrawArc(drawing, sx, sy, ex, ey, sd, ed);
|
264
|
+
return Qnil;
|
265
|
+
}
|
266
|
+
|
267
|
+
VALUE
|
268
|
+
gmd_bezier(VALUE self, VALUE points_arg) {
|
269
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
270
|
+
return Qnil;
|
271
|
+
}
|
272
|
+
|
273
|
+
VALUE gmd_circle(VALUE self, VALUE ox_arg, VALUE oy_arg, VALUE px_arg, VALUE py_arg) {
|
274
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
275
|
+
double ox = NUM2DBL(ox_arg);
|
276
|
+
double oy = NUM2DBL(oy_arg);
|
277
|
+
double px = NUM2DBL(px_arg);
|
278
|
+
double py = NUM2DBL(py_arg);
|
279
|
+
DrawCircle(drawing, ox, oy, px, py);
|
280
|
+
return Qnil;
|
281
|
+
}
|
282
|
+
|
283
|
+
VALUE gmd_ellipse(int argc, VALUE *argv, VALUE self) {
|
284
|
+
if ((argc < 4) || (argc > 6)) {
|
285
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 4 or 6)", argc);
|
286
|
+
}
|
287
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
288
|
+
double ox = NUM2DBL(argv[0]);
|
289
|
+
double oy = NUM2DBL(argv[1]);
|
290
|
+
double rx = NUM2DBL(argv[2]);
|
291
|
+
double ry = NUM2DBL(argv[3]);
|
292
|
+
double start = 0;
|
293
|
+
double end = 0;
|
294
|
+
if (argc > 4) {
|
295
|
+
start = NUM2DBL(argv[4]);
|
296
|
+
}
|
297
|
+
if (argc > 5) {
|
298
|
+
end = NUM2DBL(argv[5]);
|
299
|
+
}
|
300
|
+
DrawEllipse(drawing, ox, oy, rx, ry, start, end);
|
301
|
+
return Qnil;
|
302
|
+
}
|
303
|
+
|
304
|
+
VALUE gmd_line(VALUE self, VALUE sx_arg, VALUE sy_arg, VALUE ex_arg, VALUE ey_arg) {
|
305
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
306
|
+
double sx = NUM2DBL(sx_arg);
|
307
|
+
double sy = NUM2DBL(sy_arg);
|
308
|
+
double ex = NUM2DBL(ex_arg);
|
309
|
+
double ey = NUM2DBL(ey_arg);
|
310
|
+
DrawLine(drawing, sx, sy, ex, ey);
|
311
|
+
return Qnil;
|
312
|
+
}
|
313
|
+
|
314
|
+
VALUE gmd_point(VALUE self, VALUE x_arg, VALUE y_arg) {
|
315
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
316
|
+
double x = NUM2DBL(x_arg);
|
317
|
+
double y = NUM2DBL(y_arg);
|
318
|
+
DrawPoint(drawing, x, y);
|
319
|
+
return Qnil;
|
320
|
+
}
|
321
|
+
|
322
|
+
VALUE gmd_rectangle(VALUE self, VALUE x1_arg, VALUE y1_arg, VALUE x2_arg, VALUE y2_arg) {
|
323
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
324
|
+
double x1 = NUM2DBL(x1_arg);
|
325
|
+
double y1 = NUM2DBL(y1_arg);
|
326
|
+
double x2 = NUM2DBL(x2_arg);
|
327
|
+
double y2 = NUM2DBL(y2_arg);
|
328
|
+
DrawRectangle(drawing, x1, y1, x2, y2);
|
329
|
+
return Qnil;
|
330
|
+
}
|
331
|
+
|
332
|
+
VALUE gmd_rotate(VALUE self, VALUE degree_arg) {
|
333
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
334
|
+
double degree = NUM2DBL(degree_arg);
|
335
|
+
DrawRotate(drawing, degree);
|
336
|
+
return Qnil;
|
337
|
+
}
|
338
|
+
|
339
|
+
VALUE gmd_scale(VALUE self, VALUE x_arg, VALUE y_arg) {
|
340
|
+
DrawingWand *drawing = gmu_get_drawing_wand(self);
|
341
|
+
double x = NUM2DBL(x_arg);
|
342
|
+
double y = NUM2DBL(y_arg);
|
343
|
+
DrawScale(drawing, x, y);
|
344
|
+
return Qnil;
|
345
|
+
}
|