ruby-sdl2 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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