teek-sdl2 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/teek_sdl2/sdl2surface.c +110 -0
- data/lib/teek/sdl2/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 63f72a2b303c222592dcd946c8c4d7cc0af1deda6657733f1c521b262c7f7878
|
|
4
|
+
data.tar.gz: b313234f243aec167a9dfc722a817efe3bf38ed9f13a329e3323990c165e6e12
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8ed2d743e5520a1e44b946c057b5311b2e4b61a0c44211fcbc726720614737d41db3dc431ed78de808aacd9a975e3773d21c27f4127ee4f55387e50281f80a4a
|
|
7
|
+
data.tar.gz: b75885d4225ceab098ca9ed12f28717a4ed7823848740de0c6225bd6cce400bca24fedf005beb235b0d04f3f9e3f1c0d8923e4fca78cc1e86af2f7b15c725800
|
data/ext/teek_sdl2/sdl2surface.c
CHANGED
|
@@ -964,6 +964,67 @@ renderer_destroyed_p(VALUE self)
|
|
|
964
964
|
return r->destroyed ? Qtrue : Qfalse;
|
|
965
965
|
}
|
|
966
966
|
|
|
967
|
+
/*
|
|
968
|
+
* Teek::SDL2::Renderer#input_focus? -> true/false
|
|
969
|
+
*
|
|
970
|
+
* Returns whether the SDL2 window currently has keyboard input focus.
|
|
971
|
+
* Uses SDL_GetWindowFlags() which reads the window manager state
|
|
972
|
+
* without pumping the event loop.
|
|
973
|
+
*/
|
|
974
|
+
static VALUE
|
|
975
|
+
renderer_input_focus_p(VALUE self)
|
|
976
|
+
{
|
|
977
|
+
struct sdl2_renderer *r;
|
|
978
|
+
TypedData_Get_Struct(self, struct sdl2_renderer, &renderer_type, r);
|
|
979
|
+
if (r->destroyed || !r->window) return Qfalse;
|
|
980
|
+
|
|
981
|
+
Uint32 flags = SDL_GetWindowFlags(r->window);
|
|
982
|
+
return (flags & SDL_WINDOW_INPUT_FOCUS) ? Qtrue : Qfalse;
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
/*
|
|
986
|
+
* Teek::SDL2::Renderer#hide_window -> nil
|
|
987
|
+
*
|
|
988
|
+
* Hides the SDL2 window (SDL_HideWindow).
|
|
989
|
+
*/
|
|
990
|
+
static VALUE
|
|
991
|
+
renderer_hide_window(VALUE self)
|
|
992
|
+
{
|
|
993
|
+
struct sdl2_renderer *r;
|
|
994
|
+
TypedData_Get_Struct(self, struct sdl2_renderer, &renderer_type, r);
|
|
995
|
+
if (!r->destroyed && r->window) SDL_HideWindow(r->window);
|
|
996
|
+
return Qnil;
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
/*
|
|
1000
|
+
* Teek::SDL2::Renderer#show_window -> nil
|
|
1001
|
+
*
|
|
1002
|
+
* Shows the SDL2 window (SDL_ShowWindow).
|
|
1003
|
+
*/
|
|
1004
|
+
static VALUE
|
|
1005
|
+
renderer_show_window(VALUE self)
|
|
1006
|
+
{
|
|
1007
|
+
struct sdl2_renderer *r;
|
|
1008
|
+
TypedData_Get_Struct(self, struct sdl2_renderer, &renderer_type, r);
|
|
1009
|
+
if (!r->destroyed && r->window) SDL_ShowWindow(r->window);
|
|
1010
|
+
return Qnil;
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
/*
|
|
1014
|
+
* Teek::SDL2::Renderer#raise_window -> nil
|
|
1015
|
+
*
|
|
1016
|
+
* Raises the SDL2 window above others and sets input focus
|
|
1017
|
+
* (SDL_RaiseWindow).
|
|
1018
|
+
*/
|
|
1019
|
+
static VALUE
|
|
1020
|
+
renderer_raise_window(VALUE self)
|
|
1021
|
+
{
|
|
1022
|
+
struct sdl2_renderer *r;
|
|
1023
|
+
TypedData_Get_Struct(self, struct sdl2_renderer, &renderer_type, r);
|
|
1024
|
+
if (!r->destroyed && r->window) SDL_RaiseWindow(r->window);
|
|
1025
|
+
return Qnil;
|
|
1026
|
+
}
|
|
1027
|
+
|
|
967
1028
|
/* ---------------------------------------------------------
|
|
968
1029
|
* Texture (wraps SDL_Texture)
|
|
969
1030
|
*
|
|
@@ -1281,6 +1342,49 @@ texture_get_blend_mode(VALUE self)
|
|
|
1281
1342
|
return INT2NUM((int)bm);
|
|
1282
1343
|
}
|
|
1283
1344
|
|
|
1345
|
+
/*
|
|
1346
|
+
* Teek::SDL2::Texture#scale_mode=(mode)
|
|
1347
|
+
*
|
|
1348
|
+
* Sets the texture scale mode used when the texture is stretched.
|
|
1349
|
+
* :nearest - nearest-neighbor (sharp, pixelated)
|
|
1350
|
+
* :linear - bilinear filtering (smooth)
|
|
1351
|
+
*/
|
|
1352
|
+
static VALUE
|
|
1353
|
+
texture_set_scale_mode(VALUE self, VALUE mode)
|
|
1354
|
+
{
|
|
1355
|
+
struct sdl2_texture *t = get_texture(self);
|
|
1356
|
+
SDL_ScaleMode sm;
|
|
1357
|
+
|
|
1358
|
+
Check_Type(mode, T_SYMBOL);
|
|
1359
|
+
ID id = SYM2ID(mode);
|
|
1360
|
+
if (id == rb_intern("nearest")) sm = SDL_ScaleModeNearest;
|
|
1361
|
+
else if (id == rb_intern("linear")) sm = SDL_ScaleModeLinear;
|
|
1362
|
+
else rb_raise(rb_eArgError, "unknown scale mode (use :nearest or :linear)");
|
|
1363
|
+
|
|
1364
|
+
if (SDL_SetTextureScaleMode(t->texture, sm) != 0) {
|
|
1365
|
+
rb_raise(eSDL2Error, "SDL_SetTextureScaleMode: %s", SDL_GetError());
|
|
1366
|
+
}
|
|
1367
|
+
return mode;
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
/*
|
|
1371
|
+
* Teek::SDL2::Texture#scale_mode -> Symbol
|
|
1372
|
+
*
|
|
1373
|
+
* Returns the current texture scale mode as :nearest or :linear.
|
|
1374
|
+
*/
|
|
1375
|
+
static VALUE
|
|
1376
|
+
texture_get_scale_mode(VALUE self)
|
|
1377
|
+
{
|
|
1378
|
+
struct sdl2_texture *t = get_texture(self);
|
|
1379
|
+
SDL_ScaleMode sm;
|
|
1380
|
+
|
|
1381
|
+
if (SDL_GetTextureScaleMode(t->texture, &sm) != 0) {
|
|
1382
|
+
rb_raise(eSDL2Error, "SDL_GetTextureScaleMode: %s", SDL_GetError());
|
|
1383
|
+
}
|
|
1384
|
+
if (sm == SDL_ScaleModeNearest) return ID2SYM(rb_intern("nearest"));
|
|
1385
|
+
return ID2SYM(rb_intern("linear"));
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1284
1388
|
/*
|
|
1285
1389
|
* Teek::SDL2.compose_blend_mode(src_color, dst_color, color_op,
|
|
1286
1390
|
* src_alpha, dst_alpha, alpha_op) -> Integer
|
|
@@ -1356,6 +1460,10 @@ Init_sdl2surface(VALUE mTeekSDL2)
|
|
|
1356
1460
|
rb_define_method(cRenderer, "copy", renderer_copy, -1);
|
|
1357
1461
|
rb_define_method(cRenderer, "destroy", renderer_destroy, 0);
|
|
1358
1462
|
rb_define_method(cRenderer, "destroyed?", renderer_destroyed_p, 0);
|
|
1463
|
+
rb_define_method(cRenderer, "input_focus?", renderer_input_focus_p, 0);
|
|
1464
|
+
rb_define_method(cRenderer, "hide_window", renderer_hide_window, 0);
|
|
1465
|
+
rb_define_method(cRenderer, "show_window", renderer_show_window, 0);
|
|
1466
|
+
rb_define_method(cRenderer, "raise_window", renderer_raise_window, 0);
|
|
1359
1467
|
|
|
1360
1468
|
/* Texture */
|
|
1361
1469
|
cTexture = rb_define_class_under(mTeekSDL2, "Texture", rb_cObject);
|
|
@@ -1365,6 +1473,8 @@ Init_sdl2surface(VALUE mTeekSDL2)
|
|
|
1365
1473
|
rb_define_method(cTexture, "height", texture_height, 0);
|
|
1366
1474
|
rb_define_method(cTexture, "blend_mode=", texture_set_blend_mode, 1);
|
|
1367
1475
|
rb_define_method(cTexture, "blend_mode", texture_get_blend_mode, 0);
|
|
1476
|
+
rb_define_method(cTexture, "scale_mode=", texture_set_scale_mode, 1);
|
|
1477
|
+
rb_define_method(cTexture, "scale_mode", texture_get_scale_mode, 0);
|
|
1368
1478
|
rb_define_method(cTexture, "destroy", texture_destroy, 0);
|
|
1369
1479
|
rb_define_method(cTexture, "destroyed?", texture_destroyed_p, 0);
|
|
1370
1480
|
|
data/lib/teek/sdl2/version.rb
CHANGED