ruby-iup 0.0.1-i386-mswin32
Sign up to get free protection for your applications and to get access to all the features.
- data/doc/README +10 -0
- data/doc/build_install.txt +77 -0
- data/examples/README +16 -0
- data/examples/ctrl/cbox.rb +221 -0
- data/examples/ctrl/checkboard.rb +33 -0
- data/examples/ctrl/degrade.rb +73 -0
- data/examples/ctrl/example1.rb +53 -0
- data/examples/ctrl/example2.rb +39 -0
- data/examples/ctrl/iupcolorbar.rb +95 -0
- data/examples/ctrl/iupcolorbrowser.rb +45 -0
- data/examples/ctrl/iupdial.rb +117 -0
- data/examples/ctrl/iupgauge.rb +242 -0
- data/examples/ctrl/iupgetcolor.rb +8 -0
- data/examples/ctrl/iupgetparam.rb +62 -0
- data/examples/ctrl/iupglcanvas.rb +172 -0
- data/examples/ctrl/iupmask.rb +15 -0
- data/examples/ctrl/iupmatrix.rb +39 -0
- data/examples/ctrl/iupplot2.rb +603 -0
- data/examples/ctrl/iuptabs.rb +22 -0
- data/examples/ctrl/iuptree.rb +190 -0
- data/examples/ctrl/iupval.rb +71 -0
- data/examples/ctrl/numbering.rb +46 -0
- data/examples/ctrl/sample.rb +166 -0
- data/examples/dlg/iupalarm.rb +14 -0
- data/examples/dlg/iupfiledlg.rb +19 -0
- data/examples/dlg/iupgetfile.rb +19 -0
- data/examples/dlg/iuplistdialog.rb +26 -0
- data/examples/dlg/iupmessage.rb +5 -0
- data/examples/dlg/iupscanf.rb +17 -0
- data/examples/elem/iupbutton.rb +197 -0
- data/examples/elem/iupcanvas.rb +27 -0
- data/examples/elem/iupcanvas2.rb +113 -0
- data/examples/elem/iupcanvas3.rb +62 -0
- data/examples/elem/iupdialog.rb +71 -0
- data/examples/elem/iupdialog2.rb +25 -0
- data/examples/elem/iupfill.rb +51 -0
- data/examples/elem/iupframe.rb +25 -0
- data/examples/elem/iuphbox.rb +68 -0
- data/examples/elem/iupimage.rb +113 -0
- data/examples/elem/iupitem.rb +60 -0
- data/examples/elem/iuplabel.rb +57 -0
- data/examples/elem/iuplist.rb +41 -0
- data/examples/elem/iuplist2.rb +125 -0
- data/examples/elem/iupmenu.rb +32 -0
- data/examples/elem/iupmultiline.rb +24 -0
- data/examples/elem/iupmultiline2.rb +156 -0
- data/examples/elem/iupradio.rb +32 -0
- data/examples/elem/iupseparator.rb +81 -0
- data/examples/elem/iupsubmenu.rb +85 -0
- data/examples/elem/iuptext.rb +61 -0
- data/examples/elem/iuptimer.rb +36 -0
- data/examples/elem/iuptoggle.rb +110 -0
- data/examples/elem/iupvbox.rb +87 -0
- data/examples/elem/iupzbox.rb +60 -0
- data/examples/elem/mdisample.rb +376 -0
- data/examples/elem/progressbar.rb +294 -0
- data/examples/elem/scrollbar.rb +66 -0
- data/examples/elem/tray.rb +90 -0
- data/examples/func/iupgetattribute.rb +32 -0
- data/examples/func/iupidle.rb +48 -0
- data/ext/extconf.rb +27 -0
- data/ext/iup-win32/cd.dll +0 -0
- data/ext/iup-win32/cd.lib +0 -0
- data/ext/iup-win32/cdcontextplus.dll +0 -0
- data/ext/iup-win32/cdcontextplus.lib +0 -0
- data/ext/iup-win32/cdlua51.lib +0 -0
- data/ext/iup-win32/cdluacontextplus51.lib +0 -0
- data/ext/iup-win32/cdluaim51.lib +0 -0
- data/ext/iup-win32/cdluapdf51.lib +0 -0
- data/ext/iup-win32/cdpdf.dll +0 -0
- data/ext/iup-win32/cdpdf.lib +0 -0
- data/ext/iup-win32/freetype6.dll +0 -0
- data/ext/iup-win32/freetype6.lib +0 -0
- data/ext/iup-win32/im.dll +0 -0
- data/ext/iup-win32/im_avi.dll +0 -0
- data/ext/iup-win32/im_capture.dll +0 -0
- data/ext/iup-win32/im_ecw.dll +0 -0
- data/ext/iup-win32/im_fftw.dll +0 -0
- data/ext/iup-win32/im_jp2.dll +0 -0
- data/ext/iup-win32/im_process.dll +0 -0
- data/ext/iup-win32/im_wmv.dll +0 -0
- data/ext/iup-win32/iup.dll +0 -0
- data/ext/iup-win32/iup.lib +0 -0
- data/ext/iup-win32/iup_pplot.dll +0 -0
- data/ext/iup-win32/iup_pplot.lib +0 -0
- data/ext/iup-win32/iupcd.dll +0 -0
- data/ext/iup-win32/iupcd.lib +0 -0
- data/ext/iup-win32/iupcontrols.dll +0 -0
- data/ext/iup-win32/iupcontrols.lib +0 -0
- data/ext/iup-win32/iupgl.dll +0 -0
- data/ext/iup-win32/iupgl.lib +0 -0
- data/ext/iup-win32/iupim.dll +0 -0
- data/ext/iup-win32/iupim.lib +0 -0
- data/ext/iup-win32/iupimglib.dll +0 -0
- data/ext/iup-win32/iupimglib.lib +0 -0
- data/ext/iup-win32/iuplua51.lib +0 -0
- data/ext/iup-win32/iuplua_pplot51.lib +0 -0
- data/ext/iup-win32/iupluacd51.lib +0 -0
- data/ext/iup-win32/iupluacontrols51.lib +0 -0
- data/ext/iup-win32/iupluagl51.lib +0 -0
- data/ext/iup-win32/iupluaim51.lib +0 -0
- data/ext/iup-win32/iupluaimglib51.lib +0 -0
- data/ext/iup-win32/iupluaole51.lib +0 -0
- data/ext/iup-win32/iupole.dll +0 -0
- data/ext/iup-win32/iupole.lib +0 -0
- data/ext/iup-win32/iupstub.lib +0 -0
- data/ext/iup-win32/pdflib.dll +0 -0
- data/ext/iup-win32/pdflib.lib +0 -0
- data/ext/iup.c +1261 -0
- data/ext/mkrf_conf.rb +72 -0
- data/ext/rb_cd.h +1525 -0
- data/ext/rb_iup.h +2446 -0
- data/ext/rb_iup_pplot.h +129 -0
- data/ext/rb_iupcb.h +13 -0
- data/ext/rb_iupcbox.h +40 -0
- data/ext/rb_iupcells.h +15 -0
- data/ext/rb_iupcolorbar.h +17 -0
- data/ext/rb_iupcompat.h +237 -0
- data/ext/rb_iupcontrols.h +28 -0
- data/ext/rb_iupdef.h +3 -0
- data/ext/rb_iupdial.h +24 -0
- data/ext/rb_iupgauge.h +15 -0
- data/ext/rb_iupgc.h +18 -0
- data/ext/rb_iupgetparam.h +72 -0
- data/ext/rb_iupgl.h +58 -0
- data/ext/rb_iupim.h +25 -0
- data/ext/rb_iupmask.h +189 -0
- data/ext/rb_iupmatrix.h +80 -0
- data/ext/rb_iupole.h +24 -0
- data/ext/rb_iupsbox.h +23 -0
- data/ext/rb_iupspeech.h +25 -0
- data/ext/rb_iupspin.h +29 -0
- data/ext/rb_iuptabs.h +29 -0
- data/ext/rb_iuptree.h +94 -0
- data/ext/rb_iupval.h +24 -0
- data/lib/README +1 -0
- data/lib/iup.so +0 -0
- metadata +187 -0
data/ext/mkrf_conf.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# extconf.rb for ruby-iup extension module.
|
2
|
+
#
|
3
|
+
# Copyright (C) 2008 Park Heesob <jmg3000@gmail.com>
|
4
|
+
#
|
5
|
+
# This program is distributed under the terms of the MIT license.
|
6
|
+
# See the included COPYRIGHT file for the terms of this license.
|
7
|
+
#
|
8
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
9
|
+
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
10
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
11
|
+
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
12
|
+
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
13
|
+
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
14
|
+
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
15
|
+
|
16
|
+
require 'rubygems'
|
17
|
+
require 'mkrf'
|
18
|
+
require 'rbconfig'
|
19
|
+
|
20
|
+
RUBYVER = " -DRUBY_VERSION=" + RUBY_VERSION.split(".").join
|
21
|
+
|
22
|
+
ldir = nil
|
23
|
+
Mkrf::Generator.new('iup') do |g|
|
24
|
+
case RUBY_PLATFORM
|
25
|
+
when /mswin32/
|
26
|
+
ldir = './iup-win32'
|
27
|
+
g.cflags << ' -DWIN32' + RUBYVER
|
28
|
+
g.include_header('iup.h', ldir+'/include')
|
29
|
+
g.include_library('iup.lib', 'IupVersion',ldir)
|
30
|
+
g.include_library('iupcd.lib', 'cdContextIup')
|
31
|
+
g.include_library('iupcontrols.lib', 'IupControlsOpen')
|
32
|
+
g.include_library('iupgl.lib', 'IupGLCanvas')
|
33
|
+
g.include_library('iupim.lib', 'IupLoadImage')
|
34
|
+
g.include_library('iupimglib.lib', 'IupImageLibOpen')
|
35
|
+
g.include_library('iupole.lib', 'IupOleControl')
|
36
|
+
g.include_library('iup_pplot.lib', 'IupPPlot')
|
37
|
+
g.include_library('cd.lib', 'cdVersion')
|
38
|
+
g.include_library('cdpdf.lib', 'cdContextPDF')
|
39
|
+
else
|
40
|
+
ldir = './iup-linux'
|
41
|
+
ENV['LD_LIBRARY_PATH'] = ldir
|
42
|
+
g.cflags << ' -Wall' + RUBYVER
|
43
|
+
g.include_header('iup.h', ldir+'/include')
|
44
|
+
g.include_library('iup', 'IupVersion',ldir)
|
45
|
+
g.include_library('iupcd', 'cdContextIup')
|
46
|
+
g.include_library('iupcontrols', 'IupControlsOpen')
|
47
|
+
g.include_library('iupgl', 'IupGLCanvas')
|
48
|
+
g.include_library('iupim', 'IupLoadImage')
|
49
|
+
g.include_library('iupimglib', 'IupImageLibOpen')
|
50
|
+
g.include_library('iupole', 'IupOleControl')
|
51
|
+
g.include_library('iup_pplot', 'IupPPlot')
|
52
|
+
g.include_library('cd', 'cdVersion')
|
53
|
+
g.include_library('cdpdf', 'cdContextPDF')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
open("Rakefile", "a") do |rf|
|
57
|
+
if RUBY_PLATFORM =~ /win32/
|
58
|
+
rf.puts("task :default do")
|
59
|
+
Dir[ldir+"/*.dll"].each do |f|
|
60
|
+
# rf.puts("sh 'copy \"#{f}\" \"#{Config::CONFIG['bindir']}\"'".gsub('/'){'\\\\'})
|
61
|
+
rf.puts(" install '#{f}', '#{Config::CONFIG['bindir']}'")
|
62
|
+
end
|
63
|
+
rf.puts("end");
|
64
|
+
else
|
65
|
+
rf.puts("task :default do")
|
66
|
+
Dir[ldir+"/*.so"].each do |f|
|
67
|
+
rf.puts(" install '#{f}', '/usr/local/lib'")
|
68
|
+
end
|
69
|
+
rf.puts(" sh 'ldconfig'")
|
70
|
+
rf.puts("end");
|
71
|
+
end
|
72
|
+
end
|
data/ext/rb_cd.h
ADDED
@@ -0,0 +1,1525 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
#include "cd.h"
|
3
|
+
#include "cdiup.h"
|
4
|
+
#include "cdpdf.h"
|
5
|
+
|
6
|
+
extern VALUE rb_cCdCanvas;
|
7
|
+
|
8
|
+
VALUE rb_cCdCanvas_initialize(VALUE self,VALUE v_canvas)
|
9
|
+
{
|
10
|
+
if(NUM2UINT(v_canvas)==0) return Qnil;
|
11
|
+
rb_iv_set(self,"@canvas",v_canvas);
|
12
|
+
return self;
|
13
|
+
}
|
14
|
+
|
15
|
+
VALUE rb_cdVersion(VALUE self)
|
16
|
+
{
|
17
|
+
char* v;
|
18
|
+
v = cdVersion();
|
19
|
+
return rb_str_new2(v);
|
20
|
+
}
|
21
|
+
|
22
|
+
VALUE rb_cdVersionDate(VALUE self)
|
23
|
+
{
|
24
|
+
char* v;
|
25
|
+
v = cdVersionDate();
|
26
|
+
return rb_str_new2(v);
|
27
|
+
}
|
28
|
+
|
29
|
+
VALUE rb_cdActiveCanvas(VALUE self)
|
30
|
+
{
|
31
|
+
cdCanvas* v;
|
32
|
+
v = cdActiveCanvas();
|
33
|
+
if(v==NULL) return Qnil;
|
34
|
+
return rb_funcall(rb_cCdCanvas,rb_intern("new"),1,UINT2NUM((unsigned)v));
|
35
|
+
}
|
36
|
+
|
37
|
+
VALUE rb_cdActivate(VALUE self)
|
38
|
+
{
|
39
|
+
int v;
|
40
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
41
|
+
v = cdActivate((cdCanvas*)NUM2UINT(v_canvas));
|
42
|
+
return UINT2NUM((unsigned)v);
|
43
|
+
}
|
44
|
+
|
45
|
+
VALUE rb_cdCreateCanvas(VALUE self,VALUE v_context,VALUE v_data)
|
46
|
+
{
|
47
|
+
cdCanvas* v;
|
48
|
+
void* data;
|
49
|
+
if(TYPE(v_data)==T_FIXNUM || TYPE(v_data)==T_BIGNUM)
|
50
|
+
data = (void*)NUM2UINT(v_data);
|
51
|
+
else if(TYPE(v_data)==T_STRING)
|
52
|
+
data = (void*)RSTRING(v_data)->ptr;
|
53
|
+
else {
|
54
|
+
VALUE v_ih = rb_iv_get(v_data,"@ihandle");
|
55
|
+
data = (void*)NUM2UINT(v_ih);
|
56
|
+
}
|
57
|
+
v = cdCreateCanvas((cdContext*)NUM2UINT(v_context),data);
|
58
|
+
if(v)
|
59
|
+
return rb_funcall(rb_cCdCanvas,rb_intern("new"),1,UINT2NUM((unsigned)v));
|
60
|
+
return Qnil;
|
61
|
+
}
|
62
|
+
|
63
|
+
VALUE rb_cdKillCanvas(VALUE self)
|
64
|
+
{
|
65
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
66
|
+
cdKillCanvas((cdCanvas*)NUM2UINT(v_canvas));
|
67
|
+
return Qnil;
|
68
|
+
}
|
69
|
+
|
70
|
+
VALUE rb_cdCanvasGetContext(VALUE self)
|
71
|
+
{
|
72
|
+
cdContext* v;
|
73
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
74
|
+
v = cdCanvasGetContext((cdCanvas*)NUM2UINT(v_canvas));
|
75
|
+
return UINT2NUM((unsigned)v);
|
76
|
+
}
|
77
|
+
|
78
|
+
VALUE rb_cdCanvasActivate(VALUE self)
|
79
|
+
{
|
80
|
+
cdCanvas* canvas = NULL;
|
81
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
82
|
+
int v;
|
83
|
+
if(v_canvas!=Qnil) canvas = (cdCanvas*)NUM2UINT(v_canvas);
|
84
|
+
v = cdActivate(canvas);
|
85
|
+
return UINT2NUM((unsigned)v);
|
86
|
+
}
|
87
|
+
|
88
|
+
VALUE rb_cdCanvasDeactivate(VALUE self)
|
89
|
+
{
|
90
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
91
|
+
cdCanvasDeactivate((cdCanvas*)NUM2UINT(v_canvas));
|
92
|
+
return Qnil;
|
93
|
+
}
|
94
|
+
|
95
|
+
VALUE rb_cdUseContextPlus(VALUE self,VALUE v_use)
|
96
|
+
{
|
97
|
+
int use = NUM2UINT(v_use);
|
98
|
+
int v;
|
99
|
+
v = cdUseContextPlus(use);
|
100
|
+
return UINT2NUM((unsigned)v);
|
101
|
+
}
|
102
|
+
|
103
|
+
VALUE rb_cdContextRegisterCallback(VALUE self,VALUE v_context,VALUE v_cb,VALUE v_func)
|
104
|
+
{
|
105
|
+
int cb = NUM2UINT(v_cb);
|
106
|
+
int v;
|
107
|
+
void *func = (void*)NUM2UINT(v_func);
|
108
|
+
v = cdContextRegisterCallback((cdContext*)NUM2UINT(v_context),cb,func);
|
109
|
+
return UINT2NUM((unsigned)v);
|
110
|
+
}
|
111
|
+
|
112
|
+
VALUE rb_cdContextCaps(VALUE self,VALUE v_context)
|
113
|
+
{
|
114
|
+
long v;
|
115
|
+
v = cdContextCaps((cdContext*)NUM2UINT(v_context));
|
116
|
+
return LONG2NUM(v);
|
117
|
+
}
|
118
|
+
|
119
|
+
VALUE rb_cdCanvasSimulate(VALUE self,VALUE v_mode)
|
120
|
+
{
|
121
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
122
|
+
int mode = NUM2UINT(v_mode);
|
123
|
+
int v;
|
124
|
+
v = cdCanvasSimulate((cdCanvas*)NUM2UINT(v_canvas),mode);
|
125
|
+
return INT2NUM(v);
|
126
|
+
}
|
127
|
+
|
128
|
+
VALUE rb_cdCanvasFlush(VALUE self)
|
129
|
+
{
|
130
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
131
|
+
cdCanvasFlush((cdCanvas*)NUM2UINT(v_canvas));
|
132
|
+
return Qnil;
|
133
|
+
}
|
134
|
+
|
135
|
+
VALUE rb_cdCanvasClear(VALUE self)
|
136
|
+
{
|
137
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
138
|
+
cdCanvasClear((cdCanvas*)NUM2UINT(v_canvas));
|
139
|
+
return Qnil;
|
140
|
+
}
|
141
|
+
|
142
|
+
VALUE rb_cdCanvasSaveState(VALUE self)
|
143
|
+
{
|
144
|
+
cdState* v;
|
145
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
146
|
+
v = cdCanvasSaveState((cdCanvas*)NUM2UINT(v_canvas));
|
147
|
+
return UINT2NUM((unsigned)v);
|
148
|
+
}
|
149
|
+
|
150
|
+
VALUE rb_cdCanvasRestoreState(VALUE self,VALUE v_state)
|
151
|
+
{
|
152
|
+
cdState* state = (cdState*)NUM2UINT(v_state);
|
153
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
154
|
+
cdCanvasRestoreState((cdCanvas*)NUM2UINT(v_canvas),state);
|
155
|
+
return Qnil;
|
156
|
+
}
|
157
|
+
|
158
|
+
VALUE rb_cdReleaseState(VALUE self,VALUE v_state)
|
159
|
+
{
|
160
|
+
cdState* state = (cdState*)NUM2UINT(v_state);
|
161
|
+
cdReleaseState(state);
|
162
|
+
return Qnil;
|
163
|
+
}
|
164
|
+
|
165
|
+
VALUE rb_cdCanvasSetAttribute(VALUE self,VALUE v_name,VALUE v_data)
|
166
|
+
{
|
167
|
+
const char* name = RSTRING(v_name)->ptr;
|
168
|
+
char* data = RSTRING(v_data)->ptr;
|
169
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
170
|
+
cdCanvasSetAttribute((cdCanvas*)NUM2UINT(v_canvas),name,data);
|
171
|
+
return Qnil;
|
172
|
+
}
|
173
|
+
|
174
|
+
VALUE rb_cdCanvasGetAttribute(VALUE self,VALUE v_name)
|
175
|
+
{
|
176
|
+
const char* name = RSTRING(v_name)->ptr;
|
177
|
+
char* v;
|
178
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
179
|
+
v = cdCanvasGetAttribute((cdCanvas*)NUM2UINT(v_canvas),name);
|
180
|
+
return rb_str_new2(v);
|
181
|
+
}
|
182
|
+
|
183
|
+
VALUE rb_cdCanvasPlay(VALUE self,VALUE v_context,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax,VALUE v_data)
|
184
|
+
{
|
185
|
+
int xmin = NUM2INT(v_xmin);
|
186
|
+
int xmax = NUM2INT(v_xmax);
|
187
|
+
int ymin = NUM2INT(v_ymin);
|
188
|
+
int ymax = NUM2INT(v_ymax);
|
189
|
+
void *data = (void*)NUM2UINT(v_data);
|
190
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
191
|
+
int v;
|
192
|
+
v = cdCanvasPlay((cdCanvas*)NUM2UINT(v_canvas),(cdContext*)NUM2UINT(v_context),xmin,xmax,ymin,ymax,data);
|
193
|
+
return INT2NUM(v);
|
194
|
+
}
|
195
|
+
|
196
|
+
VALUE rb_cdCanvasGetSize(VALUE self,VALUE v_width,VALUE v_height,VALUE v_width_mm,VALUE v_height_mm)
|
197
|
+
{
|
198
|
+
int width;
|
199
|
+
int height;
|
200
|
+
double mm_width;
|
201
|
+
double mm_height;
|
202
|
+
VALUE v_r;
|
203
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
204
|
+
cdCanvasGetSize((cdCanvas*)NUM2UINT(v_canvas),&width,&height,&mm_width,&mm_height);
|
205
|
+
v_r = rb_ary_new3(4,INT2FIX(width),INT2FIX(height),rb_float_new(mm_width),rb_float_new(mm_height));
|
206
|
+
return v_r;
|
207
|
+
}
|
208
|
+
|
209
|
+
VALUE rb_cdCanvasUpdateYAxis(VALUE self,VALUE v_y)
|
210
|
+
{
|
211
|
+
int y = NUM2INT(v_y);
|
212
|
+
int v;
|
213
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
214
|
+
v = cdCanvasUpdateYAxis((cdCanvas*)NUM2UINT(v_canvas),&y);
|
215
|
+
return INT2NUM(y);
|
216
|
+
}
|
217
|
+
|
218
|
+
VALUE rb_cdfCanvasUpdateYAxis(VALUE self,VALUE v_y)
|
219
|
+
{
|
220
|
+
double y = RFLOAT(v_y)->value;
|
221
|
+
double v;
|
222
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
223
|
+
v = cdfCanvasUpdateYAxis((cdCanvas*)NUM2UINT(v_canvas),&y);
|
224
|
+
return rb_float_new(y);
|
225
|
+
}
|
226
|
+
|
227
|
+
VALUE rb_cdCanvasInvertYAxis(VALUE self,VALUE v_y)
|
228
|
+
{
|
229
|
+
int y = NUM2INT(v_y);
|
230
|
+
int v;
|
231
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
232
|
+
v = cdCanvasInvertYAxis((cdCanvas*)NUM2UINT(v_canvas),y);
|
233
|
+
return INT2NUM(y);
|
234
|
+
}
|
235
|
+
|
236
|
+
VALUE rb_cdfCanvasInvertYAxis(VALUE self,VALUE v_y)
|
237
|
+
{
|
238
|
+
double y = RFLOAT(v_y)->value;
|
239
|
+
double v;
|
240
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
241
|
+
v = cdfCanvasInvertYAxis((cdCanvas*)NUM2UINT(v_canvas),y);
|
242
|
+
return rb_float_new(v);
|
243
|
+
}
|
244
|
+
|
245
|
+
VALUE rb_cdCanvasMM2Pixel(VALUE self,VALUE v_mm_dx,VALUE v_mm_dy)
|
246
|
+
{
|
247
|
+
double mm_dx = RFLOAT(v_mm_dx)->value;
|
248
|
+
double mm_dy = RFLOAT(v_mm_dy)->value;
|
249
|
+
int dx;
|
250
|
+
int dy;
|
251
|
+
VALUE v_r;
|
252
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
253
|
+
cdCanvasMM2Pixel((cdCanvas*)NUM2UINT(v_canvas),mm_dx,mm_dy,&dx,&dy);
|
254
|
+
v_r = rb_ary_new3(2,INT2FIX(dx),INT2FIX(dy));
|
255
|
+
return v_r;
|
256
|
+
}
|
257
|
+
|
258
|
+
VALUE rb_cdCanvasPixel2MM(VALUE self,VALUE v_dx,VALUE v_dy)
|
259
|
+
{
|
260
|
+
double mm_dx;
|
261
|
+
double mm_dy;
|
262
|
+
int dx = NUM2INT(v_dx);
|
263
|
+
int dy = NUM2INT(v_dy);
|
264
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
265
|
+
VALUE v_r;
|
266
|
+
cdCanvasPixel2MM((cdCanvas*)NUM2UINT(v_canvas),dx,dy,&mm_dx,&mm_dy);
|
267
|
+
v_r = rb_ary_new3(2,rb_float_new(mm_dx),rb_float_new(mm_dy));
|
268
|
+
return v_r;
|
269
|
+
}
|
270
|
+
|
271
|
+
VALUE rb_cdfCanvasMM2Pixel(VALUE self,VALUE v_mm_dx,VALUE v_mm_dy,VALUE v_dx,VALUE v_dy)
|
272
|
+
{
|
273
|
+
double mm_dx = RFLOAT(v_mm_dx)->value;
|
274
|
+
double mm_dy = RFLOAT(v_mm_dy)->value;
|
275
|
+
double dx;
|
276
|
+
double dy;
|
277
|
+
VALUE v_r;
|
278
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
279
|
+
cdfCanvasMM2Pixel((cdCanvas*)NUM2UINT(v_canvas),mm_dx,mm_dy,&dx,&dy);
|
280
|
+
v_r = rb_ary_new3(2,rb_float_new(dx),rb_float_new(dy));
|
281
|
+
return v_r;
|
282
|
+
}
|
283
|
+
|
284
|
+
VALUE rb_cdfCanvasPixel2MM(VALUE self,VALUE v_dx,VALUE v_dy)
|
285
|
+
{
|
286
|
+
double mm_dx;
|
287
|
+
double mm_dy;
|
288
|
+
double dx = RFLOAT(v_dx)->value;
|
289
|
+
double dy = RFLOAT(v_dy)->value;
|
290
|
+
VALUE v_r;
|
291
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
292
|
+
cdfCanvasPixel2MM((cdCanvas*)NUM2UINT(v_canvas),dx,dy,&mm_dx,&mm_dy);
|
293
|
+
v_r = rb_ary_new3(2,rb_float_new(mm_dx),rb_float_new(mm_dy));
|
294
|
+
return v_r;
|
295
|
+
}
|
296
|
+
|
297
|
+
VALUE rb_cdCanvasOrigin(VALUE self,VALUE v_x,VALUE v_y)
|
298
|
+
{
|
299
|
+
int x = NUM2INT(v_x);
|
300
|
+
int y = NUM2INT(v_y);
|
301
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
302
|
+
cdCanvasOrigin((cdCanvas*)NUM2UINT(v_canvas),x,y);
|
303
|
+
return Qnil;
|
304
|
+
}
|
305
|
+
|
306
|
+
VALUE rb_cdfCanvasOrigin(VALUE self,VALUE v_x,VALUE v_y)
|
307
|
+
{
|
308
|
+
double x = RFLOAT(v_x)->value;
|
309
|
+
double y = RFLOAT(v_y)->value;
|
310
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
311
|
+
cdfCanvasOrigin((cdCanvas*)NUM2UINT(v_canvas),x,y);
|
312
|
+
return Qnil;
|
313
|
+
}
|
314
|
+
|
315
|
+
VALUE rb_cdCanvasGetOrigin(VALUE self)
|
316
|
+
{
|
317
|
+
int x;
|
318
|
+
int y;
|
319
|
+
VALUE v_r;
|
320
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
321
|
+
cdCanvasGetOrigin((cdCanvas*)NUM2UINT(v_canvas),&x,&y);
|
322
|
+
v_r = rb_ary_new3(2,INT2FIX(x),INT2FIX(y));
|
323
|
+
return v_r;
|
324
|
+
}
|
325
|
+
|
326
|
+
VALUE rb_cdfCanvasGetOrigin(VALUE self,VALUE v_x,VALUE v_y)
|
327
|
+
{
|
328
|
+
double x;
|
329
|
+
double y;
|
330
|
+
VALUE v_r;
|
331
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
332
|
+
cdfCanvasGetOrigin((cdCanvas*)NUM2UINT(v_canvas),&x,&y);
|
333
|
+
v_r = rb_ary_new3(2,rb_float_new(x),rb_float_new(y));
|
334
|
+
return v_r;
|
335
|
+
}
|
336
|
+
|
337
|
+
VALUE rb_cdCanvasTransform(VALUE self,VALUE v_matrix)
|
338
|
+
{
|
339
|
+
double *matrix = NULL;
|
340
|
+
int i;
|
341
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
342
|
+
if(v_matrix!=Qnil) {
|
343
|
+
matrix = xmalloc(sizeof(double)*6);
|
344
|
+
for(i=0;i<RARRAY(v_matrix)->len && i<6;i++)
|
345
|
+
matrix[i] = RFLOAT(RARRAY(v_matrix)->ptr[i])->value;
|
346
|
+
}
|
347
|
+
cdCanvasTransform((cdCanvas*)NUM2UINT(v_canvas),matrix);
|
348
|
+
if(matrix) free(matrix);
|
349
|
+
return Qnil;
|
350
|
+
}
|
351
|
+
|
352
|
+
VALUE rb_cdCanvasGetTransform(VALUE self)
|
353
|
+
{
|
354
|
+
double* v;
|
355
|
+
int i;
|
356
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
357
|
+
VALUE v_r = rb_ary_new();
|
358
|
+
v = cdCanvasGetTransform((cdCanvas*)NUM2UINT(v_canvas));
|
359
|
+
if(v==NULL) return Qnil;
|
360
|
+
for(i=0;i<6;i++)
|
361
|
+
rb_ary_push(v_r,rb_float_new(v[i]));
|
362
|
+
return v_r;
|
363
|
+
}
|
364
|
+
|
365
|
+
VALUE rb_cdCanvasTransformMultiply(VALUE self,VALUE v_matrix)
|
366
|
+
{
|
367
|
+
double *matrix = NULL;
|
368
|
+
int i;
|
369
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
370
|
+
if(v_matrix!=Qnil) {
|
371
|
+
matrix = xmalloc(sizeof(double)*6);
|
372
|
+
for(i=0;i<RARRAY(v_matrix)->len && i<6;i++)
|
373
|
+
matrix[i] = RFLOAT(RARRAY(v_matrix)->ptr[i])->value;
|
374
|
+
}
|
375
|
+
cdCanvasTransformMultiply((cdCanvas*)NUM2UINT(v_canvas),matrix);
|
376
|
+
return Qnil;
|
377
|
+
}
|
378
|
+
|
379
|
+
VALUE rb_cdCanvasTransformRotate(VALUE self,VALUE v_angle)
|
380
|
+
{
|
381
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
382
|
+
double angle = RFLOAT(v_angle)->value;
|
383
|
+
cdCanvasTransformRotate((cdCanvas*)NUM2UINT(v_canvas),angle);
|
384
|
+
return Qnil;
|
385
|
+
}
|
386
|
+
|
387
|
+
VALUE rb_cdCanvasTransformScale(VALUE self,VALUE v_sx,VALUE v_sy)
|
388
|
+
{
|
389
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
390
|
+
double sx = RFLOAT(v_sx)->value;
|
391
|
+
double sy = RFLOAT(v_sy)->value;
|
392
|
+
cdCanvasTransformScale((cdCanvas*)NUM2UINT(v_canvas),sx,sy);
|
393
|
+
return Qnil;
|
394
|
+
}
|
395
|
+
|
396
|
+
VALUE rb_cdCanvasTransformTranslate(VALUE self,VALUE v_dx,VALUE v_dy)
|
397
|
+
{
|
398
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
399
|
+
double dx = RFLOAT(v_dx)->value;
|
400
|
+
double dy = RFLOAT(v_dy)->value;
|
401
|
+
cdCanvasTransformTranslate((cdCanvas*)NUM2UINT(v_canvas),dx,dy);
|
402
|
+
return Qnil;
|
403
|
+
}
|
404
|
+
|
405
|
+
VALUE rb_cdCanvasTransformPoint(VALUE self,VALUE v_x,VALUE v_y)
|
406
|
+
{
|
407
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
408
|
+
int x = NUM2INT(v_x);
|
409
|
+
int y = NUM2INT(v_y);
|
410
|
+
int tx;
|
411
|
+
int ty;
|
412
|
+
VALUE v_r;
|
413
|
+
cdCanvasTransformPoint((cdCanvas*)NUM2UINT(v_canvas),x,y,&tx,&ty);
|
414
|
+
v_r = rb_ary_new3(2,INT2FIX(tx),INT2FIX(ty));
|
415
|
+
return v_r;
|
416
|
+
}
|
417
|
+
|
418
|
+
VALUE rb_cdfCanvasTransformPoint(VALUE self,VALUE v_x,VALUE v_y)
|
419
|
+
{
|
420
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
421
|
+
double x = RFLOAT(v_x)->value;
|
422
|
+
double y = RFLOAT(v_y)->value;
|
423
|
+
double tx;
|
424
|
+
double ty;
|
425
|
+
VALUE v_r;
|
426
|
+
cdfCanvasTransformPoint((cdCanvas*)NUM2UINT(v_canvas),x,y,&tx,&ty);
|
427
|
+
v_r = rb_ary_new3(2,rb_float_new(tx),rb_float_new(ty));
|
428
|
+
return v_r;
|
429
|
+
}
|
430
|
+
|
431
|
+
VALUE rb_cdCanvasClip(VALUE self,VALUE v_mode)
|
432
|
+
{
|
433
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
434
|
+
int mode = NUM2INT(v_mode);
|
435
|
+
int v;
|
436
|
+
v = cdCanvasClip((cdCanvas*)NUM2UINT(v_canvas),mode);
|
437
|
+
return UINT2NUM((unsigned)v);
|
438
|
+
}
|
439
|
+
|
440
|
+
VALUE rb_cdCanvasClipArea(VALUE self,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
441
|
+
{
|
442
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
443
|
+
int xmin = NUM2INT(v_xmin);
|
444
|
+
int xmax = NUM2INT(v_xmax);
|
445
|
+
int ymin = NUM2INT(v_ymin);
|
446
|
+
int ymax = NUM2INT(v_ymax);
|
447
|
+
cdCanvasClipArea((cdCanvas*)NUM2UINT(v_canvas),xmin,xmax,ymin,ymax);
|
448
|
+
return Qnil;
|
449
|
+
}
|
450
|
+
|
451
|
+
VALUE rb_cdCanvasGetClipArea(VALUE self)
|
452
|
+
{
|
453
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
454
|
+
int xmin;
|
455
|
+
int xmax;
|
456
|
+
int ymin;
|
457
|
+
int ymax;
|
458
|
+
int v;
|
459
|
+
VALUE v_r;
|
460
|
+
v = cdCanvasGetClipArea((cdCanvas*)NUM2UINT(v_canvas),&xmin,&xmax,&ymin,&ymax);
|
461
|
+
v_r = rb_ary_new3(4,INT2FIX(xmin),INT2FIX(xmax),INT2FIX(ymin),INT2FIX(ymax));
|
462
|
+
return v_r;
|
463
|
+
}
|
464
|
+
|
465
|
+
VALUE rb_cdfCanvasClipArea(VALUE self,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
466
|
+
{
|
467
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
468
|
+
double xmin = RFLOAT(v_xmin)->value;
|
469
|
+
double xmax = RFLOAT(v_xmax)->value;
|
470
|
+
double ymin = RFLOAT(v_ymin)->value;
|
471
|
+
double ymax = RFLOAT(v_ymax)->value;
|
472
|
+
cdfCanvasClipArea((cdCanvas*)NUM2UINT(v_canvas),xmin,xmax,ymin,ymax);
|
473
|
+
return Qnil;
|
474
|
+
}
|
475
|
+
|
476
|
+
VALUE rb_cdfCanvasGetClipArea(VALUE self,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
477
|
+
{
|
478
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
479
|
+
double xmin;
|
480
|
+
double xmax;
|
481
|
+
double ymin;
|
482
|
+
double ymax;
|
483
|
+
int v;
|
484
|
+
VALUE v_r;
|
485
|
+
v = cdfCanvasGetClipArea((cdCanvas*)NUM2UINT(v_canvas),&xmin,&xmax,&ymin,&ymax);
|
486
|
+
v_r = rb_ary_new3(4,rb_float_new(xmin),rb_float_new(xmax),rb_float_new(ymin),rb_float_new(ymax));
|
487
|
+
return v_r;
|
488
|
+
}
|
489
|
+
|
490
|
+
VALUE rb_cdCanvasIsPointInRegion(VALUE self,VALUE v_x,VALUE v_y)
|
491
|
+
{
|
492
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
493
|
+
int x = NUM2INT(v_x);
|
494
|
+
int y = NUM2INT(v_y);
|
495
|
+
int v;
|
496
|
+
v = cdCanvasIsPointInRegion((cdCanvas*)NUM2UINT(v_canvas),x,y);
|
497
|
+
return UINT2NUM((unsigned)v);
|
498
|
+
}
|
499
|
+
|
500
|
+
VALUE rb_cdCanvasOffsetRegion(VALUE self,VALUE v_x,VALUE v_y)
|
501
|
+
{
|
502
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
503
|
+
int x = NUM2UINT(v_x);
|
504
|
+
int y = NUM2UINT(v_y);
|
505
|
+
cdCanvasOffsetRegion((cdCanvas*)NUM2UINT(v_canvas),x,y);
|
506
|
+
return Qnil;
|
507
|
+
}
|
508
|
+
|
509
|
+
VALUE rb_cdCanvasGetRegionBox(VALUE self)
|
510
|
+
{
|
511
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
512
|
+
int xmin;
|
513
|
+
int xmax;
|
514
|
+
int ymin;
|
515
|
+
int ymax;
|
516
|
+
VALUE v_r;
|
517
|
+
cdCanvasGetRegionBox((cdCanvas*)NUM2UINT(v_canvas),&xmin,&xmax,&ymin,&ymax);
|
518
|
+
v_r = rb_ary_new3(4,INT2FIX(xmin),INT2FIX(xmax),INT2FIX(ymin),INT2FIX(ymax));
|
519
|
+
return v_r;
|
520
|
+
}
|
521
|
+
|
522
|
+
VALUE rb_cdCanvasRegionCombineMode(VALUE self,VALUE v_mode)
|
523
|
+
{
|
524
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
525
|
+
int mode = NUM2INT(v_mode);
|
526
|
+
int v;
|
527
|
+
v = cdCanvasRegionCombineMode((cdCanvas*)NUM2UINT(v_canvas),mode);
|
528
|
+
return UINT2NUM((unsigned)v);
|
529
|
+
}
|
530
|
+
|
531
|
+
VALUE rb_cdCanvasPixel(VALUE self,VALUE v_x,VALUE v_y,VALUE v_color)
|
532
|
+
{
|
533
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
534
|
+
long int color = NUM2LONG(v_color);
|
535
|
+
int x = NUM2INT(v_x);
|
536
|
+
int y = NUM2INT(v_y);
|
537
|
+
cdCanvasPixel((cdCanvas*)NUM2UINT(v_canvas),x,y,color);
|
538
|
+
return Qnil;
|
539
|
+
}
|
540
|
+
|
541
|
+
VALUE rb_cdCanvasMark(VALUE self,VALUE v_x,VALUE v_y)
|
542
|
+
{
|
543
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
544
|
+
int x = NUM2INT(v_x);
|
545
|
+
int y = NUM2INT(v_y);
|
546
|
+
cdCanvasMark((cdCanvas*)NUM2UINT(v_canvas),x,y);
|
547
|
+
return Qnil;
|
548
|
+
}
|
549
|
+
|
550
|
+
VALUE rb_cdCanvasLine(VALUE self,VALUE v_x1,VALUE v_y1,VALUE v_x2,VALUE v_y2)
|
551
|
+
{
|
552
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
553
|
+
int x1 = NUM2INT(v_x1);
|
554
|
+
int y1 = NUM2INT(v_y1);
|
555
|
+
int x2 = NUM2INT(v_x2);
|
556
|
+
int y2 = NUM2INT(v_y2);
|
557
|
+
cdCanvasLine((cdCanvas*)NUM2UINT(v_canvas),x1,y1,x2,y2);
|
558
|
+
return Qnil;
|
559
|
+
}
|
560
|
+
|
561
|
+
VALUE rb_cdCanvasBegin(VALUE self,VALUE v_mode)
|
562
|
+
{
|
563
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
564
|
+
int mode = NUM2INT(v_mode);
|
565
|
+
cdCanvasBegin((cdCanvas*)NUM2UINT(v_canvas),mode);
|
566
|
+
return Qnil;
|
567
|
+
}
|
568
|
+
|
569
|
+
VALUE rb_cdCanvasVertex(VALUE self,VALUE v_x,VALUE v_y)
|
570
|
+
{
|
571
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
572
|
+
int x = NUM2INT(v_x);
|
573
|
+
int y = NUM2INT(v_y);
|
574
|
+
cdCanvasVertex((cdCanvas*)NUM2UINT(v_canvas),x,y);
|
575
|
+
return Qnil;
|
576
|
+
}
|
577
|
+
|
578
|
+
VALUE rb_cdCanvasEnd(VALUE self)
|
579
|
+
{
|
580
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
581
|
+
cdCanvasEnd((cdCanvas*)NUM2UINT(v_canvas));
|
582
|
+
return Qnil;
|
583
|
+
}
|
584
|
+
|
585
|
+
VALUE rb_cdCanvasRect(VALUE self,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
586
|
+
{
|
587
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
588
|
+
int xmin = NUM2INT(v_xmin);
|
589
|
+
int xmax = NUM2INT(v_xmax);
|
590
|
+
int ymin = NUM2INT(v_ymin);
|
591
|
+
int ymax = NUM2INT(v_ymax);
|
592
|
+
cdCanvasRect((cdCanvas*)NUM2UINT(v_canvas),xmin,xmax,ymin,ymax);
|
593
|
+
return Qnil;
|
594
|
+
}
|
595
|
+
|
596
|
+
VALUE rb_cdCanvasBox(VALUE self,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
597
|
+
{
|
598
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
599
|
+
int xmin = NUM2INT(v_xmin);
|
600
|
+
int xmax = NUM2INT(v_xmax);
|
601
|
+
int ymin = NUM2INT(v_ymin);
|
602
|
+
int ymax = NUM2INT(v_ymax);
|
603
|
+
cdCanvasBox((cdCanvas*)NUM2UINT(v_canvas),xmin,xmax,ymin,ymax);
|
604
|
+
return Qnil;
|
605
|
+
}
|
606
|
+
|
607
|
+
VALUE rb_cdCanvasArc(VALUE self,VALUE v_xc,VALUE v_yc,VALUE v_w,VALUE v_h,VALUE v_angle1,VALUE v_angle2)
|
608
|
+
{
|
609
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
610
|
+
int xc = NUM2INT(v_xc);
|
611
|
+
int yc = NUM2INT(v_yc);
|
612
|
+
int w = NUM2INT(v_w);
|
613
|
+
int h = NUM2INT(v_h);
|
614
|
+
double angle1 = RFLOAT(v_angle1)->value;
|
615
|
+
double angle2 = RFLOAT(v_angle2)->value;
|
616
|
+
cdCanvasArc((cdCanvas*)NUM2UINT(v_canvas),xc,yc,w,h,angle1,angle2);
|
617
|
+
return Qnil;
|
618
|
+
}
|
619
|
+
|
620
|
+
VALUE rb_cdCanvasSector(VALUE self,VALUE v_xc,VALUE v_yc,VALUE v_w,VALUE v_h,VALUE v_angle1,VALUE v_angle2)
|
621
|
+
{
|
622
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
623
|
+
int xc = NUM2INT(v_xc);
|
624
|
+
int yc = NUM2INT(v_yc);
|
625
|
+
int w = NUM2INT(v_w);
|
626
|
+
int h = NUM2INT(v_h);
|
627
|
+
double angle1 = RFLOAT(v_angle1)->value;
|
628
|
+
double angle2 = RFLOAT(v_angle2)->value;
|
629
|
+
cdCanvasSector((cdCanvas*)NUM2UINT(v_canvas),xc,yc,w,h,angle1,angle2);
|
630
|
+
return Qnil;
|
631
|
+
}
|
632
|
+
|
633
|
+
VALUE rb_cdCanvasChord(VALUE self,VALUE v_xc,VALUE v_yc,VALUE v_w,VALUE v_h,VALUE v_angle1,VALUE v_angle2)
|
634
|
+
{
|
635
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
636
|
+
int xc = NUM2INT(v_xc);
|
637
|
+
int yc = NUM2INT(v_yc);
|
638
|
+
int w = NUM2INT(v_w);
|
639
|
+
int h = NUM2INT(v_h);
|
640
|
+
double angle1 = RFLOAT(v_angle1)->value;
|
641
|
+
double angle2 = RFLOAT(v_angle2)->value;
|
642
|
+
cdCanvasChord((cdCanvas*)NUM2UINT(v_canvas),xc,yc,w,h,angle1,angle2);
|
643
|
+
return Qnil;
|
644
|
+
}
|
645
|
+
|
646
|
+
VALUE rb_cdCanvasText(VALUE self,VALUE v_x,VALUE v_y,VALUE v_s)
|
647
|
+
{
|
648
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
649
|
+
int x = NUM2INT(v_x);
|
650
|
+
int y = NUM2INT(v_y);
|
651
|
+
const char* s = RSTRING(v_s)->ptr;
|
652
|
+
cdCanvasText((cdCanvas*)NUM2UINT(v_canvas),x,y,s);
|
653
|
+
return Qnil;
|
654
|
+
}
|
655
|
+
|
656
|
+
VALUE rb_cdfCanvasLine(VALUE self,VALUE v_x1,VALUE v_y1,VALUE v_x2,VALUE v_y2)
|
657
|
+
{
|
658
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
659
|
+
double x1 = RFLOAT(v_x1)->value;
|
660
|
+
double y1 = RFLOAT(v_y1)->value;
|
661
|
+
double x2 = RFLOAT(v_x2)->value;
|
662
|
+
double y2 = RFLOAT(v_y2)->value;
|
663
|
+
cdfCanvasLine((cdCanvas*)NUM2UINT(v_canvas),x1,y1,x2,y2);
|
664
|
+
return Qnil;
|
665
|
+
}
|
666
|
+
|
667
|
+
VALUE rb_cdfCanvasVertex(VALUE self,VALUE v_x,VALUE v_y)
|
668
|
+
{
|
669
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
670
|
+
double x = RFLOAT(v_x)->value;
|
671
|
+
double y = RFLOAT(v_y)->value;
|
672
|
+
cdfCanvasVertex((cdCanvas*)NUM2UINT(v_canvas),x,y);
|
673
|
+
return Qnil;
|
674
|
+
}
|
675
|
+
|
676
|
+
VALUE rb_cdfCanvasRect(VALUE self,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
677
|
+
{
|
678
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
679
|
+
double xmin = RFLOAT(v_xmin)->value;
|
680
|
+
double xmax = RFLOAT(v_xmax)->value;
|
681
|
+
double ymin = RFLOAT(v_ymin)->value;
|
682
|
+
double ymax = RFLOAT(v_ymax)->value;
|
683
|
+
cdfCanvasRect((cdCanvas*)NUM2UINT(v_canvas),xmin,xmax,ymin,ymax);
|
684
|
+
return Qnil;
|
685
|
+
}
|
686
|
+
|
687
|
+
VALUE rb_cdfCanvasBox(VALUE self,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
688
|
+
{
|
689
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
690
|
+
double xmin = RFLOAT(v_xmin)->value;
|
691
|
+
double xmax = RFLOAT(v_xmax)->value;
|
692
|
+
double ymin = RFLOAT(v_ymin)->value;
|
693
|
+
double ymax = RFLOAT(v_ymax)->value;
|
694
|
+
cdfCanvasBox((cdCanvas*)NUM2UINT(v_canvas),xmin,xmax,ymin,ymax);
|
695
|
+
return Qnil;
|
696
|
+
}
|
697
|
+
|
698
|
+
VALUE rb_cdfCanvasArc(VALUE self,VALUE v_xc,VALUE v_yc,VALUE v_w,VALUE v_h,VALUE v_angle1,VALUE v_angle2)
|
699
|
+
{
|
700
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
701
|
+
double xc = RFLOAT(v_xc)->value;
|
702
|
+
double yc = RFLOAT(v_yc)->value;
|
703
|
+
double w = RFLOAT(v_w)->value;
|
704
|
+
double h = RFLOAT(v_h)->value;
|
705
|
+
double angle1 = RFLOAT(v_angle1)->value;
|
706
|
+
double angle2 = RFLOAT(v_angle2)->value;
|
707
|
+
cdfCanvasArc((cdCanvas*)NUM2UINT(v_canvas),xc,yc,w,h,angle1,angle2);
|
708
|
+
return Qnil;
|
709
|
+
}
|
710
|
+
|
711
|
+
VALUE rb_cdfCanvasSector(VALUE self,VALUE v_xc,VALUE v_yc,VALUE v_w,VALUE v_h,VALUE v_angle1,VALUE v_angle2)
|
712
|
+
{
|
713
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
714
|
+
double xc = RFLOAT(v_xc)->value;
|
715
|
+
double yc = RFLOAT(v_yc)->value;
|
716
|
+
double w = RFLOAT(v_w)->value;
|
717
|
+
double h = RFLOAT(v_h)->value;
|
718
|
+
double angle1 = RFLOAT(v_angle1)->value;
|
719
|
+
double angle2 = RFLOAT(v_angle2)->value;
|
720
|
+
cdfCanvasSector((cdCanvas*)NUM2UINT(v_canvas),xc,yc,w,h,angle1,angle2);
|
721
|
+
return Qnil;
|
722
|
+
}
|
723
|
+
|
724
|
+
VALUE rb_cdfCanvasChord(VALUE self,VALUE v_xc,VALUE v_yc,VALUE v_w,VALUE v_h,VALUE v_angle1,VALUE v_angle2)
|
725
|
+
{
|
726
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
727
|
+
double xc = RFLOAT(v_xc)->value;
|
728
|
+
double yc = RFLOAT(v_yc)->value;
|
729
|
+
double w = RFLOAT(v_w)->value;
|
730
|
+
double h = RFLOAT(v_h)->value;
|
731
|
+
double angle1 = RFLOAT(v_angle1)->value;
|
732
|
+
double angle2 = RFLOAT(v_angle2)->value;
|
733
|
+
cdfCanvasChord((cdCanvas*)NUM2UINT(v_canvas),xc,yc,w,h,angle1,angle2);
|
734
|
+
return Qnil;
|
735
|
+
}
|
736
|
+
|
737
|
+
VALUE rb_cdfCanvasText(VALUE self,VALUE v_x,VALUE v_y,VALUE v_s)
|
738
|
+
{
|
739
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
740
|
+
double x = RFLOAT(v_x)->value;
|
741
|
+
double y = RFLOAT(v_y)->value;
|
742
|
+
const char* s = RSTRING(v_s)->ptr;
|
743
|
+
cdfCanvasText((cdCanvas*)NUM2UINT(v_canvas),x,y,s);
|
744
|
+
return Qnil;
|
745
|
+
}
|
746
|
+
|
747
|
+
VALUE rb_cdCanvasSetBackground(VALUE self,VALUE v_color)
|
748
|
+
{
|
749
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
750
|
+
long color = NUM2LONG(v_color);
|
751
|
+
cdCanvasSetBackground((cdCanvas*)NUM2UINT(v_canvas),color);
|
752
|
+
return Qnil;
|
753
|
+
}
|
754
|
+
|
755
|
+
VALUE rb_cdCanvasSetForeground(VALUE self,VALUE v_color)
|
756
|
+
{
|
757
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
758
|
+
long color = NUM2LONG(v_color);
|
759
|
+
cdCanvasSetForeground((cdCanvas*)NUM2UINT(v_canvas),color);
|
760
|
+
return Qnil;
|
761
|
+
}
|
762
|
+
|
763
|
+
VALUE rb_cdCanvasBackground(VALUE self,VALUE v_color)
|
764
|
+
{
|
765
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
766
|
+
long color = NUM2LONG(v_color);
|
767
|
+
long v;
|
768
|
+
v = cdCanvasBackground((cdCanvas*)NUM2UINT(v_canvas),color);
|
769
|
+
return UINT2NUM((unsigned)v);
|
770
|
+
}
|
771
|
+
|
772
|
+
VALUE rb_cdCanvasForeground(VALUE self,VALUE v_color)
|
773
|
+
{
|
774
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
775
|
+
long color = NUM2LONG(v_color);
|
776
|
+
long v;
|
777
|
+
v = cdCanvasForeground((cdCanvas*)NUM2UINT(v_canvas),color);
|
778
|
+
return UINT2NUM((unsigned)v);
|
779
|
+
}
|
780
|
+
|
781
|
+
VALUE rb_cdCanvasBackOpacity(VALUE self,VALUE v_opacity)
|
782
|
+
{
|
783
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
784
|
+
int opacity = NUM2INT(v_opacity);
|
785
|
+
int v;
|
786
|
+
v = cdCanvasBackOpacity((cdCanvas*)NUM2UINT(v_canvas),opacity);
|
787
|
+
return UINT2NUM((unsigned)v);
|
788
|
+
}
|
789
|
+
|
790
|
+
VALUE rb_cdCanvasWriteMode(VALUE self,VALUE v_mode)
|
791
|
+
{
|
792
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
793
|
+
int mode = NUM2INT(v_mode);
|
794
|
+
int v;
|
795
|
+
v = cdCanvasWriteMode((cdCanvas*)NUM2UINT(v_canvas),mode);
|
796
|
+
return UINT2NUM((unsigned)v);
|
797
|
+
}
|
798
|
+
|
799
|
+
VALUE rb_cdCanvasLineStyle(VALUE self,VALUE v_style)
|
800
|
+
{
|
801
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
802
|
+
int style = NUM2INT(v_style);
|
803
|
+
int v;
|
804
|
+
v = cdCanvasLineStyle((cdCanvas*)NUM2UINT(v_canvas),style);
|
805
|
+
return UINT2NUM((unsigned)v);
|
806
|
+
}
|
807
|
+
|
808
|
+
VALUE rb_cdCanvasLineStyleDashes(VALUE self,VALUE v_dashes)
|
809
|
+
{
|
810
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
811
|
+
int dashes[100];
|
812
|
+
int i;
|
813
|
+
int count = RARRAY(v_dashes)->len;
|
814
|
+
for(i=0;i<count;i++)
|
815
|
+
dashes[i] = NUM2INT(RARRAY(v_dashes)->ptr[i]);
|
816
|
+
cdCanvasLineStyleDashes((cdCanvas*)NUM2UINT(v_canvas),dashes,count);
|
817
|
+
return Qnil;
|
818
|
+
}
|
819
|
+
|
820
|
+
VALUE rb_cdCanvasLineWidth(VALUE self,VALUE v_width)
|
821
|
+
{
|
822
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
823
|
+
int width = NUM2INT(v_width);
|
824
|
+
int v;
|
825
|
+
v = cdCanvasLineWidth((cdCanvas*)NUM2UINT(v_canvas),width);
|
826
|
+
return UINT2NUM((unsigned)v);
|
827
|
+
}
|
828
|
+
|
829
|
+
VALUE rb_cdCanvasLineJoin(VALUE self,VALUE v_join)
|
830
|
+
{
|
831
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
832
|
+
int join = NUM2INT(v_join);
|
833
|
+
int v;
|
834
|
+
v = cdCanvasLineJoin((cdCanvas*)NUM2UINT(v_canvas),join);
|
835
|
+
return UINT2NUM((unsigned)v);
|
836
|
+
}
|
837
|
+
|
838
|
+
VALUE rb_cdCanvasLineCap(VALUE self,VALUE v_cap)
|
839
|
+
{
|
840
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
841
|
+
int cap = NUM2INT(v_cap);
|
842
|
+
int v;
|
843
|
+
v = cdCanvasLineCap((cdCanvas*)NUM2UINT(v_canvas),cap);
|
844
|
+
return UINT2NUM((unsigned)v);
|
845
|
+
}
|
846
|
+
|
847
|
+
VALUE rb_cdCanvasInteriorStyle(VALUE self,VALUE v_style)
|
848
|
+
{
|
849
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
850
|
+
int style = NUM2INT(v_style);
|
851
|
+
int v;
|
852
|
+
v = cdCanvasInteriorStyle((cdCanvas*)NUM2UINT(v_canvas),style);
|
853
|
+
return UINT2NUM((unsigned)v);
|
854
|
+
}
|
855
|
+
|
856
|
+
VALUE rb_cdCanvasHatch(VALUE self,VALUE v_style)
|
857
|
+
{
|
858
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
859
|
+
int style = NUM2INT(v_style);
|
860
|
+
int v;
|
861
|
+
v = cdCanvasHatch((cdCanvas*)NUM2UINT(v_canvas),style);
|
862
|
+
return UINT2NUM((unsigned)v);
|
863
|
+
}
|
864
|
+
|
865
|
+
VALUE rb_cdCanvasStipple(VALUE self,VALUE v_w,VALUE v_h,VALUE v_stipple)
|
866
|
+
{
|
867
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
868
|
+
int w = NUM2INT(v_w);
|
869
|
+
int h = NUM2INT(v_h);
|
870
|
+
const unsigned char* stipple = (unsigned char*)RSTRING(v_stipple)->ptr;
|
871
|
+
cdCanvasStipple((cdCanvas*)NUM2UINT(v_canvas),w,h,stipple);
|
872
|
+
return Qnil;
|
873
|
+
}
|
874
|
+
|
875
|
+
VALUE rb_cdCanvasGetStipple(VALUE self)
|
876
|
+
{
|
877
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
878
|
+
int n;
|
879
|
+
int m;
|
880
|
+
char* v;
|
881
|
+
VALUE v_r;
|
882
|
+
v = (char*)cdCanvasGetStipple((cdCanvas*)NUM2UINT(v_canvas),&n,&m);
|
883
|
+
v_r = rb_ary_new3(3,rb_str_new(v,n*m),INT2FIX(n),INT2FIX(m));
|
884
|
+
return v_r;
|
885
|
+
}
|
886
|
+
|
887
|
+
VALUE rb_cdCanvasPattern(VALUE self,VALUE v_w,VALUE v_h,VALUE v_pattern)
|
888
|
+
{
|
889
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
890
|
+
int w = NUM2INT(v_w);
|
891
|
+
int h = NUM2INT(v_h);
|
892
|
+
long int pattern[100];
|
893
|
+
int i;
|
894
|
+
for(i=0;i<w*h && i<RARRAY(v_pattern)->len;i++)
|
895
|
+
pattern[i] = NUM2LONG(RARRAY(v_pattern)->ptr[i]);
|
896
|
+
cdCanvasPattern((cdCanvas*)NUM2UINT(v_canvas),w,h,pattern);
|
897
|
+
return Qnil;
|
898
|
+
}
|
899
|
+
|
900
|
+
VALUE rb_cdCanvasGetPattern(VALUE self)
|
901
|
+
{
|
902
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
903
|
+
int n;
|
904
|
+
int m;
|
905
|
+
long* v;
|
906
|
+
int i;
|
907
|
+
VALUE v_r,v_p;
|
908
|
+
v = cdCanvasGetPattern((cdCanvas*)NUM2UINT(v_canvas),&n,&m);
|
909
|
+
v_p = rb_ary_new();
|
910
|
+
for(i=0;i<n*m;i++)
|
911
|
+
rb_ary_push(v_p,LONG2NUM(v[i]));
|
912
|
+
v_r = rb_ary_new3(3,v_p,INT2FIX(n),INT2FIX(m));
|
913
|
+
return v_r;
|
914
|
+
}
|
915
|
+
|
916
|
+
VALUE rb_cdCanvasFillMode(VALUE self,VALUE v_mode)
|
917
|
+
{
|
918
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
919
|
+
int mode = NUM2INT(v_mode);
|
920
|
+
int v;
|
921
|
+
v = cdCanvasFillMode((cdCanvas*)NUM2UINT(v_canvas),mode);
|
922
|
+
return UINT2NUM((unsigned)v);
|
923
|
+
}
|
924
|
+
|
925
|
+
VALUE rb_cdCanvasFont(VALUE self,VALUE v_type_face,VALUE v_style,VALUE v_size)
|
926
|
+
{
|
927
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
928
|
+
const char* type_face = NULL;
|
929
|
+
int style = NUM2INT(v_style);
|
930
|
+
int size = NUM2INT(v_size);
|
931
|
+
int v;
|
932
|
+
if(v_type_face!=Qnil)
|
933
|
+
type_face = RSTRING(v_type_face)->ptr;
|
934
|
+
v = cdCanvasFont((cdCanvas*)NUM2UINT(v_canvas),type_face,style,size);
|
935
|
+
return UINT2NUM((unsigned)v);
|
936
|
+
}
|
937
|
+
|
938
|
+
VALUE rb_cdCanvasGetFont(VALUE self)
|
939
|
+
{
|
940
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
941
|
+
char type_face[100];
|
942
|
+
int style;
|
943
|
+
int size;
|
944
|
+
VALUE v_r;
|
945
|
+
cdCanvasGetFont((cdCanvas*)NUM2UINT(v_canvas),type_face,&style,&size);
|
946
|
+
v_r = rb_ary_new3(3,rb_str_new2(type_face),INT2FIX(style),INT2FIX(size));
|
947
|
+
return Qnil;
|
948
|
+
}
|
949
|
+
|
950
|
+
VALUE rb_cdCanvasNativeFont(VALUE self,VALUE v_font)
|
951
|
+
{
|
952
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
953
|
+
const char* font = RSTRING(v_font)->ptr;
|
954
|
+
char* v;
|
955
|
+
v = cdCanvasNativeFont((cdCanvas*)NUM2UINT(v_canvas),font);
|
956
|
+
return rb_str_new2(v);
|
957
|
+
}
|
958
|
+
|
959
|
+
VALUE rb_cdCanvasTextAlignment(VALUE self,VALUE v_alignment)
|
960
|
+
{
|
961
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
962
|
+
int alignment = NUM2INT(v_alignment);
|
963
|
+
int v;
|
964
|
+
v = cdCanvasTextAlignment((cdCanvas*)NUM2UINT(v_canvas),alignment);
|
965
|
+
return UINT2NUM((unsigned)v);
|
966
|
+
}
|
967
|
+
|
968
|
+
VALUE rb_cdCanvasTextOrientation(VALUE self,VALUE v_angle)
|
969
|
+
{
|
970
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
971
|
+
double angle = RFLOAT(v_angle)->value;
|
972
|
+
double v;
|
973
|
+
v = cdCanvasTextOrientation((cdCanvas*)NUM2UINT(v_canvas),angle);
|
974
|
+
return UINT2NUM((unsigned)v);
|
975
|
+
}
|
976
|
+
|
977
|
+
VALUE rb_cdCanvasMarkType(VALUE self,VALUE v_type)
|
978
|
+
{
|
979
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
980
|
+
int type = NUM2INT(v_type);
|
981
|
+
int v;
|
982
|
+
v = cdCanvasMarkType((cdCanvas*)NUM2UINT(v_canvas),type);
|
983
|
+
return UINT2NUM((unsigned)v);
|
984
|
+
}
|
985
|
+
|
986
|
+
VALUE rb_cdCanvasMarkSize(VALUE self,VALUE v_size)
|
987
|
+
{
|
988
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
989
|
+
int size = NUM2INT(v_size);
|
990
|
+
int v;
|
991
|
+
v = cdCanvasMarkSize((cdCanvas*)NUM2UINT(v_canvas),size);
|
992
|
+
return UINT2NUM((unsigned)v);
|
993
|
+
}
|
994
|
+
|
995
|
+
VALUE rb_cdCanvasVectorText(VALUE self,VALUE v_x,VALUE v_y,VALUE v_s)
|
996
|
+
{
|
997
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
998
|
+
int x = NUM2INT(v_x);
|
999
|
+
int y = NUM2INT(v_y);
|
1000
|
+
const char* s = RSTRING(v_s)->ptr;
|
1001
|
+
cdCanvasVectorText((cdCanvas*)NUM2UINT(v_canvas),x,y,s);
|
1002
|
+
return Qnil;
|
1003
|
+
}
|
1004
|
+
|
1005
|
+
VALUE rb_cdCanvasMultiLineVectorText(VALUE self,VALUE v_x,VALUE v_y,VALUE v_s)
|
1006
|
+
{
|
1007
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1008
|
+
int x = NUM2INT(v_x);
|
1009
|
+
int y = NUM2INT(v_y);
|
1010
|
+
const char* s = RSTRING(v_s)->ptr;
|
1011
|
+
cdCanvasMultiLineVectorText((cdCanvas*)NUM2UINT(v_canvas),x,y,s);
|
1012
|
+
return Qnil;
|
1013
|
+
}
|
1014
|
+
|
1015
|
+
VALUE rb_cdCanvasVectorFont(VALUE self,VALUE v_filename)
|
1016
|
+
{
|
1017
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1018
|
+
const char *filename = NULL;
|
1019
|
+
char *v;
|
1020
|
+
if(v_filename!=Qnil) filename = RSTRING(v_filename)->ptr;
|
1021
|
+
v = cdCanvasVectorFont((cdCanvas*)NUM2UINT(v_canvas),filename);
|
1022
|
+
if(v==NULL) return Qnil;
|
1023
|
+
return rb_str_new2(v);
|
1024
|
+
}
|
1025
|
+
|
1026
|
+
VALUE rb_cdCanvasVectorTextDirection(VALUE self,VALUE v_x1,VALUE v_y1,VALUE v_x2,VALUE v_y2)
|
1027
|
+
{
|
1028
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1029
|
+
int x1 = NUM2INT(v_x1);
|
1030
|
+
int y1 = NUM2INT(v_y1);
|
1031
|
+
int x2 = NUM2INT(v_x2);
|
1032
|
+
int y2 = NUM2INT(v_y2);
|
1033
|
+
cdCanvasVectorTextDirection((cdCanvas*)NUM2UINT(v_canvas),x1,y1,x2,y2);
|
1034
|
+
return Qnil;
|
1035
|
+
}
|
1036
|
+
|
1037
|
+
VALUE rb_cdCanvasVectorTextTransform(VALUE self,VALUE v_matrix)
|
1038
|
+
{
|
1039
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1040
|
+
double* v;
|
1041
|
+
double *matrix = NULL;
|
1042
|
+
int i;
|
1043
|
+
VALUE v_r;
|
1044
|
+
if(v_matrix!=Qnil) {
|
1045
|
+
matrix = xmalloc(sizeof(double)*6);
|
1046
|
+
for(i=0;i<RARRAY(v_matrix)->len && i<6;i++)
|
1047
|
+
matrix[i] = RFLOAT(RARRAY(v_matrix)->ptr[i])->value;
|
1048
|
+
}
|
1049
|
+
v = cdCanvasVectorTextTransform((cdCanvas*)NUM2UINT(v_canvas),matrix);
|
1050
|
+
if(matrix) free(matrix);
|
1051
|
+
v_r = rb_ary_new();
|
1052
|
+
for(i=0;i<6;i++)
|
1053
|
+
rb_ary_push(v_r,rb_float_new(v[i]));
|
1054
|
+
return v_r;
|
1055
|
+
}
|
1056
|
+
|
1057
|
+
VALUE rb_cdCanvasVectorTextSize(VALUE self,VALUE v_size_x,VALUE v_size_y,VALUE v_s)
|
1058
|
+
{
|
1059
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1060
|
+
int size_x = NUM2INT(v_size_x);
|
1061
|
+
int size_y = NUM2INT(v_size_y);
|
1062
|
+
const char* s = RSTRING(v_s)->ptr;
|
1063
|
+
cdCanvasVectorTextSize((cdCanvas*)NUM2UINT(v_canvas),size_x,size_y,s);
|
1064
|
+
return Qnil;
|
1065
|
+
}
|
1066
|
+
|
1067
|
+
VALUE rb_cdCanvasVectorCharSize(VALUE self,VALUE v_size)
|
1068
|
+
{
|
1069
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1070
|
+
int size = NUM2INT(v_size);
|
1071
|
+
int v;
|
1072
|
+
v = cdCanvasVectorCharSize((cdCanvas*)NUM2UINT(v_canvas),size);
|
1073
|
+
return UINT2NUM((unsigned)v);
|
1074
|
+
}
|
1075
|
+
|
1076
|
+
VALUE rb_cdCanvasGetVectorTextSize(VALUE self,VALUE v_s)
|
1077
|
+
{
|
1078
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1079
|
+
const char* s = RSTRING(v_s)->ptr;
|
1080
|
+
int x;
|
1081
|
+
int y;
|
1082
|
+
VALUE v_r;
|
1083
|
+
cdCanvasGetVectorTextSize((cdCanvas*)NUM2UINT(v_canvas),s,&x,&y);
|
1084
|
+
v_r = rb_ary_new3(2,INT2FIX(x),INT2FIX(y));
|
1085
|
+
return Qnil;
|
1086
|
+
}
|
1087
|
+
|
1088
|
+
VALUE rb_cdCanvasGetVectorTextBounds(VALUE self,VALUE v_s,VALUE v_x,VALUE v_y)
|
1089
|
+
{
|
1090
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1091
|
+
const char* s = RSTRING(v_s)->ptr;
|
1092
|
+
int x = NUM2INT(v_x);
|
1093
|
+
int y = NUM2INT(v_y);
|
1094
|
+
int rect[8];
|
1095
|
+
VALUE v_r;
|
1096
|
+
int i;
|
1097
|
+
cdCanvasGetVectorTextBounds((cdCanvas*)NUM2UINT(v_canvas),s,x,y,rect);
|
1098
|
+
v_r = rb_ary_new();
|
1099
|
+
for(i=0;i<8;i++)
|
1100
|
+
rb_ary_push(v_r,INT2FIX(rect[i]));
|
1101
|
+
return v_r;
|
1102
|
+
}
|
1103
|
+
|
1104
|
+
VALUE rb_cdCanvasGetFontDim(VALUE self)
|
1105
|
+
{
|
1106
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1107
|
+
int max_width;
|
1108
|
+
int height;
|
1109
|
+
int ascent;
|
1110
|
+
int descent;
|
1111
|
+
VALUE v_r;
|
1112
|
+
cdCanvasGetFontDim((cdCanvas*)NUM2UINT(v_canvas),&max_width,&height,&ascent,&descent);
|
1113
|
+
v_r = rb_ary_new3(4,INT2FIX(max_width),INT2FIX(height),INT2FIX(ascent),INT2FIX(descent));
|
1114
|
+
return v_r;
|
1115
|
+
}
|
1116
|
+
|
1117
|
+
VALUE rb_cdCanvasGetTextSize(VALUE self,VALUE v_s)
|
1118
|
+
{
|
1119
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1120
|
+
const char* s = RSTRING(v_s)->ptr;
|
1121
|
+
int width;
|
1122
|
+
int height;
|
1123
|
+
VALUE v_r;
|
1124
|
+
cdCanvasGetTextSize((cdCanvas*)NUM2UINT(v_canvas),s,&width,&height);
|
1125
|
+
v_r = rb_ary_new3(2,INT2FIX(width),INT2FIX(height));
|
1126
|
+
return v_r;
|
1127
|
+
}
|
1128
|
+
|
1129
|
+
VALUE rb_cdCanvasGetTextBox(VALUE self,VALUE v_x,VALUE v_y,VALUE v_s)
|
1130
|
+
{
|
1131
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1132
|
+
int x = NUM2INT(v_x);
|
1133
|
+
int y = NUM2INT(v_y);
|
1134
|
+
const char* s = RSTRING(v_s)->ptr;
|
1135
|
+
int xmin;
|
1136
|
+
int xmax;
|
1137
|
+
int ymin;
|
1138
|
+
int ymax;
|
1139
|
+
VALUE v_r;
|
1140
|
+
cdCanvasGetTextBox((cdCanvas*)NUM2UINT(v_canvas),x,y,s,&xmin,&xmax,&ymin,&ymax);
|
1141
|
+
v_r = rb_ary_new3(4,INT2FIX(xmin),INT2FIX(xmax),INT2FIX(ymin),INT2FIX(ymax));
|
1142
|
+
return v_r;
|
1143
|
+
}
|
1144
|
+
|
1145
|
+
VALUE rb_cdCanvasGetTextBounds(VALUE self,VALUE v_x,VALUE v_y,VALUE v_s)
|
1146
|
+
{
|
1147
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1148
|
+
int x = NUM2INT(v_x);
|
1149
|
+
int y = NUM2INT(v_y);
|
1150
|
+
const char* s = RSTRING(v_s)->ptr;
|
1151
|
+
int rect[8];
|
1152
|
+
VALUE v_r;
|
1153
|
+
int i;
|
1154
|
+
cdCanvasGetTextBounds((cdCanvas*)NUM2UINT(v_canvas),x,y,s,rect);
|
1155
|
+
v_r = rb_ary_new();
|
1156
|
+
for(i=0;i<8;i++)
|
1157
|
+
rb_ary_push(v_r,INT2FIX(rect[i]));
|
1158
|
+
return v_r;
|
1159
|
+
}
|
1160
|
+
|
1161
|
+
VALUE rb_cdCanvasGetColorPlanes(VALUE self)
|
1162
|
+
{
|
1163
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1164
|
+
int v;
|
1165
|
+
v = cdCanvasGetColorPlanes((cdCanvas*)NUM2UINT(v_canvas));
|
1166
|
+
return UINT2NUM((unsigned)v);
|
1167
|
+
}
|
1168
|
+
|
1169
|
+
VALUE rb_cdCanvasPalette(VALUE self,VALUE v_palette,VALUE v_mode)
|
1170
|
+
{
|
1171
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1172
|
+
int n = RARRAY(v_palette)->len;
|
1173
|
+
long int *palette = xmalloc(n*sizeof(long));
|
1174
|
+
int mode = NUM2INT(v_mode);
|
1175
|
+
int i;
|
1176
|
+
for(i=0;i<n;i++)
|
1177
|
+
palette[i] = NUM2LONG(RARRAY(v_palette)->ptr[i]);
|
1178
|
+
cdCanvasPalette((cdCanvas*)NUM2UINT(v_canvas),n,palette,mode);
|
1179
|
+
free(palette);
|
1180
|
+
return Qnil;
|
1181
|
+
}
|
1182
|
+
|
1183
|
+
VALUE rb_cdCanvasGetImageRGB(VALUE self,VALUE v_x,VALUE v_y,VALUE v_w,VALUE v_h)
|
1184
|
+
{
|
1185
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1186
|
+
int x = NUM2INT(v_x);
|
1187
|
+
int y = NUM2INT(v_y);
|
1188
|
+
int w = NUM2INT(v_w);
|
1189
|
+
int h = NUM2INT(v_h);
|
1190
|
+
unsigned char* r = (unsigned char*)xmalloc(w*h);
|
1191
|
+
unsigned char* g = (unsigned char*)xmalloc(w*h);
|
1192
|
+
unsigned char* b = (unsigned char*)xmalloc(w*h);
|
1193
|
+
VALUE v_r;
|
1194
|
+
cdCanvasGetImageRGB((cdCanvas*)NUM2UINT(v_canvas),r,g,b,x,y,w,h);
|
1195
|
+
v_r = rb_ary_new3(rb_str_new((char*)r,w*h),rb_str_new((char*)g,w*h),rb_str_new((char*)b,w*h));
|
1196
|
+
free(r);
|
1197
|
+
free(g);
|
1198
|
+
free(b);
|
1199
|
+
return v_r;
|
1200
|
+
}
|
1201
|
+
|
1202
|
+
VALUE rb_cdCanvasPutImageRectRGB(VALUE self,VALUE v_iw,VALUE v_ih,VALUE v_r,VALUE v_g,VALUE v_b,VALUE v_x,VALUE v_y,VALUE v_w,VALUE v_h,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
1203
|
+
{
|
1204
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1205
|
+
int iw = NUM2INT(v_iw);
|
1206
|
+
int ih = NUM2INT(v_ih);
|
1207
|
+
const unsigned char* r = (unsigned char*)RSTRING(v_r)->ptr;
|
1208
|
+
const unsigned char* g = (unsigned char*)RSTRING(v_g)->ptr;
|
1209
|
+
const unsigned char* b = (unsigned char*)RSTRING(v_b)->ptr;
|
1210
|
+
int x = NUM2INT(v_x);
|
1211
|
+
int y = NUM2INT(v_y);
|
1212
|
+
int w = NUM2INT(v_w);
|
1213
|
+
int h = NUM2INT(v_h);
|
1214
|
+
int xmin = NUM2INT(v_xmin);
|
1215
|
+
int xmax = NUM2INT(v_xmax);
|
1216
|
+
int ymin = NUM2INT(v_ymin);
|
1217
|
+
int ymax = NUM2INT(v_ymax);
|
1218
|
+
cdCanvasPutImageRectRGB((cdCanvas*)NUM2UINT(v_canvas),iw,ih,r,g,b,x,y,w,h,xmin,xmax,ymin,ymax);
|
1219
|
+
return Qnil;
|
1220
|
+
}
|
1221
|
+
|
1222
|
+
VALUE rb_cdCanvasPutImageRectRGBA(VALUE self,VALUE v_iw,VALUE v_ih,VALUE v_r,VALUE v_g,VALUE v_b,VALUE v_a,VALUE v_x,VALUE v_y,VALUE v_w,VALUE v_h,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
1223
|
+
{
|
1224
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1225
|
+
int iw = NUM2INT(v_iw);
|
1226
|
+
int ih = NUM2INT(v_ih);
|
1227
|
+
const unsigned char* r = (unsigned char*)RSTRING(v_r)->ptr;
|
1228
|
+
const unsigned char* g = (unsigned char*)RSTRING(v_g)->ptr;
|
1229
|
+
const unsigned char* b = (unsigned char*)RSTRING(v_b)->ptr;
|
1230
|
+
const unsigned char* a = NULL;
|
1231
|
+
int x = NUM2INT(v_x);
|
1232
|
+
int y = NUM2INT(v_y);
|
1233
|
+
int w = NUM2INT(v_w);
|
1234
|
+
int h = NUM2INT(v_h);
|
1235
|
+
int xmin = NUM2INT(v_xmin);
|
1236
|
+
int xmax = NUM2INT(v_xmax);
|
1237
|
+
int ymin = NUM2INT(v_ymin);
|
1238
|
+
int ymax = NUM2INT(v_ymax);
|
1239
|
+
if(v_a!=Qnil) a = (unsigned char*)RSTRING(v_a)->ptr;
|
1240
|
+
cdCanvasPutImageRectRGBA((cdCanvas*)NUM2UINT(v_canvas),iw,ih,r,g,b,a,x,y,w,h,xmin,xmax,ymin,ymax);
|
1241
|
+
return Qnil;
|
1242
|
+
}
|
1243
|
+
|
1244
|
+
VALUE rb_cdCanvasPutImageRectMap(VALUE self,VALUE v_iw,VALUE v_ih,VALUE v_index,VALUE v_colors,VALUE v_x,VALUE v_y,VALUE v_w,VALUE v_h,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
1245
|
+
{
|
1246
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1247
|
+
int iw = NUM2INT(v_iw);
|
1248
|
+
int ih = NUM2INT(v_ih);
|
1249
|
+
const unsigned char* index = (unsigned char*)RSTRING(v_index)->ptr;
|
1250
|
+
long int *colors = xmalloc(RARRAY(v_colors)->len*sizeof(long));
|
1251
|
+
int x = NUM2INT(v_x);
|
1252
|
+
int y = NUM2INT(v_y);
|
1253
|
+
int w = NUM2INT(v_w);
|
1254
|
+
int h = NUM2INT(v_h);
|
1255
|
+
int xmin = NUM2INT(v_xmin);
|
1256
|
+
int xmax = NUM2INT(v_xmax);
|
1257
|
+
int ymin = NUM2INT(v_ymin);
|
1258
|
+
int ymax = NUM2INT(v_ymax);
|
1259
|
+
int i;
|
1260
|
+
for(i=0;i<RARRAY(v_colors)->len;i++)
|
1261
|
+
colors[i] = NUM2LONG(RARRAY(v_colors)->ptr[i]);
|
1262
|
+
cdCanvasPutImageRectMap((cdCanvas*)NUM2UINT(v_canvas),iw,ih,index,colors,x,y,w,h,xmin,xmax,ymin,ymax);
|
1263
|
+
free(colors);
|
1264
|
+
return Qnil;
|
1265
|
+
}
|
1266
|
+
|
1267
|
+
VALUE rb_cdCanvasCreateImage(VALUE self,VALUE v_w,VALUE v_h)
|
1268
|
+
{
|
1269
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1270
|
+
int w = NUM2INT(v_w);
|
1271
|
+
int h = NUM2INT(v_h);
|
1272
|
+
cdImage* v;
|
1273
|
+
v = cdCanvasCreateImage((cdCanvas*)NUM2UINT(v_canvas),w,h);
|
1274
|
+
return UINT2NUM((unsigned)v);
|
1275
|
+
}
|
1276
|
+
|
1277
|
+
VALUE rb_cdKillImage(VALUE self,VALUE v_image)
|
1278
|
+
{
|
1279
|
+
cdImage* image = (cdImage*)NUM2UINT(v_image);
|
1280
|
+
cdKillImage(image);
|
1281
|
+
return Qnil;
|
1282
|
+
}
|
1283
|
+
|
1284
|
+
VALUE rb_cdCanvasGetImage(VALUE self,VALUE v_image,VALUE v_x,VALUE v_y)
|
1285
|
+
{
|
1286
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1287
|
+
int x = NUM2INT(v_x);
|
1288
|
+
int y = NUM2INT(v_y);
|
1289
|
+
cdImage* image = (cdImage*)NUM2UINT(v_image);
|
1290
|
+
cdCanvasGetImage((cdCanvas*)NUM2UINT(v_canvas),image,x,y);
|
1291
|
+
return Qnil;
|
1292
|
+
}
|
1293
|
+
|
1294
|
+
VALUE rb_cdCanvasPutImageRect(VALUE self,VALUE v_image,VALUE v_x,VALUE v_y,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
1295
|
+
{
|
1296
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1297
|
+
int x = NUM2INT(v_x);
|
1298
|
+
int y = NUM2INT(v_y);
|
1299
|
+
int xmin = NUM2INT(v_xmin);
|
1300
|
+
int xmax = NUM2INT(v_xmax);
|
1301
|
+
int ymin = NUM2INT(v_ymin);
|
1302
|
+
int ymax = NUM2INT(v_ymax);
|
1303
|
+
cdImage* image = (cdImage*)NUM2UINT(v_image);
|
1304
|
+
cdCanvasPutImageRect((cdCanvas*)NUM2UINT(v_canvas),image,x,y,xmin,xmax,ymin,ymax);
|
1305
|
+
return Qnil;
|
1306
|
+
}
|
1307
|
+
|
1308
|
+
VALUE rb_cdCanvasScrollArea(VALUE self,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax,VALUE v_dx,VALUE v_dy)
|
1309
|
+
{
|
1310
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1311
|
+
int xmin = NUM2INT(v_xmin);
|
1312
|
+
int xmax = NUM2INT(v_xmax);
|
1313
|
+
int ymin = NUM2INT(v_ymin);
|
1314
|
+
int ymax = NUM2INT(v_ymax);
|
1315
|
+
int dx = NUM2INT(v_dx);
|
1316
|
+
int dy = NUM2INT(v_dy);
|
1317
|
+
cdCanvasScrollArea((cdCanvas*)NUM2UINT(v_canvas),xmin,xmax,ymin,ymax,dx,dy);
|
1318
|
+
return Qnil;
|
1319
|
+
}
|
1320
|
+
|
1321
|
+
VALUE rb_cdCreateBitmap(VALUE self,VALUE v_w,VALUE v_h,VALUE v_type)
|
1322
|
+
{
|
1323
|
+
int w = NUM2INT(v_w);
|
1324
|
+
int h = NUM2INT(v_h);
|
1325
|
+
int type = NUM2INT(v_type);
|
1326
|
+
cdBitmap* v;
|
1327
|
+
v = cdCreateBitmap(w,h,type);
|
1328
|
+
return UINT2NUM((unsigned)v);
|
1329
|
+
}
|
1330
|
+
|
1331
|
+
VALUE rb_cdInitBitmap(int argc,VALUE *argv,VALUE self)
|
1332
|
+
{
|
1333
|
+
int w = NUM2INT(argv[0]);
|
1334
|
+
int h = NUM2INT(argv[1]);
|
1335
|
+
int type = NUM2INT(argv[2]);
|
1336
|
+
cdBitmap* v;
|
1337
|
+
unsigned char* red = NULL;
|
1338
|
+
unsigned char* green = NULL;
|
1339
|
+
unsigned char* blue = NULL;
|
1340
|
+
unsigned char* alpha = NULL;
|
1341
|
+
unsigned char* index = NULL;
|
1342
|
+
long int* colors = NULL;
|
1343
|
+
int i;
|
1344
|
+
if(type==CD_RGBA) {
|
1345
|
+
red = (unsigned char*)RSTRING(argv[3])->ptr;
|
1346
|
+
green = (unsigned char*)RSTRING(argv[4])->ptr;
|
1347
|
+
blue = (unsigned char*)RSTRING(argv[5])->ptr;
|
1348
|
+
alpha = (unsigned char*)RSTRING(argv[6])->ptr;
|
1349
|
+
v = cdInitBitmap(w,h,type,red,green,blue,alpha);
|
1350
|
+
}
|
1351
|
+
else if(type==CD_RGB) {
|
1352
|
+
red = (unsigned char*)RSTRING(argv[3])->ptr;
|
1353
|
+
green = (unsigned char*)RSTRING(argv[4])->ptr;
|
1354
|
+
blue = (unsigned char*)RSTRING(argv[5])->ptr;
|
1355
|
+
v = cdInitBitmap(w,h,type,red,green,blue);
|
1356
|
+
}
|
1357
|
+
else if(type==CD_MAP) {
|
1358
|
+
index = (unsigned char*)RSTRING(argv[5])->ptr;
|
1359
|
+
colors = xmalloc(RARRAY(argv[4])->len);
|
1360
|
+
for(i=0;i<RARRAY(argv[4])->len;i++)
|
1361
|
+
colors[i] = RARRAY(argv[4])->ptr[i];
|
1362
|
+
v = cdInitBitmap(w,h,type,index,colors);
|
1363
|
+
}
|
1364
|
+
else {
|
1365
|
+
rb_raise(rb_eArgError,"Invalid Argument");
|
1366
|
+
}
|
1367
|
+
if(colors) free(colors);
|
1368
|
+
return UINT2NUM((unsigned)v);
|
1369
|
+
}
|
1370
|
+
|
1371
|
+
|
1372
|
+
VALUE rb_cdKillBitmap(VALUE self,VALUE v_bitmap)
|
1373
|
+
{
|
1374
|
+
cdKillBitmap((cdBitmap*)NUM2UINT(v_bitmap));
|
1375
|
+
return Qnil;
|
1376
|
+
}
|
1377
|
+
|
1378
|
+
VALUE rb_cdBitmapGetData(VALUE self,VALUE v_bitmap,VALUE v_dataptr)
|
1379
|
+
{
|
1380
|
+
int dataptr = NUM2INT(v_dataptr);
|
1381
|
+
char* v;
|
1382
|
+
v = (char*)cdBitmapGetData((cdBitmap*)NUM2UINT(v_bitmap),dataptr);
|
1383
|
+
return rb_str_new2(v);
|
1384
|
+
}
|
1385
|
+
|
1386
|
+
VALUE rb_cdBitmapSetRect(VALUE self,VALUE v_bitmap,VALUE v_xmin,VALUE v_xmax,VALUE v_ymin,VALUE v_ymax)
|
1387
|
+
{
|
1388
|
+
int xmin = NUM2INT(v_xmin);
|
1389
|
+
int xmax = NUM2INT(v_xmax);
|
1390
|
+
int ymin = NUM2INT(v_ymin);
|
1391
|
+
int ymax = NUM2INT(v_ymax);
|
1392
|
+
cdBitmapSetRect((cdBitmap*)NUM2UINT(v_bitmap),xmin,xmax,ymin,ymax);
|
1393
|
+
return Qnil;
|
1394
|
+
}
|
1395
|
+
|
1396
|
+
VALUE rb_cdCanvasPutBitmap(VALUE self,VALUE v_bitmap,VALUE v_x,VALUE v_y,VALUE v_w,VALUE v_h)
|
1397
|
+
{
|
1398
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1399
|
+
int x = NUM2INT(v_x);
|
1400
|
+
int y = NUM2INT(v_y);
|
1401
|
+
int w = NUM2INT(v_w);
|
1402
|
+
int h = NUM2INT(v_h);
|
1403
|
+
cdBitmap* bitmap = (cdBitmap*)NUM2UINT(v_bitmap);
|
1404
|
+
cdCanvasPutBitmap((cdCanvas*)NUM2UINT(v_canvas),bitmap,x,y,w,h);
|
1405
|
+
return Qnil;
|
1406
|
+
}
|
1407
|
+
|
1408
|
+
VALUE rb_cdCanvasGetBitmap(VALUE self,VALUE v_bitmap,VALUE v_x,VALUE v_y)
|
1409
|
+
{
|
1410
|
+
VALUE v_canvas = rb_iv_get(self,"@canvas");
|
1411
|
+
int x = NUM2INT(v_x);
|
1412
|
+
int y = NUM2INT(v_y);
|
1413
|
+
cdBitmap* bitmap = (cdBitmap*)NUM2UINT(v_bitmap);
|
1414
|
+
cdCanvasGetBitmap((cdCanvas*)NUM2UINT(v_canvas),bitmap,x,y);
|
1415
|
+
return Qnil;
|
1416
|
+
}
|
1417
|
+
|
1418
|
+
VALUE rb_cdBitmapRGB2Map(VALUE self,VALUE v_bitmap_rgb,VALUE v_bitmap_map)
|
1419
|
+
{
|
1420
|
+
cdBitmapRGB2Map((cdBitmap*)NUM2UINT(v_bitmap_rgb),(cdBitmap*)NUM2UINT(v_bitmap_map));
|
1421
|
+
return Qnil;
|
1422
|
+
}
|
1423
|
+
|
1424
|
+
VALUE rb_cdEncodeColor(VALUE self,VALUE v_red,VALUE v_green,VALUE v_blue)
|
1425
|
+
{
|
1426
|
+
unsigned char red = (unsigned char)NUM2INT(v_red);
|
1427
|
+
unsigned char green = (unsigned char)NUM2INT(v_green);
|
1428
|
+
unsigned char blue = (unsigned char)NUM2INT(v_blue);
|
1429
|
+
long v;
|
1430
|
+
v = cdEncodeColor(red,green,blue);
|
1431
|
+
return LONG2NUM(v);
|
1432
|
+
}
|
1433
|
+
|
1434
|
+
VALUE rb_cdDecodeColor(VALUE self,VALUE v_color)
|
1435
|
+
{
|
1436
|
+
unsigned char red;
|
1437
|
+
unsigned char green;
|
1438
|
+
unsigned char blue;
|
1439
|
+
VALUE v_r;
|
1440
|
+
cdDecodeColor((long)NUM2LONG(v_color),&red,&green,&blue);
|
1441
|
+
v_r = rb_ary_new3(3,INT2FIX(red),INT2FIX(green),INT2FIX(blue));
|
1442
|
+
return v_r;
|
1443
|
+
}
|
1444
|
+
|
1445
|
+
VALUE rb_cdDecodeAlpha(VALUE self,VALUE v_color)
|
1446
|
+
{
|
1447
|
+
char v;
|
1448
|
+
v = cdDecodeAlpha((long)NUM2LONG(v_color));
|
1449
|
+
return UINT2NUM((unsigned)v);
|
1450
|
+
}
|
1451
|
+
|
1452
|
+
VALUE rb_cdEncodeAlpha(VALUE self,VALUE v_color,VALUE v_alpha)
|
1453
|
+
{
|
1454
|
+
unsigned char alpha = (unsigned char)NUM2INT(v_alpha);
|
1455
|
+
long v;
|
1456
|
+
v = cdEncodeAlpha((long)NUM2LONG(v_color),alpha);
|
1457
|
+
return LONG2NUM(v);
|
1458
|
+
}
|
1459
|
+
|
1460
|
+
VALUE rb_cdAlpha(VALUE self,VALUE v_color)
|
1461
|
+
{
|
1462
|
+
char v;
|
1463
|
+
v = cdAlpha(NUM2LONG(v_color));
|
1464
|
+
return UINT2NUM((unsigned)v);
|
1465
|
+
}
|
1466
|
+
|
1467
|
+
VALUE rb_cdReserved(VALUE self,VALUE v_color)
|
1468
|
+
{
|
1469
|
+
char v;
|
1470
|
+
v = cdReserved(NUM2LONG(v_color));
|
1471
|
+
return UINT2NUM((unsigned)v);
|
1472
|
+
}
|
1473
|
+
|
1474
|
+
VALUE rb_cdRed(VALUE self,VALUE v_color)
|
1475
|
+
{
|
1476
|
+
char v;
|
1477
|
+
v = cdRed(NUM2LONG(v_color));
|
1478
|
+
return UINT2NUM((unsigned)v);
|
1479
|
+
}
|
1480
|
+
|
1481
|
+
VALUE rb_cdGreen(VALUE self,VALUE v_color)
|
1482
|
+
{
|
1483
|
+
char v;
|
1484
|
+
v = cdGreen(NUM2LONG(v_color));
|
1485
|
+
return UINT2NUM((unsigned)v);
|
1486
|
+
}
|
1487
|
+
|
1488
|
+
VALUE rb_cdBlue(VALUE self,VALUE v_color)
|
1489
|
+
{
|
1490
|
+
char v;
|
1491
|
+
v = cdBlue(NUM2LONG(v_color));
|
1492
|
+
return UINT2NUM((unsigned)v);
|
1493
|
+
}
|
1494
|
+
|
1495
|
+
VALUE rb_cdRGB2Map(VALUE self,VALUE v_width,VALUE v_height,VALUE v_red,VALUE v_green,VALUE v_blue,VALUE v_index,VALUE v_pal_size,VALUE v_color)
|
1496
|
+
{
|
1497
|
+
int width = NUM2INT(v_width);
|
1498
|
+
int height = NUM2INT(v_height);
|
1499
|
+
const unsigned char* red = (unsigned char*)RSTRING(v_red)->ptr;
|
1500
|
+
const unsigned char* green = (unsigned char*)RSTRING(v_green)->ptr;
|
1501
|
+
const unsigned char* blue = (unsigned char*)RSTRING(v_blue)->ptr;
|
1502
|
+
unsigned char* index = (unsigned char*)RSTRING(v_index)->ptr;
|
1503
|
+
int pal_size = NUM2INT(v_pal_size);
|
1504
|
+
int i;
|
1505
|
+
long *color = xmalloc(RARRAY(v_color)->len*sizeof(long));
|
1506
|
+
for(i=0;i<RARRAY(v_color)->len;i++)
|
1507
|
+
color[i] = NUM2LONG(RARRAY(v_color)->ptr[i]);
|
1508
|
+
cdRGB2Map(width,height,red,green,blue,index,pal_size,color);
|
1509
|
+
free(color);
|
1510
|
+
return Qnil;
|
1511
|
+
}
|
1512
|
+
|
1513
|
+
VALUE rb_cdContextIup()
|
1514
|
+
{
|
1515
|
+
cdContext* v;
|
1516
|
+
v = cdContextIup();
|
1517
|
+
return UINT2NUM((unsigned)v);
|
1518
|
+
}
|
1519
|
+
|
1520
|
+
VALUE rb_cdContextPDF()
|
1521
|
+
{
|
1522
|
+
cdContext* v;
|
1523
|
+
v = cdContextPDF();
|
1524
|
+
return UINT2NUM((unsigned)v);
|
1525
|
+
}
|