ruby-sdl2 0.1.0 → 0.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/video.c.m4 CHANGED
@@ -8,15 +8,24 @@
8
8
  #include <ruby/encoding.h>
9
9
 
10
10
  static VALUE cWindow;
11
+ static VALUE mWindowFlags;
11
12
  static VALUE cDisplay;
12
13
  static VALUE cDisplayMode;
13
14
  static VALUE cRenderer;
15
+ static VALUE mRendererFlags;
16
+ static VALUE mBlendMode;
14
17
  static VALUE cTexture;
15
18
  static VALUE cRect;
16
19
  static VALUE cPoint;
17
20
  static VALUE cSurface;
18
21
  static VALUE cRendererInfo;
19
22
  static VALUE cPixelFormat; /* NOTE: This is related to SDL_PixelFormatEnum, not SDL_PixelFormat */
23
+ static VALUE mPixelType;
24
+ static VALUE mBitmapOrder;
25
+ static VALUE mPackedOrder;
26
+ static VALUE mArrayOrder;
27
+ static VALUE mPackedLayout;
28
+
20
29
  static VALUE mScreenSaver;
21
30
 
22
31
  static VALUE hash_windowid_to_window = Qnil;
@@ -341,29 +350,6 @@ static VALUE SDL2_s_video_init(VALUE self, VALUE driver_name)
341
350
  * All of methods/class methods are available only after initializing video
342
351
  * subsystem by {SDL2.init}.
343
352
  *
344
- * # Window Flags
345
- *
346
- * OR'd bits of the following constants represents window states.
347
- * You can see a window state using {#flags} and create a window with a specified
348
- * state using flag parameter of {.create}.
349
- *
350
- * * {SDL2::Window::FULLSCREEN} - fullscreen window
351
- * * {SDL2::Window::FULLSCREEN_DESKTOP} -
352
- * fullscreen window at the current desktop resolution
353
- * * {SDL2::Window::OPENGL} - window usable with OpenGL context
354
- * * {SDL2::Window::SHOWN} - window is visible
355
- * * {SDL2::Window::HIDDEN} - window is not visible
356
- * * {SDL2::Window::BORDERLESS} - no window decoration
357
- * * {SDL2::Window::RESIZABLE} - window is resizable
358
- * * {SDL2::Window::MINIMIZDED} - window is minimized
359
- * * {SDL2::Window::MAXIMIZED} - window is maximized
360
- * * {SDL2::Window::INPUT_GRABBED} - window has grabbed input focus
361
- * * {SDL2::Window::INPUT_FOCUS} - window has input focus
362
- * * {SDL2::Window::MOUSE_FOCUS} - window has mouse focus
363
- * * {SDL2::Window::FOREIGN} - window is not created by SDL
364
- * * {SDL2::Window::ALLOW_HIGHDPI} - window should be created in high-DPI mode if supported
365
- * * {SDL2::Window::MOUSE_CAPTURE} - window has mouse captured
366
- *
367
353
  *
368
354
  * @!method destroy?
369
355
  * Return true if the window is already destroyed.
@@ -377,7 +363,7 @@ static VALUE SDL2_s_video_init(VALUE self, VALUE driver_name)
377
363
  * @param [Integer] y the y position of the left-top of the window
378
364
  * @param [Integer] w the width of the window
379
365
  * @param [Integer] h the height of the window
380
- * @param [Integer] flags 0, or one or more [Window flag masks](#label-Flags) OR'd together
366
+ * @param [Integer] flags 0, or one or more {Flags} OR'd together
381
367
  *
382
368
  * @return [SDL2::Window] created window
383
369
  *
@@ -541,7 +527,7 @@ static VALUE Window_set_brightness(VALUE self, VALUE brightness)
541
527
  }
542
528
 
543
529
  /*
544
- * Get the [Window flag masks](#label-Window+Flags) of the window.
530
+ * Get the {SDL2::Window::Flags Window flag masks} of the window.
545
531
  *
546
532
  * @return [Integer] flags
547
533
  * @see .create
@@ -861,8 +847,8 @@ SIMPLE_WINDOW_METHOD(Restore, restore);
861
847
  /*
862
848
  * Get the fullscreen stete of the window
863
849
  *
864
- * @return [Integer] 0 for window mode, SDL2::Window::FULLSCREEN for
865
- * fullscreen mode, and SDL2::Window::FULLSCREEN_DESKTOP for fullscreen
850
+ * @return [Integer] 0 for window mode, {SDL2::Window::Flags::FULLSCREEN} for
851
+ * fullscreen mode, and {SDL2::Window::Flags::FULLSCREEN_DESKTOP} for fullscreen
866
852
  * at the current desktop resolution.
867
853
  *
868
854
  * @see #fullscreen_mode=
@@ -878,8 +864,8 @@ static VALUE Window_fullscreen_mode(VALUE self)
878
864
  * @overload fullscreen_mode=(flag)
879
865
  * Set the fullscreen state of the window
880
866
  *
881
- * @param flag [Integer] 0 for window mode, SDL2::Window::FULLSCREEN for
882
- * fullscreen mode, and SDL2::Window::FULLSCREEN_DESKTOP for fullscreen
867
+ * @param flag [Integer] 0 for window mode, {SDL2::Window::Flags::FULLSCREEN} for
868
+ * fullscreen mode, and {SDL2::Flags::Window::FULLSCREEN_DESKTOP} for fullscreen
883
869
  * at the current desktop resolution.
884
870
  * @return [flag]
885
871
  *
@@ -891,13 +877,12 @@ static VALUE Window_set_fullscreen_mode(VALUE self, VALUE flags)
891
877
  return flags;
892
878
  }
893
879
 
894
-
880
+ #if SDL_VERSION_ATLEAST(2,0,1)
895
881
  /*
896
882
  * Get the size of the drawable region.
897
883
  *
898
884
  * @return [[Integer, Integer]] the width and height of the region
899
885
  */
900
- #if SDL_VERSION_ATLEAST(2,0,1)
901
886
  static VALUE Window_gl_drawable_size(VALUE self)
902
887
  {
903
888
  int w, h;
@@ -947,6 +932,17 @@ static VALUE Window_debug_info(VALUE self)
947
932
  return info;
948
933
  }
949
934
 
935
+ /*
936
+ * Document-module: SDL2::Window::Flags
937
+ *
938
+ * OR'd bits of the constants of this module represents window states.
939
+ *
940
+ * You can see a window state using {SDL2::Window#flags}
941
+ * and create a window with a specified
942
+ * state using flag parameter of {SDL2::Window.create}.
943
+ *
944
+ */
945
+
950
946
  /*
951
947
  * Document-class: SDL2::Display
952
948
  *
@@ -955,7 +951,16 @@ static VALUE Window_debug_info(VALUE self)
955
951
  * This means that if you use dual screen, {.displays} returns two displays.
956
952
  *
957
953
  * This class handles color depth, resolution, and refresh rate of displays.
958
- *
954
+ *
955
+ *
956
+ * @!attribute [r] index
957
+ * The index of the display, 0 origin
958
+ * @return [Integer]
959
+ *
960
+ * @!attribute [r] name
961
+ * The name of the display
962
+ * @return [Stirng]
963
+ *
959
964
  */
960
965
 
961
966
  /*
@@ -1077,6 +1082,7 @@ static Uint32 uint32_for_format(VALUE format)
1077
1082
  * An object of this class has information about color depth, refresh rate,
1078
1083
  * and resolution of a display.
1079
1084
  *
1085
+ *
1080
1086
  */
1081
1087
 
1082
1088
  /*
@@ -1139,38 +1145,7 @@ static VALUE DisplayMode_refresh_rate(VALUE self)
1139
1145
  *
1140
1146
  * You can create a renderer using {SDL2::Window#create_renderer} and
1141
1147
  * use it to draw figures on the window.
1142
- *
1143
- * # Flags
1144
- * You can specify the OR'd bits of the following constants
1145
- * {SDL2::Window#create_renderer when you create a new renderer}.
1146
- *
1147
- * * SDL2::Renderer::SOFTWARE - the renderer is a software fallback
1148
- * * SDL2::Renderer::ACCELERATED - the renderer uses hardware acceleration
1149
- * * SDL2::Renderer::PRESENTVSYNC - present is synchronized with the refresh rate
1150
- * * SDL2::Renderer::TARGETTEXTURE - the renderer supports rendering to texture
1151
- *
1152
- * No flags(==0) gives priority to available ACCELERATED renderers
1153
- *
1154
- * # Blending modes
1155
- * You can use 4 types of blending mode for rendering graphics
1156
- * using Renderer class.
1157
- *
1158
- * You can change the blending mode using
1159
- * {#draw_blend_mode=} and {SDL2::Texture#blend_mode=}.
1160
- *
1161
- * In the backend of SDL, opengl or direct3d blending
1162
- * mechanism is used for blending operations.
1163
- *
1164
- * * SDL2::BLENDMODE_NONE - no blending (dstRGBA = srcRGBA)
1165
- * * SDL2::BLENDMODE_BLEND - alpha blending
1166
- * (dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)),
1167
- * dstA = srcA + (dstA * (1-srcA)))
1168
- * * SDL2::BLENDMODE_ADD - additive blending
1169
- * (dstRGB = (srcRGB * srcA) + dstRGB,
1170
- * dstA = dstA)
1171
- * * SDL2::BLENDMODE_MUL - color modulate
1172
- * (dstRGB = srcRGB * dstRGB,
1173
- * dstA = dstA)
1148
+ *
1174
1149
  *
1175
1150
  * @!method destroy?
1176
1151
  * Return true if the renderer is {#destroy destroyed}.
@@ -1215,9 +1190,9 @@ static VALUE Renderer_destroy(VALUE self)
1215
1190
  *
1216
1191
  * You can use the following constants to specify access pattern
1217
1192
  *
1218
- * * SDL2::Texture::ACCESS_STATIC - changes rarely, not lockable
1219
- * * SDL2::Texture::ACCESS_STREAMING - changes frequently, lockable
1220
- * * SDL2::Texture::ACCESS_TARGET - can be used as a render target
1193
+ * * {SDL2::Texture::ACCESS_STATIC}
1194
+ * * {SDL2::Texture::ACCESS_STREAMING}
1195
+ * * {SDL2::Texture::ACCESS_TARGET}
1221
1196
  *
1222
1197
  * @param [SDL2::PixelFormat,Integer] format format of the texture
1223
1198
  * @param [Integer] access texture access pattern
@@ -1302,9 +1277,9 @@ static VALUE Renderer_copy(VALUE self, VALUE texture, VALUE srcrect, VALUE dstre
1302
1277
  *
1303
1278
  * You can use the following constants to specify the horizontal/vertical flip:
1304
1279
  *
1305
- * * SDL2::Renderer::FLIP_HORIZONTAL - flip horizontally
1306
- * * SDL2::Renderer::FLIP_VERTICAL - flip vertically
1307
- * * SDL2::Renderer::FLIP_NONE - do not flip, equal to zero
1280
+ * * {SDL2::Renderer::FLIP_HORIZONTAL} - flip horizontally
1281
+ * * {SDL2::Renderer::FLIP_VERTICAL} - flip vertically
1282
+ * * {SDL2::Renderer::FLIP_NONE} - do not flip, equal to zero
1308
1283
  *
1309
1284
  *
1310
1285
  * @param [SDL2::Texture] texture the source texture
@@ -1482,11 +1457,10 @@ static VALUE Renderer_info(VALUE self)
1482
1457
  * Get the blend mode used for drawing operations like
1483
1458
  * {#fill_rect} and {#draw_line}.
1484
1459
  *
1485
- * For the blending modes, see [blending modes](#label-Blending+modes)
1486
- *
1487
1460
  * @return [Integer]
1488
1461
  *
1489
1462
  * @see #draw_blend_mode=
1463
+ * @see SDL2::BlendMode
1490
1464
  */
1491
1465
  static VALUE Renderer_draw_blend_mode(VALUE self)
1492
1466
  {
@@ -1511,7 +1485,7 @@ static VALUE Renderer_draw_blend_mode(VALUE self)
1511
1485
  * @return mode
1512
1486
  *
1513
1487
  * @see #draw_blend_mode
1514
- *
1488
+ * @see SDL2::BlendMode
1515
1489
  */
1516
1490
  static VALUE Renderer_set_draw_blend_mode(VALUE self, VALUE mode)
1517
1491
  {
@@ -1523,7 +1497,7 @@ static VALUE Renderer_set_draw_blend_mode(VALUE self, VALUE mode)
1523
1497
  * Get the clip rectangle for the current target.
1524
1498
  *
1525
1499
  * @return [SDL2::Rect] the current clip rectangle
1526
- *
1500
+ * @see {#clip_rect=}
1527
1501
  */
1528
1502
  static VALUE Renderer_clip_rect(VALUE self)
1529
1503
  {
@@ -1532,13 +1506,38 @@ static VALUE Renderer_clip_rect(VALUE self)
1532
1506
  return rect;
1533
1507
  }
1534
1508
 
1509
+ /*
1510
+ * @overload clip_rect=(rect)
1511
+ *
1512
+ * Set the clip rectangle for the current target.
1513
+ *
1514
+ * @return [rect]
1515
+ * @see #clip_rect
1516
+ */
1517
+ static VALUE Renderer_set_clip_rect(VALUE self, VALUE rect)
1518
+ {
1519
+ HANDLE_ERROR(SDL_RenderSetClipRect(Get_SDL_Renderer(self), Get_SDL_Rect(rect)));
1520
+ return rect;
1521
+ }
1522
+
1535
1523
  #if SDL_VERSION_ATLEAST(2,0,4)
1524
+ /*
1525
+ * Get whether clipping is enabled on the renderer.
1526
+ *
1527
+ * @note This method is available since SDL 2.0.4.
1528
+ */
1536
1529
  static VALUE Render_clip_enabled_p(VALUE self)
1537
1530
  {
1538
1531
  return INT2BOOL(SDL_RenderIsClipEnabled(Get_SDL_Renderer(self)));
1539
1532
  }
1540
1533
  #endif
1541
1534
 
1535
+ /*
1536
+ * Get device indepndent resolution for rendering.
1537
+ *
1538
+ * @return [[Integer, Integer]] the logical width and height
1539
+ * @see #logical_size=
1540
+ */
1542
1541
  static VALUE Renderer_logical_size(VALUE self)
1543
1542
  {
1544
1543
  int w, h;
@@ -1546,6 +1545,29 @@ static VALUE Renderer_logical_size(VALUE self)
1546
1545
  return rb_ary_new3(2, INT2FIX(w), INT2FIX(h));
1547
1546
  }
1548
1547
 
1548
+ /*
1549
+ * @overload logical_size=(w_and_h)
1550
+ *
1551
+ * Set a device indepndent resolution for rendering.
1552
+ *
1553
+ * @param w_and_h [[Integer, Integer]] the width and height of the logical resolution
1554
+ * @return [w_and_h]
1555
+ * @see #logical_size
1556
+ */
1557
+ static VALUE Renderer_set_logical_size(VALUE self, VALUE wh)
1558
+ {
1559
+ HANDLE_ERROR(SDL_RenderSetLogicalSize(Get_SDL_Renderer(self),
1560
+ NUM2DBL(rb_ary_entry(wh, 0)),
1561
+ NUM2DBL(rb_ary_entry(wh, 1))));
1562
+ return wh;
1563
+ }
1564
+
1565
+ /*
1566
+ * Get the drawing scale for the current target.
1567
+ *
1568
+ * @return [[Integer, Integer]] horizontal and vertical scale factor
1569
+ * @see #scale=
1570
+ */
1549
1571
  static VALUE Renderer_scale(VALUE self)
1550
1572
  {
1551
1573
  float scaleX, scaleY;
@@ -1553,6 +1575,37 @@ static VALUE Renderer_scale(VALUE self)
1553
1575
  return rb_ary_new3(2, DBL2NUM(scaleX), DBL2NUM(scaleY));
1554
1576
  }
1555
1577
 
1578
+ /*
1579
+ * @overload scale=(scaleX_and_scaleY)
1580
+ *
1581
+ * Set the drawing scale for rendering.
1582
+ *
1583
+ * The drawing coordinates are scaled by the x/y scaling factors before they are used by the renderer.
1584
+ * This allows resolution independent drawing with a single coordinate system.
1585
+ *
1586
+ * If this results in scaling or subpixel drawing by the rendering backend,
1587
+ * it will be handled using the appropriate
1588
+ * quality hints. For best results use integer scaling factors.
1589
+ *
1590
+ * @param scaleX_and_scaleY [[Float, Float]] the horizontal and vertical scaling factors
1591
+ * @return [scaleX_and_scaleY]
1592
+ * @see #scale
1593
+ */
1594
+ static VALUE Renderer_set_scale(VALUE self, VALUE xy)
1595
+ {
1596
+ float scaleX, scaleY;
1597
+ scaleX = NUM2DBL(rb_ary_entry(xy, 0));
1598
+ scaleY = NUM2DBL(rb_ary_entry(xy, 1));
1599
+ HANDLE_ERROR(SDL_RenderSetScale(Get_SDL_Renderer(self), scaleX, scaleY));
1600
+ return xy;
1601
+ }
1602
+
1603
+ /*
1604
+ * Get the drawing area for the current target.
1605
+ *
1606
+ * @return [SDL2::Rect] the current drawing area
1607
+ * @see #viewport=
1608
+ */
1556
1609
  static VALUE Renderer_viewport(VALUE self)
1557
1610
  {
1558
1611
  VALUE rect = rb_obj_alloc(cRect);
@@ -1560,6 +1613,20 @@ static VALUE Renderer_viewport(VALUE self)
1560
1613
  return rect;
1561
1614
  }
1562
1615
 
1616
+ /*
1617
+ * @overload viewport=(area)
1618
+ * Set the drawing area for rendering on the current target.
1619
+ *
1620
+ * @param area [SDL2::Rect,nil] the drawing area, or nil to set the viewport to the entire target
1621
+ * @return [area]
1622
+ * @see #viewport
1623
+ */
1624
+ static VALUE Renderer_set_viewport(VALUE self, VALUE rect)
1625
+ {
1626
+ HANDLE_ERROR(SDL_RenderSetClipRect(Get_SDL_Renderer(self), Get_SDL_Rect_or_NULL(rect)));
1627
+ return rect;
1628
+ }
1629
+
1563
1630
  /*
1564
1631
  * Return true if the renderer supports render target.
1565
1632
  *
@@ -1570,6 +1637,11 @@ static VALUE Renderer_support_render_target_p(VALUE self)
1570
1637
  return INT2BOOL(SDL_RenderTargetSupported(Get_SDL_Renderer(self)));
1571
1638
  }
1572
1639
 
1640
+ /*
1641
+ * Get the output size of a rendering context.
1642
+ *
1643
+ * @return [[Integer, Integer]] the width and the height
1644
+ */
1573
1645
  static VALUE Renderer_output_size(VALUE self)
1574
1646
  {
1575
1647
  int w, h;
@@ -1586,7 +1658,7 @@ static VALUE Renderer_output_size(VALUE self)
1586
1658
  * {#support_render_target?}.
1587
1659
  *
1588
1660
  * The target texture musbe be {#create_texture created} with the
1589
- * SDL2::Texture::ACCESS_TARGET flag.
1661
+ * {SDL2::Texture::ACCESS_TARGET} flag.
1590
1662
  *
1591
1663
  * @param [SDL2::Texture,nil] target the targeted texture, or nil
1592
1664
  * for the default render target(i.e. screen)
@@ -1646,6 +1718,48 @@ static VALUE Renderer_debug_info(VALUE self)
1646
1718
  return info;
1647
1719
  }
1648
1720
 
1721
+ /*
1722
+ * Document-class: SDL2::Renderer::Info
1723
+ *
1724
+ * This class contains information of a rendering context.
1725
+ *
1726
+ * @!attribute [r] name
1727
+ * @return [String] the name of the renderer
1728
+ *
1729
+ * @!attribute [r] texture_formats
1730
+ * @return [Array<SDL2::PixelFormat>] available texture formats
1731
+ *
1732
+ * @!attribute [r] max_texture_width
1733
+ * @return [Integer] maximum texture width
1734
+ *
1735
+ * @!attribute [r] max_texture_height
1736
+ * @return [Integer] maximum texture height
1737
+ */
1738
+
1739
+ /*
1740
+ * Document-module: SDL2::Renderer::Flags
1741
+ *
1742
+ * The OR'd bits of the constants of this module represents
1743
+ * the state of renderers.
1744
+ *
1745
+ * You can use this flag
1746
+ * {SDL2::Window#create_renderer when you create a new renderer}.
1747
+ * No flags(==0) gives priority to available ACCELERATED renderers.
1748
+ */
1749
+
1750
+ /*
1751
+ * Document-module: SDL2::BlendMode
1752
+ *
1753
+ * Constants represent blend mode for {SDL2::Renderer.copy} and
1754
+ * drawing operations.
1755
+ *
1756
+ * You can change the blending mode using
1757
+ * {SDL2::Renderer#draw_blend_mode=} and {SDL2::Texture#blend_mode=}.
1758
+ *
1759
+ * In the backend of SDL, opengl or direct3d blending
1760
+ * mechanism is used for blending operations.
1761
+ */
1762
+
1649
1763
  /*
1650
1764
  * Document-class: SDL2::Texture
1651
1765
  *
@@ -1772,9 +1886,9 @@ static VALUE Texture_format(VALUE self)
1772
1886
  *
1773
1887
  * The return value is one of the following:
1774
1888
  *
1775
- * * SDL2::Texture::ACCESS_STATIC - changes rarely, not lockable
1776
- * * SDL2::Texture::ACCESS_STREAMING - changes frequently, lockable
1777
- * * SDL2::Texture::ACCESS_TARGET - can be used as a render target
1889
+ * * {SDL2::Texture::ACCESS_STATIC}
1890
+ * * {SDL2::Texture::ACCESS_STREAMING}
1891
+ * * {SDL2::Texture::ACCESS_TARGET}
1778
1892
  *
1779
1893
  * @return [Integer]
1780
1894
  *
@@ -2244,11 +2358,23 @@ static VALUE Surface_s_blit(VALUE self, VALUE src, VALUE srcrect, VALUE dst, VAL
2244
2358
  }
2245
2359
 
2246
2360
  /*
2361
+ * Create an empty RGB surface.
2362
+ *
2363
+ * If rmask, gmask, bmask are omitted, the default masks are used.
2364
+ * If amask is omitted, alpha mask is considered to be zero.
2365
+ *
2247
2366
  * @overload new(width, height, depth)
2248
2367
  * @overload new(width, height, depth, amask)
2249
2368
  * @overload new(width, heigth, depth, rmask, gmask, bmask, amask)
2250
2369
  *
2251
- * @param width [Integer]
2370
+ * @param width [Integer] the width of the new surface
2371
+ * @param height [Integer] the height of the new surface
2372
+ * @param depth [Integer] the bit depth of the new surface
2373
+ * @param rmask [Integer] the red mask of a pixel
2374
+ * @param gmask [Integer] the green mask of a pixel
2375
+ * @param bmask [Integer] the blue mask of a pixel
2376
+ * @param amask [Integer] the alpha mask of a pixel
2377
+ *
2252
2378
  * @return [SDL2::Surface]
2253
2379
  */
2254
2380
  static VALUE Surface_s_new(int argc, VALUE* argv, VALUE self)
@@ -2464,32 +2590,109 @@ static VALUE Point_inspect(VALUE self)
2464
2590
  FIELD_ACCESSOR(Point, SDL_Point, x);
2465
2591
  FIELD_ACCESSOR(Point, SDL_Point, y);
2466
2592
 
2593
+
2594
+ /*
2595
+ * Document-class: SDL2::PixelFormat
2596
+ *
2597
+ * This class represents pixel format of textures, windows, and displays.
2598
+ *
2599
+ * In C level, SDL use unsigned integers as pixel formats. This class
2600
+ * wraps these integers. You can get the integers from {#format}.
2601
+ *
2602
+ * @!attribute [r] format
2603
+ * An integer representing the pixel format.
2604
+ *
2605
+ * @return [Integer]
2606
+ */
2607
+
2608
+ /*
2609
+ * @overload initialze(format)
2610
+ *
2611
+ * Initialize pixel format from the given integer representing a fomrmat.
2612
+ *
2613
+ * @param format [Integer] an unsigned integer as a pixel formats
2614
+ */
2467
2615
  static VALUE PixelForamt_initialize(VALUE self, VALUE format)
2468
2616
  {
2469
2617
  rb_iv_set(self, "@format", format);
2470
2618
  return Qnil;
2471
2619
  }
2472
2620
 
2621
+ /*
2622
+ * Get the type of the format.
2623
+ *
2624
+ * @return [Integer] One of the constants of {Type} module.
2625
+ */
2473
2626
  static VALUE PixelFormat_type(VALUE self)
2474
2627
  {
2475
2628
  return UINT2NUM(SDL_PIXELTYPE(NUM2UINT(rb_iv_get(self, "@format"))));
2476
2629
  }
2477
2630
 
2478
- #define PIXELFORMAT_ATTR_READER(field, extractor, c2ruby) \
2479
- static VALUE PixelFormat_##field(VALUE self) \
2480
- { \
2481
- return c2ruby(extractor(NUM2UINT(rb_iv_get(self, "@format")))); \
2482
- }
2631
+ /*
2632
+ define(`PIXELFORMAT_ATTR_READER',
2633
+ `static VALUE PixelFormat_$1(VALUE self)
2634
+ {
2635
+ return $3($2(NUM2UINT(rb_iv_get(self, "@format"))));
2636
+ }')
2637
+ */
2483
2638
 
2639
+ /*
2640
+ * Get the human readable name of the pixel format
2641
+ *
2642
+ * @return [String]
2643
+ */
2484
2644
  PIXELFORMAT_ATTR_READER(name, SDL_GetPixelFormatName, utf8str_new_cstr);
2645
+
2646
+ /*
2647
+ * Get the ordering of channels or bits in the pixel format.
2648
+ *
2649
+ * @return [Integer] One of the constants of {BitmapOrder} module or {PackedOrder} module.
2650
+ */
2485
2651
  PIXELFORMAT_ATTR_READER(order, SDL_PIXELORDER, UINT2NUM);
2652
+
2653
+ /*
2654
+ * Get the channel bit pattern of the pixel format.
2655
+ *
2656
+ * @return [Integer] One of the constants of {PackedLayout} module.
2657
+ */
2486
2658
  PIXELFORMAT_ATTR_READER(layout, SDL_PIXELLAYOUT, UINT2NUM);
2659
+
2660
+ /*
2661
+ * Get the number of bits per pixel.
2662
+ *
2663
+ * @return [Integer]
2664
+ */
2487
2665
  PIXELFORMAT_ATTR_READER(bits_per_pixel, SDL_BITSPERPIXEL, INT2NUM);
2666
+
2667
+ /*
2668
+ * Get the number of bytes per pixel.
2669
+ *
2670
+ * @return [Integer]
2671
+ */
2488
2672
  PIXELFORMAT_ATTR_READER(bytes_per_pixel, SDL_BYTESPERPIXEL, INT2NUM);
2673
+
2674
+ /*
2675
+ * Return true if the pixel format have a palette.
2676
+ */
2489
2677
  PIXELFORMAT_ATTR_READER(indexed_p, SDL_ISPIXELFORMAT_INDEXED, INT2BOOL);
2678
+
2679
+ /*
2680
+ * Return true if the pixel format have an alpha channel.
2681
+ */
2490
2682
  PIXELFORMAT_ATTR_READER(alpha_p, SDL_ISPIXELFORMAT_ALPHA, INT2BOOL);
2683
+
2684
+ /*
2685
+ * Return true if the pixel format is not indexed, and not RGB(A),
2686
+ * for example, the pixel format is YUV.
2687
+ */
2491
2688
  PIXELFORMAT_ATTR_READER(fourcc_p, SDL_ISPIXELFORMAT_FOURCC, INT2BOOL);
2492
2689
 
2690
+ /*
2691
+ * @overload ==(other)
2692
+ * Return true if two pixel format is the same format.
2693
+ *
2694
+ * @return [Boolean]
2695
+ */
2493
2696
  static VALUE PixelFormat_eq(VALUE self, VALUE other)
2494
2697
  {
2495
2698
  if (!rb_obj_is_kind_of(other, cPixelFormat))
@@ -2498,6 +2701,7 @@ static VALUE PixelFormat_eq(VALUE self, VALUE other)
2498
2701
  return INT2BOOL(rb_iv_get(self, "@format") == rb_iv_get(other, "@format"));
2499
2702
  }
2500
2703
 
2704
+ /* @return [String] inspection string */
2501
2705
  static VALUE PixelFormat_inspect(VALUE self)
2502
2706
  {
2503
2707
  Uint32 format = NUM2UINT(rb_iv_get(self, "@format"));
@@ -2512,18 +2716,44 @@ static VALUE PixelFormat_inspect(VALUE self)
2512
2716
  INT2BOOLCSTR(SDL_ISPIXELFORMAT_FOURCC(format)));
2513
2717
  }
2514
2718
 
2719
+ /*
2720
+ * Document-module: SDL2::ScreenSaver
2721
+ *
2722
+ * This module provides functions to disable and enable a screensaver.
2723
+ */
2724
+
2725
+ /*
2726
+ * Enable screensaver.
2727
+ *
2728
+ * @return [nil]
2729
+ * @see .disable
2730
+ * @see .enabled?
2731
+ */
2515
2732
  static VALUE ScreenSaver_enable(VALUE self)
2516
2733
  {
2517
2734
  SDL_EnableScreenSaver();
2518
2735
  return Qnil;
2519
2736
  }
2520
2737
 
2738
+ /*
2739
+ * Disable screensaver.
2740
+ *
2741
+ * @return [nil]
2742
+ * @see .enable
2743
+ * @see .enabled?
2744
+ */
2521
2745
  static VALUE ScreenSaver_disable(VALUE self)
2522
2746
  {
2523
2747
  SDL_DisableScreenSaver();
2524
2748
  return Qnil;
2525
2749
  }
2526
2750
 
2751
+ /*
2752
+ * Return true if the screensaver is enabled.
2753
+ *
2754
+ * @see .enable
2755
+ * @see .disable
2756
+ */
2527
2757
  static VALUE ScreenSaver_enabled_p(VALUE self)
2528
2758
  {
2529
2759
  return INT2BOOL(SDL_IsScreenSaverEnabled());
@@ -2579,27 +2809,48 @@ void rubysdl2_init_video(void)
2579
2809
  rb_define_method(cWindow, "gl_drawable_size", Window_gl_drawable_size, 0);
2580
2810
  #endif
2581
2811
  rb_define_method(cWindow, "gl_swap", Window_gl_swap, 0);
2812
+
2813
+ /* Indicate that you don't care what the window position is */
2582
2814
  rb_define_const(cWindow, "POS_CENTERED", INT2NUM(SDL_WINDOWPOS_CENTERED));
2815
+ /* Indicate that the window position should be centered */
2583
2816
  rb_define_const(cWindow, "POS_UNDEFINED", INT2NUM(SDL_WINDOWPOS_UNDEFINED));
2584
- #define DEFINE_SDL_WINDOW_FLAGS_CONST(n) \
2585
- rb_define_const(cWindow, #n, UINT2NUM(SDL_WINDOW_##n));
2586
- DEFINE_SDL_WINDOW_FLAGS_CONST(FULLSCREEN);
2587
- DEFINE_SDL_WINDOW_FLAGS_CONST(FULLSCREEN_DESKTOP);
2588
- DEFINE_SDL_WINDOW_FLAGS_CONST(OPENGL);
2589
- DEFINE_SDL_WINDOW_FLAGS_CONST(SHOWN);
2590
- DEFINE_SDL_WINDOW_FLAGS_CONST(HIDDEN);
2591
- DEFINE_SDL_WINDOW_FLAGS_CONST(BORDERLESS);
2592
- DEFINE_SDL_WINDOW_FLAGS_CONST(RESIZABLE);
2593
- DEFINE_SDL_WINDOW_FLAGS_CONST(MINIMIZED);
2594
- DEFINE_SDL_WINDOW_FLAGS_CONST(MAXIMIZED);
2595
- DEFINE_SDL_WINDOW_FLAGS_CONST(INPUT_GRABBED);
2596
- DEFINE_SDL_WINDOW_FLAGS_CONST(INPUT_FOCUS);
2597
- DEFINE_SDL_WINDOW_FLAGS_CONST(MOUSE_FOCUS);
2598
- DEFINE_SDL_WINDOW_FLAGS_CONST(FOREIGN);
2817
+
2818
+ mWindowFlags = rb_define_module_under(cWindow, "Flags");
2819
+ /* define(`DEFINE_WINDOW_FLAGS_CONST',`rb_define_const(mWindowFlags, "$1", UINT2NUM(SDL_WINDOW_$1))') */
2820
+ /* fullscreen window */
2821
+ DEFINE_WINDOW_FLAGS_CONST(FULLSCREEN);
2822
+ /* fullscreen window at the current desktop resolution */
2823
+ DEFINE_WINDOW_FLAGS_CONST(FULLSCREEN_DESKTOP);
2824
+ /* window usable with OpenGL context */
2825
+ DEFINE_WINDOW_FLAGS_CONST(OPENGL);
2826
+ /* window is visible */
2827
+ DEFINE_WINDOW_FLAGS_CONST(SHOWN);
2828
+ /* window is not visible */
2829
+ DEFINE_WINDOW_FLAGS_CONST(HIDDEN);
2830
+ /* no window decoration */
2831
+ DEFINE_WINDOW_FLAGS_CONST(BORDERLESS);
2832
+ /* window is resizable */
2833
+ DEFINE_WINDOW_FLAGS_CONST(RESIZABLE);
2834
+ /* window is minimized */
2835
+ DEFINE_WINDOW_FLAGS_CONST(MINIMIZED);
2836
+ /* window is maximized */
2837
+ DEFINE_WINDOW_FLAGS_CONST(MAXIMIZED);
2838
+ /* window has grabbed input focus */
2839
+ DEFINE_WINDOW_FLAGS_CONST(INPUT_GRABBED);
2840
+ /* window has input focus */
2841
+ DEFINE_WINDOW_FLAGS_CONST(INPUT_FOCUS);
2842
+ /* window has mouse focus */
2843
+ DEFINE_WINDOW_FLAGS_CONST(MOUSE_FOCUS);
2844
+ /* window is not created by SDL */
2845
+ DEFINE_WINDOW_FLAGS_CONST(FOREIGN);
2599
2846
  #ifdef SDL_WINDOW_ALLOW_HIGHDPI
2600
- DEFINE_SDL_WINDOW_FLAGS_CONST(ALLOW_HIGHDPI);
2847
+ /* window should be created in high-DPI mode if supported (>= SDL 2.0.1)*/
2848
+ DEFINE_WINDOW_FLAGS_CONST(ALLOW_HIGHDPI);
2849
+ #endif
2850
+ #ifdef SDL_WINDOW_MOSUE_CAPTURE
2851
+ /* window has mouse caputred (>= SDL 2.0.4) */
2852
+ DEFINE_WINDOW_FLAGS_CONST(MOUSE_CAPTURE);
2601
2853
  #endif
2602
-
2603
2854
 
2604
2855
  cDisplay = rb_define_class_under(mSDL2, "Display", rb_cObject);
2605
2856
 
@@ -2611,6 +2862,7 @@ void rubysdl2_init_video(void)
2611
2862
  rb_define_method(cDisplay, "desktop_mode", Display_desktop_mode, 0);
2612
2863
  rb_define_method(cDisplay, "closest_mode", Display_closest_mode, 1);
2613
2864
  rb_define_method(cDisplay, "bounds", Display_bounds, 0);
2865
+
2614
2866
 
2615
2867
  cDisplayMode = rb_define_class_under(cDisplay, "Mode", rb_cObject);
2616
2868
 
@@ -2621,7 +2873,7 @@ void rubysdl2_init_video(void)
2621
2873
  rb_define_method(cDisplayMode, "w", DisplayMode_w, 0);
2622
2874
  rb_define_method(cDisplayMode, "h", DisplayMode_h, 0);
2623
2875
  rb_define_method(cDisplayMode, "refresh_rate", DisplayMode_refresh_rate, 0);
2624
- /* attr format, w, h, refresh_rate */
2876
+
2625
2877
 
2626
2878
  cRenderer = rb_define_class_under(mSDL2, "Renderer", rb_cObject);
2627
2879
 
@@ -2645,12 +2897,16 @@ void rubysdl2_init_video(void)
2645
2897
  rb_define_method(cRenderer, "draw_blend_mode", Renderer_draw_blend_mode, 0);
2646
2898
  rb_define_method(cRenderer, "draw_blend_mode=", Renderer_set_draw_blend_mode, 1);
2647
2899
  rb_define_method(cRenderer, "clip_rect", Renderer_clip_rect, 0);
2900
+ rb_define_method(cRenderer, "clip_rect=", Renderer_set_clip_rect, 1);
2648
2901
  #if SDL_VERSION_ATLEAST(2,0,4)
2649
2902
  rb_define_method(cRenderer, "clip_enabled?", Render_clip_enabled_p, 0);
2650
2903
  #endif
2651
2904
  rb_define_method(cRenderer, "logical_size", Renderer_logical_size, 0);
2905
+ rb_define_method(cRenderer, "logical_size=", Renderer_set_logical_size, 1);
2652
2906
  rb_define_method(cRenderer, "scale", Renderer_scale, 0);
2907
+ rb_define_method(cRenderer, "scale=", Renderer_set_scale, 1);
2653
2908
  rb_define_method(cRenderer, "viewport", Renderer_viewport, 0);
2909
+ rb_define_method(cRenderer, "viewport=", Renderer_set_viewport, 1);
2654
2910
  rb_define_method(cRenderer, "support_render_target?", Renderer_support_render_target_p, 0);
2655
2911
  rb_define_method(cRenderer, "output_size", Renderer_output_size, 0);
2656
2912
  rb_define_method(cRenderer, "render_target", Renderer_render_target, 0);
@@ -2658,24 +2914,37 @@ void rubysdl2_init_video(void)
2658
2914
  rb_define_method(cRenderer, "reset_render_target", Renderer_reset_render_target, 0);
2659
2915
 
2660
2916
  rb_define_method(cRenderer, "info", Renderer_info, 0);
2661
- #define DEFINE_SDL_RENDERER_FLAGS_CONST(n) \
2662
- rb_define_const(cRenderer, #n, UINT2NUM(SDL_RENDERER_##n))
2663
- DEFINE_SDL_RENDERER_FLAGS_CONST(SOFTWARE);
2664
- DEFINE_SDL_RENDERER_FLAGS_CONST(ACCELERATED);
2917
+
2918
+ mRendererFlags = rb_define_module_under(cRenderer, "Flags");
2919
+
2920
+ /* define(`DEFINE_RENDERER_FLAGS_CONST',`rb_define_const(mRendererFlags, "$1", UINT2NUM(SDL_RENDERER_$1))') */
2921
+ /* the renderer is a software fallback */
2922
+ DEFINE_RENDERER_FLAGS_CONST(SOFTWARE);
2923
+ /* the renderer uses hardware acceleration */
2924
+ DEFINE_RENDERER_FLAGS_CONST(ACCELERATED);
2665
2925
  #ifdef SDL_RENDERER_PRESENTVSYNC
2666
- DEFINE_SDL_RENDERER_FLAGS_CONST(PRESENTVSYNC);
2926
+ /* present is synchronized with the refresh rate */
2927
+ DEFINE_RENDERER_FLAGS_CONST(PRESENTVSYNC);
2667
2928
  #endif
2668
- DEFINE_SDL_RENDERER_FLAGS_CONST(TARGETTEXTURE);
2669
- #define DEFINE_SDL_FLIP_CONST(t) \
2670
- rb_define_const(cRenderer, "FLIP_" #t, INT2FIX(SDL_FLIP_##t))
2929
+ /* the renderer supports rendering to texture */
2930
+ DEFINE_RENDERER_FLAGS_CONST(TARGETTEXTURE);
2931
+ /* define(`DEFINE_SDL_FLIP_CONST',`rb_define_const(cRenderer, "FLIP_$1", INT2FIX(SDL_FLIP_$1))') */
2932
+ /* Do not flip, used in {Renderer#copy_ex} */
2671
2933
  DEFINE_SDL_FLIP_CONST(NONE);
2934
+ /* Flip horizontally, used in {Renderer#copy_ex} */
2672
2935
  DEFINE_SDL_FLIP_CONST(HORIZONTAL);
2936
+ /* Flip vertically, used in {Renderer#copy_ex} */
2673
2937
  DEFINE_SDL_FLIP_CONST(VERTICAL);
2674
- #define DEFINE_BLENDMODE_CONST(t) \
2675
- rb_define_const(mSDL2, "BLENDMODE_" #t, INT2FIX(SDL_BLENDMODE_##t))
2938
+
2939
+ mBlendMode = rb_define_module_under(mSDL2, "BlendMode");
2940
+ /* define(`DEFINE_BLENDMODE_CONST',`rb_define_const(mBlendMode, "$1", INT2FIX(SDL_BLENDMODE_$1))') */
2941
+ /* no blending (dstRGBA = srcRGBA) */
2676
2942
  DEFINE_BLENDMODE_CONST(NONE);
2943
+ /* alpha blending (dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA), dstA = srcA + (dstA * (1-srcA)))*/
2677
2944
  DEFINE_BLENDMODE_CONST(BLEND);
2945
+ /* additive blending (dstRGB = (srcRGB * srcA) + dstRGB, dstA = dstA) */
2678
2946
  DEFINE_BLENDMODE_CONST(ADD);
2947
+ /* color modulate (multiplicative) (dstRGB = srcRGB * dstRGB, dstA = dstA) */
2679
2948
  DEFINE_BLENDMODE_CONST(MOD);
2680
2949
 
2681
2950
  cTexture = rb_define_class_under(mSDL2, "Texture", rb_cObject);
@@ -2692,10 +2961,12 @@ void rubysdl2_init_video(void)
2692
2961
  rb_define_method(cTexture, "h", Texture_h, 0);
2693
2962
  rb_define_method(cTexture, "inspect", Texture_inspect, 0);
2694
2963
  rb_define_method(cTexture, "debug_info", Texture_debug_info, 0);
2695
- #define DEFINE_TEXTUREAH_ACCESS_CONST(t) \
2696
- rb_define_const(cTexture, "ACCESS_" #t, INT2NUM(SDL_TEXTUREACCESS_##t))
2964
+ /* define(`DEFINE_TEXTUREAH_ACCESS_CONST', `rb_define_const(cTexture, "ACCESS_$1", INT2NUM(SDL_TEXTUREACCESS_$1))') */
2965
+ /* texture access pattern - changes rarely, not lockable */
2697
2966
  DEFINE_TEXTUREAH_ACCESS_CONST(STATIC);
2967
+ /* texture access pattern - changes frequently, lockable */
2698
2968
  DEFINE_TEXTUREAH_ACCESS_CONST(STREAMING);
2969
+ /* texture access pattern - can be used as a render target */
2699
2970
  DEFINE_TEXTUREAH_ACCESS_CONST(TARGET);
2700
2971
 
2701
2972
 
@@ -2768,17 +3039,74 @@ void rubysdl2_init_video(void)
2768
3039
  rb_define_method(cPixelFormat, "alpha?", PixelFormat_alpha_p, 0);
2769
3040
  rb_define_method(cPixelFormat, "fourcc?", PixelFormat_fourcc_p, 0);
2770
3041
  rb_define_method(cPixelFormat, "==", PixelFormat_eq, 1);
3042
+
3043
+ mPixelType = rb_define_module_under(cPixelFormat, "Type");
3044
+ /* define(`DEFINE_PIXELTYPE_CONST',`rb_define_const(mPixelType, "$1", UINT2NUM(SDL_PIXELTYPE_$1))') */
3045
+ DEFINE_PIXELTYPE_CONST(UNKNOWN);
3046
+ DEFINE_PIXELTYPE_CONST(INDEX1);
3047
+ DEFINE_PIXELTYPE_CONST(INDEX4);
3048
+ DEFINE_PIXELTYPE_CONST(INDEX8);
3049
+ DEFINE_PIXELTYPE_CONST(PACKED8);
3050
+ DEFINE_PIXELTYPE_CONST(PACKED16);
3051
+ DEFINE_PIXELTYPE_CONST(PACKED32);
3052
+ DEFINE_PIXELTYPE_CONST(ARRAYU8);
3053
+ DEFINE_PIXELTYPE_CONST(ARRAYU16);
3054
+ DEFINE_PIXELTYPE_CONST(ARRAYU32);
3055
+ DEFINE_PIXELTYPE_CONST(ARRAYF16);
3056
+ DEFINE_PIXELTYPE_CONST(ARRAYF32);
3057
+
3058
+ mBitmapOrder = rb_define_module_under(cPixelFormat, "BitmapOrder");
3059
+ rb_define_const(mBitmapOrder, "NONE", UINT2NUM(SDL_BITMAPORDER_NONE));
3060
+ rb_define_const(mBitmapOrder, "O_1234", UINT2NUM(SDL_BITMAPORDER_1234));
3061
+ rb_define_const(mBitmapOrder, "O_4321", UINT2NUM(SDL_BITMAPORDER_4321));
3062
+
3063
+ mPackedOrder = rb_define_module_under(cPixelFormat, "PackedOrder");
3064
+ /* define(`DEFINE_PACKEDORDER_CONST',`rb_define_const(mPackedOrder, "$1", UINT2NUM(SDL_PACKEDORDER_$1))') */
3065
+ DEFINE_PACKEDORDER_CONST(NONE);
3066
+ DEFINE_PACKEDORDER_CONST(XRGB);
3067
+ DEFINE_PACKEDORDER_CONST(RGBX);
3068
+ DEFINE_PACKEDORDER_CONST(ARGB);
3069
+ DEFINE_PACKEDORDER_CONST(RGBA);
3070
+ DEFINE_PACKEDORDER_CONST(XBGR);
3071
+ DEFINE_PACKEDORDER_CONST(BGRX);
3072
+ DEFINE_PACKEDORDER_CONST(ABGR);
3073
+ DEFINE_PACKEDORDER_CONST(BGRA);
3074
+
3075
+ mArrayOrder = rb_define_module_under(cPixelFormat, "ArrayOrder");
3076
+ /* define(`DEFINE_ARRAYORDER_CONST',`rb_define_const(mArrayOrder, "$1", UINT2NUM(SDL_ARRAYORDER_$1))') */
3077
+ DEFINE_ARRAYORDER_CONST(NONE);
3078
+ DEFINE_ARRAYORDER_CONST(RGB);
3079
+ DEFINE_ARRAYORDER_CONST(RGBA);
3080
+ DEFINE_ARRAYORDER_CONST(ARGB);
3081
+ DEFINE_ARRAYORDER_CONST(BGR);
3082
+ DEFINE_ARRAYORDER_CONST(BGRA);
3083
+ DEFINE_ARRAYORDER_CONST(ABGR);
3084
+
3085
+ mPackedLayout = rb_define_module_under(cPixelFormat, "PackedLayout");
3086
+ /* define(`DEFINE_PACKEDLAYOUT_CONST',`rb_define_const(mPackedLayout, "L_$1", UINT2NUM(SDL_PACKEDLAYOUT_$1))') */
3087
+ rb_define_const(mPackedLayout, "NONE", UINT2NUM(SDL_PACKEDLAYOUT_NONE));
3088
+ DEFINE_PACKEDLAYOUT_CONST(332);
3089
+ DEFINE_PACKEDLAYOUT_CONST(4444);
3090
+ DEFINE_PACKEDLAYOUT_CONST(1555);
3091
+ DEFINE_PACKEDLAYOUT_CONST(5551);
3092
+ DEFINE_PACKEDLAYOUT_CONST(565);
3093
+ DEFINE_PACKEDLAYOUT_CONST(8888);
3094
+ DEFINE_PACKEDLAYOUT_CONST(2101010);
3095
+ DEFINE_PACKEDLAYOUT_CONST(1010102);
2771
3096
 
2772
3097
  {
2773
3098
  VALUE formats = rb_ary_new();
3099
+ /* -: Array of all available formats */
2774
3100
  rb_define_const(cPixelFormat, "FORMATS", formats);
2775
- #define DEFINE_PIXELFORMAT_CONST(t) \
2776
- do { \
2777
- VALUE format = PixelFormat_new(SDL_PIXELFORMAT_##t); \
2778
- rb_define_const(cPixelFormat, #t, format); \
2779
- rb_ary_push(formats, format); \
2780
- } while (0)
2781
- DEFINE_PIXELFORMAT_CONST(UNKNOWN);
3101
+ /* define(`DEFINE_PIXELFORMAT_CONST',`do {
3102
+ VALUE format = PixelFormat_new(SDL_PIXELFORMAT_$1);
3103
+ $2
3104
+ rb_define_const(cPixelFormat, "$1", format);
3105
+ rb_ary_push(formats, format);
3106
+ } while (0)')
3107
+ */
3108
+
3109
+ DEFINE_PIXELFORMAT_CONST(UNKNOWN, /* -: PixelFormat: Unused - reserved by SDL */);
2782
3110
  DEFINE_PIXELFORMAT_CONST(INDEX1LSB);
2783
3111
  DEFINE_PIXELFORMAT_CONST(INDEX1MSB);
2784
3112
  DEFINE_PIXELFORMAT_CONST(INDEX4LSB);
@@ -2832,6 +3160,16 @@ void rubysdl2_init_video(void)
2832
3160
 
2833
3161
  static VALUE mIMG;
2834
3162
 
3163
+ /*
3164
+ * Document-module: SDL2::IMG
3165
+ *
3166
+ * This module provides the interface to SDL_image. You can load
3167
+ * many kinds of image files using this modules.
3168
+ *
3169
+ * This module provides only initialization interface {SDL2::IMG.init}.
3170
+ * After calling init, you can load image files using {SDL2::Surface.load}.
3171
+ */
3172
+
2835
3173
  /*
2836
3174
  * @overload init(flags)
2837
3175
  * Initialize SDL_image.
@@ -2842,6 +3180,7 @@ static VALUE mIMG;
2842
3180
  * * {SDL2::IMG::INIT_JPG}
2843
3181
  * * {SDL2::IMG::INIT_PNG}
2844
3182
  * * {SDL2::IMG::INIT_TIF}
3183
+ * * {SDL2::IMG::INIT_WEBP}
2845
3184
  *
2846
3185
  * You need to initialize SDL_image to check whether specified format
2847
3186
  * is supported by your environment. If your environment does not
@@ -2921,10 +3260,14 @@ void rubysdl2_init_image(void)
2921
3260
  rb_define_singleton_method(cSurface, "load", Surface_s_load, 1);
2922
3261
  rb_define_method(cRenderer, "load_texture", Renderer_load_texture, 1);
2923
3262
 
2924
-
3263
+
3264
+ /* Initialize the JPEG loader */
2925
3265
  rb_define_const(mIMG, "INIT_JPG", INT2NUM(IMG_INIT_JPG));
3266
+ /* Initialize the PNG loader */
2926
3267
  rb_define_const(mIMG, "INIT_PNG", INT2NUM(IMG_INIT_PNG));
3268
+ /* Initialize the TIF loader */
2927
3269
  rb_define_const(mIMG, "INIT_TIF", INT2NUM(IMG_INIT_TIF));
3270
+ /* Initialize the WEBP loader */
2928
3271
  rb_define_const(mIMG, "INIT_WEBP", INT2NUM(IMG_INIT_WEBP));
2929
3272
  }
2930
3273