This commit is contained in:
Richard Smith 2024-10-16 13:49:19 +01:00
parent 62ff73d0e7
commit be6cf57d85
65 changed files with 8668 additions and 4495 deletions

View file

@ -19,7 +19,7 @@ jobs:
raylib-platform: ['Desktop', 'SDL']
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: recursive
@ -34,7 +34,7 @@ jobs:
sudo cmake --install .
- name: Setup Python
uses: actions/setup-python@v2.2.2
uses: actions/setup-python@v5
with:
# Version range or exact version of a Python version to use, using SemVer's version range syntax.
python-version: ${{ matrix.python-version }}
@ -106,7 +106,7 @@ jobs:
# MACOSX_DEPLOYMENT_TARGET: 11.0
# steps:
# # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
# - uses: actions/checkout@v2
# - uses: actions/checkout@v4
# with:
# submodules: recursive
#
@ -121,7 +121,7 @@ jobs:
# sudo cmake --install .
#
# - name: Setup Python
# uses: actions/setup-python@v2.2.2
# uses: actions/setup-python@v5
# with:
# # Version range or exact version of a Python version to use, using SemVer's version range syntax.
# python-version: ${{ matrix.python-version }}
@ -189,12 +189,12 @@ jobs:
raylib-platform: ['Desktop', 'SDL', 'DRM']
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v2.2.2
uses: actions/setup-python@v5
with:
# Version range or exact version of a Python version to use, using SemVer's version range syntax.
python-version: ${{ matrix.python-version }}
@ -272,7 +272,7 @@ jobs:
python-version: [ '3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.9', 'pypy-3.10' ]
raylib-platform: ['Desktop', 'SDL']
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: recursive
@ -289,7 +289,7 @@ jobs:
run: echo SDL2_DIR=${{ runner.temp }}\SDL2\cmake >> $env:GITHUB_ENV
- name: Setup Python
uses: actions/setup-python@v2.2.2
uses: actions/setup-python@v5
with:
# Version range or exact version of a Python version to use, using SemVer's version range syntax.
python-version: ${{ matrix.python-version }}
@ -353,12 +353,12 @@ jobs:
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v2.2.2
uses: actions/setup-python@v5
with:
# Version range or exact version of a Python version to use, using SemVer's version range syntax.
python-version: '3.12'
@ -400,12 +400,12 @@ jobs:
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v2.2.2
uses: actions/setup-python@v5
with:
# Version range or exact version of a Python version to use, using SemVer's version range syntax.
python-version: '3.12'

View file

@ -1,4 +1,6 @@
# Python Bindings for Raylib 5.0
# Python Bindings for Raylib 5.5
## Libraries: raymath, raygui, rlgl, physac and GLFW
## Backends: Desktop, SDL, DRM, Web
Chatroom: [Discord](https://discord.gg/fKDwt85aX6) or [Matrix](https://matrix.to/#/#raylib-python-cffi:matrix.org)
@ -8,23 +10,23 @@ original Raylib.
* Faster, fewer bugs and easier to maintain than ctypes.
* Commercial-friendly license.
* Docstrings and auto-completion.
* **Now includes extra libraries: raymath, raygui, rlgl, physac and GLFW**
[Full documentation](http://electronstudio.github.io/raylib-python-cffi)
# Quickstart
`pip3 install raylib`
from pyray import *
init_window(800, 450, "Hello")
while not window_should_close():
begin_drawing()
clear_background(WHITE)
draw_text("Hello world", 190, 200, 20, VIOLET)
end_drawing()
close_window()
`pip3 install raylib==5.0.0.4`
```python
from pyray import *
init_window(800, 450, "Hello")
while not window_should_close():
begin_drawing()
clear_background(WHITE)
draw_text("Hello world", 190, 200, 20, VIOLET)
end_drawing()
close_window()
```
# Installation
@ -35,13 +37,35 @@ First make sure you have the latest pip installed:
Then install
python3 -m pip install setuptools
python3 -m pip install raylib
python3 -m pip install raylib==5.0.0.4
On most platforms it should install a binary wheel (Windows 10 x64, MacOS 12 x64/arm64, Linux Ubuntu2004 x64/arm64).
If yours isn't available then pip will attempt to build from source, in which case you will need to have Raylib development libs installed, e.g.
On most platforms it should install a binary wheel. If yours isn't available then pip will attempt to build from source, in which case you will need to have Raylib development libs installed, e.g.
using homebrew, apt, etc.
## Windows
Binaries require x64 Windows 10 or newer. (For x86 or older Windows you will have to build from source.)
Use an [official Windows Python release](https://www.python.org/downloads/windows/) rather than WSL, MSYS, etc.
## MacOS
Binaries require arm64 MacOS 13 or x64 MacOS 12 or newer.
Older MacOS requires building from source but this is usually simple:
brew install pkg-config
brew install raylib
python3 -m pip install raylib==5.0.0.4
## Linux
Binaries require OS newer than Ubuntu 2020, x64 or arm64. Otherwise build from source.
(Pip should attempt automatically but will need Raylib itself installed and also pkg-config.)
The arm64 builds are built on Raspberry Pi arm64 Bullseye
so may not work on other boards.
## Raspberry Pi
[Using on Rasperry Pi](RPI.rst)
@ -54,12 +78,23 @@ There is now a separate dynamic version of this binding:
It works on some systems where the static version doesn't, [but be sure to read these caveats before using it](https://electronstudio.github.io/raylib-python-cffi/dynamic.html)
## Beta testing
## SDL backend
If you find a bug, it may be fixed in the [latest dev release](https://github.com/electronstudio/raylib-python-cffi/releases).
You can install an alpha or beta version by specifying the exact version number like this:
This is not well tested but has better support for controllers:
python3 -m pip install raylib==4.2.0.0.dev4
python3 -m pip uninstall raylib
python3 -m pip install raylib_sdl
You can't have multiple backends installed at once.
## DRM backend
This uses the Linux framebuffer for devices that don't run X11/Wayland:
python3 -m pip uninstall raylib
python3 -m pip install raylib_drm
You can't have multiple backends installed at once.
## Problems?
@ -143,9 +178,9 @@ A related library (that is a work in progress!):
* Converting more examples from C to Python
* Testing on more platforms
# License (updated)
# License
The bindings are now under the Eclipse Public License, so you are free to
Eclipse Public License, so you are free to
statically link and use in non-free / proprietary / commercial projects!
# Performance

View file

@ -12,7 +12,10 @@ We have published binary wheels compiled for 64-bit Raspberry OS Bullseye in X11
python -m pip install --break-system-packages raylib
If it doesn't work, or you're not on Bullseye, or you're 32 bit, or if you want to use Raylib in ``PLATFORM_DRM`` mode, you will need to compile your own raylib. See below.
Alternatively there is a DRM wheel called ``raylib_drm`` to use the framebuffer without X11. You can't have both wheels
installed at once.
If it doesn't work, or you're not on Bullseye, or you're 32 bit, you will need to compile your own raylib. See below.
For full instructions on this, see https://github.com/raysan5/raylib/wiki/Working-on-Raspberry-Pi . If you need help with this ask Raylib.
Option 2: Compile Raylib from source X11 mode
@ -39,7 +42,7 @@ Then have pip compile and install the wheel:
::
python3 -m pip install --break-system-packages setuptools
python3 -m pip install --no-cache-dir --no-binary raylib --upgrade --force-reinstall --break-system-packages raylib==5.0.0.3
python3 -m pip install --no-cache-dir --no-binary raylib --upgrade --force-reinstall --break-system-packages raylib==5.0.0.4
Option 3: Compile Raylib from source DRM mode
---------------------------------------------
@ -82,7 +85,7 @@ Then have pip compile and install the wheel:
::
python3 -m pip install --break-system-packages setuptools
python3 -m pip install --no-cache-dir --no-binary raylib --upgrade --force-reinstall --break-system-packages raylib==5.0.0.3
python3 -m pip install --no-cache-dir --no-binary raylib --upgrade --force-reinstall --break-system-packages raylib==5.0.0.4

View file

@ -63,8 +63,6 @@ def ctype_to_python_type(t):
print("""from typing import Any
def pointer(struct):
...
""")
# These words can be used for c arg names, but not in python
@ -137,7 +135,7 @@ for struct in ffi.list_types()[0]:
# elif ffi.typeof(struct).kind == "enum":
# print(f"{struct}: int")
else:
print("ERROR UNKNOWN TYPE", ffi.typeof(struct), file=sys.stderr)
print("WARNING: SKIPPING UNKNOWN TYPE", ffi.typeof(struct), file=sys.stderr)
print("""
LIGHTGRAY : Color

View file

@ -133,7 +133,7 @@ for struct in ffi.list_types()[0]:
elif ffi.typeof(struct).kind == "enum":
print(f"{struct}: int")
else:
print("ERROR UNKNOWN TYPE", ffi.typeof(struct), file=sys.stderr)
print("WARNING: SKIPPING UNKNOWN TYPE", ffi.typeof(struct), file=sys.stderr)
print("""

View file

@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 614f580883a5bffb7f1606004f7be223
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 6b88b88b20947586d6498748ffd23a92
tags: 645f666f9bcd5a90fca523b33c5a78b7

View file

@ -1,3 +1,5 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
@ -6,19 +8,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Building from source &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
@ -47,7 +45,7 @@
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.5</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#quickstart">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#installation">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#how-to-use">How to use</a></li>
@ -55,7 +53,7 @@
<li class="toctree-l1"><a class="reference internal" href="README.html#app-showcase">App showcase</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#rlzero">RLZero</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#help-wanted">Help wanted</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license-updated">License (updated)</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#performance">Performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#packaging-your-app">Packaging your app</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#advert">Advert</a></li>

View file

@ -1,24 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Python Bindings for Raylib 5.0 &mdash; Raylib Python documentation</title>
<title>Python Bindings for Raylib 5.5 &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
@ -47,12 +45,20 @@
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Python Bindings for Raylib 5.0</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Python Bindings for Raylib 5.5</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#libraries-raymath-raygui-rlgl-physac-and-glfw">Libraries: raymath, raygui, rlgl, physac and GLFW</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backends-desktop-sdl-drm-web">Backends: Desktop, SDL, DRM, Web</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="#quickstart">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="#installation">Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#windows">Windows</a></li>
<li class="toctree-l2"><a class="reference internal" href="#macos">MacOS</a></li>
<li class="toctree-l2"><a class="reference internal" href="#linux">Linux</a></li>
<li class="toctree-l2"><a class="reference internal" href="#raspberry-pi">Raspberry Pi</a></li>
<li class="toctree-l2"><a class="reference internal" href="#dynamic-binding-version">Dynamic binding version</a></li>
<li class="toctree-l2"><a class="reference internal" href="#beta-testing">Beta testing</a></li>
<li class="toctree-l2"><a class="reference internal" href="#sdl-backend">SDL backend</a></li>
<li class="toctree-l2"><a class="reference internal" href="#drm-backend">DRM backend</a></li>
<li class="toctree-l2"><a class="reference internal" href="#problems">Problems?</a></li>
</ul>
</li>
@ -65,7 +71,7 @@
<li class="toctree-l1"><a class="reference internal" href="#app-showcase">App showcase</a></li>
<li class="toctree-l1"><a class="reference internal" href="#rlzero">RLZero</a></li>
<li class="toctree-l1"><a class="reference internal" href="#help-wanted">Help wanted</a></li>
<li class="toctree-l1"><a class="reference internal" href="#license-updated">License (updated)</a></li>
<li class="toctree-l1"><a class="reference internal" href="#license">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="#performance">Performance</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#bunnymark">Bunnymark</a></li>
</ul>
@ -93,7 +99,7 @@
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Python Bindings for Raylib 5.0</li>
<li class="breadcrumb-item active">Python Bindings for Raylib 5.5</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/README.md.txt" rel="nofollow"> View page source</a>
</li>
@ -103,9 +109,13 @@
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="python-bindings-for-raylib-5-0">
<h1>Python Bindings for Raylib 5.0<a class="headerlink" href="#python-bindings-for-raylib-5-0" title="Link to this heading"></a></h1>
<iframe src="https://electronstudio.github.io/raylib-python-cffi-pygbag-examples/shapes_bouncing_ball/build/web/" style="border:0px #ffffff none;" name="myiFrame" scrolling="no" frameborder="1" marginheight="0px" marginwidth="0px" height="450px" width="800px" allowfullscreen></iframe>
<section id="python-bindings-for-raylib-5-5">
<h1>Python Bindings for Raylib 5.5<a class="headerlink" href="#python-bindings-for-raylib-5-5" title="Link to this heading"></a></h1>
<section id="libraries-raymath-raygui-rlgl-physac-and-glfw">
<h2>Libraries: raymath, raygui, rlgl, physac and GLFW<a class="headerlink" href="#libraries-raymath-raygui-rlgl-physac-and-glfw" title="Link to this heading"></a></h2>
</section>
<section id="backends-desktop-sdl-drm-web">
<h2>Backends: Desktop, SDL, DRM, Web<a class="headerlink" href="#backends-desktop-sdl-drm-web" title="Link to this heading"></a></h2>
<p>Chatroom: <a class="reference external" href="https://discord.gg/fKDwt85aX6">Discord</a> or <a class="reference external" href="https://matrix.to/#/#raylib-python-cffi:matrix.org">Matrix</a></p>
<p>New CFFI API static bindings.</p>
<ul class="simple">
@ -114,21 +124,21 @@ original Raylib.</p></li>
<li><p>Faster, fewer bugs and easier to maintain than ctypes.</p></li>
<li><p>Commercial-friendly license.</p></li>
<li><p>Docstrings and auto-completion.</p></li>
<li><p><strong>Now includes extra libraries: raymath, raygui, rlgl, physac and GLFW</strong></p></li>
</ul>
<p><a class="reference external" href="http://electronstudio.github.io/raylib-python-cffi">Full documentation</a></p>
</section>
</section>
<section id="quickstart">
<h1>Quickstart<a class="headerlink" href="#quickstart" title="Link to this heading"></a></h1>
<p><code class="docutils literal notranslate"><span class="pre">pip3</span> <span class="pre">install</span> <span class="pre">raylib</span></code></p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>from pyray import *
init_window(800, 450, &quot;Hello&quot;)
while not window_should_close():
begin_drawing()
clear_background(WHITE)
draw_text(&quot;Hello world&quot;, 190, 200, 20, VIOLET)
end_drawing()
close_window()
<p><code class="docutils literal notranslate"><span class="pre">pip3</span> <span class="pre">install</span> <span class="pre">raylib==5.0.0.4</span></code></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">pyray</span> <span class="kn">import</span> <span class="o">*</span>
<span class="n">init_window</span><span class="p">(</span><span class="mi">800</span><span class="p">,</span> <span class="mi">450</span><span class="p">,</span> <span class="s2">&quot;Hello&quot;</span><span class="p">)</span>
<span class="k">while</span> <span class="ow">not</span> <span class="n">window_should_close</span><span class="p">():</span>
<span class="n">begin_drawing</span><span class="p">()</span>
<span class="n">clear_background</span><span class="p">(</span><span class="n">WHITE</span><span class="p">)</span>
<span class="n">draw_text</span><span class="p">(</span><span class="s2">&quot;Hello world&quot;</span><span class="p">,</span> <span class="mi">190</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="n">VIOLET</span><span class="p">)</span>
<span class="n">end_drawing</span><span class="p">()</span>
<span class="n">close_window</span><span class="p">()</span>
</pre></div>
</div>
</section>
@ -140,12 +150,33 @@ close_window()
</div>
<p>Then install</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>python3 -m pip install setuptools
python3 -m pip install raylib
python3 -m pip install raylib==5.0.0.4
</pre></div>
</div>
<p>On most platforms it should install a binary wheel (Windows 10 x64, MacOS 12 x64/arm64, Linux Ubuntu2004 x64/arm64).</p>
<p>If yours isnt available then pip will attempt to build from source, in which case you will need to have Raylib development libs installed, e.g.
<p>On most platforms it should install a binary wheel. If yours isnt available then pip will attempt to build from source, in which case you will need to have Raylib development libs installed, e.g.
using homebrew, apt, etc.</p>
<section id="windows">
<h2>Windows<a class="headerlink" href="#windows" title="Link to this heading"></a></h2>
<p>Binaries require x64 Windows 10 or newer. (For x86 or older Windows you will have to build from source.)</p>
<p>Use an <a class="reference external" href="https://www.python.org/downloads/windows/">official Windows Python release</a> rather than WSL, MSYS, etc.</p>
</section>
<section id="macos">
<h2>MacOS<a class="headerlink" href="#macos" title="Link to this heading"></a></h2>
<p>Binaries require arm64 MacOS 13 or x64 MacOS 12 or newer.</p>
<p>Older MacOS requires building from source but this is usually simple:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>brew install pkg-config
brew install raylib
python3 -m pip install raylib==5.0.0.4
</pre></div>
</div>
</section>
<section id="linux">
<h2>Linux<a class="headerlink" href="#linux" title="Link to this heading"></a></h2>
<p>Binaries require OS newer than Ubuntu 2020, x64 or arm64. Otherwise build from source.
(Pip should attempt automatically but will need Raylib itself installed and also pkg-config.)</p>
<p>The arm64 builds are built on Raspberry Pi arm64 Bullseye
so may not work on other boards.</p>
</section>
<section id="raspberry-pi">
<h2>Raspberry Pi<a class="headerlink" href="#raspberry-pi" title="Link to this heading"></a></h2>
<p><a class="reference internal" href="RPI.html"><span class="std std-doc">Using on Rasperry Pi</span></a></p>
@ -158,13 +189,23 @@ using homebrew, apt, etc.</p>
</div>
<p>It works on some systems where the static version doesnt, <a class="reference external" href="https://electronstudio.github.io/raylib-python-cffi/dynamic.html">but be sure to read these caveats before using it</a></p>
</section>
<section id="beta-testing">
<h2>Beta testing<a class="headerlink" href="#beta-testing" title="Link to this heading"></a></h2>
<p>If you find a bug, it may be fixed in the <a class="reference external" href="https://github.com/electronstudio/raylib-python-cffi/releases">latest dev release</a>.
You can install an alpha or beta version by specifying the exact version number like this:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>python3 -m pip install raylib==4.2.0.0.dev4
<section id="sdl-backend">
<h2>SDL backend<a class="headerlink" href="#sdl-backend" title="Link to this heading"></a></h2>
<p>This is not well tested but has better support for controllers:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>python3 -m pip uninstall raylib
python3 -m pip install raylib_sdl
</pre></div>
</div>
<p>You cant have multiple backends installed at once.</p>
</section>
<section id="drm-backend">
<h2>DRM backend<a class="headerlink" href="#drm-backend" title="Link to this heading"></a></h2>
<p>This uses the Linux framebuffer for devices that dont run X11/Wayland:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>python3 -m pip uninstall raylib
python3 -m pip install raylib_drm
</pre></div>
</div>
<p>You cant have multiple backends installed at once.</p>
</section>
<section id="problems">
<h2>Problems?<a class="headerlink" href="#problems" title="Link to this heading"></a></h2>
@ -242,9 +283,9 @@ Carefully read all their <a class="reference external" href="https://pygame-web.
<li><p>Testing on more platforms</p></li>
</ul>
</section>
<section id="license-updated">
<h1>License (updated)<a class="headerlink" href="#license-updated" title="Link to this heading"></a></h1>
<p>The bindings are now under the Eclipse Public License, so you are free to
<section id="license">
<h1>License<a class="headerlink" href="#license" title="Link to this heading"></a></h1>
<p>Eclipse Public License, so you are free to
statically link and use in non-free / proprietary / commercial projects!</p>
</section>
<section id="performance">

View file

@ -1,3 +1,5 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
@ -6,19 +8,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Raspberry Pi &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
@ -46,7 +44,7 @@
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.5</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#quickstart">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#installation">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#how-to-use">How to use</a></li>
@ -54,7 +52,7 @@
<li class="toctree-l1"><a class="reference internal" href="README.html#app-showcase">App showcase</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#rlzero">RLZero</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#help-wanted">Help wanted</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license-updated">License (updated)</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#performance">Performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#packaging-your-app">Packaging your app</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#advert">Advert</a></li>
@ -103,7 +101,9 @@
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span> <span class="n">raylib</span>
</pre></div>
</div>
<p>If it doesnt work, or youre not on Bullseye, or youre 32 bit, or if you want to use Raylib in <code class="docutils literal notranslate"><span class="pre">PLATFORM_DRM</span></code> mode, you will need to compile your own raylib. See below.
<p>Alternatively there is a DRM wheel called <code class="docutils literal notranslate"><span class="pre">raylib_drm</span></code> to use the framebuffer without X11. You cant have both wheels
installed at once.</p>
<p>If it doesnt work, or youre not on Bullseye, or youre 32 bit, you will need to compile your own raylib. See below.
For full instructions on this, see <a class="reference external" href="https://github.com/raysan5/raylib/wiki/Working-on-Raspberry-Pi">https://github.com/raysan5/raylib/wiki/Working-on-Raspberry-Pi</a> . If you need help with this ask Raylib.</p>
</section>
<section id="option-2-compile-raylib-from-source-x11-mode">
@ -124,7 +124,7 @@ For full instructions on this, see <a class="reference external" href="https://g
</div>
<p>Then have pip compile and install the wheel:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span> <span class="n">setuptools</span>
<span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="nb">dir</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">binary</span> <span class="n">raylib</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">force</span><span class="o">-</span><span class="n">reinstall</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span> <span class="n">raylib</span><span class="o">==</span><span class="mf">5.0.0.3</span>
<span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="nb">dir</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">binary</span> <span class="n">raylib</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">force</span><span class="o">-</span><span class="n">reinstall</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span> <span class="n">raylib</span><span class="o">==</span><span class="mf">5.0.0.4</span>
</pre></div>
</div>
</section>
@ -157,7 +157,7 @@ For full instructions on this, see <a class="reference external" href="https://g
</div>
<p>Then have pip compile and install the wheel:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span> <span class="n">setuptools</span>
<span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="nb">dir</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">binary</span> <span class="n">raylib</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">force</span><span class="o">-</span><span class="n">reinstall</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span> <span class="n">raylib</span><span class="o">==</span><span class="mf">5.0.0.3</span>
<span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="nb">dir</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">binary</span> <span class="n">raylib</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">--</span><span class="n">force</span><span class="o">-</span><span class="n">reinstall</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span> <span class="n">raylib</span><span class="o">==</span><span class="mf">5.0.0.4</span>
</pre></div>
</div>
<div class="admonition attention">

View file

@ -1,4 +1,6 @@
# Python Bindings for Raylib 5.0
# Python Bindings for Raylib 5.5
## Libraries: raymath, raygui, rlgl, physac and GLFW
## Backends: Desktop, SDL, DRM, Web
Chatroom: [Discord](https://discord.gg/fKDwt85aX6) or [Matrix](https://matrix.to/#/#raylib-python-cffi:matrix.org)
@ -8,23 +10,23 @@ original Raylib.
* Faster, fewer bugs and easier to maintain than ctypes.
* Commercial-friendly license.
* Docstrings and auto-completion.
* **Now includes extra libraries: raymath, raygui, rlgl, physac and GLFW**
[Full documentation](http://electronstudio.github.io/raylib-python-cffi)
# Quickstart
`pip3 install raylib`
from pyray import *
init_window(800, 450, "Hello")
while not window_should_close():
begin_drawing()
clear_background(WHITE)
draw_text("Hello world", 190, 200, 20, VIOLET)
end_drawing()
close_window()
`pip3 install raylib==5.0.0.4`
```python
from pyray import *
init_window(800, 450, "Hello")
while not window_should_close():
begin_drawing()
clear_background(WHITE)
draw_text("Hello world", 190, 200, 20, VIOLET)
end_drawing()
close_window()
```
# Installation
@ -35,13 +37,35 @@ First make sure you have the latest pip installed:
Then install
python3 -m pip install setuptools
python3 -m pip install raylib
python3 -m pip install raylib==5.0.0.4
On most platforms it should install a binary wheel (Windows 10 x64, MacOS 12 x64/arm64, Linux Ubuntu2004 x64/arm64).
If yours isn't available then pip will attempt to build from source, in which case you will need to have Raylib development libs installed, e.g.
On most platforms it should install a binary wheel. If yours isn't available then pip will attempt to build from source, in which case you will need to have Raylib development libs installed, e.g.
using homebrew, apt, etc.
## Windows
Binaries require x64 Windows 10 or newer. (For x86 or older Windows you will have to build from source.)
Use an [official Windows Python release](https://www.python.org/downloads/windows/) rather than WSL, MSYS, etc.
## MacOS
Binaries require arm64 MacOS 13 or x64 MacOS 12 or newer.
Older MacOS requires building from source but this is usually simple:
brew install pkg-config
brew install raylib
python3 -m pip install raylib==5.0.0.4
## Linux
Binaries require OS newer than Ubuntu 2020, x64 or arm64. Otherwise build from source.
(Pip should attempt automatically but will need Raylib itself installed and also pkg-config.)
The arm64 builds are built on Raspberry Pi arm64 Bullseye
so may not work on other boards.
## Raspberry Pi
[Using on Rasperry Pi](RPI.rst)
@ -54,12 +78,23 @@ There is now a separate dynamic version of this binding:
It works on some systems where the static version doesn't, [but be sure to read these caveats before using it](https://electronstudio.github.io/raylib-python-cffi/dynamic.html)
## Beta testing
## SDL backend
If you find a bug, it may be fixed in the [latest dev release](https://github.com/electronstudio/raylib-python-cffi/releases).
You can install an alpha or beta version by specifying the exact version number like this:
This is not well tested but has better support for controllers:
python3 -m pip install raylib==4.2.0.0.dev4
python3 -m pip uninstall raylib
python3 -m pip install raylib_sdl
You can't have multiple backends installed at once.
## DRM backend
This uses the Linux framebuffer for devices that don't run X11/Wayland:
python3 -m pip uninstall raylib
python3 -m pip install raylib_drm
You can't have multiple backends installed at once.
## Problems?
@ -143,9 +178,9 @@ A related library (that is a work in progress!):
* Converting more examples from C to Python
* Testing on more platforms
# License (updated)
# License
The bindings are now under the Eclipse Public License, so you are free to
Eclipse Public License, so you are free to
statically link and use in non-free / proprietary / commercial projects!
# Performance

View file

@ -12,7 +12,10 @@ We have published binary wheels compiled for 64-bit Raspberry OS Bullseye in X11
python -m pip install --break-system-packages raylib
If it doesn't work, or you're not on Bullseye, or you're 32 bit, or if you want to use Raylib in ``PLATFORM_DRM`` mode, you will need to compile your own raylib. See below.
Alternatively there is a DRM wheel called ``raylib_drm`` to use the framebuffer without X11. You can't have both wheels
installed at once.
If it doesn't work, or you're not on Bullseye, or you're 32 bit, you will need to compile your own raylib. See below.
For full instructions on this, see https://github.com/raysan5/raylib/wiki/Working-on-Raspberry-Pi . If you need help with this ask Raylib.
Option 2: Compile Raylib from source X11 mode
@ -39,7 +42,7 @@ Then have pip compile and install the wheel:
::
python3 -m pip install --break-system-packages setuptools
python3 -m pip install --no-cache-dir --no-binary raylib --upgrade --force-reinstall --break-system-packages raylib==5.0.0.3
python3 -m pip install --no-cache-dir --no-binary raylib --upgrade --force-reinstall --break-system-packages raylib==5.0.0.4
Option 3: Compile Raylib from source DRM mode
---------------------------------------------
@ -82,7 +85,7 @@ Then have pip compile and install the wheel:
::
python3 -m pip install --break-system-packages setuptools
python3 -m pip install --no-cache-dir --no-binary raylib --upgrade --force-reinstall --break-system-packages raylib==5.0.0.3
python3 -m pip install --no-cache-dir --no-binary raylib --upgrade --force-reinstall --break-system-packages raylib==5.0.0.4

View file

@ -1,12 +1,5 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
@ -115,15 +108,11 @@ img {
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
margin-top: 10px;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
padding: 5px 0;
}
ul.search li a {

View file

@ -1 +1 @@
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}

File diff suppressed because one or more lines are too long

View file

@ -1,12 +1,5 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Base JavaScript utilities for all Sphinx HTML documentation.
*
* :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";

BIN
docs/_static/fonts/Lato/lato-bold.eot vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-bold.ttf vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-bold.woff vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-bold.woff2 vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-italic.eot vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-italic.ttf vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-italic.woff vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-regular.eot vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-regular.ttf vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,12 +1,5 @@
/*
* graphviz.css
* ~~~~~~~~~~~~
*
* Sphinx stylesheet -- graphviz extension.
*
* :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
img.graphviz {

View file

@ -1,4 +0,0 @@
/**
* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document);

View file

@ -1,4 +0,0 @@
/**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);

224
docs/_static/js/versions.js vendored Normal file
View file

@ -0,0 +1,224 @@
const themeFlyoutDisplay = "hidden";
const themeVersionSelector = "True";
const themeLanguageSelector = "True";
if (themeFlyoutDisplay === "attached") {
function renderLanguages(config) {
if (!config.projects.translations.length) {
return "";
}
const languagesHTML = `
<dl>
<dt>Languages</dt>
${config.projects.translations
.map(
(translation) => `
<dd ${translation.slug == config.projects.current.slug ? 'class="rtd-current-item"' : ""}>
<a href="${translation.urls.documentation}">${translation.language.code}</a>
</dd>
`,
)
.join("\n")}
</dl>
`;
return languagesHTML;
}
function renderVersions(config) {
if (!config.versions.active.length) {
return "";
}
const versionsHTML = `
<dl>
<dt>Versions</dt>
${config.versions.active
.map(
(version) => `
<dd ${version.slug === config.versions.current.slug ? 'class="rtd-current-item"' : ""}>
<a href="${version.urls.documentation}">${version.slug}</a>
</dd>
`,
)
.join("\n")}
</dl>
`;
return versionsHTML;
}
function renderDownloads(config) {
if (!Object.keys(config.versions.current.downloads).length) {
return "";
}
const downloadsNameDisplay = {
pdf: "PDF",
epub: "Epub",
htmlzip: "HTML",
};
const downloadsHTML = `
<dl>
<dt>Downloads</dt>
${Object.entries(config.versions.current.downloads)
.map(
([name, url]) => `
<dd>
<a href="${url}">${downloadsNameDisplay[name]}</a>
</dd>
`,
)
.join("\n")}
</dl>
`;
return downloadsHTML;
}
document.addEventListener("readthedocs-addons-data-ready", function (event) {
const config = event.detail.data();
const flyout = `
<div class="rst-versions" data-toggle="rst-versions" role="note">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: ${config.versions.current.slug}
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<div class="injected">
${renderLanguages(config)}
${renderVersions(config)}
${renderDownloads(config)}
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="${config.projects.current.urls.home}">Project Home</a>
</dd>
<dd>
<a href="${config.projects.current.urls.builds}">Builds</a>
</dd>
<dd>
<a href="${config.projects.current.urls.downloads}">Downloads</a>
</dd>
</dl>
<dl>
<dt>Search</dt>
<dd>
<form id="flyout-search-form">
<input
class="wy-form"
type="text"
name="q"
aria-label="Search docs"
placeholder="Search docs"
/>
</form>
</dd>
</dl>
<hr />
<small>
<span>Hosted by <a href="https://about.readthedocs.org/?utm_source=&utm_content=flyout">Read the Docs</a></span>
</small>
</div>
</div>
`;
// Inject the generated flyout into the body HTML element.
document.body.insertAdjacentHTML("beforeend", flyout);
// Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout.
document
.querySelector("#flyout-search-form")
.addEventListener("focusin", () => {
const event = new CustomEvent("readthedocs-search-show");
document.dispatchEvent(event);
});
})
}
if (themeLanguageSelector || themeVersionSelector) {
function onSelectorSwitch(event) {
const option = event.target.selectedIndex;
const item = event.target.options[option];
window.location.href = item.dataset.url;
}
document.addEventListener("readthedocs-addons-data-ready", function (event) {
const config = event.detail.data();
const versionSwitch = document.querySelector(
"div.switch-menus > div.version-switch",
);
if (themeVersionSelector) {
let versions = config.versions.active;
if (config.versions.current.hidden || config.versions.current.type === "external") {
versions.unshift(config.versions.current);
}
const versionSelect = `
<select>
${versions
.map(
(version) => `
<option
value="${version.slug}"
${config.versions.current.slug === version.slug ? 'selected="selected"' : ""}
data-url="${version.urls.documentation}">
${version.slug}
</option>`,
)
.join("\n")}
</select>
`;
versionSwitch.innerHTML = versionSelect;
versionSwitch.firstElementChild.addEventListener("change", onSelectorSwitch);
}
const languageSwitch = document.querySelector(
"div.switch-menus > div.language-switch",
);
if (themeLanguageSelector) {
if (config.projects.translations.length) {
// Add the current language to the options on the selector
let languages = config.projects.translations.concat(
config.projects.current,
);
languages = languages.sort((a, b) =>
a.language.name.localeCompare(b.language.name),
);
const languageSelect = `
<select>
${languages
.map(
(language) => `
<option
value="${language.language.code}"
${config.projects.current.slug === language.slug ? 'selected="selected"' : ""}
data-url="${language.urls.documentation}">
${language.language.name}
</option>`,
)
.join("\n")}
</select>
`;
languageSwitch.innerHTML = languageSelect;
languageSwitch.firstElementChild.addEventListener("change", onSelectorSwitch);
}
else {
languageSwitch.remove();
}
}
});
}
document.addEventListener("readthedocs-addons-data-ready", function (event) {
// Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav.
document
.querySelector("[role='search'] input")
.addEventListener("focusin", () => {
const event = new CustomEvent("readthedocs-search-show");
document.dispatchEvent(event);
});
});

View file

@ -1,13 +1,6 @@
/*
* language_data.js
* ~~~~~~~~~~~~~~~~
*
* This script contains the language-specific data used by searchtools.js,
* namely the list of stopwords, stemmer, scorer and splitter.
*
* :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];

View file

@ -1,12 +1,5 @@
/*
* searchtools.js
* ~~~~~~~~~~~~~~~~
*
* Sphinx JavaScript utilities for the full-text search.
*
* :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";
@ -20,7 +13,7 @@ if (typeof Scorer === "undefined") {
// and returns the new score.
/*
score: result => {
const [docname, title, anchor, descr, score, filename] = result
const [docname, title, anchor, descr, score, filename, kind] = result
return score
},
*/
@ -47,6 +40,14 @@ if (typeof Scorer === "undefined") {
};
}
// Global search result kind enum, used by themes to style search results.
class SearchResultKind {
static get index() { return "index"; }
static get object() { return "object"; }
static get text() { return "text"; }
static get title() { return "title"; }
}
const _removeChildren = (element) => {
while (element && element.lastChild) element.removeChild(element.lastChild);
};
@ -64,9 +65,13 @@ const _displayItem = (item, searchTerms, highlightTerms) => {
const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
const contentRoot = document.documentElement.dataset.content_root;
const [docName, title, anchor, descr, score, _filename] = item;
const [docName, title, anchor, descr, score, _filename, kind] = item;
let listItem = document.createElement("li");
// Add a class representing the item's type:
// can be used by a theme's CSS selector for styling
// See SearchResultKind for the class names.
listItem.classList.add(`kind-${kind}`);
let requestUrl;
let linkUrl;
if (docBuilder === "dirhtml") {
@ -115,8 +120,10 @@ const _finishSearch = (resultCount) => {
"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
);
else
Search.status.innerText = _(
"Search finished, found ${resultCount} page(s) matching the search query."
Search.status.innerText = Documentation.ngettext(
"Search finished, found one page matching the search query.",
"Search finished, found ${resultCount} pages matching the search query.",
resultCount,
).replace('${resultCount}', resultCount);
};
const _displayNextItem = (
@ -138,7 +145,7 @@ const _displayNextItem = (
else _finishSearch(resultCount);
};
// Helper function used by query() to order search results.
// Each input is an array of [docname, title, anchor, descr, score, filename].
// Each input is an array of [docname, title, anchor, descr, score, filename, kind].
// Order the results by score (in opposite order of appearance, since the
// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
const _orderResultsByScoreThenName = (a, b) => {
@ -178,7 +185,7 @@ const Search = {
htmlToText: (htmlString, anchor) => {
const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
for (const removalQuery of [".headerlinks", "script", "style"]) {
for (const removalQuery of [".headerlink", "script", "style"]) {
htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
}
if (anchor) {
@ -248,6 +255,7 @@ const Search = {
searchSummary.classList.add("search-summary");
searchSummary.innerText = "";
const searchList = document.createElement("ul");
searchList.setAttribute("role", "list");
searchList.classList.add("search");
const out = document.getElementById("search-results");
@ -318,7 +326,7 @@ const Search = {
const indexEntries = Search._index.indexentries;
// Collect multiple result groups to be sorted separately and then ordered.
// Each is an array of [docname, title, anchor, descr, score, filename].
// Each is an array of [docname, title, anchor, descr, score, filename, kind].
const normalResults = [];
const nonMainIndexResults = [];
@ -328,14 +336,16 @@ const Search = {
for (const [title, foundTitles] of Object.entries(allTitles)) {
if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
for (const [file, id] of foundTitles) {
let score = Math.round(100 * queryLower.length / title.length)
const score = Math.round(Scorer.title * queryLower.length / title.length);
const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
normalResults.push([
docNames[file],
titles[file] !== title ? `${titles[file]} > ${title}` : title,
id !== null ? "#" + id : "",
null,
score,
score + boost,
filenames[file],
SearchResultKind.title,
]);
}
}
@ -353,6 +363,7 @@ const Search = {
null,
score,
filenames[file],
SearchResultKind.index,
];
if (isMain) {
normalResults.push(result);
@ -474,6 +485,7 @@ const Search = {
descr,
score,
filenames[match[0]],
SearchResultKind.object,
]);
};
Object.keys(objects).forEach((prefix) =>
@ -584,6 +596,7 @@ const Search = {
null,
score,
filenames[file],
SearchResultKind.text,
]);
}
return results;

View file

@ -1,3 +1,5 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
@ -6,19 +8,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dynamic Bindings &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
@ -47,7 +45,7 @@
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.5</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#quickstart">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#installation">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#how-to-use">How to use</a></li>
@ -55,7 +53,7 @@
<li class="toctree-l1"><a class="reference internal" href="README.html#app-showcase">App showcase</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#rlzero">RLZero</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#help-wanted">Help wanted</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license-updated">License (updated)</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#performance">Performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#packaging-your-app">Packaging your app</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#advert">Advert</a></li>

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,5 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
@ -6,23 +8,19 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Raylib Python &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Python Bindings for Raylib 5.0" href="README.html" />
<link rel="next" title="Python Bindings for Raylib 5.5" href="README.html" />
</head>
<body class="wy-body-for-nav">
@ -46,7 +44,7 @@
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.5</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#quickstart">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#installation">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#how-to-use">How to use</a></li>
@ -54,7 +52,7 @@
<li class="toctree-l1"><a class="reference internal" href="README.html#app-showcase">App showcase</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#rlzero">RLZero</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#help-wanted">Help wanted</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license-updated">License (updated)</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#performance">Performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#packaging-your-app">Packaging your app</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#advert">Advert</a></li>
@ -94,7 +92,7 @@
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.5</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#quickstart">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#installation">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#how-to-use">How to use</a></li>
@ -102,7 +100,7 @@
<li class="toctree-l1"><a class="reference internal" href="README.html#app-showcase">App showcase</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#rlzero">RLZero</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#help-wanted">Help wanted</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license-updated">License (updated)</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#performance">Performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#packaging-your-app">Packaging your app</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#advert">Advert</a></li>
@ -122,7 +120,7 @@
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="README.html" class="btn btn-neutral float-right" title="Python Bindings for Raylib 5.0" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="README.html" class="btn btn-neutral float-right" title="Python Bindings for Raylib 5.5" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>

Binary file not shown.

View file

@ -1,3 +1,5 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
@ -5,19 +7,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Python Module Index &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
@ -51,7 +49,7 @@
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.5</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#quickstart">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#installation">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#how-to-use">How to use</a></li>
@ -59,7 +57,7 @@
<li class="toctree-l1"><a class="reference internal" href="README.html#app-showcase">App showcase</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#rlzero">RLZero</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#help-wanted">Help wanted</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license-updated">License (updated)</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#performance">Performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#packaging-your-app">Packaging your app</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#advert">Advert</a></li>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,5 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
@ -5,20 +7,16 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Search &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<script src="_static/searchtools.js"></script>
<script src="_static/language_data.js"></script>
@ -47,7 +45,7 @@
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html">Python Bindings for Raylib 5.5</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#quickstart">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#installation">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#how-to-use">How to use</a></li>
@ -55,7 +53,7 @@
<li class="toctree-l1"><a class="reference internal" href="README.html#app-showcase">App showcase</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#rlzero">RLZero</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#help-wanted">Help wanted</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license-updated">License (updated)</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#license">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#performance">Performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#packaging-your-app">Packaging your app</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html#advert">Advert</a></li>

File diff suppressed because one or more lines are too long

View file

@ -1,9 +1,9 @@
import raylib
RAYLIB_VERSION_MAJOR: int = 5
RAYLIB_VERSION_MINOR: int = 0
RAYLIB_VERSION_MINOR: int = 5
RAYLIB_VERSION_PATCH: int = 0
RAYLIB_VERSION: str = "5.0"
RAYLIB_VERSION: str = "5.5-dev"
PI: float = 3.141592653589793
DEG2RAD = PI / 180.0
RAD2DEG = 180.0 / PI
@ -18,7 +18,7 @@ PI: float = 3.141592653589793
EPSILON: float = 1e-06
DEG2RAD = PI / 180.0
RAD2DEG = 180.0 / PI
RLGL_VERSION: str = "4.5"
RLGL_VERSION: str = "5.0"
RL_DEFAULT_BATCH_BUFFER_ELEMENTS: int = 8192
RL_DEFAULT_BATCH_BUFFERS: int = 1
RL_DEFAULT_BATCH_DRAWCALLS: int = 256
@ -89,6 +89,17 @@ RL_BLEND_SRC_RGB: int = 32969
RL_BLEND_DST_ALPHA: int = 32970
RL_BLEND_SRC_ALPHA: int = 32971
RL_BLEND_COLOR: int = 32773
RL_READ_FRAMEBUFFER: int = 36008
RL_DRAW_FRAMEBUFFER: int = 36009
RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION: int = 0
RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD: int = 1
RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL: int = 2
RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR: int = 3
RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT: int = 4
RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2: int = 5
RL_DEFAULT_SHADER_ATTRIB_LOCATION_INDICES: int = 6
RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS: int = 7
RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS: int = 8
RL_SHADER_LOC_MAP_DIFFUSE = raylib.RL_SHADER_LOC_MAP_ALBEDO
RL_SHADER_LOC_MAP_SPECULAR = raylib.RL_SHADER_LOC_MAP_METALNESS
PI: float = 3.141592653589793
@ -108,6 +119,8 @@ GL_COMPRESSED_RGBA_ASTC_4x4_KHR: int = 37808
GL_COMPRESSED_RGBA_ASTC_8x8_KHR: int = 37815
GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: int = 34047
GL_TEXTURE_MAX_ANISOTROPY_EXT: int = 34046
GL_PROGRAM_POINT_SIZE: int = 34370
GL_LINE_WIDTH: int = 2849
GL_UNSIGNED_SHORT_5_6_5: int = 33635
GL_UNSIGNED_SHORT_5_5_5_1: int = 32820
GL_UNSIGNED_SHORT_4_4_4_4: int = 32819
@ -119,19 +132,22 @@ RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL: str = "vertexNormal"
RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR: str = "vertexColor"
RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT: str = "vertexTangent"
RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2: str = "vertexTexCoord2"
RL_DEFAULT_SHADER_ATTRIB_NAME_BONEIDS: str = "vertexBoneIds"
RL_DEFAULT_SHADER_ATTRIB_NAME_BONEWEIGHTS: str = "vertexBoneWeights"
RL_DEFAULT_SHADER_UNIFORM_NAME_MVP: str = "mvp"
RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW: str = "matView"
RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION: str = "matProjection"
RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL: str = "matModel"
RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL: str = "matNormal"
RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR: str = "colDiffuse"
RL_DEFAULT_SHADER_UNIFORM_NAME_BONE_MATRICES: str = "boneMatrices"
RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0: str = "texture0"
RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1: str = "texture1"
RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2: str = "texture2"
RAYGUI_VERSION_MAJOR: int = 4
RAYGUI_VERSION_MINOR: int = 0
RAYGUI_VERSION_MINOR: int = 5
RAYGUI_VERSION_PATCH: int = 0
RAYGUI_VERSION: str = "4.0"
RAYGUI_VERSION: str = "4.5-dev"
SCROLLBAR_LEFT_SIDE: int = 0
SCROLLBAR_RIGHT_SIDE: int = 1
RAYGUI_ICON_SIZE: int = 16
@ -155,6 +171,7 @@ RAYGUI_PANEL_BORDER_WIDTH: int = 1
RAYGUI_TABBAR_ITEM_WIDTH: int = 160
RAYGUI_MIN_SCROLLBAR_WIDTH: int = 40
RAYGUI_MIN_SCROLLBAR_HEIGHT: int = 40
RAYGUI_MIN_MOUSE_WHEEL_SPEED: int = 20
RAYGUI_TOGGLEGROUP_MAX_ITEMS: int = 32
RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN: int = 40
RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY: int = 1
@ -429,12 +446,14 @@ GLFW_CONTEXT_RELEASE_BEHAVIOR: int = 139273
GLFW_CONTEXT_NO_ERROR: int = 139274
GLFW_CONTEXT_CREATION_API: int = 139275
GLFW_SCALE_TO_MONITOR: int = 139276
GLFW_SCALE_FRAMEBUFFER: int = 139277
GLFW_COCOA_RETINA_FRAMEBUFFER: int = 143361
GLFW_COCOA_FRAME_NAME: int = 143362
GLFW_COCOA_GRAPHICS_SWITCHING: int = 143363
GLFW_X11_CLASS_NAME: int = 147457
GLFW_X11_INSTANCE_NAME: int = 147458
GLFW_WIN32_KEYBOARD_MENU: int = 151553
GLFW_WIN32_SHOWDEFAULT: int = 151554
GLFW_WAYLAND_APP_ID: int = 155649
GLFW_NO_API: int = 0
GLFW_OPENGL_API: int = 196609
@ -467,6 +486,8 @@ GLFW_ANGLE_PLATFORM_TYPE_D3D9: int = 225284
GLFW_ANGLE_PLATFORM_TYPE_D3D11: int = 225285
GLFW_ANGLE_PLATFORM_TYPE_VULKAN: int = 225287
GLFW_ANGLE_PLATFORM_TYPE_METAL: int = 225288
GLFW_WAYLAND_PREFER_LIBDECOR: int = 229377
GLFW_WAYLAND_DISABLE_LIBDECOR: int = 229378
GLFW_ANY_POSITION: int = 2147483648
GLFW_ARROW_CURSOR: int = 221185
GLFW_IBEAM_CURSOR: int = 221186
@ -486,6 +507,7 @@ GLFW_PLATFORM: int = 327683
GLFW_COCOA_CHDIR_RESOURCES: int = 331777
GLFW_COCOA_MENUBAR: int = 331778
GLFW_X11_XCB_VULKAN_SURFACE: int = 335873
GLFW_WAYLAND_LIBDECOR: int = 339969
GLFW_ANY_PLATFORM: int = 393216
GLFW_PLATFORM_WIN32: int = 393217
GLFW_PLATFORM_COCOA: int = 393218

View file

@ -136,7 +136,7 @@ class KeyboardKey(IntEnum):
KEY_KP_ENTER = 335
KEY_KP_EQUAL = 336
KEY_BACK = 4
KEY_MENU = 82
KEY_MENU = 5
KEY_VOLUME_UP = 24
KEY_VOLUME_DOWN = 25
@ -230,6 +230,9 @@ class ShaderLocationIndex(IntEnum):
SHADER_LOC_MAP_IRRADIANCE = 23
SHADER_LOC_MAP_PREFILTER = 24
SHADER_LOC_MAP_BRDF = 25
SHADER_LOC_VERTEX_BONEIDS = 26
SHADER_LOC_VERTEX_BONEWEIGHTS = 27
SHADER_LOC_BONE_MATRICES = 28
class ShaderUniformDataType(IntEnum):
SHADER_UNIFORM_FLOAT = 0
@ -433,6 +436,8 @@ class GuiComboBoxProperty(IntEnum):
class GuiDropdownBoxProperty(IntEnum):
ARROW_PADDING = 16
DROPDOWN_ITEMS_SPACING = 17
DROPDOWN_ARROW_HIDDEN = 18
DROPDOWN_ROLL_UP = 19
class GuiTextBoxProperty(IntEnum):
TEXT_READONLY = 16
@ -446,6 +451,7 @@ class GuiListViewProperty(IntEnum):
LIST_ITEMS_SPACING = 17
SCROLLBAR_WIDTH = 18
SCROLLBAR_SIDE = 19
LIST_ITEMS_BORDER_WIDTH = 20
class GuiColorPickerProperty(IntEnum):
COLOR_SELECTOR_SIZE = 16
@ -675,15 +681,15 @@ class GuiIconName(IntEnum):
ICON_FOLDER = 217
ICON_FILE = 218
ICON_SAND_TIMER = 219
ICON_220 = 220
ICON_221 = 221
ICON_222 = 222
ICON_223 = 223
ICON_224 = 224
ICON_225 = 225
ICON_226 = 226
ICON_227 = 227
ICON_228 = 228
ICON_WARNING = 220
ICON_HELP_BOX = 221
ICON_INFO_BOX = 222
ICON_PRIORITY = 223
ICON_LAYERS_ISO = 224
ICON_LAYERS2 = 225
ICON_MLAYERS = 226
ICON_MAPS = 227
ICON_HOT = 228
ICON_229 = 229
ICON_230 = 230
ICON_231 = 231

View file

@ -21,7 +21,7 @@ model.materials.maps[pr.MATERIAL_MAP_ALBEDO].texture = texture
pr.unload_image(image)
pos = pr.get_mouse_position()
ray = pr.get_mouse_ray(pos, camera)
ray = pr.get_screen_to_world_ray(pos, camera)
while not pr.window_should_close():
@ -36,6 +36,6 @@ while not pr.window_should_close():
pr.end_drawing()
pos = pr.get_mouse_position()
ray = pr.get_mouse_ray(pos, camera)
ray = pr.get_screen_to_world_ray(pos, camera)
pr.close_window()

View file

@ -2,6 +2,7 @@
echo "building and installing raylib"
cd raylib-c
rm -rf build
mkdir build
cd build
cmake -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release ..
@ -16,6 +17,7 @@ sudo cp ./raylib-c/src/rlgl.h /usr/local/include/
sudo cp ./raylib-c/src/raymath.h /usr/local/include/
sudo cp ./raygui/src/raygui.h /usr/local/include/
sudo cp ./physac/src/physac.h /usr/local/include/
sudo cp -r ./raylib-c/src/external/glfw/include/GLFW /usr/local/include/
echo "building raylib_parser"
@ -37,6 +39,7 @@ python3 raylib/build.py
echo "creating enums.py"
python3 -m pip install inflection --break-system-packages # TODO: venv
python3 create_enums.py > raylib/enums.py
python3 create_enums.py > dynamic/raylib/enums.py
@ -56,7 +59,7 @@ python3 create_stub_static.py >raylib/__init__.pyi
echo "installing sphinx modules"
python -m venv venv
python3 -m venv venv
source venv/bin/activate
pip3 install sphinx-autoapi myst_parser sphinx_rtd_theme

View file

@ -1,14 +1,12 @@
from typing import Any
def pointer(struct):
...
def attach_audio_mixed_processor(processor: Any,) -> None:
"""Attach audio stream processor to the entire audio pipeline, receives the samples as <float>s"""
"""Attach audio stream processor to the entire audio pipeline, receives the samples as 'float'"""
...
def attach_audio_stream_processor(stream: AudioStream,processor: Any,) -> None:
"""Attach audio stream processor to stream, receives the samples as <float>s"""
"""Attach audio stream processor to stream, receives the samples as 'float'"""
...
def begin_blend_mode(mode: int,) -> None:
"""Begin blending mode (alpha, additive, multiplied, subtract, custom)"""
@ -43,6 +41,9 @@ def check_collision_box_sphere(box: BoundingBox,center: Vector3,radius: float,)
def check_collision_boxes(box1: BoundingBox,box2: BoundingBox,) -> bool:
"""Check collision between two bounding boxes"""
...
def check_collision_circle_line(center: Vector2,radius: float,p1: Vector2,p2: Vector2,) -> bool:
"""Check if circle collides with a line created betweeen two points [p1] and [p2]"""
...
def check_collision_circle_rec(center: Vector2,radius: float,rec: Rectangle,) -> bool:
"""Check collision between circle and rectangle"""
...
@ -112,6 +113,12 @@ def color_from_hsv(hue: float,saturation: float,value: float,) -> Color:
def color_from_normalized(normalized: Vector4,) -> Color:
"""Get Color from normalized values [0..1]"""
...
def color_is_equal(col1: Color,col2: Color,) -> bool:
"""Check if two colors are equal"""
...
def color_lerp(color1: Color,color2: Color,factor: float,) -> Color:
"""Get color lerp interpolation between two colors, factor [0.0f..1.0f]"""
...
def color_normalize(color: Color,) -> Vector4:
"""Get Color normalized as float [0..1]"""
...
@ -122,7 +129,7 @@ def color_to_hsv(color: Color,) -> Vector3:
"""Get HSV values for a Color, hue [0..360], saturation/value [0..1]"""
...
def color_to_int(color: Color,) -> int:
"""Get hexadecimal value for a Color"""
"""Get hexadecimal value for a Color (0xRRGGBBAA)"""
...
def compress_data(data: str,dataSize: int,compDataSize: Any,) -> str:
"""Compress data (DEFLATE algorithm), memory must be MemFree()"""
@ -160,7 +167,7 @@ def disable_cursor() -> None:
def disable_event_waiting() -> None:
"""Disable waiting for events on EndDrawing(), automatic events polling"""
...
def draw_billboard(camera: Camera3D,texture: Texture,position: Vector3,size: float,tint: Color,) -> None:
def draw_billboard(camera: Camera3D,texture: Texture,position: Vector3,scale: float,tint: Color,) -> None:
"""Draw a billboard texture"""
...
def draw_billboard_pro(camera: Camera3D,texture: Texture,source: Rectangle,position: Vector3,up: Vector3,size: Vector2,origin: Vector2,rotation: float,tint: Color,) -> None:
@ -184,7 +191,7 @@ def draw_circle(centerX: int,centerY: int,radius: float,color: Color,) -> None:
def draw_circle_3d(center: Vector3,radius: float,rotationAxis: Vector3,rotationAngle: float,color: Color,) -> None:
"""Draw a circle in 3D world space"""
...
def draw_circle_gradient(centerX: int,centerY: int,radius: float,color1: Color,color2: Color,) -> None:
def draw_circle_gradient(centerX: int,centerY: int,radius: float,inner: Color,outer: Color,) -> None:
"""Draw a gradient-filled circle"""
...
def draw_circle_lines(centerX: int,centerY: int,radius: float,color: Color,) -> None:
@ -268,6 +275,12 @@ def draw_model(model: Model,position: Vector3,scale: float,tint: Color,) -> None
def draw_model_ex(model: Model,position: Vector3,rotationAxis: Vector3,rotationAngle: float,scale: Vector3,tint: Color,) -> None:
"""Draw a model with extended parameters"""
...
def draw_model_points(model: Model,position: Vector3,scale: float,tint: Color,) -> None:
"""Draw a model as points"""
...
def draw_model_points_ex(model: Model,position: Vector3,rotationAxis: Vector3,rotationAngle: float,scale: Vector3,tint: Color,) -> None:
"""Draw a model as points with extended parameters"""
...
def draw_model_wires(model: Model,position: Vector3,scale: float,tint: Color,) -> None:
"""Draw a model wires (with texture if set)"""
...
@ -275,10 +288,10 @@ def draw_model_wires_ex(model: Model,position: Vector3,rotationAxis: Vector3,rot
"""Draw a model wires (with texture if set) with extended parameters"""
...
def draw_pixel(posX: int,posY: int,color: Color,) -> None:
"""Draw a pixel"""
"""Draw a pixel using geometry [Can be slow, use with care]"""
...
def draw_pixel_v(position: Vector2,color: Color,) -> None:
"""Draw a pixel (Vector version)"""
"""Draw a pixel using geometry (Vector version) [Can be slow, use with care]"""
...
def draw_plane(centerPos: Vector3,size: Vector2,color: Color,) -> None:
"""Draw a plane XZ"""
@ -301,13 +314,13 @@ def draw_ray(ray: Ray,color: Color,) -> None:
def draw_rectangle(posX: int,posY: int,width: int,height: int,color: Color,) -> None:
"""Draw a color-filled rectangle"""
...
def draw_rectangle_gradient_ex(rec: Rectangle,col1: Color,col2: Color,col3: Color,col4: Color,) -> None:
def draw_rectangle_gradient_ex(rec: Rectangle,topLeft: Color,bottomLeft: Color,topRight: Color,bottomRight: Color,) -> None:
"""Draw a gradient-filled rectangle with custom vertex colors"""
...
def draw_rectangle_gradient_h(posX: int,posY: int,width: int,height: int,color1: Color,color2: Color,) -> None:
def draw_rectangle_gradient_h(posX: int,posY: int,width: int,height: int,left: Color,right: Color,) -> None:
"""Draw a horizontal-gradient-filled rectangle"""
...
def draw_rectangle_gradient_v(posX: int,posY: int,width: int,height: int,color1: Color,color2: Color,) -> None:
def draw_rectangle_gradient_v(posX: int,posY: int,width: int,height: int,top: Color,bottom: Color,) -> None:
"""Draw a vertical-gradient-filled rectangle"""
...
def draw_rectangle_lines(posX: int,posY: int,width: int,height: int,color: Color,) -> None:
@ -325,7 +338,10 @@ def draw_rectangle_rec(rec: Rectangle,color: Color,) -> None:
def draw_rectangle_rounded(rec: Rectangle,roundness: float,segments: int,color: Color,) -> None:
"""Draw rectangle with rounded edges"""
...
def draw_rectangle_rounded_lines(rec: Rectangle,roundness: float,segments: int,lineThick: float,color: Color,) -> None:
def draw_rectangle_rounded_lines(rec: Rectangle,roundness: float,segments: int,color: Color,) -> None:
"""Draw rectangle lines with rounded edges"""
...
def draw_rectangle_rounded_lines_ex(rec: Rectangle,roundness: float,segments: int,lineThick: float,color: Color,) -> None:
"""Draw rectangle with rounded edges outline"""
...
def draw_rectangle_v(position: Vector2,size: Vector2,color: Color,) -> None:
@ -481,6 +497,9 @@ def export_image_to_memory(image: Image,fileType: str,fileSize: Any,) -> str:
def export_mesh(mesh: Mesh,fileName: str,) -> bool:
"""Export mesh data to file, returns true on success"""
...
def export_mesh_as_code(mesh: Mesh,fileName: str,) -> bool:
"""Export mesh as code file (.h) defining multiple arrays of vertex attributes"""
...
def export_wave(wave: Wave,fileName: str,) -> bool:
"""Export wave data to file, returns true on success"""
...
@ -715,9 +734,6 @@ def get_mouse_delta() -> Vector2:
def get_mouse_position() -> Vector2:
"""Get mouse position XY"""
...
def get_mouse_ray(mousePosition: Vector2,camera: Camera3D,) -> Ray:
"""Get a ray trace from mouse position"""
...
def get_mouse_wheel_move() -> float:
"""Get mouse wheel movement for X or Y, whichever is larger"""
...
@ -790,6 +806,12 @@ def get_screen_height() -> int:
def get_screen_to_world_2d(position: Vector2,camera: Camera2D,) -> Vector2:
"""Get the world space position for a 2d camera screen space position"""
...
def get_screen_to_world_ray(position: Vector2,camera: Camera3D,) -> Ray:
"""Get a ray trace from screen position (i.e mouse)"""
...
def get_screen_to_world_ray_ex(position: Vector2,camera: Camera3D,width: int,height: int,) -> Ray:
"""Get a ray trace from screen position (i.e mouse) in a viewport"""
...
def get_screen_width() -> int:
"""Get current screen width"""
...
@ -799,6 +821,12 @@ def get_shader_location(shader: Shader,uniformName: str,) -> int:
def get_shader_location_attrib(shader: Shader,attribName: str,) -> int:
"""Get shader attribute location"""
...
def get_shapes_texture() -> Texture:
"""Get texture that is used for shapes drawing"""
...
def get_shapes_texture_rectangle() -> Rectangle:
"""Get texture source rectangle that is used for shapes drawing"""
...
def get_spline_point_basis(p1: Vector2,p2: Vector2,p3: Vector2,p4: Vector2,t: float,) -> Vector2:
"""Get (evaluate) spline point: B-Spline"""
...
@ -869,7 +897,7 @@ def gui_color_panel(bounds: Rectangle,text: str,color: Any,) -> int:
"""Color Panel control"""
...
def gui_color_panel_hsv(bounds: Rectangle,text: str,colorHsv: Any,) -> int:
"""Color Panel control that returns HSV color value, used by GuiColorPickerHSV()"""
"""Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV()"""
...
def gui_color_picker(bounds: Rectangle,text: str,color: Any,) -> int:
"""Color Picker control (multiple color controls)"""
@ -878,7 +906,7 @@ def gui_color_picker_hsv(bounds: Rectangle,text: str,colorHsv: Any,) -> int:
"""Color Picker control that avoids conversion to RGB on each call (multiple color controls)"""
...
def gui_combo_box(bounds: Rectangle,text: str,active: Any,) -> int:
"""Combo Box control, returns selected item index"""
"""Combo Box control"""
...
def gui_disable() -> None:
"""Disable gui controls (global state)"""
@ -890,7 +918,7 @@ def gui_draw_icon(iconId: int,posX: int,posY: int,pixelSize: int,color: Color,)
"""Draw icon using pixel size at specified position"""
...
def gui_dropdown_box(bounds: Rectangle,text: str,active: Any,editMode: bool,) -> int:
"""Dropdown Box control, returns selected item"""
"""Dropdown Box control"""
...
def gui_dummy_rec(bounds: Rectangle,text: str,) -> int:
"""Dummy control for placeholders"""
@ -914,7 +942,7 @@ def gui_get_style(control: int,property: int,) -> int:
"""Get one style property"""
...
def gui_grid(bounds: Rectangle,text: str,spacing: float,subdivs: int,mouseCell: Any,) -> int:
"""Grid control, returns mouse cell position"""
"""Grid control"""
...
def gui_group_box(bounds: Rectangle,text: str,) -> int:
"""Group Box control with text name"""
@ -926,16 +954,16 @@ def gui_is_locked() -> bool:
"""Check if gui is locked (global state)"""
...
def gui_label(bounds: Rectangle,text: str,) -> int:
"""Label control, shows text"""
"""Label control"""
...
def gui_label_button(bounds: Rectangle,text: str,) -> int:
"""Label button control, show true when clicked"""
"""Label button control, returns true when clicked"""
...
def gui_line(bounds: Rectangle,text: str,) -> int:
"""Line separator control, could contain text"""
...
def gui_list_view(bounds: Rectangle,text: str,scrollIndex: Any,active: Any,) -> int:
"""List View control, returns selected list item index"""
"""List View control"""
...
def gui_list_view_ex(bounds: Rectangle,text: list[str],count: int,scrollIndex: Any,active: Any,focus: Any,) -> int:
"""List View with extended parameters"""
@ -959,7 +987,7 @@ def gui_panel(bounds: Rectangle,text: str,) -> int:
"""Panel control, useful to group controls"""
...
def gui_progress_bar(bounds: Rectangle,textLeft: str,textRight: str,value: Any,minValue: float,maxValue: float,) -> int:
"""Progress Bar control, shows current progress value"""
"""Progress Bar control"""
...
def gui_scroll_panel(bounds: Rectangle,text: str,content: Rectangle,scroll: Any,view: Any,) -> int:
"""Scroll Panel control"""
@ -983,13 +1011,13 @@ def gui_set_tooltip(tooltip: str,) -> None:
"""Set tooltip string"""
...
def gui_slider(bounds: Rectangle,textLeft: str,textRight: str,value: Any,minValue: float,maxValue: float,) -> int:
"""Slider control, returns selected value"""
"""Slider control"""
...
def gui_slider_bar(bounds: Rectangle,textLeft: str,textRight: str,value: Any,minValue: float,maxValue: float,) -> int:
"""Slider Bar control, returns selected value"""
"""Slider Bar control"""
...
def gui_spinner(bounds: Rectangle,text: str,value: Any,minValue: int,maxValue: int,editMode: bool,) -> int:
"""Spinner control, returns selected value"""
"""Spinner control"""
...
def gui_status_bar(bounds: Rectangle,text: str,) -> int:
"""Status Bar control, shows info text"""
@ -1004,13 +1032,13 @@ def gui_text_input_box(bounds: Rectangle,title: str,message: str,buttons: str,te
"""Text Input Box control, ask for text, supports secret"""
...
def gui_toggle(bounds: Rectangle,text: str,active: Any,) -> int:
"""Toggle Button control, returns true when active"""
"""Toggle Button control"""
...
def gui_toggle_group(bounds: Rectangle,text: str,active: Any,) -> int:
"""Toggle Group control, returns active toggle index"""
"""Toggle Group control"""
...
def gui_toggle_slider(bounds: Rectangle,text: str,active: Any,) -> int:
"""Toggle Slider control, returns true when clicked"""
"""Toggle Slider control"""
...
def gui_unlock() -> None:
"""Unlock gui controls (global state)"""
@ -1018,6 +1046,9 @@ def gui_unlock() -> None:
def gui_value_box(bounds: Rectangle,text: str,value: Any,minValue: int,maxValue: int,editMode: bool,) -> int:
"""Value Box control, updates input text with numbers"""
...
def gui_value_box_float(bounds: Rectangle,text: str,textValue: str,value: Any,editMode: bool,) -> int:
"""Value box control for float values"""
...
def gui_window_box(bounds: Rectangle,title: str,) -> int:
"""Window Box control, shows a window that can be closed"""
...
@ -1087,6 +1118,9 @@ def image_draw_circle_v(dst: Any,center: Vector2,radius: int,color: Color,) -> N
def image_draw_line(dst: Any,startPosX: int,startPosY: int,endPosX: int,endPosY: int,color: Color,) -> None:
"""Draw line within an image"""
...
def image_draw_line_ex(dst: Any,start: Vector2,end: Vector2,thick: int,color: Color,) -> None:
"""Draw a line defining thickness within an image"""
...
def image_draw_line_v(dst: Any,start: Vector2,end: Vector2,color: Color,) -> None:
"""Draw line within an image (Vector version)"""
...
@ -1114,6 +1148,21 @@ def image_draw_text(dst: Any,text: str,posX: int,posY: int,fontSize: int,color:
def image_draw_text_ex(dst: Any,font: Font,text: str,position: Vector2,fontSize: float,spacing: float,tint: Color,) -> None:
"""Draw text (custom sprite font) within an image (destination)"""
...
def image_draw_triangle(dst: Any,v1: Vector2,v2: Vector2,v3: Vector2,color: Color,) -> None:
"""Draw triangle within an image"""
...
def image_draw_triangle_ex(dst: Any,v1: Vector2,v2: Vector2,v3: Vector2,c1: Color,c2: Color,c3: Color,) -> None:
"""Draw triangle with interpolated colors within an image"""
...
def image_draw_triangle_fan(dst: Any,points: Any,pointCount: int,color: Color,) -> None:
"""Draw a triangle fan defined by points within an image (first vertex is the center)"""
...
def image_draw_triangle_lines(dst: Any,v1: Vector2,v2: Vector2,v3: Vector2,color: Color,) -> None:
"""Draw triangle outline within an image"""
...
def image_draw_triangle_strip(dst: Any,points: Any,pointCount: int,color: Color,) -> None:
"""Draw a triangle strip defined by points within an image"""
...
def image_flip_horizontal(image: Any,) -> None:
"""Flip image horizontally"""
...
@ -1123,9 +1172,15 @@ def image_flip_vertical(image: Any,) -> None:
def image_format(image: Any,newFormat: int,) -> None:
"""Convert image data to desired format"""
...
def image_from_channel(image: Image,selectedChannel: int,) -> Image:
"""Create an image from a selected channel of another image (GRAYSCALE)"""
...
def image_from_image(image: Image,rec: Rectangle,) -> Image:
"""Create an image from another image piece"""
...
def image_kernel_convolution(image: Any,kernel: Any,kernelSize: int,) -> None:
"""Apply custom square convolution kernel to image"""
...
def image_mipmaps(image: Any,) -> None:
"""Compute all mipmap levels for a provided image"""
...
@ -1189,6 +1244,9 @@ def is_file_dropped() -> bool:
def is_file_extension(fileName: str,ext: str,) -> bool:
"""Check file extension (including point: .png, .wav)"""
...
def is_file_name_valid(fileName: str,) -> bool:
"""Check if fileName is valid for the platform/OS"""
...
def is_font_ready(font: Font,) -> bool:
"""Check if a font is ready"""
...
@ -1316,7 +1374,7 @@ def load_directory_files(dirPath: str,) -> FilePathList:
"""Load directory filepaths"""
...
def load_directory_files_ex(basePath: str,filter: str,scanSubdirs: bool,) -> FilePathList:
"""Load directory filepaths with extension filtering and recursive directory scan"""
"""Load directory filepaths with extension filtering and recursive directory scan. Use 'DIR' in the filter string to include directories in the result"""
...
def load_dropped_files() -> FilePathList:
"""Load dropped filepaths"""
@ -1334,7 +1392,7 @@ def load_font_data(fileData: str,dataSize: int,fontSize: int,codepoints: Any,cod
"""Load font data for further use"""
...
def load_font_ex(fileName: str,fontSize: int,codepoints: Any,codepointCount: int,) -> Font:
"""Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character setFont"""
"""Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set, font size is provided in pixels height"""
...
def load_font_from_image(image: Image,key: Color,firstChar: int,) -> Font:
"""Load font from Image (XNA style)"""
@ -1348,6 +1406,9 @@ def load_image(fileName: str,) -> Image:
def load_image_anim(fileName: str,frames: Any,) -> Image:
"""Load image sequence from file (frames appended to image.data)"""
...
def load_image_anim_from_memory(fileType: str,fileData: str,dataSize: int,frames: Any,) -> Image:
"""Load image sequence from memory buffer"""
...
def load_image_colors(image: Image,) -> Any:
"""Load color data from image as a Color array (RGBA - 32bit)"""
...
@ -1366,9 +1427,6 @@ def load_image_palette(image: Image,maxPaletteSize: int,colorCount: Any,) -> Any
def load_image_raw(fileName: str,width: int,height: int,format: int,headerSize: int,) -> Image:
"""Load image from RAW file data"""
...
def load_image_svg(fileNameOrString: str,width: int,height: int,) -> Image:
"""Load image from SVG file data or string with specified size"""
...
def load_material_default() -> Material:
"""Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)"""
...
@ -1435,13 +1493,19 @@ def load_wave_from_memory(fileType: str,fileData: str,dataSize: int,) -> Wave:
def load_wave_samples(wave: Wave,) -> Any:
"""Load samples data from wave as a 32bit float data array"""
...
def make_directory(dirPath: str,) -> int:
"""Create directories (including full path requested), returns 0 on success"""
...
def matrix_add(left: Matrix,right: Matrix,) -> Matrix:
""""""
...
def matrix_decompose(mat: Matrix,translation: Any,rotation: Any,scale: Any,) -> None:
""""""
...
def matrix_determinant(mat: Matrix,) -> float:
""""""
...
def matrix_frustum(left: float,right: float,bottom: float,top: float,near: float,far: float,) -> Matrix:
def matrix_frustum(left: float,right: float,bottom: float,top: float,nearPlane: float,farPlane: float,) -> Matrix:
""""""
...
def matrix_identity() -> Matrix:
@ -1564,6 +1628,9 @@ def quaternion_add(q1: Vector4,q2: Vector4,) -> Vector4:
def quaternion_add_value(q: Vector4,add: float,) -> Vector4:
""""""
...
def quaternion_cubic_hermite_spline(q1: Vector4,outTangent1: Vector4,q2: Vector4,inTangent2: Vector4,t: float,) -> Vector4:
""""""
...
def quaternion_divide(q1: Vector4,q2: Vector4,) -> Vector4:
""""""
...
@ -1687,6 +1754,9 @@ def set_exit_key(key: int,) -> None:
def set_gamepad_mappings(mappings: str,) -> int:
"""Set internal gamepad mappings (SDL_GameControllerDB)"""
...
def set_gamepad_vibration(gamepad: int,leftMotor: float,rightMotor: float,) -> None:
"""Set gamepad vibration for both motors"""
...
def set_gestures_enabled(flags: int,) -> None:
"""Enable a set of gestures using flags"""
...
@ -1879,6 +1949,12 @@ def text_split(text: str,delimiter: str,count: Any,) -> list[str]:
def text_subtext(text: str,position: int,length: int,) -> str:
"""Get a piece of a text string"""
...
def text_to_camel(text: str,) -> str:
"""Get Camel case notation version of provided string"""
...
def text_to_float(text: str,) -> float:
"""Get float value from text (negative values not supported)"""
...
def text_to_integer(text: str,) -> int:
"""Get integer value from text (negative values not supported)"""
...
@ -1888,14 +1964,17 @@ def text_to_lower(text: str,) -> str:
def text_to_pascal(text: str,) -> str:
"""Get Pascal case notation version of provided string"""
...
def text_to_snake(text: str,) -> str:
"""Get Snake case notation version of provided string"""
...
def text_to_upper(text: str,) -> str:
"""Get upper case version of provided string"""
...
def toggle_borderless_windowed() -> None:
"""Toggle window state: borderless windowed (only PLATFORM_DESKTOP)"""
"""Toggle window state: borderless windowed [resizes window to match monitor resolution] (only PLATFORM_DESKTOP)"""
...
def toggle_fullscreen() -> None:
"""Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)"""
"""Toggle window state: fullscreen/windowed [resizes monitor to match window resolution] (only PLATFORM_DESKTOP)"""
...
def trace_log(*args) -> None:
"""VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""
@ -1903,7 +1982,7 @@ def trace_log(*args) -> None:
def unload_audio_stream(stream: AudioStream,) -> None:
"""Unload audio stream and free memory"""
...
def unload_automation_event_list(list_0: Any,) -> None:
def unload_automation_event_list(list_0: AutomationEventList,) -> None:
"""Unload automation events list from file"""
...
def unload_codepoints(codepoints: Any,) -> None:
@ -1999,6 +2078,9 @@ def update_mesh_buffer(mesh: Mesh,index: int,data: Any,dataSize: int,offset: int
def update_model_animation(model: Model,anim: ModelAnimation,frame: int,) -> None:
"""Update model animation pose"""
...
def update_model_animation_bone_matrices(model: Model,anim: ModelAnimation,frame: int,) -> None:
"""Update model animation mesh bone matrices (Note GPU skinning does not work on Mac)"""
...
def update_music_stream(music: Music,) -> None:
"""Updates buffers for music streaming"""
...
@ -2062,6 +2144,12 @@ def vector2_lerp(v1: Vector2,v2: Vector2,amount: float,) -> Vector2:
def vector2_line_angle(start: Vector2,end: Vector2,) -> float:
""""""
...
def vector2_max(v1: Vector2,v2: Vector2,) -> Vector2:
""""""
...
def vector2_min(v1: Vector2,v2: Vector2,) -> Vector2:
""""""
...
def vector2_move_towards(v: Vector2,target: Vector2,maxDistance: float,) -> Vector2:
""""""
...
@ -2080,6 +2168,9 @@ def vector2_one() -> Vector2:
def vector2_reflect(v: Vector2,normal: Vector2,) -> Vector2:
""""""
...
def vector2_refract(v: Vector2,n: Vector2,r: float,) -> Vector2:
""""""
...
def vector2_rotate(v: Vector2,angle: float,) -> Vector2:
""""""
...
@ -2119,6 +2210,9 @@ def vector3_clamp_value(v: Vector3,min_1: float,max_2: float,) -> Vector3:
def vector3_cross_product(v1: Vector3,v2: Vector3,) -> Vector3:
""""""
...
def vector3_cubic_hermite(v1: Vector3,tangent1: Vector3,v2: Vector3,tangent2: Vector3,amount: float,) -> Vector3:
""""""
...
def vector_3distance(v1: Vector3,v2: Vector3,) -> float:
""""""
...
@ -2152,6 +2246,9 @@ def vector3_max(v1: Vector3,v2: Vector3,) -> Vector3:
def vector3_min(v1: Vector3,v2: Vector3,) -> Vector3:
""""""
...
def vector3_move_towards(v: Vector3,target: Vector3,maxDistance: float,) -> Vector3:
""""""
...
def vector3_multiply(v1: Vector3,v2: Vector3,) -> Vector3:
""""""
...
@ -2209,14 +2306,80 @@ def vector3_unproject(source: Vector3,projection: Matrix,view: Matrix,) -> Vecto
def vector3_zero() -> Vector3:
""""""
...
def vector4_add(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def vector4_add_value(v: Vector4,add: float,) -> Vector4:
""""""
...
def vector4_distance(v1: Vector4,v2: Vector4,) -> float:
""""""
...
def vector4_distance_sqr(v1: Vector4,v2: Vector4,) -> float:
""""""
...
def vector4_divide(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def vector4_dot_product(v1: Vector4,v2: Vector4,) -> float:
""""""
...
def vector4_equals(p: Vector4,q: Vector4,) -> int:
""""""
...
def vector4_invert(v: Vector4,) -> Vector4:
""""""
...
def vector4_length(v: Vector4,) -> float:
""""""
...
def vector4_length_sqr(v: Vector4,) -> float:
""""""
...
def vector4_lerp(v1: Vector4,v2: Vector4,amount: float,) -> Vector4:
""""""
...
def vector4_max(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def vector4_min(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def vector4_move_towards(v: Vector4,target: Vector4,maxDistance: float,) -> Vector4:
""""""
...
def vector4_multiply(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def vector4_negate(v: Vector4,) -> Vector4:
""""""
...
def vector4_normalize(v: Vector4,) -> Vector4:
""""""
...
def vector4_one() -> Vector4:
""""""
...
def vector4_scale(v: Vector4,scale: float,) -> Vector4:
""""""
...
def vector4_subtract(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def vector4_subtract_value(v: Vector4,add: float,) -> Vector4:
""""""
...
def vector4_zero() -> Vector4:
""""""
...
def wait_time(seconds: float,) -> None:
"""Wait for some time (halt program execution)"""
...
def wave_copy(wave: Wave,) -> Wave:
"""Copy a wave to a new wave"""
...
def wave_crop(wave: Any,initSample: int,finalSample: int,) -> None:
"""Crop a wave to defined samples range"""
def wave_crop(wave: Any,initFrame: int,finalFrame: int,) -> None:
"""Crop a wave to defined frames range"""
...
def wave_format(wave: Any,sampleRate: int,sampleSize: int,channels: int,) -> None:
"""Convert wave data to desired format"""
@ -2383,6 +2546,9 @@ def glfw_get_window_pos(window: Any,xpos: Any,ypos: Any,) -> None:
def glfw_get_window_size(window: Any,width: Any,height: Any,) -> None:
""""""
...
def glfw_get_window_title(window: Any,) -> str:
""""""
...
def glfw_get_window_user_pointer(window: Any,) -> Any:
""""""
...
@ -2593,6 +2759,9 @@ def rl_active_texture_slot(slot: int,) -> None:
def rl_begin(mode: int,) -> None:
"""Initialize drawing mode (how to organize vertex)"""
...
def rl_bind_framebuffer(target: int,framebuffer: int,) -> None:
"""Bind framebuffer (FBO)"""
...
def rl_bind_image_texture(id: int,index: int,format: int,readonly: bool,) -> None:
"""Bind image texture"""
...
@ -2623,6 +2792,9 @@ def rl_color4f(x: float,y: float,z: float,w: float,) -> None:
def rl_color4ub(r: str,g: str,b: str,a: str,) -> None:
"""Define one vertex (color) - 4 byte"""
...
def rl_color_mask(r: bool,g: bool,b: bool,a: bool,) -> None:
"""Color mask control"""
...
def rl_compile_shader(shaderCode: str,type: int,) -> int:
"""Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER)"""
...
@ -2681,7 +2853,7 @@ def rl_disable_vertex_buffer_element() -> None:
"""Disable vertex buffer element (VBO element)"""
...
def rl_disable_wire_mode() -> None:
"""Disable wire mode ( and point ) maybe rename"""
"""Disable wire (and point) mode"""
...
def rl_draw_render_batch(batch: Any,) -> None:
"""Draw render batch data (Update->Draw->Reset)"""
@ -2690,16 +2862,16 @@ def rl_draw_render_batch_active() -> None:
"""Update and draw internal render batch"""
...
def rl_draw_vertex_array(offset: int,count: int,) -> None:
""""""
"""Draw vertex array (currently active vao)"""
...
def rl_draw_vertex_array_elements(offset: int,count: int,buffer: Any,) -> None:
""""""
"""Draw vertex array elements"""
...
def rl_draw_vertex_array_elements_instanced(offset: int,count: int,buffer: Any,instances: int,) -> None:
""""""
"""Draw vertex array elements with instancing"""
...
def rl_draw_vertex_array_instanced(offset: int,count: int,instances: int,) -> None:
""""""
"""Draw vertex array (currently active vao) with instancing"""
...
def rl_enable_backface_culling() -> None:
"""Enable backface culling"""
@ -2767,6 +2939,15 @@ def rl_frustum(left: float,right: float,bottom: float,top: float,znear: float,zf
def rl_gen_texture_mipmaps(id: int,width: int,height: int,format: int,mipmaps: Any,) -> None:
"""Generate mipmap data for selected texture"""
...
def rl_get_active_framebuffer() -> int:
"""Get the currently active render texture (fbo), 0 for default framebuffer"""
...
def rl_get_cull_distance_far() -> float:
"""Get cull plane distance far"""
...
def rl_get_cull_distance_near() -> float:
"""Get cull plane distance near"""
...
def rl_get_framebuffer_height() -> int:
"""Get default framebuffer height"""
...
@ -2833,7 +3014,7 @@ def rl_load_draw_quad() -> None:
def rl_load_extensions(loader: Any,) -> None:
"""Load OpenGL extensions (loader function required)"""
...
def rl_load_framebuffer(width: int,height: int,) -> int:
def rl_load_framebuffer() -> int:
"""Load an empty framebuffer"""
...
def rl_load_identity() -> None:
@ -2852,10 +3033,10 @@ def rl_load_shader_program(vShaderId: int,fShaderId: int,) -> int:
"""Load custom shader program"""
...
def rl_load_texture(data: Any,width: int,height: int,format: int,mipmapCount: int,) -> int:
"""Load texture in GPU"""
"""Load texture data"""
...
def rl_load_texture_cubemap(data: Any,size: int,format: int,) -> int:
"""Load texture cubemap"""
"""Load texture cubemap data"""
...
def rl_load_texture_depth(width: int,height: int,useRenderBuffer: bool,) -> int:
"""Load depth texture/renderbuffer (to be attached to fbo)"""
@ -2864,10 +3045,10 @@ def rl_load_vertex_array() -> int:
"""Load vertex array (vao) if supported"""
...
def rl_load_vertex_buffer(buffer: Any,size: int,dynamic: bool,) -> int:
"""Load a vertex buffer attribute"""
"""Load a vertex buffer object"""
...
def rl_load_vertex_buffer_element(buffer: Any,size: int,dynamic: bool,) -> int:
"""Load a new attributes element buffer"""
"""Load vertex buffer elements object"""
...
def rl_matrix_mode(mode: int,) -> None:
"""Choose the current matrix to be transformed"""
@ -2914,6 +3095,9 @@ def rl_set_blend_factors_separate(glSrcRGB: int,glDstRGB: int,glSrcAlpha: int,gl
def rl_set_blend_mode(mode: int,) -> None:
"""Set blending mode"""
...
def rl_set_clip_planes(nearPlane: float,farPlane: float,) -> None:
"""Set clip planes distances"""
...
def rl_set_cull_face(mode: int,) -> None:
"""Set face culling mode"""
...
@ -2950,20 +3134,23 @@ def rl_set_texture(id: int,) -> None:
def rl_set_uniform(locIndex: int,value: Any,uniformType: int,count: int,) -> None:
"""Set shader value uniform"""
...
def rl_set_uniform_matrices(locIndex: int,mat: Any,count: int,) -> None:
"""Set shader value matrices"""
...
def rl_set_uniform_matrix(locIndex: int,mat: Matrix,) -> None:
"""Set shader value matrix"""
...
def rl_set_uniform_sampler(locIndex: int,textureId: int,) -> None:
"""Set shader value sampler"""
...
def rl_set_vertex_attribute(index: int,compSize: int,type: int,normalized: bool,stride: int,pointer: Any,) -> None:
""""""
def rl_set_vertex_attribute(index: int,compSize: int,type: int,normalized: bool,stride: int,offset: int,) -> None:
"""Set vertex attribute data configuration"""
...
def rl_set_vertex_attribute_default(locIndex: int,value: Any,attribType: int,count: int,) -> None:
"""Set vertex attribute default value"""
"""Set vertex attribute default value, when attribute to provided"""
...
def rl_set_vertex_attribute_divisor(index: int,divisor: int,) -> None:
""""""
"""Set vertex attribute data divisor"""
...
def rl_tex_coord2f(x: float,y: float,) -> None:
"""Define one vertex (texture coordinate) - 2 float"""
@ -2990,22 +3177,22 @@ def rl_unload_texture(id: int,) -> None:
"""Unload texture from GPU memory"""
...
def rl_unload_vertex_array(vaoId: int,) -> None:
""""""
"""Unload vertex array (vao)"""
...
def rl_unload_vertex_buffer(vboId: int,) -> None:
""""""
"""Unload vertex buffer object"""
...
def rl_update_shader_buffer(id: int,data: Any,dataSize: int,offset: int,) -> None:
"""Update SSBO buffer data"""
...
def rl_update_texture(id: int,offsetX: int,offsetY: int,width: int,height: int,format: int,data: Any,) -> None:
"""Update GPU texture with new data"""
"""Update texture with new data on GPU"""
...
def rl_update_vertex_buffer(bufferId: int,data: Any,dataSize: int,offset: int,) -> None:
"""Update GPU buffer with new data"""
"""Update vertex buffer object data on GPU buffer"""
...
def rl_update_vertex_buffer_elements(id: int,data: Any,dataSize: int,offset: int,) -> None:
"""Update vertex buffer elements with new data"""
"""Update vertex buffer elements data on GPU buffer"""
...
def rl_vertex2f(x: float,y: float,) -> None:
"""Define one vertex (position) - 2 float"""
@ -3154,7 +3341,7 @@ class Matrix2x2:
self.m11=m11
class Mesh:
""" struct """
def __init__(self, vertexCount, triangleCount, vertices, texcoords, texcoords2, normals, tangents, colors, indices, animVertices, animNormals, boneIds, boneWeights, vaoId, vboId):
def __init__(self, vertexCount, triangleCount, vertices, texcoords, texcoords2, normals, tangents, colors, indices, animVertices, animNormals, boneIds, boneWeights, boneMatrices, boneCount, vaoId, vboId):
self.vertexCount=vertexCount
self.triangleCount=triangleCount
self.vertices=vertices
@ -3168,6 +3355,8 @@ class Mesh:
self.animNormals=animNormals
self.boneIds=boneIds
self.boneWeights=boneWeights
self.boneMatrices=boneMatrices
self.boneCount=boneCount
self.vaoId=vaoId
self.vboId=vboId
class Model:
@ -3333,12 +3522,11 @@ class Vector4:
self.w=w
class VrDeviceInfo:
""" struct """
def __init__(self, hResolution, vResolution, hScreenSize, vScreenSize, vScreenCenter, eyeToScreenDistance, lensSeparationDistance, interpupillaryDistance, lensDistortionValues, chromaAbCorrection):
def __init__(self, hResolution, vResolution, hScreenSize, vScreenSize, eyeToScreenDistance, lensSeparationDistance, interpupillaryDistance, lensDistortionValues, chromaAbCorrection):
self.hResolution=hResolution
self.vResolution=vResolution
self.hScreenSize=hScreenSize
self.vScreenSize=vScreenSize
self.vScreenCenter=vScreenCenter
self.eyeToScreenDistance=eyeToScreenDistance
self.lensSeparationDistance=lensSeparationDistance
self.interpupillaryDistance=interpupillaryDistance
@ -3389,10 +3577,11 @@ class rlRenderBatch:
self.currentDepth=currentDepth
class rlVertexBuffer:
""" struct """
def __init__(self, elementCount, vertices, texcoords, colors, indices, vaoId, vboId):
def __init__(self, elementCount, vertices, texcoords, normals, colors, indices, vaoId, vboId):
self.elementCount=elementCount
self.vertices=vertices
self.texcoords=texcoords
self.normals=normals
self.colors=colors
self.indices=indices
self.vaoId=vaoId
@ -3563,7 +3752,7 @@ class KeyboardKey(IntEnum):
KEY_KP_ENTER = 335
KEY_KP_EQUAL = 336
KEY_BACK = 4
KEY_MENU = 82
KEY_MENU = 5
KEY_VOLUME_UP = 24
KEY_VOLUME_DOWN = 25
@ -3657,6 +3846,9 @@ class ShaderLocationIndex(IntEnum):
SHADER_LOC_MAP_IRRADIANCE = 23
SHADER_LOC_MAP_PREFILTER = 24
SHADER_LOC_MAP_BRDF = 25
SHADER_LOC_VERTEX_BONEIDS = 26
SHADER_LOC_VERTEX_BONEWEIGHTS = 27
SHADER_LOC_BONE_MATRICES = 28
class ShaderUniformDataType(IntEnum):
SHADER_UNIFORM_FLOAT = 0
@ -3860,6 +4052,8 @@ class GuiComboBoxProperty(IntEnum):
class GuiDropdownBoxProperty(IntEnum):
ARROW_PADDING = 16
DROPDOWN_ITEMS_SPACING = 17
DROPDOWN_ARROW_HIDDEN = 18
DROPDOWN_ROLL_UP = 19
class GuiTextBoxProperty(IntEnum):
TEXT_READONLY = 16
@ -3873,6 +4067,7 @@ class GuiListViewProperty(IntEnum):
LIST_ITEMS_SPACING = 17
SCROLLBAR_WIDTH = 18
SCROLLBAR_SIDE = 19
LIST_ITEMS_BORDER_WIDTH = 20
class GuiColorPickerProperty(IntEnum):
COLOR_SELECTOR_SIZE = 16
@ -4102,15 +4297,15 @@ class GuiIconName(IntEnum):
ICON_FOLDER = 217
ICON_FILE = 218
ICON_SAND_TIMER = 219
ICON_220 = 220
ICON_221 = 221
ICON_222 = 222
ICON_223 = 223
ICON_224 = 224
ICON_225 = 225
ICON_226 = 226
ICON_227 = 227
ICON_228 = 228
ICON_WARNING = 220
ICON_HELP_BOX = 221
ICON_INFO_BOX = 222
ICON_PRIORITY = 223
ICON_LAYERS_ISO = 224
ICON_LAYERS2 = 225
ICON_MLAYERS = 226
ICON_MAPS = 227
ICON_HOT = 228
ICON_229 = 229
ICON_230 = 230
ICON_231 = 231

View file

@ -12,10 +12,10 @@ ARROWS_SIZE: int
ARROWS_VISIBLE: int
ARROW_PADDING: int
def AttachAudioMixedProcessor(processor: Any,) -> None:
"""Attach audio stream processor to the entire audio pipeline, receives the samples as <float>s"""
"""Attach audio stream processor to the entire audio pipeline, receives the samples as 'float'"""
...
def AttachAudioStreamProcessor(stream: AudioStream,processor: Any,) -> None:
"""Attach audio stream processor to stream, receives the samples as <float>s"""
"""Attach audio stream processor to stream, receives the samples as 'float'"""
...
BACKGROUND_COLOR: int
BASE_COLOR_DISABLED: int
@ -89,6 +89,9 @@ def CheckCollisionBoxSphere(box: BoundingBox,center: Vector3,radius: float,) ->
def CheckCollisionBoxes(box1: BoundingBox,box2: BoundingBox,) -> bool:
"""Check collision between two bounding boxes"""
...
def CheckCollisionCircleLine(center: Vector2,radius: float,p1: Vector2,p2: Vector2,) -> bool:
"""Check if circle collides with a line created betweeen two points [p1] and [p2]"""
...
def CheckCollisionCircleRec(center: Vector2,radius: float,rec: Rectangle,) -> bool:
"""Check collision between circle and rectangle"""
...
@ -158,6 +161,12 @@ def ColorFromHSV(hue: float,saturation: float,value: float,) -> Color:
def ColorFromNormalized(normalized: Vector4,) -> Color:
"""Get Color from normalized values [0..1]"""
...
def ColorIsEqual(col1: Color,col2: Color,) -> bool:
"""Check if two colors are equal"""
...
def ColorLerp(color1: Color,color2: Color,factor: float,) -> Color:
"""Get color lerp interpolation between two colors, factor [0.0f..1.0f]"""
...
def ColorNormalize(color: Color,) -> Vector4:
"""Get Color normalized as float [0..1]"""
...
@ -168,7 +177,7 @@ def ColorToHSV(color: Color,) -> Vector3:
"""Get HSV values for a Color, hue [0..360], saturation/value [0..1]"""
...
def ColorToInt(color: Color,) -> int:
"""Get hexadecimal value for a Color"""
"""Get hexadecimal value for a Color (0xRRGGBBAA)"""
...
def CompressData(data: str,dataSize: int,compDataSize: Any,) -> str:
"""Compress data (DEFLATE algorithm), memory must be MemFree()"""
@ -184,7 +193,9 @@ def CreatePhysicsBodyRectangle(pos: Vector2,width: float,height: float,density:
...
DEFAULT: int
DROPDOWNBOX: int
DROPDOWN_ARROW_HIDDEN: int
DROPDOWN_ITEMS_SPACING: int
DROPDOWN_ROLL_UP: int
def DecodeDataBase64(data: str,outputSize: Any,) -> str:
"""Decode Base64 string data, memory must be MemFree()"""
...
@ -209,7 +220,7 @@ def DisableCursor() -> None:
def DisableEventWaiting() -> None:
"""Disable waiting for events on EndDrawing(), automatic events polling"""
...
def DrawBillboard(camera: Camera3D,texture: Texture,position: Vector3,size: float,tint: Color,) -> None:
def DrawBillboard(camera: Camera3D,texture: Texture,position: Vector3,scale: float,tint: Color,) -> None:
"""Draw a billboard texture"""
...
def DrawBillboardPro(camera: Camera3D,texture: Texture,source: Rectangle,position: Vector3,up: Vector3,size: Vector2,origin: Vector2,rotation: float,tint: Color,) -> None:
@ -233,7 +244,7 @@ def DrawCircle(centerX: int,centerY: int,radius: float,color: Color,) -> None:
def DrawCircle3D(center: Vector3,radius: float,rotationAxis: Vector3,rotationAngle: float,color: Color,) -> None:
"""Draw a circle in 3D world space"""
...
def DrawCircleGradient(centerX: int,centerY: int,radius: float,color1: Color,color2: Color,) -> None:
def DrawCircleGradient(centerX: int,centerY: int,radius: float,inner: Color,outer: Color,) -> None:
"""Draw a gradient-filled circle"""
...
def DrawCircleLines(centerX: int,centerY: int,radius: float,color: Color,) -> None:
@ -317,6 +328,12 @@ def DrawModel(model: Model,position: Vector3,scale: float,tint: Color,) -> None:
def DrawModelEx(model: Model,position: Vector3,rotationAxis: Vector3,rotationAngle: float,scale: Vector3,tint: Color,) -> None:
"""Draw a model with extended parameters"""
...
def DrawModelPoints(model: Model,position: Vector3,scale: float,tint: Color,) -> None:
"""Draw a model as points"""
...
def DrawModelPointsEx(model: Model,position: Vector3,rotationAxis: Vector3,rotationAngle: float,scale: Vector3,tint: Color,) -> None:
"""Draw a model as points with extended parameters"""
...
def DrawModelWires(model: Model,position: Vector3,scale: float,tint: Color,) -> None:
"""Draw a model wires (with texture if set)"""
...
@ -324,10 +341,10 @@ def DrawModelWiresEx(model: Model,position: Vector3,rotationAxis: Vector3,rotati
"""Draw a model wires (with texture if set) with extended parameters"""
...
def DrawPixel(posX: int,posY: int,color: Color,) -> None:
"""Draw a pixel"""
"""Draw a pixel using geometry [Can be slow, use with care]"""
...
def DrawPixelV(position: Vector2,color: Color,) -> None:
"""Draw a pixel (Vector version)"""
"""Draw a pixel using geometry (Vector version) [Can be slow, use with care]"""
...
def DrawPlane(centerPos: Vector3,size: Vector2,color: Color,) -> None:
"""Draw a plane XZ"""
@ -350,13 +367,13 @@ def DrawRay(ray: Ray,color: Color,) -> None:
def DrawRectangle(posX: int,posY: int,width: int,height: int,color: Color,) -> None:
"""Draw a color-filled rectangle"""
...
def DrawRectangleGradientEx(rec: Rectangle,col1: Color,col2: Color,col3: Color,col4: Color,) -> None:
def DrawRectangleGradientEx(rec: Rectangle,topLeft: Color,bottomLeft: Color,topRight: Color,bottomRight: Color,) -> None:
"""Draw a gradient-filled rectangle with custom vertex colors"""
...
def DrawRectangleGradientH(posX: int,posY: int,width: int,height: int,color1: Color,color2: Color,) -> None:
def DrawRectangleGradientH(posX: int,posY: int,width: int,height: int,left: Color,right: Color,) -> None:
"""Draw a horizontal-gradient-filled rectangle"""
...
def DrawRectangleGradientV(posX: int,posY: int,width: int,height: int,color1: Color,color2: Color,) -> None:
def DrawRectangleGradientV(posX: int,posY: int,width: int,height: int,top: Color,bottom: Color,) -> None:
"""Draw a vertical-gradient-filled rectangle"""
...
def DrawRectangleLines(posX: int,posY: int,width: int,height: int,color: Color,) -> None:
@ -374,7 +391,10 @@ def DrawRectangleRec(rec: Rectangle,color: Color,) -> None:
def DrawRectangleRounded(rec: Rectangle,roundness: float,segments: int,color: Color,) -> None:
"""Draw rectangle with rounded edges"""
...
def DrawRectangleRoundedLines(rec: Rectangle,roundness: float,segments: int,lineThick: float,color: Color,) -> None:
def DrawRectangleRoundedLines(rec: Rectangle,roundness: float,segments: int,color: Color,) -> None:
"""Draw rectangle lines with rounded edges"""
...
def DrawRectangleRoundedLinesEx(rec: Rectangle,roundness: float,segments: int,lineThick: float,color: Color,) -> None:
"""Draw rectangle with rounded edges outline"""
...
def DrawRectangleV(position: Vector2,size: Vector2,color: Color,) -> None:
@ -530,6 +550,9 @@ def ExportImageToMemory(image: Image,fileType: str,fileSize: Any,) -> str:
def ExportMesh(mesh: Mesh,fileName: str,) -> bool:
"""Export mesh data to file, returns true on success"""
...
def ExportMeshAsCode(mesh: Mesh,fileName: str,) -> bool:
"""Export mesh as code file (.h) defining multiple arrays of vertex attributes"""
...
def ExportWave(wave: Wave,fileName: str,) -> bool:
"""Export wave data to file, returns true on success"""
...
@ -819,9 +842,6 @@ def GetMouseDelta() -> Vector2:
def GetMousePosition() -> Vector2:
"""Get mouse position XY"""
...
def GetMouseRay(mousePosition: Vector2,camera: Camera3D,) -> Ray:
"""Get a ray trace from mouse position"""
...
def GetMouseWheelMove() -> float:
"""Get mouse wheel movement for X or Y, whichever is larger"""
...
@ -894,6 +914,12 @@ def GetScreenHeight() -> int:
def GetScreenToWorld2D(position: Vector2,camera: Camera2D,) -> Vector2:
"""Get the world space position for a 2d camera screen space position"""
...
def GetScreenToWorldRay(position: Vector2,camera: Camera3D,) -> Ray:
"""Get a ray trace from screen position (i.e mouse)"""
...
def GetScreenToWorldRayEx(position: Vector2,camera: Camera3D,width: int,height: int,) -> Ray:
"""Get a ray trace from screen position (i.e mouse) in a viewport"""
...
def GetScreenWidth() -> int:
"""Get current screen width"""
...
@ -903,6 +929,12 @@ def GetShaderLocation(shader: Shader,uniformName: str,) -> int:
def GetShaderLocationAttrib(shader: Shader,attribName: str,) -> int:
"""Get shader attribute location"""
...
def GetShapesTexture() -> Texture:
"""Get texture that is used for shapes drawing"""
...
def GetShapesTextureRectangle() -> Rectangle:
"""Get texture source rectangle that is used for shapes drawing"""
...
def GetSplinePointBasis(p1: Vector2,p2: Vector2,p3: Vector2,p4: Vector2,t: float,) -> Vector2:
"""Get (evaluate) spline point: B-Spline"""
...
@ -973,7 +1005,7 @@ def GuiColorPanel(bounds: Rectangle,text: str,color: Any,) -> int:
"""Color Panel control"""
...
def GuiColorPanelHSV(bounds: Rectangle,text: str,colorHsv: Any,) -> int:
"""Color Panel control that returns HSV color value, used by GuiColorPickerHSV()"""
"""Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV()"""
...
def GuiColorPicker(bounds: Rectangle,text: str,color: Any,) -> int:
"""Color Picker control (multiple color controls)"""
@ -982,7 +1014,7 @@ def GuiColorPickerHSV(bounds: Rectangle,text: str,colorHsv: Any,) -> int:
"""Color Picker control that avoids conversion to RGB on each call (multiple color controls)"""
...
def GuiComboBox(bounds: Rectangle,text: str,active: Any,) -> int:
"""Combo Box control, returns selected item index"""
"""Combo Box control"""
...
def GuiDisable() -> None:
"""Disable gui controls (global state)"""
@ -994,7 +1026,7 @@ def GuiDrawIcon(iconId: int,posX: int,posY: int,pixelSize: int,color: Color,) ->
"""Draw icon using pixel size at specified position"""
...
def GuiDropdownBox(bounds: Rectangle,text: str,active: Any,editMode: bool,) -> int:
"""Dropdown Box control, returns selected item"""
"""Dropdown Box control"""
...
def GuiDummyRec(bounds: Rectangle,text: str,) -> int:
"""Dummy control for placeholders"""
@ -1018,7 +1050,7 @@ def GuiGetStyle(control: int,property: int,) -> int:
"""Get one style property"""
...
def GuiGrid(bounds: Rectangle,text: str,spacing: float,subdivs: int,mouseCell: Any,) -> int:
"""Grid control, returns mouse cell position"""
"""Grid control"""
...
def GuiGroupBox(bounds: Rectangle,text: str,) -> int:
"""Group Box control with text name"""
@ -1030,16 +1062,16 @@ def GuiIsLocked() -> bool:
"""Check if gui is locked (global state)"""
...
def GuiLabel(bounds: Rectangle,text: str,) -> int:
"""Label control, shows text"""
"""Label control"""
...
def GuiLabelButton(bounds: Rectangle,text: str,) -> int:
"""Label button control, show true when clicked"""
"""Label button control, returns true when clicked"""
...
def GuiLine(bounds: Rectangle,text: str,) -> int:
"""Line separator control, could contain text"""
...
def GuiListView(bounds: Rectangle,text: str,scrollIndex: Any,active: Any,) -> int:
"""List View control, returns selected list item index"""
"""List View control"""
...
def GuiListViewEx(bounds: Rectangle,text: list[str],count: int,scrollIndex: Any,active: Any,focus: Any,) -> int:
"""List View with extended parameters"""
@ -1063,7 +1095,7 @@ def GuiPanel(bounds: Rectangle,text: str,) -> int:
"""Panel control, useful to group controls"""
...
def GuiProgressBar(bounds: Rectangle,textLeft: str,textRight: str,value: Any,minValue: float,maxValue: float,) -> int:
"""Progress Bar control, shows current progress value"""
"""Progress Bar control"""
...
def GuiScrollPanel(bounds: Rectangle,text: str,content: Rectangle,scroll: Any,view: Any,) -> int:
"""Scroll Panel control"""
@ -1087,13 +1119,13 @@ def GuiSetTooltip(tooltip: str,) -> None:
"""Set tooltip string"""
...
def GuiSlider(bounds: Rectangle,textLeft: str,textRight: str,value: Any,minValue: float,maxValue: float,) -> int:
"""Slider control, returns selected value"""
"""Slider control"""
...
def GuiSliderBar(bounds: Rectangle,textLeft: str,textRight: str,value: Any,minValue: float,maxValue: float,) -> int:
"""Slider Bar control, returns selected value"""
"""Slider Bar control"""
...
def GuiSpinner(bounds: Rectangle,text: str,value: Any,minValue: int,maxValue: int,editMode: bool,) -> int:
"""Spinner control, returns selected value"""
"""Spinner control"""
...
def GuiStatusBar(bounds: Rectangle,text: str,) -> int:
"""Status Bar control, shows info text"""
@ -1108,13 +1140,13 @@ def GuiTextInputBox(bounds: Rectangle,title: str,message: str,buttons: str,text:
"""Text Input Box control, ask for text, supports secret"""
...
def GuiToggle(bounds: Rectangle,text: str,active: Any,) -> int:
"""Toggle Button control, returns true when active"""
"""Toggle Button control"""
...
def GuiToggleGroup(bounds: Rectangle,text: str,active: Any,) -> int:
"""Toggle Group control, returns active toggle index"""
"""Toggle Group control"""
...
def GuiToggleSlider(bounds: Rectangle,text: str,active: Any,) -> int:
"""Toggle Slider control, returns true when clicked"""
"""Toggle Slider control"""
...
def GuiUnlock() -> None:
"""Unlock gui controls (global state)"""
@ -1122,6 +1154,9 @@ def GuiUnlock() -> None:
def GuiValueBox(bounds: Rectangle,text: str,value: Any,minValue: int,maxValue: int,editMode: bool,) -> int:
"""Value Box control, updates input text with numbers"""
...
def GuiValueBoxFloat(bounds: Rectangle,text: str,textValue: str,value: Any,editMode: bool,) -> int:
"""Value box control for float values"""
...
def GuiWindowBox(bounds: Rectangle,title: str,) -> int:
"""Window Box control, shows a window that can be closed"""
...
@ -1133,15 +1168,6 @@ def HideCursor() -> None:
"""Hides cursor"""
...
ICON_1UP: int
ICON_220: int
ICON_221: int
ICON_222: int
ICON_223: int
ICON_224: int
ICON_225: int
ICON_226: int
ICON_227: int
ICON_228: int
ICON_229: int
ICON_230: int
ICON_231: int
@ -1287,13 +1313,18 @@ ICON_GRID_FILL: int
ICON_HAND_POINTER: int
ICON_HEART: int
ICON_HELP: int
ICON_HELP_BOX: int
ICON_HEX: int
ICON_HIDPI: int
ICON_HOT: int
ICON_HOUSE: int
ICON_INFO: int
ICON_INFO_BOX: int
ICON_KEY: int
ICON_LASER: int
ICON_LAYERS: int
ICON_LAYERS2: int
ICON_LAYERS_ISO: int
ICON_LAYERS_VISIBLE: int
ICON_LENS: int
ICON_LENS_BIG: int
@ -1307,7 +1338,9 @@ ICON_LOCK_CLOSE: int
ICON_LOCK_OPEN: int
ICON_MAGNET: int
ICON_MAILBOX: int
ICON_MAPS: int
ICON_MIPMAPS: int
ICON_MLAYERS: int
ICON_MODE_2D: int
ICON_MODE_3D: int
ICON_MONITOR: int
@ -1331,6 +1364,7 @@ ICON_PLAYER_RECORD: int
ICON_PLAYER_STOP: int
ICON_POT: int
ICON_PRINTER: int
ICON_PRIORITY: int
ICON_REDO: int
ICON_REDO_FILL: int
ICON_REG_EXP: int
@ -1377,6 +1411,7 @@ ICON_UNDO: int
ICON_UNDO_FILL: int
ICON_VERTICAL_BARS: int
ICON_VERTICAL_BARS_FILL: int
ICON_WARNING: int
ICON_WATER_DROP: int
ICON_WAVE: int
ICON_WAVE_SINUS: int
@ -1451,6 +1486,9 @@ def ImageDrawCircleV(dst: Any,center: Vector2,radius: int,color: Color,) -> None
def ImageDrawLine(dst: Any,startPosX: int,startPosY: int,endPosX: int,endPosY: int,color: Color,) -> None:
"""Draw line within an image"""
...
def ImageDrawLineEx(dst: Any,start: Vector2,end: Vector2,thick: int,color: Color,) -> None:
"""Draw a line defining thickness within an image"""
...
def ImageDrawLineV(dst: Any,start: Vector2,end: Vector2,color: Color,) -> None:
"""Draw line within an image (Vector version)"""
...
@ -1478,6 +1516,21 @@ def ImageDrawText(dst: Any,text: str,posX: int,posY: int,fontSize: int,color: Co
def ImageDrawTextEx(dst: Any,font: Font,text: str,position: Vector2,fontSize: float,spacing: float,tint: Color,) -> None:
"""Draw text (custom sprite font) within an image (destination)"""
...
def ImageDrawTriangle(dst: Any,v1: Vector2,v2: Vector2,v3: Vector2,color: Color,) -> None:
"""Draw triangle within an image"""
...
def ImageDrawTriangleEx(dst: Any,v1: Vector2,v2: Vector2,v3: Vector2,c1: Color,c2: Color,c3: Color,) -> None:
"""Draw triangle with interpolated colors within an image"""
...
def ImageDrawTriangleFan(dst: Any,points: Any,pointCount: int,color: Color,) -> None:
"""Draw a triangle fan defined by points within an image (first vertex is the center)"""
...
def ImageDrawTriangleLines(dst: Any,v1: Vector2,v2: Vector2,v3: Vector2,color: Color,) -> None:
"""Draw triangle outline within an image"""
...
def ImageDrawTriangleStrip(dst: Any,points: Any,pointCount: int,color: Color,) -> None:
"""Draw a triangle strip defined by points within an image"""
...
def ImageFlipHorizontal(image: Any,) -> None:
"""Flip image horizontally"""
...
@ -1487,9 +1540,15 @@ def ImageFlipVertical(image: Any,) -> None:
def ImageFormat(image: Any,newFormat: int,) -> None:
"""Convert image data to desired format"""
...
def ImageFromChannel(image: Image,selectedChannel: int,) -> Image:
"""Create an image from a selected channel of another image (GRAYSCALE)"""
...
def ImageFromImage(image: Image,rec: Rectangle,) -> Image:
"""Create an image from another image piece"""
...
def ImageKernelConvolution(image: Any,kernel: Any,kernelSize: int,) -> None:
"""Apply custom square convolution kernel to image"""
...
def ImageMipmaps(image: Any,) -> None:
"""Compute all mipmap levels for a provided image"""
...
@ -1553,6 +1612,9 @@ def IsFileDropped() -> bool:
def IsFileExtension(fileName: str,ext: str,) -> bool:
"""Check file extension (including point: .png, .wav)"""
...
def IsFileNameValid(fileName: str,) -> bool:
"""Check if fileName is valid for the platform/OS"""
...
def IsFontReady(font: Font,) -> bool:
"""Check if a font is ready"""
...
@ -1777,6 +1839,7 @@ KEY_ZERO: int
LABEL: int
LINE_COLOR: int
LISTVIEW: int
LIST_ITEMS_BORDER_WIDTH: int
LIST_ITEMS_HEIGHT: int
LIST_ITEMS_SPACING: int
LOG_ALL: int
@ -1803,7 +1866,7 @@ def LoadDirectoryFiles(dirPath: str,) -> FilePathList:
"""Load directory filepaths"""
...
def LoadDirectoryFilesEx(basePath: str,filter: str,scanSubdirs: bool,) -> FilePathList:
"""Load directory filepaths with extension filtering and recursive directory scan"""
"""Load directory filepaths with extension filtering and recursive directory scan. Use 'DIR' in the filter string to include directories in the result"""
...
def LoadDroppedFiles() -> FilePathList:
"""Load dropped filepaths"""
@ -1821,7 +1884,7 @@ def LoadFontData(fileData: str,dataSize: int,fontSize: int,codepoints: Any,codep
"""Load font data for further use"""
...
def LoadFontEx(fileName: str,fontSize: int,codepoints: Any,codepointCount: int,) -> Font:
"""Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character setFont"""
"""Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set, font size is provided in pixels height"""
...
def LoadFontFromImage(image: Image,key: Color,firstChar: int,) -> Font:
"""Load font from Image (XNA style)"""
@ -1835,6 +1898,9 @@ def LoadImage(fileName: str,) -> Image:
def LoadImageAnim(fileName: str,frames: Any,) -> Image:
"""Load image sequence from file (frames appended to image.data)"""
...
def LoadImageAnimFromMemory(fileType: str,fileData: str,dataSize: int,frames: Any,) -> Image:
"""Load image sequence from memory buffer"""
...
def LoadImageColors(image: Image,) -> Any:
"""Load color data from image as a Color array (RGBA - 32bit)"""
...
@ -1853,9 +1919,6 @@ def LoadImagePalette(image: Image,maxPaletteSize: int,colorCount: Any,) -> Any:
def LoadImageRaw(fileName: str,width: int,height: int,format: int,headerSize: int,) -> Image:
"""Load image from RAW file data"""
...
def LoadImageSvg(fileNameOrString: str,width: int,height: int,) -> Image:
"""Load image from SVG file data or string with specified size"""
...
def LoadMaterialDefault() -> Material:
"""Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)"""
...
@ -1951,13 +2014,19 @@ MOUSE_CURSOR_RESIZE_EW: int
MOUSE_CURSOR_RESIZE_NESW: int
MOUSE_CURSOR_RESIZE_NS: int
MOUSE_CURSOR_RESIZE_NWSE: int
def MakeDirectory(dirPath: str,) -> int:
"""Create directories (including full path requested), returns 0 on success"""
...
def MatrixAdd(left: Matrix,right: Matrix,) -> Matrix:
""""""
...
def MatrixDecompose(mat: Matrix,translation: Any,rotation: Any,scale: Any,) -> None:
""""""
...
def MatrixDeterminant(mat: Matrix,) -> float:
""""""
...
def MatrixFrustum(left: float,right: float,bottom: float,top: float,near: float,far: float,) -> Matrix:
def MatrixFrustum(left: float,right: float,bottom: float,top: float,nearPlane: float,farPlane: float,) -> Matrix:
""""""
...
def MatrixIdentity() -> Matrix:
@ -2111,6 +2180,9 @@ def QuaternionAdd(q1: Vector4,q2: Vector4,) -> Vector4:
def QuaternionAddValue(q: Vector4,add: float,) -> Vector4:
""""""
...
def QuaternionCubicHermiteSpline(q1: Vector4,outTangent1: Vector4,q2: Vector4,inTangent2: Vector4,t: float,) -> Vector4:
""""""
...
def QuaternionDivide(q1: Vector4,q2: Vector4,) -> Vector4:
""""""
...
@ -2276,6 +2348,10 @@ RL_SHADER_UNIFORM_IVEC2: int
RL_SHADER_UNIFORM_IVEC3: int
RL_SHADER_UNIFORM_IVEC4: int
RL_SHADER_UNIFORM_SAMPLER2D: int
RL_SHADER_UNIFORM_UINT: int
RL_SHADER_UNIFORM_UIVEC2: int
RL_SHADER_UNIFORM_UIVEC3: int
RL_SHADER_UNIFORM_UIVEC4: int
RL_SHADER_UNIFORM_VEC2: int
RL_SHADER_UNIFORM_VEC3: int
RL_SHADER_UNIFORM_VEC4: int
@ -2314,6 +2390,7 @@ SHADER_ATTRIB_FLOAT: int
SHADER_ATTRIB_VEC2: int
SHADER_ATTRIB_VEC3: int
SHADER_ATTRIB_VEC4: int
SHADER_LOC_BONE_MATRICES: int
SHADER_LOC_COLOR_AMBIENT: int
SHADER_LOC_COLOR_DIFFUSE: int
SHADER_LOC_COLOR_SPECULAR: int
@ -2334,6 +2411,8 @@ SHADER_LOC_MATRIX_NORMAL: int
SHADER_LOC_MATRIX_PROJECTION: int
SHADER_LOC_MATRIX_VIEW: int
SHADER_LOC_VECTOR_VIEW: int
SHADER_LOC_VERTEX_BONEIDS: int
SHADER_LOC_VERTEX_BONEWEIGHTS: int
SHADER_LOC_VERTEX_COLOR: int
SHADER_LOC_VERTEX_NORMAL: int
SHADER_LOC_VERTEX_POSITION: int
@ -2402,6 +2481,9 @@ def SetExitKey(key: int,) -> None:
def SetGamepadMappings(mappings: str,) -> int:
"""Set internal gamepad mappings (SDL_GameControllerDB)"""
...
def SetGamepadVibration(gamepad: int,leftMotor: float,rightMotor: float,) -> None:
"""Set gamepad vibration for both motors"""
...
def SetGesturesEnabled(flags: int,) -> None:
"""Enable a set of gestures using flags"""
...
@ -2627,6 +2709,12 @@ def TextSplit(text: str,delimiter: str,count: Any,) -> list[str]:
def TextSubtext(text: str,position: int,length: int,) -> str:
"""Get a piece of a text string"""
...
def TextToCamel(text: str,) -> str:
"""Get Camel case notation version of provided string"""
...
def TextToFloat(text: str,) -> float:
"""Get float value from text (negative values not supported)"""
...
def TextToInteger(text: str,) -> int:
"""Get integer value from text (negative values not supported)"""
...
@ -2636,14 +2724,17 @@ def TextToLower(text: str,) -> str:
def TextToPascal(text: str,) -> str:
"""Get Pascal case notation version of provided string"""
...
def TextToSnake(text: str,) -> str:
"""Get Snake case notation version of provided string"""
...
def TextToUpper(text: str,) -> str:
"""Get upper case version of provided string"""
...
def ToggleBorderlessWindowed() -> None:
"""Toggle window state: borderless windowed (only PLATFORM_DESKTOP)"""
"""Toggle window state: borderless windowed [resizes window to match monitor resolution] (only PLATFORM_DESKTOP)"""
...
def ToggleFullscreen() -> None:
"""Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)"""
"""Toggle window state: fullscreen/windowed [resizes monitor to match window resolution] (only PLATFORM_DESKTOP)"""
...
def TraceLog(*args) -> None:
"""VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""
@ -2651,7 +2742,7 @@ def TraceLog(*args) -> None:
def UnloadAudioStream(stream: AudioStream,) -> None:
"""Unload audio stream and free memory"""
...
def UnloadAutomationEventList(list_0: Any,) -> None:
def UnloadAutomationEventList(list_0: AutomationEventList,) -> None:
"""Unload automation events list from file"""
...
def UnloadCodepoints(codepoints: Any,) -> None:
@ -2747,6 +2838,9 @@ def UpdateMeshBuffer(mesh: Mesh,index: int,data: Any,dataSize: int,offset: int,)
def UpdateModelAnimation(model: Model,anim: ModelAnimation,frame: int,) -> None:
"""Update model animation pose"""
...
def UpdateModelAnimationBoneMatrices(model: Model,anim: ModelAnimation,frame: int,) -> None:
"""Update model animation mesh bone matrices (Note GPU skinning does not work on Mac)"""
...
def UpdateMusicStream(music: Music,) -> None:
"""Updates buffers for music streaming"""
...
@ -2811,6 +2905,12 @@ def Vector2Lerp(v1: Vector2,v2: Vector2,amount: float,) -> Vector2:
def Vector2LineAngle(start: Vector2,end: Vector2,) -> float:
""""""
...
def Vector2Max(v1: Vector2,v2: Vector2,) -> Vector2:
""""""
...
def Vector2Min(v1: Vector2,v2: Vector2,) -> Vector2:
""""""
...
def Vector2MoveTowards(v: Vector2,target: Vector2,maxDistance: float,) -> Vector2:
""""""
...
@ -2829,6 +2929,9 @@ def Vector2One() -> Vector2:
def Vector2Reflect(v: Vector2,normal: Vector2,) -> Vector2:
""""""
...
def Vector2Refract(v: Vector2,n: Vector2,r: float,) -> Vector2:
""""""
...
def Vector2Rotate(v: Vector2,angle: float,) -> Vector2:
""""""
...
@ -2868,6 +2971,9 @@ def Vector3ClampValue(v: Vector3,min_1: float,max_2: float,) -> Vector3:
def Vector3CrossProduct(v1: Vector3,v2: Vector3,) -> Vector3:
""""""
...
def Vector3CubicHermite(v1: Vector3,tangent1: Vector3,v2: Vector3,tangent2: Vector3,amount: float,) -> Vector3:
""""""
...
def Vector3Distance(v1: Vector3,v2: Vector3,) -> float:
""""""
...
@ -2901,6 +3007,9 @@ def Vector3Max(v1: Vector3,v2: Vector3,) -> Vector3:
def Vector3Min(v1: Vector3,v2: Vector3,) -> Vector3:
""""""
...
def Vector3MoveTowards(v: Vector3,target: Vector3,maxDistance: float,) -> Vector3:
""""""
...
def Vector3Multiply(v1: Vector3,v2: Vector3,) -> Vector3:
""""""
...
@ -2958,14 +3067,80 @@ def Vector3Unproject(source: Vector3,projection: Matrix,view: Matrix,) -> Vector
def Vector3Zero() -> Vector3:
""""""
...
def Vector4Add(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def Vector4AddValue(v: Vector4,add: float,) -> Vector4:
""""""
...
def Vector4Distance(v1: Vector4,v2: Vector4,) -> float:
""""""
...
def Vector4DistanceSqr(v1: Vector4,v2: Vector4,) -> float:
""""""
...
def Vector4Divide(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def Vector4DotProduct(v1: Vector4,v2: Vector4,) -> float:
""""""
...
def Vector4Equals(p: Vector4,q: Vector4,) -> int:
""""""
...
def Vector4Invert(v: Vector4,) -> Vector4:
""""""
...
def Vector4Length(v: Vector4,) -> float:
""""""
...
def Vector4LengthSqr(v: Vector4,) -> float:
""""""
...
def Vector4Lerp(v1: Vector4,v2: Vector4,amount: float,) -> Vector4:
""""""
...
def Vector4Max(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def Vector4Min(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def Vector4MoveTowards(v: Vector4,target: Vector4,maxDistance: float,) -> Vector4:
""""""
...
def Vector4Multiply(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def Vector4Negate(v: Vector4,) -> Vector4:
""""""
...
def Vector4Normalize(v: Vector4,) -> Vector4:
""""""
...
def Vector4One() -> Vector4:
""""""
...
def Vector4Scale(v: Vector4,scale: float,) -> Vector4:
""""""
...
def Vector4Subtract(v1: Vector4,v2: Vector4,) -> Vector4:
""""""
...
def Vector4SubtractValue(v: Vector4,add: float,) -> Vector4:
""""""
...
def Vector4Zero() -> Vector4:
""""""
...
def WaitTime(seconds: float,) -> None:
"""Wait for some time (halt program execution)"""
...
def WaveCopy(wave: Wave,) -> Wave:
"""Copy a wave to a new wave"""
...
def WaveCrop(wave: Any,initSample: int,finalSample: int,) -> None:
"""Crop a wave to defined samples range"""
def WaveCrop(wave: Any,initFrame: int,finalFrame: int,) -> None:
"""Crop a wave to defined frames range"""
...
def WaveFormat(wave: Any,sampleRate: int,sampleSize: int,channels: int,) -> None:
"""Convert wave data to desired format"""
@ -3132,6 +3307,9 @@ def glfwGetWindowPos(window: Any,xpos: Any,ypos: Any,) -> None:
def glfwGetWindowSize(window: Any,width: Any,height: Any,) -> None:
""""""
...
def glfwGetWindowTitle(window: Any,) -> str:
""""""
...
def glfwGetWindowUserPointer(window: Any,) -> Any:
""""""
...
@ -3342,6 +3520,9 @@ def rlActiveTextureSlot(slot: int,) -> None:
def rlBegin(mode: int,) -> None:
"""Initialize drawing mode (how to organize vertex)"""
...
def rlBindFramebuffer(target: int,framebuffer: int,) -> None:
"""Bind framebuffer (FBO)"""
...
def rlBindImageTexture(id: int,index: int,format: int,readonly: bool,) -> None:
"""Bind image texture"""
...
@ -3372,6 +3553,9 @@ def rlColor4f(x: float,y: float,z: float,w: float,) -> None:
def rlColor4ub(r: str,g: str,b: str,a: str,) -> None:
"""Define one vertex (color) - 4 byte"""
...
def rlColorMask(r: bool,g: bool,b: bool,a: bool,) -> None:
"""Color mask control"""
...
def rlCompileShader(shaderCode: str,type: int,) -> int:
"""Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER)"""
...
@ -3430,7 +3614,7 @@ def rlDisableVertexBufferElement() -> None:
"""Disable vertex buffer element (VBO element)"""
...
def rlDisableWireMode() -> None:
"""Disable wire mode ( and point ) maybe rename"""
"""Disable wire (and point) mode"""
...
def rlDrawRenderBatch(batch: Any,) -> None:
"""Draw render batch data (Update->Draw->Reset)"""
@ -3439,16 +3623,16 @@ def rlDrawRenderBatchActive() -> None:
"""Update and draw internal render batch"""
...
def rlDrawVertexArray(offset: int,count: int,) -> None:
""""""
"""Draw vertex array (currently active vao)"""
...
def rlDrawVertexArrayElements(offset: int,count: int,buffer: Any,) -> None:
""""""
"""Draw vertex array elements"""
...
def rlDrawVertexArrayElementsInstanced(offset: int,count: int,buffer: Any,instances: int,) -> None:
""""""
"""Draw vertex array elements with instancing"""
...
def rlDrawVertexArrayInstanced(offset: int,count: int,instances: int,) -> None:
""""""
"""Draw vertex array (currently active vao) with instancing"""
...
def rlEnableBackfaceCulling() -> None:
"""Enable backface culling"""
@ -3516,6 +3700,15 @@ def rlFrustum(left: float,right: float,bottom: float,top: float,znear: float,zfa
def rlGenTextureMipmaps(id: int,width: int,height: int,format: int,mipmaps: Any,) -> None:
"""Generate mipmap data for selected texture"""
...
def rlGetActiveFramebuffer() -> int:
"""Get the currently active render texture (fbo), 0 for default framebuffer"""
...
def rlGetCullDistanceFar() -> float:
"""Get cull plane distance far"""
...
def rlGetCullDistanceNear() -> float:
"""Get cull plane distance near"""
...
def rlGetFramebufferHeight() -> int:
"""Get default framebuffer height"""
...
@ -3582,7 +3775,7 @@ def rlLoadDrawQuad() -> None:
def rlLoadExtensions(loader: Any,) -> None:
"""Load OpenGL extensions (loader function required)"""
...
def rlLoadFramebuffer(width: int,height: int,) -> int:
def rlLoadFramebuffer() -> int:
"""Load an empty framebuffer"""
...
def rlLoadIdentity() -> None:
@ -3601,10 +3794,10 @@ def rlLoadShaderProgram(vShaderId: int,fShaderId: int,) -> int:
"""Load custom shader program"""
...
def rlLoadTexture(data: Any,width: int,height: int,format: int,mipmapCount: int,) -> int:
"""Load texture in GPU"""
"""Load texture data"""
...
def rlLoadTextureCubemap(data: Any,size: int,format: int,) -> int:
"""Load texture cubemap"""
"""Load texture cubemap data"""
...
def rlLoadTextureDepth(width: int,height: int,useRenderBuffer: bool,) -> int:
"""Load depth texture/renderbuffer (to be attached to fbo)"""
@ -3613,10 +3806,10 @@ def rlLoadVertexArray() -> int:
"""Load vertex array (vao) if supported"""
...
def rlLoadVertexBuffer(buffer: Any,size: int,dynamic: bool,) -> int:
"""Load a vertex buffer attribute"""
"""Load a vertex buffer object"""
...
def rlLoadVertexBufferElement(buffer: Any,size: int,dynamic: bool,) -> int:
"""Load a new attributes element buffer"""
"""Load vertex buffer elements object"""
...
def rlMatrixMode(mode: int,) -> None:
"""Choose the current matrix to be transformed"""
@ -3663,6 +3856,9 @@ def rlSetBlendFactorsSeparate(glSrcRGB: int,glDstRGB: int,glSrcAlpha: int,glDstA
def rlSetBlendMode(mode: int,) -> None:
"""Set blending mode"""
...
def rlSetClipPlanes(nearPlane: float,farPlane: float,) -> None:
"""Set clip planes distances"""
...
def rlSetCullFace(mode: int,) -> None:
"""Set face culling mode"""
...
@ -3699,20 +3895,23 @@ def rlSetTexture(id: int,) -> None:
def rlSetUniform(locIndex: int,value: Any,uniformType: int,count: int,) -> None:
"""Set shader value uniform"""
...
def rlSetUniformMatrices(locIndex: int,mat: Any,count: int,) -> None:
"""Set shader value matrices"""
...
def rlSetUniformMatrix(locIndex: int,mat: Matrix,) -> None:
"""Set shader value matrix"""
...
def rlSetUniformSampler(locIndex: int,textureId: int,) -> None:
"""Set shader value sampler"""
...
def rlSetVertexAttribute(index: int,compSize: int,type: int,normalized: bool,stride: int,pointer: Any,) -> None:
""""""
def rlSetVertexAttribute(index: int,compSize: int,type: int,normalized: bool,stride: int,offset: int,) -> None:
"""Set vertex attribute data configuration"""
...
def rlSetVertexAttributeDefault(locIndex: int,value: Any,attribType: int,count: int,) -> None:
"""Set vertex attribute default value"""
"""Set vertex attribute default value, when attribute to provided"""
...
def rlSetVertexAttributeDivisor(index: int,divisor: int,) -> None:
""""""
"""Set vertex attribute data divisor"""
...
def rlTexCoord2f(x: float,y: float,) -> None:
"""Define one vertex (texture coordinate) - 2 float"""
@ -3739,22 +3938,22 @@ def rlUnloadTexture(id: int,) -> None:
"""Unload texture from GPU memory"""
...
def rlUnloadVertexArray(vaoId: int,) -> None:
""""""
"""Unload vertex array (vao)"""
...
def rlUnloadVertexBuffer(vboId: int,) -> None:
""""""
"""Unload vertex buffer object"""
...
def rlUpdateShaderBuffer(id: int,data: Any,dataSize: int,offset: int,) -> None:
"""Update SSBO buffer data"""
...
def rlUpdateTexture(id: int,offsetX: int,offsetY: int,width: int,height: int,format: int,data: Any,) -> None:
"""Update GPU texture with new data"""
"""Update texture with new data on GPU"""
...
def rlUpdateVertexBuffer(bufferId: int,data: Any,dataSize: int,offset: int,) -> None:
"""Update GPU buffer with new data"""
"""Update vertex buffer object data on GPU buffer"""
...
def rlUpdateVertexBufferElements(id: int,data: Any,dataSize: int,offset: int,) -> None:
"""Update vertex buffer elements with new data"""
"""Update vertex buffer elements data on GPU buffer"""
...
def rlVertex2f(x: float,y: float,) -> None:
"""Define one vertex (position) - 2 float"""

View file

@ -1,9 +1,9 @@
import raylib
RAYLIB_VERSION_MAJOR: int = 5
RAYLIB_VERSION_MINOR: int = 0
RAYLIB_VERSION_MINOR: int = 5
RAYLIB_VERSION_PATCH: int = 0
RAYLIB_VERSION: str = "5.0"
RAYLIB_VERSION: str = "5.5-dev"
PI: float = 3.141592653589793
DEG2RAD = PI / 180.0
RAD2DEG = 180.0 / PI
@ -18,7 +18,7 @@ PI: float = 3.141592653589793
EPSILON: float = 1e-06
DEG2RAD = PI / 180.0
RAD2DEG = 180.0 / PI
RLGL_VERSION: str = "4.5"
RLGL_VERSION: str = "5.0"
RL_DEFAULT_BATCH_BUFFER_ELEMENTS: int = 8192
RL_DEFAULT_BATCH_BUFFERS: int = 1
RL_DEFAULT_BATCH_DRAWCALLS: int = 256
@ -89,6 +89,17 @@ RL_BLEND_SRC_RGB: int = 32969
RL_BLEND_DST_ALPHA: int = 32970
RL_BLEND_SRC_ALPHA: int = 32971
RL_BLEND_COLOR: int = 32773
RL_READ_FRAMEBUFFER: int = 36008
RL_DRAW_FRAMEBUFFER: int = 36009
RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION: int = 0
RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD: int = 1
RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL: int = 2
RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR: int = 3
RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT: int = 4
RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2: int = 5
RL_DEFAULT_SHADER_ATTRIB_LOCATION_INDICES: int = 6
RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS: int = 7
RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS: int = 8
RL_SHADER_LOC_MAP_DIFFUSE = raylib.RL_SHADER_LOC_MAP_ALBEDO
RL_SHADER_LOC_MAP_SPECULAR = raylib.RL_SHADER_LOC_MAP_METALNESS
PI: float = 3.141592653589793
@ -108,6 +119,8 @@ GL_COMPRESSED_RGBA_ASTC_4x4_KHR: int = 37808
GL_COMPRESSED_RGBA_ASTC_8x8_KHR: int = 37815
GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: int = 34047
GL_TEXTURE_MAX_ANISOTROPY_EXT: int = 34046
GL_PROGRAM_POINT_SIZE: int = 34370
GL_LINE_WIDTH: int = 2849
GL_UNSIGNED_SHORT_5_6_5: int = 33635
GL_UNSIGNED_SHORT_5_5_5_1: int = 32820
GL_UNSIGNED_SHORT_4_4_4_4: int = 32819
@ -119,19 +132,22 @@ RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL: str = "vertexNormal"
RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR: str = "vertexColor"
RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT: str = "vertexTangent"
RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2: str = "vertexTexCoord2"
RL_DEFAULT_SHADER_ATTRIB_NAME_BONEIDS: str = "vertexBoneIds"
RL_DEFAULT_SHADER_ATTRIB_NAME_BONEWEIGHTS: str = "vertexBoneWeights"
RL_DEFAULT_SHADER_UNIFORM_NAME_MVP: str = "mvp"
RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW: str = "matView"
RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION: str = "matProjection"
RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL: str = "matModel"
RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL: str = "matNormal"
RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR: str = "colDiffuse"
RL_DEFAULT_SHADER_UNIFORM_NAME_BONE_MATRICES: str = "boneMatrices"
RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0: str = "texture0"
RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1: str = "texture1"
RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2: str = "texture2"
RAYGUI_VERSION_MAJOR: int = 4
RAYGUI_VERSION_MINOR: int = 0
RAYGUI_VERSION_MINOR: int = 5
RAYGUI_VERSION_PATCH: int = 0
RAYGUI_VERSION: str = "4.0"
RAYGUI_VERSION: str = "4.5-dev"
SCROLLBAR_LEFT_SIDE: int = 0
SCROLLBAR_RIGHT_SIDE: int = 1
RAYGUI_ICON_SIZE: int = 16
@ -155,6 +171,7 @@ RAYGUI_PANEL_BORDER_WIDTH: int = 1
RAYGUI_TABBAR_ITEM_WIDTH: int = 160
RAYGUI_MIN_SCROLLBAR_WIDTH: int = 40
RAYGUI_MIN_SCROLLBAR_HEIGHT: int = 40
RAYGUI_MIN_MOUSE_WHEEL_SPEED: int = 20
RAYGUI_TOGGLEGROUP_MAX_ITEMS: int = 32
RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN: int = 40
RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY: int = 1
@ -429,12 +446,14 @@ GLFW_CONTEXT_RELEASE_BEHAVIOR: int = 139273
GLFW_CONTEXT_NO_ERROR: int = 139274
GLFW_CONTEXT_CREATION_API: int = 139275
GLFW_SCALE_TO_MONITOR: int = 139276
GLFW_SCALE_FRAMEBUFFER: int = 139277
GLFW_COCOA_RETINA_FRAMEBUFFER: int = 143361
GLFW_COCOA_FRAME_NAME: int = 143362
GLFW_COCOA_GRAPHICS_SWITCHING: int = 143363
GLFW_X11_CLASS_NAME: int = 147457
GLFW_X11_INSTANCE_NAME: int = 147458
GLFW_WIN32_KEYBOARD_MENU: int = 151553
GLFW_WIN32_SHOWDEFAULT: int = 151554
GLFW_WAYLAND_APP_ID: int = 155649
GLFW_NO_API: int = 0
GLFW_OPENGL_API: int = 196609
@ -467,6 +486,8 @@ GLFW_ANGLE_PLATFORM_TYPE_D3D9: int = 225284
GLFW_ANGLE_PLATFORM_TYPE_D3D11: int = 225285
GLFW_ANGLE_PLATFORM_TYPE_VULKAN: int = 225287
GLFW_ANGLE_PLATFORM_TYPE_METAL: int = 225288
GLFW_WAYLAND_PREFER_LIBDECOR: int = 229377
GLFW_WAYLAND_DISABLE_LIBDECOR: int = 229378
GLFW_ANY_POSITION: int = 2147483648
GLFW_ARROW_CURSOR: int = 221185
GLFW_IBEAM_CURSOR: int = 221186
@ -486,6 +507,7 @@ GLFW_PLATFORM: int = 327683
GLFW_COCOA_CHDIR_RESOURCES: int = 331777
GLFW_COCOA_MENUBAR: int = 331778
GLFW_X11_XCB_VULKAN_SURFACE: int = 335873
GLFW_WAYLAND_LIBDECOR: int = 339969
GLFW_ANY_PLATFORM: int = 393216
GLFW_PLATFORM_WIN32: int = 393217
GLFW_PLATFORM_COCOA: int = 393218

View file

@ -136,7 +136,7 @@ class KeyboardKey(IntEnum):
KEY_KP_ENTER = 335
KEY_KP_EQUAL = 336
KEY_BACK = 4
KEY_MENU = 82
KEY_MENU = 5
KEY_VOLUME_UP = 24
KEY_VOLUME_DOWN = 25
@ -230,6 +230,9 @@ class ShaderLocationIndex(IntEnum):
SHADER_LOC_MAP_IRRADIANCE = 23
SHADER_LOC_MAP_PREFILTER = 24
SHADER_LOC_MAP_BRDF = 25
SHADER_LOC_VERTEX_BONEIDS = 26
SHADER_LOC_VERTEX_BONEWEIGHTS = 27
SHADER_LOC_BONE_MATRICES = 28
class ShaderUniformDataType(IntEnum):
SHADER_UNIFORM_FLOAT = 0
@ -433,6 +436,8 @@ class GuiComboBoxProperty(IntEnum):
class GuiDropdownBoxProperty(IntEnum):
ARROW_PADDING = 16
DROPDOWN_ITEMS_SPACING = 17
DROPDOWN_ARROW_HIDDEN = 18
DROPDOWN_ROLL_UP = 19
class GuiTextBoxProperty(IntEnum):
TEXT_READONLY = 16
@ -446,6 +451,7 @@ class GuiListViewProperty(IntEnum):
LIST_ITEMS_SPACING = 17
SCROLLBAR_WIDTH = 18
SCROLLBAR_SIDE = 19
LIST_ITEMS_BORDER_WIDTH = 20
class GuiColorPickerProperty(IntEnum):
COLOR_SELECTOR_SIZE = 16
@ -675,15 +681,15 @@ class GuiIconName(IntEnum):
ICON_FOLDER = 217
ICON_FILE = 218
ICON_SAND_TIMER = 219
ICON_220 = 220
ICON_221 = 221
ICON_222 = 222
ICON_223 = 223
ICON_224 = 224
ICON_225 = 225
ICON_226 = 226
ICON_227 = 227
ICON_228 = 228
ICON_WARNING = 220
ICON_HELP_BOX = 221
ICON_INFO_BOX = 222
ICON_PRIORITY = 223
ICON_LAYERS_ISO = 224
ICON_LAYERS2 = 225
ICON_MLAYERS = 226
ICON_MAPS = 227
ICON_HOT = 228
ICON_229 = 229
ICON_230 = 230
ICON_231 = 231

View file

@ -169,9 +169,11 @@
*
* @ingroup input
* @{ */
/*! @ingroup input
*/
/*! @} */
/*! @defgroup keys Keyboard keys
* @brief Keyboard key IDs.
/*! @defgroup keys Keyboard key tokens
* @brief Keyboard key tokens.
*
* See [key input](@ref input_key) for how these are used.
*
@ -193,7 +195,6 @@
* @ingroup input
* @{
*/
/* The unknown key */
/* Printable keys */
/* Function keys */
/*! @} */
@ -420,11 +421,11 @@
*/
/*! @brief Platform unavailable or no matching platform was found.
*
* If emitted during initialization, no matching platform was found. If @ref
* GLFW_PLATFORM is set to `GLFW_ANY_PLATFORM`, GLFW could not detect any of the
* platforms supported by this library binary, except for the Null platform. If set to
* a specific platform, it is either not supported by this library binary or GLFW was not
* able to detect it.
* If emitted during initialization, no matching platform was found. If the @ref
* GLFW_PLATFORM init hint was set to `GLFW_ANY_PLATFORM`, GLFW could not detect any of
* the platforms supported by this library binary, except for the Null platform. If the
* init hint was set to a specific platform, it is either not supported by this library
* binary or GLFW was not able to detect it.
*
* If emitted by a native access function, GLFW was initialized for a different platform
* than the function is for.
@ -640,8 +641,14 @@
/*! @brief Window content area scaling window
* [window hint](@ref GLFW_SCALE_TO_MONITOR).
*/
/*! @brief macOS specific
* [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint).
/*! @brief Window framebuffer scaling
* [window hint](@ref GLFW_SCALE_FRAMEBUFFER_hint).
*/
/*! @brief Legacy name for compatibility.
*
* This is an alias for the
* [GLFW_SCALE_FRAMEBUFFER](@ref GLFW_SCALE_FRAMEBUFFER_hint) window hint for
* compatibility with earlier versions.
*/
/*! @brief macOS specific
* [window hint](@ref GLFW_COCOA_FRAME_NAME_hint).
@ -655,6 +662,8 @@
/*! @brief X11 specific
* [window hint](@ref GLFW_X11_CLASS_NAME_hint).
*/
/*! @brief Win32 specific [window hint](@ref GLFW_WIN32_SHOWDEFAULT_hint).
*/
/*! @brief Wayland specific
* [window hint](@ref GLFW_WAYLAND_APP_ID_hint).
*
@ -703,11 +712,11 @@
* @note @macos This shape is provided by a private system API and may fail
* with @ref GLFW_CURSOR_UNAVAILABLE in the future.
*
* @note @x11 This shape is provided by a newer standard not supported by all
* cursor themes.
*
* @note @wayland This shape is provided by a newer standard not supported by
* all cursor themes.
*
* @note @x11 This shape is provided by a newer standard not supported by all
* cursor themes.
*/
/*! @brief The top-right to bottom-left diagonal resize/move arrow shape.
*
@ -717,11 +726,11 @@
* @note @macos This shape is provided by a private system API and may fail
* with @ref GLFW_CURSOR_UNAVAILABLE in the future.
*
* @note @x11 This shape is provided by a newer standard not supported by all
* cursor themes.
*
* @note @wayland This shape is provided by a newer standard not supported by
* all cursor themes.
*
* @note @x11 This shape is provided by a newer standard not supported by all
* cursor themes.
*/
/*! @brief The omni-directional resize/move cursor shape.
*
@ -733,11 +742,11 @@
* The operation-not-allowed shape. This is usually a circle with a diagonal
* line through it.
*
* @note @x11 This shape is provided by a newer standard not supported by all
* cursor themes.
*
* @note @wayland This shape is provided by a newer standard not supported by
* all cursor themes.
*
* @note @x11 This shape is provided by a newer standard not supported by all
* cursor themes.
*/
/*! @brief Legacy name for compatibility.
*
@ -778,6 +787,10 @@
*
* X11 specific [init hint](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint).
*/
/*! @brief Wayland specific init hint.
*
* Wayland specific [init hint](@ref GLFW_WAYLAND_LIBDECOR_hint).
*/
/*! @} */
/*! @addtogroup init
* @{ */
@ -860,16 +873,25 @@ typedef struct GLFWcursor GLFWcursor;
* or `NULL` if allocation failed. Note that not all parts of GLFW handle allocation
* failures gracefully yet.
*
* This function may be called during @ref glfwInit but before the library is
* flagged as initialized, as well as during @ref glfwTerminate after the
* library is no longer flagged as initialized.
* This function must support being called during @ref glfwInit but before the library is
* flagged as initialized, as well as during @ref glfwTerminate after the library is no
* longer flagged as initialized.
*
* Any memory allocated by this function will be deallocated during library
* termination or earlier.
* Any memory allocated via this function will be deallocated via the same allocator
* during library termination or earlier.
*
* Any memory allocated via this function must be suitably aligned for any object type.
* If you are using C99 or earlier, this alignment is platform-dependent but will be the
* same as what `malloc` provides. If you are using C11 or later, this is the value of
* `alignof(max_align_t)`.
*
* The size will always be greater than zero. Allocations of size zero are filtered out
* before reaching the custom allocator.
*
* If this function returns `NULL`, GLFW will emit @ref GLFW_OUT_OF_MEMORY.
*
* This function must not call any GLFW function.
*
* @param[in] size The minimum size, in bytes, of the memory block.
* @param[in] user The user-defined pointer from the allocator.
* @return The address of the newly allocated memory block, or `NULL` if an
@ -880,7 +902,8 @@ typedef struct GLFWcursor GLFWcursor;
*
* @reentrancy This function should not call any GLFW function.
*
* @thread_safety This function may be called from any thread that calls GLFW functions.
* @thread_safety This function must support being called from any thread that calls GLFW
* functions.
*
* @sa @ref init_allocator
* @sa @ref GLFWallocator
@ -902,16 +925,26 @@ typedef void* (* GLFWallocatefun)(size_t size, void* user);
* `NULL` if allocation failed. Note that not all parts of GLFW handle allocation
* failures gracefully yet.
*
* This function may be called during @ref glfwInit but before the library is
* flagged as initialized, as well as during @ref glfwTerminate after the
* library is no longer flagged as initialized.
* This function must support being called during @ref glfwInit but before the library is
* flagged as initialized, as well as during @ref glfwTerminate after the library is no
* longer flagged as initialized.
*
* Any memory allocated by this function will be deallocated during library
* termination or earlier.
* Any memory allocated via this function will be deallocated via the same allocator
* during library termination or earlier.
*
* Any memory allocated via this function must be suitably aligned for any object type.
* If you are using C99 or earlier, this alignment is platform-dependent but will be the
* same as what `realloc` provides. If you are using C11 or later, this is the value of
* `alignof(max_align_t)`.
*
* The block address will never be `NULL` and the size will always be greater than zero.
* Reallocations of a block to size zero are converted into deallocations. Reallocations
* of `NULL` to a non-zero size are converted into regular allocations.
* Reallocations of a block to size zero are converted into deallocations before reaching
* the custom allocator. Reallocations of `NULL` to a non-zero size are converted into
* regular allocations before reaching the custom allocator.
*
* If this function returns `NULL`, GLFW will emit @ref GLFW_OUT_OF_MEMORY.
*
* This function must not call any GLFW function.
*
* @param[in] block The address of the memory block to reallocate.
* @param[in] size The new minimum size, in bytes, of the memory block.
@ -924,7 +957,8 @@ typedef void* (* GLFWallocatefun)(size_t size, void* user);
*
* @reentrancy This function should not call any GLFW function.
*
* @thread_safety This function may be called from any thread that calls GLFW functions.
* @thread_safety This function must support being called from any thread that calls GLFW
* functions.
*
* @sa @ref init_allocator
* @sa @ref GLFWallocator
@ -945,13 +979,17 @@ typedef void* (* GLFWreallocatefun)(void* block, size_t size, void* user);
* This function may deallocate the specified memory block. This memory block
* will have been allocated with the same allocator.
*
* This function may be called during @ref glfwInit but before the library is
* flagged as initialized, as well as during @ref glfwTerminate after the
* library is no longer flagged as initialized.
* This function must support being called during @ref glfwInit but before the library is
* flagged as initialized, as well as during @ref glfwTerminate after the library is no
* longer flagged as initialized.
*
* The block address will never be `NULL`. Deallocations of `NULL` are filtered out
* before reaching the custom allocator.
*
* If this function returns `NULL`, GLFW will emit @ref GLFW_OUT_OF_MEMORY.
*
* This function must not call any GLFW function.
*
* @param[in] block The address of the memory block to deallocate.
* @param[in] user The user-defined pointer from the allocator.
*
@ -960,7 +998,8 @@ typedef void* (* GLFWreallocatefun)(void* block, size_t size, void* user);
*
* @reentrancy This function should not call any GLFW function.
*
* @thread_safety This function may be called from any thread that calls GLFW functions.
* @thread_safety This function must support being called from any thread that calls GLFW
* functions.
*
* @sa @ref init_allocator
* @sa @ref GLFWallocator
@ -1503,7 +1542,10 @@ typedef struct GLFWgamepadstate
*/
float axes[6];
} GLFWgamepadstate;
/*! @brief
/*! @brief Custom heap memory allocator.
*
* This describes a custom heap memory allocator for GLFW. To set an allocator, pass it
* to @ref glfwInitAllocator before initializing the library.
*
* @sa @ref init_allocator
* @sa @ref glfwInitAllocator
@ -1514,9 +1556,21 @@ typedef struct GLFWgamepadstate
*/
typedef struct GLFWallocator
{
/*! The memory allocation function. See @ref GLFWallocatefun for details about
* allocation function.
*/
GLFWallocatefun allocate;
/*! The memory reallocation function. See @ref GLFWreallocatefun for details about
* reallocation function.
*/
GLFWreallocatefun reallocate;
/*! The memory deallocation function. See @ref GLFWdeallocatefun for details about
* deallocation function.
*/
GLFWdeallocatefun deallocate;
/*! The user pointer for this custom allocator. This value will be passed to the
* allocator functions.
*/
void* user;
} GLFWallocator;
/*************************************************************************
@ -1558,6 +1612,13 @@ typedef struct GLFWallocator
* and dock icon can be disabled entirely with the @ref GLFW_COCOA_MENUBAR init
* hint.
*
* @remark __Wayland, X11:__ If the library was compiled with support for both
* Wayland and X11, and the @ref GLFW_PLATFORM init hint is set to
* `GLFW_ANY_PLATFORM`, the `XDG_SESSION_TYPE` environment variable affects
* which platform is picked. If the environment variable is not set, or is set
* to something other than `wayland` or `x11`, the regular detection mechanism
* will be used instead.
*
* @remark @x11 This function will set the `LC_CTYPE` category of the
* application locale according to the current environment if that category is
* still "C". This is because the "C" locale breaks Unicode text input.
@ -1643,8 +1704,12 @@ typedef struct GLFWallocator
* To use the default allocator, call this function with a `NULL` argument.
*
* If you specify an allocator struct, every member must be a valid function
* pointer. If any member is `NULL`, this function emits @ref
* GLFW_INVALID_VALUE and the init allocator is unchanged.
* pointer. If any member is `NULL`, this function will emit @ref
* GLFW_INVALID_VALUE and the init allocator will be unchanged.
*
* The functions in the allocator must fulfil a number of requirements. See the
* documentation for @ref GLFWallocatefun, @ref GLFWreallocatefun and @ref
* GLFWdeallocatefun for details.
*
* @param[in] allocator The allocator to use at the next initialization, or
* `NULL` to use the default one.
@ -1952,9 +2017,10 @@ typedef struct GLFWallocator
* specified monitor.
*
* Some platforms do not provide accurate monitor size information, either
* because the monitor
* [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data)
* data is incorrect or because the driver does not report it accurately.
* because the monitor [EDID][] data is incorrect or because the driver does
* not report it accurately.
*
* [EDID]: https://en.wikipedia.org/wiki/Extended_display_identification_data
*
* Any or all of the size arguments may be `NULL`. If an error occurs, all
* non-`NULL` size arguments will be set to zero.
@ -2000,6 +2066,9 @@ typedef struct GLFWallocator
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
* GLFW_PLATFORM_ERROR.
*
* @remark @wayland Fractional scaling information is not yet available for
* monitors, so this function only returns integer content scales.
*
* @thread_safety This function must only be called from the main thread.
*
* @sa @ref monitor_scale
@ -2189,11 +2258,11 @@ typedef struct GLFWallocator
* @param[in] monitor The monitor whose gamma ramp to set.
* @param[in] gamma The desired exponent.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
* GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_INVALID_VALUE,
* @ref GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
*
* @remark @wayland Gamma handling is a privileged protocol, this function
* will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR.
* will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE.
*
* @thread_safety This function must only be called from the main thread.
*
@ -2212,11 +2281,11 @@ typedef struct GLFWallocator
* @return The current gamma ramp, or `NULL` if an
* [error](@ref error_handling) occurred.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
* GLFW_PLATFORM_ERROR.
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR
* and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
*
* @remark @wayland Gamma handling is a privileged protocol, this function
* will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while
* will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE while
* returning `NULL`.
*
* @pointer_lifetime The returned structure and its arrays are allocated and
@ -2250,8 +2319,8 @@ typedef struct GLFWallocator
* @param[in] monitor The monitor whose gamma ramp to set.
* @param[in] ramp The gamma ramp to use.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
* GLFW_PLATFORM_ERROR.
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR
* and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
*
* @remark The size of the specified gamma ramp should match the size of the
* current ramp for that monitor.
@ -2259,7 +2328,7 @@ typedef struct GLFWallocator
* @remark @win32 The gamma ramp size must be 256.
*
* @remark @wayland Gamma handling is a privileged protocol, this function
* will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR.
* will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE.
*
* @pointer_lifetime The specified gamma ramp is copied before this function
* returns.
@ -2427,8 +2496,8 @@ typedef struct GLFWallocator
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
* GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref
* GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref
* GLFW_PLATFORM_ERROR.
* GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE, @ref
* GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
*
* @remark @win32 Window creation will fail if the Microsoft GDI software
* OpenGL implementation is the only one available.
@ -2450,23 +2519,35 @@ typedef struct GLFWallocator
* @remark @macos The GLFW window has no icon, as it is not a document
* window, but the dock icon will be the same as the application bundle's icon.
* For more information on bundles, see the
* [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
* in the Mac Developer Library.
* [Bundle Programming Guide][bundle-guide] in the Mac Developer Library.
*
* [bundle-guide]: https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/
*
* @remark @macos On OS X 10.10 and later the window frame will not be rendered
* at full resolution on Retina displays unless the
* [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)
* [GLFW_SCALE_FRAMEBUFFER](@ref GLFW_SCALE_FRAMEBUFFER_hint)
* hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the
* application bundle's `Info.plist`. For more information, see
* [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html)
* in the Mac Developer Library. The GLFW test and example programs use
* a custom `Info.plist` template for this, which can be found as
* `CMake/Info.plist.in` in the source tree.
* [High Resolution Guidelines for OS X][hidpi-guide] in the Mac Developer
* Library. The GLFW test and example programs use a custom `Info.plist`
* template for this, which can be found as `CMake/Info.plist.in` in the source
* tree.
*
* [hidpi-guide]: https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html
*
* @remark @macos When activating frame autosaving with
* [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified
* window size and position may be overridden by previously saved values.
*
* @remark @wayland GLFW uses [libdecor][] where available to create its window
* decorations. This in turn uses server-side XDG decorations where available
* and provides high quality client-side decorations on compositors like GNOME.
* If both XDG decorations and libdecor are unavailable, GLFW falls back to
* a very simple set of window decorations that only support moving, resizing
* and the window manager's right-click menu.
*
* [libdecor]: https://gitlab.freedesktop.org/libdecor/libdecor
*
* @remark @x11 Some window managers will not respect the placement of
* initially hidden windows.
*
@ -2483,20 +2564,6 @@ typedef struct GLFWallocator
* [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to
* override this.
*
* @remark @wayland Compositors should implement the xdg-decoration protocol
* for GLFW to decorate the window properly. If this protocol isn't
* supported, or if the compositor prefers client-side decorations, a very
* simple fallback frame will be drawn using the wp_viewporter protocol. A
* compositor can still emit close, maximize or fullscreen events, using for
* instance a keybind mechanism. If neither of these protocols is supported,
* the window won't be decorated.
*
* @remark @wayland A full screen window will not attempt to change the mode,
* no matter what the requested size or refresh rate.
*
* @remark @wayland Screensaver inhibition requires the idle-inhibit protocol
* to be implemented in the user's compositor.
*
* @thread_safety This function must only be called from the main thread.
*
* @sa @ref window_creation
@ -2575,6 +2642,37 @@ typedef struct GLFWallocator
* @ingroup window
*/
void glfwSetWindowShouldClose(GLFWwindow* window, int value);
/*! @brief Returns the title of the specified window.
*
* This function returns the window title, encoded as UTF-8, of the specified
* window. This is the title set previously by @ref glfwCreateWindow
* or @ref glfwSetWindowTitle.
*
* @param[in] window The window to query.
* @return The UTF-8 encoded window title, or `NULL` if an
* [error](@ref error_handling) occurred.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
*
* @remark The returned title is currently a copy of the title last set by @ref
* glfwCreateWindow or @ref glfwSetWindowTitle. It does not include any
* additional text which may be appended by the platform or another program.
*
* @pointer_lifetime The returned string is allocated and freed by GLFW. You
* should not free it yourself. It is valid until the next call to @ref
* glfwGetWindowTitle or @ref glfwSetWindowTitle, or until the library is
* terminated.
*
* @thread_safety This function must only be called from the main thread.
*
* @sa @ref window_title
* @sa @ref glfwSetWindowTitle
*
* @since Added in version 3.4.
*
* @ingroup window
*/
const char* glfwGetWindowTitle(GLFWwindow* window);
/*! @brief Sets the title of the specified window.
*
* This function sets the window title, encoded as UTF-8, of the specified
@ -2592,6 +2690,7 @@ typedef struct GLFWallocator
* @thread_safety This function must only be called from the main thread.
*
* @sa @ref window_title
* @sa @ref glfwGetWindowTitle
*
* @since Added in version 1.0.
* @glfw3 Added window handle parameter.
@ -2630,8 +2729,9 @@ typedef struct GLFWallocator
* @remark @macos Regular windows do not have icons on macOS. This function
* will emit @ref GLFW_FEATURE_UNAVAILABLE. The dock icon will be the same as
* the application bundle's icon. For more information on bundles, see the
* [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
* in the Mac Developer Library.
* [Bundle Programming Guide][bundle-guide] in the Mac Developer Library.
*
* [bundle-guide]: https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/
*
* @remark @wayland There is no existing protocol to change an icon, the
* window will thus inherit the one defined in the application's desktop file.
@ -2849,9 +2949,6 @@ typedef struct GLFWallocator
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
* GLFW_PLATFORM_ERROR.
*
* @remark @wayland A full screen window will not attempt to change the mode,
* no matter what the requested size.
*
* @thread_safety This function must only be called from the main thread.
*
* @sa @ref window_size
@ -3172,11 +3269,11 @@ typedef struct GLFWallocator
*
* @param[in] window The window to give input focus.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
* GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
* GLFW_PLATFORM_ERROR.
*
* @remark @wayland It is not possible for an application to set the input
* focus. This function will emit @ref GLFW_FEATURE_UNAVAILABLE.
* @remark @wayland The compositor will likely ignore focus requests unless
* another window created by the same application already has input focus.
*
* @thread_safety This function must only be called from the main thread.
*
@ -3278,9 +3375,6 @@ typedef struct GLFWallocator
* @remark @wayland The desired window position is ignored, as there is no way
* for an application to set this property.
*
* @remark @wayland Setting the window to full screen will not attempt to
* change the mode, no matter what the requested size or refresh rate.
*
* @thread_safety This function must only be called from the main thread.
*
* @sa @ref window_monitor
@ -3351,11 +3445,15 @@ typedef struct GLFWallocator
* @param[in] value `GLFW_TRUE` or `GLFW_FALSE`.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
* GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
* GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref
* GLFW_FEATURE_UNAVAILABLE (see remarks).
*
* @remark Calling @ref glfwGetWindowAttrib will always return the latest
* value, even if that value is ignored by the current mode of the window.
*
* @remark @wayland The [GLFW_FLOATING](@ref GLFW_FLOATING_attrib) window attribute is
* not supported. Setting this will emit @ref GLFW_FEATURE_UNAVAILABLE.
*
* @thread_safety This function must only be called from the main thread.
*
* @sa @ref window_attribs
@ -4011,8 +4109,8 @@ typedef struct GLFWallocator
* @param[in] scancode The scancode of the key to query.
* @return The UTF-8 encoded, layout-specific name of the key, or `NULL`.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
* GLFW_PLATFORM_ERROR.
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
* GLFW_INVALID_VALUE, @ref GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
*
* @remark The contents of the returned string may change when a keyboard
* layout change event is received.
@ -4033,15 +4131,18 @@ typedef struct GLFWallocator
*
* This function returns the platform-specific scancode of the specified key.
*
* If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this
* method will return `-1`.
* If the specified [key token](@ref keys) corresponds to a physical key not
* supported on the current platform then this method will return `-1`.
* Calling this function with anything other than a key token will return `-1`
* and generate a @ref GLFW_INVALID_ENUM error.
*
* @param[in] key Any [named key](@ref keys).
* @return The platform-specific scancode for the key, or `-1` if an
* [error](@ref error_handling) occurred.
* @param[in] key Any [key token](@ref keys).
* @return The platform-specific scancode for the key, or `-1` if the key is
* not supported on the current platform or an [error](@ref error_handling)
* occurred.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
* GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
* GLFW_INVALID_ENUM.
*
* @thread_safety This function may be called from any thread.
*
@ -4178,11 +4279,11 @@ typedef struct GLFWallocator
* @param[in] ypos The desired y-coordinate, relative to the top edge of the
* content area.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
* GLFW_PLATFORM_ERROR.
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
* GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks).
*
* @remark @wayland This function will only work when the cursor mode is
* `GLFW_CURSOR_DISABLED`, otherwise it will do nothing.
* `GLFW_CURSOR_DISABLED`, otherwise it will emit @ref GLFW_FEATURE_UNAVAILABLE.
*
* @thread_safety This function must only be called from the main thread.
*
@ -4341,9 +4442,9 @@ typedef struct GLFWallocator
* [character callback](@ref glfwSetCharCallback) instead.
*
* When a window loses input focus, it will generate synthetic key release
* events for all pressed keys. You can tell these events from user-generated
* events by the fact that the synthetic ones are generated after the focus
* loss event has been processed, i.e. after the
* events for all pressed keys with associated key tokens. You can tell these
* events from user-generated events by the fact that the synthetic ones are
* generated after the focus loss event has been processed, i.e. after the
* [window focus callback](@ref glfwSetWindowFocusCallback) has been called.
*
* The scancode of a key is specific to that platform or sometimes even to that
@ -4617,8 +4718,6 @@ typedef struct GLFWallocator
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
*
* @remark @wayland File drop is currently unimplemented.
*
* @thread_safety This function must only be called from the main thread.
*
* @sa @ref path_drop
@ -5071,6 +5170,11 @@ typedef struct GLFWallocator
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
* GLFW_PLATFORM_ERROR.
*
* @remark @win32 The clipboard on Windows has a single global lock for reading and
* writing. GLFW tries to acquire it a few times, which is almost always enough. If it
* cannot acquire the lock then this function emits @ref GLFW_PLATFORM_ERROR and returns.
* It is safe to try this multiple times.
*
* @pointer_lifetime The specified string is copied before this function
* returns.
*
@ -5098,6 +5202,11 @@ typedef struct GLFWallocator
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
* GLFW_FORMAT_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.
*
* @remark @win32 The clipboard on Windows has a single global lock for reading and
* writing. GLFW tries to acquire it a few times, which is almost always enough. If it
* cannot acquire the lock then this function emits @ref GLFW_PLATFORM_ERROR and returns.
* It is safe to try this multiple times.
*
* @pointer_lifetime The returned string is allocated and freed by GLFW. You
* should not free it yourself. It is valid until the next call to @ref
* glfwGetClipboardString or @ref glfwSetClipboardString, or until the library
@ -5215,12 +5324,15 @@ typedef struct GLFWallocator
* thread.
*
* This function makes the OpenGL or OpenGL ES context of the specified window
* current on the calling thread. A context must only be made current on
* a single thread at a time and each thread can have only a single current
* context at a time.
* current on the calling thread. It can also detach the current context from
* the calling thread without making a new one current by passing in `NULL`.
*
* When moving a context between threads, you must make it non-current on the
* old thread before making it current on the new one.
* A context must only be made current on a single thread at a time and each
* thread can have only a single current context at a time. Making a context
* current detaches any previously current context on the calling thread.
*
* When moving a context between threads, you must detach it (make it
* non-current) on the old thread before making it current on the new one.
*
* By default, making a context non-current implicitly forces a pipeline flush.
* On machines that support `GL_KHR_context_flush_control`, you can control
@ -5235,6 +5347,10 @@ typedef struct GLFWallocator
* @param[in] window The window whose context to make current, or `NULL` to
* detach the current context.
*
* @remarks If the previously current context was created via a different
* context creation API than the one passed to this function, GLFW will still
* detach the previous one from its API before making the new one current.
*
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
* GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
*

View file

@ -21,7 +21,7 @@ model.materials.maps[pr.MaterialMapIndex.MATERIAL_MAP_ALBEDO].texture = texture
pr.unload_image(image)
pos = pr.get_mouse_position()
ray = pr.get_mouse_ray(pos, camera)
ray = pr.get_screen_to_world_ray(pos, camera)
#rayhit = pr.get_ray_collision_ground(ray, 0)
#print(str(rayhit.position.x))
@ -37,7 +37,7 @@ while not pr.window_should_close():
pr.end_drawing()
pos = pr.get_mouse_position()
ray = pr.get_mouse_ray(pos, camera)
ray = pr.get_screen_to_world_ray(pos, camera)
#rayhit = pr.get_ray_collision_ground(ray, 0)
#print(str(rayhit.position.x))

View file

@ -21,7 +21,7 @@ model.materials.maps[MATERIAL_MAP_ALBEDO].texture = texture
unload_image(image)
pos = get_mouse_position()
ray = get_mouse_ray(pos, camera)
ray = get_screen_to_world_ray(pos, camera)
#rayhit = get_ray_collision_ground(ray, 0)
#print(str(rayhit.position.x))
@ -33,11 +33,11 @@ while not window_should_close():
draw_model(model, (-8.0, 0.0, -8.0), 1.0, RED)
draw_grid(20, 1.0)
end_mode_3d()
draw_text("This mesh should be textured", 190, 200, 20, VIOLET)
draw_text("This mesh should be tesxtured", 190, 200, 20, VIOLET)
end_drawing()
pos = get_mouse_position()
ray = get_mouse_ray(pos, camera)
ray = get_screen_to_world_ray(pos, camera)
#rayhit = get_ray_collision_ground(ray, 0)
#print(str(rayhit.position.x))