rubygame 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CREDITS +10 -0
- data/{Changelog → NEWS} +39 -0
- data/README +25 -8
- data/{TODO → ROADMAP} +7 -9
- data/Rakefile +151 -122
- data/doc/macosx_install.rdoc +2 -6
- data/doc/windows_install.rdoc +11 -12
- data/ext/rubygame/rubygame_gfx.c +13 -22
- data/ext/rubygame/rubygame_gfx.h +0 -1
- data/ext/rubygame/rubygame_screen.c +29 -1
- data/ext/rubygame/rubygame_screen.h +2 -0
- data/ext/rubygame/rubygame_shared.c +57 -0
- data/ext/rubygame/rubygame_shared.h +6 -0
- data/ext/rubygame/rubygame_surface.c +58 -18
- data/ext/rubygame/rubygame_ttf.c +18 -19
- data/lib/rubygame.rb +1 -0
- data/lib/rubygame/color.rb +79 -0
- data/lib/rubygame/color/models/base.rb +106 -0
- data/lib/rubygame/color/models/hsl.rb +153 -0
- data/lib/rubygame/color/models/hsv.rb +149 -0
- data/lib/rubygame/color/models/rgb.rb +78 -0
- data/lib/rubygame/color/palettes/css.rb +49 -0
- data/lib/rubygame/color/palettes/palette.rb +100 -0
- data/lib/rubygame/color/palettes/x11.rb +177 -0
- data/lib/rubygame/rect.rb +2 -4
- data/lib/rubygame/sprite.rb +42 -8
- data/samples/demo_rubygame.rb +12 -7
- data/samples/song.ogg +0 -0
- metadata +18 -6
data/doc/macosx_install.rdoc
CHANGED
@@ -49,15 +49,11 @@ In order to use Rubygame applications on Mac OS X, you must use a special wrappe
|
|
49
49
|
|
50
50
|
== Installing Rubygame
|
51
51
|
1. {Download and unpack Rubygame}[https://sourceforge.net/project/showfiles.php?group_id=172781].
|
52
|
-
2.
|
53
|
-
|
54
|
-
sudo ruby setup.rb all
|
55
|
-
|
56
|
-
3. (For Rubygame-2.0.0) From the rubygame directory:
|
52
|
+
2. From within the rubygame directory:
|
57
53
|
|
58
54
|
sudo rake install
|
59
55
|
|
60
|
-
|
56
|
+
3. Please refer to the README file for options that you can pass to setup.rb
|
61
57
|
or rake (depending on your version of Rubygame)
|
62
58
|
|
63
59
|
== Running an application
|
data/doc/windows_install.rdoc
CHANGED
@@ -96,19 +96,9 @@ the libraries.
|
|
96
96
|
set LINK_FLAGS=-L \windows\system32 -lSDL
|
97
97
|
set LIBRUBYARG_SHARED=-L \ruby\bin -lmsvcrt-ruby18
|
98
98
|
|
99
|
-
set RUBYGAME_CONFIG=--no-sdl-config
|
100
|
-
|
101
99
|
The -L parameter for LIBRUBYARG_SHARED may be different if you installed
|
102
100
|
Ruby to a path other than C:/ruby.
|
103
101
|
|
104
|
-
IMPORTANT: If you are missing an optional library (such as SDL_gfx), you need
|
105
|
-
to add some extra flags on to the 'RUBYGAME_CONFIG=...' line. The flags you
|
106
|
-
must add are of the style '--no-????' (without quotes), where ???? is the
|
107
|
-
name of the missing library, dropping the 'SDL_' from in front. So, if you
|
108
|
-
don't have SDL_gfx, the last line of your envsetup.bat should be this:
|
109
|
-
|
110
|
-
set RUBYGAME_CONFIG=--no-sdl-config --no-gfx
|
111
|
-
|
112
102
|
== Step 4: Compile and install Rubygame
|
113
103
|
|
114
104
|
Open a command prompt and navigate to the root of your Rubygame source
|
@@ -117,8 +107,17 @@ directory. Type:
|
|
117
107
|
envsetup.bat
|
118
108
|
rake install
|
119
109
|
|
120
|
-
|
110
|
+
IMPORTANT: If you are missing an optional library (such as SDL_gfx), you must
|
111
|
+
disable optional features by passing a "no-???" command to rake before the word
|
112
|
+
"install". For example, to disable features that depend on SDL_gfx, you would
|
113
|
+
type this instead of the above:
|
114
|
+
|
115
|
+
envsetup.bat
|
116
|
+
rake no-gfx install
|
117
|
+
|
118
|
+
If all goes well, you have built and installed Rubygame.
|
121
119
|
Try to execute <code>require 'rubygame'</code> in an irb session and run
|
122
120
|
the provided samples to ensure that everything is acceptable.
|
123
121
|
|
124
|
-
(Thanks to Ash Wilson (smashwilson) for contributing
|
122
|
+
(Thanks to Ash Wilson (smashwilson) for contributing the original version of
|
123
|
+
these instructions.)
|
data/ext/rubygame/rubygame_gfx.c
CHANGED
@@ -59,21 +59,6 @@ VALUE rbgm_draw_fillpolygon(VALUE, VALUE, VALUE);
|
|
59
59
|
* Clean up this ugly mess of code!
|
60
60
|
*/
|
61
61
|
|
62
|
-
void extract_color(VALUE rgba, Uint8* r, Uint8* g, Uint8* b, Uint8* a)
|
63
|
-
{
|
64
|
-
rgba = convert_to_array(rgba);
|
65
|
-
if(RARRAY(rgba)->len < 3)
|
66
|
-
rb_raise(rb_eArgError,"color must be [r,g,b] or [r,g,b,a] form");
|
67
|
-
*r = NUM2UINT(rb_ary_entry(rgba,0));
|
68
|
-
*g = NUM2UINT(rb_ary_entry(rgba,1));
|
69
|
-
*b = NUM2UINT(rb_ary_entry(rgba,2));
|
70
|
-
|
71
|
-
if(RARRAY(rgba)->len > 3)
|
72
|
-
*a = NUM2UINT(rb_ary_entry(rgba,3));
|
73
|
-
else
|
74
|
-
*a = 255;
|
75
|
-
}
|
76
|
-
|
77
62
|
void extract_xy(VALUE point, Sint16* x, Sint16* y)
|
78
63
|
{
|
79
64
|
point = convert_to_array(point);
|
@@ -97,7 +82,8 @@ void draw_line(VALUE target, VALUE pt1, VALUE pt2, VALUE rgba, int aa)
|
|
97
82
|
extract_xy(pt1, &x1, &y1);
|
98
83
|
extract_xy(pt2, &x2, &y2);
|
99
84
|
|
100
|
-
|
85
|
+
rgba = convert_color( rgba );
|
86
|
+
extract_rgba_u8_as_u8(rgba, &r, &g, &b, &a);
|
101
87
|
|
102
88
|
Data_Get_Struct(target,SDL_Surface,dest);
|
103
89
|
//printf("dest: %dx%d\n",dest->w,dest->h);
|
@@ -171,7 +157,8 @@ void draw_rect(VALUE target, VALUE pt1, VALUE pt2, VALUE rgba, int fill)
|
|
171
157
|
extract_xy(pt1, &x1, &y1);
|
172
158
|
extract_xy(pt2, &x2, &y2);
|
173
159
|
|
174
|
-
|
160
|
+
rgba = convert_color( rgba );
|
161
|
+
extract_rgba_u8_as_u8(rgba, &r, &g, &b, &a);
|
175
162
|
|
176
163
|
Data_Get_Struct(target,SDL_Surface,dest);
|
177
164
|
//printf("dest: %dx%d\n",dest->w,dest->h);
|
@@ -235,7 +222,8 @@ void draw_circle(VALUE target, VALUE center, VALUE radius, VALUE rgba, int aa, i
|
|
235
222
|
extract_xy(center, &x, &y);
|
236
223
|
rad = NUM2INT(radius);
|
237
224
|
|
238
|
-
|
225
|
+
rgba = convert_color( rgba );
|
226
|
+
extract_rgba_u8_as_u8(rgba, &r, &g, &b, &a);
|
239
227
|
|
240
228
|
Data_Get_Struct(target,SDL_Surface,dest);
|
241
229
|
//printf("dest: %dx%d\n",dest->w,dest->h);
|
@@ -318,7 +306,8 @@ void draw_ellipse(VALUE target, VALUE center, VALUE radii, VALUE rgba, int aa, i
|
|
318
306
|
extract_xy(center, &x, &y);
|
319
307
|
extract_xy(radii, &radx, &rady);
|
320
308
|
|
321
|
-
|
309
|
+
rgba = convert_color( rgba );
|
310
|
+
extract_rgba_u8_as_u8(rgba, &r, &g, &b, &a);
|
322
311
|
|
323
312
|
Data_Get_Struct(target,SDL_Surface,dest);
|
324
313
|
|
@@ -403,7 +392,8 @@ void draw_pie(VALUE target, VALUE center, VALUE radius, VALUE angles, VALUE rgba
|
|
403
392
|
extract_xy(angles, &start, &end);
|
404
393
|
rad = NUM2INT(radius);
|
405
394
|
|
406
|
-
|
395
|
+
rgba = convert_color( rgba );
|
396
|
+
extract_rgba_u8_as_u8(rgba, &r, &g, &b, &a);
|
407
397
|
|
408
398
|
Data_Get_Struct(target,SDL_Surface,dest);
|
409
399
|
|
@@ -431,7 +421,7 @@ void draw_pie(VALUE target, VALUE center, VALUE radius, VALUE angles, VALUE rgba
|
|
431
421
|
|
432
422
|
/*
|
433
423
|
* call-seq:
|
434
|
-
*
|
424
|
+
* draw_arc(center, radius, angles, color)
|
435
425
|
*
|
436
426
|
* Draw a non-solid arc (part of a circle), given the coordinates of
|
437
427
|
* its center, radius, and starting/ending angles.
|
@@ -499,7 +489,8 @@ void draw_polygon(VALUE target, VALUE points, VALUE rgba, int aa, int fill)
|
|
499
489
|
extract_xy(each_point, &(x[loop]), &(y[loop]));
|
500
490
|
}
|
501
491
|
|
502
|
-
|
492
|
+
rgba = convert_color( rgba );
|
493
|
+
extract_rgba_u8_as_u8(rgba, &r, &g, &b, &a);
|
503
494
|
|
504
495
|
Data_Get_Struct(target,SDL_Surface,dest);
|
505
496
|
|
data/ext/rubygame/rubygame_gfx.h
CHANGED
@@ -35,6 +35,8 @@ VALUE rbgm_screen_getsurface(VALUE);
|
|
35
35
|
VALUE rbgm_screen_getcaption(VALUE);
|
36
36
|
VALUE rbgm_screen_setcaption(VALUE, VALUE);
|
37
37
|
|
38
|
+
VALUE rbgm_screen_seticon(VALUE, VALUE);
|
39
|
+
|
38
40
|
VALUE rbgm_screen_update(int, VALUE*, VALUE);
|
39
41
|
VALUE rbgm_screen_updaterects(VALUE, VALUE);
|
40
42
|
VALUE rbgm_screen_flip(VALUE);
|
@@ -190,6 +192,31 @@ VALUE rbgm_screen_setcaption(VALUE self, VALUE title)
|
|
190
192
|
return self;
|
191
193
|
}
|
192
194
|
|
195
|
+
/* call-seq:
|
196
|
+
* icon = icon
|
197
|
+
*
|
198
|
+
* Sets the window icon for the Screen.
|
199
|
+
*
|
200
|
+
* icon:: a Rubygame::Surface to be displayed at the top of the Rubygame
|
201
|
+
* window (when not in fullscreen mode), and in other OS-specific
|
202
|
+
* areas (like the taskbar entry). If omitted or +nil+, no icon
|
203
|
+
* will be shown at all.
|
204
|
+
*
|
205
|
+
* NOTE: The SDL docs state that icons on Win32 systems must be 32x32 pixels.
|
206
|
+
* That may or may not be true anymore, but you might want to consider it
|
207
|
+
* when creating games to run on Windows.
|
208
|
+
*
|
209
|
+
*/
|
210
|
+
VALUE rbgm_screen_seticon(VALUE self, VALUE data)
|
211
|
+
{
|
212
|
+
SDL_Surface *icon;
|
213
|
+
|
214
|
+
Data_Get_Struct(data, SDL_Surface, icon);
|
215
|
+
SDL_WM_SetIcon(icon, NULL);
|
216
|
+
|
217
|
+
return self;
|
218
|
+
}
|
219
|
+
|
193
220
|
/* call-seq:
|
194
221
|
* update()
|
195
222
|
* update(rect)
|
@@ -290,7 +317,7 @@ VALUE rbgm_screen_updaterects(VALUE self, VALUE array_rects)
|
|
290
317
|
/* initialize the array of Rects from array_rects */
|
291
318
|
for( i=0; i < num_rects; i++ )
|
292
319
|
{
|
293
|
-
each_rect = rb_ary_entry(array_rects,i);
|
320
|
+
each_rect = convert_to_array(rb_ary_entry(array_rects,i));
|
294
321
|
|
295
322
|
Sint16 x,y,left,top,right,bottom;
|
296
323
|
Uint16 w,h;
|
@@ -404,6 +431,7 @@ void Rubygame_Init_Screen()
|
|
404
431
|
/* Screen methods */
|
405
432
|
rb_define_method(cScreen,"title",rbgm_screen_getcaption,0);
|
406
433
|
rb_define_method(cScreen,"title=",rbgm_screen_setcaption,1);
|
434
|
+
rb_define_method(cScreen,"icon=",rbgm_screen_seticon,1);
|
407
435
|
rb_define_method(cScreen,"update",rbgm_screen_update,-1);
|
408
436
|
rb_define_method(cScreen,"update_rects",rbgm_screen_updaterects,1);
|
409
437
|
rb_define_method(cScreen,"flip",rbgm_screen_flip,0);
|
@@ -31,6 +31,8 @@ extern VALUE rbgm_screen_getsurface(VALUE);
|
|
31
31
|
extern VALUE rbgm_screen_getcaption(VALUE);
|
32
32
|
extern VALUE rbgm_screen_setcaption(VALUE, VALUE);
|
33
33
|
|
34
|
+
extern VALUE rbgm_screen_seticon(VALUE, VALUE);
|
35
|
+
|
34
36
|
extern VALUE rbgm_screen_update(int, VALUE*, VALUE);
|
35
37
|
extern VALUE rbgm_screen_updaterects(VALUE, VALUE);
|
36
38
|
extern VALUE rbgm_screen_flip(VALUE);
|
@@ -27,6 +27,7 @@ VALUE cSurface;
|
|
27
27
|
VALUE cRect;
|
28
28
|
VALUE eSDLError;
|
29
29
|
SDL_Rect *make_rect(int, int, int, int);
|
30
|
+
SDL_Color make_sdl_color(VALUE);
|
30
31
|
int init_video_system();
|
31
32
|
void Init_rubygame_shared();
|
32
33
|
|
@@ -91,6 +92,62 @@ VALUE convert_to_array(VALUE val)
|
|
91
92
|
return v;
|
92
93
|
}
|
93
94
|
|
95
|
+
/* Takes a Color, Array, or color name (Symbol or String).
|
96
|
+
* Returns an RGBA Array, or raises eTypeError if it can't.
|
97
|
+
*/
|
98
|
+
VALUE convert_color(VALUE color)
|
99
|
+
{
|
100
|
+
if( rb_respond_to(color, rb_intern("to_sdl_rgba_ary")) )
|
101
|
+
{
|
102
|
+
return rb_funcall( color, rb_intern("to_sdl_rgba_ary"), 0 );
|
103
|
+
}
|
104
|
+
else if( rb_respond_to(color, rb_intern("to_ary")) )
|
105
|
+
{
|
106
|
+
return convert_to_array( color );
|
107
|
+
}
|
108
|
+
else if( TYPE(color) == T_SYMBOL || TYPE(color) == T_STRING )
|
109
|
+
{
|
110
|
+
VALUE mColor = rb_const_get( mRubygame, rb_intern("Color") );
|
111
|
+
return convert_color( rb_funcall( mColor, rb_intern("[]"), 1, color) );
|
112
|
+
}
|
113
|
+
else
|
114
|
+
{
|
115
|
+
rb_raise(rb_eTypeError, "unsupported type %s for color",
|
116
|
+
rb_obj_classname(color));
|
117
|
+
}
|
118
|
+
}
|
119
|
+
|
120
|
+
SDL_Color make_sdl_color(VALUE vcolor)
|
121
|
+
{
|
122
|
+
SDL_Color color;
|
123
|
+
vcolor = convert_color(vcolor);
|
124
|
+
extract_rgb_u8_as_u8(vcolor, &(color.r), &(color.g), &(color.b));
|
125
|
+
return color;
|
126
|
+
}
|
127
|
+
|
128
|
+
void extract_rgb_u8_as_u8(VALUE color, Uint8 *r, Uint8 *g, Uint8 *b)
|
129
|
+
{
|
130
|
+
*r = NUM2UINT(rb_ary_entry(color, 0));
|
131
|
+
*g = NUM2UINT(rb_ary_entry(color, 1));
|
132
|
+
*b = NUM2UINT(rb_ary_entry(color, 2));
|
133
|
+
}
|
134
|
+
|
135
|
+
void extract_rgba_u8_as_u8(VALUE color, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a)
|
136
|
+
{
|
137
|
+
*r = NUM2UINT(rb_ary_entry(color, 0));
|
138
|
+
*g = NUM2UINT(rb_ary_entry(color, 1));
|
139
|
+
*b = NUM2UINT(rb_ary_entry(color, 2));
|
140
|
+
|
141
|
+
if( RARRAY(color)->len > 3 )
|
142
|
+
{
|
143
|
+
*a = NUM2UINT(rb_ary_entry(color, 3));
|
144
|
+
}
|
145
|
+
else
|
146
|
+
{
|
147
|
+
*a = 255;
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
94
151
|
/* --
|
95
152
|
*
|
96
153
|
* call-seq:
|
@@ -30,10 +30,16 @@ extern VALUE mRubygame;
|
|
30
30
|
extern VALUE eSDLError;
|
31
31
|
extern VALUE cSurface;
|
32
32
|
extern VALUE cRect;
|
33
|
+
|
33
34
|
extern SDL_Rect *make_rect(int, int, int, int);
|
34
35
|
extern VALUE make_symbol(char *);
|
35
36
|
extern Uint32 collapse_flags(VALUE);
|
36
37
|
extern VALUE convert_to_array(VALUE);
|
38
|
+
|
39
|
+
extern SDL_Color make_sdl_color(VALUE);
|
40
|
+
extern void extract_rgb_u8_as_u8(VALUE, Uint8*, Uint8*, Uint8*);
|
41
|
+
extern void extract_rgba_u8_as_u8(VALUE, Uint8*, Uint8*, Uint8*, Uint8*);
|
42
|
+
|
37
43
|
extern int init_video_system();
|
38
44
|
extern void Init_rubygame_shared();
|
39
45
|
|
@@ -379,10 +379,8 @@ VALUE rbgm_surface_set_colorkey( int argc, VALUE *argv, VALUE self)
|
|
379
379
|
|
380
380
|
if( RTEST(vcolor) )
|
381
381
|
{
|
382
|
-
vcolor =
|
383
|
-
r
|
384
|
-
g = NUM2UINT(rb_ary_entry(vcolor,1));
|
385
|
-
b = NUM2UINT(rb_ary_entry(vcolor,2));
|
382
|
+
vcolor = convert_color(vcolor);
|
383
|
+
extract_rgb_u8_as_u8(vcolor, &r, &g, &b);
|
386
384
|
color = SDL_MapRGB(surf->format, r,g,b);
|
387
385
|
}
|
388
386
|
else
|
@@ -508,20 +506,9 @@ VALUE rbgm_surface_fill( int argc, VALUE *argv, VALUE self )
|
|
508
506
|
|
509
507
|
rb_scan_args(argc, argv, "11", &vcolor, &vrect);
|
510
508
|
|
511
|
-
vcolor =
|
512
|
-
r
|
513
|
-
|
514
|
-
b = NUM2UINT(rb_ary_entry(vcolor,2));
|
515
|
-
/* if the array is larger than [R,G,B], it should be [R,G,B,A] */
|
516
|
-
if(RARRAY(vcolor)->len > 3)
|
517
|
-
{
|
518
|
-
a = NUM2UINT(rb_ary_entry(vcolor,3));
|
519
|
-
color = SDL_MapRGBA(surf->format, r,g,b,a);
|
520
|
-
}
|
521
|
-
else
|
522
|
-
{
|
523
|
-
color = SDL_MapRGB(surf->format, r,g,b);
|
524
|
-
}
|
509
|
+
vcolor = convert_color(vcolor);
|
510
|
+
extract_rgba_u8_as_u8(vcolor, &r, &g, &b, &a);
|
511
|
+
color = SDL_MapRGBA(surf->format, r,g,b,a);
|
525
512
|
|
526
513
|
if( NIL_P(vrect) )
|
527
514
|
{
|
@@ -641,6 +628,57 @@ VALUE rbgm_surface_getat( int argc, VALUE *argv, VALUE self )
|
|
641
628
|
return rb_ary_new3(4,UINT2NUM(r),UINT2NUM(g),UINT2NUM(b),UINT2NUM(a));
|
642
629
|
}
|
643
630
|
|
631
|
+
|
632
|
+
/*
|
633
|
+
* call-seq:
|
634
|
+
* set_at([x,y], color)
|
635
|
+
*
|
636
|
+
* Set the color of the pixel at the given coordinate.
|
637
|
+
*
|
638
|
+
* color can be one of:
|
639
|
+
* * an Array, [r,g,b] or [r,g,b,a] with each component in 0-255
|
640
|
+
* * an instance of ColorRGB, ColorHSV, etc.
|
641
|
+
* * the name of a color in Rubygame::Color, as a Symbol or String
|
642
|
+
*
|
643
|
+
* Raises IndexError if the coordinates are out of bounds.
|
644
|
+
*
|
645
|
+
*--
|
646
|
+
*
|
647
|
+
* I'm lazy and just using SDL_FillRect. ;-P
|
648
|
+
* It's easier and less bug-prone this way.
|
649
|
+
* I have no idea about speed comparisons.
|
650
|
+
*
|
651
|
+
*/
|
652
|
+
VALUE rbgm_surface_setat( int argc, VALUE *argv, VALUE self )
|
653
|
+
{
|
654
|
+
SDL_Surface *surf;
|
655
|
+
SDL_Rect *rect;
|
656
|
+
Uint32 color;
|
657
|
+
Uint8 r,g,b,a;
|
658
|
+
VALUE vpos, vcolor;
|
659
|
+
|
660
|
+
Data_Get_Struct(self, SDL_Surface, surf);
|
661
|
+
|
662
|
+
rb_scan_args(argc, argv, "2", &vpos, &vcolor);
|
663
|
+
|
664
|
+
vcolor = convert_color(vcolor);
|
665
|
+
extract_rgba_u8_as_u8(vcolor, &r, &g, &b, &a);
|
666
|
+
color = SDL_MapRGBA(surf->format, r,g,b,a);
|
667
|
+
|
668
|
+
vpos = convert_to_array(vpos);
|
669
|
+
rect = make_rect( NUM2INT(rb_ary_entry(vpos,0)),
|
670
|
+
NUM2INT(rb_ary_entry(vpos,1)),
|
671
|
+
1, 1 );
|
672
|
+
|
673
|
+
SDL_FillRect(surf,rect,color);
|
674
|
+
|
675
|
+
free(rect);
|
676
|
+
|
677
|
+
return self;
|
678
|
+
}
|
679
|
+
|
680
|
+
|
681
|
+
|
644
682
|
/*
|
645
683
|
* call-seq:
|
646
684
|
* pixels -> String
|
@@ -721,6 +759,7 @@ VALUE rbgm_surface_set_clip( VALUE self, VALUE clip )
|
|
721
759
|
);
|
722
760
|
|
723
761
|
SDL_SetClipRect(surf,rect);
|
762
|
+
free(rect);
|
724
763
|
}
|
725
764
|
|
726
765
|
return self;
|
@@ -1081,6 +1120,7 @@ void Rubygame_Init_Surface()
|
|
1081
1120
|
rb_define_method(cSurface,"blit",rbgm_surface_blit,-1);
|
1082
1121
|
rb_define_method(cSurface,"fill",rbgm_surface_fill,-1);
|
1083
1122
|
rb_define_method(cSurface,"get_at",rbgm_surface_getat,-1);
|
1123
|
+
rb_define_method(cSurface,"set_at",rbgm_surface_setat,-1);
|
1084
1124
|
rb_define_method(cSurface,"pixels",rbgm_surface_pixels,0);
|
1085
1125
|
rb_define_method(cSurface,"clip",rbgm_surface_get_clip,0);
|
1086
1126
|
rb_define_method(cSurface,"clip=",rbgm_surface_set_clip,1);
|
data/ext/rubygame/rubygame_ttf.c
CHANGED
@@ -353,19 +353,6 @@ VALUE rbgm_ttf_size_unicode(VALUE self, VALUE string)
|
|
353
353
|
return result;
|
354
354
|
}
|
355
355
|
|
356
|
-
/*
|
357
|
-
* Helper function for color handling for the rendering functions.
|
358
|
-
*/
|
359
|
-
|
360
|
-
static void RBGM_array_to_color(SDL_Color * color, VALUE arr) {
|
361
|
-
if( RTEST(arr) )
|
362
|
-
{
|
363
|
-
arr = convert_to_array(arr);
|
364
|
-
color->r = NUM2UINT(rb_ary_entry(arr, 0));
|
365
|
-
color->g = NUM2UINT(rb_ary_entry(arr, 1));
|
366
|
-
color->b = NUM2UINT(rb_ary_entry(arr, 2));
|
367
|
-
}
|
368
|
-
}
|
369
356
|
|
370
357
|
/*
|
371
358
|
*--
|
@@ -397,8 +384,12 @@ VALUE rbgm_ttf_render(int argc, VALUE *argv, VALUE self)
|
|
397
384
|
|
398
385
|
Data_Get_Struct(self,TTF_Font,font);
|
399
386
|
|
400
|
-
|
401
|
-
|
387
|
+
fore = make_sdl_color(vfg);
|
388
|
+
|
389
|
+
if( RTEST(vbg) )
|
390
|
+
{
|
391
|
+
back = make_sdl_color(vbg);
|
392
|
+
}
|
402
393
|
|
403
394
|
if( RTEST(vaa) ) /* anti-aliasing enabled */
|
404
395
|
{
|
@@ -452,8 +443,12 @@ VALUE rbgm_ttf_render_utf8(int argc, VALUE *argv, VALUE self)
|
|
452
443
|
|
453
444
|
Data_Get_Struct(self,TTF_Font,font);
|
454
445
|
|
455
|
-
|
456
|
-
|
446
|
+
fore = make_sdl_color(vfg);
|
447
|
+
|
448
|
+
if( RTEST(vbg) )
|
449
|
+
{
|
450
|
+
back = make_sdl_color(vbg);
|
451
|
+
}
|
457
452
|
|
458
453
|
if( RTEST(vaa) ) /* anti-aliasing enabled */
|
459
454
|
{
|
@@ -507,8 +502,12 @@ VALUE rbgm_ttf_render_unicode(int argc, VALUE *argv, VALUE self)
|
|
507
502
|
|
508
503
|
Data_Get_Struct(self,TTF_Font,font);
|
509
504
|
|
510
|
-
|
511
|
-
|
505
|
+
fore = make_sdl_color(vfg);
|
506
|
+
|
507
|
+
if( RTEST(vbg) )
|
508
|
+
{
|
509
|
+
back = make_sdl_color(vbg);
|
510
|
+
}
|
512
511
|
|
513
512
|
if( RTEST(vaa) ) /* anti-aliasing enabled */
|
514
513
|
{
|