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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 723f31c93fcc52c30a208ef8ab42ed0d7ade64ac45bfda38cddad93cb18877c4
4
- data.tar.gz: 1611a57531d9731651dec9391d93148a98a772106cbbcd044899c184d7cf65c4
3
+ metadata.gz: 63f72a2b303c222592dcd946c8c4d7cc0af1deda6657733f1c521b262c7f7878
4
+ data.tar.gz: b313234f243aec167a9dfc722a817efe3bf38ed9f13a329e3323990c165e6e12
5
5
  SHA512:
6
- metadata.gz: 6cdbf88dae339da4bbcd88181dc04292f7edc82c7f48a6256d29d3cc728803264eaba6a0e64984dd7031c90eaf545ff27c7a7857207c3dfcf0ef7cc95c8a9a64
7
- data.tar.gz: 4f4176408fc19ecb389e02b478fac2028980965b3910ff93a326e75449f66a00ccbae6d600c3cf686a7a4c67595047a3a54534a6366110a8ca37bde033cf7b2f
6
+ metadata.gz: 8ed2d743e5520a1e44b946c057b5311b2e4b61a0c44211fcbc726720614737d41db3dc431ed78de808aacd9a975e3773d21c27f4127ee4f55387e50281f80a4a
7
+ data.tar.gz: b75885d4225ceab098ca9ed12f28717a4ed7823848740de0c6225bd6cce400bca24fedf005beb235b0d04f3f9e3f1c0d8923e4fca78cc1e86af2f7b15c725800
@@ -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
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Teek
4
4
  module SDL2
5
- VERSION = "0.1.2"
5
+ VERSION = "0.1.3"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teek-sdl2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Cook