diff --git a/.cirrus.yml b/.cirrus.yml deleted file mode 100644 index 498dbb3..0000000 --- a/.cirrus.yml +++ /dev/null @@ -1,157 +0,0 @@ -# download at https://api.cirrus-ci.com/v1/artifact/github/electronstudio/raylib-python-cffi/pi/binary.zip -# https://api.cirrus-ci.com/v1/artifact/github/electronstudio/raylib-python-cffi/mac/binary.zip - -pi_task: - arm_container: - matrix: - - image: dtcooper/raspberrypi-os:python3.12-bullseye - - image: dtcooper/raspberrypi-os:python3.11-bullseye - - image: dtcooper/raspberrypi-os:python3.10-bullseye - - image: dtcooper/raspberrypi-os:python3.9-bullseye - env: - matrix: - - RAYLIB_PLATFORM: "Desktop" - RAYLIB_OPENGL: "2.1" - - RAYLIB_PLATFORM: "SDL" - RAYLIB_OPENGL: "2.1" - - RAYLIB_PLATFORM: "DRM" - RAYLIB_OPENGL: "ES 2.0" - setup_script: - - apt update - - apt -y install cmake libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev libwayland-dev libxkbcommon-dev libgbm-dev libdrm-dev - build_sdl_script: - - wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.7.tar.gz - - tar xvfz release-2.30.7.tar.gz - - mkdir buildsdl - - cd buildsdl - - cmake ../SDL-release-2.30.7 -DSDL_SHARED=OFF -DSDL_STATIC=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release - - cmake --build . --config Release - - cmake --install . - - cd .. - build_raylib_script: - - git submodule update --init --recursive - - cd raylib-c - - 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 .. - - make -j2 - - make install - build_raylib_again_script: - - cd raylib-c - - mkdir build2 - - cd build2 - - cmake -DPLATFORM=${RAYLIB_PLATFORM} -DOPENGL_VERSION="${RAYLIB_OPENGL}" -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - - make -j2 - - cp raylib/libraylib.a /usr/local/lib/libraylib.a - build_script: - - cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ - - cp physac/src/physac.h /usr/local/include/ - - cp raygui/src/raygui.h /usr/local/include/ - - python -m pip install --break-system-packages --upgrade pip - - python -m pip install --break-system-packages cffi - - python -m pip install --break-system-packages setuptools - - python -m pip install --break-system-packages wheel - - python setup.py bdist_wheel --plat-name manylinux2014_aarch64 - test_script: - - python -m pip install --break-system-packages dist/*.whl - - cd / - - python -c 'import pyray; pyray.init_window(100,100,"test")' >/tmp/output 2>&1 || true - - cat /tmp/output - - if grep -q "INFO: Initializing raylib" /tmp/output; then - - echo "Passed" - - exit 0 - - else - - echo "Failed" - - exit 1 - - fi - artifacts: - path: "dist/*" - -mac_task: - macos_instance: - matrix: - - image: ghcr.io/cirruslabs/macos-sonoma-xcode:latest - env: - MACOSX_DEPLOYMENT_TARGET: "11.0" - matrix: - - env: - PY_VER: "3.9" - RAYLIB_PLATFORM: Desktop - - env: - PY_VER: "3.9" - RAYLIB_PLATFORM: SDL - - env: - PY_VER: "3.10" - RAYLIB_PLATFORM: Desktop - - env: - PY_VER: "3.10" - RAYLIB_PLATFORM: SDL - - env: - PY_VER: "3.11" - RAYLIB_PLATFORM: Desktop - - env: - PY_VER: "3.11" - RAYLIB_PLATFORM: SDL - - env: - PY_VER: "3.12" - RAYLIB_PLATFORM: Desktop - - env: - PY_VER: "3.12" - RAYLIB_PLATFORM: SDL - - env: - PY_VER: "3.13" - RAYLIB_PLATFORM: Desktop - - env: - PY_VER: "3.13" - RAYLIB_PLATFORM: SDL - - - setup_script: - - brew update - - brew install python@${PY_VER} - build_sdl_script: - - wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.7.tar.gz - - tar xvfz release-2.30.7.tar.gz - - mkdir buildsdl - - cd buildsdl - - cmake ../SDL-release-2.30.7 -DSDL_SHARED=OFF -DSDL_STATIC=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release - - cmake --build . --config Release - - sudo cmake --install . - - cd .. - build_raylib_script: - - git submodule update --init --recursive - - cd raylib-c - - 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 .. - - make -j8 - - sudo make install - build_raylib_again_script: - - cd raylib-c - - mkdir build2 - - cd build2 - - cmake -DPLATFORM=${RAYLIB_PLATFORM} -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - - make -j8 - - sudo cp raylib/libraylib.a /usr/local/lib/libraylib.a - build_script: - - sudo cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ - - sudo cp physac/src/physac.h /usr/local/include/ - - sudo cp raygui/src/raygui.h /usr/local/include/ - - /opt/homebrew/bin/python${PY_VER} -m pip install --break-system-packages cffi - - /opt/homebrew/bin/python${PY_VER} -m pip install --break-system-packages setuptools - - /opt/homebrew/bin/python${PY_VER} -m pip install --break-system-packages wheel - - /opt/homebrew/bin/python${PY_VER} setup.py bdist_wheel - test_script: - - /opt/homebrew/bin/python${PY_VER} -m pip install --break-system-packages dist/*.whl - - cd / - - /opt/homebrew/bin/python${PY_VER} -c 'import pyray; pyray.init_window(100,100,"test")' >/tmp/output 2>&1 || true - - cat /tmp/output - - if grep -q "INFO: Initializing raylib" /tmp/output; then - - echo "Passed" - - exit 0 - - else - - echo "Failed" - - exit 1 - - fi - artifacts: - path: "dist/*" \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 2a3c7f9..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,440 +0,0 @@ -name: Build - -# Controls when the workflow will run -on: - # Triggers the workflow on push or pull request events but only for the master branch - push: - pull_request: - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - - -jobs: - build-mac-intel: - runs-on: macos-13 - strategy: - matrix: - python-version: [ '3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.9', 'pypy-3.10', 'pypy-3.11' ] - raylib-platform: ['Desktop', 'SDL'] - env: - MACOSX_DEPLOYMENT_TARGET: '10.13' - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Build SDL - run: | - wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.7.tar.gz - tar xvfz release-2.30.7.tar.gz - mkdir build - cd build - cmake ../SDL-release-2.30.7 -DSDL_SHARED=OFF -DSDL_STATIC=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release - cmake --build . --config Release - sudo cmake --install . - - - name: Setup Python - 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 }} - # The target architecture (x86, x64) of the Python interpreter. - architecture: x64 - - # Runs a set of commands using the runners shell - - name: Build raylib without SDL because SDL version has incorrect pkg-config - run: | - cd raylib-c - 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 .. - make -j2 - sudo make install - - - name: Build raylib with SDL if selected - run: | - cd raylib-c - mkdir build2 - cd build2 - cmake -DPLATFORM=${{ matrix.raylib-platform }} -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - make -j2 - sudo cp raylib/libraylib.a /usr/local/lib/libraylib.a - - - name: Copy extras - run: | - sudo cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ - sudo cp physac/src/physac.h /usr/local/include/ - sudo cp raygui/src/raygui.h /usr/local/include/ - - - name: Build raylib-python-cffi - env: - RAYLIB_PLATFORM: ${{ matrix.raylib-platform }} - run: | - python -m pip install --upgrade pip - pip3 install "cffi>=1.17.1" - pip3 install wheel - pip3 install setuptools - python setup.py bdist_wheel --plat-name macosx_10_13_x86_64 - - - name: Test - run: | - pip3 install dist/*.whl - cd / - python3 -c 'import pyray; pyray.init_window(100,100,"test")' >/tmp/output 2>&1 || true - cat /tmp/output - if grep -q "INFO: Initializing raylib" /tmp/output; then - echo "Passed" - exit 0 - else - echo "Failed" - exit 1 - fi - - - name: Upload build Artifact wheel - uses: actions/upload-artifact@v4 - with: - name: wheel-mac-${{ matrix.raylib-platform }}-${{ matrix.python-version }} - path: dist/* - -# build-mac-universal: -# runs-on: macos-14 -# strategy: -# matrix: -# python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.8', 'pypy-3.9', 'pypy-3.10' ] -# raylib-platform: ['Desktop', 'SDL'] -# env: -# MACOSX_DEPLOYMENT_TARGET: 11.0 -# steps: -# # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it -# - uses: actions/checkout@v4 -# with: -# submodules: recursive -# -# - name: Build SDL -# run: | -# wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.7.tar.gz -# tar xvfz release-2.30.7.tar.gz -# mkdir build -# cd build -# cmake ../SDL-release-2.30.7 -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DSDL_SHARED=OFF -DSDL_STATIC=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -# cmake --build . --config Release -# sudo cmake --install . -# -# - name: Setup Python -# 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 }} -# architecture: arm64 -# -# # Runs a set of commands using the runners shell -# - name: Build raylib without SDL because SDL version has incorrect pkg-config -# run: | -# cd raylib-c -# mkdir build -# cd build -# cmake -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. -# make -j2 -# sudo make install -# -# - name: Build raylib with SDL if selected -# run: | -# cd raylib-c -# mkdir build2 -# cd build2 -# cmake -DPLATFORM=${{ matrix.raylib-platform }} -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DPLATFORM=SDL -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. -# make -j2 -# sudo cp raylib/libraylib.a /usr/local/lib/libraylib.a -# -# - name: Copy extras -# run: | -# sudo cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ -# sudo cp physac/src/physac.h /usr/local/include/ -# sudo cp raygui/src/raygui.h /usr/local/include/ -# -# - name: Build raylib-python-cffi -# run: | -# python -m pip install --upgrade pip -# pip3 install "cffi>=1.17.1" -# pip3 install wheel -# pip3 install setuptools -# RAYLIB_PLATFORM=${{ matrix.raylib-platform }} python setup.py bdist_wheel -# -# - name: Upload build Artifact wheel -# uses: actions/upload-artifact@v3.2.1 -# with: -# name: wheel -# path: dist/* - -# -# # Name defaults to universal2 and it technically is, but we override name to arm64. Why don't we make a working universal2 wheel? Because -# # I'd rather have a separate x86_64 that I can test, and I want it to work on 10_15 but I'm not sure a 'macosx_10_15_universal2' is valid -# # given that there is no SDK for universal until macosx_11_0 -# - name: Build raylib-python-cffi -# run: | -# python -m pip install --upgrade pip -# pip3 install cffi -# pip3 install wheel -# python setup.py bdist_wheel --plat-name macosx_12_0_arm64 - - - - build-linux: - runs-on: ubuntu-22.04 - strategy: - # You can use PyPy versions in python-version. - # For example, pypy2 and pypy3 - matrix: - python-version: [ '3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.9', 'pypy-3.10', 'pypy-3.11' ] - raylib-platform: ['Desktop', 'SDL', 'DRM'] - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup Python - 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 }} - # The target architecture (x86, x64) of the Python interpreter. - architecture: x64 - - - name: install prereqs - run: | - sudo apt update - sudo apt install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev libwayland-dev libxkbcommon-dev - - name: Build SDL - run: | - wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.7.tar.gz - tar xvfz release-2.30.7.tar.gz - mkdir build - cd build - cmake ../SDL-release-2.30.7 -DSDL_SHARED=OFF -DSDL_STATIC=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release - cmake --build . --config Release - sudo cmake --install . - - # Runs a set of commands using the runners shell - - name: Build raylib - run: | - cd raylib-c - mkdir build - cd build - cmake -DPLATFORM=${{ matrix.raylib-platform }} -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release -DOpenGL_GL_PREFERENCE=GLVND .. - make -j2 - sudo make install - - name: Copy extras - run: | - sudo cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ - sudo cp physac/src/physac.h /usr/local/include/ - sudo cp raygui/src/raygui.h /usr/local/include/ - - name: Build raylib-python-cffi - env: - RAYLIB_PLATFORM: ${{ matrix.raylib-platform }} - run: | - python -m pip install --upgrade pip - pip3 install "cffi>=1.17.1" - pip3 install wheel - pip3 install setuptools - python setup.py bdist_wheel --plat-name manylinux2014_x86_64 - - name: Test - run: | - pip3 install dist/*.whl - cd / - python3 -c 'import pyray; pyray.init_window(100,100,"test")' >/tmp/output 2>&1 || true - cat /tmp/output - if grep -q "INFO: Initializing raylib" /tmp/output; then - echo "Passed" - exit 0 - else - echo "Failed" - exit 1 - fi - - - - name: Upload build Artifact wheel - uses: actions/upload-artifact@v4 - with: - name: wheel-linux-${{ matrix.raylib-platform }}-${{ matrix.python-version }} - path: dist/* - - - - - build-windows: - # The type of runner that the job will run on - runs-on: windows-2019 - strategy: - # You can use PyPy versions in python-version. - # For example, pypy2 and pypy3 - matrix: - python-version: [ '3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.9', 'pypy-3.10', 'pypy-3.11' ] - raylib-platform: ['Desktop', 'SDL'] - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Download SDL2 - run: curl -L -o SDL2.zip https://github.com/libsdl-org/SDL/releases/download/release-2.30.8/SDL2-devel-2.30.8-VC.zip - - - name: Create extraction directory - run: mkdir ${{ runner.temp }}\SDL2 - - - name: Unzip SDL2 - run: tar -xf SDL2.zip -C ${{ runner.temp }}\SDL2 --strip-components=1 - - - name: Set SDL2_DIR environment variable - run: echo SDL2_DIR=${{ runner.temp }}\SDL2\cmake >> $env:GITHUB_ENV - - - name: Setup Python - 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 }} - # The target architecture (x86, x64) of the Python interpreter. - architecture: x64 - - - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v2 - - - name: Build raylib - run: | - cd raylib-c - mkdir build - cd build - cmake -DPLATFORM=${{ matrix.raylib-platform }} -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - msbuild raylib.sln /target:raylib /property:Configuration=Release - copy raylib\Release\raylib.lib ..\.. - cd ..\.. - shell: cmd - - - name: Build raylib-python-cffi - env: - RAYLIB_PLATFORM: ${{ matrix.raylib-platform }} - run: | - copy ${{ runner.temp }}\SDL2\lib\x64\SDL2.lib . - copy ${{ runner.temp }}\SDL2\lib\x64\SDL2.dll raylib\ - python -m pip install --upgrade pip - pip3 install "cffi>=1.17.1" - pip3 install wheel - pip3 install setuptools - del raylib\dynamic\*.so* >nul 2>&1 - del raylib\dynamic\*.dll >nul 2>&1 - del raylib\dynamic\*.dylib >nul 2>&1 - del raylib\dynamic\32bit\* >nul 2>&1 - python setup.py bdist_wheel - shell: cmd - - - name: Test - shell: bash - run: | - pip3 install --no-deps dist/*.whl - cd / - python3 -c 'import pyray; pyray.init_window(100,100,"test")' >/tmp/output 2>&1 || true - cat /tmp/output - if grep -q "INFO: Initializing raylib" /tmp/output; then - echo "Passed" - exit 0 - else - echo "Failed" - exit 1 - fi - - - name: Upload build Artifact wheel - uses: actions/upload-artifact@v4 - with: - name: wheel-windows-${{ matrix.raylib-platform }}-${{ matrix.python-version }} - path: dist/* - - source-distro: - runs-on: ubuntu-latest - - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup Python - 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' - # The target architecture (x86, x64) of the Python interpreter. - architecture: x64 - - - name: Build raylib - run: | - sudo apt update - sudo apt install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev libwayland-dev libxkbcommon-dev - cd raylib-c - 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 .. - make -j2 - sudo make install - - name: Copy extras - run: | - sudo cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ - sudo cp physac/src/physac.h /usr/local/include/ - sudo cp raygui/src/raygui.h /usr/local/include/ - - - name: Build raylib-python-cffi - run: | - python -m pip install --upgrade pip - pip3 install "cffi>=1.17.1" - pip3 install wheel - pip3 install setuptools - python setup.py sdist - - - name: Upload build Artifact wheel - uses: actions/upload-artifact@v4 - with: - name: wheel-source - path: dist/* - - dynamic-distro: - runs-on: ubuntu-latest - - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup Python - 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' - # The target architecture (x86, x64) of the Python interpreter. - architecture: x64 - - - name: Build raylib-python-cffi-dynamic - run: | - python -m pip install --upgrade pip - pip3 install "cffi>=1.17.1" - pip3 install wheel - pip3 install setuptools - cd dynamic - python setup.py sdist - - - name: Upload build Artifact wheel - uses: actions/upload-artifact@v4 - with: - name: wheel-dynamic - path: dynamic/dist/* - - merge: - needs: [build-mac-intel, build-windows, build-linux, source-distro, dynamic-distro] - runs-on: ubuntu-latest - steps: - - name: Merge All Artifacts - uses: actions/upload-artifact/merge@v4 - with: - name: wheel - pattern: wheel-* diff --git a/.gitignore b/.gitignore index 7947899..f8d6014 100644 --- a/.gitignore +++ b/.gitignore @@ -4,8 +4,6 @@ __pycache__/ # Distribution / packaging -docs-src/_build -.idea/ .Python build/ develop-eggs/ diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index f6c3e1d..0000000 --- a/.gitmodules +++ /dev/null @@ -1,9 +0,0 @@ -[submodule "raylib-c"] - path = raylib-c - url = https://git.terah.dev/UnrealXR/raylib.git -[submodule "raygui"] - path = raygui - url = https://github.com/raysan5/raygui.git -[submodule "physac"] - path = physac - url = https://github.com/victorfisac/Physac.git diff --git a/BUILDING.rst b/BUILDING.rst deleted file mode 100644 index a32dd6f..0000000 --- a/BUILDING.rst +++ /dev/null @@ -1,216 +0,0 @@ -Building from source -==================== - -Have Pip build from source --------------------------- - -This is useful if the binaries don’t work on your system, or you want to use a newer version of Raylib. - -First make sure Raylib is installed. On Linux/Mac it must include the pkg-config files. Best way to ensure this -is to compile and install Raylib using CMake: https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux#build-raylib-using-cmake - -Requirements for build: cmake, pkg-config. - -:: - - cd raylib-5.0 - mkdir build - cd build - cmake -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - make - sudo make install - - - -Then ask Pip to build from source: - -:: - - pip3 install --no-cache-dir --no-binary raylib --upgrade --force-reinstall raylib - -Or, Build from source manually ------------------------------- - -Useful if the Pip build doesn’t work and you want to debug it, or you want to contribute to the -project. - -.. attention:: - If the Pip build doesn’t work, please submit a bug. (And if you have - fixed it, a PR.) - -Manual instructions follow, but are probably outdated, so see instead how we actually build the wheels -at https://github.com/electronstudio/raylib-python-cffi/blob/master/.github/workflows/build.yml - -Windows manual build -~~~~~~~~~~~~~~~~~~~~ - -Clone this repo including submodules so you get correct version of -Raylib. - -:: - - git clone --recurse-submodules https://github.com/electronstudio/raylib-python-cffi - -Open Visual C++ command shell. - -Fix the symlink that doesnt work on Windows - -:: - - cd raylib-python-cffi - copy raylib-c\src\raylib.h raylib\raylib.h - -Build and install Raylib from the raylib-c directory. - -:: - - cd raylib-python-cffi/raylib-c - mkdir build - cd build - cmake -DWITH_PIC=on -DCMAKE_BUILD_TYPE=Release .. - msbuild raylib.sln /target:raylib /property:Configuration=Release - copy raylib\Release\raylib.lib ..\.. - cd ..\.. - - - -To build a binary wheel distribution: - -:: - - rmdir /Q /S build - pip3 install cffi - pip3 install wheel - python setup.py bdist_wheel - -Then install it: - -:: - - pip3 install dist\raylib-3.7.0-cp37-cp37m-win_amd64.whl - -(Note: your wheel’s filename will probably be different than the one -here.) - -Linux manual build -~~~~~~~~~~~~~~~~~~~~~~ - -Clone this repo including submodules so you get correct version of -Raylib. - -:: - - git clone --recurse-submodules https://github.com/electronstudio/raylib-python-cffi - -Build and install Raylib from the raylib-c directory. - -.. note:: - You can instead use a different version of Raylib you installed from elsewhere, and it should still - work! - -:: - - sudo apt install cmake libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev pkg-config cmake - cd raylib-python-cffi/raylib-c - mkdir build - cd build - cmake -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - sudo make install - -.. note:: Optional: Build the Raylib shared libs, if you plan to use - ``raylib_dynamic`` binding. - - :: - - rm -rf * - cmake -DWITH_PIC=on -DBUILD_SHARED_LIBS=on -DCMAKE_BUILD_TYPE=Release .. - make - sudo make install - -:: - - cd ../.. - - -Build the Python library: - -:: - - pip3 install cffi - rm -rf build raylib/_raylib_cffi.* - python3 raylib/build.py - -.. note:: (Optional) To update the Linux dynamic libs (names will be different on other platforms): - - :: - - rm dynamic/raylib/*.so* - cp -P /usr/local/lib/libraylib.so* dynamic/raylib/ - -To build a binary wheel distribution: - -:: - - pip3 install wheel - python3 setup.py bdist_wheel - - -Then install it: - -:: - - pip3 install dist/raylib*.whl - -To build a complete set of libs for Python 3.6, 3.7, 3.8 and 3.9: - -:: - - ./raylib/build_multi.sh - -.. warning:: - pypi wont accept Linux packages unless they are built - ``--plat-name manylinux2014_x86_64`` so on linux please run - ``./raylib/build_multi_linux.sh`` ) - -.. TODO:: - Separate the instructions for preparing the dynamic module - from the instructions for building the static module! - - - -Macos manual build -~~~~~~~~~~~~~~~~~~~~~~ - -These instructions have been tested on Macos 10.14. - -Clone this repo including submodules so you get correct version of -Raylib. - -:: - - git clone --recurse-submodules https://github.com/electronstudio/raylib-python-cffi - -Build and install Raylib from the raylib-c directory. - -:: - - cd raylib-python-cffi/raylib-c/ - mkdir build - cd build - cmake -DWITH_PIC=on -DCMAKE_BUILD_TYPE=Release .. - make - sudo make install - cd ../.. - - -Build and install module. - -:: - - pip3 install cffi - rm -rf build raylib/_raylib_cffi.* - python3 raylib/build.py - pip3 install wheel - python3 setup.py install - - diff --git a/LICENSE b/LICENSE index e23ece2..0a04128 100644 --- a/LICENSE +++ b/LICENSE @@ -1,277 +1,165 @@ -Eclipse Public License - v 2.0 + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. -1. DEFINITIONS -"Contribution" means: + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and + 0. Additional Definitions. - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. -"Contributor" means any person or entity that Distributes the Program. + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. -"Licensed Patents" mean patent claims licensable by a Contributor which -are necessarily infringed by the use or sale of its Contribution alone -or when combined with the Program. + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. -"Program" means the Contributions Distributed in accordance with this -Agreement. + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". -"Recipient" means anyone who receives the Program under this Agreement -or any Secondary License (as applicable), including Contributors. + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. -"Derivative Works" shall mean any work, whether in Source Code or other -form, that is based on (or derived from) the Program and for which the -editorial revisions, annotations, elaborations, or other modifications -represent, as a whole, an original work of authorship. + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. -"Modified Works" shall mean any work in Source Code or other form that -results from an addition to, deletion from, or modification of the -contents of the Program, including, for purposes of clarity any new file -in Source Code form that contains any contents of the Program. Modified -Works shall not include works that contain only declarations, -interfaces, types, classes, structures, or files of the Program solely -in each case in order to link to, bind by name, or subclass the Program -or Modified Works thereof. + 1. Exception to Section 3 of the GNU GPL. -"Distribute" means the acts of a) distributing or b) making available -in any manner that enables the transfer of a copy. + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. -"Source Code" means the form of a Program preferred for making -modifications, including but not limited to software source code, -documentation source, and configuration files. + 2. Conveying Modified Versions. -"Secondary License" means either the GNU General Public License, -Version 2.0, or any later versions of that license, including any -exceptions or additional permissions as identified by the initial -Contributor. + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: -2. GRANT OF RIGHTS + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. + 3. Object Code Incorporating Material from Library Header Files. - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). + b) Accompany the object code with a copy of the GNU GPL and this license + document. -3. REQUIREMENTS + 4. Combined Works. -3.1 If a Contributor Distributes the Program in any form, then: + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and + d) Do one of the following: - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. -3.2 When the Program is Distributed as Source Code: + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) - b) a copy of this Agreement must be included with each copy of - the Program. + 5. Combined Libraries. -3.3 Contributors may not remove or alter any copyright, patent, -trademark, attribution notices, disclaimers of warranty, or limitations -of liability ("notices") contained within the Program from any copy of -the Program which they Distribute, provided that Contributors may add -their own appropriate notices. + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: -4. COMMERCIAL DISTRIBUTION + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. -Commercial distributors of software may accept certain responsibilities -with respect to end users, business partners and the like. While this -license is intended to facilitate the commercial use of the Program, -the Contributor who includes the Program in a commercial product -offering should do so in a manner which does not create potential -liability for other Contributors. Therefore, if a Contributor includes -the Program in a commercial product offering, such Contributor -("Commercial Contributor") hereby agrees to defend and indemnify every -other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits -and other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such -Commercial Contributor in connection with its distribution of the Program -in a commercial product offering. The obligations in this section do not -apply to any claims or Losses relating to any actual or alleged -intellectual property infringement. In order to qualify, an Indemnified -Contributor must: a) promptly notify the Commercial Contributor in -writing of such claim, and b) allow the Commercial Contributor to control, -and cooperate with the Commercial Contributor in, the defense and any -related settlement negotiations. The Indemnified Contributor may -participate in any such claim at its own expense. + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. -For example, a Contributor might include the Program in a commercial -product offering, Product X. That Contributor is then a Commercial -Contributor. If that Commercial Contributor then makes performance -claims, or offers warranties related to Product X, those performance -claims and warranties are such Commercial Contributor's responsibility -alone. Under this section, the Commercial Contributor would have to -defend claims against the other Contributors related to those performance -claims and warranties, and if a court requires any other Contributor to -pay any damages as a result, the Commercial Contributor must pay -those damages. + 6. Revised Versions of the GNU Lesser General Public License. -5. NO WARRANTY + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT -PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" -BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF -TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR -PURPOSE. Each Recipient is solely responsible for determining the -appropriateness of using and distributing the Program and assumes all -risks associated with its exercise of rights under this Agreement, -including but not limited to the risks and costs of program errors, -compliance with applicable laws, damage to or loss of data, programs -or equipment, and unavailability or interruption of operations. + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT -PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS -SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST -PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of -the remainder of the terms of this Agreement, and without further -action by the parties hereto, such provision shall be reformed to the -minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity -(including a cross-claim or counterclaim in a lawsuit) alleging that the -Program itself (excluding combinations of the Program with other software -or hardware) infringes such Recipient's patent(s), then such Recipient's -rights granted under Section 2(b) shall terminate as of the date such -litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it -fails to comply with any of the material terms or conditions of this -Agreement and does not cure such failure in a reasonable period of -time after becoming aware of such noncompliance. If all Recipient's -rights under this Agreement terminate, Recipient agrees to cease use -and distribution of the Program as soon as reasonably practicable. -However, Recipient's obligations under this Agreement and any licenses -granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, -but in order to avoid inconsistency the Agreement is copyrighted and -may only be modified in the following manner. The Agreement Steward -reserves the right to publish new versions (including revisions) of -this Agreement from time to time. No one other than the Agreement -Steward has the right to modify this Agreement. The Eclipse Foundation -is the initial Agreement Steward. The Eclipse Foundation may assign the -responsibility to serve as the Agreement Steward to a suitable separate -entity. Each new version of the Agreement will be given a distinguishing -version number. The Program (including Contributions) may always be -Distributed subject to the version of the Agreement under which it was -received. In addition, after a new version of the Agreement is published, -Contributor may elect to Distribute the Program (including its -Contributions) under the new version. - -Except as expressly stated in Sections 2(a) and 2(b) above, Recipient -receives no rights or licenses to the intellectual property of any -Contributor under this Agreement, whether expressly, by implication, -estoppel or otherwise. All rights in the Program not expressly granted -under this Agreement are reserved. Nothing in this Agreement is intended -to be enforceable by any entity that is not a Contributor or Recipient. -No third-party beneficiary rights are created under this Agreement. - -Exhibit A - Form of Secondary Licenses Notice - -"This Source Code may also be made available under the following -Secondary Licenses when the conditions for such availability set forth -in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), -version(s), and exceptions or additional permissions here}." - - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. - - You may add additional accurate notices of copyright ownership. \ No newline at end of file + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/MANIFEST.in b/MANIFEST.in index 6c6394e..f19d6df 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,16 +1,9 @@ -include raylib/*.so -include raylib/*.pyi -include pyray/*.pyi -include raylib/*.pyd -include raylib/*.dll -exclude raylib/*.a +include raylib/static/*.so +include raylib/static/*.pyd +exclude raylib/static/*.a include raylib/*.h -include raylib/*.h.modified -exclude raylib/*.c -exclude raylib/*.o -include version.py -exclude tests/* -include raylib/py.typed -include pyray/py.typed - - +exclude raylib/static/*.c +exclude raylib/static/*.o +include raylib/dynamic/*.dylib +include raylib/dynamic/*.dll +include raylib/dynamic/*.so \ No newline at end of file diff --git a/README.md b/README.md index 64c695b..82e4ebb 100644 --- a/README.md +++ b/README.md @@ -1,278 +1,115 @@ -# Python Bindings for Raylib 5.5 -## Libraries: raymath, raygui, rlgl, physac and GLFW -## Backends: Desktop, SDL, DRM, Web -## Platforms: Windows, Mac, Linux, Raspberry Pi, Web +# Python Bindings for Raylib 2.6 -![PyPI - Downloads](https://img.shields.io/pypi/dm/raylib) +New CFFI API static bindings. Faster, fewer bugs and easier to maintain than ctypes. -Chatroom: [Discord](https://discord.gg/fKDwt85aX6) - -HELP WANTED: [writing examples](https://github.com/electronstudio/raylib-python-cffi/issues/155) - -Features: - -* CFFI API static bindings. -* Automatically generated to be as close as possible to -original Raylib. -* Faster, fewer bugs and easier to maintain than ctypes. -* Commercial-friendly license. -* Docstrings and auto-completion. -* Type checking with Mypy - - -[Full documentation](http://electronstudio.github.io/raylib-python-cffi) - -# Quickstart - -`pip3 install raylib==5.5.0.2 --break-system-packages` -```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 - -If you are on a modern Linux you will probably want to create a venv: - - python3 -m venv venv - source venv/bin/activate - -Then make sure you have the latest pip installed: - - python3 -m pip install --upgrade pip - -Then install - - python3 -m pip install setuptools - python3 -m pip install raylib==5.5.0.2 - -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 14 - * x64 MacOS 10.13, 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.5.0.2 - -(I do have binaries for arm64 MacOS 11, 12 and 13 but I have no way of testing they work, so post an issue -if you want to test them.) - -## 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 binaries are built on Raspberry Pi arm64 Bullseye with OpenGL 2.0 -so may not work on other boards. - -## Raspberry Pi - -[Using on Rasperry Pi](RPI.rst) - -# Backends - -## Dynamic binding version - -There is now a separate dynamic version of this binding: - - python3 -m pip uninstall raylib - python3 -m pip install raylib_dynamic - -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) - -You can't have multiple raylib packages installed at once. - -## SDL backend - -This is not well tested but has better support for controllers: - - python3 -m pip uninstall raylib - python3 -m pip install raylib_sdl - -You can't have multiple raylib packages 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 raylib packages installed at once. - -## Problems? - -If it doesn't work, [try to build manually.](BUILDING.rst). If that works then [submit an issue](https://github.com/electronstudio/raylib-python-cffi/issues) -to let us know what you did. - -If you need help you can try asking on [our discord](https://discord.gg/fKDwt85aX6). There is also a large [Raylib discord](https://discord.gg/raylib) -for issues that are not Python-specific. - -If it still doesn't work, [submit an issue](https://github.com/electronstudio/raylib-python-cffi/issues). - - -# How to use - -There are *two* modules in the raylib package, `raylib` and `pyray`. (There is no separate package for -pyray. Do *not* `pip install pyray`). You can use either or both: - -### If you are familiar with C coding and the Raylib C library and you want to use an exact copy of the C API - -Use [the raylib module](https://electronstudio.github.io/raylib-python-cffi/raylib.html). - -### If you prefer a more Pythonistic API - -Use [the pyray module](https://electronstudio.github.io/raylib-python-cffi/pyray.html). - -# Running in a web browser - -[Pygbag](https://pypi.org/project/pygbag/) >=0.8.7 supports running in a web browser. Usually the latest git version -is recommended. - -Make a folder `my_project` with a file `main.py`: - -```python -# /// script -# dependencies = [ -# "cffi", -# "raylib" -# ] -# /// -import asyncio -import platform -from pyray import * - -async def main(): # You MUST have an async main function - init_window(500, 500, "Hello") - platform.window.window_resize() # You MAY want to add this line - while not window_should_close(): - begin_drawing() - clear_background(WHITE) - draw_text("Hello world", 190, 200, 20, VIOLET) - end_drawing() - await asyncio.sleep(0) # You MUST call this in your main loop - close_window() - -asyncio.run(main()) -``` - -Then to create the web files and launch a web server: - - python3.12 -m pip install --user --upgrade pygbag - python3.12 -m pygbag --PYBUILD 3.12 --ume_block 0 --template noctx.tmpl --git my_project - -Point your browser to http://localhost:8000 - -Some features may not work, so you can disable them like this: - -```python -if platform.system() != "Emscripten": # audio may not work on current version of emscripten - init_audio_device() -``` - -This is all done by Pygbag rather than by me, so you should probably contact them with any issues. -Carefully read all their [documentation](https://pygame-web.github.io/). - -It does work for most of [these examples](https://electronstudio.github.io/raylib-python-cffi-pygbag-examples/) - -# App showcase - -[Tempest-raylib](https://github.com/Emtyloc/tempest-raylib) - -[KarabinerKeyboard](https://github.com/bilbofroggins/KarabinerKeyboard) - -[PyTaiko](https://github.com/Yonokid/PyTaiko) - -[DOOM-Clone](https://github.com/StanislavPetrovV/DOOM-Clone) - -[Tanki](https://github.com/pkulev/tanki) - -[Alloy Bloxel Editor](https://pebaz.itch.io/alloy-bloxel-editor) - -[Eidolon](https://github.com/Miou-zora/Eidolon) - -Add your app here! - -# RLZero - -A related library (that is a work in progress!): - -[A simplified API for Raylib for use in education and to enable beginners to create 3d games](https://github.com/electronstudio/rlzero) - -# Help wanted - - * Converting more examples from C to Python - * Testing on more platforms - -# License - -Eclipse Public License, so you are free to -statically link and use in non-free / proprietary / commercial projects! - -# Performance - -If you need more performance, do in this order: - -1. Use Pypy rather than standard CPython. It is much, much faster and will make more difference than any other optimisations you might do. - -2. Every call to C is costly, so it's slightly faster if you use Python data structures and functions when calculating -in your update loop -and then only convert them to C data structures when you have to call the C functions for drawing. - -3. The raylib.* functions are potentially *slightly* faster than the pyray.* equivalents, so if you need a tiny bit more performance -you can switch your inner loop functions to these. - -4. There is a version of Python that is faster than Pypy: GraalPy. However it's not fully compatible with all Python -packages. It doesn't work with CFFI and so doesn't work with this binding. But it *is* compatible with the -*Java* binding, Jaylib! There is an example of this here: https://github.com/electronstudio/megabunny/tree/master/raylib-python-jaylib - -## Bunnymark - - -| Library | Implementation | Bunnies (60 FPS) | Percentage | -|--------------------------------|-------------------|------------------|------------| -| Raylib 5.0 | C | 180000 | 100% | -| Raylib Python CFFI 5.0.0.2 | Python 3.12 | 10500 | 5.8% | -| Raylib Python CFFI 5.0.0.2 | Pypy 3.10 | 95000 | 53% | -| Raylib 3.7 | C | 168100 | 100% | -| Raylib Python CFFI 3.7 | Pypy 3.7 | 33800 | 20% | -| Raylib Python CFFI 3.7 | Python 3.9 | 7700 | 4.5% | -| Raylib Python CFFI 3.7 | Python 3.9 Nuitka | 8600 | 5.1% | -| Raylib Python CFFI 3.7 Dynamic | Python 3.9 | 6300 | 3.7% | - -See also https://github.com/electronstudio/megabunny/ - -# Packaging your app - -You can create a standalone binary using the Nuitka compiler. For example, here is how to package Bunnymark: - - pip3 install nuitka - cd examples/textures - python3 -m nuitka --onefile --linux-onefile-icon resources/wabbit_alpha.png textures_bunnymark.py - -# Advert +### Advert [RetroWar: 8-bit Party Battle](https://store.steampowered.com/app/664240/RetroWar_8bit_Party_Battle/?git) is out now. Defeat up to 15 of your friends in a tournament of 80s-inspired retro mini games. -[Coding Games With Pygame Zero & Python](https://github.com/electronstudio/pygame-zero-book) is -a book for Python beginners. +# Install + +**Windows 10 (64 bit): Python 3.6 - 3.8** + +**MacOS: Python 3.6 - 3.8** + +**Linux (Ubuntu 16.04+): Python 3.6 - 3.8** + +We distribute a statically linked Raylib library, install from Pypi. + + pip3 install raylib + +If you're a different version of Python, or a Linux with incompatible libraries +then you can either *use the dynamic binding only* or else you will have to build from source. Download, compile +and install Raylib 2.6 then + + cd raylib/static + python3 build_linux.py + +# Use + +## raylib.static + +Goal is make usage as similar to the original C as CFFI will allow. There are a few differences +you can see in the examples. See test_static.py and examples/*.py for how to use. + +``` +from raylib.static import * + +InitWindow(800, 450, b"Hello Raylib") +SetTargetFPS(60) + +camera = ffi.new("struct Camera3D *", [[18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0]) +SetCameraMode(camera[0], CAMERA_ORBITAL) + +while not WindowShouldClose(): + UpdateCamera(camera) + BeginDrawing() + ClearBackground(RAYWHITE) + BeginMode3D(camera[0]) + DrawGrid(20, 1.0) + EndMode3D() + DrawText(b"Hellow World", 190, 200, 20, VIOLET) + EndDrawing() +CloseWindow() + +``` + +## raylib.pyray + +Wrapper around the static bindings. Makes the names snakecase and converts strings to bytes automatically. See test_pyray.py. + + +``` +from raylib.pyray import PyRay +from raylib.colors import * + +pyray = PyRay() + +pyray.init_window(800, 450, "Hello Pyray") +pyray.set_target_fps(60) + +camera = pyray.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0) +pyray.set_camera_mode(camera, pyray.CAMERA_ORBITAL) + +while not pyray.window_should_close(): + pyray.update_camera(pyray.pointer(camera)) + pyray.begin_drawing() + pyray.clear_background(RAYWHITE) + pyray.begin_mode_3d(camera) + pyray.draw_grid(20, 1.0) + pyray.end_mode_3d() + pyray.draw_text("Hello world", 190, 200, 20, VIOLET) + pyray.end_drawing() +pyray.close_window() + +``` + +## raylib.dynamic + +In addition to the API static bindings we have CFFI ABI dynamic bindings in order to avoid the need to compile a C extension module. +There have been some weird failures with dynamic bindings and ctypes bindings before and often the failures are silent +so you dont even know. Also the static bindings should be faster. Therefore I recommend the static ones... + +BUT the dynamic bindings have the big advantage that you don't need to compile anything to install. You just need a Raylib DLL, +which we supply for Windows/Mac/Linux. + +See test_dynamic.py for how to use. + +## richlib + +[A simplified API for Raylib for use in education and to enable beginners to create 3d games](https://github.com/electronstudio/richlib) + +# Platforms tested + + * (MacOS 10.12.6 - Python 3.7) + * (Ubuntu 18.04 LTS - Python 3.6) + * Debian 10 - Python 3.7 + * Windows 10 (64 bit) - Python 3.8 + +# HELP WANTED + + * converting more examples from C to python + * testing and building on more platforms + * sorting out binary wheel distribution for Mac/Win and compile-from-source distributtion for Linux + * dealing with conversions to pointers in PyRay automatically + diff --git a/RPI.rst b/RPI.rst deleted file mode 100644 index a5c62e3..0000000 --- a/RPI.rst +++ /dev/null @@ -1,97 +0,0 @@ -Raspberry Pi -==================== - -Please use Raspberry Pi OS Bookworm. Bullseye should also work. Older OSes are not tested. - -Option 1: Binary wheel ----------------------- - -We have published binary wheels compiled for 64-bit Raspberry OS Bullseye in X11 mode. - -:: - - python -m pip install --break-system-packages raylib - -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 ---------------------------------------------- - -This should work for everyone. - -:: - - sudo apt update - sudo apt install python3-pip cmake libegl1-mesa-dev libgbm-dev libgles2-mesa-dev libdrm-dev libglfw3-dev - git clone https://github.com/raysan5/raylib.git --branch 5.0 --single-branch - cd raylib - mkdir build - rm -rf build/* - cd build - cmake -DPLATFORM="Desktop" -DOPENGL_VERSION=2.1 -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - make - sudo make install - sudo cp -r ../src/external/glfw/include/GLFW /usr/local/include/ - -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.5.0.0 - -Option 3: Compile Raylib from source DRM mode ---------------------------------------------- - -This seems to work on Raspberry Pi 4. Note you must not be running X11 when you run your programs. - -If you have ever installed Raylib or raylib-python-cffi before, remove all traces of it: - -:: - - sudo apt remove raylib raylib-dev libraylib libraylib-dev - sudo rm /usr/local/lib/pkgconfig/raylib.pc - sudo rm -rf /usr/local/lib/libraylib.* /usr/lib/libraylib.* - -Remove all GLFW: - -:: - - sudo apt remove libglfw3-dev libglfw3 - sudo rm -rf /usr/local/include/GLFW - -Build a shared lib version of Raylib in DRM mode and install to /usr: - -:: - - sudo apt update - sudo apt install python3-pip cmake libegl1-mesa-dev libgbm-dev libgles2-mesa-dev libdrm-dev - git clone https://github.com/raysan5/raylib.git --branch 5.0 --single-branch - cd raylib - mkdir build - rm rf build/* - cd build - cmake -DPLATFORM="DRM" -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr .. - make - sudo make install - - -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.5.0.0 - - - - -.. attention:: - - If you intend to use the Broadcom proprietary Open GL ES 2.0 drivers (the ones installed by Raspbian into ``/opt/vc`` and compiled in Raylib - with ``PLATFORM_RPI``) be aware they not work with Bullseye and have not been tested with the bindings. They will probably - require additional linker arguments to be added to ``build.py``. Suggest you try ``PLATFORM_DRM`` instead. diff --git a/coords_demo.py b/coords_demo.py new file mode 100644 index 0000000..c2bba7c --- /dev/null +++ b/coords_demo.py @@ -0,0 +1,76 @@ +from raylib.richlib import * + + +WIDTH=1200 +HEIGHT=800 +CAMERA=pyray.CAMERA_FIRST_PERSON + + +player = Box((-5, 0, -5), (1, 1, 1), 'green', True) + + +o = Vector([-5,-0,-5]) + +td = False + + +def init(): + camera.position = (0.0, 4, 7) + camera.target = (100,100,-100) + camera.up = (0, 1, 0) + camera.fovy = 60 + #rl.UpdateCamera(camera) + pyray.set_camera_mode(camera[0], pyray.CAMERA_FIRST_PERSON) + #rl.UpdateCamera(camera) + +def update(): + if keyboard.right: + player.pos.x += 0.1 + elif keyboard.left: + player.pos.x -= 0.1 + elif keyboard.up: + player.pos.y += 0.1 + elif keyboard.down: + player.pos.y -= 0.1 + elif keyboard.l: + player.pos.z += 0.1 + elif keyboard.p: + player.pos.z-= 0.1 + + if pyray.is_key_pressed(pyray.KEY_Z): + global td + td = not td + + +def draw3d(): + if td: + #pyray.draw_plane((0, 0, 0), (300,300), DARKRED) + pyray.draw_grid(10, 1) + pyray.draw_plane((player.x, 0, player.z), (1,1), GRAY) + pyray.draw_ray([o,[0,0,1]],BLUE) + pyray.draw_ray([o,[0,1,0]],GREEN) + pyray.draw_ray([o,[1,0,0]],RED) + player.draw() + + +def draw2dbackground(): + clear('white') + origin = rl.GetWorldToScreen(o, camera[0]) + rl.DrawText(b"0", int(origin.x), int(origin.y), 20, BLACK) + for i in range (0,11): + xa = rl.GetWorldToScreen((o.x+i,o.y,o.z), camera[0]) + ya = rl.GetWorldToScreen((o.x,o.y+i,o.z), camera[0]) + za = rl.GetWorldToScreen((o.x,o.y,o.z+i), camera[0]) + pyray.draw_text(str(i), int(xa.x), int(xa.y), 20, RED) + pyray.draw_text(str(i), int(ya.x), int(ya.y), 20, GREEN) + if td: + pyray.draw_text(str(i), int(za.x), int(za.y), 20, BLUE) + + pyray.draw_text(f"X: {int(player.x+5)}", 10, 10, 30, RED) + pyray.draw_text(f"Y: {int(player.y)}", 10, 50, 30, GREEN) + if td: + pyray.draw_text(f"Z: {int(player.z+5)}", 10, 110, 30, BLUE) + + + +run() diff --git a/create_define_consts.py b/create_define_consts.py deleted file mode 100644 index 6817e4c..0000000 --- a/create_define_consts.py +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -from raylib import rl, ffi - -from inspect import ismethod, getmembers, isbuiltin -import inflection, sys, json, re - -two_or = re.compile(r'''\(\s*([^\s]*)\s*\|\s*([^\s]*)\s*\)''') -three_or = re.compile(r'''\(\s*([^\s]*)\s*\|\s*([^\s]*)\s*\|\s*(^\s*)\s*\)''') -two_mult = re.compile(r'''\(\s*([^\s]*)\s*\*\s*([^\s]*)\s*\)''') -two_div = re.compile(r'''\(\s*([^\s]*)\s*/\s*([^\s]*)\s*\)''') - -def process(filename): - f = open(filename, "r") - js = json.load(f) - known_define = [] - known_enum = [] - for e in js['enums']: - if e['name'] and e['values']: - for v in e['values']: - if v['name']: - known_enum.append(str(v['name']).strip()) - for e in js['defines']: - if e['type'] in ('INT', 'FLOAT', 'STRING'): - if e['type'] == 'INT': - print(e['name'] + ": int = " + str(e['value']).strip()) - elif e['type'] == 'FLOAT': - print(e['name'] + ": float = " + str(e['value']).strip()) - else: - print(e['name'] + ": str = \"" + str(e['value']).strip() + '"') - known_define.append(str(e['name']).strip()) - elif e['type'] == "UNKNOWN": - strval = str(e['value']).strip() - if strval.startswith("__"): - continue - if strval in known_enum: - print(e['name'] + " = raylib." + strval) - elif strval in known_define: - print(e['name'] + " = " + strval) - else: - matches = two_or.match(strval) - if not matches: - matches = three_or.match(strval) - if matches: - match_defs = [str(m).strip() for m in matches.groups()] - if all(d in known_enum for d in match_defs): - print(e['name'] + " = " + " | ".join(("raylib."+m) for m in match_defs)) - elif all(d in known_define for d in match_defs): - print(e['name'] + " = " + " | ".join(match_defs)) - else: - continue - known_define.append(str(e['name']).strip()) - elif e['type'] == "FLOAT_MATH": - strval = str(e['value']).strip() - matches = two_mult.match(strval) - if matches: - match_defs = [str(m).strip() for m in matches.groups()] - match_parts = [] - for m in match_defs: - if "." in m: - match_parts.append(m.rstrip("f")) - else: - match_parts.append(m) - if all(d in known_enum for d in match_parts): - print(e['name'] + " = " + " * ".join(("raylib." + m) for m in match_parts)) - elif all(d in known_define for d in match_parts): - print(e['name'] + " = " + " * ".join(match_parts)) - else: - matches = two_div.match(strval) - if matches: - match_defs = [str(m).strip() for m in matches.groups()] - match_parts = [] - for m in match_defs: - if "." in m: - match_parts.append(m.rstrip("f")) - else: - match_parts.append(m) - if any(d in known_enum for d in match_parts): - print(e['name'] + " = " + " / ".join(("raylib." + m) for m in match_parts)) - elif any(d in known_define for d in match_parts): - print(e['name'] + " = " + " / ".join(match_parts)) - else: - continue - -print("import raylib\n") - -process("raylib.json") -process("raymath.json") -process("rlgl.json") -process("raygui.json") -process("physac.json") -process("glfw3.json") - diff --git a/create_enums.py b/create_enums.py deleted file mode 100644 index d7fbeec..0000000 --- a/create_enums.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -from raylib import rl, ffi - -from inspect import ismethod, getmembers, isbuiltin -import inflection, sys, json - -def process(filename): - f = open(filename, "r") - js = json.load(f) - - for e in js['enums']: - if e['name'] and e['values']: - print ("class "+e['name']+"("+"IntEnum):") - print(f' """{e['description']}."""') - for value in e['values']: - print(" "+value['name']+" = "+str(value['value'])) - print("") - -print("""from enum import IntEnum -""") - -process("raylib.json") -process("raygui.json") -process("glfw3.json") -process("physac.json") diff --git a/create_stub_pyray.py b/create_stub_pyray.py deleted file mode 100644 index fb334e7..0000000 --- a/create_stub_pyray.py +++ /dev/null @@ -1,196 +0,0 @@ -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -from pathlib import Path -from raylib import rl, ffi -from pyray import _underscore -from inspect import ismethod, getmembers, isbuiltin -import inflection, sys, json - -known_functions = {} -known_structs = {} -for filename in (Path("raylib.json"), Path("raymath.json"), Path("rlgl.json"), Path("raygui.json"), Path("physac.json"), - Path("glfw3.json")): - f = open(filename, "r") - js = json.load(f) - for fn in js["functions"]: - if fn["name"] not in known_functions: - known_functions[fn["name"]] = fn - for st in js["structs"]: - if st["name"] not in known_structs: - known_structs[st["name"]] = st - for e in js['enums']: - if e['name'] and e['values']: - print("class "+e['name']+"(int):") - print(f' """{e['description']}."""') - for value in e['values']: - print(" "+value['name']+" = "+str(value['value'])) - print("") - - -def ctype_to_python_type(t): - if t == '_Bool': - return "bool" - elif t == 'void': - return 'None' - elif t == "long": - return "int" - elif t == "unsigned long long": - return "int" - elif t == "uint64_t": - return "int" - elif t == "short": - return "int" - elif t == "unsigned short": - return "int" - elif t == "double": - return "float" - elif "char * *" in t: - return "list[str]" - elif "char *" in t: - return "str" - elif t == "char": - return "str" # not sure about this one - elif t == "unsigned char": - return "int" - elif "*" in t: - return "Any" - elif "[" in t: - return "list" # TODO FIXME type of items in the list - elif t.startswith("struct"): - return t.replace("struct ", "") - elif t.startswith("unsigned"): - return t.replace("unsigned ", "") - elif t.startswith("enum"): - return t.replace("enum ", "") - else: - return t - - -print("""from typing import Any -from warnings import deprecated -import _cffi_backend # type: ignore - -ffi: _cffi_backend.FFI -PhysicsShapeType = int -""") - -# These words can be used for c arg names, but not in python -reserved_words = ("in", "list", "tuple", "set", "dict", "from", "range", "min", "max", "any", "all", "len") - -for name, attr in getmembers(rl): - uname = _underscore(name) - if isbuiltin(attr) or str(type(attr)) == "": - json_object = known_functions.get(name, None) - if json_object is None: - # this is _not_ an exported function from raylib, raymath, rlgl raygui or physac - # so we don't want it in the pyray API - continue - sig = "" - for i, arg in enumerate(ffi.typeof(attr).args): - param_name = arg.cname.replace("struct", "").replace("char *", "str").replace("*", - "_pointer").replace( - " ", "") + "_" + str(i) - if 'params' in json_object: - p = json_object['params'] - param_name = list(p)[i]['name'] - # don't use a python reserved word: - if param_name in reserved_words: - param_name = param_name + "_" + str(i) - param_type = ctype_to_python_type(arg.cname) - if "struct" in arg.cname: - param_type += "|list|tuple" - sig += f"{param_name}: {param_type}," - - return_type = ffi.typeof(attr).result.cname - - description = attr.__doc__ - - if 'description' in json_object: - description = json_object['description'] - - if 'physics' in uname: - print('@deprecated("Raylib no longer recommends the use of Physac library")') - print(f'def {uname}({sig}) -> {ctype_to_python_type(return_type)}:') - print(f' """{description}."""') - print(f' ...') - - elif str(type(attr)) == "": - return_type = ffi.typeof(attr).result.cname - print( - f'def {uname}(*args) -> {ctype_to_python_type(return_type)}:\n """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""\n ...') - else: - # print("*****", str(type(attr))) - t = str(type(attr))[8:-2] # this isolates the type - if t != "int": - print(f"{name}: {t}") - -for struct in ffi.list_types()[0]: - print("processing", struct, file=sys.stderr) - - if ffi.typeof(struct).kind == "struct": - json_object = known_structs.get(struct, None) - if json_object is None: - # this is _not_ an exported struct from raylib, raymath, rlgl raygui or physac - # so we don't want it in the pyray API - continue - if ffi.typeof(struct).fields is None: - print("weird empty struct, skipping " + struct, file=sys.stderr) - continue - print(f"class {struct}:") - print(f' """{known_structs[struct]['description']}."""') - sig = "" - for arg in ffi.typeof(struct).fields: - ptype = ctype_to_python_type(arg[1].type.cname) - if arg[1].type.kind == "struct": - ptype += "|list|tuple" - sig += f", {arg[0]}: {ptype}|None = None" - print(f" def __init__(self{sig}):") - - for arg in ffi.typeof(struct).fields: - print(f" self.{arg[0]}:{ctype_to_python_type(arg[1].type.cname)} = {arg[0]} # type: ignore") - - # elif ffi.typeof(struct).kind == "enum": - # print(f"{struct}: int") - else: - print("WARNING: SKIPPING UNKNOWN TYPE", ffi.typeof(struct), file=sys.stderr) - -print(""" -LIGHTGRAY : Color -GRAY : Color -DARKGRAY : Color -YELLOW : Color -GOLD : Color -ORANGE : Color -PINK : Color -RED : Color -MAROON : Color -GREEN : Color -LIME : Color -DARKGREEN : Color -SKYBLUE : Color -BLUE : Color -DARKBLUE : Color -PURPLE : Color -VIOLET : Color -DARKPURPLE : Color -BEIGE : Color -BROWN : Color -DARKBROWN : Color -WHITE : Color -BLACK : Color -BLANK : Color -MAGENTA : Color -RAYWHITE : Color -""") diff --git a/create_stub_static.py b/create_stub_static.py deleted file mode 100644 index 0c43c6d..0000000 --- a/create_stub_static.py +++ /dev/null @@ -1,186 +0,0 @@ -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -from pathlib import Path -from raylib import rl, ffi -from inspect import ismethod, getmembers, isbuiltin -import inflection, sys, json - -known_functions = {} -known_structs = {} -for filename in (Path("raylib.json"), Path("raymath.json"), Path("rlgl.json"), Path("raygui.json"), Path("physac.json"), - Path("glfw3.json")): - f = open(filename, "r") - js = json.load(f) - for fn in js["functions"]: - if fn["name"] not in known_functions: - known_functions[fn["name"]] = fn - for st in js["structs"]: - if st["name"] not in known_structs: - known_structs[st["name"]] = st - - -def ctype_to_python_type(t): - if t == '_Bool': - return "bool" - elif t == 'void': - return 'None' - elif t == "long": - return "int" - elif t == "unsigned long long": - return "int" - elif t == "uint64_t": - return "int" - elif t == "short": - return "int" - elif t == "unsigned short": - return "int" - elif t == "double": - return "float" - elif "char * *" in t: - return "list[bytes]" - elif "char *" in t: - return "bytes" - elif "char" in t: - return "bytes" # not sure about this one - elif "*" in t: - return "Any" - elif "[" in t: - return "list" # TODO FIXME type of items in the list - elif t.startswith("struct"): - return t.replace("struct ", "") - elif t.startswith("unsigned"): - return t.replace("unsigned ", "") - elif t.startswith("enum"): - return t.replace("enum ", "") - else: - return t - - -print("""from typing import Any -from warnings import deprecated -import _cffi_backend # type: ignore - -ffi: _cffi_backend.FFI -rl: _cffi_backend.Lib -PhysicsShapeType = int - -class struct: ... - -""") - -# These words can be used for c arg names, but not in python -reserved_words = ("in", "list", "tuple", "set", "dict", "from", "range", "min", "max", "any", "all", "len") - -for name, attr in getmembers(rl): - uname = name - if isbuiltin(attr) or str(type(attr)) == "": - json_object = known_functions.get(name, {}) - sig = "" - for i, arg in enumerate(ffi.typeof(attr).args): - if ")(" in arg.cname: - # fn signature in arg types - param_name = str(arg.cname).split("(", 1)[0] + "_callback_" + str(i) - else: - param_name = arg.cname.replace("struct", "").replace("char *", "str").replace("*", - "_pointer").replace(" ", - "") + "_" + str( - i) - if 'params' in json_object: - p = json_object['params'] - # print("param_name: ", param_name, "i", i, "params: ",p,file=sys.stderr) - param_name = list(p)[i]['name'] - # don't use a python reserved word: - if param_name in reserved_words: - param_name = param_name + "_" + str(i) - param_type = ctype_to_python_type(arg.cname) - if "struct" in arg.cname: - param_type += "|list|tuple" - sig += f"{param_name}: {param_type}," - - return_type = ffi.typeof(attr).result.cname - description = attr.__doc__ - - if 'description' in json_object: - description = json_object['description'] - - if 'Physics' in uname: - print('@deprecated("Raylib no longer recommends the use of Physac library")') - print(f'def {uname}({sig}) -> {ctype_to_python_type(return_type)}:') - print(f' """{description}."""') - print(f' ...') - - - elif str(type(attr)) == "": - return_type = ffi.typeof(attr).result.cname - print( - f'def {uname}(*args) -> {ctype_to_python_type(return_type)}:\n """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI"""\n ...') - else: - # print("*****", str(type(attr))) - print(f"{name}: {str(type(attr))[8:-2]}") # this isolates the type - -for struct in ffi.list_types()[0]: - print("processing", struct, file=sys.stderr) - if ffi.typeof(struct).kind == "struct": - # if ffi.typeof(struct).fields is None: - # print("weird empty struct, skipping", file=sys.stderr) - # continue - print(f"class {struct}:") - # sig = "" - fields = ffi.typeof(struct).fields - if fields is not None: - #print(ffi.typeof(struct).fields) - #print(f" {arg}: {arg}") - # print(f" def __init__(self{sig}):") - # - for arg in ffi.typeof(struct).fields: - print(f" {arg[0]}: {ctype_to_python_type(arg[1].type.cname)}") - else: - print(" ...") - # print(f" self.{arg[0]}={arg[0]}") - - elif ffi.typeof(struct).kind == "enum": - print(f"{struct} = int") - else: - print("WARNING: SKIPPING UNKNOWN TYPE", ffi.typeof(struct), file=sys.stderr) - - -print(""" -LIGHTGRAY : Color -GRAY : Color -DARKGRAY : Color -YELLOW : Color -GOLD : Color -ORANGE : Color -PINK : Color -RED : Color -MAROON : Color -GREEN : Color -LIME : Color -DARKGREEN : Color -SKYBLUE : Color -BLUE : Color -DARKBLUE : Color -PURPLE : Color -VIOLET : Color -DARKPURPLE : Color -BEIGE : Color -BROWN : Color -DARKBROWN : Color -WHITE : Color -BLACK : Color -BLANK : Color -MAGENTA : Color -RAYWHITE : Color -""") diff --git a/docs-src/BUILDING.rst b/docs-src/BUILDING.rst deleted file mode 120000 index 0cbe2c2..0000000 --- a/docs-src/BUILDING.rst +++ /dev/null @@ -1 +0,0 @@ -../BUILDING.rst \ No newline at end of file diff --git a/docs-src/Makefile b/docs-src/Makefile deleted file mode 100644 index d4bb2cb..0000000 --- a/docs-src/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs-src/README.md b/docs-src/README.md deleted file mode 120000 index 32d46ee..0000000 --- a/docs-src/README.md +++ /dev/null @@ -1 +0,0 @@ -../README.md \ No newline at end of file diff --git a/docs-src/RPI.rst b/docs-src/RPI.rst deleted file mode 120000 index 60349ff..0000000 --- a/docs-src/RPI.rst +++ /dev/null @@ -1 +0,0 @@ -../RPI.rst \ No newline at end of file diff --git a/docs-src/_config.yml b/docs-src/_config.yml deleted file mode 100644 index c419263..0000000 --- a/docs-src/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/docs-src/conf.py b/docs-src/conf.py deleted file mode 100644 index 9cf3c85..0000000 --- a/docs-src/conf.py +++ /dev/null @@ -1,65 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import os -import sys -import sphinx_rtd_theme -sys.path.insert(0, os.path.abspath('../')) - - -# -- Project information ----------------------------------------------------- - -project = 'Raylib Python' -copyright = '2021, Richard Smith' -author = 'Richard Smith' - - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.autosummary', 'myst_parser', 'autoapi.extension', "sphinx_rtd_theme", 'sphinx.ext.todo'] - -autoapi_dirs = ['../raylib', '../pyray'] - -autoapi_file_patterns = ['*.pyi', '*.py'] - -autoapi_generate_api_docs = False - - -autosummary_generate = True - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "sphinx_rtd_theme" - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -pygments_style = 'sphinx' - -todo_include_todos = True \ No newline at end of file diff --git a/docs-src/dynamic.rst b/docs-src/dynamic.rst deleted file mode 120000 index 1ffa1a9..0000000 --- a/docs-src/dynamic.rst +++ /dev/null @@ -1 +0,0 @@ -../dynamic/README.rst \ No newline at end of file diff --git a/docs-src/index.rst b/docs-src/index.rst deleted file mode 100644 index 2177832..0000000 --- a/docs-src/index.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. RL Zero documentation master file, created by - sphinx-quickstart on Mon Jul 12 14:03:57 2021. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Raylib Python -=================================== - -.. toctree:: - :maxdepth: 1 - :caption: Contents: - - README - pyray - raylib - dynamic - BUILDING - RPI - - -* :ref:`search` - - - - diff --git a/docs-src/make.bat b/docs-src/make.bat deleted file mode 100644 index 922152e..0000000 --- a/docs-src/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=. -set BUILDDIR=_build - -if "%1" == "" goto help - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% - -:end -popd diff --git a/docs-src/pyray.rst b/docs-src/pyray.rst deleted file mode 100644 index 2a2ac0e..0000000 --- a/docs-src/pyray.rst +++ /dev/null @@ -1,68 +0,0 @@ -Python API -============== - -This is a wrapper around the C API with some syntactic sugar. - -The API is *still the same as Raylib*, so you should still reply on: - -* `the C Raylib docs `_ - -* `the C Raylib examples `_ - -* `the C Raylib header file `_ - - -The *differences* are: - -* the function names are in **snake_case**. - -* Some string and pointer conversions are handled automatically. - -* There are some helper functions to create structures. - -Examples --------- - -Example program: - -.. code-block:: - - import pyray as pr - - pr.init_window(800, 450, "Hello Pyray") - pr.set_target_fps(60) - - camera = pr.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0) - - while not pr.window_should_close(): - pr.update_camera(camera, pr.CAMERA_ORBITAL) - pr.begin_drawing() - pr.clear_background(pr.RAYWHITE) - pr.begin_mode_3d(camera) - pr.draw_grid(20, 1.0) - pr.end_mode_3d() - pr.draw_text("Hello world", 190, 200, 20, pr.VIOLET) - pr.end_drawing() - pr.close_window() - -.. tip:: New in 3.7.0.post9: - - You can also now import the functions with no prefix: - - .. code-block:: - - from pyray import * - - init_window(800, 450, "Raylib texture test") - ... - - -`See all examples here `_ - - -API reference -------------- - -.. autoapimodule:: pyray - :members: - :undoc-members: diff --git a/docs-src/raylib.rst b/docs-src/raylib.rst deleted file mode 100644 index b3119dd..0000000 --- a/docs-src/raylib.rst +++ /dev/null @@ -1,63 +0,0 @@ -C API -============= - -The goal of the C API is make usage as similar to the original C as CFFI will allow. -So the `example programs `_ -are very, very similar to the C originals. - -Example program: - -.. code-block:: - - from raylib import * - - InitWindow(800, 450, b"Hello Raylib") - SetTargetFPS(60) - - camera = ffi.new("struct Camera3D *", [[18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0]) - - while not WindowShouldClose(): - UpdateCamera(camera, CAMERA_ORBITAL) - BeginDrawing() - ClearBackground(RAYWHITE) - BeginMode3D(camera[0]) - DrawGrid(20, 1.0) - EndMode3D() - DrawText(b"Hellow World", 190, 200, 20, VIOLET) - EndDrawing() - CloseWindow() - -If you want to be more portable (i.e. same code will work with dynamic bindings) you can prefix the functions like this: - -.. code-block:: - - from raylib import ffi, rl, colors - - rl.InitWindow(800, 450, b"Hello Raylib") - rl.SetTargetFPS(60) - - ... - - - -.. note:: Whenever you need to convert stuff between C and Python see https://cffi.readthedocs.io - -.. important:: Your **primary reference** should always be - - * `the C Raylib docs `_ - - * `the C Raylib examples `_ - - * `the C Raylib header file `_ - -However, here is a list of available functions: - -Functions API reference ------------------------ - -.. autoapimodule:: raylib - :members: - :undoc-members: - - - diff --git a/docs-src/requirements.txt b/docs-src/requirements.txt deleted file mode 100644 index 9e4694f..0000000 --- a/docs-src/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -myst_parser diff --git a/docs/.buildinfo b/docs/.buildinfo deleted file mode 100644 index 48257a1..0000000 --- a/docs/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: f2032a6434b52f7c68551d0ad70d555b -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/docs/BUILDING.html b/docs/BUILDING.html deleted file mode 100644 index b3a1d99..0000000 --- a/docs/BUILDING.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - - Building from source — Raylib Python documentation - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Building from source

-
-

Have Pip build from source

-

This is useful if the binaries don’t work on your system, or you want to use a newer version of Raylib.

-

First make sure Raylib is installed. On Linux/Mac it must include the pkg-config files. Best way to ensure this -is to compile and install Raylib using CMake: https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux#build-raylib-using-cmake

-

Requirements for build: cmake, pkg-config.

-
cd raylib-5.0
-mkdir build
-cd build
-cmake  -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release ..
-make
-sudo make install
-
-
-

Then ask Pip to build from source:

-
pip3 install --no-cache-dir --no-binary raylib --upgrade --force-reinstall raylib
-
-
-
-
-

Or, Build from source manually

-

Useful if the Pip build doesn’t work and you want to debug it, or you want to contribute to the -project.

-
-

Attention

-

If the Pip build doesn’t work, please submit a bug. (And if you have -fixed it, a PR.)

-
-

Manual instructions follow, but are probably outdated, so see instead how we actually build the wheels -at https://github.com/electronstudio/raylib-python-cffi/blob/master/.github/workflows/build.yml

-
-

Windows manual build

-

Clone this repo including submodules so you get correct version of -Raylib.

-
git clone --recurse-submodules https://github.com/electronstudio/raylib-python-cffi
-
-
-

Open Visual C++ command shell.

-

Fix the symlink that doesnt work on Windows

-
cd raylib-python-cffi
-copy raylib-c\src\raylib.h raylib\raylib.h
-
-
-

Build and install Raylib from the raylib-c directory.

-
cd raylib-python-cffi/raylib-c
-mkdir build
-cd build
-cmake -DWITH_PIC=on -DCMAKE_BUILD_TYPE=Release ..
-msbuild raylib.sln /target:raylib /property:Configuration=Release
-copy raylib\Release\raylib.lib ..\..
-cd ..\..
-
-
-

To build a binary wheel distribution:

-
rmdir /Q /S build
-pip3 install cffi
-pip3 install wheel
-python setup.py bdist_wheel
-
-
-
-

Todo

-

There’s a hardcoded path (to the raylib header files) in raylib/build.py you will probably need to edit. -Would be useful if some Windows user could figure out how to auto detect this.

-
-

Then install it:

-
pip3 install dist\raylib-3.7.0-cp37-cp37m-win_amd64.whl
-
-
-

(Note: your wheel’s filename will probably be different than the one -here.)

-
-
-

Linux manual build

-

Clone this repo including submodules so you get correct version of -Raylib.

-
git clone --recurse-submodules https://github.com/electronstudio/raylib-python-cffi
-
-
-

Build and install Raylib from the raylib-c directory.

-
-

Note

-

You can instead use a different version of Raylib you installed from elsewhere, and it should still -work!

-
-
sudo apt install cmake libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev pkg-config cmake
-cd raylib-python-cffi/raylib-c
-mkdir build
-cd build
-cmake -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release ..
-sudo make install
-
-
-
-

Note

-

Optional: Build the Raylib shared libs, if you plan to use -raylib_dynamic binding.

-
rm -rf *
-cmake -DWITH_PIC=on -DBUILD_SHARED_LIBS=on -DCMAKE_BUILD_TYPE=Release ..
-make
-sudo make install
-
-
-
-
cd ../..
-
-
-

Build the Python library:

-
pip3 install cffi
-rm -rf build raylib/_raylib_cffi.*
-python3 raylib/build.py
-
-
-
-

Note

-

(Optional) To update the Linux dynamic libs (names will be different on other platforms):

-
rm dynamic/raylib/*.so*
-cp -P /usr/local/lib/libraylib.so* dynamic/raylib/
-
-
-
-

To build a binary wheel distribution:

-
pip3 install wheel
-python3 setup.py bdist_wheel
-
-
-

Then install it:

-
pip3 install dist/raylib*.whl
-
-
-

To build a complete set of libs for Python 3.6, 3.7, 3.8 and 3.9:

-
./raylib/build_multi.sh
-
-
-
-

Warning

-

pypi wont accept Linux packages unless they are built ---plat-name manylinux2014_x86_64 so on linux please run -./raylib/build_multi_linux.sh )

-
-
-

Todo

-

Separate the instructions for preparing the dynamic module -from the instructions for building the static module!

-
-
-
-

Macos manual build

-

These instructions have been tested on Macos 10.14.

-

Clone this repo including submodules so you get correct version of -Raylib.

-
git clone --recurse-submodules https://github.com/electronstudio/raylib-python-cffi
-
-
-

Build and install Raylib from the raylib-c directory.

-
cd raylib-python-cffi/raylib-c/
-mkdir build
-cd build
-cmake -DWITH_PIC=on -DCMAKE_BUILD_TYPE=Release ..
-make
-sudo make install
-cd ../..
-
-
-

Build and install module.

-
pip3 install cffi
-rm -rf build raylib/_raylib_cffi.*
-python3 raylib/build.py
-pip3 install wheel
-python3 setup.py install
-
-
-
-
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/README.html b/docs/README.html deleted file mode 100644 index 334577a..0000000 --- a/docs/README.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - - - - Python Bindings for Raylib 5.5 — Raylib Python documentation - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Python Bindings for Raylib 5.5

-
-

Libraries: raymath, raygui, rlgl, physac and GLFW

-
-
-

Backends: Desktop, SDL, DRM, Web

-
-
-

Platforms: Windows, Mac, Linux, Raspberry Pi, Web

-

PyPI - Downloads

-

Chatroom: Discord

-

HELP WANTED: writing examples

-

Features:

-
    -
  • CFFI API static bindings.

  • -
  • Automatically generated to be as close as possible to -original Raylib.

  • -
  • Faster, fewer bugs and easier to maintain than ctypes.

  • -
  • Commercial-friendly license.

  • -
  • Docstrings and auto-completion.

  • -
  • Type checking with Mypy

  • -
-

Full documentation

-
-
-
-

Quickstart

-

pip3 install raylib==5.5.0.2 --break-system-packages

-
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

-

If you are on a modern Linux you will probably want to create a venv:

-
python3 -m venv venv
-source venv/bin/activate
-
-
-

Then make sure you have the latest pip installed:

-
python3 -m pip install --upgrade pip
-
-
-

Then install

-
python3 -m pip install setuptools
-python3 -m pip install raylib==5.5.0.2
-
-
-

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 rather than WSL, MSYS, etc.

-
-
-

MacOS

-

Binaries require:

-
    -
  • arm64 MacOS 14

  • -
  • x64 MacOS 10.13, 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.5.0.2
-
-
-

(I do have binaries for arm64 MacOS 11, 12 and 13 but I have no way of testing they work, so post an issue -if you want to test them.)

-
-
-

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 binaries are built on Raspberry Pi arm64 Bullseye with OpenGL 2.0 -so may not work on other boards.

-
-
-

Raspberry Pi

-

Using on Rasperry Pi

-
-
-
-

Backends

-
-

Dynamic binding version

-

There is now a separate dynamic version of this binding:

-
python3 -m pip uninstall raylib
-python3 -m pip install raylib_dynamic
-
-
-

It works on some systems where the static version doesn’t, but be sure to read these caveats before using it

-

You can’t have multiple raylib packages installed at once.

-
-
-

SDL backend

-

This is not well tested but has better support for controllers:

-
python3 -m pip uninstall raylib
-python3 -m pip install raylib_sdl
-
-
-

You can’t have multiple raylib packages 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 raylib packages installed at once.

-
-
-

Problems?

-

If it doesn’t work, try to build manually.. If that works then submit an issue -to let us know what you did.

-

If you need help you can try asking on our discord. There is also a large Raylib discord -for issues that are not Python-specific.

-

If it still doesn’t work, submit an issue.

-
-
-
-

How to use

-

There are two modules in the raylib package, raylib and pyray. (There is no separate package for -pyray. Do not pip install pyray). You can use either or both:

-
-

If you are familiar with C coding and the Raylib C library and you want to use an exact copy of the C API

-

Use the raylib module.

-
-
-

If you prefer a more Pythonistic API

-

Use the pyray module.

-
-
-
-

Running in a web browser

-

Pygbag >=0.8.7 supports running in a web browser. Usually the latest git version -is recommended.

-

Make a folder my_project with a file main.py:

-
# /// script
-# dependencies = [
-#     "cffi",
-#     "raylib"
-# ]
-# ///
-import asyncio
-import platform
-from pyray import *
-
-async def main():   # You MUST have an async main function
-    init_window(500, 500, "Hello")
-    platform.window.window_resize()  # You MAY want to add this line
-    while not window_should_close():
-        begin_drawing()
-        clear_background(WHITE)
-        draw_text("Hello world", 190, 200, 20, VIOLET)
-        end_drawing()
-        await asyncio.sleep(0) # You MUST call this in your main loop
-    close_window()
-
-asyncio.run(main())
-
-
-

Then to create the web files and launch a web server:

-
python3.12 -m pip install --user --upgrade pygbag
-python3.12 -m pygbag --PYBUILD 3.12 --ume_block 0 --template noctx.tmpl --git my_project
-
-
-

Point your browser to http://localhost:8000

-

Some features may not work, so you can disable them like this:

-
if platform.system() != "Emscripten":  # audio may not work on current version of emscripten
-    init_audio_device()
-
-
-

This is all done by Pygbag rather than by me, so you should probably contact them with any issues. -Carefully read all their documentation.

-

It does work for most of these examples

-
-
-

App showcase

-

Tempest-raylib

-

KarabinerKeyboard

-

PyTaiko

-

DOOM-Clone

-

Tanki

-

Alloy Bloxel Editor

-

Eidolon

-

Add your app here!

-
-
-

RLZero

-

A related library (that is a work in progress!):

-

A simplified API for Raylib for use in education and to enable beginners to create 3d games

-
-
-

Help wanted

-
    -
  • Converting more examples from C to Python

  • -
  • Testing on more platforms

  • -
-
-
-

License

-

Eclipse Public License, so you are free to -statically link and use in non-free / proprietary / commercial projects!

-
-
-

Performance

-

If you need more performance, do in this order:

-
    -
  1. Use Pypy rather than standard CPython. It is much, much faster and will make more difference than any other optimisations you might do.

  2. -
  3. Every call to C is costly, so it’s slightly faster if you use Python data structures and functions when calculating -in your update loop -and then only convert them to C data structures when you have to call the C functions for drawing.

  4. -
  5. The raylib.* functions are potentially slightly faster than the pyray.* equivalents, so if you need a tiny bit more performance -you can switch your inner loop functions to these.

  6. -
  7. There is a version of Python that is faster than Pypy: GraalPy. However it’s not fully compatible with all Python -packages. It doesn’t work with CFFI and so doesn’t work with this binding. But it is compatible with the -Java binding, Jaylib! There is an example of this here: https://github.com/electronstudio/megabunny/tree/master/raylib-python-jaylib

  8. -
-
-

Bunnymark

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Library

Implementation

Bunnies (60 FPS)

Percentage

Raylib 5.0

C

180000

100%

Raylib Python CFFI 5.0.0.2

Python 3.12

10500

5.8%

Raylib Python CFFI 5.0.0.2

Pypy 3.10

95000

53%

Raylib 3.7

C

168100

100%

Raylib Python CFFI 3.7

Pypy 3.7

33800

20%

Raylib Python CFFI 3.7

Python 3.9

7700

4.5%

Raylib Python CFFI 3.7

Python 3.9 Nuitka

8600

5.1%

Raylib Python CFFI 3.7 Dynamic

Python 3.9

6300

3.7%

-

See also https://github.com/electronstudio/megabunny/

-
-
-
-

Packaging your app

-

You can create a standalone binary using the Nuitka compiler. For example, here is how to package Bunnymark:

-
pip3 install nuitka
-cd examples/textures
-python3 -m nuitka --onefile --linux-onefile-icon resources/wabbit_alpha.png textures_bunnymark.py
-
-
-
- - - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/RPI.html b/docs/RPI.html deleted file mode 100644 index b54e020..0000000 --- a/docs/RPI.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - - Raspberry Pi — Raylib Python documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Raspberry Pi

-

Please use Raspberry Pi OS Bookworm. Bullseye should also work. Older OSes are not tested.

-
-

Option 1: Binary wheel

-

We have published binary wheels compiled for 64-bit Raspberry OS Bullseye in X11 mode.

-
python -m pip install --break-system-packages raylib
-
-
-

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

-

This should work for everyone.

-
sudo apt update
-sudo apt install python3-pip cmake libegl1-mesa-dev libgbm-dev libgles2-mesa-dev libdrm-dev libglfw3-dev
-git clone https://github.com/raysan5/raylib.git --branch 5.0 --single-branch
-cd raylib
-mkdir build
-rm -rf build/*
-cd build
-cmake -DPLATFORM="Desktop" -DOPENGL_VERSION=2.1 -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release ..
-make
-sudo make install
-sudo cp -r ../src/external/glfw/include/GLFW /usr/local/include/
-
-
-

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.5.0.0
-
-
-
-
-

Option 3: Compile Raylib from source DRM mode

-

This seems to work on Raspberry Pi 4. Note you must not be running X11 when you run your programs.

-

If you have ever installed Raylib or raylib-python-cffi before, remove all traces of it:

-
sudo apt remove raylib raylib-dev libraylib libraylib-dev
-sudo rm /usr/local/lib/pkgconfig/raylib.pc
-sudo rm -rf /usr/local/lib/libraylib.* /usr/lib/libraylib.*
-
-
-

Remove all GLFW:

-
sudo apt remove libglfw3-dev libglfw3
-sudo rm -rf /usr/local/include/GLFW
-
-
-

Build a shared lib version of Raylib in DRM mode and install to /usr:

-
sudo apt update
-sudo apt install python3-pip cmake libegl1-mesa-dev libgbm-dev libgles2-mesa-dev libdrm-dev
-git clone https://github.com/raysan5/raylib.git --branch 5.0 --single-branch
-cd raylib
-mkdir build
-rm rf build/*
-cd build
-cmake -DPLATFORM="DRM" -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
-make
-sudo make install
-
-
-

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.5.0.0
-
-
-
-

Attention

-

If you intend to use the Broadcom proprietary Open GL ES 2.0 drivers (the ones installed by Raspbian into /opt/vc and compiled in Raylib -with PLATFORM_RPI) be aware they not work with Bullseye and have not been tested with the bindings. They will probably -require additional linker arguments to be added to build.py. Suggest you try PLATFORM_DRM instead.

-
-
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/_sources/BUILDING.rst.txt b/docs/_sources/BUILDING.rst.txt deleted file mode 100644 index b9ccd84..0000000 --- a/docs/_sources/BUILDING.rst.txt +++ /dev/null @@ -1,221 +0,0 @@ -Building from source -==================== - -Have Pip build from source --------------------------- - -This is useful if the binaries don’t work on your system, or you want to use a newer version of Raylib. - -First make sure Raylib is installed. On Linux/Mac it must include the pkg-config files. Best way to ensure this -is to compile and install Raylib using CMake: https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux#build-raylib-using-cmake - -Requirements for build: cmake, pkg-config. - -:: - - cd raylib-5.0 - mkdir build - cd build - cmake -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - make - sudo make install - - - -Then ask Pip to build from source: - -:: - - pip3 install --no-cache-dir --no-binary raylib --upgrade --force-reinstall raylib - -Or, Build from source manually ------------------------------- - -Useful if the Pip build doesn’t work and you want to debug it, or you want to contribute to the -project. - -.. attention:: - If the Pip build doesn’t work, please submit a bug. (And if you have - fixed it, a PR.) - -Manual instructions follow, but are probably outdated, so see instead how we actually build the wheels -at https://github.com/electronstudio/raylib-python-cffi/blob/master/.github/workflows/build.yml - -Windows manual build -~~~~~~~~~~~~~~~~~~~~ - -Clone this repo including submodules so you get correct version of -Raylib. - -:: - - git clone --recurse-submodules https://github.com/electronstudio/raylib-python-cffi - -Open Visual C++ command shell. - -Fix the symlink that doesnt work on Windows - -:: - - cd raylib-python-cffi - copy raylib-c\src\raylib.h raylib\raylib.h - -Build and install Raylib from the raylib-c directory. - -:: - - cd raylib-python-cffi/raylib-c - mkdir build - cd build - cmake -DWITH_PIC=on -DCMAKE_BUILD_TYPE=Release .. - msbuild raylib.sln /target:raylib /property:Configuration=Release - copy raylib\Release\raylib.lib ..\.. - cd ..\.. - - - -To build a binary wheel distribution: - -:: - - rmdir /Q /S build - pip3 install cffi - pip3 install wheel - python setup.py bdist_wheel - -.. TODO:: - There's a hardcoded path (to the raylib header files) in `raylib/build.py` you will probably need to edit. - Would be useful if some Windows user could figure out how to auto detect this. - - -Then install it: - -:: - - pip3 install dist\raylib-3.7.0-cp37-cp37m-win_amd64.whl - -(Note: your wheel’s filename will probably be different than the one -here.) - -Linux manual build -~~~~~~~~~~~~~~~~~~~~~~ - -Clone this repo including submodules so you get correct version of -Raylib. - -:: - - git clone --recurse-submodules https://github.com/electronstudio/raylib-python-cffi - -Build and install Raylib from the raylib-c directory. - -.. note:: - You can instead use a different version of Raylib you installed from elsewhere, and it should still - work! - -:: - - sudo apt install cmake libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev pkg-config cmake - cd raylib-python-cffi/raylib-c - mkdir build - cd build - cmake -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - sudo make install - -.. note:: Optional: Build the Raylib shared libs, if you plan to use - ``raylib_dynamic`` binding. - - :: - - rm -rf * - cmake -DWITH_PIC=on -DBUILD_SHARED_LIBS=on -DCMAKE_BUILD_TYPE=Release .. - make - sudo make install - -:: - - cd ../.. - - -Build the Python library: - -:: - - pip3 install cffi - rm -rf build raylib/_raylib_cffi.* - python3 raylib/build.py - -.. note:: (Optional) To update the Linux dynamic libs (names will be different on other platforms): - - :: - - rm dynamic/raylib/*.so* - cp -P /usr/local/lib/libraylib.so* dynamic/raylib/ - -To build a binary wheel distribution: - -:: - - pip3 install wheel - python3 setup.py bdist_wheel - - -Then install it: - -:: - - pip3 install dist/raylib*.whl - -To build a complete set of libs for Python 3.6, 3.7, 3.8 and 3.9: - -:: - - ./raylib/build_multi.sh - -.. warning:: - pypi wont accept Linux packages unless they are built - ``--plat-name manylinux2014_x86_64`` so on linux please run - ``./raylib/build_multi_linux.sh`` ) - -.. TODO:: - Separate the instructions for preparing the dynamic module - from the instructions for building the static module! - - - -Macos manual build -~~~~~~~~~~~~~~~~~~~~~~ - -These instructions have been tested on Macos 10.14. - -Clone this repo including submodules so you get correct version of -Raylib. - -:: - - git clone --recurse-submodules https://github.com/electronstudio/raylib-python-cffi - -Build and install Raylib from the raylib-c directory. - -:: - - cd raylib-python-cffi/raylib-c/ - mkdir build - cd build - cmake -DWITH_PIC=on -DCMAKE_BUILD_TYPE=Release .. - make - sudo make install - cd ../.. - - -Build and install module. - -:: - - pip3 install cffi - rm -rf build raylib/_raylib_cffi.* - python3 raylib/build.py - pip3 install wheel - python3 setup.py install - - diff --git a/docs/_sources/README.md.txt b/docs/_sources/README.md.txt deleted file mode 100644 index 64c695b..0000000 --- a/docs/_sources/README.md.txt +++ /dev/null @@ -1,278 +0,0 @@ -# Python Bindings for Raylib 5.5 -## Libraries: raymath, raygui, rlgl, physac and GLFW -## Backends: Desktop, SDL, DRM, Web -## Platforms: Windows, Mac, Linux, Raspberry Pi, Web - -![PyPI - Downloads](https://img.shields.io/pypi/dm/raylib) - -Chatroom: [Discord](https://discord.gg/fKDwt85aX6) - -HELP WANTED: [writing examples](https://github.com/electronstudio/raylib-python-cffi/issues/155) - -Features: - -* CFFI API static bindings. -* Automatically generated to be as close as possible to -original Raylib. -* Faster, fewer bugs and easier to maintain than ctypes. -* Commercial-friendly license. -* Docstrings and auto-completion. -* Type checking with Mypy - - -[Full documentation](http://electronstudio.github.io/raylib-python-cffi) - -# Quickstart - -`pip3 install raylib==5.5.0.2 --break-system-packages` -```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 - -If you are on a modern Linux you will probably want to create a venv: - - python3 -m venv venv - source venv/bin/activate - -Then make sure you have the latest pip installed: - - python3 -m pip install --upgrade pip - -Then install - - python3 -m pip install setuptools - python3 -m pip install raylib==5.5.0.2 - -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 14 - * x64 MacOS 10.13, 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.5.0.2 - -(I do have binaries for arm64 MacOS 11, 12 and 13 but I have no way of testing they work, so post an issue -if you want to test them.) - -## 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 binaries are built on Raspberry Pi arm64 Bullseye with OpenGL 2.0 -so may not work on other boards. - -## Raspberry Pi - -[Using on Rasperry Pi](RPI.rst) - -# Backends - -## Dynamic binding version - -There is now a separate dynamic version of this binding: - - python3 -m pip uninstall raylib - python3 -m pip install raylib_dynamic - -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) - -You can't have multiple raylib packages installed at once. - -## SDL backend - -This is not well tested but has better support for controllers: - - python3 -m pip uninstall raylib - python3 -m pip install raylib_sdl - -You can't have multiple raylib packages 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 raylib packages installed at once. - -## Problems? - -If it doesn't work, [try to build manually.](BUILDING.rst). If that works then [submit an issue](https://github.com/electronstudio/raylib-python-cffi/issues) -to let us know what you did. - -If you need help you can try asking on [our discord](https://discord.gg/fKDwt85aX6). There is also a large [Raylib discord](https://discord.gg/raylib) -for issues that are not Python-specific. - -If it still doesn't work, [submit an issue](https://github.com/electronstudio/raylib-python-cffi/issues). - - -# How to use - -There are *two* modules in the raylib package, `raylib` and `pyray`. (There is no separate package for -pyray. Do *not* `pip install pyray`). You can use either or both: - -### If you are familiar with C coding and the Raylib C library and you want to use an exact copy of the C API - -Use [the raylib module](https://electronstudio.github.io/raylib-python-cffi/raylib.html). - -### If you prefer a more Pythonistic API - -Use [the pyray module](https://electronstudio.github.io/raylib-python-cffi/pyray.html). - -# Running in a web browser - -[Pygbag](https://pypi.org/project/pygbag/) >=0.8.7 supports running in a web browser. Usually the latest git version -is recommended. - -Make a folder `my_project` with a file `main.py`: - -```python -# /// script -# dependencies = [ -# "cffi", -# "raylib" -# ] -# /// -import asyncio -import platform -from pyray import * - -async def main(): # You MUST have an async main function - init_window(500, 500, "Hello") - platform.window.window_resize() # You MAY want to add this line - while not window_should_close(): - begin_drawing() - clear_background(WHITE) - draw_text("Hello world", 190, 200, 20, VIOLET) - end_drawing() - await asyncio.sleep(0) # You MUST call this in your main loop - close_window() - -asyncio.run(main()) -``` - -Then to create the web files and launch a web server: - - python3.12 -m pip install --user --upgrade pygbag - python3.12 -m pygbag --PYBUILD 3.12 --ume_block 0 --template noctx.tmpl --git my_project - -Point your browser to http://localhost:8000 - -Some features may not work, so you can disable them like this: - -```python -if platform.system() != "Emscripten": # audio may not work on current version of emscripten - init_audio_device() -``` - -This is all done by Pygbag rather than by me, so you should probably contact them with any issues. -Carefully read all their [documentation](https://pygame-web.github.io/). - -It does work for most of [these examples](https://electronstudio.github.io/raylib-python-cffi-pygbag-examples/) - -# App showcase - -[Tempest-raylib](https://github.com/Emtyloc/tempest-raylib) - -[KarabinerKeyboard](https://github.com/bilbofroggins/KarabinerKeyboard) - -[PyTaiko](https://github.com/Yonokid/PyTaiko) - -[DOOM-Clone](https://github.com/StanislavPetrovV/DOOM-Clone) - -[Tanki](https://github.com/pkulev/tanki) - -[Alloy Bloxel Editor](https://pebaz.itch.io/alloy-bloxel-editor) - -[Eidolon](https://github.com/Miou-zora/Eidolon) - -Add your app here! - -# RLZero - -A related library (that is a work in progress!): - -[A simplified API for Raylib for use in education and to enable beginners to create 3d games](https://github.com/electronstudio/rlzero) - -# Help wanted - - * Converting more examples from C to Python - * Testing on more platforms - -# License - -Eclipse Public License, so you are free to -statically link and use in non-free / proprietary / commercial projects! - -# Performance - -If you need more performance, do in this order: - -1. Use Pypy rather than standard CPython. It is much, much faster and will make more difference than any other optimisations you might do. - -2. Every call to C is costly, so it's slightly faster if you use Python data structures and functions when calculating -in your update loop -and then only convert them to C data structures when you have to call the C functions for drawing. - -3. The raylib.* functions are potentially *slightly* faster than the pyray.* equivalents, so if you need a tiny bit more performance -you can switch your inner loop functions to these. - -4. There is a version of Python that is faster than Pypy: GraalPy. However it's not fully compatible with all Python -packages. It doesn't work with CFFI and so doesn't work with this binding. But it *is* compatible with the -*Java* binding, Jaylib! There is an example of this here: https://github.com/electronstudio/megabunny/tree/master/raylib-python-jaylib - -## Bunnymark - - -| Library | Implementation | Bunnies (60 FPS) | Percentage | -|--------------------------------|-------------------|------------------|------------| -| Raylib 5.0 | C | 180000 | 100% | -| Raylib Python CFFI 5.0.0.2 | Python 3.12 | 10500 | 5.8% | -| Raylib Python CFFI 5.0.0.2 | Pypy 3.10 | 95000 | 53% | -| Raylib 3.7 | C | 168100 | 100% | -| Raylib Python CFFI 3.7 | Pypy 3.7 | 33800 | 20% | -| Raylib Python CFFI 3.7 | Python 3.9 | 7700 | 4.5% | -| Raylib Python CFFI 3.7 | Python 3.9 Nuitka | 8600 | 5.1% | -| Raylib Python CFFI 3.7 Dynamic | Python 3.9 | 6300 | 3.7% | - -See also https://github.com/electronstudio/megabunny/ - -# Packaging your app - -You can create a standalone binary using the Nuitka compiler. For example, here is how to package Bunnymark: - - pip3 install nuitka - cd examples/textures - python3 -m nuitka --onefile --linux-onefile-icon resources/wabbit_alpha.png textures_bunnymark.py - -# Advert - -[RetroWar: 8-bit Party Battle](https://store.steampowered.com/app/664240/RetroWar_8bit_Party_Battle/?git) is out now. Defeat up to 15 of your friends in a tournament of 80s-inspired retro mini games. - -[Coding Games With Pygame Zero & Python](https://github.com/electronstudio/pygame-zero-book) is -a book for Python beginners. diff --git a/docs/_sources/RPI.rst.txt b/docs/_sources/RPI.rst.txt deleted file mode 100644 index a5c62e3..0000000 --- a/docs/_sources/RPI.rst.txt +++ /dev/null @@ -1,97 +0,0 @@ -Raspberry Pi -==================== - -Please use Raspberry Pi OS Bookworm. Bullseye should also work. Older OSes are not tested. - -Option 1: Binary wheel ----------------------- - -We have published binary wheels compiled for 64-bit Raspberry OS Bullseye in X11 mode. - -:: - - python -m pip install --break-system-packages raylib - -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 ---------------------------------------------- - -This should work for everyone. - -:: - - sudo apt update - sudo apt install python3-pip cmake libegl1-mesa-dev libgbm-dev libgles2-mesa-dev libdrm-dev libglfw3-dev - git clone https://github.com/raysan5/raylib.git --branch 5.0 --single-branch - cd raylib - mkdir build - rm -rf build/* - cd build - cmake -DPLATFORM="Desktop" -DOPENGL_VERSION=2.1 -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. - make - sudo make install - sudo cp -r ../src/external/glfw/include/GLFW /usr/local/include/ - -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.5.0.0 - -Option 3: Compile Raylib from source DRM mode ---------------------------------------------- - -This seems to work on Raspberry Pi 4. Note you must not be running X11 when you run your programs. - -If you have ever installed Raylib or raylib-python-cffi before, remove all traces of it: - -:: - - sudo apt remove raylib raylib-dev libraylib libraylib-dev - sudo rm /usr/local/lib/pkgconfig/raylib.pc - sudo rm -rf /usr/local/lib/libraylib.* /usr/lib/libraylib.* - -Remove all GLFW: - -:: - - sudo apt remove libglfw3-dev libglfw3 - sudo rm -rf /usr/local/include/GLFW - -Build a shared lib version of Raylib in DRM mode and install to /usr: - -:: - - sudo apt update - sudo apt install python3-pip cmake libegl1-mesa-dev libgbm-dev libgles2-mesa-dev libdrm-dev - git clone https://github.com/raysan5/raylib.git --branch 5.0 --single-branch - cd raylib - mkdir build - rm rf build/* - cd build - cmake -DPLATFORM="DRM" -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr .. - make - sudo make install - - -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.5.0.0 - - - - -.. attention:: - - If you intend to use the Broadcom proprietary Open GL ES 2.0 drivers (the ones installed by Raspbian into ``/opt/vc`` and compiled in Raylib - with ``PLATFORM_RPI``) be aware they not work with Bullseye and have not been tested with the bindings. They will probably - require additional linker arguments to be added to ``build.py``. Suggest you try ``PLATFORM_DRM`` instead. diff --git a/docs/_sources/dynamic.rst.txt b/docs/_sources/dynamic.rst.txt deleted file mode 100644 index e2877bf..0000000 --- a/docs/_sources/dynamic.rst.txt +++ /dev/null @@ -1,41 +0,0 @@ -Dynamic Bindings -================ - -CFFI ABI dynamic bindings avoid the need to compile a C extension module. They now been moved to a separate module:: - - python3 -m pip install raylib_dynamic - -.. warning:: - - There have been some weird failures with dynamic bindings and ctypes bindings before and often the - failures are silent - so you don't even know something has gone wrong and you don't get proper stacktraces. Also the static bindings are faster. - Therefore I personally recommend the static ones. - But the dynamic bindings have the advantage that you don't need to compile anything to install. You just need a Raylib DLL. - -The API is exactly the same as the static one documented here. (Therefore you can't have both modules installed at once.) The only difference is you can't do:: - - from raylib import * - -Instead you have to do:: - - from raylib import rl - -Then you access the functions with ``rl.`` prefix. - -See https://github.com/electronstudio/raylib-python-cffi/blob/master/dynamic/test_dynamic.py for an example. - -If you use the ``rl.`` prefix then code will work on both static and dynamic bindings. - -.. tip:: - - If you access functions via ``import pyray`` then there is no difference at all, but be warned this hasn't been tested much. - -.. note:: - - Standard Raylib DLLs do not include additional libraries like Raygui, Physac, etc. So these functions won't work. - -.. important:: - - If your system already has the Raylib library installed, you can set the environment variable ``USE_EXTERNAL_RAYLIB`` and it will - always be used instead of the bundled DLLs. diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt deleted file mode 100644 index 2177832..0000000 --- a/docs/_sources/index.rst.txt +++ /dev/null @@ -1,25 +0,0 @@ -.. RL Zero documentation master file, created by - sphinx-quickstart on Mon Jul 12 14:03:57 2021. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Raylib Python -=================================== - -.. toctree:: - :maxdepth: 1 - :caption: Contents: - - README - pyray - raylib - dynamic - BUILDING - RPI - - -* :ref:`search` - - - - diff --git a/docs/_sources/pyray.rst.txt b/docs/_sources/pyray.rst.txt deleted file mode 100644 index 2a2ac0e..0000000 --- a/docs/_sources/pyray.rst.txt +++ /dev/null @@ -1,68 +0,0 @@ -Python API -============== - -This is a wrapper around the C API with some syntactic sugar. - -The API is *still the same as Raylib*, so you should still reply on: - -* `the C Raylib docs `_ - -* `the C Raylib examples `_ - -* `the C Raylib header file `_ - - -The *differences* are: - -* the function names are in **snake_case**. - -* Some string and pointer conversions are handled automatically. - -* There are some helper functions to create structures. - -Examples --------- - -Example program: - -.. code-block:: - - import pyray as pr - - pr.init_window(800, 450, "Hello Pyray") - pr.set_target_fps(60) - - camera = pr.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0) - - while not pr.window_should_close(): - pr.update_camera(camera, pr.CAMERA_ORBITAL) - pr.begin_drawing() - pr.clear_background(pr.RAYWHITE) - pr.begin_mode_3d(camera) - pr.draw_grid(20, 1.0) - pr.end_mode_3d() - pr.draw_text("Hello world", 190, 200, 20, pr.VIOLET) - pr.end_drawing() - pr.close_window() - -.. tip:: New in 3.7.0.post9: - - You can also now import the functions with no prefix: - - .. code-block:: - - from pyray import * - - init_window(800, 450, "Raylib texture test") - ... - - -`See all examples here `_ - - -API reference -------------- - -.. autoapimodule:: pyray - :members: - :undoc-members: diff --git a/docs/_sources/raylib.rst.txt b/docs/_sources/raylib.rst.txt deleted file mode 100644 index b3119dd..0000000 --- a/docs/_sources/raylib.rst.txt +++ /dev/null @@ -1,63 +0,0 @@ -C API -============= - -The goal of the C API is make usage as similar to the original C as CFFI will allow. -So the `example programs `_ -are very, very similar to the C originals. - -Example program: - -.. code-block:: - - from raylib import * - - InitWindow(800, 450, b"Hello Raylib") - SetTargetFPS(60) - - camera = ffi.new("struct Camera3D *", [[18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0]) - - while not WindowShouldClose(): - UpdateCamera(camera, CAMERA_ORBITAL) - BeginDrawing() - ClearBackground(RAYWHITE) - BeginMode3D(camera[0]) - DrawGrid(20, 1.0) - EndMode3D() - DrawText(b"Hellow World", 190, 200, 20, VIOLET) - EndDrawing() - CloseWindow() - -If you want to be more portable (i.e. same code will work with dynamic bindings) you can prefix the functions like this: - -.. code-block:: - - from raylib import ffi, rl, colors - - rl.InitWindow(800, 450, b"Hello Raylib") - rl.SetTargetFPS(60) - - ... - - - -.. note:: Whenever you need to convert stuff between C and Python see https://cffi.readthedocs.io - -.. important:: Your **primary reference** should always be - - * `the C Raylib docs `_ - - * `the C Raylib examples `_ - - * `the C Raylib header file `_ - -However, here is a list of available functions: - -Functions API reference ------------------------ - -.. autoapimodule:: raylib - :members: - :undoc-members: - - - diff --git a/docs/_static/_sphinx_javascript_frameworks_compat.js b/docs/_static/_sphinx_javascript_frameworks_compat.js deleted file mode 100644 index 8141580..0000000 --- a/docs/_static/_sphinx_javascript_frameworks_compat.js +++ /dev/null @@ -1,123 +0,0 @@ -/* Compatability shim for jQuery and underscores.js. - * - * Copyright Sphinx contributors - * Released under the two clause BSD licence - */ - -/** - * small helper function to urldecode strings - * - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL - */ -jQuery.urldecode = function(x) { - if (!x) { - return x - } - return decodeURIComponent(x.replace(/\+/g, ' ')); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} diff --git a/docs/_static/basic.css b/docs/_static/basic.css deleted file mode 100644 index 4738b2e..0000000 --- a/docs/_static/basic.css +++ /dev/null @@ -1,906 +0,0 @@ -/* - * Sphinx stylesheet -- basic theme. - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -div.section::after { - display: block; - content: ''; - clear: left; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin-top: 10px; -} - -ul.search li { - padding: 5px 0; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li p.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 360px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -a:visited { - color: #551A8B; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, figure.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, figure.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, figure.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -img.align-default, figure.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-default { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar, -aside.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px; - background-color: #ffe; - width: 40%; - float: right; - clear: right; - overflow-x: auto; -} - -p.sidebar-title { - font-weight: bold; -} - -nav.contents, -aside.topic, -div.admonition, div.topic, blockquote { - clear: left; -} - -/* -- topics ---------------------------------------------------------------- */ - -nav.contents, -aside.topic, -div.topic { - border: 1px solid #ccc; - padding: 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- content of sidebars/topics/admonitions -------------------------------- */ - -div.sidebar > :last-child, -aside.sidebar > :last-child, -nav.contents > :last-child, -aside.topic > :last-child, -div.topic > :last-child, -div.admonition > :last-child { - margin-bottom: 0; -} - -div.sidebar::after, -aside.sidebar::after, -nav.contents::after, -aside.topic::after, -div.topic::after, -div.admonition::after, -blockquote::after { - display: block; - content: ''; - clear: both; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - margin-top: 10px; - margin-bottom: 10px; - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table.align-default { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -th > :first-child, -td > :first-child { - margin-top: 0px; -} - -th > :last-child, -td > :last-child { - margin-bottom: 0px; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure, figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption, figcaption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number, -figcaption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text, -figcaption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist { - margin: 1em 0; -} - -table.hlist td { - vertical-align: top; -} - -/* -- object description styles --------------------------------------------- */ - -.sig { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; -} - -.sig-name, code.descname { - background-color: transparent; - font-weight: bold; -} - -.sig-name { - font-size: 1.1em; -} - -code.descname { - font-size: 1.2em; -} - -.sig-prename, code.descclassname { - background-color: transparent; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.sig-param.n { - font-style: italic; -} - -/* C++ specific styling */ - -.sig-inline.c-texpr, -.sig-inline.cpp-texpr { - font-family: unset; -} - -.sig.c .k, .sig.c .kt, -.sig.cpp .k, .sig.cpp .kt { - color: #0033B3; -} - -.sig.c .m, -.sig.cpp .m { - color: #1750EB; -} - -.sig.c .s, .sig.c .sc, -.sig.cpp .s, .sig.cpp .sc { - color: #067D17; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -:not(li) > ol > li:first-child > :first-child, -:not(li) > ul > li:first-child > :first-child { - margin-top: 0px; -} - -:not(li) > ol > li:last-child > :last-child, -:not(li) > ul > li:last-child > :last-child { - margin-bottom: 0px; -} - -ol.simple ol p, -ol.simple ul p, -ul.simple ol p, -ul.simple ul p { - margin-top: 0; -} - -ol.simple > li:not(:first-child) > p, -ul.simple > li:not(:first-child) > p { - margin-top: 0; -} - -ol.simple p, -ul.simple p { - margin-bottom: 0; -} - -aside.footnote > span, -div.citation > span { - float: left; -} -aside.footnote > span:last-of-type, -div.citation > span:last-of-type { - padding-right: 0.5em; -} -aside.footnote > p { - margin-left: 2em; -} -div.citation > p { - margin-left: 4em; -} -aside.footnote > p:last-of-type, -div.citation > p:last-of-type { - margin-bottom: 0em; -} -aside.footnote > p:last-of-type:after, -div.citation > p:last-of-type:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - -dl { - margin-bottom: 15px; -} - -dd > :first-child { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -.sig dd { - margin-top: 0px; - margin-bottom: 0px; -} - -.sig dl { - margin-top: 0px; - margin-bottom: 0px; -} - -dl > dd:last-child, -dl > dd:last-child > :last-child { - margin-bottom: 0; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -.classifier:before { - font-style: normal; - margin: 0 0.5em; - content: ":"; - display: inline-block; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -pre, div[class*="highlight-"] { - clear: both; -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; - white-space: nowrap; -} - -div[class*="highlight-"] { - margin: 1em 0; -} - -td.linenos pre { - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - display: block; -} - -table.highlighttable tbody { - display: block; -} - -table.highlighttable tr { - display: flex; -} - -table.highlighttable td { - margin: 0; - padding: 0; -} - -table.highlighttable td.linenos { - padding-right: 0.5em; -} - -table.highlighttable td.code { - flex: 1; - overflow: hidden; -} - -.highlight .hll { - display: block; -} - -div.highlight pre, -table.highlighttable pre { - margin: 0; -} - -div.code-block-caption + div { - margin-top: 0; -} - -div.code-block-caption { - margin-top: 1em; - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -table.highlighttable td.linenos, -span.linenos, -div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; - -webkit-user-select: text; /* Safari fallback only */ - -webkit-user-select: none; /* Chrome/Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+ */ -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - margin: 1em 0; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: absolute; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/docs/_static/css/badge_only.css b/docs/_static/css/badge_only.css deleted file mode 100644 index 88ba55b..0000000 --- a/docs/_static/css/badge_only.css +++ /dev/null @@ -1 +0,0 @@ -.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} \ No newline at end of file diff --git a/docs/_static/css/fonts/Roboto-Slab-Bold.woff b/docs/_static/css/fonts/Roboto-Slab-Bold.woff deleted file mode 100644 index 6cb6000..0000000 Binary files a/docs/_static/css/fonts/Roboto-Slab-Bold.woff and /dev/null differ diff --git a/docs/_static/css/fonts/Roboto-Slab-Bold.woff2 b/docs/_static/css/fonts/Roboto-Slab-Bold.woff2 deleted file mode 100644 index 7059e23..0000000 Binary files a/docs/_static/css/fonts/Roboto-Slab-Bold.woff2 and /dev/null differ diff --git a/docs/_static/css/fonts/Roboto-Slab-Regular.woff b/docs/_static/css/fonts/Roboto-Slab-Regular.woff deleted file mode 100644 index f815f63..0000000 Binary files a/docs/_static/css/fonts/Roboto-Slab-Regular.woff and /dev/null differ diff --git a/docs/_static/css/fonts/Roboto-Slab-Regular.woff2 b/docs/_static/css/fonts/Roboto-Slab-Regular.woff2 deleted file mode 100644 index f2c76e5..0000000 Binary files a/docs/_static/css/fonts/Roboto-Slab-Regular.woff2 and /dev/null differ diff --git a/docs/_static/css/fonts/fontawesome-webfont.eot b/docs/_static/css/fonts/fontawesome-webfont.eot deleted file mode 100644 index e9f60ca..0000000 Binary files a/docs/_static/css/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/docs/_static/css/fonts/fontawesome-webfont.svg b/docs/_static/css/fonts/fontawesome-webfont.svg deleted file mode 100644 index 855c845..0000000 --- a/docs/_static/css/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,2671 +0,0 @@ - - - - -Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, -Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/_static/css/fonts/fontawesome-webfont.ttf b/docs/_static/css/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2..0000000 Binary files a/docs/_static/css/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/docs/_static/css/fonts/fontawesome-webfont.woff b/docs/_static/css/fonts/fontawesome-webfont.woff deleted file mode 100644 index 400014a..0000000 Binary files a/docs/_static/css/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/docs/_static/css/fonts/fontawesome-webfont.woff2 b/docs/_static/css/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc6..0000000 Binary files a/docs/_static/css/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/docs/_static/css/fonts/lato-bold-italic.woff b/docs/_static/css/fonts/lato-bold-italic.woff deleted file mode 100644 index 88ad05b..0000000 Binary files a/docs/_static/css/fonts/lato-bold-italic.woff and /dev/null differ diff --git a/docs/_static/css/fonts/lato-bold-italic.woff2 b/docs/_static/css/fonts/lato-bold-italic.woff2 deleted file mode 100644 index c4e3d80..0000000 Binary files a/docs/_static/css/fonts/lato-bold-italic.woff2 and /dev/null differ diff --git a/docs/_static/css/fonts/lato-bold.woff b/docs/_static/css/fonts/lato-bold.woff deleted file mode 100644 index c6dff51..0000000 Binary files a/docs/_static/css/fonts/lato-bold.woff and /dev/null differ diff --git a/docs/_static/css/fonts/lato-bold.woff2 b/docs/_static/css/fonts/lato-bold.woff2 deleted file mode 100644 index bb19504..0000000 Binary files a/docs/_static/css/fonts/lato-bold.woff2 and /dev/null differ diff --git a/docs/_static/css/fonts/lato-normal-italic.woff b/docs/_static/css/fonts/lato-normal-italic.woff deleted file mode 100644 index 76114bc..0000000 Binary files a/docs/_static/css/fonts/lato-normal-italic.woff and /dev/null differ diff --git a/docs/_static/css/fonts/lato-normal-italic.woff2 b/docs/_static/css/fonts/lato-normal-italic.woff2 deleted file mode 100644 index 3404f37..0000000 Binary files a/docs/_static/css/fonts/lato-normal-italic.woff2 and /dev/null differ diff --git a/docs/_static/css/fonts/lato-normal.woff b/docs/_static/css/fonts/lato-normal.woff deleted file mode 100644 index ae1307f..0000000 Binary files a/docs/_static/css/fonts/lato-normal.woff and /dev/null differ diff --git a/docs/_static/css/fonts/lato-normal.woff2 b/docs/_static/css/fonts/lato-normal.woff2 deleted file mode 100644 index 3bf9843..0000000 Binary files a/docs/_static/css/fonts/lato-normal.woff2 and /dev/null differ diff --git a/docs/_static/css/theme.css b/docs/_static/css/theme.css deleted file mode 100644 index 0f14f10..0000000 --- a/docs/_static/css/theme.css +++ /dev/null @@ -1,4 +0,0 @@ -html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) 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#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search .wy-dropdown>aactive,.wy-side-nav-search .wy-dropdown>afocus,.wy-side-nav-search>a:hover,.wy-side-nav-search>aactive,.wy-side-nav-search>afocus{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon,.wy-side-nav-search>a.icon{display:block}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.switch-menus{position:relative;display:block;margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-side-nav-search>div.switch-menus>div.language-switch,.wy-side-nav-search>div.switch-menus>div.version-switch{display:inline-block;padding:.2em}.wy-side-nav-search>div.switch-menus>div.language-switch select,.wy-side-nav-search>div.switch-menus>div.version-switch select{display:inline-block;margin-right:-2rem;padding-right:2rem;max-width:240px;text-align-last:center;background:none;border:none;border-radius:0;box-shadow:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-size:1em;font-weight:400;color:hsla(0,0%,100%,.3);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.wy-side-nav-search>div.switch-menus>div.language-switch select:active,.wy-side-nav-search>div.switch-menus>div.language-switch select:focus,.wy-side-nav-search>div.switch-menus>div.language-switch select:hover,.wy-side-nav-search>div.switch-menus>div.version-switch select:active,.wy-side-nav-search>div.switch-menus>div.version-switch select:focus,.wy-side-nav-search>div.switch-menus>div.version-switch select:hover{background:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.5)}.wy-side-nav-search>div.switch-menus>div.language-switch select option,.wy-side-nav-search>div.switch-menus>div.version-switch select option{color:#000}.wy-side-nav-search>div.switch-menus>div.language-switch:has(>select):after,.wy-side-nav-search>div.switch-menus>div.version-switch:has(>select):after{display:inline-block;width:1.5em;height:100%;padding:.1em;content:"\f0d7";font-size:1em;line-height:1.2em;font-family:FontAwesome;text-align:center;pointer-events:none;box-sizing:border-box}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.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;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{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}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js deleted file mode 100644 index 0398ebb..0000000 --- a/docs/_static/doctools.js +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Base JavaScript utilities for all Sphinx HTML documentation. - */ -"use strict"; - -const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", -]); - -const _ready = (callback) => { - if (document.readyState !== "loading") { - callback(); - } else { - document.addEventListener("DOMContentLoaded", callback); - } -}; - -/** - * Small JavaScript module for the documentation. - */ -const Documentation = { - init: () => { - Documentation.initDomainIndexTable(); - Documentation.initOnKeyListeners(); - }, - - /** - * i18n support - */ - TRANSLATIONS: {}, - PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), - LOCALE: "unknown", - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext: (string) => { - const translated = Documentation.TRANSLATIONS[string]; - switch (typeof translated) { - case "undefined": - return string; // no translation - case "string": - return translated; // translation exists - default: - return translated[0]; // (singular, plural) translation tuple exists - } - }, - - ngettext: (singular, plural, n) => { - const translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated !== "undefined") - return translated[Documentation.PLURAL_EXPR(n)]; - return n === 1 ? singular : plural; - }, - - addTranslations: (catalog) => { - Object.assign(Documentation.TRANSLATIONS, catalog.messages); - Documentation.PLURAL_EXPR = new Function( - "n", - `return (${catalog.plural_expr})` - ); - Documentation.LOCALE = catalog.locale; - }, - - /** - * helper function to focus on search bar - */ - focusSearchBar: () => { - document.querySelectorAll("input[name=q]")[0]?.focus(); - }, - - /** - * Initialise the domain index toggle buttons - */ - initDomainIndexTable: () => { - const toggler = (el) => { - const idNumber = el.id.substr(7); - const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); - if (el.src.substr(-9) === "minus.png") { - el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; - toggledRows.forEach((el) => (el.style.display = "none")); - } else { - el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; - toggledRows.forEach((el) => (el.style.display = "")); - } - }; - - const togglerElements = document.querySelectorAll("img.toggler"); - togglerElements.forEach((el) => - el.addEventListener("click", (event) => toggler(event.currentTarget)) - ); - togglerElements.forEach((el) => (el.style.display = "")); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); - }, - - initOnKeyListeners: () => { - // only install a listener if it is really needed - if ( - !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && - !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS - ) - return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.altKey || event.ctrlKey || event.metaKey) return; - - if (!event.shiftKey) { - switch (event.key) { - case "ArrowLeft": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const prevLink = document.querySelector('link[rel="prev"]'); - if (prevLink && prevLink.href) { - window.location.href = prevLink.href; - event.preventDefault(); - } - break; - case "ArrowRight": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const nextLink = document.querySelector('link[rel="next"]'); - if (nextLink && nextLink.href) { - window.location.href = nextLink.href; - event.preventDefault(); - } - break; - } - } - - // some keyboard layouts may need Shift to get / - switch (event.key) { - case "/": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.focusSearchBar(); - event.preventDefault(); - } - }); - }, -}; - -// quick alias for translations -const _ = Documentation.gettext; - -_ready(Documentation.init); diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js deleted file mode 100644 index 7e4c114..0000000 --- a/docs/_static/documentation_options.js +++ /dev/null @@ -1,13 +0,0 @@ -const DOCUMENTATION_OPTIONS = { - VERSION: '', - LANGUAGE: 'en', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - LINK_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false, - SHOW_SEARCH_SUMMARY: true, - ENABLE_SEARCH_SHORTCUTS: true, -}; \ No newline at end of file diff --git a/docs/_static/file.png b/docs/_static/file.png deleted file mode 100644 index a858a41..0000000 Binary files a/docs/_static/file.png and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bold.eot b/docs/_static/fonts/Lato/lato-bold.eot deleted file mode 100644 index 3361183..0000000 Binary files a/docs/_static/fonts/Lato/lato-bold.eot and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bold.ttf b/docs/_static/fonts/Lato/lato-bold.ttf deleted file mode 100644 index 29f691d..0000000 Binary files a/docs/_static/fonts/Lato/lato-bold.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bold.woff b/docs/_static/fonts/Lato/lato-bold.woff deleted file mode 100644 index c6dff51..0000000 Binary files a/docs/_static/fonts/Lato/lato-bold.woff and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bold.woff2 b/docs/_static/fonts/Lato/lato-bold.woff2 deleted file mode 100644 index bb19504..0000000 Binary files a/docs/_static/fonts/Lato/lato-bold.woff2 and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.eot b/docs/_static/fonts/Lato/lato-bolditalic.eot deleted file mode 100644 index 3d41549..0000000 Binary files a/docs/_static/fonts/Lato/lato-bolditalic.eot and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.ttf b/docs/_static/fonts/Lato/lato-bolditalic.ttf deleted file mode 100644 index f402040..0000000 Binary files a/docs/_static/fonts/Lato/lato-bolditalic.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.woff b/docs/_static/fonts/Lato/lato-bolditalic.woff deleted file mode 100644 index 88ad05b..0000000 Binary files a/docs/_static/fonts/Lato/lato-bolditalic.woff and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.woff2 b/docs/_static/fonts/Lato/lato-bolditalic.woff2 deleted file mode 100644 index c4e3d80..0000000 Binary files a/docs/_static/fonts/Lato/lato-bolditalic.woff2 and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-italic.eot b/docs/_static/fonts/Lato/lato-italic.eot deleted file mode 100644 index 3f82642..0000000 Binary files a/docs/_static/fonts/Lato/lato-italic.eot and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-italic.ttf b/docs/_static/fonts/Lato/lato-italic.ttf deleted file mode 100644 index b4bfc9b..0000000 Binary files a/docs/_static/fonts/Lato/lato-italic.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-italic.woff b/docs/_static/fonts/Lato/lato-italic.woff deleted file mode 100644 index 76114bc..0000000 Binary files a/docs/_static/fonts/Lato/lato-italic.woff and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-italic.woff2 b/docs/_static/fonts/Lato/lato-italic.woff2 deleted file mode 100644 index 3404f37..0000000 Binary files a/docs/_static/fonts/Lato/lato-italic.woff2 and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-regular.eot b/docs/_static/fonts/Lato/lato-regular.eot deleted file mode 100644 index 11e3f2a..0000000 Binary files a/docs/_static/fonts/Lato/lato-regular.eot and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-regular.ttf b/docs/_static/fonts/Lato/lato-regular.ttf deleted file mode 100644 index 74decd9..0000000 Binary files a/docs/_static/fonts/Lato/lato-regular.ttf and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-regular.woff b/docs/_static/fonts/Lato/lato-regular.woff deleted file mode 100644 index ae1307f..0000000 Binary files a/docs/_static/fonts/Lato/lato-regular.woff and /dev/null differ diff --git a/docs/_static/fonts/Lato/lato-regular.woff2 b/docs/_static/fonts/Lato/lato-regular.woff2 deleted file mode 100644 index 3bf9843..0000000 Binary files a/docs/_static/fonts/Lato/lato-regular.woff2 and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot deleted file mode 100644 index 79dc8ef..0000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf deleted file mode 100644 index df5d1df..0000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff deleted file mode 100644 index 6cb6000..0000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 deleted file mode 100644 index 7059e23..0000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot deleted file mode 100644 index 2f7ca78..0000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf deleted file mode 100644 index eb52a79..0000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff deleted file mode 100644 index f815f63..0000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff and /dev/null differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 deleted file mode 100644 index f2c76e5..0000000 Binary files a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 and /dev/null differ diff --git a/docs/_static/graphviz.css b/docs/_static/graphviz.css deleted file mode 100644 index 30f3837..0000000 --- a/docs/_static/graphviz.css +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Sphinx stylesheet -- graphviz extension. - */ - -img.graphviz { - border: 0; - max-width: 100%; -} - -object.graphviz { - max-width: 100%; -} diff --git a/docs/_static/jquery.js b/docs/_static/jquery.js deleted file mode 100644 index c4c6022..0000000 --- a/docs/_static/jquery.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t a.language.name.localeCompare(b.language.name)); - - const languagesHTML = ` -
-
Languages
- ${languages - .map( - (translation) => ` -
- ${translation.language.code} -
- `, - ) - .join("\n")} -
- `; - return languagesHTML; - } - - function renderVersions(config) { - if (!config.versions.active.length) { - return ""; - } - const versionsHTML = ` -
-
Versions
- ${config.versions.active - .map( - (version) => ` -
- ${version.slug} -
- `, - ) - .join("\n")} -
- `; - return versionsHTML; - } - - function renderDownloads(config) { - if (!Object.keys(config.versions.current.downloads).length) { - return ""; - } - const downloadsNameDisplay = { - pdf: "PDF", - epub: "Epub", - htmlzip: "HTML", - }; - - const downloadsHTML = ` -
-
Downloads
- ${Object.entries(config.versions.current.downloads) - .map( - ([name, url]) => ` -
- ${downloadsNameDisplay[name]} -
- `, - ) - .join("\n")} -
- `; - return downloadsHTML; - } - - document.addEventListener("readthedocs-addons-data-ready", function (event) { - const config = event.detail.data(); - - const flyout = ` -
- - Read the Docs - v: ${config.versions.current.slug} - - -
-
- ${renderLanguages(config)} - ${renderVersions(config)} - ${renderDownloads(config)} -
-
On Read the Docs
-
- Project Home -
-
- Builds -
-
- Downloads -
-
-
-
Search
-
-
- -
-
-
-
- - Hosted by Read the Docs - -
-
- `; - - // 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 = ` - - `; - - 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 = ` - - `; - - 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); - }); -}); \ No newline at end of file diff --git a/docs/_static/language_data.js b/docs/_static/language_data.js deleted file mode 100644 index c7fe6c6..0000000 --- a/docs/_static/language_data.js +++ /dev/null @@ -1,192 +0,0 @@ -/* - * This script contains the language-specific data used by searchtools.js, - * namely the list of stopwords, stemmer, scorer and splitter. - */ - -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"]; - - -/* Non-minified version is copied as a separate JS file, if available */ - -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - diff --git a/docs/_static/minus.png b/docs/_static/minus.png deleted file mode 100644 index d96755f..0000000 Binary files a/docs/_static/minus.png and /dev/null differ diff --git a/docs/_static/plus.png b/docs/_static/plus.png deleted file mode 100644 index 7107cec..0000000 Binary files a/docs/_static/plus.png and /dev/null differ diff --git a/docs/_static/pygments.css b/docs/_static/pygments.css deleted file mode 100644 index 5f2b0a2..0000000 --- a/docs/_static/pygments.css +++ /dev/null @@ -1,75 +0,0 @@ -pre { line-height: 125%; } -td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -.highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } -.highlight .c { color: #408090; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #F00 } /* Error */ -.highlight .k { color: #007020; font-weight: bold } /* Keyword */ -.highlight .o { color: #666 } /* Operator */ -.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #007020 } /* Comment.Preproc */ -.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ -.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #408090; background-color: #FFF0F0 } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ -.highlight .gr { color: #F00 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #333 } /* Generic.Output */ -.highlight .gp { color: #C65D09; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #04D } /* Generic.Traceback */ -.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #007020 } /* Keyword.Pseudo */ -.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #902000 } /* Keyword.Type */ -.highlight .m { color: #208050 } /* Literal.Number */ -.highlight .s { color: #4070A0 } /* Literal.String */ -.highlight .na { color: #4070A0 } /* Name.Attribute */ -.highlight .nb { color: #007020 } /* Name.Builtin */ -.highlight .nc { color: #0E84B5; font-weight: bold } /* Name.Class */ -.highlight .no { color: #60ADD5 } /* Name.Constant */ -.highlight .nd { color: #555; font-weight: bold } /* Name.Decorator */ -.highlight .ni { color: #D55537; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #007020 } /* Name.Exception */ -.highlight .nf { color: #06287E } /* Name.Function */ -.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ -.highlight .nn { color: #0E84B5; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #BB60D5 } /* Name.Variable */ -.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #BBB } /* Text.Whitespace */ -.highlight .mb { color: #208050 } /* Literal.Number.Bin */ -.highlight .mf { color: #208050 } /* Literal.Number.Float */ -.highlight .mh { color: #208050 } /* Literal.Number.Hex */ -.highlight .mi { color: #208050 } /* Literal.Number.Integer */ -.highlight .mo { color: #208050 } /* Literal.Number.Oct */ -.highlight .sa { color: #4070A0 } /* Literal.String.Affix */ -.highlight .sb { color: #4070A0 } /* Literal.String.Backtick */ -.highlight .sc { color: #4070A0 } /* Literal.String.Char */ -.highlight .dl { color: #4070A0 } /* Literal.String.Delimiter */ -.highlight .sd { color: #4070A0; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #4070A0 } /* Literal.String.Double */ -.highlight .se { color: #4070A0; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #4070A0 } /* Literal.String.Heredoc */ -.highlight .si { color: #70A0D0; font-style: italic } /* Literal.String.Interpol */ -.highlight .sx { color: #C65D09 } /* Literal.String.Other */ -.highlight .sr { color: #235388 } /* Literal.String.Regex */ -.highlight .s1 { color: #4070A0 } /* Literal.String.Single */ -.highlight .ss { color: #517918 } /* Literal.String.Symbol */ -.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ -.highlight .fm { color: #06287E } /* Name.Function.Magic */ -.highlight .vc { color: #BB60D5 } /* Name.Variable.Class */ -.highlight .vg { color: #BB60D5 } /* Name.Variable.Global */ -.highlight .vi { color: #BB60D5 } /* Name.Variable.Instance */ -.highlight .vm { color: #BB60D5 } /* Name.Variable.Magic */ -.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js deleted file mode 100644 index 91f4be5..0000000 --- a/docs/_static/searchtools.js +++ /dev/null @@ -1,635 +0,0 @@ -/* - * Sphinx JavaScript utilities for the full-text search. - */ -"use strict"; - -/** - * Simple result scoring code. - */ -if (typeof Scorer === "undefined") { - var Scorer = { - // Implement the following function to further tweak the score for each result - // The function takes a result array [docname, title, anchor, descr, score, filename] - // and returns the new score. - /* - score: result => { - const [docname, title, anchor, descr, score, filename, kind] = result - return score - }, - */ - - // query matches the full name of an object - objNameMatch: 11, - // or matches in the last dotted part of the object name - objPartialMatch: 6, - // Additive scores depending on the priority of the object - objPrio: { - 0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5, // used to be unimportantResults - }, - // Used when the priority is not in the mapping. - objPrioDefault: 0, - - // query found in title - title: 15, - partialTitle: 7, - // query found in terms - term: 5, - partialTerm: 2, - }; -} - -// 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); -}; - -/** - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping - */ -const _escapeRegExp = (string) => - string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string - -const _displayItem = (item, searchTerms, highlightTerms) => { - const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; - const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; - const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const contentRoot = document.documentElement.dataset.content_root; - - 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") { - // dirhtml builder - let dirname = docName + "/"; - if (dirname.match(/\/index\/$/)) - dirname = dirname.substring(0, dirname.length - 6); - else if (dirname === "index/") dirname = ""; - requestUrl = contentRoot + dirname; - linkUrl = requestUrl; - } else { - // normal html builders - requestUrl = contentRoot + docName + docFileSuffix; - linkUrl = docName + docLinkSuffix; - } - let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + anchor; - linkEl.dataset.score = score; - linkEl.innerHTML = title; - if (descr) { - listItem.appendChild(document.createElement("span")).innerHTML = - " (" + descr + ")"; - // highlight search terms in the description - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - } - else if (showSearchSummary) - fetch(requestUrl) - .then((responseData) => responseData.text()) - .then((data) => { - if (data) - listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, anchor) - ); - // highlight search terms in the summary - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - }); - Search.output.appendChild(listItem); -}; -const _finishSearch = (resultCount) => { - Search.stopPulse(); - Search.title.innerText = _("Search Results"); - if (!resultCount) - Search.status.innerText = Documentation.gettext( - "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 = 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 = ( - results, - resultCount, - searchTerms, - highlightTerms, -) => { - // results left, load the summary and display it - // this is intended to be dynamic (don't sub resultsCount) - if (results.length) { - _displayItem(results.pop(), searchTerms, highlightTerms); - setTimeout( - () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), - 5 - ); - } - // search finished, update title and status message - else _finishSearch(resultCount); -}; -// Helper function used by query() to order search results. -// 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) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; -}; - -/** - * Default splitQuery function. Can be overridden in ``sphinx.search`` with a - * custom function per language. - * - * The regular expression works by splitting the string on consecutive characters - * that are not Unicode letters, numbers, underscores, or emoji characters. - * This is the same as ``\W+`` in Python, preserving the surrogate pair area. - */ -if (typeof splitQuery === "undefined") { - var splitQuery = (query) => query - .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) - .filter(term => term) // remove remaining empty strings -} - -/** - * Search Module - */ -const Search = { - _index: null, - _queued_query: null, - _pulse_status: -1, - - htmlToText: (htmlString, anchor) => { - const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - for (const removalQuery of [".headerlink", "script", "style"]) { - htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); - } - if (anchor) { - const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); - if (anchorContent) return anchorContent.textContent; - - console.warn( - `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` - ); - } - - // if anchor not specified or not found, fall back to main content - const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent) return docContent.textContent; - - console.warn( - "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." - ); - return ""; - }, - - init: () => { - const query = new URLSearchParams(window.location.search).get("q"); - document - .querySelectorAll('input[name="q"]') - .forEach((el) => (el.value = query)); - if (query) Search.performSearch(query); - }, - - loadIndex: (url) => - (document.body.appendChild(document.createElement("script")).src = url), - - setIndex: (index) => { - Search._index = index; - if (Search._queued_query !== null) { - const query = Search._queued_query; - Search._queued_query = null; - Search.query(query); - } - }, - - hasIndex: () => Search._index !== null, - - deferQuery: (query) => (Search._queued_query = query), - - stopPulse: () => (Search._pulse_status = -1), - - startPulse: () => { - if (Search._pulse_status >= 0) return; - - const pulse = () => { - Search._pulse_status = (Search._pulse_status + 1) % 4; - Search.dots.innerText = ".".repeat(Search._pulse_status); - if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); - }; - pulse(); - }, - - /** - * perform a search for something (or wait until index is loaded) - */ - performSearch: (query) => { - // create the required interface elements - const searchText = document.createElement("h2"); - searchText.textContent = _("Searching"); - const searchSummary = document.createElement("p"); - 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"); - Search.title = out.appendChild(searchText); - Search.dots = Search.title.appendChild(document.createElement("span")); - Search.status = out.appendChild(searchSummary); - Search.output = out.appendChild(searchList); - - const searchProgress = document.getElementById("search-progress"); - // Some themes don't use the search progress node - if (searchProgress) { - searchProgress.innerText = _("Preparing search..."); - } - Search.startPulse(); - - // index already loaded, the browser was quick! - if (Search.hasIndex()) Search.query(query); - else Search.deferQuery(query); - }, - - _parseQuery: (query) => { - // stem the search terms and add them to the correct list - const stemmer = new Stemmer(); - const searchTerms = new Set(); - const excludedTerms = new Set(); - const highlightTerms = new Set(); - const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); - splitQuery(query.trim()).forEach((queryTerm) => { - const queryTermLower = queryTerm.toLowerCase(); - - // maybe skip this "word" - // stopwords array is from language_data.js - if ( - stopwords.indexOf(queryTermLower) !== -1 || - queryTerm.match(/^\d+$/) - ) - return; - - // stem the word - let word = stemmer.stemWord(queryTermLower); - // select the correct list - if (word[0] === "-") excludedTerms.add(word.substr(1)); - else { - searchTerms.add(word); - highlightTerms.add(queryTermLower); - } - }); - - if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js - localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) - } - - // console.debug("SEARCH: searching for:"); - // console.info("required: ", [...searchTerms]); - // console.info("excluded: ", [...excludedTerms]); - - return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; - }, - - /** - * execute search (requires search index to be loaded) - */ - _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - 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, kind]. - const normalResults = []; - const nonMainIndexResults = []; - - _removeChildren(document.getElementById("search-progress")); - - const queryLower = query.toLowerCase().trim(); - 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) { - 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 + boost, - filenames[file], - SearchResultKind.title, - ]); - } - } - } - - // search for explicit entries in index directives - for (const [entry, foundEntries] of Object.entries(indexEntries)) { - if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id, isMain] of foundEntries) { - const score = Math.round(100 * queryLower.length / entry.length); - const result = [ - docNames[file], - titles[file], - id ? "#" + id : "", - null, - score, - filenames[file], - SearchResultKind.index, - ]; - if (isMain) { - normalResults.push(result); - } else { - nonMainIndexResults.push(result); - } - } - } - } - - // lookup as object - objectTerms.forEach((term) => - normalResults.push(...Search.performObjectSearch(term, objectTerms)) - ); - - // lookup as search terms in fulltext - normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); - - // let the scorer override scores with a custom scoring function - if (Scorer.score) { - normalResults.forEach((item) => (item[4] = Scorer.score(item))); - nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); - } - - // Sort each group of results by score and then alphabetically by name. - normalResults.sort(_orderResultsByScoreThenName); - nonMainIndexResults.sort(_orderResultsByScoreThenName); - - // Combine the result groups in (reverse) order. - // Non-main index entries are typically arbitrary cross-references, - // so display them after other results. - let results = [...nonMainIndexResults, ...normalResults]; - - // remove duplicate search results - // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept - let seen = new Set(); - results = results.reverse().reduce((acc, result) => { - let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); - if (!seen.has(resultStr)) { - acc.push(result); - seen.add(resultStr); - } - return acc; - }, []); - - return results.reverse(); - }, - - query: (query) => { - const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); - const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); - - // for debugging - //Search.lastresults = results.slice(); // a copy - // console.info("search results:", Search.lastresults); - - // print the results - _displayNextItem(results, results.length, searchTerms, highlightTerms); - }, - - /** - * search for object names - */ - performObjectSearch: (object, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const objects = Search._index.objects; - const objNames = Search._index.objnames; - const titles = Search._index.titles; - - const results = []; - - const objectSearchCallback = (prefix, match) => { - const name = match[4] - const fullname = (prefix ? prefix + "." : "") + name; - const fullnameLower = fullname.toLowerCase(); - if (fullnameLower.indexOf(object) < 0) return; - - let score = 0; - const parts = fullnameLower.split("."); - - // check for different match types: exact matches of full name or - // "last name" (i.e. last dotted part) - if (fullnameLower === object || parts.slice(-1)[0] === object) - score += Scorer.objNameMatch; - else if (parts.slice(-1)[0].indexOf(object) > -1) - score += Scorer.objPartialMatch; // matches in last name - - const objName = objNames[match[1]][2]; - const title = titles[match[0]]; - - // If more than one term searched for, we require other words to be - // found in the name/title/description - const otherTerms = new Set(objectTerms); - otherTerms.delete(object); - if (otherTerms.size > 0) { - const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); - if ( - [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) - ) - return; - } - - let anchor = match[3]; - if (anchor === "") anchor = fullname; - else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; - - const descr = objName + _(", in ") + title; - - // add custom score for some objects according to scorer - if (Scorer.objPrio.hasOwnProperty(match[2])) - score += Scorer.objPrio[match[2]]; - else score += Scorer.objPrioDefault; - - results.push([ - docNames[match[0]], - fullname, - "#" + anchor, - descr, - score, - filenames[match[0]], - SearchResultKind.object, - ]); - }; - Object.keys(objects).forEach((prefix) => - objects[prefix].forEach((array) => - objectSearchCallback(prefix, array) - ) - ); - return results; - }, - - /** - * search for full-text terms in the index - */ - performTermsSearch: (searchTerms, excludedTerms) => { - // prepare search - const terms = Search._index.terms; - const titleTerms = Search._index.titleterms; - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - - const scoreMap = new Map(); - const fileMap = new Map(); - - // perform the search on the required terms - searchTerms.forEach((word) => { - const files = []; - // find documents, if any, containing the query word in their text/title term indices - // use Object.hasOwnProperty to avoid mismatching against prototype properties - const arr = [ - { files: terms.hasOwnProperty(word) ? terms[word] : undefined, score: Scorer.term }, - { files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined, score: Scorer.title }, - ]; - // add support for partial matches - if (word.length > 2) { - const escapedWord = _escapeRegExp(word); - if (!terms.hasOwnProperty(word)) { - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord)) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - } - if (!titleTerms.hasOwnProperty(word)) { - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord)) - arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); - }); - } - } - - // no match but word was a required one - if (arr.every((record) => record.files === undefined)) return; - - // found search word in contents - arr.forEach((record) => { - if (record.files === undefined) return; - - let recordFiles = record.files; - if (recordFiles.length === undefined) recordFiles = [recordFiles]; - files.push(...recordFiles); - - // set score for the word in each file - recordFiles.forEach((file) => { - if (!scoreMap.has(file)) scoreMap.set(file, new Map()); - const fileScores = scoreMap.get(file); - fileScores.set(word, record.score); - }); - }); - - // create the mapping - files.forEach((file) => { - if (!fileMap.has(file)) fileMap.set(file, [word]); - else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); - }); - }); - - // now check if the files don't contain excluded terms - const results = []; - for (const [file, wordList] of fileMap) { - // check if all requirements are matched - - // as search terms with length < 3 are discarded - const filteredTermCount = [...searchTerms].filter( - (term) => term.length > 2 - ).length; - if ( - wordList.length !== searchTerms.size && - wordList.length !== filteredTermCount - ) - continue; - - // ensure that none of the excluded terms is in the search result - if ( - [...excludedTerms].some( - (term) => - terms[term] === file || - titleTerms[term] === file || - (terms[term] || []).includes(file) || - (titleTerms[term] || []).includes(file) - ) - ) - break; - - // select one (max) score for the file. - const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w))); - // add result to the result list - results.push([ - docNames[file], - titles[file], - "", - null, - score, - filenames[file], - SearchResultKind.text, - ]); - } - return results; - }, - - /** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words. - */ - makeSearchSummary: (htmlText, keywords, anchor) => { - const text = Search.htmlToText(htmlText, anchor); - if (text === "") return null; - - const textLower = text.toLowerCase(); - const actualStartPosition = [...keywords] - .map((k) => textLower.indexOf(k.toLowerCase())) - .filter((i) => i > -1) - .slice(-1)[0]; - const startWithContext = Math.max(actualStartPosition - 120, 0); - - const top = startWithContext === 0 ? "" : "..."; - const tail = startWithContext + 240 < text.length ? "..." : ""; - - let summary = document.createElement("p"); - summary.classList.add("context"); - summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - - return summary; - }, -}; - -_ready(Search.init); diff --git a/docs/_static/sphinx_highlight.js b/docs/_static/sphinx_highlight.js deleted file mode 100644 index 8a96c69..0000000 --- a/docs/_static/sphinx_highlight.js +++ /dev/null @@ -1,154 +0,0 @@ -/* Highlighting utilities for Sphinx HTML documentation. */ -"use strict"; - -const SPHINX_HIGHLIGHT_ENABLED = true - -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - const rest = document.createTextNode(val.substr(pos + text.length)); - parent.insertBefore( - span, - parent.insertBefore( - rest, - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - /* There may be more occurrences of search term in this node. So call this - * function recursively on the remaining fragment. - */ - _highlight(rest, addItems, text, className); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - -/** - * Small JavaScript module for the documentation. - */ -const SphinxHighlight = { - - /** - * highlight the search words provided in localstorage in the text - */ - highlightSearchWords: () => { - if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight - - // get and clear terms from localstorage - const url = new URL(window.location); - const highlight = - localStorage.getItem("sphinx_highlight_terms") - || url.searchParams.get("highlight") - || ""; - localStorage.removeItem("sphinx_highlight_terms") - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - - // get individual terms from highlight string - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - localStorage.removeItem("sphinx_highlight_terms") - }, - - initEscapeListener: () => { - // only install a listener if it is really needed - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; - if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { - SphinxHighlight.hideSearchWords(); - event.preventDefault(); - } - }); - }, -}; - -_ready(() => { - /* Do not call highlightSearchWords() when we are on the search page. - * It will highlight words from the *previous* search query. - */ - if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); - SphinxHighlight.initEscapeListener(); -}); diff --git a/docs/dynamic.html b/docs/dynamic.html deleted file mode 100644 index 7329fb5..0000000 --- a/docs/dynamic.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - Dynamic Bindings — Raylib Python documentation - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Dynamic Bindings

-

CFFI ABI dynamic bindings avoid the need to compile a C extension module. They now been moved to a separate module:

-
python3 -m pip install raylib_dynamic
-
-
-
-

Warning

-

There have been some weird failures with dynamic bindings and ctypes bindings before and often the -failures are silent -so you don’t even know something has gone wrong and you don’t get proper stacktraces. Also the static bindings are faster. -Therefore I personally recommend the static ones. -But the dynamic bindings have the advantage that you don’t need to compile anything to install. You just need a Raylib DLL.

-
-

The API is exactly the same as the static one documented here. (Therefore you can’t have both modules installed at once.) The only difference is you can’t do:

-
from raylib import *
-
-
-

Instead you have to do:

-
from raylib import rl
-
-
-

Then you access the functions with rl. prefix.

-

See https://github.com/electronstudio/raylib-python-cffi/blob/master/dynamic/test_dynamic.py for an example.

-

If you use the rl. prefix then code will work on both static and dynamic bindings.

-
-

Tip

-

If you access functions via import pyray then there is no difference at all, but be warned this hasn’t been tested much.

-
-
-

Note

-

Standard Raylib DLLs do not include additional libraries like Raygui, Physac, etc. So these functions won’t work.

-
-
-

Important

-

If your system already has the Raylib library installed, you can set the environment variable USE_EXTERNAL_RAYLIB and it will -always be used instead of the bundled DLLs.

-
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/genindex.html b/docs/genindex.html deleted file mode 100644 index 0d52290..0000000 --- a/docs/genindex.html +++ /dev/null @@ -1,11317 +0,0 @@ - - - - - - - - Index — Raylib Python documentation - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - -

Index

- -
- A - | B - | C - | D - | E - | F - | G - | H - | I - | K - | L - | M - | N - | O - | P - | Q - | R - | S - | T - | U - | V - | W - | X - | Y - | Z - -
-

A

- - - -
- -

B

- - - -
- -

C

- - - -
- -

D

- - - -
- -

E

- - - -
- -

F

- - - -
- -

G

- - - -
- -

H

- - - -
- -

I

- - - -
- -

K

- - - -
- -

L

- - - -
- -

M

- - - -
- -

N

- - - -
- -

O

- - - -
- -

P

- - - -
- -

Q

- - - -
- -

R

- - - -
- -

S

- - - -
- -

T

- - - -
- -

U

- - - -
- -

V

- - - -
- -

W

- - - -
- -

X

- - -
- -

Y

- - - -
- -

Z

- - - -
- - - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index f065a86..0000000 --- a/docs/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - Raylib Python — Raylib Python documentation - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/objects.inv b/docs/objects.inv deleted file mode 100644 index d862a78..0000000 Binary files a/docs/objects.inv and /dev/null differ diff --git a/docs/py-modindex.html b/docs/py-modindex.html deleted file mode 100644 index 7da9054..0000000 --- a/docs/py-modindex.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - Python Module Index — Raylib Python documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - -

Python Module Index

- -
- p | - r -
- - - - - - - - - - - - -
 
- p
- pyray -
 
- r
- raylib -
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/pyray.html b/docs/pyray.html deleted file mode 100644 index c3ba7ba..0000000 --- a/docs/pyray.html +++ /dev/null @@ -1,14665 +0,0 @@ - - - - - - - - - Python API — Raylib Python documentation - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Python API

-

This is a wrapper around the C API with some syntactic sugar.

-

The API is still the same as Raylib, so you should still reply on:

- -

The differences are:

-
    -
  • the function names are in snake_case.

  • -
  • Some string and pointer conversions are handled automatically.

  • -
  • There are some helper functions to create structures.

  • -
-
-

Examples

-

Example program:

-
import pyray as pr
-
-pr.init_window(800, 450, "Hello Pyray")
-pr.set_target_fps(60)
-
-camera = pr.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0)
-
-while not pr.window_should_close():
-    pr.update_camera(camera, pr.CAMERA_ORBITAL)
-    pr.begin_drawing()
-    pr.clear_background(pr.RAYWHITE)
-    pr.begin_mode_3d(camera)
-    pr.draw_grid(20, 1.0)
-    pr.end_mode_3d()
-    pr.draw_text("Hello world", 190, 200, 20, pr.VIOLET)
-    pr.end_drawing()
-pr.close_window()
-
-
-
-

Tip

-

New in 3.7.0.post9:

-

You can also now import the functions with no prefix:

-
from pyray import *
-
-init_window(800, 450, "Raylib texture test")
-...
-
-
-
-

See all examples here

-
-
-

API reference

-
-
-class pyray.AudioStream(buffer: Any | None = None, processor: Any | None = None, sampleRate: int | None = None, sampleSize: int | None = None, channels: int | None = None)
-

AudioStream, custom audio stream.

-
-
-buffer: Any = None
-
- -
-
-channels: int = None
-
- -
-
-processor: Any = None
-
- -
-
-sampleRate: int = None
-
- -
-
-sampleSize: int = None
-
- -
- -
-
-class pyray.AutomationEvent(frame: int | None = None, type: int | None = None, params: list | None = None)
-

Automation event.

-
-
-frame: int = None
-
- -
-
-params: list = None
-
- -
-
-type: int = None
-
- -
- -
-
-class pyray.AutomationEventList(capacity: int | None = None, count: int | None = None, events: Any | None = None)
-

Automation event list.

-
-
-capacity: int = None
-
- -
-
-count: int = None
-
- -
-
-events: Any = None
-
- -
- -
-
-pyray.BEIGE: Color
-
- -
-
-pyray.BLACK: Color
-
- -
-
-pyray.BLANK: Color
-
- -
-
-pyray.BLUE: Color
-
- -
-
-pyray.BROWN: Color
-
- -
-
-class pyray.BlendMode
-

Color blending modes (pre-defined).

-
-
-BLEND_ADDITIVE = 1
-
- -
-
-BLEND_ADD_COLORS = 3
-
- -
-
-BLEND_ALPHA = 0
-
- -
-
-BLEND_ALPHA_PREMULTIPLY = 5
-
- -
-
-BLEND_CUSTOM = 6
-
- -
-
-BLEND_CUSTOM_SEPARATE = 7
-
- -
-
-BLEND_MULTIPLIED = 2
-
- -
-
-BLEND_SUBTRACT_COLORS = 4
-
- -
- -
-
-class pyray.BoneInfo(name: list | None = None, parent: int | None = None)
-

Bone, skeletal animation bone.

-
-
-name: list = None
-
- -
-
-parent: int = None
-
- -
- -
-
-class pyray.BoundingBox(min: Vector3 | list | tuple | None = None, max: Vector3 | list | tuple | None = None)
-

BoundingBox.

-
-
-max: Vector3 = None
-
- -
-
-min: Vector3 = None
-
- -
- -
-
-class pyray.Camera2D(offset: Vector2 | list | tuple | None = None, target: Vector2 | list | tuple | None = None, rotation: float | None = None, zoom: float | None = None)
-

Camera2D, defines position/orientation in 2d space.

-
-
-offset: Vector2 = None
-
- -
-
-rotation: float = None
-
- -
-
-target: Vector2 = None
-
- -
-
-zoom: float = None
-
- -
- -
-
-class pyray.Camera3D(position: Vector3 | list | tuple | None = None, target: Vector3 | list | tuple | None = None, up: Vector3 | list | tuple | None = None, fovy: float | None = None, projection: int | None = None)
-

Camera, defines position/orientation in 3d space.

-
-
-fovy: float = None
-
- -
-
-position: Vector3 = None
-
- -
-
-projection: int = None
-
- -
-
-target: Vector3 = None
-
- -
-
-up: Vector3 = None
-
- -
- -
-
-class pyray.CameraMode
-

Camera system modes.

-
-
-CAMERA_CUSTOM = 0
-
- -
-
-CAMERA_FIRST_PERSON = 3
-
- -
-
-CAMERA_FREE = 1
-
- -
-
-CAMERA_ORBITAL = 2
-
- -
-
-CAMERA_THIRD_PERSON = 4
-
- -
- -
-
-class pyray.CameraProjection
-

Camera projection.

-
-
-CAMERA_ORTHOGRAPHIC = 1
-
- -
-
-CAMERA_PERSPECTIVE = 0
-
- -
- -
-
-class pyray.Color(r: int | None = None, g: int | None = None, b: int | None = None, a: int | None = None)
-

Color, 4 components, R8G8B8A8 (32bit).

-
-
-a: int = None
-
- -
-
-b: int = None
-
- -
-
-g: int = None
-
- -
-
-r: int = None
-
- -
- -
-
-class pyray.ConfigFlags
-

System/Window config flags.

-
-
-FLAG_BORDERLESS_WINDOWED_MODE = 32768
-
- -
-
-FLAG_FULLSCREEN_MODE = 2
-
- -
-
-FLAG_INTERLACED_HINT = 65536
-
- -
-
-FLAG_MSAA_4X_HINT = 32
-
- -
-
-FLAG_VSYNC_HINT = 64
-
- -
-
-FLAG_WINDOW_ALWAYS_RUN = 256
-
- -
-
-FLAG_WINDOW_HIDDEN = 128
-
- -
-
-FLAG_WINDOW_HIGHDPI = 8192
-
- -
-
-FLAG_WINDOW_MAXIMIZED = 1024
-
- -
-
-FLAG_WINDOW_MINIMIZED = 512
-
- -
-
-FLAG_WINDOW_MOUSE_PASSTHROUGH = 16384
-
- -
-
-FLAG_WINDOW_RESIZABLE = 4
-
- -
-
-FLAG_WINDOW_TOPMOST = 4096
-
- -
-
-FLAG_WINDOW_TRANSPARENT = 16
-
- -
-
-FLAG_WINDOW_UNDECORATED = 8
-
- -
-
-FLAG_WINDOW_UNFOCUSED = 2048
-
- -
- -
-
-class pyray.CubemapLayout
-

Cubemap layouts.

-
-
-CUBEMAP_LAYOUT_AUTO_DETECT = 0
-
- -
-
-CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE = 4
-
- -
-
-CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR = 3
-
- -
-
-CUBEMAP_LAYOUT_LINE_HORIZONTAL = 2
-
- -
-
-CUBEMAP_LAYOUT_LINE_VERTICAL = 1
-
- -
- -
-
-pyray.DARKBLUE: Color
-
- -
-
-pyray.DARKBROWN: Color
-
- -
-
-pyray.DARKGRAY: Color
-
- -
-
-pyray.DARKGREEN: Color
-
- -
-
-pyray.DARKPURPLE: Color
-
- -
-
-class pyray.FilePathList(capacity: int | None = None, count: int | None = None, paths: list[str] | None = None)
-

File path list.

-
-
-capacity: int = None
-
- -
-
-count: int = None
-
- -
-
-paths: list[str] = None
-
- -
- -
-
-class pyray.Font(baseSize: int | None = None, glyphCount: int | None = None, glyphPadding: int | None = None, texture: Texture | list | tuple | None = None, recs: Any | None = None, glyphs: Any | None = None)
-

Font, font texture and GlyphInfo array data.

-
-
-baseSize: int = None
-
- -
-
-glyphCount: int = None
-
- -
-
-glyphPadding: int = None
-
- -
-
-glyphs: Any = None
-
- -
-
-recs: Any = None
-
- -
-
-texture: Texture = None
-
- -
- -
-
-class pyray.FontType
-

Font type, defines generation method.

-
-
-FONT_BITMAP = 1
-
- -
-
-FONT_DEFAULT = 0
-
- -
-
-FONT_SDF = 2
-
- -
- -
-
-pyray.GOLD: Color
-
- -
-
-pyray.GRAY: Color
-
- -
-
-pyray.GREEN: Color
-
- -
-
-class pyray.GamepadAxis
-

Gamepad axis.

-
-
-GAMEPAD_AXIS_LEFT_TRIGGER = 4
-
- -
-
-GAMEPAD_AXIS_LEFT_X = 0
-
- -
-
-GAMEPAD_AXIS_LEFT_Y = 1
-
- -
-
-GAMEPAD_AXIS_RIGHT_TRIGGER = 5
-
- -
-
-GAMEPAD_AXIS_RIGHT_X = 2
-
- -
-
-GAMEPAD_AXIS_RIGHT_Y = 3
-
- -
- -
-
-class pyray.GamepadButton
-

Gamepad buttons.

-
-
-GAMEPAD_BUTTON_LEFT_FACE_DOWN = 3
-
- -
-
-GAMEPAD_BUTTON_LEFT_FACE_LEFT = 4
-
- -
-
-GAMEPAD_BUTTON_LEFT_FACE_RIGHT = 2
-
- -
-
-GAMEPAD_BUTTON_LEFT_FACE_UP = 1
-
- -
-
-GAMEPAD_BUTTON_LEFT_THUMB = 16
-
- -
-
-GAMEPAD_BUTTON_LEFT_TRIGGER_1 = 9
-
- -
-
-GAMEPAD_BUTTON_LEFT_TRIGGER_2 = 10
-
- -
-
-GAMEPAD_BUTTON_MIDDLE = 14
-
- -
-
-GAMEPAD_BUTTON_MIDDLE_LEFT = 13
-
- -
-
-GAMEPAD_BUTTON_MIDDLE_RIGHT = 15
-
- -
-
-GAMEPAD_BUTTON_RIGHT_FACE_DOWN = 7
-
- -
-
-GAMEPAD_BUTTON_RIGHT_FACE_LEFT = 8
-
- -
-
-GAMEPAD_BUTTON_RIGHT_FACE_RIGHT = 6
-
- -
-
-GAMEPAD_BUTTON_RIGHT_FACE_UP = 5
-
- -
-
-GAMEPAD_BUTTON_RIGHT_THUMB = 17
-
- -
-
-GAMEPAD_BUTTON_RIGHT_TRIGGER_1 = 11
-
- -
-
-GAMEPAD_BUTTON_RIGHT_TRIGGER_2 = 12
-
- -
-
-GAMEPAD_BUTTON_UNKNOWN = 0
-
- -
- -
-
-class pyray.Gesture
-

Gesture.

-
-
-GESTURE_DOUBLETAP = 2
-
- -
-
-GESTURE_DRAG = 8
-
- -
-
-GESTURE_HOLD = 4
-
- -
-
-GESTURE_NONE = 0
-
- -
-
-GESTURE_PINCH_IN = 256
-
- -
-
-GESTURE_PINCH_OUT = 512
-
- -
-
-GESTURE_SWIPE_DOWN = 128
-
- -
-
-GESTURE_SWIPE_LEFT = 32
-
- -
-
-GESTURE_SWIPE_RIGHT = 16
-
- -
-
-GESTURE_SWIPE_UP = 64
-
- -
-
-GESTURE_TAP = 1
-
- -
- -
-
-class pyray.GlyphInfo(value: int | None = None, offsetX: int | None = None, offsetY: int | None = None, advanceX: int | None = None, image: Image | list | tuple | None = None)
-

GlyphInfo, font characters glyphs info.

-
-
-advanceX: int = None
-
- -
-
-image: Image = None
-
- -
-
-offsetX: int = None
-
- -
-
-offsetY: int = None
-
- -
-
-value: int = None
-
- -
- -
-
-class pyray.GuiCheckBoxProperty
-

CheckBox.

-
-
-CHECK_PADDING = 16
-
- -
- -
-
-class pyray.GuiColorPickerProperty
-

ColorPicker.

-
-
-COLOR_SELECTOR_SIZE = 16
-
- -
-
-HUEBAR_PADDING = 18
-
- -
-
-HUEBAR_SELECTOR_HEIGHT = 19
-
- -
-
-HUEBAR_SELECTOR_OVERFLOW = 20
-
- -
-
-HUEBAR_WIDTH = 17
-
- -
- -
-
-class pyray.GuiComboBoxProperty
-

ComboBox.

-
-
-COMBO_BUTTON_SPACING = 17
-
- -
-
-COMBO_BUTTON_WIDTH = 16
-
- -
- -
-
-class pyray.GuiControl
-

Gui controls.

-
-
-BUTTON = 2
-
- -
-
-CHECKBOX = 6
-
- -
-
-COLORPICKER = 13
-
- -
-
-COMBOBOX = 7
-
- -
-
-DEFAULT = 0
-
- -
-
-DROPDOWNBOX = 8
-
- -
-
-LABEL = 1
-
- -
-
-LISTVIEW = 12
-
- -
-
-PROGRESSBAR = 5
-
- -
-
-SCROLLBAR = 14
-
- -
-
-SLIDER = 4
-
- -
-
-SPINNER = 11
-
- -
-
-STATUSBAR = 15
-
- -
-
-TEXTBOX = 9
-
- -
-
-TOGGLE = 3
-
- -
-
-VALUEBOX = 10
-
- -
- -
-
-class pyray.GuiControlProperty
-

Gui base properties for every control.

-
-
-BASE_COLOR_DISABLED = 10
-
- -
-
-BASE_COLOR_FOCUSED = 4
-
- -
-
-BASE_COLOR_NORMAL = 1
-
- -
-
-BASE_COLOR_PRESSED = 7
-
- -
-
-BORDER_COLOR_DISABLED = 9
-
- -
-
-BORDER_COLOR_FOCUSED = 3
-
- -
-
-BORDER_COLOR_NORMAL = 0
-
- -
-
-BORDER_COLOR_PRESSED = 6
-
- -
-
-BORDER_WIDTH = 12
-
- -
-
-TEXT_ALIGNMENT = 14
-
- -
-
-TEXT_COLOR_DISABLED = 11
-
- -
-
-TEXT_COLOR_FOCUSED = 5
-
- -
-
-TEXT_COLOR_NORMAL = 2
-
- -
-
-TEXT_COLOR_PRESSED = 8
-
- -
-
-TEXT_PADDING = 13
-
- -
- -
-
-class pyray.GuiDefaultProperty
-

DEFAULT extended properties.

-
-
-BACKGROUND_COLOR = 19
-
- -
-
-LINE_COLOR = 18
-
- -
-
-TEXT_ALIGNMENT_VERTICAL = 21
-
- -
-
-TEXT_LINE_SPACING = 20
-
- -
-
-TEXT_SIZE = 16
-
- -
-
-TEXT_SPACING = 17
-
- -
-
-TEXT_WRAP_MODE = 22
-
- -
- -
-
-class pyray.GuiDropdownBoxProperty
-

DropdownBox.

-
-
-ARROW_PADDING = 16
-
- -
-
-DROPDOWN_ARROW_HIDDEN = 18
-
- -
-
-DROPDOWN_ITEMS_SPACING = 17
-
- -
-
-DROPDOWN_ROLL_UP = 19
-
- -
- -
-
-class pyray.GuiIconName
-

.

-
-
-ICON_1UP = 148
-
- -
-
-ICON_229 = 229
-
- -
-
-ICON_230 = 230
-
- -
-
-ICON_231 = 231
-
- -
-
-ICON_232 = 232
-
- -
-
-ICON_233 = 233
-
- -
-
-ICON_234 = 234
-
- -
-
-ICON_235 = 235
-
- -
-
-ICON_236 = 236
-
- -
-
-ICON_237 = 237
-
- -
-
-ICON_238 = 238
-
- -
-
-ICON_239 = 239
-
- -
-
-ICON_240 = 240
-
- -
-
-ICON_241 = 241
-
- -
-
-ICON_242 = 242
-
- -
-
-ICON_243 = 243
-
- -
-
-ICON_244 = 244
-
- -
-
-ICON_245 = 245
-
- -
-
-ICON_246 = 246
-
- -
-
-ICON_247 = 247
-
- -
-
-ICON_248 = 248
-
- -
-
-ICON_249 = 249
-
- -
-
-ICON_250 = 250
-
- -
-
-ICON_251 = 251
-
- -
-
-ICON_252 = 252
-
- -
-
-ICON_253 = 253
-
- -
-
-ICON_254 = 254
-
- -
-
-ICON_255 = 255
-
- -
-
-ICON_ALARM = 205
-
- -
-
-ICON_ALPHA_CLEAR = 93
-
- -
-
-ICON_ALPHA_MULTIPLY = 92
-
- -
-
-ICON_ARROW_DOWN = 116
-
- -
-
-ICON_ARROW_DOWN_FILL = 120
-
- -
-
-ICON_ARROW_LEFT = 114
-
- -
-
-ICON_ARROW_LEFT_FILL = 118
-
- -
-
-ICON_ARROW_RIGHT = 115
-
- -
-
-ICON_ARROW_RIGHT_FILL = 119
-
- -
-
-ICON_ARROW_UP = 117
-
- -
-
-ICON_ARROW_UP_FILL = 121
-
- -
-
-ICON_AUDIO = 122
-
- -
-
-ICON_BIN = 143
-
- -
-
-ICON_BOX = 80
-
- -
-
-ICON_BOX_BOTTOM = 85
-
- -
-
-ICON_BOX_BOTTOM_LEFT = 86
-
- -
-
-ICON_BOX_BOTTOM_RIGHT = 84
-
- -
-
-ICON_BOX_CENTER = 89
-
- -
-
-ICON_BOX_CIRCLE_MASK = 90
-
- -
-
-ICON_BOX_CONCENTRIC = 110
-
- -
-
-ICON_BOX_CORNERS_BIG = 99
-
- -
-
-ICON_BOX_CORNERS_SMALL = 98
-
- -
-
-ICON_BOX_DOTS_BIG = 109
-
- -
-
-ICON_BOX_DOTS_SMALL = 108
-
- -
-
-ICON_BOX_GRID = 96
-
- -
-
-ICON_BOX_GRID_BIG = 111
-
- -
-
-ICON_BOX_LEFT = 87
-
- -
-
-ICON_BOX_MULTISIZE = 102
-
- -
-
-ICON_BOX_RIGHT = 83
-
- -
-
-ICON_BOX_TOP = 81
-
- -
-
-ICON_BOX_TOP_LEFT = 88
-
- -
-
-ICON_BOX_TOP_RIGHT = 82
-
- -
-
-ICON_BREAKPOINT_OFF = 213
-
- -
-
-ICON_BREAKPOINT_ON = 212
-
- -
-
-ICON_BRUSH_CLASSIC = 24
-
- -
-
-ICON_BRUSH_PAINTER = 25
-
- -
-
-ICON_BURGER_MENU = 214
-
- -
-
-ICON_CAMERA = 169
-
- -
-
-ICON_CASE_SENSITIVE = 215
-
- -
-
-ICON_CLOCK = 139
-
- -
-
-ICON_COIN = 146
-
- -
-
-ICON_COLOR_BUCKET = 29
-
- -
-
-ICON_COLOR_PICKER = 27
-
- -
-
-ICON_CORNER = 187
-
- -
-
-ICON_CPU = 206
-
- -
-
-ICON_CRACK = 155
-
- -
-
-ICON_CRACK_POINTS = 156
-
- -
-
-ICON_CROP = 36
-
- -
-
-ICON_CROP_ALPHA = 37
-
- -
-
-ICON_CROSS = 113
-
- -
-
-ICON_CROSSLINE = 192
-
- -
-
-ICON_CROSS_SMALL = 128
-
- -
-
-ICON_CUBE = 162
-
- -
-
-ICON_CUBE_FACE_BACK = 168
-
- -
-
-ICON_CUBE_FACE_BOTTOM = 166
-
- -
-
-ICON_CUBE_FACE_FRONT = 165
-
- -
-
-ICON_CUBE_FACE_LEFT = 164
-
- -
-
-ICON_CUBE_FACE_RIGHT = 167
-
- -
-
-ICON_CUBE_FACE_TOP = 163
-
- -
-
-ICON_CURSOR_CLASSIC = 21
-
- -
-
-ICON_CURSOR_HAND = 19
-
- -
-
-ICON_CURSOR_MOVE = 52
-
- -
-
-ICON_CURSOR_MOVE_FILL = 68
-
- -
-
-ICON_CURSOR_POINTER = 20
-
- -
-
-ICON_CURSOR_SCALE = 53
-
- -
-
-ICON_CURSOR_SCALE_FILL = 69
-
- -
-
-ICON_CURSOR_SCALE_LEFT = 55
-
- -
-
-ICON_CURSOR_SCALE_LEFT_FILL = 71
-
- -
-
-ICON_CURSOR_SCALE_RIGHT = 54
-
- -
-
-ICON_CURSOR_SCALE_RIGHT_FILL = 70
-
- -
-
-ICON_DEMON = 152
-
- -
-
-ICON_DITHERING = 94
-
- -
-
-ICON_DOOR = 158
-
- -
-
-ICON_EMPTYBOX = 63
-
- -
-
-ICON_EMPTYBOX_SMALL = 79
-
- -
-
-ICON_EXIT = 159
-
- -
-
-ICON_EXPLOSION = 147
-
- -
-
-ICON_EYE_OFF = 45
-
- -
-
-ICON_EYE_ON = 44
-
- -
-
-ICON_FILE = 218
-
- -
-
-ICON_FILETYPE_ALPHA = 194
-
- -
-
-ICON_FILETYPE_AUDIO = 11
-
- -
-
-ICON_FILETYPE_BINARY = 200
-
- -
-
-ICON_FILETYPE_HOME = 195
-
- -
-
-ICON_FILETYPE_IMAGE = 12
-
- -
-
-ICON_FILETYPE_INFO = 15
-
- -
-
-ICON_FILETYPE_PLAY = 13
-
- -
-
-ICON_FILETYPE_TEXT = 10
-
- -
-
-ICON_FILETYPE_VIDEO = 14
-
- -
-
-ICON_FILE_ADD = 8
-
- -
-
-ICON_FILE_COPY = 16
-
- -
-
-ICON_FILE_CUT = 17
-
- -
-
-ICON_FILE_DELETE = 9
-
- -
-
-ICON_FILE_EXPORT = 7
-
- -
-
-ICON_FILE_NEW = 203
-
- -
-
-ICON_FILE_OPEN = 5
-
- -
-
-ICON_FILE_PASTE = 18
-
- -
-
-ICON_FILE_SAVE = 6
-
- -
-
-ICON_FILE_SAVE_CLASSIC = 2
-
- -
-
-ICON_FILTER = 47
-
- -
-
-ICON_FILTER_BILINEAR = 35
-
- -
-
-ICON_FILTER_POINT = 34
-
- -
-
-ICON_FILTER_TOP = 46
-
- -
-
-ICON_FOLDER = 217
-
- -
-
-ICON_FOLDER_ADD = 204
-
- -
-
-ICON_FOLDER_FILE_OPEN = 1
-
- -
-
-ICON_FOLDER_OPEN = 3
-
- -
-
-ICON_FOLDER_SAVE = 4
-
- -
-
-ICON_FOUR_BOXES = 100
-
- -
-
-ICON_FX = 123
-
- -
-
-ICON_GEAR = 141
-
- -
-
-ICON_GEAR_BIG = 142
-
- -
-
-ICON_GEAR_EX = 154
-
- -
-
-ICON_GRID = 97
-
- -
-
-ICON_GRID_FILL = 101
-
- -
-
-ICON_HAND_POINTER = 144
-
- -
-
-ICON_HEART = 186
-
- -
-
-ICON_HELP = 193
-
- -
-
-ICON_HELP_BOX = 221
-
- -
-
-ICON_HEX = 201
-
- -
-
-ICON_HIDPI = 199
-
- -
-
-ICON_HOT = 228
-
- -
-
-ICON_HOUSE = 185
-
- -
-
-ICON_INFO = 191
-
- -
-
-ICON_INFO_BOX = 222
-
- -
-
-ICON_KEY = 151
-
- -
-
-ICON_LASER = 145
-
- -
-
-ICON_LAYERS = 197
-
- -
-
-ICON_LAYERS2 = 225
-
- -
-
-ICON_LAYERS_ISO = 224
-
- -
-
-ICON_LAYERS_VISIBLE = 196
-
- -
-
-ICON_LENS = 42
-
- -
-
-ICON_LENS_BIG = 43
-
- -
-
-ICON_LIFE_BARS = 190
-
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-
-ICON_LOCK_CLOSE = 137
-
- -
-
-ICON_LOCK_OPEN = 138
-
- -
-
-ICON_MAGNET = 136
-
- -
-
-ICON_MAILBOX = 180
-
- -
-
-ICON_MAPS = 227
-
- -
-
-ICON_MIPMAPS = 95
-
- -
-
-ICON_MLAYERS = 226
-
- -
-
-ICON_MODE_2D = 160
-
- -
-
-ICON_MODE_3D = 161
-
- -
-
-ICON_MONITOR = 181
-
- -
-
-ICON_MUTATE = 59
-
- -
-
-ICON_MUTATE_FILL = 75
-
- -
-
-ICON_NONE = 0
-
- -
-
-ICON_NOTEBOOK = 177
-
- -
-
-ICON_OK_TICK = 112
-
- -
-
-ICON_PENCIL = 22
-
- -
-
-ICON_PENCIL_BIG = 23
-
- -
-
-ICON_PHOTO_CAMERA = 183
-
- -
-
-ICON_PHOTO_CAMERA_FLASH = 184
-
- -
-
-ICON_PLAYER = 149
-
- -
-
-ICON_PLAYER_JUMP = 150
-
- -
-
-ICON_PLAYER_NEXT = 134
-
- -
-
-ICON_PLAYER_PAUSE = 132
-
- -
-
-ICON_PLAYER_PLAY = 131
-
- -
-
-ICON_PLAYER_PLAY_BACK = 130
-
- -
-
-ICON_PLAYER_PREVIOUS = 129
-
- -
-
-ICON_PLAYER_RECORD = 135
-
- -
-
-ICON_PLAYER_STOP = 133
-
- -
-
-ICON_POT = 91
-
- -
-
-ICON_PRINTER = 182
-
- -
-
-ICON_PRIORITY = 223
-
- -
-
-ICON_REDO = 57
-
- -
-
-ICON_REDO_FILL = 73
-
- -
-
-ICON_REG_EXP = 216
-
- -
-
-ICON_REPEAT = 61
-
- -
-
-ICON_REPEAT_FILL = 77
-
- -
-
-ICON_REREDO = 58
-
- -
-
-ICON_REREDO_FILL = 74
-
- -
-
-ICON_RESIZE = 33
-
- -
-
-ICON_RESTART = 211
-
- -
-
-ICON_ROM = 207
-
- -
-
-ICON_ROTATE = 60
-
- -
-
-ICON_ROTATE_FILL = 76
-
- -
-
-ICON_RUBBER = 28
-
- -
-
-ICON_SAND_TIMER = 219
-
- -
-
-ICON_SCALE = 32
-
- -
-
-ICON_SHIELD = 202
-
- -
-
-ICON_SHUFFLE = 62
-
- -
-
-ICON_SHUFFLE_FILL = 78
-
- -
-
-ICON_SPECIAL = 170
-
- -
-
-ICON_SQUARE_TOGGLE = 38
-
- -
-
-ICON_STAR = 157
-
- -
-
-ICON_STEP_INTO = 209
-
- -
-
-ICON_STEP_OUT = 210
-
- -
-
-ICON_STEP_OVER = 208
-
- -
-
-ICON_SUITCASE = 178
-
- -
-
-ICON_SUITCASE_ZIP = 179
-
- -
-
-ICON_SYMMETRY = 39
-
- -
-
-ICON_SYMMETRY_HORIZONTAL = 40
-
- -
-
-ICON_SYMMETRY_VERTICAL = 41
-
- -
-
-ICON_TARGET = 64
-
- -
-
-ICON_TARGET_BIG = 50
-
- -
-
-ICON_TARGET_BIG_FILL = 66
-
- -
-
-ICON_TARGET_MOVE = 51
-
- -
-
-ICON_TARGET_MOVE_FILL = 67
-
- -
-
-ICON_TARGET_POINT = 48
-
- -
-
-ICON_TARGET_SMALL = 49
-
- -
-
-ICON_TARGET_SMALL_FILL = 65
-
- -
-
-ICON_TEXT_A = 31
-
- -
-
-ICON_TEXT_NOTES = 176
-
- -
-
-ICON_TEXT_POPUP = 153
-
- -
-
-ICON_TEXT_T = 30
-
- -
-
-ICON_TOOLS = 140
-
- -
-
-ICON_UNDO = 56
-
- -
-
-ICON_UNDO_FILL = 72
-
- -
-
-ICON_VERTICAL_BARS = 188
-
- -
-
-ICON_VERTICAL_BARS_FILL = 189
-
- -
-
-ICON_WARNING = 220
-
- -
-
-ICON_WATER_DROP = 26
-
- -
-
-ICON_WAVE = 124
-
- -
-
-ICON_WAVE_SINUS = 125
-
- -
-
-ICON_WAVE_SQUARE = 126
-
- -
-
-ICON_WAVE_TRIANGULAR = 127
-
- -
-
-ICON_WINDOW = 198
-
- -
-
-ICON_ZOOM_ALL = 106
-
- -
-
-ICON_ZOOM_BIG = 105
-
- -
-
-ICON_ZOOM_CENTER = 107
-
- -
-
-ICON_ZOOM_MEDIUM = 104
-
- -
-
-ICON_ZOOM_SMALL = 103
-
- -
- -
-
-class pyray.GuiListViewProperty
-

ListView.

-
-
-LIST_ITEMS_BORDER_WIDTH = 20
-
- -
-
-LIST_ITEMS_HEIGHT = 16
-
- -
-
-LIST_ITEMS_SPACING = 17
-
- -
-
-SCROLLBAR_SIDE = 19
-
- -
-
-SCROLLBAR_WIDTH = 18
-
- -
- -
-
-class pyray.GuiProgressBarProperty
-

ProgressBar.

-
-
-PROGRESS_PADDING = 16
-
- -
- -
-
-class pyray.GuiScrollBarProperty
-

ScrollBar.

-
-
-ARROWS_SIZE = 16
-
- -
-
-ARROWS_VISIBLE = 17
-
- -
-
-SCROLL_PADDING = 20
-
- -
-
-SCROLL_SLIDER_PADDING = 18
-
- -
-
-SCROLL_SLIDER_SIZE = 19
-
- -
-
-SCROLL_SPEED = 21
-
- -
- -
-
-class pyray.GuiSliderProperty
-

Slider/SliderBar.

-
-
-SLIDER_PADDING = 17
-
- -
-
-SLIDER_WIDTH = 16
-
- -
- -
-
-class pyray.GuiSpinnerProperty
-

Spinner.

-
-
-SPIN_BUTTON_SPACING = 17
-
- -
-
-SPIN_BUTTON_WIDTH = 16
-
- -
- -
-
-class pyray.GuiState
-

Gui control state.

-
-
-STATE_DISABLED = 3
-
- -
-
-STATE_FOCUSED = 1
-
- -
-
-STATE_NORMAL = 0
-
- -
-
-STATE_PRESSED = 2
-
- -
- -
-
-class pyray.GuiStyleProp(controlId: int | None = None, propertyId: int | None = None, propertyValue: int | None = None)
-

NOTE: Used when exporting style as code for convenience.

-
-
-controlId: int = None
-
- -
-
-propertyId: int = None
-
- -
-
-propertyValue: int = None
-
- -
- -
-
-class pyray.GuiTextAlignment
-

Gui control text alignment.

-
-
-TEXT_ALIGN_CENTER = 1
-
- -
-
-TEXT_ALIGN_LEFT = 0
-
- -
-
-TEXT_ALIGN_RIGHT = 2
-
- -
- -
-
-class pyray.GuiTextAlignmentVertical
-

Gui control text alignment vertical.

-
-
-TEXT_ALIGN_BOTTOM = 2
-
- -
-
-TEXT_ALIGN_MIDDLE = 1
-
- -
-
-TEXT_ALIGN_TOP = 0
-
- -
- -
-
-class pyray.GuiTextBoxProperty
-

TextBox/TextBoxMulti/ValueBox/Spinner.

-
-
-TEXT_READONLY = 16
-
- -
- -
-
-class pyray.GuiTextWrapMode
-

Gui control text wrap mode.

-
-
-TEXT_WRAP_CHAR = 1
-
- -
-
-TEXT_WRAP_NONE = 0
-
- -
-
-TEXT_WRAP_WORD = 2
-
- -
- -
-
-class pyray.GuiToggleProperty
-

Toggle/ToggleGroup.

-
-
-GROUP_PADDING = 16
-
- -
- -
-
-class pyray.Image(data: Any | None = None, width: int | None = None, height: int | None = None, mipmaps: int | None = None, format: int | None = None)
-

Image, pixel data stored in CPU memory (RAM).

-
-
-data: Any = None
-
- -
-
-format: int = None
-
- -
-
-height: int = None
-
- -
-
-mipmaps: int = None
-
- -
-
-width: int = None
-
- -
- -
-
-class pyray.KeyboardKey
-

Keyboard keys (US keyboard layout).

-
-
-KEY_A = 65
-
- -
-
-KEY_APOSTROPHE = 39
-
- -
-
-KEY_B = 66
-
- -
-
-KEY_BACK = 4
-
- -
-
-KEY_BACKSLASH = 92
-
- -
-
-KEY_BACKSPACE = 259
-
- -
-
-KEY_C = 67
-
- -
-
-KEY_CAPS_LOCK = 280
-
- -
-
-KEY_COMMA = 44
-
- -
-
-KEY_D = 68
-
- -
-
-KEY_DELETE = 261
-
- -
-
-KEY_DOWN = 264
-
- -
-
-KEY_E = 69
-
- -
-
-KEY_EIGHT = 56
-
- -
-
-KEY_END = 269
-
- -
-
-KEY_ENTER = 257
-
- -
-
-KEY_EQUAL = 61
-
- -
-
-KEY_ESCAPE = 256
-
- -
-
-KEY_F = 70
-
- -
-
-KEY_F1 = 290
-
- -
-
-KEY_F10 = 299
-
- -
-
-KEY_F11 = 300
-
- -
-
-KEY_F12 = 301
-
- -
-
-KEY_F2 = 291
-
- -
-
-KEY_F3 = 292
-
- -
-
-KEY_F4 = 293
-
- -
-
-KEY_F5 = 294
-
- -
-
-KEY_F6 = 295
-
- -
-
-KEY_F7 = 296
-
- -
-
-KEY_F8 = 297
-
- -
-
-KEY_F9 = 298
-
- -
-
-KEY_FIVE = 53
-
- -
-
-KEY_FOUR = 52
-
- -
-
-KEY_G = 71
-
- -
-
-KEY_GRAVE = 96
-
- -
-
-KEY_H = 72
-
- -
-
-KEY_HOME = 268
-
- -
-
-KEY_I = 73
-
- -
-
-KEY_INSERT = 260
-
- -
-
-KEY_J = 74
-
- -
-
-KEY_K = 75
-
- -
-
-KEY_KB_MENU = 348
-
- -
-
-KEY_KP_0 = 320
-
- -
-
-KEY_KP_1 = 321
-
- -
-
-KEY_KP_2 = 322
-
- -
-
-KEY_KP_3 = 323
-
- -
-
-KEY_KP_4 = 324
-
- -
-
-KEY_KP_5 = 325
-
- -
-
-KEY_KP_6 = 326
-
- -
-
-KEY_KP_7 = 327
-
- -
-
-KEY_KP_8 = 328
-
- -
-
-KEY_KP_9 = 329
-
- -
-
-KEY_KP_ADD = 334
-
- -
-
-KEY_KP_DECIMAL = 330
-
- -
-
-KEY_KP_DIVIDE = 331
-
- -
-
-KEY_KP_ENTER = 335
-
- -
-
-KEY_KP_EQUAL = 336
-
- -
-
-KEY_KP_MULTIPLY = 332
-
- -
-
-KEY_KP_SUBTRACT = 333
-
- -
-
-KEY_L = 76
-
- -
-
-KEY_LEFT = 263
-
- -
-
-KEY_LEFT_ALT = 342
-
- -
-
-KEY_LEFT_BRACKET = 91
-
- -
-
-KEY_LEFT_CONTROL = 341
-
- -
-
-KEY_LEFT_SHIFT = 340
-
- -
-
-KEY_LEFT_SUPER = 343
-
- -
-
-KEY_M = 77
-
- -
-
-KEY_MENU = 5
-
- -
-
-KEY_MINUS = 45
-
- -
-
-KEY_N = 78
-
- -
-
-KEY_NINE = 57
-
- -
-
-KEY_NULL = 0
-
- -
-
-KEY_NUM_LOCK = 282
-
- -
-
-KEY_O = 79
-
- -
-
-KEY_ONE = 49
-
- -
-
-KEY_P = 80
-
- -
-
-KEY_PAGE_DOWN = 267
-
- -
-
-KEY_PAGE_UP = 266
-
- -
-
-KEY_PAUSE = 284
-
- -
-
-KEY_PERIOD = 46
-
- -
-
-KEY_PRINT_SCREEN = 283
-
- -
-
-KEY_Q = 81
-
- -
-
-KEY_R = 82
-
- -
-
-KEY_RIGHT = 262
-
- -
-
-KEY_RIGHT_ALT = 346
-
- -
-
-KEY_RIGHT_BRACKET = 93
-
- -
-
-KEY_RIGHT_CONTROL = 345
-
- -
-
-KEY_RIGHT_SHIFT = 344
-
- -
-
-KEY_RIGHT_SUPER = 347
-
- -
-
-KEY_S = 83
-
- -
-
-KEY_SCROLL_LOCK = 281
-
- -
-
-KEY_SEMICOLON = 59
-
- -
-
-KEY_SEVEN = 55
-
- -
-
-KEY_SIX = 54
-
- -
-
-KEY_SLASH = 47
-
- -
-
-KEY_SPACE = 32
-
- -
-
-KEY_T = 84
-
- -
-
-KEY_TAB = 258
-
- -
-
-KEY_THREE = 51
-
- -
-
-KEY_TWO = 50
-
- -
-
-KEY_U = 85
-
- -
-
-KEY_UP = 265
-
- -
-
-KEY_V = 86
-
- -
-
-KEY_VOLUME_DOWN = 25
-
- -
-
-KEY_VOLUME_UP = 24
-
- -
-
-KEY_W = 87
-
- -
-
-KEY_X = 88
-
- -
-
-KEY_Y = 89
-
- -
-
-KEY_Z = 90
-
- -
-
-KEY_ZERO = 48
-
- -
- -
-
-pyray.LIGHTGRAY: Color
-
- -
-
-pyray.LIME: Color
-
- -
-
-pyray.MAGENTA: Color
-
- -
-
-pyray.MAROON: Color
-
- -
-
-class pyray.Material(shader: Shader | list | tuple | None = None, maps: Any | None = None, params: list | None = None)
-

Material, includes shader and maps.

-
-
-maps: Any = None
-
- -
-
-params: list = None
-
- -
-
-shader: Shader = None
-
- -
- -
-
-class pyray.MaterialMap(texture: Texture | list | tuple | None = None, color: Color | list | tuple | None = None, value: float | None = None)
-

MaterialMap.

-
-
-color: Color = None
-
- -
-
-texture: Texture = None
-
- -
-
-value: float = None
-
- -
- -
-
-class pyray.MaterialMapIndex
-

Material map index.

-
-
-MATERIAL_MAP_ALBEDO = 0
-
- -
-
-MATERIAL_MAP_BRDF = 10
-
- -
-
-MATERIAL_MAP_CUBEMAP = 7
-
- -
-
-MATERIAL_MAP_EMISSION = 5
-
- -
-
-MATERIAL_MAP_HEIGHT = 6
-
- -
-
-MATERIAL_MAP_IRRADIANCE = 8
-
- -
-
-MATERIAL_MAP_METALNESS = 1
-
- -
-
-MATERIAL_MAP_NORMAL = 2
-
- -
-
-MATERIAL_MAP_OCCLUSION = 4
-
- -
-
-MATERIAL_MAP_PREFILTER = 9
-
- -
-
-MATERIAL_MAP_ROUGHNESS = 3
-
- -
- -
-
-class pyray.Matrix(m0: float | None = None, m4: float | None = None, m8: float | None = None, m12: float | None = None, m1: float | None = None, m5: float | None = None, m9: float | None = None, m13: float | None = None, m2: float | None = None, m6: float | None = None, m10: float | None = None, m14: float | None = None, m3: float | None = None, m7: float | None = None, m11: float | None = None, m15: float | None = None)
-

Matrix, 4x4 components, column major, OpenGL style, right-handed.

-
-
-m0: float = None
-
- -
-
-m1: float = None
-
- -
-
-m10: float = None
-
- -
-
-m11: float = None
-
- -
-
-m12: float = None
-
- -
-
-m13: float = None
-
- -
-
-m14: float = None
-
- -
-
-m15: float = None
-
- -
-
-m2: float = None
-
- -
-
-m3: float = None
-
- -
-
-m4: float = None
-
- -
-
-m5: float = None
-
- -
-
-m6: float = None
-
- -
-
-m7: float = None
-
- -
-
-m8: float = None
-
- -
-
-m9: float = None
-
- -
- -
-
-class pyray.Matrix2x2(m00: float | None = None, m01: float | None = None, m10: float | None = None, m11: float | None = None)
-

Matrix2x2 type (used for polygon shape rotation matrix).

-
-
-m00: float = None
-
- -
-
-m01: float = None
-
- -
-
-m10: float = None
-
- -
-
-m11: float = None
-
- -
- -
-
-class pyray.Mesh(vertexCount: int | None = None, triangleCount: int | None = None, vertices: Any | None = None, texcoords: Any | None = None, texcoords2: Any | None = None, normals: Any | None = None, tangents: Any | None = None, colors: str | None = None, indices: Any | None = None, animVertices: Any | None = None, animNormals: Any | None = None, boneIds: str | None = None, boneWeights: Any | None = None, boneMatrices: Any | None = None, boneCount: int | None = None, vaoId: int | None = None, vboId: Any | None = None)
-

Mesh, vertex data and vao/vbo.

-
-
-animNormals: Any = None
-
- -
-
-animVertices: Any = None
-
- -
-
-boneCount: int = None
-
- -
-
-boneIds: str = None
-
- -
-
-boneMatrices: Any = None
-
- -
-
-boneWeights: Any = None
-
- -
-
-colors: str = None
-
- -
-
-indices: Any = None
-
- -
-
-normals: Any = None
-
- -
-
-tangents: Any = None
-
- -
-
-texcoords: Any = None
-
- -
-
-texcoords2: Any = None
-
- -
-
-triangleCount: int = None
-
- -
-
-vaoId: int = None
-
- -
-
-vboId: Any = None
-
- -
-
-vertexCount: int = None
-
- -
-
-vertices: Any = None
-
- -
- -
-
-class pyray.Model(transform: Matrix | list | tuple | None = None, meshCount: int | None = None, materialCount: int | None = None, meshes: Any | None = None, materials: Any | None = None, meshMaterial: Any | None = None, boneCount: int | None = None, bones: Any | None = None, bindPose: Any | None = None)
-

Model, meshes, materials and animation data.

-
-
-bindPose: Any = None
-
- -
-
-boneCount: int = None
-
- -
-
-bones: Any = None
-
- -
-
-materialCount: int = None
-
- -
-
-materials: Any = None
-
- -
-
-meshCount: int = None
-
- -
-
-meshMaterial: Any = None
-
- -
-
-meshes: Any = None
-
- -
-
-transform: Matrix = None
-
- -
- -
-
-class pyray.ModelAnimation(boneCount: int | None = None, frameCount: int | None = None, bones: Any | None = None, framePoses: Any | None = None, name: list | None = None)
-

ModelAnimation.

-
-
-boneCount: int = None
-
- -
-
-bones: Any = None
-
- -
-
-frameCount: int = None
-
- -
-
-framePoses: Any = None
-
- -
-
-name: list = None
-
- -
- -
-
-class pyray.MouseButton
-

Mouse buttons.

-
-
-MOUSE_BUTTON_BACK = 6
-
- -
-
-MOUSE_BUTTON_EXTRA = 4
-
- -
-
-MOUSE_BUTTON_FORWARD = 5
-
- -
-
-MOUSE_BUTTON_LEFT = 0
-
- -
-
-MOUSE_BUTTON_MIDDLE = 2
-
- -
-
-MOUSE_BUTTON_RIGHT = 1
-
- -
-
-MOUSE_BUTTON_SIDE = 3
-
- -
- -
-
-class pyray.MouseCursor
-

Mouse cursor.

-
-
-MOUSE_CURSOR_ARROW = 1
-
- -
-
-MOUSE_CURSOR_CROSSHAIR = 3
-
- -
-
-MOUSE_CURSOR_DEFAULT = 0
-
- -
-
-MOUSE_CURSOR_IBEAM = 2
-
- -
-
-MOUSE_CURSOR_NOT_ALLOWED = 10
-
- -
-
-MOUSE_CURSOR_POINTING_HAND = 4
-
- -
-
-MOUSE_CURSOR_RESIZE_ALL = 9
-
- -
-
-MOUSE_CURSOR_RESIZE_EW = 5
-
- -
-
-MOUSE_CURSOR_RESIZE_NESW = 8
-
- -
-
-MOUSE_CURSOR_RESIZE_NS = 6
-
- -
-
-MOUSE_CURSOR_RESIZE_NWSE = 7
-
- -
- -
-
-class pyray.Music(stream: AudioStream | list | tuple | None = None, frameCount: int | None = None, looping: bool | None = None, ctxType: int | None = None, ctxData: Any | None = None)
-

Music, audio stream, anything longer than ~10 seconds should be streamed.

-
-
-ctxData: Any = None
-
- -
-
-ctxType: int = None
-
- -
-
-frameCount: int = None
-
- -
-
-looping: bool = None
-
- -
-
-stream: AudioStream = None
-
- -
- -
-
-class pyray.NPatchInfo(source: Rectangle | list | tuple | None = None, left: int | None = None, top: int | None = None, right: int | None = None, bottom: int | None = None, layout: int | None = None)
-

NPatchInfo, n-patch layout info.

-
-
-bottom: int = None
-
- -
-
-layout: int = None
-
- -
-
-left: int = None
-
- -
-
-right: int = None
-
- -
-
-source: Rectangle = None
-
- -
-
-top: int = None
-
- -
- -
-
-class pyray.NPatchLayout
-

N-patch layout.

-
-
-NPATCH_NINE_PATCH = 0
-
- -
-
-NPATCH_THREE_PATCH_HORIZONTAL = 2
-
- -
-
-NPATCH_THREE_PATCH_VERTICAL = 1
-
- -
- -
-
-pyray.ORANGE: Color
-
- -
-
-pyray.PINK: Color
-
- -
-
-pyray.PURPLE: Color
-
- -
-
-class pyray.PhysicsBodyData(id: int | None = None, enabled: bool | None = None, position: Vector2 | list | tuple | None = None, velocity: Vector2 | list | tuple | None = None, force: Vector2 | list | tuple | None = None, angularVelocity: float | None = None, torque: float | None = None, orient: float | None = None, inertia: float | None = None, inverseInertia: float | None = None, mass: float | None = None, inverseMass: float | None = None, staticFriction: float | None = None, dynamicFriction: float | None = None, restitution: float | None = None, useGravity: bool | None = None, isGrounded: bool | None = None, freezeOrient: bool | None = None, shape: PhysicsShape | list | tuple | None = None)
-

.

-
-
-angularVelocity: float = None
-
- -
-
-dynamicFriction: float = None
-
- -
-
-enabled: bool = None
-
- -
-
-force: Vector2 = None
-
- -
-
-freezeOrient: bool = None
-
- -
-
-id: int = None
-
- -
-
-inertia: float = None
-
- -
-
-inverseInertia: float = None
-
- -
-
-inverseMass: float = None
-
- -
-
-isGrounded: bool = None
-
- -
-
-mass: float = None
-
- -
-
-orient: float = None
-
- -
-
-position: Vector2 = None
-
- -
-
-restitution: float = None
-
- -
-
-shape: PhysicsShape = None
-
- -
-
-staticFriction: float = None
-
- -
-
-torque: float = None
-
- -
-
-useGravity: bool = None
-
- -
-
-velocity: Vector2 = None
-
- -
- -
-
-class pyray.PhysicsManifoldData(id: int | None = None, bodyA: Any | None = None, bodyB: Any | None = None, penetration: float | None = None, normal: Vector2 | list | tuple | None = None, contacts: list | None = None, contactsCount: int | None = None, restitution: float | None = None, dynamicFriction: float | None = None, staticFriction: float | None = None)
-

.

-
-
-bodyA: Any = None
-
- -
-
-bodyB: Any = None
-
- -
-
-contacts: list = None
-
- -
-
-contactsCount: int = None
-
- -
-
-dynamicFriction: float = None
-
- -
-
-id: int = None
-
- -
-
-normal: Vector2 = None
-
- -
-
-penetration: float = None
-
- -
-
-restitution: float = None
-
- -
-
-staticFriction: float = None
-
- -
- -
-
-class pyray.PhysicsShape(type: PhysicsShapeType | None = None, body: Any | None = None, vertexData: PhysicsVertexData | list | tuple | None = None, radius: float | None = None, transform: Matrix2x2 | list | tuple | None = None)
-

.

-
-
-body: Any = None
-
- -
-
-radius: float = None
-
- -
-
-transform: Matrix2x2 = None
-
- -
-
-type: PhysicsShapeType = None
-
- -
-
-vertexData: PhysicsVertexData = None
-
- -
- -
-
-class pyray.PhysicsVertexData(vertexCount: int | None = None, positions: list | None = None, normals: list | None = None)
-

.

-
-
-normals: list = None
-
- -
-
-positions: list = None
-
- -
-
-vertexCount: int = None
-
- -
- -
-
-class pyray.PixelFormat
-

Pixel formats.

-
-
-PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 23
-
- -
-
-PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 24
-
- -
-
-PIXELFORMAT_COMPRESSED_DXT1_RGB = 14
-
- -
-
-PIXELFORMAT_COMPRESSED_DXT1_RGBA = 15
-
- -
-
-PIXELFORMAT_COMPRESSED_DXT3_RGBA = 16
-
- -
-
-PIXELFORMAT_COMPRESSED_DXT5_RGBA = 17
-
- -
-
-PIXELFORMAT_COMPRESSED_ETC1_RGB = 18
-
- -
-
-PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = 20
-
- -
-
-PIXELFORMAT_COMPRESSED_ETC2_RGB = 19
-
- -
-
-PIXELFORMAT_COMPRESSED_PVRT_RGB = 21
-
- -
-
-PIXELFORMAT_COMPRESSED_PVRT_RGBA = 22
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R16 = 11
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R16G16B16 = 12
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 = 13
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R32 = 8
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R32G32B32 = 9
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = 10
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = 6
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = 5
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R8G8B8 = 4
-
- -
-
-PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = 7
-
- -
- -
-
-pyray.RAYWHITE: Color
-
- -
-
-pyray.RED: Color
-
- -
-
-class pyray.Ray(position: Vector3 | list | tuple | None = None, direction: Vector3 | list | tuple | None = None)
-

Ray, ray for raycasting.

-
-
-direction: Vector3 = None
-
- -
-
-position: Vector3 = None
-
- -
- -
-
-class pyray.RayCollision(hit: bool | None = None, distance: float | None = None, point: Vector3 | list | tuple | None = None, normal: Vector3 | list | tuple | None = None)
-

RayCollision, ray hit information.

-
-
-distance: float = None
-
- -
-
-hit: bool = None
-
- -
-
-normal: Vector3 = None
-
- -
-
-point: Vector3 = None
-
- -
- -
-
-class pyray.Rectangle(x: float | None = None, y: float | None = None, width: float | None = None, height: float | None = None)
-

Rectangle, 4 components.

-
-
-height: float = None
-
- -
-
-width: float = None
-
- -
-
-x: float = None
-
- -
-
-y: float = None
-
- -
- -
-
-class pyray.RenderTexture(id: int | None = None, texture: Texture | list | tuple | None = None, depth: Texture | list | tuple | None = None)
-

RenderTexture, fbo for texture rendering.

-
-
-depth: Texture = None
-
- -
-
-id: int = None
-
- -
-
-texture: Texture = None
-
- -
- -
-
-pyray.SKYBLUE: Color
-
- -
-
-class pyray.Shader(id: int | None = None, locs: Any | None = None)
-

Shader.

-
-
-id: int = None
-
- -
-
-locs: Any = None
-
- -
- -
-
-class pyray.ShaderAttributeDataType
-

Shader attribute data types.

-
-
-SHADER_ATTRIB_FLOAT = 0
-
- -
-
-SHADER_ATTRIB_VEC2 = 1
-
- -
-
-SHADER_ATTRIB_VEC3 = 2
-
- -
-
-SHADER_ATTRIB_VEC4 = 3
-
- -
- -
-
-class pyray.ShaderLocationIndex
-

Shader location index.

-
-
-SHADER_LOC_BONE_MATRICES = 28
-
- -
-
-SHADER_LOC_COLOR_AMBIENT = 14
-
- -
-
-SHADER_LOC_COLOR_DIFFUSE = 12
-
- -
-
-SHADER_LOC_COLOR_SPECULAR = 13
-
- -
-
-SHADER_LOC_MAP_ALBEDO = 15
-
- -
-
-SHADER_LOC_MAP_BRDF = 25
-
- -
-
-SHADER_LOC_MAP_CUBEMAP = 22
-
- -
-
-SHADER_LOC_MAP_EMISSION = 20
-
- -
-
-SHADER_LOC_MAP_HEIGHT = 21
-
- -
-
-SHADER_LOC_MAP_IRRADIANCE = 23
-
- -
-
-SHADER_LOC_MAP_METALNESS = 16
-
- -
-
-SHADER_LOC_MAP_NORMAL = 17
-
- -
-
-SHADER_LOC_MAP_OCCLUSION = 19
-
- -
-
-SHADER_LOC_MAP_PREFILTER = 24
-
- -
-
-SHADER_LOC_MAP_ROUGHNESS = 18
-
- -
-
-SHADER_LOC_MATRIX_MODEL = 9
-
- -
-
-SHADER_LOC_MATRIX_MVP = 6
-
- -
-
-SHADER_LOC_MATRIX_NORMAL = 10
-
- -
-
-SHADER_LOC_MATRIX_PROJECTION = 8
-
- -
-
-SHADER_LOC_MATRIX_VIEW = 7
-
- -
-
-SHADER_LOC_VECTOR_VIEW = 11
-
- -
-
-SHADER_LOC_VERTEX_BONEIDS = 26
-
- -
-
-SHADER_LOC_VERTEX_BONEWEIGHTS = 27
-
- -
-
-SHADER_LOC_VERTEX_COLOR = 5
-
- -
-
-SHADER_LOC_VERTEX_NORMAL = 3
-
- -
-
-SHADER_LOC_VERTEX_POSITION = 0
-
- -
-
-SHADER_LOC_VERTEX_TANGENT = 4
-
- -
-
-SHADER_LOC_VERTEX_TEXCOORD01 = 1
-
- -
-
-SHADER_LOC_VERTEX_TEXCOORD02 = 2
-
- -
- -
-
-class pyray.ShaderUniformDataType
-

Shader uniform data type.

-
-
-SHADER_UNIFORM_FLOAT = 0
-
- -
-
-SHADER_UNIFORM_INT = 4
-
- -
-
-SHADER_UNIFORM_IVEC2 = 5
-
- -
-
-SHADER_UNIFORM_IVEC3 = 6
-
- -
-
-SHADER_UNIFORM_IVEC4 = 7
-
- -
-
-SHADER_UNIFORM_SAMPLER2D = 8
-
- -
-
-SHADER_UNIFORM_VEC2 = 1
-
- -
-
-SHADER_UNIFORM_VEC3 = 2
-
- -
-
-SHADER_UNIFORM_VEC4 = 3
-
- -
- -
-
-class pyray.Sound(stream: AudioStream | list | tuple | None = None, frameCount: int | None = None)
-

Sound.

-
-
-frameCount: int = None
-
- -
-
-stream: AudioStream = None
-
- -
- -
-
-class pyray.Texture(id: int | None = None, width: int | None = None, height: int | None = None, mipmaps: int | None = None, format: int | None = None)
-

Texture, tex data stored in GPU memory (VRAM).

-
-
-format: int = None
-
- -
-
-height: int = None
-
- -
-
-id: int = None
-
- -
-
-mipmaps: int = None
-
- -
-
-width: int = None
-
- -
- -
-
-class pyray.Texture2D(id: int | None = None, width: int | None = None, height: int | None = None, mipmaps: int | None = None, format: int | None = None)
-

It should be redesigned to be provided by user.

-
-
-format: int = None
-
- -
-
-height: int = None
-
- -
-
-id: int = None
-
- -
-
-mipmaps: int = None
-
- -
-
-width: int = None
-
- -
- -
-
-class pyray.TextureFilter
-

Texture parameters: filter mode.

-
-
-TEXTURE_FILTER_ANISOTROPIC_16X = 5
-
- -
-
-TEXTURE_FILTER_ANISOTROPIC_4X = 3
-
- -
-
-TEXTURE_FILTER_ANISOTROPIC_8X = 4
-
- -
-
-TEXTURE_FILTER_BILINEAR = 1
-
- -
-
-TEXTURE_FILTER_POINT = 0
-
- -
-
-TEXTURE_FILTER_TRILINEAR = 2
-
- -
- -
-
-class pyray.TextureWrap
-

Texture parameters: wrap mode.

-
-
-TEXTURE_WRAP_CLAMP = 1
-
- -
-
-TEXTURE_WRAP_MIRROR_CLAMP = 3
-
- -
-
-TEXTURE_WRAP_MIRROR_REPEAT = 2
-
- -
-
-TEXTURE_WRAP_REPEAT = 0
-
- -
- -
-
-class pyray.TraceLogLevel
-

Trace log level.

-
-
-LOG_ALL = 0
-
- -
-
-LOG_DEBUG = 2
-
- -
-
-LOG_ERROR = 5
-
- -
-
-LOG_FATAL = 6
-
- -
-
-LOG_INFO = 3
-
- -
-
-LOG_NONE = 7
-
- -
-
-LOG_TRACE = 1
-
- -
-
-LOG_WARNING = 4
-
- -
- -
-
-class pyray.Transform(translation: Vector3 | list | tuple | None = None, rotation: Vector4 | list | tuple | None = None, scale: Vector3 | list | tuple | None = None)
-

Transform, vertex transformation data.

-
-
-rotation: Vector4 = None
-
- -
-
-scale: Vector3 = None
-
- -
-
-translation: Vector3 = None
-
- -
- -
-
-pyray.VIOLET: Color
-
- -
-
-class pyray.Vector2(x: float | None = None, y: float | None = None)
-

Vector2, 2 components.

-
-
-x: float = None
-
- -
-
-y: float = None
-
- -
- -
-
-class pyray.Vector3(x: float | None = None, y: float | None = None, z: float | None = None)
-

Vector3, 3 components.

-
-
-x: float = None
-
- -
-
-y: float = None
-
- -
-
-z: float = None
-
- -
- -
-
-class pyray.Vector4(x: float | None = None, y: float | None = None, z: float | None = None, w: float | None = None)
-

Vector4, 4 components.

-
-
-w: float = None
-
- -
-
-x: float = None
-
- -
-
-y: float = None
-
- -
-
-z: float = None
-
- -
- -
-
-class pyray.VrDeviceInfo(hResolution: int | None = None, vResolution: int | None = None, hScreenSize: float | None = None, vScreenSize: float | None = None, eyeToScreenDistance: float | None = None, lensSeparationDistance: float | None = None, interpupillaryDistance: float | None = None, lensDistortionValues: list | None = None, chromaAbCorrection: list | None = None)
-

VrDeviceInfo, Head-Mounted-Display device parameters.

-
-
-chromaAbCorrection: list = None
-
- -
-
-eyeToScreenDistance: float = None
-
- -
-
-hResolution: int = None
-
- -
-
-hScreenSize: float = None
-
- -
-
-interpupillaryDistance: float = None
-
- -
-
-lensDistortionValues: list = None
-
- -
-
-lensSeparationDistance: float = None
-
- -
-
-vResolution: int = None
-
- -
-
-vScreenSize: float = None
-
- -
- -
-
-class pyray.VrStereoConfig(projection: list | None = None, viewOffset: list | None = None, leftLensCenter: list | None = None, rightLensCenter: list | None = None, leftScreenCenter: list | None = None, rightScreenCenter: list | None = None, scale: list | None = None, scaleIn: list | None = None)
-

VrStereoConfig, VR stereo rendering configuration for simulator.

-
-
-leftLensCenter: list = None
-
- -
-
-leftScreenCenter: list = None
-
- -
-
-projection: list = None
-
- -
-
-rightLensCenter: list = None
-
- -
-
-rightScreenCenter: list = None
-
- -
-
-scale: list = None
-
- -
-
-scaleIn: list = None
-
- -
-
-viewOffset: list = None
-
- -
- -
-
-pyray.WHITE: Color
-
- -
-
-class pyray.Wave(frameCount: int | None = None, sampleRate: int | None = None, sampleSize: int | None = None, channels: int | None = None, data: Any | None = None)
-

Wave, audio wave data.

-
-
-channels: int = None
-
- -
-
-data: Any = None
-
- -
-
-frameCount: int = None
-
- -
-
-sampleRate: int = None
-
- -
-
-sampleSize: int = None
-
- -
- -
-
-pyray.YELLOW: Color
-
- -
-
-pyray.attach_audio_mixed_processor(processor: Any) None
-

Attach audio stream processor to the entire audio pipeline, receives the samples as ‘float’.

-
- -
-
-pyray.attach_audio_stream_processor(stream: AudioStream | list | tuple, processor: Any) None
-

Attach audio stream processor to stream, receives the samples as ‘float’.

-
- -
-
-pyray.begin_blend_mode(mode: int) None
-

Begin blending mode (alpha, additive, multiplied, subtract, custom).

-
- -
-
-pyray.begin_drawing() None
-

Setup canvas (framebuffer) to start drawing.

-
- -
-
-pyray.begin_mode_2d(camera: Camera2D | list | tuple) None
-

Begin 2D mode with custom camera (2D).

-
- -
-
-pyray.begin_mode_3d(camera: Camera3D | list | tuple) None
-

Begin 3D mode with custom camera (3D).

-
- -
-
-pyray.begin_scissor_mode(x: int, y: int, width: int, height: int) None
-

Begin scissor mode (define screen area for following drawing).

-
- -
-
-pyray.begin_shader_mode(shader: Shader | list | tuple) None
-

Begin custom shader drawing.

-
- -
-
-pyray.begin_texture_mode(target: RenderTexture | list | tuple) None
-

Begin drawing to render texture.

-
- -
-
-pyray.begin_vr_stereo_mode(config: VrStereoConfig | list | tuple) None
-

Begin stereo rendering (requires VR simulator).

-
- -
-
-pyray.change_directory(dir: str) bool
-

Change working directory, return true on success.

-
- -
-
-pyray.check_collision_box_sphere(box: BoundingBox | list | tuple, center: Vector3 | list | tuple, radius: float) bool
-

Check collision between box and sphere.

-
- -
-
-pyray.check_collision_boxes(box1: BoundingBox | list | tuple, box2: BoundingBox | list | tuple) bool
-

Check collision between two bounding boxes.

-
- -
-
-pyray.check_collision_circle_line(center: Vector2 | list | tuple, radius: float, p1: Vector2 | list | tuple, p2: Vector2 | list | tuple) bool
-

Check if circle collides with a line created betweeen two points [p1] and [p2].

-
- -
-
-pyray.check_collision_circle_rec(center: Vector2 | list | tuple, radius: float, rec: Rectangle | list | tuple) bool
-

Check collision between circle and rectangle.

-
- -
-
-pyray.check_collision_circles(center1: Vector2 | list | tuple, radius1: float, center2: Vector2 | list | tuple, radius2: float) bool
-

Check collision between two circles.

-
- -
-
-pyray.check_collision_lines(startPos1: Vector2 | list | tuple, endPos1: Vector2 | list | tuple, startPos2: Vector2 | list | tuple, endPos2: Vector2 | list | tuple, collisionPoint: Any | list | tuple) bool
-

Check the collision between two lines defined by two points each, returns collision point by reference.

-
- -
-
-pyray.check_collision_point_circle(point: Vector2 | list | tuple, center: Vector2 | list | tuple, radius: float) bool
-

Check if point is inside circle.

-
- -
-
-pyray.check_collision_point_line(point: Vector2 | list | tuple, p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, threshold: int) bool
-

Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold].

-
- -
-
-pyray.check_collision_point_poly(point: Vector2 | list | tuple, points: Any | list | tuple, pointCount: int) bool
-

Check if point is within a polygon described by array of vertices.

-
- -
-
-pyray.check_collision_point_rec(point: Vector2 | list | tuple, rec: Rectangle | list | tuple) bool
-

Check if point is inside rectangle.

-
- -
-
-pyray.check_collision_point_triangle(point: Vector2 | list | tuple, p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple) bool
-

Check if point is inside a triangle.

-
- -
-
-pyray.check_collision_recs(rec1: Rectangle | list | tuple, rec2: Rectangle | list | tuple) bool
-

Check collision between two rectangles.

-
- -
-
-pyray.check_collision_spheres(center1: Vector3 | list | tuple, radius1: float, center2: Vector3 | list | tuple, radius2: float) bool
-

Check collision between two spheres.

-
- -
-
-pyray.clamp(value: float, min_1: float, max_2: float) float
-

.

-
- -
-
-pyray.clear_background(color: Color | list | tuple) None
-

Set background color (framebuffer clear color).

-
- -
-
-pyray.clear_window_state(flags: int) None
-

Clear window configuration state flags.

-
- -
-
-pyray.close_audio_device() None
-

Close the audio device and context.

-
- -
-
-pyray.close_physics() None
-

Close physics system and unload used memory.

-
- -
-
-pyray.close_window() None
-

Close window and unload OpenGL context.

-
- -
-
-pyray.codepoint_to_utf8(codepoint: int, utf8Size: Any) str
-

Encode one codepoint into UTF-8 byte array (array length returned as parameter).

-
- -
-
-pyray.color_alpha(color: Color | list | tuple, alpha: float) Color
-

Get color with alpha applied, alpha goes from 0.0f to 1.0f.

-
- -
-
-pyray.color_alpha_blend(dst: Color | list | tuple, src: Color | list | tuple, tint: Color | list | tuple) Color
-

Get src alpha-blended into dst color with tint.

-
- -
-
-pyray.color_brightness(color: Color | list | tuple, factor: float) Color
-

Get color with brightness correction, brightness factor goes from -1.0f to 1.0f.

-
- -
-
-pyray.color_contrast(color: Color | list | tuple, contrast: float) Color
-

Get color with contrast correction, contrast values between -1.0f and 1.0f.

-
- -
-
-pyray.color_from_hsv(hue: float, saturation: float, value: float) Color
-

Get a Color from HSV values, hue [0..360], saturation/value [0..1].

-
- -
-
-pyray.color_from_normalized(normalized: Vector4 | list | tuple) Color
-

Get Color from normalized values [0..1].

-
- -
-
-pyray.color_is_equal(col1: Color | list | tuple, col2: Color | list | tuple) bool
-

Check if two colors are equal.

-
- -
-
-pyray.color_lerp(color1: Color | list | tuple, color2: Color | list | tuple, factor: float) Color
-

Get color lerp interpolation between two colors, factor [0.0f..1.0f].

-
- -
-
-pyray.color_normalize(color: Color | list | tuple) Vector4
-

Get Color normalized as float [0..1].

-
- -
-
-pyray.color_tint(color: Color | list | tuple, tint: Color | list | tuple) Color
-

Get color multiplied with another color.

-
- -
-
-pyray.color_to_hsv(color: Color | list | tuple) Vector3
-

Get HSV values for a Color, hue [0..360], saturation/value [0..1].

-
- -
-
-pyray.color_to_int(color: Color | list | tuple) int
-

Get hexadecimal value for a Color (0xRRGGBBAA).

-
- -
-
-pyray.compress_data(data: str, dataSize: int, compDataSize: Any) str
-

Compress data (DEFLATE algorithm), memory must be MemFree().

-
- -
-
-pyray.compute_crc32(data: str, dataSize: int) int
-

Compute CRC32 hash code.

-
- -
-
-pyray.compute_md5(data: str, dataSize: int) Any
-

Compute MD5 hash code, returns static int[4] (16 bytes).

-
- -
-
-pyray.compute_sha1(data: str, dataSize: int) Any
-

Compute SHA1 hash code, returns static int[5] (20 bytes).

-
- -
-
-pyray.create_physics_body_circle(pos: Vector2 | list | tuple, radius: float, density: float) Any
-

Creates a new circle physics body with generic parameters.

-
- -
-
-pyray.create_physics_body_polygon(pos: Vector2 | list | tuple, radius: float, sides: int, density: float) Any
-

Creates a new polygon physics body with generic parameters.

-
- -
-
-pyray.create_physics_body_rectangle(pos: Vector2 | list | tuple, width: float, height: float, density: float) Any
-

Creates a new rectangle physics body with generic parameters.

-
- -
-
-pyray.decode_data_base64(data: str, outputSize: Any) str
-

Decode Base64 string data, memory must be MemFree().

-
- -
-
-pyray.decompress_data(compData: str, compDataSize: int, dataSize: Any) str
-

Decompress data (DEFLATE algorithm), memory must be MemFree().

-
- -
-
-pyray.destroy_physics_body(body: Any | list | tuple) None
-

Destroy a physics body.

-
- -
-
-pyray.detach_audio_mixed_processor(processor: Any) None
-

Detach audio stream processor from the entire audio pipeline.

-
- -
-
-pyray.detach_audio_stream_processor(stream: AudioStream | list | tuple, processor: Any) None
-

Detach audio stream processor from stream.

-
- -
-
-pyray.directory_exists(dirPath: str) bool
-

Check if a directory path exists.

-
- -
-
-pyray.disable_cursor() None
-

Disables cursor (lock cursor).

-
- -
-
-pyray.disable_event_waiting() None
-

Disable waiting for events on EndDrawing(), automatic events polling.

-
- -
-
-pyray.draw_billboard(camera: Camera3D | list | tuple, texture: Texture | list | tuple, position: Vector3 | list | tuple, scale: float, tint: Color | list | tuple) None
-

Draw a billboard texture.

-
- -
-
-pyray.draw_billboard_pro(camera: Camera3D | list | tuple, texture: Texture | list | tuple, source: Rectangle | list | tuple, position: Vector3 | list | tuple, up: Vector3 | list | tuple, size: Vector2 | list | tuple, origin: Vector2 | list | tuple, rotation: float, tint: Color | list | tuple) None
-

Draw a billboard texture defined by source and rotation.

-
- -
-
-pyray.draw_billboard_rec(camera: Camera3D | list | tuple, texture: Texture | list | tuple, source: Rectangle | list | tuple, position: Vector3 | list | tuple, size: Vector2 | list | tuple, tint: Color | list | tuple) None
-

Draw a billboard texture defined by source.

-
- -
-
-pyray.draw_bounding_box(box: BoundingBox | list | tuple, color: Color | list | tuple) None
-

Draw bounding box (wires).

-
- -
-
-pyray.draw_capsule(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, radius: float, slices: int, rings: int, color: Color | list | tuple) None
-

Draw a capsule with the center of its sphere caps at startPos and endPos.

-
- -
-
-pyray.draw_capsule_wires(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, radius: float, slices: int, rings: int, color: Color | list | tuple) None
-

Draw capsule wireframe with the center of its sphere caps at startPos and endPos.

-
- -
-
-pyray.draw_circle(centerX: int, centerY: int, radius: float, color: Color | list | tuple) None
-

Draw a color-filled circle.

-
- -
-
-pyray.draw_circle_3d(center: Vector3 | list | tuple, radius: float, rotationAxis: Vector3 | list | tuple, rotationAngle: float, color: Color | list | tuple) None
-

Draw a circle in 3D world space.

-
- -
-
-pyray.draw_circle_gradient(centerX: int, centerY: int, radius: float, inner: Color | list | tuple, outer: Color | list | tuple) None
-

Draw a gradient-filled circle.

-
- -
-
-pyray.draw_circle_lines(centerX: int, centerY: int, radius: float, color: Color | list | tuple) None
-

Draw circle outline.

-
- -
-
-pyray.draw_circle_lines_v(center: Vector2 | list | tuple, radius: float, color: Color | list | tuple) None
-

Draw circle outline (Vector version).

-
- -
-
-pyray.draw_circle_sector(center: Vector2 | list | tuple, radius: float, startAngle: float, endAngle: float, segments: int, color: Color | list | tuple) None
-

Draw a piece of a circle.

-
- -
-
-pyray.draw_circle_sector_lines(center: Vector2 | list | tuple, radius: float, startAngle: float, endAngle: float, segments: int, color: Color | list | tuple) None
-

Draw circle sector outline.

-
- -
-
-pyray.draw_circle_v(center: Vector2 | list | tuple, radius: float, color: Color | list | tuple) None
-

Draw a color-filled circle (Vector version).

-
- -
-
-pyray.draw_cube(position: Vector3 | list | tuple, width: float, height: float, length: float, color: Color | list | tuple) None
-

Draw cube.

-
- -
-
-pyray.draw_cube_v(position: Vector3 | list | tuple, size: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw cube (Vector version).

-
- -
-
-pyray.draw_cube_wires(position: Vector3 | list | tuple, width: float, height: float, length: float, color: Color | list | tuple) None
-

Draw cube wires.

-
- -
-
-pyray.draw_cube_wires_v(position: Vector3 | list | tuple, size: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw cube wires (Vector version).

-
- -
-
-pyray.draw_cylinder(position: Vector3 | list | tuple, radiusTop: float, radiusBottom: float, height: float, slices: int, color: Color | list | tuple) None
-

Draw a cylinder/cone.

-
- -
-
-pyray.draw_cylinder_ex(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, startRadius: float, endRadius: float, sides: int, color: Color | list | tuple) None
-

Draw a cylinder with base at startPos and top at endPos.

-
- -
-
-pyray.draw_cylinder_wires(position: Vector3 | list | tuple, radiusTop: float, radiusBottom: float, height: float, slices: int, color: Color | list | tuple) None
-

Draw a cylinder/cone wires.

-
- -
-
-pyray.draw_cylinder_wires_ex(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, startRadius: float, endRadius: float, sides: int, color: Color | list | tuple) None
-

Draw a cylinder wires with base at startPos and top at endPos.

-
- -
-
-pyray.draw_ellipse(centerX: int, centerY: int, radiusH: float, radiusV: float, color: Color | list | tuple) None
-

Draw ellipse.

-
- -
-
-pyray.draw_ellipse_lines(centerX: int, centerY: int, radiusH: float, radiusV: float, color: Color | list | tuple) None
-

Draw ellipse outline.

-
- -
-
-pyray.draw_fps(posX: int, posY: int) None
-

Draw current FPS.

-
- -
-
-pyray.draw_grid(slices: int, spacing: float) None
-

Draw a grid (centered at (0, 0, 0)).

-
- -
-
-pyray.draw_line(startPosX: int, startPosY: int, endPosX: int, endPosY: int, color: Color | list | tuple) None
-

Draw a line.

-
- -
-
-pyray.draw_line_3d(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw a line in 3D world space.

-
- -
-
-pyray.draw_line_bezier(startPos: Vector2 | list | tuple, endPos: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw line segment cubic-bezier in-out interpolation.

-
- -
-
-pyray.draw_line_ex(startPos: Vector2 | list | tuple, endPos: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw a line (using triangles/quads).

-
- -
-
-pyray.draw_line_strip(points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw lines sequence (using gl lines).

-
- -
-
-pyray.draw_line_v(startPos: Vector2 | list | tuple, endPos: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a line (using gl lines).

-
- -
-
-pyray.draw_mesh(mesh: Mesh | list | tuple, material: Material | list | tuple, transform: Matrix | list | tuple) None
-

Draw a 3d mesh with material and transform.

-
- -
-
-pyray.draw_mesh_instanced(mesh: Mesh | list | tuple, material: Material | list | tuple, transforms: Any | list | tuple, instances: int) None
-

Draw multiple mesh instances with material and different transforms.

-
- -
-
-pyray.draw_model(model: Model | list | tuple, position: Vector3 | list | tuple, scale: float, tint: Color | list | tuple) None
-

Draw a model (with texture if set).

-
- -
-
-pyray.draw_model_ex(model: Model | list | tuple, position: Vector3 | list | tuple, rotationAxis: Vector3 | list | tuple, rotationAngle: float, scale: Vector3 | list | tuple, tint: Color | list | tuple) None
-

Draw a model with extended parameters.

-
- -
-
-pyray.draw_model_points(model: Model | list | tuple, position: Vector3 | list | tuple, scale: float, tint: Color | list | tuple) None
-

Draw a model as points.

-
- -
-
-pyray.draw_model_points_ex(model: Model | list | tuple, position: Vector3 | list | tuple, rotationAxis: Vector3 | list | tuple, rotationAngle: float, scale: Vector3 | list | tuple, tint: Color | list | tuple) None
-

Draw a model as points with extended parameters.

-
- -
-
-pyray.draw_model_wires(model: Model | list | tuple, position: Vector3 | list | tuple, scale: float, tint: Color | list | tuple) None
-

Draw a model wires (with texture if set).

-
- -
-
-pyray.draw_model_wires_ex(model: Model | list | tuple, position: Vector3 | list | tuple, rotationAxis: Vector3 | list | tuple, rotationAngle: float, scale: Vector3 | list | tuple, tint: Color | list | tuple) None
-

Draw a model wires (with texture if set) with extended parameters.

-
- -
-
-pyray.draw_pixel(posX: int, posY: int, color: Color | list | tuple) None
-

Draw a pixel using geometry [Can be slow, use with care].

-
- -
-
-pyray.draw_pixel_v(position: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a pixel using geometry (Vector version) [Can be slow, use with care].

-
- -
-
-pyray.draw_plane(centerPos: Vector3 | list | tuple, size: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a plane XZ.

-
- -
-
-pyray.draw_point_3d(position: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw a point in 3D space, actually a small line.

-
- -
-
-pyray.draw_poly(center: Vector2 | list | tuple, sides: int, radius: float, rotation: float, color: Color | list | tuple) None
-

Draw a regular polygon (Vector version).

-
- -
-
-pyray.draw_poly_lines(center: Vector2 | list | tuple, sides: int, radius: float, rotation: float, color: Color | list | tuple) None
-

Draw a polygon outline of n sides.

-
- -
-
-pyray.draw_poly_lines_ex(center: Vector2 | list | tuple, sides: int, radius: float, rotation: float, lineThick: float, color: Color | list | tuple) None
-

Draw a polygon outline of n sides with extended parameters.

-
- -
-
-pyray.draw_ray(ray: Ray | list | tuple, color: Color | list | tuple) None
-

Draw a ray line.

-
- -
-
-pyray.draw_rectangle(posX: int, posY: int, width: int, height: int, color: Color | list | tuple) None
-

Draw a color-filled rectangle.

-
- -
-
-pyray.draw_rectangle_gradient_ex(rec: Rectangle | list | tuple, topLeft: Color | list | tuple, bottomLeft: Color | list | tuple, topRight: Color | list | tuple, bottomRight: Color | list | tuple) None
-

Draw a gradient-filled rectangle with custom vertex colors.

-
- -
-
-pyray.draw_rectangle_gradient_h(posX: int, posY: int, width: int, height: int, left: Color | list | tuple, right: Color | list | tuple) None
-

Draw a horizontal-gradient-filled rectangle.

-
- -
-
-pyray.draw_rectangle_gradient_v(posX: int, posY: int, width: int, height: int, top: Color | list | tuple, bottom: Color | list | tuple) None
-

Draw a vertical-gradient-filled rectangle.

-
- -
-
-pyray.draw_rectangle_lines(posX: int, posY: int, width: int, height: int, color: Color | list | tuple) None
-

Draw rectangle outline.

-
- -
-
-pyray.draw_rectangle_lines_ex(rec: Rectangle | list | tuple, lineThick: float, color: Color | list | tuple) None
-

Draw rectangle outline with extended parameters.

-
- -
-
-pyray.draw_rectangle_pro(rec: Rectangle | list | tuple, origin: Vector2 | list | tuple, rotation: float, color: Color | list | tuple) None
-

Draw a color-filled rectangle with pro parameters.

-
- -
-
-pyray.draw_rectangle_rec(rec: Rectangle | list | tuple, color: Color | list | tuple) None
-

Draw a color-filled rectangle.

-
- -
-
-pyray.draw_rectangle_rounded(rec: Rectangle | list | tuple, roundness: float, segments: int, color: Color | list | tuple) None
-

Draw rectangle with rounded edges.

-
- -
-
-pyray.draw_rectangle_rounded_lines(rec: Rectangle | list | tuple, roundness: float, segments: int, color: Color | list | tuple) None
-

Draw rectangle lines with rounded edges.

-
- -
-
-pyray.draw_rectangle_rounded_lines_ex(rec: Rectangle | list | tuple, roundness: float, segments: int, lineThick: float, color: Color | list | tuple) None
-

Draw rectangle with rounded edges outline.

-
- -
-
-pyray.draw_rectangle_v(position: Vector2 | list | tuple, size: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a color-filled rectangle (Vector version).

-
- -
-
-pyray.draw_ring(center: Vector2 | list | tuple, innerRadius: float, outerRadius: float, startAngle: float, endAngle: float, segments: int, color: Color | list | tuple) None
-

Draw ring.

-
- -
-
-pyray.draw_ring_lines(center: Vector2 | list | tuple, innerRadius: float, outerRadius: float, startAngle: float, endAngle: float, segments: int, color: Color | list | tuple) None
-

Draw ring outline.

-
- -
-
-pyray.draw_sphere(centerPos: Vector3 | list | tuple, radius: float, color: Color | list | tuple) None
-

Draw sphere.

-
- -
-
-pyray.draw_sphere_ex(centerPos: Vector3 | list | tuple, radius: float, rings: int, slices: int, color: Color | list | tuple) None
-

Draw sphere with extended parameters.

-
- -
-
-pyray.draw_sphere_wires(centerPos: Vector3 | list | tuple, radius: float, rings: int, slices: int, color: Color | list | tuple) None
-

Draw sphere wires.

-
- -
-
-pyray.draw_spline_basis(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: B-Spline, minimum 4 points.

-
- -
-
-pyray.draw_spline_bezier_cubic(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6…].

-
- -
-
-pyray.draw_spline_bezier_quadratic(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4…].

-
- -
-
-pyray.draw_spline_catmull_rom(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: Catmull-Rom, minimum 4 points.

-
- -
-
-pyray.draw_spline_linear(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: Linear, minimum 2 points.

-
- -
-
-pyray.draw_spline_segment_basis(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple, p4: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: B-Spline, 4 points.

-
- -
-
-pyray.draw_spline_segment_bezier_cubic(p1: Vector2 | list | tuple, c2: Vector2 | list | tuple, c3: Vector2 | list | tuple, p4: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: Cubic Bezier, 2 points, 2 control points.

-
- -
-
-pyray.draw_spline_segment_bezier_quadratic(p1: Vector2 | list | tuple, c2: Vector2 | list | tuple, p3: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: Quadratic Bezier, 2 points, 1 control point.

-
- -
-
-pyray.draw_spline_segment_catmull_rom(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple, p4: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: Catmull-Rom, 4 points.

-
- -
-
-pyray.draw_spline_segment_linear(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: Linear, 2 points.

-
- -
-
-pyray.draw_text(text: str, posX: int, posY: int, fontSize: int, color: Color | list | tuple) None
-

Draw text (using default font).

-
- -
-
-pyray.draw_text_codepoint(font: Font | list | tuple, codepoint: int, position: Vector2 | list | tuple, fontSize: float, tint: Color | list | tuple) None
-

Draw one character (codepoint).

-
- -
-
-pyray.draw_text_codepoints(font: Font | list | tuple, codepoints: Any, codepointCount: int, position: Vector2 | list | tuple, fontSize: float, spacing: float, tint: Color | list | tuple) None
-

Draw multiple character (codepoint).

-
- -
-
-pyray.draw_text_ex(font: Font | list | tuple, text: str, position: Vector2 | list | tuple, fontSize: float, spacing: float, tint: Color | list | tuple) None
-

Draw text using font and additional parameters.

-
- -
-
-pyray.draw_text_pro(font: Font | list | tuple, text: str, position: Vector2 | list | tuple, origin: Vector2 | list | tuple, rotation: float, fontSize: float, spacing: float, tint: Color | list | tuple) None
-

Draw text using Font and pro parameters (rotation).

-
- -
-
-pyray.draw_texture(texture: Texture | list | tuple, posX: int, posY: int, tint: Color | list | tuple) None
-

Draw a Texture2D.

-
- -
-
-pyray.draw_texture_ex(texture: Texture | list | tuple, position: Vector2 | list | tuple, rotation: float, scale: float, tint: Color | list | tuple) None
-

Draw a Texture2D with extended parameters.

-
- -
-
-pyray.draw_texture_n_patch(texture: Texture | list | tuple, nPatchInfo: NPatchInfo | list | tuple, dest: Rectangle | list | tuple, origin: Vector2 | list | tuple, rotation: float, tint: Color | list | tuple) None
-

Draws a texture (or part of it) that stretches or shrinks nicely.

-
- -
-
-pyray.draw_texture_pro(texture: Texture | list | tuple, source: Rectangle | list | tuple, dest: Rectangle | list | tuple, origin: Vector2 | list | tuple, rotation: float, tint: Color | list | tuple) None
-

Draw a part of a texture defined by a rectangle with ‘pro’ parameters.

-
- -
-
-pyray.draw_texture_rec(texture: Texture | list | tuple, source: Rectangle | list | tuple, position: Vector2 | list | tuple, tint: Color | list | tuple) None
-

Draw a part of a texture defined by a rectangle.

-
- -
-
-pyray.draw_texture_v(texture: Texture | list | tuple, position: Vector2 | list | tuple, tint: Color | list | tuple) None
-

Draw a Texture2D with position defined as Vector2.

-
- -
-
-pyray.draw_triangle(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a color-filled triangle (vertex in counter-clockwise order!).

-
- -
-
-pyray.draw_triangle_3d(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple, v3: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw a color-filled triangle (vertex in counter-clockwise order!).

-
- -
-
-pyray.draw_triangle_fan(points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle fan defined by points (first vertex is the center).

-
- -
-
-pyray.draw_triangle_lines(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw triangle outline (vertex in counter-clockwise order!).

-
- -
-
-pyray.draw_triangle_strip(points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle strip defined by points.

-
- -
-
-pyray.draw_triangle_strip_3d(points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle strip defined by points.

-
- -
-
-pyray.enable_cursor() None
-

Enables cursor (unlock cursor).

-
- -
-
-pyray.enable_event_waiting() None
-

Enable waiting for events on EndDrawing(), no automatic event polling.

-
- -
-
-pyray.encode_data_base64(data: str, dataSize: int, outputSize: Any) str
-

Encode data to Base64 string, memory must be MemFree().

-
- -
-
-pyray.end_blend_mode() None
-

End blending mode (reset to default: alpha blending).

-
- -
-
-pyray.end_drawing() None
-

End canvas drawing and swap buffers (double buffering).

-
- -
-
-pyray.end_mode_2d() None
-

Ends 2D mode with custom camera.

-
- -
-
-pyray.end_mode_3d() None
-

Ends 3D mode and returns to default 2D orthographic mode.

-
- -
-
-pyray.end_scissor_mode() None
-

End scissor mode.

-
- -
-
-pyray.end_shader_mode() None
-

End custom shader drawing (use default shader).

-
- -
-
-pyray.end_texture_mode() None
-

Ends drawing to render texture.

-
- -
-
-pyray.end_vr_stereo_mode() None
-

End stereo rendering (requires VR simulator).

-
- -
-
-pyray.export_automation_event_list(list_0: AutomationEventList | list | tuple, fileName: str) bool
-

Export automation events list as text file.

-
- -
-
-pyray.export_data_as_code(data: str, dataSize: int, fileName: str) bool
-

Export data to code (.h), returns true on success.

-
- -
-
-pyray.export_font_as_code(font: Font | list | tuple, fileName: str) bool
-

Export font as code file, returns true on success.

-
- -
-
-pyray.export_image(image: Image | list | tuple, fileName: str) bool
-

Export image data to file, returns true on success.

-
- -
-
-pyray.export_image_as_code(image: Image | list | tuple, fileName: str) bool
-

Export image as code file defining an array of bytes, returns true on success.

-
- -
-
-pyray.export_image_to_memory(image: Image | list | tuple, fileType: str, fileSize: Any) str
-

Export image to memory buffer.

-
- -
-
-pyray.export_mesh(mesh: Mesh | list | tuple, fileName: str) bool
-

Export mesh data to file, returns true on success.

-
- -
-
-pyray.export_mesh_as_code(mesh: Mesh | list | tuple, fileName: str) bool
-

Export mesh as code file (.h) defining multiple arrays of vertex attributes.

-
- -
-
-pyray.export_wave(wave: Wave | list | tuple, fileName: str) bool
-

Export wave data to file, returns true on success.

-
- -
-
-pyray.export_wave_as_code(wave: Wave | list | tuple, fileName: str) bool
-

Export wave sample data to code (.h), returns true on success.

-
- -
-
-pyray.fade(color: Color | list | tuple, alpha: float) Color
-

Get color with alpha applied, alpha goes from 0.0f to 1.0f.

-
- -
-
-pyray.ffi: _cffi_backend.FFI
-
- -
-
-pyray.file_exists(fileName: str) bool
-

Check if file exists.

-
- -
-
-class pyray.float16(v: list | None = None)
-

.

-
-
-v: list = None
-
- -
- -
-
-class pyray.float3(v: list | None = None)
-

NOTE: Helper types to be used instead of array return types for *ToFloat functions.

-
-
-v: list = None
-
- -
- -
-
-pyray.float_equals(x: float, y: float) int
-

.

-
- -
-
-pyray.gen_image_cellular(width: int, height: int, tileSize: int) Image
-

Generate image: cellular algorithm, bigger tileSize means bigger cells.

-
- -
-
-pyray.gen_image_checked(width: int, height: int, checksX: int, checksY: int, col1: Color | list | tuple, col2: Color | list | tuple) Image
-

Generate image: checked.

-
- -
-
-pyray.gen_image_color(width: int, height: int, color: Color | list | tuple) Image
-

Generate image: plain color.

-
- -
-
-pyray.gen_image_font_atlas(glyphs: Any | list | tuple, glyphRecs: Any | list | tuple, glyphCount: int, fontSize: int, padding: int, packMethod: int) Image
-

Generate image font atlas using chars info.

-
- -
-
-pyray.gen_image_gradient_linear(width: int, height: int, direction: int, start: Color | list | tuple, end: Color | list | tuple) Image
-

Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient.

-
- -
-
-pyray.gen_image_gradient_radial(width: int, height: int, density: float, inner: Color | list | tuple, outer: Color | list | tuple) Image
-

Generate image: radial gradient.

-
- -
-
-pyray.gen_image_gradient_square(width: int, height: int, density: float, inner: Color | list | tuple, outer: Color | list | tuple) Image
-

Generate image: square gradient.

-
- -
-
-pyray.gen_image_perlin_noise(width: int, height: int, offsetX: int, offsetY: int, scale: float) Image
-

Generate image: perlin noise.

-
- -
-
-pyray.gen_image_text(width: int, height: int, text: str) Image
-

Generate image: grayscale image from text data.

-
- -
-
-pyray.gen_image_white_noise(width: int, height: int, factor: float) Image
-

Generate image: white noise.

-
- -
-
-pyray.gen_mesh_cone(radius: float, height: float, slices: int) Mesh
-

Generate cone/pyramid mesh.

-
- -
-
-pyray.gen_mesh_cube(width: float, height: float, length: float) Mesh
-

Generate cuboid mesh.

-
- -
-
-pyray.gen_mesh_cubicmap(cubicmap: Image | list | tuple, cubeSize: Vector3 | list | tuple) Mesh
-

Generate cubes-based map mesh from image data.

-
- -
-
-pyray.gen_mesh_cylinder(radius: float, height: float, slices: int) Mesh
-

Generate cylinder mesh.

-
- -
-
-pyray.gen_mesh_heightmap(heightmap: Image | list | tuple, size: Vector3 | list | tuple) Mesh
-

Generate heightmap mesh from image data.

-
- -
-
-pyray.gen_mesh_hemi_sphere(radius: float, rings: int, slices: int) Mesh
-

Generate half-sphere mesh (no bottom cap).

-
- -
-
-pyray.gen_mesh_knot(radius: float, size: float, radSeg: int, sides: int) Mesh
-

Generate trefoil knot mesh.

-
- -
-
-pyray.gen_mesh_plane(width: float, length: float, resX: int, resZ: int) Mesh
-

Generate plane mesh (with subdivisions).

-
- -
-
-pyray.gen_mesh_poly(sides: int, radius: float) Mesh
-

Generate polygonal mesh.

-
- -
-
-pyray.gen_mesh_sphere(radius: float, rings: int, slices: int) Mesh
-

Generate sphere mesh (standard sphere).

-
- -
-
-pyray.gen_mesh_tangents(mesh: Any | list | tuple) None
-

Compute mesh tangents.

-
- -
-
-pyray.gen_mesh_torus(radius: float, size: float, radSeg: int, sides: int) Mesh
-

Generate torus mesh.

-
- -
-
-pyray.gen_texture_mipmaps(texture: Any | list | tuple) None
-

Generate GPU mipmaps for a texture.

-
- -
-
-pyray.get_application_directory() str
-

Get the directory of the running application (uses static string).

-
- -
-
-pyray.get_camera_matrix(camera: Camera3D | list | tuple) Matrix
-

Get camera transform matrix (view matrix).

-
- -
-
-pyray.get_camera_matrix_2d(camera: Camera2D | list | tuple) Matrix
-

Get camera 2d transform matrix.

-
- -
-
-pyray.get_char_pressed() int
-

Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty.

-
- -
-
-pyray.get_clipboard_image() Image
-

Get clipboard image content.

-
- -
-
-pyray.get_clipboard_text() str
-

Get clipboard text content.

-
- -
-
-pyray.get_codepoint(text: str, codepointSize: Any) int
-

Get next codepoint in a UTF-8 encoded string, 0x3f(‘?’) is returned on failure.

-
- -
-
-pyray.get_codepoint_count(text: str) int
-

Get total number of codepoints in a UTF-8 encoded string.

-
- -
-
-pyray.get_codepoint_next(text: str, codepointSize: Any) int
-

Get next codepoint in a UTF-8 encoded string, 0x3f(‘?’) is returned on failure.

-
- -
-
-pyray.get_codepoint_previous(text: str, codepointSize: Any) int
-

Get previous codepoint in a UTF-8 encoded string, 0x3f(‘?’) is returned on failure.

-
- -
-
-pyray.get_collision_rec(rec1: Rectangle | list | tuple, rec2: Rectangle | list | tuple) Rectangle
-

Get collision rectangle for two rectangles collision.

-
- -
-
-pyray.get_color(hexValue: int) Color
-

Get Color structure from hexadecimal value.

-
- -
-
-pyray.get_current_monitor() int
-

Get current monitor where window is placed.

-
- -
-
-pyray.get_directory_path(filePath: str) str
-

Get full path for a given fileName with path (uses static string).

-
- -
-
-pyray.get_file_extension(fileName: str) str
-

Get pointer to extension for a filename string (includes dot: ‘.png’).

-
- -
-
-pyray.get_file_length(fileName: str) int
-

Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h).

-
- -
-
-pyray.get_file_mod_time(fileName: str) int
-

Get file modification time (last write time).

-
- -
-
-pyray.get_file_name(filePath: str) str
-

Get pointer to filename for a path string.

-
- -
-
-pyray.get_file_name_without_ext(filePath: str) str
-

Get filename string without extension (uses static string).

-
- -
-
-pyray.get_font_default() Font
-

Get the default Font.

-
- -
-
-pyray.get_fps() int
-

Get current FPS.

-
- -
-
-pyray.get_frame_time() float
-

Get time in seconds for last frame drawn (delta time).

-
- -
-
-pyray.get_gamepad_axis_count(gamepad: int) int
-

Get gamepad axis count for a gamepad.

-
- -
-
-pyray.get_gamepad_axis_movement(gamepad: int, axis: int) float
-

Get axis movement value for a gamepad axis.

-
- -
-
-pyray.get_gamepad_button_pressed() int
-

Get the last gamepad button pressed.

-
- -
-
-pyray.get_gamepad_name(gamepad: int) str
-

Get gamepad internal name id.

-
- -
-
-pyray.get_gesture_detected() int
-

Get latest detected gesture.

-
- -
-
-pyray.get_gesture_drag_angle() float
-

Get gesture drag angle.

-
- -
-
-pyray.get_gesture_drag_vector() Vector2
-

Get gesture drag vector.

-
- -
-
-pyray.get_gesture_hold_duration() float
-

Get gesture hold time in seconds.

-
- -
-
-pyray.get_gesture_pinch_angle() float
-

Get gesture pinch angle.

-
- -
-
-pyray.get_gesture_pinch_vector() Vector2
-

Get gesture pinch delta.

-
- -
-
-pyray.get_glyph_atlas_rec(font: Font | list | tuple, codepoint: int) Rectangle
-

Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to ‘?’ if not found.

-
- -
-
-pyray.get_glyph_index(font: Font | list | tuple, codepoint: int) int
-

Get glyph index position in font for a codepoint (unicode character), fallback to ‘?’ if not found.

-
- -
-
-pyray.get_glyph_info(font: Font | list | tuple, codepoint: int) GlyphInfo
-

Get glyph font info data for a codepoint (unicode character), fallback to ‘?’ if not found.

-
- -
-
-pyray.get_image_alpha_border(image: Image | list | tuple, threshold: float) Rectangle
-

Get image alpha border rectangle.

-
- -
-
-pyray.get_image_color(image: Image | list | tuple, x: int, y: int) Color
-

Get image pixel color at (x, y) position.

-
- -
-
-pyray.get_key_pressed() int
-

Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty.

-
- -
-
-pyray.get_master_volume() float
-

Get master volume (listener).

-
- -
-
-pyray.get_mesh_bounding_box(mesh: Mesh | list | tuple) BoundingBox
-

Compute mesh bounding box limits.

-
- -
-
-pyray.get_model_bounding_box(model: Model | list | tuple) BoundingBox
-

Compute model bounding box limits (considers all meshes).

-
- -
-
-pyray.get_monitor_count() int
-

Get number of connected monitors.

-
- -
-
-pyray.get_monitor_height(monitor: int) int
-

Get specified monitor height (current video mode used by monitor).

-
- -
-
-pyray.get_monitor_name(monitor: int) str
-

Get the human-readable, UTF-8 encoded name of the specified monitor.

-
- -
-
-pyray.get_monitor_physical_height(monitor: int) int
-

Get specified monitor physical height in millimetres.

-
- -
-
-pyray.get_monitor_physical_width(monitor: int) int
-

Get specified monitor physical width in millimetres.

-
- -
-
-pyray.get_monitor_position(monitor: int) Vector2
-

Get specified monitor position.

-
- -
-
-pyray.get_monitor_refresh_rate(monitor: int) int
-

Get specified monitor refresh rate.

-
- -
-
-pyray.get_monitor_width(monitor: int) int
-

Get specified monitor width (current video mode used by monitor).

-
- -
-
-pyray.get_mouse_delta() Vector2
-

Get mouse delta between frames.

-
- -
-
-pyray.get_mouse_position() Vector2
-

Get mouse position XY.

-
- -
-
-pyray.get_mouse_wheel_move() float
-

Get mouse wheel movement for X or Y, whichever is larger.

-
- -
-
-pyray.get_mouse_wheel_move_v() Vector2
-

Get mouse wheel movement for both X and Y.

-
- -
-
-pyray.get_mouse_x() int
-

Get mouse position X.

-
- -
-
-pyray.get_mouse_y() int
-

Get mouse position Y.

-
- -
-
-pyray.get_music_time_length(music: Music | list | tuple) float
-

Get music time length (in seconds).

-
- -
-
-pyray.get_music_time_played(music: Music | list | tuple) float
-

Get current music time played (in seconds).

-
- -
-
-pyray.get_physics_bodies_count() int
-

Returns the current amount of created physics bodies.

-
- -
-
-pyray.get_physics_body(index: int) Any
-

Returns a physics body of the bodies pool at a specific index.

-
- -
-
-pyray.get_physics_shape_type(index: int) int
-

Returns the physics body shape type (PHYSICS_CIRCLE or PHYSICS_POLYGON).

-
- -
-
-pyray.get_physics_shape_vertex(body: Any | list | tuple, vertex: int) Vector2
-

Returns transformed position of a body shape (body position + vertex transformed position).

-
- -
-
-pyray.get_physics_shape_vertices_count(index: int) int
-

Returns the amount of vertices of a physics body shape.

-
- -
-
-pyray.get_pixel_color(srcPtr: Any, format: int) Color
-

Get Color from a source pixel pointer of certain format.

-
- -
-
-pyray.get_pixel_data_size(width: int, height: int, format: int) int
-

Get pixel data size in bytes for certain format.

-
- -
-
-pyray.get_prev_directory_path(dirPath: str) str
-

Get previous directory path for a given path (uses static string).

-
- -
-
-pyray.get_random_value(min_0: int, max_1: int) int
-

Get a random value between min and max (both included).

-
- -
-
-pyray.get_ray_collision_box(ray: Ray | list | tuple, box: BoundingBox | list | tuple) RayCollision
-

Get collision info between ray and box.

-
- -
-
-pyray.get_ray_collision_mesh(ray: Ray | list | tuple, mesh: Mesh | list | tuple, transform: Matrix | list | tuple) RayCollision
-

Get collision info between ray and mesh.

-
- -
-
-pyray.get_ray_collision_quad(ray: Ray | list | tuple, p1: Vector3 | list | tuple, p2: Vector3 | list | tuple, p3: Vector3 | list | tuple, p4: Vector3 | list | tuple) RayCollision
-

Get collision info between ray and quad.

-
- -
-
-pyray.get_ray_collision_sphere(ray: Ray | list | tuple, center: Vector3 | list | tuple, radius: float) RayCollision
-

Get collision info between ray and sphere.

-
- -
-
-pyray.get_ray_collision_triangle(ray: Ray | list | tuple, p1: Vector3 | list | tuple, p2: Vector3 | list | tuple, p3: Vector3 | list | tuple) RayCollision
-

Get collision info between ray and triangle.

-
- -
-
-pyray.get_render_height() int
-

Get current render height (it considers HiDPI).

-
- -
-
-pyray.get_render_width() int
-

Get current render width (it considers HiDPI).

-
- -
-
-pyray.get_screen_height() int
-

Get current screen height.

-
- -
-
-pyray.get_screen_to_world_2d(position: Vector2 | list | tuple, camera: Camera2D | list | tuple) Vector2
-

Get the world space position for a 2d camera screen space position.

-
- -
-
-pyray.get_screen_to_world_ray(position: Vector2 | list | tuple, camera: Camera3D | list | tuple) Ray
-

Get a ray trace from screen position (i.e mouse).

-
- -
-
-pyray.get_screen_to_world_ray_ex(position: Vector2 | list | tuple, camera: Camera3D | list | tuple, width: int, height: int) Ray
-

Get a ray trace from screen position (i.e mouse) in a viewport.

-
- -
-
-pyray.get_screen_width() int
-

Get current screen width.

-
- -
-
-pyray.get_shader_location(shader: Shader | list | tuple, uniformName: str) int
-

Get shader uniform location.

-
- -
-
-pyray.get_shader_location_attrib(shader: Shader | list | tuple, attribName: str) int
-

Get shader attribute location.

-
- -
-
-pyray.get_shapes_texture() Texture
-

Get texture that is used for shapes drawing.

-
- -
-
-pyray.get_shapes_texture_rectangle() Rectangle
-

Get texture source rectangle that is used for shapes drawing.

-
- -
-
-pyray.get_spline_point_basis(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple, p4: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: B-Spline.

-
- -
-
-pyray.get_spline_point_bezier_cubic(p1: Vector2 | list | tuple, c2: Vector2 | list | tuple, c3: Vector2 | list | tuple, p4: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: Cubic Bezier.

-
- -
-
-pyray.get_spline_point_bezier_quad(p1: Vector2 | list | tuple, c2: Vector2 | list | tuple, p3: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: Quadratic Bezier.

-
- -
-
-pyray.get_spline_point_catmull_rom(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple, p4: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: Catmull-Rom.

-
- -
-
-pyray.get_spline_point_linear(startPos: Vector2 | list | tuple, endPos: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: Linear.

-
- -
-
-pyray.get_time() float
-

Get elapsed time in seconds since InitWindow().

-
- -
-
-pyray.get_touch_point_count() int
-

Get number of touch points.

-
- -
-
-pyray.get_touch_point_id(index: int) int
-

Get touch point identifier for given index.

-
- -
-
-pyray.get_touch_position(index: int) Vector2
-

Get touch position XY for a touch point index (relative to screen size).

-
- -
-
-pyray.get_touch_x() int
-

Get touch position X for touch point 0 (relative to screen size).

-
- -
-
-pyray.get_touch_y() int
-

Get touch position Y for touch point 0 (relative to screen size).

-
- -
-
-pyray.get_window_handle() Any
-

Get native window handle.

-
- -
-
-pyray.get_window_position() Vector2
-

Get window position XY on monitor.

-
- -
-
-pyray.get_window_scale_dpi() Vector2
-

Get window scale DPI factor.

-
- -
-
-pyray.get_working_directory() str
-

Get current working directory (uses static string).

-
- -
-
-pyray.get_world_to_screen(position: Vector3 | list | tuple, camera: Camera3D | list | tuple) Vector2
-

Get the screen space position for a 3d world space position.

-
- -
-
-pyray.get_world_to_screen_2d(position: Vector2 | list | tuple, camera: Camera2D | list | tuple) Vector2
-

Get the screen space position for a 2d camera world space position.

-
- -
-
-pyray.get_world_to_screen_ex(position: Vector3 | list | tuple, camera: Camera3D | list | tuple, width: int, height: int) Vector2
-

Get size position for a 3d world space position.

-
- -
-
-pyray.glfw_create_cursor(image: Any | list | tuple, xhot: int, yhot: int) Any
-

.

-
- -
-
-pyray.glfw_create_standard_cursor(shape: int) Any
-

.

-
- -
-
-pyray.glfw_create_window(width: int, height: int, title: str, monitor: Any | list | tuple, share: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_default_window_hints() None
-

.

-
- -
-
-pyray.glfw_destroy_cursor(cursor: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_destroy_window(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_extension_supported(extension: str) int
-

.

-
- -
-
-pyray.glfw_focus_window(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_get_clipboard_string(window: Any | list | tuple) str
-

.

-
- -
-
-pyray.glfw_get_current_context() Any
-

.

-
- -
-
-pyray.glfw_get_cursor_pos(window: Any | list | tuple, xpos: Any, ypos: Any) None
-

.

-
- -
-
-pyray.glfw_get_error(description: list[str]) int
-

.

-
- -
-
-pyray.glfw_get_framebuffer_size(window: Any | list | tuple, width: Any, height: Any) None
-

.

-
- -
-
-pyray.glfw_get_gamepad_name(jid: int) str
-

.

-
- -
-
-pyray.glfw_get_gamepad_state(jid: int, state: Any | list | tuple) int
-

.

-
- -
-
-pyray.glfw_get_gamma_ramp(monitor: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_get_input_mode(window: Any | list | tuple, mode: int) int
-

.

-
- -
-
-pyray.glfw_get_joystick_axes(jid: int, count: Any) Any
-

.

-
- -
-
-pyray.glfw_get_joystick_buttons(jid: int, count: Any) str
-

.

-
- -
-
-pyray.glfw_get_joystick_guid(jid: int) str
-

.

-
- -
-
-pyray.glfw_get_joystick_hats(jid: int, count: Any) str
-

.

-
- -
-
-pyray.glfw_get_joystick_name(jid: int) str
-

.

-
- -
-
-pyray.glfw_get_joystick_user_pointer(jid: int) Any
-

.

-
- -
-
-pyray.glfw_get_key(window: Any | list | tuple, key: int) int
-

.

-
- -
-
-pyray.glfw_get_key_name(key: int, scancode: int) str
-

.

-
- -
-
-pyray.glfw_get_key_scancode(key: int) int
-

.

-
- -
-
-pyray.glfw_get_monitor_content_scale(monitor: Any | list | tuple, xscale: Any, yscale: Any) None
-

.

-
- -
-
-pyray.glfw_get_monitor_name(monitor: Any | list | tuple) str
-

.

-
- -
-
-pyray.glfw_get_monitor_physical_size(monitor: Any | list | tuple, widthMM: Any, heightMM: Any) None
-

.

-
- -
-
-pyray.glfw_get_monitor_pos(monitor: Any | list | tuple, xpos: Any, ypos: Any) None
-

.

-
- -
-
-pyray.glfw_get_monitor_user_pointer(monitor: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_get_monitor_workarea(monitor: Any | list | tuple, xpos: Any, ypos: Any, width: Any, height: Any) None
-

.

-
- -
-
-pyray.glfw_get_monitors(count: Any) Any
-

.

-
- -
-
-pyray.glfw_get_mouse_button(window: Any | list | tuple, button: int) int
-

.

-
- -
-
-pyray.glfw_get_platform() int
-

.

-
- -
-
-pyray.glfw_get_primary_monitor() Any
-

.

-
- -
-
-pyray.glfw_get_proc_address(procname: str) Any
-

.

-
- -
-
-pyray.glfw_get_required_instance_extensions(count: Any) list[str]
-

.

-
- -
-
-pyray.glfw_get_time() float
-

.

-
- -
-
-pyray.glfw_get_timer_frequency() int
-

.

-
- -
-
-pyray.glfw_get_timer_value() int
-

.

-
- -
-
-pyray.glfw_get_version(major: Any, minor: Any, rev: Any) None
-

.

-
- -
-
-pyray.glfw_get_version_string() str
-

.

-
- -
-
-pyray.glfw_get_video_mode(monitor: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_get_video_modes(monitor: Any | list | tuple, count: Any) Any
-

.

-
- -
-
-pyray.glfw_get_window_attrib(window: Any | list | tuple, attrib: int) int
-

.

-
- -
-
-pyray.glfw_get_window_content_scale(window: Any | list | tuple, xscale: Any, yscale: Any) None
-

.

-
- -
-
-pyray.glfw_get_window_frame_size(window: Any | list | tuple, left: Any, top: Any, right: Any, bottom: Any) None
-

.

-
- -
-
-pyray.glfw_get_window_monitor(window: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_get_window_opacity(window: Any | list | tuple) float
-

.

-
- -
-
-pyray.glfw_get_window_pos(window: Any | list | tuple, xpos: Any, ypos: Any) None
-

.

-
- -
-
-pyray.glfw_get_window_size(window: Any | list | tuple, width: Any, height: Any) None
-

.

-
- -
-
-pyray.glfw_get_window_title(window: Any | list | tuple) str
-

.

-
- -
-
-pyray.glfw_get_window_user_pointer(window: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_hide_window(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_iconify_window(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_init() int
-

.

-
- -
-
-pyray.glfw_init_allocator(allocator: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_init_hint(hint: int, value: int) None
-

.

-
- -
-
-pyray.glfw_joystick_is_gamepad(jid: int) int
-

.

-
- -
-
-pyray.glfw_joystick_present(jid: int) int
-

.

-
- -
-
-pyray.glfw_make_context_current(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_maximize_window(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_platform_supported(platform: int) int
-

.

-
- -
-
-pyray.glfw_poll_events() None
-

.

-
- -
-
-pyray.glfw_post_empty_event() None
-

.

-
- -
-
-pyray.glfw_raw_mouse_motion_supported() int
-

.

-
- -
-
-pyray.glfw_request_window_attention(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_restore_window(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_set_char_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_char_mods_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_clipboard_string(window: Any | list | tuple, string: str) None
-

.

-
- -
-
-pyray.glfw_set_cursor(window: Any | list | tuple, cursor: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_set_cursor_enter_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_cursor_pos(window: Any | list | tuple, xpos: float, ypos: float) None
-

.

-
- -
-
-pyray.glfw_set_cursor_pos_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_drop_callback(window: Any | list | tuple, callback: list[str] | list | tuple) list[str]
-

.

-
- -
-
-pyray.glfw_set_error_callback(callback: str) str
-

.

-
- -
-
-pyray.glfw_set_framebuffer_size_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_gamma(monitor: Any | list | tuple, gamma: float) None
-

.

-
- -
-
-pyray.glfw_set_gamma_ramp(monitor: Any | list | tuple, ramp: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_set_input_mode(window: Any | list | tuple, mode: int, value: int) None
-

.

-
- -
-
-pyray.glfw_set_joystick_callback(callback: Any) Any
-

.

-
- -
-
-pyray.glfw_set_joystick_user_pointer(jid: int, pointer: Any) None
-

.

-
- -
-
-pyray.glfw_set_key_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_monitor_callback(callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_monitor_user_pointer(monitor: Any | list | tuple, pointer: Any) None
-

.

-
- -
-
-pyray.glfw_set_mouse_button_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_scroll_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_time(time: float) None
-

.

-
- -
-
-pyray.glfw_set_window_aspect_ratio(window: Any | list | tuple, numer: int, denom: int) None
-

.

-
- -
-
-pyray.glfw_set_window_attrib(window: Any | list | tuple, attrib: int, value: int) None
-

.

-
- -
-
-pyray.glfw_set_window_close_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_window_content_scale_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_window_focus_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_window_icon(window: Any | list | tuple, count: int, images: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_set_window_iconify_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_window_maximize_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_window_monitor(window: Any | list | tuple, monitor: Any | list | tuple, xpos: int, ypos: int, width: int, height: int, refreshRate: int) None
-

.

-
- -
-
-pyray.glfw_set_window_opacity(window: Any | list | tuple, opacity: float) None
-

.

-
- -
-
-pyray.glfw_set_window_pos(window: Any | list | tuple, xpos: int, ypos: int) None
-

.

-
- -
-
-pyray.glfw_set_window_pos_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_window_refresh_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_window_should_close(window: Any | list | tuple, value: int) None
-

.

-
- -
-
-pyray.glfw_set_window_size(window: Any | list | tuple, width: int, height: int) None
-

.

-
- -
-
-pyray.glfw_set_window_size_callback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-pyray.glfw_set_window_size_limits(window: Any | list | tuple, minwidth: int, minheight: int, maxwidth: int, maxheight: int) None
-

.

-
- -
-
-pyray.glfw_set_window_title(window: Any | list | tuple, title: str) None
-

.

-
- -
-
-pyray.glfw_set_window_user_pointer(window: Any | list | tuple, pointer: Any) None
-

.

-
- -
-
-pyray.glfw_show_window(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_swap_buffers(window: Any | list | tuple) None
-

.

-
- -
-
-pyray.glfw_swap_interval(interval: int) None
-

.

-
- -
-
-pyray.glfw_terminate() None
-

.

-
- -
-
-pyray.glfw_update_gamepad_mappings(string: str) int
-

.

-
- -
-
-pyray.glfw_vulkan_supported() int
-

.

-
- -
-
-pyray.glfw_wait_events() None
-

.

-
- -
-
-pyray.glfw_wait_events_timeout(timeout: float) None
-

.

-
- -
-
-pyray.glfw_window_hint(hint: int, value: int) None
-

.

-
- -
-
-pyray.glfw_window_hint_string(hint: int, value: str) None
-

.

-
- -
-
-pyray.glfw_window_should_close(window: Any | list | tuple) int
-

.

-
- -
-
-pyray.gui_button(bounds: Rectangle | list | tuple, text: str) int
-

Button control, returns true when clicked.

-
- -
-
-pyray.gui_check_box(bounds: Rectangle | list | tuple, text: str, checked: Any) int
-

Check Box control, returns true when active.

-
- -
-
-pyray.gui_color_bar_alpha(bounds: Rectangle | list | tuple, text: str, alpha: Any) int
-

Color Bar Alpha control.

-
- -
-
-pyray.gui_color_bar_hue(bounds: Rectangle | list | tuple, text: str, value: Any) int
-

Color Bar Hue control.

-
- -
-
-pyray.gui_color_panel(bounds: Rectangle | list | tuple, text: str, color: Any | list | tuple) int
-

Color Panel control.

-
- -
-
-pyray.gui_color_panel_hsv(bounds: Rectangle | list | tuple, text: str, colorHsv: Any | list | tuple) int
-

Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV().

-
- -
-
-pyray.gui_color_picker(bounds: Rectangle | list | tuple, text: str, color: Any | list | tuple) int
-

Color Picker control (multiple color controls).

-
- -
-
-pyray.gui_color_picker_hsv(bounds: Rectangle | list | tuple, text: str, colorHsv: Any | list | tuple) int
-

Color Picker control that avoids conversion to RGB on each call (multiple color controls).

-
- -
-
-pyray.gui_combo_box(bounds: Rectangle | list | tuple, text: str, active: Any) int
-

Combo Box control.

-
- -
-
-pyray.gui_disable() None
-

Disable gui controls (global state).

-
- -
-
-pyray.gui_disable_tooltip() None
-

Disable gui tooltips (global state).

-
- -
-
-pyray.gui_draw_icon(iconId: int, posX: int, posY: int, pixelSize: int, color: Color | list | tuple) None
-

Draw icon using pixel size at specified position.

-
- -
-
-pyray.gui_dropdown_box(bounds: Rectangle | list | tuple, text: str, active: Any, editMode: bool) int
-

Dropdown Box control.

-
- -
-
-pyray.gui_dummy_rec(bounds: Rectangle | list | tuple, text: str) int
-

Dummy control for placeholders.

-
- -
-
-pyray.gui_enable() None
-

Enable gui controls (global state).

-
- -
-
-pyray.gui_enable_tooltip() None
-

Enable gui tooltips (global state).

-
- -
-
-pyray.gui_get_font() Font
-

Get gui custom font (global state).

-
- -
-
-pyray.gui_get_icons() Any
-

Get raygui icons data pointer.

-
- -
-
-pyray.gui_get_state() int
-

Get gui state (global state).

-
- -
-
-pyray.gui_get_style(control: int, property: int) int
-

Get one style property.

-
- -
-
-pyray.gui_grid(bounds: Rectangle | list | tuple, text: str, spacing: float, subdivs: int, mouseCell: Any | list | tuple) int
-

Grid control.

-
- -
-
-pyray.gui_group_box(bounds: Rectangle | list | tuple, text: str) int
-

Group Box control with text name.

-
- -
-
-pyray.gui_icon_text(iconId: int, text: str) str
-

Get text with icon id prepended (if supported).

-
- -
-
-pyray.gui_is_locked() bool
-

Check if gui is locked (global state).

-
- -
-
-pyray.gui_label(bounds: Rectangle | list | tuple, text: str) int
-

Label control.

-
- -
-
-pyray.gui_label_button(bounds: Rectangle | list | tuple, text: str) int
-

Label button control, returns true when clicked.

-
- -
-
-pyray.gui_line(bounds: Rectangle | list | tuple, text: str) int
-

Line separator control, could contain text.

-
- -
-
-pyray.gui_list_view(bounds: Rectangle | list | tuple, text: str, scrollIndex: Any, active: Any) int
-

List View control.

-
- -
-
-pyray.gui_list_view_ex(bounds: Rectangle | list | tuple, text: list[str], count: int, scrollIndex: Any, active: Any, focus: Any) int
-

List View with extended parameters.

-
- -
-
-pyray.gui_load_icons(fileName: str, loadIconsName: bool) list[str]
-

Load raygui icons file (.rgi) into internal icons data.

-
- -
-
-pyray.gui_load_style(fileName: str) None
-

Load style file over global style variable (.rgs).

-
- -
-
-pyray.gui_load_style_default() None
-

Load style default over global style.

-
- -
-
-pyray.gui_lock() None
-

Lock gui controls (global state).

-
- -
-
-pyray.gui_message_box(bounds: Rectangle | list | tuple, title: str, message: str, buttons: str) int
-

Message Box control, displays a message.

-
- -
-
-pyray.gui_panel(bounds: Rectangle | list | tuple, text: str) int
-

Panel control, useful to group controls.

-
- -
-
-pyray.gui_progress_bar(bounds: Rectangle | list | tuple, textLeft: str, textRight: str, value: Any, minValue: float, maxValue: float) int
-

Progress Bar control.

-
- -
-
-pyray.gui_scroll_panel(bounds: Rectangle | list | tuple, text: str, content: Rectangle | list | tuple, scroll: Any | list | tuple, view: Any | list | tuple) int
-

Scroll Panel control.

-
- -
-
-pyray.gui_set_alpha(alpha: float) None
-

Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f.

-
- -
-
-pyray.gui_set_font(font: Font | list | tuple) None
-

Set gui custom font (global state).

-
- -
-
-pyray.gui_set_icon_scale(scale: int) None
-

Set default icon drawing size.

-
- -
-
-pyray.gui_set_state(state: int) None
-

Set gui state (global state).

-
- -
-
-pyray.gui_set_style(control: int, property: int, value: int) None
-

Set one style property.

-
- -
-
-pyray.gui_set_tooltip(tooltip: str) None
-

Set tooltip string.

-
- -
-
-pyray.gui_slider(bounds: Rectangle | list | tuple, textLeft: str, textRight: str, value: Any, minValue: float, maxValue: float) int
-

Slider control.

-
- -
-
-pyray.gui_slider_bar(bounds: Rectangle | list | tuple, textLeft: str, textRight: str, value: Any, minValue: float, maxValue: float) int
-

Slider Bar control.

-
- -
-
-pyray.gui_spinner(bounds: Rectangle | list | tuple, text: str, value: Any, minValue: int, maxValue: int, editMode: bool) int
-

Spinner control.

-
- -
-
-pyray.gui_status_bar(bounds: Rectangle | list | tuple, text: str) int
-

Status Bar control, shows info text.

-
- -
-
-pyray.gui_tab_bar(bounds: Rectangle | list | tuple, text: list[str], count: int, active: Any) int
-

Tab Bar control, returns TAB to be closed or -1.

-
- -
-
-pyray.gui_text_box(bounds: Rectangle | list | tuple, text: str, textSize: int, editMode: bool) int
-

Text Box control, updates input text.

-
- -
-
-pyray.gui_text_input_box(bounds: Rectangle | list | tuple, title: str, message: str, buttons: str, text: str, textMaxSize: int, secretViewActive: Any) int
-

Text Input Box control, ask for text, supports secret.

-
- -
-
-pyray.gui_toggle(bounds: Rectangle | list | tuple, text: str, active: Any) int
-

Toggle Button control.

-
- -
-
-pyray.gui_toggle_group(bounds: Rectangle | list | tuple, text: str, active: Any) int
-

Toggle Group control.

-
- -
-
-pyray.gui_toggle_slider(bounds: Rectangle | list | tuple, text: str, active: Any) int
-

Toggle Slider control.

-
- -
-
-pyray.gui_unlock() None
-

Unlock gui controls (global state).

-
- -
-
-pyray.gui_value_box(bounds: Rectangle | list | tuple, text: str, value: Any, minValue: int, maxValue: int, editMode: bool) int
-

Value Box control, updates input text with numbers.

-
- -
-
-pyray.gui_value_box_float(bounds: Rectangle | list | tuple, text: str, textValue: str, value: Any, editMode: bool) int
-

Value box control for float values.

-
- -
-
-pyray.gui_window_box(bounds: Rectangle | list | tuple, title: str) int
-

Window Box control, shows a window that can be closed.

-
- -
-
-pyray.hide_cursor() None
-

Hides cursor.

-
- -
-
-pyray.image_alpha_clear(image: Any | list | tuple, color: Color | list | tuple, threshold: float) None
-

Clear alpha channel to desired color.

-
- -
-
-pyray.image_alpha_crop(image: Any | list | tuple, threshold: float) None
-

Crop image depending on alpha value.

-
- -
-
-pyray.image_alpha_mask(image: Any | list | tuple, alphaMask: Image | list | tuple) None
-

Apply alpha mask to image.

-
- -
-
-pyray.image_alpha_premultiply(image: Any | list | tuple) None
-

Premultiply alpha channel.

-
- -
-
-pyray.image_blur_gaussian(image: Any | list | tuple, blurSize: int) None
-

Apply Gaussian blur using a box blur approximation.

-
- -
-
-pyray.image_clear_background(dst: Any | list | tuple, color: Color | list | tuple) None
-

Clear image background with given color.

-
- -
-
-pyray.image_color_brightness(image: Any | list | tuple, brightness: int) None
-

Modify image color: brightness (-255 to 255).

-
- -
-
-pyray.image_color_contrast(image: Any | list | tuple, contrast: float) None
-

Modify image color: contrast (-100 to 100).

-
- -
-
-pyray.image_color_grayscale(image: Any | list | tuple) None
-

Modify image color: grayscale.

-
- -
-
-pyray.image_color_invert(image: Any | list | tuple) None
-

Modify image color: invert.

-
- -
-
-pyray.image_color_replace(image: Any | list | tuple, color: Color | list | tuple, replace: Color | list | tuple) None
-

Modify image color: replace color.

-
- -
-
-pyray.image_color_tint(image: Any | list | tuple, color: Color | list | tuple) None
-

Modify image color: tint.

-
- -
-
-pyray.image_copy(image: Image | list | tuple) Image
-

Create an image duplicate (useful for transformations).

-
- -
-
-pyray.image_crop(image: Any | list | tuple, crop: Rectangle | list | tuple) None
-

Crop an image to a defined rectangle.

-
- -
-
-pyray.image_dither(image: Any | list | tuple, rBpp: int, gBpp: int, bBpp: int, aBpp: int) None
-

Dither image data to 16bpp or lower (Floyd-Steinberg dithering).

-
- -
-
-pyray.image_draw(dst: Any | list | tuple, src: Image | list | tuple, srcRec: Rectangle | list | tuple, dstRec: Rectangle | list | tuple, tint: Color | list | tuple) None
-

Draw a source image within a destination image (tint applied to source).

-
- -
-
-pyray.image_draw_circle(dst: Any | list | tuple, centerX: int, centerY: int, radius: int, color: Color | list | tuple) None
-

Draw a filled circle within an image.

-
- -
-
-pyray.image_draw_circle_lines(dst: Any | list | tuple, centerX: int, centerY: int, radius: int, color: Color | list | tuple) None
-

Draw circle outline within an image.

-
- -
-
-pyray.image_draw_circle_lines_v(dst: Any | list | tuple, center: Vector2 | list | tuple, radius: int, color: Color | list | tuple) None
-

Draw circle outline within an image (Vector version).

-
- -
-
-pyray.image_draw_circle_v(dst: Any | list | tuple, center: Vector2 | list | tuple, radius: int, color: Color | list | tuple) None
-

Draw a filled circle within an image (Vector version).

-
- -
-
-pyray.image_draw_line(dst: Any | list | tuple, startPosX: int, startPosY: int, endPosX: int, endPosY: int, color: Color | list | tuple) None
-

Draw line within an image.

-
- -
-
-pyray.image_draw_line_ex(dst: Any | list | tuple, start: Vector2 | list | tuple, end: Vector2 | list | tuple, thick: int, color: Color | list | tuple) None
-

Draw a line defining thickness within an image.

-
- -
-
-pyray.image_draw_line_v(dst: Any | list | tuple, start: Vector2 | list | tuple, end: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw line within an image (Vector version).

-
- -
-
-pyray.image_draw_pixel(dst: Any | list | tuple, posX: int, posY: int, color: Color | list | tuple) None
-

Draw pixel within an image.

-
- -
-
-pyray.image_draw_pixel_v(dst: Any | list | tuple, position: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw pixel within an image (Vector version).

-
- -
-
-pyray.image_draw_rectangle(dst: Any | list | tuple, posX: int, posY: int, width: int, height: int, color: Color | list | tuple) None
-

Draw rectangle within an image.

-
- -
-
-pyray.image_draw_rectangle_lines(dst: Any | list | tuple, rec: Rectangle | list | tuple, thick: int, color: Color | list | tuple) None
-

Draw rectangle lines within an image.

-
- -
-
-pyray.image_draw_rectangle_rec(dst: Any | list | tuple, rec: Rectangle | list | tuple, color: Color | list | tuple) None
-

Draw rectangle within an image.

-
- -
-
-pyray.image_draw_rectangle_v(dst: Any | list | tuple, position: Vector2 | list | tuple, size: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw rectangle within an image (Vector version).

-
- -
-
-pyray.image_draw_text(dst: Any | list | tuple, text: str, posX: int, posY: int, fontSize: int, color: Color | list | tuple) None
-

Draw text (using default font) within an image (destination).

-
- -
-
-pyray.image_draw_text_ex(dst: Any | list | tuple, font: Font | list | tuple, text: str, position: Vector2 | list | tuple, fontSize: float, spacing: float, tint: Color | list | tuple) None
-

Draw text (custom sprite font) within an image (destination).

-
- -
-
-pyray.image_draw_triangle(dst: Any | list | tuple, v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw triangle within an image.

-
- -
-
-pyray.image_draw_triangle_ex(dst: Any | list | tuple, v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, c1: Color | list | tuple, c2: Color | list | tuple, c3: Color | list | tuple) None
-

Draw triangle with interpolated colors within an image.

-
- -
-
-pyray.image_draw_triangle_fan(dst: Any | list | tuple, points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle fan defined by points within an image (first vertex is the center).

-
- -
-
-pyray.image_draw_triangle_lines(dst: Any | list | tuple, v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw triangle outline within an image.

-
- -
-
-pyray.image_draw_triangle_strip(dst: Any | list | tuple, points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle strip defined by points within an image.

-
- -
-
-pyray.image_flip_horizontal(image: Any | list | tuple) None
-

Flip image horizontally.

-
- -
-
-pyray.image_flip_vertical(image: Any | list | tuple) None
-

Flip image vertically.

-
- -
-
-pyray.image_format(image: Any | list | tuple, newFormat: int) None
-

Convert image data to desired format.

-
- -
-
-pyray.image_from_channel(image: Image | list | tuple, selectedChannel: int) Image
-

Create an image from a selected channel of another image (GRAYSCALE).

-
- -
-
-pyray.image_from_image(image: Image | list | tuple, rec: Rectangle | list | tuple) Image
-

Create an image from another image piece.

-
- -
-
-pyray.image_kernel_convolution(image: Any | list | tuple, kernel: Any, kernelSize: int) None
-

Apply custom square convolution kernel to image.

-
- -
-
-pyray.image_mipmaps(image: Any | list | tuple) None
-

Compute all mipmap levels for a provided image.

-
- -
-
-pyray.image_resize(image: Any | list | tuple, newWidth: int, newHeight: int) None
-

Resize image (Bicubic scaling algorithm).

-
- -
-
-pyray.image_resize_canvas(image: Any | list | tuple, newWidth: int, newHeight: int, offsetX: int, offsetY: int, fill: Color | list | tuple) None
-

Resize canvas and fill with color.

-
- -
-
-pyray.image_resize_nn(image: Any | list | tuple, newWidth: int, newHeight: int) None
-

Resize image (Nearest-Neighbor scaling algorithm).

-
- -
-
-pyray.image_rotate(image: Any | list | tuple, degrees: int) None
-

Rotate image by input angle in degrees (-359 to 359).

-
- -
-
-pyray.image_rotate_ccw(image: Any | list | tuple) None
-

Rotate image counter-clockwise 90deg.

-
- -
-
-pyray.image_rotate_cw(image: Any | list | tuple) None
-

Rotate image clockwise 90deg.

-
- -
-
-pyray.image_text(text: str, fontSize: int, color: Color | list | tuple) Image
-

Create an image from text (default font).

-
- -
-
-pyray.image_text_ex(font: Font | list | tuple, text: str, fontSize: float, spacing: float, tint: Color | list | tuple) Image
-

Create an image from text (custom sprite font).

-
- -
-
-pyray.image_to_pot(image: Any | list | tuple, fill: Color | list | tuple) None
-

Convert image to POT (power-of-two).

-
- -
-
-pyray.init_audio_device() None
-

Initialize audio device and context.

-
- -
-
-pyray.init_physics() None
-

Initializes physics system.

-
- -
-
-pyray.init_window(width: int, height: int, title: str) None
-

Initialize window and OpenGL context.

-
- -
-
-pyray.is_audio_device_ready() bool
-

Check if audio device has been initialized successfully.

-
- -
-
-pyray.is_audio_stream_playing(stream: AudioStream | list | tuple) bool
-

Check if audio stream is playing.

-
- -
-
-pyray.is_audio_stream_processed(stream: AudioStream | list | tuple) bool
-

Check if any audio stream buffers requires refill.

-
- -
-
-pyray.is_audio_stream_valid(stream: AudioStream | list | tuple) bool
-

Checks if an audio stream is valid (buffers initialized).

-
- -
-
-pyray.is_cursor_hidden() bool
-

Check if cursor is not visible.

-
- -
-
-pyray.is_cursor_on_screen() bool
-

Check if cursor is on the screen.

-
- -
-
-pyray.is_file_dropped() bool
-

Check if a file has been dropped into window.

-
- -
-
-pyray.is_file_extension(fileName: str, ext: str) bool
-

Check file extension (including point: .png, .wav).

-
- -
-
-pyray.is_file_name_valid(fileName: str) bool
-

Check if fileName is valid for the platform/OS.

-
- -
-
-pyray.is_font_valid(font: Font | list | tuple) bool
-

Check if a font is valid (font data loaded, WARNING: GPU texture not checked).

-
- -
-
-pyray.is_gamepad_available(gamepad: int) bool
-

Check if a gamepad is available.

-
- -
-
-pyray.is_gamepad_button_down(gamepad: int, button: int) bool
-

Check if a gamepad button is being pressed.

-
- -
-
-pyray.is_gamepad_button_pressed(gamepad: int, button: int) bool
-

Check if a gamepad button has been pressed once.

-
- -
-
-pyray.is_gamepad_button_released(gamepad: int, button: int) bool
-

Check if a gamepad button has been released once.

-
- -
-
-pyray.is_gamepad_button_up(gamepad: int, button: int) bool
-

Check if a gamepad button is NOT being pressed.

-
- -
-
-pyray.is_gesture_detected(gesture: int) bool
-

Check if a gesture have been detected.

-
- -
-
-pyray.is_image_valid(image: Image | list | tuple) bool
-

Check if an image is valid (data and parameters).

-
- -
-
-pyray.is_key_down(key: int) bool
-

Check if a key is being pressed.

-
- -
-
-pyray.is_key_pressed(key: int) bool
-

Check if a key has been pressed once.

-
- -
-
-pyray.is_key_pressed_repeat(key: int) bool
-

Check if a key has been pressed again.

-
- -
-
-pyray.is_key_released(key: int) bool
-

Check if a key has been released once.

-
- -
-
-pyray.is_key_up(key: int) bool
-

Check if a key is NOT being pressed.

-
- -
-
-pyray.is_material_valid(material: Material | list | tuple) bool
-

Check if a material is valid (shader assigned, map textures loaded in GPU).

-
- -
-
-pyray.is_model_animation_valid(model: Model | list | tuple, anim: ModelAnimation | list | tuple) bool
-

Check model animation skeleton match.

-
- -
-
-pyray.is_model_valid(model: Model | list | tuple) bool
-

Check if a model is valid (loaded in GPU, VAO/VBOs).

-
- -
-
-pyray.is_mouse_button_down(button: int) bool
-

Check if a mouse button is being pressed.

-
- -
-
-pyray.is_mouse_button_pressed(button: int) bool
-

Check if a mouse button has been pressed once.

-
- -
-
-pyray.is_mouse_button_released(button: int) bool
-

Check if a mouse button has been released once.

-
- -
-
-pyray.is_mouse_button_up(button: int) bool
-

Check if a mouse button is NOT being pressed.

-
- -
-
-pyray.is_music_stream_playing(music: Music | list | tuple) bool
-

Check if music is playing.

-
- -
-
-pyray.is_music_valid(music: Music | list | tuple) bool
-

Checks if a music stream is valid (context and buffers initialized).

-
- -
-
-pyray.is_path_file(path: str) bool
-

Check if a given path is a file or a directory.

-
- -
-
-pyray.is_render_texture_valid(target: RenderTexture | list | tuple) bool
-

Check if a render texture is valid (loaded in GPU).

-
- -
-
-pyray.is_shader_valid(shader: Shader | list | tuple) bool
-

Check if a shader is valid (loaded on GPU).

-
- -
-
-pyray.is_sound_playing(sound: Sound | list | tuple) bool
-

Check if a sound is currently playing.

-
- -
-
-pyray.is_sound_valid(sound: Sound | list | tuple) bool
-

Checks if a sound is valid (data loaded and buffers initialized).

-
- -
-
-pyray.is_texture_valid(texture: Texture | list | tuple) bool
-

Check if a texture is valid (loaded in GPU).

-
- -
-
-pyray.is_wave_valid(wave: Wave | list | tuple) bool
-

Checks if wave data is valid (data loaded and parameters).

-
- -
-
-pyray.is_window_focused() bool
-

Check if window is currently focused.

-
- -
-
-pyray.is_window_fullscreen() bool
-

Check if window is currently fullscreen.

-
- -
-
-pyray.is_window_hidden() bool
-

Check if window is currently hidden.

-
- -
-
-pyray.is_window_maximized() bool
-

Check if window is currently maximized.

-
- -
-
-pyray.is_window_minimized() bool
-

Check if window is currently minimized.

-
- -
-
-pyray.is_window_ready() bool
-

Check if window has been initialized successfully.

-
- -
-
-pyray.is_window_resized() bool
-

Check if window has been resized last frame.

-
- -
-
-pyray.is_window_state(flag: int) bool
-

Check if one specific window flag is enabled.

-
- -
-
-pyray.lerp(start: float, end: float, amount: float) float
-

.

-
- -
-
-pyray.load_audio_stream(sampleRate: int, sampleSize: int, channels: int) AudioStream
-

Load audio stream (to stream raw audio pcm data).

-
- -
-
-pyray.load_automation_event_list(fileName: str) AutomationEventList
-

Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS.

-
- -
-
-pyray.load_codepoints(text: str, count: Any) Any
-

Load all codepoints from a UTF-8 text string, codepoints count returned by parameter.

-
- -
-
-pyray.load_directory_files(dirPath: str) FilePathList
-

Load directory filepaths.

-
- -
-
-pyray.load_directory_files_ex(basePath: str, filter: str, scanSubdirs: bool) FilePathList
-

Load directory filepaths with extension filtering and recursive directory scan. Use ‘DIR’ in the filter string to include directories in the result.

-
- -
-
-pyray.load_dropped_files() FilePathList
-

Load dropped filepaths.

-
- -
-
-pyray.load_file_data(fileName: str, dataSize: Any) str
-

Load file data as byte array (read).

-
- -
-
-pyray.load_file_text(fileName: str) str
-

Load text data from file (read), returns a ‘' terminated string.

-
- -
-
-pyray.load_font(fileName: str) Font
-

Load font from file into GPU memory (VRAM).

-
- -
-
-pyray.load_font_data(fileData: str, dataSize: int, fontSize: int, codepoints: Any, codepointCount: int, type: int) Any
-

Load font data for further use.

-
- -
-
-pyray.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 set, font size is provided in pixels height.

-
- -
-
-pyray.load_font_from_image(image: Image | list | tuple, key: Color | list | tuple, firstChar: int) Font
-

Load font from Image (XNA style).

-
- -
-
-pyray.load_font_from_memory(fileType: str, fileData: str, dataSize: int, fontSize: int, codepoints: Any, codepointCount: int) Font
-

Load font from memory buffer, fileType refers to extension: i.e. ‘.ttf’.

-
- -
-
-pyray.load_image(fileName: str) Image
-

Load image from file into CPU memory (RAM).

-
- -
-
-pyray.load_image_anim(fileName: str, frames: Any) Image
-

Load image sequence from file (frames appended to image.data).

-
- -
-
-pyray.load_image_anim_from_memory(fileType: str, fileData: str, dataSize: int, frames: Any) Image
-

Load image sequence from memory buffer.

-
- -
-
-pyray.load_image_colors(image: Image | list | tuple) Any
-

Load color data from image as a Color array (RGBA - 32bit).

-
- -
-
-pyray.load_image_from_memory(fileType: str, fileData: str, dataSize: int) Image
-

Load image from memory buffer, fileType refers to extension: i.e. ‘.png’.

-
- -
-
-pyray.load_image_from_screen() Image
-

Load image from screen buffer and (screenshot).

-
- -
-
-pyray.load_image_from_texture(texture: Texture | list | tuple) Image
-

Load image from GPU texture data.

-
- -
-
-pyray.load_image_palette(image: Image | list | tuple, maxPaletteSize: int, colorCount: Any) Any
-

Load colors palette from image as a Color array (RGBA - 32bit).

-
- -
-
-pyray.load_image_raw(fileName: str, width: int, height: int, format: int, headerSize: int) Image
-

Load image from RAW file data.

-
- -
-
-pyray.load_material_default() Material
-

Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps).

-
- -
-
-pyray.load_materials(fileName: str, materialCount: Any) Any
-

Load materials from model file.

-
- -
-
-pyray.load_model(fileName: str) Model
-

Load model from files (meshes and materials).

-
- -
-
-pyray.load_model_animations(fileName: str, animCount: Any) Any
-

Load model animations from file.

-
- -
-
-pyray.load_model_from_mesh(mesh: Mesh | list | tuple) Model
-

Load model from generated mesh (default material).

-
- -
-
-pyray.load_music_stream(fileName: str) Music
-

Load music stream from file.

-
- -
-
-pyray.load_music_stream_from_memory(fileType: str, data: str, dataSize: int) Music
-

Load music stream from data.

-
- -
-
-pyray.load_random_sequence(count: int, min_1: int, max_2: int) Any
-

Load random values sequence, no values repeated.

-
- -
-
-pyray.load_render_texture(width: int, height: int) RenderTexture
-

Load texture for rendering (framebuffer).

-
- -
-
-pyray.load_shader(vsFileName: str, fsFileName: str) Shader
-

Load shader from files and bind default locations.

-
- -
-
-pyray.load_shader_from_memory(vsCode: str, fsCode: str) Shader
-

Load shader from code strings and bind default locations.

-
- -
-
-pyray.load_sound(fileName: str) Sound
-

Load sound from file.

-
- -
-
-pyray.load_sound_alias(source: Sound | list | tuple) Sound
-

Create a new sound that shares the same sample data as the source sound, does not own the sound data.

-
- -
-
-pyray.load_sound_from_wave(wave: Wave | list | tuple) Sound
-

Load sound from wave data.

-
- -
-
-pyray.load_texture(fileName: str) Texture
-

Load texture from file into GPU memory (VRAM).

-
- -
-
-pyray.load_texture_cubemap(image: Image | list | tuple, layout: int) Texture
-

Load cubemap from image, multiple image cubemap layouts supported.

-
- -
-
-pyray.load_texture_from_image(image: Image | list | tuple) Texture
-

Load texture from image data.

-
- -
-
-pyray.load_utf8(codepoints: Any, length: int) str
-

Load UTF-8 text encoded from codepoints array.

-
- -
-
-pyray.load_vr_stereo_config(device: VrDeviceInfo | list | tuple) VrStereoConfig
-

Load VR stereo config for VR simulator device parameters.

-
- -
-
-pyray.load_wave(fileName: str) Wave
-

Load wave data from file.

-
- -
-
-pyray.load_wave_from_memory(fileType: str, fileData: str, dataSize: int) Wave
-

Load wave from memory buffer, fileType refers to extension: i.e. ‘.wav’.

-
- -
-
-pyray.load_wave_samples(wave: Wave | list | tuple) Any
-

Load samples data from wave as a 32bit float data array.

-
- -
-
-pyray.make_directory(dirPath: str) int
-

Create directories (including full path requested), returns 0 on success.

-
- -
-
-pyray.matrix_add(left: Matrix | list | tuple, right: Matrix | list | tuple) Matrix
-

.

-
- -
-
-pyray.matrix_decompose(mat: Matrix | list | tuple, translation: Any | list | tuple, rotation: Any | list | tuple, scale: Any | list | tuple) None
-

.

-
- -
-
-pyray.matrix_determinant(mat: Matrix | list | tuple) float
-

.

-
- -
-
-pyray.matrix_frustum(left: float, right: float, bottom: float, top: float, nearPlane: float, farPlane: float) Matrix
-

.

-
- -
-
-pyray.matrix_identity() Matrix
-

.

-
- -
-
-pyray.matrix_invert(mat: Matrix | list | tuple) Matrix
-

.

-
- -
-
-pyray.matrix_look_at(eye: Vector3 | list | tuple, target: Vector3 | list | tuple, up: Vector3 | list | tuple) Matrix
-

.

-
- -
-
-pyray.matrix_multiply(left: Matrix | list | tuple, right: Matrix | list | tuple) Matrix
-

.

-
- -
-
-pyray.matrix_ortho(left: float, right: float, bottom: float, top: float, nearPlane: float, farPlane: float) Matrix
-

.

-
- -
-
-pyray.matrix_perspective(fovY: float, aspect: float, nearPlane: float, farPlane: float) Matrix
-

.

-
- -
-
-pyray.matrix_rotate(axis: Vector3 | list | tuple, angle: float) Matrix
-

.

-
- -
-
-pyray.matrix_rotate_x(angle: float) Matrix
-

.

-
- -
-
-pyray.matrix_rotate_xyz(angle: Vector3 | list | tuple) Matrix
-

.

-
- -
-
-pyray.matrix_rotate_y(angle: float) Matrix
-

.

-
- -
-
-pyray.matrix_rotate_z(angle: float) Matrix
-

.

-
- -
-
-pyray.matrix_rotate_zyx(angle: Vector3 | list | tuple) Matrix
-

.

-
- -
-
-pyray.matrix_scale(x: float, y: float, z: float) Matrix
-

.

-
- -
-
-pyray.matrix_subtract(left: Matrix | list | tuple, right: Matrix | list | tuple) Matrix
-

.

-
- -
-
-pyray.matrix_to_float_v(mat: Matrix | list | tuple) float16
-

.

-
- -
-
-pyray.matrix_trace(mat: Matrix | list | tuple) float
-

.

-
- -
-
-pyray.matrix_translate(x: float, y: float, z: float) Matrix
-

.

-
- -
-
-pyray.matrix_transpose(mat: Matrix | list | tuple) Matrix
-

.

-
- -
-
-pyray.maximize_window() None
-

Set window state: maximized, if resizable.

-
- -
-
-pyray.measure_text(text: str, fontSize: int) int
-

Measure string width for default font.

-
- -
-
-pyray.measure_text_ex(font: Font | list | tuple, text: str, fontSize: float, spacing: float) Vector2
-

Measure string size for Font.

-
- -
-
-pyray.mem_alloc(size: int) Any
-

Internal memory allocator.

-
- -
-
-pyray.mem_free(ptr: Any) None
-

Internal memory free.

-
- -
-
-pyray.mem_realloc(ptr: Any, size: int) Any
-

Internal memory reallocator.

-
- -
-
-pyray.minimize_window() None
-

Set window state: minimized, if resizable.

-
- -
-
-pyray.normalize(value: float, start: float, end: float) float
-

.

-
- -
-
-pyray.open_url(url: str) None
-

Open URL with default system browser (if available).

-
- -
-
-pyray.pause_audio_stream(stream: AudioStream | list | tuple) None
-

Pause audio stream.

-
- -
-
-pyray.pause_music_stream(music: Music | list | tuple) None
-

Pause music playing.

-
- -
-
-pyray.pause_sound(sound: Sound | list | tuple) None
-

Pause a sound.

-
- -
-
-pyray.physics_add_force(body: Any | list | tuple, force: Vector2 | list | tuple) None
-

Adds a force to a physics body.

-
- -
-
-pyray.physics_add_torque(body: Any | list | tuple, amount: float) None
-

Adds an angular force to a physics body.

-
- -
-
-pyray.physics_shatter(body: Any | list | tuple, position: Vector2 | list | tuple, force: float) None
-

Shatters a polygon shape physics body to little physics bodies with explosion force.

-
- -
-
-pyray.play_audio_stream(stream: AudioStream | list | tuple) None
-

Play audio stream.

-
- -
-
-pyray.play_automation_event(event: AutomationEvent | list | tuple) None
-

Play a recorded automation event.

-
- -
-
-pyray.play_music_stream(music: Music | list | tuple) None
-

Start music playing.

-
- -
-
-pyray.play_sound(sound: Sound | list | tuple) None
-

Play a sound.

-
- -
-
-pyray.poll_input_events() None
-

Register all input events.

-
- -
-
-pyray.quaternion_add(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.quaternion_add_value(q: Vector4 | list | tuple, add: float) Vector4
-

.

-
- -
-
-pyray.quaternion_cubic_hermite_spline(q1: Vector4 | list | tuple, outTangent1: Vector4 | list | tuple, q2: Vector4 | list | tuple, inTangent2: Vector4 | list | tuple, t: float) Vector4
-

.

-
- -
-
-pyray.quaternion_divide(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.quaternion_equals(p: Vector4 | list | tuple, q: Vector4 | list | tuple) int
-

.

-
- -
-
-pyray.quaternion_from_axis_angle(axis: Vector3 | list | tuple, angle: float) Vector4
-

.

-
- -
-
-pyray.quaternion_from_euler(pitch: float, yaw: float, roll: float) Vector4
-

.

-
- -
-
-pyray.quaternion_from_matrix(mat: Matrix | list | tuple) Vector4
-

.

-
- -
-
-pyray.quaternion_from_vector3_to_vector3(from_0: Vector3 | list | tuple, to: Vector3 | list | tuple) Vector4
-

.

-
- -
-
-pyray.quaternion_identity() Vector4
-

.

-
- -
-
-pyray.quaternion_invert(q: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.quaternion_length(q: Vector4 | list | tuple) float
-

.

-
- -
-
-pyray.quaternion_lerp(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple, amount: float) Vector4
-

.

-
- -
-
-pyray.quaternion_multiply(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.quaternion_nlerp(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple, amount: float) Vector4
-

.

-
- -
-
-pyray.quaternion_normalize(q: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.quaternion_scale(q: Vector4 | list | tuple, mul: float) Vector4
-

.

-
- -
-
-pyray.quaternion_slerp(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple, amount: float) Vector4
-

.

-
- -
-
-pyray.quaternion_subtract(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.quaternion_subtract_value(q: Vector4 | list | tuple, sub: float) Vector4
-

.

-
- -
-
-pyray.quaternion_to_axis_angle(q: Vector4 | list | tuple, outAxis: Any | list | tuple, outAngle: Any) None
-

.

-
- -
-
-pyray.quaternion_to_euler(q: Vector4 | list | tuple) Vector3
-

.

-
- -
-
-pyray.quaternion_to_matrix(q: Vector4 | list | tuple) Matrix
-

.

-
- -
-
-pyray.quaternion_transform(q: Vector4 | list | tuple, mat: Matrix | list | tuple) Vector4
-

.

-
- -
-
-pyray.remap(value: float, inputStart: float, inputEnd: float, outputStart: float, outputEnd: float) float
-

.

-
- -
-
-pyray.reset_physics() None
-

Reset physics system (global variables).

-
- -
-
-pyray.restore_window() None
-

Set window state: not minimized/maximized.

-
- -
-
-pyray.resume_audio_stream(stream: AudioStream | list | tuple) None
-

Resume audio stream.

-
- -
-
-pyray.resume_music_stream(music: Music | list | tuple) None
-

Resume playing paused music.

-
- -
-
-pyray.resume_sound(sound: Sound | list | tuple) None
-

Resume a paused sound.

-
- -
-
-class pyray.rlBlendMode
-

Color blending modes (pre-defined).

-
-
-RL_BLEND_ADDITIVE = 1
-
- -
-
-RL_BLEND_ADD_COLORS = 3
-
- -
-
-RL_BLEND_ALPHA = 0
-
- -
-
-RL_BLEND_ALPHA_PREMULTIPLY = 5
-
- -
-
-RL_BLEND_CUSTOM = 6
-
- -
-
-RL_BLEND_CUSTOM_SEPARATE = 7
-
- -
-
-RL_BLEND_MULTIPLIED = 2
-
- -
-
-RL_BLEND_SUBTRACT_COLORS = 4
-
- -
- -
-
-class pyray.rlCullMode
-

Face culling mode.

-
-
-RL_CULL_FACE_BACK = 1
-
- -
-
-RL_CULL_FACE_FRONT = 0
-
- -
- -
-
-class pyray.rlDrawCall(mode: int | None = None, vertexCount: int | None = None, vertexAlignment: int | None = None, textureId: int | None = None)
-

of those state-change happens (this is done in core module).

-
-
-mode: int = None
-
- -
-
-textureId: int = None
-
- -
-
-vertexAlignment: int = None
-
- -
-
-vertexCount: int = None
-
- -
- -
-
-class pyray.rlFramebufferAttachTextureType
-

Framebuffer texture attachment type.

-
-
-RL_ATTACHMENT_CUBEMAP_NEGATIVE_X = 1
-
- -
-
-RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y = 3
-
- -
-
-RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z = 5
-
- -
-
-RL_ATTACHMENT_CUBEMAP_POSITIVE_X = 0
-
- -
-
-RL_ATTACHMENT_CUBEMAP_POSITIVE_Y = 2
-
- -
-
-RL_ATTACHMENT_CUBEMAP_POSITIVE_Z = 4
-
- -
-
-RL_ATTACHMENT_RENDERBUFFER = 200
-
- -
-
-RL_ATTACHMENT_TEXTURE2D = 100
-
- -
- -
-
-class pyray.rlFramebufferAttachType
-

Framebuffer attachment type.

-
-
-RL_ATTACHMENT_COLOR_CHANNEL0 = 0
-
- -
-
-RL_ATTACHMENT_COLOR_CHANNEL1 = 1
-
- -
-
-RL_ATTACHMENT_COLOR_CHANNEL2 = 2
-
- -
-
-RL_ATTACHMENT_COLOR_CHANNEL3 = 3
-
- -
-
-RL_ATTACHMENT_COLOR_CHANNEL4 = 4
-
- -
-
-RL_ATTACHMENT_COLOR_CHANNEL5 = 5
-
- -
-
-RL_ATTACHMENT_COLOR_CHANNEL6 = 6
-
- -
-
-RL_ATTACHMENT_COLOR_CHANNEL7 = 7
-
- -
-
-RL_ATTACHMENT_DEPTH = 100
-
- -
-
-RL_ATTACHMENT_STENCIL = 200
-
- -
- -
-
-class pyray.rlGlVersion
-

OpenGL version.

-
-
-RL_OPENGL_11 = 1
-
- -
-
-RL_OPENGL_21 = 2
-
- -
-
-RL_OPENGL_33 = 3
-
- -
-
-RL_OPENGL_43 = 4
-
- -
-
-RL_OPENGL_ES_20 = 5
-
- -
-
-RL_OPENGL_ES_30 = 6
-
- -
- -
-
-class pyray.rlPixelFormat
-

Texture pixel formats.

-
-
-RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 23
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 24
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_DXT1_RGB = 14
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA = 15
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA = 16
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA = 17
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_ETC1_RGB = 18
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = 20
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_ETC2_RGB = 19
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_PVRT_RGB = 21
-
- -
-
-RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA = 22
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R16 = 11
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16 = 12
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 = 13
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R32 = 8
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32 = 9
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = 10
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = 6
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = 5
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8 = 4
-
- -
-
-RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = 7
-
- -
- -
-
-class pyray.rlRenderBatch(bufferCount: int | None = None, currentBuffer: int | None = None, vertexBuffer: Any | None = None, draws: Any | None = None, drawCounter: int | None = None, currentDepth: float | None = None)
-

rlRenderBatch type.

-
-
-bufferCount: int = None
-
- -
-
-currentBuffer: int = None
-
- -
-
-currentDepth: float = None
-
- -
-
-drawCounter: int = None
-
- -
-
-draws: Any = None
-
- -
-
-vertexBuffer: Any = None
-
- -
- -
-
-class pyray.rlShaderAttributeDataType
-

Shader attribute data types.

-
-
-RL_SHADER_ATTRIB_FLOAT = 0
-
- -
-
-RL_SHADER_ATTRIB_VEC2 = 1
-
- -
-
-RL_SHADER_ATTRIB_VEC3 = 2
-
- -
-
-RL_SHADER_ATTRIB_VEC4 = 3
-
- -
- -
-
-class pyray.rlShaderLocationIndex
-

Shader location point type.

-
-
-RL_SHADER_LOC_COLOR_AMBIENT = 14
-
- -
-
-RL_SHADER_LOC_COLOR_DIFFUSE = 12
-
- -
-
-RL_SHADER_LOC_COLOR_SPECULAR = 13
-
- -
-
-RL_SHADER_LOC_MAP_ALBEDO = 15
-
- -
-
-RL_SHADER_LOC_MAP_BRDF = 25
-
- -
-
-RL_SHADER_LOC_MAP_CUBEMAP = 22
-
- -
-
-RL_SHADER_LOC_MAP_EMISSION = 20
-
- -
-
-RL_SHADER_LOC_MAP_HEIGHT = 21
-
- -
-
-RL_SHADER_LOC_MAP_IRRADIANCE = 23
-
- -
-
-RL_SHADER_LOC_MAP_METALNESS = 16
-
- -
-
-RL_SHADER_LOC_MAP_NORMAL = 17
-
- -
-
-RL_SHADER_LOC_MAP_OCCLUSION = 19
-
- -
-
-RL_SHADER_LOC_MAP_PREFILTER = 24
-
- -
-
-RL_SHADER_LOC_MAP_ROUGHNESS = 18
-
- -
-
-RL_SHADER_LOC_MATRIX_MODEL = 9
-
- -
-
-RL_SHADER_LOC_MATRIX_MVP = 6
-
- -
-
-RL_SHADER_LOC_MATRIX_NORMAL = 10
-
- -
-
-RL_SHADER_LOC_MATRIX_PROJECTION = 8
-
- -
-
-RL_SHADER_LOC_MATRIX_VIEW = 7
-
- -
-
-RL_SHADER_LOC_VECTOR_VIEW = 11
-
- -
-
-RL_SHADER_LOC_VERTEX_COLOR = 5
-
- -
-
-RL_SHADER_LOC_VERTEX_NORMAL = 3
-
- -
-
-RL_SHADER_LOC_VERTEX_POSITION = 0
-
- -
-
-RL_SHADER_LOC_VERTEX_TANGENT = 4
-
- -
-
-RL_SHADER_LOC_VERTEX_TEXCOORD01 = 1
-
- -
-
-RL_SHADER_LOC_VERTEX_TEXCOORD02 = 2
-
- -
- -
-
-class pyray.rlShaderUniformDataType
-

Shader uniform data type.

-
-
-RL_SHADER_UNIFORM_FLOAT = 0
-
- -
-
-RL_SHADER_UNIFORM_INT = 4
-
- -
-
-RL_SHADER_UNIFORM_IVEC2 = 5
-
- -
-
-RL_SHADER_UNIFORM_IVEC3 = 6
-
- -
-
-RL_SHADER_UNIFORM_IVEC4 = 7
-
- -
-
-RL_SHADER_UNIFORM_SAMPLER2D = 12
-
- -
-
-RL_SHADER_UNIFORM_UINT = 8
-
- -
-
-RL_SHADER_UNIFORM_UIVEC2 = 9
-
- -
-
-RL_SHADER_UNIFORM_UIVEC3 = 10
-
- -
-
-RL_SHADER_UNIFORM_UIVEC4 = 11
-
- -
-
-RL_SHADER_UNIFORM_VEC2 = 1
-
- -
-
-RL_SHADER_UNIFORM_VEC3 = 2
-
- -
-
-RL_SHADER_UNIFORM_VEC4 = 3
-
- -
- -
-
-class pyray.rlTextureFilter
-

Texture parameters: filter mode.

-
-
-RL_TEXTURE_FILTER_ANISOTROPIC_16X = 5
-
- -
-
-RL_TEXTURE_FILTER_ANISOTROPIC_4X = 3
-
- -
-
-RL_TEXTURE_FILTER_ANISOTROPIC_8X = 4
-
- -
-
-RL_TEXTURE_FILTER_BILINEAR = 1
-
- -
-
-RL_TEXTURE_FILTER_POINT = 0
-
- -
-
-RL_TEXTURE_FILTER_TRILINEAR = 2
-
- -
- -
-
-class pyray.rlTraceLogLevel
-

Trace log level.

-
-
-RL_LOG_ALL = 0
-
- -
-
-RL_LOG_DEBUG = 2
-
- -
-
-RL_LOG_ERROR = 5
-
- -
-
-RL_LOG_FATAL = 6
-
- -
-
-RL_LOG_INFO = 3
-
- -
-
-RL_LOG_NONE = 7
-
- -
-
-RL_LOG_TRACE = 1
-
- -
-
-RL_LOG_WARNING = 4
-
- -
- -
-
-class pyray.rlVertexBuffer(elementCount: int | None = None, vertices: Any | None = None, texcoords: Any | None = None, normals: Any | None = None, colors: str | None = None, indices: Any | None = None, vaoId: int | None = None, vboId: list | None = None)
-

Dynamic vertex buffers (position + texcoords + colors + indices arrays).

-
-
-colors: str = None
-
- -
-
-elementCount: int = None
-
- -
-
-indices: Any = None
-
- -
-
-normals: Any = None
-
- -
-
-texcoords: Any = None
-
- -
-
-vaoId: int = None
-
- -
-
-vboId: list = None
-
- -
-
-vertices: Any = None
-
- -
- -
-
-pyray.rl_active_draw_buffers(count: int) None
-

Activate multiple draw color buffers.

-
- -
-
-pyray.rl_active_texture_slot(slot: int) None
-

Select and active a texture slot.

-
- -
-
-pyray.rl_begin(mode: int) None
-

Initialize drawing mode (how to organize vertex).

-
- -
-
-pyray.rl_bind_framebuffer(target: int, framebuffer: int) None
-

Bind framebuffer (FBO).

-
- -
-
-pyray.rl_bind_image_texture(id: int, index: int, format: int, readonly: bool) None
-

Bind image texture.

-
- -
-
-pyray.rl_bind_shader_buffer(id: int, index: int) None
-

Bind SSBO buffer.

-
- -
-
-pyray.rl_blit_framebuffer(srcX: int, srcY: int, srcWidth: int, srcHeight: int, dstX: int, dstY: int, dstWidth: int, dstHeight: int, bufferMask: int) None
-

Blit active framebuffer to main framebuffer.

-
- -
-
-pyray.rl_check_errors() None
-

Check and log OpenGL error codes.

-
- -
-
-pyray.rl_check_render_batch_limit(vCount: int) bool
-

Check internal buffer overflow for a given number of vertex.

-
- -
-
-pyray.rl_clear_color(r: int, g: int, b: int, a: int) None
-

Clear color buffer with color.

-
- -
-
-pyray.rl_clear_screen_buffers() None
-

Clear used screen buffers (color and depth).

-
- -
-
-pyray.rl_color3f(x: float, y: float, z: float) None
-

Define one vertex (color) - 3 float.

-
- -
-
-pyray.rl_color4f(x: float, y: float, z: float, w: float) None
-

Define one vertex (color) - 4 float.

-
- -
-
-pyray.rl_color4ub(r: int, g: int, b: int, a: int) None
-

Define one vertex (color) - 4 byte.

-
- -
-
-pyray.rl_color_mask(r: bool, g: bool, b: bool, a: bool) None
-

Color mask control.

-
- -
-
-pyray.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).

-
- -
-
-pyray.rl_compute_shader_dispatch(groupX: int, groupY: int, groupZ: int) None
-

Dispatch compute shader (equivalent to draw for graphics pipeline).

-
- -
-
-pyray.rl_copy_shader_buffer(destId: int, srcId: int, destOffset: int, srcOffset: int, count: int) None
-

Copy SSBO data between buffers.

-
- -
-
-pyray.rl_cubemap_parameters(id: int, param: int, value: int) None
-

Set cubemap parameters (filter, wrap).

-
- -
-
-pyray.rl_disable_backface_culling() None
-

Disable backface culling.

-
- -
-
-pyray.rl_disable_color_blend() None
-

Disable color blending.

-
- -
-
-pyray.rl_disable_depth_mask() None
-

Disable depth write.

-
- -
-
-pyray.rl_disable_depth_test() None
-

Disable depth test.

-
- -
-
-pyray.rl_disable_framebuffer() None
-

Disable render texture (fbo), return to default framebuffer.

-
- -
-
-pyray.rl_disable_scissor_test() None
-

Disable scissor test.

-
- -
-
-pyray.rl_disable_shader() None
-

Disable shader program.

-
- -
-
-pyray.rl_disable_smooth_lines() None
-

Disable line aliasing.

-
- -
-
-pyray.rl_disable_stereo_render() None
-

Disable stereo rendering.

-
- -
-
-pyray.rl_disable_texture() None
-

Disable texture.

-
- -
-
-pyray.rl_disable_texture_cubemap() None
-

Disable texture cubemap.

-
- -
-
-pyray.rl_disable_vertex_array() None
-

Disable vertex array (VAO, if supported).

-
- -
-
-pyray.rl_disable_vertex_attribute(index: int) None
-

Disable vertex attribute index.

-
- -
-
-pyray.rl_disable_vertex_buffer() None
-

Disable vertex buffer (VBO).

-
- -
-
-pyray.rl_disable_vertex_buffer_element() None
-

Disable vertex buffer element (VBO element).

-
- -
-
-pyray.rl_disable_wire_mode() None
-

Disable wire (and point) mode.

-
- -
-
-pyray.rl_draw_render_batch(batch: Any | list | tuple) None
-

Draw render batch data (Update->Draw->Reset).

-
- -
-
-pyray.rl_draw_render_batch_active() None
-

Update and draw internal render batch.

-
- -
-
-pyray.rl_draw_vertex_array(offset: int, count: int) None
-

Draw vertex array (currently active vao).

-
- -
-
-pyray.rl_draw_vertex_array_elements(offset: int, count: int, buffer: Any) None
-

Draw vertex array elements.

-
- -
-
-pyray.rl_draw_vertex_array_elements_instanced(offset: int, count: int, buffer: Any, instances: int) None
-

Draw vertex array elements with instancing.

-
- -
-
-pyray.rl_draw_vertex_array_instanced(offset: int, count: int, instances: int) None
-

Draw vertex array (currently active vao) with instancing.

-
- -
-
-pyray.rl_enable_backface_culling() None
-

Enable backface culling.

-
- -
-
-pyray.rl_enable_color_blend() None
-

Enable color blending.

-
- -
-
-pyray.rl_enable_depth_mask() None
-

Enable depth write.

-
- -
-
-pyray.rl_enable_depth_test() None
-

Enable depth test.

-
- -
-
-pyray.rl_enable_framebuffer(id: int) None
-

Enable render texture (fbo).

-
- -
-
-pyray.rl_enable_point_mode() None
-

Enable point mode.

-
- -
-
-pyray.rl_enable_scissor_test() None
-

Enable scissor test.

-
- -
-
-pyray.rl_enable_shader(id: int) None
-

Enable shader program.

-
- -
-
-pyray.rl_enable_smooth_lines() None
-

Enable line aliasing.

-
- -
-
-pyray.rl_enable_stereo_render() None
-

Enable stereo rendering.

-
- -
-
-pyray.rl_enable_texture(id: int) None
-

Enable texture.

-
- -
-
-pyray.rl_enable_texture_cubemap(id: int) None
-

Enable texture cubemap.

-
- -
-
-pyray.rl_enable_vertex_array(vaoId: int) bool
-

Enable vertex array (VAO, if supported).

-
- -
-
-pyray.rl_enable_vertex_attribute(index: int) None
-

Enable vertex attribute index.

-
- -
-
-pyray.rl_enable_vertex_buffer(id: int) None
-

Enable vertex buffer (VBO).

-
- -
-
-pyray.rl_enable_vertex_buffer_element(id: int) None
-

Enable vertex buffer element (VBO element).

-
- -
-
-pyray.rl_enable_wire_mode() None
-

Enable wire mode.

-
- -
-
-pyray.rl_end() None
-

Finish vertex providing.

-
- -
-
-pyray.rl_framebuffer_attach(fboId: int, texId: int, attachType: int, texType: int, mipLevel: int) None
-

Attach texture/renderbuffer to a framebuffer.

-
- -
-
-pyray.rl_framebuffer_complete(id: int) bool
-

Verify framebuffer is complete.

-
- -
-
-pyray.rl_frustum(left: float, right: float, bottom: float, top: float, znear: float, zfar: float) None
-

.

-
- -
-
-pyray.rl_gen_texture_mipmaps(id: int, width: int, height: int, format: int, mipmaps: Any) None
-

Generate mipmap data for selected texture.

-
- -
-
-pyray.rl_get_active_framebuffer() int
-

Get the currently active render texture (fbo), 0 for default framebuffer.

-
- -
-
-pyray.rl_get_cull_distance_far() float
-

Get cull plane distance far.

-
- -
-
-pyray.rl_get_cull_distance_near() float
-

Get cull plane distance near.

-
- -
-
-pyray.rl_get_framebuffer_height() int
-

Get default framebuffer height.

-
- -
-
-pyray.rl_get_framebuffer_width() int
-

Get default framebuffer width.

-
- -
-
-pyray.rl_get_gl_texture_formats(format: int, glInternalFormat: Any, glFormat: Any, glType: Any) None
-

Get OpenGL internal formats.

-
- -
-
-pyray.rl_get_line_width() float
-

Get the line drawing width.

-
- -
-
-pyray.rl_get_location_attrib(shaderId: int, attribName: str) int
-

Get shader location attribute.

-
- -
-
-pyray.rl_get_location_uniform(shaderId: int, uniformName: str) int
-

Get shader location uniform.

-
- -
-
-pyray.rl_get_matrix_modelview() Matrix
-

Get internal modelview matrix.

-
- -
-
-pyray.rl_get_matrix_projection() Matrix
-

Get internal projection matrix.

-
- -
-
-pyray.rl_get_matrix_projection_stereo(eye: int) Matrix
-

Get internal projection matrix for stereo render (selected eye).

-
- -
-
-pyray.rl_get_matrix_transform() Matrix
-

Get internal accumulated transform matrix.

-
- -
-
-pyray.rl_get_matrix_view_offset_stereo(eye: int) Matrix
-

Get internal view offset matrix for stereo render (selected eye).

-
- -
-
-pyray.rl_get_pixel_format_name(format: int) str
-

Get name string for pixel format.

-
- -
-
-pyray.rl_get_shader_buffer_size(id: int) int
-

Get SSBO buffer size.

-
- -
-
-pyray.rl_get_shader_id_default() int
-

Get default shader id.

-
- -
-
-pyray.rl_get_shader_locs_default() Any
-

Get default shader locations.

-
- -
-
-pyray.rl_get_texture_id_default() int
-

Get default texture id.

-
- -
-
-pyray.rl_get_version() int
-

Get current OpenGL version.

-
- -
-
-pyray.rl_is_stereo_render_enabled() bool
-

Check if stereo render is enabled.

-
- -
-
-pyray.rl_load_compute_shader_program(shaderId: int) int
-

Load compute shader program.

-
- -
-
-pyray.rl_load_draw_cube() None
-

Load and draw a cube.

-
- -
-
-pyray.rl_load_draw_quad() None
-

Load and draw a quad.

-
- -
-
-pyray.rl_load_extensions(loader: Any) None
-

Load OpenGL extensions (loader function required).

-
- -
-
-pyray.rl_load_framebuffer() int
-

Load an empty framebuffer.

-
- -
-
-pyray.rl_load_identity() None
-

Reset current matrix to identity matrix.

-
- -
-
-pyray.rl_load_render_batch(numBuffers: int, bufferElements: int) rlRenderBatch
-

Load a render batch system.

-
- -
-
-pyray.rl_load_shader_buffer(size: int, data: Any, usageHint: int) int
-

Load shader storage buffer object (SSBO).

-
- -
-
-pyray.rl_load_shader_code(vsCode: str, fsCode: str) int
-

Load shader from code strings.

-
- -
-
-pyray.rl_load_shader_program(vShaderId: int, fShaderId: int) int
-

Load custom shader program.

-
- -
-
-pyray.rl_load_texture(data: Any, width: int, height: int, format: int, mipmapCount: int) int
-

Load texture data.

-
- -
-
-pyray.rl_load_texture_cubemap(data: Any, size: int, format: int, mipmapCount: int) int
-

Load texture cubemap data.

-
- -
-
-pyray.rl_load_texture_depth(width: int, height: int, useRenderBuffer: bool) int
-

Load depth texture/renderbuffer (to be attached to fbo).

-
- -
-
-pyray.rl_load_vertex_array() int
-

Load vertex array (vao) if supported.

-
- -
-
-pyray.rl_load_vertex_buffer(buffer: Any, size: int, dynamic: bool) int
-

Load a vertex buffer object.

-
- -
-
-pyray.rl_load_vertex_buffer_element(buffer: Any, size: int, dynamic: bool) int
-

Load vertex buffer elements object.

-
- -
-
-pyray.rl_matrix_mode(mode: int) None
-

Choose the current matrix to be transformed.

-
- -
-
-pyray.rl_mult_matrixf(matf: Any) None
-

Multiply the current matrix by another matrix.

-
- -
-
-pyray.rl_normal3f(x: float, y: float, z: float) None
-

Define one vertex (normal) - 3 float.

-
- -
-
-pyray.rl_ortho(left: float, right: float, bottom: float, top: float, znear: float, zfar: float) None
-

.

-
- -
-
-pyray.rl_pop_matrix() None
-

Pop latest inserted matrix from stack.

-
- -
-
-pyray.rl_push_matrix() None
-

Push the current matrix to stack.

-
- -
-
-pyray.rl_read_screen_pixels(width: int, height: int) str
-

Read screen pixel data (color buffer).

-
- -
-
-pyray.rl_read_shader_buffer(id: int, dest: Any, count: int, offset: int) None
-

Read SSBO buffer data (GPU->CPU).

-
- -
-
-pyray.rl_read_texture_pixels(id: int, width: int, height: int, format: int) Any
-

Read texture pixel data.

-
- -
-
-pyray.rl_rotatef(angle: float, x: float, y: float, z: float) None
-

Multiply the current matrix by a rotation matrix.

-
- -
-
-pyray.rl_scalef(x: float, y: float, z: float) None
-

Multiply the current matrix by a scaling matrix.

-
- -
-
-pyray.rl_scissor(x: int, y: int, width: int, height: int) None
-

Scissor test.

-
- -
-
-pyray.rl_set_blend_factors(glSrcFactor: int, glDstFactor: int, glEquation: int) None
-

Set blending mode factor and equation (using OpenGL factors).

-
- -
-
-pyray.rl_set_blend_factors_separate(glSrcRGB: int, glDstRGB: int, glSrcAlpha: int, glDstAlpha: int, glEqRGB: int, glEqAlpha: int) None
-

Set blending mode factors and equations separately (using OpenGL factors).

-
- -
-
-pyray.rl_set_blend_mode(mode: int) None
-

Set blending mode.

-
- -
-
-pyray.rl_set_clip_planes(nearPlane: float, farPlane: float) None
-

Set clip planes distances.

-
- -
-
-pyray.rl_set_cull_face(mode: int) None
-

Set face culling mode.

-
- -
-
-pyray.rl_set_framebuffer_height(height: int) None
-

Set current framebuffer height.

-
- -
-
-pyray.rl_set_framebuffer_width(width: int) None
-

Set current framebuffer width.

-
- -
-
-pyray.rl_set_line_width(width: float) None
-

Set the line drawing width.

-
- -
-
-pyray.rl_set_matrix_modelview(view: Matrix | list | tuple) None
-

Set a custom modelview matrix (replaces internal modelview matrix).

-
- -
-
-pyray.rl_set_matrix_projection(proj: Matrix | list | tuple) None
-

Set a custom projection matrix (replaces internal projection matrix).

-
- -
-
-pyray.rl_set_matrix_projection_stereo(right: Matrix | list | tuple, left: Matrix | list | tuple) None
-

Set eyes projection matrices for stereo rendering.

-
- -
-
-pyray.rl_set_matrix_view_offset_stereo(right: Matrix | list | tuple, left: Matrix | list | tuple) None
-

Set eyes view offsets matrices for stereo rendering.

-
- -
-
-pyray.rl_set_render_batch_active(batch: Any | list | tuple) None
-

Set the active render batch for rlgl (NULL for default internal).

-
- -
-
-pyray.rl_set_shader(id: int, locs: Any) None
-

Set shader currently active (id and locations).

-
- -
-
-pyray.rl_set_texture(id: int) None
-

Set current texture for render batch and check buffers limits.

-
- -
-
-pyray.rl_set_uniform(locIndex: int, value: Any, uniformType: int, count: int) None
-

Set shader value uniform.

-
- -
-
-pyray.rl_set_uniform_matrices(locIndex: int, mat: Any | list | tuple, count: int) None
-

Set shader value matrices.

-
- -
-
-pyray.rl_set_uniform_matrix(locIndex: int, mat: Matrix | list | tuple) None
-

Set shader value matrix.

-
- -
-
-pyray.rl_set_uniform_sampler(locIndex: int, textureId: int) None
-

Set shader value sampler.

-
- -
-
-pyray.rl_set_vertex_attribute(index: int, compSize: int, type: int, normalized: bool, stride: int, offset: int) None
-

Set vertex attribute data configuration.

-
- -
-
-pyray.rl_set_vertex_attribute_default(locIndex: int, value: Any, attribType: int, count: int) None
-

Set vertex attribute default value, when attribute to provided.

-
- -
-
-pyray.rl_set_vertex_attribute_divisor(index: int, divisor: int) None
-

Set vertex attribute data divisor.

-
- -
-
-pyray.rl_tex_coord2f(x: float, y: float) None
-

Define one vertex (texture coordinate) - 2 float.

-
- -
-
-pyray.rl_texture_parameters(id: int, param: int, value: int) None
-

Set texture parameters (filter, wrap).

-
- -
-
-pyray.rl_translatef(x: float, y: float, z: float) None
-

Multiply the current matrix by a translation matrix.

-
- -
-
-pyray.rl_unload_framebuffer(id: int) None
-

Delete framebuffer from GPU.

-
- -
-
-pyray.rl_unload_render_batch(batch: rlRenderBatch | list | tuple) None
-

Unload render batch system.

-
- -
-
-pyray.rl_unload_shader_buffer(ssboId: int) None
-

Unload shader storage buffer object (SSBO).

-
- -
-
-pyray.rl_unload_shader_program(id: int) None
-

Unload shader program.

-
- -
-
-pyray.rl_unload_texture(id: int) None
-

Unload texture from GPU memory.

-
- -
-
-pyray.rl_unload_vertex_array(vaoId: int) None
-

Unload vertex array (vao).

-
- -
-
-pyray.rl_unload_vertex_buffer(vboId: int) None
-

Unload vertex buffer object.

-
- -
-
-pyray.rl_update_shader_buffer(id: int, data: Any, dataSize: int, offset: int) None
-

Update SSBO buffer data.

-
- -
-
-pyray.rl_update_texture(id: int, offsetX: int, offsetY: int, width: int, height: int, format: int, data: Any) None
-

Update texture with new data on GPU.

-
- -
-
-pyray.rl_update_vertex_buffer(bufferId: int, data: Any, dataSize: int, offset: int) None
-

Update vertex buffer object data on GPU buffer.

-
- -
-
-pyray.rl_update_vertex_buffer_elements(id: int, data: Any, dataSize: int, offset: int) None
-

Update vertex buffer elements data on GPU buffer.

-
- -
-
-pyray.rl_vertex2f(x: float, y: float) None
-

Define one vertex (position) - 2 float.

-
- -
-
-pyray.rl_vertex2i(x: int, y: int) None
-

Define one vertex (position) - 2 int.

-
- -
-
-pyray.rl_vertex3f(x: float, y: float, z: float) None
-

Define one vertex (position) - 3 float.

-
- -
-
-pyray.rl_viewport(x: int, y: int, width: int, height: int) None
-

Set the viewport area.

-
- -
-
-pyray.rlgl_close() None
-

De-initialize rlgl (buffers, shaders, textures).

-
- -
-
-pyray.rlgl_init(width: int, height: int) None
-

Initialize rlgl (buffers, shaders, textures, states).

-
- -
-
-pyray.save_file_data(fileName: str, data: Any, dataSize: int) bool
-

Save data to file from byte array (write), returns true on success.

-
- -
-
-pyray.save_file_text(fileName: str, text: str) bool
-

Save text data to file (write), string must be ‘' terminated, returns true on success.

-
- -
-
-pyray.seek_music_stream(music: Music | list | tuple, position: float) None
-

Seek music to a position (in seconds).

-
- -
-
-pyray.set_audio_stream_buffer_size_default(size: int) None
-

Default size for new audio streams.

-
- -
-
-pyray.set_audio_stream_callback(stream: AudioStream | list | tuple, callback: Any) None
-

Audio thread callback to request new data.

-
- -
-
-pyray.set_audio_stream_pan(stream: AudioStream | list | tuple, pan: float) None
-

Set pan for audio stream (0.5 is centered).

-
- -
-
-pyray.set_audio_stream_pitch(stream: AudioStream | list | tuple, pitch: float) None
-

Set pitch for audio stream (1.0 is base level).

-
- -
-
-pyray.set_audio_stream_volume(stream: AudioStream | list | tuple, volume: float) None
-

Set volume for audio stream (1.0 is max level).

-
- -
-
-pyray.set_automation_event_base_frame(frame: int) None
-

Set automation event internal base frame to start recording.

-
- -
-
-pyray.set_automation_event_list(list_0: Any | list | tuple) None
-

Set automation event list to record to.

-
- -
-
-pyray.set_clipboard_text(text: str) None
-

Set clipboard text content.

-
- -
-
-pyray.set_config_flags(flags: int) None
-

Setup init configuration flags (view FLAGS).

-
- -
-
-pyray.set_exit_key(key: int) None
-

Set a custom key to exit program (default is ESC).

-
- -
-
-pyray.set_gamepad_mappings(mappings: str) int
-

Set internal gamepad mappings (SDL_GameControllerDB).

-
- -
-
-pyray.set_gamepad_vibration(gamepad: int, leftMotor: float, rightMotor: float, duration: float) None
-

Set gamepad vibration for both motors (duration in seconds).

-
- -
-
-pyray.set_gestures_enabled(flags: int) None
-

Enable a set of gestures using flags.

-
- -
-
-pyray.set_load_file_data_callback(callback: str) None
-

Set custom file binary data loader.

-
- -
-
-pyray.set_load_file_text_callback(callback: str) None
-

Set custom file text data loader.

-
- -
-
-pyray.set_master_volume(volume: float) None
-

Set master volume (listener).

-
- -
-
-pyray.set_material_texture(material: Any | list | tuple, mapType: int, texture: Texture | list | tuple) None
-

Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR…).

-
- -
-
-pyray.set_model_mesh_material(model: Any | list | tuple, meshId: int, materialId: int) None
-

Set material for a mesh.

-
- -
-
-pyray.set_mouse_cursor(cursor: int) None
-

Set mouse cursor.

-
- -
-
-pyray.set_mouse_offset(offsetX: int, offsetY: int) None
-

Set mouse offset.

-
- -
-
-pyray.set_mouse_position(x: int, y: int) None
-

Set mouse position XY.

-
- -
-
-pyray.set_mouse_scale(scaleX: float, scaleY: float) None
-

Set mouse scaling.

-
- -
-
-pyray.set_music_pan(music: Music | list | tuple, pan: float) None
-

Set pan for a music (0.5 is center).

-
- -
-
-pyray.set_music_pitch(music: Music | list | tuple, pitch: float) None
-

Set pitch for a music (1.0 is base level).

-
- -
-
-pyray.set_music_volume(music: Music | list | tuple, volume: float) None
-

Set volume for music (1.0 is max level).

-
- -
-
-pyray.set_physics_body_rotation(body: Any | list | tuple, radians: float) None
-

Sets physics body shape transform based on radians parameter.

-
- -
-
-pyray.set_physics_gravity(x: float, y: float) None
-

Sets physics global gravity force.

-
- -
-
-pyray.set_physics_time_step(delta: float) None
-

Sets physics fixed time step in milliseconds. 1.666666 by default.

-
- -
-
-pyray.set_pixel_color(dstPtr: Any, color: Color | list | tuple, format: int) None
-

Set color formatted into destination pixel pointer.

-
- -
-
-pyray.set_random_seed(seed: int) None
-

Set the seed for the random number generator.

-
- -
-
-pyray.set_save_file_data_callback(callback: str) None
-

Set custom file binary data saver.

-
- -
-
-pyray.set_save_file_text_callback(callback: str) None
-

Set custom file text data saver.

-
- -
-
-pyray.set_shader_value(shader: Shader | list | tuple, locIndex: int, value: Any, uniformType: int) None
-

Set shader uniform value.

-
- -
-
-pyray.set_shader_value_matrix(shader: Shader | list | tuple, locIndex: int, mat: Matrix | list | tuple) None
-

Set shader uniform value (matrix 4x4).

-
- -
-
-pyray.set_shader_value_texture(shader: Shader | list | tuple, locIndex: int, texture: Texture | list | tuple) None
-

Set shader uniform value for texture (sampler2d).

-
- -
-
-pyray.set_shader_value_v(shader: Shader | list | tuple, locIndex: int, value: Any, uniformType: int, count: int) None
-

Set shader uniform value vector.

-
- -
-
-pyray.set_shapes_texture(texture: Texture | list | tuple, source: Rectangle | list | tuple) None
-

Set texture and rectangle to be used on shapes drawing.

-
- -
-
-pyray.set_sound_pan(sound: Sound | list | tuple, pan: float) None
-

Set pan for a sound (0.5 is center).

-
- -
-
-pyray.set_sound_pitch(sound: Sound | list | tuple, pitch: float) None
-

Set pitch for a sound (1.0 is base level).

-
- -
-
-pyray.set_sound_volume(sound: Sound | list | tuple, volume: float) None
-

Set volume for a sound (1.0 is max level).

-
- -
-
-pyray.set_target_fps(fps: int) None
-

Set target FPS (maximum).

-
- -
-
-pyray.set_text_line_spacing(spacing: int) None
-

Set vertical line spacing when drawing with line-breaks.

-
- -
-
-pyray.set_texture_filter(texture: Texture | list | tuple, filter: int) None
-

Set texture scaling filter mode.

-
- -
-
-pyray.set_texture_wrap(texture: Texture | list | tuple, wrap: int) None
-

Set texture wrapping mode.

-
- -
-
-pyray.set_trace_log_callback(callback: str) None
-

Set custom trace log.

-
- -
-
-pyray.set_trace_log_level(logLevel: int) None
-

Set the current threshold (minimum) log level.

-
- -
-
-pyray.set_window_focused() None
-

Set window focused.

-
- -
-
-pyray.set_window_icon(image: Image | list | tuple) None
-

Set icon for window (single image, RGBA 32bit).

-
- -
-
-pyray.set_window_icons(images: Any | list | tuple, count: int) None
-

Set icon for window (multiple images, RGBA 32bit).

-
- -
-
-pyray.set_window_max_size(width: int, height: int) None
-

Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE).

-
- -
-
-pyray.set_window_min_size(width: int, height: int) None
-

Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE).

-
- -
-
-pyray.set_window_monitor(monitor: int) None
-

Set monitor for the current window.

-
- -
-
-pyray.set_window_opacity(opacity: float) None
-

Set window opacity [0.0f..1.0f].

-
- -
-
-pyray.set_window_position(x: int, y: int) None
-

Set window position on screen.

-
- -
-
-pyray.set_window_size(width: int, height: int) None
-

Set window dimensions.

-
- -
-
-pyray.set_window_state(flags: int) None
-

Set window configuration state using flags.

-
- -
-
-pyray.set_window_title(title: str) None
-

Set title for window.

-
- -
-
-pyray.show_cursor() None
-

Shows cursor.

-
- -
-
-pyray.start_automation_event_recording() None
-

Start recording automation events (AutomationEventList must be set).

-
- -
-
-pyray.stop_audio_stream(stream: AudioStream | list | tuple) None
-

Stop audio stream.

-
- -
-
-pyray.stop_automation_event_recording() None
-

Stop recording automation events.

-
- -
-
-pyray.stop_music_stream(music: Music | list | tuple) None
-

Stop music playing.

-
- -
-
-pyray.stop_sound(sound: Sound | list | tuple) None
-

Stop playing a sound.

-
- -
-
-pyray.swap_screen_buffer() None
-

Swap back buffer with front buffer (screen drawing).

-
- -
-
-pyray.take_screenshot(fileName: str) None
-

Takes a screenshot of current screen (filename extension defines format).

-
- -
-
-pyray.text_append(text: str, append: str, position: Any) None
-

Append text at specific position and move cursor!.

-
- -
-
-pyray.text_copy(dst: str, src: str) int
-

Copy one string to another, returns bytes copied.

-
- -
-
-pyray.text_find_index(text: str, find: str) int
-

Find first text occurrence within a string.

-
- -
-
-pyray.text_format(*args) str
-

VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI

-
- -
-
-pyray.text_insert(text: str, insert: str, position: int) str
-

Insert text in a position (WARNING: memory must be freed!).

-
- -
-
-pyray.text_is_equal(text1: str, text2: str) bool
-

Check if two text string are equal.

-
- -
-
-pyray.text_join(textList: list[str], count: int, delimiter: str) str
-

Join text strings with delimiter.

-
- -
-
-pyray.text_length(text: str) int
-

Get text length, checks for ‘' ending.

-
- -
-
-pyray.text_replace(text: str, replace: str, by: str) str
-

Replace text string (WARNING: memory must be freed!).

-
- -
-
-pyray.text_split(text: str, delimiter: str, count: Any) list[str]
-

Split text into multiple strings.

-
- -
-
-pyray.text_subtext(text: str, position: int, length: int) str
-

Get a piece of a text string.

-
- -
-
-pyray.text_to_camel(text: str) str
-

Get Camel case notation version of provided string.

-
- -
-
-pyray.text_to_float(text: str) float
-

Get float value from text (negative values not supported).

-
- -
-
-pyray.text_to_integer(text: str) int
-

Get integer value from text (negative values not supported).

-
- -
-
-pyray.text_to_lower(text: str) str
-

Get lower case version of provided string.

-
- -
-
-pyray.text_to_pascal(text: str) str
-

Get Pascal case notation version of provided string.

-
- -
-
-pyray.text_to_snake(text: str) str
-

Get Snake case notation version of provided string.

-
- -
-
-pyray.text_to_upper(text: str) str
-

Get upper case version of provided string.

-
- -
-
-pyray.toggle_borderless_windowed() None
-

Toggle window state: borderless windowed, resizes window to match monitor resolution.

-
- -
-
-pyray.toggle_fullscreen() None
-

Toggle window state: fullscreen/windowed, resizes monitor to match window resolution.

-
- -
-
-pyray.trace_log(*args) None
-

VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI

-
- -
-
-pyray.unload_audio_stream(stream: AudioStream | list | tuple) None
-

Unload audio stream and free memory.

-
- -
-
-pyray.unload_automation_event_list(list_0: AutomationEventList | list | tuple) None
-

Unload automation events list from file.

-
- -
-
-pyray.unload_codepoints(codepoints: Any) None
-

Unload codepoints data from memory.

-
- -
-
-pyray.unload_directory_files(files: FilePathList | list | tuple) None
-

Unload filepaths.

-
- -
-
-pyray.unload_dropped_files(files: FilePathList | list | tuple) None
-

Unload dropped filepaths.

-
- -
-
-pyray.unload_file_data(data: str) None
-

Unload file data allocated by LoadFileData().

-
- -
-
-pyray.unload_file_text(text: str) None
-

Unload file text data allocated by LoadFileText().

-
- -
-
-pyray.unload_font(font: Font | list | tuple) None
-

Unload font from GPU memory (VRAM).

-
- -
-
-pyray.unload_font_data(glyphs: Any | list | tuple, glyphCount: int) None
-

Unload font chars info data (RAM).

-
- -
-
-pyray.unload_image(image: Image | list | tuple) None
-

Unload image from CPU memory (RAM).

-
- -
-
-pyray.unload_image_colors(colors: Any | list | tuple) None
-

Unload color data loaded with LoadImageColors().

-
- -
-
-pyray.unload_image_palette(colors: Any | list | tuple) None
-

Unload colors palette loaded with LoadImagePalette().

-
- -
-
-pyray.unload_material(material: Material | list | tuple) None
-

Unload material from GPU memory (VRAM).

-
- -
-
-pyray.unload_mesh(mesh: Mesh | list | tuple) None
-

Unload mesh data from CPU and GPU.

-
- -
-
-pyray.unload_model(model: Model | list | tuple) None
-

Unload model (including meshes) from memory (RAM and/or VRAM).

-
- -
-
-pyray.unload_model_animation(anim: ModelAnimation | list | tuple) None
-

Unload animation data.

-
- -
-
-pyray.unload_model_animations(animations: Any | list | tuple, animCount: int) None
-

Unload animation array data.

-
- -
-
-pyray.unload_music_stream(music: Music | list | tuple) None
-

Unload music stream.

-
- -
-
-pyray.unload_random_sequence(sequence: Any) None
-

Unload random values sequence.

-
- -
-
-pyray.unload_render_texture(target: RenderTexture | list | tuple) None
-

Unload render texture from GPU memory (VRAM).

-
- -
-
-pyray.unload_shader(shader: Shader | list | tuple) None
-

Unload shader from GPU memory (VRAM).

-
- -
-
-pyray.unload_sound(sound: Sound | list | tuple) None
-

Unload sound.

-
- -
-
-pyray.unload_sound_alias(alias: Sound | list | tuple) None
-

Unload a sound alias (does not deallocate sample data).

-
- -
-
-pyray.unload_texture(texture: Texture | list | tuple) None
-

Unload texture from GPU memory (VRAM).

-
- -
-
-pyray.unload_utf8(text: str) None
-

Unload UTF-8 text encoded from codepoints array.

-
- -
-
-pyray.unload_vr_stereo_config(config: VrStereoConfig | list | tuple) None
-

Unload VR stereo config.

-
- -
-
-pyray.unload_wave(wave: Wave | list | tuple) None
-

Unload wave data.

-
- -
-
-pyray.unload_wave_samples(samples: Any) None
-

Unload samples data loaded with LoadWaveSamples().

-
- -
-
-pyray.update_audio_stream(stream: AudioStream | list | tuple, data: Any, frameCount: int) None
-

Update audio stream buffers with data.

-
- -
-
-pyray.update_camera(camera: Any | list | tuple, mode: int) None
-

Update camera position for selected mode.

-
- -
-
-pyray.update_camera_pro(camera: Any | list | tuple, movement: Vector3 | list | tuple, rotation: Vector3 | list | tuple, zoom: float) None
-

Update camera movement/rotation.

-
- -
-
-pyray.update_mesh_buffer(mesh: Mesh | list | tuple, index: int, data: Any, dataSize: int, offset: int) None
-

Update mesh vertex data in GPU for a specific buffer index.

-
- -
-
-pyray.update_model_animation(model: Model | list | tuple, anim: ModelAnimation | list | tuple, frame: int) None
-

Update model animation pose (CPU).

-
- -
-
-pyray.update_model_animation_bones(model: Model | list | tuple, anim: ModelAnimation | list | tuple, frame: int) None
-

Update model animation mesh bone matrices (GPU skinning).

-
- -
-
-pyray.update_music_stream(music: Music | list | tuple) None
-

Updates buffers for music streaming.

-
- -
-
-pyray.update_physics() None
-

Update physics system.

-
- -
-
-pyray.update_sound(sound: Sound | list | tuple, data: Any, sampleCount: int) None
-

Update sound buffer with new data.

-
- -
-
-pyray.update_texture(texture: Texture | list | tuple, pixels: Any) None
-

Update GPU texture with new data.

-
- -
-
-pyray.update_texture_rec(texture: Texture | list | tuple, rec: Rectangle | list | tuple, pixels: Any) None
-

Update GPU texture rectangle with new data.

-
- -
-
-pyray.upload_mesh(mesh: Any | list | tuple, dynamic: bool) None
-

Upload mesh vertex data in GPU and provide VAO/VBO ids.

-
- -
-
-pyray.vector2_add(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_add_value(v: Vector2 | list | tuple, add: float) Vector2
-

.

-
- -
-
-pyray.vector2_angle(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) float
-

.

-
- -
-
-pyray.vector2_clamp(v: Vector2 | list | tuple, min_1: Vector2 | list | tuple, max_2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_clamp_value(v: Vector2 | list | tuple, min_1: float, max_2: float) Vector2
-

.

-
- -
-
-pyray.vector2_distance(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) float
-

.

-
- -
-
-pyray.vector2_distance_sqr(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) float
-

.

-
- -
-
-pyray.vector2_divide(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_dot_product(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) float
-

.

-
- -
-
-pyray.vector2_equals(p: Vector2 | list | tuple, q: Vector2 | list | tuple) int
-

.

-
- -
-
-pyray.vector2_invert(v: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_length(v: Vector2 | list | tuple) float
-

.

-
- -
-
-pyray.vector2_length_sqr(v: Vector2 | list | tuple) float
-

.

-
- -
-
-pyray.vector2_lerp(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, amount: float) Vector2
-

.

-
- -
-
-pyray.vector2_line_angle(start: Vector2 | list | tuple, end: Vector2 | list | tuple) float
-

.

-
- -
-
-pyray.vector2_max(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_min(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_move_towards(v: Vector2 | list | tuple, target: Vector2 | list | tuple, maxDistance: float) Vector2
-

.

-
- -
-
-pyray.vector2_multiply(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_negate(v: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_normalize(v: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_one() Vector2
-

.

-
- -
-
-pyray.vector2_reflect(v: Vector2 | list | tuple, normal: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_refract(v: Vector2 | list | tuple, n: Vector2 | list | tuple, r: float) Vector2
-

.

-
- -
-
-pyray.vector2_rotate(v: Vector2 | list | tuple, angle: float) Vector2
-

.

-
- -
-
-pyray.vector2_scale(v: Vector2 | list | tuple, scale: float) Vector2
-

.

-
- -
-
-pyray.vector2_subtract(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_subtract_value(v: Vector2 | list | tuple, sub: float) Vector2
-

.

-
- -
-
-pyray.vector2_transform(v: Vector2 | list | tuple, mat: Matrix | list | tuple) Vector2
-

.

-
- -
-
-pyray.vector2_zero() Vector2
-

.

-
- -
-
-pyray.vector3_add(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_add_value(v: Vector3 | list | tuple, add: float) Vector3
-

.

-
- -
-
-pyray.vector3_angle(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) float
-

.

-
- -
-
-pyray.vector3_barycenter(p: Vector3 | list | tuple, a: Vector3 | list | tuple, b: Vector3 | list | tuple, c: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_clamp(v: Vector3 | list | tuple, min_1: Vector3 | list | tuple, max_2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_clamp_value(v: Vector3 | list | tuple, min_1: float, max_2: float) Vector3
-

.

-
- -
-
-pyray.vector3_cross_product(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_cubic_hermite(v1: Vector3 | list | tuple, tangent1: Vector3 | list | tuple, v2: Vector3 | list | tuple, tangent2: Vector3 | list | tuple, amount: float) Vector3
-

.

-
- -
-
-pyray.vector3_distance(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) float
-

.

-
- -
-
-pyray.vector3_distance_sqr(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) float
-

.

-
- -
-
-pyray.vector3_divide(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_dot_product(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) float
-

.

-
- -
-
-pyray.vector3_equals(p: Vector3 | list | tuple, q: Vector3 | list | tuple) int
-

.

-
- -
-
-pyray.vector3_invert(v: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_length(v: Vector3 | list | tuple) float
-

.

-
- -
-
-pyray.vector3_length_sqr(v: Vector3 | list | tuple) float
-

.

-
- -
-
-pyray.vector3_lerp(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple, amount: float) Vector3
-

.

-
- -
-
-pyray.vector3_max(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_min(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_move_towards(v: Vector3 | list | tuple, target: Vector3 | list | tuple, maxDistance: float) Vector3
-

.

-
- -
-
-pyray.vector3_multiply(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_negate(v: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_normalize(v: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_one() Vector3
-

.

-
- -
-
-pyray.vector3_ortho_normalize(v1: Any | list | tuple, v2: Any | list | tuple) None
-

.

-
- -
-
-pyray.vector3_perpendicular(v: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_project(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_reflect(v: Vector3 | list | tuple, normal: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_refract(v: Vector3 | list | tuple, n: Vector3 | list | tuple, r: float) Vector3
-

.

-
- -
-
-pyray.vector3_reject(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_rotate_by_axis_angle(v: Vector3 | list | tuple, axis: Vector3 | list | tuple, angle: float) Vector3
-

.

-
- -
-
-pyray.vector3_rotate_by_quaternion(v: Vector3 | list | tuple, q: Vector4 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_scale(v: Vector3 | list | tuple, scalar: float) Vector3
-

.

-
- -
-
-pyray.vector3_subtract(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_subtract_value(v: Vector3 | list | tuple, sub: float) Vector3
-

.

-
- -
-
-pyray.vector3_to_float_v(v: Vector3 | list | tuple) float3
-

.

-
- -
-
-pyray.vector3_transform(v: Vector3 | list | tuple, mat: Matrix | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_unproject(source: Vector3 | list | tuple, projection: Matrix | list | tuple, view: Matrix | list | tuple) Vector3
-

.

-
- -
-
-pyray.vector3_zero() Vector3
-

.

-
- -
-
-pyray.vector4_add(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.vector4_add_value(v: Vector4 | list | tuple, add: float) Vector4
-

.

-
- -
-
-pyray.vector4_distance(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) float
-

.

-
- -
-
-pyray.vector4_distance_sqr(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) float
-

.

-
- -
-
-pyray.vector4_divide(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.vector4_dot_product(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) float
-

.

-
- -
-
-pyray.vector4_equals(p: Vector4 | list | tuple, q: Vector4 | list | tuple) int
-

.

-
- -
-
-pyray.vector4_invert(v: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.vector4_length(v: Vector4 | list | tuple) float
-

.

-
- -
-
-pyray.vector4_length_sqr(v: Vector4 | list | tuple) float
-

.

-
- -
-
-pyray.vector4_lerp(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple, amount: float) Vector4
-

.

-
- -
-
-pyray.vector4_max(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.vector4_min(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.vector4_move_towards(v: Vector4 | list | tuple, target: Vector4 | list | tuple, maxDistance: float) Vector4
-

.

-
- -
-
-pyray.vector4_multiply(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.vector4_negate(v: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.vector4_normalize(v: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.vector4_one() Vector4
-

.

-
- -
-
-pyray.vector4_scale(v: Vector4 | list | tuple, scale: float) Vector4
-

.

-
- -
-
-pyray.vector4_subtract(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-pyray.vector4_subtract_value(v: Vector4 | list | tuple, add: float) Vector4
-

.

-
- -
-
-pyray.vector4_zero() Vector4
-

.

-
- -
-
-pyray.wait_time(seconds: float) None
-

Wait for some time (halt program execution).

-
- -
-
-pyray.wave_copy(wave: Wave | list | tuple) Wave
-

Copy a wave to a new wave.

-
- -
-
-pyray.wave_crop(wave: Any | list | tuple, initFrame: int, finalFrame: int) None
-

Crop a wave to defined frames range.

-
- -
-
-pyray.wave_format(wave: Any | list | tuple, sampleRate: int, sampleSize: int, channels: int) None
-

Convert wave data to desired format.

-
- -
-
-pyray.window_should_close() bool
-

Check if application should close (KEY_ESCAPE pressed or windows close icon clicked).

-
- -
-
-pyray.wrap(value: float, min_1: float, max_2: float) float
-

.

-
- -
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/raylib.html b/docs/raylib.html deleted file mode 100644 index 6145b60..0000000 --- a/docs/raylib.html +++ /dev/null @@ -1,14811 +0,0 @@ - - - - - - - - - C API — Raylib Python documentation - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

C API

-

The goal of the C API is make usage as similar to the original C as CFFI will allow. -So the example programs -are very, very similar to the C originals.

-

Example program:

-
from raylib import *
-
-InitWindow(800, 450, b"Hello Raylib")
-SetTargetFPS(60)
-
-camera = ffi.new("struct Camera3D *", [[18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0])
-
-while not WindowShouldClose():
-    UpdateCamera(camera, CAMERA_ORBITAL)
-    BeginDrawing()
-    ClearBackground(RAYWHITE)
-    BeginMode3D(camera[0])
-    DrawGrid(20, 1.0)
-    EndMode3D()
-    DrawText(b"Hellow World", 190, 200, 20, VIOLET)
-    EndDrawing()
-CloseWindow()
-
-
-

If you want to be more portable (i.e. same code will work with dynamic bindings) you can prefix the functions like this:

-
from raylib import ffi, rl, colors
-
-rl.InitWindow(800, 450, b"Hello Raylib")
-rl.SetTargetFPS(60)
-
-...
-
-
-
-

Note

-

Whenever you need to convert stuff between C and Python see https://cffi.readthedocs.io

-
-
-

Important

-

Your primary reference should always be

- -
-

However, here is a list of available functions:

-
-

Functions API reference

-
-
-raylib.ARROWS_SIZE: int
-
- -
-
-raylib.ARROWS_VISIBLE: int
-
- -
-
-raylib.ARROW_PADDING: int
-
- -
-
-raylib.AttachAudioMixedProcessor(processor: Any) None
-

Attach audio stream processor to the entire audio pipeline, receives the samples as ‘float’.

-
- -
-
-raylib.AttachAudioStreamProcessor(stream: AudioStream | list | tuple, processor: Any) None
-

Attach audio stream processor to stream, receives the samples as ‘float’.

-
- -
-
-class raylib.AudioStream
-
-
-buffer: Any
-
- -
-
-channels: int
-
- -
-
-processor: Any
-
- -
-
-sampleRate: int
-
- -
-
-sampleSize: int
-
- -
- -
-
-class raylib.AutomationEvent
-
-
-frame: int
-
- -
-
-params: list
-
- -
-
-type: int
-
- -
- -
-
-class raylib.AutomationEventList
-
-
-capacity: int
-
- -
-
-count: int
-
- -
-
-events: Any
-
- -
- -
-
-raylib.BACKGROUND_COLOR: int
-
- -
-
-raylib.BASE_COLOR_DISABLED: int
-
- -
-
-raylib.BASE_COLOR_FOCUSED: int
-
- -
-
-raylib.BASE_COLOR_NORMAL: int
-
- -
-
-raylib.BASE_COLOR_PRESSED: int
-
- -
-
-raylib.BEIGE: Color
-
- -
-
-raylib.BLACK: Color
-
- -
-
-raylib.BLANK: Color
-
- -
-
-raylib.BLEND_ADDITIVE: int
-
- -
-
-raylib.BLEND_ADD_COLORS: int
-
- -
-
-raylib.BLEND_ALPHA: int
-
- -
-
-raylib.BLEND_ALPHA_PREMULTIPLY: int
-
- -
-
-raylib.BLEND_CUSTOM: int
-
- -
-
-raylib.BLEND_CUSTOM_SEPARATE: int
-
- -
-
-raylib.BLEND_MULTIPLIED: int
-
- -
-
-raylib.BLEND_SUBTRACT_COLORS: int
-
- -
-
-raylib.BLUE: Color
-
- -
-
-raylib.BORDER_COLOR_DISABLED: int
-
- -
-
-raylib.BORDER_COLOR_FOCUSED: int
-
- -
-
-raylib.BORDER_COLOR_NORMAL: int
-
- -
-
-raylib.BORDER_COLOR_PRESSED: int
-
- -
-
-raylib.BORDER_WIDTH: int
-
- -
-
-raylib.BROWN: Color
-
- -
-
-raylib.BUTTON: int
-
- -
-
-raylib.BeginBlendMode(mode: int) None
-

Begin blending mode (alpha, additive, multiplied, subtract, custom).

-
- -
-
-raylib.BeginDrawing() None
-

Setup canvas (framebuffer) to start drawing.

-
- -
-
-raylib.BeginMode2D(camera: Camera2D | list | tuple) None
-

Begin 2D mode with custom camera (2D).

-
- -
-
-raylib.BeginMode3D(camera: Camera3D | list | tuple) None
-

Begin 3D mode with custom camera (3D).

-
- -
-
-raylib.BeginScissorMode(x: int, y: int, width: int, height: int) None
-

Begin scissor mode (define screen area for following drawing).

-
- -
-
-raylib.BeginShaderMode(shader: Shader | list | tuple) None
-

Begin custom shader drawing.

-
- -
-
-raylib.BeginTextureMode(target: RenderTexture | list | tuple) None
-

Begin drawing to render texture.

-
- -
-
-raylib.BeginVrStereoMode(config: VrStereoConfig | list | tuple) None
-

Begin stereo rendering (requires VR simulator).

-
- -
-
-raylib.BlendMode
-
- -
-
-class raylib.BoneInfo
-
-
-name: bytes
-
- -
-
-parent: int
-
- -
- -
-
-class raylib.BoundingBox
-
-
-max: Vector3
-
- -
-
-min: Vector3
-
- -
- -
-
-raylib.CAMERA_CUSTOM: int
-
- -
-
-raylib.CAMERA_FIRST_PERSON: int
-
- -
-
-raylib.CAMERA_FREE: int
-
- -
-
-raylib.CAMERA_ORBITAL: int
-
- -
-
-raylib.CAMERA_ORTHOGRAPHIC: int
-
- -
-
-raylib.CAMERA_PERSPECTIVE: int
-
- -
-
-raylib.CAMERA_THIRD_PERSON: int
-
- -
-
-raylib.CHECKBOX: int
-
- -
-
-raylib.CHECK_PADDING: int
-
- -
-
-raylib.COLORPICKER: int
-
- -
-
-raylib.COLOR_SELECTOR_SIZE: int
-
- -
-
-raylib.COMBOBOX: int
-
- -
-
-raylib.COMBO_BUTTON_SPACING: int
-
- -
-
-raylib.COMBO_BUTTON_WIDTH: int
-
- -
-
-raylib.CUBEMAP_LAYOUT_AUTO_DETECT: int
-
- -
-
-raylib.CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE: int
-
- -
-
-raylib.CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR: int
-
- -
-
-raylib.CUBEMAP_LAYOUT_LINE_HORIZONTAL: int
-
- -
-
-raylib.CUBEMAP_LAYOUT_LINE_VERTICAL: int
-
- -
-
-class raylib.Camera
-
-
-fovy: float
-
- -
-
-position: Vector3
-
- -
-
-projection: int
-
- -
-
-target: Vector3
-
- -
-
-up: Vector3
-
- -
- -
-
-class raylib.Camera2D
-
-
-offset: Vector2
-
- -
-
-rotation: float
-
- -
-
-target: Vector2
-
- -
-
-zoom: float
-
- -
- -
-
-class raylib.Camera3D
-
-
-fovy: float
-
- -
-
-position: Vector3
-
- -
-
-projection: int
-
- -
-
-target: Vector3
-
- -
-
-up: Vector3
-
- -
- -
-
-raylib.CameraMode
-
- -
-
-raylib.CameraProjection
-
- -
-
-raylib.ChangeDirectory(dir: bytes) bool
-

Change working directory, return true on success.

-
- -
-
-raylib.CheckCollisionBoxSphere(box: BoundingBox | list | tuple, center: Vector3 | list | tuple, radius: float) bool
-

Check collision between box and sphere.

-
- -
-
-raylib.CheckCollisionBoxes(box1: BoundingBox | list | tuple, box2: BoundingBox | list | tuple) bool
-

Check collision between two bounding boxes.

-
- -
-
-raylib.CheckCollisionCircleLine(center: Vector2 | list | tuple, radius: float, p1: Vector2 | list | tuple, p2: Vector2 | list | tuple) bool
-

Check if circle collides with a line created betweeen two points [p1] and [p2].

-
- -
-
-raylib.CheckCollisionCircleRec(center: Vector2 | list | tuple, radius: float, rec: Rectangle | list | tuple) bool
-

Check collision between circle and rectangle.

-
- -
-
-raylib.CheckCollisionCircles(center1: Vector2 | list | tuple, radius1: float, center2: Vector2 | list | tuple, radius2: float) bool
-

Check collision between two circles.

-
- -
-
-raylib.CheckCollisionLines(startPos1: Vector2 | list | tuple, endPos1: Vector2 | list | tuple, startPos2: Vector2 | list | tuple, endPos2: Vector2 | list | tuple, collisionPoint: Any | list | tuple) bool
-

Check the collision between two lines defined by two points each, returns collision point by reference.

-
- -
-
-raylib.CheckCollisionPointCircle(point: Vector2 | list | tuple, center: Vector2 | list | tuple, radius: float) bool
-

Check if point is inside circle.

-
- -
-
-raylib.CheckCollisionPointLine(point: Vector2 | list | tuple, p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, threshold: int) bool
-

Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold].

-
- -
-
-raylib.CheckCollisionPointPoly(point: Vector2 | list | tuple, points: Any | list | tuple, pointCount: int) bool
-

Check if point is within a polygon described by array of vertices.

-
- -
-
-raylib.CheckCollisionPointRec(point: Vector2 | list | tuple, rec: Rectangle | list | tuple) bool
-

Check if point is inside rectangle.

-
- -
-
-raylib.CheckCollisionPointTriangle(point: Vector2 | list | tuple, p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple) bool
-

Check if point is inside a triangle.

-
- -
-
-raylib.CheckCollisionRecs(rec1: Rectangle | list | tuple, rec2: Rectangle | list | tuple) bool
-

Check collision between two rectangles.

-
- -
-
-raylib.CheckCollisionSpheres(center1: Vector3 | list | tuple, radius1: float, center2: Vector3 | list | tuple, radius2: float) bool
-

Check collision between two spheres.

-
- -
-
-raylib.Clamp(value: float, min_1: float, max_2: float) float
-

.

-
- -
-
-raylib.ClearBackground(color: Color | list | tuple) None
-

Set background color (framebuffer clear color).

-
- -
-
-raylib.ClearWindowState(flags: int) None
-

Clear window configuration state flags.

-
- -
-
-raylib.CloseAudioDevice() None
-

Close the audio device and context.

-
- -
-
-raylib.ClosePhysics() None
-

Close physics system and unload used memory.

-
- -
-
-raylib.CloseWindow() None
-

Close window and unload OpenGL context.

-
- -
-
-raylib.CodepointToUTF8(codepoint: int, utf8Size: Any) bytes
-

Encode one codepoint into UTF-8 byte array (array length returned as parameter).

-
- -
-
-class raylib.Color
-
-
-a: bytes
-
- -
-
-b: bytes
-
- -
-
-g: bytes
-
- -
-
-r: bytes
-
- -
- -
-
-raylib.ColorAlpha(color: Color | list | tuple, alpha: float) Color
-

Get color with alpha applied, alpha goes from 0.0f to 1.0f.

-
- -
-
-raylib.ColorAlphaBlend(dst: Color | list | tuple, src: Color | list | tuple, tint: Color | list | tuple) Color
-

Get src alpha-blended into dst color with tint.

-
- -
-
-raylib.ColorBrightness(color: Color | list | tuple, factor: float) Color
-

Get color with brightness correction, brightness factor goes from -1.0f to 1.0f.

-
- -
-
-raylib.ColorContrast(color: Color | list | tuple, contrast: float) Color
-

Get color with contrast correction, contrast values between -1.0f and 1.0f.

-
- -
-
-raylib.ColorFromHSV(hue: float, saturation: float, value: float) Color
-

Get a Color from HSV values, hue [0..360], saturation/value [0..1].

-
- -
-
-raylib.ColorFromNormalized(normalized: Vector4 | list | tuple) Color
-

Get Color from normalized values [0..1].

-
- -
-
-raylib.ColorIsEqual(col1: Color | list | tuple, col2: Color | list | tuple) bool
-

Check if two colors are equal.

-
- -
-
-raylib.ColorLerp(color1: Color | list | tuple, color2: Color | list | tuple, factor: float) Color
-

Get color lerp interpolation between two colors, factor [0.0f..1.0f].

-
- -
-
-raylib.ColorNormalize(color: Color | list | tuple) Vector4
-

Get Color normalized as float [0..1].

-
- -
-
-raylib.ColorTint(color: Color | list | tuple, tint: Color | list | tuple) Color
-

Get color multiplied with another color.

-
- -
-
-raylib.ColorToHSV(color: Color | list | tuple) Vector3
-

Get HSV values for a Color, hue [0..360], saturation/value [0..1].

-
- -
-
-raylib.ColorToInt(color: Color | list | tuple) int
-

Get hexadecimal value for a Color (0xRRGGBBAA).

-
- -
-
-raylib.CompressData(data: bytes, dataSize: int, compDataSize: Any) bytes
-

Compress data (DEFLATE algorithm), memory must be MemFree().

-
- -
-
-raylib.ComputeCRC32(data: bytes, dataSize: int) int
-

Compute CRC32 hash code.

-
- -
-
-raylib.ComputeMD5(data: bytes, dataSize: int) Any
-

Compute MD5 hash code, returns static int[4] (16 bytes).

-
- -
-
-raylib.ComputeSHA1(data: bytes, dataSize: int) Any
-

Compute SHA1 hash code, returns static int[5] (20 bytes).

-
- -
-
-raylib.ConfigFlags
-
- -
-
-raylib.CreatePhysicsBodyCircle(pos: Vector2 | list | tuple, radius: float, density: float) Any
-

Creates a new circle physics body with generic parameters.

-
- -
-
-raylib.CreatePhysicsBodyPolygon(pos: Vector2 | list | tuple, radius: float, sides: int, density: float) Any
-

Creates a new polygon physics body with generic parameters.

-
- -
-
-raylib.CreatePhysicsBodyRectangle(pos: Vector2 | list | tuple, width: float, height: float, density: float) Any
-

Creates a new rectangle physics body with generic parameters.

-
- -
-
-raylib.CubemapLayout
-
- -
-
-raylib.DARKBLUE: Color
-
- -
-
-raylib.DARKBROWN: Color
-
- -
-
-raylib.DARKGRAY: Color
-
- -
-
-raylib.DARKGREEN: Color
-
- -
-
-raylib.DARKPURPLE: Color
-
- -
-
-raylib.DEFAULT: int
-
- -
-
-raylib.DROPDOWNBOX: int
-
- -
-
-raylib.DROPDOWN_ARROW_HIDDEN: int
-
- -
-
-raylib.DROPDOWN_ITEMS_SPACING: int
-
- -
-
-raylib.DROPDOWN_ROLL_UP: int
-
- -
-
-raylib.DecodeDataBase64(data: bytes, outputSize: Any) bytes
-

Decode Base64 string data, memory must be MemFree().

-
- -
-
-raylib.DecompressData(compData: bytes, compDataSize: int, dataSize: Any) bytes
-

Decompress data (DEFLATE algorithm), memory must be MemFree().

-
- -
-
-raylib.DestroyPhysicsBody(body: Any | list | tuple) None
-

Destroy a physics body.

-
- -
-
-raylib.DetachAudioMixedProcessor(processor: Any) None
-

Detach audio stream processor from the entire audio pipeline.

-
- -
-
-raylib.DetachAudioStreamProcessor(stream: AudioStream | list | tuple, processor: Any) None
-

Detach audio stream processor from stream.

-
- -
-
-raylib.DirectoryExists(dirPath: bytes) bool
-

Check if a directory path exists.

-
- -
-
-raylib.DisableCursor() None
-

Disables cursor (lock cursor).

-
- -
-
-raylib.DisableEventWaiting() None
-

Disable waiting for events on EndDrawing(), automatic events polling.

-
- -
-
-raylib.DrawBillboard(camera: Camera3D | list | tuple, texture: Texture | list | tuple, position: Vector3 | list | tuple, scale: float, tint: Color | list | tuple) None
-

Draw a billboard texture.

-
- -
-
-raylib.DrawBillboardPro(camera: Camera3D | list | tuple, texture: Texture | list | tuple, source: Rectangle | list | tuple, position: Vector3 | list | tuple, up: Vector3 | list | tuple, size: Vector2 | list | tuple, origin: Vector2 | list | tuple, rotation: float, tint: Color | list | tuple) None
-

Draw a billboard texture defined by source and rotation.

-
- -
-
-raylib.DrawBillboardRec(camera: Camera3D | list | tuple, texture: Texture | list | tuple, source: Rectangle | list | tuple, position: Vector3 | list | tuple, size: Vector2 | list | tuple, tint: Color | list | tuple) None
-

Draw a billboard texture defined by source.

-
- -
-
-raylib.DrawBoundingBox(box: BoundingBox | list | tuple, color: Color | list | tuple) None
-

Draw bounding box (wires).

-
- -
-
-raylib.DrawCapsule(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, radius: float, slices: int, rings: int, color: Color | list | tuple) None
-

Draw a capsule with the center of its sphere caps at startPos and endPos.

-
- -
-
-raylib.DrawCapsuleWires(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, radius: float, slices: int, rings: int, color: Color | list | tuple) None
-

Draw capsule wireframe with the center of its sphere caps at startPos and endPos.

-
- -
-
-raylib.DrawCircle(centerX: int, centerY: int, radius: float, color: Color | list | tuple) None
-

Draw a color-filled circle.

-
- -
-
-raylib.DrawCircle3D(center: Vector3 | list | tuple, radius: float, rotationAxis: Vector3 | list | tuple, rotationAngle: float, color: Color | list | tuple) None
-

Draw a circle in 3D world space.

-
- -
-
-raylib.DrawCircleGradient(centerX: int, centerY: int, radius: float, inner: Color | list | tuple, outer: Color | list | tuple) None
-

Draw a gradient-filled circle.

-
- -
-
-raylib.DrawCircleLines(centerX: int, centerY: int, radius: float, color: Color | list | tuple) None
-

Draw circle outline.

-
- -
-
-raylib.DrawCircleLinesV(center: Vector2 | list | tuple, radius: float, color: Color | list | tuple) None
-

Draw circle outline (Vector version).

-
- -
-
-raylib.DrawCircleSector(center: Vector2 | list | tuple, radius: float, startAngle: float, endAngle: float, segments: int, color: Color | list | tuple) None
-

Draw a piece of a circle.

-
- -
-
-raylib.DrawCircleSectorLines(center: Vector2 | list | tuple, radius: float, startAngle: float, endAngle: float, segments: int, color: Color | list | tuple) None
-

Draw circle sector outline.

-
- -
-
-raylib.DrawCircleV(center: Vector2 | list | tuple, radius: float, color: Color | list | tuple) None
-

Draw a color-filled circle (Vector version).

-
- -
-
-raylib.DrawCube(position: Vector3 | list | tuple, width: float, height: float, length: float, color: Color | list | tuple) None
-

Draw cube.

-
- -
-
-raylib.DrawCubeV(position: Vector3 | list | tuple, size: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw cube (Vector version).

-
- -
-
-raylib.DrawCubeWires(position: Vector3 | list | tuple, width: float, height: float, length: float, color: Color | list | tuple) None
-

Draw cube wires.

-
- -
-
-raylib.DrawCubeWiresV(position: Vector3 | list | tuple, size: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw cube wires (Vector version).

-
- -
-
-raylib.DrawCylinder(position: Vector3 | list | tuple, radiusTop: float, radiusBottom: float, height: float, slices: int, color: Color | list | tuple) None
-

Draw a cylinder/cone.

-
- -
-
-raylib.DrawCylinderEx(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, startRadius: float, endRadius: float, sides: int, color: Color | list | tuple) None
-

Draw a cylinder with base at startPos and top at endPos.

-
- -
-
-raylib.DrawCylinderWires(position: Vector3 | list | tuple, radiusTop: float, radiusBottom: float, height: float, slices: int, color: Color | list | tuple) None
-

Draw a cylinder/cone wires.

-
- -
-
-raylib.DrawCylinderWiresEx(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, startRadius: float, endRadius: float, sides: int, color: Color | list | tuple) None
-

Draw a cylinder wires with base at startPos and top at endPos.

-
- -
-
-raylib.DrawEllipse(centerX: int, centerY: int, radiusH: float, radiusV: float, color: Color | list | tuple) None
-

Draw ellipse.

-
- -
-
-raylib.DrawEllipseLines(centerX: int, centerY: int, radiusH: float, radiusV: float, color: Color | list | tuple) None
-

Draw ellipse outline.

-
- -
-
-raylib.DrawFPS(posX: int, posY: int) None
-

Draw current FPS.

-
- -
-
-raylib.DrawGrid(slices: int, spacing: float) None
-

Draw a grid (centered at (0, 0, 0)).

-
- -
-
-raylib.DrawLine(startPosX: int, startPosY: int, endPosX: int, endPosY: int, color: Color | list | tuple) None
-

Draw a line.

-
- -
-
-raylib.DrawLine3D(startPos: Vector3 | list | tuple, endPos: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw a line in 3D world space.

-
- -
-
-raylib.DrawLineBezier(startPos: Vector2 | list | tuple, endPos: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw line segment cubic-bezier in-out interpolation.

-
- -
-
-raylib.DrawLineEx(startPos: Vector2 | list | tuple, endPos: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw a line (using triangles/quads).

-
- -
-
-raylib.DrawLineStrip(points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw lines sequence (using gl lines).

-
- -
-
-raylib.DrawLineV(startPos: Vector2 | list | tuple, endPos: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a line (using gl lines).

-
- -
-
-raylib.DrawMesh(mesh: Mesh | list | tuple, material: Material | list | tuple, transform: Matrix | list | tuple) None
-

Draw a 3d mesh with material and transform.

-
- -
-
-raylib.DrawMeshInstanced(mesh: Mesh | list | tuple, material: Material | list | tuple, transforms: Any | list | tuple, instances: int) None
-

Draw multiple mesh instances with material and different transforms.

-
- -
-
-raylib.DrawModel(model: Model | list | tuple, position: Vector3 | list | tuple, scale: float, tint: Color | list | tuple) None
-

Draw a model (with texture if set).

-
- -
-
-raylib.DrawModelEx(model: Model | list | tuple, position: Vector3 | list | tuple, rotationAxis: Vector3 | list | tuple, rotationAngle: float, scale: Vector3 | list | tuple, tint: Color | list | tuple) None
-

Draw a model with extended parameters.

-
- -
-
-raylib.DrawModelPoints(model: Model | list | tuple, position: Vector3 | list | tuple, scale: float, tint: Color | list | tuple) None
-

Draw a model as points.

-
- -
-
-raylib.DrawModelPointsEx(model: Model | list | tuple, position: Vector3 | list | tuple, rotationAxis: Vector3 | list | tuple, rotationAngle: float, scale: Vector3 | list | tuple, tint: Color | list | tuple) None
-

Draw a model as points with extended parameters.

-
- -
-
-raylib.DrawModelWires(model: Model | list | tuple, position: Vector3 | list | tuple, scale: float, tint: Color | list | tuple) None
-

Draw a model wires (with texture if set).

-
- -
-
-raylib.DrawModelWiresEx(model: Model | list | tuple, position: Vector3 | list | tuple, rotationAxis: Vector3 | list | tuple, rotationAngle: float, scale: Vector3 | list | tuple, tint: Color | list | tuple) None
-

Draw a model wires (with texture if set) with extended parameters.

-
- -
-
-raylib.DrawPixel(posX: int, posY: int, color: Color | list | tuple) None
-

Draw a pixel using geometry [Can be slow, use with care].

-
- -
-
-raylib.DrawPixelV(position: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a pixel using geometry (Vector version) [Can be slow, use with care].

-
- -
-
-raylib.DrawPlane(centerPos: Vector3 | list | tuple, size: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a plane XZ.

-
- -
-
-raylib.DrawPoint3D(position: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw a point in 3D space, actually a small line.

-
- -
-
-raylib.DrawPoly(center: Vector2 | list | tuple, sides: int, radius: float, rotation: float, color: Color | list | tuple) None
-

Draw a regular polygon (Vector version).

-
- -
-
-raylib.DrawPolyLines(center: Vector2 | list | tuple, sides: int, radius: float, rotation: float, color: Color | list | tuple) None
-

Draw a polygon outline of n sides.

-
- -
-
-raylib.DrawPolyLinesEx(center: Vector2 | list | tuple, sides: int, radius: float, rotation: float, lineThick: float, color: Color | list | tuple) None
-

Draw a polygon outline of n sides with extended parameters.

-
- -
-
-raylib.DrawRay(ray: Ray | list | tuple, color: Color | list | tuple) None
-

Draw a ray line.

-
- -
-
-raylib.DrawRectangle(posX: int, posY: int, width: int, height: int, color: Color | list | tuple) None
-

Draw a color-filled rectangle.

-
- -
-
-raylib.DrawRectangleGradientEx(rec: Rectangle | list | tuple, topLeft: Color | list | tuple, bottomLeft: Color | list | tuple, topRight: Color | list | tuple, bottomRight: Color | list | tuple) None
-

Draw a gradient-filled rectangle with custom vertex colors.

-
- -
-
-raylib.DrawRectangleGradientH(posX: int, posY: int, width: int, height: int, left: Color | list | tuple, right: Color | list | tuple) None
-

Draw a horizontal-gradient-filled rectangle.

-
- -
-
-raylib.DrawRectangleGradientV(posX: int, posY: int, width: int, height: int, top: Color | list | tuple, bottom: Color | list | tuple) None
-

Draw a vertical-gradient-filled rectangle.

-
- -
-
-raylib.DrawRectangleLines(posX: int, posY: int, width: int, height: int, color: Color | list | tuple) None
-

Draw rectangle outline.

-
- -
-
-raylib.DrawRectangleLinesEx(rec: Rectangle | list | tuple, lineThick: float, color: Color | list | tuple) None
-

Draw rectangle outline with extended parameters.

-
- -
-
-raylib.DrawRectanglePro(rec: Rectangle | list | tuple, origin: Vector2 | list | tuple, rotation: float, color: Color | list | tuple) None
-

Draw a color-filled rectangle with pro parameters.

-
- -
-
-raylib.DrawRectangleRec(rec: Rectangle | list | tuple, color: Color | list | tuple) None
-

Draw a color-filled rectangle.

-
- -
-
-raylib.DrawRectangleRounded(rec: Rectangle | list | tuple, roundness: float, segments: int, color: Color | list | tuple) None
-

Draw rectangle with rounded edges.

-
- -
-
-raylib.DrawRectangleRoundedLines(rec: Rectangle | list | tuple, roundness: float, segments: int, color: Color | list | tuple) None
-

Draw rectangle lines with rounded edges.

-
- -
-
-raylib.DrawRectangleRoundedLinesEx(rec: Rectangle | list | tuple, roundness: float, segments: int, lineThick: float, color: Color | list | tuple) None
-

Draw rectangle with rounded edges outline.

-
- -
-
-raylib.DrawRectangleV(position: Vector2 | list | tuple, size: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a color-filled rectangle (Vector version).

-
- -
-
-raylib.DrawRing(center: Vector2 | list | tuple, innerRadius: float, outerRadius: float, startAngle: float, endAngle: float, segments: int, color: Color | list | tuple) None
-

Draw ring.

-
- -
-
-raylib.DrawRingLines(center: Vector2 | list | tuple, innerRadius: float, outerRadius: float, startAngle: float, endAngle: float, segments: int, color: Color | list | tuple) None
-

Draw ring outline.

-
- -
-
-raylib.DrawSphere(centerPos: Vector3 | list | tuple, radius: float, color: Color | list | tuple) None
-

Draw sphere.

-
- -
-
-raylib.DrawSphereEx(centerPos: Vector3 | list | tuple, radius: float, rings: int, slices: int, color: Color | list | tuple) None
-

Draw sphere with extended parameters.

-
- -
-
-raylib.DrawSphereWires(centerPos: Vector3 | list | tuple, radius: float, rings: int, slices: int, color: Color | list | tuple) None
-

Draw sphere wires.

-
- -
-
-raylib.DrawSplineBasis(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: B-Spline, minimum 4 points.

-
- -
-
-raylib.DrawSplineBezierCubic(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6…].

-
- -
-
-raylib.DrawSplineBezierQuadratic(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4…].

-
- -
-
-raylib.DrawSplineCatmullRom(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: Catmull-Rom, minimum 4 points.

-
- -
-
-raylib.DrawSplineLinear(points: Any | list | tuple, pointCount: int, thick: float, color: Color | list | tuple) None
-

Draw spline: Linear, minimum 2 points.

-
- -
-
-raylib.DrawSplineSegmentBasis(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple, p4: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: B-Spline, 4 points.

-
- -
-
-raylib.DrawSplineSegmentBezierCubic(p1: Vector2 | list | tuple, c2: Vector2 | list | tuple, c3: Vector2 | list | tuple, p4: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: Cubic Bezier, 2 points, 2 control points.

-
- -
-
-raylib.DrawSplineSegmentBezierQuadratic(p1: Vector2 | list | tuple, c2: Vector2 | list | tuple, p3: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: Quadratic Bezier, 2 points, 1 control point.

-
- -
-
-raylib.DrawSplineSegmentCatmullRom(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple, p4: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: Catmull-Rom, 4 points.

-
- -
-
-raylib.DrawSplineSegmentLinear(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, thick: float, color: Color | list | tuple) None
-

Draw spline segment: Linear, 2 points.

-
- -
-
-raylib.DrawText(text: bytes, posX: int, posY: int, fontSize: int, color: Color | list | tuple) None
-

Draw text (using default font).

-
- -
-
-raylib.DrawTextCodepoint(font: Font | list | tuple, codepoint: int, position: Vector2 | list | tuple, fontSize: float, tint: Color | list | tuple) None
-

Draw one character (codepoint).

-
- -
-
-raylib.DrawTextCodepoints(font: Font | list | tuple, codepoints: Any, codepointCount: int, position: Vector2 | list | tuple, fontSize: float, spacing: float, tint: Color | list | tuple) None
-

Draw multiple character (codepoint).

-
- -
-
-raylib.DrawTextEx(font: Font | list | tuple, text: bytes, position: Vector2 | list | tuple, fontSize: float, spacing: float, tint: Color | list | tuple) None
-

Draw text using font and additional parameters.

-
- -
-
-raylib.DrawTextPro(font: Font | list | tuple, text: bytes, position: Vector2 | list | tuple, origin: Vector2 | list | tuple, rotation: float, fontSize: float, spacing: float, tint: Color | list | tuple) None
-

Draw text using Font and pro parameters (rotation).

-
- -
-
-raylib.DrawTexture(texture: Texture | list | tuple, posX: int, posY: int, tint: Color | list | tuple) None
-

Draw a Texture2D.

-
- -
-
-raylib.DrawTextureEx(texture: Texture | list | tuple, position: Vector2 | list | tuple, rotation: float, scale: float, tint: Color | list | tuple) None
-

Draw a Texture2D with extended parameters.

-
- -
-
-raylib.DrawTextureNPatch(texture: Texture | list | tuple, nPatchInfo: NPatchInfo | list | tuple, dest: Rectangle | list | tuple, origin: Vector2 | list | tuple, rotation: float, tint: Color | list | tuple) None
-

Draws a texture (or part of it) that stretches or shrinks nicely.

-
- -
-
-raylib.DrawTexturePro(texture: Texture | list | tuple, source: Rectangle | list | tuple, dest: Rectangle | list | tuple, origin: Vector2 | list | tuple, rotation: float, tint: Color | list | tuple) None
-

Draw a part of a texture defined by a rectangle with ‘pro’ parameters.

-
- -
-
-raylib.DrawTextureRec(texture: Texture | list | tuple, source: Rectangle | list | tuple, position: Vector2 | list | tuple, tint: Color | list | tuple) None
-

Draw a part of a texture defined by a rectangle.

-
- -
-
-raylib.DrawTextureV(texture: Texture | list | tuple, position: Vector2 | list | tuple, tint: Color | list | tuple) None
-

Draw a Texture2D with position defined as Vector2.

-
- -
-
-raylib.DrawTriangle(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw a color-filled triangle (vertex in counter-clockwise order!).

-
- -
-
-raylib.DrawTriangle3D(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple, v3: Vector3 | list | tuple, color: Color | list | tuple) None
-

Draw a color-filled triangle (vertex in counter-clockwise order!).

-
- -
-
-raylib.DrawTriangleFan(points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle fan defined by points (first vertex is the center).

-
- -
-
-raylib.DrawTriangleLines(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw triangle outline (vertex in counter-clockwise order!).

-
- -
-
-raylib.DrawTriangleStrip(points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle strip defined by points.

-
- -
-
-raylib.DrawTriangleStrip3D(points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle strip defined by points.

-
- -
-
-raylib.EnableCursor() None
-

Enables cursor (unlock cursor).

-
- -
-
-raylib.EnableEventWaiting() None
-

Enable waiting for events on EndDrawing(), no automatic event polling.

-
- -
-
-raylib.EncodeDataBase64(data: bytes, dataSize: int, outputSize: Any) bytes
-

Encode data to Base64 string, memory must be MemFree().

-
- -
-
-raylib.EndBlendMode() None
-

End blending mode (reset to default: alpha blending).

-
- -
-
-raylib.EndDrawing() None
-

End canvas drawing and swap buffers (double buffering).

-
- -
-
-raylib.EndMode2D() None
-

Ends 2D mode with custom camera.

-
- -
-
-raylib.EndMode3D() None
-

Ends 3D mode and returns to default 2D orthographic mode.

-
- -
-
-raylib.EndScissorMode() None
-

End scissor mode.

-
- -
-
-raylib.EndShaderMode() None
-

End custom shader drawing (use default shader).

-
- -
-
-raylib.EndTextureMode() None
-

Ends drawing to render texture.

-
- -
-
-raylib.EndVrStereoMode() None
-

End stereo rendering (requires VR simulator).

-
- -
-
-raylib.ExportAutomationEventList(list_0: AutomationEventList | list | tuple, fileName: bytes) bool
-

Export automation events list as text file.

-
- -
-
-raylib.ExportDataAsCode(data: bytes, dataSize: int, fileName: bytes) bool
-

Export data to code (.h), returns true on success.

-
- -
-
-raylib.ExportFontAsCode(font: Font | list | tuple, fileName: bytes) bool
-

Export font as code file, returns true on success.

-
- -
-
-raylib.ExportImage(image: Image | list | tuple, fileName: bytes) bool
-

Export image data to file, returns true on success.

-
- -
-
-raylib.ExportImageAsCode(image: Image | list | tuple, fileName: bytes) bool
-

Export image as code file defining an array of bytes, returns true on success.

-
- -
-
-raylib.ExportImageToMemory(image: Image | list | tuple, fileType: bytes, fileSize: Any) bytes
-

Export image to memory buffer.

-
- -
-
-raylib.ExportMesh(mesh: Mesh | list | tuple, fileName: bytes) bool
-

Export mesh data to file, returns true on success.

-
- -
-
-raylib.ExportMeshAsCode(mesh: Mesh | list | tuple, fileName: bytes) bool
-

Export mesh as code file (.h) defining multiple arrays of vertex attributes.

-
- -
-
-raylib.ExportWave(wave: Wave | list | tuple, fileName: bytes) bool
-

Export wave data to file, returns true on success.

-
- -
-
-raylib.ExportWaveAsCode(wave: Wave | list | tuple, fileName: bytes) bool
-

Export wave sample data to code (.h), returns true on success.

-
- -
-
-raylib.FLAG_BORDERLESS_WINDOWED_MODE: int
-
- -
-
-raylib.FLAG_FULLSCREEN_MODE: int
-
- -
-
-raylib.FLAG_INTERLACED_HINT: int
-
- -
-
-raylib.FLAG_MSAA_4X_HINT: int
-
- -
-
-raylib.FLAG_VSYNC_HINT: int
-
- -
-
-raylib.FLAG_WINDOW_ALWAYS_RUN: int
-
- -
-
-raylib.FLAG_WINDOW_HIDDEN: int
-
- -
-
-raylib.FLAG_WINDOW_HIGHDPI: int
-
- -
-
-raylib.FLAG_WINDOW_MAXIMIZED: int
-
- -
-
-raylib.FLAG_WINDOW_MINIMIZED: int
-
- -
-
-raylib.FLAG_WINDOW_MOUSE_PASSTHROUGH: int
-
- -
-
-raylib.FLAG_WINDOW_RESIZABLE: int
-
- -
-
-raylib.FLAG_WINDOW_TOPMOST: int
-
- -
-
-raylib.FLAG_WINDOW_TRANSPARENT: int
-
- -
-
-raylib.FLAG_WINDOW_UNDECORATED: int
-
- -
-
-raylib.FLAG_WINDOW_UNFOCUSED: int
-
- -
-
-raylib.FONT_BITMAP: int
-
- -
-
-raylib.FONT_DEFAULT: int
-
- -
-
-raylib.FONT_SDF: int
-
- -
-
-raylib.Fade(color: Color | list | tuple, alpha: float) Color
-

Get color with alpha applied, alpha goes from 0.0f to 1.0f.

-
- -
-
-raylib.FileExists(fileName: bytes) bool
-

Check if file exists.

-
- -
-
-class raylib.FilePathList
-
-
-capacity: int
-
- -
-
-count: int
-
- -
-
-paths: list[bytes]
-
- -
- -
-
-raylib.FloatEquals(x: float, y: float) int
-

.

-
- -
-
-class raylib.Font
-
-
-baseSize: int
-
- -
-
-glyphCount: int
-
- -
-
-glyphPadding: int
-
- -
-
-glyphs: Any
-
- -
-
-recs: Any
-
- -
-
-texture: Texture
-
- -
- -
-
-raylib.FontType
-
- -
-
-raylib.GAMEPAD_AXIS_LEFT_TRIGGER: int
-
- -
-
-raylib.GAMEPAD_AXIS_LEFT_X: int
-
- -
-
-raylib.GAMEPAD_AXIS_LEFT_Y: int
-
- -
-
-raylib.GAMEPAD_AXIS_RIGHT_TRIGGER: int
-
- -
-
-raylib.GAMEPAD_AXIS_RIGHT_X: int
-
- -
-
-raylib.GAMEPAD_AXIS_RIGHT_Y: int
-
- -
-
-raylib.GAMEPAD_BUTTON_LEFT_FACE_DOWN: int
-
- -
-
-raylib.GAMEPAD_BUTTON_LEFT_FACE_LEFT: int
-
- -
-
-raylib.GAMEPAD_BUTTON_LEFT_FACE_RIGHT: int
-
- -
-
-raylib.GAMEPAD_BUTTON_LEFT_FACE_UP: int
-
- -
-
-raylib.GAMEPAD_BUTTON_LEFT_THUMB: int
-
- -
-
-raylib.GAMEPAD_BUTTON_LEFT_TRIGGER_1: int
-
- -
-
-raylib.GAMEPAD_BUTTON_LEFT_TRIGGER_2: int
-
- -
-
-raylib.GAMEPAD_BUTTON_MIDDLE: int
-
- -
-
-raylib.GAMEPAD_BUTTON_MIDDLE_LEFT: int
-
- -
-
-raylib.GAMEPAD_BUTTON_MIDDLE_RIGHT: int
-
- -
-
-raylib.GAMEPAD_BUTTON_RIGHT_FACE_DOWN: int
-
- -
-
-raylib.GAMEPAD_BUTTON_RIGHT_FACE_LEFT: int
-
- -
-
-raylib.GAMEPAD_BUTTON_RIGHT_FACE_RIGHT: int
-
- -
-
-raylib.GAMEPAD_BUTTON_RIGHT_FACE_UP: int
-
- -
-
-raylib.GAMEPAD_BUTTON_RIGHT_THUMB: int
-
- -
-
-raylib.GAMEPAD_BUTTON_RIGHT_TRIGGER_1: int
-
- -
-
-raylib.GAMEPAD_BUTTON_RIGHT_TRIGGER_2: int
-
- -
-
-raylib.GAMEPAD_BUTTON_UNKNOWN: int
-
- -
-
-raylib.GESTURE_DOUBLETAP: int
-
- -
-
-raylib.GESTURE_DRAG: int
-
- -
-
-raylib.GESTURE_HOLD: int
-
- -
-
-raylib.GESTURE_NONE: int
-
- -
-
-raylib.GESTURE_PINCH_IN: int
-
- -
-
-raylib.GESTURE_PINCH_OUT: int
-
- -
-
-raylib.GESTURE_SWIPE_DOWN: int
-
- -
-
-raylib.GESTURE_SWIPE_LEFT: int
-
- -
-
-raylib.GESTURE_SWIPE_RIGHT: int
-
- -
-
-raylib.GESTURE_SWIPE_UP: int
-
- -
-
-raylib.GESTURE_TAP: int
-
- -
-
-class raylib.GLFWallocator
-
-
-allocate: Any
-
- -
-
-deallocate: Any
-
- -
-
-reallocate: Any
-
- -
-
-user: Any
-
- -
- -
-
-class raylib.GLFWcursor
-
- -
-
-class raylib.GLFWgamepadstate
-
-
-axes: list
-
- -
-
-buttons: bytes
-
- -
- -
-
-class raylib.GLFWgammaramp
-
-
-blue: Any
-
- -
-
-green: Any
-
- -
-
-red: Any
-
- -
-
-size: int
-
- -
- -
-
-class raylib.GLFWimage
-
-
-height: int
-
- -
-
-pixels: bytes
-
- -
-
-width: int
-
- -
- -
-
-class raylib.GLFWmonitor
-
- -
-
-class raylib.GLFWvidmode
-
-
-blueBits: int
-
- -
-
-greenBits: int
-
- -
-
-height: int
-
- -
-
-redBits: int
-
- -
-
-refreshRate: int
-
- -
-
-width: int
-
- -
- -
-
-class raylib.GLFWwindow
-
- -
-
-raylib.GOLD: Color
-
- -
-
-raylib.GRAY: Color
-
- -
-
-raylib.GREEN: Color
-
- -
-
-raylib.GROUP_PADDING: int
-
- -
-
-raylib.GamepadAxis
-
- -
-
-raylib.GamepadButton
-
- -
-
-raylib.GenImageCellular(width: int, height: int, tileSize: int) Image
-

Generate image: cellular algorithm, bigger tileSize means bigger cells.

-
- -
-
-raylib.GenImageChecked(width: int, height: int, checksX: int, checksY: int, col1: Color | list | tuple, col2: Color | list | tuple) Image
-

Generate image: checked.

-
- -
-
-raylib.GenImageColor(width: int, height: int, color: Color | list | tuple) Image
-

Generate image: plain color.

-
- -
-
-raylib.GenImageFontAtlas(glyphs: Any | list | tuple, glyphRecs: Any | list | tuple, glyphCount: int, fontSize: int, padding: int, packMethod: int) Image
-

Generate image font atlas using chars info.

-
- -
-
-raylib.GenImageGradientLinear(width: int, height: int, direction: int, start: Color | list | tuple, end: Color | list | tuple) Image
-

Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient.

-
- -
-
-raylib.GenImageGradientRadial(width: int, height: int, density: float, inner: Color | list | tuple, outer: Color | list | tuple) Image
-

Generate image: radial gradient.

-
- -
-
-raylib.GenImageGradientSquare(width: int, height: int, density: float, inner: Color | list | tuple, outer: Color | list | tuple) Image
-

Generate image: square gradient.

-
- -
-
-raylib.GenImagePerlinNoise(width: int, height: int, offsetX: int, offsetY: int, scale: float) Image
-

Generate image: perlin noise.

-
- -
-
-raylib.GenImageText(width: int, height: int, text: bytes) Image
-

Generate image: grayscale image from text data.

-
- -
-
-raylib.GenImageWhiteNoise(width: int, height: int, factor: float) Image
-

Generate image: white noise.

-
- -
-
-raylib.GenMeshCone(radius: float, height: float, slices: int) Mesh
-

Generate cone/pyramid mesh.

-
- -
-
-raylib.GenMeshCube(width: float, height: float, length: float) Mesh
-

Generate cuboid mesh.

-
- -
-
-raylib.GenMeshCubicmap(cubicmap: Image | list | tuple, cubeSize: Vector3 | list | tuple) Mesh
-

Generate cubes-based map mesh from image data.

-
- -
-
-raylib.GenMeshCylinder(radius: float, height: float, slices: int) Mesh
-

Generate cylinder mesh.

-
- -
-
-raylib.GenMeshHeightmap(heightmap: Image | list | tuple, size: Vector3 | list | tuple) Mesh
-

Generate heightmap mesh from image data.

-
- -
-
-raylib.GenMeshHemiSphere(radius: float, rings: int, slices: int) Mesh
-

Generate half-sphere mesh (no bottom cap).

-
- -
-
-raylib.GenMeshKnot(radius: float, size: float, radSeg: int, sides: int) Mesh
-

Generate trefoil knot mesh.

-
- -
-
-raylib.GenMeshPlane(width: float, length: float, resX: int, resZ: int) Mesh
-

Generate plane mesh (with subdivisions).

-
- -
-
-raylib.GenMeshPoly(sides: int, radius: float) Mesh
-

Generate polygonal mesh.

-
- -
-
-raylib.GenMeshSphere(radius: float, rings: int, slices: int) Mesh
-

Generate sphere mesh (standard sphere).

-
- -
-
-raylib.GenMeshTangents(mesh: Any | list | tuple) None
-

Compute mesh tangents.

-
- -
-
-raylib.GenMeshTorus(radius: float, size: float, radSeg: int, sides: int) Mesh
-

Generate torus mesh.

-
- -
-
-raylib.GenTextureMipmaps(texture: Any | list | tuple) None
-

Generate GPU mipmaps for a texture.

-
- -
-
-raylib.Gesture
-
- -
-
-raylib.GetApplicationDirectory() bytes
-

Get the directory of the running application (uses static string).

-
- -
-
-raylib.GetCameraMatrix(camera: Camera3D | list | tuple) Matrix
-

Get camera transform matrix (view matrix).

-
- -
-
-raylib.GetCameraMatrix2D(camera: Camera2D | list | tuple) Matrix
-

Get camera 2d transform matrix.

-
- -
-
-raylib.GetCharPressed() int
-

Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty.

-
- -
-
-raylib.GetClipboardImage() Image
-

Get clipboard image content.

-
- -
-
-raylib.GetClipboardText() bytes
-

Get clipboard text content.

-
- -
-
-raylib.GetCodepoint(text: bytes, codepointSize: Any) int
-

Get next codepoint in a UTF-8 encoded string, 0x3f(‘?’) is returned on failure.

-
- -
-
-raylib.GetCodepointCount(text: bytes) int
-

Get total number of codepoints in a UTF-8 encoded string.

-
- -
-
-raylib.GetCodepointNext(text: bytes, codepointSize: Any) int
-

Get next codepoint in a UTF-8 encoded string, 0x3f(‘?’) is returned on failure.

-
- -
-
-raylib.GetCodepointPrevious(text: bytes, codepointSize: Any) int
-

Get previous codepoint in a UTF-8 encoded string, 0x3f(‘?’) is returned on failure.

-
- -
-
-raylib.GetCollisionRec(rec1: Rectangle | list | tuple, rec2: Rectangle | list | tuple) Rectangle
-

Get collision rectangle for two rectangles collision.

-
- -
-
-raylib.GetColor(hexValue: int) Color
-

Get Color structure from hexadecimal value.

-
- -
-
-raylib.GetCurrentMonitor() int
-

Get current monitor where window is placed.

-
- -
-
-raylib.GetDirectoryPath(filePath: bytes) bytes
-

Get full path for a given fileName with path (uses static string).

-
- -
-
-raylib.GetFPS() int
-

Get current FPS.

-
- -
-
-raylib.GetFileExtension(fileName: bytes) bytes
-

Get pointer to extension for a filename string (includes dot: ‘.png’).

-
- -
-
-raylib.GetFileLength(fileName: bytes) int
-

Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h).

-
- -
-
-raylib.GetFileModTime(fileName: bytes) int
-

Get file modification time (last write time).

-
- -
-
-raylib.GetFileName(filePath: bytes) bytes
-

Get pointer to filename for a path string.

-
- -
-
-raylib.GetFileNameWithoutExt(filePath: bytes) bytes
-

Get filename string without extension (uses static string).

-
- -
-
-raylib.GetFontDefault() Font
-

Get the default Font.

-
- -
-
-raylib.GetFrameTime() float
-

Get time in seconds for last frame drawn (delta time).

-
- -
-
-raylib.GetGamepadAxisCount(gamepad: int) int
-

Get gamepad axis count for a gamepad.

-
- -
-
-raylib.GetGamepadAxisMovement(gamepad: int, axis: int) float
-

Get axis movement value for a gamepad axis.

-
- -
-
-raylib.GetGamepadButtonPressed() int
-

Get the last gamepad button pressed.

-
- -
-
-raylib.GetGamepadName(gamepad: int) bytes
-

Get gamepad internal name id.

-
- -
-
-raylib.GetGestureDetected() int
-

Get latest detected gesture.

-
- -
-
-raylib.GetGestureDragAngle() float
-

Get gesture drag angle.

-
- -
-
-raylib.GetGestureDragVector() Vector2
-

Get gesture drag vector.

-
- -
-
-raylib.GetGestureHoldDuration() float
-

Get gesture hold time in seconds.

-
- -
-
-raylib.GetGesturePinchAngle() float
-

Get gesture pinch angle.

-
- -
-
-raylib.GetGesturePinchVector() Vector2
-

Get gesture pinch delta.

-
- -
-
-raylib.GetGlyphAtlasRec(font: Font | list | tuple, codepoint: int) Rectangle
-

Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to ‘?’ if not found.

-
- -
-
-raylib.GetGlyphIndex(font: Font | list | tuple, codepoint: int) int
-

Get glyph index position in font for a codepoint (unicode character), fallback to ‘?’ if not found.

-
- -
-
-raylib.GetGlyphInfo(font: Font | list | tuple, codepoint: int) GlyphInfo
-

Get glyph font info data for a codepoint (unicode character), fallback to ‘?’ if not found.

-
- -
-
-raylib.GetImageAlphaBorder(image: Image | list | tuple, threshold: float) Rectangle
-

Get image alpha border rectangle.

-
- -
-
-raylib.GetImageColor(image: Image | list | tuple, x: int, y: int) Color
-

Get image pixel color at (x, y) position.

-
- -
-
-raylib.GetKeyPressed() int
-

Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty.

-
- -
-
-raylib.GetMasterVolume() float
-

Get master volume (listener).

-
- -
-
-raylib.GetMeshBoundingBox(mesh: Mesh | list | tuple) BoundingBox
-

Compute mesh bounding box limits.

-
- -
-
-raylib.GetModelBoundingBox(model: Model | list | tuple) BoundingBox
-

Compute model bounding box limits (considers all meshes).

-
- -
-
-raylib.GetMonitorCount() int
-

Get number of connected monitors.

-
- -
-
-raylib.GetMonitorHeight(monitor: int) int
-

Get specified monitor height (current video mode used by monitor).

-
- -
-
-raylib.GetMonitorName(monitor: int) bytes
-

Get the human-readable, UTF-8 encoded name of the specified monitor.

-
- -
-
-raylib.GetMonitorPhysicalHeight(monitor: int) int
-

Get specified monitor physical height in millimetres.

-
- -
-
-raylib.GetMonitorPhysicalWidth(monitor: int) int
-

Get specified monitor physical width in millimetres.

-
- -
-
-raylib.GetMonitorPosition(monitor: int) Vector2
-

Get specified monitor position.

-
- -
-
-raylib.GetMonitorRefreshRate(monitor: int) int
-

Get specified monitor refresh rate.

-
- -
-
-raylib.GetMonitorWidth(monitor: int) int
-

Get specified monitor width (current video mode used by monitor).

-
- -
-
-raylib.GetMouseDelta() Vector2
-

Get mouse delta between frames.

-
- -
-
-raylib.GetMousePosition() Vector2
-

Get mouse position XY.

-
- -
-
-raylib.GetMouseWheelMove() float
-

Get mouse wheel movement for X or Y, whichever is larger.

-
- -
-
-raylib.GetMouseWheelMoveV() Vector2
-

Get mouse wheel movement for both X and Y.

-
- -
-
-raylib.GetMouseX() int
-

Get mouse position X.

-
- -
-
-raylib.GetMouseY() int
-

Get mouse position Y.

-
- -
-
-raylib.GetMusicTimeLength(music: Music | list | tuple) float
-

Get music time length (in seconds).

-
- -
-
-raylib.GetMusicTimePlayed(music: Music | list | tuple) float
-

Get current music time played (in seconds).

-
- -
-
-raylib.GetPhysicsBodiesCount() int
-

Returns the current amount of created physics bodies.

-
- -
-
-raylib.GetPhysicsBody(index: int) Any
-

Returns a physics body of the bodies pool at a specific index.

-
- -
-
-raylib.GetPhysicsShapeType(index: int) int
-

Returns the physics body shape type (PHYSICS_CIRCLE or PHYSICS_POLYGON).

-
- -
-
-raylib.GetPhysicsShapeVertex(body: Any | list | tuple, vertex: int) Vector2
-

Returns transformed position of a body shape (body position + vertex transformed position).

-
- -
-
-raylib.GetPhysicsShapeVerticesCount(index: int) int
-

Returns the amount of vertices of a physics body shape.

-
- -
-
-raylib.GetPixelColor(srcPtr: Any, format: int) Color
-

Get Color from a source pixel pointer of certain format.

-
- -
-
-raylib.GetPixelDataSize(width: int, height: int, format: int) int
-

Get pixel data size in bytes for certain format.

-
- -
-
-raylib.GetPrevDirectoryPath(dirPath: bytes) bytes
-

Get previous directory path for a given path (uses static string).

-
- -
-
-raylib.GetRandomValue(min_0: int, max_1: int) int
-

Get a random value between min and max (both included).

-
- -
-
-raylib.GetRayCollisionBox(ray: Ray | list | tuple, box: BoundingBox | list | tuple) RayCollision
-

Get collision info between ray and box.

-
- -
-
-raylib.GetRayCollisionMesh(ray: Ray | list | tuple, mesh: Mesh | list | tuple, transform: Matrix | list | tuple) RayCollision
-

Get collision info between ray and mesh.

-
- -
-
-raylib.GetRayCollisionQuad(ray: Ray | list | tuple, p1: Vector3 | list | tuple, p2: Vector3 | list | tuple, p3: Vector3 | list | tuple, p4: Vector3 | list | tuple) RayCollision
-

Get collision info between ray and quad.

-
- -
-
-raylib.GetRayCollisionSphere(ray: Ray | list | tuple, center: Vector3 | list | tuple, radius: float) RayCollision
-

Get collision info between ray and sphere.

-
- -
-
-raylib.GetRayCollisionTriangle(ray: Ray | list | tuple, p1: Vector3 | list | tuple, p2: Vector3 | list | tuple, p3: Vector3 | list | tuple) RayCollision
-

Get collision info between ray and triangle.

-
- -
-
-raylib.GetRenderHeight() int
-

Get current render height (it considers HiDPI).

-
- -
-
-raylib.GetRenderWidth() int
-

Get current render width (it considers HiDPI).

-
- -
-
-raylib.GetScreenHeight() int
-

Get current screen height.

-
- -
-
-raylib.GetScreenToWorld2D(position: Vector2 | list | tuple, camera: Camera2D | list | tuple) Vector2
-

Get the world space position for a 2d camera screen space position.

-
- -
-
-raylib.GetScreenToWorldRay(position: Vector2 | list | tuple, camera: Camera3D | list | tuple) Ray
-

Get a ray trace from screen position (i.e mouse).

-
- -
-
-raylib.GetScreenToWorldRayEx(position: Vector2 | list | tuple, camera: Camera3D | list | tuple, width: int, height: int) Ray
-

Get a ray trace from screen position (i.e mouse) in a viewport.

-
- -
-
-raylib.GetScreenWidth() int
-

Get current screen width.

-
- -
-
-raylib.GetShaderLocation(shader: Shader | list | tuple, uniformName: bytes) int
-

Get shader uniform location.

-
- -
-
-raylib.GetShaderLocationAttrib(shader: Shader | list | tuple, attribName: bytes) int
-

Get shader attribute location.

-
- -
-
-raylib.GetShapesTexture() Texture
-

Get texture that is used for shapes drawing.

-
- -
-
-raylib.GetShapesTextureRectangle() Rectangle
-

Get texture source rectangle that is used for shapes drawing.

-
- -
-
-raylib.GetSplinePointBasis(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple, p4: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: B-Spline.

-
- -
-
-raylib.GetSplinePointBezierCubic(p1: Vector2 | list | tuple, c2: Vector2 | list | tuple, c3: Vector2 | list | tuple, p4: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: Cubic Bezier.

-
- -
-
-raylib.GetSplinePointBezierQuad(p1: Vector2 | list | tuple, c2: Vector2 | list | tuple, p3: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: Quadratic Bezier.

-
- -
-
-raylib.GetSplinePointCatmullRom(p1: Vector2 | list | tuple, p2: Vector2 | list | tuple, p3: Vector2 | list | tuple, p4: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: Catmull-Rom.

-
- -
-
-raylib.GetSplinePointLinear(startPos: Vector2 | list | tuple, endPos: Vector2 | list | tuple, t: float) Vector2
-

Get (evaluate) spline point: Linear.

-
- -
-
-raylib.GetTime() float
-

Get elapsed time in seconds since InitWindow().

-
- -
-
-raylib.GetTouchPointCount() int
-

Get number of touch points.

-
- -
-
-raylib.GetTouchPointId(index: int) int
-

Get touch point identifier for given index.

-
- -
-
-raylib.GetTouchPosition(index: int) Vector2
-

Get touch position XY for a touch point index (relative to screen size).

-
- -
-
-raylib.GetTouchX() int
-

Get touch position X for touch point 0 (relative to screen size).

-
- -
-
-raylib.GetTouchY() int
-

Get touch position Y for touch point 0 (relative to screen size).

-
- -
-
-raylib.GetWindowHandle() Any
-

Get native window handle.

-
- -
-
-raylib.GetWindowPosition() Vector2
-

Get window position XY on monitor.

-
- -
-
-raylib.GetWindowScaleDPI() Vector2
-

Get window scale DPI factor.

-
- -
-
-raylib.GetWorkingDirectory() bytes
-

Get current working directory (uses static string).

-
- -
-
-raylib.GetWorldToScreen(position: Vector3 | list | tuple, camera: Camera3D | list | tuple) Vector2
-

Get the screen space position for a 3d world space position.

-
- -
-
-raylib.GetWorldToScreen2D(position: Vector2 | list | tuple, camera: Camera2D | list | tuple) Vector2
-

Get the screen space position for a 2d camera world space position.

-
- -
-
-raylib.GetWorldToScreenEx(position: Vector3 | list | tuple, camera: Camera3D | list | tuple, width: int, height: int) Vector2
-

Get size position for a 3d world space position.

-
- -
-
-class raylib.GlyphInfo
-
-
-advanceX: int
-
- -
-
-image: Image
-
- -
-
-offsetX: int
-
- -
-
-offsetY: int
-
- -
-
-value: int
-
- -
- -
-
-raylib.GuiButton(bounds: Rectangle | list | tuple, text: bytes) int
-

Button control, returns true when clicked.

-
- -
-
-raylib.GuiCheckBox(bounds: Rectangle | list | tuple, text: bytes, checked: Any) int
-

Check Box control, returns true when active.

-
- -
-
-raylib.GuiCheckBoxProperty
-
- -
-
-raylib.GuiColorBarAlpha(bounds: Rectangle | list | tuple, text: bytes, alpha: Any) int
-

Color Bar Alpha control.

-
- -
-
-raylib.GuiColorBarHue(bounds: Rectangle | list | tuple, text: bytes, value: Any) int
-

Color Bar Hue control.

-
- -
-
-raylib.GuiColorPanel(bounds: Rectangle | list | tuple, text: bytes, color: Any | list | tuple) int
-

Color Panel control.

-
- -
-
-raylib.GuiColorPanelHSV(bounds: Rectangle | list | tuple, text: bytes, colorHsv: Any | list | tuple) int
-

Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV().

-
- -
-
-raylib.GuiColorPicker(bounds: Rectangle | list | tuple, text: bytes, color: Any | list | tuple) int
-

Color Picker control (multiple color controls).

-
- -
-
-raylib.GuiColorPickerHSV(bounds: Rectangle | list | tuple, text: bytes, colorHsv: Any | list | tuple) int
-

Color Picker control that avoids conversion to RGB on each call (multiple color controls).

-
- -
-
-raylib.GuiColorPickerProperty
-
- -
-
-raylib.GuiComboBox(bounds: Rectangle | list | tuple, text: bytes, active: Any) int
-

Combo Box control.

-
- -
-
-raylib.GuiComboBoxProperty
-
- -
-
-raylib.GuiControl
-
- -
-
-raylib.GuiControlProperty
-
- -
-
-raylib.GuiDefaultProperty
-
- -
-
-raylib.GuiDisable() None
-

Disable gui controls (global state).

-
- -
-
-raylib.GuiDisableTooltip() None
-

Disable gui tooltips (global state).

-
- -
-
-raylib.GuiDrawIcon(iconId: int, posX: int, posY: int, pixelSize: int, color: Color | list | tuple) None
-

Draw icon using pixel size at specified position.

-
- -
-
-raylib.GuiDropdownBox(bounds: Rectangle | list | tuple, text: bytes, active: Any, editMode: bool) int
-

Dropdown Box control.

-
- -
-
-raylib.GuiDropdownBoxProperty
-
- -
-
-raylib.GuiDummyRec(bounds: Rectangle | list | tuple, text: bytes) int
-

Dummy control for placeholders.

-
- -
-
-raylib.GuiEnable() None
-

Enable gui controls (global state).

-
- -
-
-raylib.GuiEnableTooltip() None
-

Enable gui tooltips (global state).

-
- -
-
-raylib.GuiGetFont() Font
-

Get gui custom font (global state).

-
- -
-
-raylib.GuiGetIcons() Any
-

Get raygui icons data pointer.

-
- -
-
-raylib.GuiGetState() int
-

Get gui state (global state).

-
- -
-
-raylib.GuiGetStyle(control: int, property: int) int
-

Get one style property.

-
- -
-
-raylib.GuiGrid(bounds: Rectangle | list | tuple, text: bytes, spacing: float, subdivs: int, mouseCell: Any | list | tuple) int
-

Grid control.

-
- -
-
-raylib.GuiGroupBox(bounds: Rectangle | list | tuple, text: bytes) int
-

Group Box control with text name.

-
- -
-
-raylib.GuiIconName
-
- -
-
-raylib.GuiIconText(iconId: int, text: bytes) bytes
-

Get text with icon id prepended (if supported).

-
- -
-
-raylib.GuiIsLocked() bool
-

Check if gui is locked (global state).

-
- -
-
-raylib.GuiLabel(bounds: Rectangle | list | tuple, text: bytes) int
-

Label control.

-
- -
-
-raylib.GuiLabelButton(bounds: Rectangle | list | tuple, text: bytes) int
-

Label button control, returns true when clicked.

-
- -
-
-raylib.GuiLine(bounds: Rectangle | list | tuple, text: bytes) int
-

Line separator control, could contain text.

-
- -
-
-raylib.GuiListView(bounds: Rectangle | list | tuple, text: bytes, scrollIndex: Any, active: Any) int
-

List View control.

-
- -
-
-raylib.GuiListViewEx(bounds: Rectangle | list | tuple, text: list[bytes], count: int, scrollIndex: Any, active: Any, focus: Any) int
-

List View with extended parameters.

-
- -
-
-raylib.GuiListViewProperty
-
- -
-
-raylib.GuiLoadIcons(fileName: bytes, loadIconsName: bool) list[bytes]
-

Load raygui icons file (.rgi) into internal icons data.

-
- -
-
-raylib.GuiLoadStyle(fileName: bytes) None
-

Load style file over global style variable (.rgs).

-
- -
-
-raylib.GuiLoadStyleDefault() None
-

Load style default over global style.

-
- -
-
-raylib.GuiLock() None
-

Lock gui controls (global state).

-
- -
-
-raylib.GuiMessageBox(bounds: Rectangle | list | tuple, title: bytes, message: bytes, buttons: bytes) int
-

Message Box control, displays a message.

-
- -
-
-raylib.GuiPanel(bounds: Rectangle | list | tuple, text: bytes) int
-

Panel control, useful to group controls.

-
- -
-
-raylib.GuiProgressBar(bounds: Rectangle | list | tuple, textLeft: bytes, textRight: bytes, value: Any, minValue: float, maxValue: float) int
-

Progress Bar control.

-
- -
-
-raylib.GuiProgressBarProperty
-
- -
-
-raylib.GuiScrollBarProperty
-
- -
-
-raylib.GuiScrollPanel(bounds: Rectangle | list | tuple, text: bytes, content: Rectangle | list | tuple, scroll: Any | list | tuple, view: Any | list | tuple) int
-

Scroll Panel control.

-
- -
-
-raylib.GuiSetAlpha(alpha: float) None
-

Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f.

-
- -
-
-raylib.GuiSetFont(font: Font | list | tuple) None
-

Set gui custom font (global state).

-
- -
-
-raylib.GuiSetIconScale(scale: int) None
-

Set default icon drawing size.

-
- -
-
-raylib.GuiSetState(state: int) None
-

Set gui state (global state).

-
- -
-
-raylib.GuiSetStyle(control: int, property: int, value: int) None
-

Set one style property.

-
- -
-
-raylib.GuiSetTooltip(tooltip: bytes) None
-

Set tooltip string.

-
- -
-
-raylib.GuiSlider(bounds: Rectangle | list | tuple, textLeft: bytes, textRight: bytes, value: Any, minValue: float, maxValue: float) int
-

Slider control.

-
- -
-
-raylib.GuiSliderBar(bounds: Rectangle | list | tuple, textLeft: bytes, textRight: bytes, value: Any, minValue: float, maxValue: float) int
-

Slider Bar control.

-
- -
-
-raylib.GuiSliderProperty
-
- -
-
-raylib.GuiSpinner(bounds: Rectangle | list | tuple, text: bytes, value: Any, minValue: int, maxValue: int, editMode: bool) int
-

Spinner control.

-
- -
-
-raylib.GuiSpinnerProperty
-
- -
-
-raylib.GuiState
-
- -
-
-raylib.GuiStatusBar(bounds: Rectangle | list | tuple, text: bytes) int
-

Status Bar control, shows info text.

-
- -
-
-class raylib.GuiStyleProp
-
-
-controlId: int
-
- -
-
-propertyId: int
-
- -
-
-propertyValue: int
-
- -
- -
-
-raylib.GuiTabBar(bounds: Rectangle | list | tuple, text: list[bytes], count: int, active: Any) int
-

Tab Bar control, returns TAB to be closed or -1.

-
- -
-
-raylib.GuiTextAlignment
-
- -
-
-raylib.GuiTextAlignmentVertical
-
- -
-
-raylib.GuiTextBox(bounds: Rectangle | list | tuple, text: bytes, textSize: int, editMode: bool) int
-

Text Box control, updates input text.

-
- -
-
-raylib.GuiTextBoxProperty
-
- -
-
-raylib.GuiTextInputBox(bounds: Rectangle | list | tuple, title: bytes, message: bytes, buttons: bytes, text: bytes, textMaxSize: int, secretViewActive: Any) int
-

Text Input Box control, ask for text, supports secret.

-
- -
-
-raylib.GuiTextWrapMode
-
- -
-
-raylib.GuiToggle(bounds: Rectangle | list | tuple, text: bytes, active: Any) int
-

Toggle Button control.

-
- -
-
-raylib.GuiToggleGroup(bounds: Rectangle | list | tuple, text: bytes, active: Any) int
-

Toggle Group control.

-
- -
-
-raylib.GuiToggleProperty
-
- -
-
-raylib.GuiToggleSlider(bounds: Rectangle | list | tuple, text: bytes, active: Any) int
-

Toggle Slider control.

-
- -
-
-raylib.GuiUnlock() None
-

Unlock gui controls (global state).

-
- -
-
-raylib.GuiValueBox(bounds: Rectangle | list | tuple, text: bytes, value: Any, minValue: int, maxValue: int, editMode: bool) int
-

Value Box control, updates input text with numbers.

-
- -
-
-raylib.GuiValueBoxFloat(bounds: Rectangle | list | tuple, text: bytes, textValue: bytes, value: Any, editMode: bool) int
-

Value box control for float values.

-
- -
-
-raylib.GuiWindowBox(bounds: Rectangle | list | tuple, title: bytes) int
-

Window Box control, shows a window that can be closed.

-
- -
-
-raylib.HUEBAR_PADDING: int
-
- -
-
-raylib.HUEBAR_SELECTOR_HEIGHT: int
-
- -
-
-raylib.HUEBAR_SELECTOR_OVERFLOW: int
-
- -
-
-raylib.HUEBAR_WIDTH: int
-
- -
-
-raylib.HideCursor() None
-

Hides cursor.

-
- -
-
-raylib.ICON_1UP: int
-
- -
-
-raylib.ICON_229: int
-
- -
-
-raylib.ICON_230: int
-
- -
-
-raylib.ICON_231: int
-
- -
-
-raylib.ICON_232: int
-
- -
-
-raylib.ICON_233: int
-
- -
-
-raylib.ICON_234: int
-
- -
-
-raylib.ICON_235: int
-
- -
-
-raylib.ICON_236: int
-
- -
-
-raylib.ICON_237: int
-
- -
-
-raylib.ICON_238: int
-
- -
-
-raylib.ICON_239: int
-
- -
-
-raylib.ICON_240: int
-
- -
-
-raylib.ICON_241: int
-
- -
-
-raylib.ICON_242: int
-
- -
-
-raylib.ICON_243: int
-
- -
-
-raylib.ICON_244: int
-
- -
-
-raylib.ICON_245: int
-
- -
-
-raylib.ICON_246: int
-
- -
-
-raylib.ICON_247: int
-
- -
-
-raylib.ICON_248: int
-
- -
-
-raylib.ICON_249: int
-
- -
-
-raylib.ICON_250: int
-
- -
-
-raylib.ICON_251: int
-
- -
-
-raylib.ICON_252: int
-
- -
-
-raylib.ICON_253: int
-
- -
-
-raylib.ICON_254: int
-
- -
-
-raylib.ICON_255: int
-
- -
-
-raylib.ICON_ALARM: int
-
- -
-
-raylib.ICON_ALPHA_CLEAR: int
-
- -
-
-raylib.ICON_ALPHA_MULTIPLY: int
-
- -
-
-raylib.ICON_ARROW_DOWN: int
-
- -
-
-raylib.ICON_ARROW_DOWN_FILL: int
-
- -
-
-raylib.ICON_ARROW_LEFT: int
-
- -
-
-raylib.ICON_ARROW_LEFT_FILL: int
-
- -
-
-raylib.ICON_ARROW_RIGHT: int
-
- -
-
-raylib.ICON_ARROW_RIGHT_FILL: int
-
- -
-
-raylib.ICON_ARROW_UP: int
-
- -
-
-raylib.ICON_ARROW_UP_FILL: int
-
- -
-
-raylib.ICON_AUDIO: int
-
- -
-
-raylib.ICON_BIN: int
-
- -
-
-raylib.ICON_BOX: int
-
- -
-
-raylib.ICON_BOX_BOTTOM: int
-
- -
-
-raylib.ICON_BOX_BOTTOM_LEFT: int
-
- -
-
-raylib.ICON_BOX_BOTTOM_RIGHT: int
-
- -
-
-raylib.ICON_BOX_CENTER: int
-
- -
-
-raylib.ICON_BOX_CIRCLE_MASK: int
-
- -
-
-raylib.ICON_BOX_CONCENTRIC: int
-
- -
-
-raylib.ICON_BOX_CORNERS_BIG: int
-
- -
-
-raylib.ICON_BOX_CORNERS_SMALL: int
-
- -
-
-raylib.ICON_BOX_DOTS_BIG: int
-
- -
-
-raylib.ICON_BOX_DOTS_SMALL: int
-
- -
-
-raylib.ICON_BOX_GRID: int
-
- -
-
-raylib.ICON_BOX_GRID_BIG: int
-
- -
-
-raylib.ICON_BOX_LEFT: int
-
- -
-
-raylib.ICON_BOX_MULTISIZE: int
-
- -
-
-raylib.ICON_BOX_RIGHT: int
-
- -
-
-raylib.ICON_BOX_TOP: int
-
- -
-
-raylib.ICON_BOX_TOP_LEFT: int
-
- -
-
-raylib.ICON_BOX_TOP_RIGHT: int
-
- -
-
-raylib.ICON_BREAKPOINT_OFF: int
-
- -
-
-raylib.ICON_BREAKPOINT_ON: int
-
- -
-
-raylib.ICON_BRUSH_CLASSIC: int
-
- -
-
-raylib.ICON_BRUSH_PAINTER: int
-
- -
-
-raylib.ICON_BURGER_MENU: int
-
- -
-
-raylib.ICON_CAMERA: int
-
- -
-
-raylib.ICON_CASE_SENSITIVE: int
-
- -
-
-raylib.ICON_CLOCK: int
-
- -
-
-raylib.ICON_COIN: int
-
- -
-
-raylib.ICON_COLOR_BUCKET: int
-
- -
-
-raylib.ICON_COLOR_PICKER: int
-
- -
-
-raylib.ICON_CORNER: int
-
- -
-
-raylib.ICON_CPU: int
-
- -
-
-raylib.ICON_CRACK: int
-
- -
-
-raylib.ICON_CRACK_POINTS: int
-
- -
-
-raylib.ICON_CROP: int
-
- -
-
-raylib.ICON_CROP_ALPHA: int
-
- -
-
-raylib.ICON_CROSS: int
-
- -
-
-raylib.ICON_CROSSLINE: int
-
- -
-
-raylib.ICON_CROSS_SMALL: int
-
- -
-
-raylib.ICON_CUBE: int
-
- -
-
-raylib.ICON_CUBE_FACE_BACK: int
-
- -
-
-raylib.ICON_CUBE_FACE_BOTTOM: int
-
- -
-
-raylib.ICON_CUBE_FACE_FRONT: int
-
- -
-
-raylib.ICON_CUBE_FACE_LEFT: int
-
- -
-
-raylib.ICON_CUBE_FACE_RIGHT: int
-
- -
-
-raylib.ICON_CUBE_FACE_TOP: int
-
- -
-
-raylib.ICON_CURSOR_CLASSIC: int
-
- -
-
-raylib.ICON_CURSOR_HAND: int
-
- -
-
-raylib.ICON_CURSOR_MOVE: int
-
- -
-
-raylib.ICON_CURSOR_MOVE_FILL: int
-
- -
-
-raylib.ICON_CURSOR_POINTER: int
-
- -
-
-raylib.ICON_CURSOR_SCALE: int
-
- -
-
-raylib.ICON_CURSOR_SCALE_FILL: int
-
- -
-
-raylib.ICON_CURSOR_SCALE_LEFT: int
-
- -
-
-raylib.ICON_CURSOR_SCALE_LEFT_FILL: int
-
- -
-
-raylib.ICON_CURSOR_SCALE_RIGHT: int
-
- -
-
-raylib.ICON_CURSOR_SCALE_RIGHT_FILL: int
-
- -
-
-raylib.ICON_DEMON: int
-
- -
-
-raylib.ICON_DITHERING: int
-
- -
-
-raylib.ICON_DOOR: int
-
- -
-
-raylib.ICON_EMPTYBOX: int
-
- -
-
-raylib.ICON_EMPTYBOX_SMALL: int
-
- -
-
-raylib.ICON_EXIT: int
-
- -
-
-raylib.ICON_EXPLOSION: int
-
- -
-
-raylib.ICON_EYE_OFF: int
-
- -
-
-raylib.ICON_EYE_ON: int
-
- -
-
-raylib.ICON_FILE: int
-
- -
-
-raylib.ICON_FILETYPE_ALPHA: int
-
- -
-
-raylib.ICON_FILETYPE_AUDIO: int
-
- -
-
-raylib.ICON_FILETYPE_BINARY: int
-
- -
-
-raylib.ICON_FILETYPE_HOME: int
-
- -
-
-raylib.ICON_FILETYPE_IMAGE: int
-
- -
-
-raylib.ICON_FILETYPE_INFO: int
-
- -
-
-raylib.ICON_FILETYPE_PLAY: int
-
- -
-
-raylib.ICON_FILETYPE_TEXT: int
-
- -
-
-raylib.ICON_FILETYPE_VIDEO: int
-
- -
-
-raylib.ICON_FILE_ADD: int
-
- -
-
-raylib.ICON_FILE_COPY: int
-
- -
-
-raylib.ICON_FILE_CUT: int
-
- -
-
-raylib.ICON_FILE_DELETE: int
-
- -
-
-raylib.ICON_FILE_EXPORT: int
-
- -
-
-raylib.ICON_FILE_NEW: int
-
- -
-
-raylib.ICON_FILE_OPEN: int
-
- -
-
-raylib.ICON_FILE_PASTE: int
-
- -
-
-raylib.ICON_FILE_SAVE: int
-
- -
-
-raylib.ICON_FILE_SAVE_CLASSIC: int
-
- -
-
-raylib.ICON_FILTER: int
-
- -
-
-raylib.ICON_FILTER_BILINEAR: int
-
- -
-
-raylib.ICON_FILTER_POINT: int
-
- -
-
-raylib.ICON_FILTER_TOP: int
-
- -
-
-raylib.ICON_FOLDER: int
-
- -
-
-raylib.ICON_FOLDER_ADD: int
-
- -
-
-raylib.ICON_FOLDER_FILE_OPEN: int
-
- -
-
-raylib.ICON_FOLDER_OPEN: int
-
- -
-
-raylib.ICON_FOLDER_SAVE: int
-
- -
-
-raylib.ICON_FOUR_BOXES: int
-
- -
-
-raylib.ICON_FX: int
-
- -
-
-raylib.ICON_GEAR: int
-
- -
-
-raylib.ICON_GEAR_BIG: int
-
- -
-
-raylib.ICON_GEAR_EX: int
-
- -
-
-raylib.ICON_GRID: int
-
- -
-
-raylib.ICON_GRID_FILL: int
-
- -
-
-raylib.ICON_HAND_POINTER: int
-
- -
-
-raylib.ICON_HEART: int
-
- -
-
-raylib.ICON_HELP: int
-
- -
-
-raylib.ICON_HELP_BOX: int
-
- -
-
-raylib.ICON_HEX: int
-
- -
-
-raylib.ICON_HIDPI: int
-
- -
-
-raylib.ICON_HOT: int
-
- -
-
-raylib.ICON_HOUSE: int
-
- -
-
-raylib.ICON_INFO: int
-
- -
-
-raylib.ICON_INFO_BOX: int
-
- -
-
-raylib.ICON_KEY: int
-
- -
-
-raylib.ICON_LASER: int
-
- -
-
-raylib.ICON_LAYERS: int
-
- -
-
-raylib.ICON_LAYERS2: int
-
- -
-
-raylib.ICON_LAYERS_ISO: int
-
- -
-
-raylib.ICON_LAYERS_VISIBLE: int
-
- -
-
-raylib.ICON_LENS: int
-
- -
-
-raylib.ICON_LENS_BIG: int
-
- -
-
-raylib.ICON_LIFE_BARS: int
-
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-
-raylib.ICON_LOCK_CLOSE: int
-
- -
-
-raylib.ICON_LOCK_OPEN: int
-
- -
-
-raylib.ICON_MAGNET: int
-
- -
-
-raylib.ICON_MAILBOX: int
-
- -
-
-raylib.ICON_MAPS: int
-
- -
-
-raylib.ICON_MIPMAPS: int
-
- -
-
-raylib.ICON_MLAYERS: int
-
- -
-
-raylib.ICON_MODE_2D: int
-
- -
-
-raylib.ICON_MODE_3D: int
-
- -
-
-raylib.ICON_MONITOR: int
-
- -
-
-raylib.ICON_MUTATE: int
-
- -
-
-raylib.ICON_MUTATE_FILL: int
-
- -
-
-raylib.ICON_NONE: int
-
- -
-
-raylib.ICON_NOTEBOOK: int
-
- -
-
-raylib.ICON_OK_TICK: int
-
- -
-
-raylib.ICON_PENCIL: int
-
- -
-
-raylib.ICON_PENCIL_BIG: int
-
- -
-
-raylib.ICON_PHOTO_CAMERA: int
-
- -
-
-raylib.ICON_PHOTO_CAMERA_FLASH: int
-
- -
-
-raylib.ICON_PLAYER: int
-
- -
-
-raylib.ICON_PLAYER_JUMP: int
-
- -
-
-raylib.ICON_PLAYER_NEXT: int
-
- -
-
-raylib.ICON_PLAYER_PAUSE: int
-
- -
-
-raylib.ICON_PLAYER_PLAY: int
-
- -
-
-raylib.ICON_PLAYER_PLAY_BACK: int
-
- -
-
-raylib.ICON_PLAYER_PREVIOUS: int
-
- -
-
-raylib.ICON_PLAYER_RECORD: int
-
- -
-
-raylib.ICON_PLAYER_STOP: int
-
- -
-
-raylib.ICON_POT: int
-
- -
-
-raylib.ICON_PRINTER: int
-
- -
-
-raylib.ICON_PRIORITY: int
-
- -
-
-raylib.ICON_REDO: int
-
- -
-
-raylib.ICON_REDO_FILL: int
-
- -
-
-raylib.ICON_REG_EXP: int
-
- -
-
-raylib.ICON_REPEAT: int
-
- -
-
-raylib.ICON_REPEAT_FILL: int
-
- -
-
-raylib.ICON_REREDO: int
-
- -
-
-raylib.ICON_REREDO_FILL: int
-
- -
-
-raylib.ICON_RESIZE: int
-
- -
-
-raylib.ICON_RESTART: int
-
- -
-
-raylib.ICON_ROM: int
-
- -
-
-raylib.ICON_ROTATE: int
-
- -
-
-raylib.ICON_ROTATE_FILL: int
-
- -
-
-raylib.ICON_RUBBER: int
-
- -
-
-raylib.ICON_SAND_TIMER: int
-
- -
-
-raylib.ICON_SCALE: int
-
- -
-
-raylib.ICON_SHIELD: int
-
- -
-
-raylib.ICON_SHUFFLE: int
-
- -
-
-raylib.ICON_SHUFFLE_FILL: int
-
- -
-
-raylib.ICON_SPECIAL: int
-
- -
-
-raylib.ICON_SQUARE_TOGGLE: int
-
- -
-
-raylib.ICON_STAR: int
-
- -
-
-raylib.ICON_STEP_INTO: int
-
- -
-
-raylib.ICON_STEP_OUT: int
-
- -
-
-raylib.ICON_STEP_OVER: int
-
- -
-
-raylib.ICON_SUITCASE: int
-
- -
-
-raylib.ICON_SUITCASE_ZIP: int
-
- -
-
-raylib.ICON_SYMMETRY: int
-
- -
-
-raylib.ICON_SYMMETRY_HORIZONTAL: int
-
- -
-
-raylib.ICON_SYMMETRY_VERTICAL: int
-
- -
-
-raylib.ICON_TARGET: int
-
- -
-
-raylib.ICON_TARGET_BIG: int
-
- -
-
-raylib.ICON_TARGET_BIG_FILL: int
-
- -
-
-raylib.ICON_TARGET_MOVE: int
-
- -
-
-raylib.ICON_TARGET_MOVE_FILL: int
-
- -
-
-raylib.ICON_TARGET_POINT: int
-
- -
-
-raylib.ICON_TARGET_SMALL: int
-
- -
-
-raylib.ICON_TARGET_SMALL_FILL: int
-
- -
-
-raylib.ICON_TEXT_A: int
-
- -
-
-raylib.ICON_TEXT_NOTES: int
-
- -
-
-raylib.ICON_TEXT_POPUP: int
-
- -
-
-raylib.ICON_TEXT_T: int
-
- -
-
-raylib.ICON_TOOLS: int
-
- -
-
-raylib.ICON_UNDO: int
-
- -
-
-raylib.ICON_UNDO_FILL: int
-
- -
-
-raylib.ICON_VERTICAL_BARS: int
-
- -
-
-raylib.ICON_VERTICAL_BARS_FILL: int
-
- -
-
-raylib.ICON_WARNING: int
-
- -
-
-raylib.ICON_WATER_DROP: int
-
- -
-
-raylib.ICON_WAVE: int
-
- -
-
-raylib.ICON_WAVE_SINUS: int
-
- -
-
-raylib.ICON_WAVE_SQUARE: int
-
- -
-
-raylib.ICON_WAVE_TRIANGULAR: int
-
- -
-
-raylib.ICON_WINDOW: int
-
- -
-
-raylib.ICON_ZOOM_ALL: int
-
- -
-
-raylib.ICON_ZOOM_BIG: int
-
- -
-
-raylib.ICON_ZOOM_CENTER: int
-
- -
-
-raylib.ICON_ZOOM_MEDIUM: int
-
- -
-
-raylib.ICON_ZOOM_SMALL: int
-
- -
-
-class raylib.Image
-
-
-data: Any
-
- -
-
-format: int
-
- -
-
-height: int
-
- -
-
-mipmaps: int
-
- -
-
-width: int
-
- -
- -
-
-raylib.ImageAlphaClear(image: Any | list | tuple, color: Color | list | tuple, threshold: float) None
-

Clear alpha channel to desired color.

-
- -
-
-raylib.ImageAlphaCrop(image: Any | list | tuple, threshold: float) None
-

Crop image depending on alpha value.

-
- -
-
-raylib.ImageAlphaMask(image: Any | list | tuple, alphaMask: Image | list | tuple) None
-

Apply alpha mask to image.

-
- -
-
-raylib.ImageAlphaPremultiply(image: Any | list | tuple) None
-

Premultiply alpha channel.

-
- -
-
-raylib.ImageBlurGaussian(image: Any | list | tuple, blurSize: int) None
-

Apply Gaussian blur using a box blur approximation.

-
- -
-
-raylib.ImageClearBackground(dst: Any | list | tuple, color: Color | list | tuple) None
-

Clear image background with given color.

-
- -
-
-raylib.ImageColorBrightness(image: Any | list | tuple, brightness: int) None
-

Modify image color: brightness (-255 to 255).

-
- -
-
-raylib.ImageColorContrast(image: Any | list | tuple, contrast: float) None
-

Modify image color: contrast (-100 to 100).

-
- -
-
-raylib.ImageColorGrayscale(image: Any | list | tuple) None
-

Modify image color: grayscale.

-
- -
-
-raylib.ImageColorInvert(image: Any | list | tuple) None
-

Modify image color: invert.

-
- -
-
-raylib.ImageColorReplace(image: Any | list | tuple, color: Color | list | tuple, replace: Color | list | tuple) None
-

Modify image color: replace color.

-
- -
-
-raylib.ImageColorTint(image: Any | list | tuple, color: Color | list | tuple) None
-

Modify image color: tint.

-
- -
-
-raylib.ImageCopy(image: Image | list | tuple) Image
-

Create an image duplicate (useful for transformations).

-
- -
-
-raylib.ImageCrop(image: Any | list | tuple, crop: Rectangle | list | tuple) None
-

Crop an image to a defined rectangle.

-
- -
-
-raylib.ImageDither(image: Any | list | tuple, rBpp: int, gBpp: int, bBpp: int, aBpp: int) None
-

Dither image data to 16bpp or lower (Floyd-Steinberg dithering).

-
- -
-
-raylib.ImageDraw(dst: Any | list | tuple, src: Image | list | tuple, srcRec: Rectangle | list | tuple, dstRec: Rectangle | list | tuple, tint: Color | list | tuple) None
-

Draw a source image within a destination image (tint applied to source).

-
- -
-
-raylib.ImageDrawCircle(dst: Any | list | tuple, centerX: int, centerY: int, radius: int, color: Color | list | tuple) None
-

Draw a filled circle within an image.

-
- -
-
-raylib.ImageDrawCircleLines(dst: Any | list | tuple, centerX: int, centerY: int, radius: int, color: Color | list | tuple) None
-

Draw circle outline within an image.

-
- -
-
-raylib.ImageDrawCircleLinesV(dst: Any | list | tuple, center: Vector2 | list | tuple, radius: int, color: Color | list | tuple) None
-

Draw circle outline within an image (Vector version).

-
- -
-
-raylib.ImageDrawCircleV(dst: Any | list | tuple, center: Vector2 | list | tuple, radius: int, color: Color | list | tuple) None
-

Draw a filled circle within an image (Vector version).

-
- -
-
-raylib.ImageDrawLine(dst: Any | list | tuple, startPosX: int, startPosY: int, endPosX: int, endPosY: int, color: Color | list | tuple) None
-

Draw line within an image.

-
- -
-
-raylib.ImageDrawLineEx(dst: Any | list | tuple, start: Vector2 | list | tuple, end: Vector2 | list | tuple, thick: int, color: Color | list | tuple) None
-

Draw a line defining thickness within an image.

-
- -
-
-raylib.ImageDrawLineV(dst: Any | list | tuple, start: Vector2 | list | tuple, end: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw line within an image (Vector version).

-
- -
-
-raylib.ImageDrawPixel(dst: Any | list | tuple, posX: int, posY: int, color: Color | list | tuple) None
-

Draw pixel within an image.

-
- -
-
-raylib.ImageDrawPixelV(dst: Any | list | tuple, position: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw pixel within an image (Vector version).

-
- -
-
-raylib.ImageDrawRectangle(dst: Any | list | tuple, posX: int, posY: int, width: int, height: int, color: Color | list | tuple) None
-

Draw rectangle within an image.

-
- -
-
-raylib.ImageDrawRectangleLines(dst: Any | list | tuple, rec: Rectangle | list | tuple, thick: int, color: Color | list | tuple) None
-

Draw rectangle lines within an image.

-
- -
-
-raylib.ImageDrawRectangleRec(dst: Any | list | tuple, rec: Rectangle | list | tuple, color: Color | list | tuple) None
-

Draw rectangle within an image.

-
- -
-
-raylib.ImageDrawRectangleV(dst: Any | list | tuple, position: Vector2 | list | tuple, size: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw rectangle within an image (Vector version).

-
- -
-
-raylib.ImageDrawText(dst: Any | list | tuple, text: bytes, posX: int, posY: int, fontSize: int, color: Color | list | tuple) None
-

Draw text (using default font) within an image (destination).

-
- -
-
-raylib.ImageDrawTextEx(dst: Any | list | tuple, font: Font | list | tuple, text: bytes, position: Vector2 | list | tuple, fontSize: float, spacing: float, tint: Color | list | tuple) None
-

Draw text (custom sprite font) within an image (destination).

-
- -
-
-raylib.ImageDrawTriangle(dst: Any | list | tuple, v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw triangle within an image.

-
- -
-
-raylib.ImageDrawTriangleEx(dst: Any | list | tuple, v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, c1: Color | list | tuple, c2: Color | list | tuple, c3: Color | list | tuple) None
-

Draw triangle with interpolated colors within an image.

-
- -
-
-raylib.ImageDrawTriangleFan(dst: Any | list | tuple, points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle fan defined by points within an image (first vertex is the center).

-
- -
-
-raylib.ImageDrawTriangleLines(dst: Any | list | tuple, v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, v3: Vector2 | list | tuple, color: Color | list | tuple) None
-

Draw triangle outline within an image.

-
- -
-
-raylib.ImageDrawTriangleStrip(dst: Any | list | tuple, points: Any | list | tuple, pointCount: int, color: Color | list | tuple) None
-

Draw a triangle strip defined by points within an image.

-
- -
-
-raylib.ImageFlipHorizontal(image: Any | list | tuple) None
-

Flip image horizontally.

-
- -
-
-raylib.ImageFlipVertical(image: Any | list | tuple) None
-

Flip image vertically.

-
- -
-
-raylib.ImageFormat(image: Any | list | tuple, newFormat: int) None
-

Convert image data to desired format.

-
- -
-
-raylib.ImageFromChannel(image: Image | list | tuple, selectedChannel: int) Image
-

Create an image from a selected channel of another image (GRAYSCALE).

-
- -
-
-raylib.ImageFromImage(image: Image | list | tuple, rec: Rectangle | list | tuple) Image
-

Create an image from another image piece.

-
- -
-
-raylib.ImageKernelConvolution(image: Any | list | tuple, kernel: Any, kernelSize: int) None
-

Apply custom square convolution kernel to image.

-
- -
-
-raylib.ImageMipmaps(image: Any | list | tuple) None
-

Compute all mipmap levels for a provided image.

-
- -
-
-raylib.ImageResize(image: Any | list | tuple, newWidth: int, newHeight: int) None
-

Resize image (Bicubic scaling algorithm).

-
- -
-
-raylib.ImageResizeCanvas(image: Any | list | tuple, newWidth: int, newHeight: int, offsetX: int, offsetY: int, fill: Color | list | tuple) None
-

Resize canvas and fill with color.

-
- -
-
-raylib.ImageResizeNN(image: Any | list | tuple, newWidth: int, newHeight: int) None
-

Resize image (Nearest-Neighbor scaling algorithm).

-
- -
-
-raylib.ImageRotate(image: Any | list | tuple, degrees: int) None
-

Rotate image by input angle in degrees (-359 to 359).

-
- -
-
-raylib.ImageRotateCCW(image: Any | list | tuple) None
-

Rotate image counter-clockwise 90deg.

-
- -
-
-raylib.ImageRotateCW(image: Any | list | tuple) None
-

Rotate image clockwise 90deg.

-
- -
-
-raylib.ImageText(text: bytes, fontSize: int, color: Color | list | tuple) Image
-

Create an image from text (default font).

-
- -
-
-raylib.ImageTextEx(font: Font | list | tuple, text: bytes, fontSize: float, spacing: float, tint: Color | list | tuple) Image
-

Create an image from text (custom sprite font).

-
- -
-
-raylib.ImageToPOT(image: Any | list | tuple, fill: Color | list | tuple) None
-

Convert image to POT (power-of-two).

-
- -
-
-raylib.InitAudioDevice() None
-

Initialize audio device and context.

-
- -
-
-raylib.InitPhysics() None
-

Initializes physics system.

-
- -
-
-raylib.InitWindow(width: int, height: int, title: bytes) None
-

Initialize window and OpenGL context.

-
- -
-
-raylib.IsAudioDeviceReady() bool
-

Check if audio device has been initialized successfully.

-
- -
-
-raylib.IsAudioStreamPlaying(stream: AudioStream | list | tuple) bool
-

Check if audio stream is playing.

-
- -
-
-raylib.IsAudioStreamProcessed(stream: AudioStream | list | tuple) bool
-

Check if any audio stream buffers requires refill.

-
- -
-
-raylib.IsAudioStreamValid(stream: AudioStream | list | tuple) bool
-

Checks if an audio stream is valid (buffers initialized).

-
- -
-
-raylib.IsCursorHidden() bool
-

Check if cursor is not visible.

-
- -
-
-raylib.IsCursorOnScreen() bool
-

Check if cursor is on the screen.

-
- -
-
-raylib.IsFileDropped() bool
-

Check if a file has been dropped into window.

-
- -
-
-raylib.IsFileExtension(fileName: bytes, ext: bytes) bool
-

Check file extension (including point: .png, .wav).

-
- -
-
-raylib.IsFileNameValid(fileName: bytes) bool
-

Check if fileName is valid for the platform/OS.

-
- -
-
-raylib.IsFontValid(font: Font | list | tuple) bool
-

Check if a font is valid (font data loaded, WARNING: GPU texture not checked).

-
- -
-
-raylib.IsGamepadAvailable(gamepad: int) bool
-

Check if a gamepad is available.

-
- -
-
-raylib.IsGamepadButtonDown(gamepad: int, button: int) bool
-

Check if a gamepad button is being pressed.

-
- -
-
-raylib.IsGamepadButtonPressed(gamepad: int, button: int) bool
-

Check if a gamepad button has been pressed once.

-
- -
-
-raylib.IsGamepadButtonReleased(gamepad: int, button: int) bool
-

Check if a gamepad button has been released once.

-
- -
-
-raylib.IsGamepadButtonUp(gamepad: int, button: int) bool
-

Check if a gamepad button is NOT being pressed.

-
- -
-
-raylib.IsGestureDetected(gesture: int) bool
-

Check if a gesture have been detected.

-
- -
-
-raylib.IsImageValid(image: Image | list | tuple) bool
-

Check if an image is valid (data and parameters).

-
- -
-
-raylib.IsKeyDown(key: int) bool
-

Check if a key is being pressed.

-
- -
-
-raylib.IsKeyPressed(key: int) bool
-

Check if a key has been pressed once.

-
- -
-
-raylib.IsKeyPressedRepeat(key: int) bool
-

Check if a key has been pressed again.

-
- -
-
-raylib.IsKeyReleased(key: int) bool
-

Check if a key has been released once.

-
- -
-
-raylib.IsKeyUp(key: int) bool
-

Check if a key is NOT being pressed.

-
- -
-
-raylib.IsMaterialValid(material: Material | list | tuple) bool
-

Check if a material is valid (shader assigned, map textures loaded in GPU).

-
- -
-
-raylib.IsModelAnimationValid(model: Model | list | tuple, anim: ModelAnimation | list | tuple) bool
-

Check model animation skeleton match.

-
- -
-
-raylib.IsModelValid(model: Model | list | tuple) bool
-

Check if a model is valid (loaded in GPU, VAO/VBOs).

-
- -
-
-raylib.IsMouseButtonDown(button: int) bool
-

Check if a mouse button is being pressed.

-
- -
-
-raylib.IsMouseButtonPressed(button: int) bool
-

Check if a mouse button has been pressed once.

-
- -
-
-raylib.IsMouseButtonReleased(button: int) bool
-

Check if a mouse button has been released once.

-
- -
-
-raylib.IsMouseButtonUp(button: int) bool
-

Check if a mouse button is NOT being pressed.

-
- -
-
-raylib.IsMusicStreamPlaying(music: Music | list | tuple) bool
-

Check if music is playing.

-
- -
-
-raylib.IsMusicValid(music: Music | list | tuple) bool
-

Checks if a music stream is valid (context and buffers initialized).

-
- -
-
-raylib.IsPathFile(path: bytes) bool
-

Check if a given path is a file or a directory.

-
- -
-
-raylib.IsRenderTextureValid(target: RenderTexture | list | tuple) bool
-

Check if a render texture is valid (loaded in GPU).

-
- -
-
-raylib.IsShaderValid(shader: Shader | list | tuple) bool
-

Check if a shader is valid (loaded on GPU).

-
- -
-
-raylib.IsSoundPlaying(sound: Sound | list | tuple) bool
-

Check if a sound is currently playing.

-
- -
-
-raylib.IsSoundValid(sound: Sound | list | tuple) bool
-

Checks if a sound is valid (data loaded and buffers initialized).

-
- -
-
-raylib.IsTextureValid(texture: Texture | list | tuple) bool
-

Check if a texture is valid (loaded in GPU).

-
- -
-
-raylib.IsWaveValid(wave: Wave | list | tuple) bool
-

Checks if wave data is valid (data loaded and parameters).

-
- -
-
-raylib.IsWindowFocused() bool
-

Check if window is currently focused.

-
- -
-
-raylib.IsWindowFullscreen() bool
-

Check if window is currently fullscreen.

-
- -
-
-raylib.IsWindowHidden() bool
-

Check if window is currently hidden.

-
- -
-
-raylib.IsWindowMaximized() bool
-

Check if window is currently maximized.

-
- -
-
-raylib.IsWindowMinimized() bool
-

Check if window is currently minimized.

-
- -
-
-raylib.IsWindowReady() bool
-

Check if window has been initialized successfully.

-
- -
-
-raylib.IsWindowResized() bool
-

Check if window has been resized last frame.

-
- -
-
-raylib.IsWindowState(flag: int) bool
-

Check if one specific window flag is enabled.

-
- -
-
-raylib.KEY_A: int
-
- -
-
-raylib.KEY_APOSTROPHE: int
-
- -
-
-raylib.KEY_B: int
-
- -
-
-raylib.KEY_BACK: int
-
- -
-
-raylib.KEY_BACKSLASH: int
-
- -
-
-raylib.KEY_BACKSPACE: int
-
- -
-
-raylib.KEY_C: int
-
- -
-
-raylib.KEY_CAPS_LOCK: int
-
- -
-
-raylib.KEY_COMMA: int
-
- -
-
-raylib.KEY_D: int
-
- -
-
-raylib.KEY_DELETE: int
-
- -
-
-raylib.KEY_DOWN: int
-
- -
-
-raylib.KEY_E: int
-
- -
-
-raylib.KEY_EIGHT: int
-
- -
-
-raylib.KEY_END: int
-
- -
-
-raylib.KEY_ENTER: int
-
- -
-
-raylib.KEY_EQUAL: int
-
- -
-
-raylib.KEY_ESCAPE: int
-
- -
-
-raylib.KEY_F: int
-
- -
-
-raylib.KEY_F1: int
-
- -
-
-raylib.KEY_F10: int
-
- -
-
-raylib.KEY_F11: int
-
- -
-
-raylib.KEY_F12: int
-
- -
-
-raylib.KEY_F2: int
-
- -
-
-raylib.KEY_F3: int
-
- -
-
-raylib.KEY_F4: int
-
- -
-
-raylib.KEY_F5: int
-
- -
-
-raylib.KEY_F6: int
-
- -
-
-raylib.KEY_F7: int
-
- -
-
-raylib.KEY_F8: int
-
- -
-
-raylib.KEY_F9: int
-
- -
-
-raylib.KEY_FIVE: int
-
- -
-
-raylib.KEY_FOUR: int
-
- -
-
-raylib.KEY_G: int
-
- -
-
-raylib.KEY_GRAVE: int
-
- -
-
-raylib.KEY_H: int
-
- -
-
-raylib.KEY_HOME: int
-
- -
-
-raylib.KEY_I: int
-
- -
-
-raylib.KEY_INSERT: int
-
- -
-
-raylib.KEY_J: int
-
- -
-
-raylib.KEY_K: int
-
- -
-
-raylib.KEY_KB_MENU: int
-
- -
-
-raylib.KEY_KP_0: int
-
- -
-
-raylib.KEY_KP_1: int
-
- -
-
-raylib.KEY_KP_2: int
-
- -
-
-raylib.KEY_KP_3: int
-
- -
-
-raylib.KEY_KP_4: int
-
- -
-
-raylib.KEY_KP_5: int
-
- -
-
-raylib.KEY_KP_6: int
-
- -
-
-raylib.KEY_KP_7: int
-
- -
-
-raylib.KEY_KP_8: int
-
- -
-
-raylib.KEY_KP_9: int
-
- -
-
-raylib.KEY_KP_ADD: int
-
- -
-
-raylib.KEY_KP_DECIMAL: int
-
- -
-
-raylib.KEY_KP_DIVIDE: int
-
- -
-
-raylib.KEY_KP_ENTER: int
-
- -
-
-raylib.KEY_KP_EQUAL: int
-
- -
-
-raylib.KEY_KP_MULTIPLY: int
-
- -
-
-raylib.KEY_KP_SUBTRACT: int
-
- -
-
-raylib.KEY_L: int
-
- -
-
-raylib.KEY_LEFT: int
-
- -
-
-raylib.KEY_LEFT_ALT: int
-
- -
-
-raylib.KEY_LEFT_BRACKET: int
-
- -
-
-raylib.KEY_LEFT_CONTROL: int
-
- -
-
-raylib.KEY_LEFT_SHIFT: int
-
- -
-
-raylib.KEY_LEFT_SUPER: int
-
- -
-
-raylib.KEY_M: int
-
- -
-
-raylib.KEY_MENU: int
-
- -
-
-raylib.KEY_MINUS: int
-
- -
-
-raylib.KEY_N: int
-
- -
-
-raylib.KEY_NINE: int
-
- -
-
-raylib.KEY_NULL: int
-
- -
-
-raylib.KEY_NUM_LOCK: int
-
- -
-
-raylib.KEY_O: int
-
- -
-
-raylib.KEY_ONE: int
-
- -
-
-raylib.KEY_P: int
-
- -
-
-raylib.KEY_PAGE_DOWN: int
-
- -
-
-raylib.KEY_PAGE_UP: int
-
- -
-
-raylib.KEY_PAUSE: int
-
- -
-
-raylib.KEY_PERIOD: int
-
- -
-
-raylib.KEY_PRINT_SCREEN: int
-
- -
-
-raylib.KEY_Q: int
-
- -
-
-raylib.KEY_R: int
-
- -
-
-raylib.KEY_RIGHT: int
-
- -
-
-raylib.KEY_RIGHT_ALT: int
-
- -
-
-raylib.KEY_RIGHT_BRACKET: int
-
- -
-
-raylib.KEY_RIGHT_CONTROL: int
-
- -
-
-raylib.KEY_RIGHT_SHIFT: int
-
- -
-
-raylib.KEY_RIGHT_SUPER: int
-
- -
-
-raylib.KEY_S: int
-
- -
-
-raylib.KEY_SCROLL_LOCK: int
-
- -
-
-raylib.KEY_SEMICOLON: int
-
- -
-
-raylib.KEY_SEVEN: int
-
- -
-
-raylib.KEY_SIX: int
-
- -
-
-raylib.KEY_SLASH: int
-
- -
-
-raylib.KEY_SPACE: int
-
- -
-
-raylib.KEY_T: int
-
- -
-
-raylib.KEY_TAB: int
-
- -
-
-raylib.KEY_THREE: int
-
- -
-
-raylib.KEY_TWO: int
-
- -
-
-raylib.KEY_U: int
-
- -
-
-raylib.KEY_UP: int
-
- -
-
-raylib.KEY_V: int
-
- -
-
-raylib.KEY_VOLUME_DOWN: int
-
- -
-
-raylib.KEY_VOLUME_UP: int
-
- -
-
-raylib.KEY_W: int
-
- -
-
-raylib.KEY_X: int
-
- -
-
-raylib.KEY_Y: int
-
- -
-
-raylib.KEY_Z: int
-
- -
-
-raylib.KEY_ZERO: int
-
- -
-
-raylib.KeyboardKey
-
- -
-
-raylib.LABEL: int
-
- -
-
-raylib.LIGHTGRAY: Color
-
- -
-
-raylib.LIME: Color
-
- -
-
-raylib.LINE_COLOR: int
-
- -
-
-raylib.LISTVIEW: int
-
- -
-
-raylib.LIST_ITEMS_BORDER_WIDTH: int
-
- -
-
-raylib.LIST_ITEMS_HEIGHT: int
-
- -
-
-raylib.LIST_ITEMS_SPACING: int
-
- -
-
-raylib.LOG_ALL: int
-
- -
-
-raylib.LOG_DEBUG: int
-
- -
-
-raylib.LOG_ERROR: int
-
- -
-
-raylib.LOG_FATAL: int
-
- -
-
-raylib.LOG_INFO: int
-
- -
-
-raylib.LOG_NONE: int
-
- -
-
-raylib.LOG_TRACE: int
-
- -
-
-raylib.LOG_WARNING: int
-
- -
-
-raylib.Lerp(start: float, end: float, amount: float) float
-

.

-
- -
-
-raylib.LoadAudioStream(sampleRate: int, sampleSize: int, channels: int) AudioStream
-

Load audio stream (to stream raw audio pcm data).

-
- -
-
-raylib.LoadAutomationEventList(fileName: bytes) AutomationEventList
-

Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS.

-
- -
-
-raylib.LoadCodepoints(text: bytes, count: Any) Any
-

Load all codepoints from a UTF-8 text string, codepoints count returned by parameter.

-
- -
-
-raylib.LoadDirectoryFiles(dirPath: bytes) FilePathList
-

Load directory filepaths.

-
- -
-
-raylib.LoadDirectoryFilesEx(basePath: bytes, filter: bytes, scanSubdirs: bool) FilePathList
-

Load directory filepaths with extension filtering and recursive directory scan. Use ‘DIR’ in the filter string to include directories in the result.

-
- -
-
-raylib.LoadDroppedFiles() FilePathList
-

Load dropped filepaths.

-
- -
-
-raylib.LoadFileData(fileName: bytes, dataSize: Any) bytes
-

Load file data as byte array (read).

-
- -
-
-raylib.LoadFileText(fileName: bytes) bytes
-

Load text data from file (read), returns a ‘' terminated string.

-
- -
-
-raylib.LoadFont(fileName: bytes) Font
-

Load font from file into GPU memory (VRAM).

-
- -
-
-raylib.LoadFontData(fileData: bytes, dataSize: int, fontSize: int, codepoints: Any, codepointCount: int, type: int) Any
-

Load font data for further use.

-
- -
-
-raylib.LoadFontEx(fileName: bytes, 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 set, font size is provided in pixels height.

-
- -
-
-raylib.LoadFontFromImage(image: Image | list | tuple, key: Color | list | tuple, firstChar: int) Font
-

Load font from Image (XNA style).

-
- -
-
-raylib.LoadFontFromMemory(fileType: bytes, fileData: bytes, dataSize: int, fontSize: int, codepoints: Any, codepointCount: int) Font
-

Load font from memory buffer, fileType refers to extension: i.e. ‘.ttf’.

-
- -
-
-raylib.LoadImage(fileName: bytes) Image
-

Load image from file into CPU memory (RAM).

-
- -
-
-raylib.LoadImageAnim(fileName: bytes, frames: Any) Image
-

Load image sequence from file (frames appended to image.data).

-
- -
-
-raylib.LoadImageAnimFromMemory(fileType: bytes, fileData: bytes, dataSize: int, frames: Any) Image
-

Load image sequence from memory buffer.

-
- -
-
-raylib.LoadImageColors(image: Image | list | tuple) Any
-

Load color data from image as a Color array (RGBA - 32bit).

-
- -
-
-raylib.LoadImageFromMemory(fileType: bytes, fileData: bytes, dataSize: int) Image
-

Load image from memory buffer, fileType refers to extension: i.e. ‘.png’.

-
- -
-
-raylib.LoadImageFromScreen() Image
-

Load image from screen buffer and (screenshot).

-
- -
-
-raylib.LoadImageFromTexture(texture: Texture | list | tuple) Image
-

Load image from GPU texture data.

-
- -
-
-raylib.LoadImagePalette(image: Image | list | tuple, maxPaletteSize: int, colorCount: Any) Any
-

Load colors palette from image as a Color array (RGBA - 32bit).

-
- -
-
-raylib.LoadImageRaw(fileName: bytes, width: int, height: int, format: int, headerSize: int) Image
-

Load image from RAW file data.

-
- -
-
-raylib.LoadMaterialDefault() Material
-

Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps).

-
- -
-
-raylib.LoadMaterials(fileName: bytes, materialCount: Any) Any
-

Load materials from model file.

-
- -
-
-raylib.LoadModel(fileName: bytes) Model
-

Load model from files (meshes and materials).

-
- -
-
-raylib.LoadModelAnimations(fileName: bytes, animCount: Any) Any
-

Load model animations from file.

-
- -
-
-raylib.LoadModelFromMesh(mesh: Mesh | list | tuple) Model
-

Load model from generated mesh (default material).

-
- -
-
-raylib.LoadMusicStream(fileName: bytes) Music
-

Load music stream from file.

-
- -
-
-raylib.LoadMusicStreamFromMemory(fileType: bytes, data: bytes, dataSize: int) Music
-

Load music stream from data.

-
- -
-
-raylib.LoadRandomSequence(count: int, min_1: int, max_2: int) Any
-

Load random values sequence, no values repeated.

-
- -
-
-raylib.LoadRenderTexture(width: int, height: int) RenderTexture
-

Load texture for rendering (framebuffer).

-
- -
-
-raylib.LoadShader(vsFileName: bytes, fsFileName: bytes) Shader
-

Load shader from files and bind default locations.

-
- -
-
-raylib.LoadShaderFromMemory(vsCode: bytes, fsCode: bytes) Shader
-

Load shader from code strings and bind default locations.

-
- -
-
-raylib.LoadSound(fileName: bytes) Sound
-

Load sound from file.

-
- -
-
-raylib.LoadSoundAlias(source: Sound | list | tuple) Sound
-

Create a new sound that shares the same sample data as the source sound, does not own the sound data.

-
- -
-
-raylib.LoadSoundFromWave(wave: Wave | list | tuple) Sound
-

Load sound from wave data.

-
- -
-
-raylib.LoadTexture(fileName: bytes) Texture
-

Load texture from file into GPU memory (VRAM).

-
- -
-
-raylib.LoadTextureCubemap(image: Image | list | tuple, layout: int) Texture
-

Load cubemap from image, multiple image cubemap layouts supported.

-
- -
-
-raylib.LoadTextureFromImage(image: Image | list | tuple) Texture
-

Load texture from image data.

-
- -
-
-raylib.LoadUTF8(codepoints: Any, length: int) bytes
-

Load UTF-8 text encoded from codepoints array.

-
- -
-
-raylib.LoadVrStereoConfig(device: VrDeviceInfo | list | tuple) VrStereoConfig
-

Load VR stereo config for VR simulator device parameters.

-
- -
-
-raylib.LoadWave(fileName: bytes) Wave
-

Load wave data from file.

-
- -
-
-raylib.LoadWaveFromMemory(fileType: bytes, fileData: bytes, dataSize: int) Wave
-

Load wave from memory buffer, fileType refers to extension: i.e. ‘.wav’.

-
- -
-
-raylib.LoadWaveSamples(wave: Wave | list | tuple) Any
-

Load samples data from wave as a 32bit float data array.

-
- -
-
-raylib.MAGENTA: Color
-
- -
-
-raylib.MAROON: Color
-
- -
-
-raylib.MATERIAL_MAP_ALBEDO: int
-
- -
-
-raylib.MATERIAL_MAP_BRDF: int
-
- -
-
-raylib.MATERIAL_MAP_CUBEMAP: int
-
- -
-
-raylib.MATERIAL_MAP_EMISSION: int
-
- -
-
-raylib.MATERIAL_MAP_HEIGHT: int
-
- -
-
-raylib.MATERIAL_MAP_IRRADIANCE: int
-
- -
-
-raylib.MATERIAL_MAP_METALNESS: int
-
- -
-
-raylib.MATERIAL_MAP_NORMAL: int
-
- -
-
-raylib.MATERIAL_MAP_OCCLUSION: int
-
- -
-
-raylib.MATERIAL_MAP_PREFILTER: int
-
- -
-
-raylib.MATERIAL_MAP_ROUGHNESS: int
-
- -
-
-raylib.MOUSE_BUTTON_BACK: int
-
- -
-
-raylib.MOUSE_BUTTON_EXTRA: int
-
- -
-
-raylib.MOUSE_BUTTON_FORWARD: int
-
- -
-
-raylib.MOUSE_BUTTON_LEFT: int
-
- -
-
-raylib.MOUSE_BUTTON_MIDDLE: int
-
- -
-
-raylib.MOUSE_BUTTON_RIGHT: int
-
- -
-
-raylib.MOUSE_BUTTON_SIDE: int
-
- -
-
-raylib.MOUSE_CURSOR_ARROW: int
-
- -
-
-raylib.MOUSE_CURSOR_CROSSHAIR: int
-
- -
-
-raylib.MOUSE_CURSOR_DEFAULT: int
-
- -
-
-raylib.MOUSE_CURSOR_IBEAM: int
-
- -
-
-raylib.MOUSE_CURSOR_NOT_ALLOWED: int
-
- -
-
-raylib.MOUSE_CURSOR_POINTING_HAND: int
-
- -
-
-raylib.MOUSE_CURSOR_RESIZE_ALL: int
-
- -
-
-raylib.MOUSE_CURSOR_RESIZE_EW: int
-
- -
-
-raylib.MOUSE_CURSOR_RESIZE_NESW: int
-
- -
-
-raylib.MOUSE_CURSOR_RESIZE_NS: int
-
- -
-
-raylib.MOUSE_CURSOR_RESIZE_NWSE: int
-
- -
-
-raylib.MakeDirectory(dirPath: bytes) int
-

Create directories (including full path requested), returns 0 on success.

-
- -
-
-class raylib.Material
-
-
-maps: Any
-
- -
-
-params: list
-
- -
-
-shader: Shader
-
- -
- -
-
-class raylib.MaterialMap
-
-
-color: Color
-
- -
-
-texture: Texture
-
- -
-
-value: float
-
- -
- -
-
-raylib.MaterialMapIndex
-
- -
-
-class raylib.Matrix
-
-
-m0: float
-
- -
-
-m1: float
-
- -
-
-m10: float
-
- -
-
-m11: float
-
- -
-
-m12: float
-
- -
-
-m13: float
-
- -
-
-m14: float
-
- -
-
-m15: float
-
- -
-
-m2: float
-
- -
-
-m3: float
-
- -
-
-m4: float
-
- -
-
-m5: float
-
- -
-
-m6: float
-
- -
-
-m7: float
-
- -
-
-m8: float
-
- -
-
-m9: float
-
- -
- -
-
-class raylib.Matrix2x2
-
-
-m00: float
-
- -
-
-m01: float
-
- -
-
-m10: float
-
- -
-
-m11: float
-
- -
- -
-
-raylib.MatrixAdd(left: Matrix | list | tuple, right: Matrix | list | tuple) Matrix
-

.

-
- -
-
-raylib.MatrixDecompose(mat: Matrix | list | tuple, translation: Any | list | tuple, rotation: Any | list | tuple, scale: Any | list | tuple) None
-

.

-
- -
-
-raylib.MatrixDeterminant(mat: Matrix | list | tuple) float
-

.

-
- -
-
-raylib.MatrixFrustum(left: float, right: float, bottom: float, top: float, nearPlane: float, farPlane: float) Matrix
-

.

-
- -
-
-raylib.MatrixIdentity() Matrix
-

.

-
- -
-
-raylib.MatrixInvert(mat: Matrix | list | tuple) Matrix
-

.

-
- -
-
-raylib.MatrixLookAt(eye: Vector3 | list | tuple, target: Vector3 | list | tuple, up: Vector3 | list | tuple) Matrix
-

.

-
- -
-
-raylib.MatrixMultiply(left: Matrix | list | tuple, right: Matrix | list | tuple) Matrix
-

.

-
- -
-
-raylib.MatrixOrtho(left: float, right: float, bottom: float, top: float, nearPlane: float, farPlane: float) Matrix
-

.

-
- -
-
-raylib.MatrixPerspective(fovY: float, aspect: float, nearPlane: float, farPlane: float) Matrix
-

.

-
- -
-
-raylib.MatrixRotate(axis: Vector3 | list | tuple, angle: float) Matrix
-

.

-
- -
-
-raylib.MatrixRotateX(angle: float) Matrix
-

.

-
- -
-
-raylib.MatrixRotateXYZ(angle: Vector3 | list | tuple) Matrix
-

.

-
- -
-
-raylib.MatrixRotateY(angle: float) Matrix
-

.

-
- -
-
-raylib.MatrixRotateZ(angle: float) Matrix
-

.

-
- -
-
-raylib.MatrixRotateZYX(angle: Vector3 | list | tuple) Matrix
-

.

-
- -
-
-raylib.MatrixScale(x: float, y: float, z: float) Matrix
-

.

-
- -
-
-raylib.MatrixSubtract(left: Matrix | list | tuple, right: Matrix | list | tuple) Matrix
-

.

-
- -
-
-raylib.MatrixToFloatV(mat: Matrix | list | tuple) float16
-

.

-
- -
-
-raylib.MatrixTrace(mat: Matrix | list | tuple) float
-

.

-
- -
-
-raylib.MatrixTranslate(x: float, y: float, z: float) Matrix
-

.

-
- -
-
-raylib.MatrixTranspose(mat: Matrix | list | tuple) Matrix
-

.

-
- -
-
-raylib.MaximizeWindow() None
-

Set window state: maximized, if resizable.

-
- -
-
-raylib.MeasureText(text: bytes, fontSize: int) int
-

Measure string width for default font.

-
- -
-
-raylib.MeasureTextEx(font: Font | list | tuple, text: bytes, fontSize: float, spacing: float) Vector2
-

Measure string size for Font.

-
- -
-
-raylib.MemAlloc(size: int) Any
-

Internal memory allocator.

-
- -
-
-raylib.MemFree(ptr: Any) None
-

Internal memory free.

-
- -
-
-raylib.MemRealloc(ptr: Any, size: int) Any
-

Internal memory reallocator.

-
- -
-
-class raylib.Mesh
-
-
-animNormals: Any
-
- -
-
-animVertices: Any
-
- -
-
-boneCount: int
-
- -
-
-boneIds: bytes
-
- -
-
-boneMatrices: Any
-
- -
-
-boneWeights: Any
-
- -
-
-colors: bytes
-
- -
-
-indices: Any
-
- -
-
-normals: Any
-
- -
-
-tangents: Any
-
- -
-
-texcoords: Any
-
- -
-
-texcoords2: Any
-
- -
-
-triangleCount: int
-
- -
-
-vaoId: int
-
- -
-
-vboId: Any
-
- -
-
-vertexCount: int
-
- -
-
-vertices: Any
-
- -
- -
-
-raylib.MinimizeWindow() None
-

Set window state: minimized, if resizable.

-
- -
-
-class raylib.Model
-
-
-bindPose: Any
-
- -
-
-boneCount: int
-
- -
-
-bones: Any
-
- -
-
-materialCount: int
-
- -
-
-materials: Any
-
- -
-
-meshCount: int
-
- -
-
-meshMaterial: Any
-
- -
-
-meshes: Any
-
- -
-
-transform: Matrix
-
- -
- -
-
-class raylib.ModelAnimation
-
-
-boneCount: int
-
- -
-
-bones: Any
-
- -
-
-frameCount: int
-
- -
-
-framePoses: Any
-
- -
-
-name: bytes
-
- -
- -
-
-raylib.MouseButton
-
- -
-
-raylib.MouseCursor
-
- -
-
-class raylib.Music
-
-
-ctxData: Any
-
- -
-
-ctxType: int
-
- -
-
-frameCount: int
-
- -
-
-looping: bool
-
- -
-
-stream: AudioStream
-
- -
- -
-
-raylib.NPATCH_NINE_PATCH: int
-
- -
-
-raylib.NPATCH_THREE_PATCH_HORIZONTAL: int
-
- -
-
-raylib.NPATCH_THREE_PATCH_VERTICAL: int
-
- -
-
-class raylib.NPatchInfo
-
-
-bottom: int
-
- -
-
-layout: int
-
- -
-
-left: int
-
- -
-
-right: int
-
- -
-
-source: Rectangle
-
- -
-
-top: int
-
- -
- -
-
-raylib.NPatchLayout
-
- -
-
-raylib.Normalize(value: float, start: float, end: float) float
-

.

-
- -
-
-raylib.ORANGE: Color
-
- -
-
-raylib.OpenURL(url: bytes) None
-

Open URL with default system browser (if available).

-
- -
-
-raylib.PHYSICS_CIRCLE: int
-
- -
-
-raylib.PHYSICS_POLYGON: int
-
- -
-
-raylib.PINK: Color
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_DXT1_RGB: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_DXT1_RGBA: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_DXT3_RGBA: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_DXT5_RGBA: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_ETC1_RGB: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_ETC2_RGB: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_PVRT_RGB: int
-
- -
-
-raylib.PIXELFORMAT_COMPRESSED_PVRT_RGBA: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R16: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R16G16B16: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R32: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R32G32B32: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R5G6B5: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R8G8B8: int
-
- -
-
-raylib.PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: int
-
- -
-
-raylib.PROGRESSBAR: int
-
- -
-
-raylib.PROGRESS_PADDING: int
-
- -
-
-raylib.PURPLE: Color
-
- -
-
-raylib.PauseAudioStream(stream: AudioStream | list | tuple) None
-

Pause audio stream.

-
- -
-
-raylib.PauseMusicStream(music: Music | list | tuple) None
-

Pause music playing.

-
- -
-
-raylib.PauseSound(sound: Sound | list | tuple) None
-

Pause a sound.

-
- -
-
-raylib.PhysicsAddForce(body: Any | list | tuple, force: Vector2 | list | tuple) None
-

Adds a force to a physics body.

-
- -
-
-raylib.PhysicsAddTorque(body: Any | list | tuple, amount: float) None
-

Adds an angular force to a physics body.

-
- -
-
-class raylib.PhysicsBodyData
-
-
-angularVelocity: float
-
- -
-
-dynamicFriction: float
-
- -
-
-enabled: bool
-
- -
-
-force: Vector2
-
- -
-
-freezeOrient: bool
-
- -
-
-id: int
-
- -
-
-inertia: float
-
- -
-
-inverseInertia: float
-
- -
-
-inverseMass: float
-
- -
-
-isGrounded: bool
-
- -
-
-mass: float
-
- -
-
-orient: float
-
- -
-
-position: Vector2
-
- -
-
-restitution: float
-
- -
-
-shape: PhysicsShape
-
- -
-
-staticFriction: float
-
- -
-
-torque: float
-
- -
-
-useGravity: bool
-
- -
-
-velocity: Vector2
-
- -
- -
-
-class raylib.PhysicsManifoldData
-
-
-bodyA: Any
-
- -
-
-bodyB: Any
-
- -
-
-contacts: list
-
- -
-
-contactsCount: int
-
- -
-
-dynamicFriction: float
-
- -
-
-id: int
-
- -
-
-normal: Vector2
-
- -
-
-penetration: float
-
- -
-
-restitution: float
-
- -
-
-staticFriction: float
-
- -
- -
-
-class raylib.PhysicsShape
-
-
-body: Any
-
- -
-
-radius: float
-
- -
-
-transform: Matrix2x2
-
- -
-
-type: PhysicsShapeType
-
- -
-
-vertexData: PhysicsVertexData
-
- -
- -
-
-raylib.PhysicsShapeType
-
- -
-
-raylib.PhysicsShatter(body: Any | list | tuple, position: Vector2 | list | tuple, force: float) None
-

Shatters a polygon shape physics body to little physics bodies with explosion force.

-
- -
-
-class raylib.PhysicsVertexData
-
-
-normals: list
-
- -
-
-positions: list
-
- -
-
-vertexCount: int
-
- -
- -
-
-raylib.PixelFormat
-
- -
-
-raylib.PlayAudioStream(stream: AudioStream | list | tuple) None
-

Play audio stream.

-
- -
-
-raylib.PlayAutomationEvent(event: AutomationEvent | list | tuple) None
-

Play a recorded automation event.

-
- -
-
-raylib.PlayMusicStream(music: Music | list | tuple) None
-

Start music playing.

-
- -
-
-raylib.PlaySound(sound: Sound | list | tuple) None
-

Play a sound.

-
- -
-
-raylib.PollInputEvents() None
-

Register all input events.

-
- -
-
-class raylib.Quaternion
-
-
-w: float
-
- -
-
-x: float
-
- -
-
-y: float
-
- -
-
-z: float
-
- -
- -
-
-raylib.QuaternionAdd(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.QuaternionAddValue(q: Vector4 | list | tuple, add: float) Vector4
-

.

-
- -
-
-raylib.QuaternionCubicHermiteSpline(q1: Vector4 | list | tuple, outTangent1: Vector4 | list | tuple, q2: Vector4 | list | tuple, inTangent2: Vector4 | list | tuple, t: float) Vector4
-

.

-
- -
-
-raylib.QuaternionDivide(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.QuaternionEquals(p: Vector4 | list | tuple, q: Vector4 | list | tuple) int
-

.

-
- -
-
-raylib.QuaternionFromAxisAngle(axis: Vector3 | list | tuple, angle: float) Vector4
-

.

-
- -
-
-raylib.QuaternionFromEuler(pitch: float, yaw: float, roll: float) Vector4
-

.

-
- -
-
-raylib.QuaternionFromMatrix(mat: Matrix | list | tuple) Vector4
-

.

-
- -
-
-raylib.QuaternionFromVector3ToVector3(from_0: Vector3 | list | tuple, to: Vector3 | list | tuple) Vector4
-

.

-
- -
-
-raylib.QuaternionIdentity() Vector4
-

.

-
- -
-
-raylib.QuaternionInvert(q: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.QuaternionLength(q: Vector4 | list | tuple) float
-

.

-
- -
-
-raylib.QuaternionLerp(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple, amount: float) Vector4
-

.

-
- -
-
-raylib.QuaternionMultiply(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.QuaternionNlerp(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple, amount: float) Vector4
-

.

-
- -
-
-raylib.QuaternionNormalize(q: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.QuaternionScale(q: Vector4 | list | tuple, mul: float) Vector4
-

.

-
- -
-
-raylib.QuaternionSlerp(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple, amount: float) Vector4
-

.

-
- -
-
-raylib.QuaternionSubtract(q1: Vector4 | list | tuple, q2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.QuaternionSubtractValue(q: Vector4 | list | tuple, sub: float) Vector4
-

.

-
- -
-
-raylib.QuaternionToAxisAngle(q: Vector4 | list | tuple, outAxis: Any | list | tuple, outAngle: Any) None
-

.

-
- -
-
-raylib.QuaternionToEuler(q: Vector4 | list | tuple) Vector3
-

.

-
- -
-
-raylib.QuaternionToMatrix(q: Vector4 | list | tuple) Matrix
-

.

-
- -
-
-raylib.QuaternionTransform(q: Vector4 | list | tuple, mat: Matrix | list | tuple) Vector4
-

.

-
- -
-
-raylib.RAYWHITE: Color
-
- -
-
-raylib.RED: Color
-
- -
-
-raylib.RL_ATTACHMENT_COLOR_CHANNEL0: int
-
- -
-
-raylib.RL_ATTACHMENT_COLOR_CHANNEL1: int
-
- -
-
-raylib.RL_ATTACHMENT_COLOR_CHANNEL2: int
-
- -
-
-raylib.RL_ATTACHMENT_COLOR_CHANNEL3: int
-
- -
-
-raylib.RL_ATTACHMENT_COLOR_CHANNEL4: int
-
- -
-
-raylib.RL_ATTACHMENT_COLOR_CHANNEL5: int
-
- -
-
-raylib.RL_ATTACHMENT_COLOR_CHANNEL6: int
-
- -
-
-raylib.RL_ATTACHMENT_COLOR_CHANNEL7: int
-
- -
-
-raylib.RL_ATTACHMENT_CUBEMAP_NEGATIVE_X: int
-
- -
-
-raylib.RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y: int
-
- -
-
-raylib.RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z: int
-
- -
-
-raylib.RL_ATTACHMENT_CUBEMAP_POSITIVE_X: int
-
- -
-
-raylib.RL_ATTACHMENT_CUBEMAP_POSITIVE_Y: int
-
- -
-
-raylib.RL_ATTACHMENT_CUBEMAP_POSITIVE_Z: int
-
- -
-
-raylib.RL_ATTACHMENT_DEPTH: int
-
- -
-
-raylib.RL_ATTACHMENT_RENDERBUFFER: int
-
- -
-
-raylib.RL_ATTACHMENT_STENCIL: int
-
- -
-
-raylib.RL_ATTACHMENT_TEXTURE2D: int
-
- -
-
-raylib.RL_BLEND_ADDITIVE: int
-
- -
-
-raylib.RL_BLEND_ADD_COLORS: int
-
- -
-
-raylib.RL_BLEND_ALPHA: int
-
- -
-
-raylib.RL_BLEND_ALPHA_PREMULTIPLY: int
-
- -
-
-raylib.RL_BLEND_CUSTOM: int
-
- -
-
-raylib.RL_BLEND_CUSTOM_SEPARATE: int
-
- -
-
-raylib.RL_BLEND_MULTIPLIED: int
-
- -
-
-raylib.RL_BLEND_SUBTRACT_COLORS: int
-
- -
-
-raylib.RL_CULL_FACE_BACK: int
-
- -
-
-raylib.RL_CULL_FACE_FRONT: int
-
- -
-
-raylib.RL_LOG_ALL: int
-
- -
-
-raylib.RL_LOG_DEBUG: int
-
- -
-
-raylib.RL_LOG_ERROR: int
-
- -
-
-raylib.RL_LOG_FATAL: int
-
- -
-
-raylib.RL_LOG_INFO: int
-
- -
-
-raylib.RL_LOG_NONE: int
-
- -
-
-raylib.RL_LOG_TRACE: int
-
- -
-
-raylib.RL_LOG_WARNING: int
-
- -
-
-raylib.RL_OPENGL_11: int
-
- -
-
-raylib.RL_OPENGL_21: int
-
- -
-
-raylib.RL_OPENGL_33: int
-
- -
-
-raylib.RL_OPENGL_43: int
-
- -
-
-raylib.RL_OPENGL_ES_20: int
-
- -
-
-raylib.RL_OPENGL_ES_30: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: int
-
- -
-
-raylib.RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R16: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R32: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: int
-
- -
-
-raylib.RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: int
-
- -
-
-raylib.RL_SHADER_ATTRIB_FLOAT: int
-
- -
-
-raylib.RL_SHADER_ATTRIB_VEC2: int
-
- -
-
-raylib.RL_SHADER_ATTRIB_VEC3: int
-
- -
-
-raylib.RL_SHADER_ATTRIB_VEC4: int
-
- -
-
-raylib.RL_SHADER_LOC_COLOR_AMBIENT: int
-
- -
-
-raylib.RL_SHADER_LOC_COLOR_DIFFUSE: int
-
- -
-
-raylib.RL_SHADER_LOC_COLOR_SPECULAR: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_ALBEDO: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_BRDF: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_CUBEMAP: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_EMISSION: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_HEIGHT: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_IRRADIANCE: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_METALNESS: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_NORMAL: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_OCCLUSION: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_PREFILTER: int
-
- -
-
-raylib.RL_SHADER_LOC_MAP_ROUGHNESS: int
-
- -
-
-raylib.RL_SHADER_LOC_MATRIX_MODEL: int
-
- -
-
-raylib.RL_SHADER_LOC_MATRIX_MVP: int
-
- -
-
-raylib.RL_SHADER_LOC_MATRIX_NORMAL: int
-
- -
-
-raylib.RL_SHADER_LOC_MATRIX_PROJECTION: int
-
- -
-
-raylib.RL_SHADER_LOC_MATRIX_VIEW: int
-
- -
-
-raylib.RL_SHADER_LOC_VECTOR_VIEW: int
-
- -
-
-raylib.RL_SHADER_LOC_VERTEX_COLOR: int
-
- -
-
-raylib.RL_SHADER_LOC_VERTEX_NORMAL: int
-
- -
-
-raylib.RL_SHADER_LOC_VERTEX_POSITION: int
-
- -
-
-raylib.RL_SHADER_LOC_VERTEX_TANGENT: int
-
- -
-
-raylib.RL_SHADER_LOC_VERTEX_TEXCOORD01: int
-
- -
-
-raylib.RL_SHADER_LOC_VERTEX_TEXCOORD02: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_FLOAT: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_INT: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_IVEC2: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_IVEC3: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_IVEC4: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_SAMPLER2D: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_UINT: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_UIVEC2: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_UIVEC3: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_UIVEC4: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_VEC2: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_VEC3: int
-
- -
-
-raylib.RL_SHADER_UNIFORM_VEC4: int
-
- -
-
-raylib.RL_TEXTURE_FILTER_ANISOTROPIC_16X: int
-
- -
-
-raylib.RL_TEXTURE_FILTER_ANISOTROPIC_4X: int
-
- -
-
-raylib.RL_TEXTURE_FILTER_ANISOTROPIC_8X: int
-
- -
-
-raylib.RL_TEXTURE_FILTER_BILINEAR: int
-
- -
-
-raylib.RL_TEXTURE_FILTER_POINT: int
-
- -
-
-raylib.RL_TEXTURE_FILTER_TRILINEAR: int
-
- -
-
-class raylib.Ray
-
-
-direction: Vector3
-
- -
-
-position: Vector3
-
- -
- -
-
-class raylib.RayCollision
-
-
-distance: float
-
- -
-
-hit: bool
-
- -
-
-normal: Vector3
-
- -
-
-point: Vector3
-
- -
- -
-
-class raylib.Rectangle
-
-
-height: float
-
- -
-
-width: float
-
- -
-
-x: float
-
- -
-
-y: float
-
- -
- -
-
-raylib.Remap(value: float, inputStart: float, inputEnd: float, outputStart: float, outputEnd: float) float
-

.

-
- -
-
-class raylib.RenderTexture
-
-
-depth: Texture
-
- -
-
-id: int
-
- -
-
-texture: Texture
-
- -
- -
-
-class raylib.RenderTexture2D
-
-
-depth: Texture
-
- -
-
-id: int
-
- -
-
-texture: Texture
-
- -
- -
-
-raylib.ResetPhysics() None
-

Reset physics system (global variables).

-
- -
-
-raylib.RestoreWindow() None
-

Set window state: not minimized/maximized.

-
- -
-
-raylib.ResumeAudioStream(stream: AudioStream | list | tuple) None
-

Resume audio stream.

-
- -
-
-raylib.ResumeMusicStream(music: Music | list | tuple) None
-

Resume playing paused music.

-
- -
-
-raylib.ResumeSound(sound: Sound | list | tuple) None
-

Resume a paused sound.

-
- -
-
-raylib.SCROLLBAR: int
-
- -
-
-raylib.SCROLLBAR_SIDE: int
-
- -
-
-raylib.SCROLLBAR_WIDTH: int
-
- -
-
-raylib.SCROLL_PADDING: int
-
- -
-
-raylib.SCROLL_SLIDER_PADDING: int
-
- -
-
-raylib.SCROLL_SLIDER_SIZE: int
-
- -
-
-raylib.SCROLL_SPEED: int
-
- -
-
-raylib.SHADER_ATTRIB_FLOAT: int
-
- -
-
-raylib.SHADER_ATTRIB_VEC2: int
-
- -
-
-raylib.SHADER_ATTRIB_VEC3: int
-
- -
-
-raylib.SHADER_ATTRIB_VEC4: int
-
- -
-
-raylib.SHADER_LOC_BONE_MATRICES: int
-
- -
-
-raylib.SHADER_LOC_COLOR_AMBIENT: int
-
- -
-
-raylib.SHADER_LOC_COLOR_DIFFUSE: int
-
- -
-
-raylib.SHADER_LOC_COLOR_SPECULAR: int
-
- -
-
-raylib.SHADER_LOC_MAP_ALBEDO: int
-
- -
-
-raylib.SHADER_LOC_MAP_BRDF: int
-
- -
-
-raylib.SHADER_LOC_MAP_CUBEMAP: int
-
- -
-
-raylib.SHADER_LOC_MAP_EMISSION: int
-
- -
-
-raylib.SHADER_LOC_MAP_HEIGHT: int
-
- -
-
-raylib.SHADER_LOC_MAP_IRRADIANCE: int
-
- -
-
-raylib.SHADER_LOC_MAP_METALNESS: int
-
- -
-
-raylib.SHADER_LOC_MAP_NORMAL: int
-
- -
-
-raylib.SHADER_LOC_MAP_OCCLUSION: int
-
- -
-
-raylib.SHADER_LOC_MAP_PREFILTER: int
-
- -
-
-raylib.SHADER_LOC_MAP_ROUGHNESS: int
-
- -
-
-raylib.SHADER_LOC_MATRIX_MODEL: int
-
- -
-
-raylib.SHADER_LOC_MATRIX_MVP: int
-
- -
-
-raylib.SHADER_LOC_MATRIX_NORMAL: int
-
- -
-
-raylib.SHADER_LOC_MATRIX_PROJECTION: int
-
- -
-
-raylib.SHADER_LOC_MATRIX_VIEW: int
-
- -
-
-raylib.SHADER_LOC_VECTOR_VIEW: int
-
- -
-
-raylib.SHADER_LOC_VERTEX_BONEIDS: int
-
- -
-
-raylib.SHADER_LOC_VERTEX_BONEWEIGHTS: int
-
- -
-
-raylib.SHADER_LOC_VERTEX_COLOR: int
-
- -
-
-raylib.SHADER_LOC_VERTEX_NORMAL: int
-
- -
-
-raylib.SHADER_LOC_VERTEX_POSITION: int
-
- -
-
-raylib.SHADER_LOC_VERTEX_TANGENT: int
-
- -
-
-raylib.SHADER_LOC_VERTEX_TEXCOORD01: int
-
- -
-
-raylib.SHADER_LOC_VERTEX_TEXCOORD02: int
-
- -
-
-raylib.SHADER_UNIFORM_FLOAT: int
-
- -
-
-raylib.SHADER_UNIFORM_INT: int
-
- -
-
-raylib.SHADER_UNIFORM_IVEC2: int
-
- -
-
-raylib.SHADER_UNIFORM_IVEC3: int
-
- -
-
-raylib.SHADER_UNIFORM_IVEC4: int
-
- -
-
-raylib.SHADER_UNIFORM_SAMPLER2D: int
-
- -
-
-raylib.SHADER_UNIFORM_VEC2: int
-
- -
-
-raylib.SHADER_UNIFORM_VEC3: int
-
- -
-
-raylib.SHADER_UNIFORM_VEC4: int
-
- -
-
-raylib.SKYBLUE: Color
-
- -
-
-raylib.SLIDER: int
-
- -
-
-raylib.SLIDER_PADDING: int
-
- -
-
-raylib.SLIDER_WIDTH: int
-
- -
-
-raylib.SPINNER: int
-
- -
-
-raylib.SPIN_BUTTON_SPACING: int
-
- -
-
-raylib.SPIN_BUTTON_WIDTH: int
-
- -
-
-raylib.STATE_DISABLED: int
-
- -
-
-raylib.STATE_FOCUSED: int
-
- -
-
-raylib.STATE_NORMAL: int
-
- -
-
-raylib.STATE_PRESSED: int
-
- -
-
-raylib.STATUSBAR: int
-
- -
-
-raylib.SaveFileData(fileName: bytes, data: Any, dataSize: int) bool
-

Save data to file from byte array (write), returns true on success.

-
- -
-
-raylib.SaveFileText(fileName: bytes, text: bytes) bool
-

Save text data to file (write), string must be ‘' terminated, returns true on success.

-
- -
-
-raylib.SeekMusicStream(music: Music | list | tuple, position: float) None
-

Seek music to a position (in seconds).

-
- -
-
-raylib.SetAudioStreamBufferSizeDefault(size: int) None
-

Default size for new audio streams.

-
- -
-
-raylib.SetAudioStreamCallback(stream: AudioStream | list | tuple, callback: Any) None
-

Audio thread callback to request new data.

-
- -
-
-raylib.SetAudioStreamPan(stream: AudioStream | list | tuple, pan: float) None
-

Set pan for audio stream (0.5 is centered).

-
- -
-
-raylib.SetAudioStreamPitch(stream: AudioStream | list | tuple, pitch: float) None
-

Set pitch for audio stream (1.0 is base level).

-
- -
-
-raylib.SetAudioStreamVolume(stream: AudioStream | list | tuple, volume: float) None
-

Set volume for audio stream (1.0 is max level).

-
- -
-
-raylib.SetAutomationEventBaseFrame(frame: int) None
-

Set automation event internal base frame to start recording.

-
- -
-
-raylib.SetAutomationEventList(list_0: Any | list | tuple) None
-

Set automation event list to record to.

-
- -
-
-raylib.SetClipboardText(text: bytes) None
-

Set clipboard text content.

-
- -
-
-raylib.SetConfigFlags(flags: int) None
-

Setup init configuration flags (view FLAGS).

-
- -
-
-raylib.SetExitKey(key: int) None
-

Set a custom key to exit program (default is ESC).

-
- -
-
-raylib.SetGamepadMappings(mappings: bytes) int
-

Set internal gamepad mappings (SDL_GameControllerDB).

-
- -
-
-raylib.SetGamepadVibration(gamepad: int, leftMotor: float, rightMotor: float, duration: float) None
-

Set gamepad vibration for both motors (duration in seconds).

-
- -
-
-raylib.SetGesturesEnabled(flags: int) None
-

Enable a set of gestures using flags.

-
- -
-
-raylib.SetLoadFileDataCallback(callback: bytes) None
-

Set custom file binary data loader.

-
- -
-
-raylib.SetLoadFileTextCallback(callback: bytes) None
-

Set custom file text data loader.

-
- -
-
-raylib.SetMasterVolume(volume: float) None
-

Set master volume (listener).

-
- -
-
-raylib.SetMaterialTexture(material: Any | list | tuple, mapType: int, texture: Texture | list | tuple) None
-

Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR…).

-
- -
-
-raylib.SetModelMeshMaterial(model: Any | list | tuple, meshId: int, materialId: int) None
-

Set material for a mesh.

-
- -
-
-raylib.SetMouseCursor(cursor: int) None
-

Set mouse cursor.

-
- -
-
-raylib.SetMouseOffset(offsetX: int, offsetY: int) None
-

Set mouse offset.

-
- -
-
-raylib.SetMousePosition(x: int, y: int) None
-

Set mouse position XY.

-
- -
-
-raylib.SetMouseScale(scaleX: float, scaleY: float) None
-

Set mouse scaling.

-
- -
-
-raylib.SetMusicPan(music: Music | list | tuple, pan: float) None
-

Set pan for a music (0.5 is center).

-
- -
-
-raylib.SetMusicPitch(music: Music | list | tuple, pitch: float) None
-

Set pitch for a music (1.0 is base level).

-
- -
-
-raylib.SetMusicVolume(music: Music | list | tuple, volume: float) None
-

Set volume for music (1.0 is max level).

-
- -
-
-raylib.SetPhysicsBodyRotation(body: Any | list | tuple, radians: float) None
-

Sets physics body shape transform based on radians parameter.

-
- -
-
-raylib.SetPhysicsGravity(x: float, y: float) None
-

Sets physics global gravity force.

-
- -
-
-raylib.SetPhysicsTimeStep(delta: float) None
-

Sets physics fixed time step in milliseconds. 1.666666 by default.

-
- -
-
-raylib.SetPixelColor(dstPtr: Any, color: Color | list | tuple, format: int) None
-

Set color formatted into destination pixel pointer.

-
- -
-
-raylib.SetRandomSeed(seed: int) None
-

Set the seed for the random number generator.

-
- -
-
-raylib.SetSaveFileDataCallback(callback: bytes) None
-

Set custom file binary data saver.

-
- -
-
-raylib.SetSaveFileTextCallback(callback: bytes) None
-

Set custom file text data saver.

-
- -
-
-raylib.SetShaderValue(shader: Shader | list | tuple, locIndex: int, value: Any, uniformType: int) None
-

Set shader uniform value.

-
- -
-
-raylib.SetShaderValueMatrix(shader: Shader | list | tuple, locIndex: int, mat: Matrix | list | tuple) None
-

Set shader uniform value (matrix 4x4).

-
- -
-
-raylib.SetShaderValueTexture(shader: Shader | list | tuple, locIndex: int, texture: Texture | list | tuple) None
-

Set shader uniform value for texture (sampler2d).

-
- -
-
-raylib.SetShaderValueV(shader: Shader | list | tuple, locIndex: int, value: Any, uniformType: int, count: int) None
-

Set shader uniform value vector.

-
- -
-
-raylib.SetShapesTexture(texture: Texture | list | tuple, source: Rectangle | list | tuple) None
-

Set texture and rectangle to be used on shapes drawing.

-
- -
-
-raylib.SetSoundPan(sound: Sound | list | tuple, pan: float) None
-

Set pan for a sound (0.5 is center).

-
- -
-
-raylib.SetSoundPitch(sound: Sound | list | tuple, pitch: float) None
-

Set pitch for a sound (1.0 is base level).

-
- -
-
-raylib.SetSoundVolume(sound: Sound | list | tuple, volume: float) None
-

Set volume for a sound (1.0 is max level).

-
- -
-
-raylib.SetTargetFPS(fps: int) None
-

Set target FPS (maximum).

-
- -
-
-raylib.SetTextLineSpacing(spacing: int) None
-

Set vertical line spacing when drawing with line-breaks.

-
- -
-
-raylib.SetTextureFilter(texture: Texture | list | tuple, filter: int) None
-

Set texture scaling filter mode.

-
- -
-
-raylib.SetTextureWrap(texture: Texture | list | tuple, wrap: int) None
-

Set texture wrapping mode.

-
- -
-
-raylib.SetTraceLogCallback(callback: bytes) None
-

Set custom trace log.

-
- -
-
-raylib.SetTraceLogLevel(logLevel: int) None
-

Set the current threshold (minimum) log level.

-
- -
-
-raylib.SetWindowFocused() None
-

Set window focused.

-
- -
-
-raylib.SetWindowIcon(image: Image | list | tuple) None
-

Set icon for window (single image, RGBA 32bit).

-
- -
-
-raylib.SetWindowIcons(images: Any | list | tuple, count: int) None
-

Set icon for window (multiple images, RGBA 32bit).

-
- -
-
-raylib.SetWindowMaxSize(width: int, height: int) None
-

Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE).

-
- -
-
-raylib.SetWindowMinSize(width: int, height: int) None
-

Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE).

-
- -
-
-raylib.SetWindowMonitor(monitor: int) None
-

Set monitor for the current window.

-
- -
-
-raylib.SetWindowOpacity(opacity: float) None
-

Set window opacity [0.0f..1.0f].

-
- -
-
-raylib.SetWindowPosition(x: int, y: int) None
-

Set window position on screen.

-
- -
-
-raylib.SetWindowSize(width: int, height: int) None
-

Set window dimensions.

-
- -
-
-raylib.SetWindowState(flags: int) None
-

Set window configuration state using flags.

-
- -
-
-raylib.SetWindowTitle(title: bytes) None
-

Set title for window.

-
- -
-
-class raylib.Shader
-
-
-id: int
-
- -
-
-locs: Any
-
- -
- -
-
-raylib.ShaderAttributeDataType
-
- -
-
-raylib.ShaderLocationIndex
-
- -
-
-raylib.ShaderUniformDataType
-
- -
-
-raylib.ShowCursor() None
-

Shows cursor.

-
- -
-
-class raylib.Sound
-
-
-frameCount: int
-
- -
-
-stream: AudioStream
-
- -
- -
-
-raylib.StartAutomationEventRecording() None
-

Start recording automation events (AutomationEventList must be set).

-
- -
-
-raylib.StopAudioStream(stream: AudioStream | list | tuple) None
-

Stop audio stream.

-
- -
-
-raylib.StopAutomationEventRecording() None
-

Stop recording automation events.

-
- -
-
-raylib.StopMusicStream(music: Music | list | tuple) None
-

Stop music playing.

-
- -
-
-raylib.StopSound(sound: Sound | list | tuple) None
-

Stop playing a sound.

-
- -
-
-raylib.SwapScreenBuffer() None
-

Swap back buffer with front buffer (screen drawing).

-
- -
-
-raylib.TEXTBOX: int
-
- -
-
-raylib.TEXTURE_FILTER_ANISOTROPIC_16X: int
-
- -
-
-raylib.TEXTURE_FILTER_ANISOTROPIC_4X: int
-
- -
-
-raylib.TEXTURE_FILTER_ANISOTROPIC_8X: int
-
- -
-
-raylib.TEXTURE_FILTER_BILINEAR: int
-
- -
-
-raylib.TEXTURE_FILTER_POINT: int
-
- -
-
-raylib.TEXTURE_FILTER_TRILINEAR: int
-
- -
-
-raylib.TEXTURE_WRAP_CLAMP: int
-
- -
-
-raylib.TEXTURE_WRAP_MIRROR_CLAMP: int
-
- -
-
-raylib.TEXTURE_WRAP_MIRROR_REPEAT: int
-
- -
-
-raylib.TEXTURE_WRAP_REPEAT: int
-
- -
-
-raylib.TEXT_ALIGNMENT: int
-
- -
-
-raylib.TEXT_ALIGNMENT_VERTICAL: int
-
- -
-
-raylib.TEXT_ALIGN_BOTTOM: int
-
- -
-
-raylib.TEXT_ALIGN_CENTER: int
-
- -
-
-raylib.TEXT_ALIGN_LEFT: int
-
- -
-
-raylib.TEXT_ALIGN_MIDDLE: int
-
- -
-
-raylib.TEXT_ALIGN_RIGHT: int
-
- -
-
-raylib.TEXT_ALIGN_TOP: int
-
- -
-
-raylib.TEXT_COLOR_DISABLED: int
-
- -
-
-raylib.TEXT_COLOR_FOCUSED: int
-
- -
-
-raylib.TEXT_COLOR_NORMAL: int
-
- -
-
-raylib.TEXT_COLOR_PRESSED: int
-
- -
-
-raylib.TEXT_LINE_SPACING: int
-
- -
-
-raylib.TEXT_PADDING: int
-
- -
-
-raylib.TEXT_READONLY: int
-
- -
-
-raylib.TEXT_SIZE: int
-
- -
-
-raylib.TEXT_SPACING: int
-
- -
-
-raylib.TEXT_WRAP_CHAR: int
-
- -
-
-raylib.TEXT_WRAP_MODE: int
-
- -
-
-raylib.TEXT_WRAP_NONE: int
-
- -
-
-raylib.TEXT_WRAP_WORD: int
-
- -
-
-raylib.TOGGLE: int
-
- -
-
-raylib.TakeScreenshot(fileName: bytes) None
-

Takes a screenshot of current screen (filename extension defines format).

-
- -
-
-raylib.TextAppend(text: bytes, append: bytes, position: Any) None
-

Append text at specific position and move cursor!.

-
- -
-
-raylib.TextCopy(dst: bytes, src: bytes) int
-

Copy one string to another, returns bytes copied.

-
- -
-
-raylib.TextFindIndex(text: bytes, find: bytes) int
-

Find first text occurrence within a string.

-
- -
-
-raylib.TextFormat(*args) bytes
-

VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI

-
- -
-
-raylib.TextInsert(text: bytes, insert: bytes, position: int) bytes
-

Insert text in a position (WARNING: memory must be freed!).

-
- -
-
-raylib.TextIsEqual(text1: bytes, text2: bytes) bool
-

Check if two text string are equal.

-
- -
-
-raylib.TextJoin(textList: list[bytes], count: int, delimiter: bytes) bytes
-

Join text strings with delimiter.

-
- -
-
-raylib.TextLength(text: bytes) int
-

Get text length, checks for ‘' ending.

-
- -
-
-raylib.TextReplace(text: bytes, replace: bytes, by: bytes) bytes
-

Replace text string (WARNING: memory must be freed!).

-
- -
-
-raylib.TextSplit(text: bytes, delimiter: bytes, count: Any) list[bytes]
-

Split text into multiple strings.

-
- -
-
-raylib.TextSubtext(text: bytes, position: int, length: int) bytes
-

Get a piece of a text string.

-
- -
-
-raylib.TextToCamel(text: bytes) bytes
-

Get Camel case notation version of provided string.

-
- -
-
-raylib.TextToFloat(text: bytes) float
-

Get float value from text (negative values not supported).

-
- -
-
-raylib.TextToInteger(text: bytes) int
-

Get integer value from text (negative values not supported).

-
- -
-
-raylib.TextToLower(text: bytes) bytes
-

Get lower case version of provided string.

-
- -
-
-raylib.TextToPascal(text: bytes) bytes
-

Get Pascal case notation version of provided string.

-
- -
-
-raylib.TextToSnake(text: bytes) bytes
-

Get Snake case notation version of provided string.

-
- -
-
-raylib.TextToUpper(text: bytes) bytes
-

Get upper case version of provided string.

-
- -
-
-class raylib.Texture
-
-
-format: int
-
- -
-
-height: int
-
- -
-
-id: int
-
- -
-
-mipmaps: int
-
- -
-
-width: int
-
- -
- -
-
-class raylib.Texture2D
-
-
-format: int
-
- -
-
-height: int
-
- -
-
-id: int
-
- -
-
-mipmaps: int
-
- -
-
-width: int
-
- -
- -
-
-class raylib.TextureCubemap
-
-
-format: int
-
- -
-
-height: int
-
- -
-
-id: int
-
- -
-
-mipmaps: int
-
- -
-
-width: int
-
- -
- -
-
-raylib.TextureFilter
-
- -
-
-raylib.TextureWrap
-
- -
-
-raylib.ToggleBorderlessWindowed() None
-

Toggle window state: borderless windowed, resizes window to match monitor resolution.

-
- -
-
-raylib.ToggleFullscreen() None
-

Toggle window state: fullscreen/windowed, resizes monitor to match window resolution.

-
- -
-
-raylib.TraceLog(*args) None
-

VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI

-
- -
-
-raylib.TraceLogLevel
-
- -
-
-class raylib.Transform
-
-
-rotation: Vector4
-
- -
-
-scale: Vector3
-
- -
-
-translation: Vector3
-
- -
- -
-
-raylib.UnloadAudioStream(stream: AudioStream | list | tuple) None
-

Unload audio stream and free memory.

-
- -
-
-raylib.UnloadAutomationEventList(list_0: AutomationEventList | list | tuple) None
-

Unload automation events list from file.

-
- -
-
-raylib.UnloadCodepoints(codepoints: Any) None
-

Unload codepoints data from memory.

-
- -
-
-raylib.UnloadDirectoryFiles(files: FilePathList | list | tuple) None
-

Unload filepaths.

-
- -
-
-raylib.UnloadDroppedFiles(files: FilePathList | list | tuple) None
-

Unload dropped filepaths.

-
- -
-
-raylib.UnloadFileData(data: bytes) None
-

Unload file data allocated by LoadFileData().

-
- -
-
-raylib.UnloadFileText(text: bytes) None
-

Unload file text data allocated by LoadFileText().

-
- -
-
-raylib.UnloadFont(font: Font | list | tuple) None
-

Unload font from GPU memory (VRAM).

-
- -
-
-raylib.UnloadFontData(glyphs: Any | list | tuple, glyphCount: int) None
-

Unload font chars info data (RAM).

-
- -
-
-raylib.UnloadImage(image: Image | list | tuple) None
-

Unload image from CPU memory (RAM).

-
- -
-
-raylib.UnloadImageColors(colors: Any | list | tuple) None
-

Unload color data loaded with LoadImageColors().

-
- -
-
-raylib.UnloadImagePalette(colors: Any | list | tuple) None
-

Unload colors palette loaded with LoadImagePalette().

-
- -
-
-raylib.UnloadMaterial(material: Material | list | tuple) None
-

Unload material from GPU memory (VRAM).

-
- -
-
-raylib.UnloadMesh(mesh: Mesh | list | tuple) None
-

Unload mesh data from CPU and GPU.

-
- -
-
-raylib.UnloadModel(model: Model | list | tuple) None
-

Unload model (including meshes) from memory (RAM and/or VRAM).

-
- -
-
-raylib.UnloadModelAnimation(anim: ModelAnimation | list | tuple) None
-

Unload animation data.

-
- -
-
-raylib.UnloadModelAnimations(animations: Any | list | tuple, animCount: int) None
-

Unload animation array data.

-
- -
-
-raylib.UnloadMusicStream(music: Music | list | tuple) None
-

Unload music stream.

-
- -
-
-raylib.UnloadRandomSequence(sequence: Any) None
-

Unload random values sequence.

-
- -
-
-raylib.UnloadRenderTexture(target: RenderTexture | list | tuple) None
-

Unload render texture from GPU memory (VRAM).

-
- -
-
-raylib.UnloadShader(shader: Shader | list | tuple) None
-

Unload shader from GPU memory (VRAM).

-
- -
-
-raylib.UnloadSound(sound: Sound | list | tuple) None
-

Unload sound.

-
- -
-
-raylib.UnloadSoundAlias(alias: Sound | list | tuple) None
-

Unload a sound alias (does not deallocate sample data).

-
- -
-
-raylib.UnloadTexture(texture: Texture | list | tuple) None
-

Unload texture from GPU memory (VRAM).

-
- -
-
-raylib.UnloadUTF8(text: bytes) None
-

Unload UTF-8 text encoded from codepoints array.

-
- -
-
-raylib.UnloadVrStereoConfig(config: VrStereoConfig | list | tuple) None
-

Unload VR stereo config.

-
- -
-
-raylib.UnloadWave(wave: Wave | list | tuple) None
-

Unload wave data.

-
- -
-
-raylib.UnloadWaveSamples(samples: Any) None
-

Unload samples data loaded with LoadWaveSamples().

-
- -
-
-raylib.UpdateAudioStream(stream: AudioStream | list | tuple, data: Any, frameCount: int) None
-

Update audio stream buffers with data.

-
- -
-
-raylib.UpdateCamera(camera: Any | list | tuple, mode: int) None
-

Update camera position for selected mode.

-
- -
-
-raylib.UpdateCameraPro(camera: Any | list | tuple, movement: Vector3 | list | tuple, rotation: Vector3 | list | tuple, zoom: float) None
-

Update camera movement/rotation.

-
- -
-
-raylib.UpdateMeshBuffer(mesh: Mesh | list | tuple, index: int, data: Any, dataSize: int, offset: int) None
-

Update mesh vertex data in GPU for a specific buffer index.

-
- -
-
-raylib.UpdateModelAnimation(model: Model | list | tuple, anim: ModelAnimation | list | tuple, frame: int) None
-

Update model animation pose (CPU).

-
- -
-
-raylib.UpdateModelAnimationBones(model: Model | list | tuple, anim: ModelAnimation | list | tuple, frame: int) None
-

Update model animation mesh bone matrices (GPU skinning).

-
- -
-
-raylib.UpdateMusicStream(music: Music | list | tuple) None
-

Updates buffers for music streaming.

-
- -
-
-raylib.UpdatePhysics() None
-

Update physics system.

-
- -
-
-raylib.UpdateSound(sound: Sound | list | tuple, data: Any, sampleCount: int) None
-

Update sound buffer with new data.

-
- -
-
-raylib.UpdateTexture(texture: Texture | list | tuple, pixels: Any) None
-

Update GPU texture with new data.

-
- -
-
-raylib.UpdateTextureRec(texture: Texture | list | tuple, rec: Rectangle | list | tuple, pixels: Any) None
-

Update GPU texture rectangle with new data.

-
- -
-
-raylib.UploadMesh(mesh: Any | list | tuple, dynamic: bool) None
-

Upload mesh vertex data in GPU and provide VAO/VBO ids.

-
- -
-
-raylib.VALUEBOX: int
-
- -
-
-raylib.VIOLET: Color
-
- -
-
-class raylib.Vector2
-
-
-x: float
-
- -
-
-y: float
-
- -
- -
-
-raylib.Vector2Add(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2AddValue(v: Vector2 | list | tuple, add: float) Vector2
-

.

-
- -
-
-raylib.Vector2Angle(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) float
-

.

-
- -
-
-raylib.Vector2Clamp(v: Vector2 | list | tuple, min_1: Vector2 | list | tuple, max_2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2ClampValue(v: Vector2 | list | tuple, min_1: float, max_2: float) Vector2
-

.

-
- -
-
-raylib.Vector2Distance(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) float
-

.

-
- -
-
-raylib.Vector2DistanceSqr(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) float
-

.

-
- -
-
-raylib.Vector2Divide(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2DotProduct(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) float
-

.

-
- -
-
-raylib.Vector2Equals(p: Vector2 | list | tuple, q: Vector2 | list | tuple) int
-

.

-
- -
-
-raylib.Vector2Invert(v: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2Length(v: Vector2 | list | tuple) float
-

.

-
- -
-
-raylib.Vector2LengthSqr(v: Vector2 | list | tuple) float
-

.

-
- -
-
-raylib.Vector2Lerp(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple, amount: float) Vector2
-

.

-
- -
-
-raylib.Vector2LineAngle(start: Vector2 | list | tuple, end: Vector2 | list | tuple) float
-

.

-
- -
-
-raylib.Vector2Max(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2Min(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2MoveTowards(v: Vector2 | list | tuple, target: Vector2 | list | tuple, maxDistance: float) Vector2
-

.

-
- -
-
-raylib.Vector2Multiply(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2Negate(v: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2Normalize(v: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2One() Vector2
-

.

-
- -
-
-raylib.Vector2Reflect(v: Vector2 | list | tuple, normal: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2Refract(v: Vector2 | list | tuple, n: Vector2 | list | tuple, r: float) Vector2
-

.

-
- -
-
-raylib.Vector2Rotate(v: Vector2 | list | tuple, angle: float) Vector2
-

.

-
- -
-
-raylib.Vector2Scale(v: Vector2 | list | tuple, scale: float) Vector2
-

.

-
- -
-
-raylib.Vector2Subtract(v1: Vector2 | list | tuple, v2: Vector2 | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2SubtractValue(v: Vector2 | list | tuple, sub: float) Vector2
-

.

-
- -
-
-raylib.Vector2Transform(v: Vector2 | list | tuple, mat: Matrix | list | tuple) Vector2
-

.

-
- -
-
-raylib.Vector2Zero() Vector2
-

.

-
- -
-
-class raylib.Vector3
-
-
-x: float
-
- -
-
-y: float
-
- -
-
-z: float
-
- -
- -
-
-raylib.Vector3Add(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3AddValue(v: Vector3 | list | tuple, add: float) Vector3
-

.

-
- -
-
-raylib.Vector3Angle(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) float
-

.

-
- -
-
-raylib.Vector3Barycenter(p: Vector3 | list | tuple, a: Vector3 | list | tuple, b: Vector3 | list | tuple, c: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Clamp(v: Vector3 | list | tuple, min_1: Vector3 | list | tuple, max_2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3ClampValue(v: Vector3 | list | tuple, min_1: float, max_2: float) Vector3
-

.

-
- -
-
-raylib.Vector3CrossProduct(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3CubicHermite(v1: Vector3 | list | tuple, tangent1: Vector3 | list | tuple, v2: Vector3 | list | tuple, tangent2: Vector3 | list | tuple, amount: float) Vector3
-

.

-
- -
-
-raylib.Vector3Distance(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) float
-

.

-
- -
-
-raylib.Vector3DistanceSqr(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) float
-

.

-
- -
-
-raylib.Vector3Divide(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3DotProduct(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) float
-

.

-
- -
-
-raylib.Vector3Equals(p: Vector3 | list | tuple, q: Vector3 | list | tuple) int
-

.

-
- -
-
-raylib.Vector3Invert(v: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Length(v: Vector3 | list | tuple) float
-

.

-
- -
-
-raylib.Vector3LengthSqr(v: Vector3 | list | tuple) float
-

.

-
- -
-
-raylib.Vector3Lerp(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple, amount: float) Vector3
-

.

-
- -
-
-raylib.Vector3Max(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Min(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3MoveTowards(v: Vector3 | list | tuple, target: Vector3 | list | tuple, maxDistance: float) Vector3
-

.

-
- -
-
-raylib.Vector3Multiply(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Negate(v: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Normalize(v: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3One() Vector3
-

.

-
- -
-
-raylib.Vector3OrthoNormalize(v1: Any | list | tuple, v2: Any | list | tuple) None
-

.

-
- -
-
-raylib.Vector3Perpendicular(v: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Project(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Reflect(v: Vector3 | list | tuple, normal: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Refract(v: Vector3 | list | tuple, n: Vector3 | list | tuple, r: float) Vector3
-

.

-
- -
-
-raylib.Vector3Reject(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3RotateByAxisAngle(v: Vector3 | list | tuple, axis: Vector3 | list | tuple, angle: float) Vector3
-

.

-
- -
-
-raylib.Vector3RotateByQuaternion(v: Vector3 | list | tuple, q: Vector4 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Scale(v: Vector3 | list | tuple, scalar: float) Vector3
-

.

-
- -
-
-raylib.Vector3Subtract(v1: Vector3 | list | tuple, v2: Vector3 | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3SubtractValue(v: Vector3 | list | tuple, sub: float) Vector3
-

.

-
- -
-
-raylib.Vector3ToFloatV(v: Vector3 | list | tuple) float3
-

.

-
- -
-
-raylib.Vector3Transform(v: Vector3 | list | tuple, mat: Matrix | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Unproject(source: Vector3 | list | tuple, projection: Matrix | list | tuple, view: Matrix | list | tuple) Vector3
-

.

-
- -
-
-raylib.Vector3Zero() Vector3
-

.

-
- -
-
-class raylib.Vector4
-
-
-w: float
-
- -
-
-x: float
-
- -
-
-y: float
-
- -
-
-z: float
-
- -
- -
-
-raylib.Vector4Add(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.Vector4AddValue(v: Vector4 | list | tuple, add: float) Vector4
-

.

-
- -
-
-raylib.Vector4Distance(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) float
-

.

-
- -
-
-raylib.Vector4DistanceSqr(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) float
-

.

-
- -
-
-raylib.Vector4Divide(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.Vector4DotProduct(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) float
-

.

-
- -
-
-raylib.Vector4Equals(p: Vector4 | list | tuple, q: Vector4 | list | tuple) int
-

.

-
- -
-
-raylib.Vector4Invert(v: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.Vector4Length(v: Vector4 | list | tuple) float
-

.

-
- -
-
-raylib.Vector4LengthSqr(v: Vector4 | list | tuple) float
-

.

-
- -
-
-raylib.Vector4Lerp(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple, amount: float) Vector4
-

.

-
- -
-
-raylib.Vector4Max(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.Vector4Min(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.Vector4MoveTowards(v: Vector4 | list | tuple, target: Vector4 | list | tuple, maxDistance: float) Vector4
-

.

-
- -
-
-raylib.Vector4Multiply(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.Vector4Negate(v: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.Vector4Normalize(v: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.Vector4One() Vector4
-

.

-
- -
-
-raylib.Vector4Scale(v: Vector4 | list | tuple, scale: float) Vector4
-

.

-
- -
-
-raylib.Vector4Subtract(v1: Vector4 | list | tuple, v2: Vector4 | list | tuple) Vector4
-

.

-
- -
-
-raylib.Vector4SubtractValue(v: Vector4 | list | tuple, add: float) Vector4
-

.

-
- -
-
-raylib.Vector4Zero() Vector4
-

.

-
- -
-
-class raylib.VrDeviceInfo
-
-
-chromaAbCorrection: list
-
- -
-
-eyeToScreenDistance: float
-
- -
-
-hResolution: int
-
- -
-
-hScreenSize: float
-
- -
-
-interpupillaryDistance: float
-
- -
-
-lensDistortionValues: list
-
- -
-
-lensSeparationDistance: float
-
- -
-
-vResolution: int
-
- -
-
-vScreenSize: float
-
- -
- -
-
-class raylib.VrStereoConfig
-
-
-leftLensCenter: list
-
- -
-
-leftScreenCenter: list
-
- -
-
-projection: list
-
- -
-
-rightLensCenter: list
-
- -
-
-rightScreenCenter: list
-
- -
-
-scale: list
-
- -
-
-scaleIn: list
-
- -
-
-viewOffset: list
-
- -
- -
-
-raylib.WHITE: Color
-
- -
-
-raylib.WaitTime(seconds: float) None
-

Wait for some time (halt program execution).

-
- -
-
-class raylib.Wave
-
-
-channels: int
-
- -
-
-data: Any
-
- -
-
-frameCount: int
-
- -
-
-sampleRate: int
-
- -
-
-sampleSize: int
-
- -
- -
-
-raylib.WaveCopy(wave: Wave | list | tuple) Wave
-

Copy a wave to a new wave.

-
- -
-
-raylib.WaveCrop(wave: Any | list | tuple, initFrame: int, finalFrame: int) None
-

Crop a wave to defined frames range.

-
- -
-
-raylib.WaveFormat(wave: Any | list | tuple, sampleRate: int, sampleSize: int, channels: int) None
-

Convert wave data to desired format.

-
- -
-
-raylib.WindowShouldClose() bool
-

Check if application should close (KEY_ESCAPE pressed or windows close icon clicked).

-
- -
-
-raylib.Wrap(value: float, min_1: float, max_2: float) float
-

.

-
- -
-
-raylib.YELLOW: Color
-
- -
-
-raylib.ffi: _cffi_backend.FFI
-
- -
-
-class raylib.float16
-
-
-v: list
-
- -
- -
-
-class raylib.float3
-
-
-v: list
-
- -
- -
-
-raylib.glfwCreateCursor(image: Any | list | tuple, xhot: int, yhot: int) Any
-

.

-
- -
-
-raylib.glfwCreateStandardCursor(shape: int) Any
-

.

-
- -
-
-raylib.glfwCreateWindow(width: int, height: int, title: bytes, monitor: Any | list | tuple, share: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwDefaultWindowHints() None
-

.

-
- -
-
-raylib.glfwDestroyCursor(cursor: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwDestroyWindow(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwExtensionSupported(extension: bytes) int
-

.

-
- -
-
-raylib.glfwFocusWindow(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwGetClipboardString(window: Any | list | tuple) bytes
-

.

-
- -
-
-raylib.glfwGetCurrentContext() Any
-

.

-
- -
-
-raylib.glfwGetCursorPos(window: Any | list | tuple, xpos: Any, ypos: Any) None
-

.

-
- -
-
-raylib.glfwGetError(description: list[bytes]) int
-

.

-
- -
-
-raylib.glfwGetFramebufferSize(window: Any | list | tuple, width: Any, height: Any) None
-

.

-
- -
-
-raylib.glfwGetGamepadName(jid: int) bytes
-

.

-
- -
-
-raylib.glfwGetGamepadState(jid: int, state: Any | list | tuple) int
-

.

-
- -
-
-raylib.glfwGetGammaRamp(monitor: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwGetInputMode(window: Any | list | tuple, mode: int) int
-

.

-
- -
-
-raylib.glfwGetJoystickAxes(jid: int, count: Any) Any
-

.

-
- -
-
-raylib.glfwGetJoystickButtons(jid: int, count: Any) bytes
-

.

-
- -
-
-raylib.glfwGetJoystickGUID(jid: int) bytes
-

.

-
- -
-
-raylib.glfwGetJoystickHats(jid: int, count: Any) bytes
-

.

-
- -
-
-raylib.glfwGetJoystickName(jid: int) bytes
-

.

-
- -
-
-raylib.glfwGetJoystickUserPointer(jid: int) Any
-

.

-
- -
-
-raylib.glfwGetKey(window: Any | list | tuple, key: int) int
-

.

-
- -
-
-raylib.glfwGetKeyName(key: int, scancode: int) bytes
-

.

-
- -
-
-raylib.glfwGetKeyScancode(key: int) int
-

.

-
- -
-
-raylib.glfwGetMonitorContentScale(monitor: Any | list | tuple, xscale: Any, yscale: Any) None
-

.

-
- -
-
-raylib.glfwGetMonitorName(monitor: Any | list | tuple) bytes
-

.

-
- -
-
-raylib.glfwGetMonitorPhysicalSize(monitor: Any | list | tuple, widthMM: Any, heightMM: Any) None
-

.

-
- -
-
-raylib.glfwGetMonitorPos(monitor: Any | list | tuple, xpos: Any, ypos: Any) None
-

.

-
- -
-
-raylib.glfwGetMonitorUserPointer(monitor: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwGetMonitorWorkarea(monitor: Any | list | tuple, xpos: Any, ypos: Any, width: Any, height: Any) None
-

.

-
- -
-
-raylib.glfwGetMonitors(count: Any) Any
-

.

-
- -
-
-raylib.glfwGetMouseButton(window: Any | list | tuple, button: int) int
-

.

-
- -
-
-raylib.glfwGetPlatform() int
-

.

-
- -
-
-raylib.glfwGetPrimaryMonitor() Any
-

.

-
- -
-
-raylib.glfwGetProcAddress(procname: bytes) Any
-

.

-
- -
-
-raylib.glfwGetRequiredInstanceExtensions(count: Any) list[bytes]
-

.

-
- -
-
-raylib.glfwGetTime() float
-

.

-
- -
-
-raylib.glfwGetTimerFrequency() int
-

.

-
- -
-
-raylib.glfwGetTimerValue() int
-

.

-
- -
-
-raylib.glfwGetVersion(major: Any, minor: Any, rev: Any) None
-

.

-
- -
-
-raylib.glfwGetVersionString() bytes
-

.

-
- -
-
-raylib.glfwGetVideoMode(monitor: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwGetVideoModes(monitor: Any | list | tuple, count: Any) Any
-

.

-
- -
-
-raylib.glfwGetWindowAttrib(window: Any | list | tuple, attrib: int) int
-

.

-
- -
-
-raylib.glfwGetWindowContentScale(window: Any | list | tuple, xscale: Any, yscale: Any) None
-

.

-
- -
-
-raylib.glfwGetWindowFrameSize(window: Any | list | tuple, left: Any, top: Any, right: Any, bottom: Any) None
-

.

-
- -
-
-raylib.glfwGetWindowMonitor(window: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwGetWindowOpacity(window: Any | list | tuple) float
-

.

-
- -
-
-raylib.glfwGetWindowPos(window: Any | list | tuple, xpos: Any, ypos: Any) None
-

.

-
- -
-
-raylib.glfwGetWindowSize(window: Any | list | tuple, width: Any, height: Any) None
-

.

-
- -
-
-raylib.glfwGetWindowTitle(window: Any | list | tuple) bytes
-

.

-
- -
-
-raylib.glfwGetWindowUserPointer(window: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwHideWindow(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwIconifyWindow(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwInit() int
-

.

-
- -
-
-raylib.glfwInitAllocator(allocator: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwInitHint(hint: int, value: int) None
-

.

-
- -
-
-raylib.glfwJoystickIsGamepad(jid: int) int
-

.

-
- -
-
-raylib.glfwJoystickPresent(jid: int) int
-

.

-
- -
-
-raylib.glfwMakeContextCurrent(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwMaximizeWindow(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwPlatformSupported(platform: int) int
-

.

-
- -
-
-raylib.glfwPollEvents() None
-

.

-
- -
-
-raylib.glfwPostEmptyEvent() None
-

.

-
- -
-
-raylib.glfwRawMouseMotionSupported() int
-

.

-
- -
-
-raylib.glfwRequestWindowAttention(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwRestoreWindow(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwSetCharCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetCharModsCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetClipboardString(window: Any | list | tuple, string: bytes) None
-

.

-
- -
-
-raylib.glfwSetCursor(window: Any | list | tuple, cursor: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwSetCursorEnterCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetCursorPos(window: Any | list | tuple, xpos: float, ypos: float) None
-

.

-
- -
-
-raylib.glfwSetCursorPosCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetDropCallback(window: Any | list | tuple, callback: list[bytes] | list | tuple) list[bytes]
-

.

-
- -
-
-raylib.glfwSetErrorCallback(callback: bytes) bytes
-

.

-
- -
-
-raylib.glfwSetFramebufferSizeCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetGamma(monitor: Any | list | tuple, gamma: float) None
-

.

-
- -
-
-raylib.glfwSetGammaRamp(monitor: Any | list | tuple, ramp: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwSetInputMode(window: Any | list | tuple, mode: int, value: int) None
-

.

-
- -
-
-raylib.glfwSetJoystickCallback(callback: Any) Any
-

.

-
- -
-
-raylib.glfwSetJoystickUserPointer(jid: int, pointer: Any) None
-

.

-
- -
-
-raylib.glfwSetKeyCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetMonitorCallback(callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetMonitorUserPointer(monitor: Any | list | tuple, pointer: Any) None
-

.

-
- -
-
-raylib.glfwSetMouseButtonCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetScrollCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetTime(time: float) None
-

.

-
- -
-
-raylib.glfwSetWindowAspectRatio(window: Any | list | tuple, numer: int, denom: int) None
-

.

-
- -
-
-raylib.glfwSetWindowAttrib(window: Any | list | tuple, attrib: int, value: int) None
-

.

-
- -
-
-raylib.glfwSetWindowCloseCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetWindowContentScaleCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetWindowFocusCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetWindowIcon(window: Any | list | tuple, count: int, images: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwSetWindowIconifyCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetWindowMaximizeCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetWindowMonitor(window: Any | list | tuple, monitor: Any | list | tuple, xpos: int, ypos: int, width: int, height: int, refreshRate: int) None
-

.

-
- -
-
-raylib.glfwSetWindowOpacity(window: Any | list | tuple, opacity: float) None
-

.

-
- -
-
-raylib.glfwSetWindowPos(window: Any | list | tuple, xpos: int, ypos: int) None
-

.

-
- -
-
-raylib.glfwSetWindowPosCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetWindowRefreshCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetWindowShouldClose(window: Any | list | tuple, value: int) None
-

.

-
- -
-
-raylib.glfwSetWindowSize(window: Any | list | tuple, width: int, height: int) None
-

.

-
- -
-
-raylib.glfwSetWindowSizeCallback(window: Any | list | tuple, callback: Any | list | tuple) Any
-

.

-
- -
-
-raylib.glfwSetWindowSizeLimits(window: Any | list | tuple, minwidth: int, minheight: int, maxwidth: int, maxheight: int) None
-

.

-
- -
-
-raylib.glfwSetWindowTitle(window: Any | list | tuple, title: bytes) None
-

.

-
- -
-
-raylib.glfwSetWindowUserPointer(window: Any | list | tuple, pointer: Any) None
-

.

-
- -
-
-raylib.glfwShowWindow(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwSwapBuffers(window: Any | list | tuple) None
-

.

-
- -
-
-raylib.glfwSwapInterval(interval: int) None
-

.

-
- -
-
-raylib.glfwTerminate() None
-

.

-
- -
-
-raylib.glfwUpdateGamepadMappings(string: bytes) int
-

.

-
- -
-
-raylib.glfwVulkanSupported() int
-

.

-
- -
-
-raylib.glfwWaitEvents() None
-

.

-
- -
-
-raylib.glfwWaitEventsTimeout(timeout: float) None
-

.

-
- -
-
-raylib.glfwWindowHint(hint: int, value: int) None
-

.

-
- -
-
-raylib.glfwWindowHintString(hint: int, value: bytes) None
-

.

-
- -
-
-raylib.glfwWindowShouldClose(window: Any | list | tuple) int
-

.

-
- -
-
-class raylib.rAudioBuffer
-
- -
-
-class raylib.rAudioProcessor
-
- -
-
-raylib.rl: _cffi_backend.Lib
-
- -
-
-raylib.rlActiveDrawBuffers(count: int) None
-

Activate multiple draw color buffers.

-
- -
-
-raylib.rlActiveTextureSlot(slot: int) None
-

Select and active a texture slot.

-
- -
-
-raylib.rlBegin(mode: int) None
-

Initialize drawing mode (how to organize vertex).

-
- -
-
-raylib.rlBindFramebuffer(target: int, framebuffer: int) None
-

Bind framebuffer (FBO).

-
- -
-
-raylib.rlBindImageTexture(id: int, index: int, format: int, readonly: bool) None
-

Bind image texture.

-
- -
-
-raylib.rlBindShaderBuffer(id: int, index: int) None
-

Bind SSBO buffer.

-
- -
-
-raylib.rlBlendMode
-
- -
-
-raylib.rlBlitFramebuffer(srcX: int, srcY: int, srcWidth: int, srcHeight: int, dstX: int, dstY: int, dstWidth: int, dstHeight: int, bufferMask: int) None
-

Blit active framebuffer to main framebuffer.

-
- -
-
-raylib.rlCheckErrors() None
-

Check and log OpenGL error codes.

-
- -
-
-raylib.rlCheckRenderBatchLimit(vCount: int) bool
-

Check internal buffer overflow for a given number of vertex.

-
- -
-
-raylib.rlClearColor(r: bytes, g: bytes, b: bytes, a: bytes) None
-

Clear color buffer with color.

-
- -
-
-raylib.rlClearScreenBuffers() None
-

Clear used screen buffers (color and depth).

-
- -
-
-raylib.rlColor3f(x: float, y: float, z: float) None
-

Define one vertex (color) - 3 float.

-
- -
-
-raylib.rlColor4f(x: float, y: float, z: float, w: float) None
-

Define one vertex (color) - 4 float.

-
- -
-
-raylib.rlColor4ub(r: bytes, g: bytes, b: bytes, a: bytes) None
-

Define one vertex (color) - 4 byte.

-
- -
-
-raylib.rlColorMask(r: bool, g: bool, b: bool, a: bool) None
-

Color mask control.

-
- -
-
-raylib.rlCompileShader(shaderCode: bytes, type: int) int
-

Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER).

-
- -
-
-raylib.rlComputeShaderDispatch(groupX: int, groupY: int, groupZ: int) None
-

Dispatch compute shader (equivalent to draw for graphics pipeline).

-
- -
-
-raylib.rlCopyShaderBuffer(destId: int, srcId: int, destOffset: int, srcOffset: int, count: int) None
-

Copy SSBO data between buffers.

-
- -
-
-raylib.rlCubemapParameters(id: int, param: int, value: int) None
-

Set cubemap parameters (filter, wrap).

-
- -
-
-raylib.rlCullMode
-
- -
-
-raylib.rlDisableBackfaceCulling() None
-

Disable backface culling.

-
- -
-
-raylib.rlDisableColorBlend() None
-

Disable color blending.

-
- -
-
-raylib.rlDisableDepthMask() None
-

Disable depth write.

-
- -
-
-raylib.rlDisableDepthTest() None
-

Disable depth test.

-
- -
-
-raylib.rlDisableFramebuffer() None
-

Disable render texture (fbo), return to default framebuffer.

-
- -
-
-raylib.rlDisableScissorTest() None
-

Disable scissor test.

-
- -
-
-raylib.rlDisableShader() None
-

Disable shader program.

-
- -
-
-raylib.rlDisableSmoothLines() None
-

Disable line aliasing.

-
- -
-
-raylib.rlDisableStereoRender() None
-

Disable stereo rendering.

-
- -
-
-raylib.rlDisableTexture() None
-

Disable texture.

-
- -
-
-raylib.rlDisableTextureCubemap() None
-

Disable texture cubemap.

-
- -
-
-raylib.rlDisableVertexArray() None
-

Disable vertex array (VAO, if supported).

-
- -
-
-raylib.rlDisableVertexAttribute(index: int) None
-

Disable vertex attribute index.

-
- -
-
-raylib.rlDisableVertexBuffer() None
-

Disable vertex buffer (VBO).

-
- -
-
-raylib.rlDisableVertexBufferElement() None
-

Disable vertex buffer element (VBO element).

-
- -
-
-raylib.rlDisableWireMode() None
-

Disable wire (and point) mode.

-
- -
-
-class raylib.rlDrawCall
-
-
-mode: int
-
- -
-
-textureId: int
-
- -
-
-vertexAlignment: int
-
- -
-
-vertexCount: int
-
- -
- -
-
-raylib.rlDrawRenderBatch(batch: Any | list | tuple) None
-

Draw render batch data (Update->Draw->Reset).

-
- -
-
-raylib.rlDrawRenderBatchActive() None
-

Update and draw internal render batch.

-
- -
-
-raylib.rlDrawVertexArray(offset: int, count: int) None
-

Draw vertex array (currently active vao).

-
- -
-
-raylib.rlDrawVertexArrayElements(offset: int, count: int, buffer: Any) None
-

Draw vertex array elements.

-
- -
-
-raylib.rlDrawVertexArrayElementsInstanced(offset: int, count: int, buffer: Any, instances: int) None
-

Draw vertex array elements with instancing.

-
- -
-
-raylib.rlDrawVertexArrayInstanced(offset: int, count: int, instances: int) None
-

Draw vertex array (currently active vao) with instancing.

-
- -
-
-raylib.rlEnableBackfaceCulling() None
-

Enable backface culling.

-
- -
-
-raylib.rlEnableColorBlend() None
-

Enable color blending.

-
- -
-
-raylib.rlEnableDepthMask() None
-

Enable depth write.

-
- -
-
-raylib.rlEnableDepthTest() None
-

Enable depth test.

-
- -
-
-raylib.rlEnableFramebuffer(id: int) None
-

Enable render texture (fbo).

-
- -
-
-raylib.rlEnablePointMode() None
-

Enable point mode.

-
- -
-
-raylib.rlEnableScissorTest() None
-

Enable scissor test.

-
- -
-
-raylib.rlEnableShader(id: int) None
-

Enable shader program.

-
- -
-
-raylib.rlEnableSmoothLines() None
-

Enable line aliasing.

-
- -
-
-raylib.rlEnableStereoRender() None
-

Enable stereo rendering.

-
- -
-
-raylib.rlEnableTexture(id: int) None
-

Enable texture.

-
- -
-
-raylib.rlEnableTextureCubemap(id: int) None
-

Enable texture cubemap.

-
- -
-
-raylib.rlEnableVertexArray(vaoId: int) bool
-

Enable vertex array (VAO, if supported).

-
- -
-
-raylib.rlEnableVertexAttribute(index: int) None
-

Enable vertex attribute index.

-
- -
-
-raylib.rlEnableVertexBuffer(id: int) None
-

Enable vertex buffer (VBO).

-
- -
-
-raylib.rlEnableVertexBufferElement(id: int) None
-

Enable vertex buffer element (VBO element).

-
- -
-
-raylib.rlEnableWireMode() None
-

Enable wire mode.

-
- -
-
-raylib.rlEnd() None
-

Finish vertex providing.

-
- -
-
-raylib.rlFramebufferAttach(fboId: int, texId: int, attachType: int, texType: int, mipLevel: int) None
-

Attach texture/renderbuffer to a framebuffer.

-
- -
-
-raylib.rlFramebufferAttachTextureType
-
- -
-
-raylib.rlFramebufferAttachType
-
- -
-
-raylib.rlFramebufferComplete(id: int) bool
-

Verify framebuffer is complete.

-
- -
-
-raylib.rlFrustum(left: float, right: float, bottom: float, top: float, znear: float, zfar: float) None
-

.

-
- -
-
-raylib.rlGenTextureMipmaps(id: int, width: int, height: int, format: int, mipmaps: Any) None
-

Generate mipmap data for selected texture.

-
- -
-
-raylib.rlGetActiveFramebuffer() int
-

Get the currently active render texture (fbo), 0 for default framebuffer.

-
- -
-
-raylib.rlGetCullDistanceFar() float
-

Get cull plane distance far.

-
- -
-
-raylib.rlGetCullDistanceNear() float
-

Get cull plane distance near.

-
- -
-
-raylib.rlGetFramebufferHeight() int
-

Get default framebuffer height.

-
- -
-
-raylib.rlGetFramebufferWidth() int
-

Get default framebuffer width.

-
- -
-
-raylib.rlGetGlTextureFormats(format: int, glInternalFormat: Any, glFormat: Any, glType: Any) None
-

Get OpenGL internal formats.

-
- -
-
-raylib.rlGetLineWidth() float
-

Get the line drawing width.

-
- -
-
-raylib.rlGetLocationAttrib(shaderId: int, attribName: bytes) int
-

Get shader location attribute.

-
- -
-
-raylib.rlGetLocationUniform(shaderId: int, uniformName: bytes) int
-

Get shader location uniform.

-
- -
-
-raylib.rlGetMatrixModelview() Matrix
-

Get internal modelview matrix.

-
- -
-
-raylib.rlGetMatrixProjection() Matrix
-

Get internal projection matrix.

-
- -
-
-raylib.rlGetMatrixProjectionStereo(eye: int) Matrix
-

Get internal projection matrix for stereo render (selected eye).

-
- -
-
-raylib.rlGetMatrixTransform() Matrix
-

Get internal accumulated transform matrix.

-
- -
-
-raylib.rlGetMatrixViewOffsetStereo(eye: int) Matrix
-

Get internal view offset matrix for stereo render (selected eye).

-
- -
-
-raylib.rlGetPixelFormatName(format: int) bytes
-

Get name string for pixel format.

-
- -
-
-raylib.rlGetShaderBufferSize(id: int) int
-

Get SSBO buffer size.

-
- -
-
-raylib.rlGetShaderIdDefault() int
-

Get default shader id.

-
- -
-
-raylib.rlGetShaderLocsDefault() Any
-

Get default shader locations.

-
- -
-
-raylib.rlGetTextureIdDefault() int
-

Get default texture id.

-
- -
-
-raylib.rlGetVersion() int
-

Get current OpenGL version.

-
- -
-
-raylib.rlGlVersion
-
- -
-
-raylib.rlIsStereoRenderEnabled() bool
-

Check if stereo render is enabled.

-
- -
-
-raylib.rlLoadComputeShaderProgram(shaderId: int) int
-

Load compute shader program.

-
- -
-
-raylib.rlLoadDrawCube() None
-

Load and draw a cube.

-
- -
-
-raylib.rlLoadDrawQuad() None
-

Load and draw a quad.

-
- -
-
-raylib.rlLoadExtensions(loader: Any) None
-

Load OpenGL extensions (loader function required).

-
- -
-
-raylib.rlLoadFramebuffer() int
-

Load an empty framebuffer.

-
- -
-
-raylib.rlLoadIdentity() None
-

Reset current matrix to identity matrix.

-
- -
-
-raylib.rlLoadRenderBatch(numBuffers: int, bufferElements: int) rlRenderBatch
-

Load a render batch system.

-
- -
-
-raylib.rlLoadShaderBuffer(size: int, data: Any, usageHint: int) int
-

Load shader storage buffer object (SSBO).

-
- -
-
-raylib.rlLoadShaderCode(vsCode: bytes, fsCode: bytes) int
-

Load shader from code strings.

-
- -
-
-raylib.rlLoadShaderProgram(vShaderId: int, fShaderId: int) int
-

Load custom shader program.

-
- -
-
-raylib.rlLoadTexture(data: Any, width: int, height: int, format: int, mipmapCount: int) int
-

Load texture data.

-
- -
-
-raylib.rlLoadTextureCubemap(data: Any, size: int, format: int, mipmapCount: int) int
-

Load texture cubemap data.

-
- -
-
-raylib.rlLoadTextureDepth(width: int, height: int, useRenderBuffer: bool) int
-

Load depth texture/renderbuffer (to be attached to fbo).

-
- -
-
-raylib.rlLoadVertexArray() int
-

Load vertex array (vao) if supported.

-
- -
-
-raylib.rlLoadVertexBuffer(buffer: Any, size: int, dynamic: bool) int
-

Load a vertex buffer object.

-
- -
-
-raylib.rlLoadVertexBufferElement(buffer: Any, size: int, dynamic: bool) int
-

Load vertex buffer elements object.

-
- -
-
-raylib.rlMatrixMode(mode: int) None
-

Choose the current matrix to be transformed.

-
- -
-
-raylib.rlMultMatrixf(matf: Any) None
-

Multiply the current matrix by another matrix.

-
- -
-
-raylib.rlNormal3f(x: float, y: float, z: float) None
-

Define one vertex (normal) - 3 float.

-
- -
-
-raylib.rlOrtho(left: float, right: float, bottom: float, top: float, znear: float, zfar: float) None
-

.

-
- -
-
-raylib.rlPixelFormat
-
- -
-
-raylib.rlPopMatrix() None
-

Pop latest inserted matrix from stack.

-
- -
-
-raylib.rlPushMatrix() None
-

Push the current matrix to stack.

-
- -
-
-raylib.rlReadScreenPixels(width: int, height: int) bytes
-

Read screen pixel data (color buffer).

-
- -
-
-raylib.rlReadShaderBuffer(id: int, dest: Any, count: int, offset: int) None
-

Read SSBO buffer data (GPU->CPU).

-
- -
-
-raylib.rlReadTexturePixels(id: int, width: int, height: int, format: int) Any
-

Read texture pixel data.

-
- -
-
-class raylib.rlRenderBatch
-
-
-bufferCount: int
-
- -
-
-currentBuffer: int
-
- -
-
-currentDepth: float
-
- -
-
-drawCounter: int
-
- -
-
-draws: Any
-
- -
-
-vertexBuffer: Any
-
- -
- -
-
-raylib.rlRotatef(angle: float, x: float, y: float, z: float) None
-

Multiply the current matrix by a rotation matrix.

-
- -
-
-raylib.rlScalef(x: float, y: float, z: float) None
-

Multiply the current matrix by a scaling matrix.

-
- -
-
-raylib.rlScissor(x: int, y: int, width: int, height: int) None
-

Scissor test.

-
- -
-
-raylib.rlSetBlendFactors(glSrcFactor: int, glDstFactor: int, glEquation: int) None
-

Set blending mode factor and equation (using OpenGL factors).

-
- -
-
-raylib.rlSetBlendFactorsSeparate(glSrcRGB: int, glDstRGB: int, glSrcAlpha: int, glDstAlpha: int, glEqRGB: int, glEqAlpha: int) None
-

Set blending mode factors and equations separately (using OpenGL factors).

-
- -
-
-raylib.rlSetBlendMode(mode: int) None
-

Set blending mode.

-
- -
-
-raylib.rlSetClipPlanes(nearPlane: float, farPlane: float) None
-

Set clip planes distances.

-
- -
-
-raylib.rlSetCullFace(mode: int) None
-

Set face culling mode.

-
- -
-
-raylib.rlSetFramebufferHeight(height: int) None
-

Set current framebuffer height.

-
- -
-
-raylib.rlSetFramebufferWidth(width: int) None
-

Set current framebuffer width.

-
- -
-
-raylib.rlSetLineWidth(width: float) None
-

Set the line drawing width.

-
- -
-
-raylib.rlSetMatrixModelview(view: Matrix | list | tuple) None
-

Set a custom modelview matrix (replaces internal modelview matrix).

-
- -
-
-raylib.rlSetMatrixProjection(proj: Matrix | list | tuple) None
-

Set a custom projection matrix (replaces internal projection matrix).

-
- -
-
-raylib.rlSetMatrixProjectionStereo(right: Matrix | list | tuple, left: Matrix | list | tuple) None
-

Set eyes projection matrices for stereo rendering.

-
- -
-
-raylib.rlSetMatrixViewOffsetStereo(right: Matrix | list | tuple, left: Matrix | list | tuple) None
-

Set eyes view offsets matrices for stereo rendering.

-
- -
-
-raylib.rlSetRenderBatchActive(batch: Any | list | tuple) None
-

Set the active render batch for rlgl (NULL for default internal).

-
- -
-
-raylib.rlSetShader(id: int, locs: Any) None
-

Set shader currently active (id and locations).

-
- -
-
-raylib.rlSetTexture(id: int) None
-

Set current texture for render batch and check buffers limits.

-
- -
-
-raylib.rlSetUniform(locIndex: int, value: Any, uniformType: int, count: int) None
-

Set shader value uniform.

-
- -
-
-raylib.rlSetUniformMatrices(locIndex: int, mat: Any | list | tuple, count: int) None
-

Set shader value matrices.

-
- -
-
-raylib.rlSetUniformMatrix(locIndex: int, mat: Matrix | list | tuple) None
-

Set shader value matrix.

-
- -
-
-raylib.rlSetUniformSampler(locIndex: int, textureId: int) None
-

Set shader value sampler.

-
- -
-
-raylib.rlSetVertexAttribute(index: int, compSize: int, type: int, normalized: bool, stride: int, offset: int) None
-

Set vertex attribute data configuration.

-
- -
-
-raylib.rlSetVertexAttributeDefault(locIndex: int, value: Any, attribType: int, count: int) None
-

Set vertex attribute default value, when attribute to provided.

-
- -
-
-raylib.rlSetVertexAttributeDivisor(index: int, divisor: int) None
-

Set vertex attribute data divisor.

-
- -
-
-raylib.rlShaderAttributeDataType
-
- -
-
-raylib.rlShaderLocationIndex
-
- -
-
-raylib.rlShaderUniformDataType
-
- -
-
-raylib.rlTexCoord2f(x: float, y: float) None
-

Define one vertex (texture coordinate) - 2 float.

-
- -
-
-raylib.rlTextureFilter
-
- -
-
-raylib.rlTextureParameters(id: int, param: int, value: int) None
-

Set texture parameters (filter, wrap).

-
- -
-
-raylib.rlTraceLogLevel
-
- -
-
-raylib.rlTranslatef(x: float, y: float, z: float) None
-

Multiply the current matrix by a translation matrix.

-
- -
-
-raylib.rlUnloadFramebuffer(id: int) None
-

Delete framebuffer from GPU.

-
- -
-
-raylib.rlUnloadRenderBatch(batch: rlRenderBatch | list | tuple) None
-

Unload render batch system.

-
- -
-
-raylib.rlUnloadShaderBuffer(ssboId: int) None
-

Unload shader storage buffer object (SSBO).

-
- -
-
-raylib.rlUnloadShaderProgram(id: int) None
-

Unload shader program.

-
- -
-
-raylib.rlUnloadTexture(id: int) None
-

Unload texture from GPU memory.

-
- -
-
-raylib.rlUnloadVertexArray(vaoId: int) None
-

Unload vertex array (vao).

-
- -
-
-raylib.rlUnloadVertexBuffer(vboId: int) None
-

Unload vertex buffer object.

-
- -
-
-raylib.rlUpdateShaderBuffer(id: int, data: Any, dataSize: int, offset: int) None
-

Update SSBO buffer data.

-
- -
-
-raylib.rlUpdateTexture(id: int, offsetX: int, offsetY: int, width: int, height: int, format: int, data: Any) None
-

Update texture with new data on GPU.

-
- -
-
-raylib.rlUpdateVertexBuffer(bufferId: int, data: Any, dataSize: int, offset: int) None
-

Update vertex buffer object data on GPU buffer.

-
- -
-
-raylib.rlUpdateVertexBufferElements(id: int, data: Any, dataSize: int, offset: int) None
-

Update vertex buffer elements data on GPU buffer.

-
- -
-
-raylib.rlVertex2f(x: float, y: float) None
-

Define one vertex (position) - 2 float.

-
- -
-
-raylib.rlVertex2i(x: int, y: int) None
-

Define one vertex (position) - 2 int.

-
- -
-
-raylib.rlVertex3f(x: float, y: float, z: float) None
-

Define one vertex (position) - 3 float.

-
- -
-
-class raylib.rlVertexBuffer
-
-
-colors: bytes
-
- -
-
-elementCount: int
-
- -
-
-indices: Any
-
- -
-
-normals: Any
-
- -
-
-texcoords: Any
-
- -
-
-vaoId: int
-
- -
-
-vboId: list
-
- -
-
-vertices: Any
-
- -
- -
-
-raylib.rlViewport(x: int, y: int, width: int, height: int) None
-

Set the viewport area.

-
- -
-
-raylib.rlglClose() None
-

De-initialize rlgl (buffers, shaders, textures).

-
- -
-
-raylib.rlglInit(width: int, height: int) None
-

Initialize rlgl (buffers, shaders, textures, states).

-
- -
-
-class raylib.struct
-
- -
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/search.html b/docs/search.html deleted file mode 100644 index c2b2bf9..0000000 --- a/docs/search.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - Search — Raylib Python documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - - - -
- -
- -
-
- -
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/docs/searchindex.js b/docs/searchindex.js deleted file mode 100644 index 7039ee4..0000000 --- a/docs/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({"alltitles":{"API reference":[[5,"module-pyray"]],"Advert":[[1,"advert"]],"App showcase":[[1,"app-showcase"]],"Backends":[[1,"backends"]],"Backends: Desktop, SDL, DRM, Web":[[1,"backends-desktop-sdl-drm-web"]],"Building from source":[[0,null]],"Bunnymark":[[1,"bunnymark"]],"C API":[[6,null]],"Contents:":[[4,null]],"DRM backend":[[1,"drm-backend"]],"Dynamic Bindings":[[3,null]],"Dynamic binding version":[[1,"dynamic-binding-version"]],"Examples":[[5,"examples"]],"Functions API reference":[[6,"module-raylib"]],"Have Pip build from source":[[0,"have-pip-build-from-source"]],"Help wanted":[[1,"help-wanted"]],"How to use":[[1,"how-to-use"]],"If you are familiar with C coding and the Raylib C library and you want to use an exact copy of the C API":[[1,"if-you-are-familiar-with-c-coding-and-the-raylib-c-library-and-you-want-to-use-an-exact-copy-of-the-c-api"]],"If you prefer a more Pythonistic API":[[1,"if-you-prefer-a-more-pythonistic-api"]],"Installation":[[1,"installation"]],"Libraries: raymath, raygui, rlgl, physac and GLFW":[[1,"libraries-raymath-raygui-rlgl-physac-and-glfw"]],"License":[[1,"license"]],"Linux":[[1,"linux"]],"Linux manual build":[[0,"linux-manual-build"]],"MacOS":[[1,"macos"]],"Macos manual build":[[0,"macos-manual-build"]],"Option 1: Binary wheel":[[2,"option-1-binary-wheel"]],"Option 2: Compile Raylib from source X11 mode":[[2,"option-2-compile-raylib-from-source-x11-mode"]],"Option 3: Compile Raylib from source DRM mode":[[2,"option-3-compile-raylib-from-source-drm-mode"]],"Or, Build from source manually":[[0,"or-build-from-source-manually"]],"Packaging your app":[[1,"packaging-your-app"]],"Performance":[[1,"performance"]],"Platforms: Windows, Mac, Linux, Raspberry Pi, Web":[[1,"platforms-windows-mac-linux-raspberry-pi-web"]],"Problems?":[[1,"problems"]],"Python API":[[5,null]],"Python Bindings for Raylib 5.5":[[1,null]],"Quickstart":[[1,"quickstart"]],"RLZero":[[1,"rlzero"]],"Raspberry Pi":[[1,"raspberry-pi"],[2,null]],"Raylib Python":[[4,null]],"Running in a web browser":[[1,"running-in-a-web-browser"]],"SDL backend":[[1,"sdl-backend"]],"Todo":[[0,"id1"],[0,"id2"]],"Windows":[[1,"windows"]],"Windows manual build":[[0,"windows-manual-build"]]},"docnames":["BUILDING","README","RPI","dynamic","index","pyray","raylib"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2},"filenames":["BUILDING.rst","README.md","RPI.rst","dynamic.rst","index.rst","pyray.rst","raylib.rst"],"indexentries":{"a (pyray.color attribute)":[[5,"pyray.Color.a",false]],"a (raylib.color attribute)":[[6,"raylib.Color.a",false]],"advancex (pyray.glyphinfo attribute)":[[5,"pyray.GlyphInfo.advanceX",false]],"advancex (raylib.glyphinfo attribute)":[[6,"raylib.GlyphInfo.advanceX",false]],"allocate (raylib.glfwallocator attribute)":[[6,"raylib.GLFWallocator.allocate",false]],"angularvelocity (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.angularVelocity",false]],"angularvelocity (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.angularVelocity",false]],"animnormals (pyray.mesh attribute)":[[5,"pyray.Mesh.animNormals",false]],"animnormals (raylib.mesh attribute)":[[6,"raylib.Mesh.animNormals",false]],"animvertices (pyray.mesh attribute)":[[5,"pyray.Mesh.animVertices",false]],"animvertices (raylib.mesh attribute)":[[6,"raylib.Mesh.animVertices",false]],"arrow_padding (in module raylib)":[[6,"raylib.ARROW_PADDING",false]],"arrow_padding (pyray.guidropdownboxproperty attribute)":[[5,"pyray.GuiDropdownBoxProperty.ARROW_PADDING",false]],"arrows_size (in module raylib)":[[6,"raylib.ARROWS_SIZE",false]],"arrows_size (pyray.guiscrollbarproperty attribute)":[[5,"pyray.GuiScrollBarProperty.ARROWS_SIZE",false]],"arrows_visible (in module raylib)":[[6,"raylib.ARROWS_VISIBLE",false]],"arrows_visible (pyray.guiscrollbarproperty attribute)":[[5,"pyray.GuiScrollBarProperty.ARROWS_VISIBLE",false]],"attach_audio_mixed_processor() (in module pyray)":[[5,"pyray.attach_audio_mixed_processor",false]],"attach_audio_stream_processor() (in module pyray)":[[5,"pyray.attach_audio_stream_processor",false]],"attachaudiomixedprocessor() (in module raylib)":[[6,"raylib.AttachAudioMixedProcessor",false]],"attachaudiostreamprocessor() (in module raylib)":[[6,"raylib.AttachAudioStreamProcessor",false]],"audiostream (class in pyray)":[[5,"pyray.AudioStream",false]],"audiostream (class in raylib)":[[6,"raylib.AudioStream",false]],"automationevent (class in pyray)":[[5,"pyray.AutomationEvent",false]],"automationevent (class in raylib)":[[6,"raylib.AutomationEvent",false]],"automationeventlist (class in pyray)":[[5,"pyray.AutomationEventList",false]],"automationeventlist (class in raylib)":[[6,"raylib.AutomationEventList",false]],"axes (raylib.glfwgamepadstate attribute)":[[6,"raylib.GLFWgamepadstate.axes",false]],"b (pyray.color attribute)":[[5,"pyray.Color.b",false]],"b (raylib.color attribute)":[[6,"raylib.Color.b",false]],"background_color (in module raylib)":[[6,"raylib.BACKGROUND_COLOR",false]],"background_color (pyray.guidefaultproperty attribute)":[[5,"pyray.GuiDefaultProperty.BACKGROUND_COLOR",false]],"base_color_disabled (in module raylib)":[[6,"raylib.BASE_COLOR_DISABLED",false]],"base_color_disabled (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.BASE_COLOR_DISABLED",false]],"base_color_focused (in module raylib)":[[6,"raylib.BASE_COLOR_FOCUSED",false]],"base_color_focused (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.BASE_COLOR_FOCUSED",false]],"base_color_normal (in module raylib)":[[6,"raylib.BASE_COLOR_NORMAL",false]],"base_color_normal (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.BASE_COLOR_NORMAL",false]],"base_color_pressed (in module raylib)":[[6,"raylib.BASE_COLOR_PRESSED",false]],"base_color_pressed (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.BASE_COLOR_PRESSED",false]],"basesize (pyray.font attribute)":[[5,"pyray.Font.baseSize",false]],"basesize (raylib.font attribute)":[[6,"raylib.Font.baseSize",false]],"begin_blend_mode() (in module pyray)":[[5,"pyray.begin_blend_mode",false]],"begin_drawing() (in module pyray)":[[5,"pyray.begin_drawing",false]],"begin_mode_2d() (in module pyray)":[[5,"pyray.begin_mode_2d",false]],"begin_mode_3d() (in module pyray)":[[5,"pyray.begin_mode_3d",false]],"begin_scissor_mode() (in module pyray)":[[5,"pyray.begin_scissor_mode",false]],"begin_shader_mode() (in module pyray)":[[5,"pyray.begin_shader_mode",false]],"begin_texture_mode() (in module pyray)":[[5,"pyray.begin_texture_mode",false]],"begin_vr_stereo_mode() (in module pyray)":[[5,"pyray.begin_vr_stereo_mode",false]],"beginblendmode() (in module raylib)":[[6,"raylib.BeginBlendMode",false]],"begindrawing() (in module raylib)":[[6,"raylib.BeginDrawing",false]],"beginmode2d() (in module raylib)":[[6,"raylib.BeginMode2D",false]],"beginmode3d() (in module raylib)":[[6,"raylib.BeginMode3D",false]],"beginscissormode() (in module raylib)":[[6,"raylib.BeginScissorMode",false]],"beginshadermode() (in module raylib)":[[6,"raylib.BeginShaderMode",false]],"begintexturemode() (in module raylib)":[[6,"raylib.BeginTextureMode",false]],"beginvrstereomode() (in module raylib)":[[6,"raylib.BeginVrStereoMode",false]],"beige (in module pyray)":[[5,"pyray.BEIGE",false]],"beige (in module raylib)":[[6,"raylib.BEIGE",false]],"bindpose (pyray.model attribute)":[[5,"pyray.Model.bindPose",false]],"bindpose (raylib.model attribute)":[[6,"raylib.Model.bindPose",false]],"black (in module pyray)":[[5,"pyray.BLACK",false]],"black (in module raylib)":[[6,"raylib.BLACK",false]],"blank (in module pyray)":[[5,"pyray.BLANK",false]],"blank (in module raylib)":[[6,"raylib.BLANK",false]],"blend_add_colors (in module raylib)":[[6,"raylib.BLEND_ADD_COLORS",false]],"blend_add_colors (pyray.blendmode attribute)":[[5,"pyray.BlendMode.BLEND_ADD_COLORS",false]],"blend_additive (in module raylib)":[[6,"raylib.BLEND_ADDITIVE",false]],"blend_additive (pyray.blendmode attribute)":[[5,"pyray.BlendMode.BLEND_ADDITIVE",false]],"blend_alpha (in module raylib)":[[6,"raylib.BLEND_ALPHA",false]],"blend_alpha (pyray.blendmode attribute)":[[5,"pyray.BlendMode.BLEND_ALPHA",false]],"blend_alpha_premultiply (in module raylib)":[[6,"raylib.BLEND_ALPHA_PREMULTIPLY",false]],"blend_alpha_premultiply (pyray.blendmode attribute)":[[5,"pyray.BlendMode.BLEND_ALPHA_PREMULTIPLY",false]],"blend_custom (in module raylib)":[[6,"raylib.BLEND_CUSTOM",false]],"blend_custom (pyray.blendmode attribute)":[[5,"pyray.BlendMode.BLEND_CUSTOM",false]],"blend_custom_separate (in module raylib)":[[6,"raylib.BLEND_CUSTOM_SEPARATE",false]],"blend_custom_separate (pyray.blendmode attribute)":[[5,"pyray.BlendMode.BLEND_CUSTOM_SEPARATE",false]],"blend_multiplied (in module raylib)":[[6,"raylib.BLEND_MULTIPLIED",false]],"blend_multiplied (pyray.blendmode attribute)":[[5,"pyray.BlendMode.BLEND_MULTIPLIED",false]],"blend_subtract_colors (in module raylib)":[[6,"raylib.BLEND_SUBTRACT_COLORS",false]],"blend_subtract_colors (pyray.blendmode attribute)":[[5,"pyray.BlendMode.BLEND_SUBTRACT_COLORS",false]],"blendmode (class in pyray)":[[5,"pyray.BlendMode",false]],"blendmode (in module raylib)":[[6,"raylib.BlendMode",false]],"blue (in module pyray)":[[5,"pyray.BLUE",false]],"blue (in module raylib)":[[6,"raylib.BLUE",false]],"blue (raylib.glfwgammaramp attribute)":[[6,"raylib.GLFWgammaramp.blue",false]],"bluebits (raylib.glfwvidmode attribute)":[[6,"raylib.GLFWvidmode.blueBits",false]],"body (pyray.physicsshape attribute)":[[5,"pyray.PhysicsShape.body",false]],"body (raylib.physicsshape attribute)":[[6,"raylib.PhysicsShape.body",false]],"bodya (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.bodyA",false]],"bodya (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.bodyA",false]],"bodyb (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.bodyB",false]],"bodyb (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.bodyB",false]],"bonecount (pyray.mesh attribute)":[[5,"pyray.Mesh.boneCount",false]],"bonecount (pyray.model attribute)":[[5,"pyray.Model.boneCount",false]],"bonecount (pyray.modelanimation attribute)":[[5,"pyray.ModelAnimation.boneCount",false]],"bonecount (raylib.mesh attribute)":[[6,"raylib.Mesh.boneCount",false]],"bonecount (raylib.model attribute)":[[6,"raylib.Model.boneCount",false]],"bonecount (raylib.modelanimation attribute)":[[6,"raylib.ModelAnimation.boneCount",false]],"boneids (pyray.mesh attribute)":[[5,"pyray.Mesh.boneIds",false]],"boneids (raylib.mesh attribute)":[[6,"raylib.Mesh.boneIds",false]],"boneinfo (class in pyray)":[[5,"pyray.BoneInfo",false]],"boneinfo (class in raylib)":[[6,"raylib.BoneInfo",false]],"bonematrices (pyray.mesh attribute)":[[5,"pyray.Mesh.boneMatrices",false]],"bonematrices (raylib.mesh attribute)":[[6,"raylib.Mesh.boneMatrices",false]],"bones (pyray.model attribute)":[[5,"pyray.Model.bones",false]],"bones (pyray.modelanimation attribute)":[[5,"pyray.ModelAnimation.bones",false]],"bones (raylib.model attribute)":[[6,"raylib.Model.bones",false]],"bones (raylib.modelanimation attribute)":[[6,"raylib.ModelAnimation.bones",false]],"boneweights (pyray.mesh attribute)":[[5,"pyray.Mesh.boneWeights",false]],"boneweights (raylib.mesh attribute)":[[6,"raylib.Mesh.boneWeights",false]],"border_color_disabled (in module raylib)":[[6,"raylib.BORDER_COLOR_DISABLED",false]],"border_color_disabled (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.BORDER_COLOR_DISABLED",false]],"border_color_focused (in module raylib)":[[6,"raylib.BORDER_COLOR_FOCUSED",false]],"border_color_focused (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.BORDER_COLOR_FOCUSED",false]],"border_color_normal (in module raylib)":[[6,"raylib.BORDER_COLOR_NORMAL",false]],"border_color_normal (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.BORDER_COLOR_NORMAL",false]],"border_color_pressed (in module raylib)":[[6,"raylib.BORDER_COLOR_PRESSED",false]],"border_color_pressed (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.BORDER_COLOR_PRESSED",false]],"border_width (in module raylib)":[[6,"raylib.BORDER_WIDTH",false]],"border_width (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.BORDER_WIDTH",false]],"bottom (pyray.npatchinfo attribute)":[[5,"pyray.NPatchInfo.bottom",false]],"bottom (raylib.npatchinfo attribute)":[[6,"raylib.NPatchInfo.bottom",false]],"boundingbox (class in pyray)":[[5,"pyray.BoundingBox",false]],"boundingbox (class in raylib)":[[6,"raylib.BoundingBox",false]],"brown (in module pyray)":[[5,"pyray.BROWN",false]],"brown (in module raylib)":[[6,"raylib.BROWN",false]],"buffer (pyray.audiostream attribute)":[[5,"pyray.AudioStream.buffer",false]],"buffer (raylib.audiostream attribute)":[[6,"raylib.AudioStream.buffer",false]],"buffercount (pyray.rlrenderbatch attribute)":[[5,"pyray.rlRenderBatch.bufferCount",false]],"buffercount (raylib.rlrenderbatch attribute)":[[6,"raylib.rlRenderBatch.bufferCount",false]],"button (in module raylib)":[[6,"raylib.BUTTON",false]],"button (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.BUTTON",false]],"buttons (raylib.glfwgamepadstate attribute)":[[6,"raylib.GLFWgamepadstate.buttons",false]],"camera (class in raylib)":[[6,"raylib.Camera",false]],"camera2d (class in pyray)":[[5,"pyray.Camera2D",false]],"camera2d (class in raylib)":[[6,"raylib.Camera2D",false]],"camera3d (class in pyray)":[[5,"pyray.Camera3D",false]],"camera3d (class in raylib)":[[6,"raylib.Camera3D",false]],"camera_custom (in module raylib)":[[6,"raylib.CAMERA_CUSTOM",false]],"camera_custom (pyray.cameramode attribute)":[[5,"pyray.CameraMode.CAMERA_CUSTOM",false]],"camera_first_person (in module raylib)":[[6,"raylib.CAMERA_FIRST_PERSON",false]],"camera_first_person (pyray.cameramode attribute)":[[5,"pyray.CameraMode.CAMERA_FIRST_PERSON",false]],"camera_free (in module raylib)":[[6,"raylib.CAMERA_FREE",false]],"camera_free (pyray.cameramode attribute)":[[5,"pyray.CameraMode.CAMERA_FREE",false]],"camera_orbital (in module raylib)":[[6,"raylib.CAMERA_ORBITAL",false]],"camera_orbital (pyray.cameramode attribute)":[[5,"pyray.CameraMode.CAMERA_ORBITAL",false]],"camera_orthographic (in module raylib)":[[6,"raylib.CAMERA_ORTHOGRAPHIC",false]],"camera_orthographic (pyray.cameraprojection attribute)":[[5,"pyray.CameraProjection.CAMERA_ORTHOGRAPHIC",false]],"camera_perspective (in module raylib)":[[6,"raylib.CAMERA_PERSPECTIVE",false]],"camera_perspective (pyray.cameraprojection attribute)":[[5,"pyray.CameraProjection.CAMERA_PERSPECTIVE",false]],"camera_third_person (in module raylib)":[[6,"raylib.CAMERA_THIRD_PERSON",false]],"camera_third_person (pyray.cameramode attribute)":[[5,"pyray.CameraMode.CAMERA_THIRD_PERSON",false]],"cameramode (class in pyray)":[[5,"pyray.CameraMode",false]],"cameramode (in module raylib)":[[6,"raylib.CameraMode",false]],"cameraprojection (class in pyray)":[[5,"pyray.CameraProjection",false]],"cameraprojection (in module raylib)":[[6,"raylib.CameraProjection",false]],"capacity (pyray.automationeventlist attribute)":[[5,"pyray.AutomationEventList.capacity",false]],"capacity (pyray.filepathlist attribute)":[[5,"pyray.FilePathList.capacity",false]],"capacity (raylib.automationeventlist attribute)":[[6,"raylib.AutomationEventList.capacity",false]],"capacity (raylib.filepathlist attribute)":[[6,"raylib.FilePathList.capacity",false]],"change_directory() (in module pyray)":[[5,"pyray.change_directory",false]],"changedirectory() (in module raylib)":[[6,"raylib.ChangeDirectory",false]],"channels (pyray.audiostream attribute)":[[5,"pyray.AudioStream.channels",false]],"channels (pyray.wave attribute)":[[5,"pyray.Wave.channels",false]],"channels (raylib.audiostream attribute)":[[6,"raylib.AudioStream.channels",false]],"channels (raylib.wave attribute)":[[6,"raylib.Wave.channels",false]],"check_collision_box_sphere() (in module pyray)":[[5,"pyray.check_collision_box_sphere",false]],"check_collision_boxes() (in module pyray)":[[5,"pyray.check_collision_boxes",false]],"check_collision_circle_line() (in module pyray)":[[5,"pyray.check_collision_circle_line",false]],"check_collision_circle_rec() (in module pyray)":[[5,"pyray.check_collision_circle_rec",false]],"check_collision_circles() (in module pyray)":[[5,"pyray.check_collision_circles",false]],"check_collision_lines() (in module pyray)":[[5,"pyray.check_collision_lines",false]],"check_collision_point_circle() (in module pyray)":[[5,"pyray.check_collision_point_circle",false]],"check_collision_point_line() (in module pyray)":[[5,"pyray.check_collision_point_line",false]],"check_collision_point_poly() (in module pyray)":[[5,"pyray.check_collision_point_poly",false]],"check_collision_point_rec() (in module pyray)":[[5,"pyray.check_collision_point_rec",false]],"check_collision_point_triangle() (in module pyray)":[[5,"pyray.check_collision_point_triangle",false]],"check_collision_recs() (in module pyray)":[[5,"pyray.check_collision_recs",false]],"check_collision_spheres() (in module pyray)":[[5,"pyray.check_collision_spheres",false]],"check_padding (in module raylib)":[[6,"raylib.CHECK_PADDING",false]],"check_padding (pyray.guicheckboxproperty attribute)":[[5,"pyray.GuiCheckBoxProperty.CHECK_PADDING",false]],"checkbox (in module raylib)":[[6,"raylib.CHECKBOX",false]],"checkbox (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.CHECKBOX",false]],"checkcollisionboxes() (in module raylib)":[[6,"raylib.CheckCollisionBoxes",false]],"checkcollisionboxsphere() (in module raylib)":[[6,"raylib.CheckCollisionBoxSphere",false]],"checkcollisioncircleline() (in module raylib)":[[6,"raylib.CheckCollisionCircleLine",false]],"checkcollisioncirclerec() (in module raylib)":[[6,"raylib.CheckCollisionCircleRec",false]],"checkcollisioncircles() (in module raylib)":[[6,"raylib.CheckCollisionCircles",false]],"checkcollisionlines() (in module raylib)":[[6,"raylib.CheckCollisionLines",false]],"checkcollisionpointcircle() (in module raylib)":[[6,"raylib.CheckCollisionPointCircle",false]],"checkcollisionpointline() (in module raylib)":[[6,"raylib.CheckCollisionPointLine",false]],"checkcollisionpointpoly() (in module raylib)":[[6,"raylib.CheckCollisionPointPoly",false]],"checkcollisionpointrec() (in module raylib)":[[6,"raylib.CheckCollisionPointRec",false]],"checkcollisionpointtriangle() (in module raylib)":[[6,"raylib.CheckCollisionPointTriangle",false]],"checkcollisionrecs() (in module raylib)":[[6,"raylib.CheckCollisionRecs",false]],"checkcollisionspheres() (in module raylib)":[[6,"raylib.CheckCollisionSpheres",false]],"chromaabcorrection (pyray.vrdeviceinfo attribute)":[[5,"pyray.VrDeviceInfo.chromaAbCorrection",false]],"chromaabcorrection (raylib.vrdeviceinfo attribute)":[[6,"raylib.VrDeviceInfo.chromaAbCorrection",false]],"clamp() (in module pyray)":[[5,"pyray.clamp",false]],"clamp() (in module raylib)":[[6,"raylib.Clamp",false]],"clear_background() (in module pyray)":[[5,"pyray.clear_background",false]],"clear_window_state() (in module pyray)":[[5,"pyray.clear_window_state",false]],"clearbackground() (in module raylib)":[[6,"raylib.ClearBackground",false]],"clearwindowstate() (in module raylib)":[[6,"raylib.ClearWindowState",false]],"close_audio_device() (in module pyray)":[[5,"pyray.close_audio_device",false]],"close_physics() (in module pyray)":[[5,"pyray.close_physics",false]],"close_window() (in module pyray)":[[5,"pyray.close_window",false]],"closeaudiodevice() (in module raylib)":[[6,"raylib.CloseAudioDevice",false]],"closephysics() (in module raylib)":[[6,"raylib.ClosePhysics",false]],"closewindow() (in module raylib)":[[6,"raylib.CloseWindow",false]],"codepoint_to_utf8() (in module pyray)":[[5,"pyray.codepoint_to_utf8",false]],"codepointtoutf8() (in module raylib)":[[6,"raylib.CodepointToUTF8",false]],"color (class in pyray)":[[5,"pyray.Color",false]],"color (class in raylib)":[[6,"raylib.Color",false]],"color (pyray.materialmap attribute)":[[5,"pyray.MaterialMap.color",false]],"color (raylib.materialmap attribute)":[[6,"raylib.MaterialMap.color",false]],"color_alpha() (in module pyray)":[[5,"pyray.color_alpha",false]],"color_alpha_blend() (in module pyray)":[[5,"pyray.color_alpha_blend",false]],"color_brightness() (in module pyray)":[[5,"pyray.color_brightness",false]],"color_contrast() (in module pyray)":[[5,"pyray.color_contrast",false]],"color_from_hsv() (in module pyray)":[[5,"pyray.color_from_hsv",false]],"color_from_normalized() (in module pyray)":[[5,"pyray.color_from_normalized",false]],"color_is_equal() (in module pyray)":[[5,"pyray.color_is_equal",false]],"color_lerp() (in module pyray)":[[5,"pyray.color_lerp",false]],"color_normalize() (in module pyray)":[[5,"pyray.color_normalize",false]],"color_selector_size (in module raylib)":[[6,"raylib.COLOR_SELECTOR_SIZE",false]],"color_selector_size (pyray.guicolorpickerproperty attribute)":[[5,"pyray.GuiColorPickerProperty.COLOR_SELECTOR_SIZE",false]],"color_tint() (in module pyray)":[[5,"pyray.color_tint",false]],"color_to_hsv() (in module pyray)":[[5,"pyray.color_to_hsv",false]],"color_to_int() (in module pyray)":[[5,"pyray.color_to_int",false]],"coloralpha() (in module raylib)":[[6,"raylib.ColorAlpha",false]],"coloralphablend() (in module raylib)":[[6,"raylib.ColorAlphaBlend",false]],"colorbrightness() (in module raylib)":[[6,"raylib.ColorBrightness",false]],"colorcontrast() (in module raylib)":[[6,"raylib.ColorContrast",false]],"colorfromhsv() (in module raylib)":[[6,"raylib.ColorFromHSV",false]],"colorfromnormalized() (in module raylib)":[[6,"raylib.ColorFromNormalized",false]],"colorisequal() (in module raylib)":[[6,"raylib.ColorIsEqual",false]],"colorlerp() (in module raylib)":[[6,"raylib.ColorLerp",false]],"colornormalize() (in module raylib)":[[6,"raylib.ColorNormalize",false]],"colorpicker (in module raylib)":[[6,"raylib.COLORPICKER",false]],"colorpicker (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.COLORPICKER",false]],"colors (pyray.mesh attribute)":[[5,"pyray.Mesh.colors",false]],"colors (pyray.rlvertexbuffer attribute)":[[5,"pyray.rlVertexBuffer.colors",false]],"colors (raylib.mesh attribute)":[[6,"raylib.Mesh.colors",false]],"colors (raylib.rlvertexbuffer attribute)":[[6,"raylib.rlVertexBuffer.colors",false]],"colortint() (in module raylib)":[[6,"raylib.ColorTint",false]],"colortohsv() (in module raylib)":[[6,"raylib.ColorToHSV",false]],"colortoint() (in module raylib)":[[6,"raylib.ColorToInt",false]],"combo_button_spacing (in module raylib)":[[6,"raylib.COMBO_BUTTON_SPACING",false]],"combo_button_spacing (pyray.guicomboboxproperty attribute)":[[5,"pyray.GuiComboBoxProperty.COMBO_BUTTON_SPACING",false]],"combo_button_width (in module raylib)":[[6,"raylib.COMBO_BUTTON_WIDTH",false]],"combo_button_width (pyray.guicomboboxproperty attribute)":[[5,"pyray.GuiComboBoxProperty.COMBO_BUTTON_WIDTH",false]],"combobox (in module raylib)":[[6,"raylib.COMBOBOX",false]],"combobox (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.COMBOBOX",false]],"compress_data() (in module pyray)":[[5,"pyray.compress_data",false]],"compressdata() (in module raylib)":[[6,"raylib.CompressData",false]],"compute_crc32() (in module pyray)":[[5,"pyray.compute_crc32",false]],"compute_md5() (in module pyray)":[[5,"pyray.compute_md5",false]],"compute_sha1() (in module pyray)":[[5,"pyray.compute_sha1",false]],"computecrc32() (in module raylib)":[[6,"raylib.ComputeCRC32",false]],"computemd5() (in module raylib)":[[6,"raylib.ComputeMD5",false]],"computesha1() (in module raylib)":[[6,"raylib.ComputeSHA1",false]],"configflags (class in pyray)":[[5,"pyray.ConfigFlags",false]],"configflags (in module raylib)":[[6,"raylib.ConfigFlags",false]],"contacts (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.contacts",false]],"contacts (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.contacts",false]],"contactscount (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.contactsCount",false]],"contactscount (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.contactsCount",false]],"controlid (pyray.guistyleprop attribute)":[[5,"pyray.GuiStyleProp.controlId",false]],"controlid (raylib.guistyleprop attribute)":[[6,"raylib.GuiStyleProp.controlId",false]],"count (pyray.automationeventlist attribute)":[[5,"pyray.AutomationEventList.count",false]],"count (pyray.filepathlist attribute)":[[5,"pyray.FilePathList.count",false]],"count (raylib.automationeventlist attribute)":[[6,"raylib.AutomationEventList.count",false]],"count (raylib.filepathlist attribute)":[[6,"raylib.FilePathList.count",false]],"create_physics_body_circle() (in module pyray)":[[5,"pyray.create_physics_body_circle",false]],"create_physics_body_polygon() (in module pyray)":[[5,"pyray.create_physics_body_polygon",false]],"create_physics_body_rectangle() (in module pyray)":[[5,"pyray.create_physics_body_rectangle",false]],"createphysicsbodycircle() (in module raylib)":[[6,"raylib.CreatePhysicsBodyCircle",false]],"createphysicsbodypolygon() (in module raylib)":[[6,"raylib.CreatePhysicsBodyPolygon",false]],"createphysicsbodyrectangle() (in module raylib)":[[6,"raylib.CreatePhysicsBodyRectangle",false]],"ctxdata (pyray.music attribute)":[[5,"pyray.Music.ctxData",false]],"ctxdata (raylib.music attribute)":[[6,"raylib.Music.ctxData",false]],"ctxtype (pyray.music attribute)":[[5,"pyray.Music.ctxType",false]],"ctxtype (raylib.music attribute)":[[6,"raylib.Music.ctxType",false]],"cubemap_layout_auto_detect (in module raylib)":[[6,"raylib.CUBEMAP_LAYOUT_AUTO_DETECT",false]],"cubemap_layout_auto_detect (pyray.cubemaplayout attribute)":[[5,"pyray.CubemapLayout.CUBEMAP_LAYOUT_AUTO_DETECT",false]],"cubemap_layout_cross_four_by_three (in module raylib)":[[6,"raylib.CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE",false]],"cubemap_layout_cross_four_by_three (pyray.cubemaplayout attribute)":[[5,"pyray.CubemapLayout.CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE",false]],"cubemap_layout_cross_three_by_four (in module raylib)":[[6,"raylib.CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR",false]],"cubemap_layout_cross_three_by_four (pyray.cubemaplayout attribute)":[[5,"pyray.CubemapLayout.CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR",false]],"cubemap_layout_line_horizontal (in module raylib)":[[6,"raylib.CUBEMAP_LAYOUT_LINE_HORIZONTAL",false]],"cubemap_layout_line_horizontal (pyray.cubemaplayout attribute)":[[5,"pyray.CubemapLayout.CUBEMAP_LAYOUT_LINE_HORIZONTAL",false]],"cubemap_layout_line_vertical (in module raylib)":[[6,"raylib.CUBEMAP_LAYOUT_LINE_VERTICAL",false]],"cubemap_layout_line_vertical (pyray.cubemaplayout attribute)":[[5,"pyray.CubemapLayout.CUBEMAP_LAYOUT_LINE_VERTICAL",false]],"cubemaplayout (class in pyray)":[[5,"pyray.CubemapLayout",false]],"cubemaplayout (in module raylib)":[[6,"raylib.CubemapLayout",false]],"currentbuffer (pyray.rlrenderbatch attribute)":[[5,"pyray.rlRenderBatch.currentBuffer",false]],"currentbuffer (raylib.rlrenderbatch attribute)":[[6,"raylib.rlRenderBatch.currentBuffer",false]],"currentdepth (pyray.rlrenderbatch attribute)":[[5,"pyray.rlRenderBatch.currentDepth",false]],"currentdepth (raylib.rlrenderbatch attribute)":[[6,"raylib.rlRenderBatch.currentDepth",false]],"darkblue (in module pyray)":[[5,"pyray.DARKBLUE",false]],"darkblue (in module raylib)":[[6,"raylib.DARKBLUE",false]],"darkbrown (in module pyray)":[[5,"pyray.DARKBROWN",false]],"darkbrown (in module raylib)":[[6,"raylib.DARKBROWN",false]],"darkgray (in module pyray)":[[5,"pyray.DARKGRAY",false]],"darkgray (in module raylib)":[[6,"raylib.DARKGRAY",false]],"darkgreen (in module pyray)":[[5,"pyray.DARKGREEN",false]],"darkgreen (in module raylib)":[[6,"raylib.DARKGREEN",false]],"darkpurple (in module pyray)":[[5,"pyray.DARKPURPLE",false]],"darkpurple (in module raylib)":[[6,"raylib.DARKPURPLE",false]],"data (pyray.image attribute)":[[5,"pyray.Image.data",false]],"data (pyray.wave attribute)":[[5,"pyray.Wave.data",false]],"data (raylib.image attribute)":[[6,"raylib.Image.data",false]],"data (raylib.wave attribute)":[[6,"raylib.Wave.data",false]],"deallocate (raylib.glfwallocator attribute)":[[6,"raylib.GLFWallocator.deallocate",false]],"decode_data_base64() (in module pyray)":[[5,"pyray.decode_data_base64",false]],"decodedatabase64() (in module raylib)":[[6,"raylib.DecodeDataBase64",false]],"decompress_data() (in module pyray)":[[5,"pyray.decompress_data",false]],"decompressdata() (in module raylib)":[[6,"raylib.DecompressData",false]],"default (in module raylib)":[[6,"raylib.DEFAULT",false]],"default (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.DEFAULT",false]],"depth (pyray.rendertexture attribute)":[[5,"pyray.RenderTexture.depth",false]],"depth (raylib.rendertexture attribute)":[[6,"raylib.RenderTexture.depth",false]],"depth (raylib.rendertexture2d attribute)":[[6,"raylib.RenderTexture2D.depth",false]],"destroy_physics_body() (in module pyray)":[[5,"pyray.destroy_physics_body",false]],"destroyphysicsbody() (in module raylib)":[[6,"raylib.DestroyPhysicsBody",false]],"detach_audio_mixed_processor() (in module pyray)":[[5,"pyray.detach_audio_mixed_processor",false]],"detach_audio_stream_processor() (in module pyray)":[[5,"pyray.detach_audio_stream_processor",false]],"detachaudiomixedprocessor() (in module raylib)":[[6,"raylib.DetachAudioMixedProcessor",false]],"detachaudiostreamprocessor() (in module raylib)":[[6,"raylib.DetachAudioStreamProcessor",false]],"direction (pyray.ray attribute)":[[5,"pyray.Ray.direction",false]],"direction (raylib.ray attribute)":[[6,"raylib.Ray.direction",false]],"directory_exists() (in module pyray)":[[5,"pyray.directory_exists",false]],"directoryexists() (in module raylib)":[[6,"raylib.DirectoryExists",false]],"disable_cursor() (in module pyray)":[[5,"pyray.disable_cursor",false]],"disable_event_waiting() (in module pyray)":[[5,"pyray.disable_event_waiting",false]],"disablecursor() (in module raylib)":[[6,"raylib.DisableCursor",false]],"disableeventwaiting() (in module raylib)":[[6,"raylib.DisableEventWaiting",false]],"distance (pyray.raycollision attribute)":[[5,"pyray.RayCollision.distance",false]],"distance (raylib.raycollision attribute)":[[6,"raylib.RayCollision.distance",false]],"draw_billboard() (in module pyray)":[[5,"pyray.draw_billboard",false]],"draw_billboard_pro() (in module pyray)":[[5,"pyray.draw_billboard_pro",false]],"draw_billboard_rec() (in module pyray)":[[5,"pyray.draw_billboard_rec",false]],"draw_bounding_box() (in module pyray)":[[5,"pyray.draw_bounding_box",false]],"draw_capsule() (in module pyray)":[[5,"pyray.draw_capsule",false]],"draw_capsule_wires() (in module pyray)":[[5,"pyray.draw_capsule_wires",false]],"draw_circle() (in module pyray)":[[5,"pyray.draw_circle",false]],"draw_circle_3d() (in module pyray)":[[5,"pyray.draw_circle_3d",false]],"draw_circle_gradient() (in module pyray)":[[5,"pyray.draw_circle_gradient",false]],"draw_circle_lines() (in module pyray)":[[5,"pyray.draw_circle_lines",false]],"draw_circle_lines_v() (in module pyray)":[[5,"pyray.draw_circle_lines_v",false]],"draw_circle_sector() (in module pyray)":[[5,"pyray.draw_circle_sector",false]],"draw_circle_sector_lines() (in module pyray)":[[5,"pyray.draw_circle_sector_lines",false]],"draw_circle_v() (in module pyray)":[[5,"pyray.draw_circle_v",false]],"draw_cube() (in module pyray)":[[5,"pyray.draw_cube",false]],"draw_cube_v() (in module pyray)":[[5,"pyray.draw_cube_v",false]],"draw_cube_wires() (in module pyray)":[[5,"pyray.draw_cube_wires",false]],"draw_cube_wires_v() (in module pyray)":[[5,"pyray.draw_cube_wires_v",false]],"draw_cylinder() (in module pyray)":[[5,"pyray.draw_cylinder",false]],"draw_cylinder_ex() (in module pyray)":[[5,"pyray.draw_cylinder_ex",false]],"draw_cylinder_wires() (in module pyray)":[[5,"pyray.draw_cylinder_wires",false]],"draw_cylinder_wires_ex() (in module pyray)":[[5,"pyray.draw_cylinder_wires_ex",false]],"draw_ellipse() (in module pyray)":[[5,"pyray.draw_ellipse",false]],"draw_ellipse_lines() (in module pyray)":[[5,"pyray.draw_ellipse_lines",false]],"draw_fps() (in module pyray)":[[5,"pyray.draw_fps",false]],"draw_grid() (in module pyray)":[[5,"pyray.draw_grid",false]],"draw_line() (in module pyray)":[[5,"pyray.draw_line",false]],"draw_line_3d() (in module pyray)":[[5,"pyray.draw_line_3d",false]],"draw_line_bezier() (in module pyray)":[[5,"pyray.draw_line_bezier",false]],"draw_line_ex() (in module pyray)":[[5,"pyray.draw_line_ex",false]],"draw_line_strip() (in module pyray)":[[5,"pyray.draw_line_strip",false]],"draw_line_v() (in module pyray)":[[5,"pyray.draw_line_v",false]],"draw_mesh() (in module pyray)":[[5,"pyray.draw_mesh",false]],"draw_mesh_instanced() (in module pyray)":[[5,"pyray.draw_mesh_instanced",false]],"draw_model() (in module pyray)":[[5,"pyray.draw_model",false]],"draw_model_ex() (in module pyray)":[[5,"pyray.draw_model_ex",false]],"draw_model_points() (in module pyray)":[[5,"pyray.draw_model_points",false]],"draw_model_points_ex() (in module pyray)":[[5,"pyray.draw_model_points_ex",false]],"draw_model_wires() (in module pyray)":[[5,"pyray.draw_model_wires",false]],"draw_model_wires_ex() (in module pyray)":[[5,"pyray.draw_model_wires_ex",false]],"draw_pixel() (in module pyray)":[[5,"pyray.draw_pixel",false]],"draw_pixel_v() (in module pyray)":[[5,"pyray.draw_pixel_v",false]],"draw_plane() (in module pyray)":[[5,"pyray.draw_plane",false]],"draw_point_3d() (in module pyray)":[[5,"pyray.draw_point_3d",false]],"draw_poly() (in module pyray)":[[5,"pyray.draw_poly",false]],"draw_poly_lines() (in module pyray)":[[5,"pyray.draw_poly_lines",false]],"draw_poly_lines_ex() (in module pyray)":[[5,"pyray.draw_poly_lines_ex",false]],"draw_ray() (in module pyray)":[[5,"pyray.draw_ray",false]],"draw_rectangle() (in module pyray)":[[5,"pyray.draw_rectangle",false]],"draw_rectangle_gradient_ex() (in module pyray)":[[5,"pyray.draw_rectangle_gradient_ex",false]],"draw_rectangle_gradient_h() (in module pyray)":[[5,"pyray.draw_rectangle_gradient_h",false]],"draw_rectangle_gradient_v() (in module pyray)":[[5,"pyray.draw_rectangle_gradient_v",false]],"draw_rectangle_lines() (in module pyray)":[[5,"pyray.draw_rectangle_lines",false]],"draw_rectangle_lines_ex() (in module pyray)":[[5,"pyray.draw_rectangle_lines_ex",false]],"draw_rectangle_pro() (in module pyray)":[[5,"pyray.draw_rectangle_pro",false]],"draw_rectangle_rec() (in module pyray)":[[5,"pyray.draw_rectangle_rec",false]],"draw_rectangle_rounded() (in module pyray)":[[5,"pyray.draw_rectangle_rounded",false]],"draw_rectangle_rounded_lines() (in module pyray)":[[5,"pyray.draw_rectangle_rounded_lines",false]],"draw_rectangle_rounded_lines_ex() (in module pyray)":[[5,"pyray.draw_rectangle_rounded_lines_ex",false]],"draw_rectangle_v() (in module pyray)":[[5,"pyray.draw_rectangle_v",false]],"draw_ring() (in module pyray)":[[5,"pyray.draw_ring",false]],"draw_ring_lines() (in module pyray)":[[5,"pyray.draw_ring_lines",false]],"draw_sphere() (in module pyray)":[[5,"pyray.draw_sphere",false]],"draw_sphere_ex() (in module pyray)":[[5,"pyray.draw_sphere_ex",false]],"draw_sphere_wires() (in module pyray)":[[5,"pyray.draw_sphere_wires",false]],"draw_spline_basis() (in module pyray)":[[5,"pyray.draw_spline_basis",false]],"draw_spline_bezier_cubic() (in module pyray)":[[5,"pyray.draw_spline_bezier_cubic",false]],"draw_spline_bezier_quadratic() (in module pyray)":[[5,"pyray.draw_spline_bezier_quadratic",false]],"draw_spline_catmull_rom() (in module pyray)":[[5,"pyray.draw_spline_catmull_rom",false]],"draw_spline_linear() (in module pyray)":[[5,"pyray.draw_spline_linear",false]],"draw_spline_segment_basis() (in module pyray)":[[5,"pyray.draw_spline_segment_basis",false]],"draw_spline_segment_bezier_cubic() (in module pyray)":[[5,"pyray.draw_spline_segment_bezier_cubic",false]],"draw_spline_segment_bezier_quadratic() (in module pyray)":[[5,"pyray.draw_spline_segment_bezier_quadratic",false]],"draw_spline_segment_catmull_rom() (in module pyray)":[[5,"pyray.draw_spline_segment_catmull_rom",false]],"draw_spline_segment_linear() (in module pyray)":[[5,"pyray.draw_spline_segment_linear",false]],"draw_text() (in module pyray)":[[5,"pyray.draw_text",false]],"draw_text_codepoint() (in module pyray)":[[5,"pyray.draw_text_codepoint",false]],"draw_text_codepoints() (in module pyray)":[[5,"pyray.draw_text_codepoints",false]],"draw_text_ex() (in module pyray)":[[5,"pyray.draw_text_ex",false]],"draw_text_pro() (in module pyray)":[[5,"pyray.draw_text_pro",false]],"draw_texture() (in module pyray)":[[5,"pyray.draw_texture",false]],"draw_texture_ex() (in module pyray)":[[5,"pyray.draw_texture_ex",false]],"draw_texture_n_patch() (in module pyray)":[[5,"pyray.draw_texture_n_patch",false]],"draw_texture_pro() (in module pyray)":[[5,"pyray.draw_texture_pro",false]],"draw_texture_rec() (in module pyray)":[[5,"pyray.draw_texture_rec",false]],"draw_texture_v() (in module pyray)":[[5,"pyray.draw_texture_v",false]],"draw_triangle() (in module pyray)":[[5,"pyray.draw_triangle",false]],"draw_triangle_3d() (in module pyray)":[[5,"pyray.draw_triangle_3d",false]],"draw_triangle_fan() (in module pyray)":[[5,"pyray.draw_triangle_fan",false]],"draw_triangle_lines() (in module pyray)":[[5,"pyray.draw_triangle_lines",false]],"draw_triangle_strip() (in module pyray)":[[5,"pyray.draw_triangle_strip",false]],"draw_triangle_strip_3d() (in module pyray)":[[5,"pyray.draw_triangle_strip_3d",false]],"drawbillboard() (in module raylib)":[[6,"raylib.DrawBillboard",false]],"drawbillboardpro() (in module raylib)":[[6,"raylib.DrawBillboardPro",false]],"drawbillboardrec() (in module raylib)":[[6,"raylib.DrawBillboardRec",false]],"drawboundingbox() (in module raylib)":[[6,"raylib.DrawBoundingBox",false]],"drawcapsule() (in module raylib)":[[6,"raylib.DrawCapsule",false]],"drawcapsulewires() (in module raylib)":[[6,"raylib.DrawCapsuleWires",false]],"drawcircle() (in module raylib)":[[6,"raylib.DrawCircle",false]],"drawcircle3d() (in module raylib)":[[6,"raylib.DrawCircle3D",false]],"drawcirclegradient() (in module raylib)":[[6,"raylib.DrawCircleGradient",false]],"drawcirclelines() (in module raylib)":[[6,"raylib.DrawCircleLines",false]],"drawcirclelinesv() (in module raylib)":[[6,"raylib.DrawCircleLinesV",false]],"drawcirclesector() (in module raylib)":[[6,"raylib.DrawCircleSector",false]],"drawcirclesectorlines() (in module raylib)":[[6,"raylib.DrawCircleSectorLines",false]],"drawcirclev() (in module raylib)":[[6,"raylib.DrawCircleV",false]],"drawcounter (pyray.rlrenderbatch attribute)":[[5,"pyray.rlRenderBatch.drawCounter",false]],"drawcounter (raylib.rlrenderbatch attribute)":[[6,"raylib.rlRenderBatch.drawCounter",false]],"drawcube() (in module raylib)":[[6,"raylib.DrawCube",false]],"drawcubev() (in module raylib)":[[6,"raylib.DrawCubeV",false]],"drawcubewires() (in module raylib)":[[6,"raylib.DrawCubeWires",false]],"drawcubewiresv() (in module raylib)":[[6,"raylib.DrawCubeWiresV",false]],"drawcylinder() (in module raylib)":[[6,"raylib.DrawCylinder",false]],"drawcylinderex() (in module raylib)":[[6,"raylib.DrawCylinderEx",false]],"drawcylinderwires() (in module raylib)":[[6,"raylib.DrawCylinderWires",false]],"drawcylinderwiresex() (in module raylib)":[[6,"raylib.DrawCylinderWiresEx",false]],"drawellipse() (in module raylib)":[[6,"raylib.DrawEllipse",false]],"drawellipselines() (in module raylib)":[[6,"raylib.DrawEllipseLines",false]],"drawfps() (in module raylib)":[[6,"raylib.DrawFPS",false]],"drawgrid() (in module raylib)":[[6,"raylib.DrawGrid",false]],"drawline() (in module raylib)":[[6,"raylib.DrawLine",false]],"drawline3d() (in module raylib)":[[6,"raylib.DrawLine3D",false]],"drawlinebezier() (in module raylib)":[[6,"raylib.DrawLineBezier",false]],"drawlineex() (in module raylib)":[[6,"raylib.DrawLineEx",false]],"drawlinestrip() (in module raylib)":[[6,"raylib.DrawLineStrip",false]],"drawlinev() (in module raylib)":[[6,"raylib.DrawLineV",false]],"drawmesh() (in module raylib)":[[6,"raylib.DrawMesh",false]],"drawmeshinstanced() (in module raylib)":[[6,"raylib.DrawMeshInstanced",false]],"drawmodel() (in module raylib)":[[6,"raylib.DrawModel",false]],"drawmodelex() (in module raylib)":[[6,"raylib.DrawModelEx",false]],"drawmodelpoints() (in module raylib)":[[6,"raylib.DrawModelPoints",false]],"drawmodelpointsex() (in module raylib)":[[6,"raylib.DrawModelPointsEx",false]],"drawmodelwires() (in module raylib)":[[6,"raylib.DrawModelWires",false]],"drawmodelwiresex() (in module raylib)":[[6,"raylib.DrawModelWiresEx",false]],"drawpixel() (in module raylib)":[[6,"raylib.DrawPixel",false]],"drawpixelv() (in module raylib)":[[6,"raylib.DrawPixelV",false]],"drawplane() (in module raylib)":[[6,"raylib.DrawPlane",false]],"drawpoint3d() (in module raylib)":[[6,"raylib.DrawPoint3D",false]],"drawpoly() (in module raylib)":[[6,"raylib.DrawPoly",false]],"drawpolylines() (in module raylib)":[[6,"raylib.DrawPolyLines",false]],"drawpolylinesex() (in module raylib)":[[6,"raylib.DrawPolyLinesEx",false]],"drawray() (in module raylib)":[[6,"raylib.DrawRay",false]],"drawrectangle() (in module raylib)":[[6,"raylib.DrawRectangle",false]],"drawrectanglegradientex() (in module raylib)":[[6,"raylib.DrawRectangleGradientEx",false]],"drawrectanglegradienth() (in module raylib)":[[6,"raylib.DrawRectangleGradientH",false]],"drawrectanglegradientv() (in module raylib)":[[6,"raylib.DrawRectangleGradientV",false]],"drawrectanglelines() (in module raylib)":[[6,"raylib.DrawRectangleLines",false]],"drawrectanglelinesex() (in module raylib)":[[6,"raylib.DrawRectangleLinesEx",false]],"drawrectanglepro() (in module raylib)":[[6,"raylib.DrawRectanglePro",false]],"drawrectanglerec() (in module raylib)":[[6,"raylib.DrawRectangleRec",false]],"drawrectanglerounded() (in module raylib)":[[6,"raylib.DrawRectangleRounded",false]],"drawrectangleroundedlines() (in module raylib)":[[6,"raylib.DrawRectangleRoundedLines",false]],"drawrectangleroundedlinesex() (in module raylib)":[[6,"raylib.DrawRectangleRoundedLinesEx",false]],"drawrectanglev() (in module raylib)":[[6,"raylib.DrawRectangleV",false]],"drawring() (in module raylib)":[[6,"raylib.DrawRing",false]],"drawringlines() (in module raylib)":[[6,"raylib.DrawRingLines",false]],"draws (pyray.rlrenderbatch attribute)":[[5,"pyray.rlRenderBatch.draws",false]],"draws (raylib.rlrenderbatch attribute)":[[6,"raylib.rlRenderBatch.draws",false]],"drawsphere() (in module raylib)":[[6,"raylib.DrawSphere",false]],"drawsphereex() (in module raylib)":[[6,"raylib.DrawSphereEx",false]],"drawspherewires() (in module raylib)":[[6,"raylib.DrawSphereWires",false]],"drawsplinebasis() (in module raylib)":[[6,"raylib.DrawSplineBasis",false]],"drawsplinebeziercubic() (in module raylib)":[[6,"raylib.DrawSplineBezierCubic",false]],"drawsplinebezierquadratic() (in module raylib)":[[6,"raylib.DrawSplineBezierQuadratic",false]],"drawsplinecatmullrom() (in module raylib)":[[6,"raylib.DrawSplineCatmullRom",false]],"drawsplinelinear() (in module raylib)":[[6,"raylib.DrawSplineLinear",false]],"drawsplinesegmentbasis() (in module raylib)":[[6,"raylib.DrawSplineSegmentBasis",false]],"drawsplinesegmentbeziercubic() (in module raylib)":[[6,"raylib.DrawSplineSegmentBezierCubic",false]],"drawsplinesegmentbezierquadratic() (in module raylib)":[[6,"raylib.DrawSplineSegmentBezierQuadratic",false]],"drawsplinesegmentcatmullrom() (in module raylib)":[[6,"raylib.DrawSplineSegmentCatmullRom",false]],"drawsplinesegmentlinear() (in module raylib)":[[6,"raylib.DrawSplineSegmentLinear",false]],"drawtext() (in module raylib)":[[6,"raylib.DrawText",false]],"drawtextcodepoint() (in module raylib)":[[6,"raylib.DrawTextCodepoint",false]],"drawtextcodepoints() (in module raylib)":[[6,"raylib.DrawTextCodepoints",false]],"drawtextex() (in module raylib)":[[6,"raylib.DrawTextEx",false]],"drawtextpro() (in module raylib)":[[6,"raylib.DrawTextPro",false]],"drawtexture() (in module raylib)":[[6,"raylib.DrawTexture",false]],"drawtextureex() (in module raylib)":[[6,"raylib.DrawTextureEx",false]],"drawtexturenpatch() (in module raylib)":[[6,"raylib.DrawTextureNPatch",false]],"drawtexturepro() (in module raylib)":[[6,"raylib.DrawTexturePro",false]],"drawtexturerec() (in module raylib)":[[6,"raylib.DrawTextureRec",false]],"drawtexturev() (in module raylib)":[[6,"raylib.DrawTextureV",false]],"drawtriangle() (in module raylib)":[[6,"raylib.DrawTriangle",false]],"drawtriangle3d() (in module raylib)":[[6,"raylib.DrawTriangle3D",false]],"drawtrianglefan() (in module raylib)":[[6,"raylib.DrawTriangleFan",false]],"drawtrianglelines() (in module raylib)":[[6,"raylib.DrawTriangleLines",false]],"drawtrianglestrip() (in module raylib)":[[6,"raylib.DrawTriangleStrip",false]],"drawtrianglestrip3d() (in module raylib)":[[6,"raylib.DrawTriangleStrip3D",false]],"dropdown_arrow_hidden (in module raylib)":[[6,"raylib.DROPDOWN_ARROW_HIDDEN",false]],"dropdown_arrow_hidden (pyray.guidropdownboxproperty attribute)":[[5,"pyray.GuiDropdownBoxProperty.DROPDOWN_ARROW_HIDDEN",false]],"dropdown_items_spacing (in module raylib)":[[6,"raylib.DROPDOWN_ITEMS_SPACING",false]],"dropdown_items_spacing (pyray.guidropdownboxproperty attribute)":[[5,"pyray.GuiDropdownBoxProperty.DROPDOWN_ITEMS_SPACING",false]],"dropdown_roll_up (in module raylib)":[[6,"raylib.DROPDOWN_ROLL_UP",false]],"dropdown_roll_up (pyray.guidropdownboxproperty attribute)":[[5,"pyray.GuiDropdownBoxProperty.DROPDOWN_ROLL_UP",false]],"dropdownbox (in module raylib)":[[6,"raylib.DROPDOWNBOX",false]],"dropdownbox (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.DROPDOWNBOX",false]],"dynamicfriction (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.dynamicFriction",false]],"dynamicfriction (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.dynamicFriction",false]],"dynamicfriction (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.dynamicFriction",false]],"dynamicfriction (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.dynamicFriction",false]],"elementcount (pyray.rlvertexbuffer attribute)":[[5,"pyray.rlVertexBuffer.elementCount",false]],"elementcount (raylib.rlvertexbuffer attribute)":[[6,"raylib.rlVertexBuffer.elementCount",false]],"enable_cursor() (in module pyray)":[[5,"pyray.enable_cursor",false]],"enable_event_waiting() (in module pyray)":[[5,"pyray.enable_event_waiting",false]],"enablecursor() (in module raylib)":[[6,"raylib.EnableCursor",false]],"enabled (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.enabled",false]],"enabled (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.enabled",false]],"enableeventwaiting() (in module raylib)":[[6,"raylib.EnableEventWaiting",false]],"encode_data_base64() (in module pyray)":[[5,"pyray.encode_data_base64",false]],"encodedatabase64() (in module raylib)":[[6,"raylib.EncodeDataBase64",false]],"end_blend_mode() (in module pyray)":[[5,"pyray.end_blend_mode",false]],"end_drawing() (in module pyray)":[[5,"pyray.end_drawing",false]],"end_mode_2d() (in module pyray)":[[5,"pyray.end_mode_2d",false]],"end_mode_3d() (in module pyray)":[[5,"pyray.end_mode_3d",false]],"end_scissor_mode() (in module pyray)":[[5,"pyray.end_scissor_mode",false]],"end_shader_mode() (in module pyray)":[[5,"pyray.end_shader_mode",false]],"end_texture_mode() (in module pyray)":[[5,"pyray.end_texture_mode",false]],"end_vr_stereo_mode() (in module pyray)":[[5,"pyray.end_vr_stereo_mode",false]],"endblendmode() (in module raylib)":[[6,"raylib.EndBlendMode",false]],"enddrawing() (in module raylib)":[[6,"raylib.EndDrawing",false]],"endmode2d() (in module raylib)":[[6,"raylib.EndMode2D",false]],"endmode3d() (in module raylib)":[[6,"raylib.EndMode3D",false]],"endscissormode() (in module raylib)":[[6,"raylib.EndScissorMode",false]],"endshadermode() (in module raylib)":[[6,"raylib.EndShaderMode",false]],"endtexturemode() (in module raylib)":[[6,"raylib.EndTextureMode",false]],"endvrstereomode() (in module raylib)":[[6,"raylib.EndVrStereoMode",false]],"events (pyray.automationeventlist attribute)":[[5,"pyray.AutomationEventList.events",false]],"events (raylib.automationeventlist attribute)":[[6,"raylib.AutomationEventList.events",false]],"export_automation_event_list() (in module pyray)":[[5,"pyray.export_automation_event_list",false]],"export_data_as_code() (in module pyray)":[[5,"pyray.export_data_as_code",false]],"export_font_as_code() (in module pyray)":[[5,"pyray.export_font_as_code",false]],"export_image() (in module pyray)":[[5,"pyray.export_image",false]],"export_image_as_code() (in module pyray)":[[5,"pyray.export_image_as_code",false]],"export_image_to_memory() (in module pyray)":[[5,"pyray.export_image_to_memory",false]],"export_mesh() (in module pyray)":[[5,"pyray.export_mesh",false]],"export_mesh_as_code() (in module pyray)":[[5,"pyray.export_mesh_as_code",false]],"export_wave() (in module pyray)":[[5,"pyray.export_wave",false]],"export_wave_as_code() (in module pyray)":[[5,"pyray.export_wave_as_code",false]],"exportautomationeventlist() (in module raylib)":[[6,"raylib.ExportAutomationEventList",false]],"exportdataascode() (in module raylib)":[[6,"raylib.ExportDataAsCode",false]],"exportfontascode() (in module raylib)":[[6,"raylib.ExportFontAsCode",false]],"exportimage() (in module raylib)":[[6,"raylib.ExportImage",false]],"exportimageascode() (in module raylib)":[[6,"raylib.ExportImageAsCode",false]],"exportimagetomemory() (in module raylib)":[[6,"raylib.ExportImageToMemory",false]],"exportmesh() (in module raylib)":[[6,"raylib.ExportMesh",false]],"exportmeshascode() (in module raylib)":[[6,"raylib.ExportMeshAsCode",false]],"exportwave() (in module raylib)":[[6,"raylib.ExportWave",false]],"exportwaveascode() (in module raylib)":[[6,"raylib.ExportWaveAsCode",false]],"eyetoscreendistance (pyray.vrdeviceinfo attribute)":[[5,"pyray.VrDeviceInfo.eyeToScreenDistance",false]],"eyetoscreendistance (raylib.vrdeviceinfo attribute)":[[6,"raylib.VrDeviceInfo.eyeToScreenDistance",false]],"fade() (in module pyray)":[[5,"pyray.fade",false]],"fade() (in module raylib)":[[6,"raylib.Fade",false]],"ffi (in module pyray)":[[5,"pyray.ffi",false]],"ffi (in module raylib)":[[6,"raylib.ffi",false]],"file_exists() (in module pyray)":[[5,"pyray.file_exists",false]],"fileexists() (in module raylib)":[[6,"raylib.FileExists",false]],"filepathlist (class in pyray)":[[5,"pyray.FilePathList",false]],"filepathlist (class in raylib)":[[6,"raylib.FilePathList",false]],"flag_borderless_windowed_mode (in module raylib)":[[6,"raylib.FLAG_BORDERLESS_WINDOWED_MODE",false]],"flag_borderless_windowed_mode (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_BORDERLESS_WINDOWED_MODE",false]],"flag_fullscreen_mode (in module raylib)":[[6,"raylib.FLAG_FULLSCREEN_MODE",false]],"flag_fullscreen_mode (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_FULLSCREEN_MODE",false]],"flag_interlaced_hint (in module raylib)":[[6,"raylib.FLAG_INTERLACED_HINT",false]],"flag_interlaced_hint (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_INTERLACED_HINT",false]],"flag_msaa_4x_hint (in module raylib)":[[6,"raylib.FLAG_MSAA_4X_HINT",false]],"flag_msaa_4x_hint (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_MSAA_4X_HINT",false]],"flag_vsync_hint (in module raylib)":[[6,"raylib.FLAG_VSYNC_HINT",false]],"flag_vsync_hint (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_VSYNC_HINT",false]],"flag_window_always_run (in module raylib)":[[6,"raylib.FLAG_WINDOW_ALWAYS_RUN",false]],"flag_window_always_run (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_ALWAYS_RUN",false]],"flag_window_hidden (in module raylib)":[[6,"raylib.FLAG_WINDOW_HIDDEN",false]],"flag_window_hidden (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_HIDDEN",false]],"flag_window_highdpi (in module raylib)":[[6,"raylib.FLAG_WINDOW_HIGHDPI",false]],"flag_window_highdpi (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_HIGHDPI",false]],"flag_window_maximized (in module raylib)":[[6,"raylib.FLAG_WINDOW_MAXIMIZED",false]],"flag_window_maximized (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_MAXIMIZED",false]],"flag_window_minimized (in module raylib)":[[6,"raylib.FLAG_WINDOW_MINIMIZED",false]],"flag_window_minimized (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_MINIMIZED",false]],"flag_window_mouse_passthrough (in module raylib)":[[6,"raylib.FLAG_WINDOW_MOUSE_PASSTHROUGH",false]],"flag_window_mouse_passthrough (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_MOUSE_PASSTHROUGH",false]],"flag_window_resizable (in module raylib)":[[6,"raylib.FLAG_WINDOW_RESIZABLE",false]],"flag_window_resizable (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_RESIZABLE",false]],"flag_window_topmost (in module raylib)":[[6,"raylib.FLAG_WINDOW_TOPMOST",false]],"flag_window_topmost (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_TOPMOST",false]],"flag_window_transparent (in module raylib)":[[6,"raylib.FLAG_WINDOW_TRANSPARENT",false]],"flag_window_transparent (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_TRANSPARENT",false]],"flag_window_undecorated (in module raylib)":[[6,"raylib.FLAG_WINDOW_UNDECORATED",false]],"flag_window_undecorated (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_UNDECORATED",false]],"flag_window_unfocused (in module raylib)":[[6,"raylib.FLAG_WINDOW_UNFOCUSED",false]],"flag_window_unfocused (pyray.configflags attribute)":[[5,"pyray.ConfigFlags.FLAG_WINDOW_UNFOCUSED",false]],"float16 (class in pyray)":[[5,"pyray.float16",false]],"float16 (class in raylib)":[[6,"raylib.float16",false]],"float3 (class in pyray)":[[5,"pyray.float3",false]],"float3 (class in raylib)":[[6,"raylib.float3",false]],"float_equals() (in module pyray)":[[5,"pyray.float_equals",false]],"floatequals() (in module raylib)":[[6,"raylib.FloatEquals",false]],"font (class in pyray)":[[5,"pyray.Font",false]],"font (class in raylib)":[[6,"raylib.Font",false]],"font_bitmap (in module raylib)":[[6,"raylib.FONT_BITMAP",false]],"font_bitmap (pyray.fonttype attribute)":[[5,"pyray.FontType.FONT_BITMAP",false]],"font_default (in module raylib)":[[6,"raylib.FONT_DEFAULT",false]],"font_default (pyray.fonttype attribute)":[[5,"pyray.FontType.FONT_DEFAULT",false]],"font_sdf (in module raylib)":[[6,"raylib.FONT_SDF",false]],"font_sdf (pyray.fonttype attribute)":[[5,"pyray.FontType.FONT_SDF",false]],"fonttype (class in pyray)":[[5,"pyray.FontType",false]],"fonttype (in module raylib)":[[6,"raylib.FontType",false]],"force (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.force",false]],"force (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.force",false]],"format (pyray.image attribute)":[[5,"pyray.Image.format",false]],"format (pyray.texture attribute)":[[5,"pyray.Texture.format",false]],"format (pyray.texture2d attribute)":[[5,"pyray.Texture2D.format",false]],"format (raylib.image attribute)":[[6,"raylib.Image.format",false]],"format (raylib.texture attribute)":[[6,"raylib.Texture.format",false]],"format (raylib.texture2d attribute)":[[6,"raylib.Texture2D.format",false]],"format (raylib.texturecubemap attribute)":[[6,"raylib.TextureCubemap.format",false]],"fovy (pyray.camera3d attribute)":[[5,"pyray.Camera3D.fovy",false]],"fovy (raylib.camera attribute)":[[6,"raylib.Camera.fovy",false]],"fovy (raylib.camera3d attribute)":[[6,"raylib.Camera3D.fovy",false]],"frame (pyray.automationevent attribute)":[[5,"pyray.AutomationEvent.frame",false]],"frame (raylib.automationevent attribute)":[[6,"raylib.AutomationEvent.frame",false]],"framecount (pyray.modelanimation attribute)":[[5,"pyray.ModelAnimation.frameCount",false]],"framecount (pyray.music attribute)":[[5,"pyray.Music.frameCount",false]],"framecount (pyray.sound attribute)":[[5,"pyray.Sound.frameCount",false]],"framecount (pyray.wave attribute)":[[5,"pyray.Wave.frameCount",false]],"framecount (raylib.modelanimation attribute)":[[6,"raylib.ModelAnimation.frameCount",false]],"framecount (raylib.music attribute)":[[6,"raylib.Music.frameCount",false]],"framecount (raylib.sound attribute)":[[6,"raylib.Sound.frameCount",false]],"framecount (raylib.wave attribute)":[[6,"raylib.Wave.frameCount",false]],"frameposes (pyray.modelanimation attribute)":[[5,"pyray.ModelAnimation.framePoses",false]],"frameposes (raylib.modelanimation attribute)":[[6,"raylib.ModelAnimation.framePoses",false]],"freezeorient (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.freezeOrient",false]],"freezeorient (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.freezeOrient",false]],"g (pyray.color attribute)":[[5,"pyray.Color.g",false]],"g (raylib.color attribute)":[[6,"raylib.Color.g",false]],"gamepad_axis_left_trigger (in module raylib)":[[6,"raylib.GAMEPAD_AXIS_LEFT_TRIGGER",false]],"gamepad_axis_left_trigger (pyray.gamepadaxis attribute)":[[5,"pyray.GamepadAxis.GAMEPAD_AXIS_LEFT_TRIGGER",false]],"gamepad_axis_left_x (in module raylib)":[[6,"raylib.GAMEPAD_AXIS_LEFT_X",false]],"gamepad_axis_left_x (pyray.gamepadaxis attribute)":[[5,"pyray.GamepadAxis.GAMEPAD_AXIS_LEFT_X",false]],"gamepad_axis_left_y (in module raylib)":[[6,"raylib.GAMEPAD_AXIS_LEFT_Y",false]],"gamepad_axis_left_y (pyray.gamepadaxis attribute)":[[5,"pyray.GamepadAxis.GAMEPAD_AXIS_LEFT_Y",false]],"gamepad_axis_right_trigger (in module raylib)":[[6,"raylib.GAMEPAD_AXIS_RIGHT_TRIGGER",false]],"gamepad_axis_right_trigger (pyray.gamepadaxis attribute)":[[5,"pyray.GamepadAxis.GAMEPAD_AXIS_RIGHT_TRIGGER",false]],"gamepad_axis_right_x (in module raylib)":[[6,"raylib.GAMEPAD_AXIS_RIGHT_X",false]],"gamepad_axis_right_x (pyray.gamepadaxis attribute)":[[5,"pyray.GamepadAxis.GAMEPAD_AXIS_RIGHT_X",false]],"gamepad_axis_right_y (in module raylib)":[[6,"raylib.GAMEPAD_AXIS_RIGHT_Y",false]],"gamepad_axis_right_y (pyray.gamepadaxis attribute)":[[5,"pyray.GamepadAxis.GAMEPAD_AXIS_RIGHT_Y",false]],"gamepad_button_left_face_down (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_LEFT_FACE_DOWN",false]],"gamepad_button_left_face_down (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_LEFT_FACE_DOWN",false]],"gamepad_button_left_face_left (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_LEFT_FACE_LEFT",false]],"gamepad_button_left_face_left (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_LEFT_FACE_LEFT",false]],"gamepad_button_left_face_right (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_LEFT_FACE_RIGHT",false]],"gamepad_button_left_face_right (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_LEFT_FACE_RIGHT",false]],"gamepad_button_left_face_up (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_LEFT_FACE_UP",false]],"gamepad_button_left_face_up (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_LEFT_FACE_UP",false]],"gamepad_button_left_thumb (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_LEFT_THUMB",false]],"gamepad_button_left_thumb (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_LEFT_THUMB",false]],"gamepad_button_left_trigger_1 (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_LEFT_TRIGGER_1",false]],"gamepad_button_left_trigger_1 (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_LEFT_TRIGGER_1",false]],"gamepad_button_left_trigger_2 (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_LEFT_TRIGGER_2",false]],"gamepad_button_left_trigger_2 (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_LEFT_TRIGGER_2",false]],"gamepad_button_middle (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_MIDDLE",false]],"gamepad_button_middle (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_MIDDLE",false]],"gamepad_button_middle_left (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_MIDDLE_LEFT",false]],"gamepad_button_middle_left (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_MIDDLE_LEFT",false]],"gamepad_button_middle_right (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_MIDDLE_RIGHT",false]],"gamepad_button_middle_right (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_MIDDLE_RIGHT",false]],"gamepad_button_right_face_down (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_RIGHT_FACE_DOWN",false]],"gamepad_button_right_face_down (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_RIGHT_FACE_DOWN",false]],"gamepad_button_right_face_left (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_RIGHT_FACE_LEFT",false]],"gamepad_button_right_face_left (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_RIGHT_FACE_LEFT",false]],"gamepad_button_right_face_right (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_RIGHT_FACE_RIGHT",false]],"gamepad_button_right_face_right (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_RIGHT_FACE_RIGHT",false]],"gamepad_button_right_face_up (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_RIGHT_FACE_UP",false]],"gamepad_button_right_face_up (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_RIGHT_FACE_UP",false]],"gamepad_button_right_thumb (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_RIGHT_THUMB",false]],"gamepad_button_right_thumb (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_RIGHT_THUMB",false]],"gamepad_button_right_trigger_1 (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_RIGHT_TRIGGER_1",false]],"gamepad_button_right_trigger_1 (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_RIGHT_TRIGGER_1",false]],"gamepad_button_right_trigger_2 (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_RIGHT_TRIGGER_2",false]],"gamepad_button_right_trigger_2 (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_RIGHT_TRIGGER_2",false]],"gamepad_button_unknown (in module raylib)":[[6,"raylib.GAMEPAD_BUTTON_UNKNOWN",false]],"gamepad_button_unknown (pyray.gamepadbutton attribute)":[[5,"pyray.GamepadButton.GAMEPAD_BUTTON_UNKNOWN",false]],"gamepadaxis (class in pyray)":[[5,"pyray.GamepadAxis",false]],"gamepadaxis (in module raylib)":[[6,"raylib.GamepadAxis",false]],"gamepadbutton (class in pyray)":[[5,"pyray.GamepadButton",false]],"gamepadbutton (in module raylib)":[[6,"raylib.GamepadButton",false]],"gen_image_cellular() (in module pyray)":[[5,"pyray.gen_image_cellular",false]],"gen_image_checked() (in module pyray)":[[5,"pyray.gen_image_checked",false]],"gen_image_color() (in module pyray)":[[5,"pyray.gen_image_color",false]],"gen_image_font_atlas() (in module pyray)":[[5,"pyray.gen_image_font_atlas",false]],"gen_image_gradient_linear() (in module pyray)":[[5,"pyray.gen_image_gradient_linear",false]],"gen_image_gradient_radial() (in module pyray)":[[5,"pyray.gen_image_gradient_radial",false]],"gen_image_gradient_square() (in module pyray)":[[5,"pyray.gen_image_gradient_square",false]],"gen_image_perlin_noise() (in module pyray)":[[5,"pyray.gen_image_perlin_noise",false]],"gen_image_text() (in module pyray)":[[5,"pyray.gen_image_text",false]],"gen_image_white_noise() (in module pyray)":[[5,"pyray.gen_image_white_noise",false]],"gen_mesh_cone() (in module pyray)":[[5,"pyray.gen_mesh_cone",false]],"gen_mesh_cube() (in module pyray)":[[5,"pyray.gen_mesh_cube",false]],"gen_mesh_cubicmap() (in module pyray)":[[5,"pyray.gen_mesh_cubicmap",false]],"gen_mesh_cylinder() (in module pyray)":[[5,"pyray.gen_mesh_cylinder",false]],"gen_mesh_heightmap() (in module pyray)":[[5,"pyray.gen_mesh_heightmap",false]],"gen_mesh_hemi_sphere() (in module pyray)":[[5,"pyray.gen_mesh_hemi_sphere",false]],"gen_mesh_knot() (in module pyray)":[[5,"pyray.gen_mesh_knot",false]],"gen_mesh_plane() (in module pyray)":[[5,"pyray.gen_mesh_plane",false]],"gen_mesh_poly() (in module pyray)":[[5,"pyray.gen_mesh_poly",false]],"gen_mesh_sphere() (in module pyray)":[[5,"pyray.gen_mesh_sphere",false]],"gen_mesh_tangents() (in module pyray)":[[5,"pyray.gen_mesh_tangents",false]],"gen_mesh_torus() (in module pyray)":[[5,"pyray.gen_mesh_torus",false]],"gen_texture_mipmaps() (in module pyray)":[[5,"pyray.gen_texture_mipmaps",false]],"genimagecellular() (in module raylib)":[[6,"raylib.GenImageCellular",false]],"genimagechecked() (in module raylib)":[[6,"raylib.GenImageChecked",false]],"genimagecolor() (in module raylib)":[[6,"raylib.GenImageColor",false]],"genimagefontatlas() (in module raylib)":[[6,"raylib.GenImageFontAtlas",false]],"genimagegradientlinear() (in module raylib)":[[6,"raylib.GenImageGradientLinear",false]],"genimagegradientradial() (in module raylib)":[[6,"raylib.GenImageGradientRadial",false]],"genimagegradientsquare() (in module raylib)":[[6,"raylib.GenImageGradientSquare",false]],"genimageperlinnoise() (in module raylib)":[[6,"raylib.GenImagePerlinNoise",false]],"genimagetext() (in module raylib)":[[6,"raylib.GenImageText",false]],"genimagewhitenoise() (in module raylib)":[[6,"raylib.GenImageWhiteNoise",false]],"genmeshcone() (in module raylib)":[[6,"raylib.GenMeshCone",false]],"genmeshcube() (in module raylib)":[[6,"raylib.GenMeshCube",false]],"genmeshcubicmap() (in module raylib)":[[6,"raylib.GenMeshCubicmap",false]],"genmeshcylinder() (in module raylib)":[[6,"raylib.GenMeshCylinder",false]],"genmeshheightmap() (in module raylib)":[[6,"raylib.GenMeshHeightmap",false]],"genmeshhemisphere() (in module raylib)":[[6,"raylib.GenMeshHemiSphere",false]],"genmeshknot() (in module raylib)":[[6,"raylib.GenMeshKnot",false]],"genmeshplane() (in module raylib)":[[6,"raylib.GenMeshPlane",false]],"genmeshpoly() (in module raylib)":[[6,"raylib.GenMeshPoly",false]],"genmeshsphere() (in module raylib)":[[6,"raylib.GenMeshSphere",false]],"genmeshtangents() (in module raylib)":[[6,"raylib.GenMeshTangents",false]],"genmeshtorus() (in module raylib)":[[6,"raylib.GenMeshTorus",false]],"gentexturemipmaps() (in module raylib)":[[6,"raylib.GenTextureMipmaps",false]],"gesture (class in pyray)":[[5,"pyray.Gesture",false]],"gesture (in module raylib)":[[6,"raylib.Gesture",false]],"gesture_doubletap (in module raylib)":[[6,"raylib.GESTURE_DOUBLETAP",false]],"gesture_doubletap (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_DOUBLETAP",false]],"gesture_drag (in module raylib)":[[6,"raylib.GESTURE_DRAG",false]],"gesture_drag (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_DRAG",false]],"gesture_hold (in module raylib)":[[6,"raylib.GESTURE_HOLD",false]],"gesture_hold (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_HOLD",false]],"gesture_none (in module raylib)":[[6,"raylib.GESTURE_NONE",false]],"gesture_none (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_NONE",false]],"gesture_pinch_in (in module raylib)":[[6,"raylib.GESTURE_PINCH_IN",false]],"gesture_pinch_in (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_PINCH_IN",false]],"gesture_pinch_out (in module raylib)":[[6,"raylib.GESTURE_PINCH_OUT",false]],"gesture_pinch_out (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_PINCH_OUT",false]],"gesture_swipe_down (in module raylib)":[[6,"raylib.GESTURE_SWIPE_DOWN",false]],"gesture_swipe_down (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_SWIPE_DOWN",false]],"gesture_swipe_left (in module raylib)":[[6,"raylib.GESTURE_SWIPE_LEFT",false]],"gesture_swipe_left (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_SWIPE_LEFT",false]],"gesture_swipe_right (in module raylib)":[[6,"raylib.GESTURE_SWIPE_RIGHT",false]],"gesture_swipe_right (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_SWIPE_RIGHT",false]],"gesture_swipe_up (in module raylib)":[[6,"raylib.GESTURE_SWIPE_UP",false]],"gesture_swipe_up (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_SWIPE_UP",false]],"gesture_tap (in module raylib)":[[6,"raylib.GESTURE_TAP",false]],"gesture_tap (pyray.gesture attribute)":[[5,"pyray.Gesture.GESTURE_TAP",false]],"get_application_directory() (in module pyray)":[[5,"pyray.get_application_directory",false]],"get_camera_matrix() (in module pyray)":[[5,"pyray.get_camera_matrix",false]],"get_camera_matrix_2d() (in module pyray)":[[5,"pyray.get_camera_matrix_2d",false]],"get_char_pressed() (in module pyray)":[[5,"pyray.get_char_pressed",false]],"get_clipboard_image() (in module pyray)":[[5,"pyray.get_clipboard_image",false]],"get_clipboard_text() (in module pyray)":[[5,"pyray.get_clipboard_text",false]],"get_codepoint() (in module pyray)":[[5,"pyray.get_codepoint",false]],"get_codepoint_count() (in module pyray)":[[5,"pyray.get_codepoint_count",false]],"get_codepoint_next() (in module pyray)":[[5,"pyray.get_codepoint_next",false]],"get_codepoint_previous() (in module pyray)":[[5,"pyray.get_codepoint_previous",false]],"get_collision_rec() (in module pyray)":[[5,"pyray.get_collision_rec",false]],"get_color() (in module pyray)":[[5,"pyray.get_color",false]],"get_current_monitor() (in module pyray)":[[5,"pyray.get_current_monitor",false]],"get_directory_path() (in module pyray)":[[5,"pyray.get_directory_path",false]],"get_file_extension() (in module pyray)":[[5,"pyray.get_file_extension",false]],"get_file_length() (in module pyray)":[[5,"pyray.get_file_length",false]],"get_file_mod_time() (in module pyray)":[[5,"pyray.get_file_mod_time",false]],"get_file_name() (in module pyray)":[[5,"pyray.get_file_name",false]],"get_file_name_without_ext() (in module pyray)":[[5,"pyray.get_file_name_without_ext",false]],"get_font_default() (in module pyray)":[[5,"pyray.get_font_default",false]],"get_fps() (in module pyray)":[[5,"pyray.get_fps",false]],"get_frame_time() (in module pyray)":[[5,"pyray.get_frame_time",false]],"get_gamepad_axis_count() (in module pyray)":[[5,"pyray.get_gamepad_axis_count",false]],"get_gamepad_axis_movement() (in module pyray)":[[5,"pyray.get_gamepad_axis_movement",false]],"get_gamepad_button_pressed() (in module pyray)":[[5,"pyray.get_gamepad_button_pressed",false]],"get_gamepad_name() (in module pyray)":[[5,"pyray.get_gamepad_name",false]],"get_gesture_detected() (in module pyray)":[[5,"pyray.get_gesture_detected",false]],"get_gesture_drag_angle() (in module pyray)":[[5,"pyray.get_gesture_drag_angle",false]],"get_gesture_drag_vector() (in module pyray)":[[5,"pyray.get_gesture_drag_vector",false]],"get_gesture_hold_duration() (in module pyray)":[[5,"pyray.get_gesture_hold_duration",false]],"get_gesture_pinch_angle() (in module pyray)":[[5,"pyray.get_gesture_pinch_angle",false]],"get_gesture_pinch_vector() (in module pyray)":[[5,"pyray.get_gesture_pinch_vector",false]],"get_glyph_atlas_rec() (in module pyray)":[[5,"pyray.get_glyph_atlas_rec",false]],"get_glyph_index() (in module pyray)":[[5,"pyray.get_glyph_index",false]],"get_glyph_info() (in module pyray)":[[5,"pyray.get_glyph_info",false]],"get_image_alpha_border() (in module pyray)":[[5,"pyray.get_image_alpha_border",false]],"get_image_color() (in module pyray)":[[5,"pyray.get_image_color",false]],"get_key_pressed() (in module pyray)":[[5,"pyray.get_key_pressed",false]],"get_master_volume() (in module pyray)":[[5,"pyray.get_master_volume",false]],"get_mesh_bounding_box() (in module pyray)":[[5,"pyray.get_mesh_bounding_box",false]],"get_model_bounding_box() (in module pyray)":[[5,"pyray.get_model_bounding_box",false]],"get_monitor_count() (in module pyray)":[[5,"pyray.get_monitor_count",false]],"get_monitor_height() (in module pyray)":[[5,"pyray.get_monitor_height",false]],"get_monitor_name() (in module pyray)":[[5,"pyray.get_monitor_name",false]],"get_monitor_physical_height() (in module pyray)":[[5,"pyray.get_monitor_physical_height",false]],"get_monitor_physical_width() (in module pyray)":[[5,"pyray.get_monitor_physical_width",false]],"get_monitor_position() (in module pyray)":[[5,"pyray.get_monitor_position",false]],"get_monitor_refresh_rate() (in module pyray)":[[5,"pyray.get_monitor_refresh_rate",false]],"get_monitor_width() (in module pyray)":[[5,"pyray.get_monitor_width",false]],"get_mouse_delta() (in module pyray)":[[5,"pyray.get_mouse_delta",false]],"get_mouse_position() (in module pyray)":[[5,"pyray.get_mouse_position",false]],"get_mouse_wheel_move() (in module pyray)":[[5,"pyray.get_mouse_wheel_move",false]],"get_mouse_wheel_move_v() (in module pyray)":[[5,"pyray.get_mouse_wheel_move_v",false]],"get_mouse_x() (in module pyray)":[[5,"pyray.get_mouse_x",false]],"get_mouse_y() (in module pyray)":[[5,"pyray.get_mouse_y",false]],"get_music_time_length() (in module pyray)":[[5,"pyray.get_music_time_length",false]],"get_music_time_played() (in module pyray)":[[5,"pyray.get_music_time_played",false]],"get_physics_bodies_count() (in module pyray)":[[5,"pyray.get_physics_bodies_count",false]],"get_physics_body() (in module pyray)":[[5,"pyray.get_physics_body",false]],"get_physics_shape_type() (in module pyray)":[[5,"pyray.get_physics_shape_type",false]],"get_physics_shape_vertex() (in module pyray)":[[5,"pyray.get_physics_shape_vertex",false]],"get_physics_shape_vertices_count() (in module pyray)":[[5,"pyray.get_physics_shape_vertices_count",false]],"get_pixel_color() (in module pyray)":[[5,"pyray.get_pixel_color",false]],"get_pixel_data_size() (in module pyray)":[[5,"pyray.get_pixel_data_size",false]],"get_prev_directory_path() (in module pyray)":[[5,"pyray.get_prev_directory_path",false]],"get_random_value() (in module pyray)":[[5,"pyray.get_random_value",false]],"get_ray_collision_box() (in module pyray)":[[5,"pyray.get_ray_collision_box",false]],"get_ray_collision_mesh() (in module pyray)":[[5,"pyray.get_ray_collision_mesh",false]],"get_ray_collision_quad() (in module pyray)":[[5,"pyray.get_ray_collision_quad",false]],"get_ray_collision_sphere() (in module pyray)":[[5,"pyray.get_ray_collision_sphere",false]],"get_ray_collision_triangle() (in module pyray)":[[5,"pyray.get_ray_collision_triangle",false]],"get_render_height() (in module pyray)":[[5,"pyray.get_render_height",false]],"get_render_width() (in module pyray)":[[5,"pyray.get_render_width",false]],"get_screen_height() (in module pyray)":[[5,"pyray.get_screen_height",false]],"get_screen_to_world_2d() (in module pyray)":[[5,"pyray.get_screen_to_world_2d",false]],"get_screen_to_world_ray() (in module pyray)":[[5,"pyray.get_screen_to_world_ray",false]],"get_screen_to_world_ray_ex() (in module pyray)":[[5,"pyray.get_screen_to_world_ray_ex",false]],"get_screen_width() (in module pyray)":[[5,"pyray.get_screen_width",false]],"get_shader_location() (in module pyray)":[[5,"pyray.get_shader_location",false]],"get_shader_location_attrib() (in module pyray)":[[5,"pyray.get_shader_location_attrib",false]],"get_shapes_texture() (in module pyray)":[[5,"pyray.get_shapes_texture",false]],"get_shapes_texture_rectangle() (in module pyray)":[[5,"pyray.get_shapes_texture_rectangle",false]],"get_spline_point_basis() (in module pyray)":[[5,"pyray.get_spline_point_basis",false]],"get_spline_point_bezier_cubic() (in module pyray)":[[5,"pyray.get_spline_point_bezier_cubic",false]],"get_spline_point_bezier_quad() (in module pyray)":[[5,"pyray.get_spline_point_bezier_quad",false]],"get_spline_point_catmull_rom() (in module pyray)":[[5,"pyray.get_spline_point_catmull_rom",false]],"get_spline_point_linear() (in module pyray)":[[5,"pyray.get_spline_point_linear",false]],"get_time() (in module pyray)":[[5,"pyray.get_time",false]],"get_touch_point_count() (in module pyray)":[[5,"pyray.get_touch_point_count",false]],"get_touch_point_id() (in module pyray)":[[5,"pyray.get_touch_point_id",false]],"get_touch_position() (in module pyray)":[[5,"pyray.get_touch_position",false]],"get_touch_x() (in module pyray)":[[5,"pyray.get_touch_x",false]],"get_touch_y() (in module pyray)":[[5,"pyray.get_touch_y",false]],"get_window_handle() (in module pyray)":[[5,"pyray.get_window_handle",false]],"get_window_position() (in module pyray)":[[5,"pyray.get_window_position",false]],"get_window_scale_dpi() (in module pyray)":[[5,"pyray.get_window_scale_dpi",false]],"get_working_directory() (in module pyray)":[[5,"pyray.get_working_directory",false]],"get_world_to_screen() (in module pyray)":[[5,"pyray.get_world_to_screen",false]],"get_world_to_screen_2d() (in module pyray)":[[5,"pyray.get_world_to_screen_2d",false]],"get_world_to_screen_ex() (in module pyray)":[[5,"pyray.get_world_to_screen_ex",false]],"getapplicationdirectory() (in module raylib)":[[6,"raylib.GetApplicationDirectory",false]],"getcameramatrix() (in module raylib)":[[6,"raylib.GetCameraMatrix",false]],"getcameramatrix2d() (in module raylib)":[[6,"raylib.GetCameraMatrix2D",false]],"getcharpressed() (in module raylib)":[[6,"raylib.GetCharPressed",false]],"getclipboardimage() (in module raylib)":[[6,"raylib.GetClipboardImage",false]],"getclipboardtext() (in module raylib)":[[6,"raylib.GetClipboardText",false]],"getcodepoint() (in module raylib)":[[6,"raylib.GetCodepoint",false]],"getcodepointcount() (in module raylib)":[[6,"raylib.GetCodepointCount",false]],"getcodepointnext() (in module raylib)":[[6,"raylib.GetCodepointNext",false]],"getcodepointprevious() (in module raylib)":[[6,"raylib.GetCodepointPrevious",false]],"getcollisionrec() (in module raylib)":[[6,"raylib.GetCollisionRec",false]],"getcolor() (in module raylib)":[[6,"raylib.GetColor",false]],"getcurrentmonitor() (in module raylib)":[[6,"raylib.GetCurrentMonitor",false]],"getdirectorypath() (in module raylib)":[[6,"raylib.GetDirectoryPath",false]],"getfileextension() (in module raylib)":[[6,"raylib.GetFileExtension",false]],"getfilelength() (in module raylib)":[[6,"raylib.GetFileLength",false]],"getfilemodtime() (in module raylib)":[[6,"raylib.GetFileModTime",false]],"getfilename() (in module raylib)":[[6,"raylib.GetFileName",false]],"getfilenamewithoutext() (in module raylib)":[[6,"raylib.GetFileNameWithoutExt",false]],"getfontdefault() (in module raylib)":[[6,"raylib.GetFontDefault",false]],"getfps() (in module raylib)":[[6,"raylib.GetFPS",false]],"getframetime() (in module raylib)":[[6,"raylib.GetFrameTime",false]],"getgamepadaxiscount() (in module raylib)":[[6,"raylib.GetGamepadAxisCount",false]],"getgamepadaxismovement() (in module raylib)":[[6,"raylib.GetGamepadAxisMovement",false]],"getgamepadbuttonpressed() (in module raylib)":[[6,"raylib.GetGamepadButtonPressed",false]],"getgamepadname() (in module raylib)":[[6,"raylib.GetGamepadName",false]],"getgesturedetected() (in module raylib)":[[6,"raylib.GetGestureDetected",false]],"getgesturedragangle() (in module raylib)":[[6,"raylib.GetGestureDragAngle",false]],"getgesturedragvector() (in module raylib)":[[6,"raylib.GetGestureDragVector",false]],"getgestureholdduration() (in module raylib)":[[6,"raylib.GetGestureHoldDuration",false]],"getgesturepinchangle() (in module raylib)":[[6,"raylib.GetGesturePinchAngle",false]],"getgesturepinchvector() (in module raylib)":[[6,"raylib.GetGesturePinchVector",false]],"getglyphatlasrec() (in module raylib)":[[6,"raylib.GetGlyphAtlasRec",false]],"getglyphindex() (in module raylib)":[[6,"raylib.GetGlyphIndex",false]],"getglyphinfo() (in module raylib)":[[6,"raylib.GetGlyphInfo",false]],"getimagealphaborder() (in module raylib)":[[6,"raylib.GetImageAlphaBorder",false]],"getimagecolor() (in module raylib)":[[6,"raylib.GetImageColor",false]],"getkeypressed() (in module raylib)":[[6,"raylib.GetKeyPressed",false]],"getmastervolume() (in module raylib)":[[6,"raylib.GetMasterVolume",false]],"getmeshboundingbox() (in module raylib)":[[6,"raylib.GetMeshBoundingBox",false]],"getmodelboundingbox() (in module raylib)":[[6,"raylib.GetModelBoundingBox",false]],"getmonitorcount() (in module raylib)":[[6,"raylib.GetMonitorCount",false]],"getmonitorheight() (in module raylib)":[[6,"raylib.GetMonitorHeight",false]],"getmonitorname() (in module raylib)":[[6,"raylib.GetMonitorName",false]],"getmonitorphysicalheight() (in module raylib)":[[6,"raylib.GetMonitorPhysicalHeight",false]],"getmonitorphysicalwidth() (in module raylib)":[[6,"raylib.GetMonitorPhysicalWidth",false]],"getmonitorposition() (in module raylib)":[[6,"raylib.GetMonitorPosition",false]],"getmonitorrefreshrate() (in module raylib)":[[6,"raylib.GetMonitorRefreshRate",false]],"getmonitorwidth() (in module raylib)":[[6,"raylib.GetMonitorWidth",false]],"getmousedelta() (in module raylib)":[[6,"raylib.GetMouseDelta",false]],"getmouseposition() (in module raylib)":[[6,"raylib.GetMousePosition",false]],"getmousewheelmove() (in module raylib)":[[6,"raylib.GetMouseWheelMove",false]],"getmousewheelmovev() (in module raylib)":[[6,"raylib.GetMouseWheelMoveV",false]],"getmousex() (in module raylib)":[[6,"raylib.GetMouseX",false]],"getmousey() (in module raylib)":[[6,"raylib.GetMouseY",false]],"getmusictimelength() (in module raylib)":[[6,"raylib.GetMusicTimeLength",false]],"getmusictimeplayed() (in module raylib)":[[6,"raylib.GetMusicTimePlayed",false]],"getphysicsbodiescount() (in module raylib)":[[6,"raylib.GetPhysicsBodiesCount",false]],"getphysicsbody() (in module raylib)":[[6,"raylib.GetPhysicsBody",false]],"getphysicsshapetype() (in module raylib)":[[6,"raylib.GetPhysicsShapeType",false]],"getphysicsshapevertex() (in module raylib)":[[6,"raylib.GetPhysicsShapeVertex",false]],"getphysicsshapeverticescount() (in module raylib)":[[6,"raylib.GetPhysicsShapeVerticesCount",false]],"getpixelcolor() (in module raylib)":[[6,"raylib.GetPixelColor",false]],"getpixeldatasize() (in module raylib)":[[6,"raylib.GetPixelDataSize",false]],"getprevdirectorypath() (in module raylib)":[[6,"raylib.GetPrevDirectoryPath",false]],"getrandomvalue() (in module raylib)":[[6,"raylib.GetRandomValue",false]],"getraycollisionbox() (in module raylib)":[[6,"raylib.GetRayCollisionBox",false]],"getraycollisionmesh() (in module raylib)":[[6,"raylib.GetRayCollisionMesh",false]],"getraycollisionquad() (in module raylib)":[[6,"raylib.GetRayCollisionQuad",false]],"getraycollisionsphere() (in module raylib)":[[6,"raylib.GetRayCollisionSphere",false]],"getraycollisiontriangle() (in module raylib)":[[6,"raylib.GetRayCollisionTriangle",false]],"getrenderheight() (in module raylib)":[[6,"raylib.GetRenderHeight",false]],"getrenderwidth() (in module raylib)":[[6,"raylib.GetRenderWidth",false]],"getscreenheight() (in module raylib)":[[6,"raylib.GetScreenHeight",false]],"getscreentoworld2d() (in module raylib)":[[6,"raylib.GetScreenToWorld2D",false]],"getscreentoworldray() (in module raylib)":[[6,"raylib.GetScreenToWorldRay",false]],"getscreentoworldrayex() (in module raylib)":[[6,"raylib.GetScreenToWorldRayEx",false]],"getscreenwidth() (in module raylib)":[[6,"raylib.GetScreenWidth",false]],"getshaderlocation() (in module raylib)":[[6,"raylib.GetShaderLocation",false]],"getshaderlocationattrib() (in module raylib)":[[6,"raylib.GetShaderLocationAttrib",false]],"getshapestexture() (in module raylib)":[[6,"raylib.GetShapesTexture",false]],"getshapestexturerectangle() (in module raylib)":[[6,"raylib.GetShapesTextureRectangle",false]],"getsplinepointbasis() (in module raylib)":[[6,"raylib.GetSplinePointBasis",false]],"getsplinepointbeziercubic() (in module raylib)":[[6,"raylib.GetSplinePointBezierCubic",false]],"getsplinepointbezierquad() (in module raylib)":[[6,"raylib.GetSplinePointBezierQuad",false]],"getsplinepointcatmullrom() (in module raylib)":[[6,"raylib.GetSplinePointCatmullRom",false]],"getsplinepointlinear() (in module raylib)":[[6,"raylib.GetSplinePointLinear",false]],"gettime() (in module raylib)":[[6,"raylib.GetTime",false]],"gettouchpointcount() (in module raylib)":[[6,"raylib.GetTouchPointCount",false]],"gettouchpointid() (in module raylib)":[[6,"raylib.GetTouchPointId",false]],"gettouchposition() (in module raylib)":[[6,"raylib.GetTouchPosition",false]],"gettouchx() (in module raylib)":[[6,"raylib.GetTouchX",false]],"gettouchy() (in module raylib)":[[6,"raylib.GetTouchY",false]],"getwindowhandle() (in module raylib)":[[6,"raylib.GetWindowHandle",false]],"getwindowposition() (in module raylib)":[[6,"raylib.GetWindowPosition",false]],"getwindowscaledpi() (in module raylib)":[[6,"raylib.GetWindowScaleDPI",false]],"getworkingdirectory() (in module raylib)":[[6,"raylib.GetWorkingDirectory",false]],"getworldtoscreen() (in module raylib)":[[6,"raylib.GetWorldToScreen",false]],"getworldtoscreen2d() (in module raylib)":[[6,"raylib.GetWorldToScreen2D",false]],"getworldtoscreenex() (in module raylib)":[[6,"raylib.GetWorldToScreenEx",false]],"glfw_create_cursor() (in module pyray)":[[5,"pyray.glfw_create_cursor",false]],"glfw_create_standard_cursor() (in module pyray)":[[5,"pyray.glfw_create_standard_cursor",false]],"glfw_create_window() (in module pyray)":[[5,"pyray.glfw_create_window",false]],"glfw_default_window_hints() (in module pyray)":[[5,"pyray.glfw_default_window_hints",false]],"glfw_destroy_cursor() (in module pyray)":[[5,"pyray.glfw_destroy_cursor",false]],"glfw_destroy_window() (in module pyray)":[[5,"pyray.glfw_destroy_window",false]],"glfw_extension_supported() (in module pyray)":[[5,"pyray.glfw_extension_supported",false]],"glfw_focus_window() (in module pyray)":[[5,"pyray.glfw_focus_window",false]],"glfw_get_clipboard_string() (in module pyray)":[[5,"pyray.glfw_get_clipboard_string",false]],"glfw_get_current_context() (in module pyray)":[[5,"pyray.glfw_get_current_context",false]],"glfw_get_cursor_pos() (in module pyray)":[[5,"pyray.glfw_get_cursor_pos",false]],"glfw_get_error() (in module pyray)":[[5,"pyray.glfw_get_error",false]],"glfw_get_framebuffer_size() (in module pyray)":[[5,"pyray.glfw_get_framebuffer_size",false]],"glfw_get_gamepad_name() (in module pyray)":[[5,"pyray.glfw_get_gamepad_name",false]],"glfw_get_gamepad_state() (in module pyray)":[[5,"pyray.glfw_get_gamepad_state",false]],"glfw_get_gamma_ramp() (in module pyray)":[[5,"pyray.glfw_get_gamma_ramp",false]],"glfw_get_input_mode() (in module pyray)":[[5,"pyray.glfw_get_input_mode",false]],"glfw_get_joystick_axes() (in module pyray)":[[5,"pyray.glfw_get_joystick_axes",false]],"glfw_get_joystick_buttons() (in module pyray)":[[5,"pyray.glfw_get_joystick_buttons",false]],"glfw_get_joystick_guid() (in module pyray)":[[5,"pyray.glfw_get_joystick_guid",false]],"glfw_get_joystick_hats() (in module pyray)":[[5,"pyray.glfw_get_joystick_hats",false]],"glfw_get_joystick_name() (in module pyray)":[[5,"pyray.glfw_get_joystick_name",false]],"glfw_get_joystick_user_pointer() (in module pyray)":[[5,"pyray.glfw_get_joystick_user_pointer",false]],"glfw_get_key() (in module pyray)":[[5,"pyray.glfw_get_key",false]],"glfw_get_key_name() (in module pyray)":[[5,"pyray.glfw_get_key_name",false]],"glfw_get_key_scancode() (in module pyray)":[[5,"pyray.glfw_get_key_scancode",false]],"glfw_get_monitor_content_scale() (in module pyray)":[[5,"pyray.glfw_get_monitor_content_scale",false]],"glfw_get_monitor_name() (in module pyray)":[[5,"pyray.glfw_get_monitor_name",false]],"glfw_get_monitor_physical_size() (in module pyray)":[[5,"pyray.glfw_get_monitor_physical_size",false]],"glfw_get_monitor_pos() (in module pyray)":[[5,"pyray.glfw_get_monitor_pos",false]],"glfw_get_monitor_user_pointer() (in module pyray)":[[5,"pyray.glfw_get_monitor_user_pointer",false]],"glfw_get_monitor_workarea() (in module pyray)":[[5,"pyray.glfw_get_monitor_workarea",false]],"glfw_get_monitors() (in module pyray)":[[5,"pyray.glfw_get_monitors",false]],"glfw_get_mouse_button() (in module pyray)":[[5,"pyray.glfw_get_mouse_button",false]],"glfw_get_platform() (in module pyray)":[[5,"pyray.glfw_get_platform",false]],"glfw_get_primary_monitor() (in module pyray)":[[5,"pyray.glfw_get_primary_monitor",false]],"glfw_get_proc_address() (in module pyray)":[[5,"pyray.glfw_get_proc_address",false]],"glfw_get_required_instance_extensions() (in module pyray)":[[5,"pyray.glfw_get_required_instance_extensions",false]],"glfw_get_time() (in module pyray)":[[5,"pyray.glfw_get_time",false]],"glfw_get_timer_frequency() (in module pyray)":[[5,"pyray.glfw_get_timer_frequency",false]],"glfw_get_timer_value() (in module pyray)":[[5,"pyray.glfw_get_timer_value",false]],"glfw_get_version() (in module pyray)":[[5,"pyray.glfw_get_version",false]],"glfw_get_version_string() (in module pyray)":[[5,"pyray.glfw_get_version_string",false]],"glfw_get_video_mode() (in module pyray)":[[5,"pyray.glfw_get_video_mode",false]],"glfw_get_video_modes() (in module pyray)":[[5,"pyray.glfw_get_video_modes",false]],"glfw_get_window_attrib() (in module pyray)":[[5,"pyray.glfw_get_window_attrib",false]],"glfw_get_window_content_scale() (in module pyray)":[[5,"pyray.glfw_get_window_content_scale",false]],"glfw_get_window_frame_size() (in module pyray)":[[5,"pyray.glfw_get_window_frame_size",false]],"glfw_get_window_monitor() (in module pyray)":[[5,"pyray.glfw_get_window_monitor",false]],"glfw_get_window_opacity() (in module pyray)":[[5,"pyray.glfw_get_window_opacity",false]],"glfw_get_window_pos() (in module pyray)":[[5,"pyray.glfw_get_window_pos",false]],"glfw_get_window_size() (in module pyray)":[[5,"pyray.glfw_get_window_size",false]],"glfw_get_window_title() (in module pyray)":[[5,"pyray.glfw_get_window_title",false]],"glfw_get_window_user_pointer() (in module pyray)":[[5,"pyray.glfw_get_window_user_pointer",false]],"glfw_hide_window() (in module pyray)":[[5,"pyray.glfw_hide_window",false]],"glfw_iconify_window() (in module pyray)":[[5,"pyray.glfw_iconify_window",false]],"glfw_init() (in module pyray)":[[5,"pyray.glfw_init",false]],"glfw_init_allocator() (in module pyray)":[[5,"pyray.glfw_init_allocator",false]],"glfw_init_hint() (in module pyray)":[[5,"pyray.glfw_init_hint",false]],"glfw_joystick_is_gamepad() (in module pyray)":[[5,"pyray.glfw_joystick_is_gamepad",false]],"glfw_joystick_present() (in module pyray)":[[5,"pyray.glfw_joystick_present",false]],"glfw_make_context_current() (in module pyray)":[[5,"pyray.glfw_make_context_current",false]],"glfw_maximize_window() (in module pyray)":[[5,"pyray.glfw_maximize_window",false]],"glfw_platform_supported() (in module pyray)":[[5,"pyray.glfw_platform_supported",false]],"glfw_poll_events() (in module pyray)":[[5,"pyray.glfw_poll_events",false]],"glfw_post_empty_event() (in module pyray)":[[5,"pyray.glfw_post_empty_event",false]],"glfw_raw_mouse_motion_supported() (in module pyray)":[[5,"pyray.glfw_raw_mouse_motion_supported",false]],"glfw_request_window_attention() (in module pyray)":[[5,"pyray.glfw_request_window_attention",false]],"glfw_restore_window() (in module pyray)":[[5,"pyray.glfw_restore_window",false]],"glfw_set_char_callback() (in module pyray)":[[5,"pyray.glfw_set_char_callback",false]],"glfw_set_char_mods_callback() (in module pyray)":[[5,"pyray.glfw_set_char_mods_callback",false]],"glfw_set_clipboard_string() (in module pyray)":[[5,"pyray.glfw_set_clipboard_string",false]],"glfw_set_cursor() (in module pyray)":[[5,"pyray.glfw_set_cursor",false]],"glfw_set_cursor_enter_callback() (in module pyray)":[[5,"pyray.glfw_set_cursor_enter_callback",false]],"glfw_set_cursor_pos() (in module pyray)":[[5,"pyray.glfw_set_cursor_pos",false]],"glfw_set_cursor_pos_callback() (in module pyray)":[[5,"pyray.glfw_set_cursor_pos_callback",false]],"glfw_set_drop_callback() (in module pyray)":[[5,"pyray.glfw_set_drop_callback",false]],"glfw_set_error_callback() (in module pyray)":[[5,"pyray.glfw_set_error_callback",false]],"glfw_set_framebuffer_size_callback() (in module pyray)":[[5,"pyray.glfw_set_framebuffer_size_callback",false]],"glfw_set_gamma() (in module pyray)":[[5,"pyray.glfw_set_gamma",false]],"glfw_set_gamma_ramp() (in module pyray)":[[5,"pyray.glfw_set_gamma_ramp",false]],"glfw_set_input_mode() (in module pyray)":[[5,"pyray.glfw_set_input_mode",false]],"glfw_set_joystick_callback() (in module pyray)":[[5,"pyray.glfw_set_joystick_callback",false]],"glfw_set_joystick_user_pointer() (in module pyray)":[[5,"pyray.glfw_set_joystick_user_pointer",false]],"glfw_set_key_callback() (in module pyray)":[[5,"pyray.glfw_set_key_callback",false]],"glfw_set_monitor_callback() (in module pyray)":[[5,"pyray.glfw_set_monitor_callback",false]],"glfw_set_monitor_user_pointer() (in module pyray)":[[5,"pyray.glfw_set_monitor_user_pointer",false]],"glfw_set_mouse_button_callback() (in module pyray)":[[5,"pyray.glfw_set_mouse_button_callback",false]],"glfw_set_scroll_callback() (in module pyray)":[[5,"pyray.glfw_set_scroll_callback",false]],"glfw_set_time() (in module pyray)":[[5,"pyray.glfw_set_time",false]],"glfw_set_window_aspect_ratio() (in module pyray)":[[5,"pyray.glfw_set_window_aspect_ratio",false]],"glfw_set_window_attrib() (in module pyray)":[[5,"pyray.glfw_set_window_attrib",false]],"glfw_set_window_close_callback() (in module pyray)":[[5,"pyray.glfw_set_window_close_callback",false]],"glfw_set_window_content_scale_callback() (in module pyray)":[[5,"pyray.glfw_set_window_content_scale_callback",false]],"glfw_set_window_focus_callback() (in module pyray)":[[5,"pyray.glfw_set_window_focus_callback",false]],"glfw_set_window_icon() (in module pyray)":[[5,"pyray.glfw_set_window_icon",false]],"glfw_set_window_iconify_callback() (in module pyray)":[[5,"pyray.glfw_set_window_iconify_callback",false]],"glfw_set_window_maximize_callback() (in module pyray)":[[5,"pyray.glfw_set_window_maximize_callback",false]],"glfw_set_window_monitor() (in module pyray)":[[5,"pyray.glfw_set_window_monitor",false]],"glfw_set_window_opacity() (in module pyray)":[[5,"pyray.glfw_set_window_opacity",false]],"glfw_set_window_pos() (in module pyray)":[[5,"pyray.glfw_set_window_pos",false]],"glfw_set_window_pos_callback() (in module pyray)":[[5,"pyray.glfw_set_window_pos_callback",false]],"glfw_set_window_refresh_callback() (in module pyray)":[[5,"pyray.glfw_set_window_refresh_callback",false]],"glfw_set_window_should_close() (in module pyray)":[[5,"pyray.glfw_set_window_should_close",false]],"glfw_set_window_size() (in module pyray)":[[5,"pyray.glfw_set_window_size",false]],"glfw_set_window_size_callback() (in module pyray)":[[5,"pyray.glfw_set_window_size_callback",false]],"glfw_set_window_size_limits() (in module pyray)":[[5,"pyray.glfw_set_window_size_limits",false]],"glfw_set_window_title() (in module pyray)":[[5,"pyray.glfw_set_window_title",false]],"glfw_set_window_user_pointer() (in module pyray)":[[5,"pyray.glfw_set_window_user_pointer",false]],"glfw_show_window() (in module pyray)":[[5,"pyray.glfw_show_window",false]],"glfw_swap_buffers() (in module pyray)":[[5,"pyray.glfw_swap_buffers",false]],"glfw_swap_interval() (in module pyray)":[[5,"pyray.glfw_swap_interval",false]],"glfw_terminate() (in module pyray)":[[5,"pyray.glfw_terminate",false]],"glfw_update_gamepad_mappings() (in module pyray)":[[5,"pyray.glfw_update_gamepad_mappings",false]],"glfw_vulkan_supported() (in module pyray)":[[5,"pyray.glfw_vulkan_supported",false]],"glfw_wait_events() (in module pyray)":[[5,"pyray.glfw_wait_events",false]],"glfw_wait_events_timeout() (in module pyray)":[[5,"pyray.glfw_wait_events_timeout",false]],"glfw_window_hint() (in module pyray)":[[5,"pyray.glfw_window_hint",false]],"glfw_window_hint_string() (in module pyray)":[[5,"pyray.glfw_window_hint_string",false]],"glfw_window_should_close() (in module pyray)":[[5,"pyray.glfw_window_should_close",false]],"glfwallocator (class in raylib)":[[6,"raylib.GLFWallocator",false]],"glfwcreatecursor() (in module raylib)":[[6,"raylib.glfwCreateCursor",false]],"glfwcreatestandardcursor() (in module raylib)":[[6,"raylib.glfwCreateStandardCursor",false]],"glfwcreatewindow() (in module raylib)":[[6,"raylib.glfwCreateWindow",false]],"glfwcursor (class in raylib)":[[6,"raylib.GLFWcursor",false]],"glfwdefaultwindowhints() (in module raylib)":[[6,"raylib.glfwDefaultWindowHints",false]],"glfwdestroycursor() (in module raylib)":[[6,"raylib.glfwDestroyCursor",false]],"glfwdestroywindow() (in module raylib)":[[6,"raylib.glfwDestroyWindow",false]],"glfwextensionsupported() (in module raylib)":[[6,"raylib.glfwExtensionSupported",false]],"glfwfocuswindow() (in module raylib)":[[6,"raylib.glfwFocusWindow",false]],"glfwgamepadstate (class in raylib)":[[6,"raylib.GLFWgamepadstate",false]],"glfwgammaramp (class in raylib)":[[6,"raylib.GLFWgammaramp",false]],"glfwgetclipboardstring() (in module raylib)":[[6,"raylib.glfwGetClipboardString",false]],"glfwgetcurrentcontext() (in module raylib)":[[6,"raylib.glfwGetCurrentContext",false]],"glfwgetcursorpos() (in module raylib)":[[6,"raylib.glfwGetCursorPos",false]],"glfwgeterror() (in module raylib)":[[6,"raylib.glfwGetError",false]],"glfwgetframebuffersize() (in module raylib)":[[6,"raylib.glfwGetFramebufferSize",false]],"glfwgetgamepadname() (in module raylib)":[[6,"raylib.glfwGetGamepadName",false]],"glfwgetgamepadstate() (in module raylib)":[[6,"raylib.glfwGetGamepadState",false]],"glfwgetgammaramp() (in module raylib)":[[6,"raylib.glfwGetGammaRamp",false]],"glfwgetinputmode() (in module raylib)":[[6,"raylib.glfwGetInputMode",false]],"glfwgetjoystickaxes() (in module raylib)":[[6,"raylib.glfwGetJoystickAxes",false]],"glfwgetjoystickbuttons() (in module raylib)":[[6,"raylib.glfwGetJoystickButtons",false]],"glfwgetjoystickguid() (in module raylib)":[[6,"raylib.glfwGetJoystickGUID",false]],"glfwgetjoystickhats() (in module raylib)":[[6,"raylib.glfwGetJoystickHats",false]],"glfwgetjoystickname() (in module raylib)":[[6,"raylib.glfwGetJoystickName",false]],"glfwgetjoystickuserpointer() (in module raylib)":[[6,"raylib.glfwGetJoystickUserPointer",false]],"glfwgetkey() (in module raylib)":[[6,"raylib.glfwGetKey",false]],"glfwgetkeyname() (in module raylib)":[[6,"raylib.glfwGetKeyName",false]],"glfwgetkeyscancode() (in module raylib)":[[6,"raylib.glfwGetKeyScancode",false]],"glfwgetmonitorcontentscale() (in module raylib)":[[6,"raylib.glfwGetMonitorContentScale",false]],"glfwgetmonitorname() (in module raylib)":[[6,"raylib.glfwGetMonitorName",false]],"glfwgetmonitorphysicalsize() (in module raylib)":[[6,"raylib.glfwGetMonitorPhysicalSize",false]],"glfwgetmonitorpos() (in module raylib)":[[6,"raylib.glfwGetMonitorPos",false]],"glfwgetmonitors() (in module raylib)":[[6,"raylib.glfwGetMonitors",false]],"glfwgetmonitoruserpointer() (in module raylib)":[[6,"raylib.glfwGetMonitorUserPointer",false]],"glfwgetmonitorworkarea() (in module raylib)":[[6,"raylib.glfwGetMonitorWorkarea",false]],"glfwgetmousebutton() (in module raylib)":[[6,"raylib.glfwGetMouseButton",false]],"glfwgetplatform() (in module raylib)":[[6,"raylib.glfwGetPlatform",false]],"glfwgetprimarymonitor() (in module raylib)":[[6,"raylib.glfwGetPrimaryMonitor",false]],"glfwgetprocaddress() (in module raylib)":[[6,"raylib.glfwGetProcAddress",false]],"glfwgetrequiredinstanceextensions() (in module raylib)":[[6,"raylib.glfwGetRequiredInstanceExtensions",false]],"glfwgettime() (in module raylib)":[[6,"raylib.glfwGetTime",false]],"glfwgettimerfrequency() (in module raylib)":[[6,"raylib.glfwGetTimerFrequency",false]],"glfwgettimervalue() (in module raylib)":[[6,"raylib.glfwGetTimerValue",false]],"glfwgetversion() (in module raylib)":[[6,"raylib.glfwGetVersion",false]],"glfwgetversionstring() (in module raylib)":[[6,"raylib.glfwGetVersionString",false]],"glfwgetvideomode() (in module raylib)":[[6,"raylib.glfwGetVideoMode",false]],"glfwgetvideomodes() (in module raylib)":[[6,"raylib.glfwGetVideoModes",false]],"glfwgetwindowattrib() (in module raylib)":[[6,"raylib.glfwGetWindowAttrib",false]],"glfwgetwindowcontentscale() (in module raylib)":[[6,"raylib.glfwGetWindowContentScale",false]],"glfwgetwindowframesize() (in module raylib)":[[6,"raylib.glfwGetWindowFrameSize",false]],"glfwgetwindowmonitor() (in module raylib)":[[6,"raylib.glfwGetWindowMonitor",false]],"glfwgetwindowopacity() (in module raylib)":[[6,"raylib.glfwGetWindowOpacity",false]],"glfwgetwindowpos() (in module raylib)":[[6,"raylib.glfwGetWindowPos",false]],"glfwgetwindowsize() (in module raylib)":[[6,"raylib.glfwGetWindowSize",false]],"glfwgetwindowtitle() (in module raylib)":[[6,"raylib.glfwGetWindowTitle",false]],"glfwgetwindowuserpointer() (in module raylib)":[[6,"raylib.glfwGetWindowUserPointer",false]],"glfwhidewindow() (in module raylib)":[[6,"raylib.glfwHideWindow",false]],"glfwiconifywindow() (in module raylib)":[[6,"raylib.glfwIconifyWindow",false]],"glfwimage (class in raylib)":[[6,"raylib.GLFWimage",false]],"glfwinit() (in module raylib)":[[6,"raylib.glfwInit",false]],"glfwinitallocator() (in module raylib)":[[6,"raylib.glfwInitAllocator",false]],"glfwinithint() (in module raylib)":[[6,"raylib.glfwInitHint",false]],"glfwjoystickisgamepad() (in module raylib)":[[6,"raylib.glfwJoystickIsGamepad",false]],"glfwjoystickpresent() (in module raylib)":[[6,"raylib.glfwJoystickPresent",false]],"glfwmakecontextcurrent() (in module raylib)":[[6,"raylib.glfwMakeContextCurrent",false]],"glfwmaximizewindow() (in module raylib)":[[6,"raylib.glfwMaximizeWindow",false]],"glfwmonitor (class in raylib)":[[6,"raylib.GLFWmonitor",false]],"glfwplatformsupported() (in module raylib)":[[6,"raylib.glfwPlatformSupported",false]],"glfwpollevents() (in module raylib)":[[6,"raylib.glfwPollEvents",false]],"glfwpostemptyevent() (in module raylib)":[[6,"raylib.glfwPostEmptyEvent",false]],"glfwrawmousemotionsupported() (in module raylib)":[[6,"raylib.glfwRawMouseMotionSupported",false]],"glfwrequestwindowattention() (in module raylib)":[[6,"raylib.glfwRequestWindowAttention",false]],"glfwrestorewindow() (in module raylib)":[[6,"raylib.glfwRestoreWindow",false]],"glfwsetcharcallback() (in module raylib)":[[6,"raylib.glfwSetCharCallback",false]],"glfwsetcharmodscallback() (in module raylib)":[[6,"raylib.glfwSetCharModsCallback",false]],"glfwsetclipboardstring() (in module raylib)":[[6,"raylib.glfwSetClipboardString",false]],"glfwsetcursor() (in module raylib)":[[6,"raylib.glfwSetCursor",false]],"glfwsetcursorentercallback() (in module raylib)":[[6,"raylib.glfwSetCursorEnterCallback",false]],"glfwsetcursorpos() (in module raylib)":[[6,"raylib.glfwSetCursorPos",false]],"glfwsetcursorposcallback() (in module raylib)":[[6,"raylib.glfwSetCursorPosCallback",false]],"glfwsetdropcallback() (in module raylib)":[[6,"raylib.glfwSetDropCallback",false]],"glfwseterrorcallback() (in module raylib)":[[6,"raylib.glfwSetErrorCallback",false]],"glfwsetframebuffersizecallback() (in module raylib)":[[6,"raylib.glfwSetFramebufferSizeCallback",false]],"glfwsetgamma() (in module raylib)":[[6,"raylib.glfwSetGamma",false]],"glfwsetgammaramp() (in module raylib)":[[6,"raylib.glfwSetGammaRamp",false]],"glfwsetinputmode() (in module raylib)":[[6,"raylib.glfwSetInputMode",false]],"glfwsetjoystickcallback() (in module raylib)":[[6,"raylib.glfwSetJoystickCallback",false]],"glfwsetjoystickuserpointer() (in module raylib)":[[6,"raylib.glfwSetJoystickUserPointer",false]],"glfwsetkeycallback() (in module raylib)":[[6,"raylib.glfwSetKeyCallback",false]],"glfwsetmonitorcallback() (in module raylib)":[[6,"raylib.glfwSetMonitorCallback",false]],"glfwsetmonitoruserpointer() (in module raylib)":[[6,"raylib.glfwSetMonitorUserPointer",false]],"glfwsetmousebuttoncallback() (in module raylib)":[[6,"raylib.glfwSetMouseButtonCallback",false]],"glfwsetscrollcallback() (in module raylib)":[[6,"raylib.glfwSetScrollCallback",false]],"glfwsettime() (in module raylib)":[[6,"raylib.glfwSetTime",false]],"glfwsetwindowaspectratio() (in module raylib)":[[6,"raylib.glfwSetWindowAspectRatio",false]],"glfwsetwindowattrib() (in module raylib)":[[6,"raylib.glfwSetWindowAttrib",false]],"glfwsetwindowclosecallback() (in module raylib)":[[6,"raylib.glfwSetWindowCloseCallback",false]],"glfwsetwindowcontentscalecallback() (in module raylib)":[[6,"raylib.glfwSetWindowContentScaleCallback",false]],"glfwsetwindowfocuscallback() (in module raylib)":[[6,"raylib.glfwSetWindowFocusCallback",false]],"glfwsetwindowicon() (in module raylib)":[[6,"raylib.glfwSetWindowIcon",false]],"glfwsetwindowiconifycallback() (in module raylib)":[[6,"raylib.glfwSetWindowIconifyCallback",false]],"glfwsetwindowmaximizecallback() (in module raylib)":[[6,"raylib.glfwSetWindowMaximizeCallback",false]],"glfwsetwindowmonitor() (in module raylib)":[[6,"raylib.glfwSetWindowMonitor",false]],"glfwsetwindowopacity() (in module raylib)":[[6,"raylib.glfwSetWindowOpacity",false]],"glfwsetwindowpos() (in module raylib)":[[6,"raylib.glfwSetWindowPos",false]],"glfwsetwindowposcallback() (in module raylib)":[[6,"raylib.glfwSetWindowPosCallback",false]],"glfwsetwindowrefreshcallback() (in module raylib)":[[6,"raylib.glfwSetWindowRefreshCallback",false]],"glfwsetwindowshouldclose() (in module raylib)":[[6,"raylib.glfwSetWindowShouldClose",false]],"glfwsetwindowsize() (in module raylib)":[[6,"raylib.glfwSetWindowSize",false]],"glfwsetwindowsizecallback() (in module raylib)":[[6,"raylib.glfwSetWindowSizeCallback",false]],"glfwsetwindowsizelimits() (in module raylib)":[[6,"raylib.glfwSetWindowSizeLimits",false]],"glfwsetwindowtitle() (in module raylib)":[[6,"raylib.glfwSetWindowTitle",false]],"glfwsetwindowuserpointer() (in module raylib)":[[6,"raylib.glfwSetWindowUserPointer",false]],"glfwshowwindow() (in module raylib)":[[6,"raylib.glfwShowWindow",false]],"glfwswapbuffers() (in module raylib)":[[6,"raylib.glfwSwapBuffers",false]],"glfwswapinterval() (in module raylib)":[[6,"raylib.glfwSwapInterval",false]],"glfwterminate() (in module raylib)":[[6,"raylib.glfwTerminate",false]],"glfwupdategamepadmappings() (in module raylib)":[[6,"raylib.glfwUpdateGamepadMappings",false]],"glfwvidmode (class in raylib)":[[6,"raylib.GLFWvidmode",false]],"glfwvulkansupported() (in module raylib)":[[6,"raylib.glfwVulkanSupported",false]],"glfwwaitevents() (in module raylib)":[[6,"raylib.glfwWaitEvents",false]],"glfwwaiteventstimeout() (in module raylib)":[[6,"raylib.glfwWaitEventsTimeout",false]],"glfwwindow (class in raylib)":[[6,"raylib.GLFWwindow",false]],"glfwwindowhint() (in module raylib)":[[6,"raylib.glfwWindowHint",false]],"glfwwindowhintstring() (in module raylib)":[[6,"raylib.glfwWindowHintString",false]],"glfwwindowshouldclose() (in module raylib)":[[6,"raylib.glfwWindowShouldClose",false]],"glyphcount (pyray.font attribute)":[[5,"pyray.Font.glyphCount",false]],"glyphcount (raylib.font attribute)":[[6,"raylib.Font.glyphCount",false]],"glyphinfo (class in pyray)":[[5,"pyray.GlyphInfo",false]],"glyphinfo (class in raylib)":[[6,"raylib.GlyphInfo",false]],"glyphpadding (pyray.font attribute)":[[5,"pyray.Font.glyphPadding",false]],"glyphpadding (raylib.font attribute)":[[6,"raylib.Font.glyphPadding",false]],"glyphs (pyray.font attribute)":[[5,"pyray.Font.glyphs",false]],"glyphs (raylib.font attribute)":[[6,"raylib.Font.glyphs",false]],"gold (in module pyray)":[[5,"pyray.GOLD",false]],"gold (in module raylib)":[[6,"raylib.GOLD",false]],"gray (in module pyray)":[[5,"pyray.GRAY",false]],"gray (in module raylib)":[[6,"raylib.GRAY",false]],"green (in module pyray)":[[5,"pyray.GREEN",false]],"green (in module raylib)":[[6,"raylib.GREEN",false]],"green (raylib.glfwgammaramp attribute)":[[6,"raylib.GLFWgammaramp.green",false]],"greenbits (raylib.glfwvidmode attribute)":[[6,"raylib.GLFWvidmode.greenBits",false]],"group_padding (in module raylib)":[[6,"raylib.GROUP_PADDING",false]],"group_padding (pyray.guitoggleproperty attribute)":[[5,"pyray.GuiToggleProperty.GROUP_PADDING",false]],"gui_button() (in module pyray)":[[5,"pyray.gui_button",false]],"gui_check_box() (in module pyray)":[[5,"pyray.gui_check_box",false]],"gui_color_bar_alpha() (in module pyray)":[[5,"pyray.gui_color_bar_alpha",false]],"gui_color_bar_hue() (in module pyray)":[[5,"pyray.gui_color_bar_hue",false]],"gui_color_panel() (in module pyray)":[[5,"pyray.gui_color_panel",false]],"gui_color_panel_hsv() (in module pyray)":[[5,"pyray.gui_color_panel_hsv",false]],"gui_color_picker() (in module pyray)":[[5,"pyray.gui_color_picker",false]],"gui_color_picker_hsv() (in module pyray)":[[5,"pyray.gui_color_picker_hsv",false]],"gui_combo_box() (in module pyray)":[[5,"pyray.gui_combo_box",false]],"gui_disable() (in module pyray)":[[5,"pyray.gui_disable",false]],"gui_disable_tooltip() (in module pyray)":[[5,"pyray.gui_disable_tooltip",false]],"gui_draw_icon() (in module pyray)":[[5,"pyray.gui_draw_icon",false]],"gui_dropdown_box() (in module pyray)":[[5,"pyray.gui_dropdown_box",false]],"gui_dummy_rec() (in module pyray)":[[5,"pyray.gui_dummy_rec",false]],"gui_enable() (in module pyray)":[[5,"pyray.gui_enable",false]],"gui_enable_tooltip() (in module pyray)":[[5,"pyray.gui_enable_tooltip",false]],"gui_get_font() (in module pyray)":[[5,"pyray.gui_get_font",false]],"gui_get_icons() (in module pyray)":[[5,"pyray.gui_get_icons",false]],"gui_get_state() (in module pyray)":[[5,"pyray.gui_get_state",false]],"gui_get_style() (in module pyray)":[[5,"pyray.gui_get_style",false]],"gui_grid() (in module pyray)":[[5,"pyray.gui_grid",false]],"gui_group_box() (in module pyray)":[[5,"pyray.gui_group_box",false]],"gui_icon_text() (in module pyray)":[[5,"pyray.gui_icon_text",false]],"gui_is_locked() (in module pyray)":[[5,"pyray.gui_is_locked",false]],"gui_label() (in module pyray)":[[5,"pyray.gui_label",false]],"gui_label_button() (in module pyray)":[[5,"pyray.gui_label_button",false]],"gui_line() (in module pyray)":[[5,"pyray.gui_line",false]],"gui_list_view() (in module pyray)":[[5,"pyray.gui_list_view",false]],"gui_list_view_ex() (in module pyray)":[[5,"pyray.gui_list_view_ex",false]],"gui_load_icons() (in module pyray)":[[5,"pyray.gui_load_icons",false]],"gui_load_style() (in module pyray)":[[5,"pyray.gui_load_style",false]],"gui_load_style_default() (in module pyray)":[[5,"pyray.gui_load_style_default",false]],"gui_lock() (in module pyray)":[[5,"pyray.gui_lock",false]],"gui_message_box() (in module pyray)":[[5,"pyray.gui_message_box",false]],"gui_panel() (in module pyray)":[[5,"pyray.gui_panel",false]],"gui_progress_bar() (in module pyray)":[[5,"pyray.gui_progress_bar",false]],"gui_scroll_panel() (in module pyray)":[[5,"pyray.gui_scroll_panel",false]],"gui_set_alpha() (in module pyray)":[[5,"pyray.gui_set_alpha",false]],"gui_set_font() (in module pyray)":[[5,"pyray.gui_set_font",false]],"gui_set_icon_scale() (in module pyray)":[[5,"pyray.gui_set_icon_scale",false]],"gui_set_state() (in module pyray)":[[5,"pyray.gui_set_state",false]],"gui_set_style() (in module pyray)":[[5,"pyray.gui_set_style",false]],"gui_set_tooltip() (in module pyray)":[[5,"pyray.gui_set_tooltip",false]],"gui_slider() (in module pyray)":[[5,"pyray.gui_slider",false]],"gui_slider_bar() (in module pyray)":[[5,"pyray.gui_slider_bar",false]],"gui_spinner() (in module pyray)":[[5,"pyray.gui_spinner",false]],"gui_status_bar() (in module pyray)":[[5,"pyray.gui_status_bar",false]],"gui_tab_bar() (in module pyray)":[[5,"pyray.gui_tab_bar",false]],"gui_text_box() (in module pyray)":[[5,"pyray.gui_text_box",false]],"gui_text_input_box() (in module pyray)":[[5,"pyray.gui_text_input_box",false]],"gui_toggle() (in module pyray)":[[5,"pyray.gui_toggle",false]],"gui_toggle_group() (in module pyray)":[[5,"pyray.gui_toggle_group",false]],"gui_toggle_slider() (in module pyray)":[[5,"pyray.gui_toggle_slider",false]],"gui_unlock() (in module pyray)":[[5,"pyray.gui_unlock",false]],"gui_value_box() (in module pyray)":[[5,"pyray.gui_value_box",false]],"gui_value_box_float() (in module pyray)":[[5,"pyray.gui_value_box_float",false]],"gui_window_box() (in module pyray)":[[5,"pyray.gui_window_box",false]],"guibutton() (in module raylib)":[[6,"raylib.GuiButton",false]],"guicheckbox() (in module raylib)":[[6,"raylib.GuiCheckBox",false]],"guicheckboxproperty (class in pyray)":[[5,"pyray.GuiCheckBoxProperty",false]],"guicheckboxproperty (in module raylib)":[[6,"raylib.GuiCheckBoxProperty",false]],"guicolorbaralpha() (in module raylib)":[[6,"raylib.GuiColorBarAlpha",false]],"guicolorbarhue() (in module raylib)":[[6,"raylib.GuiColorBarHue",false]],"guicolorpanel() (in module raylib)":[[6,"raylib.GuiColorPanel",false]],"guicolorpanelhsv() (in module raylib)":[[6,"raylib.GuiColorPanelHSV",false]],"guicolorpicker() (in module raylib)":[[6,"raylib.GuiColorPicker",false]],"guicolorpickerhsv() (in module raylib)":[[6,"raylib.GuiColorPickerHSV",false]],"guicolorpickerproperty (class in pyray)":[[5,"pyray.GuiColorPickerProperty",false]],"guicolorpickerproperty (in module raylib)":[[6,"raylib.GuiColorPickerProperty",false]],"guicombobox() (in module raylib)":[[6,"raylib.GuiComboBox",false]],"guicomboboxproperty (class in pyray)":[[5,"pyray.GuiComboBoxProperty",false]],"guicomboboxproperty (in module raylib)":[[6,"raylib.GuiComboBoxProperty",false]],"guicontrol (class in pyray)":[[5,"pyray.GuiControl",false]],"guicontrol (in module raylib)":[[6,"raylib.GuiControl",false]],"guicontrolproperty (class in pyray)":[[5,"pyray.GuiControlProperty",false]],"guicontrolproperty (in module raylib)":[[6,"raylib.GuiControlProperty",false]],"guidefaultproperty (class in pyray)":[[5,"pyray.GuiDefaultProperty",false]],"guidefaultproperty (in module raylib)":[[6,"raylib.GuiDefaultProperty",false]],"guidisable() (in module raylib)":[[6,"raylib.GuiDisable",false]],"guidisabletooltip() (in module raylib)":[[6,"raylib.GuiDisableTooltip",false]],"guidrawicon() (in module raylib)":[[6,"raylib.GuiDrawIcon",false]],"guidropdownbox() (in module raylib)":[[6,"raylib.GuiDropdownBox",false]],"guidropdownboxproperty (class in pyray)":[[5,"pyray.GuiDropdownBoxProperty",false]],"guidropdownboxproperty (in module raylib)":[[6,"raylib.GuiDropdownBoxProperty",false]],"guidummyrec() (in module raylib)":[[6,"raylib.GuiDummyRec",false]],"guienable() (in module raylib)":[[6,"raylib.GuiEnable",false]],"guienabletooltip() (in module raylib)":[[6,"raylib.GuiEnableTooltip",false]],"guigetfont() (in module raylib)":[[6,"raylib.GuiGetFont",false]],"guigeticons() (in module raylib)":[[6,"raylib.GuiGetIcons",false]],"guigetstate() (in module raylib)":[[6,"raylib.GuiGetState",false]],"guigetstyle() (in module raylib)":[[6,"raylib.GuiGetStyle",false]],"guigrid() (in module raylib)":[[6,"raylib.GuiGrid",false]],"guigroupbox() (in module raylib)":[[6,"raylib.GuiGroupBox",false]],"guiiconname (class in pyray)":[[5,"pyray.GuiIconName",false]],"guiiconname (in module raylib)":[[6,"raylib.GuiIconName",false]],"guiicontext() (in module raylib)":[[6,"raylib.GuiIconText",false]],"guiislocked() (in module raylib)":[[6,"raylib.GuiIsLocked",false]],"guilabel() (in module raylib)":[[6,"raylib.GuiLabel",false]],"guilabelbutton() (in module raylib)":[[6,"raylib.GuiLabelButton",false]],"guiline() (in module raylib)":[[6,"raylib.GuiLine",false]],"guilistview() (in module raylib)":[[6,"raylib.GuiListView",false]],"guilistviewex() (in module raylib)":[[6,"raylib.GuiListViewEx",false]],"guilistviewproperty (class in pyray)":[[5,"pyray.GuiListViewProperty",false]],"guilistviewproperty (in module raylib)":[[6,"raylib.GuiListViewProperty",false]],"guiloadicons() (in module raylib)":[[6,"raylib.GuiLoadIcons",false]],"guiloadstyle() (in module raylib)":[[6,"raylib.GuiLoadStyle",false]],"guiloadstyledefault() (in module raylib)":[[6,"raylib.GuiLoadStyleDefault",false]],"guilock() (in module raylib)":[[6,"raylib.GuiLock",false]],"guimessagebox() (in module raylib)":[[6,"raylib.GuiMessageBox",false]],"guipanel() (in module raylib)":[[6,"raylib.GuiPanel",false]],"guiprogressbar() (in module raylib)":[[6,"raylib.GuiProgressBar",false]],"guiprogressbarproperty (class in pyray)":[[5,"pyray.GuiProgressBarProperty",false]],"guiprogressbarproperty (in module raylib)":[[6,"raylib.GuiProgressBarProperty",false]],"guiscrollbarproperty (class in pyray)":[[5,"pyray.GuiScrollBarProperty",false]],"guiscrollbarproperty (in module raylib)":[[6,"raylib.GuiScrollBarProperty",false]],"guiscrollpanel() (in module raylib)":[[6,"raylib.GuiScrollPanel",false]],"guisetalpha() (in module raylib)":[[6,"raylib.GuiSetAlpha",false]],"guisetfont() (in module raylib)":[[6,"raylib.GuiSetFont",false]],"guiseticonscale() (in module raylib)":[[6,"raylib.GuiSetIconScale",false]],"guisetstate() (in module raylib)":[[6,"raylib.GuiSetState",false]],"guisetstyle() (in module raylib)":[[6,"raylib.GuiSetStyle",false]],"guisettooltip() (in module raylib)":[[6,"raylib.GuiSetTooltip",false]],"guislider() (in module raylib)":[[6,"raylib.GuiSlider",false]],"guisliderbar() (in module raylib)":[[6,"raylib.GuiSliderBar",false]],"guisliderproperty (class in pyray)":[[5,"pyray.GuiSliderProperty",false]],"guisliderproperty (in module raylib)":[[6,"raylib.GuiSliderProperty",false]],"guispinner() (in module raylib)":[[6,"raylib.GuiSpinner",false]],"guispinnerproperty (class in pyray)":[[5,"pyray.GuiSpinnerProperty",false]],"guispinnerproperty (in module raylib)":[[6,"raylib.GuiSpinnerProperty",false]],"guistate (class in pyray)":[[5,"pyray.GuiState",false]],"guistate (in module raylib)":[[6,"raylib.GuiState",false]],"guistatusbar() (in module raylib)":[[6,"raylib.GuiStatusBar",false]],"guistyleprop (class in pyray)":[[5,"pyray.GuiStyleProp",false]],"guistyleprop (class in raylib)":[[6,"raylib.GuiStyleProp",false]],"guitabbar() (in module raylib)":[[6,"raylib.GuiTabBar",false]],"guitextalignment (class in pyray)":[[5,"pyray.GuiTextAlignment",false]],"guitextalignment (in module raylib)":[[6,"raylib.GuiTextAlignment",false]],"guitextalignmentvertical (class in pyray)":[[5,"pyray.GuiTextAlignmentVertical",false]],"guitextalignmentvertical (in module raylib)":[[6,"raylib.GuiTextAlignmentVertical",false]],"guitextbox() (in module raylib)":[[6,"raylib.GuiTextBox",false]],"guitextboxproperty (class in pyray)":[[5,"pyray.GuiTextBoxProperty",false]],"guitextboxproperty (in module raylib)":[[6,"raylib.GuiTextBoxProperty",false]],"guitextinputbox() (in module raylib)":[[6,"raylib.GuiTextInputBox",false]],"guitextwrapmode (class in pyray)":[[5,"pyray.GuiTextWrapMode",false]],"guitextwrapmode (in module raylib)":[[6,"raylib.GuiTextWrapMode",false]],"guitoggle() (in module raylib)":[[6,"raylib.GuiToggle",false]],"guitogglegroup() (in module raylib)":[[6,"raylib.GuiToggleGroup",false]],"guitoggleproperty (class in pyray)":[[5,"pyray.GuiToggleProperty",false]],"guitoggleproperty (in module raylib)":[[6,"raylib.GuiToggleProperty",false]],"guitoggleslider() (in module raylib)":[[6,"raylib.GuiToggleSlider",false]],"guiunlock() (in module raylib)":[[6,"raylib.GuiUnlock",false]],"guivaluebox() (in module raylib)":[[6,"raylib.GuiValueBox",false]],"guivalueboxfloat() (in module raylib)":[[6,"raylib.GuiValueBoxFloat",false]],"guiwindowbox() (in module raylib)":[[6,"raylib.GuiWindowBox",false]],"height (pyray.image attribute)":[[5,"pyray.Image.height",false]],"height (pyray.rectangle attribute)":[[5,"pyray.Rectangle.height",false]],"height (pyray.texture attribute)":[[5,"pyray.Texture.height",false]],"height (pyray.texture2d attribute)":[[5,"pyray.Texture2D.height",false]],"height (raylib.glfwimage attribute)":[[6,"raylib.GLFWimage.height",false]],"height (raylib.glfwvidmode attribute)":[[6,"raylib.GLFWvidmode.height",false]],"height (raylib.image attribute)":[[6,"raylib.Image.height",false]],"height (raylib.rectangle attribute)":[[6,"raylib.Rectangle.height",false]],"height (raylib.texture attribute)":[[6,"raylib.Texture.height",false]],"height (raylib.texture2d attribute)":[[6,"raylib.Texture2D.height",false]],"height (raylib.texturecubemap attribute)":[[6,"raylib.TextureCubemap.height",false]],"hide_cursor() (in module pyray)":[[5,"pyray.hide_cursor",false]],"hidecursor() (in module raylib)":[[6,"raylib.HideCursor",false]],"hit (pyray.raycollision attribute)":[[5,"pyray.RayCollision.hit",false]],"hit (raylib.raycollision attribute)":[[6,"raylib.RayCollision.hit",false]],"hresolution (pyray.vrdeviceinfo attribute)":[[5,"pyray.VrDeviceInfo.hResolution",false]],"hresolution (raylib.vrdeviceinfo attribute)":[[6,"raylib.VrDeviceInfo.hResolution",false]],"hscreensize (pyray.vrdeviceinfo attribute)":[[5,"pyray.VrDeviceInfo.hScreenSize",false]],"hscreensize (raylib.vrdeviceinfo attribute)":[[6,"raylib.VrDeviceInfo.hScreenSize",false]],"huebar_padding (in module raylib)":[[6,"raylib.HUEBAR_PADDING",false]],"huebar_padding (pyray.guicolorpickerproperty attribute)":[[5,"pyray.GuiColorPickerProperty.HUEBAR_PADDING",false]],"huebar_selector_height (in module raylib)":[[6,"raylib.HUEBAR_SELECTOR_HEIGHT",false]],"huebar_selector_height (pyray.guicolorpickerproperty attribute)":[[5,"pyray.GuiColorPickerProperty.HUEBAR_SELECTOR_HEIGHT",false]],"huebar_selector_overflow (in module raylib)":[[6,"raylib.HUEBAR_SELECTOR_OVERFLOW",false]],"huebar_selector_overflow (pyray.guicolorpickerproperty attribute)":[[5,"pyray.GuiColorPickerProperty.HUEBAR_SELECTOR_OVERFLOW",false]],"huebar_width (in module raylib)":[[6,"raylib.HUEBAR_WIDTH",false]],"huebar_width (pyray.guicolorpickerproperty attribute)":[[5,"pyray.GuiColorPickerProperty.HUEBAR_WIDTH",false]],"icon_1up (in module raylib)":[[6,"raylib.ICON_1UP",false]],"icon_1up (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_1UP",false]],"icon_229 (in module raylib)":[[6,"raylib.ICON_229",false]],"icon_229 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_229",false]],"icon_230 (in module raylib)":[[6,"raylib.ICON_230",false]],"icon_230 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_230",false]],"icon_231 (in module raylib)":[[6,"raylib.ICON_231",false]],"icon_231 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_231",false]],"icon_232 (in module raylib)":[[6,"raylib.ICON_232",false]],"icon_232 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_232",false]],"icon_233 (in module raylib)":[[6,"raylib.ICON_233",false]],"icon_233 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_233",false]],"icon_234 (in module raylib)":[[6,"raylib.ICON_234",false]],"icon_234 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_234",false]],"icon_235 (in module raylib)":[[6,"raylib.ICON_235",false]],"icon_235 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_235",false]],"icon_236 (in module raylib)":[[6,"raylib.ICON_236",false]],"icon_236 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_236",false]],"icon_237 (in module raylib)":[[6,"raylib.ICON_237",false]],"icon_237 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_237",false]],"icon_238 (in module raylib)":[[6,"raylib.ICON_238",false]],"icon_238 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_238",false]],"icon_239 (in module raylib)":[[6,"raylib.ICON_239",false]],"icon_239 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_239",false]],"icon_240 (in module raylib)":[[6,"raylib.ICON_240",false]],"icon_240 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_240",false]],"icon_241 (in module raylib)":[[6,"raylib.ICON_241",false]],"icon_241 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_241",false]],"icon_242 (in module raylib)":[[6,"raylib.ICON_242",false]],"icon_242 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_242",false]],"icon_243 (in module raylib)":[[6,"raylib.ICON_243",false]],"icon_243 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_243",false]],"icon_244 (in module raylib)":[[6,"raylib.ICON_244",false]],"icon_244 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_244",false]],"icon_245 (in module raylib)":[[6,"raylib.ICON_245",false]],"icon_245 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_245",false]],"icon_246 (in module raylib)":[[6,"raylib.ICON_246",false]],"icon_246 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_246",false]],"icon_247 (in module raylib)":[[6,"raylib.ICON_247",false]],"icon_247 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_247",false]],"icon_248 (in module raylib)":[[6,"raylib.ICON_248",false]],"icon_248 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_248",false]],"icon_249 (in module raylib)":[[6,"raylib.ICON_249",false]],"icon_249 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_249",false]],"icon_250 (in module raylib)":[[6,"raylib.ICON_250",false]],"icon_250 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_250",false]],"icon_251 (in module raylib)":[[6,"raylib.ICON_251",false]],"icon_251 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_251",false]],"icon_252 (in module raylib)":[[6,"raylib.ICON_252",false]],"icon_252 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_252",false]],"icon_253 (in module raylib)":[[6,"raylib.ICON_253",false]],"icon_253 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_253",false]],"icon_254 (in module raylib)":[[6,"raylib.ICON_254",false]],"icon_254 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_254",false]],"icon_255 (in module raylib)":[[6,"raylib.ICON_255",false]],"icon_255 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_255",false]],"icon_alarm (in module raylib)":[[6,"raylib.ICON_ALARM",false]],"icon_alarm (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ALARM",false]],"icon_alpha_clear (in module raylib)":[[6,"raylib.ICON_ALPHA_CLEAR",false]],"icon_alpha_clear (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ALPHA_CLEAR",false]],"icon_alpha_multiply (in module raylib)":[[6,"raylib.ICON_ALPHA_MULTIPLY",false]],"icon_alpha_multiply (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ALPHA_MULTIPLY",false]],"icon_arrow_down (in module raylib)":[[6,"raylib.ICON_ARROW_DOWN",false]],"icon_arrow_down (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ARROW_DOWN",false]],"icon_arrow_down_fill (in module raylib)":[[6,"raylib.ICON_ARROW_DOWN_FILL",false]],"icon_arrow_down_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ARROW_DOWN_FILL",false]],"icon_arrow_left (in module raylib)":[[6,"raylib.ICON_ARROW_LEFT",false]],"icon_arrow_left (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ARROW_LEFT",false]],"icon_arrow_left_fill (in module raylib)":[[6,"raylib.ICON_ARROW_LEFT_FILL",false]],"icon_arrow_left_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ARROW_LEFT_FILL",false]],"icon_arrow_right (in module raylib)":[[6,"raylib.ICON_ARROW_RIGHT",false]],"icon_arrow_right (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ARROW_RIGHT",false]],"icon_arrow_right_fill (in module raylib)":[[6,"raylib.ICON_ARROW_RIGHT_FILL",false]],"icon_arrow_right_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ARROW_RIGHT_FILL",false]],"icon_arrow_up (in module raylib)":[[6,"raylib.ICON_ARROW_UP",false]],"icon_arrow_up (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ARROW_UP",false]],"icon_arrow_up_fill (in module raylib)":[[6,"raylib.ICON_ARROW_UP_FILL",false]],"icon_arrow_up_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ARROW_UP_FILL",false]],"icon_audio (in module raylib)":[[6,"raylib.ICON_AUDIO",false]],"icon_audio (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_AUDIO",false]],"icon_bin (in module raylib)":[[6,"raylib.ICON_BIN",false]],"icon_bin (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BIN",false]],"icon_box (in module raylib)":[[6,"raylib.ICON_BOX",false]],"icon_box (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX",false]],"icon_box_bottom (in module raylib)":[[6,"raylib.ICON_BOX_BOTTOM",false]],"icon_box_bottom (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_BOTTOM",false]],"icon_box_bottom_left (in module raylib)":[[6,"raylib.ICON_BOX_BOTTOM_LEFT",false]],"icon_box_bottom_left (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_BOTTOM_LEFT",false]],"icon_box_bottom_right (in module raylib)":[[6,"raylib.ICON_BOX_BOTTOM_RIGHT",false]],"icon_box_bottom_right (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_BOTTOM_RIGHT",false]],"icon_box_center (in module raylib)":[[6,"raylib.ICON_BOX_CENTER",false]],"icon_box_center (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_CENTER",false]],"icon_box_circle_mask (in module raylib)":[[6,"raylib.ICON_BOX_CIRCLE_MASK",false]],"icon_box_circle_mask (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_CIRCLE_MASK",false]],"icon_box_concentric (in module raylib)":[[6,"raylib.ICON_BOX_CONCENTRIC",false]],"icon_box_concentric (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_CONCENTRIC",false]],"icon_box_corners_big (in module raylib)":[[6,"raylib.ICON_BOX_CORNERS_BIG",false]],"icon_box_corners_big (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_CORNERS_BIG",false]],"icon_box_corners_small (in module raylib)":[[6,"raylib.ICON_BOX_CORNERS_SMALL",false]],"icon_box_corners_small (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_CORNERS_SMALL",false]],"icon_box_dots_big (in module raylib)":[[6,"raylib.ICON_BOX_DOTS_BIG",false]],"icon_box_dots_big (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_DOTS_BIG",false]],"icon_box_dots_small (in module raylib)":[[6,"raylib.ICON_BOX_DOTS_SMALL",false]],"icon_box_dots_small (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_DOTS_SMALL",false]],"icon_box_grid (in module raylib)":[[6,"raylib.ICON_BOX_GRID",false]],"icon_box_grid (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_GRID",false]],"icon_box_grid_big (in module raylib)":[[6,"raylib.ICON_BOX_GRID_BIG",false]],"icon_box_grid_big (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_GRID_BIG",false]],"icon_box_left (in module raylib)":[[6,"raylib.ICON_BOX_LEFT",false]],"icon_box_left (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_LEFT",false]],"icon_box_multisize (in module raylib)":[[6,"raylib.ICON_BOX_MULTISIZE",false]],"icon_box_multisize (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_MULTISIZE",false]],"icon_box_right (in module raylib)":[[6,"raylib.ICON_BOX_RIGHT",false]],"icon_box_right (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_RIGHT",false]],"icon_box_top (in module raylib)":[[6,"raylib.ICON_BOX_TOP",false]],"icon_box_top (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_TOP",false]],"icon_box_top_left (in module raylib)":[[6,"raylib.ICON_BOX_TOP_LEFT",false]],"icon_box_top_left (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_TOP_LEFT",false]],"icon_box_top_right (in module raylib)":[[6,"raylib.ICON_BOX_TOP_RIGHT",false]],"icon_box_top_right (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BOX_TOP_RIGHT",false]],"icon_breakpoint_off (in module raylib)":[[6,"raylib.ICON_BREAKPOINT_OFF",false]],"icon_breakpoint_off (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BREAKPOINT_OFF",false]],"icon_breakpoint_on (in module raylib)":[[6,"raylib.ICON_BREAKPOINT_ON",false]],"icon_breakpoint_on (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BREAKPOINT_ON",false]],"icon_brush_classic (in module raylib)":[[6,"raylib.ICON_BRUSH_CLASSIC",false]],"icon_brush_classic (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BRUSH_CLASSIC",false]],"icon_brush_painter (in module raylib)":[[6,"raylib.ICON_BRUSH_PAINTER",false]],"icon_brush_painter (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BRUSH_PAINTER",false]],"icon_burger_menu (in module raylib)":[[6,"raylib.ICON_BURGER_MENU",false]],"icon_burger_menu (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_BURGER_MENU",false]],"icon_camera (in module raylib)":[[6,"raylib.ICON_CAMERA",false]],"icon_camera (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CAMERA",false]],"icon_case_sensitive (in module raylib)":[[6,"raylib.ICON_CASE_SENSITIVE",false]],"icon_case_sensitive (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CASE_SENSITIVE",false]],"icon_clock (in module raylib)":[[6,"raylib.ICON_CLOCK",false]],"icon_clock (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CLOCK",false]],"icon_coin (in module raylib)":[[6,"raylib.ICON_COIN",false]],"icon_coin (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_COIN",false]],"icon_color_bucket (in module raylib)":[[6,"raylib.ICON_COLOR_BUCKET",false]],"icon_color_bucket (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_COLOR_BUCKET",false]],"icon_color_picker (in module raylib)":[[6,"raylib.ICON_COLOR_PICKER",false]],"icon_color_picker (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_COLOR_PICKER",false]],"icon_corner (in module raylib)":[[6,"raylib.ICON_CORNER",false]],"icon_corner (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CORNER",false]],"icon_cpu (in module raylib)":[[6,"raylib.ICON_CPU",false]],"icon_cpu (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CPU",false]],"icon_crack (in module raylib)":[[6,"raylib.ICON_CRACK",false]],"icon_crack (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CRACK",false]],"icon_crack_points (in module raylib)":[[6,"raylib.ICON_CRACK_POINTS",false]],"icon_crack_points (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CRACK_POINTS",false]],"icon_crop (in module raylib)":[[6,"raylib.ICON_CROP",false]],"icon_crop (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CROP",false]],"icon_crop_alpha (in module raylib)":[[6,"raylib.ICON_CROP_ALPHA",false]],"icon_crop_alpha (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CROP_ALPHA",false]],"icon_cross (in module raylib)":[[6,"raylib.ICON_CROSS",false]],"icon_cross (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CROSS",false]],"icon_cross_small (in module raylib)":[[6,"raylib.ICON_CROSS_SMALL",false]],"icon_cross_small (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CROSS_SMALL",false]],"icon_crossline (in module raylib)":[[6,"raylib.ICON_CROSSLINE",false]],"icon_crossline (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CROSSLINE",false]],"icon_cube (in module raylib)":[[6,"raylib.ICON_CUBE",false]],"icon_cube (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CUBE",false]],"icon_cube_face_back (in module raylib)":[[6,"raylib.ICON_CUBE_FACE_BACK",false]],"icon_cube_face_back (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CUBE_FACE_BACK",false]],"icon_cube_face_bottom (in module raylib)":[[6,"raylib.ICON_CUBE_FACE_BOTTOM",false]],"icon_cube_face_bottom (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CUBE_FACE_BOTTOM",false]],"icon_cube_face_front (in module raylib)":[[6,"raylib.ICON_CUBE_FACE_FRONT",false]],"icon_cube_face_front (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CUBE_FACE_FRONT",false]],"icon_cube_face_left (in module raylib)":[[6,"raylib.ICON_CUBE_FACE_LEFT",false]],"icon_cube_face_left (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CUBE_FACE_LEFT",false]],"icon_cube_face_right (in module raylib)":[[6,"raylib.ICON_CUBE_FACE_RIGHT",false]],"icon_cube_face_right (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CUBE_FACE_RIGHT",false]],"icon_cube_face_top (in module raylib)":[[6,"raylib.ICON_CUBE_FACE_TOP",false]],"icon_cube_face_top (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CUBE_FACE_TOP",false]],"icon_cursor_classic (in module raylib)":[[6,"raylib.ICON_CURSOR_CLASSIC",false]],"icon_cursor_classic (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_CLASSIC",false]],"icon_cursor_hand (in module raylib)":[[6,"raylib.ICON_CURSOR_HAND",false]],"icon_cursor_hand (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_HAND",false]],"icon_cursor_move (in module raylib)":[[6,"raylib.ICON_CURSOR_MOVE",false]],"icon_cursor_move (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_MOVE",false]],"icon_cursor_move_fill (in module raylib)":[[6,"raylib.ICON_CURSOR_MOVE_FILL",false]],"icon_cursor_move_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_MOVE_FILL",false]],"icon_cursor_pointer (in module raylib)":[[6,"raylib.ICON_CURSOR_POINTER",false]],"icon_cursor_pointer (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_POINTER",false]],"icon_cursor_scale (in module raylib)":[[6,"raylib.ICON_CURSOR_SCALE",false]],"icon_cursor_scale (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_SCALE",false]],"icon_cursor_scale_fill (in module raylib)":[[6,"raylib.ICON_CURSOR_SCALE_FILL",false]],"icon_cursor_scale_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_SCALE_FILL",false]],"icon_cursor_scale_left (in module raylib)":[[6,"raylib.ICON_CURSOR_SCALE_LEFT",false]],"icon_cursor_scale_left (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_SCALE_LEFT",false]],"icon_cursor_scale_left_fill (in module raylib)":[[6,"raylib.ICON_CURSOR_SCALE_LEFT_FILL",false]],"icon_cursor_scale_left_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_SCALE_LEFT_FILL",false]],"icon_cursor_scale_right (in module raylib)":[[6,"raylib.ICON_CURSOR_SCALE_RIGHT",false]],"icon_cursor_scale_right (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_SCALE_RIGHT",false]],"icon_cursor_scale_right_fill (in module raylib)":[[6,"raylib.ICON_CURSOR_SCALE_RIGHT_FILL",false]],"icon_cursor_scale_right_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_CURSOR_SCALE_RIGHT_FILL",false]],"icon_demon (in module raylib)":[[6,"raylib.ICON_DEMON",false]],"icon_demon (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_DEMON",false]],"icon_dithering (in module raylib)":[[6,"raylib.ICON_DITHERING",false]],"icon_dithering (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_DITHERING",false]],"icon_door (in module raylib)":[[6,"raylib.ICON_DOOR",false]],"icon_door (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_DOOR",false]],"icon_emptybox (in module raylib)":[[6,"raylib.ICON_EMPTYBOX",false]],"icon_emptybox (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_EMPTYBOX",false]],"icon_emptybox_small (in module raylib)":[[6,"raylib.ICON_EMPTYBOX_SMALL",false]],"icon_emptybox_small (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_EMPTYBOX_SMALL",false]],"icon_exit (in module raylib)":[[6,"raylib.ICON_EXIT",false]],"icon_exit (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_EXIT",false]],"icon_explosion (in module raylib)":[[6,"raylib.ICON_EXPLOSION",false]],"icon_explosion (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_EXPLOSION",false]],"icon_eye_off (in module raylib)":[[6,"raylib.ICON_EYE_OFF",false]],"icon_eye_off (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_EYE_OFF",false]],"icon_eye_on (in module raylib)":[[6,"raylib.ICON_EYE_ON",false]],"icon_eye_on (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_EYE_ON",false]],"icon_file (in module raylib)":[[6,"raylib.ICON_FILE",false]],"icon_file (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE",false]],"icon_file_add (in module raylib)":[[6,"raylib.ICON_FILE_ADD",false]],"icon_file_add (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_ADD",false]],"icon_file_copy (in module raylib)":[[6,"raylib.ICON_FILE_COPY",false]],"icon_file_copy (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_COPY",false]],"icon_file_cut (in module raylib)":[[6,"raylib.ICON_FILE_CUT",false]],"icon_file_cut (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_CUT",false]],"icon_file_delete (in module raylib)":[[6,"raylib.ICON_FILE_DELETE",false]],"icon_file_delete (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_DELETE",false]],"icon_file_export (in module raylib)":[[6,"raylib.ICON_FILE_EXPORT",false]],"icon_file_export (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_EXPORT",false]],"icon_file_new (in module raylib)":[[6,"raylib.ICON_FILE_NEW",false]],"icon_file_new (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_NEW",false]],"icon_file_open (in module raylib)":[[6,"raylib.ICON_FILE_OPEN",false]],"icon_file_open (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_OPEN",false]],"icon_file_paste (in module raylib)":[[6,"raylib.ICON_FILE_PASTE",false]],"icon_file_paste (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_PASTE",false]],"icon_file_save (in module raylib)":[[6,"raylib.ICON_FILE_SAVE",false]],"icon_file_save (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_SAVE",false]],"icon_file_save_classic (in module raylib)":[[6,"raylib.ICON_FILE_SAVE_CLASSIC",false]],"icon_file_save_classic (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILE_SAVE_CLASSIC",false]],"icon_filetype_alpha (in module raylib)":[[6,"raylib.ICON_FILETYPE_ALPHA",false]],"icon_filetype_alpha (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILETYPE_ALPHA",false]],"icon_filetype_audio (in module raylib)":[[6,"raylib.ICON_FILETYPE_AUDIO",false]],"icon_filetype_audio (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILETYPE_AUDIO",false]],"icon_filetype_binary (in module raylib)":[[6,"raylib.ICON_FILETYPE_BINARY",false]],"icon_filetype_binary (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILETYPE_BINARY",false]],"icon_filetype_home (in module raylib)":[[6,"raylib.ICON_FILETYPE_HOME",false]],"icon_filetype_home (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILETYPE_HOME",false]],"icon_filetype_image (in module raylib)":[[6,"raylib.ICON_FILETYPE_IMAGE",false]],"icon_filetype_image (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILETYPE_IMAGE",false]],"icon_filetype_info (in module raylib)":[[6,"raylib.ICON_FILETYPE_INFO",false]],"icon_filetype_info (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILETYPE_INFO",false]],"icon_filetype_play (in module raylib)":[[6,"raylib.ICON_FILETYPE_PLAY",false]],"icon_filetype_play (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILETYPE_PLAY",false]],"icon_filetype_text (in module raylib)":[[6,"raylib.ICON_FILETYPE_TEXT",false]],"icon_filetype_text (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILETYPE_TEXT",false]],"icon_filetype_video (in module raylib)":[[6,"raylib.ICON_FILETYPE_VIDEO",false]],"icon_filetype_video (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILETYPE_VIDEO",false]],"icon_filter (in module raylib)":[[6,"raylib.ICON_FILTER",false]],"icon_filter (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILTER",false]],"icon_filter_bilinear (in module raylib)":[[6,"raylib.ICON_FILTER_BILINEAR",false]],"icon_filter_bilinear (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILTER_BILINEAR",false]],"icon_filter_point (in module raylib)":[[6,"raylib.ICON_FILTER_POINT",false]],"icon_filter_point (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILTER_POINT",false]],"icon_filter_top (in module raylib)":[[6,"raylib.ICON_FILTER_TOP",false]],"icon_filter_top (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FILTER_TOP",false]],"icon_folder (in module raylib)":[[6,"raylib.ICON_FOLDER",false]],"icon_folder (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FOLDER",false]],"icon_folder_add (in module raylib)":[[6,"raylib.ICON_FOLDER_ADD",false]],"icon_folder_add (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FOLDER_ADD",false]],"icon_folder_file_open (in module raylib)":[[6,"raylib.ICON_FOLDER_FILE_OPEN",false]],"icon_folder_file_open (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FOLDER_FILE_OPEN",false]],"icon_folder_open (in module raylib)":[[6,"raylib.ICON_FOLDER_OPEN",false]],"icon_folder_open (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FOLDER_OPEN",false]],"icon_folder_save (in module raylib)":[[6,"raylib.ICON_FOLDER_SAVE",false]],"icon_folder_save (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FOLDER_SAVE",false]],"icon_four_boxes (in module raylib)":[[6,"raylib.ICON_FOUR_BOXES",false]],"icon_four_boxes (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FOUR_BOXES",false]],"icon_fx (in module raylib)":[[6,"raylib.ICON_FX",false]],"icon_fx (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_FX",false]],"icon_gear (in module raylib)":[[6,"raylib.ICON_GEAR",false]],"icon_gear (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_GEAR",false]],"icon_gear_big (in module raylib)":[[6,"raylib.ICON_GEAR_BIG",false]],"icon_gear_big (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_GEAR_BIG",false]],"icon_gear_ex (in module raylib)":[[6,"raylib.ICON_GEAR_EX",false]],"icon_gear_ex (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_GEAR_EX",false]],"icon_grid (in module raylib)":[[6,"raylib.ICON_GRID",false]],"icon_grid (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_GRID",false]],"icon_grid_fill (in module raylib)":[[6,"raylib.ICON_GRID_FILL",false]],"icon_grid_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_GRID_FILL",false]],"icon_hand_pointer (in module raylib)":[[6,"raylib.ICON_HAND_POINTER",false]],"icon_hand_pointer (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_HAND_POINTER",false]],"icon_heart (in module raylib)":[[6,"raylib.ICON_HEART",false]],"icon_heart (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_HEART",false]],"icon_help (in module raylib)":[[6,"raylib.ICON_HELP",false]],"icon_help (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_HELP",false]],"icon_help_box (in module raylib)":[[6,"raylib.ICON_HELP_BOX",false]],"icon_help_box (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_HELP_BOX",false]],"icon_hex (in module raylib)":[[6,"raylib.ICON_HEX",false]],"icon_hex (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_HEX",false]],"icon_hidpi (in module raylib)":[[6,"raylib.ICON_HIDPI",false]],"icon_hidpi (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_HIDPI",false]],"icon_hot (in module raylib)":[[6,"raylib.ICON_HOT",false]],"icon_hot (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_HOT",false]],"icon_house (in module raylib)":[[6,"raylib.ICON_HOUSE",false]],"icon_house (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_HOUSE",false]],"icon_info (in module raylib)":[[6,"raylib.ICON_INFO",false]],"icon_info (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_INFO",false]],"icon_info_box (in module raylib)":[[6,"raylib.ICON_INFO_BOX",false]],"icon_info_box (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_INFO_BOX",false]],"icon_key (in module raylib)":[[6,"raylib.ICON_KEY",false]],"icon_key (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_KEY",false]],"icon_laser (in module raylib)":[[6,"raylib.ICON_LASER",false]],"icon_laser (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LASER",false]],"icon_layers (in module raylib)":[[6,"raylib.ICON_LAYERS",false]],"icon_layers (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LAYERS",false]],"icon_layers2 (in module raylib)":[[6,"raylib.ICON_LAYERS2",false]],"icon_layers2 (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LAYERS2",false]],"icon_layers_iso (in module raylib)":[[6,"raylib.ICON_LAYERS_ISO",false]],"icon_layers_iso (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LAYERS_ISO",false]],"icon_layers_visible (in module raylib)":[[6,"raylib.ICON_LAYERS_VISIBLE",false]],"icon_layers_visible (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LAYERS_VISIBLE",false]],"icon_lens (in module raylib)":[[6,"raylib.ICON_LENS",false]],"icon_lens (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LENS",false]],"icon_lens_big (in module raylib)":[[6,"raylib.ICON_LENS_BIG",false]],"icon_lens_big (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LENS_BIG",false]],"icon_life_bars (in module raylib)":[[6,"raylib.ICON_LIFE_BARS",false]],"icon_life_bars (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LIFE_BARS",false]],"icon_link (in module raylib)":[[6,"raylib.ICON_LINK",false]],"icon_link (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LINK",false]],"icon_link_boxes (in module raylib)":[[6,"raylib.ICON_LINK_BOXES",false]],"icon_link_boxes (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LINK_BOXES",false]],"icon_link_broke (in module raylib)":[[6,"raylib.ICON_LINK_BROKE",false]],"icon_link_broke (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LINK_BROKE",false]],"icon_link_multi (in module raylib)":[[6,"raylib.ICON_LINK_MULTI",false]],"icon_link_multi (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LINK_MULTI",false]],"icon_link_net (in module raylib)":[[6,"raylib.ICON_LINK_NET",false]],"icon_link_net (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LINK_NET",false]],"icon_lock_close (in module raylib)":[[6,"raylib.ICON_LOCK_CLOSE",false]],"icon_lock_close (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LOCK_CLOSE",false]],"icon_lock_open (in module raylib)":[[6,"raylib.ICON_LOCK_OPEN",false]],"icon_lock_open (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_LOCK_OPEN",false]],"icon_magnet (in module raylib)":[[6,"raylib.ICON_MAGNET",false]],"icon_magnet (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MAGNET",false]],"icon_mailbox (in module raylib)":[[6,"raylib.ICON_MAILBOX",false]],"icon_mailbox (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MAILBOX",false]],"icon_maps (in module raylib)":[[6,"raylib.ICON_MAPS",false]],"icon_maps (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MAPS",false]],"icon_mipmaps (in module raylib)":[[6,"raylib.ICON_MIPMAPS",false]],"icon_mipmaps (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MIPMAPS",false]],"icon_mlayers (in module raylib)":[[6,"raylib.ICON_MLAYERS",false]],"icon_mlayers (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MLAYERS",false]],"icon_mode_2d (in module raylib)":[[6,"raylib.ICON_MODE_2D",false]],"icon_mode_2d (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MODE_2D",false]],"icon_mode_3d (in module raylib)":[[6,"raylib.ICON_MODE_3D",false]],"icon_mode_3d (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MODE_3D",false]],"icon_monitor (in module raylib)":[[6,"raylib.ICON_MONITOR",false]],"icon_monitor (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MONITOR",false]],"icon_mutate (in module raylib)":[[6,"raylib.ICON_MUTATE",false]],"icon_mutate (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MUTATE",false]],"icon_mutate_fill (in module raylib)":[[6,"raylib.ICON_MUTATE_FILL",false]],"icon_mutate_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_MUTATE_FILL",false]],"icon_none (in module raylib)":[[6,"raylib.ICON_NONE",false]],"icon_none (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_NONE",false]],"icon_notebook (in module raylib)":[[6,"raylib.ICON_NOTEBOOK",false]],"icon_notebook (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_NOTEBOOK",false]],"icon_ok_tick (in module raylib)":[[6,"raylib.ICON_OK_TICK",false]],"icon_ok_tick (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_OK_TICK",false]],"icon_pencil (in module raylib)":[[6,"raylib.ICON_PENCIL",false]],"icon_pencil (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PENCIL",false]],"icon_pencil_big (in module raylib)":[[6,"raylib.ICON_PENCIL_BIG",false]],"icon_pencil_big (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PENCIL_BIG",false]],"icon_photo_camera (in module raylib)":[[6,"raylib.ICON_PHOTO_CAMERA",false]],"icon_photo_camera (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PHOTO_CAMERA",false]],"icon_photo_camera_flash (in module raylib)":[[6,"raylib.ICON_PHOTO_CAMERA_FLASH",false]],"icon_photo_camera_flash (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PHOTO_CAMERA_FLASH",false]],"icon_player (in module raylib)":[[6,"raylib.ICON_PLAYER",false]],"icon_player (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PLAYER",false]],"icon_player_jump (in module raylib)":[[6,"raylib.ICON_PLAYER_JUMP",false]],"icon_player_jump (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PLAYER_JUMP",false]],"icon_player_next (in module raylib)":[[6,"raylib.ICON_PLAYER_NEXT",false]],"icon_player_next (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PLAYER_NEXT",false]],"icon_player_pause (in module raylib)":[[6,"raylib.ICON_PLAYER_PAUSE",false]],"icon_player_pause (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PLAYER_PAUSE",false]],"icon_player_play (in module raylib)":[[6,"raylib.ICON_PLAYER_PLAY",false]],"icon_player_play (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PLAYER_PLAY",false]],"icon_player_play_back (in module raylib)":[[6,"raylib.ICON_PLAYER_PLAY_BACK",false]],"icon_player_play_back (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PLAYER_PLAY_BACK",false]],"icon_player_previous (in module raylib)":[[6,"raylib.ICON_PLAYER_PREVIOUS",false]],"icon_player_previous (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PLAYER_PREVIOUS",false]],"icon_player_record (in module raylib)":[[6,"raylib.ICON_PLAYER_RECORD",false]],"icon_player_record (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PLAYER_RECORD",false]],"icon_player_stop (in module raylib)":[[6,"raylib.ICON_PLAYER_STOP",false]],"icon_player_stop (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PLAYER_STOP",false]],"icon_pot (in module raylib)":[[6,"raylib.ICON_POT",false]],"icon_pot (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_POT",false]],"icon_printer (in module raylib)":[[6,"raylib.ICON_PRINTER",false]],"icon_printer (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PRINTER",false]],"icon_priority (in module raylib)":[[6,"raylib.ICON_PRIORITY",false]],"icon_priority (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_PRIORITY",false]],"icon_redo (in module raylib)":[[6,"raylib.ICON_REDO",false]],"icon_redo (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_REDO",false]],"icon_redo_fill (in module raylib)":[[6,"raylib.ICON_REDO_FILL",false]],"icon_redo_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_REDO_FILL",false]],"icon_reg_exp (in module raylib)":[[6,"raylib.ICON_REG_EXP",false]],"icon_reg_exp (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_REG_EXP",false]],"icon_repeat (in module raylib)":[[6,"raylib.ICON_REPEAT",false]],"icon_repeat (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_REPEAT",false]],"icon_repeat_fill (in module raylib)":[[6,"raylib.ICON_REPEAT_FILL",false]],"icon_repeat_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_REPEAT_FILL",false]],"icon_reredo (in module raylib)":[[6,"raylib.ICON_REREDO",false]],"icon_reredo (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_REREDO",false]],"icon_reredo_fill (in module raylib)":[[6,"raylib.ICON_REREDO_FILL",false]],"icon_reredo_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_REREDO_FILL",false]],"icon_resize (in module raylib)":[[6,"raylib.ICON_RESIZE",false]],"icon_resize (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_RESIZE",false]],"icon_restart (in module raylib)":[[6,"raylib.ICON_RESTART",false]],"icon_restart (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_RESTART",false]],"icon_rom (in module raylib)":[[6,"raylib.ICON_ROM",false]],"icon_rom (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ROM",false]],"icon_rotate (in module raylib)":[[6,"raylib.ICON_ROTATE",false]],"icon_rotate (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ROTATE",false]],"icon_rotate_fill (in module raylib)":[[6,"raylib.ICON_ROTATE_FILL",false]],"icon_rotate_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ROTATE_FILL",false]],"icon_rubber (in module raylib)":[[6,"raylib.ICON_RUBBER",false]],"icon_rubber (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_RUBBER",false]],"icon_sand_timer (in module raylib)":[[6,"raylib.ICON_SAND_TIMER",false]],"icon_sand_timer (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SAND_TIMER",false]],"icon_scale (in module raylib)":[[6,"raylib.ICON_SCALE",false]],"icon_scale (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SCALE",false]],"icon_shield (in module raylib)":[[6,"raylib.ICON_SHIELD",false]],"icon_shield (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SHIELD",false]],"icon_shuffle (in module raylib)":[[6,"raylib.ICON_SHUFFLE",false]],"icon_shuffle (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SHUFFLE",false]],"icon_shuffle_fill (in module raylib)":[[6,"raylib.ICON_SHUFFLE_FILL",false]],"icon_shuffle_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SHUFFLE_FILL",false]],"icon_special (in module raylib)":[[6,"raylib.ICON_SPECIAL",false]],"icon_special (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SPECIAL",false]],"icon_square_toggle (in module raylib)":[[6,"raylib.ICON_SQUARE_TOGGLE",false]],"icon_square_toggle (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SQUARE_TOGGLE",false]],"icon_star (in module raylib)":[[6,"raylib.ICON_STAR",false]],"icon_star (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_STAR",false]],"icon_step_into (in module raylib)":[[6,"raylib.ICON_STEP_INTO",false]],"icon_step_into (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_STEP_INTO",false]],"icon_step_out (in module raylib)":[[6,"raylib.ICON_STEP_OUT",false]],"icon_step_out (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_STEP_OUT",false]],"icon_step_over (in module raylib)":[[6,"raylib.ICON_STEP_OVER",false]],"icon_step_over (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_STEP_OVER",false]],"icon_suitcase (in module raylib)":[[6,"raylib.ICON_SUITCASE",false]],"icon_suitcase (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SUITCASE",false]],"icon_suitcase_zip (in module raylib)":[[6,"raylib.ICON_SUITCASE_ZIP",false]],"icon_suitcase_zip (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SUITCASE_ZIP",false]],"icon_symmetry (in module raylib)":[[6,"raylib.ICON_SYMMETRY",false]],"icon_symmetry (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SYMMETRY",false]],"icon_symmetry_horizontal (in module raylib)":[[6,"raylib.ICON_SYMMETRY_HORIZONTAL",false]],"icon_symmetry_horizontal (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SYMMETRY_HORIZONTAL",false]],"icon_symmetry_vertical (in module raylib)":[[6,"raylib.ICON_SYMMETRY_VERTICAL",false]],"icon_symmetry_vertical (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_SYMMETRY_VERTICAL",false]],"icon_target (in module raylib)":[[6,"raylib.ICON_TARGET",false]],"icon_target (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TARGET",false]],"icon_target_big (in module raylib)":[[6,"raylib.ICON_TARGET_BIG",false]],"icon_target_big (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TARGET_BIG",false]],"icon_target_big_fill (in module raylib)":[[6,"raylib.ICON_TARGET_BIG_FILL",false]],"icon_target_big_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TARGET_BIG_FILL",false]],"icon_target_move (in module raylib)":[[6,"raylib.ICON_TARGET_MOVE",false]],"icon_target_move (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TARGET_MOVE",false]],"icon_target_move_fill (in module raylib)":[[6,"raylib.ICON_TARGET_MOVE_FILL",false]],"icon_target_move_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TARGET_MOVE_FILL",false]],"icon_target_point (in module raylib)":[[6,"raylib.ICON_TARGET_POINT",false]],"icon_target_point (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TARGET_POINT",false]],"icon_target_small (in module raylib)":[[6,"raylib.ICON_TARGET_SMALL",false]],"icon_target_small (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TARGET_SMALL",false]],"icon_target_small_fill (in module raylib)":[[6,"raylib.ICON_TARGET_SMALL_FILL",false]],"icon_target_small_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TARGET_SMALL_FILL",false]],"icon_text_a (in module raylib)":[[6,"raylib.ICON_TEXT_A",false]],"icon_text_a (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TEXT_A",false]],"icon_text_notes (in module raylib)":[[6,"raylib.ICON_TEXT_NOTES",false]],"icon_text_notes (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TEXT_NOTES",false]],"icon_text_popup (in module raylib)":[[6,"raylib.ICON_TEXT_POPUP",false]],"icon_text_popup (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TEXT_POPUP",false]],"icon_text_t (in module raylib)":[[6,"raylib.ICON_TEXT_T",false]],"icon_text_t (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TEXT_T",false]],"icon_tools (in module raylib)":[[6,"raylib.ICON_TOOLS",false]],"icon_tools (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_TOOLS",false]],"icon_undo (in module raylib)":[[6,"raylib.ICON_UNDO",false]],"icon_undo (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_UNDO",false]],"icon_undo_fill (in module raylib)":[[6,"raylib.ICON_UNDO_FILL",false]],"icon_undo_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_UNDO_FILL",false]],"icon_vertical_bars (in module raylib)":[[6,"raylib.ICON_VERTICAL_BARS",false]],"icon_vertical_bars (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_VERTICAL_BARS",false]],"icon_vertical_bars_fill (in module raylib)":[[6,"raylib.ICON_VERTICAL_BARS_FILL",false]],"icon_vertical_bars_fill (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_VERTICAL_BARS_FILL",false]],"icon_warning (in module raylib)":[[6,"raylib.ICON_WARNING",false]],"icon_warning (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_WARNING",false]],"icon_water_drop (in module raylib)":[[6,"raylib.ICON_WATER_DROP",false]],"icon_water_drop (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_WATER_DROP",false]],"icon_wave (in module raylib)":[[6,"raylib.ICON_WAVE",false]],"icon_wave (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_WAVE",false]],"icon_wave_sinus (in module raylib)":[[6,"raylib.ICON_WAVE_SINUS",false]],"icon_wave_sinus (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_WAVE_SINUS",false]],"icon_wave_square (in module raylib)":[[6,"raylib.ICON_WAVE_SQUARE",false]],"icon_wave_square (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_WAVE_SQUARE",false]],"icon_wave_triangular (in module raylib)":[[6,"raylib.ICON_WAVE_TRIANGULAR",false]],"icon_wave_triangular (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_WAVE_TRIANGULAR",false]],"icon_window (in module raylib)":[[6,"raylib.ICON_WINDOW",false]],"icon_window (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_WINDOW",false]],"icon_zoom_all (in module raylib)":[[6,"raylib.ICON_ZOOM_ALL",false]],"icon_zoom_all (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ZOOM_ALL",false]],"icon_zoom_big (in module raylib)":[[6,"raylib.ICON_ZOOM_BIG",false]],"icon_zoom_big (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ZOOM_BIG",false]],"icon_zoom_center (in module raylib)":[[6,"raylib.ICON_ZOOM_CENTER",false]],"icon_zoom_center (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ZOOM_CENTER",false]],"icon_zoom_medium (in module raylib)":[[6,"raylib.ICON_ZOOM_MEDIUM",false]],"icon_zoom_medium (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ZOOM_MEDIUM",false]],"icon_zoom_small (in module raylib)":[[6,"raylib.ICON_ZOOM_SMALL",false]],"icon_zoom_small (pyray.guiiconname attribute)":[[5,"pyray.GuiIconName.ICON_ZOOM_SMALL",false]],"id (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.id",false]],"id (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.id",false]],"id (pyray.rendertexture attribute)":[[5,"pyray.RenderTexture.id",false]],"id (pyray.shader attribute)":[[5,"pyray.Shader.id",false]],"id (pyray.texture attribute)":[[5,"pyray.Texture.id",false]],"id (pyray.texture2d attribute)":[[5,"pyray.Texture2D.id",false]],"id (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.id",false]],"id (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.id",false]],"id (raylib.rendertexture attribute)":[[6,"raylib.RenderTexture.id",false]],"id (raylib.rendertexture2d attribute)":[[6,"raylib.RenderTexture2D.id",false]],"id (raylib.shader attribute)":[[6,"raylib.Shader.id",false]],"id (raylib.texture attribute)":[[6,"raylib.Texture.id",false]],"id (raylib.texture2d attribute)":[[6,"raylib.Texture2D.id",false]],"id (raylib.texturecubemap attribute)":[[6,"raylib.TextureCubemap.id",false]],"image (class in pyray)":[[5,"pyray.Image",false]],"image (class in raylib)":[[6,"raylib.Image",false]],"image (pyray.glyphinfo attribute)":[[5,"pyray.GlyphInfo.image",false]],"image (raylib.glyphinfo attribute)":[[6,"raylib.GlyphInfo.image",false]],"image_alpha_clear() (in module pyray)":[[5,"pyray.image_alpha_clear",false]],"image_alpha_crop() (in module pyray)":[[5,"pyray.image_alpha_crop",false]],"image_alpha_mask() (in module pyray)":[[5,"pyray.image_alpha_mask",false]],"image_alpha_premultiply() (in module pyray)":[[5,"pyray.image_alpha_premultiply",false]],"image_blur_gaussian() (in module pyray)":[[5,"pyray.image_blur_gaussian",false]],"image_clear_background() (in module pyray)":[[5,"pyray.image_clear_background",false]],"image_color_brightness() (in module pyray)":[[5,"pyray.image_color_brightness",false]],"image_color_contrast() (in module pyray)":[[5,"pyray.image_color_contrast",false]],"image_color_grayscale() (in module pyray)":[[5,"pyray.image_color_grayscale",false]],"image_color_invert() (in module pyray)":[[5,"pyray.image_color_invert",false]],"image_color_replace() (in module pyray)":[[5,"pyray.image_color_replace",false]],"image_color_tint() (in module pyray)":[[5,"pyray.image_color_tint",false]],"image_copy() (in module pyray)":[[5,"pyray.image_copy",false]],"image_crop() (in module pyray)":[[5,"pyray.image_crop",false]],"image_dither() (in module pyray)":[[5,"pyray.image_dither",false]],"image_draw() (in module pyray)":[[5,"pyray.image_draw",false]],"image_draw_circle() (in module pyray)":[[5,"pyray.image_draw_circle",false]],"image_draw_circle_lines() (in module pyray)":[[5,"pyray.image_draw_circle_lines",false]],"image_draw_circle_lines_v() (in module pyray)":[[5,"pyray.image_draw_circle_lines_v",false]],"image_draw_circle_v() (in module pyray)":[[5,"pyray.image_draw_circle_v",false]],"image_draw_line() (in module pyray)":[[5,"pyray.image_draw_line",false]],"image_draw_line_ex() (in module pyray)":[[5,"pyray.image_draw_line_ex",false]],"image_draw_line_v() (in module pyray)":[[5,"pyray.image_draw_line_v",false]],"image_draw_pixel() (in module pyray)":[[5,"pyray.image_draw_pixel",false]],"image_draw_pixel_v() (in module pyray)":[[5,"pyray.image_draw_pixel_v",false]],"image_draw_rectangle() (in module pyray)":[[5,"pyray.image_draw_rectangle",false]],"image_draw_rectangle_lines() (in module pyray)":[[5,"pyray.image_draw_rectangle_lines",false]],"image_draw_rectangle_rec() (in module pyray)":[[5,"pyray.image_draw_rectangle_rec",false]],"image_draw_rectangle_v() (in module pyray)":[[5,"pyray.image_draw_rectangle_v",false]],"image_draw_text() (in module pyray)":[[5,"pyray.image_draw_text",false]],"image_draw_text_ex() (in module pyray)":[[5,"pyray.image_draw_text_ex",false]],"image_draw_triangle() (in module pyray)":[[5,"pyray.image_draw_triangle",false]],"image_draw_triangle_ex() (in module pyray)":[[5,"pyray.image_draw_triangle_ex",false]],"image_draw_triangle_fan() (in module pyray)":[[5,"pyray.image_draw_triangle_fan",false]],"image_draw_triangle_lines() (in module pyray)":[[5,"pyray.image_draw_triangle_lines",false]],"image_draw_triangle_strip() (in module pyray)":[[5,"pyray.image_draw_triangle_strip",false]],"image_flip_horizontal() (in module pyray)":[[5,"pyray.image_flip_horizontal",false]],"image_flip_vertical() (in module pyray)":[[5,"pyray.image_flip_vertical",false]],"image_format() (in module pyray)":[[5,"pyray.image_format",false]],"image_from_channel() (in module pyray)":[[5,"pyray.image_from_channel",false]],"image_from_image() (in module pyray)":[[5,"pyray.image_from_image",false]],"image_kernel_convolution() (in module pyray)":[[5,"pyray.image_kernel_convolution",false]],"image_mipmaps() (in module pyray)":[[5,"pyray.image_mipmaps",false]],"image_resize() (in module pyray)":[[5,"pyray.image_resize",false]],"image_resize_canvas() (in module pyray)":[[5,"pyray.image_resize_canvas",false]],"image_resize_nn() (in module pyray)":[[5,"pyray.image_resize_nn",false]],"image_rotate() (in module pyray)":[[5,"pyray.image_rotate",false]],"image_rotate_ccw() (in module pyray)":[[5,"pyray.image_rotate_ccw",false]],"image_rotate_cw() (in module pyray)":[[5,"pyray.image_rotate_cw",false]],"image_text() (in module pyray)":[[5,"pyray.image_text",false]],"image_text_ex() (in module pyray)":[[5,"pyray.image_text_ex",false]],"image_to_pot() (in module pyray)":[[5,"pyray.image_to_pot",false]],"imagealphaclear() (in module raylib)":[[6,"raylib.ImageAlphaClear",false]],"imagealphacrop() (in module raylib)":[[6,"raylib.ImageAlphaCrop",false]],"imagealphamask() (in module raylib)":[[6,"raylib.ImageAlphaMask",false]],"imagealphapremultiply() (in module raylib)":[[6,"raylib.ImageAlphaPremultiply",false]],"imageblurgaussian() (in module raylib)":[[6,"raylib.ImageBlurGaussian",false]],"imageclearbackground() (in module raylib)":[[6,"raylib.ImageClearBackground",false]],"imagecolorbrightness() (in module raylib)":[[6,"raylib.ImageColorBrightness",false]],"imagecolorcontrast() (in module raylib)":[[6,"raylib.ImageColorContrast",false]],"imagecolorgrayscale() (in module raylib)":[[6,"raylib.ImageColorGrayscale",false]],"imagecolorinvert() (in module raylib)":[[6,"raylib.ImageColorInvert",false]],"imagecolorreplace() (in module raylib)":[[6,"raylib.ImageColorReplace",false]],"imagecolortint() (in module raylib)":[[6,"raylib.ImageColorTint",false]],"imagecopy() (in module raylib)":[[6,"raylib.ImageCopy",false]],"imagecrop() (in module raylib)":[[6,"raylib.ImageCrop",false]],"imagedither() (in module raylib)":[[6,"raylib.ImageDither",false]],"imagedraw() (in module raylib)":[[6,"raylib.ImageDraw",false]],"imagedrawcircle() (in module raylib)":[[6,"raylib.ImageDrawCircle",false]],"imagedrawcirclelines() (in module raylib)":[[6,"raylib.ImageDrawCircleLines",false]],"imagedrawcirclelinesv() (in module raylib)":[[6,"raylib.ImageDrawCircleLinesV",false]],"imagedrawcirclev() (in module raylib)":[[6,"raylib.ImageDrawCircleV",false]],"imagedrawline() (in module raylib)":[[6,"raylib.ImageDrawLine",false]],"imagedrawlineex() (in module raylib)":[[6,"raylib.ImageDrawLineEx",false]],"imagedrawlinev() (in module raylib)":[[6,"raylib.ImageDrawLineV",false]],"imagedrawpixel() (in module raylib)":[[6,"raylib.ImageDrawPixel",false]],"imagedrawpixelv() (in module raylib)":[[6,"raylib.ImageDrawPixelV",false]],"imagedrawrectangle() (in module raylib)":[[6,"raylib.ImageDrawRectangle",false]],"imagedrawrectanglelines() (in module raylib)":[[6,"raylib.ImageDrawRectangleLines",false]],"imagedrawrectanglerec() (in module raylib)":[[6,"raylib.ImageDrawRectangleRec",false]],"imagedrawrectanglev() (in module raylib)":[[6,"raylib.ImageDrawRectangleV",false]],"imagedrawtext() (in module raylib)":[[6,"raylib.ImageDrawText",false]],"imagedrawtextex() (in module raylib)":[[6,"raylib.ImageDrawTextEx",false]],"imagedrawtriangle() (in module raylib)":[[6,"raylib.ImageDrawTriangle",false]],"imagedrawtriangleex() (in module raylib)":[[6,"raylib.ImageDrawTriangleEx",false]],"imagedrawtrianglefan() (in module raylib)":[[6,"raylib.ImageDrawTriangleFan",false]],"imagedrawtrianglelines() (in module raylib)":[[6,"raylib.ImageDrawTriangleLines",false]],"imagedrawtrianglestrip() (in module raylib)":[[6,"raylib.ImageDrawTriangleStrip",false]],"imagefliphorizontal() (in module raylib)":[[6,"raylib.ImageFlipHorizontal",false]],"imageflipvertical() (in module raylib)":[[6,"raylib.ImageFlipVertical",false]],"imageformat() (in module raylib)":[[6,"raylib.ImageFormat",false]],"imagefromchannel() (in module raylib)":[[6,"raylib.ImageFromChannel",false]],"imagefromimage() (in module raylib)":[[6,"raylib.ImageFromImage",false]],"imagekernelconvolution() (in module raylib)":[[6,"raylib.ImageKernelConvolution",false]],"imagemipmaps() (in module raylib)":[[6,"raylib.ImageMipmaps",false]],"imageresize() (in module raylib)":[[6,"raylib.ImageResize",false]],"imageresizecanvas() (in module raylib)":[[6,"raylib.ImageResizeCanvas",false]],"imageresizenn() (in module raylib)":[[6,"raylib.ImageResizeNN",false]],"imagerotate() (in module raylib)":[[6,"raylib.ImageRotate",false]],"imagerotateccw() (in module raylib)":[[6,"raylib.ImageRotateCCW",false]],"imagerotatecw() (in module raylib)":[[6,"raylib.ImageRotateCW",false]],"imagetext() (in module raylib)":[[6,"raylib.ImageText",false]],"imagetextex() (in module raylib)":[[6,"raylib.ImageTextEx",false]],"imagetopot() (in module raylib)":[[6,"raylib.ImageToPOT",false]],"indices (pyray.mesh attribute)":[[5,"pyray.Mesh.indices",false]],"indices (pyray.rlvertexbuffer attribute)":[[5,"pyray.rlVertexBuffer.indices",false]],"indices (raylib.mesh attribute)":[[6,"raylib.Mesh.indices",false]],"indices (raylib.rlvertexbuffer attribute)":[[6,"raylib.rlVertexBuffer.indices",false]],"inertia (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.inertia",false]],"inertia (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.inertia",false]],"init_audio_device() (in module pyray)":[[5,"pyray.init_audio_device",false]],"init_physics() (in module pyray)":[[5,"pyray.init_physics",false]],"init_window() (in module pyray)":[[5,"pyray.init_window",false]],"initaudiodevice() (in module raylib)":[[6,"raylib.InitAudioDevice",false]],"initphysics() (in module raylib)":[[6,"raylib.InitPhysics",false]],"initwindow() (in module raylib)":[[6,"raylib.InitWindow",false]],"interpupillarydistance (pyray.vrdeviceinfo attribute)":[[5,"pyray.VrDeviceInfo.interpupillaryDistance",false]],"interpupillarydistance (raylib.vrdeviceinfo attribute)":[[6,"raylib.VrDeviceInfo.interpupillaryDistance",false]],"inverseinertia (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.inverseInertia",false]],"inverseinertia (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.inverseInertia",false]],"inversemass (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.inverseMass",false]],"inversemass (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.inverseMass",false]],"is_audio_device_ready() (in module pyray)":[[5,"pyray.is_audio_device_ready",false]],"is_audio_stream_playing() (in module pyray)":[[5,"pyray.is_audio_stream_playing",false]],"is_audio_stream_processed() (in module pyray)":[[5,"pyray.is_audio_stream_processed",false]],"is_audio_stream_valid() (in module pyray)":[[5,"pyray.is_audio_stream_valid",false]],"is_cursor_hidden() (in module pyray)":[[5,"pyray.is_cursor_hidden",false]],"is_cursor_on_screen() (in module pyray)":[[5,"pyray.is_cursor_on_screen",false]],"is_file_dropped() (in module pyray)":[[5,"pyray.is_file_dropped",false]],"is_file_extension() (in module pyray)":[[5,"pyray.is_file_extension",false]],"is_file_name_valid() (in module pyray)":[[5,"pyray.is_file_name_valid",false]],"is_font_valid() (in module pyray)":[[5,"pyray.is_font_valid",false]],"is_gamepad_available() (in module pyray)":[[5,"pyray.is_gamepad_available",false]],"is_gamepad_button_down() (in module pyray)":[[5,"pyray.is_gamepad_button_down",false]],"is_gamepad_button_pressed() (in module pyray)":[[5,"pyray.is_gamepad_button_pressed",false]],"is_gamepad_button_released() (in module pyray)":[[5,"pyray.is_gamepad_button_released",false]],"is_gamepad_button_up() (in module pyray)":[[5,"pyray.is_gamepad_button_up",false]],"is_gesture_detected() (in module pyray)":[[5,"pyray.is_gesture_detected",false]],"is_image_valid() (in module pyray)":[[5,"pyray.is_image_valid",false]],"is_key_down() (in module pyray)":[[5,"pyray.is_key_down",false]],"is_key_pressed() (in module pyray)":[[5,"pyray.is_key_pressed",false]],"is_key_pressed_repeat() (in module pyray)":[[5,"pyray.is_key_pressed_repeat",false]],"is_key_released() (in module pyray)":[[5,"pyray.is_key_released",false]],"is_key_up() (in module pyray)":[[5,"pyray.is_key_up",false]],"is_material_valid() (in module pyray)":[[5,"pyray.is_material_valid",false]],"is_model_animation_valid() (in module pyray)":[[5,"pyray.is_model_animation_valid",false]],"is_model_valid() (in module pyray)":[[5,"pyray.is_model_valid",false]],"is_mouse_button_down() (in module pyray)":[[5,"pyray.is_mouse_button_down",false]],"is_mouse_button_pressed() (in module pyray)":[[5,"pyray.is_mouse_button_pressed",false]],"is_mouse_button_released() (in module pyray)":[[5,"pyray.is_mouse_button_released",false]],"is_mouse_button_up() (in module pyray)":[[5,"pyray.is_mouse_button_up",false]],"is_music_stream_playing() (in module pyray)":[[5,"pyray.is_music_stream_playing",false]],"is_music_valid() (in module pyray)":[[5,"pyray.is_music_valid",false]],"is_path_file() (in module pyray)":[[5,"pyray.is_path_file",false]],"is_render_texture_valid() (in module pyray)":[[5,"pyray.is_render_texture_valid",false]],"is_shader_valid() (in module pyray)":[[5,"pyray.is_shader_valid",false]],"is_sound_playing() (in module pyray)":[[5,"pyray.is_sound_playing",false]],"is_sound_valid() (in module pyray)":[[5,"pyray.is_sound_valid",false]],"is_texture_valid() (in module pyray)":[[5,"pyray.is_texture_valid",false]],"is_wave_valid() (in module pyray)":[[5,"pyray.is_wave_valid",false]],"is_window_focused() (in module pyray)":[[5,"pyray.is_window_focused",false]],"is_window_fullscreen() (in module pyray)":[[5,"pyray.is_window_fullscreen",false]],"is_window_hidden() (in module pyray)":[[5,"pyray.is_window_hidden",false]],"is_window_maximized() (in module pyray)":[[5,"pyray.is_window_maximized",false]],"is_window_minimized() (in module pyray)":[[5,"pyray.is_window_minimized",false]],"is_window_ready() (in module pyray)":[[5,"pyray.is_window_ready",false]],"is_window_resized() (in module pyray)":[[5,"pyray.is_window_resized",false]],"is_window_state() (in module pyray)":[[5,"pyray.is_window_state",false]],"isaudiodeviceready() (in module raylib)":[[6,"raylib.IsAudioDeviceReady",false]],"isaudiostreamplaying() (in module raylib)":[[6,"raylib.IsAudioStreamPlaying",false]],"isaudiostreamprocessed() (in module raylib)":[[6,"raylib.IsAudioStreamProcessed",false]],"isaudiostreamvalid() (in module raylib)":[[6,"raylib.IsAudioStreamValid",false]],"iscursorhidden() (in module raylib)":[[6,"raylib.IsCursorHidden",false]],"iscursoronscreen() (in module raylib)":[[6,"raylib.IsCursorOnScreen",false]],"isfiledropped() (in module raylib)":[[6,"raylib.IsFileDropped",false]],"isfileextension() (in module raylib)":[[6,"raylib.IsFileExtension",false]],"isfilenamevalid() (in module raylib)":[[6,"raylib.IsFileNameValid",false]],"isfontvalid() (in module raylib)":[[6,"raylib.IsFontValid",false]],"isgamepadavailable() (in module raylib)":[[6,"raylib.IsGamepadAvailable",false]],"isgamepadbuttondown() (in module raylib)":[[6,"raylib.IsGamepadButtonDown",false]],"isgamepadbuttonpressed() (in module raylib)":[[6,"raylib.IsGamepadButtonPressed",false]],"isgamepadbuttonreleased() (in module raylib)":[[6,"raylib.IsGamepadButtonReleased",false]],"isgamepadbuttonup() (in module raylib)":[[6,"raylib.IsGamepadButtonUp",false]],"isgesturedetected() (in module raylib)":[[6,"raylib.IsGestureDetected",false]],"isgrounded (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.isGrounded",false]],"isgrounded (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.isGrounded",false]],"isimagevalid() (in module raylib)":[[6,"raylib.IsImageValid",false]],"iskeydown() (in module raylib)":[[6,"raylib.IsKeyDown",false]],"iskeypressed() (in module raylib)":[[6,"raylib.IsKeyPressed",false]],"iskeypressedrepeat() (in module raylib)":[[6,"raylib.IsKeyPressedRepeat",false]],"iskeyreleased() (in module raylib)":[[6,"raylib.IsKeyReleased",false]],"iskeyup() (in module raylib)":[[6,"raylib.IsKeyUp",false]],"ismaterialvalid() (in module raylib)":[[6,"raylib.IsMaterialValid",false]],"ismodelanimationvalid() (in module raylib)":[[6,"raylib.IsModelAnimationValid",false]],"ismodelvalid() (in module raylib)":[[6,"raylib.IsModelValid",false]],"ismousebuttondown() (in module raylib)":[[6,"raylib.IsMouseButtonDown",false]],"ismousebuttonpressed() (in module raylib)":[[6,"raylib.IsMouseButtonPressed",false]],"ismousebuttonreleased() (in module raylib)":[[6,"raylib.IsMouseButtonReleased",false]],"ismousebuttonup() (in module raylib)":[[6,"raylib.IsMouseButtonUp",false]],"ismusicstreamplaying() (in module raylib)":[[6,"raylib.IsMusicStreamPlaying",false]],"ismusicvalid() (in module raylib)":[[6,"raylib.IsMusicValid",false]],"ispathfile() (in module raylib)":[[6,"raylib.IsPathFile",false]],"isrendertexturevalid() (in module raylib)":[[6,"raylib.IsRenderTextureValid",false]],"isshadervalid() (in module raylib)":[[6,"raylib.IsShaderValid",false]],"issoundplaying() (in module raylib)":[[6,"raylib.IsSoundPlaying",false]],"issoundvalid() (in module raylib)":[[6,"raylib.IsSoundValid",false]],"istexturevalid() (in module raylib)":[[6,"raylib.IsTextureValid",false]],"iswavevalid() (in module raylib)":[[6,"raylib.IsWaveValid",false]],"iswindowfocused() (in module raylib)":[[6,"raylib.IsWindowFocused",false]],"iswindowfullscreen() (in module raylib)":[[6,"raylib.IsWindowFullscreen",false]],"iswindowhidden() (in module raylib)":[[6,"raylib.IsWindowHidden",false]],"iswindowmaximized() (in module raylib)":[[6,"raylib.IsWindowMaximized",false]],"iswindowminimized() (in module raylib)":[[6,"raylib.IsWindowMinimized",false]],"iswindowready() (in module raylib)":[[6,"raylib.IsWindowReady",false]],"iswindowresized() (in module raylib)":[[6,"raylib.IsWindowResized",false]],"iswindowstate() (in module raylib)":[[6,"raylib.IsWindowState",false]],"key_a (in module raylib)":[[6,"raylib.KEY_A",false]],"key_a (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_A",false]],"key_apostrophe (in module raylib)":[[6,"raylib.KEY_APOSTROPHE",false]],"key_apostrophe (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_APOSTROPHE",false]],"key_b (in module raylib)":[[6,"raylib.KEY_B",false]],"key_b (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_B",false]],"key_back (in module raylib)":[[6,"raylib.KEY_BACK",false]],"key_back (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_BACK",false]],"key_backslash (in module raylib)":[[6,"raylib.KEY_BACKSLASH",false]],"key_backslash (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_BACKSLASH",false]],"key_backspace (in module raylib)":[[6,"raylib.KEY_BACKSPACE",false]],"key_backspace (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_BACKSPACE",false]],"key_c (in module raylib)":[[6,"raylib.KEY_C",false]],"key_c (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_C",false]],"key_caps_lock (in module raylib)":[[6,"raylib.KEY_CAPS_LOCK",false]],"key_caps_lock (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_CAPS_LOCK",false]],"key_comma (in module raylib)":[[6,"raylib.KEY_COMMA",false]],"key_comma (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_COMMA",false]],"key_d (in module raylib)":[[6,"raylib.KEY_D",false]],"key_d (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_D",false]],"key_delete (in module raylib)":[[6,"raylib.KEY_DELETE",false]],"key_delete (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_DELETE",false]],"key_down (in module raylib)":[[6,"raylib.KEY_DOWN",false]],"key_down (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_DOWN",false]],"key_e (in module raylib)":[[6,"raylib.KEY_E",false]],"key_e (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_E",false]],"key_eight (in module raylib)":[[6,"raylib.KEY_EIGHT",false]],"key_eight (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_EIGHT",false]],"key_end (in module raylib)":[[6,"raylib.KEY_END",false]],"key_end (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_END",false]],"key_enter (in module raylib)":[[6,"raylib.KEY_ENTER",false]],"key_enter (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_ENTER",false]],"key_equal (in module raylib)":[[6,"raylib.KEY_EQUAL",false]],"key_equal (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_EQUAL",false]],"key_escape (in module raylib)":[[6,"raylib.KEY_ESCAPE",false]],"key_escape (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_ESCAPE",false]],"key_f (in module raylib)":[[6,"raylib.KEY_F",false]],"key_f (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F",false]],"key_f1 (in module raylib)":[[6,"raylib.KEY_F1",false]],"key_f1 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F1",false]],"key_f10 (in module raylib)":[[6,"raylib.KEY_F10",false]],"key_f10 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F10",false]],"key_f11 (in module raylib)":[[6,"raylib.KEY_F11",false]],"key_f11 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F11",false]],"key_f12 (in module raylib)":[[6,"raylib.KEY_F12",false]],"key_f12 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F12",false]],"key_f2 (in module raylib)":[[6,"raylib.KEY_F2",false]],"key_f2 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F2",false]],"key_f3 (in module raylib)":[[6,"raylib.KEY_F3",false]],"key_f3 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F3",false]],"key_f4 (in module raylib)":[[6,"raylib.KEY_F4",false]],"key_f4 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F4",false]],"key_f5 (in module raylib)":[[6,"raylib.KEY_F5",false]],"key_f5 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F5",false]],"key_f6 (in module raylib)":[[6,"raylib.KEY_F6",false]],"key_f6 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F6",false]],"key_f7 (in module raylib)":[[6,"raylib.KEY_F7",false]],"key_f7 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F7",false]],"key_f8 (in module raylib)":[[6,"raylib.KEY_F8",false]],"key_f8 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F8",false]],"key_f9 (in module raylib)":[[6,"raylib.KEY_F9",false]],"key_f9 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_F9",false]],"key_five (in module raylib)":[[6,"raylib.KEY_FIVE",false]],"key_five (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_FIVE",false]],"key_four (in module raylib)":[[6,"raylib.KEY_FOUR",false]],"key_four (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_FOUR",false]],"key_g (in module raylib)":[[6,"raylib.KEY_G",false]],"key_g (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_G",false]],"key_grave (in module raylib)":[[6,"raylib.KEY_GRAVE",false]],"key_grave (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_GRAVE",false]],"key_h (in module raylib)":[[6,"raylib.KEY_H",false]],"key_h (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_H",false]],"key_home (in module raylib)":[[6,"raylib.KEY_HOME",false]],"key_home (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_HOME",false]],"key_i (in module raylib)":[[6,"raylib.KEY_I",false]],"key_i (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_I",false]],"key_insert (in module raylib)":[[6,"raylib.KEY_INSERT",false]],"key_insert (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_INSERT",false]],"key_j (in module raylib)":[[6,"raylib.KEY_J",false]],"key_j (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_J",false]],"key_k (in module raylib)":[[6,"raylib.KEY_K",false]],"key_k (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_K",false]],"key_kb_menu (in module raylib)":[[6,"raylib.KEY_KB_MENU",false]],"key_kb_menu (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KB_MENU",false]],"key_kp_0 (in module raylib)":[[6,"raylib.KEY_KP_0",false]],"key_kp_0 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_0",false]],"key_kp_1 (in module raylib)":[[6,"raylib.KEY_KP_1",false]],"key_kp_1 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_1",false]],"key_kp_2 (in module raylib)":[[6,"raylib.KEY_KP_2",false]],"key_kp_2 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_2",false]],"key_kp_3 (in module raylib)":[[6,"raylib.KEY_KP_3",false]],"key_kp_3 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_3",false]],"key_kp_4 (in module raylib)":[[6,"raylib.KEY_KP_4",false]],"key_kp_4 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_4",false]],"key_kp_5 (in module raylib)":[[6,"raylib.KEY_KP_5",false]],"key_kp_5 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_5",false]],"key_kp_6 (in module raylib)":[[6,"raylib.KEY_KP_6",false]],"key_kp_6 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_6",false]],"key_kp_7 (in module raylib)":[[6,"raylib.KEY_KP_7",false]],"key_kp_7 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_7",false]],"key_kp_8 (in module raylib)":[[6,"raylib.KEY_KP_8",false]],"key_kp_8 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_8",false]],"key_kp_9 (in module raylib)":[[6,"raylib.KEY_KP_9",false]],"key_kp_9 (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_9",false]],"key_kp_add (in module raylib)":[[6,"raylib.KEY_KP_ADD",false]],"key_kp_add (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_ADD",false]],"key_kp_decimal (in module raylib)":[[6,"raylib.KEY_KP_DECIMAL",false]],"key_kp_decimal (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_DECIMAL",false]],"key_kp_divide (in module raylib)":[[6,"raylib.KEY_KP_DIVIDE",false]],"key_kp_divide (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_DIVIDE",false]],"key_kp_enter (in module raylib)":[[6,"raylib.KEY_KP_ENTER",false]],"key_kp_enter (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_ENTER",false]],"key_kp_equal (in module raylib)":[[6,"raylib.KEY_KP_EQUAL",false]],"key_kp_equal (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_EQUAL",false]],"key_kp_multiply (in module raylib)":[[6,"raylib.KEY_KP_MULTIPLY",false]],"key_kp_multiply (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_MULTIPLY",false]],"key_kp_subtract (in module raylib)":[[6,"raylib.KEY_KP_SUBTRACT",false]],"key_kp_subtract (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_KP_SUBTRACT",false]],"key_l (in module raylib)":[[6,"raylib.KEY_L",false]],"key_l (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_L",false]],"key_left (in module raylib)":[[6,"raylib.KEY_LEFT",false]],"key_left (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_LEFT",false]],"key_left_alt (in module raylib)":[[6,"raylib.KEY_LEFT_ALT",false]],"key_left_alt (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_LEFT_ALT",false]],"key_left_bracket (in module raylib)":[[6,"raylib.KEY_LEFT_BRACKET",false]],"key_left_bracket (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_LEFT_BRACKET",false]],"key_left_control (in module raylib)":[[6,"raylib.KEY_LEFT_CONTROL",false]],"key_left_control (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_LEFT_CONTROL",false]],"key_left_shift (in module raylib)":[[6,"raylib.KEY_LEFT_SHIFT",false]],"key_left_shift (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_LEFT_SHIFT",false]],"key_left_super (in module raylib)":[[6,"raylib.KEY_LEFT_SUPER",false]],"key_left_super (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_LEFT_SUPER",false]],"key_m (in module raylib)":[[6,"raylib.KEY_M",false]],"key_m (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_M",false]],"key_menu (in module raylib)":[[6,"raylib.KEY_MENU",false]],"key_menu (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_MENU",false]],"key_minus (in module raylib)":[[6,"raylib.KEY_MINUS",false]],"key_minus (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_MINUS",false]],"key_n (in module raylib)":[[6,"raylib.KEY_N",false]],"key_n (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_N",false]],"key_nine (in module raylib)":[[6,"raylib.KEY_NINE",false]],"key_nine (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_NINE",false]],"key_null (in module raylib)":[[6,"raylib.KEY_NULL",false]],"key_null (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_NULL",false]],"key_num_lock (in module raylib)":[[6,"raylib.KEY_NUM_LOCK",false]],"key_num_lock (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_NUM_LOCK",false]],"key_o (in module raylib)":[[6,"raylib.KEY_O",false]],"key_o (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_O",false]],"key_one (in module raylib)":[[6,"raylib.KEY_ONE",false]],"key_one (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_ONE",false]],"key_p (in module raylib)":[[6,"raylib.KEY_P",false]],"key_p (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_P",false]],"key_page_down (in module raylib)":[[6,"raylib.KEY_PAGE_DOWN",false]],"key_page_down (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_PAGE_DOWN",false]],"key_page_up (in module raylib)":[[6,"raylib.KEY_PAGE_UP",false]],"key_page_up (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_PAGE_UP",false]],"key_pause (in module raylib)":[[6,"raylib.KEY_PAUSE",false]],"key_pause (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_PAUSE",false]],"key_period (in module raylib)":[[6,"raylib.KEY_PERIOD",false]],"key_period (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_PERIOD",false]],"key_print_screen (in module raylib)":[[6,"raylib.KEY_PRINT_SCREEN",false]],"key_print_screen (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_PRINT_SCREEN",false]],"key_q (in module raylib)":[[6,"raylib.KEY_Q",false]],"key_q (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_Q",false]],"key_r (in module raylib)":[[6,"raylib.KEY_R",false]],"key_r (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_R",false]],"key_right (in module raylib)":[[6,"raylib.KEY_RIGHT",false]],"key_right (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_RIGHT",false]],"key_right_alt (in module raylib)":[[6,"raylib.KEY_RIGHT_ALT",false]],"key_right_alt (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_RIGHT_ALT",false]],"key_right_bracket (in module raylib)":[[6,"raylib.KEY_RIGHT_BRACKET",false]],"key_right_bracket (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_RIGHT_BRACKET",false]],"key_right_control (in module raylib)":[[6,"raylib.KEY_RIGHT_CONTROL",false]],"key_right_control (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_RIGHT_CONTROL",false]],"key_right_shift (in module raylib)":[[6,"raylib.KEY_RIGHT_SHIFT",false]],"key_right_shift (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_RIGHT_SHIFT",false]],"key_right_super (in module raylib)":[[6,"raylib.KEY_RIGHT_SUPER",false]],"key_right_super (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_RIGHT_SUPER",false]],"key_s (in module raylib)":[[6,"raylib.KEY_S",false]],"key_s (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_S",false]],"key_scroll_lock (in module raylib)":[[6,"raylib.KEY_SCROLL_LOCK",false]],"key_scroll_lock (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_SCROLL_LOCK",false]],"key_semicolon (in module raylib)":[[6,"raylib.KEY_SEMICOLON",false]],"key_semicolon (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_SEMICOLON",false]],"key_seven (in module raylib)":[[6,"raylib.KEY_SEVEN",false]],"key_seven (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_SEVEN",false]],"key_six (in module raylib)":[[6,"raylib.KEY_SIX",false]],"key_six (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_SIX",false]],"key_slash (in module raylib)":[[6,"raylib.KEY_SLASH",false]],"key_slash (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_SLASH",false]],"key_space (in module raylib)":[[6,"raylib.KEY_SPACE",false]],"key_space (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_SPACE",false]],"key_t (in module raylib)":[[6,"raylib.KEY_T",false]],"key_t (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_T",false]],"key_tab (in module raylib)":[[6,"raylib.KEY_TAB",false]],"key_tab (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_TAB",false]],"key_three (in module raylib)":[[6,"raylib.KEY_THREE",false]],"key_three (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_THREE",false]],"key_two (in module raylib)":[[6,"raylib.KEY_TWO",false]],"key_two (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_TWO",false]],"key_u (in module raylib)":[[6,"raylib.KEY_U",false]],"key_u (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_U",false]],"key_up (in module raylib)":[[6,"raylib.KEY_UP",false]],"key_up (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_UP",false]],"key_v (in module raylib)":[[6,"raylib.KEY_V",false]],"key_v (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_V",false]],"key_volume_down (in module raylib)":[[6,"raylib.KEY_VOLUME_DOWN",false]],"key_volume_down (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_VOLUME_DOWN",false]],"key_volume_up (in module raylib)":[[6,"raylib.KEY_VOLUME_UP",false]],"key_volume_up (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_VOLUME_UP",false]],"key_w (in module raylib)":[[6,"raylib.KEY_W",false]],"key_w (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_W",false]],"key_x (in module raylib)":[[6,"raylib.KEY_X",false]],"key_x (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_X",false]],"key_y (in module raylib)":[[6,"raylib.KEY_Y",false]],"key_y (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_Y",false]],"key_z (in module raylib)":[[6,"raylib.KEY_Z",false]],"key_z (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_Z",false]],"key_zero (in module raylib)":[[6,"raylib.KEY_ZERO",false]],"key_zero (pyray.keyboardkey attribute)":[[5,"pyray.KeyboardKey.KEY_ZERO",false]],"keyboardkey (class in pyray)":[[5,"pyray.KeyboardKey",false]],"keyboardkey (in module raylib)":[[6,"raylib.KeyboardKey",false]],"label (in module raylib)":[[6,"raylib.LABEL",false]],"label (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.LABEL",false]],"layout (pyray.npatchinfo attribute)":[[5,"pyray.NPatchInfo.layout",false]],"layout (raylib.npatchinfo attribute)":[[6,"raylib.NPatchInfo.layout",false]],"left (pyray.npatchinfo attribute)":[[5,"pyray.NPatchInfo.left",false]],"left (raylib.npatchinfo attribute)":[[6,"raylib.NPatchInfo.left",false]],"leftlenscenter (pyray.vrstereoconfig attribute)":[[5,"pyray.VrStereoConfig.leftLensCenter",false]],"leftlenscenter (raylib.vrstereoconfig attribute)":[[6,"raylib.VrStereoConfig.leftLensCenter",false]],"leftscreencenter (pyray.vrstereoconfig attribute)":[[5,"pyray.VrStereoConfig.leftScreenCenter",false]],"leftscreencenter (raylib.vrstereoconfig attribute)":[[6,"raylib.VrStereoConfig.leftScreenCenter",false]],"lensdistortionvalues (pyray.vrdeviceinfo attribute)":[[5,"pyray.VrDeviceInfo.lensDistortionValues",false]],"lensdistortionvalues (raylib.vrdeviceinfo attribute)":[[6,"raylib.VrDeviceInfo.lensDistortionValues",false]],"lensseparationdistance (pyray.vrdeviceinfo attribute)":[[5,"pyray.VrDeviceInfo.lensSeparationDistance",false]],"lensseparationdistance (raylib.vrdeviceinfo attribute)":[[6,"raylib.VrDeviceInfo.lensSeparationDistance",false]],"lerp() (in module pyray)":[[5,"pyray.lerp",false]],"lerp() (in module raylib)":[[6,"raylib.Lerp",false]],"lightgray (in module pyray)":[[5,"pyray.LIGHTGRAY",false]],"lightgray (in module raylib)":[[6,"raylib.LIGHTGRAY",false]],"lime (in module pyray)":[[5,"pyray.LIME",false]],"lime (in module raylib)":[[6,"raylib.LIME",false]],"line_color (in module raylib)":[[6,"raylib.LINE_COLOR",false]],"line_color (pyray.guidefaultproperty attribute)":[[5,"pyray.GuiDefaultProperty.LINE_COLOR",false]],"list_items_border_width (in module raylib)":[[6,"raylib.LIST_ITEMS_BORDER_WIDTH",false]],"list_items_border_width (pyray.guilistviewproperty attribute)":[[5,"pyray.GuiListViewProperty.LIST_ITEMS_BORDER_WIDTH",false]],"list_items_height (in module raylib)":[[6,"raylib.LIST_ITEMS_HEIGHT",false]],"list_items_height (pyray.guilistviewproperty attribute)":[[5,"pyray.GuiListViewProperty.LIST_ITEMS_HEIGHT",false]],"list_items_spacing (in module raylib)":[[6,"raylib.LIST_ITEMS_SPACING",false]],"list_items_spacing (pyray.guilistviewproperty attribute)":[[5,"pyray.GuiListViewProperty.LIST_ITEMS_SPACING",false]],"listview (in module raylib)":[[6,"raylib.LISTVIEW",false]],"listview (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.LISTVIEW",false]],"load_audio_stream() (in module pyray)":[[5,"pyray.load_audio_stream",false]],"load_automation_event_list() (in module pyray)":[[5,"pyray.load_automation_event_list",false]],"load_codepoints() (in module pyray)":[[5,"pyray.load_codepoints",false]],"load_directory_files() (in module pyray)":[[5,"pyray.load_directory_files",false]],"load_directory_files_ex() (in module pyray)":[[5,"pyray.load_directory_files_ex",false]],"load_dropped_files() (in module pyray)":[[5,"pyray.load_dropped_files",false]],"load_file_data() (in module pyray)":[[5,"pyray.load_file_data",false]],"load_file_text() (in module pyray)":[[5,"pyray.load_file_text",false]],"load_font() (in module pyray)":[[5,"pyray.load_font",false]],"load_font_data() (in module pyray)":[[5,"pyray.load_font_data",false]],"load_font_ex() (in module pyray)":[[5,"pyray.load_font_ex",false]],"load_font_from_image() (in module pyray)":[[5,"pyray.load_font_from_image",false]],"load_font_from_memory() (in module pyray)":[[5,"pyray.load_font_from_memory",false]],"load_image() (in module pyray)":[[5,"pyray.load_image",false]],"load_image_anim() (in module pyray)":[[5,"pyray.load_image_anim",false]],"load_image_anim_from_memory() (in module pyray)":[[5,"pyray.load_image_anim_from_memory",false]],"load_image_colors() (in module pyray)":[[5,"pyray.load_image_colors",false]],"load_image_from_memory() (in module pyray)":[[5,"pyray.load_image_from_memory",false]],"load_image_from_screen() (in module pyray)":[[5,"pyray.load_image_from_screen",false]],"load_image_from_texture() (in module pyray)":[[5,"pyray.load_image_from_texture",false]],"load_image_palette() (in module pyray)":[[5,"pyray.load_image_palette",false]],"load_image_raw() (in module pyray)":[[5,"pyray.load_image_raw",false]],"load_material_default() (in module pyray)":[[5,"pyray.load_material_default",false]],"load_materials() (in module pyray)":[[5,"pyray.load_materials",false]],"load_model() (in module pyray)":[[5,"pyray.load_model",false]],"load_model_animations() (in module pyray)":[[5,"pyray.load_model_animations",false]],"load_model_from_mesh() (in module pyray)":[[5,"pyray.load_model_from_mesh",false]],"load_music_stream() (in module pyray)":[[5,"pyray.load_music_stream",false]],"load_music_stream_from_memory() (in module pyray)":[[5,"pyray.load_music_stream_from_memory",false]],"load_random_sequence() (in module pyray)":[[5,"pyray.load_random_sequence",false]],"load_render_texture() (in module pyray)":[[5,"pyray.load_render_texture",false]],"load_shader() (in module pyray)":[[5,"pyray.load_shader",false]],"load_shader_from_memory() (in module pyray)":[[5,"pyray.load_shader_from_memory",false]],"load_sound() (in module pyray)":[[5,"pyray.load_sound",false]],"load_sound_alias() (in module pyray)":[[5,"pyray.load_sound_alias",false]],"load_sound_from_wave() (in module pyray)":[[5,"pyray.load_sound_from_wave",false]],"load_texture() (in module pyray)":[[5,"pyray.load_texture",false]],"load_texture_cubemap() (in module pyray)":[[5,"pyray.load_texture_cubemap",false]],"load_texture_from_image() (in module pyray)":[[5,"pyray.load_texture_from_image",false]],"load_utf8() (in module pyray)":[[5,"pyray.load_utf8",false]],"load_vr_stereo_config() (in module pyray)":[[5,"pyray.load_vr_stereo_config",false]],"load_wave() (in module pyray)":[[5,"pyray.load_wave",false]],"load_wave_from_memory() (in module pyray)":[[5,"pyray.load_wave_from_memory",false]],"load_wave_samples() (in module pyray)":[[5,"pyray.load_wave_samples",false]],"loadaudiostream() (in module raylib)":[[6,"raylib.LoadAudioStream",false]],"loadautomationeventlist() (in module raylib)":[[6,"raylib.LoadAutomationEventList",false]],"loadcodepoints() (in module raylib)":[[6,"raylib.LoadCodepoints",false]],"loaddirectoryfiles() (in module raylib)":[[6,"raylib.LoadDirectoryFiles",false]],"loaddirectoryfilesex() (in module raylib)":[[6,"raylib.LoadDirectoryFilesEx",false]],"loaddroppedfiles() (in module raylib)":[[6,"raylib.LoadDroppedFiles",false]],"loadfiledata() (in module raylib)":[[6,"raylib.LoadFileData",false]],"loadfiletext() (in module raylib)":[[6,"raylib.LoadFileText",false]],"loadfont() (in module raylib)":[[6,"raylib.LoadFont",false]],"loadfontdata() (in module raylib)":[[6,"raylib.LoadFontData",false]],"loadfontex() (in module raylib)":[[6,"raylib.LoadFontEx",false]],"loadfontfromimage() (in module raylib)":[[6,"raylib.LoadFontFromImage",false]],"loadfontfrommemory() (in module raylib)":[[6,"raylib.LoadFontFromMemory",false]],"loadimage() (in module raylib)":[[6,"raylib.LoadImage",false]],"loadimageanim() (in module raylib)":[[6,"raylib.LoadImageAnim",false]],"loadimageanimfrommemory() (in module raylib)":[[6,"raylib.LoadImageAnimFromMemory",false]],"loadimagecolors() (in module raylib)":[[6,"raylib.LoadImageColors",false]],"loadimagefrommemory() (in module raylib)":[[6,"raylib.LoadImageFromMemory",false]],"loadimagefromscreen() (in module raylib)":[[6,"raylib.LoadImageFromScreen",false]],"loadimagefromtexture() (in module raylib)":[[6,"raylib.LoadImageFromTexture",false]],"loadimagepalette() (in module raylib)":[[6,"raylib.LoadImagePalette",false]],"loadimageraw() (in module raylib)":[[6,"raylib.LoadImageRaw",false]],"loadmaterialdefault() (in module raylib)":[[6,"raylib.LoadMaterialDefault",false]],"loadmaterials() (in module raylib)":[[6,"raylib.LoadMaterials",false]],"loadmodel() (in module raylib)":[[6,"raylib.LoadModel",false]],"loadmodelanimations() (in module raylib)":[[6,"raylib.LoadModelAnimations",false]],"loadmodelfrommesh() (in module raylib)":[[6,"raylib.LoadModelFromMesh",false]],"loadmusicstream() (in module raylib)":[[6,"raylib.LoadMusicStream",false]],"loadmusicstreamfrommemory() (in module raylib)":[[6,"raylib.LoadMusicStreamFromMemory",false]],"loadrandomsequence() (in module raylib)":[[6,"raylib.LoadRandomSequence",false]],"loadrendertexture() (in module raylib)":[[6,"raylib.LoadRenderTexture",false]],"loadshader() (in module raylib)":[[6,"raylib.LoadShader",false]],"loadshaderfrommemory() (in module raylib)":[[6,"raylib.LoadShaderFromMemory",false]],"loadsound() (in module raylib)":[[6,"raylib.LoadSound",false]],"loadsoundalias() (in module raylib)":[[6,"raylib.LoadSoundAlias",false]],"loadsoundfromwave() (in module raylib)":[[6,"raylib.LoadSoundFromWave",false]],"loadtexture() (in module raylib)":[[6,"raylib.LoadTexture",false]],"loadtexturecubemap() (in module raylib)":[[6,"raylib.LoadTextureCubemap",false]],"loadtexturefromimage() (in module raylib)":[[6,"raylib.LoadTextureFromImage",false]],"loadutf8() (in module raylib)":[[6,"raylib.LoadUTF8",false]],"loadvrstereoconfig() (in module raylib)":[[6,"raylib.LoadVrStereoConfig",false]],"loadwave() (in module raylib)":[[6,"raylib.LoadWave",false]],"loadwavefrommemory() (in module raylib)":[[6,"raylib.LoadWaveFromMemory",false]],"loadwavesamples() (in module raylib)":[[6,"raylib.LoadWaveSamples",false]],"locs (pyray.shader attribute)":[[5,"pyray.Shader.locs",false]],"locs (raylib.shader attribute)":[[6,"raylib.Shader.locs",false]],"log_all (in module raylib)":[[6,"raylib.LOG_ALL",false]],"log_all (pyray.traceloglevel attribute)":[[5,"pyray.TraceLogLevel.LOG_ALL",false]],"log_debug (in module raylib)":[[6,"raylib.LOG_DEBUG",false]],"log_debug (pyray.traceloglevel attribute)":[[5,"pyray.TraceLogLevel.LOG_DEBUG",false]],"log_error (in module raylib)":[[6,"raylib.LOG_ERROR",false]],"log_error (pyray.traceloglevel attribute)":[[5,"pyray.TraceLogLevel.LOG_ERROR",false]],"log_fatal (in module raylib)":[[6,"raylib.LOG_FATAL",false]],"log_fatal (pyray.traceloglevel attribute)":[[5,"pyray.TraceLogLevel.LOG_FATAL",false]],"log_info (in module raylib)":[[6,"raylib.LOG_INFO",false]],"log_info (pyray.traceloglevel attribute)":[[5,"pyray.TraceLogLevel.LOG_INFO",false]],"log_none (in module raylib)":[[6,"raylib.LOG_NONE",false]],"log_none (pyray.traceloglevel attribute)":[[5,"pyray.TraceLogLevel.LOG_NONE",false]],"log_trace (in module raylib)":[[6,"raylib.LOG_TRACE",false]],"log_trace (pyray.traceloglevel attribute)":[[5,"pyray.TraceLogLevel.LOG_TRACE",false]],"log_warning (in module raylib)":[[6,"raylib.LOG_WARNING",false]],"log_warning (pyray.traceloglevel attribute)":[[5,"pyray.TraceLogLevel.LOG_WARNING",false]],"looping (pyray.music attribute)":[[5,"pyray.Music.looping",false]],"looping (raylib.music attribute)":[[6,"raylib.Music.looping",false]],"m0 (pyray.matrix attribute)":[[5,"pyray.Matrix.m0",false]],"m0 (raylib.matrix attribute)":[[6,"raylib.Matrix.m0",false]],"m00 (pyray.matrix2x2 attribute)":[[5,"pyray.Matrix2x2.m00",false]],"m00 (raylib.matrix2x2 attribute)":[[6,"raylib.Matrix2x2.m00",false]],"m01 (pyray.matrix2x2 attribute)":[[5,"pyray.Matrix2x2.m01",false]],"m01 (raylib.matrix2x2 attribute)":[[6,"raylib.Matrix2x2.m01",false]],"m1 (pyray.matrix attribute)":[[5,"pyray.Matrix.m1",false]],"m1 (raylib.matrix attribute)":[[6,"raylib.Matrix.m1",false]],"m10 (pyray.matrix attribute)":[[5,"pyray.Matrix.m10",false]],"m10 (pyray.matrix2x2 attribute)":[[5,"pyray.Matrix2x2.m10",false]],"m10 (raylib.matrix attribute)":[[6,"raylib.Matrix.m10",false]],"m10 (raylib.matrix2x2 attribute)":[[6,"raylib.Matrix2x2.m10",false]],"m11 (pyray.matrix attribute)":[[5,"pyray.Matrix.m11",false]],"m11 (pyray.matrix2x2 attribute)":[[5,"pyray.Matrix2x2.m11",false]],"m11 (raylib.matrix attribute)":[[6,"raylib.Matrix.m11",false]],"m11 (raylib.matrix2x2 attribute)":[[6,"raylib.Matrix2x2.m11",false]],"m12 (pyray.matrix attribute)":[[5,"pyray.Matrix.m12",false]],"m12 (raylib.matrix attribute)":[[6,"raylib.Matrix.m12",false]],"m13 (pyray.matrix attribute)":[[5,"pyray.Matrix.m13",false]],"m13 (raylib.matrix attribute)":[[6,"raylib.Matrix.m13",false]],"m14 (pyray.matrix attribute)":[[5,"pyray.Matrix.m14",false]],"m14 (raylib.matrix attribute)":[[6,"raylib.Matrix.m14",false]],"m15 (pyray.matrix attribute)":[[5,"pyray.Matrix.m15",false]],"m15 (raylib.matrix attribute)":[[6,"raylib.Matrix.m15",false]],"m2 (pyray.matrix attribute)":[[5,"pyray.Matrix.m2",false]],"m2 (raylib.matrix attribute)":[[6,"raylib.Matrix.m2",false]],"m3 (pyray.matrix attribute)":[[5,"pyray.Matrix.m3",false]],"m3 (raylib.matrix attribute)":[[6,"raylib.Matrix.m3",false]],"m4 (pyray.matrix attribute)":[[5,"pyray.Matrix.m4",false]],"m4 (raylib.matrix attribute)":[[6,"raylib.Matrix.m4",false]],"m5 (pyray.matrix attribute)":[[5,"pyray.Matrix.m5",false]],"m5 (raylib.matrix attribute)":[[6,"raylib.Matrix.m5",false]],"m6 (pyray.matrix attribute)":[[5,"pyray.Matrix.m6",false]],"m6 (raylib.matrix attribute)":[[6,"raylib.Matrix.m6",false]],"m7 (pyray.matrix attribute)":[[5,"pyray.Matrix.m7",false]],"m7 (raylib.matrix attribute)":[[6,"raylib.Matrix.m7",false]],"m8 (pyray.matrix attribute)":[[5,"pyray.Matrix.m8",false]],"m8 (raylib.matrix attribute)":[[6,"raylib.Matrix.m8",false]],"m9 (pyray.matrix attribute)":[[5,"pyray.Matrix.m9",false]],"m9 (raylib.matrix attribute)":[[6,"raylib.Matrix.m9",false]],"magenta (in module pyray)":[[5,"pyray.MAGENTA",false]],"magenta (in module raylib)":[[6,"raylib.MAGENTA",false]],"make_directory() (in module pyray)":[[5,"pyray.make_directory",false]],"makedirectory() (in module raylib)":[[6,"raylib.MakeDirectory",false]],"maps (pyray.material attribute)":[[5,"pyray.Material.maps",false]],"maps (raylib.material attribute)":[[6,"raylib.Material.maps",false]],"maroon (in module pyray)":[[5,"pyray.MAROON",false]],"maroon (in module raylib)":[[6,"raylib.MAROON",false]],"mass (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.mass",false]],"mass (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.mass",false]],"material (class in pyray)":[[5,"pyray.Material",false]],"material (class in raylib)":[[6,"raylib.Material",false]],"material_map_albedo (in module raylib)":[[6,"raylib.MATERIAL_MAP_ALBEDO",false]],"material_map_albedo (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_ALBEDO",false]],"material_map_brdf (in module raylib)":[[6,"raylib.MATERIAL_MAP_BRDF",false]],"material_map_brdf (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_BRDF",false]],"material_map_cubemap (in module raylib)":[[6,"raylib.MATERIAL_MAP_CUBEMAP",false]],"material_map_cubemap (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_CUBEMAP",false]],"material_map_emission (in module raylib)":[[6,"raylib.MATERIAL_MAP_EMISSION",false]],"material_map_emission (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_EMISSION",false]],"material_map_height (in module raylib)":[[6,"raylib.MATERIAL_MAP_HEIGHT",false]],"material_map_height (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_HEIGHT",false]],"material_map_irradiance (in module raylib)":[[6,"raylib.MATERIAL_MAP_IRRADIANCE",false]],"material_map_irradiance (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_IRRADIANCE",false]],"material_map_metalness (in module raylib)":[[6,"raylib.MATERIAL_MAP_METALNESS",false]],"material_map_metalness (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_METALNESS",false]],"material_map_normal (in module raylib)":[[6,"raylib.MATERIAL_MAP_NORMAL",false]],"material_map_normal (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_NORMAL",false]],"material_map_occlusion (in module raylib)":[[6,"raylib.MATERIAL_MAP_OCCLUSION",false]],"material_map_occlusion (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_OCCLUSION",false]],"material_map_prefilter (in module raylib)":[[6,"raylib.MATERIAL_MAP_PREFILTER",false]],"material_map_prefilter (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_PREFILTER",false]],"material_map_roughness (in module raylib)":[[6,"raylib.MATERIAL_MAP_ROUGHNESS",false]],"material_map_roughness (pyray.materialmapindex attribute)":[[5,"pyray.MaterialMapIndex.MATERIAL_MAP_ROUGHNESS",false]],"materialcount (pyray.model attribute)":[[5,"pyray.Model.materialCount",false]],"materialcount (raylib.model attribute)":[[6,"raylib.Model.materialCount",false]],"materialmap (class in pyray)":[[5,"pyray.MaterialMap",false]],"materialmap (class in raylib)":[[6,"raylib.MaterialMap",false]],"materialmapindex (class in pyray)":[[5,"pyray.MaterialMapIndex",false]],"materialmapindex (in module raylib)":[[6,"raylib.MaterialMapIndex",false]],"materials (pyray.model attribute)":[[5,"pyray.Model.materials",false]],"materials (raylib.model attribute)":[[6,"raylib.Model.materials",false]],"matrix (class in pyray)":[[5,"pyray.Matrix",false]],"matrix (class in raylib)":[[6,"raylib.Matrix",false]],"matrix2x2 (class in pyray)":[[5,"pyray.Matrix2x2",false]],"matrix2x2 (class in raylib)":[[6,"raylib.Matrix2x2",false]],"matrix_add() (in module pyray)":[[5,"pyray.matrix_add",false]],"matrix_decompose() (in module pyray)":[[5,"pyray.matrix_decompose",false]],"matrix_determinant() (in module pyray)":[[5,"pyray.matrix_determinant",false]],"matrix_frustum() (in module pyray)":[[5,"pyray.matrix_frustum",false]],"matrix_identity() (in module pyray)":[[5,"pyray.matrix_identity",false]],"matrix_invert() (in module pyray)":[[5,"pyray.matrix_invert",false]],"matrix_look_at() (in module pyray)":[[5,"pyray.matrix_look_at",false]],"matrix_multiply() (in module pyray)":[[5,"pyray.matrix_multiply",false]],"matrix_ortho() (in module pyray)":[[5,"pyray.matrix_ortho",false]],"matrix_perspective() (in module pyray)":[[5,"pyray.matrix_perspective",false]],"matrix_rotate() (in module pyray)":[[5,"pyray.matrix_rotate",false]],"matrix_rotate_x() (in module pyray)":[[5,"pyray.matrix_rotate_x",false]],"matrix_rotate_xyz() (in module pyray)":[[5,"pyray.matrix_rotate_xyz",false]],"matrix_rotate_y() (in module pyray)":[[5,"pyray.matrix_rotate_y",false]],"matrix_rotate_z() (in module pyray)":[[5,"pyray.matrix_rotate_z",false]],"matrix_rotate_zyx() (in module pyray)":[[5,"pyray.matrix_rotate_zyx",false]],"matrix_scale() (in module pyray)":[[5,"pyray.matrix_scale",false]],"matrix_subtract() (in module pyray)":[[5,"pyray.matrix_subtract",false]],"matrix_to_float_v() (in module pyray)":[[5,"pyray.matrix_to_float_v",false]],"matrix_trace() (in module pyray)":[[5,"pyray.matrix_trace",false]],"matrix_translate() (in module pyray)":[[5,"pyray.matrix_translate",false]],"matrix_transpose() (in module pyray)":[[5,"pyray.matrix_transpose",false]],"matrixadd() (in module raylib)":[[6,"raylib.MatrixAdd",false]],"matrixdecompose() (in module raylib)":[[6,"raylib.MatrixDecompose",false]],"matrixdeterminant() (in module raylib)":[[6,"raylib.MatrixDeterminant",false]],"matrixfrustum() (in module raylib)":[[6,"raylib.MatrixFrustum",false]],"matrixidentity() (in module raylib)":[[6,"raylib.MatrixIdentity",false]],"matrixinvert() (in module raylib)":[[6,"raylib.MatrixInvert",false]],"matrixlookat() (in module raylib)":[[6,"raylib.MatrixLookAt",false]],"matrixmultiply() (in module raylib)":[[6,"raylib.MatrixMultiply",false]],"matrixortho() (in module raylib)":[[6,"raylib.MatrixOrtho",false]],"matrixperspective() (in module raylib)":[[6,"raylib.MatrixPerspective",false]],"matrixrotate() (in module raylib)":[[6,"raylib.MatrixRotate",false]],"matrixrotatex() (in module raylib)":[[6,"raylib.MatrixRotateX",false]],"matrixrotatexyz() (in module raylib)":[[6,"raylib.MatrixRotateXYZ",false]],"matrixrotatey() (in module raylib)":[[6,"raylib.MatrixRotateY",false]],"matrixrotatez() (in module raylib)":[[6,"raylib.MatrixRotateZ",false]],"matrixrotatezyx() (in module raylib)":[[6,"raylib.MatrixRotateZYX",false]],"matrixscale() (in module raylib)":[[6,"raylib.MatrixScale",false]],"matrixsubtract() (in module raylib)":[[6,"raylib.MatrixSubtract",false]],"matrixtofloatv() (in module raylib)":[[6,"raylib.MatrixToFloatV",false]],"matrixtrace() (in module raylib)":[[6,"raylib.MatrixTrace",false]],"matrixtranslate() (in module raylib)":[[6,"raylib.MatrixTranslate",false]],"matrixtranspose() (in module raylib)":[[6,"raylib.MatrixTranspose",false]],"max (pyray.boundingbox attribute)":[[5,"pyray.BoundingBox.max",false]],"max (raylib.boundingbox attribute)":[[6,"raylib.BoundingBox.max",false]],"maximize_window() (in module pyray)":[[5,"pyray.maximize_window",false]],"maximizewindow() (in module raylib)":[[6,"raylib.MaximizeWindow",false]],"measure_text() (in module pyray)":[[5,"pyray.measure_text",false]],"measure_text_ex() (in module pyray)":[[5,"pyray.measure_text_ex",false]],"measuretext() (in module raylib)":[[6,"raylib.MeasureText",false]],"measuretextex() (in module raylib)":[[6,"raylib.MeasureTextEx",false]],"mem_alloc() (in module pyray)":[[5,"pyray.mem_alloc",false]],"mem_free() (in module pyray)":[[5,"pyray.mem_free",false]],"mem_realloc() (in module pyray)":[[5,"pyray.mem_realloc",false]],"memalloc() (in module raylib)":[[6,"raylib.MemAlloc",false]],"memfree() (in module raylib)":[[6,"raylib.MemFree",false]],"memrealloc() (in module raylib)":[[6,"raylib.MemRealloc",false]],"mesh (class in pyray)":[[5,"pyray.Mesh",false]],"mesh (class in raylib)":[[6,"raylib.Mesh",false]],"meshcount (pyray.model attribute)":[[5,"pyray.Model.meshCount",false]],"meshcount (raylib.model attribute)":[[6,"raylib.Model.meshCount",false]],"meshes (pyray.model attribute)":[[5,"pyray.Model.meshes",false]],"meshes (raylib.model attribute)":[[6,"raylib.Model.meshes",false]],"meshmaterial (pyray.model attribute)":[[5,"pyray.Model.meshMaterial",false]],"meshmaterial (raylib.model attribute)":[[6,"raylib.Model.meshMaterial",false]],"min (pyray.boundingbox attribute)":[[5,"pyray.BoundingBox.min",false]],"min (raylib.boundingbox attribute)":[[6,"raylib.BoundingBox.min",false]],"minimize_window() (in module pyray)":[[5,"pyray.minimize_window",false]],"minimizewindow() (in module raylib)":[[6,"raylib.MinimizeWindow",false]],"mipmaps (pyray.image attribute)":[[5,"pyray.Image.mipmaps",false]],"mipmaps (pyray.texture attribute)":[[5,"pyray.Texture.mipmaps",false]],"mipmaps (pyray.texture2d attribute)":[[5,"pyray.Texture2D.mipmaps",false]],"mipmaps (raylib.image attribute)":[[6,"raylib.Image.mipmaps",false]],"mipmaps (raylib.texture attribute)":[[6,"raylib.Texture.mipmaps",false]],"mipmaps (raylib.texture2d attribute)":[[6,"raylib.Texture2D.mipmaps",false]],"mipmaps (raylib.texturecubemap attribute)":[[6,"raylib.TextureCubemap.mipmaps",false]],"mode (pyray.rldrawcall attribute)":[[5,"pyray.rlDrawCall.mode",false]],"mode (raylib.rldrawcall attribute)":[[6,"raylib.rlDrawCall.mode",false]],"model (class in pyray)":[[5,"pyray.Model",false]],"model (class in raylib)":[[6,"raylib.Model",false]],"modelanimation (class in pyray)":[[5,"pyray.ModelAnimation",false]],"modelanimation (class in raylib)":[[6,"raylib.ModelAnimation",false]],"module":[[5,"module-pyray",false],[6,"module-raylib",false]],"mouse_button_back (in module raylib)":[[6,"raylib.MOUSE_BUTTON_BACK",false]],"mouse_button_back (pyray.mousebutton attribute)":[[5,"pyray.MouseButton.MOUSE_BUTTON_BACK",false]],"mouse_button_extra (in module raylib)":[[6,"raylib.MOUSE_BUTTON_EXTRA",false]],"mouse_button_extra (pyray.mousebutton attribute)":[[5,"pyray.MouseButton.MOUSE_BUTTON_EXTRA",false]],"mouse_button_forward (in module raylib)":[[6,"raylib.MOUSE_BUTTON_FORWARD",false]],"mouse_button_forward (pyray.mousebutton attribute)":[[5,"pyray.MouseButton.MOUSE_BUTTON_FORWARD",false]],"mouse_button_left (in module raylib)":[[6,"raylib.MOUSE_BUTTON_LEFT",false]],"mouse_button_left (pyray.mousebutton attribute)":[[5,"pyray.MouseButton.MOUSE_BUTTON_LEFT",false]],"mouse_button_middle (in module raylib)":[[6,"raylib.MOUSE_BUTTON_MIDDLE",false]],"mouse_button_middle (pyray.mousebutton attribute)":[[5,"pyray.MouseButton.MOUSE_BUTTON_MIDDLE",false]],"mouse_button_right (in module raylib)":[[6,"raylib.MOUSE_BUTTON_RIGHT",false]],"mouse_button_right (pyray.mousebutton attribute)":[[5,"pyray.MouseButton.MOUSE_BUTTON_RIGHT",false]],"mouse_button_side (in module raylib)":[[6,"raylib.MOUSE_BUTTON_SIDE",false]],"mouse_button_side (pyray.mousebutton attribute)":[[5,"pyray.MouseButton.MOUSE_BUTTON_SIDE",false]],"mouse_cursor_arrow (in module raylib)":[[6,"raylib.MOUSE_CURSOR_ARROW",false]],"mouse_cursor_arrow (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_ARROW",false]],"mouse_cursor_crosshair (in module raylib)":[[6,"raylib.MOUSE_CURSOR_CROSSHAIR",false]],"mouse_cursor_crosshair (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_CROSSHAIR",false]],"mouse_cursor_default (in module raylib)":[[6,"raylib.MOUSE_CURSOR_DEFAULT",false]],"mouse_cursor_default (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_DEFAULT",false]],"mouse_cursor_ibeam (in module raylib)":[[6,"raylib.MOUSE_CURSOR_IBEAM",false]],"mouse_cursor_ibeam (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_IBEAM",false]],"mouse_cursor_not_allowed (in module raylib)":[[6,"raylib.MOUSE_CURSOR_NOT_ALLOWED",false]],"mouse_cursor_not_allowed (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_NOT_ALLOWED",false]],"mouse_cursor_pointing_hand (in module raylib)":[[6,"raylib.MOUSE_CURSOR_POINTING_HAND",false]],"mouse_cursor_pointing_hand (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_POINTING_HAND",false]],"mouse_cursor_resize_all (in module raylib)":[[6,"raylib.MOUSE_CURSOR_RESIZE_ALL",false]],"mouse_cursor_resize_all (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_RESIZE_ALL",false]],"mouse_cursor_resize_ew (in module raylib)":[[6,"raylib.MOUSE_CURSOR_RESIZE_EW",false]],"mouse_cursor_resize_ew (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_RESIZE_EW",false]],"mouse_cursor_resize_nesw (in module raylib)":[[6,"raylib.MOUSE_CURSOR_RESIZE_NESW",false]],"mouse_cursor_resize_nesw (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_RESIZE_NESW",false]],"mouse_cursor_resize_ns (in module raylib)":[[6,"raylib.MOUSE_CURSOR_RESIZE_NS",false]],"mouse_cursor_resize_ns (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_RESIZE_NS",false]],"mouse_cursor_resize_nwse (in module raylib)":[[6,"raylib.MOUSE_CURSOR_RESIZE_NWSE",false]],"mouse_cursor_resize_nwse (pyray.mousecursor attribute)":[[5,"pyray.MouseCursor.MOUSE_CURSOR_RESIZE_NWSE",false]],"mousebutton (class in pyray)":[[5,"pyray.MouseButton",false]],"mousebutton (in module raylib)":[[6,"raylib.MouseButton",false]],"mousecursor (class in pyray)":[[5,"pyray.MouseCursor",false]],"mousecursor (in module raylib)":[[6,"raylib.MouseCursor",false]],"music (class in pyray)":[[5,"pyray.Music",false]],"music (class in raylib)":[[6,"raylib.Music",false]],"name (pyray.boneinfo attribute)":[[5,"pyray.BoneInfo.name",false]],"name (pyray.modelanimation attribute)":[[5,"pyray.ModelAnimation.name",false]],"name (raylib.boneinfo attribute)":[[6,"raylib.BoneInfo.name",false]],"name (raylib.modelanimation attribute)":[[6,"raylib.ModelAnimation.name",false]],"normal (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.normal",false]],"normal (pyray.raycollision attribute)":[[5,"pyray.RayCollision.normal",false]],"normal (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.normal",false]],"normal (raylib.raycollision attribute)":[[6,"raylib.RayCollision.normal",false]],"normalize() (in module pyray)":[[5,"pyray.normalize",false]],"normalize() (in module raylib)":[[6,"raylib.Normalize",false]],"normals (pyray.mesh attribute)":[[5,"pyray.Mesh.normals",false]],"normals (pyray.physicsvertexdata attribute)":[[5,"pyray.PhysicsVertexData.normals",false]],"normals (pyray.rlvertexbuffer attribute)":[[5,"pyray.rlVertexBuffer.normals",false]],"normals (raylib.mesh attribute)":[[6,"raylib.Mesh.normals",false]],"normals (raylib.physicsvertexdata attribute)":[[6,"raylib.PhysicsVertexData.normals",false]],"normals (raylib.rlvertexbuffer attribute)":[[6,"raylib.rlVertexBuffer.normals",false]],"npatch_nine_patch (in module raylib)":[[6,"raylib.NPATCH_NINE_PATCH",false]],"npatch_nine_patch (pyray.npatchlayout attribute)":[[5,"pyray.NPatchLayout.NPATCH_NINE_PATCH",false]],"npatch_three_patch_horizontal (in module raylib)":[[6,"raylib.NPATCH_THREE_PATCH_HORIZONTAL",false]],"npatch_three_patch_horizontal (pyray.npatchlayout attribute)":[[5,"pyray.NPatchLayout.NPATCH_THREE_PATCH_HORIZONTAL",false]],"npatch_three_patch_vertical (in module raylib)":[[6,"raylib.NPATCH_THREE_PATCH_VERTICAL",false]],"npatch_three_patch_vertical (pyray.npatchlayout attribute)":[[5,"pyray.NPatchLayout.NPATCH_THREE_PATCH_VERTICAL",false]],"npatchinfo (class in pyray)":[[5,"pyray.NPatchInfo",false]],"npatchinfo (class in raylib)":[[6,"raylib.NPatchInfo",false]],"npatchlayout (class in pyray)":[[5,"pyray.NPatchLayout",false]],"npatchlayout (in module raylib)":[[6,"raylib.NPatchLayout",false]],"offset (pyray.camera2d attribute)":[[5,"pyray.Camera2D.offset",false]],"offset (raylib.camera2d attribute)":[[6,"raylib.Camera2D.offset",false]],"offsetx (pyray.glyphinfo attribute)":[[5,"pyray.GlyphInfo.offsetX",false]],"offsetx (raylib.glyphinfo attribute)":[[6,"raylib.GlyphInfo.offsetX",false]],"offsety (pyray.glyphinfo attribute)":[[5,"pyray.GlyphInfo.offsetY",false]],"offsety (raylib.glyphinfo attribute)":[[6,"raylib.GlyphInfo.offsetY",false]],"open_url() (in module pyray)":[[5,"pyray.open_url",false]],"openurl() (in module raylib)":[[6,"raylib.OpenURL",false]],"orange (in module pyray)":[[5,"pyray.ORANGE",false]],"orange (in module raylib)":[[6,"raylib.ORANGE",false]],"orient (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.orient",false]],"orient (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.orient",false]],"params (pyray.automationevent attribute)":[[5,"pyray.AutomationEvent.params",false]],"params (pyray.material attribute)":[[5,"pyray.Material.params",false]],"params (raylib.automationevent attribute)":[[6,"raylib.AutomationEvent.params",false]],"params (raylib.material attribute)":[[6,"raylib.Material.params",false]],"parent (pyray.boneinfo attribute)":[[5,"pyray.BoneInfo.parent",false]],"parent (raylib.boneinfo attribute)":[[6,"raylib.BoneInfo.parent",false]],"paths (pyray.filepathlist attribute)":[[5,"pyray.FilePathList.paths",false]],"paths (raylib.filepathlist attribute)":[[6,"raylib.FilePathList.paths",false]],"pause_audio_stream() (in module pyray)":[[5,"pyray.pause_audio_stream",false]],"pause_music_stream() (in module pyray)":[[5,"pyray.pause_music_stream",false]],"pause_sound() (in module pyray)":[[5,"pyray.pause_sound",false]],"pauseaudiostream() (in module raylib)":[[6,"raylib.PauseAudioStream",false]],"pausemusicstream() (in module raylib)":[[6,"raylib.PauseMusicStream",false]],"pausesound() (in module raylib)":[[6,"raylib.PauseSound",false]],"penetration (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.penetration",false]],"penetration (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.penetration",false]],"physics_add_force() (in module pyray)":[[5,"pyray.physics_add_force",false]],"physics_add_torque() (in module pyray)":[[5,"pyray.physics_add_torque",false]],"physics_circle (in module raylib)":[[6,"raylib.PHYSICS_CIRCLE",false]],"physics_polygon (in module raylib)":[[6,"raylib.PHYSICS_POLYGON",false]],"physics_shatter() (in module pyray)":[[5,"pyray.physics_shatter",false]],"physicsaddforce() (in module raylib)":[[6,"raylib.PhysicsAddForce",false]],"physicsaddtorque() (in module raylib)":[[6,"raylib.PhysicsAddTorque",false]],"physicsbodydata (class in pyray)":[[5,"pyray.PhysicsBodyData",false]],"physicsbodydata (class in raylib)":[[6,"raylib.PhysicsBodyData",false]],"physicsmanifolddata (class in pyray)":[[5,"pyray.PhysicsManifoldData",false]],"physicsmanifolddata (class in raylib)":[[6,"raylib.PhysicsManifoldData",false]],"physicsshape (class in pyray)":[[5,"pyray.PhysicsShape",false]],"physicsshape (class in raylib)":[[6,"raylib.PhysicsShape",false]],"physicsshapetype (in module raylib)":[[6,"raylib.PhysicsShapeType",false]],"physicsshatter() (in module raylib)":[[6,"raylib.PhysicsShatter",false]],"physicsvertexdata (class in pyray)":[[5,"pyray.PhysicsVertexData",false]],"physicsvertexdata (class in raylib)":[[6,"raylib.PhysicsVertexData",false]],"pink (in module pyray)":[[5,"pyray.PINK",false]],"pink (in module raylib)":[[6,"raylib.PINK",false]],"pixelformat (class in pyray)":[[5,"pyray.PixelFormat",false]],"pixelformat (in module raylib)":[[6,"raylib.PixelFormat",false]],"pixelformat_compressed_astc_4x4_rgba (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA",false]],"pixelformat_compressed_astc_4x4_rgba (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA",false]],"pixelformat_compressed_astc_8x8_rgba (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA",false]],"pixelformat_compressed_astc_8x8_rgba (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA",false]],"pixelformat_compressed_dxt1_rgb (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_DXT1_RGB",false]],"pixelformat_compressed_dxt1_rgb (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_DXT1_RGB",false]],"pixelformat_compressed_dxt1_rgba (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_DXT1_RGBA",false]],"pixelformat_compressed_dxt1_rgba (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_DXT1_RGBA",false]],"pixelformat_compressed_dxt3_rgba (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_DXT3_RGBA",false]],"pixelformat_compressed_dxt3_rgba (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_DXT3_RGBA",false]],"pixelformat_compressed_dxt5_rgba (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_DXT5_RGBA",false]],"pixelformat_compressed_dxt5_rgba (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_DXT5_RGBA",false]],"pixelformat_compressed_etc1_rgb (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_ETC1_RGB",false]],"pixelformat_compressed_etc1_rgb (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_ETC1_RGB",false]],"pixelformat_compressed_etc2_eac_rgba (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA",false]],"pixelformat_compressed_etc2_eac_rgba (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA",false]],"pixelformat_compressed_etc2_rgb (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_ETC2_RGB",false]],"pixelformat_compressed_etc2_rgb (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_ETC2_RGB",false]],"pixelformat_compressed_pvrt_rgb (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_PVRT_RGB",false]],"pixelformat_compressed_pvrt_rgb (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_PVRT_RGB",false]],"pixelformat_compressed_pvrt_rgba (in module raylib)":[[6,"raylib.PIXELFORMAT_COMPRESSED_PVRT_RGBA",false]],"pixelformat_compressed_pvrt_rgba (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_COMPRESSED_PVRT_RGBA",false]],"pixelformat_uncompressed_gray_alpha (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA",false]],"pixelformat_uncompressed_gray_alpha (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA",false]],"pixelformat_uncompressed_grayscale (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_GRAYSCALE",false]],"pixelformat_uncompressed_grayscale (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_GRAYSCALE",false]],"pixelformat_uncompressed_r16 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R16",false]],"pixelformat_uncompressed_r16 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R16",false]],"pixelformat_uncompressed_r16g16b16 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R16G16B16",false]],"pixelformat_uncompressed_r16g16b16 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R16G16B16",false]],"pixelformat_uncompressed_r16g16b16a16 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R16G16B16A16",false]],"pixelformat_uncompressed_r16g16b16a16 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R16G16B16A16",false]],"pixelformat_uncompressed_r32 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R32",false]],"pixelformat_uncompressed_r32 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R32",false]],"pixelformat_uncompressed_r32g32b32 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R32G32B32",false]],"pixelformat_uncompressed_r32g32b32 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R32G32B32",false]],"pixelformat_uncompressed_r32g32b32a32 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R32G32B32A32",false]],"pixelformat_uncompressed_r32g32b32a32 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R32G32B32A32",false]],"pixelformat_uncompressed_r4g4b4a4 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R4G4B4A4",false]],"pixelformat_uncompressed_r4g4b4a4 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R4G4B4A4",false]],"pixelformat_uncompressed_r5g5b5a1 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R5G5B5A1",false]],"pixelformat_uncompressed_r5g5b5a1 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R5G5B5A1",false]],"pixelformat_uncompressed_r5g6b5 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R5G6B5",false]],"pixelformat_uncompressed_r5g6b5 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R5G6B5",false]],"pixelformat_uncompressed_r8g8b8 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R8G8B8",false]],"pixelformat_uncompressed_r8g8b8 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R8G8B8",false]],"pixelformat_uncompressed_r8g8b8a8 (in module raylib)":[[6,"raylib.PIXELFORMAT_UNCOMPRESSED_R8G8B8A8",false]],"pixelformat_uncompressed_r8g8b8a8 (pyray.pixelformat attribute)":[[5,"pyray.PixelFormat.PIXELFORMAT_UNCOMPRESSED_R8G8B8A8",false]],"pixels (raylib.glfwimage attribute)":[[6,"raylib.GLFWimage.pixels",false]],"play_audio_stream() (in module pyray)":[[5,"pyray.play_audio_stream",false]],"play_automation_event() (in module pyray)":[[5,"pyray.play_automation_event",false]],"play_music_stream() (in module pyray)":[[5,"pyray.play_music_stream",false]],"play_sound() (in module pyray)":[[5,"pyray.play_sound",false]],"playaudiostream() (in module raylib)":[[6,"raylib.PlayAudioStream",false]],"playautomationevent() (in module raylib)":[[6,"raylib.PlayAutomationEvent",false]],"playmusicstream() (in module raylib)":[[6,"raylib.PlayMusicStream",false]],"playsound() (in module raylib)":[[6,"raylib.PlaySound",false]],"point (pyray.raycollision attribute)":[[5,"pyray.RayCollision.point",false]],"point (raylib.raycollision attribute)":[[6,"raylib.RayCollision.point",false]],"poll_input_events() (in module pyray)":[[5,"pyray.poll_input_events",false]],"pollinputevents() (in module raylib)":[[6,"raylib.PollInputEvents",false]],"position (pyray.camera3d attribute)":[[5,"pyray.Camera3D.position",false]],"position (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.position",false]],"position (pyray.ray attribute)":[[5,"pyray.Ray.position",false]],"position (raylib.camera attribute)":[[6,"raylib.Camera.position",false]],"position (raylib.camera3d attribute)":[[6,"raylib.Camera3D.position",false]],"position (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.position",false]],"position (raylib.ray attribute)":[[6,"raylib.Ray.position",false]],"positions (pyray.physicsvertexdata attribute)":[[5,"pyray.PhysicsVertexData.positions",false]],"positions (raylib.physicsvertexdata attribute)":[[6,"raylib.PhysicsVertexData.positions",false]],"processor (pyray.audiostream attribute)":[[5,"pyray.AudioStream.processor",false]],"processor (raylib.audiostream attribute)":[[6,"raylib.AudioStream.processor",false]],"progress_padding (in module raylib)":[[6,"raylib.PROGRESS_PADDING",false]],"progress_padding (pyray.guiprogressbarproperty attribute)":[[5,"pyray.GuiProgressBarProperty.PROGRESS_PADDING",false]],"progressbar (in module raylib)":[[6,"raylib.PROGRESSBAR",false]],"progressbar (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.PROGRESSBAR",false]],"projection (pyray.camera3d attribute)":[[5,"pyray.Camera3D.projection",false]],"projection (pyray.vrstereoconfig attribute)":[[5,"pyray.VrStereoConfig.projection",false]],"projection (raylib.camera attribute)":[[6,"raylib.Camera.projection",false]],"projection (raylib.camera3d attribute)":[[6,"raylib.Camera3D.projection",false]],"projection (raylib.vrstereoconfig attribute)":[[6,"raylib.VrStereoConfig.projection",false]],"propertyid (pyray.guistyleprop attribute)":[[5,"pyray.GuiStyleProp.propertyId",false]],"propertyid (raylib.guistyleprop attribute)":[[6,"raylib.GuiStyleProp.propertyId",false]],"propertyvalue (pyray.guistyleprop attribute)":[[5,"pyray.GuiStyleProp.propertyValue",false]],"propertyvalue (raylib.guistyleprop attribute)":[[6,"raylib.GuiStyleProp.propertyValue",false]],"purple (in module pyray)":[[5,"pyray.PURPLE",false]],"purple (in module raylib)":[[6,"raylib.PURPLE",false]],"pyray":[[5,"module-pyray",false]],"quaternion (class in raylib)":[[6,"raylib.Quaternion",false]],"quaternion_add() (in module pyray)":[[5,"pyray.quaternion_add",false]],"quaternion_add_value() (in module pyray)":[[5,"pyray.quaternion_add_value",false]],"quaternion_cubic_hermite_spline() (in module pyray)":[[5,"pyray.quaternion_cubic_hermite_spline",false]],"quaternion_divide() (in module pyray)":[[5,"pyray.quaternion_divide",false]],"quaternion_equals() (in module pyray)":[[5,"pyray.quaternion_equals",false]],"quaternion_from_axis_angle() (in module pyray)":[[5,"pyray.quaternion_from_axis_angle",false]],"quaternion_from_euler() (in module pyray)":[[5,"pyray.quaternion_from_euler",false]],"quaternion_from_matrix() (in module pyray)":[[5,"pyray.quaternion_from_matrix",false]],"quaternion_from_vector3_to_vector3() (in module pyray)":[[5,"pyray.quaternion_from_vector3_to_vector3",false]],"quaternion_identity() (in module pyray)":[[5,"pyray.quaternion_identity",false]],"quaternion_invert() (in module pyray)":[[5,"pyray.quaternion_invert",false]],"quaternion_length() (in module pyray)":[[5,"pyray.quaternion_length",false]],"quaternion_lerp() (in module pyray)":[[5,"pyray.quaternion_lerp",false]],"quaternion_multiply() (in module pyray)":[[5,"pyray.quaternion_multiply",false]],"quaternion_nlerp() (in module pyray)":[[5,"pyray.quaternion_nlerp",false]],"quaternion_normalize() (in module pyray)":[[5,"pyray.quaternion_normalize",false]],"quaternion_scale() (in module pyray)":[[5,"pyray.quaternion_scale",false]],"quaternion_slerp() (in module pyray)":[[5,"pyray.quaternion_slerp",false]],"quaternion_subtract() (in module pyray)":[[5,"pyray.quaternion_subtract",false]],"quaternion_subtract_value() (in module pyray)":[[5,"pyray.quaternion_subtract_value",false]],"quaternion_to_axis_angle() (in module pyray)":[[5,"pyray.quaternion_to_axis_angle",false]],"quaternion_to_euler() (in module pyray)":[[5,"pyray.quaternion_to_euler",false]],"quaternion_to_matrix() (in module pyray)":[[5,"pyray.quaternion_to_matrix",false]],"quaternion_transform() (in module pyray)":[[5,"pyray.quaternion_transform",false]],"quaternionadd() (in module raylib)":[[6,"raylib.QuaternionAdd",false]],"quaternionaddvalue() (in module raylib)":[[6,"raylib.QuaternionAddValue",false]],"quaternioncubichermitespline() (in module raylib)":[[6,"raylib.QuaternionCubicHermiteSpline",false]],"quaterniondivide() (in module raylib)":[[6,"raylib.QuaternionDivide",false]],"quaternionequals() (in module raylib)":[[6,"raylib.QuaternionEquals",false]],"quaternionfromaxisangle() (in module raylib)":[[6,"raylib.QuaternionFromAxisAngle",false]],"quaternionfromeuler() (in module raylib)":[[6,"raylib.QuaternionFromEuler",false]],"quaternionfrommatrix() (in module raylib)":[[6,"raylib.QuaternionFromMatrix",false]],"quaternionfromvector3tovector3() (in module raylib)":[[6,"raylib.QuaternionFromVector3ToVector3",false]],"quaternionidentity() (in module raylib)":[[6,"raylib.QuaternionIdentity",false]],"quaternioninvert() (in module raylib)":[[6,"raylib.QuaternionInvert",false]],"quaternionlength() (in module raylib)":[[6,"raylib.QuaternionLength",false]],"quaternionlerp() (in module raylib)":[[6,"raylib.QuaternionLerp",false]],"quaternionmultiply() (in module raylib)":[[6,"raylib.QuaternionMultiply",false]],"quaternionnlerp() (in module raylib)":[[6,"raylib.QuaternionNlerp",false]],"quaternionnormalize() (in module raylib)":[[6,"raylib.QuaternionNormalize",false]],"quaternionscale() (in module raylib)":[[6,"raylib.QuaternionScale",false]],"quaternionslerp() (in module raylib)":[[6,"raylib.QuaternionSlerp",false]],"quaternionsubtract() (in module raylib)":[[6,"raylib.QuaternionSubtract",false]],"quaternionsubtractvalue() (in module raylib)":[[6,"raylib.QuaternionSubtractValue",false]],"quaterniontoaxisangle() (in module raylib)":[[6,"raylib.QuaternionToAxisAngle",false]],"quaterniontoeuler() (in module raylib)":[[6,"raylib.QuaternionToEuler",false]],"quaterniontomatrix() (in module raylib)":[[6,"raylib.QuaternionToMatrix",false]],"quaterniontransform() (in module raylib)":[[6,"raylib.QuaternionTransform",false]],"r (pyray.color attribute)":[[5,"pyray.Color.r",false]],"r (raylib.color attribute)":[[6,"raylib.Color.r",false]],"radius (pyray.physicsshape attribute)":[[5,"pyray.PhysicsShape.radius",false]],"radius (raylib.physicsshape attribute)":[[6,"raylib.PhysicsShape.radius",false]],"raudiobuffer (class in raylib)":[[6,"raylib.rAudioBuffer",false]],"raudioprocessor (class in raylib)":[[6,"raylib.rAudioProcessor",false]],"ray (class in pyray)":[[5,"pyray.Ray",false]],"ray (class in raylib)":[[6,"raylib.Ray",false]],"raycollision (class in pyray)":[[5,"pyray.RayCollision",false]],"raycollision (class in raylib)":[[6,"raylib.RayCollision",false]],"raylib":[[6,"module-raylib",false]],"raywhite (in module pyray)":[[5,"pyray.RAYWHITE",false]],"raywhite (in module raylib)":[[6,"raylib.RAYWHITE",false]],"reallocate (raylib.glfwallocator attribute)":[[6,"raylib.GLFWallocator.reallocate",false]],"recs (pyray.font attribute)":[[5,"pyray.Font.recs",false]],"recs (raylib.font attribute)":[[6,"raylib.Font.recs",false]],"rectangle (class in pyray)":[[5,"pyray.Rectangle",false]],"rectangle (class in raylib)":[[6,"raylib.Rectangle",false]],"red (in module pyray)":[[5,"pyray.RED",false]],"red (in module raylib)":[[6,"raylib.RED",false]],"red (raylib.glfwgammaramp attribute)":[[6,"raylib.GLFWgammaramp.red",false]],"redbits (raylib.glfwvidmode attribute)":[[6,"raylib.GLFWvidmode.redBits",false]],"refreshrate (raylib.glfwvidmode attribute)":[[6,"raylib.GLFWvidmode.refreshRate",false]],"remap() (in module pyray)":[[5,"pyray.remap",false]],"remap() (in module raylib)":[[6,"raylib.Remap",false]],"rendertexture (class in pyray)":[[5,"pyray.RenderTexture",false]],"rendertexture (class in raylib)":[[6,"raylib.RenderTexture",false]],"rendertexture2d (class in raylib)":[[6,"raylib.RenderTexture2D",false]],"reset_physics() (in module pyray)":[[5,"pyray.reset_physics",false]],"resetphysics() (in module raylib)":[[6,"raylib.ResetPhysics",false]],"restitution (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.restitution",false]],"restitution (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.restitution",false]],"restitution (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.restitution",false]],"restitution (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.restitution",false]],"restore_window() (in module pyray)":[[5,"pyray.restore_window",false]],"restorewindow() (in module raylib)":[[6,"raylib.RestoreWindow",false]],"resume_audio_stream() (in module pyray)":[[5,"pyray.resume_audio_stream",false]],"resume_music_stream() (in module pyray)":[[5,"pyray.resume_music_stream",false]],"resume_sound() (in module pyray)":[[5,"pyray.resume_sound",false]],"resumeaudiostream() (in module raylib)":[[6,"raylib.ResumeAudioStream",false]],"resumemusicstream() (in module raylib)":[[6,"raylib.ResumeMusicStream",false]],"resumesound() (in module raylib)":[[6,"raylib.ResumeSound",false]],"right (pyray.npatchinfo attribute)":[[5,"pyray.NPatchInfo.right",false]],"right (raylib.npatchinfo attribute)":[[6,"raylib.NPatchInfo.right",false]],"rightlenscenter (pyray.vrstereoconfig attribute)":[[5,"pyray.VrStereoConfig.rightLensCenter",false]],"rightlenscenter (raylib.vrstereoconfig attribute)":[[6,"raylib.VrStereoConfig.rightLensCenter",false]],"rightscreencenter (pyray.vrstereoconfig attribute)":[[5,"pyray.VrStereoConfig.rightScreenCenter",false]],"rightscreencenter (raylib.vrstereoconfig attribute)":[[6,"raylib.VrStereoConfig.rightScreenCenter",false]],"rl (in module raylib)":[[6,"raylib.rl",false]],"rl_active_draw_buffers() (in module pyray)":[[5,"pyray.rl_active_draw_buffers",false]],"rl_active_texture_slot() (in module pyray)":[[5,"pyray.rl_active_texture_slot",false]],"rl_attachment_color_channel0 (in module raylib)":[[6,"raylib.RL_ATTACHMENT_COLOR_CHANNEL0",false]],"rl_attachment_color_channel0 (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_COLOR_CHANNEL0",false]],"rl_attachment_color_channel1 (in module raylib)":[[6,"raylib.RL_ATTACHMENT_COLOR_CHANNEL1",false]],"rl_attachment_color_channel1 (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_COLOR_CHANNEL1",false]],"rl_attachment_color_channel2 (in module raylib)":[[6,"raylib.RL_ATTACHMENT_COLOR_CHANNEL2",false]],"rl_attachment_color_channel2 (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_COLOR_CHANNEL2",false]],"rl_attachment_color_channel3 (in module raylib)":[[6,"raylib.RL_ATTACHMENT_COLOR_CHANNEL3",false]],"rl_attachment_color_channel3 (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_COLOR_CHANNEL3",false]],"rl_attachment_color_channel4 (in module raylib)":[[6,"raylib.RL_ATTACHMENT_COLOR_CHANNEL4",false]],"rl_attachment_color_channel4 (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_COLOR_CHANNEL4",false]],"rl_attachment_color_channel5 (in module raylib)":[[6,"raylib.RL_ATTACHMENT_COLOR_CHANNEL5",false]],"rl_attachment_color_channel5 (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_COLOR_CHANNEL5",false]],"rl_attachment_color_channel6 (in module raylib)":[[6,"raylib.RL_ATTACHMENT_COLOR_CHANNEL6",false]],"rl_attachment_color_channel6 (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_COLOR_CHANNEL6",false]],"rl_attachment_color_channel7 (in module raylib)":[[6,"raylib.RL_ATTACHMENT_COLOR_CHANNEL7",false]],"rl_attachment_color_channel7 (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_COLOR_CHANNEL7",false]],"rl_attachment_cubemap_negative_x (in module raylib)":[[6,"raylib.RL_ATTACHMENT_CUBEMAP_NEGATIVE_X",false]],"rl_attachment_cubemap_negative_x (pyray.rlframebufferattachtexturetype attribute)":[[5,"pyray.rlFramebufferAttachTextureType.RL_ATTACHMENT_CUBEMAP_NEGATIVE_X",false]],"rl_attachment_cubemap_negative_y (in module raylib)":[[6,"raylib.RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y",false]],"rl_attachment_cubemap_negative_y (pyray.rlframebufferattachtexturetype attribute)":[[5,"pyray.rlFramebufferAttachTextureType.RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y",false]],"rl_attachment_cubemap_negative_z (in module raylib)":[[6,"raylib.RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z",false]],"rl_attachment_cubemap_negative_z (pyray.rlframebufferattachtexturetype attribute)":[[5,"pyray.rlFramebufferAttachTextureType.RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z",false]],"rl_attachment_cubemap_positive_x (in module raylib)":[[6,"raylib.RL_ATTACHMENT_CUBEMAP_POSITIVE_X",false]],"rl_attachment_cubemap_positive_x (pyray.rlframebufferattachtexturetype attribute)":[[5,"pyray.rlFramebufferAttachTextureType.RL_ATTACHMENT_CUBEMAP_POSITIVE_X",false]],"rl_attachment_cubemap_positive_y (in module raylib)":[[6,"raylib.RL_ATTACHMENT_CUBEMAP_POSITIVE_Y",false]],"rl_attachment_cubemap_positive_y (pyray.rlframebufferattachtexturetype attribute)":[[5,"pyray.rlFramebufferAttachTextureType.RL_ATTACHMENT_CUBEMAP_POSITIVE_Y",false]],"rl_attachment_cubemap_positive_z (in module raylib)":[[6,"raylib.RL_ATTACHMENT_CUBEMAP_POSITIVE_Z",false]],"rl_attachment_cubemap_positive_z (pyray.rlframebufferattachtexturetype attribute)":[[5,"pyray.rlFramebufferAttachTextureType.RL_ATTACHMENT_CUBEMAP_POSITIVE_Z",false]],"rl_attachment_depth (in module raylib)":[[6,"raylib.RL_ATTACHMENT_DEPTH",false]],"rl_attachment_depth (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_DEPTH",false]],"rl_attachment_renderbuffer (in module raylib)":[[6,"raylib.RL_ATTACHMENT_RENDERBUFFER",false]],"rl_attachment_renderbuffer (pyray.rlframebufferattachtexturetype attribute)":[[5,"pyray.rlFramebufferAttachTextureType.RL_ATTACHMENT_RENDERBUFFER",false]],"rl_attachment_stencil (in module raylib)":[[6,"raylib.RL_ATTACHMENT_STENCIL",false]],"rl_attachment_stencil (pyray.rlframebufferattachtype attribute)":[[5,"pyray.rlFramebufferAttachType.RL_ATTACHMENT_STENCIL",false]],"rl_attachment_texture2d (in module raylib)":[[6,"raylib.RL_ATTACHMENT_TEXTURE2D",false]],"rl_attachment_texture2d (pyray.rlframebufferattachtexturetype attribute)":[[5,"pyray.rlFramebufferAttachTextureType.RL_ATTACHMENT_TEXTURE2D",false]],"rl_begin() (in module pyray)":[[5,"pyray.rl_begin",false]],"rl_bind_framebuffer() (in module pyray)":[[5,"pyray.rl_bind_framebuffer",false]],"rl_bind_image_texture() (in module pyray)":[[5,"pyray.rl_bind_image_texture",false]],"rl_bind_shader_buffer() (in module pyray)":[[5,"pyray.rl_bind_shader_buffer",false]],"rl_blend_add_colors (in module raylib)":[[6,"raylib.RL_BLEND_ADD_COLORS",false]],"rl_blend_add_colors (pyray.rlblendmode attribute)":[[5,"pyray.rlBlendMode.RL_BLEND_ADD_COLORS",false]],"rl_blend_additive (in module raylib)":[[6,"raylib.RL_BLEND_ADDITIVE",false]],"rl_blend_additive (pyray.rlblendmode attribute)":[[5,"pyray.rlBlendMode.RL_BLEND_ADDITIVE",false]],"rl_blend_alpha (in module raylib)":[[6,"raylib.RL_BLEND_ALPHA",false]],"rl_blend_alpha (pyray.rlblendmode attribute)":[[5,"pyray.rlBlendMode.RL_BLEND_ALPHA",false]],"rl_blend_alpha_premultiply (in module raylib)":[[6,"raylib.RL_BLEND_ALPHA_PREMULTIPLY",false]],"rl_blend_alpha_premultiply (pyray.rlblendmode attribute)":[[5,"pyray.rlBlendMode.RL_BLEND_ALPHA_PREMULTIPLY",false]],"rl_blend_custom (in module raylib)":[[6,"raylib.RL_BLEND_CUSTOM",false]],"rl_blend_custom (pyray.rlblendmode attribute)":[[5,"pyray.rlBlendMode.RL_BLEND_CUSTOM",false]],"rl_blend_custom_separate (in module raylib)":[[6,"raylib.RL_BLEND_CUSTOM_SEPARATE",false]],"rl_blend_custom_separate (pyray.rlblendmode attribute)":[[5,"pyray.rlBlendMode.RL_BLEND_CUSTOM_SEPARATE",false]],"rl_blend_multiplied (in module raylib)":[[6,"raylib.RL_BLEND_MULTIPLIED",false]],"rl_blend_multiplied (pyray.rlblendmode attribute)":[[5,"pyray.rlBlendMode.RL_BLEND_MULTIPLIED",false]],"rl_blend_subtract_colors (in module raylib)":[[6,"raylib.RL_BLEND_SUBTRACT_COLORS",false]],"rl_blend_subtract_colors (pyray.rlblendmode attribute)":[[5,"pyray.rlBlendMode.RL_BLEND_SUBTRACT_COLORS",false]],"rl_blit_framebuffer() (in module pyray)":[[5,"pyray.rl_blit_framebuffer",false]],"rl_check_errors() (in module pyray)":[[5,"pyray.rl_check_errors",false]],"rl_check_render_batch_limit() (in module pyray)":[[5,"pyray.rl_check_render_batch_limit",false]],"rl_clear_color() (in module pyray)":[[5,"pyray.rl_clear_color",false]],"rl_clear_screen_buffers() (in module pyray)":[[5,"pyray.rl_clear_screen_buffers",false]],"rl_color3f() (in module pyray)":[[5,"pyray.rl_color3f",false]],"rl_color4f() (in module pyray)":[[5,"pyray.rl_color4f",false]],"rl_color4ub() (in module pyray)":[[5,"pyray.rl_color4ub",false]],"rl_color_mask() (in module pyray)":[[5,"pyray.rl_color_mask",false]],"rl_compile_shader() (in module pyray)":[[5,"pyray.rl_compile_shader",false]],"rl_compute_shader_dispatch() (in module pyray)":[[5,"pyray.rl_compute_shader_dispatch",false]],"rl_copy_shader_buffer() (in module pyray)":[[5,"pyray.rl_copy_shader_buffer",false]],"rl_cubemap_parameters() (in module pyray)":[[5,"pyray.rl_cubemap_parameters",false]],"rl_cull_face_back (in module raylib)":[[6,"raylib.RL_CULL_FACE_BACK",false]],"rl_cull_face_back (pyray.rlcullmode attribute)":[[5,"pyray.rlCullMode.RL_CULL_FACE_BACK",false]],"rl_cull_face_front (in module raylib)":[[6,"raylib.RL_CULL_FACE_FRONT",false]],"rl_cull_face_front (pyray.rlcullmode attribute)":[[5,"pyray.rlCullMode.RL_CULL_FACE_FRONT",false]],"rl_disable_backface_culling() (in module pyray)":[[5,"pyray.rl_disable_backface_culling",false]],"rl_disable_color_blend() (in module pyray)":[[5,"pyray.rl_disable_color_blend",false]],"rl_disable_depth_mask() (in module pyray)":[[5,"pyray.rl_disable_depth_mask",false]],"rl_disable_depth_test() (in module pyray)":[[5,"pyray.rl_disable_depth_test",false]],"rl_disable_framebuffer() (in module pyray)":[[5,"pyray.rl_disable_framebuffer",false]],"rl_disable_scissor_test() (in module pyray)":[[5,"pyray.rl_disable_scissor_test",false]],"rl_disable_shader() (in module pyray)":[[5,"pyray.rl_disable_shader",false]],"rl_disable_smooth_lines() (in module pyray)":[[5,"pyray.rl_disable_smooth_lines",false]],"rl_disable_stereo_render() (in module pyray)":[[5,"pyray.rl_disable_stereo_render",false]],"rl_disable_texture() (in module pyray)":[[5,"pyray.rl_disable_texture",false]],"rl_disable_texture_cubemap() (in module pyray)":[[5,"pyray.rl_disable_texture_cubemap",false]],"rl_disable_vertex_array() (in module pyray)":[[5,"pyray.rl_disable_vertex_array",false]],"rl_disable_vertex_attribute() (in module pyray)":[[5,"pyray.rl_disable_vertex_attribute",false]],"rl_disable_vertex_buffer() (in module pyray)":[[5,"pyray.rl_disable_vertex_buffer",false]],"rl_disable_vertex_buffer_element() (in module pyray)":[[5,"pyray.rl_disable_vertex_buffer_element",false]],"rl_disable_wire_mode() (in module pyray)":[[5,"pyray.rl_disable_wire_mode",false]],"rl_draw_render_batch() (in module pyray)":[[5,"pyray.rl_draw_render_batch",false]],"rl_draw_render_batch_active() (in module pyray)":[[5,"pyray.rl_draw_render_batch_active",false]],"rl_draw_vertex_array() (in module pyray)":[[5,"pyray.rl_draw_vertex_array",false]],"rl_draw_vertex_array_elements() (in module pyray)":[[5,"pyray.rl_draw_vertex_array_elements",false]],"rl_draw_vertex_array_elements_instanced() (in module pyray)":[[5,"pyray.rl_draw_vertex_array_elements_instanced",false]],"rl_draw_vertex_array_instanced() (in module pyray)":[[5,"pyray.rl_draw_vertex_array_instanced",false]],"rl_enable_backface_culling() (in module pyray)":[[5,"pyray.rl_enable_backface_culling",false]],"rl_enable_color_blend() (in module pyray)":[[5,"pyray.rl_enable_color_blend",false]],"rl_enable_depth_mask() (in module pyray)":[[5,"pyray.rl_enable_depth_mask",false]],"rl_enable_depth_test() (in module pyray)":[[5,"pyray.rl_enable_depth_test",false]],"rl_enable_framebuffer() (in module pyray)":[[5,"pyray.rl_enable_framebuffer",false]],"rl_enable_point_mode() (in module pyray)":[[5,"pyray.rl_enable_point_mode",false]],"rl_enable_scissor_test() (in module pyray)":[[5,"pyray.rl_enable_scissor_test",false]],"rl_enable_shader() (in module pyray)":[[5,"pyray.rl_enable_shader",false]],"rl_enable_smooth_lines() (in module pyray)":[[5,"pyray.rl_enable_smooth_lines",false]],"rl_enable_stereo_render() (in module pyray)":[[5,"pyray.rl_enable_stereo_render",false]],"rl_enable_texture() (in module pyray)":[[5,"pyray.rl_enable_texture",false]],"rl_enable_texture_cubemap() (in module pyray)":[[5,"pyray.rl_enable_texture_cubemap",false]],"rl_enable_vertex_array() (in module pyray)":[[5,"pyray.rl_enable_vertex_array",false]],"rl_enable_vertex_attribute() (in module pyray)":[[5,"pyray.rl_enable_vertex_attribute",false]],"rl_enable_vertex_buffer() (in module pyray)":[[5,"pyray.rl_enable_vertex_buffer",false]],"rl_enable_vertex_buffer_element() (in module pyray)":[[5,"pyray.rl_enable_vertex_buffer_element",false]],"rl_enable_wire_mode() (in module pyray)":[[5,"pyray.rl_enable_wire_mode",false]],"rl_end() (in module pyray)":[[5,"pyray.rl_end",false]],"rl_framebuffer_attach() (in module pyray)":[[5,"pyray.rl_framebuffer_attach",false]],"rl_framebuffer_complete() (in module pyray)":[[5,"pyray.rl_framebuffer_complete",false]],"rl_frustum() (in module pyray)":[[5,"pyray.rl_frustum",false]],"rl_gen_texture_mipmaps() (in module pyray)":[[5,"pyray.rl_gen_texture_mipmaps",false]],"rl_get_active_framebuffer() (in module pyray)":[[5,"pyray.rl_get_active_framebuffer",false]],"rl_get_cull_distance_far() (in module pyray)":[[5,"pyray.rl_get_cull_distance_far",false]],"rl_get_cull_distance_near() (in module pyray)":[[5,"pyray.rl_get_cull_distance_near",false]],"rl_get_framebuffer_height() (in module pyray)":[[5,"pyray.rl_get_framebuffer_height",false]],"rl_get_framebuffer_width() (in module pyray)":[[5,"pyray.rl_get_framebuffer_width",false]],"rl_get_gl_texture_formats() (in module pyray)":[[5,"pyray.rl_get_gl_texture_formats",false]],"rl_get_line_width() (in module pyray)":[[5,"pyray.rl_get_line_width",false]],"rl_get_location_attrib() (in module pyray)":[[5,"pyray.rl_get_location_attrib",false]],"rl_get_location_uniform() (in module pyray)":[[5,"pyray.rl_get_location_uniform",false]],"rl_get_matrix_modelview() (in module pyray)":[[5,"pyray.rl_get_matrix_modelview",false]],"rl_get_matrix_projection() (in module pyray)":[[5,"pyray.rl_get_matrix_projection",false]],"rl_get_matrix_projection_stereo() (in module pyray)":[[5,"pyray.rl_get_matrix_projection_stereo",false]],"rl_get_matrix_transform() (in module pyray)":[[5,"pyray.rl_get_matrix_transform",false]],"rl_get_matrix_view_offset_stereo() (in module pyray)":[[5,"pyray.rl_get_matrix_view_offset_stereo",false]],"rl_get_pixel_format_name() (in module pyray)":[[5,"pyray.rl_get_pixel_format_name",false]],"rl_get_shader_buffer_size() (in module pyray)":[[5,"pyray.rl_get_shader_buffer_size",false]],"rl_get_shader_id_default() (in module pyray)":[[5,"pyray.rl_get_shader_id_default",false]],"rl_get_shader_locs_default() (in module pyray)":[[5,"pyray.rl_get_shader_locs_default",false]],"rl_get_texture_id_default() (in module pyray)":[[5,"pyray.rl_get_texture_id_default",false]],"rl_get_version() (in module pyray)":[[5,"pyray.rl_get_version",false]],"rl_is_stereo_render_enabled() (in module pyray)":[[5,"pyray.rl_is_stereo_render_enabled",false]],"rl_load_compute_shader_program() (in module pyray)":[[5,"pyray.rl_load_compute_shader_program",false]],"rl_load_draw_cube() (in module pyray)":[[5,"pyray.rl_load_draw_cube",false]],"rl_load_draw_quad() (in module pyray)":[[5,"pyray.rl_load_draw_quad",false]],"rl_load_extensions() (in module pyray)":[[5,"pyray.rl_load_extensions",false]],"rl_load_framebuffer() (in module pyray)":[[5,"pyray.rl_load_framebuffer",false]],"rl_load_identity() (in module pyray)":[[5,"pyray.rl_load_identity",false]],"rl_load_render_batch() (in module pyray)":[[5,"pyray.rl_load_render_batch",false]],"rl_load_shader_buffer() (in module pyray)":[[5,"pyray.rl_load_shader_buffer",false]],"rl_load_shader_code() (in module pyray)":[[5,"pyray.rl_load_shader_code",false]],"rl_load_shader_program() (in module pyray)":[[5,"pyray.rl_load_shader_program",false]],"rl_load_texture() (in module pyray)":[[5,"pyray.rl_load_texture",false]],"rl_load_texture_cubemap() (in module pyray)":[[5,"pyray.rl_load_texture_cubemap",false]],"rl_load_texture_depth() (in module pyray)":[[5,"pyray.rl_load_texture_depth",false]],"rl_load_vertex_array() (in module pyray)":[[5,"pyray.rl_load_vertex_array",false]],"rl_load_vertex_buffer() (in module pyray)":[[5,"pyray.rl_load_vertex_buffer",false]],"rl_load_vertex_buffer_element() (in module pyray)":[[5,"pyray.rl_load_vertex_buffer_element",false]],"rl_log_all (in module raylib)":[[6,"raylib.RL_LOG_ALL",false]],"rl_log_all (pyray.rltraceloglevel attribute)":[[5,"pyray.rlTraceLogLevel.RL_LOG_ALL",false]],"rl_log_debug (in module raylib)":[[6,"raylib.RL_LOG_DEBUG",false]],"rl_log_debug (pyray.rltraceloglevel attribute)":[[5,"pyray.rlTraceLogLevel.RL_LOG_DEBUG",false]],"rl_log_error (in module raylib)":[[6,"raylib.RL_LOG_ERROR",false]],"rl_log_error (pyray.rltraceloglevel attribute)":[[5,"pyray.rlTraceLogLevel.RL_LOG_ERROR",false]],"rl_log_fatal (in module raylib)":[[6,"raylib.RL_LOG_FATAL",false]],"rl_log_fatal (pyray.rltraceloglevel attribute)":[[5,"pyray.rlTraceLogLevel.RL_LOG_FATAL",false]],"rl_log_info (in module raylib)":[[6,"raylib.RL_LOG_INFO",false]],"rl_log_info (pyray.rltraceloglevel attribute)":[[5,"pyray.rlTraceLogLevel.RL_LOG_INFO",false]],"rl_log_none (in module raylib)":[[6,"raylib.RL_LOG_NONE",false]],"rl_log_none (pyray.rltraceloglevel attribute)":[[5,"pyray.rlTraceLogLevel.RL_LOG_NONE",false]],"rl_log_trace (in module raylib)":[[6,"raylib.RL_LOG_TRACE",false]],"rl_log_trace (pyray.rltraceloglevel attribute)":[[5,"pyray.rlTraceLogLevel.RL_LOG_TRACE",false]],"rl_log_warning (in module raylib)":[[6,"raylib.RL_LOG_WARNING",false]],"rl_log_warning (pyray.rltraceloglevel attribute)":[[5,"pyray.rlTraceLogLevel.RL_LOG_WARNING",false]],"rl_matrix_mode() (in module pyray)":[[5,"pyray.rl_matrix_mode",false]],"rl_mult_matrixf() (in module pyray)":[[5,"pyray.rl_mult_matrixf",false]],"rl_normal3f() (in module pyray)":[[5,"pyray.rl_normal3f",false]],"rl_opengl_11 (in module raylib)":[[6,"raylib.RL_OPENGL_11",false]],"rl_opengl_11 (pyray.rlglversion attribute)":[[5,"pyray.rlGlVersion.RL_OPENGL_11",false]],"rl_opengl_21 (in module raylib)":[[6,"raylib.RL_OPENGL_21",false]],"rl_opengl_21 (pyray.rlglversion attribute)":[[5,"pyray.rlGlVersion.RL_OPENGL_21",false]],"rl_opengl_33 (in module raylib)":[[6,"raylib.RL_OPENGL_33",false]],"rl_opengl_33 (pyray.rlglversion attribute)":[[5,"pyray.rlGlVersion.RL_OPENGL_33",false]],"rl_opengl_43 (in module raylib)":[[6,"raylib.RL_OPENGL_43",false]],"rl_opengl_43 (pyray.rlglversion attribute)":[[5,"pyray.rlGlVersion.RL_OPENGL_43",false]],"rl_opengl_es_20 (in module raylib)":[[6,"raylib.RL_OPENGL_ES_20",false]],"rl_opengl_es_20 (pyray.rlglversion attribute)":[[5,"pyray.rlGlVersion.RL_OPENGL_ES_20",false]],"rl_opengl_es_30 (in module raylib)":[[6,"raylib.RL_OPENGL_ES_30",false]],"rl_opengl_es_30 (pyray.rlglversion attribute)":[[5,"pyray.rlGlVersion.RL_OPENGL_ES_30",false]],"rl_ortho() (in module pyray)":[[5,"pyray.rl_ortho",false]],"rl_pixelformat_compressed_astc_4x4_rgba (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA",false]],"rl_pixelformat_compressed_astc_4x4_rgba (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA",false]],"rl_pixelformat_compressed_astc_8x8_rgba (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA",false]],"rl_pixelformat_compressed_astc_8x8_rgba (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA",false]],"rl_pixelformat_compressed_dxt1_rgb (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_DXT1_RGB",false]],"rl_pixelformat_compressed_dxt1_rgb (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_DXT1_RGB",false]],"rl_pixelformat_compressed_dxt1_rgba (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA",false]],"rl_pixelformat_compressed_dxt1_rgba (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA",false]],"rl_pixelformat_compressed_dxt3_rgba (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA",false]],"rl_pixelformat_compressed_dxt3_rgba (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA",false]],"rl_pixelformat_compressed_dxt5_rgba (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA",false]],"rl_pixelformat_compressed_dxt5_rgba (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA",false]],"rl_pixelformat_compressed_etc1_rgb (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_ETC1_RGB",false]],"rl_pixelformat_compressed_etc1_rgb (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_ETC1_RGB",false]],"rl_pixelformat_compressed_etc2_eac_rgba (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA",false]],"rl_pixelformat_compressed_etc2_eac_rgba (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA",false]],"rl_pixelformat_compressed_etc2_rgb (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_ETC2_RGB",false]],"rl_pixelformat_compressed_etc2_rgb (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_ETC2_RGB",false]],"rl_pixelformat_compressed_pvrt_rgb (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_PVRT_RGB",false]],"rl_pixelformat_compressed_pvrt_rgb (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_PVRT_RGB",false]],"rl_pixelformat_compressed_pvrt_rgba (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA",false]],"rl_pixelformat_compressed_pvrt_rgba (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA",false]],"rl_pixelformat_uncompressed_gray_alpha (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA",false]],"rl_pixelformat_uncompressed_gray_alpha (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA",false]],"rl_pixelformat_uncompressed_grayscale (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE",false]],"rl_pixelformat_uncompressed_grayscale (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE",false]],"rl_pixelformat_uncompressed_r16 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R16",false]],"rl_pixelformat_uncompressed_r16 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R16",false]],"rl_pixelformat_uncompressed_r16g16b16 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16",false]],"rl_pixelformat_uncompressed_r16g16b16 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16",false]],"rl_pixelformat_uncompressed_r16g16b16a16 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16",false]],"rl_pixelformat_uncompressed_r16g16b16a16 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16",false]],"rl_pixelformat_uncompressed_r32 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R32",false]],"rl_pixelformat_uncompressed_r32 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R32",false]],"rl_pixelformat_uncompressed_r32g32b32 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32",false]],"rl_pixelformat_uncompressed_r32g32b32 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32",false]],"rl_pixelformat_uncompressed_r32g32b32a32 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32",false]],"rl_pixelformat_uncompressed_r32g32b32a32 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32",false]],"rl_pixelformat_uncompressed_r4g4b4a4 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4",false]],"rl_pixelformat_uncompressed_r4g4b4a4 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4",false]],"rl_pixelformat_uncompressed_r5g5b5a1 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1",false]],"rl_pixelformat_uncompressed_r5g5b5a1 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1",false]],"rl_pixelformat_uncompressed_r5g6b5 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5",false]],"rl_pixelformat_uncompressed_r5g6b5 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5",false]],"rl_pixelformat_uncompressed_r8g8b8 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8",false]],"rl_pixelformat_uncompressed_r8g8b8 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8",false]],"rl_pixelformat_uncompressed_r8g8b8a8 (in module raylib)":[[6,"raylib.RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8",false]],"rl_pixelformat_uncompressed_r8g8b8a8 (pyray.rlpixelformat attribute)":[[5,"pyray.rlPixelFormat.RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8",false]],"rl_pop_matrix() (in module pyray)":[[5,"pyray.rl_pop_matrix",false]],"rl_push_matrix() (in module pyray)":[[5,"pyray.rl_push_matrix",false]],"rl_read_screen_pixels() (in module pyray)":[[5,"pyray.rl_read_screen_pixels",false]],"rl_read_shader_buffer() (in module pyray)":[[5,"pyray.rl_read_shader_buffer",false]],"rl_read_texture_pixels() (in module pyray)":[[5,"pyray.rl_read_texture_pixels",false]],"rl_rotatef() (in module pyray)":[[5,"pyray.rl_rotatef",false]],"rl_scalef() (in module pyray)":[[5,"pyray.rl_scalef",false]],"rl_scissor() (in module pyray)":[[5,"pyray.rl_scissor",false]],"rl_set_blend_factors() (in module pyray)":[[5,"pyray.rl_set_blend_factors",false]],"rl_set_blend_factors_separate() (in module pyray)":[[5,"pyray.rl_set_blend_factors_separate",false]],"rl_set_blend_mode() (in module pyray)":[[5,"pyray.rl_set_blend_mode",false]],"rl_set_clip_planes() (in module pyray)":[[5,"pyray.rl_set_clip_planes",false]],"rl_set_cull_face() (in module pyray)":[[5,"pyray.rl_set_cull_face",false]],"rl_set_framebuffer_height() (in module pyray)":[[5,"pyray.rl_set_framebuffer_height",false]],"rl_set_framebuffer_width() (in module pyray)":[[5,"pyray.rl_set_framebuffer_width",false]],"rl_set_line_width() (in module pyray)":[[5,"pyray.rl_set_line_width",false]],"rl_set_matrix_modelview() (in module pyray)":[[5,"pyray.rl_set_matrix_modelview",false]],"rl_set_matrix_projection() (in module pyray)":[[5,"pyray.rl_set_matrix_projection",false]],"rl_set_matrix_projection_stereo() (in module pyray)":[[5,"pyray.rl_set_matrix_projection_stereo",false]],"rl_set_matrix_view_offset_stereo() (in module pyray)":[[5,"pyray.rl_set_matrix_view_offset_stereo",false]],"rl_set_render_batch_active() (in module pyray)":[[5,"pyray.rl_set_render_batch_active",false]],"rl_set_shader() (in module pyray)":[[5,"pyray.rl_set_shader",false]],"rl_set_texture() (in module pyray)":[[5,"pyray.rl_set_texture",false]],"rl_set_uniform() (in module pyray)":[[5,"pyray.rl_set_uniform",false]],"rl_set_uniform_matrices() (in module pyray)":[[5,"pyray.rl_set_uniform_matrices",false]],"rl_set_uniform_matrix() (in module pyray)":[[5,"pyray.rl_set_uniform_matrix",false]],"rl_set_uniform_sampler() (in module pyray)":[[5,"pyray.rl_set_uniform_sampler",false]],"rl_set_vertex_attribute() (in module pyray)":[[5,"pyray.rl_set_vertex_attribute",false]],"rl_set_vertex_attribute_default() (in module pyray)":[[5,"pyray.rl_set_vertex_attribute_default",false]],"rl_set_vertex_attribute_divisor() (in module pyray)":[[5,"pyray.rl_set_vertex_attribute_divisor",false]],"rl_shader_attrib_float (in module raylib)":[[6,"raylib.RL_SHADER_ATTRIB_FLOAT",false]],"rl_shader_attrib_float (pyray.rlshaderattributedatatype attribute)":[[5,"pyray.rlShaderAttributeDataType.RL_SHADER_ATTRIB_FLOAT",false]],"rl_shader_attrib_vec2 (in module raylib)":[[6,"raylib.RL_SHADER_ATTRIB_VEC2",false]],"rl_shader_attrib_vec2 (pyray.rlshaderattributedatatype attribute)":[[5,"pyray.rlShaderAttributeDataType.RL_SHADER_ATTRIB_VEC2",false]],"rl_shader_attrib_vec3 (in module raylib)":[[6,"raylib.RL_SHADER_ATTRIB_VEC3",false]],"rl_shader_attrib_vec3 (pyray.rlshaderattributedatatype attribute)":[[5,"pyray.rlShaderAttributeDataType.RL_SHADER_ATTRIB_VEC3",false]],"rl_shader_attrib_vec4 (in module raylib)":[[6,"raylib.RL_SHADER_ATTRIB_VEC4",false]],"rl_shader_attrib_vec4 (pyray.rlshaderattributedatatype attribute)":[[5,"pyray.rlShaderAttributeDataType.RL_SHADER_ATTRIB_VEC4",false]],"rl_shader_loc_color_ambient (in module raylib)":[[6,"raylib.RL_SHADER_LOC_COLOR_AMBIENT",false]],"rl_shader_loc_color_ambient (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_COLOR_AMBIENT",false]],"rl_shader_loc_color_diffuse (in module raylib)":[[6,"raylib.RL_SHADER_LOC_COLOR_DIFFUSE",false]],"rl_shader_loc_color_diffuse (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_COLOR_DIFFUSE",false]],"rl_shader_loc_color_specular (in module raylib)":[[6,"raylib.RL_SHADER_LOC_COLOR_SPECULAR",false]],"rl_shader_loc_color_specular (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_COLOR_SPECULAR",false]],"rl_shader_loc_map_albedo (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_ALBEDO",false]],"rl_shader_loc_map_albedo (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_ALBEDO",false]],"rl_shader_loc_map_brdf (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_BRDF",false]],"rl_shader_loc_map_brdf (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_BRDF",false]],"rl_shader_loc_map_cubemap (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_CUBEMAP",false]],"rl_shader_loc_map_cubemap (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_CUBEMAP",false]],"rl_shader_loc_map_emission (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_EMISSION",false]],"rl_shader_loc_map_emission (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_EMISSION",false]],"rl_shader_loc_map_height (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_HEIGHT",false]],"rl_shader_loc_map_height (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_HEIGHT",false]],"rl_shader_loc_map_irradiance (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_IRRADIANCE",false]],"rl_shader_loc_map_irradiance (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_IRRADIANCE",false]],"rl_shader_loc_map_metalness (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_METALNESS",false]],"rl_shader_loc_map_metalness (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_METALNESS",false]],"rl_shader_loc_map_normal (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_NORMAL",false]],"rl_shader_loc_map_normal (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_NORMAL",false]],"rl_shader_loc_map_occlusion (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_OCCLUSION",false]],"rl_shader_loc_map_occlusion (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_OCCLUSION",false]],"rl_shader_loc_map_prefilter (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_PREFILTER",false]],"rl_shader_loc_map_prefilter (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_PREFILTER",false]],"rl_shader_loc_map_roughness (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MAP_ROUGHNESS",false]],"rl_shader_loc_map_roughness (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MAP_ROUGHNESS",false]],"rl_shader_loc_matrix_model (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MATRIX_MODEL",false]],"rl_shader_loc_matrix_model (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MATRIX_MODEL",false]],"rl_shader_loc_matrix_mvp (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MATRIX_MVP",false]],"rl_shader_loc_matrix_mvp (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MATRIX_MVP",false]],"rl_shader_loc_matrix_normal (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MATRIX_NORMAL",false]],"rl_shader_loc_matrix_normal (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MATRIX_NORMAL",false]],"rl_shader_loc_matrix_projection (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MATRIX_PROJECTION",false]],"rl_shader_loc_matrix_projection (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MATRIX_PROJECTION",false]],"rl_shader_loc_matrix_view (in module raylib)":[[6,"raylib.RL_SHADER_LOC_MATRIX_VIEW",false]],"rl_shader_loc_matrix_view (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_MATRIX_VIEW",false]],"rl_shader_loc_vector_view (in module raylib)":[[6,"raylib.RL_SHADER_LOC_VECTOR_VIEW",false]],"rl_shader_loc_vector_view (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_VECTOR_VIEW",false]],"rl_shader_loc_vertex_color (in module raylib)":[[6,"raylib.RL_SHADER_LOC_VERTEX_COLOR",false]],"rl_shader_loc_vertex_color (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_VERTEX_COLOR",false]],"rl_shader_loc_vertex_normal (in module raylib)":[[6,"raylib.RL_SHADER_LOC_VERTEX_NORMAL",false]],"rl_shader_loc_vertex_normal (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_VERTEX_NORMAL",false]],"rl_shader_loc_vertex_position (in module raylib)":[[6,"raylib.RL_SHADER_LOC_VERTEX_POSITION",false]],"rl_shader_loc_vertex_position (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_VERTEX_POSITION",false]],"rl_shader_loc_vertex_tangent (in module raylib)":[[6,"raylib.RL_SHADER_LOC_VERTEX_TANGENT",false]],"rl_shader_loc_vertex_tangent (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_VERTEX_TANGENT",false]],"rl_shader_loc_vertex_texcoord01 (in module raylib)":[[6,"raylib.RL_SHADER_LOC_VERTEX_TEXCOORD01",false]],"rl_shader_loc_vertex_texcoord01 (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_VERTEX_TEXCOORD01",false]],"rl_shader_loc_vertex_texcoord02 (in module raylib)":[[6,"raylib.RL_SHADER_LOC_VERTEX_TEXCOORD02",false]],"rl_shader_loc_vertex_texcoord02 (pyray.rlshaderlocationindex attribute)":[[5,"pyray.rlShaderLocationIndex.RL_SHADER_LOC_VERTEX_TEXCOORD02",false]],"rl_shader_uniform_float (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_FLOAT",false]],"rl_shader_uniform_float (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_FLOAT",false]],"rl_shader_uniform_int (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_INT",false]],"rl_shader_uniform_int (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_INT",false]],"rl_shader_uniform_ivec2 (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_IVEC2",false]],"rl_shader_uniform_ivec2 (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_IVEC2",false]],"rl_shader_uniform_ivec3 (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_IVEC3",false]],"rl_shader_uniform_ivec3 (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_IVEC3",false]],"rl_shader_uniform_ivec4 (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_IVEC4",false]],"rl_shader_uniform_ivec4 (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_IVEC4",false]],"rl_shader_uniform_sampler2d (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_SAMPLER2D",false]],"rl_shader_uniform_sampler2d (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_SAMPLER2D",false]],"rl_shader_uniform_uint (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_UINT",false]],"rl_shader_uniform_uint (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_UINT",false]],"rl_shader_uniform_uivec2 (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_UIVEC2",false]],"rl_shader_uniform_uivec2 (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_UIVEC2",false]],"rl_shader_uniform_uivec3 (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_UIVEC3",false]],"rl_shader_uniform_uivec3 (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_UIVEC3",false]],"rl_shader_uniform_uivec4 (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_UIVEC4",false]],"rl_shader_uniform_uivec4 (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_UIVEC4",false]],"rl_shader_uniform_vec2 (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_VEC2",false]],"rl_shader_uniform_vec2 (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_VEC2",false]],"rl_shader_uniform_vec3 (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_VEC3",false]],"rl_shader_uniform_vec3 (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_VEC3",false]],"rl_shader_uniform_vec4 (in module raylib)":[[6,"raylib.RL_SHADER_UNIFORM_VEC4",false]],"rl_shader_uniform_vec4 (pyray.rlshaderuniformdatatype attribute)":[[5,"pyray.rlShaderUniformDataType.RL_SHADER_UNIFORM_VEC4",false]],"rl_tex_coord2f() (in module pyray)":[[5,"pyray.rl_tex_coord2f",false]],"rl_texture_filter_anisotropic_16x (in module raylib)":[[6,"raylib.RL_TEXTURE_FILTER_ANISOTROPIC_16X",false]],"rl_texture_filter_anisotropic_16x (pyray.rltexturefilter attribute)":[[5,"pyray.rlTextureFilter.RL_TEXTURE_FILTER_ANISOTROPIC_16X",false]],"rl_texture_filter_anisotropic_4x (in module raylib)":[[6,"raylib.RL_TEXTURE_FILTER_ANISOTROPIC_4X",false]],"rl_texture_filter_anisotropic_4x (pyray.rltexturefilter attribute)":[[5,"pyray.rlTextureFilter.RL_TEXTURE_FILTER_ANISOTROPIC_4X",false]],"rl_texture_filter_anisotropic_8x (in module raylib)":[[6,"raylib.RL_TEXTURE_FILTER_ANISOTROPIC_8X",false]],"rl_texture_filter_anisotropic_8x (pyray.rltexturefilter attribute)":[[5,"pyray.rlTextureFilter.RL_TEXTURE_FILTER_ANISOTROPIC_8X",false]],"rl_texture_filter_bilinear (in module raylib)":[[6,"raylib.RL_TEXTURE_FILTER_BILINEAR",false]],"rl_texture_filter_bilinear (pyray.rltexturefilter attribute)":[[5,"pyray.rlTextureFilter.RL_TEXTURE_FILTER_BILINEAR",false]],"rl_texture_filter_point (in module raylib)":[[6,"raylib.RL_TEXTURE_FILTER_POINT",false]],"rl_texture_filter_point (pyray.rltexturefilter attribute)":[[5,"pyray.rlTextureFilter.RL_TEXTURE_FILTER_POINT",false]],"rl_texture_filter_trilinear (in module raylib)":[[6,"raylib.RL_TEXTURE_FILTER_TRILINEAR",false]],"rl_texture_filter_trilinear (pyray.rltexturefilter attribute)":[[5,"pyray.rlTextureFilter.RL_TEXTURE_FILTER_TRILINEAR",false]],"rl_texture_parameters() (in module pyray)":[[5,"pyray.rl_texture_parameters",false]],"rl_translatef() (in module pyray)":[[5,"pyray.rl_translatef",false]],"rl_unload_framebuffer() (in module pyray)":[[5,"pyray.rl_unload_framebuffer",false]],"rl_unload_render_batch() (in module pyray)":[[5,"pyray.rl_unload_render_batch",false]],"rl_unload_shader_buffer() (in module pyray)":[[5,"pyray.rl_unload_shader_buffer",false]],"rl_unload_shader_program() (in module pyray)":[[5,"pyray.rl_unload_shader_program",false]],"rl_unload_texture() (in module pyray)":[[5,"pyray.rl_unload_texture",false]],"rl_unload_vertex_array() (in module pyray)":[[5,"pyray.rl_unload_vertex_array",false]],"rl_unload_vertex_buffer() (in module pyray)":[[5,"pyray.rl_unload_vertex_buffer",false]],"rl_update_shader_buffer() (in module pyray)":[[5,"pyray.rl_update_shader_buffer",false]],"rl_update_texture() (in module pyray)":[[5,"pyray.rl_update_texture",false]],"rl_update_vertex_buffer() (in module pyray)":[[5,"pyray.rl_update_vertex_buffer",false]],"rl_update_vertex_buffer_elements() (in module pyray)":[[5,"pyray.rl_update_vertex_buffer_elements",false]],"rl_vertex2f() (in module pyray)":[[5,"pyray.rl_vertex2f",false]],"rl_vertex2i() (in module pyray)":[[5,"pyray.rl_vertex2i",false]],"rl_vertex3f() (in module pyray)":[[5,"pyray.rl_vertex3f",false]],"rl_viewport() (in module pyray)":[[5,"pyray.rl_viewport",false]],"rlactivedrawbuffers() (in module raylib)":[[6,"raylib.rlActiveDrawBuffers",false]],"rlactivetextureslot() (in module raylib)":[[6,"raylib.rlActiveTextureSlot",false]],"rlbegin() (in module raylib)":[[6,"raylib.rlBegin",false]],"rlbindframebuffer() (in module raylib)":[[6,"raylib.rlBindFramebuffer",false]],"rlbindimagetexture() (in module raylib)":[[6,"raylib.rlBindImageTexture",false]],"rlbindshaderbuffer() (in module raylib)":[[6,"raylib.rlBindShaderBuffer",false]],"rlblendmode (class in pyray)":[[5,"pyray.rlBlendMode",false]],"rlblendmode (in module raylib)":[[6,"raylib.rlBlendMode",false]],"rlblitframebuffer() (in module raylib)":[[6,"raylib.rlBlitFramebuffer",false]],"rlcheckerrors() (in module raylib)":[[6,"raylib.rlCheckErrors",false]],"rlcheckrenderbatchlimit() (in module raylib)":[[6,"raylib.rlCheckRenderBatchLimit",false]],"rlclearcolor() (in module raylib)":[[6,"raylib.rlClearColor",false]],"rlclearscreenbuffers() (in module raylib)":[[6,"raylib.rlClearScreenBuffers",false]],"rlcolor3f() (in module raylib)":[[6,"raylib.rlColor3f",false]],"rlcolor4f() (in module raylib)":[[6,"raylib.rlColor4f",false]],"rlcolor4ub() (in module raylib)":[[6,"raylib.rlColor4ub",false]],"rlcolormask() (in module raylib)":[[6,"raylib.rlColorMask",false]],"rlcompileshader() (in module raylib)":[[6,"raylib.rlCompileShader",false]],"rlcomputeshaderdispatch() (in module raylib)":[[6,"raylib.rlComputeShaderDispatch",false]],"rlcopyshaderbuffer() (in module raylib)":[[6,"raylib.rlCopyShaderBuffer",false]],"rlcubemapparameters() (in module raylib)":[[6,"raylib.rlCubemapParameters",false]],"rlcullmode (class in pyray)":[[5,"pyray.rlCullMode",false]],"rlcullmode (in module raylib)":[[6,"raylib.rlCullMode",false]],"rldisablebackfaceculling() (in module raylib)":[[6,"raylib.rlDisableBackfaceCulling",false]],"rldisablecolorblend() (in module raylib)":[[6,"raylib.rlDisableColorBlend",false]],"rldisabledepthmask() (in module raylib)":[[6,"raylib.rlDisableDepthMask",false]],"rldisabledepthtest() (in module raylib)":[[6,"raylib.rlDisableDepthTest",false]],"rldisableframebuffer() (in module raylib)":[[6,"raylib.rlDisableFramebuffer",false]],"rldisablescissortest() (in module raylib)":[[6,"raylib.rlDisableScissorTest",false]],"rldisableshader() (in module raylib)":[[6,"raylib.rlDisableShader",false]],"rldisablesmoothlines() (in module raylib)":[[6,"raylib.rlDisableSmoothLines",false]],"rldisablestereorender() (in module raylib)":[[6,"raylib.rlDisableStereoRender",false]],"rldisabletexture() (in module raylib)":[[6,"raylib.rlDisableTexture",false]],"rldisabletexturecubemap() (in module raylib)":[[6,"raylib.rlDisableTextureCubemap",false]],"rldisablevertexarray() (in module raylib)":[[6,"raylib.rlDisableVertexArray",false]],"rldisablevertexattribute() (in module raylib)":[[6,"raylib.rlDisableVertexAttribute",false]],"rldisablevertexbuffer() (in module raylib)":[[6,"raylib.rlDisableVertexBuffer",false]],"rldisablevertexbufferelement() (in module raylib)":[[6,"raylib.rlDisableVertexBufferElement",false]],"rldisablewiremode() (in module raylib)":[[6,"raylib.rlDisableWireMode",false]],"rldrawcall (class in pyray)":[[5,"pyray.rlDrawCall",false]],"rldrawcall (class in raylib)":[[6,"raylib.rlDrawCall",false]],"rldrawrenderbatch() (in module raylib)":[[6,"raylib.rlDrawRenderBatch",false]],"rldrawrenderbatchactive() (in module raylib)":[[6,"raylib.rlDrawRenderBatchActive",false]],"rldrawvertexarray() (in module raylib)":[[6,"raylib.rlDrawVertexArray",false]],"rldrawvertexarrayelements() (in module raylib)":[[6,"raylib.rlDrawVertexArrayElements",false]],"rldrawvertexarrayelementsinstanced() (in module raylib)":[[6,"raylib.rlDrawVertexArrayElementsInstanced",false]],"rldrawvertexarrayinstanced() (in module raylib)":[[6,"raylib.rlDrawVertexArrayInstanced",false]],"rlenablebackfaceculling() (in module raylib)":[[6,"raylib.rlEnableBackfaceCulling",false]],"rlenablecolorblend() (in module raylib)":[[6,"raylib.rlEnableColorBlend",false]],"rlenabledepthmask() (in module raylib)":[[6,"raylib.rlEnableDepthMask",false]],"rlenabledepthtest() (in module raylib)":[[6,"raylib.rlEnableDepthTest",false]],"rlenableframebuffer() (in module raylib)":[[6,"raylib.rlEnableFramebuffer",false]],"rlenablepointmode() (in module raylib)":[[6,"raylib.rlEnablePointMode",false]],"rlenablescissortest() (in module raylib)":[[6,"raylib.rlEnableScissorTest",false]],"rlenableshader() (in module raylib)":[[6,"raylib.rlEnableShader",false]],"rlenablesmoothlines() (in module raylib)":[[6,"raylib.rlEnableSmoothLines",false]],"rlenablestereorender() (in module raylib)":[[6,"raylib.rlEnableStereoRender",false]],"rlenabletexture() (in module raylib)":[[6,"raylib.rlEnableTexture",false]],"rlenabletexturecubemap() (in module raylib)":[[6,"raylib.rlEnableTextureCubemap",false]],"rlenablevertexarray() (in module raylib)":[[6,"raylib.rlEnableVertexArray",false]],"rlenablevertexattribute() (in module raylib)":[[6,"raylib.rlEnableVertexAttribute",false]],"rlenablevertexbuffer() (in module raylib)":[[6,"raylib.rlEnableVertexBuffer",false]],"rlenablevertexbufferelement() (in module raylib)":[[6,"raylib.rlEnableVertexBufferElement",false]],"rlenablewiremode() (in module raylib)":[[6,"raylib.rlEnableWireMode",false]],"rlend() (in module raylib)":[[6,"raylib.rlEnd",false]],"rlframebufferattach() (in module raylib)":[[6,"raylib.rlFramebufferAttach",false]],"rlframebufferattachtexturetype (class in pyray)":[[5,"pyray.rlFramebufferAttachTextureType",false]],"rlframebufferattachtexturetype (in module raylib)":[[6,"raylib.rlFramebufferAttachTextureType",false]],"rlframebufferattachtype (class in pyray)":[[5,"pyray.rlFramebufferAttachType",false]],"rlframebufferattachtype (in module raylib)":[[6,"raylib.rlFramebufferAttachType",false]],"rlframebuffercomplete() (in module raylib)":[[6,"raylib.rlFramebufferComplete",false]],"rlfrustum() (in module raylib)":[[6,"raylib.rlFrustum",false]],"rlgentexturemipmaps() (in module raylib)":[[6,"raylib.rlGenTextureMipmaps",false]],"rlgetactiveframebuffer() (in module raylib)":[[6,"raylib.rlGetActiveFramebuffer",false]],"rlgetculldistancefar() (in module raylib)":[[6,"raylib.rlGetCullDistanceFar",false]],"rlgetculldistancenear() (in module raylib)":[[6,"raylib.rlGetCullDistanceNear",false]],"rlgetframebufferheight() (in module raylib)":[[6,"raylib.rlGetFramebufferHeight",false]],"rlgetframebufferwidth() (in module raylib)":[[6,"raylib.rlGetFramebufferWidth",false]],"rlgetgltextureformats() (in module raylib)":[[6,"raylib.rlGetGlTextureFormats",false]],"rlgetlinewidth() (in module raylib)":[[6,"raylib.rlGetLineWidth",false]],"rlgetlocationattrib() (in module raylib)":[[6,"raylib.rlGetLocationAttrib",false]],"rlgetlocationuniform() (in module raylib)":[[6,"raylib.rlGetLocationUniform",false]],"rlgetmatrixmodelview() (in module raylib)":[[6,"raylib.rlGetMatrixModelview",false]],"rlgetmatrixprojection() (in module raylib)":[[6,"raylib.rlGetMatrixProjection",false]],"rlgetmatrixprojectionstereo() (in module raylib)":[[6,"raylib.rlGetMatrixProjectionStereo",false]],"rlgetmatrixtransform() (in module raylib)":[[6,"raylib.rlGetMatrixTransform",false]],"rlgetmatrixviewoffsetstereo() (in module raylib)":[[6,"raylib.rlGetMatrixViewOffsetStereo",false]],"rlgetpixelformatname() (in module raylib)":[[6,"raylib.rlGetPixelFormatName",false]],"rlgetshaderbuffersize() (in module raylib)":[[6,"raylib.rlGetShaderBufferSize",false]],"rlgetshaderiddefault() (in module raylib)":[[6,"raylib.rlGetShaderIdDefault",false]],"rlgetshaderlocsdefault() (in module raylib)":[[6,"raylib.rlGetShaderLocsDefault",false]],"rlgettextureiddefault() (in module raylib)":[[6,"raylib.rlGetTextureIdDefault",false]],"rlgetversion() (in module raylib)":[[6,"raylib.rlGetVersion",false]],"rlgl_close() (in module pyray)":[[5,"pyray.rlgl_close",false]],"rlgl_init() (in module pyray)":[[5,"pyray.rlgl_init",false]],"rlglclose() (in module raylib)":[[6,"raylib.rlglClose",false]],"rlglinit() (in module raylib)":[[6,"raylib.rlglInit",false]],"rlglversion (class in pyray)":[[5,"pyray.rlGlVersion",false]],"rlglversion (in module raylib)":[[6,"raylib.rlGlVersion",false]],"rlisstereorenderenabled() (in module raylib)":[[6,"raylib.rlIsStereoRenderEnabled",false]],"rlloadcomputeshaderprogram() (in module raylib)":[[6,"raylib.rlLoadComputeShaderProgram",false]],"rlloaddrawcube() (in module raylib)":[[6,"raylib.rlLoadDrawCube",false]],"rlloaddrawquad() (in module raylib)":[[6,"raylib.rlLoadDrawQuad",false]],"rlloadextensions() (in module raylib)":[[6,"raylib.rlLoadExtensions",false]],"rlloadframebuffer() (in module raylib)":[[6,"raylib.rlLoadFramebuffer",false]],"rlloadidentity() (in module raylib)":[[6,"raylib.rlLoadIdentity",false]],"rlloadrenderbatch() (in module raylib)":[[6,"raylib.rlLoadRenderBatch",false]],"rlloadshaderbuffer() (in module raylib)":[[6,"raylib.rlLoadShaderBuffer",false]],"rlloadshadercode() (in module raylib)":[[6,"raylib.rlLoadShaderCode",false]],"rlloadshaderprogram() (in module raylib)":[[6,"raylib.rlLoadShaderProgram",false]],"rlloadtexture() (in module raylib)":[[6,"raylib.rlLoadTexture",false]],"rlloadtexturecubemap() (in module raylib)":[[6,"raylib.rlLoadTextureCubemap",false]],"rlloadtexturedepth() (in module raylib)":[[6,"raylib.rlLoadTextureDepth",false]],"rlloadvertexarray() (in module raylib)":[[6,"raylib.rlLoadVertexArray",false]],"rlloadvertexbuffer() (in module raylib)":[[6,"raylib.rlLoadVertexBuffer",false]],"rlloadvertexbufferelement() (in module raylib)":[[6,"raylib.rlLoadVertexBufferElement",false]],"rlmatrixmode() (in module raylib)":[[6,"raylib.rlMatrixMode",false]],"rlmultmatrixf() (in module raylib)":[[6,"raylib.rlMultMatrixf",false]],"rlnormal3f() (in module raylib)":[[6,"raylib.rlNormal3f",false]],"rlortho() (in module raylib)":[[6,"raylib.rlOrtho",false]],"rlpixelformat (class in pyray)":[[5,"pyray.rlPixelFormat",false]],"rlpixelformat (in module raylib)":[[6,"raylib.rlPixelFormat",false]],"rlpopmatrix() (in module raylib)":[[6,"raylib.rlPopMatrix",false]],"rlpushmatrix() (in module raylib)":[[6,"raylib.rlPushMatrix",false]],"rlreadscreenpixels() (in module raylib)":[[6,"raylib.rlReadScreenPixels",false]],"rlreadshaderbuffer() (in module raylib)":[[6,"raylib.rlReadShaderBuffer",false]],"rlreadtexturepixels() (in module raylib)":[[6,"raylib.rlReadTexturePixels",false]],"rlrenderbatch (class in pyray)":[[5,"pyray.rlRenderBatch",false]],"rlrenderbatch (class in raylib)":[[6,"raylib.rlRenderBatch",false]],"rlrotatef() (in module raylib)":[[6,"raylib.rlRotatef",false]],"rlscalef() (in module raylib)":[[6,"raylib.rlScalef",false]],"rlscissor() (in module raylib)":[[6,"raylib.rlScissor",false]],"rlsetblendfactors() (in module raylib)":[[6,"raylib.rlSetBlendFactors",false]],"rlsetblendfactorsseparate() (in module raylib)":[[6,"raylib.rlSetBlendFactorsSeparate",false]],"rlsetblendmode() (in module raylib)":[[6,"raylib.rlSetBlendMode",false]],"rlsetclipplanes() (in module raylib)":[[6,"raylib.rlSetClipPlanes",false]],"rlsetcullface() (in module raylib)":[[6,"raylib.rlSetCullFace",false]],"rlsetframebufferheight() (in module raylib)":[[6,"raylib.rlSetFramebufferHeight",false]],"rlsetframebufferwidth() (in module raylib)":[[6,"raylib.rlSetFramebufferWidth",false]],"rlsetlinewidth() (in module raylib)":[[6,"raylib.rlSetLineWidth",false]],"rlsetmatrixmodelview() (in module raylib)":[[6,"raylib.rlSetMatrixModelview",false]],"rlsetmatrixprojection() (in module raylib)":[[6,"raylib.rlSetMatrixProjection",false]],"rlsetmatrixprojectionstereo() (in module raylib)":[[6,"raylib.rlSetMatrixProjectionStereo",false]],"rlsetmatrixviewoffsetstereo() (in module raylib)":[[6,"raylib.rlSetMatrixViewOffsetStereo",false]],"rlsetrenderbatchactive() (in module raylib)":[[6,"raylib.rlSetRenderBatchActive",false]],"rlsetshader() (in module raylib)":[[6,"raylib.rlSetShader",false]],"rlsettexture() (in module raylib)":[[6,"raylib.rlSetTexture",false]],"rlsetuniform() (in module raylib)":[[6,"raylib.rlSetUniform",false]],"rlsetuniformmatrices() (in module raylib)":[[6,"raylib.rlSetUniformMatrices",false]],"rlsetuniformmatrix() (in module raylib)":[[6,"raylib.rlSetUniformMatrix",false]],"rlsetuniformsampler() (in module raylib)":[[6,"raylib.rlSetUniformSampler",false]],"rlsetvertexattribute() (in module raylib)":[[6,"raylib.rlSetVertexAttribute",false]],"rlsetvertexattributedefault() (in module raylib)":[[6,"raylib.rlSetVertexAttributeDefault",false]],"rlsetvertexattributedivisor() (in module raylib)":[[6,"raylib.rlSetVertexAttributeDivisor",false]],"rlshaderattributedatatype (class in pyray)":[[5,"pyray.rlShaderAttributeDataType",false]],"rlshaderattributedatatype (in module raylib)":[[6,"raylib.rlShaderAttributeDataType",false]],"rlshaderlocationindex (class in pyray)":[[5,"pyray.rlShaderLocationIndex",false]],"rlshaderlocationindex (in module raylib)":[[6,"raylib.rlShaderLocationIndex",false]],"rlshaderuniformdatatype (class in pyray)":[[5,"pyray.rlShaderUniformDataType",false]],"rlshaderuniformdatatype (in module raylib)":[[6,"raylib.rlShaderUniformDataType",false]],"rltexcoord2f() (in module raylib)":[[6,"raylib.rlTexCoord2f",false]],"rltexturefilter (class in pyray)":[[5,"pyray.rlTextureFilter",false]],"rltexturefilter (in module raylib)":[[6,"raylib.rlTextureFilter",false]],"rltextureparameters() (in module raylib)":[[6,"raylib.rlTextureParameters",false]],"rltraceloglevel (class in pyray)":[[5,"pyray.rlTraceLogLevel",false]],"rltraceloglevel (in module raylib)":[[6,"raylib.rlTraceLogLevel",false]],"rltranslatef() (in module raylib)":[[6,"raylib.rlTranslatef",false]],"rlunloadframebuffer() (in module raylib)":[[6,"raylib.rlUnloadFramebuffer",false]],"rlunloadrenderbatch() (in module raylib)":[[6,"raylib.rlUnloadRenderBatch",false]],"rlunloadshaderbuffer() (in module raylib)":[[6,"raylib.rlUnloadShaderBuffer",false]],"rlunloadshaderprogram() (in module raylib)":[[6,"raylib.rlUnloadShaderProgram",false]],"rlunloadtexture() (in module raylib)":[[6,"raylib.rlUnloadTexture",false]],"rlunloadvertexarray() (in module raylib)":[[6,"raylib.rlUnloadVertexArray",false]],"rlunloadvertexbuffer() (in module raylib)":[[6,"raylib.rlUnloadVertexBuffer",false]],"rlupdateshaderbuffer() (in module raylib)":[[6,"raylib.rlUpdateShaderBuffer",false]],"rlupdatetexture() (in module raylib)":[[6,"raylib.rlUpdateTexture",false]],"rlupdatevertexbuffer() (in module raylib)":[[6,"raylib.rlUpdateVertexBuffer",false]],"rlupdatevertexbufferelements() (in module raylib)":[[6,"raylib.rlUpdateVertexBufferElements",false]],"rlvertex2f() (in module raylib)":[[6,"raylib.rlVertex2f",false]],"rlvertex2i() (in module raylib)":[[6,"raylib.rlVertex2i",false]],"rlvertex3f() (in module raylib)":[[6,"raylib.rlVertex3f",false]],"rlvertexbuffer (class in pyray)":[[5,"pyray.rlVertexBuffer",false]],"rlvertexbuffer (class in raylib)":[[6,"raylib.rlVertexBuffer",false]],"rlviewport() (in module raylib)":[[6,"raylib.rlViewport",false]],"rotation (pyray.camera2d attribute)":[[5,"pyray.Camera2D.rotation",false]],"rotation (pyray.transform attribute)":[[5,"pyray.Transform.rotation",false]],"rotation (raylib.camera2d attribute)":[[6,"raylib.Camera2D.rotation",false]],"rotation (raylib.transform attribute)":[[6,"raylib.Transform.rotation",false]],"samplerate (pyray.audiostream attribute)":[[5,"pyray.AudioStream.sampleRate",false]],"samplerate (pyray.wave attribute)":[[5,"pyray.Wave.sampleRate",false]],"samplerate (raylib.audiostream attribute)":[[6,"raylib.AudioStream.sampleRate",false]],"samplerate (raylib.wave attribute)":[[6,"raylib.Wave.sampleRate",false]],"samplesize (pyray.audiostream attribute)":[[5,"pyray.AudioStream.sampleSize",false]],"samplesize (pyray.wave attribute)":[[5,"pyray.Wave.sampleSize",false]],"samplesize (raylib.audiostream attribute)":[[6,"raylib.AudioStream.sampleSize",false]],"samplesize (raylib.wave attribute)":[[6,"raylib.Wave.sampleSize",false]],"save_file_data() (in module pyray)":[[5,"pyray.save_file_data",false]],"save_file_text() (in module pyray)":[[5,"pyray.save_file_text",false]],"savefiledata() (in module raylib)":[[6,"raylib.SaveFileData",false]],"savefiletext() (in module raylib)":[[6,"raylib.SaveFileText",false]],"scale (pyray.transform attribute)":[[5,"pyray.Transform.scale",false]],"scale (pyray.vrstereoconfig attribute)":[[5,"pyray.VrStereoConfig.scale",false]],"scale (raylib.transform attribute)":[[6,"raylib.Transform.scale",false]],"scale (raylib.vrstereoconfig attribute)":[[6,"raylib.VrStereoConfig.scale",false]],"scalein (pyray.vrstereoconfig attribute)":[[5,"pyray.VrStereoConfig.scaleIn",false]],"scalein (raylib.vrstereoconfig attribute)":[[6,"raylib.VrStereoConfig.scaleIn",false]],"scroll_padding (in module raylib)":[[6,"raylib.SCROLL_PADDING",false]],"scroll_padding (pyray.guiscrollbarproperty attribute)":[[5,"pyray.GuiScrollBarProperty.SCROLL_PADDING",false]],"scroll_slider_padding (in module raylib)":[[6,"raylib.SCROLL_SLIDER_PADDING",false]],"scroll_slider_padding (pyray.guiscrollbarproperty attribute)":[[5,"pyray.GuiScrollBarProperty.SCROLL_SLIDER_PADDING",false]],"scroll_slider_size (in module raylib)":[[6,"raylib.SCROLL_SLIDER_SIZE",false]],"scroll_slider_size (pyray.guiscrollbarproperty attribute)":[[5,"pyray.GuiScrollBarProperty.SCROLL_SLIDER_SIZE",false]],"scroll_speed (in module raylib)":[[6,"raylib.SCROLL_SPEED",false]],"scroll_speed (pyray.guiscrollbarproperty attribute)":[[5,"pyray.GuiScrollBarProperty.SCROLL_SPEED",false]],"scrollbar (in module raylib)":[[6,"raylib.SCROLLBAR",false]],"scrollbar (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.SCROLLBAR",false]],"scrollbar_side (in module raylib)":[[6,"raylib.SCROLLBAR_SIDE",false]],"scrollbar_side (pyray.guilistviewproperty attribute)":[[5,"pyray.GuiListViewProperty.SCROLLBAR_SIDE",false]],"scrollbar_width (in module raylib)":[[6,"raylib.SCROLLBAR_WIDTH",false]],"scrollbar_width (pyray.guilistviewproperty attribute)":[[5,"pyray.GuiListViewProperty.SCROLLBAR_WIDTH",false]],"seek_music_stream() (in module pyray)":[[5,"pyray.seek_music_stream",false]],"seekmusicstream() (in module raylib)":[[6,"raylib.SeekMusicStream",false]],"set_audio_stream_buffer_size_default() (in module pyray)":[[5,"pyray.set_audio_stream_buffer_size_default",false]],"set_audio_stream_callback() (in module pyray)":[[5,"pyray.set_audio_stream_callback",false]],"set_audio_stream_pan() (in module pyray)":[[5,"pyray.set_audio_stream_pan",false]],"set_audio_stream_pitch() (in module pyray)":[[5,"pyray.set_audio_stream_pitch",false]],"set_audio_stream_volume() (in module pyray)":[[5,"pyray.set_audio_stream_volume",false]],"set_automation_event_base_frame() (in module pyray)":[[5,"pyray.set_automation_event_base_frame",false]],"set_automation_event_list() (in module pyray)":[[5,"pyray.set_automation_event_list",false]],"set_clipboard_text() (in module pyray)":[[5,"pyray.set_clipboard_text",false]],"set_config_flags() (in module pyray)":[[5,"pyray.set_config_flags",false]],"set_exit_key() (in module pyray)":[[5,"pyray.set_exit_key",false]],"set_gamepad_mappings() (in module pyray)":[[5,"pyray.set_gamepad_mappings",false]],"set_gamepad_vibration() (in module pyray)":[[5,"pyray.set_gamepad_vibration",false]],"set_gestures_enabled() (in module pyray)":[[5,"pyray.set_gestures_enabled",false]],"set_load_file_data_callback() (in module pyray)":[[5,"pyray.set_load_file_data_callback",false]],"set_load_file_text_callback() (in module pyray)":[[5,"pyray.set_load_file_text_callback",false]],"set_master_volume() (in module pyray)":[[5,"pyray.set_master_volume",false]],"set_material_texture() (in module pyray)":[[5,"pyray.set_material_texture",false]],"set_model_mesh_material() (in module pyray)":[[5,"pyray.set_model_mesh_material",false]],"set_mouse_cursor() (in module pyray)":[[5,"pyray.set_mouse_cursor",false]],"set_mouse_offset() (in module pyray)":[[5,"pyray.set_mouse_offset",false]],"set_mouse_position() (in module pyray)":[[5,"pyray.set_mouse_position",false]],"set_mouse_scale() (in module pyray)":[[5,"pyray.set_mouse_scale",false]],"set_music_pan() (in module pyray)":[[5,"pyray.set_music_pan",false]],"set_music_pitch() (in module pyray)":[[5,"pyray.set_music_pitch",false]],"set_music_volume() (in module pyray)":[[5,"pyray.set_music_volume",false]],"set_physics_body_rotation() (in module pyray)":[[5,"pyray.set_physics_body_rotation",false]],"set_physics_gravity() (in module pyray)":[[5,"pyray.set_physics_gravity",false]],"set_physics_time_step() (in module pyray)":[[5,"pyray.set_physics_time_step",false]],"set_pixel_color() (in module pyray)":[[5,"pyray.set_pixel_color",false]],"set_random_seed() (in module pyray)":[[5,"pyray.set_random_seed",false]],"set_save_file_data_callback() (in module pyray)":[[5,"pyray.set_save_file_data_callback",false]],"set_save_file_text_callback() (in module pyray)":[[5,"pyray.set_save_file_text_callback",false]],"set_shader_value() (in module pyray)":[[5,"pyray.set_shader_value",false]],"set_shader_value_matrix() (in module pyray)":[[5,"pyray.set_shader_value_matrix",false]],"set_shader_value_texture() (in module pyray)":[[5,"pyray.set_shader_value_texture",false]],"set_shader_value_v() (in module pyray)":[[5,"pyray.set_shader_value_v",false]],"set_shapes_texture() (in module pyray)":[[5,"pyray.set_shapes_texture",false]],"set_sound_pan() (in module pyray)":[[5,"pyray.set_sound_pan",false]],"set_sound_pitch() (in module pyray)":[[5,"pyray.set_sound_pitch",false]],"set_sound_volume() (in module pyray)":[[5,"pyray.set_sound_volume",false]],"set_target_fps() (in module pyray)":[[5,"pyray.set_target_fps",false]],"set_text_line_spacing() (in module pyray)":[[5,"pyray.set_text_line_spacing",false]],"set_texture_filter() (in module pyray)":[[5,"pyray.set_texture_filter",false]],"set_texture_wrap() (in module pyray)":[[5,"pyray.set_texture_wrap",false]],"set_trace_log_callback() (in module pyray)":[[5,"pyray.set_trace_log_callback",false]],"set_trace_log_level() (in module pyray)":[[5,"pyray.set_trace_log_level",false]],"set_window_focused() (in module pyray)":[[5,"pyray.set_window_focused",false]],"set_window_icon() (in module pyray)":[[5,"pyray.set_window_icon",false]],"set_window_icons() (in module pyray)":[[5,"pyray.set_window_icons",false]],"set_window_max_size() (in module pyray)":[[5,"pyray.set_window_max_size",false]],"set_window_min_size() (in module pyray)":[[5,"pyray.set_window_min_size",false]],"set_window_monitor() (in module pyray)":[[5,"pyray.set_window_monitor",false]],"set_window_opacity() (in module pyray)":[[5,"pyray.set_window_opacity",false]],"set_window_position() (in module pyray)":[[5,"pyray.set_window_position",false]],"set_window_size() (in module pyray)":[[5,"pyray.set_window_size",false]],"set_window_state() (in module pyray)":[[5,"pyray.set_window_state",false]],"set_window_title() (in module pyray)":[[5,"pyray.set_window_title",false]],"setaudiostreambuffersizedefault() (in module raylib)":[[6,"raylib.SetAudioStreamBufferSizeDefault",false]],"setaudiostreamcallback() (in module raylib)":[[6,"raylib.SetAudioStreamCallback",false]],"setaudiostreampan() (in module raylib)":[[6,"raylib.SetAudioStreamPan",false]],"setaudiostreampitch() (in module raylib)":[[6,"raylib.SetAudioStreamPitch",false]],"setaudiostreamvolume() (in module raylib)":[[6,"raylib.SetAudioStreamVolume",false]],"setautomationeventbaseframe() (in module raylib)":[[6,"raylib.SetAutomationEventBaseFrame",false]],"setautomationeventlist() (in module raylib)":[[6,"raylib.SetAutomationEventList",false]],"setclipboardtext() (in module raylib)":[[6,"raylib.SetClipboardText",false]],"setconfigflags() (in module raylib)":[[6,"raylib.SetConfigFlags",false]],"setexitkey() (in module raylib)":[[6,"raylib.SetExitKey",false]],"setgamepadmappings() (in module raylib)":[[6,"raylib.SetGamepadMappings",false]],"setgamepadvibration() (in module raylib)":[[6,"raylib.SetGamepadVibration",false]],"setgesturesenabled() (in module raylib)":[[6,"raylib.SetGesturesEnabled",false]],"setloadfiledatacallback() (in module raylib)":[[6,"raylib.SetLoadFileDataCallback",false]],"setloadfiletextcallback() (in module raylib)":[[6,"raylib.SetLoadFileTextCallback",false]],"setmastervolume() (in module raylib)":[[6,"raylib.SetMasterVolume",false]],"setmaterialtexture() (in module raylib)":[[6,"raylib.SetMaterialTexture",false]],"setmodelmeshmaterial() (in module raylib)":[[6,"raylib.SetModelMeshMaterial",false]],"setmousecursor() (in module raylib)":[[6,"raylib.SetMouseCursor",false]],"setmouseoffset() (in module raylib)":[[6,"raylib.SetMouseOffset",false]],"setmouseposition() (in module raylib)":[[6,"raylib.SetMousePosition",false]],"setmousescale() (in module raylib)":[[6,"raylib.SetMouseScale",false]],"setmusicpan() (in module raylib)":[[6,"raylib.SetMusicPan",false]],"setmusicpitch() (in module raylib)":[[6,"raylib.SetMusicPitch",false]],"setmusicvolume() (in module raylib)":[[6,"raylib.SetMusicVolume",false]],"setphysicsbodyrotation() (in module raylib)":[[6,"raylib.SetPhysicsBodyRotation",false]],"setphysicsgravity() (in module raylib)":[[6,"raylib.SetPhysicsGravity",false]],"setphysicstimestep() (in module raylib)":[[6,"raylib.SetPhysicsTimeStep",false]],"setpixelcolor() (in module raylib)":[[6,"raylib.SetPixelColor",false]],"setrandomseed() (in module raylib)":[[6,"raylib.SetRandomSeed",false]],"setsavefiledatacallback() (in module raylib)":[[6,"raylib.SetSaveFileDataCallback",false]],"setsavefiletextcallback() (in module raylib)":[[6,"raylib.SetSaveFileTextCallback",false]],"setshadervalue() (in module raylib)":[[6,"raylib.SetShaderValue",false]],"setshadervaluematrix() (in module raylib)":[[6,"raylib.SetShaderValueMatrix",false]],"setshadervaluetexture() (in module raylib)":[[6,"raylib.SetShaderValueTexture",false]],"setshadervaluev() (in module raylib)":[[6,"raylib.SetShaderValueV",false]],"setshapestexture() (in module raylib)":[[6,"raylib.SetShapesTexture",false]],"setsoundpan() (in module raylib)":[[6,"raylib.SetSoundPan",false]],"setsoundpitch() (in module raylib)":[[6,"raylib.SetSoundPitch",false]],"setsoundvolume() (in module raylib)":[[6,"raylib.SetSoundVolume",false]],"settargetfps() (in module raylib)":[[6,"raylib.SetTargetFPS",false]],"settextlinespacing() (in module raylib)":[[6,"raylib.SetTextLineSpacing",false]],"settexturefilter() (in module raylib)":[[6,"raylib.SetTextureFilter",false]],"settexturewrap() (in module raylib)":[[6,"raylib.SetTextureWrap",false]],"settracelogcallback() (in module raylib)":[[6,"raylib.SetTraceLogCallback",false]],"settraceloglevel() (in module raylib)":[[6,"raylib.SetTraceLogLevel",false]],"setwindowfocused() (in module raylib)":[[6,"raylib.SetWindowFocused",false]],"setwindowicon() (in module raylib)":[[6,"raylib.SetWindowIcon",false]],"setwindowicons() (in module raylib)":[[6,"raylib.SetWindowIcons",false]],"setwindowmaxsize() (in module raylib)":[[6,"raylib.SetWindowMaxSize",false]],"setwindowminsize() (in module raylib)":[[6,"raylib.SetWindowMinSize",false]],"setwindowmonitor() (in module raylib)":[[6,"raylib.SetWindowMonitor",false]],"setwindowopacity() (in module raylib)":[[6,"raylib.SetWindowOpacity",false]],"setwindowposition() (in module raylib)":[[6,"raylib.SetWindowPosition",false]],"setwindowsize() (in module raylib)":[[6,"raylib.SetWindowSize",false]],"setwindowstate() (in module raylib)":[[6,"raylib.SetWindowState",false]],"setwindowtitle() (in module raylib)":[[6,"raylib.SetWindowTitle",false]],"shader (class in pyray)":[[5,"pyray.Shader",false]],"shader (class in raylib)":[[6,"raylib.Shader",false]],"shader (pyray.material attribute)":[[5,"pyray.Material.shader",false]],"shader (raylib.material attribute)":[[6,"raylib.Material.shader",false]],"shader_attrib_float (in module raylib)":[[6,"raylib.SHADER_ATTRIB_FLOAT",false]],"shader_attrib_float (pyray.shaderattributedatatype attribute)":[[5,"pyray.ShaderAttributeDataType.SHADER_ATTRIB_FLOAT",false]],"shader_attrib_vec2 (in module raylib)":[[6,"raylib.SHADER_ATTRIB_VEC2",false]],"shader_attrib_vec2 (pyray.shaderattributedatatype attribute)":[[5,"pyray.ShaderAttributeDataType.SHADER_ATTRIB_VEC2",false]],"shader_attrib_vec3 (in module raylib)":[[6,"raylib.SHADER_ATTRIB_VEC3",false]],"shader_attrib_vec3 (pyray.shaderattributedatatype attribute)":[[5,"pyray.ShaderAttributeDataType.SHADER_ATTRIB_VEC3",false]],"shader_attrib_vec4 (in module raylib)":[[6,"raylib.SHADER_ATTRIB_VEC4",false]],"shader_attrib_vec4 (pyray.shaderattributedatatype attribute)":[[5,"pyray.ShaderAttributeDataType.SHADER_ATTRIB_VEC4",false]],"shader_loc_bone_matrices (in module raylib)":[[6,"raylib.SHADER_LOC_BONE_MATRICES",false]],"shader_loc_bone_matrices (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_BONE_MATRICES",false]],"shader_loc_color_ambient (in module raylib)":[[6,"raylib.SHADER_LOC_COLOR_AMBIENT",false]],"shader_loc_color_ambient (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_COLOR_AMBIENT",false]],"shader_loc_color_diffuse (in module raylib)":[[6,"raylib.SHADER_LOC_COLOR_DIFFUSE",false]],"shader_loc_color_diffuse (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_COLOR_DIFFUSE",false]],"shader_loc_color_specular (in module raylib)":[[6,"raylib.SHADER_LOC_COLOR_SPECULAR",false]],"shader_loc_color_specular (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_COLOR_SPECULAR",false]],"shader_loc_map_albedo (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_ALBEDO",false]],"shader_loc_map_albedo (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_ALBEDO",false]],"shader_loc_map_brdf (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_BRDF",false]],"shader_loc_map_brdf (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_BRDF",false]],"shader_loc_map_cubemap (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_CUBEMAP",false]],"shader_loc_map_cubemap (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_CUBEMAP",false]],"shader_loc_map_emission (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_EMISSION",false]],"shader_loc_map_emission (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_EMISSION",false]],"shader_loc_map_height (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_HEIGHT",false]],"shader_loc_map_height (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_HEIGHT",false]],"shader_loc_map_irradiance (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_IRRADIANCE",false]],"shader_loc_map_irradiance (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_IRRADIANCE",false]],"shader_loc_map_metalness (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_METALNESS",false]],"shader_loc_map_metalness (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_METALNESS",false]],"shader_loc_map_normal (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_NORMAL",false]],"shader_loc_map_normal (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_NORMAL",false]],"shader_loc_map_occlusion (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_OCCLUSION",false]],"shader_loc_map_occlusion (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_OCCLUSION",false]],"shader_loc_map_prefilter (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_PREFILTER",false]],"shader_loc_map_prefilter (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_PREFILTER",false]],"shader_loc_map_roughness (in module raylib)":[[6,"raylib.SHADER_LOC_MAP_ROUGHNESS",false]],"shader_loc_map_roughness (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MAP_ROUGHNESS",false]],"shader_loc_matrix_model (in module raylib)":[[6,"raylib.SHADER_LOC_MATRIX_MODEL",false]],"shader_loc_matrix_model (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MATRIX_MODEL",false]],"shader_loc_matrix_mvp (in module raylib)":[[6,"raylib.SHADER_LOC_MATRIX_MVP",false]],"shader_loc_matrix_mvp (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MATRIX_MVP",false]],"shader_loc_matrix_normal (in module raylib)":[[6,"raylib.SHADER_LOC_MATRIX_NORMAL",false]],"shader_loc_matrix_normal (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MATRIX_NORMAL",false]],"shader_loc_matrix_projection (in module raylib)":[[6,"raylib.SHADER_LOC_MATRIX_PROJECTION",false]],"shader_loc_matrix_projection (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MATRIX_PROJECTION",false]],"shader_loc_matrix_view (in module raylib)":[[6,"raylib.SHADER_LOC_MATRIX_VIEW",false]],"shader_loc_matrix_view (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_MATRIX_VIEW",false]],"shader_loc_vector_view (in module raylib)":[[6,"raylib.SHADER_LOC_VECTOR_VIEW",false]],"shader_loc_vector_view (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_VECTOR_VIEW",false]],"shader_loc_vertex_boneids (in module raylib)":[[6,"raylib.SHADER_LOC_VERTEX_BONEIDS",false]],"shader_loc_vertex_boneids (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_VERTEX_BONEIDS",false]],"shader_loc_vertex_boneweights (in module raylib)":[[6,"raylib.SHADER_LOC_VERTEX_BONEWEIGHTS",false]],"shader_loc_vertex_boneweights (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_VERTEX_BONEWEIGHTS",false]],"shader_loc_vertex_color (in module raylib)":[[6,"raylib.SHADER_LOC_VERTEX_COLOR",false]],"shader_loc_vertex_color (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_VERTEX_COLOR",false]],"shader_loc_vertex_normal (in module raylib)":[[6,"raylib.SHADER_LOC_VERTEX_NORMAL",false]],"shader_loc_vertex_normal (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_VERTEX_NORMAL",false]],"shader_loc_vertex_position (in module raylib)":[[6,"raylib.SHADER_LOC_VERTEX_POSITION",false]],"shader_loc_vertex_position (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_VERTEX_POSITION",false]],"shader_loc_vertex_tangent (in module raylib)":[[6,"raylib.SHADER_LOC_VERTEX_TANGENT",false]],"shader_loc_vertex_tangent (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_VERTEX_TANGENT",false]],"shader_loc_vertex_texcoord01 (in module raylib)":[[6,"raylib.SHADER_LOC_VERTEX_TEXCOORD01",false]],"shader_loc_vertex_texcoord01 (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_VERTEX_TEXCOORD01",false]],"shader_loc_vertex_texcoord02 (in module raylib)":[[6,"raylib.SHADER_LOC_VERTEX_TEXCOORD02",false]],"shader_loc_vertex_texcoord02 (pyray.shaderlocationindex attribute)":[[5,"pyray.ShaderLocationIndex.SHADER_LOC_VERTEX_TEXCOORD02",false]],"shader_uniform_float (in module raylib)":[[6,"raylib.SHADER_UNIFORM_FLOAT",false]],"shader_uniform_float (pyray.shaderuniformdatatype attribute)":[[5,"pyray.ShaderUniformDataType.SHADER_UNIFORM_FLOAT",false]],"shader_uniform_int (in module raylib)":[[6,"raylib.SHADER_UNIFORM_INT",false]],"shader_uniform_int (pyray.shaderuniformdatatype attribute)":[[5,"pyray.ShaderUniformDataType.SHADER_UNIFORM_INT",false]],"shader_uniform_ivec2 (in module raylib)":[[6,"raylib.SHADER_UNIFORM_IVEC2",false]],"shader_uniform_ivec2 (pyray.shaderuniformdatatype attribute)":[[5,"pyray.ShaderUniformDataType.SHADER_UNIFORM_IVEC2",false]],"shader_uniform_ivec3 (in module raylib)":[[6,"raylib.SHADER_UNIFORM_IVEC3",false]],"shader_uniform_ivec3 (pyray.shaderuniformdatatype attribute)":[[5,"pyray.ShaderUniformDataType.SHADER_UNIFORM_IVEC3",false]],"shader_uniform_ivec4 (in module raylib)":[[6,"raylib.SHADER_UNIFORM_IVEC4",false]],"shader_uniform_ivec4 (pyray.shaderuniformdatatype attribute)":[[5,"pyray.ShaderUniformDataType.SHADER_UNIFORM_IVEC4",false]],"shader_uniform_sampler2d (in module raylib)":[[6,"raylib.SHADER_UNIFORM_SAMPLER2D",false]],"shader_uniform_sampler2d (pyray.shaderuniformdatatype attribute)":[[5,"pyray.ShaderUniformDataType.SHADER_UNIFORM_SAMPLER2D",false]],"shader_uniform_vec2 (in module raylib)":[[6,"raylib.SHADER_UNIFORM_VEC2",false]],"shader_uniform_vec2 (pyray.shaderuniformdatatype attribute)":[[5,"pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC2",false]],"shader_uniform_vec3 (in module raylib)":[[6,"raylib.SHADER_UNIFORM_VEC3",false]],"shader_uniform_vec3 (pyray.shaderuniformdatatype attribute)":[[5,"pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC3",false]],"shader_uniform_vec4 (in module raylib)":[[6,"raylib.SHADER_UNIFORM_VEC4",false]],"shader_uniform_vec4 (pyray.shaderuniformdatatype attribute)":[[5,"pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC4",false]],"shaderattributedatatype (class in pyray)":[[5,"pyray.ShaderAttributeDataType",false]],"shaderattributedatatype (in module raylib)":[[6,"raylib.ShaderAttributeDataType",false]],"shaderlocationindex (class in pyray)":[[5,"pyray.ShaderLocationIndex",false]],"shaderlocationindex (in module raylib)":[[6,"raylib.ShaderLocationIndex",false]],"shaderuniformdatatype (class in pyray)":[[5,"pyray.ShaderUniformDataType",false]],"shaderuniformdatatype (in module raylib)":[[6,"raylib.ShaderUniformDataType",false]],"shape (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.shape",false]],"shape (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.shape",false]],"show_cursor() (in module pyray)":[[5,"pyray.show_cursor",false]],"showcursor() (in module raylib)":[[6,"raylib.ShowCursor",false]],"size (raylib.glfwgammaramp attribute)":[[6,"raylib.GLFWgammaramp.size",false]],"skyblue (in module pyray)":[[5,"pyray.SKYBLUE",false]],"skyblue (in module raylib)":[[6,"raylib.SKYBLUE",false]],"slider (in module raylib)":[[6,"raylib.SLIDER",false]],"slider (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.SLIDER",false]],"slider_padding (in module raylib)":[[6,"raylib.SLIDER_PADDING",false]],"slider_padding (pyray.guisliderproperty attribute)":[[5,"pyray.GuiSliderProperty.SLIDER_PADDING",false]],"slider_width (in module raylib)":[[6,"raylib.SLIDER_WIDTH",false]],"slider_width (pyray.guisliderproperty attribute)":[[5,"pyray.GuiSliderProperty.SLIDER_WIDTH",false]],"sound (class in pyray)":[[5,"pyray.Sound",false]],"sound (class in raylib)":[[6,"raylib.Sound",false]],"source (pyray.npatchinfo attribute)":[[5,"pyray.NPatchInfo.source",false]],"source (raylib.npatchinfo attribute)":[[6,"raylib.NPatchInfo.source",false]],"spin_button_spacing (in module raylib)":[[6,"raylib.SPIN_BUTTON_SPACING",false]],"spin_button_spacing (pyray.guispinnerproperty attribute)":[[5,"pyray.GuiSpinnerProperty.SPIN_BUTTON_SPACING",false]],"spin_button_width (in module raylib)":[[6,"raylib.SPIN_BUTTON_WIDTH",false]],"spin_button_width (pyray.guispinnerproperty attribute)":[[5,"pyray.GuiSpinnerProperty.SPIN_BUTTON_WIDTH",false]],"spinner (in module raylib)":[[6,"raylib.SPINNER",false]],"spinner (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.SPINNER",false]],"start_automation_event_recording() (in module pyray)":[[5,"pyray.start_automation_event_recording",false]],"startautomationeventrecording() (in module raylib)":[[6,"raylib.StartAutomationEventRecording",false]],"state_disabled (in module raylib)":[[6,"raylib.STATE_DISABLED",false]],"state_disabled (pyray.guistate attribute)":[[5,"pyray.GuiState.STATE_DISABLED",false]],"state_focused (in module raylib)":[[6,"raylib.STATE_FOCUSED",false]],"state_focused (pyray.guistate attribute)":[[5,"pyray.GuiState.STATE_FOCUSED",false]],"state_normal (in module raylib)":[[6,"raylib.STATE_NORMAL",false]],"state_normal (pyray.guistate attribute)":[[5,"pyray.GuiState.STATE_NORMAL",false]],"state_pressed (in module raylib)":[[6,"raylib.STATE_PRESSED",false]],"state_pressed (pyray.guistate attribute)":[[5,"pyray.GuiState.STATE_PRESSED",false]],"staticfriction (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.staticFriction",false]],"staticfriction (pyray.physicsmanifolddata attribute)":[[5,"pyray.PhysicsManifoldData.staticFriction",false]],"staticfriction (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.staticFriction",false]],"staticfriction (raylib.physicsmanifolddata attribute)":[[6,"raylib.PhysicsManifoldData.staticFriction",false]],"statusbar (in module raylib)":[[6,"raylib.STATUSBAR",false]],"statusbar (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.STATUSBAR",false]],"stop_audio_stream() (in module pyray)":[[5,"pyray.stop_audio_stream",false]],"stop_automation_event_recording() (in module pyray)":[[5,"pyray.stop_automation_event_recording",false]],"stop_music_stream() (in module pyray)":[[5,"pyray.stop_music_stream",false]],"stop_sound() (in module pyray)":[[5,"pyray.stop_sound",false]],"stopaudiostream() (in module raylib)":[[6,"raylib.StopAudioStream",false]],"stopautomationeventrecording() (in module raylib)":[[6,"raylib.StopAutomationEventRecording",false]],"stopmusicstream() (in module raylib)":[[6,"raylib.StopMusicStream",false]],"stopsound() (in module raylib)":[[6,"raylib.StopSound",false]],"stream (pyray.music attribute)":[[5,"pyray.Music.stream",false]],"stream (pyray.sound attribute)":[[5,"pyray.Sound.stream",false]],"stream (raylib.music attribute)":[[6,"raylib.Music.stream",false]],"stream (raylib.sound attribute)":[[6,"raylib.Sound.stream",false]],"struct (class in raylib)":[[6,"raylib.struct",false]],"swap_screen_buffer() (in module pyray)":[[5,"pyray.swap_screen_buffer",false]],"swapscreenbuffer() (in module raylib)":[[6,"raylib.SwapScreenBuffer",false]],"take_screenshot() (in module pyray)":[[5,"pyray.take_screenshot",false]],"takescreenshot() (in module raylib)":[[6,"raylib.TakeScreenshot",false]],"tangents (pyray.mesh attribute)":[[5,"pyray.Mesh.tangents",false]],"tangents (raylib.mesh attribute)":[[6,"raylib.Mesh.tangents",false]],"target (pyray.camera2d attribute)":[[5,"pyray.Camera2D.target",false]],"target (pyray.camera3d attribute)":[[5,"pyray.Camera3D.target",false]],"target (raylib.camera attribute)":[[6,"raylib.Camera.target",false]],"target (raylib.camera2d attribute)":[[6,"raylib.Camera2D.target",false]],"target (raylib.camera3d attribute)":[[6,"raylib.Camera3D.target",false]],"texcoords (pyray.mesh attribute)":[[5,"pyray.Mesh.texcoords",false]],"texcoords (pyray.rlvertexbuffer attribute)":[[5,"pyray.rlVertexBuffer.texcoords",false]],"texcoords (raylib.mesh attribute)":[[6,"raylib.Mesh.texcoords",false]],"texcoords (raylib.rlvertexbuffer attribute)":[[6,"raylib.rlVertexBuffer.texcoords",false]],"texcoords2 (pyray.mesh attribute)":[[5,"pyray.Mesh.texcoords2",false]],"texcoords2 (raylib.mesh attribute)":[[6,"raylib.Mesh.texcoords2",false]],"text_align_bottom (in module raylib)":[[6,"raylib.TEXT_ALIGN_BOTTOM",false]],"text_align_bottom (pyray.guitextalignmentvertical attribute)":[[5,"pyray.GuiTextAlignmentVertical.TEXT_ALIGN_BOTTOM",false]],"text_align_center (in module raylib)":[[6,"raylib.TEXT_ALIGN_CENTER",false]],"text_align_center (pyray.guitextalignment attribute)":[[5,"pyray.GuiTextAlignment.TEXT_ALIGN_CENTER",false]],"text_align_left (in module raylib)":[[6,"raylib.TEXT_ALIGN_LEFT",false]],"text_align_left (pyray.guitextalignment attribute)":[[5,"pyray.GuiTextAlignment.TEXT_ALIGN_LEFT",false]],"text_align_middle (in module raylib)":[[6,"raylib.TEXT_ALIGN_MIDDLE",false]],"text_align_middle (pyray.guitextalignmentvertical attribute)":[[5,"pyray.GuiTextAlignmentVertical.TEXT_ALIGN_MIDDLE",false]],"text_align_right (in module raylib)":[[6,"raylib.TEXT_ALIGN_RIGHT",false]],"text_align_right (pyray.guitextalignment attribute)":[[5,"pyray.GuiTextAlignment.TEXT_ALIGN_RIGHT",false]],"text_align_top (in module raylib)":[[6,"raylib.TEXT_ALIGN_TOP",false]],"text_align_top (pyray.guitextalignmentvertical attribute)":[[5,"pyray.GuiTextAlignmentVertical.TEXT_ALIGN_TOP",false]],"text_alignment (in module raylib)":[[6,"raylib.TEXT_ALIGNMENT",false]],"text_alignment (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.TEXT_ALIGNMENT",false]],"text_alignment_vertical (in module raylib)":[[6,"raylib.TEXT_ALIGNMENT_VERTICAL",false]],"text_alignment_vertical (pyray.guidefaultproperty attribute)":[[5,"pyray.GuiDefaultProperty.TEXT_ALIGNMENT_VERTICAL",false]],"text_append() (in module pyray)":[[5,"pyray.text_append",false]],"text_color_disabled (in module raylib)":[[6,"raylib.TEXT_COLOR_DISABLED",false]],"text_color_disabled (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.TEXT_COLOR_DISABLED",false]],"text_color_focused (in module raylib)":[[6,"raylib.TEXT_COLOR_FOCUSED",false]],"text_color_focused (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.TEXT_COLOR_FOCUSED",false]],"text_color_normal (in module raylib)":[[6,"raylib.TEXT_COLOR_NORMAL",false]],"text_color_normal (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.TEXT_COLOR_NORMAL",false]],"text_color_pressed (in module raylib)":[[6,"raylib.TEXT_COLOR_PRESSED",false]],"text_color_pressed (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.TEXT_COLOR_PRESSED",false]],"text_copy() (in module pyray)":[[5,"pyray.text_copy",false]],"text_find_index() (in module pyray)":[[5,"pyray.text_find_index",false]],"text_format() (in module pyray)":[[5,"pyray.text_format",false]],"text_insert() (in module pyray)":[[5,"pyray.text_insert",false]],"text_is_equal() (in module pyray)":[[5,"pyray.text_is_equal",false]],"text_join() (in module pyray)":[[5,"pyray.text_join",false]],"text_length() (in module pyray)":[[5,"pyray.text_length",false]],"text_line_spacing (in module raylib)":[[6,"raylib.TEXT_LINE_SPACING",false]],"text_line_spacing (pyray.guidefaultproperty attribute)":[[5,"pyray.GuiDefaultProperty.TEXT_LINE_SPACING",false]],"text_padding (in module raylib)":[[6,"raylib.TEXT_PADDING",false]],"text_padding (pyray.guicontrolproperty attribute)":[[5,"pyray.GuiControlProperty.TEXT_PADDING",false]],"text_readonly (in module raylib)":[[6,"raylib.TEXT_READONLY",false]],"text_readonly (pyray.guitextboxproperty attribute)":[[5,"pyray.GuiTextBoxProperty.TEXT_READONLY",false]],"text_replace() (in module pyray)":[[5,"pyray.text_replace",false]],"text_size (in module raylib)":[[6,"raylib.TEXT_SIZE",false]],"text_size (pyray.guidefaultproperty attribute)":[[5,"pyray.GuiDefaultProperty.TEXT_SIZE",false]],"text_spacing (in module raylib)":[[6,"raylib.TEXT_SPACING",false]],"text_spacing (pyray.guidefaultproperty attribute)":[[5,"pyray.GuiDefaultProperty.TEXT_SPACING",false]],"text_split() (in module pyray)":[[5,"pyray.text_split",false]],"text_subtext() (in module pyray)":[[5,"pyray.text_subtext",false]],"text_to_camel() (in module pyray)":[[5,"pyray.text_to_camel",false]],"text_to_float() (in module pyray)":[[5,"pyray.text_to_float",false]],"text_to_integer() (in module pyray)":[[5,"pyray.text_to_integer",false]],"text_to_lower() (in module pyray)":[[5,"pyray.text_to_lower",false]],"text_to_pascal() (in module pyray)":[[5,"pyray.text_to_pascal",false]],"text_to_snake() (in module pyray)":[[5,"pyray.text_to_snake",false]],"text_to_upper() (in module pyray)":[[5,"pyray.text_to_upper",false]],"text_wrap_char (in module raylib)":[[6,"raylib.TEXT_WRAP_CHAR",false]],"text_wrap_char (pyray.guitextwrapmode attribute)":[[5,"pyray.GuiTextWrapMode.TEXT_WRAP_CHAR",false]],"text_wrap_mode (in module raylib)":[[6,"raylib.TEXT_WRAP_MODE",false]],"text_wrap_mode (pyray.guidefaultproperty attribute)":[[5,"pyray.GuiDefaultProperty.TEXT_WRAP_MODE",false]],"text_wrap_none (in module raylib)":[[6,"raylib.TEXT_WRAP_NONE",false]],"text_wrap_none (pyray.guitextwrapmode attribute)":[[5,"pyray.GuiTextWrapMode.TEXT_WRAP_NONE",false]],"text_wrap_word (in module raylib)":[[6,"raylib.TEXT_WRAP_WORD",false]],"text_wrap_word (pyray.guitextwrapmode attribute)":[[5,"pyray.GuiTextWrapMode.TEXT_WRAP_WORD",false]],"textappend() (in module raylib)":[[6,"raylib.TextAppend",false]],"textbox (in module raylib)":[[6,"raylib.TEXTBOX",false]],"textbox (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.TEXTBOX",false]],"textcopy() (in module raylib)":[[6,"raylib.TextCopy",false]],"textfindindex() (in module raylib)":[[6,"raylib.TextFindIndex",false]],"textformat() (in module raylib)":[[6,"raylib.TextFormat",false]],"textinsert() (in module raylib)":[[6,"raylib.TextInsert",false]],"textisequal() (in module raylib)":[[6,"raylib.TextIsEqual",false]],"textjoin() (in module raylib)":[[6,"raylib.TextJoin",false]],"textlength() (in module raylib)":[[6,"raylib.TextLength",false]],"textreplace() (in module raylib)":[[6,"raylib.TextReplace",false]],"textsplit() (in module raylib)":[[6,"raylib.TextSplit",false]],"textsubtext() (in module raylib)":[[6,"raylib.TextSubtext",false]],"texttocamel() (in module raylib)":[[6,"raylib.TextToCamel",false]],"texttofloat() (in module raylib)":[[6,"raylib.TextToFloat",false]],"texttointeger() (in module raylib)":[[6,"raylib.TextToInteger",false]],"texttolower() (in module raylib)":[[6,"raylib.TextToLower",false]],"texttopascal() (in module raylib)":[[6,"raylib.TextToPascal",false]],"texttosnake() (in module raylib)":[[6,"raylib.TextToSnake",false]],"texttoupper() (in module raylib)":[[6,"raylib.TextToUpper",false]],"texture (class in pyray)":[[5,"pyray.Texture",false]],"texture (class in raylib)":[[6,"raylib.Texture",false]],"texture (pyray.font attribute)":[[5,"pyray.Font.texture",false]],"texture (pyray.materialmap attribute)":[[5,"pyray.MaterialMap.texture",false]],"texture (pyray.rendertexture attribute)":[[5,"pyray.RenderTexture.texture",false]],"texture (raylib.font attribute)":[[6,"raylib.Font.texture",false]],"texture (raylib.materialmap attribute)":[[6,"raylib.MaterialMap.texture",false]],"texture (raylib.rendertexture attribute)":[[6,"raylib.RenderTexture.texture",false]],"texture (raylib.rendertexture2d attribute)":[[6,"raylib.RenderTexture2D.texture",false]],"texture2d (class in pyray)":[[5,"pyray.Texture2D",false]],"texture2d (class in raylib)":[[6,"raylib.Texture2D",false]],"texture_filter_anisotropic_16x (in module raylib)":[[6,"raylib.TEXTURE_FILTER_ANISOTROPIC_16X",false]],"texture_filter_anisotropic_16x (pyray.texturefilter attribute)":[[5,"pyray.TextureFilter.TEXTURE_FILTER_ANISOTROPIC_16X",false]],"texture_filter_anisotropic_4x (in module raylib)":[[6,"raylib.TEXTURE_FILTER_ANISOTROPIC_4X",false]],"texture_filter_anisotropic_4x (pyray.texturefilter attribute)":[[5,"pyray.TextureFilter.TEXTURE_FILTER_ANISOTROPIC_4X",false]],"texture_filter_anisotropic_8x (in module raylib)":[[6,"raylib.TEXTURE_FILTER_ANISOTROPIC_8X",false]],"texture_filter_anisotropic_8x (pyray.texturefilter attribute)":[[5,"pyray.TextureFilter.TEXTURE_FILTER_ANISOTROPIC_8X",false]],"texture_filter_bilinear (in module raylib)":[[6,"raylib.TEXTURE_FILTER_BILINEAR",false]],"texture_filter_bilinear (pyray.texturefilter attribute)":[[5,"pyray.TextureFilter.TEXTURE_FILTER_BILINEAR",false]],"texture_filter_point (in module raylib)":[[6,"raylib.TEXTURE_FILTER_POINT",false]],"texture_filter_point (pyray.texturefilter attribute)":[[5,"pyray.TextureFilter.TEXTURE_FILTER_POINT",false]],"texture_filter_trilinear (in module raylib)":[[6,"raylib.TEXTURE_FILTER_TRILINEAR",false]],"texture_filter_trilinear (pyray.texturefilter attribute)":[[5,"pyray.TextureFilter.TEXTURE_FILTER_TRILINEAR",false]],"texture_wrap_clamp (in module raylib)":[[6,"raylib.TEXTURE_WRAP_CLAMP",false]],"texture_wrap_clamp (pyray.texturewrap attribute)":[[5,"pyray.TextureWrap.TEXTURE_WRAP_CLAMP",false]],"texture_wrap_mirror_clamp (in module raylib)":[[6,"raylib.TEXTURE_WRAP_MIRROR_CLAMP",false]],"texture_wrap_mirror_clamp (pyray.texturewrap attribute)":[[5,"pyray.TextureWrap.TEXTURE_WRAP_MIRROR_CLAMP",false]],"texture_wrap_mirror_repeat (in module raylib)":[[6,"raylib.TEXTURE_WRAP_MIRROR_REPEAT",false]],"texture_wrap_mirror_repeat (pyray.texturewrap attribute)":[[5,"pyray.TextureWrap.TEXTURE_WRAP_MIRROR_REPEAT",false]],"texture_wrap_repeat (in module raylib)":[[6,"raylib.TEXTURE_WRAP_REPEAT",false]],"texture_wrap_repeat (pyray.texturewrap attribute)":[[5,"pyray.TextureWrap.TEXTURE_WRAP_REPEAT",false]],"texturecubemap (class in raylib)":[[6,"raylib.TextureCubemap",false]],"texturefilter (class in pyray)":[[5,"pyray.TextureFilter",false]],"texturefilter (in module raylib)":[[6,"raylib.TextureFilter",false]],"textureid (pyray.rldrawcall attribute)":[[5,"pyray.rlDrawCall.textureId",false]],"textureid (raylib.rldrawcall attribute)":[[6,"raylib.rlDrawCall.textureId",false]],"texturewrap (class in pyray)":[[5,"pyray.TextureWrap",false]],"texturewrap (in module raylib)":[[6,"raylib.TextureWrap",false]],"toggle (in module raylib)":[[6,"raylib.TOGGLE",false]],"toggle (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.TOGGLE",false]],"toggle_borderless_windowed() (in module pyray)":[[5,"pyray.toggle_borderless_windowed",false]],"toggle_fullscreen() (in module pyray)":[[5,"pyray.toggle_fullscreen",false]],"toggleborderlesswindowed() (in module raylib)":[[6,"raylib.ToggleBorderlessWindowed",false]],"togglefullscreen() (in module raylib)":[[6,"raylib.ToggleFullscreen",false]],"top (pyray.npatchinfo attribute)":[[5,"pyray.NPatchInfo.top",false]],"top (raylib.npatchinfo attribute)":[[6,"raylib.NPatchInfo.top",false]],"torque (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.torque",false]],"torque (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.torque",false]],"trace_log() (in module pyray)":[[5,"pyray.trace_log",false]],"tracelog() (in module raylib)":[[6,"raylib.TraceLog",false]],"traceloglevel (class in pyray)":[[5,"pyray.TraceLogLevel",false]],"traceloglevel (in module raylib)":[[6,"raylib.TraceLogLevel",false]],"transform (class in pyray)":[[5,"pyray.Transform",false]],"transform (class in raylib)":[[6,"raylib.Transform",false]],"transform (pyray.model attribute)":[[5,"pyray.Model.transform",false]],"transform (pyray.physicsshape attribute)":[[5,"pyray.PhysicsShape.transform",false]],"transform (raylib.model attribute)":[[6,"raylib.Model.transform",false]],"transform (raylib.physicsshape attribute)":[[6,"raylib.PhysicsShape.transform",false]],"translation (pyray.transform attribute)":[[5,"pyray.Transform.translation",false]],"translation (raylib.transform attribute)":[[6,"raylib.Transform.translation",false]],"trianglecount (pyray.mesh attribute)":[[5,"pyray.Mesh.triangleCount",false]],"trianglecount (raylib.mesh attribute)":[[6,"raylib.Mesh.triangleCount",false]],"type (pyray.automationevent attribute)":[[5,"pyray.AutomationEvent.type",false]],"type (pyray.physicsshape attribute)":[[5,"pyray.PhysicsShape.type",false]],"type (raylib.automationevent attribute)":[[6,"raylib.AutomationEvent.type",false]],"type (raylib.physicsshape attribute)":[[6,"raylib.PhysicsShape.type",false]],"unload_audio_stream() (in module pyray)":[[5,"pyray.unload_audio_stream",false]],"unload_automation_event_list() (in module pyray)":[[5,"pyray.unload_automation_event_list",false]],"unload_codepoints() (in module pyray)":[[5,"pyray.unload_codepoints",false]],"unload_directory_files() (in module pyray)":[[5,"pyray.unload_directory_files",false]],"unload_dropped_files() (in module pyray)":[[5,"pyray.unload_dropped_files",false]],"unload_file_data() (in module pyray)":[[5,"pyray.unload_file_data",false]],"unload_file_text() (in module pyray)":[[5,"pyray.unload_file_text",false]],"unload_font() (in module pyray)":[[5,"pyray.unload_font",false]],"unload_font_data() (in module pyray)":[[5,"pyray.unload_font_data",false]],"unload_image() (in module pyray)":[[5,"pyray.unload_image",false]],"unload_image_colors() (in module pyray)":[[5,"pyray.unload_image_colors",false]],"unload_image_palette() (in module pyray)":[[5,"pyray.unload_image_palette",false]],"unload_material() (in module pyray)":[[5,"pyray.unload_material",false]],"unload_mesh() (in module pyray)":[[5,"pyray.unload_mesh",false]],"unload_model() (in module pyray)":[[5,"pyray.unload_model",false]],"unload_model_animation() (in module pyray)":[[5,"pyray.unload_model_animation",false]],"unload_model_animations() (in module pyray)":[[5,"pyray.unload_model_animations",false]],"unload_music_stream() (in module pyray)":[[5,"pyray.unload_music_stream",false]],"unload_random_sequence() (in module pyray)":[[5,"pyray.unload_random_sequence",false]],"unload_render_texture() (in module pyray)":[[5,"pyray.unload_render_texture",false]],"unload_shader() (in module pyray)":[[5,"pyray.unload_shader",false]],"unload_sound() (in module pyray)":[[5,"pyray.unload_sound",false]],"unload_sound_alias() (in module pyray)":[[5,"pyray.unload_sound_alias",false]],"unload_texture() (in module pyray)":[[5,"pyray.unload_texture",false]],"unload_utf8() (in module pyray)":[[5,"pyray.unload_utf8",false]],"unload_vr_stereo_config() (in module pyray)":[[5,"pyray.unload_vr_stereo_config",false]],"unload_wave() (in module pyray)":[[5,"pyray.unload_wave",false]],"unload_wave_samples() (in module pyray)":[[5,"pyray.unload_wave_samples",false]],"unloadaudiostream() (in module raylib)":[[6,"raylib.UnloadAudioStream",false]],"unloadautomationeventlist() (in module raylib)":[[6,"raylib.UnloadAutomationEventList",false]],"unloadcodepoints() (in module raylib)":[[6,"raylib.UnloadCodepoints",false]],"unloaddirectoryfiles() (in module raylib)":[[6,"raylib.UnloadDirectoryFiles",false]],"unloaddroppedfiles() (in module raylib)":[[6,"raylib.UnloadDroppedFiles",false]],"unloadfiledata() (in module raylib)":[[6,"raylib.UnloadFileData",false]],"unloadfiletext() (in module raylib)":[[6,"raylib.UnloadFileText",false]],"unloadfont() (in module raylib)":[[6,"raylib.UnloadFont",false]],"unloadfontdata() (in module raylib)":[[6,"raylib.UnloadFontData",false]],"unloadimage() (in module raylib)":[[6,"raylib.UnloadImage",false]],"unloadimagecolors() (in module raylib)":[[6,"raylib.UnloadImageColors",false]],"unloadimagepalette() (in module raylib)":[[6,"raylib.UnloadImagePalette",false]],"unloadmaterial() (in module raylib)":[[6,"raylib.UnloadMaterial",false]],"unloadmesh() (in module raylib)":[[6,"raylib.UnloadMesh",false]],"unloadmodel() (in module raylib)":[[6,"raylib.UnloadModel",false]],"unloadmodelanimation() (in module raylib)":[[6,"raylib.UnloadModelAnimation",false]],"unloadmodelanimations() (in module raylib)":[[6,"raylib.UnloadModelAnimations",false]],"unloadmusicstream() (in module raylib)":[[6,"raylib.UnloadMusicStream",false]],"unloadrandomsequence() (in module raylib)":[[6,"raylib.UnloadRandomSequence",false]],"unloadrendertexture() (in module raylib)":[[6,"raylib.UnloadRenderTexture",false]],"unloadshader() (in module raylib)":[[6,"raylib.UnloadShader",false]],"unloadsound() (in module raylib)":[[6,"raylib.UnloadSound",false]],"unloadsoundalias() (in module raylib)":[[6,"raylib.UnloadSoundAlias",false]],"unloadtexture() (in module raylib)":[[6,"raylib.UnloadTexture",false]],"unloadutf8() (in module raylib)":[[6,"raylib.UnloadUTF8",false]],"unloadvrstereoconfig() (in module raylib)":[[6,"raylib.UnloadVrStereoConfig",false]],"unloadwave() (in module raylib)":[[6,"raylib.UnloadWave",false]],"unloadwavesamples() (in module raylib)":[[6,"raylib.UnloadWaveSamples",false]],"up (pyray.camera3d attribute)":[[5,"pyray.Camera3D.up",false]],"up (raylib.camera attribute)":[[6,"raylib.Camera.up",false]],"up (raylib.camera3d attribute)":[[6,"raylib.Camera3D.up",false]],"update_audio_stream() (in module pyray)":[[5,"pyray.update_audio_stream",false]],"update_camera() (in module pyray)":[[5,"pyray.update_camera",false]],"update_camera_pro() (in module pyray)":[[5,"pyray.update_camera_pro",false]],"update_mesh_buffer() (in module pyray)":[[5,"pyray.update_mesh_buffer",false]],"update_model_animation() (in module pyray)":[[5,"pyray.update_model_animation",false]],"update_model_animation_bones() (in module pyray)":[[5,"pyray.update_model_animation_bones",false]],"update_music_stream() (in module pyray)":[[5,"pyray.update_music_stream",false]],"update_physics() (in module pyray)":[[5,"pyray.update_physics",false]],"update_sound() (in module pyray)":[[5,"pyray.update_sound",false]],"update_texture() (in module pyray)":[[5,"pyray.update_texture",false]],"update_texture_rec() (in module pyray)":[[5,"pyray.update_texture_rec",false]],"updateaudiostream() (in module raylib)":[[6,"raylib.UpdateAudioStream",false]],"updatecamera() (in module raylib)":[[6,"raylib.UpdateCamera",false]],"updatecamerapro() (in module raylib)":[[6,"raylib.UpdateCameraPro",false]],"updatemeshbuffer() (in module raylib)":[[6,"raylib.UpdateMeshBuffer",false]],"updatemodelanimation() (in module raylib)":[[6,"raylib.UpdateModelAnimation",false]],"updatemodelanimationbones() (in module raylib)":[[6,"raylib.UpdateModelAnimationBones",false]],"updatemusicstream() (in module raylib)":[[6,"raylib.UpdateMusicStream",false]],"updatephysics() (in module raylib)":[[6,"raylib.UpdatePhysics",false]],"updatesound() (in module raylib)":[[6,"raylib.UpdateSound",false]],"updatetexture() (in module raylib)":[[6,"raylib.UpdateTexture",false]],"updatetexturerec() (in module raylib)":[[6,"raylib.UpdateTextureRec",false]],"upload_mesh() (in module pyray)":[[5,"pyray.upload_mesh",false]],"uploadmesh() (in module raylib)":[[6,"raylib.UploadMesh",false]],"usegravity (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.useGravity",false]],"usegravity (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.useGravity",false]],"user (raylib.glfwallocator attribute)":[[6,"raylib.GLFWallocator.user",false]],"v (pyray.float16 attribute)":[[5,"pyray.float16.v",false]],"v (pyray.float3 attribute)":[[5,"pyray.float3.v",false]],"v (raylib.float16 attribute)":[[6,"raylib.float16.v",false]],"v (raylib.float3 attribute)":[[6,"raylib.float3.v",false]],"value (pyray.glyphinfo attribute)":[[5,"pyray.GlyphInfo.value",false]],"value (pyray.materialmap attribute)":[[5,"pyray.MaterialMap.value",false]],"value (raylib.glyphinfo attribute)":[[6,"raylib.GlyphInfo.value",false]],"value (raylib.materialmap attribute)":[[6,"raylib.MaterialMap.value",false]],"valuebox (in module raylib)":[[6,"raylib.VALUEBOX",false]],"valuebox (pyray.guicontrol attribute)":[[5,"pyray.GuiControl.VALUEBOX",false]],"vaoid (pyray.mesh attribute)":[[5,"pyray.Mesh.vaoId",false]],"vaoid (pyray.rlvertexbuffer attribute)":[[5,"pyray.rlVertexBuffer.vaoId",false]],"vaoid (raylib.mesh attribute)":[[6,"raylib.Mesh.vaoId",false]],"vaoid (raylib.rlvertexbuffer attribute)":[[6,"raylib.rlVertexBuffer.vaoId",false]],"vboid (pyray.mesh attribute)":[[5,"pyray.Mesh.vboId",false]],"vboid (pyray.rlvertexbuffer attribute)":[[5,"pyray.rlVertexBuffer.vboId",false]],"vboid (raylib.mesh attribute)":[[6,"raylib.Mesh.vboId",false]],"vboid (raylib.rlvertexbuffer attribute)":[[6,"raylib.rlVertexBuffer.vboId",false]],"vector2 (class in pyray)":[[5,"pyray.Vector2",false]],"vector2 (class in raylib)":[[6,"raylib.Vector2",false]],"vector2_add() (in module pyray)":[[5,"pyray.vector2_add",false]],"vector2_add_value() (in module pyray)":[[5,"pyray.vector2_add_value",false]],"vector2_angle() (in module pyray)":[[5,"pyray.vector2_angle",false]],"vector2_clamp() (in module pyray)":[[5,"pyray.vector2_clamp",false]],"vector2_clamp_value() (in module pyray)":[[5,"pyray.vector2_clamp_value",false]],"vector2_distance() (in module pyray)":[[5,"pyray.vector2_distance",false]],"vector2_distance_sqr() (in module pyray)":[[5,"pyray.vector2_distance_sqr",false]],"vector2_divide() (in module pyray)":[[5,"pyray.vector2_divide",false]],"vector2_dot_product() (in module pyray)":[[5,"pyray.vector2_dot_product",false]],"vector2_equals() (in module pyray)":[[5,"pyray.vector2_equals",false]],"vector2_invert() (in module pyray)":[[5,"pyray.vector2_invert",false]],"vector2_length() (in module pyray)":[[5,"pyray.vector2_length",false]],"vector2_length_sqr() (in module pyray)":[[5,"pyray.vector2_length_sqr",false]],"vector2_lerp() (in module pyray)":[[5,"pyray.vector2_lerp",false]],"vector2_line_angle() (in module pyray)":[[5,"pyray.vector2_line_angle",false]],"vector2_max() (in module pyray)":[[5,"pyray.vector2_max",false]],"vector2_min() (in module pyray)":[[5,"pyray.vector2_min",false]],"vector2_move_towards() (in module pyray)":[[5,"pyray.vector2_move_towards",false]],"vector2_multiply() (in module pyray)":[[5,"pyray.vector2_multiply",false]],"vector2_negate() (in module pyray)":[[5,"pyray.vector2_negate",false]],"vector2_normalize() (in module pyray)":[[5,"pyray.vector2_normalize",false]],"vector2_one() (in module pyray)":[[5,"pyray.vector2_one",false]],"vector2_reflect() (in module pyray)":[[5,"pyray.vector2_reflect",false]],"vector2_refract() (in module pyray)":[[5,"pyray.vector2_refract",false]],"vector2_rotate() (in module pyray)":[[5,"pyray.vector2_rotate",false]],"vector2_scale() (in module pyray)":[[5,"pyray.vector2_scale",false]],"vector2_subtract() (in module pyray)":[[5,"pyray.vector2_subtract",false]],"vector2_subtract_value() (in module pyray)":[[5,"pyray.vector2_subtract_value",false]],"vector2_transform() (in module pyray)":[[5,"pyray.vector2_transform",false]],"vector2_zero() (in module pyray)":[[5,"pyray.vector2_zero",false]],"vector2add() (in module raylib)":[[6,"raylib.Vector2Add",false]],"vector2addvalue() (in module raylib)":[[6,"raylib.Vector2AddValue",false]],"vector2angle() (in module raylib)":[[6,"raylib.Vector2Angle",false]],"vector2clamp() (in module raylib)":[[6,"raylib.Vector2Clamp",false]],"vector2clampvalue() (in module raylib)":[[6,"raylib.Vector2ClampValue",false]],"vector2distance() (in module raylib)":[[6,"raylib.Vector2Distance",false]],"vector2distancesqr() (in module raylib)":[[6,"raylib.Vector2DistanceSqr",false]],"vector2divide() (in module raylib)":[[6,"raylib.Vector2Divide",false]],"vector2dotproduct() (in module raylib)":[[6,"raylib.Vector2DotProduct",false]],"vector2equals() (in module raylib)":[[6,"raylib.Vector2Equals",false]],"vector2invert() (in module raylib)":[[6,"raylib.Vector2Invert",false]],"vector2length() (in module raylib)":[[6,"raylib.Vector2Length",false]],"vector2lengthsqr() (in module raylib)":[[6,"raylib.Vector2LengthSqr",false]],"vector2lerp() (in module raylib)":[[6,"raylib.Vector2Lerp",false]],"vector2lineangle() (in module raylib)":[[6,"raylib.Vector2LineAngle",false]],"vector2max() (in module raylib)":[[6,"raylib.Vector2Max",false]],"vector2min() (in module raylib)":[[6,"raylib.Vector2Min",false]],"vector2movetowards() (in module raylib)":[[6,"raylib.Vector2MoveTowards",false]],"vector2multiply() (in module raylib)":[[6,"raylib.Vector2Multiply",false]],"vector2negate() (in module raylib)":[[6,"raylib.Vector2Negate",false]],"vector2normalize() (in module raylib)":[[6,"raylib.Vector2Normalize",false]],"vector2one() (in module raylib)":[[6,"raylib.Vector2One",false]],"vector2reflect() (in module raylib)":[[6,"raylib.Vector2Reflect",false]],"vector2refract() (in module raylib)":[[6,"raylib.Vector2Refract",false]],"vector2rotate() (in module raylib)":[[6,"raylib.Vector2Rotate",false]],"vector2scale() (in module raylib)":[[6,"raylib.Vector2Scale",false]],"vector2subtract() (in module raylib)":[[6,"raylib.Vector2Subtract",false]],"vector2subtractvalue() (in module raylib)":[[6,"raylib.Vector2SubtractValue",false]],"vector2transform() (in module raylib)":[[6,"raylib.Vector2Transform",false]],"vector2zero() (in module raylib)":[[6,"raylib.Vector2Zero",false]],"vector3 (class in pyray)":[[5,"pyray.Vector3",false]],"vector3 (class in raylib)":[[6,"raylib.Vector3",false]],"vector3_add() (in module pyray)":[[5,"pyray.vector3_add",false]],"vector3_add_value() (in module pyray)":[[5,"pyray.vector3_add_value",false]],"vector3_angle() (in module pyray)":[[5,"pyray.vector3_angle",false]],"vector3_barycenter() (in module pyray)":[[5,"pyray.vector3_barycenter",false]],"vector3_clamp() (in module pyray)":[[5,"pyray.vector3_clamp",false]],"vector3_clamp_value() (in module pyray)":[[5,"pyray.vector3_clamp_value",false]],"vector3_cross_product() (in module pyray)":[[5,"pyray.vector3_cross_product",false]],"vector3_cubic_hermite() (in module pyray)":[[5,"pyray.vector3_cubic_hermite",false]],"vector3_distance() (in module pyray)":[[5,"pyray.vector3_distance",false]],"vector3_distance_sqr() (in module pyray)":[[5,"pyray.vector3_distance_sqr",false]],"vector3_divide() (in module pyray)":[[5,"pyray.vector3_divide",false]],"vector3_dot_product() (in module pyray)":[[5,"pyray.vector3_dot_product",false]],"vector3_equals() (in module pyray)":[[5,"pyray.vector3_equals",false]],"vector3_invert() (in module pyray)":[[5,"pyray.vector3_invert",false]],"vector3_length() (in module pyray)":[[5,"pyray.vector3_length",false]],"vector3_length_sqr() (in module pyray)":[[5,"pyray.vector3_length_sqr",false]],"vector3_lerp() (in module pyray)":[[5,"pyray.vector3_lerp",false]],"vector3_max() (in module pyray)":[[5,"pyray.vector3_max",false]],"vector3_min() (in module pyray)":[[5,"pyray.vector3_min",false]],"vector3_move_towards() (in module pyray)":[[5,"pyray.vector3_move_towards",false]],"vector3_multiply() (in module pyray)":[[5,"pyray.vector3_multiply",false]],"vector3_negate() (in module pyray)":[[5,"pyray.vector3_negate",false]],"vector3_normalize() (in module pyray)":[[5,"pyray.vector3_normalize",false]],"vector3_one() (in module pyray)":[[5,"pyray.vector3_one",false]],"vector3_ortho_normalize() (in module pyray)":[[5,"pyray.vector3_ortho_normalize",false]],"vector3_perpendicular() (in module pyray)":[[5,"pyray.vector3_perpendicular",false]],"vector3_project() (in module pyray)":[[5,"pyray.vector3_project",false]],"vector3_reflect() (in module pyray)":[[5,"pyray.vector3_reflect",false]],"vector3_refract() (in module pyray)":[[5,"pyray.vector3_refract",false]],"vector3_reject() (in module pyray)":[[5,"pyray.vector3_reject",false]],"vector3_rotate_by_axis_angle() (in module pyray)":[[5,"pyray.vector3_rotate_by_axis_angle",false]],"vector3_rotate_by_quaternion() (in module pyray)":[[5,"pyray.vector3_rotate_by_quaternion",false]],"vector3_scale() (in module pyray)":[[5,"pyray.vector3_scale",false]],"vector3_subtract() (in module pyray)":[[5,"pyray.vector3_subtract",false]],"vector3_subtract_value() (in module pyray)":[[5,"pyray.vector3_subtract_value",false]],"vector3_to_float_v() (in module pyray)":[[5,"pyray.vector3_to_float_v",false]],"vector3_transform() (in module pyray)":[[5,"pyray.vector3_transform",false]],"vector3_unproject() (in module pyray)":[[5,"pyray.vector3_unproject",false]],"vector3_zero() (in module pyray)":[[5,"pyray.vector3_zero",false]],"vector3add() (in module raylib)":[[6,"raylib.Vector3Add",false]],"vector3addvalue() (in module raylib)":[[6,"raylib.Vector3AddValue",false]],"vector3angle() (in module raylib)":[[6,"raylib.Vector3Angle",false]],"vector3barycenter() (in module raylib)":[[6,"raylib.Vector3Barycenter",false]],"vector3clamp() (in module raylib)":[[6,"raylib.Vector3Clamp",false]],"vector3clampvalue() (in module raylib)":[[6,"raylib.Vector3ClampValue",false]],"vector3crossproduct() (in module raylib)":[[6,"raylib.Vector3CrossProduct",false]],"vector3cubichermite() (in module raylib)":[[6,"raylib.Vector3CubicHermite",false]],"vector3distance() (in module raylib)":[[6,"raylib.Vector3Distance",false]],"vector3distancesqr() (in module raylib)":[[6,"raylib.Vector3DistanceSqr",false]],"vector3divide() (in module raylib)":[[6,"raylib.Vector3Divide",false]],"vector3dotproduct() (in module raylib)":[[6,"raylib.Vector3DotProduct",false]],"vector3equals() (in module raylib)":[[6,"raylib.Vector3Equals",false]],"vector3invert() (in module raylib)":[[6,"raylib.Vector3Invert",false]],"vector3length() (in module raylib)":[[6,"raylib.Vector3Length",false]],"vector3lengthsqr() (in module raylib)":[[6,"raylib.Vector3LengthSqr",false]],"vector3lerp() (in module raylib)":[[6,"raylib.Vector3Lerp",false]],"vector3max() (in module raylib)":[[6,"raylib.Vector3Max",false]],"vector3min() (in module raylib)":[[6,"raylib.Vector3Min",false]],"vector3movetowards() (in module raylib)":[[6,"raylib.Vector3MoveTowards",false]],"vector3multiply() (in module raylib)":[[6,"raylib.Vector3Multiply",false]],"vector3negate() (in module raylib)":[[6,"raylib.Vector3Negate",false]],"vector3normalize() (in module raylib)":[[6,"raylib.Vector3Normalize",false]],"vector3one() (in module raylib)":[[6,"raylib.Vector3One",false]],"vector3orthonormalize() (in module raylib)":[[6,"raylib.Vector3OrthoNormalize",false]],"vector3perpendicular() (in module raylib)":[[6,"raylib.Vector3Perpendicular",false]],"vector3project() (in module raylib)":[[6,"raylib.Vector3Project",false]],"vector3reflect() (in module raylib)":[[6,"raylib.Vector3Reflect",false]],"vector3refract() (in module raylib)":[[6,"raylib.Vector3Refract",false]],"vector3reject() (in module raylib)":[[6,"raylib.Vector3Reject",false]],"vector3rotatebyaxisangle() (in module raylib)":[[6,"raylib.Vector3RotateByAxisAngle",false]],"vector3rotatebyquaternion() (in module raylib)":[[6,"raylib.Vector3RotateByQuaternion",false]],"vector3scale() (in module raylib)":[[6,"raylib.Vector3Scale",false]],"vector3subtract() (in module raylib)":[[6,"raylib.Vector3Subtract",false]],"vector3subtractvalue() (in module raylib)":[[6,"raylib.Vector3SubtractValue",false]],"vector3tofloatv() (in module raylib)":[[6,"raylib.Vector3ToFloatV",false]],"vector3transform() (in module raylib)":[[6,"raylib.Vector3Transform",false]],"vector3unproject() (in module raylib)":[[6,"raylib.Vector3Unproject",false]],"vector3zero() (in module raylib)":[[6,"raylib.Vector3Zero",false]],"vector4 (class in pyray)":[[5,"pyray.Vector4",false]],"vector4 (class in raylib)":[[6,"raylib.Vector4",false]],"vector4_add() (in module pyray)":[[5,"pyray.vector4_add",false]],"vector4_add_value() (in module pyray)":[[5,"pyray.vector4_add_value",false]],"vector4_distance() (in module pyray)":[[5,"pyray.vector4_distance",false]],"vector4_distance_sqr() (in module pyray)":[[5,"pyray.vector4_distance_sqr",false]],"vector4_divide() (in module pyray)":[[5,"pyray.vector4_divide",false]],"vector4_dot_product() (in module pyray)":[[5,"pyray.vector4_dot_product",false]],"vector4_equals() (in module pyray)":[[5,"pyray.vector4_equals",false]],"vector4_invert() (in module pyray)":[[5,"pyray.vector4_invert",false]],"vector4_length() (in module pyray)":[[5,"pyray.vector4_length",false]],"vector4_length_sqr() (in module pyray)":[[5,"pyray.vector4_length_sqr",false]],"vector4_lerp() (in module pyray)":[[5,"pyray.vector4_lerp",false]],"vector4_max() (in module pyray)":[[5,"pyray.vector4_max",false]],"vector4_min() (in module pyray)":[[5,"pyray.vector4_min",false]],"vector4_move_towards() (in module pyray)":[[5,"pyray.vector4_move_towards",false]],"vector4_multiply() (in module pyray)":[[5,"pyray.vector4_multiply",false]],"vector4_negate() (in module pyray)":[[5,"pyray.vector4_negate",false]],"vector4_normalize() (in module pyray)":[[5,"pyray.vector4_normalize",false]],"vector4_one() (in module pyray)":[[5,"pyray.vector4_one",false]],"vector4_scale() (in module pyray)":[[5,"pyray.vector4_scale",false]],"vector4_subtract() (in module pyray)":[[5,"pyray.vector4_subtract",false]],"vector4_subtract_value() (in module pyray)":[[5,"pyray.vector4_subtract_value",false]],"vector4_zero() (in module pyray)":[[5,"pyray.vector4_zero",false]],"vector4add() (in module raylib)":[[6,"raylib.Vector4Add",false]],"vector4addvalue() (in module raylib)":[[6,"raylib.Vector4AddValue",false]],"vector4distance() (in module raylib)":[[6,"raylib.Vector4Distance",false]],"vector4distancesqr() (in module raylib)":[[6,"raylib.Vector4DistanceSqr",false]],"vector4divide() (in module raylib)":[[6,"raylib.Vector4Divide",false]],"vector4dotproduct() (in module raylib)":[[6,"raylib.Vector4DotProduct",false]],"vector4equals() (in module raylib)":[[6,"raylib.Vector4Equals",false]],"vector4invert() (in module raylib)":[[6,"raylib.Vector4Invert",false]],"vector4length() (in module raylib)":[[6,"raylib.Vector4Length",false]],"vector4lengthsqr() (in module raylib)":[[6,"raylib.Vector4LengthSqr",false]],"vector4lerp() (in module raylib)":[[6,"raylib.Vector4Lerp",false]],"vector4max() (in module raylib)":[[6,"raylib.Vector4Max",false]],"vector4min() (in module raylib)":[[6,"raylib.Vector4Min",false]],"vector4movetowards() (in module raylib)":[[6,"raylib.Vector4MoveTowards",false]],"vector4multiply() (in module raylib)":[[6,"raylib.Vector4Multiply",false]],"vector4negate() (in module raylib)":[[6,"raylib.Vector4Negate",false]],"vector4normalize() (in module raylib)":[[6,"raylib.Vector4Normalize",false]],"vector4one() (in module raylib)":[[6,"raylib.Vector4One",false]],"vector4scale() (in module raylib)":[[6,"raylib.Vector4Scale",false]],"vector4subtract() (in module raylib)":[[6,"raylib.Vector4Subtract",false]],"vector4subtractvalue() (in module raylib)":[[6,"raylib.Vector4SubtractValue",false]],"vector4zero() (in module raylib)":[[6,"raylib.Vector4Zero",false]],"velocity (pyray.physicsbodydata attribute)":[[5,"pyray.PhysicsBodyData.velocity",false]],"velocity (raylib.physicsbodydata attribute)":[[6,"raylib.PhysicsBodyData.velocity",false]],"vertexalignment (pyray.rldrawcall attribute)":[[5,"pyray.rlDrawCall.vertexAlignment",false]],"vertexalignment (raylib.rldrawcall attribute)":[[6,"raylib.rlDrawCall.vertexAlignment",false]],"vertexbuffer (pyray.rlrenderbatch attribute)":[[5,"pyray.rlRenderBatch.vertexBuffer",false]],"vertexbuffer (raylib.rlrenderbatch attribute)":[[6,"raylib.rlRenderBatch.vertexBuffer",false]],"vertexcount (pyray.mesh attribute)":[[5,"pyray.Mesh.vertexCount",false]],"vertexcount (pyray.physicsvertexdata attribute)":[[5,"pyray.PhysicsVertexData.vertexCount",false]],"vertexcount (pyray.rldrawcall attribute)":[[5,"pyray.rlDrawCall.vertexCount",false]],"vertexcount (raylib.mesh attribute)":[[6,"raylib.Mesh.vertexCount",false]],"vertexcount (raylib.physicsvertexdata attribute)":[[6,"raylib.PhysicsVertexData.vertexCount",false]],"vertexcount (raylib.rldrawcall attribute)":[[6,"raylib.rlDrawCall.vertexCount",false]],"vertexdata (pyray.physicsshape attribute)":[[5,"pyray.PhysicsShape.vertexData",false]],"vertexdata (raylib.physicsshape attribute)":[[6,"raylib.PhysicsShape.vertexData",false]],"vertices (pyray.mesh attribute)":[[5,"pyray.Mesh.vertices",false]],"vertices (pyray.rlvertexbuffer attribute)":[[5,"pyray.rlVertexBuffer.vertices",false]],"vertices (raylib.mesh attribute)":[[6,"raylib.Mesh.vertices",false]],"vertices (raylib.rlvertexbuffer attribute)":[[6,"raylib.rlVertexBuffer.vertices",false]],"viewoffset (pyray.vrstereoconfig attribute)":[[5,"pyray.VrStereoConfig.viewOffset",false]],"viewoffset (raylib.vrstereoconfig attribute)":[[6,"raylib.VrStereoConfig.viewOffset",false]],"violet (in module pyray)":[[5,"pyray.VIOLET",false]],"violet (in module raylib)":[[6,"raylib.VIOLET",false]],"vrdeviceinfo (class in pyray)":[[5,"pyray.VrDeviceInfo",false]],"vrdeviceinfo (class in raylib)":[[6,"raylib.VrDeviceInfo",false]],"vresolution (pyray.vrdeviceinfo attribute)":[[5,"pyray.VrDeviceInfo.vResolution",false]],"vresolution (raylib.vrdeviceinfo attribute)":[[6,"raylib.VrDeviceInfo.vResolution",false]],"vrstereoconfig (class in pyray)":[[5,"pyray.VrStereoConfig",false]],"vrstereoconfig (class in raylib)":[[6,"raylib.VrStereoConfig",false]],"vscreensize (pyray.vrdeviceinfo attribute)":[[5,"pyray.VrDeviceInfo.vScreenSize",false]],"vscreensize (raylib.vrdeviceinfo attribute)":[[6,"raylib.VrDeviceInfo.vScreenSize",false]],"w (pyray.vector4 attribute)":[[5,"pyray.Vector4.w",false]],"w (raylib.quaternion attribute)":[[6,"raylib.Quaternion.w",false]],"w (raylib.vector4 attribute)":[[6,"raylib.Vector4.w",false]],"wait_time() (in module pyray)":[[5,"pyray.wait_time",false]],"waittime() (in module raylib)":[[6,"raylib.WaitTime",false]],"wave (class in pyray)":[[5,"pyray.Wave",false]],"wave (class in raylib)":[[6,"raylib.Wave",false]],"wave_copy() (in module pyray)":[[5,"pyray.wave_copy",false]],"wave_crop() (in module pyray)":[[5,"pyray.wave_crop",false]],"wave_format() (in module pyray)":[[5,"pyray.wave_format",false]],"wavecopy() (in module raylib)":[[6,"raylib.WaveCopy",false]],"wavecrop() (in module raylib)":[[6,"raylib.WaveCrop",false]],"waveformat() (in module raylib)":[[6,"raylib.WaveFormat",false]],"white (in module pyray)":[[5,"pyray.WHITE",false]],"white (in module raylib)":[[6,"raylib.WHITE",false]],"width (pyray.image attribute)":[[5,"pyray.Image.width",false]],"width (pyray.rectangle attribute)":[[5,"pyray.Rectangle.width",false]],"width (pyray.texture attribute)":[[5,"pyray.Texture.width",false]],"width (pyray.texture2d attribute)":[[5,"pyray.Texture2D.width",false]],"width (raylib.glfwimage attribute)":[[6,"raylib.GLFWimage.width",false]],"width (raylib.glfwvidmode attribute)":[[6,"raylib.GLFWvidmode.width",false]],"width (raylib.image attribute)":[[6,"raylib.Image.width",false]],"width (raylib.rectangle attribute)":[[6,"raylib.Rectangle.width",false]],"width (raylib.texture attribute)":[[6,"raylib.Texture.width",false]],"width (raylib.texture2d attribute)":[[6,"raylib.Texture2D.width",false]],"width (raylib.texturecubemap attribute)":[[6,"raylib.TextureCubemap.width",false]],"window_should_close() (in module pyray)":[[5,"pyray.window_should_close",false]],"windowshouldclose() (in module raylib)":[[6,"raylib.WindowShouldClose",false]],"wrap() (in module pyray)":[[5,"pyray.wrap",false]],"wrap() (in module raylib)":[[6,"raylib.Wrap",false]],"x (pyray.rectangle attribute)":[[5,"pyray.Rectangle.x",false]],"x (pyray.vector2 attribute)":[[5,"pyray.Vector2.x",false]],"x (pyray.vector3 attribute)":[[5,"pyray.Vector3.x",false]],"x (pyray.vector4 attribute)":[[5,"pyray.Vector4.x",false]],"x (raylib.quaternion attribute)":[[6,"raylib.Quaternion.x",false]],"x (raylib.rectangle attribute)":[[6,"raylib.Rectangle.x",false]],"x (raylib.vector2 attribute)":[[6,"raylib.Vector2.x",false]],"x (raylib.vector3 attribute)":[[6,"raylib.Vector3.x",false]],"x (raylib.vector4 attribute)":[[6,"raylib.Vector4.x",false]],"y (pyray.rectangle attribute)":[[5,"pyray.Rectangle.y",false]],"y (pyray.vector2 attribute)":[[5,"pyray.Vector2.y",false]],"y (pyray.vector3 attribute)":[[5,"pyray.Vector3.y",false]],"y (pyray.vector4 attribute)":[[5,"pyray.Vector4.y",false]],"y (raylib.quaternion attribute)":[[6,"raylib.Quaternion.y",false]],"y (raylib.rectangle attribute)":[[6,"raylib.Rectangle.y",false]],"y (raylib.vector2 attribute)":[[6,"raylib.Vector2.y",false]],"y (raylib.vector3 attribute)":[[6,"raylib.Vector3.y",false]],"y (raylib.vector4 attribute)":[[6,"raylib.Vector4.y",false]],"yellow (in module pyray)":[[5,"pyray.YELLOW",false]],"yellow (in module raylib)":[[6,"raylib.YELLOW",false]],"z (pyray.vector3 attribute)":[[5,"pyray.Vector3.z",false]],"z (pyray.vector4 attribute)":[[5,"pyray.Vector4.z",false]],"z (raylib.quaternion attribute)":[[6,"raylib.Quaternion.z",false]],"z (raylib.vector3 attribute)":[[6,"raylib.Vector3.z",false]],"z (raylib.vector4 attribute)":[[6,"raylib.Vector4.z",false]],"zoom (pyray.camera2d attribute)":[[5,"pyray.Camera2D.zoom",false]],"zoom (raylib.camera2d attribute)":[[6,"raylib.Camera2D.zoom",false]]},"objects":{"":[[5,0,0,"-","pyray"],[6,0,0,"-","raylib"]],"pyray":[[5,1,1,"","AudioStream"],[5,1,1,"","AutomationEvent"],[5,1,1,"","AutomationEventList"],[5,3,1,"","BEIGE"],[5,3,1,"","BLACK"],[5,3,1,"","BLANK"],[5,3,1,"","BLUE"],[5,3,1,"","BROWN"],[5,1,1,"","BlendMode"],[5,1,1,"","BoneInfo"],[5,1,1,"","BoundingBox"],[5,1,1,"","Camera2D"],[5,1,1,"","Camera3D"],[5,1,1,"","CameraMode"],[5,1,1,"","CameraProjection"],[5,1,1,"","Color"],[5,1,1,"","ConfigFlags"],[5,1,1,"","CubemapLayout"],[5,3,1,"","DARKBLUE"],[5,3,1,"","DARKBROWN"],[5,3,1,"","DARKGRAY"],[5,3,1,"","DARKGREEN"],[5,3,1,"","DARKPURPLE"],[5,1,1,"","FilePathList"],[5,1,1,"","Font"],[5,1,1,"","FontType"],[5,3,1,"","GOLD"],[5,3,1,"","GRAY"],[5,3,1,"","GREEN"],[5,1,1,"","GamepadAxis"],[5,1,1,"","GamepadButton"],[5,1,1,"","Gesture"],[5,1,1,"","GlyphInfo"],[5,1,1,"","GuiCheckBoxProperty"],[5,1,1,"","GuiColorPickerProperty"],[5,1,1,"","GuiComboBoxProperty"],[5,1,1,"","GuiControl"],[5,1,1,"","GuiControlProperty"],[5,1,1,"","GuiDefaultProperty"],[5,1,1,"","GuiDropdownBoxProperty"],[5,1,1,"","GuiIconName"],[5,1,1,"","GuiListViewProperty"],[5,1,1,"","GuiProgressBarProperty"],[5,1,1,"","GuiScrollBarProperty"],[5,1,1,"","GuiSliderProperty"],[5,1,1,"","GuiSpinnerProperty"],[5,1,1,"","GuiState"],[5,1,1,"","GuiStyleProp"],[5,1,1,"","GuiTextAlignment"],[5,1,1,"","GuiTextAlignmentVertical"],[5,1,1,"","GuiTextBoxProperty"],[5,1,1,"","GuiTextWrapMode"],[5,1,1,"","GuiToggleProperty"],[5,1,1,"","Image"],[5,1,1,"","KeyboardKey"],[5,3,1,"","LIGHTGRAY"],[5,3,1,"","LIME"],[5,3,1,"","MAGENTA"],[5,3,1,"","MAROON"],[5,1,1,"","Material"],[5,1,1,"","MaterialMap"],[5,1,1,"","MaterialMapIndex"],[5,1,1,"","Matrix"],[5,1,1,"","Matrix2x2"],[5,1,1,"","Mesh"],[5,1,1,"","Model"],[5,1,1,"","ModelAnimation"],[5,1,1,"","MouseButton"],[5,1,1,"","MouseCursor"],[5,1,1,"","Music"],[5,1,1,"","NPatchInfo"],[5,1,1,"","NPatchLayout"],[5,3,1,"","ORANGE"],[5,3,1,"","PINK"],[5,3,1,"","PURPLE"],[5,1,1,"","PhysicsBodyData"],[5,1,1,"","PhysicsManifoldData"],[5,1,1,"","PhysicsShape"],[5,1,1,"","PhysicsVertexData"],[5,1,1,"","PixelFormat"],[5,3,1,"","RAYWHITE"],[5,3,1,"","RED"],[5,1,1,"","Ray"],[5,1,1,"","RayCollision"],[5,1,1,"","Rectangle"],[5,1,1,"","RenderTexture"],[5,3,1,"","SKYBLUE"],[5,1,1,"","Shader"],[5,1,1,"","ShaderAttributeDataType"],[5,1,1,"","ShaderLocationIndex"],[5,1,1,"","ShaderUniformDataType"],[5,1,1,"","Sound"],[5,1,1,"","Texture"],[5,1,1,"","Texture2D"],[5,1,1,"","TextureFilter"],[5,1,1,"","TextureWrap"],[5,1,1,"","TraceLogLevel"],[5,1,1,"","Transform"],[5,3,1,"","VIOLET"],[5,1,1,"","Vector2"],[5,1,1,"","Vector3"],[5,1,1,"","Vector4"],[5,1,1,"","VrDeviceInfo"],[5,1,1,"","VrStereoConfig"],[5,3,1,"","WHITE"],[5,1,1,"","Wave"],[5,3,1,"","YELLOW"],[5,4,1,"","attach_audio_mixed_processor"],[5,4,1,"","attach_audio_stream_processor"],[5,4,1,"","begin_blend_mode"],[5,4,1,"","begin_drawing"],[5,4,1,"","begin_mode_2d"],[5,4,1,"","begin_mode_3d"],[5,4,1,"","begin_scissor_mode"],[5,4,1,"","begin_shader_mode"],[5,4,1,"","begin_texture_mode"],[5,4,1,"","begin_vr_stereo_mode"],[5,4,1,"","change_directory"],[5,4,1,"","check_collision_box_sphere"],[5,4,1,"","check_collision_boxes"],[5,4,1,"","check_collision_circle_line"],[5,4,1,"","check_collision_circle_rec"],[5,4,1,"","check_collision_circles"],[5,4,1,"","check_collision_lines"],[5,4,1,"","check_collision_point_circle"],[5,4,1,"","check_collision_point_line"],[5,4,1,"","check_collision_point_poly"],[5,4,1,"","check_collision_point_rec"],[5,4,1,"","check_collision_point_triangle"],[5,4,1,"","check_collision_recs"],[5,4,1,"","check_collision_spheres"],[5,4,1,"","clamp"],[5,4,1,"","clear_background"],[5,4,1,"","clear_window_state"],[5,4,1,"","close_audio_device"],[5,4,1,"","close_physics"],[5,4,1,"","close_window"],[5,4,1,"","codepoint_to_utf8"],[5,4,1,"","color_alpha"],[5,4,1,"","color_alpha_blend"],[5,4,1,"","color_brightness"],[5,4,1,"","color_contrast"],[5,4,1,"","color_from_hsv"],[5,4,1,"","color_from_normalized"],[5,4,1,"","color_is_equal"],[5,4,1,"","color_lerp"],[5,4,1,"","color_normalize"],[5,4,1,"","color_tint"],[5,4,1,"","color_to_hsv"],[5,4,1,"","color_to_int"],[5,4,1,"","compress_data"],[5,4,1,"","compute_crc32"],[5,4,1,"","compute_md5"],[5,4,1,"","compute_sha1"],[5,4,1,"","create_physics_body_circle"],[5,4,1,"","create_physics_body_polygon"],[5,4,1,"","create_physics_body_rectangle"],[5,4,1,"","decode_data_base64"],[5,4,1,"","decompress_data"],[5,4,1,"","destroy_physics_body"],[5,4,1,"","detach_audio_mixed_processor"],[5,4,1,"","detach_audio_stream_processor"],[5,4,1,"","directory_exists"],[5,4,1,"","disable_cursor"],[5,4,1,"","disable_event_waiting"],[5,4,1,"","draw_billboard"],[5,4,1,"","draw_billboard_pro"],[5,4,1,"","draw_billboard_rec"],[5,4,1,"","draw_bounding_box"],[5,4,1,"","draw_capsule"],[5,4,1,"","draw_capsule_wires"],[5,4,1,"","draw_circle"],[5,4,1,"","draw_circle_3d"],[5,4,1,"","draw_circle_gradient"],[5,4,1,"","draw_circle_lines"],[5,4,1,"","draw_circle_lines_v"],[5,4,1,"","draw_circle_sector"],[5,4,1,"","draw_circle_sector_lines"],[5,4,1,"","draw_circle_v"],[5,4,1,"","draw_cube"],[5,4,1,"","draw_cube_v"],[5,4,1,"","draw_cube_wires"],[5,4,1,"","draw_cube_wires_v"],[5,4,1,"","draw_cylinder"],[5,4,1,"","draw_cylinder_ex"],[5,4,1,"","draw_cylinder_wires"],[5,4,1,"","draw_cylinder_wires_ex"],[5,4,1,"","draw_ellipse"],[5,4,1,"","draw_ellipse_lines"],[5,4,1,"","draw_fps"],[5,4,1,"","draw_grid"],[5,4,1,"","draw_line"],[5,4,1,"","draw_line_3d"],[5,4,1,"","draw_line_bezier"],[5,4,1,"","draw_line_ex"],[5,4,1,"","draw_line_strip"],[5,4,1,"","draw_line_v"],[5,4,1,"","draw_mesh"],[5,4,1,"","draw_mesh_instanced"],[5,4,1,"","draw_model"],[5,4,1,"","draw_model_ex"],[5,4,1,"","draw_model_points"],[5,4,1,"","draw_model_points_ex"],[5,4,1,"","draw_model_wires"],[5,4,1,"","draw_model_wires_ex"],[5,4,1,"","draw_pixel"],[5,4,1,"","draw_pixel_v"],[5,4,1,"","draw_plane"],[5,4,1,"","draw_point_3d"],[5,4,1,"","draw_poly"],[5,4,1,"","draw_poly_lines"],[5,4,1,"","draw_poly_lines_ex"],[5,4,1,"","draw_ray"],[5,4,1,"","draw_rectangle"],[5,4,1,"","draw_rectangle_gradient_ex"],[5,4,1,"","draw_rectangle_gradient_h"],[5,4,1,"","draw_rectangle_gradient_v"],[5,4,1,"","draw_rectangle_lines"],[5,4,1,"","draw_rectangle_lines_ex"],[5,4,1,"","draw_rectangle_pro"],[5,4,1,"","draw_rectangle_rec"],[5,4,1,"","draw_rectangle_rounded"],[5,4,1,"","draw_rectangle_rounded_lines"],[5,4,1,"","draw_rectangle_rounded_lines_ex"],[5,4,1,"","draw_rectangle_v"],[5,4,1,"","draw_ring"],[5,4,1,"","draw_ring_lines"],[5,4,1,"","draw_sphere"],[5,4,1,"","draw_sphere_ex"],[5,4,1,"","draw_sphere_wires"],[5,4,1,"","draw_spline_basis"],[5,4,1,"","draw_spline_bezier_cubic"],[5,4,1,"","draw_spline_bezier_quadratic"],[5,4,1,"","draw_spline_catmull_rom"],[5,4,1,"","draw_spline_linear"],[5,4,1,"","draw_spline_segment_basis"],[5,4,1,"","draw_spline_segment_bezier_cubic"],[5,4,1,"","draw_spline_segment_bezier_quadratic"],[5,4,1,"","draw_spline_segment_catmull_rom"],[5,4,1,"","draw_spline_segment_linear"],[5,4,1,"","draw_text"],[5,4,1,"","draw_text_codepoint"],[5,4,1,"","draw_text_codepoints"],[5,4,1,"","draw_text_ex"],[5,4,1,"","draw_text_pro"],[5,4,1,"","draw_texture"],[5,4,1,"","draw_texture_ex"],[5,4,1,"","draw_texture_n_patch"],[5,4,1,"","draw_texture_pro"],[5,4,1,"","draw_texture_rec"],[5,4,1,"","draw_texture_v"],[5,4,1,"","draw_triangle"],[5,4,1,"","draw_triangle_3d"],[5,4,1,"","draw_triangle_fan"],[5,4,1,"","draw_triangle_lines"],[5,4,1,"","draw_triangle_strip"],[5,4,1,"","draw_triangle_strip_3d"],[5,4,1,"","enable_cursor"],[5,4,1,"","enable_event_waiting"],[5,4,1,"","encode_data_base64"],[5,4,1,"","end_blend_mode"],[5,4,1,"","end_drawing"],[5,4,1,"","end_mode_2d"],[5,4,1,"","end_mode_3d"],[5,4,1,"","end_scissor_mode"],[5,4,1,"","end_shader_mode"],[5,4,1,"","end_texture_mode"],[5,4,1,"","end_vr_stereo_mode"],[5,4,1,"","export_automation_event_list"],[5,4,1,"","export_data_as_code"],[5,4,1,"","export_font_as_code"],[5,4,1,"","export_image"],[5,4,1,"","export_image_as_code"],[5,4,1,"","export_image_to_memory"],[5,4,1,"","export_mesh"],[5,4,1,"","export_mesh_as_code"],[5,4,1,"","export_wave"],[5,4,1,"","export_wave_as_code"],[5,4,1,"","fade"],[5,3,1,"","ffi"],[5,4,1,"","file_exists"],[5,1,1,"","float16"],[5,1,1,"","float3"],[5,4,1,"","float_equals"],[5,4,1,"","gen_image_cellular"],[5,4,1,"","gen_image_checked"],[5,4,1,"","gen_image_color"],[5,4,1,"","gen_image_font_atlas"],[5,4,1,"","gen_image_gradient_linear"],[5,4,1,"","gen_image_gradient_radial"],[5,4,1,"","gen_image_gradient_square"],[5,4,1,"","gen_image_perlin_noise"],[5,4,1,"","gen_image_text"],[5,4,1,"","gen_image_white_noise"],[5,4,1,"","gen_mesh_cone"],[5,4,1,"","gen_mesh_cube"],[5,4,1,"","gen_mesh_cubicmap"],[5,4,1,"","gen_mesh_cylinder"],[5,4,1,"","gen_mesh_heightmap"],[5,4,1,"","gen_mesh_hemi_sphere"],[5,4,1,"","gen_mesh_knot"],[5,4,1,"","gen_mesh_plane"],[5,4,1,"","gen_mesh_poly"],[5,4,1,"","gen_mesh_sphere"],[5,4,1,"","gen_mesh_tangents"],[5,4,1,"","gen_mesh_torus"],[5,4,1,"","gen_texture_mipmaps"],[5,4,1,"","get_application_directory"],[5,4,1,"","get_camera_matrix"],[5,4,1,"","get_camera_matrix_2d"],[5,4,1,"","get_char_pressed"],[5,4,1,"","get_clipboard_image"],[5,4,1,"","get_clipboard_text"],[5,4,1,"","get_codepoint"],[5,4,1,"","get_codepoint_count"],[5,4,1,"","get_codepoint_next"],[5,4,1,"","get_codepoint_previous"],[5,4,1,"","get_collision_rec"],[5,4,1,"","get_color"],[5,4,1,"","get_current_monitor"],[5,4,1,"","get_directory_path"],[5,4,1,"","get_file_extension"],[5,4,1,"","get_file_length"],[5,4,1,"","get_file_mod_time"],[5,4,1,"","get_file_name"],[5,4,1,"","get_file_name_without_ext"],[5,4,1,"","get_font_default"],[5,4,1,"","get_fps"],[5,4,1,"","get_frame_time"],[5,4,1,"","get_gamepad_axis_count"],[5,4,1,"","get_gamepad_axis_movement"],[5,4,1,"","get_gamepad_button_pressed"],[5,4,1,"","get_gamepad_name"],[5,4,1,"","get_gesture_detected"],[5,4,1,"","get_gesture_drag_angle"],[5,4,1,"","get_gesture_drag_vector"],[5,4,1,"","get_gesture_hold_duration"],[5,4,1,"","get_gesture_pinch_angle"],[5,4,1,"","get_gesture_pinch_vector"],[5,4,1,"","get_glyph_atlas_rec"],[5,4,1,"","get_glyph_index"],[5,4,1,"","get_glyph_info"],[5,4,1,"","get_image_alpha_border"],[5,4,1,"","get_image_color"],[5,4,1,"","get_key_pressed"],[5,4,1,"","get_master_volume"],[5,4,1,"","get_mesh_bounding_box"],[5,4,1,"","get_model_bounding_box"],[5,4,1,"","get_monitor_count"],[5,4,1,"","get_monitor_height"],[5,4,1,"","get_monitor_name"],[5,4,1,"","get_monitor_physical_height"],[5,4,1,"","get_monitor_physical_width"],[5,4,1,"","get_monitor_position"],[5,4,1,"","get_monitor_refresh_rate"],[5,4,1,"","get_monitor_width"],[5,4,1,"","get_mouse_delta"],[5,4,1,"","get_mouse_position"],[5,4,1,"","get_mouse_wheel_move"],[5,4,1,"","get_mouse_wheel_move_v"],[5,4,1,"","get_mouse_x"],[5,4,1,"","get_mouse_y"],[5,4,1,"","get_music_time_length"],[5,4,1,"","get_music_time_played"],[5,4,1,"","get_physics_bodies_count"],[5,4,1,"","get_physics_body"],[5,4,1,"","get_physics_shape_type"],[5,4,1,"","get_physics_shape_vertex"],[5,4,1,"","get_physics_shape_vertices_count"],[5,4,1,"","get_pixel_color"],[5,4,1,"","get_pixel_data_size"],[5,4,1,"","get_prev_directory_path"],[5,4,1,"","get_random_value"],[5,4,1,"","get_ray_collision_box"],[5,4,1,"","get_ray_collision_mesh"],[5,4,1,"","get_ray_collision_quad"],[5,4,1,"","get_ray_collision_sphere"],[5,4,1,"","get_ray_collision_triangle"],[5,4,1,"","get_render_height"],[5,4,1,"","get_render_width"],[5,4,1,"","get_screen_height"],[5,4,1,"","get_screen_to_world_2d"],[5,4,1,"","get_screen_to_world_ray"],[5,4,1,"","get_screen_to_world_ray_ex"],[5,4,1,"","get_screen_width"],[5,4,1,"","get_shader_location"],[5,4,1,"","get_shader_location_attrib"],[5,4,1,"","get_shapes_texture"],[5,4,1,"","get_shapes_texture_rectangle"],[5,4,1,"","get_spline_point_basis"],[5,4,1,"","get_spline_point_bezier_cubic"],[5,4,1,"","get_spline_point_bezier_quad"],[5,4,1,"","get_spline_point_catmull_rom"],[5,4,1,"","get_spline_point_linear"],[5,4,1,"","get_time"],[5,4,1,"","get_touch_point_count"],[5,4,1,"","get_touch_point_id"],[5,4,1,"","get_touch_position"],[5,4,1,"","get_touch_x"],[5,4,1,"","get_touch_y"],[5,4,1,"","get_window_handle"],[5,4,1,"","get_window_position"],[5,4,1,"","get_window_scale_dpi"],[5,4,1,"","get_working_directory"],[5,4,1,"","get_world_to_screen"],[5,4,1,"","get_world_to_screen_2d"],[5,4,1,"","get_world_to_screen_ex"],[5,4,1,"","glfw_create_cursor"],[5,4,1,"","glfw_create_standard_cursor"],[5,4,1,"","glfw_create_window"],[5,4,1,"","glfw_default_window_hints"],[5,4,1,"","glfw_destroy_cursor"],[5,4,1,"","glfw_destroy_window"],[5,4,1,"","glfw_extension_supported"],[5,4,1,"","glfw_focus_window"],[5,4,1,"","glfw_get_clipboard_string"],[5,4,1,"","glfw_get_current_context"],[5,4,1,"","glfw_get_cursor_pos"],[5,4,1,"","glfw_get_error"],[5,4,1,"","glfw_get_framebuffer_size"],[5,4,1,"","glfw_get_gamepad_name"],[5,4,1,"","glfw_get_gamepad_state"],[5,4,1,"","glfw_get_gamma_ramp"],[5,4,1,"","glfw_get_input_mode"],[5,4,1,"","glfw_get_joystick_axes"],[5,4,1,"","glfw_get_joystick_buttons"],[5,4,1,"","glfw_get_joystick_guid"],[5,4,1,"","glfw_get_joystick_hats"],[5,4,1,"","glfw_get_joystick_name"],[5,4,1,"","glfw_get_joystick_user_pointer"],[5,4,1,"","glfw_get_key"],[5,4,1,"","glfw_get_key_name"],[5,4,1,"","glfw_get_key_scancode"],[5,4,1,"","glfw_get_monitor_content_scale"],[5,4,1,"","glfw_get_monitor_name"],[5,4,1,"","glfw_get_monitor_physical_size"],[5,4,1,"","glfw_get_monitor_pos"],[5,4,1,"","glfw_get_monitor_user_pointer"],[5,4,1,"","glfw_get_monitor_workarea"],[5,4,1,"","glfw_get_monitors"],[5,4,1,"","glfw_get_mouse_button"],[5,4,1,"","glfw_get_platform"],[5,4,1,"","glfw_get_primary_monitor"],[5,4,1,"","glfw_get_proc_address"],[5,4,1,"","glfw_get_required_instance_extensions"],[5,4,1,"","glfw_get_time"],[5,4,1,"","glfw_get_timer_frequency"],[5,4,1,"","glfw_get_timer_value"],[5,4,1,"","glfw_get_version"],[5,4,1,"","glfw_get_version_string"],[5,4,1,"","glfw_get_video_mode"],[5,4,1,"","glfw_get_video_modes"],[5,4,1,"","glfw_get_window_attrib"],[5,4,1,"","glfw_get_window_content_scale"],[5,4,1,"","glfw_get_window_frame_size"],[5,4,1,"","glfw_get_window_monitor"],[5,4,1,"","glfw_get_window_opacity"],[5,4,1,"","glfw_get_window_pos"],[5,4,1,"","glfw_get_window_size"],[5,4,1,"","glfw_get_window_title"],[5,4,1,"","glfw_get_window_user_pointer"],[5,4,1,"","glfw_hide_window"],[5,4,1,"","glfw_iconify_window"],[5,4,1,"","glfw_init"],[5,4,1,"","glfw_init_allocator"],[5,4,1,"","glfw_init_hint"],[5,4,1,"","glfw_joystick_is_gamepad"],[5,4,1,"","glfw_joystick_present"],[5,4,1,"","glfw_make_context_current"],[5,4,1,"","glfw_maximize_window"],[5,4,1,"","glfw_platform_supported"],[5,4,1,"","glfw_poll_events"],[5,4,1,"","glfw_post_empty_event"],[5,4,1,"","glfw_raw_mouse_motion_supported"],[5,4,1,"","glfw_request_window_attention"],[5,4,1,"","glfw_restore_window"],[5,4,1,"","glfw_set_char_callback"],[5,4,1,"","glfw_set_char_mods_callback"],[5,4,1,"","glfw_set_clipboard_string"],[5,4,1,"","glfw_set_cursor"],[5,4,1,"","glfw_set_cursor_enter_callback"],[5,4,1,"","glfw_set_cursor_pos"],[5,4,1,"","glfw_set_cursor_pos_callback"],[5,4,1,"","glfw_set_drop_callback"],[5,4,1,"","glfw_set_error_callback"],[5,4,1,"","glfw_set_framebuffer_size_callback"],[5,4,1,"","glfw_set_gamma"],[5,4,1,"","glfw_set_gamma_ramp"],[5,4,1,"","glfw_set_input_mode"],[5,4,1,"","glfw_set_joystick_callback"],[5,4,1,"","glfw_set_joystick_user_pointer"],[5,4,1,"","glfw_set_key_callback"],[5,4,1,"","glfw_set_monitor_callback"],[5,4,1,"","glfw_set_monitor_user_pointer"],[5,4,1,"","glfw_set_mouse_button_callback"],[5,4,1,"","glfw_set_scroll_callback"],[5,4,1,"","glfw_set_time"],[5,4,1,"","glfw_set_window_aspect_ratio"],[5,4,1,"","glfw_set_window_attrib"],[5,4,1,"","glfw_set_window_close_callback"],[5,4,1,"","glfw_set_window_content_scale_callback"],[5,4,1,"","glfw_set_window_focus_callback"],[5,4,1,"","glfw_set_window_icon"],[5,4,1,"","glfw_set_window_iconify_callback"],[5,4,1,"","glfw_set_window_maximize_callback"],[5,4,1,"","glfw_set_window_monitor"],[5,4,1,"","glfw_set_window_opacity"],[5,4,1,"","glfw_set_window_pos"],[5,4,1,"","glfw_set_window_pos_callback"],[5,4,1,"","glfw_set_window_refresh_callback"],[5,4,1,"","glfw_set_window_should_close"],[5,4,1,"","glfw_set_window_size"],[5,4,1,"","glfw_set_window_size_callback"],[5,4,1,"","glfw_set_window_size_limits"],[5,4,1,"","glfw_set_window_title"],[5,4,1,"","glfw_set_window_user_pointer"],[5,4,1,"","glfw_show_window"],[5,4,1,"","glfw_swap_buffers"],[5,4,1,"","glfw_swap_interval"],[5,4,1,"","glfw_terminate"],[5,4,1,"","glfw_update_gamepad_mappings"],[5,4,1,"","glfw_vulkan_supported"],[5,4,1,"","glfw_wait_events"],[5,4,1,"","glfw_wait_events_timeout"],[5,4,1,"","glfw_window_hint"],[5,4,1,"","glfw_window_hint_string"],[5,4,1,"","glfw_window_should_close"],[5,4,1,"","gui_button"],[5,4,1,"","gui_check_box"],[5,4,1,"","gui_color_bar_alpha"],[5,4,1,"","gui_color_bar_hue"],[5,4,1,"","gui_color_panel"],[5,4,1,"","gui_color_panel_hsv"],[5,4,1,"","gui_color_picker"],[5,4,1,"","gui_color_picker_hsv"],[5,4,1,"","gui_combo_box"],[5,4,1,"","gui_disable"],[5,4,1,"","gui_disable_tooltip"],[5,4,1,"","gui_draw_icon"],[5,4,1,"","gui_dropdown_box"],[5,4,1,"","gui_dummy_rec"],[5,4,1,"","gui_enable"],[5,4,1,"","gui_enable_tooltip"],[5,4,1,"","gui_get_font"],[5,4,1,"","gui_get_icons"],[5,4,1,"","gui_get_state"],[5,4,1,"","gui_get_style"],[5,4,1,"","gui_grid"],[5,4,1,"","gui_group_box"],[5,4,1,"","gui_icon_text"],[5,4,1,"","gui_is_locked"],[5,4,1,"","gui_label"],[5,4,1,"","gui_label_button"],[5,4,1,"","gui_line"],[5,4,1,"","gui_list_view"],[5,4,1,"","gui_list_view_ex"],[5,4,1,"","gui_load_icons"],[5,4,1,"","gui_load_style"],[5,4,1,"","gui_load_style_default"],[5,4,1,"","gui_lock"],[5,4,1,"","gui_message_box"],[5,4,1,"","gui_panel"],[5,4,1,"","gui_progress_bar"],[5,4,1,"","gui_scroll_panel"],[5,4,1,"","gui_set_alpha"],[5,4,1,"","gui_set_font"],[5,4,1,"","gui_set_icon_scale"],[5,4,1,"","gui_set_state"],[5,4,1,"","gui_set_style"],[5,4,1,"","gui_set_tooltip"],[5,4,1,"","gui_slider"],[5,4,1,"","gui_slider_bar"],[5,4,1,"","gui_spinner"],[5,4,1,"","gui_status_bar"],[5,4,1,"","gui_tab_bar"],[5,4,1,"","gui_text_box"],[5,4,1,"","gui_text_input_box"],[5,4,1,"","gui_toggle"],[5,4,1,"","gui_toggle_group"],[5,4,1,"","gui_toggle_slider"],[5,4,1,"","gui_unlock"],[5,4,1,"","gui_value_box"],[5,4,1,"","gui_value_box_float"],[5,4,1,"","gui_window_box"],[5,4,1,"","hide_cursor"],[5,4,1,"","image_alpha_clear"],[5,4,1,"","image_alpha_crop"],[5,4,1,"","image_alpha_mask"],[5,4,1,"","image_alpha_premultiply"],[5,4,1,"","image_blur_gaussian"],[5,4,1,"","image_clear_background"],[5,4,1,"","image_color_brightness"],[5,4,1,"","image_color_contrast"],[5,4,1,"","image_color_grayscale"],[5,4,1,"","image_color_invert"],[5,4,1,"","image_color_replace"],[5,4,1,"","image_color_tint"],[5,4,1,"","image_copy"],[5,4,1,"","image_crop"],[5,4,1,"","image_dither"],[5,4,1,"","image_draw"],[5,4,1,"","image_draw_circle"],[5,4,1,"","image_draw_circle_lines"],[5,4,1,"","image_draw_circle_lines_v"],[5,4,1,"","image_draw_circle_v"],[5,4,1,"","image_draw_line"],[5,4,1,"","image_draw_line_ex"],[5,4,1,"","image_draw_line_v"],[5,4,1,"","image_draw_pixel"],[5,4,1,"","image_draw_pixel_v"],[5,4,1,"","image_draw_rectangle"],[5,4,1,"","image_draw_rectangle_lines"],[5,4,1,"","image_draw_rectangle_rec"],[5,4,1,"","image_draw_rectangle_v"],[5,4,1,"","image_draw_text"],[5,4,1,"","image_draw_text_ex"],[5,4,1,"","image_draw_triangle"],[5,4,1,"","image_draw_triangle_ex"],[5,4,1,"","image_draw_triangle_fan"],[5,4,1,"","image_draw_triangle_lines"],[5,4,1,"","image_draw_triangle_strip"],[5,4,1,"","image_flip_horizontal"],[5,4,1,"","image_flip_vertical"],[5,4,1,"","image_format"],[5,4,1,"","image_from_channel"],[5,4,1,"","image_from_image"],[5,4,1,"","image_kernel_convolution"],[5,4,1,"","image_mipmaps"],[5,4,1,"","image_resize"],[5,4,1,"","image_resize_canvas"],[5,4,1,"","image_resize_nn"],[5,4,1,"","image_rotate"],[5,4,1,"","image_rotate_ccw"],[5,4,1,"","image_rotate_cw"],[5,4,1,"","image_text"],[5,4,1,"","image_text_ex"],[5,4,1,"","image_to_pot"],[5,4,1,"","init_audio_device"],[5,4,1,"","init_physics"],[5,4,1,"","init_window"],[5,4,1,"","is_audio_device_ready"],[5,4,1,"","is_audio_stream_playing"],[5,4,1,"","is_audio_stream_processed"],[5,4,1,"","is_audio_stream_valid"],[5,4,1,"","is_cursor_hidden"],[5,4,1,"","is_cursor_on_screen"],[5,4,1,"","is_file_dropped"],[5,4,1,"","is_file_extension"],[5,4,1,"","is_file_name_valid"],[5,4,1,"","is_font_valid"],[5,4,1,"","is_gamepad_available"],[5,4,1,"","is_gamepad_button_down"],[5,4,1,"","is_gamepad_button_pressed"],[5,4,1,"","is_gamepad_button_released"],[5,4,1,"","is_gamepad_button_up"],[5,4,1,"","is_gesture_detected"],[5,4,1,"","is_image_valid"],[5,4,1,"","is_key_down"],[5,4,1,"","is_key_pressed"],[5,4,1,"","is_key_pressed_repeat"],[5,4,1,"","is_key_released"],[5,4,1,"","is_key_up"],[5,4,1,"","is_material_valid"],[5,4,1,"","is_model_animation_valid"],[5,4,1,"","is_model_valid"],[5,4,1,"","is_mouse_button_down"],[5,4,1,"","is_mouse_button_pressed"],[5,4,1,"","is_mouse_button_released"],[5,4,1,"","is_mouse_button_up"],[5,4,1,"","is_music_stream_playing"],[5,4,1,"","is_music_valid"],[5,4,1,"","is_path_file"],[5,4,1,"","is_render_texture_valid"],[5,4,1,"","is_shader_valid"],[5,4,1,"","is_sound_playing"],[5,4,1,"","is_sound_valid"],[5,4,1,"","is_texture_valid"],[5,4,1,"","is_wave_valid"],[5,4,1,"","is_window_focused"],[5,4,1,"","is_window_fullscreen"],[5,4,1,"","is_window_hidden"],[5,4,1,"","is_window_maximized"],[5,4,1,"","is_window_minimized"],[5,4,1,"","is_window_ready"],[5,4,1,"","is_window_resized"],[5,4,1,"","is_window_state"],[5,4,1,"","lerp"],[5,4,1,"","load_audio_stream"],[5,4,1,"","load_automation_event_list"],[5,4,1,"","load_codepoints"],[5,4,1,"","load_directory_files"],[5,4,1,"","load_directory_files_ex"],[5,4,1,"","load_dropped_files"],[5,4,1,"","load_file_data"],[5,4,1,"","load_file_text"],[5,4,1,"","load_font"],[5,4,1,"","load_font_data"],[5,4,1,"","load_font_ex"],[5,4,1,"","load_font_from_image"],[5,4,1,"","load_font_from_memory"],[5,4,1,"","load_image"],[5,4,1,"","load_image_anim"],[5,4,1,"","load_image_anim_from_memory"],[5,4,1,"","load_image_colors"],[5,4,1,"","load_image_from_memory"],[5,4,1,"","load_image_from_screen"],[5,4,1,"","load_image_from_texture"],[5,4,1,"","load_image_palette"],[5,4,1,"","load_image_raw"],[5,4,1,"","load_material_default"],[5,4,1,"","load_materials"],[5,4,1,"","load_model"],[5,4,1,"","load_model_animations"],[5,4,1,"","load_model_from_mesh"],[5,4,1,"","load_music_stream"],[5,4,1,"","load_music_stream_from_memory"],[5,4,1,"","load_random_sequence"],[5,4,1,"","load_render_texture"],[5,4,1,"","load_shader"],[5,4,1,"","load_shader_from_memory"],[5,4,1,"","load_sound"],[5,4,1,"","load_sound_alias"],[5,4,1,"","load_sound_from_wave"],[5,4,1,"","load_texture"],[5,4,1,"","load_texture_cubemap"],[5,4,1,"","load_texture_from_image"],[5,4,1,"","load_utf8"],[5,4,1,"","load_vr_stereo_config"],[5,4,1,"","load_wave"],[5,4,1,"","load_wave_from_memory"],[5,4,1,"","load_wave_samples"],[5,4,1,"","make_directory"],[5,4,1,"","matrix_add"],[5,4,1,"","matrix_decompose"],[5,4,1,"","matrix_determinant"],[5,4,1,"","matrix_frustum"],[5,4,1,"","matrix_identity"],[5,4,1,"","matrix_invert"],[5,4,1,"","matrix_look_at"],[5,4,1,"","matrix_multiply"],[5,4,1,"","matrix_ortho"],[5,4,1,"","matrix_perspective"],[5,4,1,"","matrix_rotate"],[5,4,1,"","matrix_rotate_x"],[5,4,1,"","matrix_rotate_xyz"],[5,4,1,"","matrix_rotate_y"],[5,4,1,"","matrix_rotate_z"],[5,4,1,"","matrix_rotate_zyx"],[5,4,1,"","matrix_scale"],[5,4,1,"","matrix_subtract"],[5,4,1,"","matrix_to_float_v"],[5,4,1,"","matrix_trace"],[5,4,1,"","matrix_translate"],[5,4,1,"","matrix_transpose"],[5,4,1,"","maximize_window"],[5,4,1,"","measure_text"],[5,4,1,"","measure_text_ex"],[5,4,1,"","mem_alloc"],[5,4,1,"","mem_free"],[5,4,1,"","mem_realloc"],[5,4,1,"","minimize_window"],[5,4,1,"","normalize"],[5,4,1,"","open_url"],[5,4,1,"","pause_audio_stream"],[5,4,1,"","pause_music_stream"],[5,4,1,"","pause_sound"],[5,4,1,"","physics_add_force"],[5,4,1,"","physics_add_torque"],[5,4,1,"","physics_shatter"],[5,4,1,"","play_audio_stream"],[5,4,1,"","play_automation_event"],[5,4,1,"","play_music_stream"],[5,4,1,"","play_sound"],[5,4,1,"","poll_input_events"],[5,4,1,"","quaternion_add"],[5,4,1,"","quaternion_add_value"],[5,4,1,"","quaternion_cubic_hermite_spline"],[5,4,1,"","quaternion_divide"],[5,4,1,"","quaternion_equals"],[5,4,1,"","quaternion_from_axis_angle"],[5,4,1,"","quaternion_from_euler"],[5,4,1,"","quaternion_from_matrix"],[5,4,1,"","quaternion_from_vector3_to_vector3"],[5,4,1,"","quaternion_identity"],[5,4,1,"","quaternion_invert"],[5,4,1,"","quaternion_length"],[5,4,1,"","quaternion_lerp"],[5,4,1,"","quaternion_multiply"],[5,4,1,"","quaternion_nlerp"],[5,4,1,"","quaternion_normalize"],[5,4,1,"","quaternion_scale"],[5,4,1,"","quaternion_slerp"],[5,4,1,"","quaternion_subtract"],[5,4,1,"","quaternion_subtract_value"],[5,4,1,"","quaternion_to_axis_angle"],[5,4,1,"","quaternion_to_euler"],[5,4,1,"","quaternion_to_matrix"],[5,4,1,"","quaternion_transform"],[5,4,1,"","remap"],[5,4,1,"","reset_physics"],[5,4,1,"","restore_window"],[5,4,1,"","resume_audio_stream"],[5,4,1,"","resume_music_stream"],[5,4,1,"","resume_sound"],[5,1,1,"","rlBlendMode"],[5,1,1,"","rlCullMode"],[5,1,1,"","rlDrawCall"],[5,1,1,"","rlFramebufferAttachTextureType"],[5,1,1,"","rlFramebufferAttachType"],[5,1,1,"","rlGlVersion"],[5,1,1,"","rlPixelFormat"],[5,1,1,"","rlRenderBatch"],[5,1,1,"","rlShaderAttributeDataType"],[5,1,1,"","rlShaderLocationIndex"],[5,1,1,"","rlShaderUniformDataType"],[5,1,1,"","rlTextureFilter"],[5,1,1,"","rlTraceLogLevel"],[5,1,1,"","rlVertexBuffer"],[5,4,1,"","rl_active_draw_buffers"],[5,4,1,"","rl_active_texture_slot"],[5,4,1,"","rl_begin"],[5,4,1,"","rl_bind_framebuffer"],[5,4,1,"","rl_bind_image_texture"],[5,4,1,"","rl_bind_shader_buffer"],[5,4,1,"","rl_blit_framebuffer"],[5,4,1,"","rl_check_errors"],[5,4,1,"","rl_check_render_batch_limit"],[5,4,1,"","rl_clear_color"],[5,4,1,"","rl_clear_screen_buffers"],[5,4,1,"","rl_color3f"],[5,4,1,"","rl_color4f"],[5,4,1,"","rl_color4ub"],[5,4,1,"","rl_color_mask"],[5,4,1,"","rl_compile_shader"],[5,4,1,"","rl_compute_shader_dispatch"],[5,4,1,"","rl_copy_shader_buffer"],[5,4,1,"","rl_cubemap_parameters"],[5,4,1,"","rl_disable_backface_culling"],[5,4,1,"","rl_disable_color_blend"],[5,4,1,"","rl_disable_depth_mask"],[5,4,1,"","rl_disable_depth_test"],[5,4,1,"","rl_disable_framebuffer"],[5,4,1,"","rl_disable_scissor_test"],[5,4,1,"","rl_disable_shader"],[5,4,1,"","rl_disable_smooth_lines"],[5,4,1,"","rl_disable_stereo_render"],[5,4,1,"","rl_disable_texture"],[5,4,1,"","rl_disable_texture_cubemap"],[5,4,1,"","rl_disable_vertex_array"],[5,4,1,"","rl_disable_vertex_attribute"],[5,4,1,"","rl_disable_vertex_buffer"],[5,4,1,"","rl_disable_vertex_buffer_element"],[5,4,1,"","rl_disable_wire_mode"],[5,4,1,"","rl_draw_render_batch"],[5,4,1,"","rl_draw_render_batch_active"],[5,4,1,"","rl_draw_vertex_array"],[5,4,1,"","rl_draw_vertex_array_elements"],[5,4,1,"","rl_draw_vertex_array_elements_instanced"],[5,4,1,"","rl_draw_vertex_array_instanced"],[5,4,1,"","rl_enable_backface_culling"],[5,4,1,"","rl_enable_color_blend"],[5,4,1,"","rl_enable_depth_mask"],[5,4,1,"","rl_enable_depth_test"],[5,4,1,"","rl_enable_framebuffer"],[5,4,1,"","rl_enable_point_mode"],[5,4,1,"","rl_enable_scissor_test"],[5,4,1,"","rl_enable_shader"],[5,4,1,"","rl_enable_smooth_lines"],[5,4,1,"","rl_enable_stereo_render"],[5,4,1,"","rl_enable_texture"],[5,4,1,"","rl_enable_texture_cubemap"],[5,4,1,"","rl_enable_vertex_array"],[5,4,1,"","rl_enable_vertex_attribute"],[5,4,1,"","rl_enable_vertex_buffer"],[5,4,1,"","rl_enable_vertex_buffer_element"],[5,4,1,"","rl_enable_wire_mode"],[5,4,1,"","rl_end"],[5,4,1,"","rl_framebuffer_attach"],[5,4,1,"","rl_framebuffer_complete"],[5,4,1,"","rl_frustum"],[5,4,1,"","rl_gen_texture_mipmaps"],[5,4,1,"","rl_get_active_framebuffer"],[5,4,1,"","rl_get_cull_distance_far"],[5,4,1,"","rl_get_cull_distance_near"],[5,4,1,"","rl_get_framebuffer_height"],[5,4,1,"","rl_get_framebuffer_width"],[5,4,1,"","rl_get_gl_texture_formats"],[5,4,1,"","rl_get_line_width"],[5,4,1,"","rl_get_location_attrib"],[5,4,1,"","rl_get_location_uniform"],[5,4,1,"","rl_get_matrix_modelview"],[5,4,1,"","rl_get_matrix_projection"],[5,4,1,"","rl_get_matrix_projection_stereo"],[5,4,1,"","rl_get_matrix_transform"],[5,4,1,"","rl_get_matrix_view_offset_stereo"],[5,4,1,"","rl_get_pixel_format_name"],[5,4,1,"","rl_get_shader_buffer_size"],[5,4,1,"","rl_get_shader_id_default"],[5,4,1,"","rl_get_shader_locs_default"],[5,4,1,"","rl_get_texture_id_default"],[5,4,1,"","rl_get_version"],[5,4,1,"","rl_is_stereo_render_enabled"],[5,4,1,"","rl_load_compute_shader_program"],[5,4,1,"","rl_load_draw_cube"],[5,4,1,"","rl_load_draw_quad"],[5,4,1,"","rl_load_extensions"],[5,4,1,"","rl_load_framebuffer"],[5,4,1,"","rl_load_identity"],[5,4,1,"","rl_load_render_batch"],[5,4,1,"","rl_load_shader_buffer"],[5,4,1,"","rl_load_shader_code"],[5,4,1,"","rl_load_shader_program"],[5,4,1,"","rl_load_texture"],[5,4,1,"","rl_load_texture_cubemap"],[5,4,1,"","rl_load_texture_depth"],[5,4,1,"","rl_load_vertex_array"],[5,4,1,"","rl_load_vertex_buffer"],[5,4,1,"","rl_load_vertex_buffer_element"],[5,4,1,"","rl_matrix_mode"],[5,4,1,"","rl_mult_matrixf"],[5,4,1,"","rl_normal3f"],[5,4,1,"","rl_ortho"],[5,4,1,"","rl_pop_matrix"],[5,4,1,"","rl_push_matrix"],[5,4,1,"","rl_read_screen_pixels"],[5,4,1,"","rl_read_shader_buffer"],[5,4,1,"","rl_read_texture_pixels"],[5,4,1,"","rl_rotatef"],[5,4,1,"","rl_scalef"],[5,4,1,"","rl_scissor"],[5,4,1,"","rl_set_blend_factors"],[5,4,1,"","rl_set_blend_factors_separate"],[5,4,1,"","rl_set_blend_mode"],[5,4,1,"","rl_set_clip_planes"],[5,4,1,"","rl_set_cull_face"],[5,4,1,"","rl_set_framebuffer_height"],[5,4,1,"","rl_set_framebuffer_width"],[5,4,1,"","rl_set_line_width"],[5,4,1,"","rl_set_matrix_modelview"],[5,4,1,"","rl_set_matrix_projection"],[5,4,1,"","rl_set_matrix_projection_stereo"],[5,4,1,"","rl_set_matrix_view_offset_stereo"],[5,4,1,"","rl_set_render_batch_active"],[5,4,1,"","rl_set_shader"],[5,4,1,"","rl_set_texture"],[5,4,1,"","rl_set_uniform"],[5,4,1,"","rl_set_uniform_matrices"],[5,4,1,"","rl_set_uniform_matrix"],[5,4,1,"","rl_set_uniform_sampler"],[5,4,1,"","rl_set_vertex_attribute"],[5,4,1,"","rl_set_vertex_attribute_default"],[5,4,1,"","rl_set_vertex_attribute_divisor"],[5,4,1,"","rl_tex_coord2f"],[5,4,1,"","rl_texture_parameters"],[5,4,1,"","rl_translatef"],[5,4,1,"","rl_unload_framebuffer"],[5,4,1,"","rl_unload_render_batch"],[5,4,1,"","rl_unload_shader_buffer"],[5,4,1,"","rl_unload_shader_program"],[5,4,1,"","rl_unload_texture"],[5,4,1,"","rl_unload_vertex_array"],[5,4,1,"","rl_unload_vertex_buffer"],[5,4,1,"","rl_update_shader_buffer"],[5,4,1,"","rl_update_texture"],[5,4,1,"","rl_update_vertex_buffer"],[5,4,1,"","rl_update_vertex_buffer_elements"],[5,4,1,"","rl_vertex2f"],[5,4,1,"","rl_vertex2i"],[5,4,1,"","rl_vertex3f"],[5,4,1,"","rl_viewport"],[5,4,1,"","rlgl_close"],[5,4,1,"","rlgl_init"],[5,4,1,"","save_file_data"],[5,4,1,"","save_file_text"],[5,4,1,"","seek_music_stream"],[5,4,1,"","set_audio_stream_buffer_size_default"],[5,4,1,"","set_audio_stream_callback"],[5,4,1,"","set_audio_stream_pan"],[5,4,1,"","set_audio_stream_pitch"],[5,4,1,"","set_audio_stream_volume"],[5,4,1,"","set_automation_event_base_frame"],[5,4,1,"","set_automation_event_list"],[5,4,1,"","set_clipboard_text"],[5,4,1,"","set_config_flags"],[5,4,1,"","set_exit_key"],[5,4,1,"","set_gamepad_mappings"],[5,4,1,"","set_gamepad_vibration"],[5,4,1,"","set_gestures_enabled"],[5,4,1,"","set_load_file_data_callback"],[5,4,1,"","set_load_file_text_callback"],[5,4,1,"","set_master_volume"],[5,4,1,"","set_material_texture"],[5,4,1,"","set_model_mesh_material"],[5,4,1,"","set_mouse_cursor"],[5,4,1,"","set_mouse_offset"],[5,4,1,"","set_mouse_position"],[5,4,1,"","set_mouse_scale"],[5,4,1,"","set_music_pan"],[5,4,1,"","set_music_pitch"],[5,4,1,"","set_music_volume"],[5,4,1,"","set_physics_body_rotation"],[5,4,1,"","set_physics_gravity"],[5,4,1,"","set_physics_time_step"],[5,4,1,"","set_pixel_color"],[5,4,1,"","set_random_seed"],[5,4,1,"","set_save_file_data_callback"],[5,4,1,"","set_save_file_text_callback"],[5,4,1,"","set_shader_value"],[5,4,1,"","set_shader_value_matrix"],[5,4,1,"","set_shader_value_texture"],[5,4,1,"","set_shader_value_v"],[5,4,1,"","set_shapes_texture"],[5,4,1,"","set_sound_pan"],[5,4,1,"","set_sound_pitch"],[5,4,1,"","set_sound_volume"],[5,4,1,"","set_target_fps"],[5,4,1,"","set_text_line_spacing"],[5,4,1,"","set_texture_filter"],[5,4,1,"","set_texture_wrap"],[5,4,1,"","set_trace_log_callback"],[5,4,1,"","set_trace_log_level"],[5,4,1,"","set_window_focused"],[5,4,1,"","set_window_icon"],[5,4,1,"","set_window_icons"],[5,4,1,"","set_window_max_size"],[5,4,1,"","set_window_min_size"],[5,4,1,"","set_window_monitor"],[5,4,1,"","set_window_opacity"],[5,4,1,"","set_window_position"],[5,4,1,"","set_window_size"],[5,4,1,"","set_window_state"],[5,4,1,"","set_window_title"],[5,4,1,"","show_cursor"],[5,4,1,"","start_automation_event_recording"],[5,4,1,"","stop_audio_stream"],[5,4,1,"","stop_automation_event_recording"],[5,4,1,"","stop_music_stream"],[5,4,1,"","stop_sound"],[5,4,1,"","swap_screen_buffer"],[5,4,1,"","take_screenshot"],[5,4,1,"","text_append"],[5,4,1,"","text_copy"],[5,4,1,"","text_find_index"],[5,4,1,"","text_format"],[5,4,1,"","text_insert"],[5,4,1,"","text_is_equal"],[5,4,1,"","text_join"],[5,4,1,"","text_length"],[5,4,1,"","text_replace"],[5,4,1,"","text_split"],[5,4,1,"","text_subtext"],[5,4,1,"","text_to_camel"],[5,4,1,"","text_to_float"],[5,4,1,"","text_to_integer"],[5,4,1,"","text_to_lower"],[5,4,1,"","text_to_pascal"],[5,4,1,"","text_to_snake"],[5,4,1,"","text_to_upper"],[5,4,1,"","toggle_borderless_windowed"],[5,4,1,"","toggle_fullscreen"],[5,4,1,"","trace_log"],[5,4,1,"","unload_audio_stream"],[5,4,1,"","unload_automation_event_list"],[5,4,1,"","unload_codepoints"],[5,4,1,"","unload_directory_files"],[5,4,1,"","unload_dropped_files"],[5,4,1,"","unload_file_data"],[5,4,1,"","unload_file_text"],[5,4,1,"","unload_font"],[5,4,1,"","unload_font_data"],[5,4,1,"","unload_image"],[5,4,1,"","unload_image_colors"],[5,4,1,"","unload_image_palette"],[5,4,1,"","unload_material"],[5,4,1,"","unload_mesh"],[5,4,1,"","unload_model"],[5,4,1,"","unload_model_animation"],[5,4,1,"","unload_model_animations"],[5,4,1,"","unload_music_stream"],[5,4,1,"","unload_random_sequence"],[5,4,1,"","unload_render_texture"],[5,4,1,"","unload_shader"],[5,4,1,"","unload_sound"],[5,4,1,"","unload_sound_alias"],[5,4,1,"","unload_texture"],[5,4,1,"","unload_utf8"],[5,4,1,"","unload_vr_stereo_config"],[5,4,1,"","unload_wave"],[5,4,1,"","unload_wave_samples"],[5,4,1,"","update_audio_stream"],[5,4,1,"","update_camera"],[5,4,1,"","update_camera_pro"],[5,4,1,"","update_mesh_buffer"],[5,4,1,"","update_model_animation"],[5,4,1,"","update_model_animation_bones"],[5,4,1,"","update_music_stream"],[5,4,1,"","update_physics"],[5,4,1,"","update_sound"],[5,4,1,"","update_texture"],[5,4,1,"","update_texture_rec"],[5,4,1,"","upload_mesh"],[5,4,1,"","vector2_add"],[5,4,1,"","vector2_add_value"],[5,4,1,"","vector2_angle"],[5,4,1,"","vector2_clamp"],[5,4,1,"","vector2_clamp_value"],[5,4,1,"","vector2_distance"],[5,4,1,"","vector2_distance_sqr"],[5,4,1,"","vector2_divide"],[5,4,1,"","vector2_dot_product"],[5,4,1,"","vector2_equals"],[5,4,1,"","vector2_invert"],[5,4,1,"","vector2_length"],[5,4,1,"","vector2_length_sqr"],[5,4,1,"","vector2_lerp"],[5,4,1,"","vector2_line_angle"],[5,4,1,"","vector2_max"],[5,4,1,"","vector2_min"],[5,4,1,"","vector2_move_towards"],[5,4,1,"","vector2_multiply"],[5,4,1,"","vector2_negate"],[5,4,1,"","vector2_normalize"],[5,4,1,"","vector2_one"],[5,4,1,"","vector2_reflect"],[5,4,1,"","vector2_refract"],[5,4,1,"","vector2_rotate"],[5,4,1,"","vector2_scale"],[5,4,1,"","vector2_subtract"],[5,4,1,"","vector2_subtract_value"],[5,4,1,"","vector2_transform"],[5,4,1,"","vector2_zero"],[5,4,1,"","vector3_add"],[5,4,1,"","vector3_add_value"],[5,4,1,"","vector3_angle"],[5,4,1,"","vector3_barycenter"],[5,4,1,"","vector3_clamp"],[5,4,1,"","vector3_clamp_value"],[5,4,1,"","vector3_cross_product"],[5,4,1,"","vector3_cubic_hermite"],[5,4,1,"","vector3_distance"],[5,4,1,"","vector3_distance_sqr"],[5,4,1,"","vector3_divide"],[5,4,1,"","vector3_dot_product"],[5,4,1,"","vector3_equals"],[5,4,1,"","vector3_invert"],[5,4,1,"","vector3_length"],[5,4,1,"","vector3_length_sqr"],[5,4,1,"","vector3_lerp"],[5,4,1,"","vector3_max"],[5,4,1,"","vector3_min"],[5,4,1,"","vector3_move_towards"],[5,4,1,"","vector3_multiply"],[5,4,1,"","vector3_negate"],[5,4,1,"","vector3_normalize"],[5,4,1,"","vector3_one"],[5,4,1,"","vector3_ortho_normalize"],[5,4,1,"","vector3_perpendicular"],[5,4,1,"","vector3_project"],[5,4,1,"","vector3_reflect"],[5,4,1,"","vector3_refract"],[5,4,1,"","vector3_reject"],[5,4,1,"","vector3_rotate_by_axis_angle"],[5,4,1,"","vector3_rotate_by_quaternion"],[5,4,1,"","vector3_scale"],[5,4,1,"","vector3_subtract"],[5,4,1,"","vector3_subtract_value"],[5,4,1,"","vector3_to_float_v"],[5,4,1,"","vector3_transform"],[5,4,1,"","vector3_unproject"],[5,4,1,"","vector3_zero"],[5,4,1,"","vector4_add"],[5,4,1,"","vector4_add_value"],[5,4,1,"","vector4_distance"],[5,4,1,"","vector4_distance_sqr"],[5,4,1,"","vector4_divide"],[5,4,1,"","vector4_dot_product"],[5,4,1,"","vector4_equals"],[5,4,1,"","vector4_invert"],[5,4,1,"","vector4_length"],[5,4,1,"","vector4_length_sqr"],[5,4,1,"","vector4_lerp"],[5,4,1,"","vector4_max"],[5,4,1,"","vector4_min"],[5,4,1,"","vector4_move_towards"],[5,4,1,"","vector4_multiply"],[5,4,1,"","vector4_negate"],[5,4,1,"","vector4_normalize"],[5,4,1,"","vector4_one"],[5,4,1,"","vector4_scale"],[5,4,1,"","vector4_subtract"],[5,4,1,"","vector4_subtract_value"],[5,4,1,"","vector4_zero"],[5,4,1,"","wait_time"],[5,4,1,"","wave_copy"],[5,4,1,"","wave_crop"],[5,4,1,"","wave_format"],[5,4,1,"","window_should_close"],[5,4,1,"","wrap"]],"pyray.AudioStream":[[5,2,1,"","buffer"],[5,2,1,"","channels"],[5,2,1,"","processor"],[5,2,1,"","sampleRate"],[5,2,1,"","sampleSize"]],"pyray.AutomationEvent":[[5,2,1,"","frame"],[5,2,1,"","params"],[5,2,1,"","type"]],"pyray.AutomationEventList":[[5,2,1,"","capacity"],[5,2,1,"","count"],[5,2,1,"","events"]],"pyray.BlendMode":[[5,2,1,"","BLEND_ADDITIVE"],[5,2,1,"","BLEND_ADD_COLORS"],[5,2,1,"","BLEND_ALPHA"],[5,2,1,"","BLEND_ALPHA_PREMULTIPLY"],[5,2,1,"","BLEND_CUSTOM"],[5,2,1,"","BLEND_CUSTOM_SEPARATE"],[5,2,1,"","BLEND_MULTIPLIED"],[5,2,1,"","BLEND_SUBTRACT_COLORS"]],"pyray.BoneInfo":[[5,2,1,"","name"],[5,2,1,"","parent"]],"pyray.BoundingBox":[[5,2,1,"","max"],[5,2,1,"","min"]],"pyray.Camera2D":[[5,2,1,"","offset"],[5,2,1,"","rotation"],[5,2,1,"","target"],[5,2,1,"","zoom"]],"pyray.Camera3D":[[5,2,1,"","fovy"],[5,2,1,"","position"],[5,2,1,"","projection"],[5,2,1,"","target"],[5,2,1,"","up"]],"pyray.CameraMode":[[5,2,1,"","CAMERA_CUSTOM"],[5,2,1,"","CAMERA_FIRST_PERSON"],[5,2,1,"","CAMERA_FREE"],[5,2,1,"","CAMERA_ORBITAL"],[5,2,1,"","CAMERA_THIRD_PERSON"]],"pyray.CameraProjection":[[5,2,1,"","CAMERA_ORTHOGRAPHIC"],[5,2,1,"","CAMERA_PERSPECTIVE"]],"pyray.Color":[[5,2,1,"","a"],[5,2,1,"","b"],[5,2,1,"","g"],[5,2,1,"","r"]],"pyray.ConfigFlags":[[5,2,1,"","FLAG_BORDERLESS_WINDOWED_MODE"],[5,2,1,"","FLAG_FULLSCREEN_MODE"],[5,2,1,"","FLAG_INTERLACED_HINT"],[5,2,1,"","FLAG_MSAA_4X_HINT"],[5,2,1,"","FLAG_VSYNC_HINT"],[5,2,1,"","FLAG_WINDOW_ALWAYS_RUN"],[5,2,1,"","FLAG_WINDOW_HIDDEN"],[5,2,1,"","FLAG_WINDOW_HIGHDPI"],[5,2,1,"","FLAG_WINDOW_MAXIMIZED"],[5,2,1,"","FLAG_WINDOW_MINIMIZED"],[5,2,1,"","FLAG_WINDOW_MOUSE_PASSTHROUGH"],[5,2,1,"","FLAG_WINDOW_RESIZABLE"],[5,2,1,"","FLAG_WINDOW_TOPMOST"],[5,2,1,"","FLAG_WINDOW_TRANSPARENT"],[5,2,1,"","FLAG_WINDOW_UNDECORATED"],[5,2,1,"","FLAG_WINDOW_UNFOCUSED"]],"pyray.CubemapLayout":[[5,2,1,"","CUBEMAP_LAYOUT_AUTO_DETECT"],[5,2,1,"","CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE"],[5,2,1,"","CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR"],[5,2,1,"","CUBEMAP_LAYOUT_LINE_HORIZONTAL"],[5,2,1,"","CUBEMAP_LAYOUT_LINE_VERTICAL"]],"pyray.FilePathList":[[5,2,1,"","capacity"],[5,2,1,"","count"],[5,2,1,"","paths"]],"pyray.Font":[[5,2,1,"","baseSize"],[5,2,1,"","glyphCount"],[5,2,1,"","glyphPadding"],[5,2,1,"","glyphs"],[5,2,1,"","recs"],[5,2,1,"","texture"]],"pyray.FontType":[[5,2,1,"","FONT_BITMAP"],[5,2,1,"","FONT_DEFAULT"],[5,2,1,"","FONT_SDF"]],"pyray.GamepadAxis":[[5,2,1,"","GAMEPAD_AXIS_LEFT_TRIGGER"],[5,2,1,"","GAMEPAD_AXIS_LEFT_X"],[5,2,1,"","GAMEPAD_AXIS_LEFT_Y"],[5,2,1,"","GAMEPAD_AXIS_RIGHT_TRIGGER"],[5,2,1,"","GAMEPAD_AXIS_RIGHT_X"],[5,2,1,"","GAMEPAD_AXIS_RIGHT_Y"]],"pyray.GamepadButton":[[5,2,1,"","GAMEPAD_BUTTON_LEFT_FACE_DOWN"],[5,2,1,"","GAMEPAD_BUTTON_LEFT_FACE_LEFT"],[5,2,1,"","GAMEPAD_BUTTON_LEFT_FACE_RIGHT"],[5,2,1,"","GAMEPAD_BUTTON_LEFT_FACE_UP"],[5,2,1,"","GAMEPAD_BUTTON_LEFT_THUMB"],[5,2,1,"","GAMEPAD_BUTTON_LEFT_TRIGGER_1"],[5,2,1,"","GAMEPAD_BUTTON_LEFT_TRIGGER_2"],[5,2,1,"","GAMEPAD_BUTTON_MIDDLE"],[5,2,1,"","GAMEPAD_BUTTON_MIDDLE_LEFT"],[5,2,1,"","GAMEPAD_BUTTON_MIDDLE_RIGHT"],[5,2,1,"","GAMEPAD_BUTTON_RIGHT_FACE_DOWN"],[5,2,1,"","GAMEPAD_BUTTON_RIGHT_FACE_LEFT"],[5,2,1,"","GAMEPAD_BUTTON_RIGHT_FACE_RIGHT"],[5,2,1,"","GAMEPAD_BUTTON_RIGHT_FACE_UP"],[5,2,1,"","GAMEPAD_BUTTON_RIGHT_THUMB"],[5,2,1,"","GAMEPAD_BUTTON_RIGHT_TRIGGER_1"],[5,2,1,"","GAMEPAD_BUTTON_RIGHT_TRIGGER_2"],[5,2,1,"","GAMEPAD_BUTTON_UNKNOWN"]],"pyray.Gesture":[[5,2,1,"","GESTURE_DOUBLETAP"],[5,2,1,"","GESTURE_DRAG"],[5,2,1,"","GESTURE_HOLD"],[5,2,1,"","GESTURE_NONE"],[5,2,1,"","GESTURE_PINCH_IN"],[5,2,1,"","GESTURE_PINCH_OUT"],[5,2,1,"","GESTURE_SWIPE_DOWN"],[5,2,1,"","GESTURE_SWIPE_LEFT"],[5,2,1,"","GESTURE_SWIPE_RIGHT"],[5,2,1,"","GESTURE_SWIPE_UP"],[5,2,1,"","GESTURE_TAP"]],"pyray.GlyphInfo":[[5,2,1,"","advanceX"],[5,2,1,"","image"],[5,2,1,"","offsetX"],[5,2,1,"","offsetY"],[5,2,1,"","value"]],"pyray.GuiCheckBoxProperty":[[5,2,1,"","CHECK_PADDING"]],"pyray.GuiColorPickerProperty":[[5,2,1,"","COLOR_SELECTOR_SIZE"],[5,2,1,"","HUEBAR_PADDING"],[5,2,1,"","HUEBAR_SELECTOR_HEIGHT"],[5,2,1,"","HUEBAR_SELECTOR_OVERFLOW"],[5,2,1,"","HUEBAR_WIDTH"]],"pyray.GuiComboBoxProperty":[[5,2,1,"","COMBO_BUTTON_SPACING"],[5,2,1,"","COMBO_BUTTON_WIDTH"]],"pyray.GuiControl":[[5,2,1,"","BUTTON"],[5,2,1,"","CHECKBOX"],[5,2,1,"","COLORPICKER"],[5,2,1,"","COMBOBOX"],[5,2,1,"","DEFAULT"],[5,2,1,"","DROPDOWNBOX"],[5,2,1,"","LABEL"],[5,2,1,"","LISTVIEW"],[5,2,1,"","PROGRESSBAR"],[5,2,1,"","SCROLLBAR"],[5,2,1,"","SLIDER"],[5,2,1,"","SPINNER"],[5,2,1,"","STATUSBAR"],[5,2,1,"","TEXTBOX"],[5,2,1,"","TOGGLE"],[5,2,1,"","VALUEBOX"]],"pyray.GuiControlProperty":[[5,2,1,"","BASE_COLOR_DISABLED"],[5,2,1,"","BASE_COLOR_FOCUSED"],[5,2,1,"","BASE_COLOR_NORMAL"],[5,2,1,"","BASE_COLOR_PRESSED"],[5,2,1,"","BORDER_COLOR_DISABLED"],[5,2,1,"","BORDER_COLOR_FOCUSED"],[5,2,1,"","BORDER_COLOR_NORMAL"],[5,2,1,"","BORDER_COLOR_PRESSED"],[5,2,1,"","BORDER_WIDTH"],[5,2,1,"","TEXT_ALIGNMENT"],[5,2,1,"","TEXT_COLOR_DISABLED"],[5,2,1,"","TEXT_COLOR_FOCUSED"],[5,2,1,"","TEXT_COLOR_NORMAL"],[5,2,1,"","TEXT_COLOR_PRESSED"],[5,2,1,"","TEXT_PADDING"]],"pyray.GuiDefaultProperty":[[5,2,1,"","BACKGROUND_COLOR"],[5,2,1,"","LINE_COLOR"],[5,2,1,"","TEXT_ALIGNMENT_VERTICAL"],[5,2,1,"","TEXT_LINE_SPACING"],[5,2,1,"","TEXT_SIZE"],[5,2,1,"","TEXT_SPACING"],[5,2,1,"","TEXT_WRAP_MODE"]],"pyray.GuiDropdownBoxProperty":[[5,2,1,"","ARROW_PADDING"],[5,2,1,"","DROPDOWN_ARROW_HIDDEN"],[5,2,1,"","DROPDOWN_ITEMS_SPACING"],[5,2,1,"","DROPDOWN_ROLL_UP"]],"pyray.GuiIconName":[[5,2,1,"","ICON_1UP"],[5,2,1,"","ICON_229"],[5,2,1,"","ICON_230"],[5,2,1,"","ICON_231"],[5,2,1,"","ICON_232"],[5,2,1,"","ICON_233"],[5,2,1,"","ICON_234"],[5,2,1,"","ICON_235"],[5,2,1,"","ICON_236"],[5,2,1,"","ICON_237"],[5,2,1,"","ICON_238"],[5,2,1,"","ICON_239"],[5,2,1,"","ICON_240"],[5,2,1,"","ICON_241"],[5,2,1,"","ICON_242"],[5,2,1,"","ICON_243"],[5,2,1,"","ICON_244"],[5,2,1,"","ICON_245"],[5,2,1,"","ICON_246"],[5,2,1,"","ICON_247"],[5,2,1,"","ICON_248"],[5,2,1,"","ICON_249"],[5,2,1,"","ICON_250"],[5,2,1,"","ICON_251"],[5,2,1,"","ICON_252"],[5,2,1,"","ICON_253"],[5,2,1,"","ICON_254"],[5,2,1,"","ICON_255"],[5,2,1,"","ICON_ALARM"],[5,2,1,"","ICON_ALPHA_CLEAR"],[5,2,1,"","ICON_ALPHA_MULTIPLY"],[5,2,1,"","ICON_ARROW_DOWN"],[5,2,1,"","ICON_ARROW_DOWN_FILL"],[5,2,1,"","ICON_ARROW_LEFT"],[5,2,1,"","ICON_ARROW_LEFT_FILL"],[5,2,1,"","ICON_ARROW_RIGHT"],[5,2,1,"","ICON_ARROW_RIGHT_FILL"],[5,2,1,"","ICON_ARROW_UP"],[5,2,1,"","ICON_ARROW_UP_FILL"],[5,2,1,"","ICON_AUDIO"],[5,2,1,"","ICON_BIN"],[5,2,1,"","ICON_BOX"],[5,2,1,"","ICON_BOX_BOTTOM"],[5,2,1,"","ICON_BOX_BOTTOM_LEFT"],[5,2,1,"","ICON_BOX_BOTTOM_RIGHT"],[5,2,1,"","ICON_BOX_CENTER"],[5,2,1,"","ICON_BOX_CIRCLE_MASK"],[5,2,1,"","ICON_BOX_CONCENTRIC"],[5,2,1,"","ICON_BOX_CORNERS_BIG"],[5,2,1,"","ICON_BOX_CORNERS_SMALL"],[5,2,1,"","ICON_BOX_DOTS_BIG"],[5,2,1,"","ICON_BOX_DOTS_SMALL"],[5,2,1,"","ICON_BOX_GRID"],[5,2,1,"","ICON_BOX_GRID_BIG"],[5,2,1,"","ICON_BOX_LEFT"],[5,2,1,"","ICON_BOX_MULTISIZE"],[5,2,1,"","ICON_BOX_RIGHT"],[5,2,1,"","ICON_BOX_TOP"],[5,2,1,"","ICON_BOX_TOP_LEFT"],[5,2,1,"","ICON_BOX_TOP_RIGHT"],[5,2,1,"","ICON_BREAKPOINT_OFF"],[5,2,1,"","ICON_BREAKPOINT_ON"],[5,2,1,"","ICON_BRUSH_CLASSIC"],[5,2,1,"","ICON_BRUSH_PAINTER"],[5,2,1,"","ICON_BURGER_MENU"],[5,2,1,"","ICON_CAMERA"],[5,2,1,"","ICON_CASE_SENSITIVE"],[5,2,1,"","ICON_CLOCK"],[5,2,1,"","ICON_COIN"],[5,2,1,"","ICON_COLOR_BUCKET"],[5,2,1,"","ICON_COLOR_PICKER"],[5,2,1,"","ICON_CORNER"],[5,2,1,"","ICON_CPU"],[5,2,1,"","ICON_CRACK"],[5,2,1,"","ICON_CRACK_POINTS"],[5,2,1,"","ICON_CROP"],[5,2,1,"","ICON_CROP_ALPHA"],[5,2,1,"","ICON_CROSS"],[5,2,1,"","ICON_CROSSLINE"],[5,2,1,"","ICON_CROSS_SMALL"],[5,2,1,"","ICON_CUBE"],[5,2,1,"","ICON_CUBE_FACE_BACK"],[5,2,1,"","ICON_CUBE_FACE_BOTTOM"],[5,2,1,"","ICON_CUBE_FACE_FRONT"],[5,2,1,"","ICON_CUBE_FACE_LEFT"],[5,2,1,"","ICON_CUBE_FACE_RIGHT"],[5,2,1,"","ICON_CUBE_FACE_TOP"],[5,2,1,"","ICON_CURSOR_CLASSIC"],[5,2,1,"","ICON_CURSOR_HAND"],[5,2,1,"","ICON_CURSOR_MOVE"],[5,2,1,"","ICON_CURSOR_MOVE_FILL"],[5,2,1,"","ICON_CURSOR_POINTER"],[5,2,1,"","ICON_CURSOR_SCALE"],[5,2,1,"","ICON_CURSOR_SCALE_FILL"],[5,2,1,"","ICON_CURSOR_SCALE_LEFT"],[5,2,1,"","ICON_CURSOR_SCALE_LEFT_FILL"],[5,2,1,"","ICON_CURSOR_SCALE_RIGHT"],[5,2,1,"","ICON_CURSOR_SCALE_RIGHT_FILL"],[5,2,1,"","ICON_DEMON"],[5,2,1,"","ICON_DITHERING"],[5,2,1,"","ICON_DOOR"],[5,2,1,"","ICON_EMPTYBOX"],[5,2,1,"","ICON_EMPTYBOX_SMALL"],[5,2,1,"","ICON_EXIT"],[5,2,1,"","ICON_EXPLOSION"],[5,2,1,"","ICON_EYE_OFF"],[5,2,1,"","ICON_EYE_ON"],[5,2,1,"","ICON_FILE"],[5,2,1,"","ICON_FILETYPE_ALPHA"],[5,2,1,"","ICON_FILETYPE_AUDIO"],[5,2,1,"","ICON_FILETYPE_BINARY"],[5,2,1,"","ICON_FILETYPE_HOME"],[5,2,1,"","ICON_FILETYPE_IMAGE"],[5,2,1,"","ICON_FILETYPE_INFO"],[5,2,1,"","ICON_FILETYPE_PLAY"],[5,2,1,"","ICON_FILETYPE_TEXT"],[5,2,1,"","ICON_FILETYPE_VIDEO"],[5,2,1,"","ICON_FILE_ADD"],[5,2,1,"","ICON_FILE_COPY"],[5,2,1,"","ICON_FILE_CUT"],[5,2,1,"","ICON_FILE_DELETE"],[5,2,1,"","ICON_FILE_EXPORT"],[5,2,1,"","ICON_FILE_NEW"],[5,2,1,"","ICON_FILE_OPEN"],[5,2,1,"","ICON_FILE_PASTE"],[5,2,1,"","ICON_FILE_SAVE"],[5,2,1,"","ICON_FILE_SAVE_CLASSIC"],[5,2,1,"","ICON_FILTER"],[5,2,1,"","ICON_FILTER_BILINEAR"],[5,2,1,"","ICON_FILTER_POINT"],[5,2,1,"","ICON_FILTER_TOP"],[5,2,1,"","ICON_FOLDER"],[5,2,1,"","ICON_FOLDER_ADD"],[5,2,1,"","ICON_FOLDER_FILE_OPEN"],[5,2,1,"","ICON_FOLDER_OPEN"],[5,2,1,"","ICON_FOLDER_SAVE"],[5,2,1,"","ICON_FOUR_BOXES"],[5,2,1,"","ICON_FX"],[5,2,1,"","ICON_GEAR"],[5,2,1,"","ICON_GEAR_BIG"],[5,2,1,"","ICON_GEAR_EX"],[5,2,1,"","ICON_GRID"],[5,2,1,"","ICON_GRID_FILL"],[5,2,1,"","ICON_HAND_POINTER"],[5,2,1,"","ICON_HEART"],[5,2,1,"","ICON_HELP"],[5,2,1,"","ICON_HELP_BOX"],[5,2,1,"","ICON_HEX"],[5,2,1,"","ICON_HIDPI"],[5,2,1,"","ICON_HOT"],[5,2,1,"","ICON_HOUSE"],[5,2,1,"","ICON_INFO"],[5,2,1,"","ICON_INFO_BOX"],[5,2,1,"","ICON_KEY"],[5,2,1,"","ICON_LASER"],[5,2,1,"","ICON_LAYERS"],[5,2,1,"","ICON_LAYERS2"],[5,2,1,"","ICON_LAYERS_ISO"],[5,2,1,"","ICON_LAYERS_VISIBLE"],[5,2,1,"","ICON_LENS"],[5,2,1,"","ICON_LENS_BIG"],[5,2,1,"","ICON_LIFE_BARS"],[5,2,1,"","ICON_LINK"],[5,2,1,"","ICON_LINK_BOXES"],[5,2,1,"","ICON_LINK_BROKE"],[5,2,1,"","ICON_LINK_MULTI"],[5,2,1,"","ICON_LINK_NET"],[5,2,1,"","ICON_LOCK_CLOSE"],[5,2,1,"","ICON_LOCK_OPEN"],[5,2,1,"","ICON_MAGNET"],[5,2,1,"","ICON_MAILBOX"],[5,2,1,"","ICON_MAPS"],[5,2,1,"","ICON_MIPMAPS"],[5,2,1,"","ICON_MLAYERS"],[5,2,1,"","ICON_MODE_2D"],[5,2,1,"","ICON_MODE_3D"],[5,2,1,"","ICON_MONITOR"],[5,2,1,"","ICON_MUTATE"],[5,2,1,"","ICON_MUTATE_FILL"],[5,2,1,"","ICON_NONE"],[5,2,1,"","ICON_NOTEBOOK"],[5,2,1,"","ICON_OK_TICK"],[5,2,1,"","ICON_PENCIL"],[5,2,1,"","ICON_PENCIL_BIG"],[5,2,1,"","ICON_PHOTO_CAMERA"],[5,2,1,"","ICON_PHOTO_CAMERA_FLASH"],[5,2,1,"","ICON_PLAYER"],[5,2,1,"","ICON_PLAYER_JUMP"],[5,2,1,"","ICON_PLAYER_NEXT"],[5,2,1,"","ICON_PLAYER_PAUSE"],[5,2,1,"","ICON_PLAYER_PLAY"],[5,2,1,"","ICON_PLAYER_PLAY_BACK"],[5,2,1,"","ICON_PLAYER_PREVIOUS"],[5,2,1,"","ICON_PLAYER_RECORD"],[5,2,1,"","ICON_PLAYER_STOP"],[5,2,1,"","ICON_POT"],[5,2,1,"","ICON_PRINTER"],[5,2,1,"","ICON_PRIORITY"],[5,2,1,"","ICON_REDO"],[5,2,1,"","ICON_REDO_FILL"],[5,2,1,"","ICON_REG_EXP"],[5,2,1,"","ICON_REPEAT"],[5,2,1,"","ICON_REPEAT_FILL"],[5,2,1,"","ICON_REREDO"],[5,2,1,"","ICON_REREDO_FILL"],[5,2,1,"","ICON_RESIZE"],[5,2,1,"","ICON_RESTART"],[5,2,1,"","ICON_ROM"],[5,2,1,"","ICON_ROTATE"],[5,2,1,"","ICON_ROTATE_FILL"],[5,2,1,"","ICON_RUBBER"],[5,2,1,"","ICON_SAND_TIMER"],[5,2,1,"","ICON_SCALE"],[5,2,1,"","ICON_SHIELD"],[5,2,1,"","ICON_SHUFFLE"],[5,2,1,"","ICON_SHUFFLE_FILL"],[5,2,1,"","ICON_SPECIAL"],[5,2,1,"","ICON_SQUARE_TOGGLE"],[5,2,1,"","ICON_STAR"],[5,2,1,"","ICON_STEP_INTO"],[5,2,1,"","ICON_STEP_OUT"],[5,2,1,"","ICON_STEP_OVER"],[5,2,1,"","ICON_SUITCASE"],[5,2,1,"","ICON_SUITCASE_ZIP"],[5,2,1,"","ICON_SYMMETRY"],[5,2,1,"","ICON_SYMMETRY_HORIZONTAL"],[5,2,1,"","ICON_SYMMETRY_VERTICAL"],[5,2,1,"","ICON_TARGET"],[5,2,1,"","ICON_TARGET_BIG"],[5,2,1,"","ICON_TARGET_BIG_FILL"],[5,2,1,"","ICON_TARGET_MOVE"],[5,2,1,"","ICON_TARGET_MOVE_FILL"],[5,2,1,"","ICON_TARGET_POINT"],[5,2,1,"","ICON_TARGET_SMALL"],[5,2,1,"","ICON_TARGET_SMALL_FILL"],[5,2,1,"","ICON_TEXT_A"],[5,2,1,"","ICON_TEXT_NOTES"],[5,2,1,"","ICON_TEXT_POPUP"],[5,2,1,"","ICON_TEXT_T"],[5,2,1,"","ICON_TOOLS"],[5,2,1,"","ICON_UNDO"],[5,2,1,"","ICON_UNDO_FILL"],[5,2,1,"","ICON_VERTICAL_BARS"],[5,2,1,"","ICON_VERTICAL_BARS_FILL"],[5,2,1,"","ICON_WARNING"],[5,2,1,"","ICON_WATER_DROP"],[5,2,1,"","ICON_WAVE"],[5,2,1,"","ICON_WAVE_SINUS"],[5,2,1,"","ICON_WAVE_SQUARE"],[5,2,1,"","ICON_WAVE_TRIANGULAR"],[5,2,1,"","ICON_WINDOW"],[5,2,1,"","ICON_ZOOM_ALL"],[5,2,1,"","ICON_ZOOM_BIG"],[5,2,1,"","ICON_ZOOM_CENTER"],[5,2,1,"","ICON_ZOOM_MEDIUM"],[5,2,1,"","ICON_ZOOM_SMALL"]],"pyray.GuiListViewProperty":[[5,2,1,"","LIST_ITEMS_BORDER_WIDTH"],[5,2,1,"","LIST_ITEMS_HEIGHT"],[5,2,1,"","LIST_ITEMS_SPACING"],[5,2,1,"","SCROLLBAR_SIDE"],[5,2,1,"","SCROLLBAR_WIDTH"]],"pyray.GuiProgressBarProperty":[[5,2,1,"","PROGRESS_PADDING"]],"pyray.GuiScrollBarProperty":[[5,2,1,"","ARROWS_SIZE"],[5,2,1,"","ARROWS_VISIBLE"],[5,2,1,"","SCROLL_PADDING"],[5,2,1,"","SCROLL_SLIDER_PADDING"],[5,2,1,"","SCROLL_SLIDER_SIZE"],[5,2,1,"","SCROLL_SPEED"]],"pyray.GuiSliderProperty":[[5,2,1,"","SLIDER_PADDING"],[5,2,1,"","SLIDER_WIDTH"]],"pyray.GuiSpinnerProperty":[[5,2,1,"","SPIN_BUTTON_SPACING"],[5,2,1,"","SPIN_BUTTON_WIDTH"]],"pyray.GuiState":[[5,2,1,"","STATE_DISABLED"],[5,2,1,"","STATE_FOCUSED"],[5,2,1,"","STATE_NORMAL"],[5,2,1,"","STATE_PRESSED"]],"pyray.GuiStyleProp":[[5,2,1,"","controlId"],[5,2,1,"","propertyId"],[5,2,1,"","propertyValue"]],"pyray.GuiTextAlignment":[[5,2,1,"","TEXT_ALIGN_CENTER"],[5,2,1,"","TEXT_ALIGN_LEFT"],[5,2,1,"","TEXT_ALIGN_RIGHT"]],"pyray.GuiTextAlignmentVertical":[[5,2,1,"","TEXT_ALIGN_BOTTOM"],[5,2,1,"","TEXT_ALIGN_MIDDLE"],[5,2,1,"","TEXT_ALIGN_TOP"]],"pyray.GuiTextBoxProperty":[[5,2,1,"","TEXT_READONLY"]],"pyray.GuiTextWrapMode":[[5,2,1,"","TEXT_WRAP_CHAR"],[5,2,1,"","TEXT_WRAP_NONE"],[5,2,1,"","TEXT_WRAP_WORD"]],"pyray.GuiToggleProperty":[[5,2,1,"","GROUP_PADDING"]],"pyray.Image":[[5,2,1,"","data"],[5,2,1,"","format"],[5,2,1,"","height"],[5,2,1,"","mipmaps"],[5,2,1,"","width"]],"pyray.KeyboardKey":[[5,2,1,"","KEY_A"],[5,2,1,"","KEY_APOSTROPHE"],[5,2,1,"","KEY_B"],[5,2,1,"","KEY_BACK"],[5,2,1,"","KEY_BACKSLASH"],[5,2,1,"","KEY_BACKSPACE"],[5,2,1,"","KEY_C"],[5,2,1,"","KEY_CAPS_LOCK"],[5,2,1,"","KEY_COMMA"],[5,2,1,"","KEY_D"],[5,2,1,"","KEY_DELETE"],[5,2,1,"","KEY_DOWN"],[5,2,1,"","KEY_E"],[5,2,1,"","KEY_EIGHT"],[5,2,1,"","KEY_END"],[5,2,1,"","KEY_ENTER"],[5,2,1,"","KEY_EQUAL"],[5,2,1,"","KEY_ESCAPE"],[5,2,1,"","KEY_F"],[5,2,1,"","KEY_F1"],[5,2,1,"","KEY_F10"],[5,2,1,"","KEY_F11"],[5,2,1,"","KEY_F12"],[5,2,1,"","KEY_F2"],[5,2,1,"","KEY_F3"],[5,2,1,"","KEY_F4"],[5,2,1,"","KEY_F5"],[5,2,1,"","KEY_F6"],[5,2,1,"","KEY_F7"],[5,2,1,"","KEY_F8"],[5,2,1,"","KEY_F9"],[5,2,1,"","KEY_FIVE"],[5,2,1,"","KEY_FOUR"],[5,2,1,"","KEY_G"],[5,2,1,"","KEY_GRAVE"],[5,2,1,"","KEY_H"],[5,2,1,"","KEY_HOME"],[5,2,1,"","KEY_I"],[5,2,1,"","KEY_INSERT"],[5,2,1,"","KEY_J"],[5,2,1,"","KEY_K"],[5,2,1,"","KEY_KB_MENU"],[5,2,1,"","KEY_KP_0"],[5,2,1,"","KEY_KP_1"],[5,2,1,"","KEY_KP_2"],[5,2,1,"","KEY_KP_3"],[5,2,1,"","KEY_KP_4"],[5,2,1,"","KEY_KP_5"],[5,2,1,"","KEY_KP_6"],[5,2,1,"","KEY_KP_7"],[5,2,1,"","KEY_KP_8"],[5,2,1,"","KEY_KP_9"],[5,2,1,"","KEY_KP_ADD"],[5,2,1,"","KEY_KP_DECIMAL"],[5,2,1,"","KEY_KP_DIVIDE"],[5,2,1,"","KEY_KP_ENTER"],[5,2,1,"","KEY_KP_EQUAL"],[5,2,1,"","KEY_KP_MULTIPLY"],[5,2,1,"","KEY_KP_SUBTRACT"],[5,2,1,"","KEY_L"],[5,2,1,"","KEY_LEFT"],[5,2,1,"","KEY_LEFT_ALT"],[5,2,1,"","KEY_LEFT_BRACKET"],[5,2,1,"","KEY_LEFT_CONTROL"],[5,2,1,"","KEY_LEFT_SHIFT"],[5,2,1,"","KEY_LEFT_SUPER"],[5,2,1,"","KEY_M"],[5,2,1,"","KEY_MENU"],[5,2,1,"","KEY_MINUS"],[5,2,1,"","KEY_N"],[5,2,1,"","KEY_NINE"],[5,2,1,"","KEY_NULL"],[5,2,1,"","KEY_NUM_LOCK"],[5,2,1,"","KEY_O"],[5,2,1,"","KEY_ONE"],[5,2,1,"","KEY_P"],[5,2,1,"","KEY_PAGE_DOWN"],[5,2,1,"","KEY_PAGE_UP"],[5,2,1,"","KEY_PAUSE"],[5,2,1,"","KEY_PERIOD"],[5,2,1,"","KEY_PRINT_SCREEN"],[5,2,1,"","KEY_Q"],[5,2,1,"","KEY_R"],[5,2,1,"","KEY_RIGHT"],[5,2,1,"","KEY_RIGHT_ALT"],[5,2,1,"","KEY_RIGHT_BRACKET"],[5,2,1,"","KEY_RIGHT_CONTROL"],[5,2,1,"","KEY_RIGHT_SHIFT"],[5,2,1,"","KEY_RIGHT_SUPER"],[5,2,1,"","KEY_S"],[5,2,1,"","KEY_SCROLL_LOCK"],[5,2,1,"","KEY_SEMICOLON"],[5,2,1,"","KEY_SEVEN"],[5,2,1,"","KEY_SIX"],[5,2,1,"","KEY_SLASH"],[5,2,1,"","KEY_SPACE"],[5,2,1,"","KEY_T"],[5,2,1,"","KEY_TAB"],[5,2,1,"","KEY_THREE"],[5,2,1,"","KEY_TWO"],[5,2,1,"","KEY_U"],[5,2,1,"","KEY_UP"],[5,2,1,"","KEY_V"],[5,2,1,"","KEY_VOLUME_DOWN"],[5,2,1,"","KEY_VOLUME_UP"],[5,2,1,"","KEY_W"],[5,2,1,"","KEY_X"],[5,2,1,"","KEY_Y"],[5,2,1,"","KEY_Z"],[5,2,1,"","KEY_ZERO"]],"pyray.Material":[[5,2,1,"","maps"],[5,2,1,"","params"],[5,2,1,"","shader"]],"pyray.MaterialMap":[[5,2,1,"","color"],[5,2,1,"","texture"],[5,2,1,"","value"]],"pyray.MaterialMapIndex":[[5,2,1,"","MATERIAL_MAP_ALBEDO"],[5,2,1,"","MATERIAL_MAP_BRDF"],[5,2,1,"","MATERIAL_MAP_CUBEMAP"],[5,2,1,"","MATERIAL_MAP_EMISSION"],[5,2,1,"","MATERIAL_MAP_HEIGHT"],[5,2,1,"","MATERIAL_MAP_IRRADIANCE"],[5,2,1,"","MATERIAL_MAP_METALNESS"],[5,2,1,"","MATERIAL_MAP_NORMAL"],[5,2,1,"","MATERIAL_MAP_OCCLUSION"],[5,2,1,"","MATERIAL_MAP_PREFILTER"],[5,2,1,"","MATERIAL_MAP_ROUGHNESS"]],"pyray.Matrix":[[5,2,1,"","m0"],[5,2,1,"","m1"],[5,2,1,"","m10"],[5,2,1,"","m11"],[5,2,1,"","m12"],[5,2,1,"","m13"],[5,2,1,"","m14"],[5,2,1,"","m15"],[5,2,1,"","m2"],[5,2,1,"","m3"],[5,2,1,"","m4"],[5,2,1,"","m5"],[5,2,1,"","m6"],[5,2,1,"","m7"],[5,2,1,"","m8"],[5,2,1,"","m9"]],"pyray.Matrix2x2":[[5,2,1,"","m00"],[5,2,1,"","m01"],[5,2,1,"","m10"],[5,2,1,"","m11"]],"pyray.Mesh":[[5,2,1,"","animNormals"],[5,2,1,"","animVertices"],[5,2,1,"","boneCount"],[5,2,1,"","boneIds"],[5,2,1,"","boneMatrices"],[5,2,1,"","boneWeights"],[5,2,1,"","colors"],[5,2,1,"","indices"],[5,2,1,"","normals"],[5,2,1,"","tangents"],[5,2,1,"","texcoords"],[5,2,1,"","texcoords2"],[5,2,1,"","triangleCount"],[5,2,1,"","vaoId"],[5,2,1,"","vboId"],[5,2,1,"","vertexCount"],[5,2,1,"","vertices"]],"pyray.Model":[[5,2,1,"","bindPose"],[5,2,1,"","boneCount"],[5,2,1,"","bones"],[5,2,1,"","materialCount"],[5,2,1,"","materials"],[5,2,1,"","meshCount"],[5,2,1,"","meshMaterial"],[5,2,1,"","meshes"],[5,2,1,"","transform"]],"pyray.ModelAnimation":[[5,2,1,"","boneCount"],[5,2,1,"","bones"],[5,2,1,"","frameCount"],[5,2,1,"","framePoses"],[5,2,1,"","name"]],"pyray.MouseButton":[[5,2,1,"","MOUSE_BUTTON_BACK"],[5,2,1,"","MOUSE_BUTTON_EXTRA"],[5,2,1,"","MOUSE_BUTTON_FORWARD"],[5,2,1,"","MOUSE_BUTTON_LEFT"],[5,2,1,"","MOUSE_BUTTON_MIDDLE"],[5,2,1,"","MOUSE_BUTTON_RIGHT"],[5,2,1,"","MOUSE_BUTTON_SIDE"]],"pyray.MouseCursor":[[5,2,1,"","MOUSE_CURSOR_ARROW"],[5,2,1,"","MOUSE_CURSOR_CROSSHAIR"],[5,2,1,"","MOUSE_CURSOR_DEFAULT"],[5,2,1,"","MOUSE_CURSOR_IBEAM"],[5,2,1,"","MOUSE_CURSOR_NOT_ALLOWED"],[5,2,1,"","MOUSE_CURSOR_POINTING_HAND"],[5,2,1,"","MOUSE_CURSOR_RESIZE_ALL"],[5,2,1,"","MOUSE_CURSOR_RESIZE_EW"],[5,2,1,"","MOUSE_CURSOR_RESIZE_NESW"],[5,2,1,"","MOUSE_CURSOR_RESIZE_NS"],[5,2,1,"","MOUSE_CURSOR_RESIZE_NWSE"]],"pyray.Music":[[5,2,1,"","ctxData"],[5,2,1,"","ctxType"],[5,2,1,"","frameCount"],[5,2,1,"","looping"],[5,2,1,"","stream"]],"pyray.NPatchInfo":[[5,2,1,"","bottom"],[5,2,1,"","layout"],[5,2,1,"","left"],[5,2,1,"","right"],[5,2,1,"","source"],[5,2,1,"","top"]],"pyray.NPatchLayout":[[5,2,1,"","NPATCH_NINE_PATCH"],[5,2,1,"","NPATCH_THREE_PATCH_HORIZONTAL"],[5,2,1,"","NPATCH_THREE_PATCH_VERTICAL"]],"pyray.PhysicsBodyData":[[5,2,1,"","angularVelocity"],[5,2,1,"","dynamicFriction"],[5,2,1,"","enabled"],[5,2,1,"","force"],[5,2,1,"","freezeOrient"],[5,2,1,"","id"],[5,2,1,"","inertia"],[5,2,1,"","inverseInertia"],[5,2,1,"","inverseMass"],[5,2,1,"","isGrounded"],[5,2,1,"","mass"],[5,2,1,"","orient"],[5,2,1,"","position"],[5,2,1,"","restitution"],[5,2,1,"","shape"],[5,2,1,"","staticFriction"],[5,2,1,"","torque"],[5,2,1,"","useGravity"],[5,2,1,"","velocity"]],"pyray.PhysicsManifoldData":[[5,2,1,"","bodyA"],[5,2,1,"","bodyB"],[5,2,1,"","contacts"],[5,2,1,"","contactsCount"],[5,2,1,"","dynamicFriction"],[5,2,1,"","id"],[5,2,1,"","normal"],[5,2,1,"","penetration"],[5,2,1,"","restitution"],[5,2,1,"","staticFriction"]],"pyray.PhysicsShape":[[5,2,1,"","body"],[5,2,1,"","radius"],[5,2,1,"","transform"],[5,2,1,"","type"],[5,2,1,"","vertexData"]],"pyray.PhysicsVertexData":[[5,2,1,"","normals"],[5,2,1,"","positions"],[5,2,1,"","vertexCount"]],"pyray.PixelFormat":[[5,2,1,"","PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA"],[5,2,1,"","PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA"],[5,2,1,"","PIXELFORMAT_COMPRESSED_DXT1_RGB"],[5,2,1,"","PIXELFORMAT_COMPRESSED_DXT1_RGBA"],[5,2,1,"","PIXELFORMAT_COMPRESSED_DXT3_RGBA"],[5,2,1,"","PIXELFORMAT_COMPRESSED_DXT5_RGBA"],[5,2,1,"","PIXELFORMAT_COMPRESSED_ETC1_RGB"],[5,2,1,"","PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA"],[5,2,1,"","PIXELFORMAT_COMPRESSED_ETC2_RGB"],[5,2,1,"","PIXELFORMAT_COMPRESSED_PVRT_RGB"],[5,2,1,"","PIXELFORMAT_COMPRESSED_PVRT_RGBA"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_GRAYSCALE"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R16"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R16G16B16"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R16G16B16A16"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R32"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R32G32B32"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R32G32B32A32"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R4G4B4A4"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R5G5B5A1"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R5G6B5"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R8G8B8"],[5,2,1,"","PIXELFORMAT_UNCOMPRESSED_R8G8B8A8"]],"pyray.Ray":[[5,2,1,"","direction"],[5,2,1,"","position"]],"pyray.RayCollision":[[5,2,1,"","distance"],[5,2,1,"","hit"],[5,2,1,"","normal"],[5,2,1,"","point"]],"pyray.Rectangle":[[5,2,1,"","height"],[5,2,1,"","width"],[5,2,1,"","x"],[5,2,1,"","y"]],"pyray.RenderTexture":[[5,2,1,"","depth"],[5,2,1,"","id"],[5,2,1,"","texture"]],"pyray.Shader":[[5,2,1,"","id"],[5,2,1,"","locs"]],"pyray.ShaderAttributeDataType":[[5,2,1,"","SHADER_ATTRIB_FLOAT"],[5,2,1,"","SHADER_ATTRIB_VEC2"],[5,2,1,"","SHADER_ATTRIB_VEC3"],[5,2,1,"","SHADER_ATTRIB_VEC4"]],"pyray.ShaderLocationIndex":[[5,2,1,"","SHADER_LOC_BONE_MATRICES"],[5,2,1,"","SHADER_LOC_COLOR_AMBIENT"],[5,2,1,"","SHADER_LOC_COLOR_DIFFUSE"],[5,2,1,"","SHADER_LOC_COLOR_SPECULAR"],[5,2,1,"","SHADER_LOC_MAP_ALBEDO"],[5,2,1,"","SHADER_LOC_MAP_BRDF"],[5,2,1,"","SHADER_LOC_MAP_CUBEMAP"],[5,2,1,"","SHADER_LOC_MAP_EMISSION"],[5,2,1,"","SHADER_LOC_MAP_HEIGHT"],[5,2,1,"","SHADER_LOC_MAP_IRRADIANCE"],[5,2,1,"","SHADER_LOC_MAP_METALNESS"],[5,2,1,"","SHADER_LOC_MAP_NORMAL"],[5,2,1,"","SHADER_LOC_MAP_OCCLUSION"],[5,2,1,"","SHADER_LOC_MAP_PREFILTER"],[5,2,1,"","SHADER_LOC_MAP_ROUGHNESS"],[5,2,1,"","SHADER_LOC_MATRIX_MODEL"],[5,2,1,"","SHADER_LOC_MATRIX_MVP"],[5,2,1,"","SHADER_LOC_MATRIX_NORMAL"],[5,2,1,"","SHADER_LOC_MATRIX_PROJECTION"],[5,2,1,"","SHADER_LOC_MATRIX_VIEW"],[5,2,1,"","SHADER_LOC_VECTOR_VIEW"],[5,2,1,"","SHADER_LOC_VERTEX_BONEIDS"],[5,2,1,"","SHADER_LOC_VERTEX_BONEWEIGHTS"],[5,2,1,"","SHADER_LOC_VERTEX_COLOR"],[5,2,1,"","SHADER_LOC_VERTEX_NORMAL"],[5,2,1,"","SHADER_LOC_VERTEX_POSITION"],[5,2,1,"","SHADER_LOC_VERTEX_TANGENT"],[5,2,1,"","SHADER_LOC_VERTEX_TEXCOORD01"],[5,2,1,"","SHADER_LOC_VERTEX_TEXCOORD02"]],"pyray.ShaderUniformDataType":[[5,2,1,"","SHADER_UNIFORM_FLOAT"],[5,2,1,"","SHADER_UNIFORM_INT"],[5,2,1,"","SHADER_UNIFORM_IVEC2"],[5,2,1,"","SHADER_UNIFORM_IVEC3"],[5,2,1,"","SHADER_UNIFORM_IVEC4"],[5,2,1,"","SHADER_UNIFORM_SAMPLER2D"],[5,2,1,"","SHADER_UNIFORM_VEC2"],[5,2,1,"","SHADER_UNIFORM_VEC3"],[5,2,1,"","SHADER_UNIFORM_VEC4"]],"pyray.Sound":[[5,2,1,"","frameCount"],[5,2,1,"","stream"]],"pyray.Texture":[[5,2,1,"","format"],[5,2,1,"","height"],[5,2,1,"","id"],[5,2,1,"","mipmaps"],[5,2,1,"","width"]],"pyray.Texture2D":[[5,2,1,"","format"],[5,2,1,"","height"],[5,2,1,"","id"],[5,2,1,"","mipmaps"],[5,2,1,"","width"]],"pyray.TextureFilter":[[5,2,1,"","TEXTURE_FILTER_ANISOTROPIC_16X"],[5,2,1,"","TEXTURE_FILTER_ANISOTROPIC_4X"],[5,2,1,"","TEXTURE_FILTER_ANISOTROPIC_8X"],[5,2,1,"","TEXTURE_FILTER_BILINEAR"],[5,2,1,"","TEXTURE_FILTER_POINT"],[5,2,1,"","TEXTURE_FILTER_TRILINEAR"]],"pyray.TextureWrap":[[5,2,1,"","TEXTURE_WRAP_CLAMP"],[5,2,1,"","TEXTURE_WRAP_MIRROR_CLAMP"],[5,2,1,"","TEXTURE_WRAP_MIRROR_REPEAT"],[5,2,1,"","TEXTURE_WRAP_REPEAT"]],"pyray.TraceLogLevel":[[5,2,1,"","LOG_ALL"],[5,2,1,"","LOG_DEBUG"],[5,2,1,"","LOG_ERROR"],[5,2,1,"","LOG_FATAL"],[5,2,1,"","LOG_INFO"],[5,2,1,"","LOG_NONE"],[5,2,1,"","LOG_TRACE"],[5,2,1,"","LOG_WARNING"]],"pyray.Transform":[[5,2,1,"","rotation"],[5,2,1,"","scale"],[5,2,1,"","translation"]],"pyray.Vector2":[[5,2,1,"","x"],[5,2,1,"","y"]],"pyray.Vector3":[[5,2,1,"","x"],[5,2,1,"","y"],[5,2,1,"","z"]],"pyray.Vector4":[[5,2,1,"","w"],[5,2,1,"","x"],[5,2,1,"","y"],[5,2,1,"","z"]],"pyray.VrDeviceInfo":[[5,2,1,"","chromaAbCorrection"],[5,2,1,"","eyeToScreenDistance"],[5,2,1,"","hResolution"],[5,2,1,"","hScreenSize"],[5,2,1,"","interpupillaryDistance"],[5,2,1,"","lensDistortionValues"],[5,2,1,"","lensSeparationDistance"],[5,2,1,"","vResolution"],[5,2,1,"","vScreenSize"]],"pyray.VrStereoConfig":[[5,2,1,"","leftLensCenter"],[5,2,1,"","leftScreenCenter"],[5,2,1,"","projection"],[5,2,1,"","rightLensCenter"],[5,2,1,"","rightScreenCenter"],[5,2,1,"","scale"],[5,2,1,"","scaleIn"],[5,2,1,"","viewOffset"]],"pyray.Wave":[[5,2,1,"","channels"],[5,2,1,"","data"],[5,2,1,"","frameCount"],[5,2,1,"","sampleRate"],[5,2,1,"","sampleSize"]],"pyray.float16":[[5,2,1,"","v"]],"pyray.float3":[[5,2,1,"","v"]],"pyray.rlBlendMode":[[5,2,1,"","RL_BLEND_ADDITIVE"],[5,2,1,"","RL_BLEND_ADD_COLORS"],[5,2,1,"","RL_BLEND_ALPHA"],[5,2,1,"","RL_BLEND_ALPHA_PREMULTIPLY"],[5,2,1,"","RL_BLEND_CUSTOM"],[5,2,1,"","RL_BLEND_CUSTOM_SEPARATE"],[5,2,1,"","RL_BLEND_MULTIPLIED"],[5,2,1,"","RL_BLEND_SUBTRACT_COLORS"]],"pyray.rlCullMode":[[5,2,1,"","RL_CULL_FACE_BACK"],[5,2,1,"","RL_CULL_FACE_FRONT"]],"pyray.rlDrawCall":[[5,2,1,"","mode"],[5,2,1,"","textureId"],[5,2,1,"","vertexAlignment"],[5,2,1,"","vertexCount"]],"pyray.rlFramebufferAttachTextureType":[[5,2,1,"","RL_ATTACHMENT_CUBEMAP_NEGATIVE_X"],[5,2,1,"","RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y"],[5,2,1,"","RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z"],[5,2,1,"","RL_ATTACHMENT_CUBEMAP_POSITIVE_X"],[5,2,1,"","RL_ATTACHMENT_CUBEMAP_POSITIVE_Y"],[5,2,1,"","RL_ATTACHMENT_CUBEMAP_POSITIVE_Z"],[5,2,1,"","RL_ATTACHMENT_RENDERBUFFER"],[5,2,1,"","RL_ATTACHMENT_TEXTURE2D"]],"pyray.rlFramebufferAttachType":[[5,2,1,"","RL_ATTACHMENT_COLOR_CHANNEL0"],[5,2,1,"","RL_ATTACHMENT_COLOR_CHANNEL1"],[5,2,1,"","RL_ATTACHMENT_COLOR_CHANNEL2"],[5,2,1,"","RL_ATTACHMENT_COLOR_CHANNEL3"],[5,2,1,"","RL_ATTACHMENT_COLOR_CHANNEL4"],[5,2,1,"","RL_ATTACHMENT_COLOR_CHANNEL5"],[5,2,1,"","RL_ATTACHMENT_COLOR_CHANNEL6"],[5,2,1,"","RL_ATTACHMENT_COLOR_CHANNEL7"],[5,2,1,"","RL_ATTACHMENT_DEPTH"],[5,2,1,"","RL_ATTACHMENT_STENCIL"]],"pyray.rlGlVersion":[[5,2,1,"","RL_OPENGL_11"],[5,2,1,"","RL_OPENGL_21"],[5,2,1,"","RL_OPENGL_33"],[5,2,1,"","RL_OPENGL_43"],[5,2,1,"","RL_OPENGL_ES_20"],[5,2,1,"","RL_OPENGL_ES_30"]],"pyray.rlPixelFormat":[[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_DXT1_RGB"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_ETC1_RGB"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_ETC2_RGB"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_PVRT_RGB"],[5,2,1,"","RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R16"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R32"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8"],[5,2,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8"]],"pyray.rlRenderBatch":[[5,2,1,"","bufferCount"],[5,2,1,"","currentBuffer"],[5,2,1,"","currentDepth"],[5,2,1,"","drawCounter"],[5,2,1,"","draws"],[5,2,1,"","vertexBuffer"]],"pyray.rlShaderAttributeDataType":[[5,2,1,"","RL_SHADER_ATTRIB_FLOAT"],[5,2,1,"","RL_SHADER_ATTRIB_VEC2"],[5,2,1,"","RL_SHADER_ATTRIB_VEC3"],[5,2,1,"","RL_SHADER_ATTRIB_VEC4"]],"pyray.rlShaderLocationIndex":[[5,2,1,"","RL_SHADER_LOC_COLOR_AMBIENT"],[5,2,1,"","RL_SHADER_LOC_COLOR_DIFFUSE"],[5,2,1,"","RL_SHADER_LOC_COLOR_SPECULAR"],[5,2,1,"","RL_SHADER_LOC_MAP_ALBEDO"],[5,2,1,"","RL_SHADER_LOC_MAP_BRDF"],[5,2,1,"","RL_SHADER_LOC_MAP_CUBEMAP"],[5,2,1,"","RL_SHADER_LOC_MAP_EMISSION"],[5,2,1,"","RL_SHADER_LOC_MAP_HEIGHT"],[5,2,1,"","RL_SHADER_LOC_MAP_IRRADIANCE"],[5,2,1,"","RL_SHADER_LOC_MAP_METALNESS"],[5,2,1,"","RL_SHADER_LOC_MAP_NORMAL"],[5,2,1,"","RL_SHADER_LOC_MAP_OCCLUSION"],[5,2,1,"","RL_SHADER_LOC_MAP_PREFILTER"],[5,2,1,"","RL_SHADER_LOC_MAP_ROUGHNESS"],[5,2,1,"","RL_SHADER_LOC_MATRIX_MODEL"],[5,2,1,"","RL_SHADER_LOC_MATRIX_MVP"],[5,2,1,"","RL_SHADER_LOC_MATRIX_NORMAL"],[5,2,1,"","RL_SHADER_LOC_MATRIX_PROJECTION"],[5,2,1,"","RL_SHADER_LOC_MATRIX_VIEW"],[5,2,1,"","RL_SHADER_LOC_VECTOR_VIEW"],[5,2,1,"","RL_SHADER_LOC_VERTEX_COLOR"],[5,2,1,"","RL_SHADER_LOC_VERTEX_NORMAL"],[5,2,1,"","RL_SHADER_LOC_VERTEX_POSITION"],[5,2,1,"","RL_SHADER_LOC_VERTEX_TANGENT"],[5,2,1,"","RL_SHADER_LOC_VERTEX_TEXCOORD01"],[5,2,1,"","RL_SHADER_LOC_VERTEX_TEXCOORD02"]],"pyray.rlShaderUniformDataType":[[5,2,1,"","RL_SHADER_UNIFORM_FLOAT"],[5,2,1,"","RL_SHADER_UNIFORM_INT"],[5,2,1,"","RL_SHADER_UNIFORM_IVEC2"],[5,2,1,"","RL_SHADER_UNIFORM_IVEC3"],[5,2,1,"","RL_SHADER_UNIFORM_IVEC4"],[5,2,1,"","RL_SHADER_UNIFORM_SAMPLER2D"],[5,2,1,"","RL_SHADER_UNIFORM_UINT"],[5,2,1,"","RL_SHADER_UNIFORM_UIVEC2"],[5,2,1,"","RL_SHADER_UNIFORM_UIVEC3"],[5,2,1,"","RL_SHADER_UNIFORM_UIVEC4"],[5,2,1,"","RL_SHADER_UNIFORM_VEC2"],[5,2,1,"","RL_SHADER_UNIFORM_VEC3"],[5,2,1,"","RL_SHADER_UNIFORM_VEC4"]],"pyray.rlTextureFilter":[[5,2,1,"","RL_TEXTURE_FILTER_ANISOTROPIC_16X"],[5,2,1,"","RL_TEXTURE_FILTER_ANISOTROPIC_4X"],[5,2,1,"","RL_TEXTURE_FILTER_ANISOTROPIC_8X"],[5,2,1,"","RL_TEXTURE_FILTER_BILINEAR"],[5,2,1,"","RL_TEXTURE_FILTER_POINT"],[5,2,1,"","RL_TEXTURE_FILTER_TRILINEAR"]],"pyray.rlTraceLogLevel":[[5,2,1,"","RL_LOG_ALL"],[5,2,1,"","RL_LOG_DEBUG"],[5,2,1,"","RL_LOG_ERROR"],[5,2,1,"","RL_LOG_FATAL"],[5,2,1,"","RL_LOG_INFO"],[5,2,1,"","RL_LOG_NONE"],[5,2,1,"","RL_LOG_TRACE"],[5,2,1,"","RL_LOG_WARNING"]],"pyray.rlVertexBuffer":[[5,2,1,"","colors"],[5,2,1,"","elementCount"],[5,2,1,"","indices"],[5,2,1,"","normals"],[5,2,1,"","texcoords"],[5,2,1,"","vaoId"],[5,2,1,"","vboId"],[5,2,1,"","vertices"]],"raylib":[[6,3,1,"","ARROWS_SIZE"],[6,3,1,"","ARROWS_VISIBLE"],[6,3,1,"","ARROW_PADDING"],[6,4,1,"","AttachAudioMixedProcessor"],[6,4,1,"","AttachAudioStreamProcessor"],[6,1,1,"","AudioStream"],[6,1,1,"","AutomationEvent"],[6,1,1,"","AutomationEventList"],[6,3,1,"","BACKGROUND_COLOR"],[6,3,1,"","BASE_COLOR_DISABLED"],[6,3,1,"","BASE_COLOR_FOCUSED"],[6,3,1,"","BASE_COLOR_NORMAL"],[6,3,1,"","BASE_COLOR_PRESSED"],[6,3,1,"","BEIGE"],[6,3,1,"","BLACK"],[6,3,1,"","BLANK"],[6,3,1,"","BLEND_ADDITIVE"],[6,3,1,"","BLEND_ADD_COLORS"],[6,3,1,"","BLEND_ALPHA"],[6,3,1,"","BLEND_ALPHA_PREMULTIPLY"],[6,3,1,"","BLEND_CUSTOM"],[6,3,1,"","BLEND_CUSTOM_SEPARATE"],[6,3,1,"","BLEND_MULTIPLIED"],[6,3,1,"","BLEND_SUBTRACT_COLORS"],[6,3,1,"","BLUE"],[6,3,1,"","BORDER_COLOR_DISABLED"],[6,3,1,"","BORDER_COLOR_FOCUSED"],[6,3,1,"","BORDER_COLOR_NORMAL"],[6,3,1,"","BORDER_COLOR_PRESSED"],[6,3,1,"","BORDER_WIDTH"],[6,3,1,"","BROWN"],[6,3,1,"","BUTTON"],[6,4,1,"","BeginBlendMode"],[6,4,1,"","BeginDrawing"],[6,4,1,"","BeginMode2D"],[6,4,1,"","BeginMode3D"],[6,4,1,"","BeginScissorMode"],[6,4,1,"","BeginShaderMode"],[6,4,1,"","BeginTextureMode"],[6,4,1,"","BeginVrStereoMode"],[6,3,1,"","BlendMode"],[6,1,1,"","BoneInfo"],[6,1,1,"","BoundingBox"],[6,3,1,"","CAMERA_CUSTOM"],[6,3,1,"","CAMERA_FIRST_PERSON"],[6,3,1,"","CAMERA_FREE"],[6,3,1,"","CAMERA_ORBITAL"],[6,3,1,"","CAMERA_ORTHOGRAPHIC"],[6,3,1,"","CAMERA_PERSPECTIVE"],[6,3,1,"","CAMERA_THIRD_PERSON"],[6,3,1,"","CHECKBOX"],[6,3,1,"","CHECK_PADDING"],[6,3,1,"","COLORPICKER"],[6,3,1,"","COLOR_SELECTOR_SIZE"],[6,3,1,"","COMBOBOX"],[6,3,1,"","COMBO_BUTTON_SPACING"],[6,3,1,"","COMBO_BUTTON_WIDTH"],[6,3,1,"","CUBEMAP_LAYOUT_AUTO_DETECT"],[6,3,1,"","CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE"],[6,3,1,"","CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR"],[6,3,1,"","CUBEMAP_LAYOUT_LINE_HORIZONTAL"],[6,3,1,"","CUBEMAP_LAYOUT_LINE_VERTICAL"],[6,1,1,"","Camera"],[6,1,1,"","Camera2D"],[6,1,1,"","Camera3D"],[6,3,1,"","CameraMode"],[6,3,1,"","CameraProjection"],[6,4,1,"","ChangeDirectory"],[6,4,1,"","CheckCollisionBoxSphere"],[6,4,1,"","CheckCollisionBoxes"],[6,4,1,"","CheckCollisionCircleLine"],[6,4,1,"","CheckCollisionCircleRec"],[6,4,1,"","CheckCollisionCircles"],[6,4,1,"","CheckCollisionLines"],[6,4,1,"","CheckCollisionPointCircle"],[6,4,1,"","CheckCollisionPointLine"],[6,4,1,"","CheckCollisionPointPoly"],[6,4,1,"","CheckCollisionPointRec"],[6,4,1,"","CheckCollisionPointTriangle"],[6,4,1,"","CheckCollisionRecs"],[6,4,1,"","CheckCollisionSpheres"],[6,4,1,"","Clamp"],[6,4,1,"","ClearBackground"],[6,4,1,"","ClearWindowState"],[6,4,1,"","CloseAudioDevice"],[6,4,1,"","ClosePhysics"],[6,4,1,"","CloseWindow"],[6,4,1,"","CodepointToUTF8"],[6,1,1,"","Color"],[6,4,1,"","ColorAlpha"],[6,4,1,"","ColorAlphaBlend"],[6,4,1,"","ColorBrightness"],[6,4,1,"","ColorContrast"],[6,4,1,"","ColorFromHSV"],[6,4,1,"","ColorFromNormalized"],[6,4,1,"","ColorIsEqual"],[6,4,1,"","ColorLerp"],[6,4,1,"","ColorNormalize"],[6,4,1,"","ColorTint"],[6,4,1,"","ColorToHSV"],[6,4,1,"","ColorToInt"],[6,4,1,"","CompressData"],[6,4,1,"","ComputeCRC32"],[6,4,1,"","ComputeMD5"],[6,4,1,"","ComputeSHA1"],[6,3,1,"","ConfigFlags"],[6,4,1,"","CreatePhysicsBodyCircle"],[6,4,1,"","CreatePhysicsBodyPolygon"],[6,4,1,"","CreatePhysicsBodyRectangle"],[6,3,1,"","CubemapLayout"],[6,3,1,"","DARKBLUE"],[6,3,1,"","DARKBROWN"],[6,3,1,"","DARKGRAY"],[6,3,1,"","DARKGREEN"],[6,3,1,"","DARKPURPLE"],[6,3,1,"","DEFAULT"],[6,3,1,"","DROPDOWNBOX"],[6,3,1,"","DROPDOWN_ARROW_HIDDEN"],[6,3,1,"","DROPDOWN_ITEMS_SPACING"],[6,3,1,"","DROPDOWN_ROLL_UP"],[6,4,1,"","DecodeDataBase64"],[6,4,1,"","DecompressData"],[6,4,1,"","DestroyPhysicsBody"],[6,4,1,"","DetachAudioMixedProcessor"],[6,4,1,"","DetachAudioStreamProcessor"],[6,4,1,"","DirectoryExists"],[6,4,1,"","DisableCursor"],[6,4,1,"","DisableEventWaiting"],[6,4,1,"","DrawBillboard"],[6,4,1,"","DrawBillboardPro"],[6,4,1,"","DrawBillboardRec"],[6,4,1,"","DrawBoundingBox"],[6,4,1,"","DrawCapsule"],[6,4,1,"","DrawCapsuleWires"],[6,4,1,"","DrawCircle"],[6,4,1,"","DrawCircle3D"],[6,4,1,"","DrawCircleGradient"],[6,4,1,"","DrawCircleLines"],[6,4,1,"","DrawCircleLinesV"],[6,4,1,"","DrawCircleSector"],[6,4,1,"","DrawCircleSectorLines"],[6,4,1,"","DrawCircleV"],[6,4,1,"","DrawCube"],[6,4,1,"","DrawCubeV"],[6,4,1,"","DrawCubeWires"],[6,4,1,"","DrawCubeWiresV"],[6,4,1,"","DrawCylinder"],[6,4,1,"","DrawCylinderEx"],[6,4,1,"","DrawCylinderWires"],[6,4,1,"","DrawCylinderWiresEx"],[6,4,1,"","DrawEllipse"],[6,4,1,"","DrawEllipseLines"],[6,4,1,"","DrawFPS"],[6,4,1,"","DrawGrid"],[6,4,1,"","DrawLine"],[6,4,1,"","DrawLine3D"],[6,4,1,"","DrawLineBezier"],[6,4,1,"","DrawLineEx"],[6,4,1,"","DrawLineStrip"],[6,4,1,"","DrawLineV"],[6,4,1,"","DrawMesh"],[6,4,1,"","DrawMeshInstanced"],[6,4,1,"","DrawModel"],[6,4,1,"","DrawModelEx"],[6,4,1,"","DrawModelPoints"],[6,4,1,"","DrawModelPointsEx"],[6,4,1,"","DrawModelWires"],[6,4,1,"","DrawModelWiresEx"],[6,4,1,"","DrawPixel"],[6,4,1,"","DrawPixelV"],[6,4,1,"","DrawPlane"],[6,4,1,"","DrawPoint3D"],[6,4,1,"","DrawPoly"],[6,4,1,"","DrawPolyLines"],[6,4,1,"","DrawPolyLinesEx"],[6,4,1,"","DrawRay"],[6,4,1,"","DrawRectangle"],[6,4,1,"","DrawRectangleGradientEx"],[6,4,1,"","DrawRectangleGradientH"],[6,4,1,"","DrawRectangleGradientV"],[6,4,1,"","DrawRectangleLines"],[6,4,1,"","DrawRectangleLinesEx"],[6,4,1,"","DrawRectanglePro"],[6,4,1,"","DrawRectangleRec"],[6,4,1,"","DrawRectangleRounded"],[6,4,1,"","DrawRectangleRoundedLines"],[6,4,1,"","DrawRectangleRoundedLinesEx"],[6,4,1,"","DrawRectangleV"],[6,4,1,"","DrawRing"],[6,4,1,"","DrawRingLines"],[6,4,1,"","DrawSphere"],[6,4,1,"","DrawSphereEx"],[6,4,1,"","DrawSphereWires"],[6,4,1,"","DrawSplineBasis"],[6,4,1,"","DrawSplineBezierCubic"],[6,4,1,"","DrawSplineBezierQuadratic"],[6,4,1,"","DrawSplineCatmullRom"],[6,4,1,"","DrawSplineLinear"],[6,4,1,"","DrawSplineSegmentBasis"],[6,4,1,"","DrawSplineSegmentBezierCubic"],[6,4,1,"","DrawSplineSegmentBezierQuadratic"],[6,4,1,"","DrawSplineSegmentCatmullRom"],[6,4,1,"","DrawSplineSegmentLinear"],[6,4,1,"","DrawText"],[6,4,1,"","DrawTextCodepoint"],[6,4,1,"","DrawTextCodepoints"],[6,4,1,"","DrawTextEx"],[6,4,1,"","DrawTextPro"],[6,4,1,"","DrawTexture"],[6,4,1,"","DrawTextureEx"],[6,4,1,"","DrawTextureNPatch"],[6,4,1,"","DrawTexturePro"],[6,4,1,"","DrawTextureRec"],[6,4,1,"","DrawTextureV"],[6,4,1,"","DrawTriangle"],[6,4,1,"","DrawTriangle3D"],[6,4,1,"","DrawTriangleFan"],[6,4,1,"","DrawTriangleLines"],[6,4,1,"","DrawTriangleStrip"],[6,4,1,"","DrawTriangleStrip3D"],[6,4,1,"","EnableCursor"],[6,4,1,"","EnableEventWaiting"],[6,4,1,"","EncodeDataBase64"],[6,4,1,"","EndBlendMode"],[6,4,1,"","EndDrawing"],[6,4,1,"","EndMode2D"],[6,4,1,"","EndMode3D"],[6,4,1,"","EndScissorMode"],[6,4,1,"","EndShaderMode"],[6,4,1,"","EndTextureMode"],[6,4,1,"","EndVrStereoMode"],[6,4,1,"","ExportAutomationEventList"],[6,4,1,"","ExportDataAsCode"],[6,4,1,"","ExportFontAsCode"],[6,4,1,"","ExportImage"],[6,4,1,"","ExportImageAsCode"],[6,4,1,"","ExportImageToMemory"],[6,4,1,"","ExportMesh"],[6,4,1,"","ExportMeshAsCode"],[6,4,1,"","ExportWave"],[6,4,1,"","ExportWaveAsCode"],[6,3,1,"","FLAG_BORDERLESS_WINDOWED_MODE"],[6,3,1,"","FLAG_FULLSCREEN_MODE"],[6,3,1,"","FLAG_INTERLACED_HINT"],[6,3,1,"","FLAG_MSAA_4X_HINT"],[6,3,1,"","FLAG_VSYNC_HINT"],[6,3,1,"","FLAG_WINDOW_ALWAYS_RUN"],[6,3,1,"","FLAG_WINDOW_HIDDEN"],[6,3,1,"","FLAG_WINDOW_HIGHDPI"],[6,3,1,"","FLAG_WINDOW_MAXIMIZED"],[6,3,1,"","FLAG_WINDOW_MINIMIZED"],[6,3,1,"","FLAG_WINDOW_MOUSE_PASSTHROUGH"],[6,3,1,"","FLAG_WINDOW_RESIZABLE"],[6,3,1,"","FLAG_WINDOW_TOPMOST"],[6,3,1,"","FLAG_WINDOW_TRANSPARENT"],[6,3,1,"","FLAG_WINDOW_UNDECORATED"],[6,3,1,"","FLAG_WINDOW_UNFOCUSED"],[6,3,1,"","FONT_BITMAP"],[6,3,1,"","FONT_DEFAULT"],[6,3,1,"","FONT_SDF"],[6,4,1,"","Fade"],[6,4,1,"","FileExists"],[6,1,1,"","FilePathList"],[6,4,1,"","FloatEquals"],[6,1,1,"","Font"],[6,3,1,"","FontType"],[6,3,1,"","GAMEPAD_AXIS_LEFT_TRIGGER"],[6,3,1,"","GAMEPAD_AXIS_LEFT_X"],[6,3,1,"","GAMEPAD_AXIS_LEFT_Y"],[6,3,1,"","GAMEPAD_AXIS_RIGHT_TRIGGER"],[6,3,1,"","GAMEPAD_AXIS_RIGHT_X"],[6,3,1,"","GAMEPAD_AXIS_RIGHT_Y"],[6,3,1,"","GAMEPAD_BUTTON_LEFT_FACE_DOWN"],[6,3,1,"","GAMEPAD_BUTTON_LEFT_FACE_LEFT"],[6,3,1,"","GAMEPAD_BUTTON_LEFT_FACE_RIGHT"],[6,3,1,"","GAMEPAD_BUTTON_LEFT_FACE_UP"],[6,3,1,"","GAMEPAD_BUTTON_LEFT_THUMB"],[6,3,1,"","GAMEPAD_BUTTON_LEFT_TRIGGER_1"],[6,3,1,"","GAMEPAD_BUTTON_LEFT_TRIGGER_2"],[6,3,1,"","GAMEPAD_BUTTON_MIDDLE"],[6,3,1,"","GAMEPAD_BUTTON_MIDDLE_LEFT"],[6,3,1,"","GAMEPAD_BUTTON_MIDDLE_RIGHT"],[6,3,1,"","GAMEPAD_BUTTON_RIGHT_FACE_DOWN"],[6,3,1,"","GAMEPAD_BUTTON_RIGHT_FACE_LEFT"],[6,3,1,"","GAMEPAD_BUTTON_RIGHT_FACE_RIGHT"],[6,3,1,"","GAMEPAD_BUTTON_RIGHT_FACE_UP"],[6,3,1,"","GAMEPAD_BUTTON_RIGHT_THUMB"],[6,3,1,"","GAMEPAD_BUTTON_RIGHT_TRIGGER_1"],[6,3,1,"","GAMEPAD_BUTTON_RIGHT_TRIGGER_2"],[6,3,1,"","GAMEPAD_BUTTON_UNKNOWN"],[6,3,1,"","GESTURE_DOUBLETAP"],[6,3,1,"","GESTURE_DRAG"],[6,3,1,"","GESTURE_HOLD"],[6,3,1,"","GESTURE_NONE"],[6,3,1,"","GESTURE_PINCH_IN"],[6,3,1,"","GESTURE_PINCH_OUT"],[6,3,1,"","GESTURE_SWIPE_DOWN"],[6,3,1,"","GESTURE_SWIPE_LEFT"],[6,3,1,"","GESTURE_SWIPE_RIGHT"],[6,3,1,"","GESTURE_SWIPE_UP"],[6,3,1,"","GESTURE_TAP"],[6,1,1,"","GLFWallocator"],[6,1,1,"","GLFWcursor"],[6,1,1,"","GLFWgamepadstate"],[6,1,1,"","GLFWgammaramp"],[6,1,1,"","GLFWimage"],[6,1,1,"","GLFWmonitor"],[6,1,1,"","GLFWvidmode"],[6,1,1,"","GLFWwindow"],[6,3,1,"","GOLD"],[6,3,1,"","GRAY"],[6,3,1,"","GREEN"],[6,3,1,"","GROUP_PADDING"],[6,3,1,"","GamepadAxis"],[6,3,1,"","GamepadButton"],[6,4,1,"","GenImageCellular"],[6,4,1,"","GenImageChecked"],[6,4,1,"","GenImageColor"],[6,4,1,"","GenImageFontAtlas"],[6,4,1,"","GenImageGradientLinear"],[6,4,1,"","GenImageGradientRadial"],[6,4,1,"","GenImageGradientSquare"],[6,4,1,"","GenImagePerlinNoise"],[6,4,1,"","GenImageText"],[6,4,1,"","GenImageWhiteNoise"],[6,4,1,"","GenMeshCone"],[6,4,1,"","GenMeshCube"],[6,4,1,"","GenMeshCubicmap"],[6,4,1,"","GenMeshCylinder"],[6,4,1,"","GenMeshHeightmap"],[6,4,1,"","GenMeshHemiSphere"],[6,4,1,"","GenMeshKnot"],[6,4,1,"","GenMeshPlane"],[6,4,1,"","GenMeshPoly"],[6,4,1,"","GenMeshSphere"],[6,4,1,"","GenMeshTangents"],[6,4,1,"","GenMeshTorus"],[6,4,1,"","GenTextureMipmaps"],[6,3,1,"","Gesture"],[6,4,1,"","GetApplicationDirectory"],[6,4,1,"","GetCameraMatrix"],[6,4,1,"","GetCameraMatrix2D"],[6,4,1,"","GetCharPressed"],[6,4,1,"","GetClipboardImage"],[6,4,1,"","GetClipboardText"],[6,4,1,"","GetCodepoint"],[6,4,1,"","GetCodepointCount"],[6,4,1,"","GetCodepointNext"],[6,4,1,"","GetCodepointPrevious"],[6,4,1,"","GetCollisionRec"],[6,4,1,"","GetColor"],[6,4,1,"","GetCurrentMonitor"],[6,4,1,"","GetDirectoryPath"],[6,4,1,"","GetFPS"],[6,4,1,"","GetFileExtension"],[6,4,1,"","GetFileLength"],[6,4,1,"","GetFileModTime"],[6,4,1,"","GetFileName"],[6,4,1,"","GetFileNameWithoutExt"],[6,4,1,"","GetFontDefault"],[6,4,1,"","GetFrameTime"],[6,4,1,"","GetGamepadAxisCount"],[6,4,1,"","GetGamepadAxisMovement"],[6,4,1,"","GetGamepadButtonPressed"],[6,4,1,"","GetGamepadName"],[6,4,1,"","GetGestureDetected"],[6,4,1,"","GetGestureDragAngle"],[6,4,1,"","GetGestureDragVector"],[6,4,1,"","GetGestureHoldDuration"],[6,4,1,"","GetGesturePinchAngle"],[6,4,1,"","GetGesturePinchVector"],[6,4,1,"","GetGlyphAtlasRec"],[6,4,1,"","GetGlyphIndex"],[6,4,1,"","GetGlyphInfo"],[6,4,1,"","GetImageAlphaBorder"],[6,4,1,"","GetImageColor"],[6,4,1,"","GetKeyPressed"],[6,4,1,"","GetMasterVolume"],[6,4,1,"","GetMeshBoundingBox"],[6,4,1,"","GetModelBoundingBox"],[6,4,1,"","GetMonitorCount"],[6,4,1,"","GetMonitorHeight"],[6,4,1,"","GetMonitorName"],[6,4,1,"","GetMonitorPhysicalHeight"],[6,4,1,"","GetMonitorPhysicalWidth"],[6,4,1,"","GetMonitorPosition"],[6,4,1,"","GetMonitorRefreshRate"],[6,4,1,"","GetMonitorWidth"],[6,4,1,"","GetMouseDelta"],[6,4,1,"","GetMousePosition"],[6,4,1,"","GetMouseWheelMove"],[6,4,1,"","GetMouseWheelMoveV"],[6,4,1,"","GetMouseX"],[6,4,1,"","GetMouseY"],[6,4,1,"","GetMusicTimeLength"],[6,4,1,"","GetMusicTimePlayed"],[6,4,1,"","GetPhysicsBodiesCount"],[6,4,1,"","GetPhysicsBody"],[6,4,1,"","GetPhysicsShapeType"],[6,4,1,"","GetPhysicsShapeVertex"],[6,4,1,"","GetPhysicsShapeVerticesCount"],[6,4,1,"","GetPixelColor"],[6,4,1,"","GetPixelDataSize"],[6,4,1,"","GetPrevDirectoryPath"],[6,4,1,"","GetRandomValue"],[6,4,1,"","GetRayCollisionBox"],[6,4,1,"","GetRayCollisionMesh"],[6,4,1,"","GetRayCollisionQuad"],[6,4,1,"","GetRayCollisionSphere"],[6,4,1,"","GetRayCollisionTriangle"],[6,4,1,"","GetRenderHeight"],[6,4,1,"","GetRenderWidth"],[6,4,1,"","GetScreenHeight"],[6,4,1,"","GetScreenToWorld2D"],[6,4,1,"","GetScreenToWorldRay"],[6,4,1,"","GetScreenToWorldRayEx"],[6,4,1,"","GetScreenWidth"],[6,4,1,"","GetShaderLocation"],[6,4,1,"","GetShaderLocationAttrib"],[6,4,1,"","GetShapesTexture"],[6,4,1,"","GetShapesTextureRectangle"],[6,4,1,"","GetSplinePointBasis"],[6,4,1,"","GetSplinePointBezierCubic"],[6,4,1,"","GetSplinePointBezierQuad"],[6,4,1,"","GetSplinePointCatmullRom"],[6,4,1,"","GetSplinePointLinear"],[6,4,1,"","GetTime"],[6,4,1,"","GetTouchPointCount"],[6,4,1,"","GetTouchPointId"],[6,4,1,"","GetTouchPosition"],[6,4,1,"","GetTouchX"],[6,4,1,"","GetTouchY"],[6,4,1,"","GetWindowHandle"],[6,4,1,"","GetWindowPosition"],[6,4,1,"","GetWindowScaleDPI"],[6,4,1,"","GetWorkingDirectory"],[6,4,1,"","GetWorldToScreen"],[6,4,1,"","GetWorldToScreen2D"],[6,4,1,"","GetWorldToScreenEx"],[6,1,1,"","GlyphInfo"],[6,4,1,"","GuiButton"],[6,4,1,"","GuiCheckBox"],[6,3,1,"","GuiCheckBoxProperty"],[6,4,1,"","GuiColorBarAlpha"],[6,4,1,"","GuiColorBarHue"],[6,4,1,"","GuiColorPanel"],[6,4,1,"","GuiColorPanelHSV"],[6,4,1,"","GuiColorPicker"],[6,4,1,"","GuiColorPickerHSV"],[6,3,1,"","GuiColorPickerProperty"],[6,4,1,"","GuiComboBox"],[6,3,1,"","GuiComboBoxProperty"],[6,3,1,"","GuiControl"],[6,3,1,"","GuiControlProperty"],[6,3,1,"","GuiDefaultProperty"],[6,4,1,"","GuiDisable"],[6,4,1,"","GuiDisableTooltip"],[6,4,1,"","GuiDrawIcon"],[6,4,1,"","GuiDropdownBox"],[6,3,1,"","GuiDropdownBoxProperty"],[6,4,1,"","GuiDummyRec"],[6,4,1,"","GuiEnable"],[6,4,1,"","GuiEnableTooltip"],[6,4,1,"","GuiGetFont"],[6,4,1,"","GuiGetIcons"],[6,4,1,"","GuiGetState"],[6,4,1,"","GuiGetStyle"],[6,4,1,"","GuiGrid"],[6,4,1,"","GuiGroupBox"],[6,3,1,"","GuiIconName"],[6,4,1,"","GuiIconText"],[6,4,1,"","GuiIsLocked"],[6,4,1,"","GuiLabel"],[6,4,1,"","GuiLabelButton"],[6,4,1,"","GuiLine"],[6,4,1,"","GuiListView"],[6,4,1,"","GuiListViewEx"],[6,3,1,"","GuiListViewProperty"],[6,4,1,"","GuiLoadIcons"],[6,4,1,"","GuiLoadStyle"],[6,4,1,"","GuiLoadStyleDefault"],[6,4,1,"","GuiLock"],[6,4,1,"","GuiMessageBox"],[6,4,1,"","GuiPanel"],[6,4,1,"","GuiProgressBar"],[6,3,1,"","GuiProgressBarProperty"],[6,3,1,"","GuiScrollBarProperty"],[6,4,1,"","GuiScrollPanel"],[6,4,1,"","GuiSetAlpha"],[6,4,1,"","GuiSetFont"],[6,4,1,"","GuiSetIconScale"],[6,4,1,"","GuiSetState"],[6,4,1,"","GuiSetStyle"],[6,4,1,"","GuiSetTooltip"],[6,4,1,"","GuiSlider"],[6,4,1,"","GuiSliderBar"],[6,3,1,"","GuiSliderProperty"],[6,4,1,"","GuiSpinner"],[6,3,1,"","GuiSpinnerProperty"],[6,3,1,"","GuiState"],[6,4,1,"","GuiStatusBar"],[6,1,1,"","GuiStyleProp"],[6,4,1,"","GuiTabBar"],[6,3,1,"","GuiTextAlignment"],[6,3,1,"","GuiTextAlignmentVertical"],[6,4,1,"","GuiTextBox"],[6,3,1,"","GuiTextBoxProperty"],[6,4,1,"","GuiTextInputBox"],[6,3,1,"","GuiTextWrapMode"],[6,4,1,"","GuiToggle"],[6,4,1,"","GuiToggleGroup"],[6,3,1,"","GuiToggleProperty"],[6,4,1,"","GuiToggleSlider"],[6,4,1,"","GuiUnlock"],[6,4,1,"","GuiValueBox"],[6,4,1,"","GuiValueBoxFloat"],[6,4,1,"","GuiWindowBox"],[6,3,1,"","HUEBAR_PADDING"],[6,3,1,"","HUEBAR_SELECTOR_HEIGHT"],[6,3,1,"","HUEBAR_SELECTOR_OVERFLOW"],[6,3,1,"","HUEBAR_WIDTH"],[6,4,1,"","HideCursor"],[6,3,1,"","ICON_1UP"],[6,3,1,"","ICON_229"],[6,3,1,"","ICON_230"],[6,3,1,"","ICON_231"],[6,3,1,"","ICON_232"],[6,3,1,"","ICON_233"],[6,3,1,"","ICON_234"],[6,3,1,"","ICON_235"],[6,3,1,"","ICON_236"],[6,3,1,"","ICON_237"],[6,3,1,"","ICON_238"],[6,3,1,"","ICON_239"],[6,3,1,"","ICON_240"],[6,3,1,"","ICON_241"],[6,3,1,"","ICON_242"],[6,3,1,"","ICON_243"],[6,3,1,"","ICON_244"],[6,3,1,"","ICON_245"],[6,3,1,"","ICON_246"],[6,3,1,"","ICON_247"],[6,3,1,"","ICON_248"],[6,3,1,"","ICON_249"],[6,3,1,"","ICON_250"],[6,3,1,"","ICON_251"],[6,3,1,"","ICON_252"],[6,3,1,"","ICON_253"],[6,3,1,"","ICON_254"],[6,3,1,"","ICON_255"],[6,3,1,"","ICON_ALARM"],[6,3,1,"","ICON_ALPHA_CLEAR"],[6,3,1,"","ICON_ALPHA_MULTIPLY"],[6,3,1,"","ICON_ARROW_DOWN"],[6,3,1,"","ICON_ARROW_DOWN_FILL"],[6,3,1,"","ICON_ARROW_LEFT"],[6,3,1,"","ICON_ARROW_LEFT_FILL"],[6,3,1,"","ICON_ARROW_RIGHT"],[6,3,1,"","ICON_ARROW_RIGHT_FILL"],[6,3,1,"","ICON_ARROW_UP"],[6,3,1,"","ICON_ARROW_UP_FILL"],[6,3,1,"","ICON_AUDIO"],[6,3,1,"","ICON_BIN"],[6,3,1,"","ICON_BOX"],[6,3,1,"","ICON_BOX_BOTTOM"],[6,3,1,"","ICON_BOX_BOTTOM_LEFT"],[6,3,1,"","ICON_BOX_BOTTOM_RIGHT"],[6,3,1,"","ICON_BOX_CENTER"],[6,3,1,"","ICON_BOX_CIRCLE_MASK"],[6,3,1,"","ICON_BOX_CONCENTRIC"],[6,3,1,"","ICON_BOX_CORNERS_BIG"],[6,3,1,"","ICON_BOX_CORNERS_SMALL"],[6,3,1,"","ICON_BOX_DOTS_BIG"],[6,3,1,"","ICON_BOX_DOTS_SMALL"],[6,3,1,"","ICON_BOX_GRID"],[6,3,1,"","ICON_BOX_GRID_BIG"],[6,3,1,"","ICON_BOX_LEFT"],[6,3,1,"","ICON_BOX_MULTISIZE"],[6,3,1,"","ICON_BOX_RIGHT"],[6,3,1,"","ICON_BOX_TOP"],[6,3,1,"","ICON_BOX_TOP_LEFT"],[6,3,1,"","ICON_BOX_TOP_RIGHT"],[6,3,1,"","ICON_BREAKPOINT_OFF"],[6,3,1,"","ICON_BREAKPOINT_ON"],[6,3,1,"","ICON_BRUSH_CLASSIC"],[6,3,1,"","ICON_BRUSH_PAINTER"],[6,3,1,"","ICON_BURGER_MENU"],[6,3,1,"","ICON_CAMERA"],[6,3,1,"","ICON_CASE_SENSITIVE"],[6,3,1,"","ICON_CLOCK"],[6,3,1,"","ICON_COIN"],[6,3,1,"","ICON_COLOR_BUCKET"],[6,3,1,"","ICON_COLOR_PICKER"],[6,3,1,"","ICON_CORNER"],[6,3,1,"","ICON_CPU"],[6,3,1,"","ICON_CRACK"],[6,3,1,"","ICON_CRACK_POINTS"],[6,3,1,"","ICON_CROP"],[6,3,1,"","ICON_CROP_ALPHA"],[6,3,1,"","ICON_CROSS"],[6,3,1,"","ICON_CROSSLINE"],[6,3,1,"","ICON_CROSS_SMALL"],[6,3,1,"","ICON_CUBE"],[6,3,1,"","ICON_CUBE_FACE_BACK"],[6,3,1,"","ICON_CUBE_FACE_BOTTOM"],[6,3,1,"","ICON_CUBE_FACE_FRONT"],[6,3,1,"","ICON_CUBE_FACE_LEFT"],[6,3,1,"","ICON_CUBE_FACE_RIGHT"],[6,3,1,"","ICON_CUBE_FACE_TOP"],[6,3,1,"","ICON_CURSOR_CLASSIC"],[6,3,1,"","ICON_CURSOR_HAND"],[6,3,1,"","ICON_CURSOR_MOVE"],[6,3,1,"","ICON_CURSOR_MOVE_FILL"],[6,3,1,"","ICON_CURSOR_POINTER"],[6,3,1,"","ICON_CURSOR_SCALE"],[6,3,1,"","ICON_CURSOR_SCALE_FILL"],[6,3,1,"","ICON_CURSOR_SCALE_LEFT"],[6,3,1,"","ICON_CURSOR_SCALE_LEFT_FILL"],[6,3,1,"","ICON_CURSOR_SCALE_RIGHT"],[6,3,1,"","ICON_CURSOR_SCALE_RIGHT_FILL"],[6,3,1,"","ICON_DEMON"],[6,3,1,"","ICON_DITHERING"],[6,3,1,"","ICON_DOOR"],[6,3,1,"","ICON_EMPTYBOX"],[6,3,1,"","ICON_EMPTYBOX_SMALL"],[6,3,1,"","ICON_EXIT"],[6,3,1,"","ICON_EXPLOSION"],[6,3,1,"","ICON_EYE_OFF"],[6,3,1,"","ICON_EYE_ON"],[6,3,1,"","ICON_FILE"],[6,3,1,"","ICON_FILETYPE_ALPHA"],[6,3,1,"","ICON_FILETYPE_AUDIO"],[6,3,1,"","ICON_FILETYPE_BINARY"],[6,3,1,"","ICON_FILETYPE_HOME"],[6,3,1,"","ICON_FILETYPE_IMAGE"],[6,3,1,"","ICON_FILETYPE_INFO"],[6,3,1,"","ICON_FILETYPE_PLAY"],[6,3,1,"","ICON_FILETYPE_TEXT"],[6,3,1,"","ICON_FILETYPE_VIDEO"],[6,3,1,"","ICON_FILE_ADD"],[6,3,1,"","ICON_FILE_COPY"],[6,3,1,"","ICON_FILE_CUT"],[6,3,1,"","ICON_FILE_DELETE"],[6,3,1,"","ICON_FILE_EXPORT"],[6,3,1,"","ICON_FILE_NEW"],[6,3,1,"","ICON_FILE_OPEN"],[6,3,1,"","ICON_FILE_PASTE"],[6,3,1,"","ICON_FILE_SAVE"],[6,3,1,"","ICON_FILE_SAVE_CLASSIC"],[6,3,1,"","ICON_FILTER"],[6,3,1,"","ICON_FILTER_BILINEAR"],[6,3,1,"","ICON_FILTER_POINT"],[6,3,1,"","ICON_FILTER_TOP"],[6,3,1,"","ICON_FOLDER"],[6,3,1,"","ICON_FOLDER_ADD"],[6,3,1,"","ICON_FOLDER_FILE_OPEN"],[6,3,1,"","ICON_FOLDER_OPEN"],[6,3,1,"","ICON_FOLDER_SAVE"],[6,3,1,"","ICON_FOUR_BOXES"],[6,3,1,"","ICON_FX"],[6,3,1,"","ICON_GEAR"],[6,3,1,"","ICON_GEAR_BIG"],[6,3,1,"","ICON_GEAR_EX"],[6,3,1,"","ICON_GRID"],[6,3,1,"","ICON_GRID_FILL"],[6,3,1,"","ICON_HAND_POINTER"],[6,3,1,"","ICON_HEART"],[6,3,1,"","ICON_HELP"],[6,3,1,"","ICON_HELP_BOX"],[6,3,1,"","ICON_HEX"],[6,3,1,"","ICON_HIDPI"],[6,3,1,"","ICON_HOT"],[6,3,1,"","ICON_HOUSE"],[6,3,1,"","ICON_INFO"],[6,3,1,"","ICON_INFO_BOX"],[6,3,1,"","ICON_KEY"],[6,3,1,"","ICON_LASER"],[6,3,1,"","ICON_LAYERS"],[6,3,1,"","ICON_LAYERS2"],[6,3,1,"","ICON_LAYERS_ISO"],[6,3,1,"","ICON_LAYERS_VISIBLE"],[6,3,1,"","ICON_LENS"],[6,3,1,"","ICON_LENS_BIG"],[6,3,1,"","ICON_LIFE_BARS"],[6,3,1,"","ICON_LINK"],[6,3,1,"","ICON_LINK_BOXES"],[6,3,1,"","ICON_LINK_BROKE"],[6,3,1,"","ICON_LINK_MULTI"],[6,3,1,"","ICON_LINK_NET"],[6,3,1,"","ICON_LOCK_CLOSE"],[6,3,1,"","ICON_LOCK_OPEN"],[6,3,1,"","ICON_MAGNET"],[6,3,1,"","ICON_MAILBOX"],[6,3,1,"","ICON_MAPS"],[6,3,1,"","ICON_MIPMAPS"],[6,3,1,"","ICON_MLAYERS"],[6,3,1,"","ICON_MODE_2D"],[6,3,1,"","ICON_MODE_3D"],[6,3,1,"","ICON_MONITOR"],[6,3,1,"","ICON_MUTATE"],[6,3,1,"","ICON_MUTATE_FILL"],[6,3,1,"","ICON_NONE"],[6,3,1,"","ICON_NOTEBOOK"],[6,3,1,"","ICON_OK_TICK"],[6,3,1,"","ICON_PENCIL"],[6,3,1,"","ICON_PENCIL_BIG"],[6,3,1,"","ICON_PHOTO_CAMERA"],[6,3,1,"","ICON_PHOTO_CAMERA_FLASH"],[6,3,1,"","ICON_PLAYER"],[6,3,1,"","ICON_PLAYER_JUMP"],[6,3,1,"","ICON_PLAYER_NEXT"],[6,3,1,"","ICON_PLAYER_PAUSE"],[6,3,1,"","ICON_PLAYER_PLAY"],[6,3,1,"","ICON_PLAYER_PLAY_BACK"],[6,3,1,"","ICON_PLAYER_PREVIOUS"],[6,3,1,"","ICON_PLAYER_RECORD"],[6,3,1,"","ICON_PLAYER_STOP"],[6,3,1,"","ICON_POT"],[6,3,1,"","ICON_PRINTER"],[6,3,1,"","ICON_PRIORITY"],[6,3,1,"","ICON_REDO"],[6,3,1,"","ICON_REDO_FILL"],[6,3,1,"","ICON_REG_EXP"],[6,3,1,"","ICON_REPEAT"],[6,3,1,"","ICON_REPEAT_FILL"],[6,3,1,"","ICON_REREDO"],[6,3,1,"","ICON_REREDO_FILL"],[6,3,1,"","ICON_RESIZE"],[6,3,1,"","ICON_RESTART"],[6,3,1,"","ICON_ROM"],[6,3,1,"","ICON_ROTATE"],[6,3,1,"","ICON_ROTATE_FILL"],[6,3,1,"","ICON_RUBBER"],[6,3,1,"","ICON_SAND_TIMER"],[6,3,1,"","ICON_SCALE"],[6,3,1,"","ICON_SHIELD"],[6,3,1,"","ICON_SHUFFLE"],[6,3,1,"","ICON_SHUFFLE_FILL"],[6,3,1,"","ICON_SPECIAL"],[6,3,1,"","ICON_SQUARE_TOGGLE"],[6,3,1,"","ICON_STAR"],[6,3,1,"","ICON_STEP_INTO"],[6,3,1,"","ICON_STEP_OUT"],[6,3,1,"","ICON_STEP_OVER"],[6,3,1,"","ICON_SUITCASE"],[6,3,1,"","ICON_SUITCASE_ZIP"],[6,3,1,"","ICON_SYMMETRY"],[6,3,1,"","ICON_SYMMETRY_HORIZONTAL"],[6,3,1,"","ICON_SYMMETRY_VERTICAL"],[6,3,1,"","ICON_TARGET"],[6,3,1,"","ICON_TARGET_BIG"],[6,3,1,"","ICON_TARGET_BIG_FILL"],[6,3,1,"","ICON_TARGET_MOVE"],[6,3,1,"","ICON_TARGET_MOVE_FILL"],[6,3,1,"","ICON_TARGET_POINT"],[6,3,1,"","ICON_TARGET_SMALL"],[6,3,1,"","ICON_TARGET_SMALL_FILL"],[6,3,1,"","ICON_TEXT_A"],[6,3,1,"","ICON_TEXT_NOTES"],[6,3,1,"","ICON_TEXT_POPUP"],[6,3,1,"","ICON_TEXT_T"],[6,3,1,"","ICON_TOOLS"],[6,3,1,"","ICON_UNDO"],[6,3,1,"","ICON_UNDO_FILL"],[6,3,1,"","ICON_VERTICAL_BARS"],[6,3,1,"","ICON_VERTICAL_BARS_FILL"],[6,3,1,"","ICON_WARNING"],[6,3,1,"","ICON_WATER_DROP"],[6,3,1,"","ICON_WAVE"],[6,3,1,"","ICON_WAVE_SINUS"],[6,3,1,"","ICON_WAVE_SQUARE"],[6,3,1,"","ICON_WAVE_TRIANGULAR"],[6,3,1,"","ICON_WINDOW"],[6,3,1,"","ICON_ZOOM_ALL"],[6,3,1,"","ICON_ZOOM_BIG"],[6,3,1,"","ICON_ZOOM_CENTER"],[6,3,1,"","ICON_ZOOM_MEDIUM"],[6,3,1,"","ICON_ZOOM_SMALL"],[6,1,1,"","Image"],[6,4,1,"","ImageAlphaClear"],[6,4,1,"","ImageAlphaCrop"],[6,4,1,"","ImageAlphaMask"],[6,4,1,"","ImageAlphaPremultiply"],[6,4,1,"","ImageBlurGaussian"],[6,4,1,"","ImageClearBackground"],[6,4,1,"","ImageColorBrightness"],[6,4,1,"","ImageColorContrast"],[6,4,1,"","ImageColorGrayscale"],[6,4,1,"","ImageColorInvert"],[6,4,1,"","ImageColorReplace"],[6,4,1,"","ImageColorTint"],[6,4,1,"","ImageCopy"],[6,4,1,"","ImageCrop"],[6,4,1,"","ImageDither"],[6,4,1,"","ImageDraw"],[6,4,1,"","ImageDrawCircle"],[6,4,1,"","ImageDrawCircleLines"],[6,4,1,"","ImageDrawCircleLinesV"],[6,4,1,"","ImageDrawCircleV"],[6,4,1,"","ImageDrawLine"],[6,4,1,"","ImageDrawLineEx"],[6,4,1,"","ImageDrawLineV"],[6,4,1,"","ImageDrawPixel"],[6,4,1,"","ImageDrawPixelV"],[6,4,1,"","ImageDrawRectangle"],[6,4,1,"","ImageDrawRectangleLines"],[6,4,1,"","ImageDrawRectangleRec"],[6,4,1,"","ImageDrawRectangleV"],[6,4,1,"","ImageDrawText"],[6,4,1,"","ImageDrawTextEx"],[6,4,1,"","ImageDrawTriangle"],[6,4,1,"","ImageDrawTriangleEx"],[6,4,1,"","ImageDrawTriangleFan"],[6,4,1,"","ImageDrawTriangleLines"],[6,4,1,"","ImageDrawTriangleStrip"],[6,4,1,"","ImageFlipHorizontal"],[6,4,1,"","ImageFlipVertical"],[6,4,1,"","ImageFormat"],[6,4,1,"","ImageFromChannel"],[6,4,1,"","ImageFromImage"],[6,4,1,"","ImageKernelConvolution"],[6,4,1,"","ImageMipmaps"],[6,4,1,"","ImageResize"],[6,4,1,"","ImageResizeCanvas"],[6,4,1,"","ImageResizeNN"],[6,4,1,"","ImageRotate"],[6,4,1,"","ImageRotateCCW"],[6,4,1,"","ImageRotateCW"],[6,4,1,"","ImageText"],[6,4,1,"","ImageTextEx"],[6,4,1,"","ImageToPOT"],[6,4,1,"","InitAudioDevice"],[6,4,1,"","InitPhysics"],[6,4,1,"","InitWindow"],[6,4,1,"","IsAudioDeviceReady"],[6,4,1,"","IsAudioStreamPlaying"],[6,4,1,"","IsAudioStreamProcessed"],[6,4,1,"","IsAudioStreamValid"],[6,4,1,"","IsCursorHidden"],[6,4,1,"","IsCursorOnScreen"],[6,4,1,"","IsFileDropped"],[6,4,1,"","IsFileExtension"],[6,4,1,"","IsFileNameValid"],[6,4,1,"","IsFontValid"],[6,4,1,"","IsGamepadAvailable"],[6,4,1,"","IsGamepadButtonDown"],[6,4,1,"","IsGamepadButtonPressed"],[6,4,1,"","IsGamepadButtonReleased"],[6,4,1,"","IsGamepadButtonUp"],[6,4,1,"","IsGestureDetected"],[6,4,1,"","IsImageValid"],[6,4,1,"","IsKeyDown"],[6,4,1,"","IsKeyPressed"],[6,4,1,"","IsKeyPressedRepeat"],[6,4,1,"","IsKeyReleased"],[6,4,1,"","IsKeyUp"],[6,4,1,"","IsMaterialValid"],[6,4,1,"","IsModelAnimationValid"],[6,4,1,"","IsModelValid"],[6,4,1,"","IsMouseButtonDown"],[6,4,1,"","IsMouseButtonPressed"],[6,4,1,"","IsMouseButtonReleased"],[6,4,1,"","IsMouseButtonUp"],[6,4,1,"","IsMusicStreamPlaying"],[6,4,1,"","IsMusicValid"],[6,4,1,"","IsPathFile"],[6,4,1,"","IsRenderTextureValid"],[6,4,1,"","IsShaderValid"],[6,4,1,"","IsSoundPlaying"],[6,4,1,"","IsSoundValid"],[6,4,1,"","IsTextureValid"],[6,4,1,"","IsWaveValid"],[6,4,1,"","IsWindowFocused"],[6,4,1,"","IsWindowFullscreen"],[6,4,1,"","IsWindowHidden"],[6,4,1,"","IsWindowMaximized"],[6,4,1,"","IsWindowMinimized"],[6,4,1,"","IsWindowReady"],[6,4,1,"","IsWindowResized"],[6,4,1,"","IsWindowState"],[6,3,1,"","KEY_A"],[6,3,1,"","KEY_APOSTROPHE"],[6,3,1,"","KEY_B"],[6,3,1,"","KEY_BACK"],[6,3,1,"","KEY_BACKSLASH"],[6,3,1,"","KEY_BACKSPACE"],[6,3,1,"","KEY_C"],[6,3,1,"","KEY_CAPS_LOCK"],[6,3,1,"","KEY_COMMA"],[6,3,1,"","KEY_D"],[6,3,1,"","KEY_DELETE"],[6,3,1,"","KEY_DOWN"],[6,3,1,"","KEY_E"],[6,3,1,"","KEY_EIGHT"],[6,3,1,"","KEY_END"],[6,3,1,"","KEY_ENTER"],[6,3,1,"","KEY_EQUAL"],[6,3,1,"","KEY_ESCAPE"],[6,3,1,"","KEY_F"],[6,3,1,"","KEY_F1"],[6,3,1,"","KEY_F10"],[6,3,1,"","KEY_F11"],[6,3,1,"","KEY_F12"],[6,3,1,"","KEY_F2"],[6,3,1,"","KEY_F3"],[6,3,1,"","KEY_F4"],[6,3,1,"","KEY_F5"],[6,3,1,"","KEY_F6"],[6,3,1,"","KEY_F7"],[6,3,1,"","KEY_F8"],[6,3,1,"","KEY_F9"],[6,3,1,"","KEY_FIVE"],[6,3,1,"","KEY_FOUR"],[6,3,1,"","KEY_G"],[6,3,1,"","KEY_GRAVE"],[6,3,1,"","KEY_H"],[6,3,1,"","KEY_HOME"],[6,3,1,"","KEY_I"],[6,3,1,"","KEY_INSERT"],[6,3,1,"","KEY_J"],[6,3,1,"","KEY_K"],[6,3,1,"","KEY_KB_MENU"],[6,3,1,"","KEY_KP_0"],[6,3,1,"","KEY_KP_1"],[6,3,1,"","KEY_KP_2"],[6,3,1,"","KEY_KP_3"],[6,3,1,"","KEY_KP_4"],[6,3,1,"","KEY_KP_5"],[6,3,1,"","KEY_KP_6"],[6,3,1,"","KEY_KP_7"],[6,3,1,"","KEY_KP_8"],[6,3,1,"","KEY_KP_9"],[6,3,1,"","KEY_KP_ADD"],[6,3,1,"","KEY_KP_DECIMAL"],[6,3,1,"","KEY_KP_DIVIDE"],[6,3,1,"","KEY_KP_ENTER"],[6,3,1,"","KEY_KP_EQUAL"],[6,3,1,"","KEY_KP_MULTIPLY"],[6,3,1,"","KEY_KP_SUBTRACT"],[6,3,1,"","KEY_L"],[6,3,1,"","KEY_LEFT"],[6,3,1,"","KEY_LEFT_ALT"],[6,3,1,"","KEY_LEFT_BRACKET"],[6,3,1,"","KEY_LEFT_CONTROL"],[6,3,1,"","KEY_LEFT_SHIFT"],[6,3,1,"","KEY_LEFT_SUPER"],[6,3,1,"","KEY_M"],[6,3,1,"","KEY_MENU"],[6,3,1,"","KEY_MINUS"],[6,3,1,"","KEY_N"],[6,3,1,"","KEY_NINE"],[6,3,1,"","KEY_NULL"],[6,3,1,"","KEY_NUM_LOCK"],[6,3,1,"","KEY_O"],[6,3,1,"","KEY_ONE"],[6,3,1,"","KEY_P"],[6,3,1,"","KEY_PAGE_DOWN"],[6,3,1,"","KEY_PAGE_UP"],[6,3,1,"","KEY_PAUSE"],[6,3,1,"","KEY_PERIOD"],[6,3,1,"","KEY_PRINT_SCREEN"],[6,3,1,"","KEY_Q"],[6,3,1,"","KEY_R"],[6,3,1,"","KEY_RIGHT"],[6,3,1,"","KEY_RIGHT_ALT"],[6,3,1,"","KEY_RIGHT_BRACKET"],[6,3,1,"","KEY_RIGHT_CONTROL"],[6,3,1,"","KEY_RIGHT_SHIFT"],[6,3,1,"","KEY_RIGHT_SUPER"],[6,3,1,"","KEY_S"],[6,3,1,"","KEY_SCROLL_LOCK"],[6,3,1,"","KEY_SEMICOLON"],[6,3,1,"","KEY_SEVEN"],[6,3,1,"","KEY_SIX"],[6,3,1,"","KEY_SLASH"],[6,3,1,"","KEY_SPACE"],[6,3,1,"","KEY_T"],[6,3,1,"","KEY_TAB"],[6,3,1,"","KEY_THREE"],[6,3,1,"","KEY_TWO"],[6,3,1,"","KEY_U"],[6,3,1,"","KEY_UP"],[6,3,1,"","KEY_V"],[6,3,1,"","KEY_VOLUME_DOWN"],[6,3,1,"","KEY_VOLUME_UP"],[6,3,1,"","KEY_W"],[6,3,1,"","KEY_X"],[6,3,1,"","KEY_Y"],[6,3,1,"","KEY_Z"],[6,3,1,"","KEY_ZERO"],[6,3,1,"","KeyboardKey"],[6,3,1,"","LABEL"],[6,3,1,"","LIGHTGRAY"],[6,3,1,"","LIME"],[6,3,1,"","LINE_COLOR"],[6,3,1,"","LISTVIEW"],[6,3,1,"","LIST_ITEMS_BORDER_WIDTH"],[6,3,1,"","LIST_ITEMS_HEIGHT"],[6,3,1,"","LIST_ITEMS_SPACING"],[6,3,1,"","LOG_ALL"],[6,3,1,"","LOG_DEBUG"],[6,3,1,"","LOG_ERROR"],[6,3,1,"","LOG_FATAL"],[6,3,1,"","LOG_INFO"],[6,3,1,"","LOG_NONE"],[6,3,1,"","LOG_TRACE"],[6,3,1,"","LOG_WARNING"],[6,4,1,"","Lerp"],[6,4,1,"","LoadAudioStream"],[6,4,1,"","LoadAutomationEventList"],[6,4,1,"","LoadCodepoints"],[6,4,1,"","LoadDirectoryFiles"],[6,4,1,"","LoadDirectoryFilesEx"],[6,4,1,"","LoadDroppedFiles"],[6,4,1,"","LoadFileData"],[6,4,1,"","LoadFileText"],[6,4,1,"","LoadFont"],[6,4,1,"","LoadFontData"],[6,4,1,"","LoadFontEx"],[6,4,1,"","LoadFontFromImage"],[6,4,1,"","LoadFontFromMemory"],[6,4,1,"","LoadImage"],[6,4,1,"","LoadImageAnim"],[6,4,1,"","LoadImageAnimFromMemory"],[6,4,1,"","LoadImageColors"],[6,4,1,"","LoadImageFromMemory"],[6,4,1,"","LoadImageFromScreen"],[6,4,1,"","LoadImageFromTexture"],[6,4,1,"","LoadImagePalette"],[6,4,1,"","LoadImageRaw"],[6,4,1,"","LoadMaterialDefault"],[6,4,1,"","LoadMaterials"],[6,4,1,"","LoadModel"],[6,4,1,"","LoadModelAnimations"],[6,4,1,"","LoadModelFromMesh"],[6,4,1,"","LoadMusicStream"],[6,4,1,"","LoadMusicStreamFromMemory"],[6,4,1,"","LoadRandomSequence"],[6,4,1,"","LoadRenderTexture"],[6,4,1,"","LoadShader"],[6,4,1,"","LoadShaderFromMemory"],[6,4,1,"","LoadSound"],[6,4,1,"","LoadSoundAlias"],[6,4,1,"","LoadSoundFromWave"],[6,4,1,"","LoadTexture"],[6,4,1,"","LoadTextureCubemap"],[6,4,1,"","LoadTextureFromImage"],[6,4,1,"","LoadUTF8"],[6,4,1,"","LoadVrStereoConfig"],[6,4,1,"","LoadWave"],[6,4,1,"","LoadWaveFromMemory"],[6,4,1,"","LoadWaveSamples"],[6,3,1,"","MAGENTA"],[6,3,1,"","MAROON"],[6,3,1,"","MATERIAL_MAP_ALBEDO"],[6,3,1,"","MATERIAL_MAP_BRDF"],[6,3,1,"","MATERIAL_MAP_CUBEMAP"],[6,3,1,"","MATERIAL_MAP_EMISSION"],[6,3,1,"","MATERIAL_MAP_HEIGHT"],[6,3,1,"","MATERIAL_MAP_IRRADIANCE"],[6,3,1,"","MATERIAL_MAP_METALNESS"],[6,3,1,"","MATERIAL_MAP_NORMAL"],[6,3,1,"","MATERIAL_MAP_OCCLUSION"],[6,3,1,"","MATERIAL_MAP_PREFILTER"],[6,3,1,"","MATERIAL_MAP_ROUGHNESS"],[6,3,1,"","MOUSE_BUTTON_BACK"],[6,3,1,"","MOUSE_BUTTON_EXTRA"],[6,3,1,"","MOUSE_BUTTON_FORWARD"],[6,3,1,"","MOUSE_BUTTON_LEFT"],[6,3,1,"","MOUSE_BUTTON_MIDDLE"],[6,3,1,"","MOUSE_BUTTON_RIGHT"],[6,3,1,"","MOUSE_BUTTON_SIDE"],[6,3,1,"","MOUSE_CURSOR_ARROW"],[6,3,1,"","MOUSE_CURSOR_CROSSHAIR"],[6,3,1,"","MOUSE_CURSOR_DEFAULT"],[6,3,1,"","MOUSE_CURSOR_IBEAM"],[6,3,1,"","MOUSE_CURSOR_NOT_ALLOWED"],[6,3,1,"","MOUSE_CURSOR_POINTING_HAND"],[6,3,1,"","MOUSE_CURSOR_RESIZE_ALL"],[6,3,1,"","MOUSE_CURSOR_RESIZE_EW"],[6,3,1,"","MOUSE_CURSOR_RESIZE_NESW"],[6,3,1,"","MOUSE_CURSOR_RESIZE_NS"],[6,3,1,"","MOUSE_CURSOR_RESIZE_NWSE"],[6,4,1,"","MakeDirectory"],[6,1,1,"","Material"],[6,1,1,"","MaterialMap"],[6,3,1,"","MaterialMapIndex"],[6,1,1,"","Matrix"],[6,1,1,"","Matrix2x2"],[6,4,1,"","MatrixAdd"],[6,4,1,"","MatrixDecompose"],[6,4,1,"","MatrixDeterminant"],[6,4,1,"","MatrixFrustum"],[6,4,1,"","MatrixIdentity"],[6,4,1,"","MatrixInvert"],[6,4,1,"","MatrixLookAt"],[6,4,1,"","MatrixMultiply"],[6,4,1,"","MatrixOrtho"],[6,4,1,"","MatrixPerspective"],[6,4,1,"","MatrixRotate"],[6,4,1,"","MatrixRotateX"],[6,4,1,"","MatrixRotateXYZ"],[6,4,1,"","MatrixRotateY"],[6,4,1,"","MatrixRotateZ"],[6,4,1,"","MatrixRotateZYX"],[6,4,1,"","MatrixScale"],[6,4,1,"","MatrixSubtract"],[6,4,1,"","MatrixToFloatV"],[6,4,1,"","MatrixTrace"],[6,4,1,"","MatrixTranslate"],[6,4,1,"","MatrixTranspose"],[6,4,1,"","MaximizeWindow"],[6,4,1,"","MeasureText"],[6,4,1,"","MeasureTextEx"],[6,4,1,"","MemAlloc"],[6,4,1,"","MemFree"],[6,4,1,"","MemRealloc"],[6,1,1,"","Mesh"],[6,4,1,"","MinimizeWindow"],[6,1,1,"","Model"],[6,1,1,"","ModelAnimation"],[6,3,1,"","MouseButton"],[6,3,1,"","MouseCursor"],[6,1,1,"","Music"],[6,3,1,"","NPATCH_NINE_PATCH"],[6,3,1,"","NPATCH_THREE_PATCH_HORIZONTAL"],[6,3,1,"","NPATCH_THREE_PATCH_VERTICAL"],[6,1,1,"","NPatchInfo"],[6,3,1,"","NPatchLayout"],[6,4,1,"","Normalize"],[6,3,1,"","ORANGE"],[6,4,1,"","OpenURL"],[6,3,1,"","PHYSICS_CIRCLE"],[6,3,1,"","PHYSICS_POLYGON"],[6,3,1,"","PINK"],[6,3,1,"","PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA"],[6,3,1,"","PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA"],[6,3,1,"","PIXELFORMAT_COMPRESSED_DXT1_RGB"],[6,3,1,"","PIXELFORMAT_COMPRESSED_DXT1_RGBA"],[6,3,1,"","PIXELFORMAT_COMPRESSED_DXT3_RGBA"],[6,3,1,"","PIXELFORMAT_COMPRESSED_DXT5_RGBA"],[6,3,1,"","PIXELFORMAT_COMPRESSED_ETC1_RGB"],[6,3,1,"","PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA"],[6,3,1,"","PIXELFORMAT_COMPRESSED_ETC2_RGB"],[6,3,1,"","PIXELFORMAT_COMPRESSED_PVRT_RGB"],[6,3,1,"","PIXELFORMAT_COMPRESSED_PVRT_RGBA"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_GRAYSCALE"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R16"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R16G16B16"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R16G16B16A16"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R32"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R32G32B32"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R32G32B32A32"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R4G4B4A4"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R5G5B5A1"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R5G6B5"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R8G8B8"],[6,3,1,"","PIXELFORMAT_UNCOMPRESSED_R8G8B8A8"],[6,3,1,"","PROGRESSBAR"],[6,3,1,"","PROGRESS_PADDING"],[6,3,1,"","PURPLE"],[6,4,1,"","PauseAudioStream"],[6,4,1,"","PauseMusicStream"],[6,4,1,"","PauseSound"],[6,4,1,"","PhysicsAddForce"],[6,4,1,"","PhysicsAddTorque"],[6,1,1,"","PhysicsBodyData"],[6,1,1,"","PhysicsManifoldData"],[6,1,1,"","PhysicsShape"],[6,3,1,"","PhysicsShapeType"],[6,4,1,"","PhysicsShatter"],[6,1,1,"","PhysicsVertexData"],[6,3,1,"","PixelFormat"],[6,4,1,"","PlayAudioStream"],[6,4,1,"","PlayAutomationEvent"],[6,4,1,"","PlayMusicStream"],[6,4,1,"","PlaySound"],[6,4,1,"","PollInputEvents"],[6,1,1,"","Quaternion"],[6,4,1,"","QuaternionAdd"],[6,4,1,"","QuaternionAddValue"],[6,4,1,"","QuaternionCubicHermiteSpline"],[6,4,1,"","QuaternionDivide"],[6,4,1,"","QuaternionEquals"],[6,4,1,"","QuaternionFromAxisAngle"],[6,4,1,"","QuaternionFromEuler"],[6,4,1,"","QuaternionFromMatrix"],[6,4,1,"","QuaternionFromVector3ToVector3"],[6,4,1,"","QuaternionIdentity"],[6,4,1,"","QuaternionInvert"],[6,4,1,"","QuaternionLength"],[6,4,1,"","QuaternionLerp"],[6,4,1,"","QuaternionMultiply"],[6,4,1,"","QuaternionNlerp"],[6,4,1,"","QuaternionNormalize"],[6,4,1,"","QuaternionScale"],[6,4,1,"","QuaternionSlerp"],[6,4,1,"","QuaternionSubtract"],[6,4,1,"","QuaternionSubtractValue"],[6,4,1,"","QuaternionToAxisAngle"],[6,4,1,"","QuaternionToEuler"],[6,4,1,"","QuaternionToMatrix"],[6,4,1,"","QuaternionTransform"],[6,3,1,"","RAYWHITE"],[6,3,1,"","RED"],[6,3,1,"","RL_ATTACHMENT_COLOR_CHANNEL0"],[6,3,1,"","RL_ATTACHMENT_COLOR_CHANNEL1"],[6,3,1,"","RL_ATTACHMENT_COLOR_CHANNEL2"],[6,3,1,"","RL_ATTACHMENT_COLOR_CHANNEL3"],[6,3,1,"","RL_ATTACHMENT_COLOR_CHANNEL4"],[6,3,1,"","RL_ATTACHMENT_COLOR_CHANNEL5"],[6,3,1,"","RL_ATTACHMENT_COLOR_CHANNEL6"],[6,3,1,"","RL_ATTACHMENT_COLOR_CHANNEL7"],[6,3,1,"","RL_ATTACHMENT_CUBEMAP_NEGATIVE_X"],[6,3,1,"","RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y"],[6,3,1,"","RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z"],[6,3,1,"","RL_ATTACHMENT_CUBEMAP_POSITIVE_X"],[6,3,1,"","RL_ATTACHMENT_CUBEMAP_POSITIVE_Y"],[6,3,1,"","RL_ATTACHMENT_CUBEMAP_POSITIVE_Z"],[6,3,1,"","RL_ATTACHMENT_DEPTH"],[6,3,1,"","RL_ATTACHMENT_RENDERBUFFER"],[6,3,1,"","RL_ATTACHMENT_STENCIL"],[6,3,1,"","RL_ATTACHMENT_TEXTURE2D"],[6,3,1,"","RL_BLEND_ADDITIVE"],[6,3,1,"","RL_BLEND_ADD_COLORS"],[6,3,1,"","RL_BLEND_ALPHA"],[6,3,1,"","RL_BLEND_ALPHA_PREMULTIPLY"],[6,3,1,"","RL_BLEND_CUSTOM"],[6,3,1,"","RL_BLEND_CUSTOM_SEPARATE"],[6,3,1,"","RL_BLEND_MULTIPLIED"],[6,3,1,"","RL_BLEND_SUBTRACT_COLORS"],[6,3,1,"","RL_CULL_FACE_BACK"],[6,3,1,"","RL_CULL_FACE_FRONT"],[6,3,1,"","RL_LOG_ALL"],[6,3,1,"","RL_LOG_DEBUG"],[6,3,1,"","RL_LOG_ERROR"],[6,3,1,"","RL_LOG_FATAL"],[6,3,1,"","RL_LOG_INFO"],[6,3,1,"","RL_LOG_NONE"],[6,3,1,"","RL_LOG_TRACE"],[6,3,1,"","RL_LOG_WARNING"],[6,3,1,"","RL_OPENGL_11"],[6,3,1,"","RL_OPENGL_21"],[6,3,1,"","RL_OPENGL_33"],[6,3,1,"","RL_OPENGL_43"],[6,3,1,"","RL_OPENGL_ES_20"],[6,3,1,"","RL_OPENGL_ES_30"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_DXT1_RGB"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_ETC1_RGB"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_ETC2_RGB"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_PVRT_RGB"],[6,3,1,"","RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R16"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R32"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8"],[6,3,1,"","RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8"],[6,3,1,"","RL_SHADER_ATTRIB_FLOAT"],[6,3,1,"","RL_SHADER_ATTRIB_VEC2"],[6,3,1,"","RL_SHADER_ATTRIB_VEC3"],[6,3,1,"","RL_SHADER_ATTRIB_VEC4"],[6,3,1,"","RL_SHADER_LOC_COLOR_AMBIENT"],[6,3,1,"","RL_SHADER_LOC_COLOR_DIFFUSE"],[6,3,1,"","RL_SHADER_LOC_COLOR_SPECULAR"],[6,3,1,"","RL_SHADER_LOC_MAP_ALBEDO"],[6,3,1,"","RL_SHADER_LOC_MAP_BRDF"],[6,3,1,"","RL_SHADER_LOC_MAP_CUBEMAP"],[6,3,1,"","RL_SHADER_LOC_MAP_EMISSION"],[6,3,1,"","RL_SHADER_LOC_MAP_HEIGHT"],[6,3,1,"","RL_SHADER_LOC_MAP_IRRADIANCE"],[6,3,1,"","RL_SHADER_LOC_MAP_METALNESS"],[6,3,1,"","RL_SHADER_LOC_MAP_NORMAL"],[6,3,1,"","RL_SHADER_LOC_MAP_OCCLUSION"],[6,3,1,"","RL_SHADER_LOC_MAP_PREFILTER"],[6,3,1,"","RL_SHADER_LOC_MAP_ROUGHNESS"],[6,3,1,"","RL_SHADER_LOC_MATRIX_MODEL"],[6,3,1,"","RL_SHADER_LOC_MATRIX_MVP"],[6,3,1,"","RL_SHADER_LOC_MATRIX_NORMAL"],[6,3,1,"","RL_SHADER_LOC_MATRIX_PROJECTION"],[6,3,1,"","RL_SHADER_LOC_MATRIX_VIEW"],[6,3,1,"","RL_SHADER_LOC_VECTOR_VIEW"],[6,3,1,"","RL_SHADER_LOC_VERTEX_COLOR"],[6,3,1,"","RL_SHADER_LOC_VERTEX_NORMAL"],[6,3,1,"","RL_SHADER_LOC_VERTEX_POSITION"],[6,3,1,"","RL_SHADER_LOC_VERTEX_TANGENT"],[6,3,1,"","RL_SHADER_LOC_VERTEX_TEXCOORD01"],[6,3,1,"","RL_SHADER_LOC_VERTEX_TEXCOORD02"],[6,3,1,"","RL_SHADER_UNIFORM_FLOAT"],[6,3,1,"","RL_SHADER_UNIFORM_INT"],[6,3,1,"","RL_SHADER_UNIFORM_IVEC2"],[6,3,1,"","RL_SHADER_UNIFORM_IVEC3"],[6,3,1,"","RL_SHADER_UNIFORM_IVEC4"],[6,3,1,"","RL_SHADER_UNIFORM_SAMPLER2D"],[6,3,1,"","RL_SHADER_UNIFORM_UINT"],[6,3,1,"","RL_SHADER_UNIFORM_UIVEC2"],[6,3,1,"","RL_SHADER_UNIFORM_UIVEC3"],[6,3,1,"","RL_SHADER_UNIFORM_UIVEC4"],[6,3,1,"","RL_SHADER_UNIFORM_VEC2"],[6,3,1,"","RL_SHADER_UNIFORM_VEC3"],[6,3,1,"","RL_SHADER_UNIFORM_VEC4"],[6,3,1,"","RL_TEXTURE_FILTER_ANISOTROPIC_16X"],[6,3,1,"","RL_TEXTURE_FILTER_ANISOTROPIC_4X"],[6,3,1,"","RL_TEXTURE_FILTER_ANISOTROPIC_8X"],[6,3,1,"","RL_TEXTURE_FILTER_BILINEAR"],[6,3,1,"","RL_TEXTURE_FILTER_POINT"],[6,3,1,"","RL_TEXTURE_FILTER_TRILINEAR"],[6,1,1,"","Ray"],[6,1,1,"","RayCollision"],[6,1,1,"","Rectangle"],[6,4,1,"","Remap"],[6,1,1,"","RenderTexture"],[6,1,1,"","RenderTexture2D"],[6,4,1,"","ResetPhysics"],[6,4,1,"","RestoreWindow"],[6,4,1,"","ResumeAudioStream"],[6,4,1,"","ResumeMusicStream"],[6,4,1,"","ResumeSound"],[6,3,1,"","SCROLLBAR"],[6,3,1,"","SCROLLBAR_SIDE"],[6,3,1,"","SCROLLBAR_WIDTH"],[6,3,1,"","SCROLL_PADDING"],[6,3,1,"","SCROLL_SLIDER_PADDING"],[6,3,1,"","SCROLL_SLIDER_SIZE"],[6,3,1,"","SCROLL_SPEED"],[6,3,1,"","SHADER_ATTRIB_FLOAT"],[6,3,1,"","SHADER_ATTRIB_VEC2"],[6,3,1,"","SHADER_ATTRIB_VEC3"],[6,3,1,"","SHADER_ATTRIB_VEC4"],[6,3,1,"","SHADER_LOC_BONE_MATRICES"],[6,3,1,"","SHADER_LOC_COLOR_AMBIENT"],[6,3,1,"","SHADER_LOC_COLOR_DIFFUSE"],[6,3,1,"","SHADER_LOC_COLOR_SPECULAR"],[6,3,1,"","SHADER_LOC_MAP_ALBEDO"],[6,3,1,"","SHADER_LOC_MAP_BRDF"],[6,3,1,"","SHADER_LOC_MAP_CUBEMAP"],[6,3,1,"","SHADER_LOC_MAP_EMISSION"],[6,3,1,"","SHADER_LOC_MAP_HEIGHT"],[6,3,1,"","SHADER_LOC_MAP_IRRADIANCE"],[6,3,1,"","SHADER_LOC_MAP_METALNESS"],[6,3,1,"","SHADER_LOC_MAP_NORMAL"],[6,3,1,"","SHADER_LOC_MAP_OCCLUSION"],[6,3,1,"","SHADER_LOC_MAP_PREFILTER"],[6,3,1,"","SHADER_LOC_MAP_ROUGHNESS"],[6,3,1,"","SHADER_LOC_MATRIX_MODEL"],[6,3,1,"","SHADER_LOC_MATRIX_MVP"],[6,3,1,"","SHADER_LOC_MATRIX_NORMAL"],[6,3,1,"","SHADER_LOC_MATRIX_PROJECTION"],[6,3,1,"","SHADER_LOC_MATRIX_VIEW"],[6,3,1,"","SHADER_LOC_VECTOR_VIEW"],[6,3,1,"","SHADER_LOC_VERTEX_BONEIDS"],[6,3,1,"","SHADER_LOC_VERTEX_BONEWEIGHTS"],[6,3,1,"","SHADER_LOC_VERTEX_COLOR"],[6,3,1,"","SHADER_LOC_VERTEX_NORMAL"],[6,3,1,"","SHADER_LOC_VERTEX_POSITION"],[6,3,1,"","SHADER_LOC_VERTEX_TANGENT"],[6,3,1,"","SHADER_LOC_VERTEX_TEXCOORD01"],[6,3,1,"","SHADER_LOC_VERTEX_TEXCOORD02"],[6,3,1,"","SHADER_UNIFORM_FLOAT"],[6,3,1,"","SHADER_UNIFORM_INT"],[6,3,1,"","SHADER_UNIFORM_IVEC2"],[6,3,1,"","SHADER_UNIFORM_IVEC3"],[6,3,1,"","SHADER_UNIFORM_IVEC4"],[6,3,1,"","SHADER_UNIFORM_SAMPLER2D"],[6,3,1,"","SHADER_UNIFORM_VEC2"],[6,3,1,"","SHADER_UNIFORM_VEC3"],[6,3,1,"","SHADER_UNIFORM_VEC4"],[6,3,1,"","SKYBLUE"],[6,3,1,"","SLIDER"],[6,3,1,"","SLIDER_PADDING"],[6,3,1,"","SLIDER_WIDTH"],[6,3,1,"","SPINNER"],[6,3,1,"","SPIN_BUTTON_SPACING"],[6,3,1,"","SPIN_BUTTON_WIDTH"],[6,3,1,"","STATE_DISABLED"],[6,3,1,"","STATE_FOCUSED"],[6,3,1,"","STATE_NORMAL"],[6,3,1,"","STATE_PRESSED"],[6,3,1,"","STATUSBAR"],[6,4,1,"","SaveFileData"],[6,4,1,"","SaveFileText"],[6,4,1,"","SeekMusicStream"],[6,4,1,"","SetAudioStreamBufferSizeDefault"],[6,4,1,"","SetAudioStreamCallback"],[6,4,1,"","SetAudioStreamPan"],[6,4,1,"","SetAudioStreamPitch"],[6,4,1,"","SetAudioStreamVolume"],[6,4,1,"","SetAutomationEventBaseFrame"],[6,4,1,"","SetAutomationEventList"],[6,4,1,"","SetClipboardText"],[6,4,1,"","SetConfigFlags"],[6,4,1,"","SetExitKey"],[6,4,1,"","SetGamepadMappings"],[6,4,1,"","SetGamepadVibration"],[6,4,1,"","SetGesturesEnabled"],[6,4,1,"","SetLoadFileDataCallback"],[6,4,1,"","SetLoadFileTextCallback"],[6,4,1,"","SetMasterVolume"],[6,4,1,"","SetMaterialTexture"],[6,4,1,"","SetModelMeshMaterial"],[6,4,1,"","SetMouseCursor"],[6,4,1,"","SetMouseOffset"],[6,4,1,"","SetMousePosition"],[6,4,1,"","SetMouseScale"],[6,4,1,"","SetMusicPan"],[6,4,1,"","SetMusicPitch"],[6,4,1,"","SetMusicVolume"],[6,4,1,"","SetPhysicsBodyRotation"],[6,4,1,"","SetPhysicsGravity"],[6,4,1,"","SetPhysicsTimeStep"],[6,4,1,"","SetPixelColor"],[6,4,1,"","SetRandomSeed"],[6,4,1,"","SetSaveFileDataCallback"],[6,4,1,"","SetSaveFileTextCallback"],[6,4,1,"","SetShaderValue"],[6,4,1,"","SetShaderValueMatrix"],[6,4,1,"","SetShaderValueTexture"],[6,4,1,"","SetShaderValueV"],[6,4,1,"","SetShapesTexture"],[6,4,1,"","SetSoundPan"],[6,4,1,"","SetSoundPitch"],[6,4,1,"","SetSoundVolume"],[6,4,1,"","SetTargetFPS"],[6,4,1,"","SetTextLineSpacing"],[6,4,1,"","SetTextureFilter"],[6,4,1,"","SetTextureWrap"],[6,4,1,"","SetTraceLogCallback"],[6,4,1,"","SetTraceLogLevel"],[6,4,1,"","SetWindowFocused"],[6,4,1,"","SetWindowIcon"],[6,4,1,"","SetWindowIcons"],[6,4,1,"","SetWindowMaxSize"],[6,4,1,"","SetWindowMinSize"],[6,4,1,"","SetWindowMonitor"],[6,4,1,"","SetWindowOpacity"],[6,4,1,"","SetWindowPosition"],[6,4,1,"","SetWindowSize"],[6,4,1,"","SetWindowState"],[6,4,1,"","SetWindowTitle"],[6,1,1,"","Shader"],[6,3,1,"","ShaderAttributeDataType"],[6,3,1,"","ShaderLocationIndex"],[6,3,1,"","ShaderUniformDataType"],[6,4,1,"","ShowCursor"],[6,1,1,"","Sound"],[6,4,1,"","StartAutomationEventRecording"],[6,4,1,"","StopAudioStream"],[6,4,1,"","StopAutomationEventRecording"],[6,4,1,"","StopMusicStream"],[6,4,1,"","StopSound"],[6,4,1,"","SwapScreenBuffer"],[6,3,1,"","TEXTBOX"],[6,3,1,"","TEXTURE_FILTER_ANISOTROPIC_16X"],[6,3,1,"","TEXTURE_FILTER_ANISOTROPIC_4X"],[6,3,1,"","TEXTURE_FILTER_ANISOTROPIC_8X"],[6,3,1,"","TEXTURE_FILTER_BILINEAR"],[6,3,1,"","TEXTURE_FILTER_POINT"],[6,3,1,"","TEXTURE_FILTER_TRILINEAR"],[6,3,1,"","TEXTURE_WRAP_CLAMP"],[6,3,1,"","TEXTURE_WRAP_MIRROR_CLAMP"],[6,3,1,"","TEXTURE_WRAP_MIRROR_REPEAT"],[6,3,1,"","TEXTURE_WRAP_REPEAT"],[6,3,1,"","TEXT_ALIGNMENT"],[6,3,1,"","TEXT_ALIGNMENT_VERTICAL"],[6,3,1,"","TEXT_ALIGN_BOTTOM"],[6,3,1,"","TEXT_ALIGN_CENTER"],[6,3,1,"","TEXT_ALIGN_LEFT"],[6,3,1,"","TEXT_ALIGN_MIDDLE"],[6,3,1,"","TEXT_ALIGN_RIGHT"],[6,3,1,"","TEXT_ALIGN_TOP"],[6,3,1,"","TEXT_COLOR_DISABLED"],[6,3,1,"","TEXT_COLOR_FOCUSED"],[6,3,1,"","TEXT_COLOR_NORMAL"],[6,3,1,"","TEXT_COLOR_PRESSED"],[6,3,1,"","TEXT_LINE_SPACING"],[6,3,1,"","TEXT_PADDING"],[6,3,1,"","TEXT_READONLY"],[6,3,1,"","TEXT_SIZE"],[6,3,1,"","TEXT_SPACING"],[6,3,1,"","TEXT_WRAP_CHAR"],[6,3,1,"","TEXT_WRAP_MODE"],[6,3,1,"","TEXT_WRAP_NONE"],[6,3,1,"","TEXT_WRAP_WORD"],[6,3,1,"","TOGGLE"],[6,4,1,"","TakeScreenshot"],[6,4,1,"","TextAppend"],[6,4,1,"","TextCopy"],[6,4,1,"","TextFindIndex"],[6,4,1,"","TextFormat"],[6,4,1,"","TextInsert"],[6,4,1,"","TextIsEqual"],[6,4,1,"","TextJoin"],[6,4,1,"","TextLength"],[6,4,1,"","TextReplace"],[6,4,1,"","TextSplit"],[6,4,1,"","TextSubtext"],[6,4,1,"","TextToCamel"],[6,4,1,"","TextToFloat"],[6,4,1,"","TextToInteger"],[6,4,1,"","TextToLower"],[6,4,1,"","TextToPascal"],[6,4,1,"","TextToSnake"],[6,4,1,"","TextToUpper"],[6,1,1,"","Texture"],[6,1,1,"","Texture2D"],[6,1,1,"","TextureCubemap"],[6,3,1,"","TextureFilter"],[6,3,1,"","TextureWrap"],[6,4,1,"","ToggleBorderlessWindowed"],[6,4,1,"","ToggleFullscreen"],[6,4,1,"","TraceLog"],[6,3,1,"","TraceLogLevel"],[6,1,1,"","Transform"],[6,4,1,"","UnloadAudioStream"],[6,4,1,"","UnloadAutomationEventList"],[6,4,1,"","UnloadCodepoints"],[6,4,1,"","UnloadDirectoryFiles"],[6,4,1,"","UnloadDroppedFiles"],[6,4,1,"","UnloadFileData"],[6,4,1,"","UnloadFileText"],[6,4,1,"","UnloadFont"],[6,4,1,"","UnloadFontData"],[6,4,1,"","UnloadImage"],[6,4,1,"","UnloadImageColors"],[6,4,1,"","UnloadImagePalette"],[6,4,1,"","UnloadMaterial"],[6,4,1,"","UnloadMesh"],[6,4,1,"","UnloadModel"],[6,4,1,"","UnloadModelAnimation"],[6,4,1,"","UnloadModelAnimations"],[6,4,1,"","UnloadMusicStream"],[6,4,1,"","UnloadRandomSequence"],[6,4,1,"","UnloadRenderTexture"],[6,4,1,"","UnloadShader"],[6,4,1,"","UnloadSound"],[6,4,1,"","UnloadSoundAlias"],[6,4,1,"","UnloadTexture"],[6,4,1,"","UnloadUTF8"],[6,4,1,"","UnloadVrStereoConfig"],[6,4,1,"","UnloadWave"],[6,4,1,"","UnloadWaveSamples"],[6,4,1,"","UpdateAudioStream"],[6,4,1,"","UpdateCamera"],[6,4,1,"","UpdateCameraPro"],[6,4,1,"","UpdateMeshBuffer"],[6,4,1,"","UpdateModelAnimation"],[6,4,1,"","UpdateModelAnimationBones"],[6,4,1,"","UpdateMusicStream"],[6,4,1,"","UpdatePhysics"],[6,4,1,"","UpdateSound"],[6,4,1,"","UpdateTexture"],[6,4,1,"","UpdateTextureRec"],[6,4,1,"","UploadMesh"],[6,3,1,"","VALUEBOX"],[6,3,1,"","VIOLET"],[6,1,1,"","Vector2"],[6,4,1,"","Vector2Add"],[6,4,1,"","Vector2AddValue"],[6,4,1,"","Vector2Angle"],[6,4,1,"","Vector2Clamp"],[6,4,1,"","Vector2ClampValue"],[6,4,1,"","Vector2Distance"],[6,4,1,"","Vector2DistanceSqr"],[6,4,1,"","Vector2Divide"],[6,4,1,"","Vector2DotProduct"],[6,4,1,"","Vector2Equals"],[6,4,1,"","Vector2Invert"],[6,4,1,"","Vector2Length"],[6,4,1,"","Vector2LengthSqr"],[6,4,1,"","Vector2Lerp"],[6,4,1,"","Vector2LineAngle"],[6,4,1,"","Vector2Max"],[6,4,1,"","Vector2Min"],[6,4,1,"","Vector2MoveTowards"],[6,4,1,"","Vector2Multiply"],[6,4,1,"","Vector2Negate"],[6,4,1,"","Vector2Normalize"],[6,4,1,"","Vector2One"],[6,4,1,"","Vector2Reflect"],[6,4,1,"","Vector2Refract"],[6,4,1,"","Vector2Rotate"],[6,4,1,"","Vector2Scale"],[6,4,1,"","Vector2Subtract"],[6,4,1,"","Vector2SubtractValue"],[6,4,1,"","Vector2Transform"],[6,4,1,"","Vector2Zero"],[6,1,1,"","Vector3"],[6,4,1,"","Vector3Add"],[6,4,1,"","Vector3AddValue"],[6,4,1,"","Vector3Angle"],[6,4,1,"","Vector3Barycenter"],[6,4,1,"","Vector3Clamp"],[6,4,1,"","Vector3ClampValue"],[6,4,1,"","Vector3CrossProduct"],[6,4,1,"","Vector3CubicHermite"],[6,4,1,"","Vector3Distance"],[6,4,1,"","Vector3DistanceSqr"],[6,4,1,"","Vector3Divide"],[6,4,1,"","Vector3DotProduct"],[6,4,1,"","Vector3Equals"],[6,4,1,"","Vector3Invert"],[6,4,1,"","Vector3Length"],[6,4,1,"","Vector3LengthSqr"],[6,4,1,"","Vector3Lerp"],[6,4,1,"","Vector3Max"],[6,4,1,"","Vector3Min"],[6,4,1,"","Vector3MoveTowards"],[6,4,1,"","Vector3Multiply"],[6,4,1,"","Vector3Negate"],[6,4,1,"","Vector3Normalize"],[6,4,1,"","Vector3One"],[6,4,1,"","Vector3OrthoNormalize"],[6,4,1,"","Vector3Perpendicular"],[6,4,1,"","Vector3Project"],[6,4,1,"","Vector3Reflect"],[6,4,1,"","Vector3Refract"],[6,4,1,"","Vector3Reject"],[6,4,1,"","Vector3RotateByAxisAngle"],[6,4,1,"","Vector3RotateByQuaternion"],[6,4,1,"","Vector3Scale"],[6,4,1,"","Vector3Subtract"],[6,4,1,"","Vector3SubtractValue"],[6,4,1,"","Vector3ToFloatV"],[6,4,1,"","Vector3Transform"],[6,4,1,"","Vector3Unproject"],[6,4,1,"","Vector3Zero"],[6,1,1,"","Vector4"],[6,4,1,"","Vector4Add"],[6,4,1,"","Vector4AddValue"],[6,4,1,"","Vector4Distance"],[6,4,1,"","Vector4DistanceSqr"],[6,4,1,"","Vector4Divide"],[6,4,1,"","Vector4DotProduct"],[6,4,1,"","Vector4Equals"],[6,4,1,"","Vector4Invert"],[6,4,1,"","Vector4Length"],[6,4,1,"","Vector4LengthSqr"],[6,4,1,"","Vector4Lerp"],[6,4,1,"","Vector4Max"],[6,4,1,"","Vector4Min"],[6,4,1,"","Vector4MoveTowards"],[6,4,1,"","Vector4Multiply"],[6,4,1,"","Vector4Negate"],[6,4,1,"","Vector4Normalize"],[6,4,1,"","Vector4One"],[6,4,1,"","Vector4Scale"],[6,4,1,"","Vector4Subtract"],[6,4,1,"","Vector4SubtractValue"],[6,4,1,"","Vector4Zero"],[6,1,1,"","VrDeviceInfo"],[6,1,1,"","VrStereoConfig"],[6,3,1,"","WHITE"],[6,4,1,"","WaitTime"],[6,1,1,"","Wave"],[6,4,1,"","WaveCopy"],[6,4,1,"","WaveCrop"],[6,4,1,"","WaveFormat"],[6,4,1,"","WindowShouldClose"],[6,4,1,"","Wrap"],[6,3,1,"","YELLOW"],[6,3,1,"","ffi"],[6,1,1,"","float16"],[6,1,1,"","float3"],[6,4,1,"","glfwCreateCursor"],[6,4,1,"","glfwCreateStandardCursor"],[6,4,1,"","glfwCreateWindow"],[6,4,1,"","glfwDefaultWindowHints"],[6,4,1,"","glfwDestroyCursor"],[6,4,1,"","glfwDestroyWindow"],[6,4,1,"","glfwExtensionSupported"],[6,4,1,"","glfwFocusWindow"],[6,4,1,"","glfwGetClipboardString"],[6,4,1,"","glfwGetCurrentContext"],[6,4,1,"","glfwGetCursorPos"],[6,4,1,"","glfwGetError"],[6,4,1,"","glfwGetFramebufferSize"],[6,4,1,"","glfwGetGamepadName"],[6,4,1,"","glfwGetGamepadState"],[6,4,1,"","glfwGetGammaRamp"],[6,4,1,"","glfwGetInputMode"],[6,4,1,"","glfwGetJoystickAxes"],[6,4,1,"","glfwGetJoystickButtons"],[6,4,1,"","glfwGetJoystickGUID"],[6,4,1,"","glfwGetJoystickHats"],[6,4,1,"","glfwGetJoystickName"],[6,4,1,"","glfwGetJoystickUserPointer"],[6,4,1,"","glfwGetKey"],[6,4,1,"","glfwGetKeyName"],[6,4,1,"","glfwGetKeyScancode"],[6,4,1,"","glfwGetMonitorContentScale"],[6,4,1,"","glfwGetMonitorName"],[6,4,1,"","glfwGetMonitorPhysicalSize"],[6,4,1,"","glfwGetMonitorPos"],[6,4,1,"","glfwGetMonitorUserPointer"],[6,4,1,"","glfwGetMonitorWorkarea"],[6,4,1,"","glfwGetMonitors"],[6,4,1,"","glfwGetMouseButton"],[6,4,1,"","glfwGetPlatform"],[6,4,1,"","glfwGetPrimaryMonitor"],[6,4,1,"","glfwGetProcAddress"],[6,4,1,"","glfwGetRequiredInstanceExtensions"],[6,4,1,"","glfwGetTime"],[6,4,1,"","glfwGetTimerFrequency"],[6,4,1,"","glfwGetTimerValue"],[6,4,1,"","glfwGetVersion"],[6,4,1,"","glfwGetVersionString"],[6,4,1,"","glfwGetVideoMode"],[6,4,1,"","glfwGetVideoModes"],[6,4,1,"","glfwGetWindowAttrib"],[6,4,1,"","glfwGetWindowContentScale"],[6,4,1,"","glfwGetWindowFrameSize"],[6,4,1,"","glfwGetWindowMonitor"],[6,4,1,"","glfwGetWindowOpacity"],[6,4,1,"","glfwGetWindowPos"],[6,4,1,"","glfwGetWindowSize"],[6,4,1,"","glfwGetWindowTitle"],[6,4,1,"","glfwGetWindowUserPointer"],[6,4,1,"","glfwHideWindow"],[6,4,1,"","glfwIconifyWindow"],[6,4,1,"","glfwInit"],[6,4,1,"","glfwInitAllocator"],[6,4,1,"","glfwInitHint"],[6,4,1,"","glfwJoystickIsGamepad"],[6,4,1,"","glfwJoystickPresent"],[6,4,1,"","glfwMakeContextCurrent"],[6,4,1,"","glfwMaximizeWindow"],[6,4,1,"","glfwPlatformSupported"],[6,4,1,"","glfwPollEvents"],[6,4,1,"","glfwPostEmptyEvent"],[6,4,1,"","glfwRawMouseMotionSupported"],[6,4,1,"","glfwRequestWindowAttention"],[6,4,1,"","glfwRestoreWindow"],[6,4,1,"","glfwSetCharCallback"],[6,4,1,"","glfwSetCharModsCallback"],[6,4,1,"","glfwSetClipboardString"],[6,4,1,"","glfwSetCursor"],[6,4,1,"","glfwSetCursorEnterCallback"],[6,4,1,"","glfwSetCursorPos"],[6,4,1,"","glfwSetCursorPosCallback"],[6,4,1,"","glfwSetDropCallback"],[6,4,1,"","glfwSetErrorCallback"],[6,4,1,"","glfwSetFramebufferSizeCallback"],[6,4,1,"","glfwSetGamma"],[6,4,1,"","glfwSetGammaRamp"],[6,4,1,"","glfwSetInputMode"],[6,4,1,"","glfwSetJoystickCallback"],[6,4,1,"","glfwSetJoystickUserPointer"],[6,4,1,"","glfwSetKeyCallback"],[6,4,1,"","glfwSetMonitorCallback"],[6,4,1,"","glfwSetMonitorUserPointer"],[6,4,1,"","glfwSetMouseButtonCallback"],[6,4,1,"","glfwSetScrollCallback"],[6,4,1,"","glfwSetTime"],[6,4,1,"","glfwSetWindowAspectRatio"],[6,4,1,"","glfwSetWindowAttrib"],[6,4,1,"","glfwSetWindowCloseCallback"],[6,4,1,"","glfwSetWindowContentScaleCallback"],[6,4,1,"","glfwSetWindowFocusCallback"],[6,4,1,"","glfwSetWindowIcon"],[6,4,1,"","glfwSetWindowIconifyCallback"],[6,4,1,"","glfwSetWindowMaximizeCallback"],[6,4,1,"","glfwSetWindowMonitor"],[6,4,1,"","glfwSetWindowOpacity"],[6,4,1,"","glfwSetWindowPos"],[6,4,1,"","glfwSetWindowPosCallback"],[6,4,1,"","glfwSetWindowRefreshCallback"],[6,4,1,"","glfwSetWindowShouldClose"],[6,4,1,"","glfwSetWindowSize"],[6,4,1,"","glfwSetWindowSizeCallback"],[6,4,1,"","glfwSetWindowSizeLimits"],[6,4,1,"","glfwSetWindowTitle"],[6,4,1,"","glfwSetWindowUserPointer"],[6,4,1,"","glfwShowWindow"],[6,4,1,"","glfwSwapBuffers"],[6,4,1,"","glfwSwapInterval"],[6,4,1,"","glfwTerminate"],[6,4,1,"","glfwUpdateGamepadMappings"],[6,4,1,"","glfwVulkanSupported"],[6,4,1,"","glfwWaitEvents"],[6,4,1,"","glfwWaitEventsTimeout"],[6,4,1,"","glfwWindowHint"],[6,4,1,"","glfwWindowHintString"],[6,4,1,"","glfwWindowShouldClose"],[6,1,1,"","rAudioBuffer"],[6,1,1,"","rAudioProcessor"],[6,3,1,"","rl"],[6,4,1,"","rlActiveDrawBuffers"],[6,4,1,"","rlActiveTextureSlot"],[6,4,1,"","rlBegin"],[6,4,1,"","rlBindFramebuffer"],[6,4,1,"","rlBindImageTexture"],[6,4,1,"","rlBindShaderBuffer"],[6,3,1,"","rlBlendMode"],[6,4,1,"","rlBlitFramebuffer"],[6,4,1,"","rlCheckErrors"],[6,4,1,"","rlCheckRenderBatchLimit"],[6,4,1,"","rlClearColor"],[6,4,1,"","rlClearScreenBuffers"],[6,4,1,"","rlColor3f"],[6,4,1,"","rlColor4f"],[6,4,1,"","rlColor4ub"],[6,4,1,"","rlColorMask"],[6,4,1,"","rlCompileShader"],[6,4,1,"","rlComputeShaderDispatch"],[6,4,1,"","rlCopyShaderBuffer"],[6,4,1,"","rlCubemapParameters"],[6,3,1,"","rlCullMode"],[6,4,1,"","rlDisableBackfaceCulling"],[6,4,1,"","rlDisableColorBlend"],[6,4,1,"","rlDisableDepthMask"],[6,4,1,"","rlDisableDepthTest"],[6,4,1,"","rlDisableFramebuffer"],[6,4,1,"","rlDisableScissorTest"],[6,4,1,"","rlDisableShader"],[6,4,1,"","rlDisableSmoothLines"],[6,4,1,"","rlDisableStereoRender"],[6,4,1,"","rlDisableTexture"],[6,4,1,"","rlDisableTextureCubemap"],[6,4,1,"","rlDisableVertexArray"],[6,4,1,"","rlDisableVertexAttribute"],[6,4,1,"","rlDisableVertexBuffer"],[6,4,1,"","rlDisableVertexBufferElement"],[6,4,1,"","rlDisableWireMode"],[6,1,1,"","rlDrawCall"],[6,4,1,"","rlDrawRenderBatch"],[6,4,1,"","rlDrawRenderBatchActive"],[6,4,1,"","rlDrawVertexArray"],[6,4,1,"","rlDrawVertexArrayElements"],[6,4,1,"","rlDrawVertexArrayElementsInstanced"],[6,4,1,"","rlDrawVertexArrayInstanced"],[6,4,1,"","rlEnableBackfaceCulling"],[6,4,1,"","rlEnableColorBlend"],[6,4,1,"","rlEnableDepthMask"],[6,4,1,"","rlEnableDepthTest"],[6,4,1,"","rlEnableFramebuffer"],[6,4,1,"","rlEnablePointMode"],[6,4,1,"","rlEnableScissorTest"],[6,4,1,"","rlEnableShader"],[6,4,1,"","rlEnableSmoothLines"],[6,4,1,"","rlEnableStereoRender"],[6,4,1,"","rlEnableTexture"],[6,4,1,"","rlEnableTextureCubemap"],[6,4,1,"","rlEnableVertexArray"],[6,4,1,"","rlEnableVertexAttribute"],[6,4,1,"","rlEnableVertexBuffer"],[6,4,1,"","rlEnableVertexBufferElement"],[6,4,1,"","rlEnableWireMode"],[6,4,1,"","rlEnd"],[6,4,1,"","rlFramebufferAttach"],[6,3,1,"","rlFramebufferAttachTextureType"],[6,3,1,"","rlFramebufferAttachType"],[6,4,1,"","rlFramebufferComplete"],[6,4,1,"","rlFrustum"],[6,4,1,"","rlGenTextureMipmaps"],[6,4,1,"","rlGetActiveFramebuffer"],[6,4,1,"","rlGetCullDistanceFar"],[6,4,1,"","rlGetCullDistanceNear"],[6,4,1,"","rlGetFramebufferHeight"],[6,4,1,"","rlGetFramebufferWidth"],[6,4,1,"","rlGetGlTextureFormats"],[6,4,1,"","rlGetLineWidth"],[6,4,1,"","rlGetLocationAttrib"],[6,4,1,"","rlGetLocationUniform"],[6,4,1,"","rlGetMatrixModelview"],[6,4,1,"","rlGetMatrixProjection"],[6,4,1,"","rlGetMatrixProjectionStereo"],[6,4,1,"","rlGetMatrixTransform"],[6,4,1,"","rlGetMatrixViewOffsetStereo"],[6,4,1,"","rlGetPixelFormatName"],[6,4,1,"","rlGetShaderBufferSize"],[6,4,1,"","rlGetShaderIdDefault"],[6,4,1,"","rlGetShaderLocsDefault"],[6,4,1,"","rlGetTextureIdDefault"],[6,4,1,"","rlGetVersion"],[6,3,1,"","rlGlVersion"],[6,4,1,"","rlIsStereoRenderEnabled"],[6,4,1,"","rlLoadComputeShaderProgram"],[6,4,1,"","rlLoadDrawCube"],[6,4,1,"","rlLoadDrawQuad"],[6,4,1,"","rlLoadExtensions"],[6,4,1,"","rlLoadFramebuffer"],[6,4,1,"","rlLoadIdentity"],[6,4,1,"","rlLoadRenderBatch"],[6,4,1,"","rlLoadShaderBuffer"],[6,4,1,"","rlLoadShaderCode"],[6,4,1,"","rlLoadShaderProgram"],[6,4,1,"","rlLoadTexture"],[6,4,1,"","rlLoadTextureCubemap"],[6,4,1,"","rlLoadTextureDepth"],[6,4,1,"","rlLoadVertexArray"],[6,4,1,"","rlLoadVertexBuffer"],[6,4,1,"","rlLoadVertexBufferElement"],[6,4,1,"","rlMatrixMode"],[6,4,1,"","rlMultMatrixf"],[6,4,1,"","rlNormal3f"],[6,4,1,"","rlOrtho"],[6,3,1,"","rlPixelFormat"],[6,4,1,"","rlPopMatrix"],[6,4,1,"","rlPushMatrix"],[6,4,1,"","rlReadScreenPixels"],[6,4,1,"","rlReadShaderBuffer"],[6,4,1,"","rlReadTexturePixels"],[6,1,1,"","rlRenderBatch"],[6,4,1,"","rlRotatef"],[6,4,1,"","rlScalef"],[6,4,1,"","rlScissor"],[6,4,1,"","rlSetBlendFactors"],[6,4,1,"","rlSetBlendFactorsSeparate"],[6,4,1,"","rlSetBlendMode"],[6,4,1,"","rlSetClipPlanes"],[6,4,1,"","rlSetCullFace"],[6,4,1,"","rlSetFramebufferHeight"],[6,4,1,"","rlSetFramebufferWidth"],[6,4,1,"","rlSetLineWidth"],[6,4,1,"","rlSetMatrixModelview"],[6,4,1,"","rlSetMatrixProjection"],[6,4,1,"","rlSetMatrixProjectionStereo"],[6,4,1,"","rlSetMatrixViewOffsetStereo"],[6,4,1,"","rlSetRenderBatchActive"],[6,4,1,"","rlSetShader"],[6,4,1,"","rlSetTexture"],[6,4,1,"","rlSetUniform"],[6,4,1,"","rlSetUniformMatrices"],[6,4,1,"","rlSetUniformMatrix"],[6,4,1,"","rlSetUniformSampler"],[6,4,1,"","rlSetVertexAttribute"],[6,4,1,"","rlSetVertexAttributeDefault"],[6,4,1,"","rlSetVertexAttributeDivisor"],[6,3,1,"","rlShaderAttributeDataType"],[6,3,1,"","rlShaderLocationIndex"],[6,3,1,"","rlShaderUniformDataType"],[6,4,1,"","rlTexCoord2f"],[6,3,1,"","rlTextureFilter"],[6,4,1,"","rlTextureParameters"],[6,3,1,"","rlTraceLogLevel"],[6,4,1,"","rlTranslatef"],[6,4,1,"","rlUnloadFramebuffer"],[6,4,1,"","rlUnloadRenderBatch"],[6,4,1,"","rlUnloadShaderBuffer"],[6,4,1,"","rlUnloadShaderProgram"],[6,4,1,"","rlUnloadTexture"],[6,4,1,"","rlUnloadVertexArray"],[6,4,1,"","rlUnloadVertexBuffer"],[6,4,1,"","rlUpdateShaderBuffer"],[6,4,1,"","rlUpdateTexture"],[6,4,1,"","rlUpdateVertexBuffer"],[6,4,1,"","rlUpdateVertexBufferElements"],[6,4,1,"","rlVertex2f"],[6,4,1,"","rlVertex2i"],[6,4,1,"","rlVertex3f"],[6,1,1,"","rlVertexBuffer"],[6,4,1,"","rlViewport"],[6,4,1,"","rlglClose"],[6,4,1,"","rlglInit"],[6,1,1,"","struct"]],"raylib.AudioStream":[[6,2,1,"","buffer"],[6,2,1,"","channels"],[6,2,1,"","processor"],[6,2,1,"","sampleRate"],[6,2,1,"","sampleSize"]],"raylib.AutomationEvent":[[6,2,1,"","frame"],[6,2,1,"","params"],[6,2,1,"","type"]],"raylib.AutomationEventList":[[6,2,1,"","capacity"],[6,2,1,"","count"],[6,2,1,"","events"]],"raylib.BoneInfo":[[6,2,1,"","name"],[6,2,1,"","parent"]],"raylib.BoundingBox":[[6,2,1,"","max"],[6,2,1,"","min"]],"raylib.Camera":[[6,2,1,"","fovy"],[6,2,1,"","position"],[6,2,1,"","projection"],[6,2,1,"","target"],[6,2,1,"","up"]],"raylib.Camera2D":[[6,2,1,"","offset"],[6,2,1,"","rotation"],[6,2,1,"","target"],[6,2,1,"","zoom"]],"raylib.Camera3D":[[6,2,1,"","fovy"],[6,2,1,"","position"],[6,2,1,"","projection"],[6,2,1,"","target"],[6,2,1,"","up"]],"raylib.Color":[[6,2,1,"","a"],[6,2,1,"","b"],[6,2,1,"","g"],[6,2,1,"","r"]],"raylib.FilePathList":[[6,2,1,"","capacity"],[6,2,1,"","count"],[6,2,1,"","paths"]],"raylib.Font":[[6,2,1,"","baseSize"],[6,2,1,"","glyphCount"],[6,2,1,"","glyphPadding"],[6,2,1,"","glyphs"],[6,2,1,"","recs"],[6,2,1,"","texture"]],"raylib.GLFWallocator":[[6,2,1,"","allocate"],[6,2,1,"","deallocate"],[6,2,1,"","reallocate"],[6,2,1,"","user"]],"raylib.GLFWgamepadstate":[[6,2,1,"","axes"],[6,2,1,"","buttons"]],"raylib.GLFWgammaramp":[[6,2,1,"","blue"],[6,2,1,"","green"],[6,2,1,"","red"],[6,2,1,"","size"]],"raylib.GLFWimage":[[6,2,1,"","height"],[6,2,1,"","pixels"],[6,2,1,"","width"]],"raylib.GLFWvidmode":[[6,2,1,"","blueBits"],[6,2,1,"","greenBits"],[6,2,1,"","height"],[6,2,1,"","redBits"],[6,2,1,"","refreshRate"],[6,2,1,"","width"]],"raylib.GlyphInfo":[[6,2,1,"","advanceX"],[6,2,1,"","image"],[6,2,1,"","offsetX"],[6,2,1,"","offsetY"],[6,2,1,"","value"]],"raylib.GuiStyleProp":[[6,2,1,"","controlId"],[6,2,1,"","propertyId"],[6,2,1,"","propertyValue"]],"raylib.Image":[[6,2,1,"","data"],[6,2,1,"","format"],[6,2,1,"","height"],[6,2,1,"","mipmaps"],[6,2,1,"","width"]],"raylib.Material":[[6,2,1,"","maps"],[6,2,1,"","params"],[6,2,1,"","shader"]],"raylib.MaterialMap":[[6,2,1,"","color"],[6,2,1,"","texture"],[6,2,1,"","value"]],"raylib.Matrix":[[6,2,1,"","m0"],[6,2,1,"","m1"],[6,2,1,"","m10"],[6,2,1,"","m11"],[6,2,1,"","m12"],[6,2,1,"","m13"],[6,2,1,"","m14"],[6,2,1,"","m15"],[6,2,1,"","m2"],[6,2,1,"","m3"],[6,2,1,"","m4"],[6,2,1,"","m5"],[6,2,1,"","m6"],[6,2,1,"","m7"],[6,2,1,"","m8"],[6,2,1,"","m9"]],"raylib.Matrix2x2":[[6,2,1,"","m00"],[6,2,1,"","m01"],[6,2,1,"","m10"],[6,2,1,"","m11"]],"raylib.Mesh":[[6,2,1,"","animNormals"],[6,2,1,"","animVertices"],[6,2,1,"","boneCount"],[6,2,1,"","boneIds"],[6,2,1,"","boneMatrices"],[6,2,1,"","boneWeights"],[6,2,1,"","colors"],[6,2,1,"","indices"],[6,2,1,"","normals"],[6,2,1,"","tangents"],[6,2,1,"","texcoords"],[6,2,1,"","texcoords2"],[6,2,1,"","triangleCount"],[6,2,1,"","vaoId"],[6,2,1,"","vboId"],[6,2,1,"","vertexCount"],[6,2,1,"","vertices"]],"raylib.Model":[[6,2,1,"","bindPose"],[6,2,1,"","boneCount"],[6,2,1,"","bones"],[6,2,1,"","materialCount"],[6,2,1,"","materials"],[6,2,1,"","meshCount"],[6,2,1,"","meshMaterial"],[6,2,1,"","meshes"],[6,2,1,"","transform"]],"raylib.ModelAnimation":[[6,2,1,"","boneCount"],[6,2,1,"","bones"],[6,2,1,"","frameCount"],[6,2,1,"","framePoses"],[6,2,1,"","name"]],"raylib.Music":[[6,2,1,"","ctxData"],[6,2,1,"","ctxType"],[6,2,1,"","frameCount"],[6,2,1,"","looping"],[6,2,1,"","stream"]],"raylib.NPatchInfo":[[6,2,1,"","bottom"],[6,2,1,"","layout"],[6,2,1,"","left"],[6,2,1,"","right"],[6,2,1,"","source"],[6,2,1,"","top"]],"raylib.PhysicsBodyData":[[6,2,1,"","angularVelocity"],[6,2,1,"","dynamicFriction"],[6,2,1,"","enabled"],[6,2,1,"","force"],[6,2,1,"","freezeOrient"],[6,2,1,"","id"],[6,2,1,"","inertia"],[6,2,1,"","inverseInertia"],[6,2,1,"","inverseMass"],[6,2,1,"","isGrounded"],[6,2,1,"","mass"],[6,2,1,"","orient"],[6,2,1,"","position"],[6,2,1,"","restitution"],[6,2,1,"","shape"],[6,2,1,"","staticFriction"],[6,2,1,"","torque"],[6,2,1,"","useGravity"],[6,2,1,"","velocity"]],"raylib.PhysicsManifoldData":[[6,2,1,"","bodyA"],[6,2,1,"","bodyB"],[6,2,1,"","contacts"],[6,2,1,"","contactsCount"],[6,2,1,"","dynamicFriction"],[6,2,1,"","id"],[6,2,1,"","normal"],[6,2,1,"","penetration"],[6,2,1,"","restitution"],[6,2,1,"","staticFriction"]],"raylib.PhysicsShape":[[6,2,1,"","body"],[6,2,1,"","radius"],[6,2,1,"","transform"],[6,2,1,"","type"],[6,2,1,"","vertexData"]],"raylib.PhysicsVertexData":[[6,2,1,"","normals"],[6,2,1,"","positions"],[6,2,1,"","vertexCount"]],"raylib.Quaternion":[[6,2,1,"","w"],[6,2,1,"","x"],[6,2,1,"","y"],[6,2,1,"","z"]],"raylib.Ray":[[6,2,1,"","direction"],[6,2,1,"","position"]],"raylib.RayCollision":[[6,2,1,"","distance"],[6,2,1,"","hit"],[6,2,1,"","normal"],[6,2,1,"","point"]],"raylib.Rectangle":[[6,2,1,"","height"],[6,2,1,"","width"],[6,2,1,"","x"],[6,2,1,"","y"]],"raylib.RenderTexture":[[6,2,1,"","depth"],[6,2,1,"","id"],[6,2,1,"","texture"]],"raylib.RenderTexture2D":[[6,2,1,"","depth"],[6,2,1,"","id"],[6,2,1,"","texture"]],"raylib.Shader":[[6,2,1,"","id"],[6,2,1,"","locs"]],"raylib.Sound":[[6,2,1,"","frameCount"],[6,2,1,"","stream"]],"raylib.Texture":[[6,2,1,"","format"],[6,2,1,"","height"],[6,2,1,"","id"],[6,2,1,"","mipmaps"],[6,2,1,"","width"]],"raylib.Texture2D":[[6,2,1,"","format"],[6,2,1,"","height"],[6,2,1,"","id"],[6,2,1,"","mipmaps"],[6,2,1,"","width"]],"raylib.TextureCubemap":[[6,2,1,"","format"],[6,2,1,"","height"],[6,2,1,"","id"],[6,2,1,"","mipmaps"],[6,2,1,"","width"]],"raylib.Transform":[[6,2,1,"","rotation"],[6,2,1,"","scale"],[6,2,1,"","translation"]],"raylib.Vector2":[[6,2,1,"","x"],[6,2,1,"","y"]],"raylib.Vector3":[[6,2,1,"","x"],[6,2,1,"","y"],[6,2,1,"","z"]],"raylib.Vector4":[[6,2,1,"","w"],[6,2,1,"","x"],[6,2,1,"","y"],[6,2,1,"","z"]],"raylib.VrDeviceInfo":[[6,2,1,"","chromaAbCorrection"],[6,2,1,"","eyeToScreenDistance"],[6,2,1,"","hResolution"],[6,2,1,"","hScreenSize"],[6,2,1,"","interpupillaryDistance"],[6,2,1,"","lensDistortionValues"],[6,2,1,"","lensSeparationDistance"],[6,2,1,"","vResolution"],[6,2,1,"","vScreenSize"]],"raylib.VrStereoConfig":[[6,2,1,"","leftLensCenter"],[6,2,1,"","leftScreenCenter"],[6,2,1,"","projection"],[6,2,1,"","rightLensCenter"],[6,2,1,"","rightScreenCenter"],[6,2,1,"","scale"],[6,2,1,"","scaleIn"],[6,2,1,"","viewOffset"]],"raylib.Wave":[[6,2,1,"","channels"],[6,2,1,"","data"],[6,2,1,"","frameCount"],[6,2,1,"","sampleRate"],[6,2,1,"","sampleSize"]],"raylib.float16":[[6,2,1,"","v"]],"raylib.float3":[[6,2,1,"","v"]],"raylib.rlDrawCall":[[6,2,1,"","mode"],[6,2,1,"","textureId"],[6,2,1,"","vertexAlignment"],[6,2,1,"","vertexCount"]],"raylib.rlRenderBatch":[[6,2,1,"","bufferCount"],[6,2,1,"","currentBuffer"],[6,2,1,"","currentDepth"],[6,2,1,"","drawCounter"],[6,2,1,"","draws"],[6,2,1,"","vertexBuffer"]],"raylib.rlVertexBuffer":[[6,2,1,"","colors"],[6,2,1,"","elementCount"],[6,2,1,"","indices"],[6,2,1,"","normals"],[6,2,1,"","texcoords"],[6,2,1,"","vaoId"],[6,2,1,"","vboId"],[6,2,1,"","vertices"]]},"objnames":{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","data","Python data"],"4":["py","function","Python function"]},"objtypes":{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:data","4":"py:function"},"terms":{"":[0,1],"0":[0,1,2,5,6],"0f":[5,6],"0x3f":[5,6],"0xrrggbbaa":[5,6],"1":[1,5,6],"10":[0,1,5],"100":[1,5,6],"101":5,"102":5,"1024":5,"103":5,"104":5,"105":5,"10500":1,"106":5,"107":5,"108":5,"109":5,"11":[1,5],"110":5,"111":5,"112":5,"113":5,"114":5,"115":5,"116":5,"117":5,"118":5,"119":5,"12":[1,5],"120":5,"121":5,"122":5,"123":5,"124":5,"125":5,"126":5,"127":5,"128":5,"129":5,"13":[1,5],"130":5,"131":5,"132":5,"133":5,"134":5,"135":5,"136":5,"137":5,"138":5,"139":5,"14":[0,1,5],"140":5,"141":5,"142":5,"143":5,"144":5,"145":5,"146":5,"147":5,"148":5,"149":5,"15":[1,5],"150":5,"151":5,"152":5,"153":5,"154":5,"155":5,"156":5,"157":5,"158":5,"159":5,"16":[5,6],"160":5,"161":5,"162":5,"163":5,"16384":5,"164":5,"165":5,"166":5,"167":5,"168":5,"168100":1,"169":5,"16bpp":[5,6],"17":5,"170":5,"171":5,"172":5,"173":5,"174":5,"175":5,"176":5,"177":5,"178":5,"179":5,"18":[5,6],"180":5,"180000":1,"181":5,"182":5,"183":5,"184":5,"185":5,"186":5,"187":5,"188":5,"189":5,"19":5,"190":[1,5,6],"191":5,"192":5,"193":5,"194":5,"195":5,"196":5,"197":5,"198":5,"199":5,"2":[1,5,6],"20":[1,5,6],"200":[1,5,6],"201":5,"202":5,"2020":1,"203":5,"204":5,"2048":5,"205":5,"206":5,"207":5,"208":5,"209":5,"21":5,"210":5,"211":5,"212":5,"213":5,"214":5,"215":5,"216":5,"217":5,"218":5,"219":5,"22":5,"220":5,"221":5,"222":5,"223":5,"224":5,"225":5,"226":5,"227":5,"228":5,"229":5,"23":5,"230":5,"231":5,"232":5,"233":5,"234":5,"235":5,"236":5,"237":5,"238":5,"239":5,"24":5,"240":5,"241":5,"242":5,"243":5,"244":5,"245":5,"246":5,"247":5,"248":5,"249":5,"25":5,"250":5,"251":5,"252":5,"253":5,"254":5,"255":[5,6],"256":5,"257":5,"258":5,"259":5,"26":5,"260":5,"261":5,"262":5,"263":5,"264":5,"265":5,"266":5,"267":5,"268":5,"269":5,"27":5,"28":5,"280":5,"281":5,"282":5,"283":5,"284":5,"29":5,"290":5,"291":5,"292":5,"293":5,"294":5,"295":5,"296":5,"297":5,"298":5,"299":5,"2d":[5,6],"3":[0,1,5,6],"30":5,"300":5,"301":5,"31":5,"32":[2,5],"320":5,"321":5,"322":5,"323":5,"324":5,"325":5,"326":5,"327":5,"32768":5,"328":5,"329":5,"32bit":[5,6],"33":5,"330":5,"331":5,"332":5,"333":5,"334":5,"335":5,"336":5,"33800":1,"34":5,"340":5,"341":5,"342":5,"343":5,"344":5,"345":5,"346":5,"347":5,"348":5,"35":5,"359":[5,6],"36":5,"360":[5,6],"37":5,"38":5,"39":5,"3d":[1,5,6],"4":[1,2,5,6],"40":5,"4096":5,"41":5,"42":5,"43":5,"44":5,"45":[5,6],"450":[1,5,6],"46":5,"47":5,"48":5,"49":5,"4x4":[5,6],"5":[0,2,4,5,6],"50":5,"500":1,"51":5,"512":5,"52":5,"53":[1,5],"54":5,"55":5,"56":5,"57":5,"58":5,"59":5,"6":[0,5],"60":[1,5,6],"61":5,"62":5,"63":5,"6300":1,"64":[2,5],"65":5,"65536":5,"66":5,"666666":[5,6],"67":5,"68":5,"69":5,"7":[0,1,5],"70":5,"71":5,"72":5,"73":5,"74":5,"75":5,"76":5,"77":5,"7700":1,"78":5,"79":5,"8":[0,1,5,6],"80":[1,5],"800":[1,5,6],"8000":1,"81":5,"8192":5,"82":5,"83":5,"84":5,"85":5,"86":5,"8600":1,"87":5,"88":5,"89":5,"9":[0,1,5],"90":5,"90deg":[5,6],"91":5,"92":5,"93":5,"94":5,"95":5,"95000":1,"96":5,"97":5,"98":5,"99":5,"A":1,"And":0,"BE":[5,6],"BY":[5,6],"But":[1,3],"For":[1,2],"If":[0,2,3,6],"It":[1,5],"NOT":[5,6],"ON":[0,2],"On":[0,1],"The":[1,3,5,6],"Then":[0,1,2,3],"There":[0,1,3,5],"These":0,"To":0,"With":1,"_cffi_backend":[5,6],"_raylib_cffi":0,"abi":3,"abpp":[5,6],"accept":0,"access":3,"accumul":[5,6],"activ":[1,5,6],"actual":[0,5,6],"ad":2,"add":[1,5,6],"addit":[2,3,5,6],"advancex":[5,6],"advantag":3,"advert":4,"again":[5,6],"algorithm":[5,6],"alia":[5,6],"alias":[5,6],"align":5,"all":[1,2,3,5,6],"alloc":[5,6],"alloi":1,"allow":6,"alpha":[5,6],"alphamask":[5,6],"alreadi":3,"also":[1,2,3,5],"altern":2,"alwai":[3,6],"amount":[5,6],"an":[3,5,6],"angl":[5,6],"angular":[5,6],"angularveloc":[5,6],"ani":[1,5,6],"anim":[5,6],"animcount":[5,6],"animnorm":[5,6],"animvertic":[5,6],"anoth":[5,6],"anyth":[3,5],"api":[3,4],"app":4,"append":[5,6],"appli":[5,6],"applic":[5,6],"approxim":[5,6],"apt":[0,1,2],"ar":[0,2,3,5,6],"area":[5,6],"arg":[5,6],"argument":2,"arm64":1,"around":5,"arrai":[5,6],"arrow_pad":[5,6],"arrows_s":[5,6],"arrows_vis":[5,6],"ask":[0,1,2,5,6],"aspect":[5,6],"assign":[5,6],"async":1,"asyncio":1,"atla":[5,6],"attach":[5,6],"attach_audio_mixed_processor":5,"attach_audio_stream_processor":5,"attachaudiomixedprocessor":6,"attachaudiostreamprocessor":6,"attachtyp":[5,6],"attempt":1,"attrib":[5,6],"attribnam":[5,6],"attribtyp":[5,6],"attribut":[5,6],"audio":[1,5,6],"audiostream":[5,6],"auto":[0,1],"autom":[5,6],"automat":[1,5,6],"automationev":[5,6],"automationeventlist":[5,6],"avail":[1,5,6],"avoid":[3,5,6],"await":1,"awar":2,"ax":6,"axi":[5,6],"b":[5,6],"back":[5,6],"backend":4,"backfac":[5,6],"background":[5,6],"background_color":[5,6],"bar":[5,6],"base":[5,6],"base64":[5,6],"base_color_dis":[5,6],"base_color_focus":[5,6],"base_color_norm":[5,6],"base_color_press":[5,6],"basepath":[5,6],"bases":[5,6],"batch":[5,6],"battl":1,"bbpp":[5,6],"bdist_wheel":0,"been":[0,2,3,5,6],"befor":[1,2,3],"begin":[5,6],"begin_blend_mod":5,"begin_draw":[1,5],"begin_mode_2d":5,"begin_mode_3d":5,"begin_scissor_mod":5,"begin_shader_mod":5,"begin_texture_mod":5,"begin_vr_stereo_mod":5,"beginblendmod":6,"begindraw":6,"beginmode2d":6,"beginmode3d":6,"beginn":1,"beginscissormod":6,"beginshadermod":6,"begintexturemod":6,"beginvrstereomod":6,"beig":[5,6],"being":[5,6],"belong":[5,6],"below":2,"best":0,"better":1,"betweeen":[5,6],"between":[5,6],"bezier":[5,6],"bicub":[5,6],"bigger":[5,6],"billboard":[5,6],"bin":1,"binari":[0,1,5,6],"bind":[0,2,4,5,6],"bindpos":[5,6],"bit":[1,2],"black":[5,6],"blank":[5,6],"blend":[5,6],"blend_add_color":[5,6],"blend_addit":[5,6],"blend_alpha":[5,6],"blend_alpha_premultipli":[5,6],"blend_custom":[5,6],"blend_custom_separ":[5,6],"blend_multipli":[5,6],"blend_subtract_color":[5,6],"blendmod":[5,6],"blit":[5,6],"blob":[0,3],"bloxel":1,"blue":[5,6],"bluebit":6,"blur":[5,6],"blursiz":[5,6],"board":1,"bodi":[5,6],"bodya":[5,6],"bodyb":[5,6],"bone":[5,6],"bonecount":[5,6],"boneid":[5,6],"boneinfo":[5,6],"bonematric":[5,6],"boneweight":[5,6],"book":1,"bookworm":2,"bool":[5,6],"border":[5,6],"border_color_dis":[5,6],"border_color_focus":[5,6],"border_color_norm":[5,6],"border_color_press":[5,6],"border_width":[5,6],"borderless":[5,6],"both":[1,2,3,5,6],"bottom":[5,6],"bottomleft":[5,6],"bottomright":[5,6],"bound":[5,6],"boundingbox":[5,6],"box":[5,6],"box1":[5,6],"box2":[5,6],"branch":2,"break":[1,2,5,6],"brew":1,"bright":[5,6],"broadcom":2,"brown":[5,6],"browser":[4,5,6],"buffer":[5,6],"buffercount":[5,6],"bufferel":[5,6],"bufferid":[5,6],"buffermask":[5,6],"bug":[0,1],"build":[1,2,4],"build_multi":0,"build_multi_linux":0,"built":[0,1],"bullsey":[1,2],"bundl":3,"bunni":1,"button":[5,6],"byte":[5,6],"c":[0,3,4,5],"c1":[5,6],"c2":[5,6],"c3":[5,6],"c4":[5,6],"c5":[5,6],"c6":[5,6],"cach":[0,2],"calcul":1,"call":[1,2,5,6],"callback":[5,6],"camel":[5,6],"camera":[5,6],"camera2d":[5,6],"camera3d":[5,6],"camera_custom":[5,6],"camera_first_person":[5,6],"camera_fre":[5,6],"camera_orbit":[5,6],"camera_orthograph":[5,6],"camera_perspect":[5,6],"camera_third_person":[5,6],"cameramod":[5,6],"cameraproject":[5,6],"can":[0,1,2,3,5,6],"canva":[5,6],"cap":[5,6],"capac":[5,6],"capsul":[5,6],"care":[5,6],"carefulli":1,"case":[1,5,6],"catmul":[5,6],"caveat":1,"cd":[0,1,2],"cell":[5,6],"cellular":[5,6],"center":[5,6],"center1":[5,6],"center2":[5,6],"centeri":[5,6],"centerpo":[5,6],"centerx":[5,6],"certain":[5,6],"cffi":[0,1,2,3,5,6],"chang":[5,6],"change_directori":5,"changedirectori":6,"channel":[5,6],"char":[5,6],"charact":[5,6],"chatroom":1,"check":[1,5,6],"check_collision_box":5,"check_collision_box_spher":5,"check_collision_circl":5,"check_collision_circle_lin":5,"check_collision_circle_rec":5,"check_collision_lin":5,"check_collision_point_circl":5,"check_collision_point_lin":5,"check_collision_point_poli":5,"check_collision_point_rec":5,"check_collision_point_triangl":5,"check_collision_rec":5,"check_collision_spher":5,"check_pad":[5,6],"checkbox":[5,6],"checkcollisionbox":6,"checkcollisionboxspher":6,"checkcollisioncircl":6,"checkcollisioncirclelin":6,"checkcollisioncirclerec":6,"checkcollisionlin":6,"checkcollisionpointcircl":6,"checkcollisionpointlin":6,"checkcollisionpointpoli":6,"checkcollisionpointrec":6,"checkcollisionpointtriangl":6,"checkcollisionrec":6,"checkcollisionspher":6,"checksi":[5,6],"checksx":[5,6],"choos":[5,6],"chromaabcorrect":[5,6],"circl":[5,6],"clamp":[5,6],"class":[5,6],"clear":[5,6],"clear_background":[1,5],"clear_window_st":5,"clearbackground":6,"clearwindowst":6,"click":[5,6],"clip":[5,6],"clipboard":[5,6],"clockwis":[5,6],"clone":[0,1,2],"close":[1,5,6],"close_audio_devic":5,"close_phys":5,"close_window":[1,5],"closeaudiodevic":6,"closephys":6,"closewindow":6,"cmake":[0,2],"code":[3,5,6],"codepoint":[5,6],"codepoint_to_utf8":5,"codepointcount":[5,6],"codepoints":[5,6],"codepointtoutf8":6,"col1":[5,6],"col2":[5,6],"collid":[5,6],"collis":[5,6],"collisionpoint":[5,6],"color":[5,6],"color1":[5,6],"color2":[5,6],"color_alpha":5,"color_alpha_blend":5,"color_bright":5,"color_contrast":5,"color_from_hsv":5,"color_from_norm":5,"color_is_equ":5,"color_lerp":5,"color_norm":5,"color_selector_s":[5,6],"color_tint":5,"color_to_hsv":5,"color_to_int":5,"coloralpha":6,"coloralphablend":6,"colorbright":6,"colorcontrast":6,"colorcount":[5,6],"colorfromhsv":6,"colorfromnorm":6,"colorhsv":[5,6],"colorisequ":6,"colorlerp":6,"colornorm":6,"colorpick":[5,6],"colortint":6,"colortohsv":6,"colortoint":6,"column":5,"com":[0,1,2,3],"combo":[5,6],"combo_button_spac":[5,6],"combo_button_width":[5,6],"combobox":[5,6],"command":0,"commerci":1,"common":0,"compat":1,"compdata":[5,6],"compdatas":[5,6],"compil":[0,1,3,5,6],"complet":[0,1,5,6],"compon":5,"compress":[5,6],"compress_data":5,"compressdata":6,"compsiz":[5,6],"comput":[5,6],"compute_crc32":5,"compute_md5":5,"compute_sha1":5,"computecrc32":6,"computemd5":6,"computesha1":6,"cone":[5,6],"config":[0,1,5,6],"configflag":[5,6],"configur":[0,5,6],"conflict":[5,6],"connect":[5,6],"consid":[5,6],"contact":[1,5,6],"contactscount":[5,6],"contain":[5,6],"content":[5,6],"context":[5,6],"contrast":[5,6],"contribut":0,"control":[1,5,6],"controlid":[5,6],"conveni":5,"convers":[5,6],"convert":[1,5,6],"convolut":[5,6],"coordin":[5,6],"copi":[0,5,6],"core":5,"correct":[0,5,6],"costli":1,"could":[0,5,6],"count":[5,6],"counter":[5,6],"cp":[0,2],"cp37":0,"cp37m":0,"cpu":[5,6],"cpython":1,"crc32":[5,6],"creat":[1,5,6],"create_physics_body_circl":5,"create_physics_body_polygon":5,"create_physics_body_rectangl":5,"createphysicsbodycircl":6,"createphysicsbodypolygon":6,"createphysicsbodyrectangl":6,"crop":[5,6],"ctxdata":[5,6],"ctxtype":[5,6],"ctype":[1,3],"cube":[5,6],"cubemap":[5,6],"cubemap_layout_auto_detect":[5,6],"cubemap_layout_cross_four_by_thre":[5,6],"cubemap_layout_cross_three_by_four":[5,6],"cubemap_layout_line_horizont":[5,6],"cubemap_layout_line_vert":[5,6],"cubemaplayout":[5,6],"cubes":[5,6],"cubic":[5,6],"cubicmap":[5,6],"cuboid":[5,6],"cull":[5,6],"current":[1,5,6],"currentbuff":[5,6],"currentdepth":[5,6],"cursor":[5,6],"custom":[5,6],"cylind":[5,6],"darkblu":[5,6],"darkbrown":[5,6],"darkgrai":[5,6],"darkgreen":[5,6],"darkpurpl":[5,6],"data":[1,5,6],"datas":[5,6],"dbuild_exampl":2,"dbuild_shared_lib":[0,2],"dcmake_build_typ":[0,2],"dcmake_install_prefix":2,"dcustomize_build":[0,2],"de":[5,6],"dealloc":[5,6],"debug":0,"decod":[5,6],"decode_data_base64":5,"decodedatabase64":6,"decompress":[5,6],"decompress_data":5,"decompressdata":6,"def":1,"default":[5,6],"defeat":1,"defin":[5,6],"deflat":[5,6],"degre":[5,6],"delet":[5,6],"delimit":[5,6],"delta":[5,6],"denom":[5,6],"densiti":[5,6],"depend":[1,5,6],"depth":[5,6],"describ":[5,6],"descript":[5,6],"desir":[5,6],"desktop":2,"dest":[5,6],"destid":[5,6],"destin":[5,6],"destoffset":[5,6],"destroi":[5,6],"destroy_physics_bodi":5,"destroyphysicsbodi":6,"detach":[5,6],"detach_audio_mixed_processor":5,"detach_audio_stream_processor":5,"detachaudiomixedprocessor":6,"detachaudiostreamprocessor":6,"detect":[0,5,6],"dev":[0,2],"develop":1,"devic":[1,5,6],"did":1,"differ":[0,1,3,5,6],"diffus":[5,6],"dimens":[5,6],"dir":[0,2,5,6],"direct":[5,6],"directori":[0,5,6],"directory_exist":5,"directoryexist":6,"dirpath":[5,6],"disabl":[1,5,6],"disable_cursor":5,"disable_event_wait":5,"disablecursor":6,"disableeventwait":6,"discord":1,"dispatch":[5,6],"displai":[5,6],"dist":0,"distanc":[5,6],"distribut":0,"dither":[5,6],"divisor":[5,6],"dll":3,"do":[1,3],"doc":[5,6],"docstr":1,"document":[1,3],"doe":[1,5,6],"doesn":[0,1,2],"doesnt":0,"don":[0,1,3],"done":[1,5],"doom":1,"dopengl_vers":2,"dot":[5,6],"doubl":[5,6],"dpi":[5,6],"dplatform":2,"drag":[5,6],"draw":[1,5,6],"draw_billboard":5,"draw_billboard_pro":5,"draw_billboard_rec":5,"draw_bounding_box":5,"draw_capsul":5,"draw_capsule_wir":5,"draw_circl":5,"draw_circle_3d":5,"draw_circle_gradi":5,"draw_circle_lin":5,"draw_circle_lines_v":5,"draw_circle_sector":5,"draw_circle_sector_lin":5,"draw_circle_v":5,"draw_cub":5,"draw_cube_v":5,"draw_cube_wir":5,"draw_cube_wires_v":5,"draw_cylind":5,"draw_cylinder_ex":5,"draw_cylinder_wir":5,"draw_cylinder_wires_ex":5,"draw_ellips":5,"draw_ellipse_lin":5,"draw_fp":5,"draw_grid":5,"draw_lin":5,"draw_line_3d":5,"draw_line_bezi":5,"draw_line_ex":5,"draw_line_strip":5,"draw_line_v":5,"draw_mesh":5,"draw_mesh_instanc":5,"draw_model":5,"draw_model_ex":5,"draw_model_point":5,"draw_model_points_ex":5,"draw_model_wir":5,"draw_model_wires_ex":5,"draw_pixel":5,"draw_pixel_v":5,"draw_plan":5,"draw_point_3d":5,"draw_poli":5,"draw_poly_lin":5,"draw_poly_lines_ex":5,"draw_r":5,"draw_rai":5,"draw_rectangl":5,"draw_rectangle_gradient_ex":5,"draw_rectangle_gradient_h":5,"draw_rectangle_gradient_v":5,"draw_rectangle_lin":5,"draw_rectangle_lines_ex":5,"draw_rectangle_pro":5,"draw_rectangle_rec":5,"draw_rectangle_round":5,"draw_rectangle_rounded_lin":5,"draw_rectangle_rounded_lines_ex":5,"draw_rectangle_v":5,"draw_ring_lin":5,"draw_spher":5,"draw_sphere_ex":5,"draw_sphere_wir":5,"draw_spline_basi":5,"draw_spline_bezier_cub":5,"draw_spline_bezier_quadrat":5,"draw_spline_catmull_rom":5,"draw_spline_linear":5,"draw_spline_segment_basi":5,"draw_spline_segment_bezier_cub":5,"draw_spline_segment_bezier_quadrat":5,"draw_spline_segment_catmull_rom":5,"draw_spline_segment_linear":5,"draw_text":[1,5],"draw_text_codepoint":5,"draw_text_ex":5,"draw_text_pro":5,"draw_textur":5,"draw_texture_ex":5,"draw_texture_n_patch":5,"draw_texture_pro":5,"draw_texture_rec":5,"draw_texture_v":5,"draw_triangl":5,"draw_triangle_3d":5,"draw_triangle_fan":5,"draw_triangle_lin":5,"draw_triangle_strip":5,"draw_triangle_strip_3d":5,"drawbillboard":6,"drawbillboardpro":6,"drawbillboardrec":6,"drawboundingbox":6,"drawcapsul":6,"drawcapsulewir":6,"drawcircl":6,"drawcircle3d":6,"drawcirclegradi":6,"drawcirclelin":6,"drawcirclelinesv":6,"drawcirclesector":6,"drawcirclesectorlin":6,"drawcirclev":6,"drawcount":[5,6],"drawcub":6,"drawcubev":6,"drawcubewir":6,"drawcubewiresv":6,"drawcylind":6,"drawcylinderex":6,"drawcylinderwir":6,"drawcylinderwiresex":6,"drawellips":6,"drawellipselin":6,"drawfp":6,"drawgrid":6,"drawlin":6,"drawline3d":6,"drawlinebezi":6,"drawlineex":6,"drawlinestrip":6,"drawlinev":6,"drawmesh":6,"drawmeshinstanc":6,"drawmodel":6,"drawmodelex":6,"drawmodelpoint":6,"drawmodelpointsex":6,"drawmodelwir":6,"drawmodelwiresex":6,"drawn":[5,6],"drawpixel":6,"drawpixelv":6,"drawplan":6,"drawpoint3d":6,"drawpoli":6,"drawpolylin":6,"drawpolylinesex":6,"drawr":6,"drawrai":6,"drawrectangl":6,"drawrectanglegradientex":6,"drawrectanglegradienth":6,"drawrectanglegradientv":6,"drawrectanglelin":6,"drawrectanglelinesex":6,"drawrectanglepro":6,"drawrectanglerec":6,"drawrectangleround":6,"drawrectangleroundedlin":6,"drawrectangleroundedlinesex":6,"drawrectanglev":6,"drawringlin":6,"drawspher":6,"drawsphereex":6,"drawspherewir":6,"drawsplinebasi":6,"drawsplinebeziercub":6,"drawsplinebezierquadrat":6,"drawsplinecatmullrom":6,"drawsplinelinear":6,"drawsplinesegmentbasi":6,"drawsplinesegmentbeziercub":6,"drawsplinesegmentbezierquadrat":6,"drawsplinesegmentcatmullrom":6,"drawsplinesegmentlinear":6,"drawtext":6,"drawtextcodepoint":6,"drawtextex":6,"drawtextpro":6,"drawtextur":6,"drawtextureex":6,"drawtexturenpatch":6,"drawtexturepro":6,"drawtexturerec":6,"drawtexturev":6,"drawtriangl":6,"drawtriangle3d":6,"drawtrianglefan":6,"drawtrianglelin":6,"drawtrianglestrip":6,"drawtrianglestrip3d":6,"driver":2,"drop":[5,6],"dropdown":[5,6],"dropdown_arrow_hidden":[5,6],"dropdown_items_spac":[5,6],"dropdown_roll_up":[5,6],"dropdownbox":[5,6],"dst":[5,6],"dstheight":[5,6],"dstptr":[5,6],"dstrec":[5,6],"dstwidth":[5,6],"dstx":[5,6],"dsty":[5,6],"dsupport_fileformat_flac":[0,2],"dsupport_fileformat_jpg":[0,2],"dummi":[5,6],"duplic":[5,6],"durat":[5,6],"dwith_pic":[0,2],"dynam":[0,4,5,6],"dynamicfrict":[5,6],"e":[1,2,5,6],"each":[5,6],"easier":1,"eclips":1,"edg":[5,6],"edit":0,"editmod":[5,6],"editor":1,"educ":1,"eidolon":1,"either":1,"elaps":[5,6],"electronstudio":[0,1,3],"element":[5,6],"elementcount":[5,6],"ellips":[5,6],"elsewher":0,"empti":[5,6],"emscripten":1,"enabl":[1,5,6],"enable_cursor":5,"enable_event_wait":5,"enablecursor":6,"enableeventwait":6,"encod":[5,6],"encode_data_base64":5,"encodedatabase64":6,"end":[5,6],"end_blend_mod":5,"end_draw":[1,5],"end_mode_2d":5,"end_mode_3d":5,"end_scissor_mod":5,"end_shader_mod":5,"end_texture_mod":5,"end_vr_stereo_mod":5,"endangl":[5,6],"endblendmod":6,"enddraw":[5,6],"endmode2d":6,"endmode3d":6,"endpo":[5,6],"endpos1":[5,6],"endpos2":[5,6],"endposi":[5,6],"endposx":[5,6],"endradiu":[5,6],"endscissormod":6,"endshadermod":6,"endtexturemod":6,"endvrstereomod":6,"ensur":0,"entir":[5,6],"environ":3,"equal":[5,6],"equat":[5,6],"equival":[1,5,6],"error":[5,6],"esc":[5,6],"etc":[1,3],"evalu":[5,6],"even":3,"event":[5,6],"ever":2,"everi":[1,5],"everyon":2,"exactli":3,"exampl":[1,3,6],"execut":[5,6],"exist":[5,6],"exit":[5,6],"explos":[5,6],"export":[5,6],"export_automation_event_list":5,"export_data_as_cod":5,"export_font_as_cod":5,"export_imag":5,"export_image_as_cod":5,"export_image_to_memori":5,"export_mesh":5,"export_mesh_as_cod":5,"export_wav":5,"export_wave_as_cod":5,"exportautomationeventlist":6,"exportdataascod":6,"exportfontascod":6,"exportimag":6,"exportimageascod":6,"exportimagetomemori":6,"exportmesh":6,"exportmeshascod":6,"exportwav":6,"exportwaveascod":6,"ext":[5,6],"extend":[5,6],"extens":[3,5,6],"extern":2,"ey":[5,6],"eyetoscreendist":[5,6],"face":[5,6],"factor":[5,6],"fade":[5,6],"failur":[3,5,6],"fallback":[5,6],"fan":[5,6],"far":[5,6],"farplan":[5,6],"faster":[1,3],"fbo":[5,6],"fboid":[5,6],"featur":1,"fewer":1,"ffi":[5,6],"figur":0,"file":[0,1,5,6],"file_exist":5,"filedata":[5,6],"fileexist":6,"filenam":[0,5,6],"filepath":[5,6],"filepathlist":[5,6],"files":[5,6],"filetyp":[5,6],"fill":[5,6],"filter":[5,6],"finalfram":[5,6],"find":[5,6],"finish":[5,6],"first":[0,5,6],"firstchar":[5,6],"fix":[0,5,6],"flag":[5,6],"flag_borderless_windowed_mod":[5,6],"flag_fullscreen_mod":[5,6],"flag_interlaced_hint":[5,6],"flag_msaa_4x_hint":[5,6],"flag_vsync_hint":[5,6],"flag_window_always_run":[5,6],"flag_window_hidden":[5,6],"flag_window_highdpi":[5,6],"flag_window_maxim":[5,6],"flag_window_minim":[5,6],"flag_window_mouse_passthrough":[5,6],"flag_window_resiz":[5,6],"flag_window_topmost":[5,6],"flag_window_transpar":[5,6],"flag_window_undecor":[5,6],"flag_window_unfocus":[5,6],"flip":[5,6],"float":[5,6],"float16":[5,6],"float3":[5,6],"float_equ":5,"floatequ":6,"floyd":[5,6],"focu":[5,6],"focus":[5,6],"folder":1,"follow":[0,5,6],"font":[5,6],"font_bitmap":[5,6],"font_default":[5,6],"font_sdf":[5,6],"fontsiz":[5,6],"fonttyp":[5,6],"forc":[0,2,5,6],"format":[5,6],"found":[5,6],"fovi":[5,6],"fp":[1,5,6],"frame":[5,6],"framebuff":[1,2,5,6],"framecount":[5,6],"framepos":[5,6],"free":[1,5,6],"freed":[5,6],"freezeori":[5,6],"friend":1,"friendli":1,"from":[1,3,4,5,6],"from_0":[5,6],"front":[5,6],"fscode":[5,6],"fsfilenam":[5,6],"fshaderid":[5,6],"full":[1,2,5,6],"fulli":1,"fullscreen":[5,6],"function":[1,3,5],"further":[5,6],"g":[1,5,6],"game":1,"gamepad":[5,6],"gamepad_axis_left_i":[5,6],"gamepad_axis_left_trigg":[5,6],"gamepad_axis_left_x":[5,6],"gamepad_axis_right_i":[5,6],"gamepad_axis_right_trigg":[5,6],"gamepad_axis_right_x":[5,6],"gamepad_button_left_face_down":[5,6],"gamepad_button_left_face_left":[5,6],"gamepad_button_left_face_right":[5,6],"gamepad_button_left_face_up":[5,6],"gamepad_button_left_thumb":[5,6],"gamepad_button_left_trigger_1":[5,6],"gamepad_button_left_trigger_2":[5,6],"gamepad_button_middl":[5,6],"gamepad_button_middle_left":[5,6],"gamepad_button_middle_right":[5,6],"gamepad_button_right_face_down":[5,6],"gamepad_button_right_face_left":[5,6],"gamepad_button_right_face_right":[5,6],"gamepad_button_right_face_up":[5,6],"gamepad_button_right_thumb":[5,6],"gamepad_button_right_trigger_1":[5,6],"gamepad_button_right_trigger_2":[5,6],"gamepad_button_unknown":[5,6],"gamepadaxi":[5,6],"gamepadbutton":[5,6],"gamma":[5,6],"gaussian":[5,6],"gbpp":[5,6],"gen_image_cellular":5,"gen_image_check":5,"gen_image_color":5,"gen_image_font_atla":5,"gen_image_gradient_linear":5,"gen_image_gradient_radi":5,"gen_image_gradient_squar":5,"gen_image_perlin_nois":5,"gen_image_text":5,"gen_image_white_nois":5,"gen_mesh_con":5,"gen_mesh_cub":5,"gen_mesh_cubicmap":5,"gen_mesh_cylind":5,"gen_mesh_heightmap":5,"gen_mesh_hemi_spher":5,"gen_mesh_knot":5,"gen_mesh_plan":5,"gen_mesh_poli":5,"gen_mesh_spher":5,"gen_mesh_tang":5,"gen_mesh_toru":5,"gen_texture_mipmap":5,"gener":[1,5,6],"genimagecellular":6,"genimagecheck":6,"genimagecolor":6,"genimagefontatla":6,"genimagegradientlinear":6,"genimagegradientradi":6,"genimagegradientsquar":6,"genimageperlinnois":6,"genimagetext":6,"genimagewhitenois":6,"genmeshcon":6,"genmeshcub":6,"genmeshcubicmap":6,"genmeshcylind":6,"genmeshheightmap":6,"genmeshhemispher":6,"genmeshknot":6,"genmeshplan":6,"genmeshpoli":6,"genmeshspher":6,"genmeshtang":6,"genmeshtoru":6,"gentexturemipmap":6,"geometri":[5,6],"gestur":[5,6],"gesture_doubletap":[5,6],"gesture_drag":[5,6],"gesture_hold":[5,6],"gesture_non":[5,6],"gesture_pinch_in":[5,6],"gesture_pinch_out":[5,6],"gesture_swipe_down":[5,6],"gesture_swipe_left":[5,6],"gesture_swipe_right":[5,6],"gesture_swipe_up":[5,6],"gesture_tap":[5,6],"get":[0,3,5,6],"get_application_directori":5,"get_camera_matrix":5,"get_camera_matrix_2d":5,"get_char_press":5,"get_clipboard_imag":5,"get_clipboard_text":5,"get_codepoint":5,"get_codepoint_count":5,"get_codepoint_next":5,"get_codepoint_previ":5,"get_collision_rec":5,"get_color":5,"get_current_monitor":5,"get_directory_path":5,"get_file_extens":5,"get_file_length":5,"get_file_mod_tim":5,"get_file_nam":5,"get_file_name_without_ext":5,"get_font_default":5,"get_fp":5,"get_frame_tim":5,"get_gamepad_axis_count":5,"get_gamepad_axis_mov":5,"get_gamepad_button_press":5,"get_gamepad_nam":5,"get_gesture_detect":5,"get_gesture_drag_angl":5,"get_gesture_drag_vector":5,"get_gesture_hold_dur":5,"get_gesture_pinch_angl":5,"get_gesture_pinch_vector":5,"get_glyph_atlas_rec":5,"get_glyph_index":5,"get_glyph_info":5,"get_image_alpha_bord":5,"get_image_color":5,"get_key_press":5,"get_master_volum":5,"get_mesh_bounding_box":5,"get_model_bounding_box":5,"get_monitor_count":5,"get_monitor_height":5,"get_monitor_nam":5,"get_monitor_physical_height":5,"get_monitor_physical_width":5,"get_monitor_posit":5,"get_monitor_refresh_r":5,"get_monitor_width":5,"get_mouse_delta":5,"get_mouse_i":5,"get_mouse_posit":5,"get_mouse_wheel_mov":5,"get_mouse_wheel_move_v":5,"get_mouse_x":5,"get_music_time_length":5,"get_music_time_plai":5,"get_physics_bodi":5,"get_physics_bodies_count":5,"get_physics_shape_typ":5,"get_physics_shape_vertex":5,"get_physics_shape_vertices_count":5,"get_pixel_color":5,"get_pixel_data_s":5,"get_prev_directory_path":5,"get_random_valu":5,"get_ray_collision_box":5,"get_ray_collision_mesh":5,"get_ray_collision_quad":5,"get_ray_collision_spher":5,"get_ray_collision_triangl":5,"get_render_height":5,"get_render_width":5,"get_screen_height":5,"get_screen_to_world_2d":5,"get_screen_to_world_rai":5,"get_screen_to_world_ray_ex":5,"get_screen_width":5,"get_shader_loc":5,"get_shader_location_attrib":5,"get_shapes_textur":5,"get_shapes_texture_rectangl":5,"get_spline_point_basi":5,"get_spline_point_bezier_cub":5,"get_spline_point_bezier_quad":5,"get_spline_point_catmull_rom":5,"get_spline_point_linear":5,"get_tim":5,"get_touch_i":5,"get_touch_point_count":5,"get_touch_point_id":5,"get_touch_posit":5,"get_touch_x":5,"get_window_handl":5,"get_window_posit":5,"get_window_scale_dpi":5,"get_working_directori":5,"get_world_to_screen":5,"get_world_to_screen_2d":5,"get_world_to_screen_ex":5,"getapplicationdirectori":6,"getcameramatrix":6,"getcameramatrix2d":6,"getcharpress":6,"getclipboardimag":6,"getclipboardtext":6,"getcodepoint":6,"getcodepointcount":6,"getcodepointnext":6,"getcodepointprevi":6,"getcollisionrec":6,"getcolor":6,"getcurrentmonitor":6,"getdirectorypath":6,"getfileextens":6,"getfilelength":6,"getfilemodtim":6,"getfilenam":6,"getfilenamewithoutext":6,"getfiles":[5,6],"getfontdefault":6,"getfp":6,"getframetim":6,"getgamepadaxiscount":6,"getgamepadaxismov":6,"getgamepadbuttonpress":6,"getgamepadnam":6,"getgesturedetect":6,"getgesturedragangl":6,"getgesturedragvector":6,"getgestureholddur":6,"getgesturepinchangl":6,"getgesturepinchvector":6,"getglyphatlasrec":6,"getglyphindex":6,"getglyphinfo":6,"getimagealphabord":6,"getimagecolor":6,"getkeypress":6,"getmastervolum":6,"getmeshboundingbox":6,"getmodelboundingbox":6,"getmonitorcount":6,"getmonitorheight":6,"getmonitornam":6,"getmonitorphysicalheight":6,"getmonitorphysicalwidth":6,"getmonitorposit":6,"getmonitorrefreshr":6,"getmonitorwidth":6,"getmousedelta":6,"getmousei":6,"getmouseposit":6,"getmousewheelmov":6,"getmousewheelmovev":6,"getmousex":6,"getmusictimelength":6,"getmusictimeplai":6,"getphysicsbodi":6,"getphysicsbodiescount":6,"getphysicsshapetyp":6,"getphysicsshapevertex":6,"getphysicsshapeverticescount":6,"getpixelcolor":6,"getpixeldatas":6,"getprevdirectorypath":6,"getrandomvalu":6,"getraycollisionbox":6,"getraycollisionmesh":6,"getraycollisionquad":6,"getraycollisionspher":6,"getraycollisiontriangl":6,"getrenderheight":6,"getrenderwidth":6,"getscreenheight":6,"getscreentoworld2d":6,"getscreentoworldrai":6,"getscreentoworldrayex":6,"getscreenwidth":6,"getshaderloc":6,"getshaderlocationattrib":6,"getshapestextur":6,"getshapestexturerectangl":6,"getsplinepointbasi":6,"getsplinepointbeziercub":6,"getsplinepointbezierquad":6,"getsplinepointcatmullrom":6,"getsplinepointlinear":6,"gettim":6,"gettouchi":6,"gettouchpointcount":6,"gettouchpointid":6,"gettouchposit":6,"gettouchx":6,"getwindowhandl":6,"getwindowposit":6,"getwindowscaledpi":6,"getworkingdirectori":6,"getworldtoscreen":6,"getworldtoscreen2d":6,"getworldtoscreenex":6,"git":[0,1,2],"github":[0,1,2,3],"given":[5,6],"gl":[2,5,6],"gldstalpha":[5,6],"gldstfactor":[5,6],"gldstrgb":[5,6],"gleqalpha":[5,6],"gleqrgb":[5,6],"glequat":[5,6],"glformat":[5,6],"glfw":2,"glfw_create_cursor":5,"glfw_create_standard_cursor":5,"glfw_create_window":5,"glfw_default_window_hint":5,"glfw_destroy_cursor":5,"glfw_destroy_window":5,"glfw_extension_support":5,"glfw_focus_window":5,"glfw_get_clipboard_str":5,"glfw_get_current_context":5,"glfw_get_cursor_po":5,"glfw_get_error":5,"glfw_get_framebuffer_s":5,"glfw_get_gamepad_nam":5,"glfw_get_gamepad_st":5,"glfw_get_gamma_ramp":5,"glfw_get_input_mod":5,"glfw_get_joystick_ax":5,"glfw_get_joystick_button":5,"glfw_get_joystick_guid":5,"glfw_get_joystick_hat":5,"glfw_get_joystick_nam":5,"glfw_get_joystick_user_point":5,"glfw_get_kei":5,"glfw_get_key_nam":5,"glfw_get_key_scancod":5,"glfw_get_monitor":5,"glfw_get_monitor_content_scal":5,"glfw_get_monitor_nam":5,"glfw_get_monitor_physical_s":5,"glfw_get_monitor_po":5,"glfw_get_monitor_user_point":5,"glfw_get_monitor_workarea":5,"glfw_get_mouse_button":5,"glfw_get_platform":5,"glfw_get_primary_monitor":5,"glfw_get_proc_address":5,"glfw_get_required_instance_extens":5,"glfw_get_tim":5,"glfw_get_timer_frequ":5,"glfw_get_timer_valu":5,"glfw_get_vers":5,"glfw_get_version_str":5,"glfw_get_video_mod":5,"glfw_get_window_attrib":5,"glfw_get_window_content_scal":5,"glfw_get_window_frame_s":5,"glfw_get_window_monitor":5,"glfw_get_window_opac":5,"glfw_get_window_po":5,"glfw_get_window_s":5,"glfw_get_window_titl":5,"glfw_get_window_user_point":5,"glfw_hide_window":5,"glfw_iconify_window":5,"glfw_init":5,"glfw_init_alloc":5,"glfw_init_hint":5,"glfw_joystick_is_gamepad":5,"glfw_joystick_pres":5,"glfw_make_context_curr":5,"glfw_maximize_window":5,"glfw_platform_support":5,"glfw_poll_ev":5,"glfw_post_empty_ev":5,"glfw_raw_mouse_motion_support":5,"glfw_request_window_attent":5,"glfw_restore_window":5,"glfw_set_char_callback":5,"glfw_set_char_mods_callback":5,"glfw_set_clipboard_str":5,"glfw_set_cursor":5,"glfw_set_cursor_enter_callback":5,"glfw_set_cursor_po":5,"glfw_set_cursor_pos_callback":5,"glfw_set_drop_callback":5,"glfw_set_error_callback":5,"glfw_set_framebuffer_size_callback":5,"glfw_set_gamma":5,"glfw_set_gamma_ramp":5,"glfw_set_input_mod":5,"glfw_set_joystick_callback":5,"glfw_set_joystick_user_point":5,"glfw_set_key_callback":5,"glfw_set_monitor_callback":5,"glfw_set_monitor_user_point":5,"glfw_set_mouse_button_callback":5,"glfw_set_scroll_callback":5,"glfw_set_tim":5,"glfw_set_window_aspect_ratio":5,"glfw_set_window_attrib":5,"glfw_set_window_close_callback":5,"glfw_set_window_content_scale_callback":5,"glfw_set_window_focus_callback":5,"glfw_set_window_icon":5,"glfw_set_window_iconify_callback":5,"glfw_set_window_maximize_callback":5,"glfw_set_window_monitor":5,"glfw_set_window_opac":5,"glfw_set_window_po":5,"glfw_set_window_pos_callback":5,"glfw_set_window_refresh_callback":5,"glfw_set_window_s":5,"glfw_set_window_should_clos":5,"glfw_set_window_size_callback":5,"glfw_set_window_size_limit":5,"glfw_set_window_titl":5,"glfw_set_window_user_point":5,"glfw_show_window":5,"glfw_swap_buff":5,"glfw_swap_interv":5,"glfw_termin":5,"glfw_update_gamepad_map":5,"glfw_vulkan_support":5,"glfw_wait_ev":5,"glfw_wait_events_timeout":5,"glfw_window_hint":5,"glfw_window_hint_str":5,"glfw_window_should_clos":5,"glfwalloc":6,"glfwcreatecursor":6,"glfwcreatestandardcursor":6,"glfwcreatewindow":6,"glfwcursor":6,"glfwdefaultwindowhint":6,"glfwdestroycursor":6,"glfwdestroywindow":6,"glfwextensionsupport":6,"glfwfocuswindow":6,"glfwgamepadst":6,"glfwgammaramp":6,"glfwgetclipboardstr":6,"glfwgetcurrentcontext":6,"glfwgetcursorpo":6,"glfwgeterror":6,"glfwgetframebuffers":6,"glfwgetgamepadnam":6,"glfwgetgamepadst":6,"glfwgetgammaramp":6,"glfwgetinputmod":6,"glfwgetjoystickax":6,"glfwgetjoystickbutton":6,"glfwgetjoystickguid":6,"glfwgetjoystickhat":6,"glfwgetjoysticknam":6,"glfwgetjoystickuserpoint":6,"glfwgetkei":6,"glfwgetkeynam":6,"glfwgetkeyscancod":6,"glfwgetmonitor":6,"glfwgetmonitorcontentscal":6,"glfwgetmonitornam":6,"glfwgetmonitorphysicals":6,"glfwgetmonitorpo":6,"glfwgetmonitoruserpoint":6,"glfwgetmonitorworkarea":6,"glfwgetmousebutton":6,"glfwgetplatform":6,"glfwgetprimarymonitor":6,"glfwgetprocaddress":6,"glfwgetrequiredinstanceextens":6,"glfwgettim":6,"glfwgettimerfrequ":6,"glfwgettimervalu":6,"glfwgetvers":6,"glfwgetversionstr":6,"glfwgetvideomod":6,"glfwgetwindowattrib":6,"glfwgetwindowcontentscal":6,"glfwgetwindowframes":6,"glfwgetwindowmonitor":6,"glfwgetwindowopac":6,"glfwgetwindowpo":6,"glfwgetwindows":6,"glfwgetwindowtitl":6,"glfwgetwindowuserpoint":6,"glfwhidewindow":6,"glfwiconifywindow":6,"glfwimag":6,"glfwinit":6,"glfwinitalloc":6,"glfwinithint":6,"glfwjoystickisgamepad":6,"glfwjoystickpres":6,"glfwmakecontextcurr":6,"glfwmaximizewindow":6,"glfwmonitor":6,"glfwplatformsupport":6,"glfwpollev":6,"glfwpostemptyev":6,"glfwrawmousemotionsupport":6,"glfwrequestwindowattent":6,"glfwrestorewindow":6,"glfwsetcharcallback":6,"glfwsetcharmodscallback":6,"glfwsetclipboardstr":6,"glfwsetcursor":6,"glfwsetcursorentercallback":6,"glfwsetcursorpo":6,"glfwsetcursorposcallback":6,"glfwsetdropcallback":6,"glfwseterrorcallback":6,"glfwsetframebuffersizecallback":6,"glfwsetgamma":6,"glfwsetgammaramp":6,"glfwsetinputmod":6,"glfwsetjoystickcallback":6,"glfwsetjoystickuserpoint":6,"glfwsetkeycallback":6,"glfwsetmonitorcallback":6,"glfwsetmonitoruserpoint":6,"glfwsetmousebuttoncallback":6,"glfwsetscrollcallback":6,"glfwsettim":6,"glfwsetwindowaspectratio":6,"glfwsetwindowattrib":6,"glfwsetwindowclosecallback":6,"glfwsetwindowcontentscalecallback":6,"glfwsetwindowfocuscallback":6,"glfwsetwindowicon":6,"glfwsetwindowiconifycallback":6,"glfwsetwindowmaximizecallback":6,"glfwsetwindowmonitor":6,"glfwsetwindowopac":6,"glfwsetwindowpo":6,"glfwsetwindowposcallback":6,"glfwsetwindowrefreshcallback":6,"glfwsetwindows":6,"glfwsetwindowshouldclos":6,"glfwsetwindowsizecallback":6,"glfwsetwindowsizelimit":6,"glfwsetwindowtitl":6,"glfwsetwindowuserpoint":6,"glfwshowwindow":6,"glfwswapbuff":6,"glfwswapinterv":6,"glfwtermin":6,"glfwupdategamepadmap":6,"glfwvidmod":6,"glfwvulkansupport":6,"glfwwaitev":6,"glfwwaiteventstimeout":6,"glfwwindow":6,"glfwwindowhint":6,"glfwwindowhintstr":6,"glfwwindowshouldclos":6,"glinternalformat":[5,6],"global":[5,6],"glsrcalpha":[5,6],"glsrcfactor":[5,6],"glsrcrgb":[5,6],"gltype":[5,6],"glyph":[5,6],"glyphcount":[5,6],"glyphinfo":[5,6],"glyphpad":[5,6],"glyphrec":[5,6],"gnu":0,"goal":6,"goe":[5,6],"gold":[5,6],"gone":3,"gpu":[5,6],"graalpi":1,"gradient":[5,6],"grai":[5,6],"graphic":[5,6],"graviti":[5,6],"grayscal":[5,6],"green":[5,6],"greenbit":6,"grid":[5,6],"group":[5,6],"group_pad":[5,6],"groupi":[5,6],"groupx":[5,6],"groupz":[5,6],"gui":[5,6],"gui_button":5,"gui_check_box":5,"gui_color_bar_alpha":5,"gui_color_bar_hu":5,"gui_color_panel":5,"gui_color_panel_hsv":5,"gui_color_pick":5,"gui_color_picker_hsv":5,"gui_combo_box":5,"gui_dis":5,"gui_disable_tooltip":5,"gui_draw_icon":5,"gui_dropdown_box":5,"gui_dummy_rec":5,"gui_en":5,"gui_enable_tooltip":5,"gui_get_font":5,"gui_get_icon":5,"gui_get_st":5,"gui_get_styl":5,"gui_grid":5,"gui_group_box":5,"gui_icon_text":5,"gui_is_lock":5,"gui_label":5,"gui_label_button":5,"gui_lin":5,"gui_list_view":5,"gui_list_view_ex":5,"gui_load_icon":5,"gui_load_styl":5,"gui_load_style_default":5,"gui_lock":5,"gui_message_box":5,"gui_panel":5,"gui_progress_bar":5,"gui_scroll_panel":5,"gui_set_alpha":5,"gui_set_font":5,"gui_set_icon_scal":5,"gui_set_st":5,"gui_set_styl":5,"gui_set_tooltip":5,"gui_slid":5,"gui_slider_bar":5,"gui_spinn":5,"gui_status_bar":5,"gui_tab_bar":5,"gui_text_box":5,"gui_text_input_box":5,"gui_toggl":5,"gui_toggle_group":5,"gui_toggle_slid":5,"gui_unlock":5,"gui_value_box":5,"gui_value_box_float":5,"gui_window_box":5,"guibutton":6,"guicheckbox":6,"guicheckboxproperti":[5,6],"guicolorbaralpha":6,"guicolorbarhu":6,"guicolorpanel":6,"guicolorpanelhsv":6,"guicolorpick":6,"guicolorpickerhsv":[5,6],"guicolorpickerproperti":[5,6],"guicombobox":6,"guicomboboxproperti":[5,6],"guicontrol":[5,6],"guicontrolproperti":[5,6],"guidefaultproperti":[5,6],"guidis":6,"guidisabletooltip":6,"guidrawicon":6,"guidropdownbox":6,"guidropdownboxproperti":[5,6],"guidummyrec":6,"guienabl":6,"guienabletooltip":6,"guigetfont":6,"guigeticon":6,"guigetst":6,"guigetstyl":6,"guigrid":6,"guigroupbox":6,"guiiconnam":[5,6],"guiicontext":6,"guiislock":6,"guilabel":6,"guilabelbutton":6,"guilin":6,"guilistview":6,"guilistviewex":6,"guilistviewproperti":[5,6],"guiloadicon":6,"guiloadstyl":6,"guiloadstyledefault":6,"guilock":6,"guimessagebox":6,"guipanel":6,"guiprogressbar":6,"guiprogressbarproperti":[5,6],"guiscrollbarproperti":[5,6],"guiscrollpanel":6,"guisetalpha":6,"guisetfont":6,"guiseticonscal":6,"guisetst":6,"guisetstyl":6,"guisettooltip":6,"guislid":6,"guisliderbar":6,"guisliderproperti":[5,6],"guispinn":6,"guispinnerproperti":[5,6],"guistat":[5,6],"guistatusbar":6,"guistyleprop":[5,6],"guitabbar":6,"guitextalign":[5,6],"guitextalignmentvert":[5,6],"guitextbox":6,"guitextboxproperti":[5,6],"guitextinputbox":6,"guitextwrapmod":[5,6],"guitoggl":6,"guitogglegroup":6,"guitoggleproperti":[5,6],"guitoggleslid":6,"guiunlock":6,"guivaluebox":6,"guivalueboxfloat":6,"guiwindowbox":6,"h":[0,5,6],"ha":[1,3,5,6],"half":[5,6],"halt":[5,6],"hand":5,"handl":[5,6],"happen":5,"hardcod":0,"hash":[5,6],"hasn":3,"have":[1,2,3,5,6],"head":5,"header":[0,5,6],"headers":[5,6],"height":[5,6],"heightmap":[5,6],"heightmm":[5,6],"hello":[1,5,6],"hellow":6,"help":[2,4],"helper":5,"here":[0,1,3,5,6],"hexadecim":[5,6],"hexvalu":[5,6],"hidden":[5,6],"hide":[5,6],"hide_cursor":5,"hidecursor":6,"hidpi":[5,6],"hint":[5,6],"hit":[5,6],"hold":[5,6],"homebrew":1,"horizont":[5,6],"how":[0,4,5,6],"howev":[1,6],"hresolut":[5,6],"hscreensiz":[5,6],"hsv":[5,6],"http":[0,1,2,3,6],"hue":[5,6],"huebar_pad":[5,6],"huebar_selector_height":[5,6],"huebar_selector_overflow":[5,6],"huebar_width":[5,6],"human":[5,6],"i":[0,1,2,3,5,6],"icon":[1,5,6],"icon_1up":[5,6],"icon_229":[5,6],"icon_230":[5,6],"icon_231":[5,6],"icon_232":[5,6],"icon_233":[5,6],"icon_234":[5,6],"icon_235":[5,6],"icon_236":[5,6],"icon_237":[5,6],"icon_238":[5,6],"icon_239":[5,6],"icon_240":[5,6],"icon_241":[5,6],"icon_242":[5,6],"icon_243":[5,6],"icon_244":[5,6],"icon_245":[5,6],"icon_246":[5,6],"icon_247":[5,6],"icon_248":[5,6],"icon_249":[5,6],"icon_250":[5,6],"icon_251":[5,6],"icon_252":[5,6],"icon_253":[5,6],"icon_254":[5,6],"icon_255":[5,6],"icon_alarm":[5,6],"icon_alpha_clear":[5,6],"icon_alpha_multipli":[5,6],"icon_arrow_down":[5,6],"icon_arrow_down_fil":[5,6],"icon_arrow_left":[5,6],"icon_arrow_left_fil":[5,6],"icon_arrow_right":[5,6],"icon_arrow_right_fil":[5,6],"icon_arrow_up":[5,6],"icon_arrow_up_fil":[5,6],"icon_audio":[5,6],"icon_bin":[5,6],"icon_box":[5,6],"icon_box_bottom":[5,6],"icon_box_bottom_left":[5,6],"icon_box_bottom_right":[5,6],"icon_box_cent":[5,6],"icon_box_circle_mask":[5,6],"icon_box_concentr":[5,6],"icon_box_corners_big":[5,6],"icon_box_corners_smal":[5,6],"icon_box_dots_big":[5,6],"icon_box_dots_smal":[5,6],"icon_box_grid":[5,6],"icon_box_grid_big":[5,6],"icon_box_left":[5,6],"icon_box_multis":[5,6],"icon_box_right":[5,6],"icon_box_top":[5,6],"icon_box_top_left":[5,6],"icon_box_top_right":[5,6],"icon_breakpoint_off":[5,6],"icon_breakpoint_on":[5,6],"icon_brush_class":[5,6],"icon_brush_paint":[5,6],"icon_burger_menu":[5,6],"icon_camera":[5,6],"icon_case_sensit":[5,6],"icon_clock":[5,6],"icon_coin":[5,6],"icon_color_bucket":[5,6],"icon_color_pick":[5,6],"icon_corn":[5,6],"icon_cpu":[5,6],"icon_crack":[5,6],"icon_crack_point":[5,6],"icon_crop":[5,6],"icon_crop_alpha":[5,6],"icon_cross":[5,6],"icon_cross_smal":[5,6],"icon_crosslin":[5,6],"icon_cub":[5,6],"icon_cube_face_back":[5,6],"icon_cube_face_bottom":[5,6],"icon_cube_face_front":[5,6],"icon_cube_face_left":[5,6],"icon_cube_face_right":[5,6],"icon_cube_face_top":[5,6],"icon_cursor_class":[5,6],"icon_cursor_hand":[5,6],"icon_cursor_mov":[5,6],"icon_cursor_move_fil":[5,6],"icon_cursor_point":[5,6],"icon_cursor_scal":[5,6],"icon_cursor_scale_fil":[5,6],"icon_cursor_scale_left":[5,6],"icon_cursor_scale_left_fil":[5,6],"icon_cursor_scale_right":[5,6],"icon_cursor_scale_right_fil":[5,6],"icon_demon":[5,6],"icon_dith":[5,6],"icon_door":[5,6],"icon_emptybox":[5,6],"icon_emptybox_smal":[5,6],"icon_exit":[5,6],"icon_explos":[5,6],"icon_eye_off":[5,6],"icon_eye_on":[5,6],"icon_fil":[5,6],"icon_file_add":[5,6],"icon_file_copi":[5,6],"icon_file_cut":[5,6],"icon_file_delet":[5,6],"icon_file_export":[5,6],"icon_file_new":[5,6],"icon_file_open":[5,6],"icon_file_past":[5,6],"icon_file_sav":[5,6],"icon_file_save_class":[5,6],"icon_filetype_alpha":[5,6],"icon_filetype_audio":[5,6],"icon_filetype_binari":[5,6],"icon_filetype_hom":[5,6],"icon_filetype_imag":[5,6],"icon_filetype_info":[5,6],"icon_filetype_plai":[5,6],"icon_filetype_text":[5,6],"icon_filetype_video":[5,6],"icon_filt":[5,6],"icon_filter_bilinear":[5,6],"icon_filter_point":[5,6],"icon_filter_top":[5,6],"icon_fold":[5,6],"icon_folder_add":[5,6],"icon_folder_file_open":[5,6],"icon_folder_open":[5,6],"icon_folder_sav":[5,6],"icon_four_box":[5,6],"icon_fx":[5,6],"icon_gear":[5,6],"icon_gear_big":[5,6],"icon_gear_ex":[5,6],"icon_grid":[5,6],"icon_grid_fil":[5,6],"icon_hand_point":[5,6],"icon_heart":[5,6],"icon_help":[5,6],"icon_help_box":[5,6],"icon_hex":[5,6],"icon_hidpi":[5,6],"icon_hot":[5,6],"icon_hous":[5,6],"icon_info":[5,6],"icon_info_box":[5,6],"icon_kei":[5,6],"icon_las":[5,6],"icon_lay":[5,6],"icon_layers2":[5,6],"icon_layers_iso":[5,6],"icon_layers_vis":[5,6],"icon_len":[5,6],"icon_lens_big":[5,6],"icon_life_bar":[5,6],"icon_link":[5,6],"icon_link_box":[5,6],"icon_link_brok":[5,6],"icon_link_multi":[5,6],"icon_link_net":[5,6],"icon_lock_clos":[5,6],"icon_lock_open":[5,6],"icon_magnet":[5,6],"icon_mailbox":[5,6],"icon_map":[5,6],"icon_mipmap":[5,6],"icon_mlay":[5,6],"icon_mode_2d":[5,6],"icon_mode_3d":[5,6],"icon_monitor":[5,6],"icon_mut":[5,6],"icon_mutate_fil":[5,6],"icon_non":[5,6],"icon_notebook":[5,6],"icon_ok_tick":[5,6],"icon_pencil":[5,6],"icon_pencil_big":[5,6],"icon_photo_camera":[5,6],"icon_photo_camera_flash":[5,6],"icon_play":[5,6],"icon_player_jump":[5,6],"icon_player_next":[5,6],"icon_player_paus":[5,6],"icon_player_plai":[5,6],"icon_player_play_back":[5,6],"icon_player_previ":[5,6],"icon_player_record":[5,6],"icon_player_stop":[5,6],"icon_pot":[5,6],"icon_print":[5,6],"icon_prior":[5,6],"icon_redo":[5,6],"icon_redo_fil":[5,6],"icon_reg_exp":[5,6],"icon_repeat":[5,6],"icon_repeat_fil":[5,6],"icon_reredo":[5,6],"icon_reredo_fil":[5,6],"icon_res":[5,6],"icon_restart":[5,6],"icon_rom":[5,6],"icon_rot":[5,6],"icon_rotate_fil":[5,6],"icon_rubb":[5,6],"icon_sand_tim":[5,6],"icon_scal":[5,6],"icon_shield":[5,6],"icon_shuffl":[5,6],"icon_shuffle_fil":[5,6],"icon_speci":[5,6],"icon_square_toggl":[5,6],"icon_star":[5,6],"icon_step_into":[5,6],"icon_step_out":[5,6],"icon_step_ov":[5,6],"icon_suitcas":[5,6],"icon_suitcase_zip":[5,6],"icon_symmetri":[5,6],"icon_symmetry_horizont":[5,6],"icon_symmetry_vert":[5,6],"icon_target":[5,6],"icon_target_big":[5,6],"icon_target_big_fil":[5,6],"icon_target_mov":[5,6],"icon_target_move_fil":[5,6],"icon_target_point":[5,6],"icon_target_smal":[5,6],"icon_target_small_fil":[5,6],"icon_text_a":[5,6],"icon_text_not":[5,6],"icon_text_popup":[5,6],"icon_text_t":[5,6],"icon_tool":[5,6],"icon_undo":[5,6],"icon_undo_fil":[5,6],"icon_vertical_bar":[5,6],"icon_vertical_bars_fil":[5,6],"icon_warn":[5,6],"icon_water_drop":[5,6],"icon_wav":[5,6],"icon_wave_sinu":[5,6],"icon_wave_squar":[5,6],"icon_wave_triangular":[5,6],"icon_window":[5,6],"icon_zoom_al":[5,6],"icon_zoom_big":[5,6],"icon_zoom_cent":[5,6],"icon_zoom_medium":[5,6],"icon_zoom_smal":[5,6],"iconid":[5,6],"id":[5,6],"ident":[5,6],"identifi":[5,6],"imag":[5,6],"image_alpha_clear":5,"image_alpha_crop":5,"image_alpha_mask":5,"image_alpha_premultipli":5,"image_blur_gaussian":5,"image_clear_background":5,"image_color_bright":5,"image_color_contrast":5,"image_color_grayscal":5,"image_color_invert":5,"image_color_replac":5,"image_color_tint":5,"image_copi":5,"image_crop":5,"image_dith":5,"image_draw":5,"image_draw_circl":5,"image_draw_circle_lin":5,"image_draw_circle_lines_v":5,"image_draw_circle_v":5,"image_draw_lin":5,"image_draw_line_ex":5,"image_draw_line_v":5,"image_draw_pixel":5,"image_draw_pixel_v":5,"image_draw_rectangl":5,"image_draw_rectangle_lin":5,"image_draw_rectangle_rec":5,"image_draw_rectangle_v":5,"image_draw_text":5,"image_draw_text_ex":5,"image_draw_triangl":5,"image_draw_triangle_ex":5,"image_draw_triangle_fan":5,"image_draw_triangle_lin":5,"image_draw_triangle_strip":5,"image_flip_horizont":5,"image_flip_vert":5,"image_format":5,"image_from_channel":5,"image_from_imag":5,"image_kernel_convolut":5,"image_mipmap":5,"image_res":5,"image_resize_canva":5,"image_resize_nn":5,"image_rot":5,"image_rotate_ccw":5,"image_rotate_cw":5,"image_text":5,"image_text_ex":5,"image_to_pot":5,"imagealphaclear":6,"imagealphacrop":6,"imagealphamask":6,"imagealphapremultipli":6,"imageblurgaussian":6,"imageclearbackground":6,"imagecolorbright":6,"imagecolorcontrast":6,"imagecolorgrayscal":6,"imagecolorinvert":6,"imagecolorreplac":6,"imagecolortint":6,"imagecopi":6,"imagecrop":6,"imagedith":6,"imagedraw":6,"imagedrawcircl":6,"imagedrawcirclelin":6,"imagedrawcirclelinesv":6,"imagedrawcirclev":6,"imagedrawlin":6,"imagedrawlineex":6,"imagedrawlinev":6,"imagedrawpixel":6,"imagedrawpixelv":6,"imagedrawrectangl":6,"imagedrawrectanglelin":6,"imagedrawrectanglerec":6,"imagedrawrectanglev":6,"imagedrawtext":6,"imagedrawtextex":6,"imagedrawtriangl":6,"imagedrawtriangleex":6,"imagedrawtrianglefan":6,"imagedrawtrianglelin":6,"imagedrawtrianglestrip":6,"imagefliphorizont":6,"imageflipvert":6,"imageformat":6,"imagefromchannel":6,"imagefromimag":6,"imagekernelconvolut":6,"imagemipmap":6,"imageres":6,"imageresizecanva":6,"imageresizenn":6,"imagerot":6,"imagerotateccw":6,"imagerotatecw":6,"imagetext":6,"imagetextex":6,"imagetopot":6,"implement":1,"import":[1,3,5,6],"includ":[0,2,3,5,6],"index":[5,6],"indic":[5,6],"inertia":[5,6],"info":[5,6],"inform":5,"init":[5,6],"init_audio_devic":[1,5],"init_phys":5,"init_window":[1,5],"initaudiodevic":6,"initfram":[5,6],"initi":[5,6],"initphys":6,"initwindow":[5,6],"inner":[1,5,6],"innerradiu":[5,6],"input":[5,6],"inputend":[5,6],"inputstart":[5,6],"insert":[5,6],"insid":[5,6],"inspir":1,"instal":[0,2,3,4],"instanc":[5,6],"instead":[0,2,3,5],"instruct":[0,2],"int":[5,6],"intangent2":[5,6],"integ":[5,6],"intend":2,"intern":[5,6],"interpol":[5,6],"interpupillarydist":[5,6],"interv":[5,6],"inverseinertia":[5,6],"inversemass":[5,6],"invert":[5,6],"io":6,"is_audio_device_readi":5,"is_audio_stream_plai":5,"is_audio_stream_process":5,"is_audio_stream_valid":5,"is_cursor_hidden":5,"is_cursor_on_screen":5,"is_file_drop":5,"is_file_extens":5,"is_file_name_valid":5,"is_font_valid":5,"is_gamepad_avail":5,"is_gamepad_button_down":5,"is_gamepad_button_press":5,"is_gamepad_button_releas":5,"is_gamepad_button_up":5,"is_gesture_detect":5,"is_image_valid":5,"is_key_down":5,"is_key_press":5,"is_key_pressed_repeat":5,"is_key_releas":5,"is_key_up":5,"is_material_valid":5,"is_model_animation_valid":5,"is_model_valid":5,"is_mouse_button_down":5,"is_mouse_button_press":5,"is_mouse_button_releas":5,"is_mouse_button_up":5,"is_music_stream_plai":5,"is_music_valid":5,"is_path_fil":5,"is_render_texture_valid":5,"is_shader_valid":5,"is_sound_plai":5,"is_sound_valid":5,"is_texture_valid":5,"is_wave_valid":5,"is_window_focus":5,"is_window_fullscreen":5,"is_window_hidden":5,"is_window_maxim":5,"is_window_minim":5,"is_window_readi":5,"is_window_res":5,"is_window_st":5,"isaudiodevicereadi":6,"isaudiostreamplai":6,"isaudiostreamprocess":6,"isaudiostreamvalid":6,"iscursorhidden":6,"iscursoronscreen":6,"isfiledrop":6,"isfileextens":6,"isfilenamevalid":6,"isfontvalid":6,"isgamepadavail":6,"isgamepadbuttondown":6,"isgamepadbuttonpress":6,"isgamepadbuttonreleas":6,"isgamepadbuttonup":6,"isgesturedetect":6,"isground":[5,6],"isimagevalid":6,"iskeydown":6,"iskeypress":6,"iskeypressedrepeat":6,"iskeyreleas":6,"iskeyup":6,"ismaterialvalid":6,"ismodelanimationvalid":6,"ismodelvalid":6,"ismousebuttondown":6,"ismousebuttonpress":6,"ismousebuttonreleas":6,"ismousebuttonup":6,"ismusicstreamplai":6,"ismusicvalid":6,"isn":1,"ispathfil":6,"isrendertexturevalid":6,"isshadervalid":6,"issoundplai":6,"issoundvalid":6,"issu":1,"istexturevalid":6,"iswavevalid":6,"iswindowfocus":6,"iswindowfullscreen":6,"iswindowhidden":6,"iswindowmaxim":6,"iswindowminim":6,"iswindowreadi":6,"iswindowres":6,"iswindowst":6,"its":[5,6],"itself":1,"java":1,"jaylib":1,"jid":[5,6],"join":[5,6],"just":3,"karabinerkeyboard":1,"kei":[5,6],"kernel":[5,6],"kernels":[5,6],"key_":[5,6],"key_a":[5,6],"key_apostroph":[5,6],"key_b":[5,6],"key_back":[5,6],"key_backslash":[5,6],"key_backspac":[5,6],"key_c":[5,6],"key_caps_lock":[5,6],"key_comma":[5,6],"key_d":[5,6],"key_delet":[5,6],"key_down":[5,6],"key_eight":[5,6],"key_end":[5,6],"key_ent":[5,6],"key_equ":[5,6],"key_escap":[5,6],"key_f":[5,6],"key_f1":[5,6],"key_f10":[5,6],"key_f11":[5,6],"key_f12":[5,6],"key_f2":[5,6],"key_f3":[5,6],"key_f4":[5,6],"key_f5":[5,6],"key_f6":[5,6],"key_f7":[5,6],"key_f8":[5,6],"key_f9":[5,6],"key_fiv":[5,6],"key_four":[5,6],"key_g":[5,6],"key_grav":[5,6],"key_h":[5,6],"key_hom":[5,6],"key_i":[5,6],"key_insert":[5,6],"key_j":[5,6],"key_k":[5,6],"key_kb_menu":[5,6],"key_kp_0":[5,6],"key_kp_1":[5,6],"key_kp_2":[5,6],"key_kp_3":[5,6],"key_kp_4":[5,6],"key_kp_5":[5,6],"key_kp_6":[5,6],"key_kp_7":[5,6],"key_kp_8":[5,6],"key_kp_9":[5,6],"key_kp_add":[5,6],"key_kp_decim":[5,6],"key_kp_divid":[5,6],"key_kp_ent":[5,6],"key_kp_equ":[5,6],"key_kp_multipli":[5,6],"key_kp_subtract":[5,6],"key_l":[5,6],"key_left":[5,6],"key_left_alt":[5,6],"key_left_bracket":[5,6],"key_left_control":[5,6],"key_left_shift":[5,6],"key_left_sup":[5,6],"key_m":[5,6],"key_menu":[5,6],"key_minu":[5,6],"key_n":[5,6],"key_nin":[5,6],"key_nul":[5,6],"key_num_lock":[5,6],"key_o":[5,6],"key_on":[5,6],"key_p":[5,6],"key_page_down":[5,6],"key_page_up":[5,6],"key_paus":[5,6],"key_period":[5,6],"key_print_screen":[5,6],"key_q":[5,6],"key_r":[5,6],"key_right":[5,6],"key_right_alt":[5,6],"key_right_bracket":[5,6],"key_right_control":[5,6],"key_right_shift":[5,6],"key_right_sup":[5,6],"key_scroll_lock":[5,6],"key_semicolon":[5,6],"key_seven":[5,6],"key_six":[5,6],"key_slash":[5,6],"key_spac":[5,6],"key_t":[5,6],"key_tab":[5,6],"key_thre":[5,6],"key_two":[5,6],"key_u":[5,6],"key_up":[5,6],"key_v":[5,6],"key_volume_down":[5,6],"key_volume_up":[5,6],"key_w":[5,6],"key_x":[5,6],"key_z":[5,6],"key_zero":[5,6],"keyboard":5,"keyboardkei":[5,6],"keycod":[5,6],"knot":[5,6],"know":[1,3],"label":[5,6],"larg":1,"larger":[5,6],"last":[5,6],"latest":[1,5,6],"launch":1,"layout":[5,6],"left":[5,6],"leftlenscent":[5,6],"leftmotor":[5,6],"leftscreencent":[5,6],"length":[5,6],"lensdistortionvalu":[5,6],"lensseparationdist":[5,6],"lerp":[5,6],"let":1,"level":[5,6],"lib":[0,1,2,6],"libasound2":0,"libdrm":2,"libegl1":2,"libgbm":2,"libgl1":0,"libgles2":2,"libglfw3":2,"libglu1":0,"librari":[0,3],"libraylib":[0,2],"libx11":0,"libxi":0,"libxrandr":0,"licens":4,"lightgrai":[5,6],"like":[1,3,6],"lime":[5,6],"limit":[5,6],"line":[1,5,6],"line_color":[5,6],"linear":[5,6],"linethick":[5,6],"link":1,"linker":2,"list":[5,6],"list_0":[5,6],"list_items_border_width":[5,6],"list_items_height":[5,6],"list_items_spac":[5,6],"listen":[5,6],"listview":[5,6],"littl":[5,6],"load":[5,6],"load_audio_stream":5,"load_automation_event_list":5,"load_codepoint":5,"load_directory_fil":5,"load_directory_files_ex":5,"load_dropped_fil":5,"load_file_data":5,"load_file_text":5,"load_font":5,"load_font_data":5,"load_font_ex":5,"load_font_from_imag":5,"load_font_from_memori":5,"load_imag":5,"load_image_anim":5,"load_image_anim_from_memori":5,"load_image_color":5,"load_image_from_memori":5,"load_image_from_screen":5,"load_image_from_textur":5,"load_image_palett":5,"load_image_raw":5,"load_materi":5,"load_material_default":5,"load_model":5,"load_model_anim":5,"load_model_from_mesh":5,"load_music_stream":5,"load_music_stream_from_memori":5,"load_random_sequ":5,"load_render_textur":5,"load_shad":5,"load_shader_from_memori":5,"load_sound":5,"load_sound_alia":5,"load_sound_from_wav":5,"load_textur":5,"load_texture_cubemap":5,"load_texture_from_imag":5,"load_utf8":5,"load_vr_stereo_config":5,"load_wav":5,"load_wave_from_memori":5,"load_wave_sampl":5,"loadaudiostream":6,"loadautomationeventlist":6,"loadcodepoint":6,"loaddirectoryfil":6,"loaddirectoryfilesex":6,"loaddroppedfil":6,"loader":[5,6],"loadfiledata":[5,6],"loadfiletext":[5,6],"loadfont":6,"loadfontdata":6,"loadfontex":6,"loadfontfromimag":6,"loadfontfrommemori":6,"loadiconsnam":[5,6],"loadimag":6,"loadimageanim":6,"loadimageanimfrommemori":6,"loadimagecolor":[5,6],"loadimagefrommemori":6,"loadimagefromscreen":6,"loadimagefromtextur":6,"loadimagepalett":[5,6],"loadimageraw":6,"loadmateri":6,"loadmaterialdefault":6,"loadmodel":6,"loadmodelanim":6,"loadmodelfrommesh":6,"loadmusicstream":6,"loadmusicstreamfrommemori":6,"loadrandomsequ":6,"loadrendertextur":6,"loadshad":6,"loadshaderfrommemori":6,"loadsound":6,"loadsoundalia":6,"loadsoundfromwav":6,"loadtextur":6,"loadtexturecubemap":6,"loadtexturefromimag":6,"loadutf8":6,"loadvrstereoconfig":6,"loadwav":6,"loadwavefrommemori":6,"loadwavesampl":[5,6],"loc":[5,6],"local":[0,2],"localhost":1,"locat":[5,6],"locindex":[5,6],"lock":[5,6],"log":[5,6],"log_al":[5,6],"log_debug":[5,6],"log_error":[5,6],"log_fat":[5,6],"log_info":[5,6],"log_non":[5,6],"log_trac":[5,6],"log_warn":[5,6],"loglevel":[5,6],"longer":5,"loop":[1,5,6],"lower":[5,6],"m":[1,2,3],"m0":[5,6],"m00":[5,6],"m01":[5,6],"m1":[5,6],"m10":[5,6],"m11":[5,6],"m12":[5,6],"m13":[5,6],"m14":[5,6],"m15":[5,6],"m2":[5,6],"m3":[5,6],"m4":[5,6],"m5":[5,6],"m6":[5,6],"m7":[5,6],"m8":[5,6],"m9":[5,6],"mac":0,"magenta":[5,6],"mai":[1,5,6],"main":[1,5,6],"maintain":1,"major":[5,6],"make":[0,1,2,6],"make_directori":5,"makedirectori":6,"manual":1,"manylinux2014_x86_64":0,"map":[5,6],"maptyp":[5,6],"margin":[5,6],"maroon":[5,6],"mask":[5,6],"mass":[5,6],"master":[0,1,3,5,6],"mat":[5,6],"match":[5,6],"materi":[5,6],"material_map_albedo":[5,6],"material_map_brdf":[5,6],"material_map_cubemap":[5,6],"material_map_diffus":[5,6],"material_map_emiss":[5,6],"material_map_height":[5,6],"material_map_irradi":[5,6],"material_map_met":[5,6],"material_map_norm":[5,6],"material_map_occlus":[5,6],"material_map_prefilt":[5,6],"material_map_rough":[5,6],"material_map_specular":[5,6],"materialcount":[5,6],"materialid":[5,6],"materialmap":[5,6],"materialmapindex":[5,6],"matf":[5,6],"matric":[5,6],"matrix":[5,6],"matrix2x2":[5,6],"matrix_add":5,"matrix_decompos":5,"matrix_determin":5,"matrix_frustum":5,"matrix_ident":5,"matrix_invert":5,"matrix_look_at":5,"matrix_multipli":5,"matrix_ortho":5,"matrix_perspect":5,"matrix_rot":5,"matrix_rotate_i":5,"matrix_rotate_x":5,"matrix_rotate_xyz":5,"matrix_rotate_z":5,"matrix_rotate_zyx":5,"matrix_scal":5,"matrix_subtract":5,"matrix_to_float_v":5,"matrix_trac":5,"matrix_transl":5,"matrix_transpos":5,"matrixadd":6,"matrixdecompos":6,"matrixdetermin":6,"matrixfrustum":6,"matrixident":6,"matrixinvert":6,"matrixlookat":6,"matrixmultipli":6,"matrixortho":6,"matrixperspect":6,"matrixrot":6,"matrixrotatei":6,"matrixrotatex":6,"matrixrotatexyz":6,"matrixrotatez":6,"matrixrotatezyx":6,"matrixscal":6,"matrixsubtract":6,"matrixtofloatv":6,"matrixtrac":6,"matrixtransl":6,"matrixtranspos":6,"max":[5,6],"max_1":[5,6],"max_2":[5,6],"max_automation_ev":[5,6],"maxdist":[5,6],"maxheight":[5,6],"maxim":[5,6],"maximize_window":5,"maximizewindow":6,"maximum":[5,6],"maxpalettes":[5,6],"maxvalu":[5,6],"maxwidth":[5,6],"md5":[5,6],"me":1,"mean":[5,6],"measur":[5,6],"measure_text":5,"measure_text_ex":5,"measuretext":6,"measuretextex":6,"megabunni":1,"mem_alloc":5,"mem_fre":5,"mem_realloc":5,"memalloc":6,"memfre":[5,6],"memori":[5,6],"memrealloc":6,"mesa":[0,2],"mesh":[5,6],"meshcount":[5,6],"meshid":[5,6],"meshmateri":[5,6],"messag":[5,6],"method":5,"might":1,"millimetr":[5,6],"millisecond":[5,6],"min":[5,6],"min_0":[5,6],"min_1":[5,6],"minheight":[5,6],"mini":1,"minim":[5,6],"minimize_window":5,"minimizewindow":6,"minimum":[5,6],"minor":[5,6],"minvalu":[5,6],"minwidth":[5,6],"miplevel":[5,6],"mipmap":[5,6],"mipmapcount":[5,6],"mkdir":[0,2],"mode":[5,6],"model":[5,6],"modelanim":[5,6],"modelview":[5,6],"modern":1,"modif":[5,6],"modifi":[5,6],"modul":[0,1,3,5],"monitor":[5,6],"more":6,"most":1,"motor":[5,6],"mount":5,"mous":[5,6],"mouse_button_back":[5,6],"mouse_button_extra":[5,6],"mouse_button_forward":[5,6],"mouse_button_left":[5,6],"mouse_button_middl":[5,6],"mouse_button_right":[5,6],"mouse_button_sid":[5,6],"mouse_cursor_arrow":[5,6],"mouse_cursor_crosshair":[5,6],"mouse_cursor_default":[5,6],"mouse_cursor_ibeam":[5,6],"mouse_cursor_not_allow":[5,6],"mouse_cursor_pointing_hand":[5,6],"mouse_cursor_resize_al":[5,6],"mouse_cursor_resize_ew":[5,6],"mouse_cursor_resize_n":[5,6],"mouse_cursor_resize_nesw":[5,6],"mouse_cursor_resize_nws":[5,6],"mousebutton":[5,6],"mousecel":[5,6],"mousecursor":[5,6],"move":[3,5,6],"movement":[5,6],"msbuild":0,"msy":1,"much":[1,3],"mul":[5,6],"multipl":[1,5,6],"multipli":[5,6],"music":[5,6],"must":[0,1,2,5,6],"my_project":1,"mypi":1,"n":[5,6],"name":[0,5,6],"nativ":[5,6],"nearest":[5,6],"nearplan":[5,6],"need":[0,1,2,3,6],"neg":[5,6],"neighbor":[5,6],"new":[5,6],"newer":[0,1],"newformat":[5,6],"newheight":[5,6],"newwidth":[5,6],"next":[5,6],"nice":[5,6],"noctx":1,"nois":[5,6],"non":1,"none":[5,6],"normal":[5,6],"notat":[5,6],"note":[0,2,5,6],"now":[1,3,5],"npatch_nine_patch":[5,6],"npatch_three_patch_horizont":[5,6],"npatch_three_patch_vert":[5,6],"npatchinfo":[5,6],"npatchlayout":[5,6],"nuitka":1,"null":[5,6],"number":[5,6],"numbuff":[5,6],"numer":[5,6],"o":[1,2,5,6],"object":[5,6],"occurr":[5,6],"off":2,"offici":1,"offset":[5,6],"offseti":[5,6],"offsetx":[5,6],"often":3,"older":[1,2],"onc":[1,2,3,5,6],"one":[0,3,5,6],"onefil":1,"ones":[2,3],"onli":[1,3],"opac":[5,6],"open":[0,2,5,6],"open_url":5,"opengl":[1,5,6],"openurl":6,"opt":2,"optimis":1,"option":0,"orang":[5,6],"order":[1,5,6],"organ":[5,6],"orient":[5,6],"origin":[1,5,6],"orthograph":[5,6],"os":2,"other":[0,1],"otherwis":1,"our":1,"out":[0,1,5,6],"outangl":[5,6],"outaxi":[5,6],"outdat":0,"outer":[5,6],"outerradiu":[5,6],"outlin":[5,6],"outputend":[5,6],"outputs":[5,6],"outputstart":[5,6],"outtangent1":[5,6],"over":[5,6],"overflow":[5,6],"own":[2,5,6],"p":[0,5,6],"p1":[5,6],"p2":[5,6],"p3":[5,6],"p4":[5,6],"packag":[0,2,4],"packmethod":[5,6],"pad":[5,6],"page":4,"palett":[5,6],"pan":[5,6],"panel":[5,6],"param":[5,6],"paramet":[5,6],"parent":[5,6],"part":[5,6],"parti":1,"pascal":[5,6],"patch":5,"path":[0,2,5,6],"paus":[5,6],"pause_audio_stream":5,"pause_music_stream":5,"pause_sound":5,"pauseaudiostream":6,"pausemusicstream":6,"pausesound":6,"pc":2,"pcm":[5,6],"penetr":[5,6],"percentag":1,"perform":4,"perlin":[5,6],"person":3,"physac":3,"physic":[5,6],"physics_add_forc":5,"physics_add_torqu":5,"physics_circl":[5,6],"physics_polygon":[5,6],"physics_shatt":5,"physicsaddforc":6,"physicsaddtorqu":6,"physicsbodydata":[5,6],"physicsmanifolddata":[5,6],"physicsshap":[5,6],"physicsshapetyp":[5,6],"physicsshatt":6,"physicsvertexdata":[5,6],"pi":4,"picker":[5,6],"piec":[5,6],"pinch":[5,6],"pink":[5,6],"pip":[1,2,3],"pip3":[0,1],"pipelin":[5,6],"pitch":[5,6],"pixel":[5,6],"pixelformat":[5,6],"pixelformat_compressed_astc_4x4_rgba":[5,6],"pixelformat_compressed_astc_8x8_rgba":[5,6],"pixelformat_compressed_dxt1_rgb":[5,6],"pixelformat_compressed_dxt1_rgba":[5,6],"pixelformat_compressed_dxt3_rgba":[5,6],"pixelformat_compressed_dxt5_rgba":[5,6],"pixelformat_compressed_etc1_rgb":[5,6],"pixelformat_compressed_etc2_eac_rgba":[5,6],"pixelformat_compressed_etc2_rgb":[5,6],"pixelformat_compressed_pvrt_rgb":[5,6],"pixelformat_compressed_pvrt_rgba":[5,6],"pixelformat_uncompressed_gray_alpha":[5,6],"pixelformat_uncompressed_grayscal":[5,6],"pixelformat_uncompressed_r16":[5,6],"pixelformat_uncompressed_r16g16b16":[5,6],"pixelformat_uncompressed_r16g16b16a16":[5,6],"pixelformat_uncompressed_r32":[5,6],"pixelformat_uncompressed_r32g32b32":[5,6],"pixelformat_uncompressed_r32g32b32a32":[5,6],"pixelformat_uncompressed_r4g4b4a4":[5,6],"pixelformat_uncompressed_r5g5b5a1":[5,6],"pixelformat_uncompressed_r5g6b5":[5,6],"pixelformat_uncompressed_r8g8b8":[5,6],"pixelformat_uncompressed_r8g8b8a8":[5,6],"pixels":[5,6],"pkg":[0,1],"pkgconfig":2,"place":[5,6],"placehold":[5,6],"plai":[5,6],"plain":[5,6],"plan":0,"plane":[5,6],"plat":0,"platform":[0,5,6],"platform_drm":2,"platform_rpi":2,"play_audio_stream":5,"play_automation_ev":5,"play_music_stream":5,"play_sound":5,"playaudiostream":6,"playautomationev":6,"playmusicstream":6,"playsound":6,"pleas":[0,2],"png":[1,5,6],"po":[5,6],"point":[1,5,6],"pointcount":[5,6],"pointer":[5,6],"poll":[5,6],"poll_input_ev":5,"pollinputev":6,"polygon":[5,6],"pool":[5,6],"pop":[5,6],"portabl":6,"pose":[5,6],"posi":[5,6],"posit":[5,6],"possibl":1,"post":1,"post9":5,"posx":[5,6],"pot":[5,6],"potenti":1,"power":[5,6],"pr":[0,5],"pre":5,"prefix":[3,5,6],"premultipli":[5,6],"prepar":0,"prepend":[5,6],"press":[5,6],"previou":[5,6],"primari":6,"pro":[5,6],"probabl":[0,1,2],"processor":[5,6],"procnam":[5,6],"program":[2,5,6],"progress":[1,5,6],"progress_pad":[5,6],"progressbar":[5,6],"proj":[5,6],"project":[0,1,5,6],"proper":3,"properti":[0,5,6],"propertyid":[5,6],"propertyvalu":[5,6],"proprietari":[1,2],"provid":[5,6],"ptr":[5,6],"public":1,"publish":2,"purpl":[5,6],"push":[5,6],"py":[0,1,2,3],"pybuild":1,"pygam":1,"pygbag":1,"pypi":[0,1],"pyrai":[1,3,5],"pyramid":[5,6],"pytaiko":1,"python":[0,2,3,6],"python3":[0,1,2,3],"q":[0,5,6],"q1":[5,6],"q2":[5,6],"quad":[5,6],"quadrat":[5,6],"quaternion":6,"quaternion_add":5,"quaternion_add_valu":5,"quaternion_cubic_hermite_splin":5,"quaternion_divid":5,"quaternion_equ":5,"quaternion_from_axis_angl":5,"quaternion_from_eul":5,"quaternion_from_matrix":5,"quaternion_from_vector3_to_vector3":5,"quaternion_ident":5,"quaternion_invert":5,"quaternion_length":5,"quaternion_lerp":5,"quaternion_multipli":5,"quaternion_nlerp":5,"quaternion_norm":5,"quaternion_scal":5,"quaternion_slerp":5,"quaternion_subtract":5,"quaternion_subtract_valu":5,"quaternion_to_axis_angl":5,"quaternion_to_eul":5,"quaternion_to_matrix":5,"quaternion_transform":5,"quaternionadd":6,"quaternionaddvalu":6,"quaternioncubichermitesplin":6,"quaterniondivid":6,"quaternionequ":6,"quaternionfromaxisangl":6,"quaternionfromeul":6,"quaternionfrommatrix":6,"quaternionfromvector3tovector3":6,"quaternionident":6,"quaternioninvert":6,"quaternionlength":6,"quaternionlerp":6,"quaternionmultipli":6,"quaternionnlerp":6,"quaternionnorm":6,"quaternionscal":6,"quaternionslerp":6,"quaternionsubtract":6,"quaternionsubtractvalu":6,"quaterniontoaxisangl":6,"quaterniontoeul":6,"quaterniontomatrix":6,"quaterniontransform":6,"queu":[5,6],"queue":[5,6],"quickstart":4,"r":[2,5,6],"r8g8b8a8":5,"radial":[5,6],"radian":[5,6],"radiu":[5,6],"radius1":[5,6],"radius2":[5,6],"radiusbottom":[5,6],"radiush":[5,6],"radiustop":[5,6],"radiusv":[5,6],"radseg":[5,6],"rai":[5,6],"ram":[5,6],"ramp":[5,6],"random":[5,6],"rang":[5,6],"raspberri":4,"raspbian":2,"rasperri":1,"rate":[5,6],"rather":1,"raudiobuff":6,"raudioprocessor":6,"raw":[5,6],"raycast":5,"raycollis":[5,6],"raygui":[3,5,6],"raylib":[0,3,5,6],"raylib_drm":[1,2],"raylib_dynam":[0,1,3],"raylib_sdl":1,"raysan5":[0,2],"raywhit":[5,6],"rbpp":[5,6],"re":2,"read":[1,5,6],"readabl":[5,6],"readonli":[5,6],"readthedoc":6,"realloc":[5,6],"rec":[5,6],"rec1":[5,6],"rec2":[5,6],"receiv":[5,6],"recommend":[1,3],"record":[5,6],"rectangl":[5,6],"recurs":[0,5,6],"red":[5,6],"redbit":6,"redesign":5,"refil":[5,6],"refresh":[5,6],"refreshr":[5,6],"regist":[5,6],"regular":[5,6],"reinstal":[0,2],"rel":[5,6],"relat":1,"releas":[0,1,2,5,6],"remap":[5,6],"remov":2,"render":[5,6],"renderbuff":[5,6],"rendertextur":[5,6],"rendertexture2d":6,"repeat":[5,6],"replac":[5,6],"repli":5,"repo":0,"request":[5,6],"requir":[0,1,2,5,6],"reset":[5,6],"reset_phys":5,"resetphys":6,"resiz":[5,6],"resolut":[5,6],"resourc":1,"restitut":[5,6],"restore_window":5,"restorewindow":6,"result":[5,6],"resum":[5,6],"resume_audio_stream":5,"resume_music_stream":5,"resume_sound":5,"resumeaudiostream":6,"resumemusicstream":6,"resumesound":6,"resx":[5,6],"resz":[5,6],"retro":1,"retrowar":1,"return":[5,6],"rev":[5,6],"rf":[0,2],"rg":[5,6],"rgb":[5,6],"rgba":[5,6],"rgi":[5,6],"right":[5,6],"rightlenscent":[5,6],"rightmotor":[5,6],"rightscreencent":[5,6],"ring":[5,6],"rl":[3,6],"rl_active_draw_buff":5,"rl_active_texture_slot":5,"rl_attachment_color_channel0":[5,6],"rl_attachment_color_channel1":[5,6],"rl_attachment_color_channel2":[5,6],"rl_attachment_color_channel3":[5,6],"rl_attachment_color_channel4":[5,6],"rl_attachment_color_channel5":[5,6],"rl_attachment_color_channel6":[5,6],"rl_attachment_color_channel7":[5,6],"rl_attachment_cubemap_negative_i":[5,6],"rl_attachment_cubemap_negative_x":[5,6],"rl_attachment_cubemap_negative_z":[5,6],"rl_attachment_cubemap_positive_i":[5,6],"rl_attachment_cubemap_positive_x":[5,6],"rl_attachment_cubemap_positive_z":[5,6],"rl_attachment_depth":[5,6],"rl_attachment_renderbuff":[5,6],"rl_attachment_stencil":[5,6],"rl_attachment_texture2d":[5,6],"rl_begin":5,"rl_bind_framebuff":5,"rl_bind_image_textur":5,"rl_bind_shader_buff":5,"rl_blend_add_color":[5,6],"rl_blend_addit":[5,6],"rl_blend_alpha":[5,6],"rl_blend_alpha_premultipli":[5,6],"rl_blend_custom":[5,6],"rl_blend_custom_separ":[5,6],"rl_blend_multipli":[5,6],"rl_blend_subtract_color":[5,6],"rl_blit_framebuff":5,"rl_check_error":5,"rl_check_render_batch_limit":5,"rl_clear_color":5,"rl_clear_screen_buff":5,"rl_color3f":5,"rl_color4f":5,"rl_color4ub":5,"rl_color_mask":5,"rl_compile_shad":5,"rl_compute_shad":[5,6],"rl_compute_shader_dispatch":5,"rl_copy_shader_buff":5,"rl_cubemap_paramet":5,"rl_cull_face_back":[5,6],"rl_cull_face_front":[5,6],"rl_disable_backface_cul":5,"rl_disable_color_blend":5,"rl_disable_depth_mask":5,"rl_disable_depth_test":5,"rl_disable_framebuff":5,"rl_disable_scissor_test":5,"rl_disable_shad":5,"rl_disable_smooth_lin":5,"rl_disable_stereo_rend":5,"rl_disable_textur":5,"rl_disable_texture_cubemap":5,"rl_disable_vertex_arrai":5,"rl_disable_vertex_attribut":5,"rl_disable_vertex_buff":5,"rl_disable_vertex_buffer_el":5,"rl_disable_wire_mod":5,"rl_draw_render_batch":5,"rl_draw_render_batch_act":5,"rl_draw_vertex_arrai":5,"rl_draw_vertex_array_el":5,"rl_draw_vertex_array_elements_instanc":5,"rl_draw_vertex_array_instanc":5,"rl_enable_backface_cul":5,"rl_enable_color_blend":5,"rl_enable_depth_mask":5,"rl_enable_depth_test":5,"rl_enable_framebuff":5,"rl_enable_point_mod":5,"rl_enable_scissor_test":5,"rl_enable_shad":5,"rl_enable_smooth_lin":5,"rl_enable_stereo_rend":5,"rl_enable_textur":5,"rl_enable_texture_cubemap":5,"rl_enable_vertex_arrai":5,"rl_enable_vertex_attribut":5,"rl_enable_vertex_buff":5,"rl_enable_vertex_buffer_el":5,"rl_enable_wire_mod":5,"rl_end":5,"rl_fragment_shad":[5,6],"rl_framebuffer_attach":5,"rl_framebuffer_complet":5,"rl_frustum":5,"rl_gen_texture_mipmap":5,"rl_get_active_framebuff":5,"rl_get_cull_distance_far":5,"rl_get_cull_distance_near":5,"rl_get_framebuffer_height":5,"rl_get_framebuffer_width":5,"rl_get_gl_texture_format":5,"rl_get_line_width":5,"rl_get_location_attrib":5,"rl_get_location_uniform":5,"rl_get_matrix_modelview":5,"rl_get_matrix_project":5,"rl_get_matrix_projection_stereo":5,"rl_get_matrix_transform":5,"rl_get_matrix_view_offset_stereo":5,"rl_get_pixel_format_nam":5,"rl_get_shader_buffer_s":5,"rl_get_shader_id_default":5,"rl_get_shader_locs_default":5,"rl_get_texture_id_default":5,"rl_get_vers":5,"rl_is_stereo_render_en":5,"rl_load_compute_shader_program":5,"rl_load_draw_cub":5,"rl_load_draw_quad":5,"rl_load_extens":5,"rl_load_framebuff":5,"rl_load_ident":5,"rl_load_render_batch":5,"rl_load_shader_buff":5,"rl_load_shader_cod":5,"rl_load_shader_program":5,"rl_load_textur":5,"rl_load_texture_cubemap":5,"rl_load_texture_depth":5,"rl_load_vertex_arrai":5,"rl_load_vertex_buff":5,"rl_load_vertex_buffer_el":5,"rl_log_al":[5,6],"rl_log_debug":[5,6],"rl_log_error":[5,6],"rl_log_fat":[5,6],"rl_log_info":[5,6],"rl_log_non":[5,6],"rl_log_trac":[5,6],"rl_log_warn":[5,6],"rl_matrix_mod":5,"rl_mult_matrixf":5,"rl_normal3f":5,"rl_opengl_11":[5,6],"rl_opengl_21":[5,6],"rl_opengl_33":[5,6],"rl_opengl_43":[5,6],"rl_opengl_es_20":[5,6],"rl_opengl_es_30":[5,6],"rl_ortho":5,"rl_pixelformat_compressed_astc_4x4_rgba":[5,6],"rl_pixelformat_compressed_astc_8x8_rgba":[5,6],"rl_pixelformat_compressed_dxt1_rgb":[5,6],"rl_pixelformat_compressed_dxt1_rgba":[5,6],"rl_pixelformat_compressed_dxt3_rgba":[5,6],"rl_pixelformat_compressed_dxt5_rgba":[5,6],"rl_pixelformat_compressed_etc1_rgb":[5,6],"rl_pixelformat_compressed_etc2_eac_rgba":[5,6],"rl_pixelformat_compressed_etc2_rgb":[5,6],"rl_pixelformat_compressed_pvrt_rgb":[5,6],"rl_pixelformat_compressed_pvrt_rgba":[5,6],"rl_pixelformat_uncompressed_gray_alpha":[5,6],"rl_pixelformat_uncompressed_grayscal":[5,6],"rl_pixelformat_uncompressed_r16":[5,6],"rl_pixelformat_uncompressed_r16g16b16":[5,6],"rl_pixelformat_uncompressed_r16g16b16a16":[5,6],"rl_pixelformat_uncompressed_r32":[5,6],"rl_pixelformat_uncompressed_r32g32b32":[5,6],"rl_pixelformat_uncompressed_r32g32b32a32":[5,6],"rl_pixelformat_uncompressed_r4g4b4a4":[5,6],"rl_pixelformat_uncompressed_r5g5b5a1":[5,6],"rl_pixelformat_uncompressed_r5g6b5":[5,6],"rl_pixelformat_uncompressed_r8g8b8":[5,6],"rl_pixelformat_uncompressed_r8g8b8a8":[5,6],"rl_pop_matrix":5,"rl_push_matrix":5,"rl_read_screen_pixel":5,"rl_read_shader_buff":5,"rl_read_texture_pixel":5,"rl_rotatef":5,"rl_scalef":5,"rl_scissor":5,"rl_set_blend_factor":5,"rl_set_blend_factors_separ":5,"rl_set_blend_mod":5,"rl_set_clip_plan":5,"rl_set_cull_fac":5,"rl_set_framebuffer_height":5,"rl_set_framebuffer_width":5,"rl_set_line_width":5,"rl_set_matrix_modelview":5,"rl_set_matrix_project":5,"rl_set_matrix_projection_stereo":5,"rl_set_matrix_view_offset_stereo":5,"rl_set_render_batch_act":5,"rl_set_shad":5,"rl_set_textur":5,"rl_set_uniform":5,"rl_set_uniform_matric":5,"rl_set_uniform_matrix":5,"rl_set_uniform_sampl":5,"rl_set_vertex_attribut":5,"rl_set_vertex_attribute_default":5,"rl_set_vertex_attribute_divisor":5,"rl_shader_attrib_float":[5,6],"rl_shader_attrib_vec2":[5,6],"rl_shader_attrib_vec3":[5,6],"rl_shader_attrib_vec4":[5,6],"rl_shader_loc_color_ambi":[5,6],"rl_shader_loc_color_diffus":[5,6],"rl_shader_loc_color_specular":[5,6],"rl_shader_loc_map_albedo":[5,6],"rl_shader_loc_map_brdf":[5,6],"rl_shader_loc_map_cubemap":[5,6],"rl_shader_loc_map_emiss":[5,6],"rl_shader_loc_map_height":[5,6],"rl_shader_loc_map_irradi":[5,6],"rl_shader_loc_map_met":[5,6],"rl_shader_loc_map_norm":[5,6],"rl_shader_loc_map_occlus":[5,6],"rl_shader_loc_map_prefilt":[5,6],"rl_shader_loc_map_rough":[5,6],"rl_shader_loc_matrix_model":[5,6],"rl_shader_loc_matrix_mvp":[5,6],"rl_shader_loc_matrix_norm":[5,6],"rl_shader_loc_matrix_project":[5,6],"rl_shader_loc_matrix_view":[5,6],"rl_shader_loc_vector_view":[5,6],"rl_shader_loc_vertex_color":[5,6],"rl_shader_loc_vertex_norm":[5,6],"rl_shader_loc_vertex_posit":[5,6],"rl_shader_loc_vertex_tang":[5,6],"rl_shader_loc_vertex_texcoord01":[5,6],"rl_shader_loc_vertex_texcoord02":[5,6],"rl_shader_uniform_float":[5,6],"rl_shader_uniform_int":[5,6],"rl_shader_uniform_ivec2":[5,6],"rl_shader_uniform_ivec3":[5,6],"rl_shader_uniform_ivec4":[5,6],"rl_shader_uniform_sampler2d":[5,6],"rl_shader_uniform_uint":[5,6],"rl_shader_uniform_uivec2":[5,6],"rl_shader_uniform_uivec3":[5,6],"rl_shader_uniform_uivec4":[5,6],"rl_shader_uniform_vec2":[5,6],"rl_shader_uniform_vec3":[5,6],"rl_shader_uniform_vec4":[5,6],"rl_tex_coord2f":5,"rl_texture_filter_anisotropic_16x":[5,6],"rl_texture_filter_anisotropic_4x":[5,6],"rl_texture_filter_anisotropic_8x":[5,6],"rl_texture_filter_bilinear":[5,6],"rl_texture_filter_point":[5,6],"rl_texture_filter_trilinear":[5,6],"rl_texture_paramet":5,"rl_translatef":5,"rl_unload_framebuff":5,"rl_unload_render_batch":5,"rl_unload_shader_buff":5,"rl_unload_shader_program":5,"rl_unload_textur":5,"rl_unload_vertex_arrai":5,"rl_unload_vertex_buff":5,"rl_update_shader_buff":5,"rl_update_textur":5,"rl_update_vertex_buff":5,"rl_update_vertex_buffer_el":5,"rl_vertex2f":5,"rl_vertex2i":5,"rl_vertex3f":5,"rl_vertex_shad":[5,6],"rl_viewport":5,"rlactivedrawbuff":6,"rlactivetextureslot":6,"rlbegin":6,"rlbindframebuff":6,"rlbindimagetextur":6,"rlbindshaderbuff":6,"rlblendmod":[5,6],"rlblitframebuff":6,"rlcheckerror":6,"rlcheckrenderbatchlimit":6,"rlclearcolor":6,"rlclearscreenbuff":6,"rlcolor3f":6,"rlcolor4f":6,"rlcolor4ub":6,"rlcolormask":6,"rlcompileshad":6,"rlcomputeshaderdispatch":6,"rlcopyshaderbuff":6,"rlcubemapparamet":6,"rlcullmod":[5,6],"rldisablebackfacecul":6,"rldisablecolorblend":6,"rldisabledepthmask":6,"rldisabledepthtest":6,"rldisableframebuff":6,"rldisablescissortest":6,"rldisableshad":6,"rldisablesmoothlin":6,"rldisablestereorend":6,"rldisabletextur":6,"rldisabletexturecubemap":6,"rldisablevertexarrai":6,"rldisablevertexattribut":6,"rldisablevertexbuff":6,"rldisablevertexbufferel":6,"rldisablewiremod":6,"rldrawcal":[5,6],"rldrawrenderbatch":6,"rldrawrenderbatchact":6,"rldrawvertexarrai":6,"rldrawvertexarrayel":6,"rldrawvertexarrayelementsinstanc":6,"rldrawvertexarrayinstanc":6,"rlenablebackfacecul":6,"rlenablecolorblend":6,"rlenabledepthmask":6,"rlenabledepthtest":6,"rlenableframebuff":6,"rlenablepointmod":6,"rlenablescissortest":6,"rlenableshad":6,"rlenablesmoothlin":6,"rlenablestereorend":6,"rlenabletextur":6,"rlenabletexturecubemap":6,"rlenablevertexarrai":6,"rlenablevertexattribut":6,"rlenablevertexbuff":6,"rlenablevertexbufferel":6,"rlenablewiremod":6,"rlend":6,"rlframebufferattach":6,"rlframebufferattachtexturetyp":[5,6],"rlframebufferattachtyp":[5,6],"rlframebuffercomplet":6,"rlfrustum":6,"rlgentexturemipmap":6,"rlgetactiveframebuff":6,"rlgetculldistancefar":6,"rlgetculldistancenear":6,"rlgetframebufferheight":6,"rlgetframebufferwidth":6,"rlgetgltextureformat":6,"rlgetlinewidth":6,"rlgetlocationattrib":6,"rlgetlocationuniform":6,"rlgetmatrixmodelview":6,"rlgetmatrixproject":6,"rlgetmatrixprojectionstereo":6,"rlgetmatrixtransform":6,"rlgetmatrixviewoffsetstereo":6,"rlgetpixelformatnam":6,"rlgetshaderbuffers":6,"rlgetshaderiddefault":6,"rlgetshaderlocsdefault":6,"rlgettextureiddefault":6,"rlgetvers":6,"rlgl":[5,6],"rlgl_close":5,"rlgl_init":5,"rlglclose":6,"rlglinit":6,"rlglversion":[5,6],"rlisstereorenderen":6,"rlloadcomputeshaderprogram":6,"rlloaddrawcub":6,"rlloaddrawquad":6,"rlloadextens":6,"rlloadframebuff":6,"rlloadident":6,"rlloadrenderbatch":6,"rlloadshaderbuff":6,"rlloadshadercod":6,"rlloadshaderprogram":6,"rlloadtextur":6,"rlloadtexturecubemap":6,"rlloadtexturedepth":6,"rlloadvertexarrai":6,"rlloadvertexbuff":6,"rlloadvertexbufferel":6,"rlmatrixmod":6,"rlmultmatrixf":6,"rlnormal3f":6,"rlortho":6,"rlpixelformat":[5,6],"rlpopmatrix":6,"rlpushmatrix":6,"rlreadscreenpixel":6,"rlreadshaderbuff":6,"rlreadtexturepixel":6,"rlrenderbatch":[5,6],"rlrotatef":6,"rlscalef":6,"rlscissor":6,"rlsetblendfactor":6,"rlsetblendfactorssepar":6,"rlsetblendmod":6,"rlsetclipplan":6,"rlsetcullfac":6,"rlsetframebufferheight":6,"rlsetframebufferwidth":6,"rlsetlinewidth":6,"rlsetmatrixmodelview":6,"rlsetmatrixproject":6,"rlsetmatrixprojectionstereo":6,"rlsetmatrixviewoffsetstereo":6,"rlsetrenderbatchact":6,"rlsetshad":6,"rlsettextur":6,"rlsetuniform":6,"rlsetuniformmatric":6,"rlsetuniformmatrix":6,"rlsetuniformsampl":6,"rlsetvertexattribut":6,"rlsetvertexattributedefault":6,"rlsetvertexattributedivisor":6,"rlshaderattributedatatyp":[5,6],"rlshaderlocationindex":[5,6],"rlshaderuniformdatatyp":[5,6],"rltexcoord2f":6,"rltexturefilt":[5,6],"rltextureparamet":6,"rltraceloglevel":[5,6],"rltranslatef":6,"rlunloadframebuff":6,"rlunloadrenderbatch":6,"rlunloadshaderbuff":6,"rlunloadshaderprogram":6,"rlunloadtextur":6,"rlunloadvertexarrai":6,"rlunloadvertexbuff":6,"rlupdateshaderbuff":6,"rlupdatetextur":6,"rlupdatevertexbuff":6,"rlupdatevertexbufferel":6,"rlvertex2f":6,"rlvertex2i":6,"rlvertex3f":6,"rlvertexbuff":[5,6],"rlviewport":6,"rlzero":4,"rm":[0,2],"rmdir":0,"roll":[5,6],"rom":[5,6],"rotat":[5,6],"rotationangl":[5,6],"rotationaxi":[5,6],"round":[5,6],"run":[0,2,4,5,6],"same":[3,5,6],"sampl":[5,6],"samplecount":[5,6],"sampler":[5,6],"sampler2d":[5,6],"samples":[5,6],"satur":[5,6],"save":[5,6],"save_file_data":5,"save_file_text":5,"savefiledata":6,"savefiletext":6,"saver":[5,6],"scalar":[5,6],"scale":[5,6],"scalei":[5,6],"scalein":[5,6],"scalex":[5,6],"scan":[5,6],"scancod":[5,6],"scansubdir":[5,6],"scissor":[5,6],"screen":[5,6],"screenshot":[5,6],"script":1,"scroll":[5,6],"scroll_pad":[5,6],"scroll_slider_pad":[5,6],"scroll_slider_s":[5,6],"scroll_spe":[5,6],"scrollbar":[5,6],"scrollbar_sid":[5,6],"scrollbar_width":[5,6],"scrollindex":[5,6],"sdl_gamecontrollerdb":[5,6],"search":4,"second":[5,6],"secret":[5,6],"secretviewact":[5,6],"sector":[5,6],"see":[0,1,2,3,5,6],"seed":[5,6],"seek":[5,6],"seek_music_stream":5,"seekmusicstream":6,"seem":2,"segment":[5,6],"select":[5,6],"selectedchannel":[5,6],"separ":[0,1,3,5,6],"sequenc":[5,6],"server":1,"set":[0,3,5,6],"set_audio_stream_buffer_size_default":5,"set_audio_stream_callback":5,"set_audio_stream_pan":5,"set_audio_stream_pitch":5,"set_audio_stream_volum":5,"set_automation_event_base_fram":5,"set_automation_event_list":5,"set_clipboard_text":5,"set_config_flag":5,"set_exit_kei":5,"set_gamepad_map":5,"set_gamepad_vibr":5,"set_gestures_en":5,"set_load_file_data_callback":5,"set_load_file_text_callback":5,"set_master_volum":5,"set_material_textur":5,"set_model_mesh_materi":5,"set_mouse_cursor":5,"set_mouse_offset":5,"set_mouse_posit":5,"set_mouse_scal":5,"set_music_pan":5,"set_music_pitch":5,"set_music_volum":5,"set_physics_body_rot":5,"set_physics_grav":5,"set_physics_time_step":5,"set_pixel_color":5,"set_random_se":5,"set_save_file_data_callback":5,"set_save_file_text_callback":5,"set_shader_valu":5,"set_shader_value_matrix":5,"set_shader_value_textur":5,"set_shader_value_v":5,"set_shapes_textur":5,"set_sound_pan":5,"set_sound_pitch":5,"set_sound_volum":5,"set_target_fp":5,"set_text_line_spac":5,"set_texture_filt":5,"set_texture_wrap":5,"set_trace_log_callback":5,"set_trace_log_level":5,"set_window_focus":5,"set_window_icon":5,"set_window_max_s":5,"set_window_min_s":5,"set_window_monitor":5,"set_window_opac":5,"set_window_posit":5,"set_window_s":5,"set_window_st":5,"set_window_titl":5,"setaudiostreambuffersizedefault":6,"setaudiostreamcallback":6,"setaudiostreampan":6,"setaudiostreampitch":6,"setaudiostreamvolum":6,"setautomationeventbasefram":6,"setautomationeventlist":6,"setclipboardtext":6,"setconfigflag":6,"setexitkei":6,"setgamepadmap":6,"setgamepadvibr":6,"setgesturesen":6,"setloadfiledatacallback":6,"setloadfiletextcallback":6,"setmastervolum":6,"setmaterialtextur":6,"setmodelmeshmateri":6,"setmousecursor":6,"setmouseoffset":6,"setmouseposit":6,"setmousescal":6,"setmusicpan":6,"setmusicpitch":6,"setmusicvolum":6,"setphysicsbodyrot":6,"setphysicsgrav":6,"setphysicstimestep":6,"setpixelcolor":6,"setrandomse":6,"setsavefiledatacallback":6,"setsavefiletextcallback":6,"setshadervalu":6,"setshadervaluematrix":6,"setshadervaluetextur":6,"setshadervaluev":6,"setshapestextur":6,"setsoundpan":6,"setsoundpitch":6,"setsoundvolum":6,"settargetfp":6,"settextlinespac":6,"settexturefilt":6,"settexturewrap":6,"settracelogcallback":6,"settraceloglevel":6,"setup":[0,5,6],"setuptool":[1,2],"setwindowfocus":6,"setwindowicon":6,"setwindowmaxs":6,"setwindowmins":6,"setwindowmonitor":6,"setwindowopac":6,"setwindowposit":6,"setwindows":6,"setwindowst":6,"setwindowtitl":6,"sh":0,"sha1":[5,6],"shader":[5,6],"shader_attrib_float":[5,6],"shader_attrib_vec2":[5,6],"shader_attrib_vec3":[5,6],"shader_attrib_vec4":[5,6],"shader_loc_bone_matric":[5,6],"shader_loc_color_ambi":[5,6],"shader_loc_color_diffus":[5,6],"shader_loc_color_specular":[5,6],"shader_loc_map_albedo":[5,6],"shader_loc_map_brdf":[5,6],"shader_loc_map_cubemap":[5,6],"shader_loc_map_emiss":[5,6],"shader_loc_map_height":[5,6],"shader_loc_map_irradi":[5,6],"shader_loc_map_met":[5,6],"shader_loc_map_norm":[5,6],"shader_loc_map_occlus":[5,6],"shader_loc_map_prefilt":[5,6],"shader_loc_map_rough":[5,6],"shader_loc_matrix_model":[5,6],"shader_loc_matrix_mvp":[5,6],"shader_loc_matrix_norm":[5,6],"shader_loc_matrix_project":[5,6],"shader_loc_matrix_view":[5,6],"shader_loc_vector_view":[5,6],"shader_loc_vertex_boneid":[5,6],"shader_loc_vertex_boneweight":[5,6],"shader_loc_vertex_color":[5,6],"shader_loc_vertex_norm":[5,6],"shader_loc_vertex_posit":[5,6],"shader_loc_vertex_tang":[5,6],"shader_loc_vertex_texcoord01":[5,6],"shader_loc_vertex_texcoord02":[5,6],"shader_uniform_float":[5,6],"shader_uniform_int":[5,6],"shader_uniform_ivec2":[5,6],"shader_uniform_ivec3":[5,6],"shader_uniform_ivec4":[5,6],"shader_uniform_sampler2d":[5,6],"shader_uniform_vec2":[5,6],"shader_uniform_vec3":[5,6],"shader_uniform_vec4":[5,6],"shaderattributedatatyp":[5,6],"shadercod":[5,6],"shaderid":[5,6],"shaderlocationindex":[5,6],"shaderuniformdatatyp":[5,6],"shape":[5,6],"share":[0,2,5,6],"shatter":[5,6],"shell":0,"should":[0,1,2,5,6],"show":[5,6],"show_cursor":5,"showcas":4,"showcursor":6,"shrink":[5,6],"side":[5,6],"silent":3,"similar":6,"simpl":1,"simplifi":1,"simul":[5,6],"sinc":[5,6],"singl":[2,5,6],"size":[5,6],"skelet":5,"skeleton":[5,6],"skin":[5,6],"skyblu":[5,6],"sleep":1,"slice":[5,6],"slider":[5,6],"slider_pad":[5,6],"slider_width":[5,6],"sliderbar":5,"slightli":1,"sln":0,"slot":[5,6],"slow":[5,6],"small":[5,6],"snake":[5,6],"snake_cas":5,"so":[0,1,3,5,6],"some":[0,1,3,5,6],"someth":3,"sound":[5,6],"sourc":[1,4,5,6],"space":[5,6],"specif":[1,5,6],"specifi":[5,6],"specular":[5,6],"sphere":[5,6],"spin_button_spac":[5,6],"spin_button_width":[5,6],"spinner":[5,6],"spline":[5,6],"split":[5,6],"sprite":[5,6],"squar":[5,6],"src":[0,2,5,6],"srcheight":[5,6],"srcid":[5,6],"srcoffset":[5,6],"srcptr":[5,6],"srcrec":[5,6],"srcwidth":[5,6],"srcx":[5,6],"srcy":[5,6],"ssbo":[5,6],"ssboid":[5,6],"stack":[5,6],"stacktrac":3,"standalon":1,"standard":[1,3,5,6],"start":[5,6],"start_automation_event_record":5,"startangl":[5,6],"startautomationeventrecord":6,"startpo":[5,6],"startpos1":[5,6],"startpos2":[5,6],"startposi":[5,6],"startposx":[5,6],"startradiu":[5,6],"state":[5,6],"state_dis":[5,6],"state_focus":[5,6],"state_norm":[5,6],"state_press":[5,6],"static":[0,1,3,5,6],"staticfrict":[5,6],"statu":[5,6],"statusbar":[5,6],"steinberg":[5,6],"step":[5,6],"stereo":[5,6],"still":[0,1,5],"stop":[5,6],"stop_audio_stream":5,"stop_automation_event_record":5,"stop_music_stream":5,"stop_sound":5,"stopaudiostream":6,"stopautomationeventrecord":6,"stopmusicstream":6,"stopsound":6,"storag":[5,6],"store":5,"str":5,"stream":[5,6],"stretch":[5,6],"stride":[5,6],"string":[5,6],"strip":[5,6],"struct":6,"structur":[1,5,6],"stuff":6,"style":[5,6],"sub":[5,6],"subdiv":[5,6],"subdivis":[5,6],"submit":[0,1],"submodul":0,"subtract":[5,6],"success":[5,6],"successfulli":[5,6],"sudo":[0,2],"sugar":5,"suggest":2,"support":[1,5,6],"sure":[0,1],"swap":[5,6],"swap_screen_buff":5,"swapscreenbuff":6,"switch":1,"symlink":0,"syntact":5,"system":[0,1,2,3,5,6],"t":[0,1,2,3,5,6],"tab":[5,6],"take":[5,6],"take_screenshot":5,"takescreenshot":6,"tangent":[5,6],"tangent1":[5,6],"tangent2":[5,6],"tanki":1,"target":[0,5,6],"tempest":1,"templat":1,"termin":[5,6],"test":[0,1,2,3,5,6],"test_dynam":3,"tex":5,"texcoord":[5,6],"texcoords2":[5,6],"texid":[5,6],"text":[5,6],"text1":[5,6],"text2":[5,6],"text_align":[5,6],"text_align_bottom":[5,6],"text_align_cent":[5,6],"text_align_left":[5,6],"text_align_middl":[5,6],"text_align_right":[5,6],"text_align_top":[5,6],"text_alignment_vert":[5,6],"text_append":5,"text_color_dis":[5,6],"text_color_focus":[5,6],"text_color_norm":[5,6],"text_color_press":[5,6],"text_copi":5,"text_find_index":5,"text_format":5,"text_insert":5,"text_is_equ":5,"text_join":5,"text_length":5,"text_line_spac":[5,6],"text_pad":[5,6],"text_readonli":[5,6],"text_replac":5,"text_siz":[5,6],"text_spac":[5,6],"text_split":5,"text_subtext":5,"text_to_camel":5,"text_to_float":5,"text_to_integ":5,"text_to_low":5,"text_to_pasc":5,"text_to_snak":5,"text_to_upp":5,"text_wrap_char":[5,6],"text_wrap_mod":[5,6],"text_wrap_non":[5,6],"text_wrap_word":[5,6],"textappend":6,"textbox":[5,6],"textboxmulti":5,"textcopi":6,"textfindindex":6,"textformat":6,"textinsert":6,"textisequ":6,"textjoin":6,"textleft":[5,6],"textlength":6,"textlist":[5,6],"textmaxs":[5,6],"textreplac":6,"textright":[5,6],"textsiz":[5,6],"textsplit":6,"textsubtext":6,"texttocamel":6,"texttofloat":6,"texttointeg":6,"texttolow":6,"texttopasc":6,"texttosnak":6,"texttoupp":6,"textur":[1,5,6],"texture2d":[5,6],"texture_filter_anisotropic_16x":[5,6],"texture_filter_anisotropic_4x":[5,6],"texture_filter_anisotropic_8x":[5,6],"texture_filter_bilinear":[5,6],"texture_filter_point":[5,6],"texture_filter_trilinear":[5,6],"texture_wrap_clamp":[5,6],"texture_wrap_mirror_clamp":[5,6],"texture_wrap_mirror_repeat":[5,6],"texture_wrap_repeat":[5,6],"texturecubemap":6,"texturefilt":[5,6],"textureid":[5,6],"textures_bunnymark":1,"texturewrap":[5,6],"textvalu":[5,6],"textyp":[5,6],"than":[0,1,5],"thei":[0,1,2,3],"them":1,"therefor":3,"thi":[0,1,2,3,5,6],"thick":[5,6],"those":5,"thread":[5,6],"threshold":[5,6],"tiles":[5,6],"time":[5,6],"timeout":[5,6],"tini":1,"tint":[5,6],"titl":[5,6],"tmpl":1,"tofloat":5,"toggl":[5,6],"toggle_borderless_window":5,"toggle_fullscreen":5,"toggleborderlesswindow":6,"togglefullscreen":6,"togglegroup":5,"tooltip":[5,6],"top":[5,6],"topleft":[5,6],"topright":[5,6],"torqu":[5,6],"toru":[5,6],"total":[5,6],"touch":[5,6],"tournament":1,"trace":[2,5,6],"trace_log":5,"tracelog":6,"traceloglevel":[5,6],"transform":[5,6],"translat":[5,6],"tree":1,"trefoil":[5,6],"triangl":[5,6],"trianglecount":[5,6],"true":[5,6],"try":[1,2],"ttf":[5,6],"tupl":[5,6],"two":[1,5,6],"type":[1,5,6],"u":[1,5],"ubuntu":1,"ume_block":1,"unicod":[5,6],"uniform":[5,6],"uniformnam":[5,6],"uniformtyp":[5,6],"uninstal":1,"unless":0,"unload":[5,6],"unload_audio_stream":5,"unload_automation_event_list":5,"unload_codepoint":5,"unload_directory_fil":5,"unload_dropped_fil":5,"unload_file_data":5,"unload_file_text":5,"unload_font":5,"unload_font_data":5,"unload_imag":5,"unload_image_color":5,"unload_image_palett":5,"unload_materi":5,"unload_mesh":5,"unload_model":5,"unload_model_anim":5,"unload_music_stream":5,"unload_random_sequ":5,"unload_render_textur":5,"unload_shad":5,"unload_sound":5,"unload_sound_alia":5,"unload_textur":5,"unload_utf8":5,"unload_vr_stereo_config":5,"unload_wav":5,"unload_wave_sampl":5,"unloadaudiostream":6,"unloadautomationeventlist":6,"unloadcodepoint":6,"unloaddirectoryfil":6,"unloaddroppedfil":6,"unloadfiledata":6,"unloadfiletext":6,"unloadfont":6,"unloadfontdata":6,"unloadimag":6,"unloadimagecolor":6,"unloadimagepalett":6,"unloadmateri":6,"unloadmesh":6,"unloadmodel":6,"unloadmodelanim":6,"unloadmusicstream":6,"unloadrandomsequ":6,"unloadrendertextur":6,"unloadshad":6,"unloadsound":6,"unloadsoundalia":6,"unloadtextur":6,"unloadutf8":6,"unloadvrstereoconfig":6,"unloadwav":6,"unloadwavesampl":6,"unlock":[5,6],"up":[1,5,6],"updat":[0,1,2,5,6],"update_audio_stream":5,"update_camera":5,"update_camera_pro":5,"update_mesh_buff":5,"update_model_anim":5,"update_model_animation_bon":5,"update_music_stream":5,"update_phys":5,"update_sound":5,"update_textur":5,"update_texture_rec":5,"updateaudiostream":6,"updatecamera":6,"updatecamerapro":6,"updatemeshbuff":6,"updatemodelanim":6,"updatemodelanimationbon":6,"updatemusicstream":6,"updatephys":6,"updatesound":6,"updatetextur":6,"updatetexturerec":6,"upgrad":[0,1,2],"upload":[5,6],"upload_mesh":5,"uploadmesh":6,"upper":[5,6],"url":[5,6],"us":[0,2,3,4,5,6],"usag":6,"usagehint":[5,6],"use_external_raylib":3,"usegrav":[5,6],"user":[0,1,5,6],"userenderbuff":[5,6],"usr":[0,2],"usual":1,"utf":[5,6],"utf8siz":[5,6],"v":[5,6],"v1":[5,6],"v2":[5,6],"v3":[5,6],"valid":[5,6],"valu":[5,6],"valuebox":[5,6],"vao":[5,6],"vaoid":[5,6],"vararg":[5,6],"variabl":[3,5,6],"vbo":[5,6],"vboid":[5,6],"vc":2,"vcount":[5,6],"vector":[5,6],"vector2":[5,6],"vector2_add":5,"vector2_add_valu":5,"vector2_angl":5,"vector2_clamp":5,"vector2_clamp_valu":5,"vector2_dist":5,"vector2_distance_sqr":5,"vector2_divid":5,"vector2_dot_product":5,"vector2_equ":5,"vector2_invert":5,"vector2_length":5,"vector2_length_sqr":5,"vector2_lerp":5,"vector2_line_angl":5,"vector2_max":5,"vector2_min":5,"vector2_move_toward":5,"vector2_multipli":5,"vector2_neg":5,"vector2_norm":5,"vector2_on":5,"vector2_reflect":5,"vector2_refract":5,"vector2_rot":5,"vector2_scal":5,"vector2_subtract":5,"vector2_subtract_valu":5,"vector2_transform":5,"vector2_zero":5,"vector2add":6,"vector2addvalu":6,"vector2angl":6,"vector2clamp":6,"vector2clampvalu":6,"vector2dist":6,"vector2distancesqr":6,"vector2divid":6,"vector2dotproduct":6,"vector2equ":6,"vector2invert":6,"vector2length":6,"vector2lengthsqr":6,"vector2lerp":6,"vector2lineangl":6,"vector2max":6,"vector2min":6,"vector2movetoward":6,"vector2multipli":6,"vector2neg":6,"vector2norm":6,"vector2on":6,"vector2reflect":6,"vector2refract":6,"vector2rot":6,"vector2scal":6,"vector2subtract":6,"vector2subtractvalu":6,"vector2transform":6,"vector2zero":6,"vector3":[5,6],"vector3_add":5,"vector3_add_valu":5,"vector3_angl":5,"vector3_barycent":5,"vector3_clamp":5,"vector3_clamp_valu":5,"vector3_cross_product":5,"vector3_cubic_hermit":5,"vector3_dist":5,"vector3_distance_sqr":5,"vector3_divid":5,"vector3_dot_product":5,"vector3_equ":5,"vector3_invert":5,"vector3_length":5,"vector3_length_sqr":5,"vector3_lerp":5,"vector3_max":5,"vector3_min":5,"vector3_move_toward":5,"vector3_multipli":5,"vector3_neg":5,"vector3_norm":5,"vector3_on":5,"vector3_ortho_norm":5,"vector3_perpendicular":5,"vector3_project":5,"vector3_reflect":5,"vector3_refract":5,"vector3_reject":5,"vector3_rotate_by_axis_angl":5,"vector3_rotate_by_quaternion":5,"vector3_scal":5,"vector3_subtract":5,"vector3_subtract_valu":5,"vector3_to_float_v":5,"vector3_transform":5,"vector3_unproject":5,"vector3_zero":5,"vector3add":6,"vector3addvalu":6,"vector3angl":6,"vector3barycent":6,"vector3clamp":6,"vector3clampvalu":6,"vector3crossproduct":6,"vector3cubichermit":6,"vector3dist":6,"vector3distancesqr":6,"vector3divid":6,"vector3dotproduct":6,"vector3equ":6,"vector3invert":6,"vector3length":6,"vector3lengthsqr":6,"vector3lerp":6,"vector3max":6,"vector3min":6,"vector3movetoward":6,"vector3multipli":6,"vector3neg":6,"vector3norm":6,"vector3on":6,"vector3orthonorm":6,"vector3perpendicular":6,"vector3project":6,"vector3reflect":6,"vector3refract":6,"vector3reject":6,"vector3rotatebyaxisangl":6,"vector3rotatebyquaternion":6,"vector3scal":6,"vector3subtract":6,"vector3subtractvalu":6,"vector3tofloatv":6,"vector3transform":6,"vector3unproject":6,"vector3zero":6,"vector4":[5,6],"vector4_add":5,"vector4_add_valu":5,"vector4_dist":5,"vector4_distance_sqr":5,"vector4_divid":5,"vector4_dot_product":5,"vector4_equ":5,"vector4_invert":5,"vector4_length":5,"vector4_length_sqr":5,"vector4_lerp":5,"vector4_max":5,"vector4_min":5,"vector4_move_toward":5,"vector4_multipli":5,"vector4_neg":5,"vector4_norm":5,"vector4_on":5,"vector4_scal":5,"vector4_subtract":5,"vector4_subtract_valu":5,"vector4_zero":5,"vector4add":6,"vector4addvalu":6,"vector4dist":6,"vector4distancesqr":6,"vector4divid":6,"vector4dotproduct":6,"vector4equ":6,"vector4invert":6,"vector4length":6,"vector4lengthsqr":6,"vector4lerp":6,"vector4max":6,"vector4min":6,"vector4movetoward":6,"vector4multipli":6,"vector4neg":6,"vector4norm":6,"vector4on":6,"vector4scal":6,"vector4subtract":6,"vector4subtractvalu":6,"vector4zero":6,"veloc":[5,6],"venv":1,"veri":6,"verifi":[5,6],"version":[0,2,5,6],"vertex":[5,6],"vertexalign":[5,6],"vertexbuff":[5,6],"vertexcount":[5,6],"vertexdata":[5,6],"vertic":[5,6],"via":3,"vibrat":[5,6],"video":[5,6],"view":[5,6],"viewoffset":[5,6],"viewport":[5,6],"violet":[1,5,6],"visibl":[5,6],"visual":0,"volum":[5,6],"vr":[5,6],"vram":[5,6],"vrdeviceinfo":[5,6],"vresolut":[5,6],"vrstereoconfig":[5,6],"vscode":[5,6],"vscreensiz":[5,6],"vsfilenam":[5,6],"vshaderid":[5,6],"w":[5,6],"wabbit_alpha":1,"wai":[0,1],"wait":[5,6],"wait_tim":5,"waittim":6,"want":[0,4,6],"warn":[3,5,6],"wav":[5,6],"wave":[5,6],"wave_copi":5,"wave_crop":5,"wave_format":5,"wavecopi":6,"wavecrop":6,"waveformat":6,"wayland":1,"we":[0,2],"web":4,"weird":3,"well":1,"what":1,"wheel":[0,1,5,6],"when":[1,2,5,6],"whenev":6,"where":[1,5,6],"which":1,"whichev":[5,6],"while":[1,5,6],"white":[1,5,6],"whl":0,"width":[5,6],"widthmm":[5,6],"wiki":[0,2],"win_amd64":0,"window":[5,6],"window_res":1,"window_should_clos":[1,5],"windowshouldclos":6,"wire":[5,6],"wirefram":[5,6],"within":[5,6],"without":[2,5,6],"won":3,"wont":0,"work":[0,1,2,3,5,6],"workflow":0,"world":[1,5,6],"would":0,"wrap":[5,6],"wrapper":5,"write":[1,5,6],"wrong":3,"wsl":1,"x":[5,6],"x11":1,"x64":1,"x86":1,"xhot":[5,6],"xna":[5,6],"xorg":0,"xpo":[5,6],"xscale":[5,6],"xy":[5,6],"xz":[5,6],"y":[5,6],"yaw":[5,6],"yellow":[5,6],"yhot":[5,6],"yml":0,"you":[0,2,3,5,6],"your":[0,2,3,4,6],"ypo":[5,6],"yscale":[5,6],"z":[5,6],"zero":1,"zfar":[5,6],"znear":[5,6],"zoom":[5,6]},"titles":["Building from source","Python Bindings for Raylib 5.5","Raspberry Pi","Dynamic Bindings","Raylib Python","Python API","C API"],"titleterms":{"1":2,"2":2,"3":2,"5":1,"If":1,"Or":0,"advert":1,"an":1,"api":[1,5,6],"app":1,"ar":1,"backend":1,"binari":2,"bind":[1,3],"browser":1,"build":0,"bunnymark":1,"c":[1,6],"code":1,"compil":2,"content":4,"copi":1,"desktop":1,"drm":[1,2],"dynam":[1,3],"exact":1,"exampl":5,"familiar":1,"from":[0,2],"function":6,"glfw":1,"have":0,"help":1,"how":1,"instal":1,"librari":1,"licens":1,"linux":[0,1],"mac":1,"maco":[0,1],"manual":0,"mode":2,"more":1,"option":2,"packag":1,"perform":1,"physac":1,"pi":[1,2],"pip":0,"platform":1,"prefer":1,"problem":1,"python":[1,4,5],"pythonist":1,"quickstart":1,"raspberri":[1,2],"raygui":1,"raylib":[1,2,4],"raymath":1,"refer":[5,6],"rlgl":1,"rlzero":1,"run":1,"sdl":1,"showcas":1,"sourc":[0,2],"todo":0,"us":1,"version":1,"want":1,"web":1,"wheel":2,"window":[0,1],"x11":2,"you":1,"your":1}}) \ No newline at end of file diff --git a/dynamic/MANIFEST.in b/dynamic/MANIFEST.in deleted file mode 100644 index a22ebe4..0000000 --- a/dynamic/MANIFEST.in +++ /dev/null @@ -1,13 +0,0 @@ -include pyray/*.pyi -include raylib/*.dll -include raylib/*.dylib -include raylib/*.h -include raylib/*.pyd -include raylib/*.pyi -include raylib/*.so -include version.py -exclude raylib/*.a -exclude raylib/*.c -exclude raylib/*.o -include raylib/py.typed -include pyray/py.typed \ No newline at end of file diff --git a/dynamic/README.rst b/dynamic/README.rst deleted file mode 100644 index e2877bf..0000000 --- a/dynamic/README.rst +++ /dev/null @@ -1,41 +0,0 @@ -Dynamic Bindings -================ - -CFFI ABI dynamic bindings avoid the need to compile a C extension module. They now been moved to a separate module:: - - python3 -m pip install raylib_dynamic - -.. warning:: - - There have been some weird failures with dynamic bindings and ctypes bindings before and often the - failures are silent - so you don't even know something has gone wrong and you don't get proper stacktraces. Also the static bindings are faster. - Therefore I personally recommend the static ones. - But the dynamic bindings have the advantage that you don't need to compile anything to install. You just need a Raylib DLL. - -The API is exactly the same as the static one documented here. (Therefore you can't have both modules installed at once.) The only difference is you can't do:: - - from raylib import * - -Instead you have to do:: - - from raylib import rl - -Then you access the functions with ``rl.`` prefix. - -See https://github.com/electronstudio/raylib-python-cffi/blob/master/dynamic/test_dynamic.py for an example. - -If you use the ``rl.`` prefix then code will work on both static and dynamic bindings. - -.. tip:: - - If you access functions via ``import pyray`` then there is no difference at all, but be warned this hasn't been tested much. - -.. note:: - - Standard Raylib DLLs do not include additional libraries like Raygui, Physac, etc. So these functions won't work. - -.. important:: - - If your system already has the Raylib library installed, you can set the environment variable ``USE_EXTERNAL_RAYLIB`` and it will - always be used instead of the bundled DLLs. diff --git a/dynamic/examples b/dynamic/examples deleted file mode 120000 index a6573af..0000000 --- a/dynamic/examples +++ /dev/null @@ -1 +0,0 @@ -../examples \ No newline at end of file diff --git a/dynamic/pyray b/dynamic/pyray deleted file mode 120000 index 1c38922..0000000 --- a/dynamic/pyray +++ /dev/null @@ -1 +0,0 @@ -../pyray \ No newline at end of file diff --git a/dynamic/raylib/__init__.py b/dynamic/raylib/__init__.py deleted file mode 100644 index 75ab2d6..0000000 --- a/dynamic/raylib/__init__.py +++ /dev/null @@ -1,87 +0,0 @@ -""" -This is an attempt at a CFFI dynamic (ABI) binding. It was failing in the exactly same place the ctypes binding fails, accessing -materials of a model. But now it __seems__ to work -""" - -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -from cffi import FFI -import itertools -import os -import pathlib -import platform -import logging -from .version import __version__ - -logger = logging.getLogger(__name__) -MODULE = pathlib.Path(__file__).parent - -def raylib_library_path(): - '''Return the full path of the raylib shared library - If the environment variable "USE_EXTERNAL_RAYLIB" is set (no value required) - then the library will be loaded from the system library paths. - ''' - def so_path(): - return str(MODULE) if not 'USE_EXTERNAL_RAYLIB' in os.environ else '' - def so_name(): - '''Returns the appropriate for the library on the current platform.''' - lib_filenames = { - 'Windows': 'raylib.dll', - 'Linux': 'libraylib.so', - 'Darwin': 'libraylib.dylib', - } - if platform.system() not in lib_filenames: - raise ValueError('Unrecognised system "{}"'.format(platform.system())) - return lib_filenames.get(platform.system()) - - return os.path.join(so_path(), so_name()) - - -ffi = FFI() -ffi.cdef(open(MODULE / "raylib_modified.h").read().replace('RLAPI ', '')) - -try: - raylib_fname = raylib_library_path() - rl = ffi.dlopen(raylib_fname) - logger.warning('LOADED DYNAMICALLY SHARED LIB {} {}'.format(__version__, raylib_fname)) -except Exception as e: - logger.exception(e) - -LIGHTGRAY =( 200, 200, 200, 255 ) -GRAY =( 130, 130, 130, 255 ) -DARKGRAY =( 80, 80, 80, 255 ) -YELLOW =( 253, 249, 0, 255 ) -GOLD =( 255, 203, 0, 255 ) -ORANGE =( 255, 161, 0, 255 ) -PINK =( 255, 109, 194, 255 ) -RED =( 230, 41, 55, 255 ) -MAROON =( 190, 33, 55, 255 ) -GREEN =( 0, 228, 48, 255 ) -LIME =( 0, 158, 47, 255 ) -DARKGREEN =( 0, 117, 44, 255 ) -SKYBLUE =( 102, 191, 255, 255 ) -BLUE =( 0, 121, 241, 255 ) -DARKBLUE =( 0, 82, 172, 255 ) -PURPLE =( 200, 122, 255, 255 ) -VIOLET =( 135, 60, 190, 255 ) -DARKPURPLE =( 112, 31, 126, 255 ) -BEIGE =( 211, 176, 131, 255 ) -BROWN =( 127, 106, 79, 255 ) -DARKBROWN =( 76, 63, 47, 255 ) -WHITE =( 255, 255, 255, 255 ) -BLACK =( 0, 0, 0, 255 ) -BLANK =( 0, 0, 0, 0 ) -MAGENTA =( 255, 0, 255, 255 ) -RAYWHITE =( 245, 245, 245, 255 ) diff --git a/dynamic/raylib/__init__.pyi b/dynamic/raylib/__init__.pyi deleted file mode 100644 index c1b492f..0000000 --- a/dynamic/raylib/__init__.pyi +++ /dev/null @@ -1,4423 +0,0 @@ -from typing import Any -from warnings import deprecated -import _cffi_backend # type: ignore - -ffi: _cffi_backend.FFI -rl: _cffi_backend.Lib -PhysicsShapeType = int - -class struct: ... - - -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'.""" - ... -def AttachAudioStreamProcessor(stream: AudioStream|list|tuple,processor: Any,) -> None: - """Attach audio stream processor to stream, receives the samples as 'float'.""" - ... -BACKGROUND_COLOR: int -BASE_COLOR_DISABLED: int -BASE_COLOR_FOCUSED: int -BASE_COLOR_NORMAL: int -BASE_COLOR_PRESSED: int -BLEND_ADDITIVE: int -BLEND_ADD_COLORS: int -BLEND_ALPHA: int -BLEND_ALPHA_PREMULTIPLY: int -BLEND_CUSTOM: int -BLEND_CUSTOM_SEPARATE: int -BLEND_MULTIPLIED: int -BLEND_SUBTRACT_COLORS: int -BORDER_COLOR_DISABLED: int -BORDER_COLOR_FOCUSED: int -BORDER_COLOR_NORMAL: int -BORDER_COLOR_PRESSED: int -BORDER_WIDTH: int -BUTTON: int -def BeginBlendMode(mode: int,) -> None: - """Begin blending mode (alpha, additive, multiplied, subtract, custom).""" - ... -def BeginDrawing() -> None: - """Setup canvas (framebuffer) to start drawing.""" - ... -def BeginMode2D(camera: Camera2D|list|tuple,) -> None: - """Begin 2D mode with custom camera (2D).""" - ... -def BeginMode3D(camera: Camera3D|list|tuple,) -> None: - """Begin 3D mode with custom camera (3D).""" - ... -def BeginScissorMode(x: int,y: int,width: int,height: int,) -> None: - """Begin scissor mode (define screen area for following drawing).""" - ... -def BeginShaderMode(shader: Shader|list|tuple,) -> None: - """Begin custom shader drawing.""" - ... -def BeginTextureMode(target: RenderTexture|list|tuple,) -> None: - """Begin drawing to render texture.""" - ... -def BeginVrStereoMode(config: VrStereoConfig|list|tuple,) -> None: - """Begin stereo rendering (requires VR simulator).""" - ... -CAMERA_CUSTOM: int -CAMERA_FIRST_PERSON: int -CAMERA_FREE: int -CAMERA_ORBITAL: int -CAMERA_ORTHOGRAPHIC: int -CAMERA_PERSPECTIVE: int -CAMERA_THIRD_PERSON: int -CHECKBOX: int -CHECK_PADDING: int -COLORPICKER: int -COLOR_SELECTOR_SIZE: int -COMBOBOX: int -COMBO_BUTTON_SPACING: int -COMBO_BUTTON_WIDTH: int -CUBEMAP_LAYOUT_AUTO_DETECT: int -CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE: int -CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR: int -CUBEMAP_LAYOUT_LINE_HORIZONTAL: int -CUBEMAP_LAYOUT_LINE_VERTICAL: int -def ChangeDirectory(dir: bytes,) -> bool: - """Change working directory, return true on success.""" - ... -def CheckCollisionBoxSphere(box: BoundingBox|list|tuple,center: Vector3|list|tuple,radius: float,) -> bool: - """Check collision between box and sphere.""" - ... -def CheckCollisionBoxes(box1: BoundingBox|list|tuple,box2: BoundingBox|list|tuple,) -> bool: - """Check collision between two bounding boxes.""" - ... -def CheckCollisionCircleLine(center: Vector2|list|tuple,radius: float,p1: Vector2|list|tuple,p2: Vector2|list|tuple,) -> bool: - """Check if circle collides with a line created betweeen two points [p1] and [p2].""" - ... -def CheckCollisionCircleRec(center: Vector2|list|tuple,radius: float,rec: Rectangle|list|tuple,) -> bool: - """Check collision between circle and rectangle.""" - ... -def CheckCollisionCircles(center1: Vector2|list|tuple,radius1: float,center2: Vector2|list|tuple,radius2: float,) -> bool: - """Check collision between two circles.""" - ... -def CheckCollisionLines(startPos1: Vector2|list|tuple,endPos1: Vector2|list|tuple,startPos2: Vector2|list|tuple,endPos2: Vector2|list|tuple,collisionPoint: Any|list|tuple,) -> bool: - """Check the collision between two lines defined by two points each, returns collision point by reference.""" - ... -def CheckCollisionPointCircle(point: Vector2|list|tuple,center: Vector2|list|tuple,radius: float,) -> bool: - """Check if point is inside circle.""" - ... -def CheckCollisionPointLine(point: Vector2|list|tuple,p1: Vector2|list|tuple,p2: Vector2|list|tuple,threshold: int,) -> bool: - """Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold].""" - ... -def CheckCollisionPointPoly(point: Vector2|list|tuple,points: Any|list|tuple,pointCount: int,) -> bool: - """Check if point is within a polygon described by array of vertices.""" - ... -def CheckCollisionPointRec(point: Vector2|list|tuple,rec: Rectangle|list|tuple,) -> bool: - """Check if point is inside rectangle.""" - ... -def CheckCollisionPointTriangle(point: Vector2|list|tuple,p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,) -> bool: - """Check if point is inside a triangle.""" - ... -def CheckCollisionRecs(rec1: Rectangle|list|tuple,rec2: Rectangle|list|tuple,) -> bool: - """Check collision between two rectangles.""" - ... -def CheckCollisionSpheres(center1: Vector3|list|tuple,radius1: float,center2: Vector3|list|tuple,radius2: float,) -> bool: - """Check collision between two spheres.""" - ... -def Clamp(value: float,min_1: float,max_2: float,) -> float: - """.""" - ... -def ClearBackground(color: Color|list|tuple,) -> None: - """Set background color (framebuffer clear color).""" - ... -def ClearWindowState(flags: int,) -> None: - """Clear window configuration state flags.""" - ... -def CloseAudioDevice() -> None: - """Close the audio device and context.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def ClosePhysics() -> None: - """Unitializes physics pointers and closes physics loop thread.""" - ... -def CloseWindow() -> None: - """Close window and unload OpenGL context.""" - ... -def CodepointToUTF8(codepoint: int,utf8Size: Any,) -> bytes: - """Encode one codepoint into UTF-8 byte array (array length returned as parameter).""" - ... -def ColorAlpha(color: Color|list|tuple,alpha: float,) -> Color: - """Get color with alpha applied, alpha goes from 0.0f to 1.0f.""" - ... -def ColorAlphaBlend(dst: Color|list|tuple,src: Color|list|tuple,tint: Color|list|tuple,) -> Color: - """Get src alpha-blended into dst color with tint.""" - ... -def ColorBrightness(color: Color|list|tuple,factor: float,) -> Color: - """Get color with brightness correction, brightness factor goes from -1.0f to 1.0f.""" - ... -def ColorContrast(color: Color|list|tuple,contrast: float,) -> Color: - """Get color with contrast correction, contrast values between -1.0f and 1.0f.""" - ... -def ColorFromHSV(hue: float,saturation: float,value: float,) -> Color: - """Get a Color from HSV values, hue [0..360], saturation/value [0..1].""" - ... -def ColorFromNormalized(normalized: Vector4|list|tuple,) -> Color: - """Get Color from normalized values [0..1].""" - ... -def ColorIsEqual(col1: Color|list|tuple,col2: Color|list|tuple,) -> bool: - """Check if two colors are equal.""" - ... -def ColorLerp(color1: Color|list|tuple,color2: Color|list|tuple,factor: float,) -> Color: - """Get color lerp interpolation between two colors, factor [0.0f..1.0f].""" - ... -def ColorNormalize(color: Color|list|tuple,) -> Vector4: - """Get Color normalized as float [0..1].""" - ... -def ColorTint(color: Color|list|tuple,tint: Color|list|tuple,) -> Color: - """Get color multiplied with another color.""" - ... -def ColorToHSV(color: Color|list|tuple,) -> Vector3: - """Get HSV values for a Color, hue [0..360], saturation/value [0..1].""" - ... -def ColorToInt(color: Color|list|tuple,) -> int: - """Get hexadecimal value for a Color (0xRRGGBBAA).""" - ... -def CompressData(data: bytes,dataSize: int,compDataSize: Any,) -> bytes: - """Compress data (DEFLATE algorithm), memory must be MemFree().""" - ... -def ComputeCRC32(data: bytes,dataSize: int,) -> int: - """Compute CRC32 hash code.""" - ... -def ComputeMD5(data: bytes,dataSize: int,) -> Any: - """Compute MD5 hash code, returns static int[4] (16 bytes).""" - ... -def ComputeSHA1(data: bytes,dataSize: int,) -> Any: - """Compute SHA1 hash code, returns static int[5] (20 bytes).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def CreatePhysicsBodyCircle(pos: Vector2|list|tuple,radius: float,density: float,) -> Any: - """Creates a new circle physics body with generic parameters.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def CreatePhysicsBodyPolygon(pos: Vector2|list|tuple,radius: float,sides: int,density: float,) -> Any: - """Creates a new polygon physics body with generic parameters.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def CreatePhysicsBodyRectangle(pos: Vector2|list|tuple,width: float,height: float,density: float,) -> Any: - """Creates a new rectangle physics body with generic parameters.""" - ... -DEFAULT: int -DROPDOWNBOX: int -DROPDOWN_ARROW_HIDDEN: int -DROPDOWN_ITEMS_SPACING: int -DROPDOWN_ROLL_UP: int -def DecodeDataBase64(data: bytes,outputSize: Any,) -> bytes: - """Decode Base64 string data, memory must be MemFree().""" - ... -def DecompressData(compData: bytes,compDataSize: int,dataSize: Any,) -> bytes: - """Decompress data (DEFLATE algorithm), memory must be MemFree().""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def DestroyPhysicsBody(body: Any|list|tuple,) -> None: - """Unitializes and destroy a physics body.""" - ... -def DetachAudioMixedProcessor(processor: Any,) -> None: - """Detach audio stream processor from the entire audio pipeline.""" - ... -def DetachAudioStreamProcessor(stream: AudioStream|list|tuple,processor: Any,) -> None: - """Detach audio stream processor from stream.""" - ... -def DirectoryExists(dirPath: bytes,) -> bool: - """Check if a directory path exists.""" - ... -def DisableCursor() -> None: - """Disables cursor (lock cursor).""" - ... -def DisableEventWaiting() -> None: - """Disable waiting for events on EndDrawing(), automatic events polling.""" - ... -def DrawBillboard(camera: Camera3D|list|tuple,texture: Texture|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a billboard texture.""" - ... -def DrawBillboardPro(camera: Camera3D|list|tuple,texture: Texture|list|tuple,source: Rectangle|list|tuple,position: Vector3|list|tuple,up: Vector3|list|tuple,size: Vector2|list|tuple,origin: Vector2|list|tuple,rotation: float,tint: Color|list|tuple,) -> None: - """Draw a billboard texture defined by source and rotation.""" - ... -def DrawBillboardRec(camera: Camera3D|list|tuple,texture: Texture|list|tuple,source: Rectangle|list|tuple,position: Vector3|list|tuple,size: Vector2|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a billboard texture defined by source.""" - ... -def DrawBoundingBox(box: BoundingBox|list|tuple,color: Color|list|tuple,) -> None: - """Draw bounding box (wires).""" - ... -def DrawCapsule(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,radius: float,slices: int,rings: int,color: Color|list|tuple,) -> None: - """Draw a capsule with the center of its sphere caps at startPos and endPos.""" - ... -def DrawCapsuleWires(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,radius: float,slices: int,rings: int,color: Color|list|tuple,) -> None: - """Draw capsule wireframe with the center of its sphere caps at startPos and endPos.""" - ... -def DrawCircle(centerX: int,centerY: int,radius: float,color: Color|list|tuple,) -> None: - """Draw a color-filled circle.""" - ... -def DrawCircle3D(center: Vector3|list|tuple,radius: float,rotationAxis: Vector3|list|tuple,rotationAngle: float,color: Color|list|tuple,) -> None: - """Draw a circle in 3D world space.""" - ... -def DrawCircleGradient(centerX: int,centerY: int,radius: float,inner: Color|list|tuple,outer: Color|list|tuple,) -> None: - """Draw a gradient-filled circle.""" - ... -def DrawCircleLines(centerX: int,centerY: int,radius: float,color: Color|list|tuple,) -> None: - """Draw circle outline.""" - ... -def DrawCircleLinesV(center: Vector2|list|tuple,radius: float,color: Color|list|tuple,) -> None: - """Draw circle outline (Vector version).""" - ... -def DrawCircleSector(center: Vector2|list|tuple,radius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw a piece of a circle.""" - ... -def DrawCircleSectorLines(center: Vector2|list|tuple,radius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw circle sector outline.""" - ... -def DrawCircleV(center: Vector2|list|tuple,radius: float,color: Color|list|tuple,) -> None: - """Draw a color-filled circle (Vector version).""" - ... -def DrawCube(position: Vector3|list|tuple,width: float,height: float,length: float,color: Color|list|tuple,) -> None: - """Draw cube.""" - ... -def DrawCubeV(position: Vector3|list|tuple,size: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw cube (Vector version).""" - ... -def DrawCubeWires(position: Vector3|list|tuple,width: float,height: float,length: float,color: Color|list|tuple,) -> None: - """Draw cube wires.""" - ... -def DrawCubeWiresV(position: Vector3|list|tuple,size: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw cube wires (Vector version).""" - ... -def DrawCylinder(position: Vector3|list|tuple,radiusTop: float,radiusBottom: float,height: float,slices: int,color: Color|list|tuple,) -> None: - """Draw a cylinder/cone.""" - ... -def DrawCylinderEx(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,startRadius: float,endRadius: float,sides: int,color: Color|list|tuple,) -> None: - """Draw a cylinder with base at startPos and top at endPos.""" - ... -def DrawCylinderWires(position: Vector3|list|tuple,radiusTop: float,radiusBottom: float,height: float,slices: int,color: Color|list|tuple,) -> None: - """Draw a cylinder/cone wires.""" - ... -def DrawCylinderWiresEx(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,startRadius: float,endRadius: float,sides: int,color: Color|list|tuple,) -> None: - """Draw a cylinder wires with base at startPos and top at endPos.""" - ... -def DrawEllipse(centerX: int,centerY: int,radiusH: float,radiusV: float,color: Color|list|tuple,) -> None: - """Draw ellipse.""" - ... -def DrawEllipseLines(centerX: int,centerY: int,radiusH: float,radiusV: float,color: Color|list|tuple,) -> None: - """Draw ellipse outline.""" - ... -def DrawFPS(posX: int,posY: int,) -> None: - """Draw current FPS.""" - ... -def DrawGrid(slices: int,spacing: float,) -> None: - """Draw a grid (centered at (0, 0, 0)).""" - ... -def DrawLine(startPosX: int,startPosY: int,endPosX: int,endPosY: int,color: Color|list|tuple,) -> None: - """Draw a line.""" - ... -def DrawLine3D(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw a line in 3D world space.""" - ... -def DrawLineBezier(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw line segment cubic-bezier in-out interpolation.""" - ... -def DrawLineEx(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw a line (using triangles/quads).""" - ... -def DrawLineStrip(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw lines sequence (using gl lines).""" - ... -def DrawLineV(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a line (using gl lines).""" - ... -def DrawMesh(mesh: Mesh|list|tuple,material: Material|list|tuple,transform: Matrix|list|tuple,) -> None: - """Draw a 3d mesh with material and transform.""" - ... -def DrawMeshInstanced(mesh: Mesh|list|tuple,material: Material|list|tuple,transforms: Any|list|tuple,instances: int,) -> None: - """Draw multiple mesh instances with material and different transforms.""" - ... -def DrawModel(model: Model|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a model (with texture if set).""" - ... -def DrawModelEx(model: Model|list|tuple,position: Vector3|list|tuple,rotationAxis: Vector3|list|tuple,rotationAngle: float,scale: Vector3|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a model with extended parameters.""" - ... -def DrawModelPoints(model: Model|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a model as points.""" - ... -def DrawModelPointsEx(model: Model|list|tuple,position: Vector3|list|tuple,rotationAxis: Vector3|list|tuple,rotationAngle: float,scale: Vector3|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a model as points with extended parameters.""" - ... -def DrawModelWires(model: Model|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a model wires (with texture if set).""" - ... -def DrawModelWiresEx(model: Model|list|tuple,position: Vector3|list|tuple,rotationAxis: Vector3|list|tuple,rotationAngle: float,scale: Vector3|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a model wires (with texture if set) with extended parameters.""" - ... -def DrawPixel(posX: int,posY: int,color: Color|list|tuple,) -> None: - """Draw a pixel using geometry [Can be slow, use with care].""" - ... -def DrawPixelV(position: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a pixel using geometry (Vector version) [Can be slow, use with care].""" - ... -def DrawPlane(centerPos: Vector3|list|tuple,size: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a plane XZ.""" - ... -def DrawPoint3D(position: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw a point in 3D space, actually a small line.""" - ... -def DrawPoly(center: Vector2|list|tuple,sides: int,radius: float,rotation: float,color: Color|list|tuple,) -> None: - """Draw a regular polygon (Vector version).""" - ... -def DrawPolyLines(center: Vector2|list|tuple,sides: int,radius: float,rotation: float,color: Color|list|tuple,) -> None: - """Draw a polygon outline of n sides.""" - ... -def DrawPolyLinesEx(center: Vector2|list|tuple,sides: int,radius: float,rotation: float,lineThick: float,color: Color|list|tuple,) -> None: - """Draw a polygon outline of n sides with extended parameters.""" - ... -def DrawRay(ray: Ray|list|tuple,color: Color|list|tuple,) -> None: - """Draw a ray line.""" - ... -def DrawRectangle(posX: int,posY: int,width: int,height: int,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle.""" - ... -def DrawRectangleGradientEx(rec: Rectangle|list|tuple,topLeft: Color|list|tuple,bottomLeft: Color|list|tuple,topRight: Color|list|tuple,bottomRight: Color|list|tuple,) -> None: - """Draw a gradient-filled rectangle with custom vertex colors.""" - ... -def DrawRectangleGradientH(posX: int,posY: int,width: int,height: int,left: Color|list|tuple,right: Color|list|tuple,) -> None: - """Draw a horizontal-gradient-filled rectangle.""" - ... -def DrawRectangleGradientV(posX: int,posY: int,width: int,height: int,top: Color|list|tuple,bottom: Color|list|tuple,) -> None: - """Draw a vertical-gradient-filled rectangle.""" - ... -def DrawRectangleLines(posX: int,posY: int,width: int,height: int,color: Color|list|tuple,) -> None: - """Draw rectangle outline.""" - ... -def DrawRectangleLinesEx(rec: Rectangle|list|tuple,lineThick: float,color: Color|list|tuple,) -> None: - """Draw rectangle outline with extended parameters.""" - ... -def DrawRectanglePro(rec: Rectangle|list|tuple,origin: Vector2|list|tuple,rotation: float,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle with pro parameters.""" - ... -def DrawRectangleRec(rec: Rectangle|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle.""" - ... -def DrawRectangleRounded(rec: Rectangle|list|tuple,roundness: float,segments: int,color: Color|list|tuple,) -> None: - """Draw rectangle with rounded edges.""" - ... -def DrawRectangleRoundedLines(rec: Rectangle|list|tuple,roundness: float,segments: int,color: Color|list|tuple,) -> None: - """Draw rectangle lines with rounded edges.""" - ... -def DrawRectangleRoundedLinesEx(rec: Rectangle|list|tuple,roundness: float,segments: int,lineThick: float,color: Color|list|tuple,) -> None: - """Draw rectangle with rounded edges outline.""" - ... -def DrawRectangleV(position: Vector2|list|tuple,size: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle (Vector version).""" - ... -def DrawRing(center: Vector2|list|tuple,innerRadius: float,outerRadius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw ring.""" - ... -def DrawRingLines(center: Vector2|list|tuple,innerRadius: float,outerRadius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw ring outline.""" - ... -def DrawSphere(centerPos: Vector3|list|tuple,radius: float,color: Color|list|tuple,) -> None: - """Draw sphere.""" - ... -def DrawSphereEx(centerPos: Vector3|list|tuple,radius: float,rings: int,slices: int,color: Color|list|tuple,) -> None: - """Draw sphere with extended parameters.""" - ... -def DrawSphereWires(centerPos: Vector3|list|tuple,radius: float,rings: int,slices: int,color: Color|list|tuple,) -> None: - """Draw sphere wires.""" - ... -def DrawSplineBasis(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: B-Spline, minimum 4 points.""" - ... -def DrawSplineBezierCubic(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...].""" - ... -def DrawSplineBezierQuadratic(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...].""" - ... -def DrawSplineCatmullRom(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Catmull-Rom, minimum 4 points.""" - ... -def DrawSplineLinear(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Linear, minimum 2 points.""" - ... -def DrawSplineSegmentBasis(p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: B-Spline, 4 points.""" - ... -def DrawSplineSegmentBezierCubic(p1: Vector2|list|tuple,c2: Vector2|list|tuple,c3: Vector2|list|tuple,p4: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Cubic Bezier, 2 points, 2 control points.""" - ... -def DrawSplineSegmentBezierQuadratic(p1: Vector2|list|tuple,c2: Vector2|list|tuple,p3: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Quadratic Bezier, 2 points, 1 control point.""" - ... -def DrawSplineSegmentCatmullRom(p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Catmull-Rom, 4 points.""" - ... -def DrawSplineSegmentLinear(p1: Vector2|list|tuple,p2: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Linear, 2 points.""" - ... -def DrawText(text: bytes,posX: int,posY: int,fontSize: int,color: Color|list|tuple,) -> None: - """Draw text (using default font).""" - ... -def DrawTextCodepoint(font: Font|list|tuple,codepoint: int,position: Vector2|list|tuple,fontSize: float,tint: Color|list|tuple,) -> None: - """Draw one character (codepoint).""" - ... -def DrawTextCodepoints(font: Font|list|tuple,codepoints: Any,codepointCount: int,position: Vector2|list|tuple,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw multiple character (codepoint).""" - ... -def DrawTextEx(font: Font|list|tuple,text: bytes,position: Vector2|list|tuple,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw text using font and additional parameters.""" - ... -def DrawTextPro(font: Font|list|tuple,text: bytes,position: Vector2|list|tuple,origin: Vector2|list|tuple,rotation: float,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw text using Font and pro parameters (rotation).""" - ... -def DrawTexture(texture: Texture|list|tuple,posX: int,posY: int,tint: Color|list|tuple,) -> None: - """Draw a Texture2D.""" - ... -def DrawTextureEx(texture: Texture|list|tuple,position: Vector2|list|tuple,rotation: float,scale: float,tint: Color|list|tuple,) -> None: - """Draw a Texture2D with extended parameters.""" - ... -def DrawTextureNPatch(texture: Texture|list|tuple,nPatchInfo: NPatchInfo|list|tuple,dest: Rectangle|list|tuple,origin: Vector2|list|tuple,rotation: float,tint: Color|list|tuple,) -> None: - """Draws a texture (or part of it) that stretches or shrinks nicely.""" - ... -def DrawTexturePro(texture: Texture|list|tuple,source: Rectangle|list|tuple,dest: Rectangle|list|tuple,origin: Vector2|list|tuple,rotation: float,tint: Color|list|tuple,) -> None: - """Draw a part of a texture defined by a rectangle with 'pro' parameters.""" - ... -def DrawTextureRec(texture: Texture|list|tuple,source: Rectangle|list|tuple,position: Vector2|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a part of a texture defined by a rectangle.""" - ... -def DrawTextureV(texture: Texture|list|tuple,position: Vector2|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a Texture2D with position defined as Vector2.""" - ... -def DrawTriangle(v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled triangle (vertex in counter-clockwise order!).""" - ... -def DrawTriangle3D(v1: Vector3|list|tuple,v2: Vector3|list|tuple,v3: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled triangle (vertex in counter-clockwise order!).""" - ... -def DrawTriangleFan(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle fan defined by points (first vertex is the center).""" - ... -def DrawTriangleLines(v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw triangle outline (vertex in counter-clockwise order!).""" - ... -def DrawTriangleStrip(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle strip defined by points.""" - ... -def DrawTriangleStrip3D(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle strip defined by points.""" - ... -def EnableCursor() -> None: - """Enables cursor (unlock cursor).""" - ... -def EnableEventWaiting() -> None: - """Enable waiting for events on EndDrawing(), no automatic event polling.""" - ... -def EncodeDataBase64(data: bytes,dataSize: int,outputSize: Any,) -> bytes: - """Encode data to Base64 string, memory must be MemFree().""" - ... -def EndBlendMode() -> None: - """End blending mode (reset to default: alpha blending).""" - ... -def EndDrawing() -> None: - """End canvas drawing and swap buffers (double buffering).""" - ... -def EndMode2D() -> None: - """Ends 2D mode with custom camera.""" - ... -def EndMode3D() -> None: - """Ends 3D mode and returns to default 2D orthographic mode.""" - ... -def EndScissorMode() -> None: - """End scissor mode.""" - ... -def EndShaderMode() -> None: - """End custom shader drawing (use default shader).""" - ... -def EndTextureMode() -> None: - """Ends drawing to render texture.""" - ... -def EndVrStereoMode() -> None: - """End stereo rendering (requires VR simulator).""" - ... -def ExportAutomationEventList(list_0: AutomationEventList|list|tuple,fileName: bytes,) -> bool: - """Export automation events list as text file.""" - ... -def ExportDataAsCode(data: bytes,dataSize: int,fileName: bytes,) -> bool: - """Export data to code (.h), returns true on success.""" - ... -def ExportFontAsCode(font: Font|list|tuple,fileName: bytes,) -> bool: - """Export font as code file, returns true on success.""" - ... -def ExportImage(image: Image|list|tuple,fileName: bytes,) -> bool: - """Export image data to file, returns true on success.""" - ... -def ExportImageAsCode(image: Image|list|tuple,fileName: bytes,) -> bool: - """Export image as code file defining an array of bytes, returns true on success.""" - ... -def ExportImageToMemory(image: Image|list|tuple,fileType: bytes,fileSize: Any,) -> bytes: - """Export image to memory buffer.""" - ... -def ExportMesh(mesh: Mesh|list|tuple,fileName: bytes,) -> bool: - """Export mesh data to file, returns true on success.""" - ... -def ExportMeshAsCode(mesh: Mesh|list|tuple,fileName: bytes,) -> bool: - """Export mesh as code file (.h) defining multiple arrays of vertex attributes.""" - ... -def ExportWave(wave: Wave|list|tuple,fileName: bytes,) -> bool: - """Export wave data to file, returns true on success.""" - ... -def ExportWaveAsCode(wave: Wave|list|tuple,fileName: bytes,) -> bool: - """Export wave sample data to code (.h), returns true on success.""" - ... -FLAG_BORDERLESS_WINDOWED_MODE: int -FLAG_FULLSCREEN_MODE: int -FLAG_INTERLACED_HINT: int -FLAG_MSAA_4X_HINT: int -FLAG_VSYNC_HINT: int -FLAG_WINDOW_ALWAYS_RUN: int -FLAG_WINDOW_HIDDEN: int -FLAG_WINDOW_HIGHDPI: int -FLAG_WINDOW_MAXIMIZED: int -FLAG_WINDOW_MINIMIZED: int -FLAG_WINDOW_MOUSE_PASSTHROUGH: int -FLAG_WINDOW_RESIZABLE: int -FLAG_WINDOW_TOPMOST: int -FLAG_WINDOW_TRANSPARENT: int -FLAG_WINDOW_UNDECORATED: int -FLAG_WINDOW_UNFOCUSED: int -FONT_BITMAP: int -FONT_DEFAULT: int -FONT_SDF: int -def Fade(color: Color|list|tuple,alpha: float,) -> Color: - """Get color with alpha applied, alpha goes from 0.0f to 1.0f.""" - ... -def FileExists(fileName: bytes,) -> bool: - """Check if file exists.""" - ... -def FloatEquals(x: float,y: float,) -> int: - """.""" - ... -GAMEPAD_AXIS_LEFT_TRIGGER: int -GAMEPAD_AXIS_LEFT_X: int -GAMEPAD_AXIS_LEFT_Y: int -GAMEPAD_AXIS_RIGHT_TRIGGER: int -GAMEPAD_AXIS_RIGHT_X: int -GAMEPAD_AXIS_RIGHT_Y: int -GAMEPAD_BUTTON_LEFT_FACE_DOWN: int -GAMEPAD_BUTTON_LEFT_FACE_LEFT: int -GAMEPAD_BUTTON_LEFT_FACE_RIGHT: int -GAMEPAD_BUTTON_LEFT_FACE_UP: int -GAMEPAD_BUTTON_LEFT_THUMB: int -GAMEPAD_BUTTON_LEFT_TRIGGER_1: int -GAMEPAD_BUTTON_LEFT_TRIGGER_2: int -GAMEPAD_BUTTON_MIDDLE: int -GAMEPAD_BUTTON_MIDDLE_LEFT: int -GAMEPAD_BUTTON_MIDDLE_RIGHT: int -GAMEPAD_BUTTON_RIGHT_FACE_DOWN: int -GAMEPAD_BUTTON_RIGHT_FACE_LEFT: int -GAMEPAD_BUTTON_RIGHT_FACE_RIGHT: int -GAMEPAD_BUTTON_RIGHT_FACE_UP: int -GAMEPAD_BUTTON_RIGHT_THUMB: int -GAMEPAD_BUTTON_RIGHT_TRIGGER_1: int -GAMEPAD_BUTTON_RIGHT_TRIGGER_2: int -GAMEPAD_BUTTON_UNKNOWN: int -GESTURE_DOUBLETAP: int -GESTURE_DRAG: int -GESTURE_HOLD: int -GESTURE_NONE: int -GESTURE_PINCH_IN: int -GESTURE_PINCH_OUT: int -GESTURE_SWIPE_DOWN: int -GESTURE_SWIPE_LEFT: int -GESTURE_SWIPE_RIGHT: int -GESTURE_SWIPE_UP: int -GESTURE_TAP: int -GROUP_PADDING: int -def GenImageCellular(width: int,height: int,tileSize: int,) -> Image: - """Generate image: cellular algorithm, bigger tileSize means bigger cells.""" - ... -def GenImageChecked(width: int,height: int,checksX: int,checksY: int,col1: Color|list|tuple,col2: Color|list|tuple,) -> Image: - """Generate image: checked.""" - ... -def GenImageColor(width: int,height: int,color: Color|list|tuple,) -> Image: - """Generate image: plain color.""" - ... -def GenImageFontAtlas(glyphs: Any|list|tuple,glyphRecs: Any|list|tuple,glyphCount: int,fontSize: int,padding: int,packMethod: int,) -> Image: - """Generate image font atlas using chars info.""" - ... -def GenImageGradientLinear(width: int,height: int,direction: int,start: Color|list|tuple,end: Color|list|tuple,) -> Image: - """Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient.""" - ... -def GenImageGradientRadial(width: int,height: int,density: float,inner: Color|list|tuple,outer: Color|list|tuple,) -> Image: - """Generate image: radial gradient.""" - ... -def GenImageGradientSquare(width: int,height: int,density: float,inner: Color|list|tuple,outer: Color|list|tuple,) -> Image: - """Generate image: square gradient.""" - ... -def GenImagePerlinNoise(width: int,height: int,offsetX: int,offsetY: int,scale: float,) -> Image: - """Generate image: perlin noise.""" - ... -def GenImageText(width: int,height: int,text: bytes,) -> Image: - """Generate image: grayscale image from text data.""" - ... -def GenImageWhiteNoise(width: int,height: int,factor: float,) -> Image: - """Generate image: white noise.""" - ... -def GenMeshCone(radius: float,height: float,slices: int,) -> Mesh: - """Generate cone/pyramid mesh.""" - ... -def GenMeshCube(width: float,height: float,length: float,) -> Mesh: - """Generate cuboid mesh.""" - ... -def GenMeshCubicmap(cubicmap: Image|list|tuple,cubeSize: Vector3|list|tuple,) -> Mesh: - """Generate cubes-based map mesh from image data.""" - ... -def GenMeshCylinder(radius: float,height: float,slices: int,) -> Mesh: - """Generate cylinder mesh.""" - ... -def GenMeshHeightmap(heightmap: Image|list|tuple,size: Vector3|list|tuple,) -> Mesh: - """Generate heightmap mesh from image data.""" - ... -def GenMeshHemiSphere(radius: float,rings: int,slices: int,) -> Mesh: - """Generate half-sphere mesh (no bottom cap).""" - ... -def GenMeshKnot(radius: float,size: float,radSeg: int,sides: int,) -> Mesh: - """Generate trefoil knot mesh.""" - ... -def GenMeshPlane(width: float,length: float,resX: int,resZ: int,) -> Mesh: - """Generate plane mesh (with subdivisions).""" - ... -def GenMeshPoly(sides: int,radius: float,) -> Mesh: - """Generate polygonal mesh.""" - ... -def GenMeshSphere(radius: float,rings: int,slices: int,) -> Mesh: - """Generate sphere mesh (standard sphere).""" - ... -def GenMeshTangents(mesh: Any|list|tuple,) -> None: - """Compute mesh tangents.""" - ... -def GenMeshTorus(radius: float,size: float,radSeg: int,sides: int,) -> Mesh: - """Generate torus mesh.""" - ... -def GenTextureMipmaps(texture: Any|list|tuple,) -> None: - """Generate GPU mipmaps for a texture.""" - ... -def GetApplicationDirectory() -> bytes: - """Get the directory of the running application (uses static string).""" - ... -def GetCameraMatrix(camera: Camera3D|list|tuple,) -> Matrix: - """Get camera transform matrix (view matrix).""" - ... -def GetCameraMatrix2D(camera: Camera2D|list|tuple,) -> Matrix: - """Get camera 2d transform matrix.""" - ... -def GetCharPressed() -> int: - """Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty.""" - ... -def GetClipboardImage() -> Image: - """Get clipboard image content.""" - ... -def GetClipboardText() -> bytes: - """Get clipboard text content.""" - ... -def GetCodepoint(text: bytes,codepointSize: Any,) -> int: - """Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure.""" - ... -def GetCodepointCount(text: bytes,) -> int: - """Get total number of codepoints in a UTF-8 encoded string.""" - ... -def GetCodepointNext(text: bytes,codepointSize: Any,) -> int: - """Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure.""" - ... -def GetCodepointPrevious(text: bytes,codepointSize: Any,) -> int: - """Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure.""" - ... -def GetCollisionRec(rec1: Rectangle|list|tuple,rec2: Rectangle|list|tuple,) -> Rectangle: - """Get collision rectangle for two rectangles collision.""" - ... -def GetColor(hexValue: int,) -> Color: - """Get Color structure from hexadecimal value.""" - ... -def GetCurrentMonitor() -> int: - """Get current monitor where window is placed.""" - ... -def GetDirectoryPath(filePath: bytes,) -> bytes: - """Get full path for a given fileName with path (uses static string).""" - ... -def GetFPS() -> int: - """Get current FPS.""" - ... -def GetFileExtension(fileName: bytes,) -> bytes: - """Get pointer to extension for a filename string (includes dot: '.png').""" - ... -def GetFileLength(fileName: bytes,) -> int: - """Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h).""" - ... -def GetFileModTime(fileName: bytes,) -> int: - """Get file modification time (last write time).""" - ... -def GetFileName(filePath: bytes,) -> bytes: - """Get pointer to filename for a path string.""" - ... -def GetFileNameWithoutExt(filePath: bytes,) -> bytes: - """Get filename string without extension (uses static string).""" - ... -def GetFontDefault() -> Font: - """Get the default Font.""" - ... -def GetFrameTime() -> float: - """Get time in seconds for last frame drawn (delta time).""" - ... -def GetGamepadAxisCount(gamepad: int,) -> int: - """Get gamepad axis count for a gamepad.""" - ... -def GetGamepadAxisMovement(gamepad: int,axis: int,) -> float: - """Get axis movement value for a gamepad axis.""" - ... -def GetGamepadButtonPressed() -> int: - """Get the last gamepad button pressed.""" - ... -def GetGamepadName(gamepad: int,) -> bytes: - """Get gamepad internal name id.""" - ... -def GetGestureDetected() -> int: - """Get latest detected gesture.""" - ... -def GetGestureDragAngle() -> float: - """Get gesture drag angle.""" - ... -def GetGestureDragVector() -> Vector2: - """Get gesture drag vector.""" - ... -def GetGestureHoldDuration() -> float: - """Get gesture hold time in seconds.""" - ... -def GetGesturePinchAngle() -> float: - """Get gesture pinch angle.""" - ... -def GetGesturePinchVector() -> Vector2: - """Get gesture pinch delta.""" - ... -def GetGlyphAtlasRec(font: Font|list|tuple,codepoint: int,) -> Rectangle: - """Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found.""" - ... -def GetGlyphIndex(font: Font|list|tuple,codepoint: int,) -> int: - """Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found.""" - ... -def GetGlyphInfo(font: Font|list|tuple,codepoint: int,) -> GlyphInfo: - """Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found.""" - ... -def GetImageAlphaBorder(image: Image|list|tuple,threshold: float,) -> Rectangle: - """Get image alpha border rectangle.""" - ... -def GetImageColor(image: Image|list|tuple,x: int,y: int,) -> Color: - """Get image pixel color at (x, y) position.""" - ... -def GetKeyPressed() -> int: - """Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty.""" - ... -def GetMasterVolume() -> float: - """Get master volume (listener).""" - ... -def GetMeshBoundingBox(mesh: Mesh|list|tuple,) -> BoundingBox: - """Compute mesh bounding box limits.""" - ... -def GetModelBoundingBox(model: Model|list|tuple,) -> BoundingBox: - """Compute model bounding box limits (considers all meshes).""" - ... -def GetMonitorCount() -> int: - """Get number of connected monitors.""" - ... -def GetMonitorHeight(monitor: int,) -> int: - """Get specified monitor height (current video mode used by monitor).""" - ... -def GetMonitorName(monitor: int,) -> bytes: - """Get the human-readable, UTF-8 encoded name of the specified monitor.""" - ... -def GetMonitorPhysicalHeight(monitor: int,) -> int: - """Get specified monitor physical height in millimetres.""" - ... -def GetMonitorPhysicalWidth(monitor: int,) -> int: - """Get specified monitor physical width in millimetres.""" - ... -def GetMonitorPosition(monitor: int,) -> Vector2: - """Get specified monitor position.""" - ... -def GetMonitorRefreshRate(monitor: int,) -> int: - """Get specified monitor refresh rate.""" - ... -def GetMonitorWidth(monitor: int,) -> int: - """Get specified monitor width (current video mode used by monitor).""" - ... -def GetMouseDelta() -> Vector2: - """Get mouse delta between frames.""" - ... -def GetMousePosition() -> Vector2: - """Get mouse position XY.""" - ... -def GetMouseWheelMove() -> float: - """Get mouse wheel movement for X or Y, whichever is larger.""" - ... -def GetMouseWheelMoveV() -> Vector2: - """Get mouse wheel movement for both X and Y.""" - ... -def GetMouseX() -> int: - """Get mouse position X.""" - ... -def GetMouseY() -> int: - """Get mouse position Y.""" - ... -def GetMusicTimeLength(music: Music|list|tuple,) -> float: - """Get music time length (in seconds).""" - ... -def GetMusicTimePlayed(music: Music|list|tuple,) -> float: - """Get current music time played (in seconds).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsBodiesCount() -> int: - """Returns the current amount of created physics bodies.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsBody(index: int,) -> Any: - """Returns a physics body of the bodies pool at a specific index.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsShapeType(index: int,) -> int: - """Returns the physics body shape type (PHYSICS_CIRCLE or PHYSICS_POLYGON).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsShapeVertex(body: Any|list|tuple,vertex: int,) -> Vector2: - """Returns transformed position of a body shape (body position + vertex transformed position).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsShapeVerticesCount(index: int,) -> int: - """Returns the amount of vertices of a physics body shape.""" - ... -def GetPixelColor(srcPtr: Any,format: int,) -> Color: - """Get Color from a source pixel pointer of certain format.""" - ... -def GetPixelDataSize(width: int,height: int,format: int,) -> int: - """Get pixel data size in bytes for certain format.""" - ... -def GetPrevDirectoryPath(dirPath: bytes,) -> bytes: - """Get previous directory path for a given path (uses static string).""" - ... -def GetRandomValue(min_0: int,max_1: int,) -> int: - """Get a random value between min and max (both included).""" - ... -def GetRayCollisionBox(ray: Ray|list|tuple,box: BoundingBox|list|tuple,) -> RayCollision: - """Get collision info between ray and box.""" - ... -def GetRayCollisionMesh(ray: Ray|list|tuple,mesh: Mesh|list|tuple,transform: Matrix|list|tuple,) -> RayCollision: - """Get collision info between ray and mesh.""" - ... -def GetRayCollisionQuad(ray: Ray|list|tuple,p1: Vector3|list|tuple,p2: Vector3|list|tuple,p3: Vector3|list|tuple,p4: Vector3|list|tuple,) -> RayCollision: - """Get collision info between ray and quad.""" - ... -def GetRayCollisionSphere(ray: Ray|list|tuple,center: Vector3|list|tuple,radius: float,) -> RayCollision: - """Get collision info between ray and sphere.""" - ... -def GetRayCollisionTriangle(ray: Ray|list|tuple,p1: Vector3|list|tuple,p2: Vector3|list|tuple,p3: Vector3|list|tuple,) -> RayCollision: - """Get collision info between ray and triangle.""" - ... -def GetRenderHeight() -> int: - """Get current render height (it considers HiDPI).""" - ... -def GetRenderWidth() -> int: - """Get current render width (it considers HiDPI).""" - ... -def GetScreenHeight() -> int: - """Get current screen height.""" - ... -def GetScreenToWorld2D(position: Vector2|list|tuple,camera: Camera2D|list|tuple,) -> Vector2: - """Get the world space position for a 2d camera screen space position.""" - ... -def GetScreenToWorldRay(position: Vector2|list|tuple,camera: Camera3D|list|tuple,) -> Ray: - """Get a ray trace from screen position (i.e mouse).""" - ... -def GetScreenToWorldRayEx(position: Vector2|list|tuple,camera: Camera3D|list|tuple,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.""" - ... -def GetShaderLocation(shader: Shader|list|tuple,uniformName: bytes,) -> int: - """Get shader uniform location.""" - ... -def GetShaderLocationAttrib(shader: Shader|list|tuple,attribName: bytes,) -> 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|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: B-Spline.""" - ... -def GetSplinePointBezierCubic(p1: Vector2|list|tuple,c2: Vector2|list|tuple,c3: Vector2|list|tuple,p4: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Cubic Bezier.""" - ... -def GetSplinePointBezierQuad(p1: Vector2|list|tuple,c2: Vector2|list|tuple,p3: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Quadratic Bezier.""" - ... -def GetSplinePointCatmullRom(p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Catmull-Rom.""" - ... -def GetSplinePointLinear(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Linear.""" - ... -def GetTime() -> float: - """Get elapsed time in seconds since InitWindow().""" - ... -def GetTouchPointCount() -> int: - """Get number of touch points.""" - ... -def GetTouchPointId(index: int,) -> int: - """Get touch point identifier for given index.""" - ... -def GetTouchPosition(index: int,) -> Vector2: - """Get touch position XY for a touch point index (relative to screen size).""" - ... -def GetTouchX() -> int: - """Get touch position X for touch point 0 (relative to screen size).""" - ... -def GetTouchY() -> int: - """Get touch position Y for touch point 0 (relative to screen size).""" - ... -def GetWindowHandle() -> Any: - """Get native window handle.""" - ... -def GetWindowPosition() -> Vector2: - """Get window position XY on monitor.""" - ... -def GetWindowScaleDPI() -> Vector2: - """Get window scale DPI factor.""" - ... -def GetWorkingDirectory() -> bytes: - """Get current working directory (uses static string).""" - ... -def GetWorldToScreen(position: Vector3|list|tuple,camera: Camera3D|list|tuple,) -> Vector2: - """Get the screen space position for a 3d world space position.""" - ... -def GetWorldToScreen2D(position: Vector2|list|tuple,camera: Camera2D|list|tuple,) -> Vector2: - """Get the screen space position for a 2d camera world space position.""" - ... -def GetWorldToScreenEx(position: Vector3|list|tuple,camera: Camera3D|list|tuple,width: int,height: int,) -> Vector2: - """Get size position for a 3d world space position.""" - ... -def GuiButton(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Button control, returns true when clicked.""" - ... -def GuiCheckBox(bounds: Rectangle|list|tuple,text: bytes,checked: Any,) -> int: - """Check Box control, returns true when active.""" - ... -def GuiColorBarAlpha(bounds: Rectangle|list|tuple,text: bytes,alpha: Any,) -> int: - """Color Bar Alpha control.""" - ... -def GuiColorBarHue(bounds: Rectangle|list|tuple,text: bytes,value: Any,) -> int: - """Color Bar Hue control.""" - ... -def GuiColorPanel(bounds: Rectangle|list|tuple,text: bytes,color: Any|list|tuple,) -> int: - """Color Panel control.""" - ... -def GuiColorPanelHSV(bounds: Rectangle|list|tuple,text: bytes,colorHsv: Any|list|tuple,) -> int: - """Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV().""" - ... -def GuiColorPicker(bounds: Rectangle|list|tuple,text: bytes,color: Any|list|tuple,) -> int: - """Color Picker control (multiple color controls).""" - ... -def GuiColorPickerHSV(bounds: Rectangle|list|tuple,text: bytes,colorHsv: Any|list|tuple,) -> int: - """Color Picker control that avoids conversion to RGB on each call (multiple color controls).""" - ... -def GuiComboBox(bounds: Rectangle|list|tuple,text: bytes,active: Any,) -> int: - """Combo Box control.""" - ... -def GuiDisable() -> None: - """Disable gui controls (global state).""" - ... -def GuiDisableTooltip() -> None: - """Disable gui tooltips (global state).""" - ... -def GuiDrawIcon(iconId: int,posX: int,posY: int,pixelSize: int,color: Color|list|tuple,) -> None: - """Draw icon using pixel size at specified position.""" - ... -def GuiDropdownBox(bounds: Rectangle|list|tuple,text: bytes,active: Any,editMode: bool,) -> int: - """Dropdown Box control.""" - ... -def GuiDummyRec(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Dummy control for placeholders.""" - ... -def GuiEnable() -> None: - """Enable gui controls (global state).""" - ... -def GuiEnableTooltip() -> None: - """Enable gui tooltips (global state).""" - ... -def GuiGetFont() -> Font: - """Get gui custom font (global state).""" - ... -def GuiGetIcons() -> Any: - """Get raygui icons data pointer.""" - ... -def GuiGetState() -> int: - """Get gui state (global state).""" - ... -def GuiGetStyle(control: int,property: int,) -> int: - """Get one style property.""" - ... -def GuiGrid(bounds: Rectangle|list|tuple,text: bytes,spacing: float,subdivs: int,mouseCell: Any|list|tuple,) -> int: - """Grid control.""" - ... -def GuiGroupBox(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Group Box control with text name.""" - ... -def GuiIconText(iconId: int,text: bytes,) -> bytes: - """Get text with icon id prepended (if supported).""" - ... -def GuiIsLocked() -> bool: - """Check if gui is locked (global state).""" - ... -def GuiLabel(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Label control.""" - ... -def GuiLabelButton(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Label button control, returns true when clicked.""" - ... -def GuiLine(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Line separator control, could contain text.""" - ... -def GuiListView(bounds: Rectangle|list|tuple,text: bytes,scrollIndex: Any,active: Any,) -> int: - """List View control.""" - ... -def GuiListViewEx(bounds: Rectangle|list|tuple,text: list[bytes],count: int,scrollIndex: Any,active: Any,focus: Any,) -> int: - """List View with extended parameters.""" - ... -def GuiLoadIcons(fileName: bytes,loadIconsName: bool,) -> list[bytes]: - """Load raygui icons file (.rgi) into internal icons data.""" - ... -def GuiLoadStyle(fileName: bytes,) -> None: - """Load style file over global style variable (.rgs).""" - ... -def GuiLoadStyleDefault() -> None: - """Load style default over global style.""" - ... -def GuiLock() -> None: - """Lock gui controls (global state).""" - ... -def GuiMessageBox(bounds: Rectangle|list|tuple,title: bytes,message: bytes,buttons: bytes,) -> int: - """Message Box control, displays a message.""" - ... -def GuiPanel(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Panel control, useful to group controls.""" - ... -def GuiProgressBar(bounds: Rectangle|list|tuple,textLeft: bytes,textRight: bytes,value: Any,minValue: float,maxValue: float,) -> int: - """Progress Bar control.""" - ... -def GuiScrollPanel(bounds: Rectangle|list|tuple,text: bytes,content: Rectangle|list|tuple,scroll: Any|list|tuple,view: Any|list|tuple,) -> int: - """Scroll Panel control.""" - ... -def GuiSetAlpha(alpha: float,) -> None: - """Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f.""" - ... -def GuiSetFont(font: Font|list|tuple,) -> None: - """Set gui custom font (global state).""" - ... -def GuiSetIconScale(scale: int,) -> None: - """Set default icon drawing size.""" - ... -def GuiSetState(state: int,) -> None: - """Set gui state (global state).""" - ... -def GuiSetStyle(control: int,property: int,value: int,) -> None: - """Set one style property.""" - ... -def GuiSetTooltip(tooltip: bytes,) -> None: - """Set tooltip string.""" - ... -def GuiSlider(bounds: Rectangle|list|tuple,textLeft: bytes,textRight: bytes,value: Any,minValue: float,maxValue: float,) -> int: - """Slider control.""" - ... -def GuiSliderBar(bounds: Rectangle|list|tuple,textLeft: bytes,textRight: bytes,value: Any,minValue: float,maxValue: float,) -> int: - """Slider Bar control.""" - ... -def GuiSpinner(bounds: Rectangle|list|tuple,text: bytes,value: Any,minValue: int,maxValue: int,editMode: bool,) -> int: - """Spinner control.""" - ... -def GuiStatusBar(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Status Bar control, shows info text.""" - ... -def GuiTabBar(bounds: Rectangle|list|tuple,text: list[bytes],count: int,active: Any,) -> int: - """Tab Bar control, returns TAB to be closed or -1.""" - ... -def GuiTextBox(bounds: Rectangle|list|tuple,text: bytes,textSize: int,editMode: bool,) -> int: - """Text Box control, updates input text.""" - ... -def GuiTextInputBox(bounds: Rectangle|list|tuple,title: bytes,message: bytes,buttons: bytes,text: bytes,textMaxSize: int,secretViewActive: Any,) -> int: - """Text Input Box control, ask for text, supports secret.""" - ... -def GuiToggle(bounds: Rectangle|list|tuple,text: bytes,active: Any,) -> int: - """Toggle Button control.""" - ... -def GuiToggleGroup(bounds: Rectangle|list|tuple,text: bytes,active: Any,) -> int: - """Toggle Group control.""" - ... -def GuiToggleSlider(bounds: Rectangle|list|tuple,text: bytes,active: Any,) -> int: - """Toggle Slider control.""" - ... -def GuiUnlock() -> None: - """Unlock gui controls (global state).""" - ... -def GuiValueBox(bounds: Rectangle|list|tuple,text: bytes,value: Any,minValue: int,maxValue: int,editMode: bool,) -> int: - """Value Box control, updates input text with numbers.""" - ... -def GuiValueBoxFloat(bounds: Rectangle|list|tuple,text: bytes,textValue: bytes,value: Any,editMode: bool,) -> int: - """Value box control for float values.""" - ... -def GuiWindowBox(bounds: Rectangle|list|tuple,title: bytes,) -> int: - """Window Box control, shows a window that can be closed.""" - ... -HUEBAR_PADDING: int -HUEBAR_SELECTOR_HEIGHT: int -HUEBAR_SELECTOR_OVERFLOW: int -HUEBAR_WIDTH: int -def HideCursor() -> None: - """Hides cursor.""" - ... -ICON_1UP: int -ICON_229: int -ICON_230: int -ICON_231: int -ICON_232: int -ICON_233: int -ICON_234: int -ICON_235: int -ICON_236: int -ICON_237: int -ICON_238: int -ICON_239: int -ICON_240: int -ICON_241: int -ICON_242: int -ICON_243: int -ICON_244: int -ICON_245: int -ICON_246: int -ICON_247: int -ICON_248: int -ICON_249: int -ICON_250: int -ICON_251: int -ICON_252: int -ICON_253: int -ICON_254: int -ICON_255: int -ICON_ALARM: int -ICON_ALPHA_CLEAR: int -ICON_ALPHA_MULTIPLY: int -ICON_ARROW_DOWN: int -ICON_ARROW_DOWN_FILL: int -ICON_ARROW_LEFT: int -ICON_ARROW_LEFT_FILL: int -ICON_ARROW_RIGHT: int -ICON_ARROW_RIGHT_FILL: int -ICON_ARROW_UP: int -ICON_ARROW_UP_FILL: int -ICON_AUDIO: int -ICON_BIN: int -ICON_BOX: int -ICON_BOX_BOTTOM: int -ICON_BOX_BOTTOM_LEFT: int -ICON_BOX_BOTTOM_RIGHT: int -ICON_BOX_CENTER: int -ICON_BOX_CIRCLE_MASK: int -ICON_BOX_CONCENTRIC: int -ICON_BOX_CORNERS_BIG: int -ICON_BOX_CORNERS_SMALL: int -ICON_BOX_DOTS_BIG: int -ICON_BOX_DOTS_SMALL: int -ICON_BOX_GRID: int -ICON_BOX_GRID_BIG: int -ICON_BOX_LEFT: int -ICON_BOX_MULTISIZE: int -ICON_BOX_RIGHT: int -ICON_BOX_TOP: int -ICON_BOX_TOP_LEFT: int -ICON_BOX_TOP_RIGHT: int -ICON_BREAKPOINT_OFF: int -ICON_BREAKPOINT_ON: int -ICON_BRUSH_CLASSIC: int -ICON_BRUSH_PAINTER: int -ICON_BURGER_MENU: int -ICON_CAMERA: int -ICON_CASE_SENSITIVE: int -ICON_CLOCK: int -ICON_COIN: int -ICON_COLOR_BUCKET: int -ICON_COLOR_PICKER: int -ICON_CORNER: int -ICON_CPU: int -ICON_CRACK: int -ICON_CRACK_POINTS: int -ICON_CROP: int -ICON_CROP_ALPHA: int -ICON_CROSS: int -ICON_CROSSLINE: int -ICON_CROSS_SMALL: int -ICON_CUBE: int -ICON_CUBE_FACE_BACK: int -ICON_CUBE_FACE_BOTTOM: int -ICON_CUBE_FACE_FRONT: int -ICON_CUBE_FACE_LEFT: int -ICON_CUBE_FACE_RIGHT: int -ICON_CUBE_FACE_TOP: int -ICON_CURSOR_CLASSIC: int -ICON_CURSOR_HAND: int -ICON_CURSOR_MOVE: int -ICON_CURSOR_MOVE_FILL: int -ICON_CURSOR_POINTER: int -ICON_CURSOR_SCALE: int -ICON_CURSOR_SCALE_FILL: int -ICON_CURSOR_SCALE_LEFT: int -ICON_CURSOR_SCALE_LEFT_FILL: int -ICON_CURSOR_SCALE_RIGHT: int -ICON_CURSOR_SCALE_RIGHT_FILL: int -ICON_DEMON: int -ICON_DITHERING: int -ICON_DOOR: int -ICON_EMPTYBOX: int -ICON_EMPTYBOX_SMALL: int -ICON_EXIT: int -ICON_EXPLOSION: int -ICON_EYE_OFF: int -ICON_EYE_ON: int -ICON_FILE: int -ICON_FILETYPE_ALPHA: int -ICON_FILETYPE_AUDIO: int -ICON_FILETYPE_BINARY: int -ICON_FILETYPE_HOME: int -ICON_FILETYPE_IMAGE: int -ICON_FILETYPE_INFO: int -ICON_FILETYPE_PLAY: int -ICON_FILETYPE_TEXT: int -ICON_FILETYPE_VIDEO: int -ICON_FILE_ADD: int -ICON_FILE_COPY: int -ICON_FILE_CUT: int -ICON_FILE_DELETE: int -ICON_FILE_EXPORT: int -ICON_FILE_NEW: int -ICON_FILE_OPEN: int -ICON_FILE_PASTE: int -ICON_FILE_SAVE: int -ICON_FILE_SAVE_CLASSIC: int -ICON_FILTER: int -ICON_FILTER_BILINEAR: int -ICON_FILTER_POINT: int -ICON_FILTER_TOP: int -ICON_FOLDER: int -ICON_FOLDER_ADD: int -ICON_FOLDER_FILE_OPEN: int -ICON_FOLDER_OPEN: int -ICON_FOLDER_SAVE: int -ICON_FOUR_BOXES: int -ICON_FX: int -ICON_GEAR: int -ICON_GEAR_BIG: int -ICON_GEAR_EX: int -ICON_GRID: int -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 -ICON_LIFE_BARS: int -ICON_LINK: int -ICON_LINK_BOXES: int -ICON_LINK_BROKE: int -ICON_LINK_MULTI: int -ICON_LINK_NET: int -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 -ICON_MUTATE: int -ICON_MUTATE_FILL: int -ICON_NONE: int -ICON_NOTEBOOK: int -ICON_OK_TICK: int -ICON_PENCIL: int -ICON_PENCIL_BIG: int -ICON_PHOTO_CAMERA: int -ICON_PHOTO_CAMERA_FLASH: int -ICON_PLAYER: int -ICON_PLAYER_JUMP: int -ICON_PLAYER_NEXT: int -ICON_PLAYER_PAUSE: int -ICON_PLAYER_PLAY: int -ICON_PLAYER_PLAY_BACK: int -ICON_PLAYER_PREVIOUS: int -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 -ICON_REPEAT: int -ICON_REPEAT_FILL: int -ICON_REREDO: int -ICON_REREDO_FILL: int -ICON_RESIZE: int -ICON_RESTART: int -ICON_ROM: int -ICON_ROTATE: int -ICON_ROTATE_FILL: int -ICON_RUBBER: int -ICON_SAND_TIMER: int -ICON_SCALE: int -ICON_SHIELD: int -ICON_SHUFFLE: int -ICON_SHUFFLE_FILL: int -ICON_SPECIAL: int -ICON_SQUARE_TOGGLE: int -ICON_STAR: int -ICON_STEP_INTO: int -ICON_STEP_OUT: int -ICON_STEP_OVER: int -ICON_SUITCASE: int -ICON_SUITCASE_ZIP: int -ICON_SYMMETRY: int -ICON_SYMMETRY_HORIZONTAL: int -ICON_SYMMETRY_VERTICAL: int -ICON_TARGET: int -ICON_TARGET_BIG: int -ICON_TARGET_BIG_FILL: int -ICON_TARGET_MOVE: int -ICON_TARGET_MOVE_FILL: int -ICON_TARGET_POINT: int -ICON_TARGET_SMALL: int -ICON_TARGET_SMALL_FILL: int -ICON_TEXT_A: int -ICON_TEXT_NOTES: int -ICON_TEXT_POPUP: int -ICON_TEXT_T: int -ICON_TOOLS: int -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 -ICON_WAVE_SQUARE: int -ICON_WAVE_TRIANGULAR: int -ICON_WINDOW: int -ICON_ZOOM_ALL: int -ICON_ZOOM_BIG: int -ICON_ZOOM_CENTER: int -ICON_ZOOM_MEDIUM: int -ICON_ZOOM_SMALL: int -def ImageAlphaClear(image: Any|list|tuple,color: Color|list|tuple,threshold: float,) -> None: - """Clear alpha channel to desired color.""" - ... -def ImageAlphaCrop(image: Any|list|tuple,threshold: float,) -> None: - """Crop image depending on alpha value.""" - ... -def ImageAlphaMask(image: Any|list|tuple,alphaMask: Image|list|tuple,) -> None: - """Apply alpha mask to image.""" - ... -def ImageAlphaPremultiply(image: Any|list|tuple,) -> None: - """Premultiply alpha channel.""" - ... -def ImageBlurGaussian(image: Any|list|tuple,blurSize: int,) -> None: - """Apply Gaussian blur using a box blur approximation.""" - ... -def ImageClearBackground(dst: Any|list|tuple,color: Color|list|tuple,) -> None: - """Clear image background with given color.""" - ... -def ImageColorBrightness(image: Any|list|tuple,brightness: int,) -> None: - """Modify image color: brightness (-255 to 255).""" - ... -def ImageColorContrast(image: Any|list|tuple,contrast: float,) -> None: - """Modify image color: contrast (-100 to 100).""" - ... -def ImageColorGrayscale(image: Any|list|tuple,) -> None: - """Modify image color: grayscale.""" - ... -def ImageColorInvert(image: Any|list|tuple,) -> None: - """Modify image color: invert.""" - ... -def ImageColorReplace(image: Any|list|tuple,color: Color|list|tuple,replace: Color|list|tuple,) -> None: - """Modify image color: replace color.""" - ... -def ImageColorTint(image: Any|list|tuple,color: Color|list|tuple,) -> None: - """Modify image color: tint.""" - ... -def ImageCopy(image: Image|list|tuple,) -> Image: - """Create an image duplicate (useful for transformations).""" - ... -def ImageCrop(image: Any|list|tuple,crop: Rectangle|list|tuple,) -> None: - """Crop an image to a defined rectangle.""" - ... -def ImageDither(image: Any|list|tuple,rBpp: int,gBpp: int,bBpp: int,aBpp: int,) -> None: - """Dither image data to 16bpp or lower (Floyd-Steinberg dithering).""" - ... -def ImageDraw(dst: Any|list|tuple,src: Image|list|tuple,srcRec: Rectangle|list|tuple,dstRec: Rectangle|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a source image within a destination image (tint applied to source).""" - ... -def ImageDrawCircle(dst: Any|list|tuple,centerX: int,centerY: int,radius: int,color: Color|list|tuple,) -> None: - """Draw a filled circle within an image.""" - ... -def ImageDrawCircleLines(dst: Any|list|tuple,centerX: int,centerY: int,radius: int,color: Color|list|tuple,) -> None: - """Draw circle outline within an image.""" - ... -def ImageDrawCircleLinesV(dst: Any|list|tuple,center: Vector2|list|tuple,radius: int,color: Color|list|tuple,) -> None: - """Draw circle outline within an image (Vector version).""" - ... -def ImageDrawCircleV(dst: Any|list|tuple,center: Vector2|list|tuple,radius: int,color: Color|list|tuple,) -> None: - """Draw a filled circle within an image (Vector version).""" - ... -def ImageDrawLine(dst: Any|list|tuple,startPosX: int,startPosY: int,endPosX: int,endPosY: int,color: Color|list|tuple,) -> None: - """Draw line within an image.""" - ... -def ImageDrawLineEx(dst: Any|list|tuple,start: Vector2|list|tuple,end: Vector2|list|tuple,thick: int,color: Color|list|tuple,) -> None: - """Draw a line defining thickness within an image.""" - ... -def ImageDrawLineV(dst: Any|list|tuple,start: Vector2|list|tuple,end: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw line within an image (Vector version).""" - ... -def ImageDrawPixel(dst: Any|list|tuple,posX: int,posY: int,color: Color|list|tuple,) -> None: - """Draw pixel within an image.""" - ... -def ImageDrawPixelV(dst: Any|list|tuple,position: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw pixel within an image (Vector version).""" - ... -def ImageDrawRectangle(dst: Any|list|tuple,posX: int,posY: int,width: int,height: int,color: Color|list|tuple,) -> None: - """Draw rectangle within an image.""" - ... -def ImageDrawRectangleLines(dst: Any|list|tuple,rec: Rectangle|list|tuple,thick: int,color: Color|list|tuple,) -> None: - """Draw rectangle lines within an image.""" - ... -def ImageDrawRectangleRec(dst: Any|list|tuple,rec: Rectangle|list|tuple,color: Color|list|tuple,) -> None: - """Draw rectangle within an image.""" - ... -def ImageDrawRectangleV(dst: Any|list|tuple,position: Vector2|list|tuple,size: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw rectangle within an image (Vector version).""" - ... -def ImageDrawText(dst: Any|list|tuple,text: bytes,posX: int,posY: int,fontSize: int,color: Color|list|tuple,) -> None: - """Draw text (using default font) within an image (destination).""" - ... -def ImageDrawTextEx(dst: Any|list|tuple,font: Font|list|tuple,text: bytes,position: Vector2|list|tuple,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw text (custom sprite font) within an image (destination).""" - ... -def ImageDrawTriangle(dst: Any|list|tuple,v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw triangle within an image.""" - ... -def ImageDrawTriangleEx(dst: Any|list|tuple,v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,c1: Color|list|tuple,c2: Color|list|tuple,c3: Color|list|tuple,) -> None: - """Draw triangle with interpolated colors within an image.""" - ... -def ImageDrawTriangleFan(dst: Any|list|tuple,points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle fan defined by points within an image (first vertex is the center).""" - ... -def ImageDrawTriangleLines(dst: Any|list|tuple,v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw triangle outline within an image.""" - ... -def ImageDrawTriangleStrip(dst: Any|list|tuple,points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle strip defined by points within an image.""" - ... -def ImageFlipHorizontal(image: Any|list|tuple,) -> None: - """Flip image horizontally.""" - ... -def ImageFlipVertical(image: Any|list|tuple,) -> None: - """Flip image vertically.""" - ... -def ImageFormat(image: Any|list|tuple,newFormat: int,) -> None: - """Convert image data to desired format.""" - ... -def ImageFromChannel(image: Image|list|tuple,selectedChannel: int,) -> Image: - """Create an image from a selected channel of another image (GRAYSCALE).""" - ... -def ImageFromImage(image: Image|list|tuple,rec: Rectangle|list|tuple,) -> Image: - """Create an image from another image piece.""" - ... -def ImageKernelConvolution(image: Any|list|tuple,kernel: Any,kernelSize: int,) -> None: - """Apply custom square convolution kernel to image.""" - ... -def ImageMipmaps(image: Any|list|tuple,) -> None: - """Compute all mipmap levels for a provided image.""" - ... -def ImageResize(image: Any|list|tuple,newWidth: int,newHeight: int,) -> None: - """Resize image (Bicubic scaling algorithm).""" - ... -def ImageResizeCanvas(image: Any|list|tuple,newWidth: int,newHeight: int,offsetX: int,offsetY: int,fill: Color|list|tuple,) -> None: - """Resize canvas and fill with color.""" - ... -def ImageResizeNN(image: Any|list|tuple,newWidth: int,newHeight: int,) -> None: - """Resize image (Nearest-Neighbor scaling algorithm).""" - ... -def ImageRotate(image: Any|list|tuple,degrees: int,) -> None: - """Rotate image by input angle in degrees (-359 to 359).""" - ... -def ImageRotateCCW(image: Any|list|tuple,) -> None: - """Rotate image counter-clockwise 90deg.""" - ... -def ImageRotateCW(image: Any|list|tuple,) -> None: - """Rotate image clockwise 90deg.""" - ... -def ImageText(text: bytes,fontSize: int,color: Color|list|tuple,) -> Image: - """Create an image from text (default font).""" - ... -def ImageTextEx(font: Font|list|tuple,text: bytes,fontSize: float,spacing: float,tint: Color|list|tuple,) -> Image: - """Create an image from text (custom sprite font).""" - ... -def ImageToPOT(image: Any|list|tuple,fill: Color|list|tuple,) -> None: - """Convert image to POT (power-of-two).""" - ... -def InitAudioDevice() -> None: - """Initialize audio device and context.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def InitPhysics() -> None: - """Initializes physics values, pointers and creates physics loop thread.""" - ... -def InitWindow(width: int,height: int,title: bytes,) -> None: - """Initialize window and OpenGL context.""" - ... -def IsAudioDeviceReady() -> bool: - """Check if audio device has been initialized successfully.""" - ... -def IsAudioStreamPlaying(stream: AudioStream|list|tuple,) -> bool: - """Check if audio stream is playing.""" - ... -def IsAudioStreamProcessed(stream: AudioStream|list|tuple,) -> bool: - """Check if any audio stream buffers requires refill.""" - ... -def IsAudioStreamValid(stream: AudioStream|list|tuple,) -> bool: - """Checks if an audio stream is valid (buffers initialized).""" - ... -def IsCursorHidden() -> bool: - """Check if cursor is not visible.""" - ... -def IsCursorOnScreen() -> bool: - """Check if cursor is on the screen.""" - ... -def IsFileDropped() -> bool: - """Check if a file has been dropped into window.""" - ... -def IsFileExtension(fileName: bytes,ext: bytes,) -> bool: - """Check file extension (including point: .png, .wav).""" - ... -def IsFileNameValid(fileName: bytes,) -> bool: - """Check if fileName is valid for the platform/OS.""" - ... -def IsFontValid(font: Font|list|tuple,) -> bool: - """Check if a font is valid (font data loaded, WARNING: GPU texture not checked).""" - ... -def IsGamepadAvailable(gamepad: int,) -> bool: - """Check if a gamepad is available.""" - ... -def IsGamepadButtonDown(gamepad: int,button: int,) -> bool: - """Check if a gamepad button is being pressed.""" - ... -def IsGamepadButtonPressed(gamepad: int,button: int,) -> bool: - """Check if a gamepad button has been pressed once.""" - ... -def IsGamepadButtonReleased(gamepad: int,button: int,) -> bool: - """Check if a gamepad button has been released once.""" - ... -def IsGamepadButtonUp(gamepad: int,button: int,) -> bool: - """Check if a gamepad button is NOT being pressed.""" - ... -def IsGestureDetected(gesture: int,) -> bool: - """Check if a gesture have been detected.""" - ... -def IsImageValid(image: Image|list|tuple,) -> bool: - """Check if an image is valid (data and parameters).""" - ... -def IsKeyDown(key: int,) -> bool: - """Check if a key is being pressed.""" - ... -def IsKeyPressed(key: int,) -> bool: - """Check if a key has been pressed once.""" - ... -def IsKeyPressedRepeat(key: int,) -> bool: - """Check if a key has been pressed again.""" - ... -def IsKeyReleased(key: int,) -> bool: - """Check if a key has been released once.""" - ... -def IsKeyUp(key: int,) -> bool: - """Check if a key is NOT being pressed.""" - ... -def IsMaterialValid(material: Material|list|tuple,) -> bool: - """Check if a material is valid (shader assigned, map textures loaded in GPU).""" - ... -def IsModelAnimationValid(model: Model|list|tuple,anim: ModelAnimation|list|tuple,) -> bool: - """Check model animation skeleton match.""" - ... -def IsModelValid(model: Model|list|tuple,) -> bool: - """Check if a model is valid (loaded in GPU, VAO/VBOs).""" - ... -def IsMouseButtonDown(button: int,) -> bool: - """Check if a mouse button is being pressed.""" - ... -def IsMouseButtonPressed(button: int,) -> bool: - """Check if a mouse button has been pressed once.""" - ... -def IsMouseButtonReleased(button: int,) -> bool: - """Check if a mouse button has been released once.""" - ... -def IsMouseButtonUp(button: int,) -> bool: - """Check if a mouse button is NOT being pressed.""" - ... -def IsMusicStreamPlaying(music: Music|list|tuple,) -> bool: - """Check if music is playing.""" - ... -def IsMusicValid(music: Music|list|tuple,) -> bool: - """Checks if a music stream is valid (context and buffers initialized).""" - ... -def IsPathFile(path: bytes,) -> bool: - """Check if a given path is a file or a directory.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def IsPhysicsEnabled() -> bool: - """Returns true if physics thread is currently enabled.""" - ... -def IsRenderTextureValid(target: RenderTexture|list|tuple,) -> bool: - """Check if a render texture is valid (loaded in GPU).""" - ... -def IsShaderValid(shader: Shader|list|tuple,) -> bool: - """Check if a shader is valid (loaded on GPU).""" - ... -def IsSoundPlaying(sound: Sound|list|tuple,) -> bool: - """Check if a sound is currently playing.""" - ... -def IsSoundValid(sound: Sound|list|tuple,) -> bool: - """Checks if a sound is valid (data loaded and buffers initialized).""" - ... -def IsTextureValid(texture: Texture|list|tuple,) -> bool: - """Check if a texture is valid (loaded in GPU).""" - ... -def IsWaveValid(wave: Wave|list|tuple,) -> bool: - """Checks if wave data is valid (data loaded and parameters).""" - ... -def IsWindowFocused() -> bool: - """Check if window is currently focused.""" - ... -def IsWindowFullscreen() -> bool: - """Check if window is currently fullscreen.""" - ... -def IsWindowHidden() -> bool: - """Check if window is currently hidden.""" - ... -def IsWindowMaximized() -> bool: - """Check if window is currently maximized.""" - ... -def IsWindowMinimized() -> bool: - """Check if window is currently minimized.""" - ... -def IsWindowReady() -> bool: - """Check if window has been initialized successfully.""" - ... -def IsWindowResized() -> bool: - """Check if window has been resized last frame.""" - ... -def IsWindowState(flag: int,) -> bool: - """Check if one specific window flag is enabled.""" - ... -KEY_A: int -KEY_APOSTROPHE: int -KEY_B: int -KEY_BACK: int -KEY_BACKSLASH: int -KEY_BACKSPACE: int -KEY_C: int -KEY_CAPS_LOCK: int -KEY_COMMA: int -KEY_D: int -KEY_DELETE: int -KEY_DOWN: int -KEY_E: int -KEY_EIGHT: int -KEY_END: int -KEY_ENTER: int -KEY_EQUAL: int -KEY_ESCAPE: int -KEY_F: int -KEY_F1: int -KEY_F10: int -KEY_F11: int -KEY_F12: int -KEY_F2: int -KEY_F3: int -KEY_F4: int -KEY_F5: int -KEY_F6: int -KEY_F7: int -KEY_F8: int -KEY_F9: int -KEY_FIVE: int -KEY_FOUR: int -KEY_G: int -KEY_GRAVE: int -KEY_H: int -KEY_HOME: int -KEY_I: int -KEY_INSERT: int -KEY_J: int -KEY_K: int -KEY_KB_MENU: int -KEY_KP_0: int -KEY_KP_1: int -KEY_KP_2: int -KEY_KP_3: int -KEY_KP_4: int -KEY_KP_5: int -KEY_KP_6: int -KEY_KP_7: int -KEY_KP_8: int -KEY_KP_9: int -KEY_KP_ADD: int -KEY_KP_DECIMAL: int -KEY_KP_DIVIDE: int -KEY_KP_ENTER: int -KEY_KP_EQUAL: int -KEY_KP_MULTIPLY: int -KEY_KP_SUBTRACT: int -KEY_L: int -KEY_LEFT: int -KEY_LEFT_ALT: int -KEY_LEFT_BRACKET: int -KEY_LEFT_CONTROL: int -KEY_LEFT_SHIFT: int -KEY_LEFT_SUPER: int -KEY_M: int -KEY_MENU: int -KEY_MINUS: int -KEY_N: int -KEY_NINE: int -KEY_NULL: int -KEY_NUM_LOCK: int -KEY_O: int -KEY_ONE: int -KEY_P: int -KEY_PAGE_DOWN: int -KEY_PAGE_UP: int -KEY_PAUSE: int -KEY_PERIOD: int -KEY_PRINT_SCREEN: int -KEY_Q: int -KEY_R: int -KEY_RIGHT: int -KEY_RIGHT_ALT: int -KEY_RIGHT_BRACKET: int -KEY_RIGHT_CONTROL: int -KEY_RIGHT_SHIFT: int -KEY_RIGHT_SUPER: int -KEY_S: int -KEY_SCROLL_LOCK: int -KEY_SEMICOLON: int -KEY_SEVEN: int -KEY_SIX: int -KEY_SLASH: int -KEY_SPACE: int -KEY_T: int -KEY_TAB: int -KEY_THREE: int -KEY_TWO: int -KEY_U: int -KEY_UP: int -KEY_V: int -KEY_VOLUME_DOWN: int -KEY_VOLUME_UP: int -KEY_W: int -KEY_X: int -KEY_Y: int -KEY_Z: int -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 -LOG_DEBUG: int -LOG_ERROR: int -LOG_FATAL: int -LOG_INFO: int -LOG_NONE: int -LOG_TRACE: int -LOG_WARNING: int -def Lerp(start: float,end: float,amount: float,) -> float: - """.""" - ... -def LoadAudioStream(sampleRate: int,sampleSize: int,channels: int,) -> AudioStream: - """Load audio stream (to stream raw audio pcm data).""" - ... -def LoadAutomationEventList(fileName: bytes,) -> AutomationEventList: - """Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS.""" - ... -def LoadCodepoints(text: bytes,count: Any,) -> Any: - """Load all codepoints from a UTF-8 text string, codepoints count returned by parameter.""" - ... -def LoadDirectoryFiles(dirPath: bytes,) -> FilePathList: - """Load directory filepaths.""" - ... -def LoadDirectoryFilesEx(basePath: bytes,filter: bytes,scanSubdirs: bool,) -> FilePathList: - """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.""" - ... -def LoadFileData(fileName: bytes,dataSize: Any,) -> bytes: - """Load file data as byte array (read).""" - ... -def LoadFileText(fileName: bytes,) -> bytes: - """Load text data from file (read), returns a '\0' terminated string.""" - ... -def LoadFont(fileName: bytes,) -> Font: - """Load font from file into GPU memory (VRAM).""" - ... -def LoadFontData(fileData: bytes,dataSize: int,fontSize: int,codepoints: Any,codepointCount: int,type: int,) -> Any: - """Load font data for further use.""" - ... -def LoadFontEx(fileName: bytes,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 set, font size is provided in pixels height.""" - ... -def LoadFontFromImage(image: Image|list|tuple,key: Color|list|tuple,firstChar: int,) -> Font: - """Load font from Image (XNA style).""" - ... -def LoadFontFromMemory(fileType: bytes,fileData: bytes,dataSize: int,fontSize: int,codepoints: Any,codepointCount: int,) -> Font: - """Load font from memory buffer, fileType refers to extension: i.e. '.ttf'.""" - ... -def LoadImage(fileName: bytes,) -> Image: - """Load image from file into CPU memory (RAM).""" - ... -def LoadImageAnim(fileName: bytes,frames: Any,) -> Image: - """Load image sequence from file (frames appended to image.data).""" - ... -def LoadImageAnimFromMemory(fileType: bytes,fileData: bytes,dataSize: int,frames: Any,) -> Image: - """Load image sequence from memory buffer.""" - ... -def LoadImageColors(image: Image|list|tuple,) -> Any: - """Load color data from image as a Color array (RGBA - 32bit).""" - ... -def LoadImageFromMemory(fileType: bytes,fileData: bytes,dataSize: int,) -> Image: - """Load image from memory buffer, fileType refers to extension: i.e. '.png'.""" - ... -def LoadImageFromScreen() -> Image: - """Load image from screen buffer and (screenshot).""" - ... -def LoadImageFromTexture(texture: Texture|list|tuple,) -> Image: - """Load image from GPU texture data.""" - ... -def LoadImagePalette(image: Image|list|tuple,maxPaletteSize: int,colorCount: Any,) -> Any: - """Load colors palette from image as a Color array (RGBA - 32bit).""" - ... -def LoadImageRaw(fileName: bytes,width: int,height: int,format: int,headerSize: int,) -> Image: - """Load image from RAW file data.""" - ... -def LoadMaterialDefault() -> Material: - """Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps).""" - ... -def LoadMaterials(fileName: bytes,materialCount: Any,) -> Any: - """Load materials from model file.""" - ... -def LoadModel(fileName: bytes,) -> Model: - """Load model from files (meshes and materials).""" - ... -def LoadModelAnimations(fileName: bytes,animCount: Any,) -> Any: - """Load model animations from file.""" - ... -def LoadModelFromMesh(mesh: Mesh|list|tuple,) -> Model: - """Load model from generated mesh (default material).""" - ... -def LoadMusicStream(fileName: bytes,) -> Music: - """Load music stream from file.""" - ... -def LoadMusicStreamFromMemory(fileType: bytes,data: bytes,dataSize: int,) -> Music: - """Load music stream from data.""" - ... -def LoadRandomSequence(count: int,min_1: int,max_2: int,) -> Any: - """Load random values sequence, no values repeated.""" - ... -def LoadRenderTexture(width: int,height: int,) -> RenderTexture: - """Load texture for rendering (framebuffer).""" - ... -def LoadShader(vsFileName: bytes,fsFileName: bytes,) -> Shader: - """Load shader from files and bind default locations.""" - ... -def LoadShaderFromMemory(vsCode: bytes,fsCode: bytes,) -> Shader: - """Load shader from code strings and bind default locations.""" - ... -def LoadSound(fileName: bytes,) -> Sound: - """Load sound from file.""" - ... -def LoadSoundAlias(source: Sound|list|tuple,) -> Sound: - """Create a new sound that shares the same sample data as the source sound, does not own the sound data.""" - ... -def LoadSoundFromWave(wave: Wave|list|tuple,) -> Sound: - """Load sound from wave data.""" - ... -def LoadTexture(fileName: bytes,) -> Texture: - """Load texture from file into GPU memory (VRAM).""" - ... -def LoadTextureCubemap(image: Image|list|tuple,layout: int,) -> Texture: - """Load cubemap from image, multiple image cubemap layouts supported.""" - ... -def LoadTextureFromImage(image: Image|list|tuple,) -> Texture: - """Load texture from image data.""" - ... -def LoadUTF8(codepoints: Any,length: int,) -> bytes: - """Load UTF-8 text encoded from codepoints array.""" - ... -def LoadVrStereoConfig(device: VrDeviceInfo|list|tuple,) -> VrStereoConfig: - """Load VR stereo config for VR simulator device parameters.""" - ... -def LoadWave(fileName: bytes,) -> Wave: - """Load wave data from file.""" - ... -def LoadWaveFromMemory(fileType: bytes,fileData: bytes,dataSize: int,) -> Wave: - """Load wave from memory buffer, fileType refers to extension: i.e. '.wav'.""" - ... -def LoadWaveSamples(wave: Wave|list|tuple,) -> Any: - """Load samples data from wave as a 32bit float data array.""" - ... -MATERIAL_MAP_ALBEDO: int -MATERIAL_MAP_BRDF: int -MATERIAL_MAP_CUBEMAP: int -MATERIAL_MAP_EMISSION: int -MATERIAL_MAP_HEIGHT: int -MATERIAL_MAP_IRRADIANCE: int -MATERIAL_MAP_METALNESS: int -MATERIAL_MAP_NORMAL: int -MATERIAL_MAP_OCCLUSION: int -MATERIAL_MAP_PREFILTER: int -MATERIAL_MAP_ROUGHNESS: int -MOUSE_BUTTON_BACK: int -MOUSE_BUTTON_EXTRA: int -MOUSE_BUTTON_FORWARD: int -MOUSE_BUTTON_LEFT: int -MOUSE_BUTTON_MIDDLE: int -MOUSE_BUTTON_RIGHT: int -MOUSE_BUTTON_SIDE: int -MOUSE_CURSOR_ARROW: int -MOUSE_CURSOR_CROSSHAIR: int -MOUSE_CURSOR_DEFAULT: int -MOUSE_CURSOR_IBEAM: int -MOUSE_CURSOR_NOT_ALLOWED: int -MOUSE_CURSOR_POINTING_HAND: int -MOUSE_CURSOR_RESIZE_ALL: int -MOUSE_CURSOR_RESIZE_EW: int -MOUSE_CURSOR_RESIZE_NESW: int -MOUSE_CURSOR_RESIZE_NS: int -MOUSE_CURSOR_RESIZE_NWSE: int -def MakeDirectory(dirPath: bytes,) -> int: - """Create directories (including full path requested), returns 0 on success.""" - ... -def MatrixAdd(left: Matrix|list|tuple,right: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MatrixDecompose(mat: Matrix|list|tuple,translation: Any|list|tuple,rotation: Any|list|tuple,scale: Any|list|tuple,) -> None: - """.""" - ... -def MatrixDeterminant(mat: Matrix|list|tuple,) -> float: - """.""" - ... -def MatrixFrustum(left: float,right: float,bottom: float,top: float,nearPlane: float,farPlane: float,) -> Matrix: - """.""" - ... -def MatrixIdentity() -> Matrix: - """.""" - ... -def MatrixInvert(mat: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MatrixLookAt(eye: Vector3|list|tuple,target: Vector3|list|tuple,up: Vector3|list|tuple,) -> Matrix: - """.""" - ... -def MatrixMultiply(left: Matrix|list|tuple,right: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MatrixOrtho(left: float,right: float,bottom: float,top: float,nearPlane: float,farPlane: float,) -> Matrix: - """.""" - ... -def MatrixPerspective(fovY: float,aspect: float,nearPlane: float,farPlane: float,) -> Matrix: - """.""" - ... -def MatrixRotate(axis: Vector3|list|tuple,angle: float,) -> Matrix: - """.""" - ... -def MatrixRotateX(angle: float,) -> Matrix: - """.""" - ... -def MatrixRotateXYZ(angle: Vector3|list|tuple,) -> Matrix: - """.""" - ... -def MatrixRotateY(angle: float,) -> Matrix: - """.""" - ... -def MatrixRotateZ(angle: float,) -> Matrix: - """.""" - ... -def MatrixRotateZYX(angle: Vector3|list|tuple,) -> Matrix: - """.""" - ... -def MatrixScale(x: float,y: float,z: float,) -> Matrix: - """.""" - ... -def MatrixSubtract(left: Matrix|list|tuple,right: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MatrixToFloatV(mat: Matrix|list|tuple,) -> float16: - """.""" - ... -def MatrixTrace(mat: Matrix|list|tuple,) -> float: - """.""" - ... -def MatrixTranslate(x: float,y: float,z: float,) -> Matrix: - """.""" - ... -def MatrixTranspose(mat: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MaximizeWindow() -> None: - """Set window state: maximized, if resizable.""" - ... -def MeasureText(text: bytes,fontSize: int,) -> int: - """Measure string width for default font.""" - ... -def MeasureTextEx(font: Font|list|tuple,text: bytes,fontSize: float,spacing: float,) -> Vector2: - """Measure string size for Font.""" - ... -def MemAlloc(size: int,) -> Any: - """Internal memory allocator.""" - ... -def MemFree(ptr: Any,) -> None: - """Internal memory free.""" - ... -def MemRealloc(ptr: Any,size: int,) -> Any: - """Internal memory reallocator.""" - ... -def MinimizeWindow() -> None: - """Set window state: minimized, if resizable.""" - ... -NPATCH_NINE_PATCH: int -NPATCH_THREE_PATCH_HORIZONTAL: int -NPATCH_THREE_PATCH_VERTICAL: int -def Normalize(value: float,start: float,end: float,) -> float: - """.""" - ... -def OpenURL(url: bytes,) -> None: - """Open URL with default system browser (if available).""" - ... -PHYSICS_CIRCLE: int -PHYSICS_POLYGON: int -PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: int -PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: int -PIXELFORMAT_COMPRESSED_DXT1_RGB: int -PIXELFORMAT_COMPRESSED_DXT1_RGBA: int -PIXELFORMAT_COMPRESSED_DXT3_RGBA: int -PIXELFORMAT_COMPRESSED_DXT5_RGBA: int -PIXELFORMAT_COMPRESSED_ETC1_RGB: int -PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: int -PIXELFORMAT_COMPRESSED_ETC2_RGB: int -PIXELFORMAT_COMPRESSED_PVRT_RGB: int -PIXELFORMAT_COMPRESSED_PVRT_RGBA: int -PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: int -PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: int -PIXELFORMAT_UNCOMPRESSED_R16: int -PIXELFORMAT_UNCOMPRESSED_R16G16B16: int -PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: int -PIXELFORMAT_UNCOMPRESSED_R32: int -PIXELFORMAT_UNCOMPRESSED_R32G32B32: int -PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: int -PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: int -PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: int -PIXELFORMAT_UNCOMPRESSED_R5G6B5: int -PIXELFORMAT_UNCOMPRESSED_R8G8B8: int -PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: int -PROGRESSBAR: int -PROGRESS_PADDING: int -def PauseAudioStream(stream: AudioStream|list|tuple,) -> None: - """Pause audio stream.""" - ... -def PauseMusicStream(music: Music|list|tuple,) -> None: - """Pause music playing.""" - ... -def PauseSound(sound: Sound|list|tuple,) -> None: - """Pause a sound.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def PhysicsAddForce(body: Any|list|tuple,force: Vector2|list|tuple,) -> None: - """Adds a force to a physics body.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def PhysicsAddTorque(body: Any|list|tuple,amount: float,) -> None: - """Adds an angular force to a physics body.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def PhysicsShatter(body: Any|list|tuple,position: Vector2|list|tuple,force: float,) -> None: - """Shatters a polygon shape physics body to little physics bodies with explosion force.""" - ... -def PlayAudioStream(stream: AudioStream|list|tuple,) -> None: - """Play audio stream.""" - ... -def PlayAutomationEvent(event: AutomationEvent|list|tuple,) -> None: - """Play a recorded automation event.""" - ... -def PlayMusicStream(music: Music|list|tuple,) -> None: - """Start music playing.""" - ... -def PlaySound(sound: Sound|list|tuple,) -> None: - """Play a sound.""" - ... -def PollInputEvents() -> None: - """Register all input events.""" - ... -def QuaternionAdd(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionAddValue(q: Vector4|list|tuple,add: float,) -> Vector4: - """.""" - ... -def QuaternionCubicHermiteSpline(q1: Vector4|list|tuple,outTangent1: Vector4|list|tuple,q2: Vector4|list|tuple,inTangent2: Vector4|list|tuple,t: float,) -> Vector4: - """.""" - ... -def QuaternionDivide(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionEquals(p: Vector4|list|tuple,q: Vector4|list|tuple,) -> int: - """.""" - ... -def QuaternionFromAxisAngle(axis: Vector3|list|tuple,angle: float,) -> Vector4: - """.""" - ... -def QuaternionFromEuler(pitch: float,yaw: float,roll: float,) -> Vector4: - """.""" - ... -def QuaternionFromMatrix(mat: Matrix|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionFromVector3ToVector3(from_0: Vector3|list|tuple,to: Vector3|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionIdentity() -> Vector4: - """.""" - ... -def QuaternionInvert(q: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionLength(q: Vector4|list|tuple,) -> float: - """.""" - ... -def QuaternionLerp(q1: Vector4|list|tuple,q2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def QuaternionMultiply(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionNlerp(q1: Vector4|list|tuple,q2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def QuaternionNormalize(q: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionScale(q: Vector4|list|tuple,mul: float,) -> Vector4: - """.""" - ... -def QuaternionSlerp(q1: Vector4|list|tuple,q2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def QuaternionSubtract(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionSubtractValue(q: Vector4|list|tuple,sub: float,) -> Vector4: - """.""" - ... -def QuaternionToAxisAngle(q: Vector4|list|tuple,outAxis: Any|list|tuple,outAngle: Any,) -> None: - """.""" - ... -def QuaternionToEuler(q: Vector4|list|tuple,) -> Vector3: - """.""" - ... -def QuaternionToMatrix(q: Vector4|list|tuple,) -> Matrix: - """.""" - ... -def QuaternionTransform(q: Vector4|list|tuple,mat: Matrix|list|tuple,) -> Vector4: - """.""" - ... -RL_ATTACHMENT_COLOR_CHANNEL0: int -RL_ATTACHMENT_COLOR_CHANNEL1: int -RL_ATTACHMENT_COLOR_CHANNEL2: int -RL_ATTACHMENT_COLOR_CHANNEL3: int -RL_ATTACHMENT_COLOR_CHANNEL4: int -RL_ATTACHMENT_COLOR_CHANNEL5: int -RL_ATTACHMENT_COLOR_CHANNEL6: int -RL_ATTACHMENT_COLOR_CHANNEL7: int -RL_ATTACHMENT_CUBEMAP_NEGATIVE_X: int -RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y: int -RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z: int -RL_ATTACHMENT_CUBEMAP_POSITIVE_X: int -RL_ATTACHMENT_CUBEMAP_POSITIVE_Y: int -RL_ATTACHMENT_CUBEMAP_POSITIVE_Z: int -RL_ATTACHMENT_DEPTH: int -RL_ATTACHMENT_RENDERBUFFER: int -RL_ATTACHMENT_STENCIL: int -RL_ATTACHMENT_TEXTURE2D: int -RL_BLEND_ADDITIVE: int -RL_BLEND_ADD_COLORS: int -RL_BLEND_ALPHA: int -RL_BLEND_ALPHA_PREMULTIPLY: int -RL_BLEND_CUSTOM: int -RL_BLEND_CUSTOM_SEPARATE: int -RL_BLEND_MULTIPLIED: int -RL_BLEND_SUBTRACT_COLORS: int -RL_CULL_FACE_BACK: int -RL_CULL_FACE_FRONT: int -RL_LOG_ALL: int -RL_LOG_DEBUG: int -RL_LOG_ERROR: int -RL_LOG_FATAL: int -RL_LOG_INFO: int -RL_LOG_NONE: int -RL_LOG_TRACE: int -RL_LOG_WARNING: int -RL_OPENGL_11: int -RL_OPENGL_21: int -RL_OPENGL_33: int -RL_OPENGL_43: int -RL_OPENGL_ES_20: int -RL_OPENGL_ES_30: int -RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: int -RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: int -RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: int -RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: int -RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: int -RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: int -RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: int -RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: int -RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: int -RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: int -RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: int -RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: int -RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: int -RL_PIXELFORMAT_UNCOMPRESSED_R16: int -RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: int -RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: int -RL_PIXELFORMAT_UNCOMPRESSED_R32: int -RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: int -RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: int -RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: int -RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: int -RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: int -RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: int -RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: int -RL_SHADER_ATTRIB_FLOAT: int -RL_SHADER_ATTRIB_VEC2: int -RL_SHADER_ATTRIB_VEC3: int -RL_SHADER_ATTRIB_VEC4: int -RL_SHADER_LOC_COLOR_AMBIENT: int -RL_SHADER_LOC_COLOR_DIFFUSE: int -RL_SHADER_LOC_COLOR_SPECULAR: int -RL_SHADER_LOC_MAP_ALBEDO: int -RL_SHADER_LOC_MAP_BRDF: int -RL_SHADER_LOC_MAP_CUBEMAP: int -RL_SHADER_LOC_MAP_EMISSION: int -RL_SHADER_LOC_MAP_HEIGHT: int -RL_SHADER_LOC_MAP_IRRADIANCE: int -RL_SHADER_LOC_MAP_METALNESS: int -RL_SHADER_LOC_MAP_NORMAL: int -RL_SHADER_LOC_MAP_OCCLUSION: int -RL_SHADER_LOC_MAP_PREFILTER: int -RL_SHADER_LOC_MAP_ROUGHNESS: int -RL_SHADER_LOC_MATRIX_MODEL: int -RL_SHADER_LOC_MATRIX_MVP: int -RL_SHADER_LOC_MATRIX_NORMAL: int -RL_SHADER_LOC_MATRIX_PROJECTION: int -RL_SHADER_LOC_MATRIX_VIEW: int -RL_SHADER_LOC_VECTOR_VIEW: int -RL_SHADER_LOC_VERTEX_COLOR: int -RL_SHADER_LOC_VERTEX_NORMAL: int -RL_SHADER_LOC_VERTEX_POSITION: int -RL_SHADER_LOC_VERTEX_TANGENT: int -RL_SHADER_LOC_VERTEX_TEXCOORD01: int -RL_SHADER_LOC_VERTEX_TEXCOORD02: int -RL_SHADER_UNIFORM_FLOAT: int -RL_SHADER_UNIFORM_INT: int -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 -RL_TEXTURE_FILTER_ANISOTROPIC_16X: int -RL_TEXTURE_FILTER_ANISOTROPIC_4X: int -RL_TEXTURE_FILTER_ANISOTROPIC_8X: int -RL_TEXTURE_FILTER_BILINEAR: int -RL_TEXTURE_FILTER_POINT: int -RL_TEXTURE_FILTER_TRILINEAR: int -def Remap(value: float,inputStart: float,inputEnd: float,outputStart: float,outputEnd: float,) -> float: - """.""" - ... -def RestoreWindow() -> None: - """Set window state: not minimized/maximized.""" - ... -def ResumeAudioStream(stream: AudioStream|list|tuple,) -> None: - """Resume audio stream.""" - ... -def ResumeMusicStream(music: Music|list|tuple,) -> None: - """Resume playing paused music.""" - ... -def ResumeSound(sound: Sound|list|tuple,) -> None: - """Resume a paused sound.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def RunPhysicsStep() -> None: - """Run physics step, to be used if PHYSICS_NO_THREADS is set in your main loop.""" - ... -SCROLLBAR: int -SCROLLBAR_SIDE: int -SCROLLBAR_WIDTH: int -SCROLL_PADDING: int -SCROLL_SLIDER_PADDING: int -SCROLL_SLIDER_SIZE: int -SCROLL_SPEED: int -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 -SHADER_LOC_MAP_ALBEDO: int -SHADER_LOC_MAP_BRDF: int -SHADER_LOC_MAP_CUBEMAP: int -SHADER_LOC_MAP_EMISSION: int -SHADER_LOC_MAP_HEIGHT: int -SHADER_LOC_MAP_IRRADIANCE: int -SHADER_LOC_MAP_METALNESS: int -SHADER_LOC_MAP_NORMAL: int -SHADER_LOC_MAP_OCCLUSION: int -SHADER_LOC_MAP_PREFILTER: int -SHADER_LOC_MAP_ROUGHNESS: int -SHADER_LOC_MATRIX_MODEL: int -SHADER_LOC_MATRIX_MVP: int -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 -SHADER_LOC_VERTEX_TANGENT: int -SHADER_LOC_VERTEX_TEXCOORD01: int -SHADER_LOC_VERTEX_TEXCOORD02: int -SHADER_UNIFORM_FLOAT: int -SHADER_UNIFORM_INT: int -SHADER_UNIFORM_IVEC2: int -SHADER_UNIFORM_IVEC3: int -SHADER_UNIFORM_IVEC4: int -SHADER_UNIFORM_SAMPLER2D: int -SHADER_UNIFORM_VEC2: int -SHADER_UNIFORM_VEC3: int -SHADER_UNIFORM_VEC4: int -SLIDER: int -SLIDER_PADDING: int -SLIDER_WIDTH: int -SPINNER: int -SPIN_BUTTON_SPACING: int -SPIN_BUTTON_WIDTH: int -STATE_DISABLED: int -STATE_FOCUSED: int -STATE_NORMAL: int -STATE_PRESSED: int -STATUSBAR: int -def SaveFileData(fileName: bytes,data: Any,dataSize: int,) -> bool: - """Save data to file from byte array (write), returns true on success.""" - ... -def SaveFileText(fileName: bytes,text: bytes,) -> bool: - """Save text data to file (write), string must be '\0' terminated, returns true on success.""" - ... -def SeekMusicStream(music: Music|list|tuple,position: float,) -> None: - """Seek music to a position (in seconds).""" - ... -def SetAudioStreamBufferSizeDefault(size: int,) -> None: - """Default size for new audio streams.""" - ... -def SetAudioStreamCallback(stream: AudioStream|list|tuple,callback: Any,) -> None: - """Audio thread callback to request new data.""" - ... -def SetAudioStreamPan(stream: AudioStream|list|tuple,pan: float,) -> None: - """Set pan for audio stream (0.5 is centered).""" - ... -def SetAudioStreamPitch(stream: AudioStream|list|tuple,pitch: float,) -> None: - """Set pitch for audio stream (1.0 is base level).""" - ... -def SetAudioStreamVolume(stream: AudioStream|list|tuple,volume: float,) -> None: - """Set volume for audio stream (1.0 is max level).""" - ... -def SetAutomationEventBaseFrame(frame: int,) -> None: - """Set automation event internal base frame to start recording.""" - ... -def SetAutomationEventList(list_0: Any|list|tuple,) -> None: - """Set automation event list to record to.""" - ... -def SetClipboardText(text: bytes,) -> None: - """Set clipboard text content.""" - ... -def SetConfigFlags(flags: int,) -> None: - """Setup init configuration flags (view FLAGS).""" - ... -def SetExitKey(key: int,) -> None: - """Set a custom key to exit program (default is ESC).""" - ... -def SetGamepadMappings(mappings: bytes,) -> int: - """Set internal gamepad mappings (SDL_GameControllerDB).""" - ... -def SetGamepadVibration(gamepad: int,leftMotor: float,rightMotor: float,duration: float,) -> None: - """Set gamepad vibration for both motors (duration in seconds).""" - ... -def SetGesturesEnabled(flags: int,) -> None: - """Enable a set of gestures using flags.""" - ... -def SetLoadFileDataCallback(callback: bytes,) -> None: - """Set custom file binary data loader.""" - ... -def SetLoadFileTextCallback(callback: bytes,) -> None: - """Set custom file text data loader.""" - ... -def SetMasterVolume(volume: float,) -> None: - """Set master volume (listener).""" - ... -def SetMaterialTexture(material: Any|list|tuple,mapType: int,texture: Texture|list|tuple,) -> None: - """Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...).""" - ... -def SetModelMeshMaterial(model: Any|list|tuple,meshId: int,materialId: int,) -> None: - """Set material for a mesh.""" - ... -def SetMouseCursor(cursor: int,) -> None: - """Set mouse cursor.""" - ... -def SetMouseOffset(offsetX: int,offsetY: int,) -> None: - """Set mouse offset.""" - ... -def SetMousePosition(x: int,y: int,) -> None: - """Set mouse position XY.""" - ... -def SetMouseScale(scaleX: float,scaleY: float,) -> None: - """Set mouse scaling.""" - ... -def SetMusicPan(music: Music|list|tuple,pan: float,) -> None: - """Set pan for a music (0.5 is center).""" - ... -def SetMusicPitch(music: Music|list|tuple,pitch: float,) -> None: - """Set pitch for a music (1.0 is base level).""" - ... -def SetMusicVolume(music: Music|list|tuple,volume: float,) -> None: - """Set volume for music (1.0 is max level).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def SetPhysicsBodyRotation(body: Any|list|tuple,radians: float,) -> None: - """Sets physics body shape transform based on radians parameter.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def SetPhysicsGravity(x: float,y: float,) -> None: - """Sets physics global gravity force.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def SetPhysicsTimeStep(delta: float,) -> None: - """Sets physics fixed time step in milliseconds. 1.666666 by default.""" - ... -def SetPixelColor(dstPtr: Any,color: Color|list|tuple,format: int,) -> None: - """Set color formatted into destination pixel pointer.""" - ... -def SetRandomSeed(seed: int,) -> None: - """Set the seed for the random number generator.""" - ... -def SetSaveFileDataCallback(callback: bytes,) -> None: - """Set custom file binary data saver.""" - ... -def SetSaveFileTextCallback(callback: bytes,) -> None: - """Set custom file text data saver.""" - ... -def SetShaderValue(shader: Shader|list|tuple,locIndex: int,value: Any,uniformType: int,) -> None: - """Set shader uniform value.""" - ... -def SetShaderValueMatrix(shader: Shader|list|tuple,locIndex: int,mat: Matrix|list|tuple,) -> None: - """Set shader uniform value (matrix 4x4).""" - ... -def SetShaderValueTexture(shader: Shader|list|tuple,locIndex: int,texture: Texture|list|tuple,) -> None: - """Set shader uniform value for texture (sampler2d).""" - ... -def SetShaderValueV(shader: Shader|list|tuple,locIndex: int,value: Any,uniformType: int,count: int,) -> None: - """Set shader uniform value vector.""" - ... -def SetShapesTexture(texture: Texture|list|tuple,source: Rectangle|list|tuple,) -> None: - """Set texture and rectangle to be used on shapes drawing.""" - ... -def SetSoundPan(sound: Sound|list|tuple,pan: float,) -> None: - """Set pan for a sound (0.5 is center).""" - ... -def SetSoundPitch(sound: Sound|list|tuple,pitch: float,) -> None: - """Set pitch for a sound (1.0 is base level).""" - ... -def SetSoundVolume(sound: Sound|list|tuple,volume: float,) -> None: - """Set volume for a sound (1.0 is max level).""" - ... -def SetTargetFPS(fps: int,) -> None: - """Set target FPS (maximum).""" - ... -def SetTextLineSpacing(spacing: int,) -> None: - """Set vertical line spacing when drawing with line-breaks.""" - ... -def SetTextureFilter(texture: Texture|list|tuple,filter: int,) -> None: - """Set texture scaling filter mode.""" - ... -def SetTextureWrap(texture: Texture|list|tuple,wrap: int,) -> None: - """Set texture wrapping mode.""" - ... -def SetTraceLogCallback(callback: bytes,) -> None: - """Set custom trace log.""" - ... -def SetTraceLogLevel(logLevel: int,) -> None: - """Set the current threshold (minimum) log level.""" - ... -def SetWindowFocused() -> None: - """Set window focused.""" - ... -def SetWindowIcon(image: Image|list|tuple,) -> None: - """Set icon for window (single image, RGBA 32bit).""" - ... -def SetWindowIcons(images: Any|list|tuple,count: int,) -> None: - """Set icon for window (multiple images, RGBA 32bit).""" - ... -def SetWindowMaxSize(width: int,height: int,) -> None: - """Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE).""" - ... -def SetWindowMinSize(width: int,height: int,) -> None: - """Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE).""" - ... -def SetWindowMonitor(monitor: int,) -> None: - """Set monitor for the current window.""" - ... -def SetWindowOpacity(opacity: float,) -> None: - """Set window opacity [0.0f..1.0f].""" - ... -def SetWindowPosition(x: int,y: int,) -> None: - """Set window position on screen.""" - ... -def SetWindowSize(width: int,height: int,) -> None: - """Set window dimensions.""" - ... -def SetWindowState(flags: int,) -> None: - """Set window configuration state using flags.""" - ... -def SetWindowTitle(title: bytes,) -> None: - """Set title for window.""" - ... -def ShowCursor() -> None: - """Shows cursor.""" - ... -def StartAutomationEventRecording() -> None: - """Start recording automation events (AutomationEventList must be set).""" - ... -def StopAudioStream(stream: AudioStream|list|tuple,) -> None: - """Stop audio stream.""" - ... -def StopAutomationEventRecording() -> None: - """Stop recording automation events.""" - ... -def StopMusicStream(music: Music|list|tuple,) -> None: - """Stop music playing.""" - ... -def StopSound(sound: Sound|list|tuple,) -> None: - """Stop playing a sound.""" - ... -def SwapScreenBuffer() -> None: - """Swap back buffer with front buffer (screen drawing).""" - ... -TEXTBOX: int -TEXTURE_FILTER_ANISOTROPIC_16X: int -TEXTURE_FILTER_ANISOTROPIC_4X: int -TEXTURE_FILTER_ANISOTROPIC_8X: int -TEXTURE_FILTER_BILINEAR: int -TEXTURE_FILTER_POINT: int -TEXTURE_FILTER_TRILINEAR: int -TEXTURE_WRAP_CLAMP: int -TEXTURE_WRAP_MIRROR_CLAMP: int -TEXTURE_WRAP_MIRROR_REPEAT: int -TEXTURE_WRAP_REPEAT: int -TEXT_ALIGNMENT: int -TEXT_ALIGNMENT_VERTICAL: int -TEXT_ALIGN_BOTTOM: int -TEXT_ALIGN_CENTER: int -TEXT_ALIGN_LEFT: int -TEXT_ALIGN_MIDDLE: int -TEXT_ALIGN_RIGHT: int -TEXT_ALIGN_TOP: int -TEXT_COLOR_DISABLED: int -TEXT_COLOR_FOCUSED: int -TEXT_COLOR_NORMAL: int -TEXT_COLOR_PRESSED: int -TEXT_LINE_SPACING: int -TEXT_PADDING: int -TEXT_READONLY: int -TEXT_SIZE: int -TEXT_SPACING: int -TEXT_WRAP_CHAR: int -TEXT_WRAP_MODE: int -TEXT_WRAP_NONE: int -TEXT_WRAP_WORD: int -TOGGLE: int -def TakeScreenshot(fileName: bytes,) -> None: - """Takes a screenshot of current screen (filename extension defines format).""" - ... -def TextAppend(text: bytes,append: bytes,position: Any,) -> None: - """Append text at specific position and move cursor!.""" - ... -def TextCopy(dst: bytes,src: bytes,) -> int: - """Copy one string to another, returns bytes copied.""" - ... -def TextFindIndex(text: bytes,find: bytes,) -> int: - """Find first text occurrence within a string.""" - ... -def TextFormat(*args) -> bytes: - """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI""" - ... -def TextInsert(text: bytes,insert: bytes,position: int,) -> bytes: - """Insert text in a position (WARNING: memory must be freed!).""" - ... -def TextIsEqual(text1: bytes,text2: bytes,) -> bool: - """Check if two text string are equal.""" - ... -def TextJoin(textList: list[bytes],count: int,delimiter: bytes,) -> bytes: - """Join text strings with delimiter.""" - ... -def TextLength(text: bytes,) -> int: - """Get text length, checks for '\0' ending.""" - ... -def TextReplace(text: bytes,replace: bytes,by: bytes,) -> bytes: - """Replace text string (WARNING: memory must be freed!).""" - ... -def TextSplit(text: bytes,delimiter: bytes,count: Any,) -> list[bytes]: - """Split text into multiple strings.""" - ... -def TextSubtext(text: bytes,position: int,length: int,) -> bytes: - """Get a piece of a text string.""" - ... -def TextToCamel(text: bytes,) -> bytes: - """Get Camel case notation version of provided string.""" - ... -def TextToFloat(text: bytes,) -> float: - """Get float value from text (negative values not supported).""" - ... -def TextToInteger(text: bytes,) -> int: - """Get integer value from text (negative values not supported).""" - ... -def TextToLower(text: bytes,) -> bytes: - """Get lower case version of provided string.""" - ... -def TextToPascal(text: bytes,) -> bytes: - """Get Pascal case notation version of provided string.""" - ... -def TextToSnake(text: bytes,) -> bytes: - """Get Snake case notation version of provided string.""" - ... -def TextToUpper(text: bytes,) -> bytes: - """Get upper case version of provided string.""" - ... -def ToggleBorderlessWindowed() -> None: - """Toggle window state: borderless windowed, resizes window to match monitor resolution.""" - ... -def ToggleFullscreen() -> None: - """Toggle window state: fullscreen/windowed, resizes monitor to match window resolution.""" - ... -def TraceLog(*args) -> None: - """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI""" - ... -def UnloadAudioStream(stream: AudioStream|list|tuple,) -> None: - """Unload audio stream and free memory.""" - ... -def UnloadAutomationEventList(list_0: AutomationEventList|list|tuple,) -> None: - """Unload automation events list from file.""" - ... -def UnloadCodepoints(codepoints: Any,) -> None: - """Unload codepoints data from memory.""" - ... -def UnloadDirectoryFiles(files: FilePathList|list|tuple,) -> None: - """Unload filepaths.""" - ... -def UnloadDroppedFiles(files: FilePathList|list|tuple,) -> None: - """Unload dropped filepaths.""" - ... -def UnloadFileData(data: bytes,) -> None: - """Unload file data allocated by LoadFileData().""" - ... -def UnloadFileText(text: bytes,) -> None: - """Unload file text data allocated by LoadFileText().""" - ... -def UnloadFont(font: Font|list|tuple,) -> None: - """Unload font from GPU memory (VRAM).""" - ... -def UnloadFontData(glyphs: Any|list|tuple,glyphCount: int,) -> None: - """Unload font chars info data (RAM).""" - ... -def UnloadImage(image: Image|list|tuple,) -> None: - """Unload image from CPU memory (RAM).""" - ... -def UnloadImageColors(colors: Any|list|tuple,) -> None: - """Unload color data loaded with LoadImageColors().""" - ... -def UnloadImagePalette(colors: Any|list|tuple,) -> None: - """Unload colors palette loaded with LoadImagePalette().""" - ... -def UnloadMaterial(material: Material|list|tuple,) -> None: - """Unload material from GPU memory (VRAM).""" - ... -def UnloadMesh(mesh: Mesh|list|tuple,) -> None: - """Unload mesh data from CPU and GPU.""" - ... -def UnloadModel(model: Model|list|tuple,) -> None: - """Unload model (including meshes) from memory (RAM and/or VRAM).""" - ... -def UnloadModelAnimation(anim: ModelAnimation|list|tuple,) -> None: - """Unload animation data.""" - ... -def UnloadModelAnimations(animations: Any|list|tuple,animCount: int,) -> None: - """Unload animation array data.""" - ... -def UnloadMusicStream(music: Music|list|tuple,) -> None: - """Unload music stream.""" - ... -def UnloadRandomSequence(sequence: Any,) -> None: - """Unload random values sequence.""" - ... -def UnloadRenderTexture(target: RenderTexture|list|tuple,) -> None: - """Unload render texture from GPU memory (VRAM).""" - ... -def UnloadShader(shader: Shader|list|tuple,) -> None: - """Unload shader from GPU memory (VRAM).""" - ... -def UnloadSound(sound: Sound|list|tuple,) -> None: - """Unload sound.""" - ... -def UnloadSoundAlias(alias: Sound|list|tuple,) -> None: - """Unload a sound alias (does not deallocate sample data).""" - ... -def UnloadTexture(texture: Texture|list|tuple,) -> None: - """Unload texture from GPU memory (VRAM).""" - ... -def UnloadUTF8(text: bytes,) -> None: - """Unload UTF-8 text encoded from codepoints array.""" - ... -def UnloadVrStereoConfig(config: VrStereoConfig|list|tuple,) -> None: - """Unload VR stereo config.""" - ... -def UnloadWave(wave: Wave|list|tuple,) -> None: - """Unload wave data.""" - ... -def UnloadWaveSamples(samples: Any,) -> None: - """Unload samples data loaded with LoadWaveSamples().""" - ... -def UpdateAudioStream(stream: AudioStream|list|tuple,data: Any,frameCount: int,) -> None: - """Update audio stream buffers with data.""" - ... -def UpdateCamera(camera: Any|list|tuple,mode: int,) -> None: - """Update camera position for selected mode.""" - ... -def UpdateCameraPro(camera: Any|list|tuple,movement: Vector3|list|tuple,rotation: Vector3|list|tuple,zoom: float,) -> None: - """Update camera movement/rotation.""" - ... -def UpdateMeshBuffer(mesh: Mesh|list|tuple,index: int,data: Any,dataSize: int,offset: int,) -> None: - """Update mesh vertex data in GPU for a specific buffer index.""" - ... -def UpdateModelAnimation(model: Model|list|tuple,anim: ModelAnimation|list|tuple,frame: int,) -> None: - """Update model animation pose (CPU).""" - ... -def UpdateModelAnimationBones(model: Model|list|tuple,anim: ModelAnimation|list|tuple,frame: int,) -> None: - """Update model animation mesh bone matrices (GPU skinning).""" - ... -def UpdateMusicStream(music: Music|list|tuple,) -> None: - """Updates buffers for music streaming.""" - ... -def UpdateSound(sound: Sound|list|tuple,data: Any,sampleCount: int,) -> None: - """Update sound buffer with new data.""" - ... -def UpdateTexture(texture: Texture|list|tuple,pixels: Any,) -> None: - """Update GPU texture with new data.""" - ... -def UpdateTextureRec(texture: Texture|list|tuple,rec: Rectangle|list|tuple,pixels: Any,) -> None: - """Update GPU texture rectangle with new data.""" - ... -def UploadMesh(mesh: Any|list|tuple,dynamic: bool,) -> None: - """Upload mesh vertex data in GPU and provide VAO/VBO ids.""" - ... -VALUEBOX: int -def Vector2Add(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2AddValue(v: Vector2|list|tuple,add: float,) -> Vector2: - """.""" - ... -def Vector2Angle(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Clamp(v: Vector2|list|tuple,min_1: Vector2|list|tuple,max_2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2ClampValue(v: Vector2|list|tuple,min_1: float,max_2: float,) -> Vector2: - """.""" - ... -def Vector2Distance(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2DistanceSqr(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Divide(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2DotProduct(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Equals(p: Vector2|list|tuple,q: Vector2|list|tuple,) -> int: - """.""" - ... -def Vector2Invert(v: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Length(v: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2LengthSqr(v: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Lerp(v1: Vector2|list|tuple,v2: Vector2|list|tuple,amount: float,) -> Vector2: - """.""" - ... -def Vector2LineAngle(start: Vector2|list|tuple,end: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Max(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Min(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2MoveTowards(v: Vector2|list|tuple,target: Vector2|list|tuple,maxDistance: float,) -> Vector2: - """.""" - ... -def Vector2Multiply(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Negate(v: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Normalize(v: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2One() -> Vector2: - """.""" - ... -def Vector2Reflect(v: Vector2|list|tuple,normal: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Refract(v: Vector2|list|tuple,n: Vector2|list|tuple,r: float,) -> Vector2: - """.""" - ... -def Vector2Rotate(v: Vector2|list|tuple,angle: float,) -> Vector2: - """.""" - ... -def Vector2Scale(v: Vector2|list|tuple,scale: float,) -> Vector2: - """.""" - ... -def Vector2Subtract(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2SubtractValue(v: Vector2|list|tuple,sub: float,) -> Vector2: - """.""" - ... -def Vector2Transform(v: Vector2|list|tuple,mat: Matrix|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Zero() -> Vector2: - """.""" - ... -def Vector3Add(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3AddValue(v: Vector3|list|tuple,add: float,) -> Vector3: - """.""" - ... -def Vector3Angle(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3Barycenter(p: Vector3|list|tuple,a: Vector3|list|tuple,b: Vector3|list|tuple,c: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Clamp(v: Vector3|list|tuple,min_1: Vector3|list|tuple,max_2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3ClampValue(v: Vector3|list|tuple,min_1: float,max_2: float,) -> Vector3: - """.""" - ... -def Vector3CrossProduct(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3CubicHermite(v1: Vector3|list|tuple,tangent1: Vector3|list|tuple,v2: Vector3|list|tuple,tangent2: Vector3|list|tuple,amount: float,) -> Vector3: - """.""" - ... -def Vector3Distance(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3DistanceSqr(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3Divide(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3DotProduct(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3Equals(p: Vector3|list|tuple,q: Vector3|list|tuple,) -> int: - """.""" - ... -def Vector3Invert(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Length(v: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3LengthSqr(v: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3Lerp(v1: Vector3|list|tuple,v2: Vector3|list|tuple,amount: float,) -> Vector3: - """.""" - ... -def Vector3Max(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Min(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3MoveTowards(v: Vector3|list|tuple,target: Vector3|list|tuple,maxDistance: float,) -> Vector3: - """.""" - ... -def Vector3Multiply(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Negate(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Normalize(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3One() -> Vector3: - """.""" - ... -def Vector3OrthoNormalize(v1: Any|list|tuple,v2: Any|list|tuple,) -> None: - """.""" - ... -def Vector3Perpendicular(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Project(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Reflect(v: Vector3|list|tuple,normal: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Refract(v: Vector3|list|tuple,n: Vector3|list|tuple,r: float,) -> Vector3: - """.""" - ... -def Vector3Reject(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3RotateByAxisAngle(v: Vector3|list|tuple,axis: Vector3|list|tuple,angle: float,) -> Vector3: - """.""" - ... -def Vector3RotateByQuaternion(v: Vector3|list|tuple,q: Vector4|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Scale(v: Vector3|list|tuple,scalar: float,) -> Vector3: - """.""" - ... -def Vector3Subtract(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3SubtractValue(v: Vector3|list|tuple,sub: float,) -> Vector3: - """.""" - ... -def Vector3ToFloatV(v: Vector3|list|tuple,) -> float3: - """.""" - ... -def Vector3Transform(v: Vector3|list|tuple,mat: Matrix|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Unproject(source: Vector3|list|tuple,projection: Matrix|list|tuple,view: Matrix|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Zero() -> Vector3: - """.""" - ... -def Vector4Add(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4AddValue(v: Vector4|list|tuple,add: float,) -> Vector4: - """.""" - ... -def Vector4Distance(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4DistanceSqr(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4Divide(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4DotProduct(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4Equals(p: Vector4|list|tuple,q: Vector4|list|tuple,) -> int: - """.""" - ... -def Vector4Invert(v: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4Length(v: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4LengthSqr(v: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4Lerp(v1: Vector4|list|tuple,v2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def Vector4Max(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4Min(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4MoveTowards(v: Vector4|list|tuple,target: Vector4|list|tuple,maxDistance: float,) -> Vector4: - """.""" - ... -def Vector4Multiply(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4Negate(v: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4Normalize(v: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4One() -> Vector4: - """.""" - ... -def Vector4Scale(v: Vector4|list|tuple,scale: float,) -> Vector4: - """.""" - ... -def Vector4Subtract(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4SubtractValue(v: Vector4|list|tuple,add: float,) -> Vector4: - """.""" - ... -def Vector4Zero() -> Vector4: - """.""" - ... -def WaitTime(seconds: float,) -> None: - """Wait for some time (halt program execution).""" - ... -def WaveCopy(wave: Wave|list|tuple,) -> Wave: - """Copy a wave to a new wave.""" - ... -def WaveCrop(wave: Any|list|tuple,initFrame: int,finalFrame: int,) -> None: - """Crop a wave to defined frames range.""" - ... -def WaveFormat(wave: Any|list|tuple,sampleRate: int,sampleSize: int,channels: int,) -> None: - """Convert wave data to desired format.""" - ... -def WindowShouldClose() -> bool: - """Check if application should close (KEY_ESCAPE pressed or windows close icon clicked).""" - ... -def Wrap(value: float,min_1: float,max_2: float,) -> float: - """.""" - ... -def glfwCreateCursor(image: Any|list|tuple,xhot: int,yhot: int,) -> Any: - """.""" - ... -def glfwCreateStandardCursor(shape: int,) -> Any: - """.""" - ... -def glfwCreateWindow(width: int,height: int,title: bytes,monitor: Any|list|tuple,share: Any|list|tuple,) -> Any: - """.""" - ... -def glfwDefaultWindowHints() -> None: - """.""" - ... -def glfwDestroyCursor(cursor: Any|list|tuple,) -> None: - """.""" - ... -def glfwDestroyWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwExtensionSupported(extension: bytes,) -> int: - """.""" - ... -def glfwFocusWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwGetClipboardString(window: Any|list|tuple,) -> bytes: - """.""" - ... -def glfwGetCurrentContext() -> Any: - """.""" - ... -def glfwGetCursorPos(window: Any|list|tuple,xpos: Any,ypos: Any,) -> None: - """.""" - ... -def glfwGetError(description: list[bytes],) -> int: - """.""" - ... -def glfwGetFramebufferSize(window: Any|list|tuple,width: Any,height: Any,) -> None: - """.""" - ... -def glfwGetGamepadName(jid: int,) -> bytes: - """.""" - ... -def glfwGetGamepadState(jid: int,state: Any|list|tuple,) -> int: - """.""" - ... -def glfwGetGammaRamp(monitor: Any|list|tuple,) -> Any: - """.""" - ... -def glfwGetInputMode(window: Any|list|tuple,mode: int,) -> int: - """.""" - ... -def glfwGetJoystickAxes(jid: int,count: Any,) -> Any: - """.""" - ... -def glfwGetJoystickButtons(jid: int,count: Any,) -> bytes: - """.""" - ... -def glfwGetJoystickGUID(jid: int,) -> bytes: - """.""" - ... -def glfwGetJoystickHats(jid: int,count: Any,) -> bytes: - """.""" - ... -def glfwGetJoystickName(jid: int,) -> bytes: - """.""" - ... -def glfwGetJoystickUserPointer(jid: int,) -> Any: - """.""" - ... -def glfwGetKey(window: Any|list|tuple,key: int,) -> int: - """.""" - ... -def glfwGetKeyName(key: int,scancode: int,) -> bytes: - """.""" - ... -def glfwGetKeyScancode(key: int,) -> int: - """.""" - ... -def glfwGetMonitorContentScale(monitor: Any|list|tuple,xscale: Any,yscale: Any,) -> None: - """.""" - ... -def glfwGetMonitorName(monitor: Any|list|tuple,) -> bytes: - """.""" - ... -def glfwGetMonitorPhysicalSize(monitor: Any|list|tuple,widthMM: Any,heightMM: Any,) -> None: - """.""" - ... -def glfwGetMonitorPos(monitor: Any|list|tuple,xpos: Any,ypos: Any,) -> None: - """.""" - ... -def glfwGetMonitorUserPointer(monitor: Any|list|tuple,) -> Any: - """.""" - ... -def glfwGetMonitorWorkarea(monitor: Any|list|tuple,xpos: Any,ypos: Any,width: Any,height: Any,) -> None: - """.""" - ... -def glfwGetMonitors(count: Any,) -> Any: - """.""" - ... -def glfwGetMouseButton(window: Any|list|tuple,button: int,) -> int: - """.""" - ... -def glfwGetPlatform() -> int: - """.""" - ... -def glfwGetPrimaryMonitor() -> Any: - """.""" - ... -def glfwGetProcAddress(procname: bytes,) -> Any: - """.""" - ... -def glfwGetRequiredInstanceExtensions(count: Any,) -> list[bytes]: - """.""" - ... -def glfwGetTime() -> float: - """.""" - ... -def glfwGetTimerFrequency() -> int: - """.""" - ... -def glfwGetTimerValue() -> int: - """.""" - ... -def glfwGetVersion(major: Any,minor: Any,rev: Any,) -> None: - """.""" - ... -def glfwGetVersionString() -> bytes: - """.""" - ... -def glfwGetVideoMode(monitor: Any|list|tuple,) -> Any: - """.""" - ... -def glfwGetVideoModes(monitor: Any|list|tuple,count: Any,) -> Any: - """.""" - ... -def glfwGetWindowAttrib(window: Any|list|tuple,attrib: int,) -> int: - """.""" - ... -def glfwGetWindowContentScale(window: Any|list|tuple,xscale: Any,yscale: Any,) -> None: - """.""" - ... -def glfwGetWindowFrameSize(window: Any|list|tuple,left: Any,top: Any,right: Any,bottom: Any,) -> None: - """.""" - ... -def glfwGetWindowMonitor(window: Any|list|tuple,) -> Any: - """.""" - ... -def glfwGetWindowOpacity(window: Any|list|tuple,) -> float: - """.""" - ... -def glfwGetWindowPos(window: Any|list|tuple,xpos: Any,ypos: Any,) -> None: - """.""" - ... -def glfwGetWindowSize(window: Any|list|tuple,width: Any,height: Any,) -> None: - """.""" - ... -def glfwGetWindowTitle(window: Any|list|tuple,) -> bytes: - """.""" - ... -def glfwGetWindowUserPointer(window: Any|list|tuple,) -> Any: - """.""" - ... -def glfwHideWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwIconifyWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwInit() -> int: - """.""" - ... -def glfwInitAllocator(allocator: Any|list|tuple,) -> None: - """.""" - ... -def glfwInitHint(hint: int,value: int,) -> None: - """.""" - ... -def glfwJoystickIsGamepad(jid: int,) -> int: - """.""" - ... -def glfwJoystickPresent(jid: int,) -> int: - """.""" - ... -def glfwMakeContextCurrent(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwMaximizeWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwPlatformSupported(platform: int,) -> int: - """.""" - ... -def glfwPollEvents() -> None: - """.""" - ... -def glfwPostEmptyEvent() -> None: - """.""" - ... -def glfwRawMouseMotionSupported() -> int: - """.""" - ... -def glfwRequestWindowAttention(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwRestoreWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwSetCharCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetCharModsCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetClipboardString(window: Any|list|tuple,string: bytes,) -> None: - """.""" - ... -def glfwSetCursor(window: Any|list|tuple,cursor: Any|list|tuple,) -> None: - """.""" - ... -def glfwSetCursorEnterCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetCursorPos(window: Any|list|tuple,xpos: float,ypos: float,) -> None: - """.""" - ... -def glfwSetCursorPosCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetDropCallback(window: Any|list|tuple,callback: list[bytes]|list|tuple,) -> list[bytes]: - """.""" - ... -def glfwSetErrorCallback(callback: bytes,) -> bytes: - """.""" - ... -def glfwSetFramebufferSizeCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetGamma(monitor: Any|list|tuple,gamma: float,) -> None: - """.""" - ... -def glfwSetGammaRamp(monitor: Any|list|tuple,ramp: Any|list|tuple,) -> None: - """.""" - ... -def glfwSetInputMode(window: Any|list|tuple,mode: int,value: int,) -> None: - """.""" - ... -def glfwSetJoystickCallback(callback: Any,) -> Any: - """.""" - ... -def glfwSetJoystickUserPointer(jid: int,pointer: Any,) -> None: - """.""" - ... -def glfwSetKeyCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetMonitorCallback(callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetMonitorUserPointer(monitor: Any|list|tuple,pointer: Any,) -> None: - """.""" - ... -def glfwSetMouseButtonCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetScrollCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetTime(time: float,) -> None: - """.""" - ... -def glfwSetWindowAspectRatio(window: Any|list|tuple,numer: int,denom: int,) -> None: - """.""" - ... -def glfwSetWindowAttrib(window: Any|list|tuple,attrib: int,value: int,) -> None: - """.""" - ... -def glfwSetWindowCloseCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowContentScaleCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowFocusCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowIcon(window: Any|list|tuple,count: int,images: Any|list|tuple,) -> None: - """.""" - ... -def glfwSetWindowIconifyCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowMaximizeCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowMonitor(window: Any|list|tuple,monitor: Any|list|tuple,xpos: int,ypos: int,width: int,height: int,refreshRate: int,) -> None: - """.""" - ... -def glfwSetWindowOpacity(window: Any|list|tuple,opacity: float,) -> None: - """.""" - ... -def glfwSetWindowPos(window: Any|list|tuple,xpos: int,ypos: int,) -> None: - """.""" - ... -def glfwSetWindowPosCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowRefreshCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowShouldClose(window: Any|list|tuple,value: int,) -> None: - """.""" - ... -def glfwSetWindowSize(window: Any|list|tuple,width: int,height: int,) -> None: - """.""" - ... -def glfwSetWindowSizeCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowSizeLimits(window: Any|list|tuple,minwidth: int,minheight: int,maxwidth: int,maxheight: int,) -> None: - """.""" - ... -def glfwSetWindowTitle(window: Any|list|tuple,title: bytes,) -> None: - """.""" - ... -def glfwSetWindowUserPointer(window: Any|list|tuple,pointer: Any,) -> None: - """.""" - ... -def glfwShowWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwSwapBuffers(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwSwapInterval(interval: int,) -> None: - """.""" - ... -def glfwTerminate() -> None: - """.""" - ... -def glfwUpdateGamepadMappings(string: bytes,) -> int: - """.""" - ... -def glfwVulkanSupported() -> int: - """.""" - ... -def glfwWaitEvents() -> None: - """.""" - ... -def glfwWaitEventsTimeout(timeout: float,) -> None: - """.""" - ... -def glfwWindowHint(hint: int,value: int,) -> None: - """.""" - ... -def glfwWindowHintString(hint: int,value: bytes,) -> None: - """.""" - ... -def glfwWindowShouldClose(window: Any|list|tuple,) -> int: - """.""" - ... -def rlActiveDrawBuffers(count: int,) -> None: - """Activate multiple draw color buffers.""" - ... -def rlActiveTextureSlot(slot: int,) -> None: - """Select and active a texture slot.""" - ... -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.""" - ... -def rlBindShaderBuffer(id: int,index: int,) -> None: - """Bind SSBO buffer.""" - ... -def rlBlitFramebuffer(srcX: int,srcY: int,srcWidth: int,srcHeight: int,dstX: int,dstY: int,dstWidth: int,dstHeight: int,bufferMask: int,) -> None: - """Blit active framebuffer to main framebuffer.""" - ... -def rlCheckErrors() -> None: - """Check and log OpenGL error codes.""" - ... -def rlCheckRenderBatchLimit(vCount: int,) -> bool: - """Check internal buffer overflow for a given number of vertex.""" - ... -def rlClearColor(r: bytes,g: bytes,b: bytes,a: bytes,) -> None: - """Clear color buffer with color.""" - ... -def rlClearScreenBuffers() -> None: - """Clear used screen buffers (color and depth).""" - ... -def rlColor3f(x: float,y: float,z: float,) -> None: - """Define one vertex (color) - 3 float.""" - ... -def rlColor4f(x: float,y: float,z: float,w: float,) -> None: - """Define one vertex (color) - 4 float.""" - ... -def rlColor4ub(r: bytes,g: bytes,b: bytes,a: bytes,) -> None: - """Define one vertex (color) - 4 byte.""" - ... -def rlColorMask(r: bool,g: bool,b: bool,a: bool,) -> None: - """Color mask control.""" - ... -def rlCompileShader(shaderCode: bytes,type: int,) -> int: - """Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER).""" - ... -def rlComputeShaderDispatch(groupX: int,groupY: int,groupZ: int,) -> None: - """Dispatch compute shader (equivalent to *draw* for graphics pipeline).""" - ... -def rlCopyShaderBuffer(destId: int,srcId: int,destOffset: int,srcOffset: int,count: int,) -> None: - """Copy SSBO data between buffers.""" - ... -def rlCubemapParameters(id: int,param: int,value: int,) -> None: - """Set cubemap parameters (filter, wrap).""" - ... -def rlDisableBackfaceCulling() -> None: - """Disable backface culling.""" - ... -def rlDisableColorBlend() -> None: - """Disable color blending.""" - ... -def rlDisableDepthMask() -> None: - """Disable depth write.""" - ... -def rlDisableDepthTest() -> None: - """Disable depth test.""" - ... -def rlDisableFramebuffer() -> None: - """Disable render texture (fbo), return to default framebuffer.""" - ... -def rlDisableScissorTest() -> None: - """Disable scissor test.""" - ... -def rlDisableShader() -> None: - """Disable shader program.""" - ... -def rlDisableSmoothLines() -> None: - """Disable line aliasing.""" - ... -def rlDisableStereoRender() -> None: - """Disable stereo rendering.""" - ... -def rlDisableTexture() -> None: - """Disable texture.""" - ... -def rlDisableTextureCubemap() -> None: - """Disable texture cubemap.""" - ... -def rlDisableVertexArray() -> None: - """Disable vertex array (VAO, if supported).""" - ... -def rlDisableVertexAttribute(index: int,) -> None: - """Disable vertex attribute index.""" - ... -def rlDisableVertexBuffer() -> None: - """Disable vertex buffer (VBO).""" - ... -def rlDisableVertexBufferElement() -> None: - """Disable vertex buffer element (VBO element).""" - ... -def rlDisableWireMode() -> None: - """Disable wire (and point) mode.""" - ... -def rlDrawRenderBatch(batch: Any|list|tuple,) -> None: - """Draw render batch data (Update->Draw->Reset).""" - ... -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.""" - ... -def rlEnableColorBlend() -> None: - """Enable color blending.""" - ... -def rlEnableDepthMask() -> None: - """Enable depth write.""" - ... -def rlEnableDepthTest() -> None: - """Enable depth test.""" - ... -def rlEnableFramebuffer(id: int,) -> None: - """Enable render texture (fbo).""" - ... -def rlEnablePointMode() -> None: - """Enable point mode.""" - ... -def rlEnableScissorTest() -> None: - """Enable scissor test.""" - ... -def rlEnableShader(id: int,) -> None: - """Enable shader program.""" - ... -def rlEnableSmoothLines() -> None: - """Enable line aliasing.""" - ... -def rlEnableStereoRender() -> None: - """Enable stereo rendering.""" - ... -def rlEnableTexture(id: int,) -> None: - """Enable texture.""" - ... -def rlEnableTextureCubemap(id: int,) -> None: - """Enable texture cubemap.""" - ... -def rlEnableVertexArray(vaoId: int,) -> bool: - """Enable vertex array (VAO, if supported).""" - ... -def rlEnableVertexAttribute(index: int,) -> None: - """Enable vertex attribute index.""" - ... -def rlEnableVertexBuffer(id: int,) -> None: - """Enable vertex buffer (VBO).""" - ... -def rlEnableVertexBufferElement(id: int,) -> None: - """Enable vertex buffer element (VBO element).""" - ... -def rlEnableWireMode() -> None: - """Enable wire mode.""" - ... -def rlEnd() -> None: - """Finish vertex providing.""" - ... -def rlFramebufferAttach(fboId: int,texId: int,attachType: int,texType: int,mipLevel: int,) -> None: - """Attach texture/renderbuffer to a framebuffer.""" - ... -def rlFramebufferComplete(id: int,) -> bool: - """Verify framebuffer is complete.""" - ... -def rlFrustum(left: float,right: float,bottom: float,top: float,znear: float,zfar: float,) -> None: - """.""" - ... -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.""" - ... -def rlGetFramebufferWidth() -> int: - """Get default framebuffer width.""" - ... -def rlGetGlTextureFormats(format: int,glInternalFormat: Any,glFormat: Any,glType: Any,) -> None: - """Get OpenGL internal formats.""" - ... -def rlGetLineWidth() -> float: - """Get the line drawing width.""" - ... -def rlGetLocationAttrib(shaderId: int,attribName: bytes,) -> int: - """Get shader location attribute.""" - ... -def rlGetLocationUniform(shaderId: int,uniformName: bytes,) -> int: - """Get shader location uniform.""" - ... -def rlGetMatrixModelview() -> Matrix: - """Get internal modelview matrix.""" - ... -def rlGetMatrixProjection() -> Matrix: - """Get internal projection matrix.""" - ... -def rlGetMatrixProjectionStereo(eye: int,) -> Matrix: - """Get internal projection matrix for stereo render (selected eye).""" - ... -def rlGetMatrixTransform() -> Matrix: - """Get internal accumulated transform matrix.""" - ... -def rlGetMatrixViewOffsetStereo(eye: int,) -> Matrix: - """Get internal view offset matrix for stereo render (selected eye).""" - ... -def rlGetPixelFormatName(format: int,) -> bytes: - """Get name string for pixel format.""" - ... -def rlGetShaderBufferSize(id: int,) -> int: - """Get SSBO buffer size.""" - ... -def rlGetShaderIdDefault() -> int: - """Get default shader id.""" - ... -def rlGetShaderLocsDefault() -> Any: - """Get default shader locations.""" - ... -def rlGetTextureIdDefault() -> int: - """Get default texture id.""" - ... -def rlGetVersion() -> int: - """Get current OpenGL version.""" - ... -def rlIsStereoRenderEnabled() -> bool: - """Check if stereo render is enabled.""" - ... -def rlLoadComputeShaderProgram(shaderId: int,) -> int: - """Load compute shader program.""" - ... -def rlLoadDrawCube() -> None: - """Load and draw a cube.""" - ... -def rlLoadDrawQuad() -> None: - """Load and draw a quad.""" - ... -def rlLoadExtensions(loader: Any,) -> None: - """Load OpenGL extensions (loader function required).""" - ... -def rlLoadFramebuffer() -> int: - """Load an empty framebuffer.""" - ... -def rlLoadIdentity() -> None: - """Reset current matrix to identity matrix.""" - ... -def rlLoadRenderBatch(numBuffers: int,bufferElements: int,) -> rlRenderBatch: - """Load a render batch system.""" - ... -def rlLoadShaderBuffer(size: int,data: Any,usageHint: int,) -> int: - """Load shader storage buffer object (SSBO).""" - ... -def rlLoadShaderCode(vsCode: bytes,fsCode: bytes,) -> int: - """Load shader from code strings.""" - ... -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 data.""" - ... -def rlLoadTextureCubemap(data: Any,size: int,format: int,mipmapCount: int,) -> int: - """Load texture cubemap data.""" - ... -def rlLoadTextureDepth(width: int,height: int,useRenderBuffer: bool,) -> int: - """Load depth texture/renderbuffer (to be attached to fbo).""" - ... -def rlLoadVertexArray() -> int: - """Load vertex array (vao) if supported.""" - ... -def rlLoadVertexBuffer(buffer: Any,size: int,dynamic: bool,) -> int: - """Load a vertex buffer object.""" - ... -def rlLoadVertexBufferElement(buffer: Any,size: int,dynamic: bool,) -> int: - """Load vertex buffer elements object.""" - ... -def rlMatrixMode(mode: int,) -> None: - """Choose the current matrix to be transformed.""" - ... -def rlMultMatrixf(matf: Any,) -> None: - """Multiply the current matrix by another matrix.""" - ... -def rlNormal3f(x: float,y: float,z: float,) -> None: - """Define one vertex (normal) - 3 float.""" - ... -def rlOrtho(left: float,right: float,bottom: float,top: float,znear: float,zfar: float,) -> None: - """.""" - ... -def rlPopMatrix() -> None: - """Pop latest inserted matrix from stack.""" - ... -def rlPushMatrix() -> None: - """Push the current matrix to stack.""" - ... -def rlReadScreenPixels(width: int,height: int,) -> bytes: - """Read screen pixel data (color buffer).""" - ... -def rlReadShaderBuffer(id: int,dest: Any,count: int,offset: int,) -> None: - """Read SSBO buffer data (GPU->CPU).""" - ... -def rlReadTexturePixels(id: int,width: int,height: int,format: int,) -> Any: - """Read texture pixel data.""" - ... -def rlRotatef(angle: float,x: float,y: float,z: float,) -> None: - """Multiply the current matrix by a rotation matrix.""" - ... -def rlScalef(x: float,y: float,z: float,) -> None: - """Multiply the current matrix by a scaling matrix.""" - ... -def rlScissor(x: int,y: int,width: int,height: int,) -> None: - """Scissor test.""" - ... -def rlSetBlendFactors(glSrcFactor: int,glDstFactor: int,glEquation: int,) -> None: - """Set blending mode factor and equation (using OpenGL factors).""" - ... -def rlSetBlendFactorsSeparate(glSrcRGB: int,glDstRGB: int,glSrcAlpha: int,glDstAlpha: int,glEqRGB: int,glEqAlpha: int,) -> None: - """Set blending mode factors and equations separately (using OpenGL factors).""" - ... -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.""" - ... -def rlSetFramebufferHeight(height: int,) -> None: - """Set current framebuffer height.""" - ... -def rlSetFramebufferWidth(width: int,) -> None: - """Set current framebuffer width.""" - ... -def rlSetLineWidth(width: float,) -> None: - """Set the line drawing width.""" - ... -def rlSetMatrixModelview(view: Matrix|list|tuple,) -> None: - """Set a custom modelview matrix (replaces internal modelview matrix).""" - ... -def rlSetMatrixProjection(proj: Matrix|list|tuple,) -> None: - """Set a custom projection matrix (replaces internal projection matrix).""" - ... -def rlSetMatrixProjectionStereo(right: Matrix|list|tuple,left: Matrix|list|tuple,) -> None: - """Set eyes projection matrices for stereo rendering.""" - ... -def rlSetMatrixViewOffsetStereo(right: Matrix|list|tuple,left: Matrix|list|tuple,) -> None: - """Set eyes view offsets matrices for stereo rendering.""" - ... -def rlSetRenderBatchActive(batch: Any|list|tuple,) -> None: - """Set the active render batch for rlgl (NULL for default internal).""" - ... -def rlSetShader(id: int,locs: Any,) -> None: - """Set shader currently active (id and locations).""" - ... -def rlSetTexture(id: int,) -> None: - """Set current texture for render batch and check buffers limits.""" - ... -def rlSetUniform(locIndex: int,value: Any,uniformType: int,count: int,) -> None: - """Set shader value uniform.""" - ... -def rlSetUniformMatrices(locIndex: int,mat: Any|list|tuple,count: int,) -> None: - """Set shader value matrices.""" - ... -def rlSetUniformMatrix(locIndex: int,mat: Matrix|list|tuple,) -> 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,offset: int,) -> None: - """Set vertex attribute data configuration.""" - ... -def rlSetVertexAttributeDefault(locIndex: int,value: Any,attribType: int,count: int,) -> None: - """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.""" - ... -def rlTextureParameters(id: int,param: int,value: int,) -> None: - """Set texture parameters (filter, wrap).""" - ... -def rlTranslatef(x: float,y: float,z: float,) -> None: - """Multiply the current matrix by a translation matrix.""" - ... -def rlUnloadFramebuffer(id: int,) -> None: - """Delete framebuffer from GPU.""" - ... -def rlUnloadRenderBatch(batch: rlRenderBatch|list|tuple,) -> None: - """Unload render batch system.""" - ... -def rlUnloadShaderBuffer(ssboId: int,) -> None: - """Unload shader storage buffer object (SSBO).""" - ... -def rlUnloadShaderProgram(id: int,) -> None: - """Unload shader program.""" - ... -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 texture with new data on GPU.""" - ... -def rlUpdateVertexBuffer(bufferId: int,data: Any,dataSize: int,offset: int,) -> None: - """Update vertex buffer object data on GPU buffer.""" - ... -def rlUpdateVertexBufferElements(id: int,data: Any,dataSize: int,offset: int,) -> None: - """Update vertex buffer elements data on GPU buffer.""" - ... -def rlVertex2f(x: float,y: float,) -> None: - """Define one vertex (position) - 2 float.""" - ... -def rlVertex2i(x: int,y: int,) -> None: - """Define one vertex (position) - 2 int.""" - ... -def rlVertex3f(x: float,y: float,z: float,) -> None: - """Define one vertex (position) - 3 float.""" - ... -def rlViewport(x: int,y: int,width: int,height: int,) -> None: - """Set the viewport area.""" - ... -def rlglClose() -> None: - """De-initialize rlgl (buffers, shaders, textures).""" - ... -def rlglInit(width: int,height: int,) -> None: - """Initialize rlgl (buffers, shaders, textures, states).""" - ... -class AudioStream: - buffer: Any - processor: Any - sampleRate: int - sampleSize: int - channels: int -class AutomationEvent: - frame: int - type: int - params: list -class AutomationEventList: - capacity: int - count: int - events: Any -BlendMode = int -class BoneInfo: - name: bytes - parent: int -class BoundingBox: - min: Vector3 - max: Vector3 -class Camera: - position: Vector3 - target: Vector3 - up: Vector3 - fovy: float - projection: int -class Camera2D: - offset: Vector2 - target: Vector2 - rotation: float - zoom: float -class Camera3D: - position: Vector3 - target: Vector3 - up: Vector3 - fovy: float - projection: int -CameraMode = int -CameraProjection = int -class Color: - r: bytes - g: bytes - b: bytes - a: bytes -ConfigFlags = int -CubemapLayout = int -class FilePathList: - capacity: int - count: int - paths: list[bytes] -class Font: - baseSize: int - glyphCount: int - glyphPadding: int - texture: Texture - recs: Any - glyphs: Any -FontType = int -class GLFWallocator: - allocate: Any - reallocate: Any - deallocate: Any - user: Any -class GLFWcursor: - ... -class GLFWgamepadstate: - buttons: bytes - axes: list -class GLFWgammaramp: - red: Any - green: Any - blue: Any - size: int -class GLFWimage: - width: int - height: int - pixels: bytes -class GLFWmonitor: - ... -class GLFWvidmode: - width: int - height: int - redBits: int - greenBits: int - blueBits: int - refreshRate: int -class GLFWwindow: - ... -GamepadAxis = int -GamepadButton = int -Gesture = int -class GlyphInfo: - value: int - offsetX: int - offsetY: int - advanceX: int - image: Image -GuiCheckBoxProperty = int -GuiColorPickerProperty = int -GuiComboBoxProperty = int -GuiControl = int -GuiControlProperty = int -GuiDefaultProperty = int -GuiDropdownBoxProperty = int -GuiIconName = int -GuiListViewProperty = int -GuiProgressBarProperty = int -GuiScrollBarProperty = int -GuiSliderProperty = int -GuiSpinnerProperty = int -GuiState = int -class GuiStyleProp: - controlId: int - propertyId: int - propertyValue: int -GuiTextAlignment = int -GuiTextAlignmentVertical = int -GuiTextBoxProperty = int -GuiTextWrapMode = int -GuiToggleProperty = int -class Image: - data: Any - width: int - height: int - mipmaps: int - format: int -KeyboardKey = int -class Mat2: - m00: float - m01: float - m10: float - m11: float -class Material: - shader: Shader - maps: Any - params: list -class MaterialMap: - texture: Texture - color: Color - value: float -MaterialMapIndex = int -class Matrix: - m0: float - m4: float - m8: float - m12: float - m1: float - m5: float - m9: float - m13: float - m2: float - m6: float - m10: float - m14: float - m3: float - m7: float - m11: float - m15: float -class Mesh: - vertexCount: int - triangleCount: int - vertices: Any - texcoords: Any - texcoords2: Any - normals: Any - tangents: Any - colors: bytes - indices: Any - animVertices: Any - animNormals: Any - boneIds: bytes - boneWeights: Any - boneMatrices: Any - boneCount: int - vaoId: int - vboId: Any -class Model: - transform: Matrix - meshCount: int - materialCount: int - meshes: Any - materials: Any - meshMaterial: Any - boneCount: int - bones: Any - bindPose: Any -class ModelAnimation: - boneCount: int - frameCount: int - bones: Any - framePoses: Any - name: bytes -MouseButton = int -MouseCursor = int -class Music: - stream: AudioStream - frameCount: int - looping: bool - ctxType: int - ctxData: Any -class NPatchInfo: - source: Rectangle - left: int - top: int - right: int - bottom: int - layout: int -NPatchLayout = int -class PhysicsBodyData: - id: int - enabled: bool - position: Vector2 - velocity: Vector2 - force: Vector2 - angularVelocity: float - torque: float - orient: float - inertia: float - inverseInertia: float - mass: float - inverseMass: float - staticFriction: float - dynamicFriction: float - restitution: float - useGravity: bool - isGrounded: bool - freezeOrient: bool - shape: PhysicsShape -class PhysicsManifoldData: - id: int - bodyA: Any - bodyB: Any - penetration: float - normal: Vector2 - contacts: list - contactsCount: int - restitution: float - dynamicFriction: float - staticFriction: float -class PhysicsShape: - type: PhysicsShapeType - body: Any - radius: float - transform: Mat2 - vertexData: PolygonData -PhysicsShapeType = int -PixelFormat = int -class PolygonData: - vertexCount: int - positions: list - normals: list -class Quaternion: - x: float - y: float - z: float - w: float -class Ray: - position: Vector3 - direction: Vector3 -class RayCollision: - hit: bool - distance: float - point: Vector3 - normal: Vector3 -class Rectangle: - x: float - y: float - width: float - height: float -class RenderTexture: - id: int - texture: Texture - depth: Texture -class RenderTexture2D: - id: int - texture: Texture - depth: Texture -class Shader: - id: int - locs: Any -ShaderAttributeDataType = int -ShaderLocationIndex = int -ShaderUniformDataType = int -class Sound: - stream: AudioStream - frameCount: int -class Texture: - id: int - width: int - height: int - mipmaps: int - format: int -class Texture2D: - id: int - width: int - height: int - mipmaps: int - format: int -class TextureCubemap: - id: int - width: int - height: int - mipmaps: int - format: int -TextureFilter = int -TextureWrap = int -TraceLogLevel = int -class Transform: - translation: Vector3 - rotation: Vector4 - scale: Vector3 -class Vector2: - x: float - y: float -class Vector3: - x: float - y: float - z: float -class Vector4: - x: float - y: float - z: float - w: float -class VrDeviceInfo: - hResolution: int - vResolution: int - hScreenSize: float - vScreenSize: float - eyeToScreenDistance: float - lensSeparationDistance: float - interpupillaryDistance: float - lensDistortionValues: list - chromaAbCorrection: list -class VrStereoConfig: - projection: list - viewOffset: list - leftLensCenter: list - rightLensCenter: list - leftScreenCenter: list - rightScreenCenter: list - scale: list - scaleIn: list -class Wave: - frameCount: int - sampleRate: int - sampleSize: int - channels: int - data: Any -class float16: - v: list -class float3: - v: list -class rAudioBuffer: - ... -class rAudioProcessor: - ... -rlBlendMode = int -rlCullMode = int -class rlDrawCall: - mode: int - vertexCount: int - vertexAlignment: int - textureId: int -rlFramebufferAttachTextureType = int -rlFramebufferAttachType = int -rlGlVersion = int -rlPixelFormat = int -class rlRenderBatch: - bufferCount: int - currentBuffer: int - vertexBuffer: Any - draws: Any - drawCounter: int - currentDepth: float -rlShaderAttributeDataType = int -rlShaderLocationIndex = int -rlShaderUniformDataType = int -rlTextureFilter = int -rlTraceLogLevel = int -class rlVertexBuffer: - elementCount: int - vertices: Any - texcoords: Any - normals: Any - colors: bytes - indices: Any - vaoId: int - vboId: list - -LIGHTGRAY : Color -GRAY : Color -DARKGRAY : Color -YELLOW : Color -GOLD : Color -ORANGE : Color -PINK : Color -RED : Color -MAROON : Color -GREEN : Color -LIME : Color -DARKGREEN : Color -SKYBLUE : Color -BLUE : Color -DARKBLUE : Color -PURPLE : Color -VIOLET : Color -DARKPURPLE : Color -BEIGE : Color -BROWN : Color -DARKBROWN : Color -WHITE : Color -BLACK : Color -BLANK : Color -MAGENTA : Color -RAYWHITE : Color - diff --git a/dynamic/raylib/colors.py b/dynamic/raylib/colors.py deleted file mode 100644 index 468e7ef..0000000 --- a/dynamic/raylib/colors.py +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -LIGHTGRAY =( 200, 200, 200, 255 ) -GRAY =( 130, 130, 130, 255 ) -DARKGRAY =( 80, 80, 80, 255 ) -YELLOW =( 253, 249, 0, 255 ) -GOLD =( 255, 203, 0, 255 ) -ORANGE =( 255, 161, 0, 255 ) -PINK =( 255, 109, 194, 255 ) -RED =( 230, 41, 55, 255 ) -MAROON =( 190, 33, 55, 255 ) -GREEN =( 0, 228, 48, 255 ) -LIME =( 0, 158, 47, 255 ) -DARKGREEN =( 0, 117, 44, 255 ) -SKYBLUE =( 102, 191, 255, 255 ) -BLUE =( 0, 121, 241, 255 ) -DARKBLUE =( 0, 82, 172, 255 ) -PURPLE =( 200, 122, 255, 255 ) -VIOLET =( 135, 60, 190, 255 ) -DARKPURPLE =( 112, 31, 126, 255 ) -BEIGE =( 211, 176, 131, 255 ) -BROWN =( 127, 106, 79, 255 ) -DARKBROWN =( 76, 63, 47, 255 ) -WHITE =( 255, 255, 255, 255 ) -BLACK =( 0, 0, 0, 255 ) -BLANK =( 0, 0, 0, 0 ) -MAGENTA =( 255, 0, 255, 255 ) -RAYWHITE =( 245, 245, 245, 255 ) \ No newline at end of file diff --git a/dynamic/raylib/defines.py b/dynamic/raylib/defines.py deleted file mode 100644 index fe706d3..0000000 --- a/dynamic/raylib/defines.py +++ /dev/null @@ -1,508 +0,0 @@ -import raylib - -RAYLIB_VERSION_MAJOR: int = 5 -RAYLIB_VERSION_MINOR: int = 5 -RAYLIB_VERSION_PATCH: int = 0 -RAYLIB_VERSION: str = "5.5" -PI: float = 3.141592653589793 -DEG2RAD = PI / 180.0 -RAD2DEG = 180.0 / PI -MOUSE_LEFT_BUTTON = raylib.MOUSE_BUTTON_LEFT -MOUSE_RIGHT_BUTTON = raylib.MOUSE_BUTTON_RIGHT -MOUSE_MIDDLE_BUTTON = raylib.MOUSE_BUTTON_MIDDLE -MATERIAL_MAP_DIFFUSE = raylib.MATERIAL_MAP_ALBEDO -MATERIAL_MAP_SPECULAR = raylib.MATERIAL_MAP_METALNESS -SHADER_LOC_MAP_DIFFUSE = raylib.SHADER_LOC_MAP_ALBEDO -SHADER_LOC_MAP_SPECULAR = raylib.SHADER_LOC_MAP_METALNESS -EPSILON: float = 1e-06 -RLGL_VERSION: str = "5.0" -RL_DEFAULT_BATCH_BUFFER_ELEMENTS: int = 8192 -RL_DEFAULT_BATCH_BUFFERS: int = 1 -RL_DEFAULT_BATCH_DRAWCALLS: int = 256 -RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS: int = 4 -RL_MAX_MATRIX_STACK_SIZE: int = 32 -RL_MAX_SHADER_LOCATIONS: int = 32 -RL_TEXTURE_WRAP_S: int = 10242 -RL_TEXTURE_WRAP_T: int = 10243 -RL_TEXTURE_MAG_FILTER: int = 10240 -RL_TEXTURE_MIN_FILTER: int = 10241 -RL_TEXTURE_FILTER_NEAREST: int = 9728 -RL_TEXTURE_FILTER_LINEAR: int = 9729 -RL_TEXTURE_FILTER_MIP_NEAREST: int = 9984 -RL_TEXTURE_FILTER_NEAREST_MIP_LINEAR: int = 9986 -RL_TEXTURE_FILTER_LINEAR_MIP_NEAREST: int = 9985 -RL_TEXTURE_FILTER_MIP_LINEAR: int = 9987 -RL_TEXTURE_FILTER_ANISOTROPIC: int = 12288 -RL_TEXTURE_MIPMAP_BIAS_RATIO: int = 16384 -RL_TEXTURE_WRAP_REPEAT: int = 10497 -RL_TEXTURE_WRAP_CLAMP: int = 33071 -RL_TEXTURE_WRAP_MIRROR_REPEAT: int = 33648 -RL_TEXTURE_WRAP_MIRROR_CLAMP: int = 34626 -RL_MODELVIEW: int = 5888 -RL_PROJECTION: int = 5889 -RL_TEXTURE: int = 5890 -RL_LINES: int = 1 -RL_TRIANGLES: int = 4 -RL_QUADS: int = 7 -RL_UNSIGNED_BYTE: int = 5121 -RL_FLOAT: int = 5126 -RL_STREAM_DRAW: int = 35040 -RL_STREAM_READ: int = 35041 -RL_STREAM_COPY: int = 35042 -RL_STATIC_DRAW: int = 35044 -RL_STATIC_READ: int = 35045 -RL_STATIC_COPY: int = 35046 -RL_DYNAMIC_DRAW: int = 35048 -RL_DYNAMIC_READ: int = 35049 -RL_DYNAMIC_COPY: int = 35050 -RL_FRAGMENT_SHADER: int = 35632 -RL_VERTEX_SHADER: int = 35633 -RL_COMPUTE_SHADER: int = 37305 -RL_ZERO: int = 0 -RL_ONE: int = 1 -RL_SRC_COLOR: int = 768 -RL_ONE_MINUS_SRC_COLOR: int = 769 -RL_SRC_ALPHA: int = 770 -RL_ONE_MINUS_SRC_ALPHA: int = 771 -RL_DST_ALPHA: int = 772 -RL_ONE_MINUS_DST_ALPHA: int = 773 -RL_DST_COLOR: int = 774 -RL_ONE_MINUS_DST_COLOR: int = 775 -RL_SRC_ALPHA_SATURATE: int = 776 -RL_CONSTANT_COLOR: int = 32769 -RL_ONE_MINUS_CONSTANT_COLOR: int = 32770 -RL_CONSTANT_ALPHA: int = 32771 -RL_ONE_MINUS_CONSTANT_ALPHA: int = 32772 -RL_FUNC_ADD: int = 32774 -RL_MIN: int = 32775 -RL_MAX: int = 32776 -RL_FUNC_SUBTRACT: int = 32778 -RL_FUNC_REVERSE_SUBTRACT: int = 32779 -RL_BLEND_EQUATION: int = 32777 -RL_BLEND_EQUATION_RGB: int = 32777 -RL_BLEND_EQUATION_ALPHA: int = 34877 -RL_BLEND_DST_RGB: int = 32968 -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 -GL_SHADING_LANGUAGE_VERSION: int = 35724 -GL_COMPRESSED_RGB_S3TC_DXT1_EXT: int = 33776 -GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: int = 33777 -GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: int = 33778 -GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: int = 33779 -GL_ETC1_RGB8_OES: int = 36196 -GL_COMPRESSED_RGB8_ETC2: int = 37492 -GL_COMPRESSED_RGBA8_ETC2_EAC: int = 37496 -GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: int = 35840 -GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: int = 35842 -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 -GL_LUMINANCE: int = 6409 -GL_LUMINANCE_ALPHA: int = 6410 -RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION: str = "vertexPosition" -RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD: str = "vertexTexCoord" -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 = 5 -RAYGUI_VERSION_PATCH: int = 0 -RAYGUI_VERSION: str = "4.5-dev" -SCROLLBAR_LEFT_SIDE: int = 0 -SCROLLBAR_RIGHT_SIDE: int = 1 -RAYGUI_ICON_SIZE: int = 16 -RAYGUI_ICON_MAX_ICONS: int = 256 -RAYGUI_ICON_MAX_NAME_LENGTH: int = 32 -RAYGUI_MAX_CONTROLS: int = 16 -RAYGUI_MAX_PROPS_BASE: int = 16 -RAYGUI_MAX_PROPS_EXTENDED: int = 8 -KEY_RIGHT: int = 262 -KEY_LEFT: int = 263 -KEY_DOWN: int = 264 -KEY_UP: int = 265 -KEY_BACKSPACE: int = 259 -KEY_ENTER: int = 257 -MOUSE_LEFT_BUTTON: int = 0 -RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT: int = 24 -RAYGUI_GROUPBOX_LINE_THICK: int = 1 -RAYGUI_LINE_MARGIN_TEXT: int = 12 -RAYGUI_LINE_TEXT_PADDING: int = 4 -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 -RAYGUI_VALUEBOX_MAX_CHARS: int = 32 -RAYGUI_COLORBARALPHA_CHECKED_SIZE: int = 10 -RAYGUI_MESSAGEBOX_BUTTON_HEIGHT: int = 24 -RAYGUI_MESSAGEBOX_BUTTON_PADDING: int = 12 -RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT: int = 24 -RAYGUI_TEXTINPUTBOX_BUTTON_PADDING: int = 12 -RAYGUI_TEXTINPUTBOX_HEIGHT: int = 26 -RAYGUI_GRID_ALPHA: float = 0.15 -MAX_LINE_BUFFER_SIZE: int = 256 -ICON_TEXT_PADDING: int = 4 -RAYGUI_MAX_TEXT_LINES: int = 128 -RAYGUI_TEXTSPLIT_MAX_ITEMS: int = 128 -RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE: int = 1024 -RAYGUI_TEXTFORMAT_MAX_SIZE: int = 256 -PHYSAC_MAX_BODIES: int = 64 -PHYSAC_MAX_MANIFOLDS: int = 4096 -PHYSAC_MAX_VERTICES: int = 24 -PHYSAC_CIRCLE_VERTICES: int = 24 -PHYSAC_COLLISION_ITERATIONS: int = 20 -PHYSAC_PENETRATION_ALLOWANCE: float = 0.05 -PHYSAC_PENETRATION_CORRECTION: float = 0.4 -PHYSAC_FLT_MAX: float = 3.402823466e+38 -PHYSAC_EPSILON: float = 1e-06 -GLFW_VERSION_MAJOR: int = 3 -GLFW_VERSION_MINOR: int = 4 -GLFW_VERSION_REVISION: int = 0 -GLFW_TRUE: int = 1 -GLFW_FALSE: int = 0 -GLFW_RELEASE: int = 0 -GLFW_PRESS: int = 1 -GLFW_REPEAT: int = 2 -GLFW_HAT_CENTERED: int = 0 -GLFW_HAT_UP: int = 1 -GLFW_HAT_RIGHT: int = 2 -GLFW_HAT_DOWN: int = 4 -GLFW_HAT_LEFT: int = 8 -GLFW_HAT_RIGHT_UP = GLFW_HAT_RIGHT | GLFW_HAT_UP -GLFW_HAT_RIGHT_DOWN = GLFW_HAT_RIGHT | GLFW_HAT_DOWN -GLFW_HAT_LEFT_UP = GLFW_HAT_LEFT | GLFW_HAT_UP -GLFW_HAT_LEFT_DOWN = GLFW_HAT_LEFT | GLFW_HAT_DOWN -GLFW_KEY_SPACE: int = 32 -GLFW_KEY_APOSTROPHE: int = 39 -GLFW_KEY_COMMA: int = 44 -GLFW_KEY_MINUS: int = 45 -GLFW_KEY_PERIOD: int = 46 -GLFW_KEY_SLASH: int = 47 -GLFW_KEY_0: int = 48 -GLFW_KEY_1: int = 49 -GLFW_KEY_2: int = 50 -GLFW_KEY_3: int = 51 -GLFW_KEY_4: int = 52 -GLFW_KEY_5: int = 53 -GLFW_KEY_6: int = 54 -GLFW_KEY_7: int = 55 -GLFW_KEY_8: int = 56 -GLFW_KEY_9: int = 57 -GLFW_KEY_SEMICOLON: int = 59 -GLFW_KEY_EQUAL: int = 61 -GLFW_KEY_A: int = 65 -GLFW_KEY_B: int = 66 -GLFW_KEY_C: int = 67 -GLFW_KEY_D: int = 68 -GLFW_KEY_E: int = 69 -GLFW_KEY_F: int = 70 -GLFW_KEY_G: int = 71 -GLFW_KEY_H: int = 72 -GLFW_KEY_I: int = 73 -GLFW_KEY_J: int = 74 -GLFW_KEY_K: int = 75 -GLFW_KEY_L: int = 76 -GLFW_KEY_M: int = 77 -GLFW_KEY_N: int = 78 -GLFW_KEY_O: int = 79 -GLFW_KEY_P: int = 80 -GLFW_KEY_Q: int = 81 -GLFW_KEY_R: int = 82 -GLFW_KEY_S: int = 83 -GLFW_KEY_T: int = 84 -GLFW_KEY_U: int = 85 -GLFW_KEY_V: int = 86 -GLFW_KEY_W: int = 87 -GLFW_KEY_X: int = 88 -GLFW_KEY_Y: int = 89 -GLFW_KEY_Z: int = 90 -GLFW_KEY_LEFT_BRACKET: int = 91 -GLFW_KEY_BACKSLASH: int = 92 -GLFW_KEY_RIGHT_BRACKET: int = 93 -GLFW_KEY_GRAVE_ACCENT: int = 96 -GLFW_KEY_WORLD_1: int = 161 -GLFW_KEY_WORLD_2: int = 162 -GLFW_KEY_ESCAPE: int = 256 -GLFW_KEY_ENTER: int = 257 -GLFW_KEY_TAB: int = 258 -GLFW_KEY_BACKSPACE: int = 259 -GLFW_KEY_INSERT: int = 260 -GLFW_KEY_DELETE: int = 261 -GLFW_KEY_RIGHT: int = 262 -GLFW_KEY_LEFT: int = 263 -GLFW_KEY_DOWN: int = 264 -GLFW_KEY_UP: int = 265 -GLFW_KEY_PAGE_UP: int = 266 -GLFW_KEY_PAGE_DOWN: int = 267 -GLFW_KEY_HOME: int = 268 -GLFW_KEY_END: int = 269 -GLFW_KEY_CAPS_LOCK: int = 280 -GLFW_KEY_SCROLL_LOCK: int = 281 -GLFW_KEY_NUM_LOCK: int = 282 -GLFW_KEY_PRINT_SCREEN: int = 283 -GLFW_KEY_PAUSE: int = 284 -GLFW_KEY_F1: int = 290 -GLFW_KEY_F2: int = 291 -GLFW_KEY_F3: int = 292 -GLFW_KEY_F4: int = 293 -GLFW_KEY_F5: int = 294 -GLFW_KEY_F6: int = 295 -GLFW_KEY_F7: int = 296 -GLFW_KEY_F8: int = 297 -GLFW_KEY_F9: int = 298 -GLFW_KEY_F10: int = 299 -GLFW_KEY_F11: int = 300 -GLFW_KEY_F12: int = 301 -GLFW_KEY_F13: int = 302 -GLFW_KEY_F14: int = 303 -GLFW_KEY_F15: int = 304 -GLFW_KEY_F16: int = 305 -GLFW_KEY_F17: int = 306 -GLFW_KEY_F18: int = 307 -GLFW_KEY_F19: int = 308 -GLFW_KEY_F20: int = 309 -GLFW_KEY_F21: int = 310 -GLFW_KEY_F22: int = 311 -GLFW_KEY_F23: int = 312 -GLFW_KEY_F24: int = 313 -GLFW_KEY_F25: int = 314 -GLFW_KEY_KP_0: int = 320 -GLFW_KEY_KP_1: int = 321 -GLFW_KEY_KP_2: int = 322 -GLFW_KEY_KP_3: int = 323 -GLFW_KEY_KP_4: int = 324 -GLFW_KEY_KP_5: int = 325 -GLFW_KEY_KP_6: int = 326 -GLFW_KEY_KP_7: int = 327 -GLFW_KEY_KP_8: int = 328 -GLFW_KEY_KP_9: int = 329 -GLFW_KEY_KP_DECIMAL: int = 330 -GLFW_KEY_KP_DIVIDE: int = 331 -GLFW_KEY_KP_MULTIPLY: int = 332 -GLFW_KEY_KP_SUBTRACT: int = 333 -GLFW_KEY_KP_ADD: int = 334 -GLFW_KEY_KP_ENTER: int = 335 -GLFW_KEY_KP_EQUAL: int = 336 -GLFW_KEY_LEFT_SHIFT: int = 340 -GLFW_KEY_LEFT_CONTROL: int = 341 -GLFW_KEY_LEFT_ALT: int = 342 -GLFW_KEY_LEFT_SUPER: int = 343 -GLFW_KEY_RIGHT_SHIFT: int = 344 -GLFW_KEY_RIGHT_CONTROL: int = 345 -GLFW_KEY_RIGHT_ALT: int = 346 -GLFW_KEY_RIGHT_SUPER: int = 347 -GLFW_KEY_MENU: int = 348 -GLFW_MOD_SHIFT: int = 1 -GLFW_MOD_CONTROL: int = 2 -GLFW_MOD_ALT: int = 4 -GLFW_MOD_SUPER: int = 8 -GLFW_MOD_CAPS_LOCK: int = 16 -GLFW_MOD_NUM_LOCK: int = 32 -GLFW_MOUSE_BUTTON_1: int = 0 -GLFW_MOUSE_BUTTON_2: int = 1 -GLFW_MOUSE_BUTTON_3: int = 2 -GLFW_MOUSE_BUTTON_4: int = 3 -GLFW_MOUSE_BUTTON_5: int = 4 -GLFW_MOUSE_BUTTON_6: int = 5 -GLFW_MOUSE_BUTTON_7: int = 6 -GLFW_MOUSE_BUTTON_8: int = 7 -GLFW_JOYSTICK_1: int = 0 -GLFW_JOYSTICK_2: int = 1 -GLFW_JOYSTICK_3: int = 2 -GLFW_JOYSTICK_4: int = 3 -GLFW_JOYSTICK_5: int = 4 -GLFW_JOYSTICK_6: int = 5 -GLFW_JOYSTICK_7: int = 6 -GLFW_JOYSTICK_8: int = 7 -GLFW_JOYSTICK_9: int = 8 -GLFW_JOYSTICK_10: int = 9 -GLFW_JOYSTICK_11: int = 10 -GLFW_JOYSTICK_12: int = 11 -GLFW_JOYSTICK_13: int = 12 -GLFW_JOYSTICK_14: int = 13 -GLFW_JOYSTICK_15: int = 14 -GLFW_JOYSTICK_16: int = 15 -GLFW_GAMEPAD_BUTTON_A: int = 0 -GLFW_GAMEPAD_BUTTON_B: int = 1 -GLFW_GAMEPAD_BUTTON_X: int = 2 -GLFW_GAMEPAD_BUTTON_Y: int = 3 -GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: int = 4 -GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: int = 5 -GLFW_GAMEPAD_BUTTON_BACK: int = 6 -GLFW_GAMEPAD_BUTTON_START: int = 7 -GLFW_GAMEPAD_BUTTON_GUIDE: int = 8 -GLFW_GAMEPAD_BUTTON_LEFT_THUMB: int = 9 -GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: int = 10 -GLFW_GAMEPAD_BUTTON_DPAD_UP: int = 11 -GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: int = 12 -GLFW_GAMEPAD_BUTTON_DPAD_DOWN: int = 13 -GLFW_GAMEPAD_BUTTON_DPAD_LEFT: int = 14 -GLFW_GAMEPAD_AXIS_LEFT_X: int = 0 -GLFW_GAMEPAD_AXIS_LEFT_Y: int = 1 -GLFW_GAMEPAD_AXIS_RIGHT_X: int = 2 -GLFW_GAMEPAD_AXIS_RIGHT_Y: int = 3 -GLFW_GAMEPAD_AXIS_LEFT_TRIGGER: int = 4 -GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER: int = 5 -GLFW_NO_ERROR: int = 0 -GLFW_NOT_INITIALIZED: int = 65537 -GLFW_NO_CURRENT_CONTEXT: int = 65538 -GLFW_INVALID_ENUM: int = 65539 -GLFW_INVALID_VALUE: int = 65540 -GLFW_OUT_OF_MEMORY: int = 65541 -GLFW_API_UNAVAILABLE: int = 65542 -GLFW_VERSION_UNAVAILABLE: int = 65543 -GLFW_PLATFORM_ERROR: int = 65544 -GLFW_FORMAT_UNAVAILABLE: int = 65545 -GLFW_NO_WINDOW_CONTEXT: int = 65546 -GLFW_CURSOR_UNAVAILABLE: int = 65547 -GLFW_FEATURE_UNAVAILABLE: int = 65548 -GLFW_FEATURE_UNIMPLEMENTED: int = 65549 -GLFW_PLATFORM_UNAVAILABLE: int = 65550 -GLFW_FOCUSED: int = 131073 -GLFW_ICONIFIED: int = 131074 -GLFW_RESIZABLE: int = 131075 -GLFW_VISIBLE: int = 131076 -GLFW_DECORATED: int = 131077 -GLFW_AUTO_ICONIFY: int = 131078 -GLFW_FLOATING: int = 131079 -GLFW_MAXIMIZED: int = 131080 -GLFW_CENTER_CURSOR: int = 131081 -GLFW_TRANSPARENT_FRAMEBUFFER: int = 131082 -GLFW_HOVERED: int = 131083 -GLFW_FOCUS_ON_SHOW: int = 131084 -GLFW_MOUSE_PASSTHROUGH: int = 131085 -GLFW_POSITION_X: int = 131086 -GLFW_POSITION_Y: int = 131087 -GLFW_RED_BITS: int = 135169 -GLFW_GREEN_BITS: int = 135170 -GLFW_BLUE_BITS: int = 135171 -GLFW_ALPHA_BITS: int = 135172 -GLFW_DEPTH_BITS: int = 135173 -GLFW_STENCIL_BITS: int = 135174 -GLFW_ACCUM_RED_BITS: int = 135175 -GLFW_ACCUM_GREEN_BITS: int = 135176 -GLFW_ACCUM_BLUE_BITS: int = 135177 -GLFW_ACCUM_ALPHA_BITS: int = 135178 -GLFW_AUX_BUFFERS: int = 135179 -GLFW_STEREO: int = 135180 -GLFW_SAMPLES: int = 135181 -GLFW_SRGB_CAPABLE: int = 135182 -GLFW_REFRESH_RATE: int = 135183 -GLFW_DOUBLEBUFFER: int = 135184 -GLFW_CLIENT_API: int = 139265 -GLFW_CONTEXT_VERSION_MAJOR: int = 139266 -GLFW_CONTEXT_VERSION_MINOR: int = 139267 -GLFW_CONTEXT_REVISION: int = 139268 -GLFW_CONTEXT_ROBUSTNESS: int = 139269 -GLFW_OPENGL_FORWARD_COMPAT: int = 139270 -GLFW_CONTEXT_DEBUG: int = 139271 -GLFW_OPENGL_PROFILE: int = 139272 -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 -GLFW_OPENGL_ES_API: int = 196610 -GLFW_NO_ROBUSTNESS: int = 0 -GLFW_NO_RESET_NOTIFICATION: int = 200705 -GLFW_LOSE_CONTEXT_ON_RESET: int = 200706 -GLFW_OPENGL_ANY_PROFILE: int = 0 -GLFW_OPENGL_CORE_PROFILE: int = 204801 -GLFW_OPENGL_COMPAT_PROFILE: int = 204802 -GLFW_CURSOR: int = 208897 -GLFW_STICKY_KEYS: int = 208898 -GLFW_STICKY_MOUSE_BUTTONS: int = 208899 -GLFW_LOCK_KEY_MODS: int = 208900 -GLFW_RAW_MOUSE_MOTION: int = 208901 -GLFW_CURSOR_NORMAL: int = 212993 -GLFW_CURSOR_HIDDEN: int = 212994 -GLFW_CURSOR_DISABLED: int = 212995 -GLFW_CURSOR_CAPTURED: int = 212996 -GLFW_ANY_RELEASE_BEHAVIOR: int = 0 -GLFW_RELEASE_BEHAVIOR_FLUSH: int = 217089 -GLFW_RELEASE_BEHAVIOR_NONE: int = 217090 -GLFW_NATIVE_CONTEXT_API: int = 221185 -GLFW_EGL_CONTEXT_API: int = 221186 -GLFW_OSMESA_CONTEXT_API: int = 221187 -GLFW_ANGLE_PLATFORM_TYPE_NONE: int = 225281 -GLFW_ANGLE_PLATFORM_TYPE_OPENGL: int = 225282 -GLFW_ANGLE_PLATFORM_TYPE_OPENGLES: int = 225283 -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 -GLFW_CROSSHAIR_CURSOR: int = 221187 -GLFW_POINTING_HAND_CURSOR: int = 221188 -GLFW_RESIZE_EW_CURSOR: int = 221189 -GLFW_RESIZE_NS_CURSOR: int = 221190 -GLFW_RESIZE_NWSE_CURSOR: int = 221191 -GLFW_RESIZE_NESW_CURSOR: int = 221192 -GLFW_RESIZE_ALL_CURSOR: int = 221193 -GLFW_NOT_ALLOWED_CURSOR: int = 221194 -GLFW_CONNECTED: int = 262145 -GLFW_DISCONNECTED: int = 262146 -GLFW_JOYSTICK_HAT_BUTTONS: int = 327681 -GLFW_ANGLE_PLATFORM_TYPE: int = 327682 -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 -GLFW_PLATFORM_WAYLAND: int = 393219 -GLFW_PLATFORM_X11: int = 393220 -GLFW_PLATFORM_NULL: int = 393221 diff --git a/dynamic/raylib/enums.py b/dynamic/raylib/enums.py deleted file mode 100644 index d33b987..0000000 --- a/dynamic/raylib/enums.py +++ /dev/null @@ -1,759 +0,0 @@ -from enum import IntEnum - -class ConfigFlags(IntEnum): - """System/Window config flags.""" - FLAG_VSYNC_HINT = 64 - FLAG_FULLSCREEN_MODE = 2 - FLAG_WINDOW_RESIZABLE = 4 - FLAG_WINDOW_UNDECORATED = 8 - FLAG_WINDOW_HIDDEN = 128 - FLAG_WINDOW_MINIMIZED = 512 - FLAG_WINDOW_MAXIMIZED = 1024 - FLAG_WINDOW_UNFOCUSED = 2048 - FLAG_WINDOW_TOPMOST = 4096 - FLAG_WINDOW_ALWAYS_RUN = 256 - FLAG_WINDOW_TRANSPARENT = 16 - FLAG_WINDOW_HIGHDPI = 8192 - FLAG_WINDOW_MOUSE_PASSTHROUGH = 16384 - FLAG_BORDERLESS_WINDOWED_MODE = 32768 - FLAG_MSAA_4X_HINT = 32 - FLAG_INTERLACED_HINT = 65536 - -class TraceLogLevel(IntEnum): - """Trace log level.""" - LOG_ALL = 0 - LOG_TRACE = 1 - LOG_DEBUG = 2 - LOG_INFO = 3 - LOG_WARNING = 4 - LOG_ERROR = 5 - LOG_FATAL = 6 - LOG_NONE = 7 - -class KeyboardKey(IntEnum): - """Keyboard keys (US keyboard layout).""" - KEY_NULL = 0 - KEY_APOSTROPHE = 39 - KEY_COMMA = 44 - KEY_MINUS = 45 - KEY_PERIOD = 46 - KEY_SLASH = 47 - KEY_ZERO = 48 - KEY_ONE = 49 - KEY_TWO = 50 - KEY_THREE = 51 - KEY_FOUR = 52 - KEY_FIVE = 53 - KEY_SIX = 54 - KEY_SEVEN = 55 - KEY_EIGHT = 56 - KEY_NINE = 57 - KEY_SEMICOLON = 59 - KEY_EQUAL = 61 - KEY_A = 65 - KEY_B = 66 - KEY_C = 67 - KEY_D = 68 - KEY_E = 69 - KEY_F = 70 - KEY_G = 71 - KEY_H = 72 - KEY_I = 73 - KEY_J = 74 - KEY_K = 75 - KEY_L = 76 - KEY_M = 77 - KEY_N = 78 - KEY_O = 79 - KEY_P = 80 - KEY_Q = 81 - KEY_R = 82 - KEY_S = 83 - KEY_T = 84 - KEY_U = 85 - KEY_V = 86 - KEY_W = 87 - KEY_X = 88 - KEY_Y = 89 - KEY_Z = 90 - KEY_LEFT_BRACKET = 91 - KEY_BACKSLASH = 92 - KEY_RIGHT_BRACKET = 93 - KEY_GRAVE = 96 - KEY_SPACE = 32 - KEY_ESCAPE = 256 - KEY_ENTER = 257 - KEY_TAB = 258 - KEY_BACKSPACE = 259 - KEY_INSERT = 260 - KEY_DELETE = 261 - KEY_RIGHT = 262 - KEY_LEFT = 263 - KEY_DOWN = 264 - KEY_UP = 265 - KEY_PAGE_UP = 266 - KEY_PAGE_DOWN = 267 - KEY_HOME = 268 - KEY_END = 269 - KEY_CAPS_LOCK = 280 - KEY_SCROLL_LOCK = 281 - KEY_NUM_LOCK = 282 - KEY_PRINT_SCREEN = 283 - KEY_PAUSE = 284 - KEY_F1 = 290 - KEY_F2 = 291 - KEY_F3 = 292 - KEY_F4 = 293 - KEY_F5 = 294 - KEY_F6 = 295 - KEY_F7 = 296 - KEY_F8 = 297 - KEY_F9 = 298 - KEY_F10 = 299 - KEY_F11 = 300 - KEY_F12 = 301 - KEY_LEFT_SHIFT = 340 - KEY_LEFT_CONTROL = 341 - KEY_LEFT_ALT = 342 - KEY_LEFT_SUPER = 343 - KEY_RIGHT_SHIFT = 344 - KEY_RIGHT_CONTROL = 345 - KEY_RIGHT_ALT = 346 - KEY_RIGHT_SUPER = 347 - KEY_KB_MENU = 348 - KEY_KP_0 = 320 - KEY_KP_1 = 321 - KEY_KP_2 = 322 - KEY_KP_3 = 323 - KEY_KP_4 = 324 - KEY_KP_5 = 325 - KEY_KP_6 = 326 - KEY_KP_7 = 327 - KEY_KP_8 = 328 - KEY_KP_9 = 329 - KEY_KP_DECIMAL = 330 - KEY_KP_DIVIDE = 331 - KEY_KP_MULTIPLY = 332 - KEY_KP_SUBTRACT = 333 - KEY_KP_ADD = 334 - KEY_KP_ENTER = 335 - KEY_KP_EQUAL = 336 - KEY_BACK = 4 - KEY_MENU = 5 - KEY_VOLUME_UP = 24 - KEY_VOLUME_DOWN = 25 - -class MouseButton(IntEnum): - """Mouse buttons.""" - MOUSE_BUTTON_LEFT = 0 - MOUSE_BUTTON_RIGHT = 1 - MOUSE_BUTTON_MIDDLE = 2 - MOUSE_BUTTON_SIDE = 3 - MOUSE_BUTTON_EXTRA = 4 - MOUSE_BUTTON_FORWARD = 5 - MOUSE_BUTTON_BACK = 6 - -class MouseCursor(IntEnum): - """Mouse cursor.""" - MOUSE_CURSOR_DEFAULT = 0 - MOUSE_CURSOR_ARROW = 1 - MOUSE_CURSOR_IBEAM = 2 - MOUSE_CURSOR_CROSSHAIR = 3 - MOUSE_CURSOR_POINTING_HAND = 4 - MOUSE_CURSOR_RESIZE_EW = 5 - MOUSE_CURSOR_RESIZE_NS = 6 - MOUSE_CURSOR_RESIZE_NWSE = 7 - MOUSE_CURSOR_RESIZE_NESW = 8 - MOUSE_CURSOR_RESIZE_ALL = 9 - MOUSE_CURSOR_NOT_ALLOWED = 10 - -class GamepadButton(IntEnum): - """Gamepad buttons.""" - GAMEPAD_BUTTON_UNKNOWN = 0 - GAMEPAD_BUTTON_LEFT_FACE_UP = 1 - GAMEPAD_BUTTON_LEFT_FACE_RIGHT = 2 - GAMEPAD_BUTTON_LEFT_FACE_DOWN = 3 - GAMEPAD_BUTTON_LEFT_FACE_LEFT = 4 - GAMEPAD_BUTTON_RIGHT_FACE_UP = 5 - GAMEPAD_BUTTON_RIGHT_FACE_RIGHT = 6 - GAMEPAD_BUTTON_RIGHT_FACE_DOWN = 7 - GAMEPAD_BUTTON_RIGHT_FACE_LEFT = 8 - GAMEPAD_BUTTON_LEFT_TRIGGER_1 = 9 - GAMEPAD_BUTTON_LEFT_TRIGGER_2 = 10 - GAMEPAD_BUTTON_RIGHT_TRIGGER_1 = 11 - GAMEPAD_BUTTON_RIGHT_TRIGGER_2 = 12 - GAMEPAD_BUTTON_MIDDLE_LEFT = 13 - GAMEPAD_BUTTON_MIDDLE = 14 - GAMEPAD_BUTTON_MIDDLE_RIGHT = 15 - GAMEPAD_BUTTON_LEFT_THUMB = 16 - GAMEPAD_BUTTON_RIGHT_THUMB = 17 - -class GamepadAxis(IntEnum): - """Gamepad axis.""" - GAMEPAD_AXIS_LEFT_X = 0 - GAMEPAD_AXIS_LEFT_Y = 1 - GAMEPAD_AXIS_RIGHT_X = 2 - GAMEPAD_AXIS_RIGHT_Y = 3 - GAMEPAD_AXIS_LEFT_TRIGGER = 4 - GAMEPAD_AXIS_RIGHT_TRIGGER = 5 - -class MaterialMapIndex(IntEnum): - """Material map index.""" - MATERIAL_MAP_ALBEDO = 0 - MATERIAL_MAP_METALNESS = 1 - MATERIAL_MAP_NORMAL = 2 - MATERIAL_MAP_ROUGHNESS = 3 - MATERIAL_MAP_OCCLUSION = 4 - MATERIAL_MAP_EMISSION = 5 - MATERIAL_MAP_HEIGHT = 6 - MATERIAL_MAP_CUBEMAP = 7 - MATERIAL_MAP_IRRADIANCE = 8 - MATERIAL_MAP_PREFILTER = 9 - MATERIAL_MAP_BRDF = 10 - -class ShaderLocationIndex(IntEnum): - """Shader location index.""" - SHADER_LOC_VERTEX_POSITION = 0 - SHADER_LOC_VERTEX_TEXCOORD01 = 1 - SHADER_LOC_VERTEX_TEXCOORD02 = 2 - SHADER_LOC_VERTEX_NORMAL = 3 - SHADER_LOC_VERTEX_TANGENT = 4 - SHADER_LOC_VERTEX_COLOR = 5 - SHADER_LOC_MATRIX_MVP = 6 - SHADER_LOC_MATRIX_VIEW = 7 - SHADER_LOC_MATRIX_PROJECTION = 8 - SHADER_LOC_MATRIX_MODEL = 9 - SHADER_LOC_MATRIX_NORMAL = 10 - SHADER_LOC_VECTOR_VIEW = 11 - SHADER_LOC_COLOR_DIFFUSE = 12 - SHADER_LOC_COLOR_SPECULAR = 13 - SHADER_LOC_COLOR_AMBIENT = 14 - SHADER_LOC_MAP_ALBEDO = 15 - SHADER_LOC_MAP_METALNESS = 16 - SHADER_LOC_MAP_NORMAL = 17 - SHADER_LOC_MAP_ROUGHNESS = 18 - SHADER_LOC_MAP_OCCLUSION = 19 - SHADER_LOC_MAP_EMISSION = 20 - SHADER_LOC_MAP_HEIGHT = 21 - SHADER_LOC_MAP_CUBEMAP = 22 - 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 data type.""" - SHADER_UNIFORM_FLOAT = 0 - SHADER_UNIFORM_VEC2 = 1 - SHADER_UNIFORM_VEC3 = 2 - SHADER_UNIFORM_VEC4 = 3 - SHADER_UNIFORM_INT = 4 - SHADER_UNIFORM_IVEC2 = 5 - SHADER_UNIFORM_IVEC3 = 6 - SHADER_UNIFORM_IVEC4 = 7 - SHADER_UNIFORM_SAMPLER2D = 8 - -class ShaderAttributeDataType(IntEnum): - """Shader attribute data types.""" - SHADER_ATTRIB_FLOAT = 0 - SHADER_ATTRIB_VEC2 = 1 - SHADER_ATTRIB_VEC3 = 2 - SHADER_ATTRIB_VEC4 = 3 - -class PixelFormat(IntEnum): - """Pixel formats.""" - PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1 - PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2 - PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3 - PIXELFORMAT_UNCOMPRESSED_R8G8B8 = 4 - PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = 5 - PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = 6 - PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = 7 - PIXELFORMAT_UNCOMPRESSED_R32 = 8 - PIXELFORMAT_UNCOMPRESSED_R32G32B32 = 9 - PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = 10 - PIXELFORMAT_UNCOMPRESSED_R16 = 11 - PIXELFORMAT_UNCOMPRESSED_R16G16B16 = 12 - PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 = 13 - PIXELFORMAT_COMPRESSED_DXT1_RGB = 14 - PIXELFORMAT_COMPRESSED_DXT1_RGBA = 15 - PIXELFORMAT_COMPRESSED_DXT3_RGBA = 16 - PIXELFORMAT_COMPRESSED_DXT5_RGBA = 17 - PIXELFORMAT_COMPRESSED_ETC1_RGB = 18 - PIXELFORMAT_COMPRESSED_ETC2_RGB = 19 - PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = 20 - PIXELFORMAT_COMPRESSED_PVRT_RGB = 21 - PIXELFORMAT_COMPRESSED_PVRT_RGBA = 22 - PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 23 - PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 24 - -class TextureFilter(IntEnum): - """Texture parameters: filter mode.""" - TEXTURE_FILTER_POINT = 0 - TEXTURE_FILTER_BILINEAR = 1 - TEXTURE_FILTER_TRILINEAR = 2 - TEXTURE_FILTER_ANISOTROPIC_4X = 3 - TEXTURE_FILTER_ANISOTROPIC_8X = 4 - TEXTURE_FILTER_ANISOTROPIC_16X = 5 - -class TextureWrap(IntEnum): - """Texture parameters: wrap mode.""" - TEXTURE_WRAP_REPEAT = 0 - TEXTURE_WRAP_CLAMP = 1 - TEXTURE_WRAP_MIRROR_REPEAT = 2 - TEXTURE_WRAP_MIRROR_CLAMP = 3 - -class CubemapLayout(IntEnum): - """Cubemap layouts.""" - CUBEMAP_LAYOUT_AUTO_DETECT = 0 - CUBEMAP_LAYOUT_LINE_VERTICAL = 1 - CUBEMAP_LAYOUT_LINE_HORIZONTAL = 2 - CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR = 3 - CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE = 4 - -class FontType(IntEnum): - """Font type, defines generation method.""" - FONT_DEFAULT = 0 - FONT_BITMAP = 1 - FONT_SDF = 2 - -class BlendMode(IntEnum): - """Color blending modes (pre-defined).""" - BLEND_ALPHA = 0 - BLEND_ADDITIVE = 1 - BLEND_MULTIPLIED = 2 - BLEND_ADD_COLORS = 3 - BLEND_SUBTRACT_COLORS = 4 - BLEND_ALPHA_PREMULTIPLY = 5 - BLEND_CUSTOM = 6 - BLEND_CUSTOM_SEPARATE = 7 - -class Gesture(IntEnum): - """Gesture.""" - GESTURE_NONE = 0 - GESTURE_TAP = 1 - GESTURE_DOUBLETAP = 2 - GESTURE_HOLD = 4 - GESTURE_DRAG = 8 - GESTURE_SWIPE_RIGHT = 16 - GESTURE_SWIPE_LEFT = 32 - GESTURE_SWIPE_UP = 64 - GESTURE_SWIPE_DOWN = 128 - GESTURE_PINCH_IN = 256 - GESTURE_PINCH_OUT = 512 - -class CameraMode(IntEnum): - """Camera system modes.""" - CAMERA_CUSTOM = 0 - CAMERA_FREE = 1 - CAMERA_ORBITAL = 2 - CAMERA_FIRST_PERSON = 3 - CAMERA_THIRD_PERSON = 4 - -class CameraProjection(IntEnum): - """Camera projection.""" - CAMERA_PERSPECTIVE = 0 - CAMERA_ORTHOGRAPHIC = 1 - -class NPatchLayout(IntEnum): - """N-patch layout.""" - NPATCH_NINE_PATCH = 0 - NPATCH_THREE_PATCH_VERTICAL = 1 - NPATCH_THREE_PATCH_HORIZONTAL = 2 - -class GuiState(IntEnum): - """Gui control state.""" - STATE_NORMAL = 0 - STATE_FOCUSED = 1 - STATE_PRESSED = 2 - STATE_DISABLED = 3 - -class GuiTextAlignment(IntEnum): - """Gui control text alignment.""" - TEXT_ALIGN_LEFT = 0 - TEXT_ALIGN_CENTER = 1 - TEXT_ALIGN_RIGHT = 2 - -class GuiTextAlignmentVertical(IntEnum): - """Gui control text alignment vertical.""" - TEXT_ALIGN_TOP = 0 - TEXT_ALIGN_MIDDLE = 1 - TEXT_ALIGN_BOTTOM = 2 - -class GuiTextWrapMode(IntEnum): - """Gui control text wrap mode.""" - TEXT_WRAP_NONE = 0 - TEXT_WRAP_CHAR = 1 - TEXT_WRAP_WORD = 2 - -class GuiControl(IntEnum): - """Gui controls.""" - DEFAULT = 0 - LABEL = 1 - BUTTON = 2 - TOGGLE = 3 - SLIDER = 4 - PROGRESSBAR = 5 - CHECKBOX = 6 - COMBOBOX = 7 - DROPDOWNBOX = 8 - TEXTBOX = 9 - VALUEBOX = 10 - SPINNER = 11 - LISTVIEW = 12 - COLORPICKER = 13 - SCROLLBAR = 14 - STATUSBAR = 15 - -class GuiControlProperty(IntEnum): - """Gui base properties for every control.""" - BORDER_COLOR_NORMAL = 0 - BASE_COLOR_NORMAL = 1 - TEXT_COLOR_NORMAL = 2 - BORDER_COLOR_FOCUSED = 3 - BASE_COLOR_FOCUSED = 4 - TEXT_COLOR_FOCUSED = 5 - BORDER_COLOR_PRESSED = 6 - BASE_COLOR_PRESSED = 7 - TEXT_COLOR_PRESSED = 8 - BORDER_COLOR_DISABLED = 9 - BASE_COLOR_DISABLED = 10 - TEXT_COLOR_DISABLED = 11 - BORDER_WIDTH = 12 - TEXT_PADDING = 13 - TEXT_ALIGNMENT = 14 - -class GuiDefaultProperty(IntEnum): - """DEFAULT extended properties.""" - TEXT_SIZE = 16 - TEXT_SPACING = 17 - LINE_COLOR = 18 - BACKGROUND_COLOR = 19 - TEXT_LINE_SPACING = 20 - TEXT_ALIGNMENT_VERTICAL = 21 - TEXT_WRAP_MODE = 22 - -class GuiToggleProperty(IntEnum): - """Toggle/ToggleGroup.""" - GROUP_PADDING = 16 - -class GuiSliderProperty(IntEnum): - """Slider/SliderBar.""" - SLIDER_WIDTH = 16 - SLIDER_PADDING = 17 - -class GuiProgressBarProperty(IntEnum): - """ProgressBar.""" - PROGRESS_PADDING = 16 - -class GuiScrollBarProperty(IntEnum): - """ScrollBar.""" - ARROWS_SIZE = 16 - ARROWS_VISIBLE = 17 - SCROLL_SLIDER_PADDING = 18 - SCROLL_SLIDER_SIZE = 19 - SCROLL_PADDING = 20 - SCROLL_SPEED = 21 - -class GuiCheckBoxProperty(IntEnum): - """CheckBox.""" - CHECK_PADDING = 16 - -class GuiComboBoxProperty(IntEnum): - """ComboBox.""" - COMBO_BUTTON_WIDTH = 16 - COMBO_BUTTON_SPACING = 17 - -class GuiDropdownBoxProperty(IntEnum): - """DropdownBox.""" - ARROW_PADDING = 16 - DROPDOWN_ITEMS_SPACING = 17 - DROPDOWN_ARROW_HIDDEN = 18 - DROPDOWN_ROLL_UP = 19 - -class GuiTextBoxProperty(IntEnum): - """TextBox/TextBoxMulti/ValueBox/Spinner.""" - TEXT_READONLY = 16 - -class GuiSpinnerProperty(IntEnum): - """Spinner.""" - SPIN_BUTTON_WIDTH = 16 - SPIN_BUTTON_SPACING = 17 - -class GuiListViewProperty(IntEnum): - """ListView.""" - LIST_ITEMS_HEIGHT = 16 - LIST_ITEMS_SPACING = 17 - SCROLLBAR_WIDTH = 18 - SCROLLBAR_SIDE = 19 - LIST_ITEMS_BORDER_WIDTH = 20 - -class GuiColorPickerProperty(IntEnum): - """ColorPicker.""" - COLOR_SELECTOR_SIZE = 16 - HUEBAR_WIDTH = 17 - HUEBAR_PADDING = 18 - HUEBAR_SELECTOR_HEIGHT = 19 - HUEBAR_SELECTOR_OVERFLOW = 20 - -class GuiIconName(IntEnum): - """.""" - ICON_NONE = 0 - ICON_FOLDER_FILE_OPEN = 1 - ICON_FILE_SAVE_CLASSIC = 2 - ICON_FOLDER_OPEN = 3 - ICON_FOLDER_SAVE = 4 - ICON_FILE_OPEN = 5 - ICON_FILE_SAVE = 6 - ICON_FILE_EXPORT = 7 - ICON_FILE_ADD = 8 - ICON_FILE_DELETE = 9 - ICON_FILETYPE_TEXT = 10 - ICON_FILETYPE_AUDIO = 11 - ICON_FILETYPE_IMAGE = 12 - ICON_FILETYPE_PLAY = 13 - ICON_FILETYPE_VIDEO = 14 - ICON_FILETYPE_INFO = 15 - ICON_FILE_COPY = 16 - ICON_FILE_CUT = 17 - ICON_FILE_PASTE = 18 - ICON_CURSOR_HAND = 19 - ICON_CURSOR_POINTER = 20 - ICON_CURSOR_CLASSIC = 21 - ICON_PENCIL = 22 - ICON_PENCIL_BIG = 23 - ICON_BRUSH_CLASSIC = 24 - ICON_BRUSH_PAINTER = 25 - ICON_WATER_DROP = 26 - ICON_COLOR_PICKER = 27 - ICON_RUBBER = 28 - ICON_COLOR_BUCKET = 29 - ICON_TEXT_T = 30 - ICON_TEXT_A = 31 - ICON_SCALE = 32 - ICON_RESIZE = 33 - ICON_FILTER_POINT = 34 - ICON_FILTER_BILINEAR = 35 - ICON_CROP = 36 - ICON_CROP_ALPHA = 37 - ICON_SQUARE_TOGGLE = 38 - ICON_SYMMETRY = 39 - ICON_SYMMETRY_HORIZONTAL = 40 - ICON_SYMMETRY_VERTICAL = 41 - ICON_LENS = 42 - ICON_LENS_BIG = 43 - ICON_EYE_ON = 44 - ICON_EYE_OFF = 45 - ICON_FILTER_TOP = 46 - ICON_FILTER = 47 - ICON_TARGET_POINT = 48 - ICON_TARGET_SMALL = 49 - ICON_TARGET_BIG = 50 - ICON_TARGET_MOVE = 51 - ICON_CURSOR_MOVE = 52 - ICON_CURSOR_SCALE = 53 - ICON_CURSOR_SCALE_RIGHT = 54 - ICON_CURSOR_SCALE_LEFT = 55 - ICON_UNDO = 56 - ICON_REDO = 57 - ICON_REREDO = 58 - ICON_MUTATE = 59 - ICON_ROTATE = 60 - ICON_REPEAT = 61 - ICON_SHUFFLE = 62 - ICON_EMPTYBOX = 63 - ICON_TARGET = 64 - ICON_TARGET_SMALL_FILL = 65 - ICON_TARGET_BIG_FILL = 66 - ICON_TARGET_MOVE_FILL = 67 - ICON_CURSOR_MOVE_FILL = 68 - ICON_CURSOR_SCALE_FILL = 69 - ICON_CURSOR_SCALE_RIGHT_FILL = 70 - ICON_CURSOR_SCALE_LEFT_FILL = 71 - ICON_UNDO_FILL = 72 - ICON_REDO_FILL = 73 - ICON_REREDO_FILL = 74 - ICON_MUTATE_FILL = 75 - ICON_ROTATE_FILL = 76 - ICON_REPEAT_FILL = 77 - ICON_SHUFFLE_FILL = 78 - ICON_EMPTYBOX_SMALL = 79 - ICON_BOX = 80 - ICON_BOX_TOP = 81 - ICON_BOX_TOP_RIGHT = 82 - ICON_BOX_RIGHT = 83 - ICON_BOX_BOTTOM_RIGHT = 84 - ICON_BOX_BOTTOM = 85 - ICON_BOX_BOTTOM_LEFT = 86 - ICON_BOX_LEFT = 87 - ICON_BOX_TOP_LEFT = 88 - ICON_BOX_CENTER = 89 - ICON_BOX_CIRCLE_MASK = 90 - ICON_POT = 91 - ICON_ALPHA_MULTIPLY = 92 - ICON_ALPHA_CLEAR = 93 - ICON_DITHERING = 94 - ICON_MIPMAPS = 95 - ICON_BOX_GRID = 96 - ICON_GRID = 97 - ICON_BOX_CORNERS_SMALL = 98 - ICON_BOX_CORNERS_BIG = 99 - ICON_FOUR_BOXES = 100 - ICON_GRID_FILL = 101 - ICON_BOX_MULTISIZE = 102 - ICON_ZOOM_SMALL = 103 - ICON_ZOOM_MEDIUM = 104 - ICON_ZOOM_BIG = 105 - ICON_ZOOM_ALL = 106 - ICON_ZOOM_CENTER = 107 - ICON_BOX_DOTS_SMALL = 108 - ICON_BOX_DOTS_BIG = 109 - ICON_BOX_CONCENTRIC = 110 - ICON_BOX_GRID_BIG = 111 - ICON_OK_TICK = 112 - ICON_CROSS = 113 - ICON_ARROW_LEFT = 114 - ICON_ARROW_RIGHT = 115 - ICON_ARROW_DOWN = 116 - ICON_ARROW_UP = 117 - ICON_ARROW_LEFT_FILL = 118 - ICON_ARROW_RIGHT_FILL = 119 - ICON_ARROW_DOWN_FILL = 120 - ICON_ARROW_UP_FILL = 121 - ICON_AUDIO = 122 - ICON_FX = 123 - ICON_WAVE = 124 - ICON_WAVE_SINUS = 125 - ICON_WAVE_SQUARE = 126 - ICON_WAVE_TRIANGULAR = 127 - ICON_CROSS_SMALL = 128 - ICON_PLAYER_PREVIOUS = 129 - ICON_PLAYER_PLAY_BACK = 130 - ICON_PLAYER_PLAY = 131 - ICON_PLAYER_PAUSE = 132 - ICON_PLAYER_STOP = 133 - ICON_PLAYER_NEXT = 134 - ICON_PLAYER_RECORD = 135 - ICON_MAGNET = 136 - ICON_LOCK_CLOSE = 137 - ICON_LOCK_OPEN = 138 - ICON_CLOCK = 139 - ICON_TOOLS = 140 - ICON_GEAR = 141 - ICON_GEAR_BIG = 142 - ICON_BIN = 143 - ICON_HAND_POINTER = 144 - ICON_LASER = 145 - ICON_COIN = 146 - ICON_EXPLOSION = 147 - ICON_1UP = 148 - ICON_PLAYER = 149 - ICON_PLAYER_JUMP = 150 - ICON_KEY = 151 - ICON_DEMON = 152 - ICON_TEXT_POPUP = 153 - ICON_GEAR_EX = 154 - ICON_CRACK = 155 - ICON_CRACK_POINTS = 156 - ICON_STAR = 157 - ICON_DOOR = 158 - ICON_EXIT = 159 - ICON_MODE_2D = 160 - ICON_MODE_3D = 161 - ICON_CUBE = 162 - ICON_CUBE_FACE_TOP = 163 - ICON_CUBE_FACE_LEFT = 164 - ICON_CUBE_FACE_FRONT = 165 - ICON_CUBE_FACE_BOTTOM = 166 - ICON_CUBE_FACE_RIGHT = 167 - ICON_CUBE_FACE_BACK = 168 - ICON_CAMERA = 169 - ICON_SPECIAL = 170 - ICON_LINK_NET = 171 - ICON_LINK_BOXES = 172 - ICON_LINK_MULTI = 173 - ICON_LINK = 174 - ICON_LINK_BROKE = 175 - ICON_TEXT_NOTES = 176 - ICON_NOTEBOOK = 177 - ICON_SUITCASE = 178 - ICON_SUITCASE_ZIP = 179 - ICON_MAILBOX = 180 - ICON_MONITOR = 181 - ICON_PRINTER = 182 - ICON_PHOTO_CAMERA = 183 - ICON_PHOTO_CAMERA_FLASH = 184 - ICON_HOUSE = 185 - ICON_HEART = 186 - ICON_CORNER = 187 - ICON_VERTICAL_BARS = 188 - ICON_VERTICAL_BARS_FILL = 189 - ICON_LIFE_BARS = 190 - ICON_INFO = 191 - ICON_CROSSLINE = 192 - ICON_HELP = 193 - ICON_FILETYPE_ALPHA = 194 - ICON_FILETYPE_HOME = 195 - ICON_LAYERS_VISIBLE = 196 - ICON_LAYERS = 197 - ICON_WINDOW = 198 - ICON_HIDPI = 199 - ICON_FILETYPE_BINARY = 200 - ICON_HEX = 201 - ICON_SHIELD = 202 - ICON_FILE_NEW = 203 - ICON_FOLDER_ADD = 204 - ICON_ALARM = 205 - ICON_CPU = 206 - ICON_ROM = 207 - ICON_STEP_OVER = 208 - ICON_STEP_INTO = 209 - ICON_STEP_OUT = 210 - ICON_RESTART = 211 - ICON_BREAKPOINT_ON = 212 - ICON_BREAKPOINT_OFF = 213 - ICON_BURGER_MENU = 214 - ICON_CASE_SENSITIVE = 215 - ICON_REG_EXP = 216 - ICON_FOLDER = 217 - ICON_FILE = 218 - ICON_SAND_TIMER = 219 - 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 - ICON_232 = 232 - ICON_233 = 233 - ICON_234 = 234 - ICON_235 = 235 - ICON_236 = 236 - ICON_237 = 237 - ICON_238 = 238 - ICON_239 = 239 - ICON_240 = 240 - ICON_241 = 241 - ICON_242 = 242 - ICON_243 = 243 - ICON_244 = 244 - ICON_245 = 245 - ICON_246 = 246 - ICON_247 = 247 - ICON_248 = 248 - ICON_249 = 249 - ICON_250 = 250 - ICON_251 = 251 - ICON_252 = 252 - ICON_253 = 253 - ICON_254 = 254 - ICON_255 = 255 - diff --git a/dynamic/raylib/libraylib.dylib b/dynamic/raylib/libraylib.dylib deleted file mode 100755 index 5019b64..0000000 Binary files a/dynamic/raylib/libraylib.dylib and /dev/null differ diff --git a/dynamic/raylib/libraylib.so b/dynamic/raylib/libraylib.so deleted file mode 100755 index 0771502..0000000 Binary files a/dynamic/raylib/libraylib.so and /dev/null differ diff --git a/dynamic/raylib/py.typed b/dynamic/raylib/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/dynamic/raylib/raylib.dll b/dynamic/raylib/raylib.dll deleted file mode 100644 index 12ea7c8..0000000 Binary files a/dynamic/raylib/raylib.dll and /dev/null differ diff --git a/dynamic/raylib/raylib_modified.h b/dynamic/raylib/raylib_modified.h deleted file mode 120000 index c9bb387..0000000 --- a/dynamic/raylib/raylib_modified.h +++ /dev/null @@ -1 +0,0 @@ -../../raylib/raylib.h.modified \ No newline at end of file diff --git a/dynamic/raylib/version.py b/dynamic/raylib/version.py deleted file mode 120000 index b6d41e6..0000000 --- a/dynamic/raylib/version.py +++ /dev/null @@ -1 +0,0 @@ -../../version.py \ No newline at end of file diff --git a/dynamic/setup.py b/dynamic/setup.py deleted file mode 100644 index 4af2f03..0000000 --- a/dynamic/setup.py +++ /dev/null @@ -1,38 +0,0 @@ -import pathlib -from setuptools import setup -from setuptools.dist import Distribution -from version import __version__ - -# The directory containing this file -HERE = pathlib.Path(__file__).parent - -# The text of the README file -README = (HERE / "README.rst").read_text() - - -# This call to setup() does all the work -setup( - name="raylib_dynamic", - version=__version__, - description="Python CFFI bindings for Raylib DLL version", - long_description=README, - long_description_content_type="text/x-rst", - url="https://github.com/electronstudio/raylib-python-cffi", - author="Electron Studio", - author_email="github@electronstudio.co.uk", - license="EPL-2.0", - classifiers=[ - "License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0)", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - ], - packages=["raylib", "pyray"], - include_package_data=True, - install_requires=["cffi>=1.14.5","inflection"], -) - - diff --git a/dynamic/test_dynamic.py b/dynamic/test_dynamic.py deleted file mode 100644 index 7e47a6e..0000000 --- a/dynamic/test_dynamic.py +++ /dev/null @@ -1,36 +0,0 @@ -""" -This shows how to use the CFFI dynamic (ABI) binding. Note that is slower and more likely to run into silent errors and segfaults. -But it doesnt require any C compiler to build. -""" - -from raylib import ffi, rl, colors - -rl.InitWindow(800, 450, b"Raylib dynamic binding test") -rl.SetTargetFPS(60) - -camera = ffi.new("struct Camera3D *", [[18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0]) -image = rl.LoadImage(b"../examples/models/resources/heightmap.png") -texture = rl.LoadTextureFromImage(image) -mesh = rl.GenMeshHeightmap(image, [16, 8, 16]) -model = rl.LoadModelFromMesh(mesh) -print(model.materials) # SHOULD BE A pointer to a 'struct Material' but some is NULL pointer to 'Material' ? -model.materials.maps[rl.MATERIAL_MAP_ALBEDO].texture = texture - -rl.UnloadImage(image) - -while not rl.WindowShouldClose(): - rl.UpdateCamera(camera, rl.CAMERA_ORBITAL) - rl.BeginDrawing() - rl.ClearBackground(colors.RAYWHITE) - rl.BeginMode3D(camera[0]) - rl.DrawModel(model, (-8.0, 0.0, -8.0), 1.0, colors.RED) - rl.DrawGrid(20, 1.0) - rl.EndMode3D() - rl.DrawText(b"This mesh should be textured", 190, 200, 20, colors.VIOLET) - rl.EndDrawing() -rl.CloseWindow() - -""" -Previously this failed to work in the same place the ctypes binding fails, accessing -materials of a model. I though it was because Python can't dynamically tell the difference between a pointer and an array. -""" diff --git a/dynamic/test_pyray.py b/dynamic/test_pyray.py deleted file mode 100644 index cfa5f3b..0000000 --- a/dynamic/test_pyray.py +++ /dev/null @@ -1,41 +0,0 @@ -""" -This shows how to use the Pyray wrapper around the static binding. -""" - -import pyray as pr - -pr.init_window(800, 450, "Raylib texture test") -pr.set_target_fps(60) - -image = pr.gen_image_color(800, 400, (0,0,0,255) ) -texture = pr.load_texture_from_image(image) -pr.update_texture(texture, image.data) - -camera = pr.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0) -image = pr.load_image("examples/models/resources/heightmap.png") -texture = pr.load_texture_from_image(image) -mesh = pr.gen_mesh_heightmap(image, (16, 8, 16)) -model = pr.load_model_from_mesh(mesh) -model.materials.maps[pr.MATERIAL_MAP_ALBEDO].texture = texture - -pr.unload_image(image) - -pos = pr.get_mouse_position() -ray = pr.get_screen_to_world_ray(pos, camera) - - -while not pr.window_should_close(): - pr.update_camera(camera, pr.CAMERA_ORBITAL) - pr.begin_drawing() - pr.clear_background(pr.RAYWHITE) - pr.begin_mode_3d(camera) - pr.draw_model(model, (-8.0, 0.0, -8.0), 1.0, pr.RED) - pr.draw_grid(20, 1.0) - pr.end_mode_3d() - pr.draw_text("This mesh should be textured", 190, 200, 20, pr.VIOLET) - pr.end_drawing() - - pos = pr.get_mouse_position() - ray = pr.get_screen_to_world_ray(pos, camera) - -pr.close_window() diff --git a/dynamic/version.py b/dynamic/version.py deleted file mode 120000 index a508b60..0000000 --- a/dynamic/version.py +++ /dev/null @@ -1 +0,0 @@ -../version.py \ No newline at end of file diff --git a/examples/audio/audio_module_playing.py b/examples/audio/audio_module_playing.py deleted file mode 100644 index 94c7e25..0000000 --- a/examples/audio/audio_module_playing.py +++ /dev/null @@ -1,151 +0,0 @@ -""" - -raylib [audio] example - playing - -""" -import dataclasses -import pyray -import raylib as rl - - -MAX_CIRCLES=64 - - -@dataclasses.dataclass -class CircleWave: - position: pyray.Vector2 - radius: float - alpha: float - speed: float - color: pyray.Color - -screenWidth = 800 -screenHeight = 450 - -rl.SetConfigFlags(rl.FLAG_MSAA_4X_HINT) # NOTE: Try to enable MSAA 4X - -rl.InitWindow(screenWidth, screenHeight, b"raylib [audio] example - module playing (streaming)") - -rl.InitAudioDevice() # Initialize audio device - -colors = [pyray.ORANGE, pyray.RED, pyray.GOLD, pyray.LIME, pyray.BLUE, pyray.VIOLET, pyray.BROWN, pyray.LIGHTGRAY, pyray.PINK, - pyray.YELLOW, pyray.GREEN, pyray.SKYBLUE, pyray.PURPLE, pyray.BEIGE] - -# Creates some circles for visual effect -circles = [] - -for i in range(MAX_CIRCLES): - rad = rl.GetRandomValue(10, 40) - pos = pyray.Vector2( - float(rl.GetRandomValue(rad, int(screenWidth) - rad)), - float(rl.GetRandomValue(rad, int(screenHeight) - rad)) - ) - c = CircleWave( - alpha=0.0, - radius=float(rad), - position=pos, - speed=float(rl.GetRandomValue(1, 100))/2000.0, - color=colors[rl.GetRandomValue(0, 13)] - ) - circles.append(c) - -music = rl.LoadMusicStream(b"resources/mini1111.xm") -music.looping = False -pitch = 1.0 - -rl.PlayMusicStream(music) -timePlayed = 0.0 -pause = False - -rl.SetTargetFPS(60) # Set our game to run at 60 frames-per-second - - -# Main game loop -while not rl.WindowShouldClose(): # Detect window close button or ESC key - # Update - #---------------------------------------------------------------------------------- - rl.UpdateMusicStream(music) # Update music buffer with new stream data - - # Restart music playing (stop and play) - if rl.IsKeyPressed(rl.KEY_SPACE): - rl.StopMusicStream(music) - rl.PlayMusicStream(music) - pause = False - - # Pause/Resume music playing - if rl.IsKeyPressed(rl.KEY_P): - pause = not pause - if pause: - rl.PauseMusicStream(music) - else: - rl.ResumeMusicStream(music) - - - if rl.IsKeyDown(rl.KEY_DOWN): - pitch -= 0.01 - elif rl.IsKeyDown(rl.KEY_UP): - pitch += 0.01 - - rl.SetMusicPitch(music, pitch) - - # Get timePlayed scaled to bar dimensions - timePlayed = (rl.GetMusicTimePlayed(music) / rl.GetMusicTimeLength(music))*(screenWidth - 40) - - # Color circles animation - for i in range(MAX_CIRCLES): - if pause: - break - - circles[i].alpha += circles[i].speed - circles[i].radius += circles[i].speed*10.0 - - if circles[i].alpha > 1.0: - circles[i].speed *= -1 - - if circles[i].alpha <= 0.0: - circles[i].alpha = 0.0 - rad = rl.GetRandomValue(10, 40) - pos = pyray.Vector2( - float(rl.GetRandomValue(rad, int(screenWidth) - rad)), - float(rl.GetRandomValue(rad, int(screenHeight) - rad)) - ) - circles[i].position = pos - circles[i].radius = float(rad) - circles[i].speed = float(rl.GetRandomValue(1, 100)) / 2000.0 - circles[i].color = colors[rl.GetRandomValue(0, 13)] - - #---------------------------------------------------------------------------------- - - # Draw - #---------------------------------------------------------------------------------- - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - - for i in range(MAX_CIRCLES): - pyray.draw_circle_v(circles[i].position, circles[i].radius, pyray.fade(circles[i].color, circles[i].alpha)) - - # Draw time bar - pyray.draw_rectangle(20, screenHeight - 20 - 12, screenWidth - 40, 12, pyray.LIGHTGRAY) - pyray.draw_rectangle(20, screenHeight - 20 - 12, int(timePlayed), 12, pyray.MAROON) - pyray.draw_rectangle_lines(20, screenHeight - 20 - 12, screenWidth - 40, 12, pyray.GRAY) - - # Draw help instructions - pyray.draw_rectangle(20, 20, 425, 145, pyray.RAYWHITE) - pyray.draw_rectangle_lines(20, 20, 425, 145, pyray.GRAY) - pyray.draw_text("PRESS SPACE TO RESTART MUSIC", 40, 40, 20, pyray.BLACK) - pyray.draw_text("PRESS P TO PAUSE/RESUME", 40, 70, 20, pyray.BLACK) - pyray.draw_text("PRESS UP/DOWN TO CHANGE SPEED", 40, 100, 20, pyray.BLACK) - pyray.draw_text(f"SPEED: {pitch}", 40, 130, 20, pyray.MAROON) - - pyray.end_drawing() - #---------------------------------------------------------------------------------- - - -# De-Initialization -#-------------------------------------------------------------------------------------- -rl.UnloadMusicStream(music) # Unload music stream buffers from RAM - -rl.CloseAudioDevice() # Close audio device (music streaming is automatically stopped) - -rl.CloseWindow() # Close window and OpenGL context diff --git a/examples/audio/audio_music_stream.py b/examples/audio/audio_music_stream.py deleted file mode 100644 index 46f88ad..0000000 --- a/examples/audio/audio_music_stream.py +++ /dev/null @@ -1,101 +0,0 @@ -"""checked with raylib-python-cffi 5.5.0.2 -raylib [audio] example - Music playing (streaming) -Example complexity rating: [★☆☆☆] 1/4 -Example originally created with raylib 1.3, last time updated with raylib 4.0 -Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -BSD-like license that allows static linking with closed source software -Copyright (c) 2015-2025 Ramon Santamaria (@raysan5) - -This source has been converted from C raylib examples to Python. -""" - -import pyray as rl -from pathlib import Path - -THIS_DIR = Path(__file__).resolve().parent - - -# ------------------------------------------------------------------------------------ -# Program main entry point -# ------------------------------------------------------------------------------------ -def main(): - # Initialization - # -------------------------------------------------------------------------------------- - screen_width = 800 - screen_height = 450 - - rl.init_window( - screen_width, - screen_height, - "raylib [audio] example - music playing (streaming)", - ) - - rl.init_audio_device() # Initialize audio device - - music = rl.load_music_stream(str(THIS_DIR / "resources/country.mp3")) - - rl.play_music_stream(music) - - time_played = 0.0 # Time played normalized [0.0f..1.0f] - pause = False # Music playing paused - - rl.set_target_fps(30) # Set our game to run at 30 frames-per-second - # -------------------------------------------------------------------------------------- - - # Main game loop - while not rl.window_should_close(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - rl.update_music_stream(music) # Update music buffer with new stream data - - # Restart music playing (stop and play) - if rl.is_key_pressed(rl.KEY_SPACE): - rl.stop_music_stream(music) - rl.play_music_stream(music) - - # Pause/Resume music playing - if rl.is_key_pressed(rl.KEY_P): - pause = not pause - - if pause: - rl.pause_music_stream(music) - else: - rl.resume_music_stream(music) - - # Get normalized time played for current music stream - time_played = rl.get_music_time_played(music) / rl.get_music_time_length(music) - - if time_played > 1.0: - time_played = 1.0 # Make sure time played is no longer than music - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - rl.begin_drawing() - - rl.clear_background(rl.RAYWHITE) - - rl.draw_text("MUSIC SHOULD BE PLAYING!", 255, 150, 20, rl.LIGHTGRAY) - - rl.draw_rectangle(200, 200, 400, 12, rl.LIGHTGRAY) - rl.draw_rectangle(200, 200, int(time_played * 400.0), 12, rl.MAROON) - rl.draw_rectangle_lines(200, 200, 400, 12, rl.GRAY) - - rl.draw_text("PRESS SPACE TO RESTART MUSIC", 215, 250, 20, rl.LIGHTGRAY) - rl.draw_text("PRESS P TO PAUSE/RESUME MUSIC", 208, 280, 20, rl.LIGHTGRAY) - - rl.end_drawing() - # ---------------------------------------------------------------------------------- - - # De-Initialization - # -------------------------------------------------------------------------------------- - rl.unload_music_stream(music) # Unload music stream buffers from RAM - - rl.close_audio_device() # Close audio device (music streaming is automatically stopped) - - rl.close_window() # Close window and OpenGL context - # -------------------------------------------------------------------------------------- - - -if __name__ == "__main__": - main() diff --git a/examples/audio/audio_sound_loading.py b/examples/audio/audio_sound_loading.py deleted file mode 100644 index 3854293..0000000 --- a/examples/audio/audio_sound_loading.py +++ /dev/null @@ -1,67 +0,0 @@ -"""checked with raylib-python-cffi 5.5.0.2 -raylib [audio] example - Sound loading and playing -Example complexity rating: [★☆☆☆] 1/4 -Example originally created with raylib 1.1, last time updated with raylib 3.5 -Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -BSD-like license that allows static linking with closed source software -Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) - -This source has been converted from C raylib examples to Python. -""" - -import pyray as rl -from pathlib import Path - -# Get the directory where this script is located -THIS_DIR = Path(__file__).resolve().parent - -# Initialization -# -------------------------------------------------------------------------------------- -screen_width = 800 -screen_height = 450 - -rl.init_window( - screen_width, screen_height, "raylib [audio] example - sound loading and playing" -) - -rl.init_audio_device() # Initialize audio device - -# Load WAV audio file using proper path resolution -fx_wav = rl.load_sound(str(THIS_DIR / "resources/sound.wav")) -# Load OGG audio file using proper path resolution -fx_ogg = rl.load_sound(str(THIS_DIR / "resources/target.ogg")) - -rl.set_target_fps(60) # Set our game to run at 60 frames-per-second -# -------------------------------------------------------------------------------------- - -# Main game loop -while not rl.window_should_close(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - if rl.is_key_pressed(rl.KeyboardKey.KEY_SPACE): - rl.play_sound(fx_wav) # Play WAV sound - if rl.is_key_pressed(rl.KeyboardKey.KEY_ENTER): - rl.play_sound(fx_ogg) # Play OGG sound - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - rl.begin_drawing() - - rl.clear_background(rl.RAYWHITE) - - rl.draw_text("Press SPACE to PLAY the WAV sound!", 200, 180, 20, rl.LIGHTGRAY) - rl.draw_text("Press ENTER to PLAY the OGG sound!", 200, 220, 20, rl.LIGHTGRAY) - - rl.end_drawing() - # ---------------------------------------------------------------------------------- - -# De-Initialization -# -------------------------------------------------------------------------------------- -rl.unload_sound(fx_wav) # Unload sound data -rl.unload_sound(fx_ogg) # Unload sound data - -rl.close_audio_device() # Close audio device - -rl.close_window() # Close window and OpenGL context -# -------------------------------------------------------------------------------------- diff --git a/examples/audio/audio_sound_multi.py b/examples/audio/audio_sound_multi.py deleted file mode 100644 index 0cc6c82..0000000 --- a/examples/audio/audio_sound_multi.py +++ /dev/null @@ -1,86 +0,0 @@ -"""checked with raylib-python-cffi 5.5.0.2 -raylib [audio] example - Playing sound multiple times -Example complexity rating: [★★☆☆] 2/4 -Example originally created with raylib 4.6, last time updated with raylib 4.6 -Example contributed by Jeffery Myers (@JeffM2501) and reviewed by Ramon Santamaria (@raysan5) -Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -BSD-like license that allows static linking with closed source software -Copyright (c) 2023-2025 Jeffery Myers (@JeffM2501) - -This source has been converted from C raylib examples to Python. -""" - -from typing import List - -import pyray as rl -from pathlib import Path - -# Get the directory where this script is located -THIS_DIR = Path(__file__).resolve().parent - -MAX_SOUNDS = 10 -sound_array: List[rl.Sound] = [] -current_sound = 0 - -# Initialization -# -------------------------------------------------------------------------------------- -screen_width = 800 -screen_height = 450 - -rl.init_window( - screen_width, screen_height, "raylib [audio] example - playing sound multiple times" -) - -rl.init_audio_device() # Initialize audio device - -# Load the sound list -sound_array.append( - rl.load_sound(str(THIS_DIR / "resources/sound.wav")) -) # Load WAV audio file into the first slot as the 'source' sound -# this sound owns the sample data -for i in range(1, MAX_SOUNDS): - sound_array.append( - rl.load_sound_alias(sound_array[0]) - ) # Load an alias of the sound into slots 1-9 - # These do not own the sound data, but can be played -current_sound = 0 # Set the sound list to the start - -rl.set_target_fps(60) # Set our game to run at 60 frames-per-second -# -------------------------------------------------------------------------------------- - -# Main game loop -while not rl.window_should_close(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - if rl.is_key_pressed(rl.KeyboardKey.KEY_SPACE): - rl.play_sound(sound_array[current_sound]) # Play the next open sound slot - current_sound += 1 # Increment the sound slot - if ( - current_sound >= MAX_SOUNDS - ): # If the sound slot is out of bounds, go back to 0 - current_sound = 0 - - # Note: a better way would be to look at the list for the first sound that is not playing and use that slot - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - rl.begin_drawing() - - rl.clear_background(rl.RAYWHITE) - - rl.draw_text("Press SPACE to PLAY a WAV sound!", 200, 180, 20, rl.LIGHTGRAY) - - rl.end_drawing() - # ---------------------------------------------------------------------------------- - -# De-Initialization -# -------------------------------------------------------------------------------------- -for i in range(1, MAX_SOUNDS): - rl.unload_sound_alias(sound_array[i]) # Unload sound aliases -rl.unload_sound(sound_array[0]) # Unload source sound data - -rl.close_audio_device() # Close audio device - -rl.close_window() # Close window and OpenGL context -# -------------------------------------------------------------------------------------- diff --git a/examples/audio/audio_sound_positioning.py b/examples/audio/audio_sound_positioning.py deleted file mode 100644 index f3e77cf..0000000 --- a/examples/audio/audio_sound_positioning.py +++ /dev/null @@ -1,112 +0,0 @@ -"""checked with raylib-python-cffi 5.5.0.2 -raylib [audio] example - Playing spatialized 3D sound -Example complexity rating: [★★☆☆] 2/4 -Example originally created with raylib 5.5, last time updated with raylib 5.5 -Example contributed by Le Juez Victor (@Bigfoot71) and reviewed by Ramon Santamaria (@raysan5) -Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -BSD-like license that allows static linking with closed source software -Copyright (c) 2025 Le Juez Victor (@Bigfoot71) - -This source has been converted from C raylib examples to Python. -""" - -import pyray as rl -import math -from pathlib import Path - -# Get the directory where this script is located -THIS_DIR = Path(__file__).resolve().parent - - -# Sound positioning function -def set_sound_position(listener, sound, position, max_dist): - # Calculate direction vector and distance between listener and sound source - direction = rl.vector3_subtract(position, listener.position) - distance = rl.vector3_length(direction) - - # Apply logarithmic distance attenuation and clamp between 0-1 - attenuation = 1.0 / (1.0 + (distance / max_dist)) - attenuation = rl.clamp(attenuation, 0.0, 1.0) - - # Calculate normalized vectors for spatial positioning - normalized_direction = rl.vector3_normalize(direction) - forward = rl.vector3_normalize( - rl.vector3_subtract(listener.target, listener.position) - ) - right = rl.vector3_normalize(rl.vector3_cross_product(listener.up, forward)) - - # Reduce volume for sounds behind the listener - dot_product = rl.vector3_dot_product(forward, normalized_direction) - if dot_product < 0.0: - attenuation *= 1.0 + dot_product * 0.5 - - # Set stereo panning based on sound position relative to listener - pan = 0.5 + 0.5 * rl.vector3_dot_product(normalized_direction, right) - - # Apply final sound properties - rl.set_sound_volume(sound, attenuation) - rl.set_sound_pan(sound, pan) - - -# Initialization -# -------------------------------------------------------------------------------------- -screen_width = 800 -screen_height = 450 - -rl.init_window( - screen_width, screen_height, "raylib [audio] example - Playing spatialized 3D sound" -) - -rl.init_audio_device() - -sound = rl.load_sound(str(THIS_DIR / "resources/coin.wav")) - -camera = rl.Camera3D( - (0, 5, 5), - (0, 0, 0), - (0, 1, 0), - 60.0, - rl.CameraProjection.CAMERA_PERSPECTIVE, -) - -rl.disable_cursor() - -rl.set_target_fps(60) -# -------------------------------------------------------------------------------------- - -# Main game loop -while not rl.window_should_close(): - # Update - # ---------------------------------------------------------------------------------- - rl.update_camera(camera, rl.CameraMode.CAMERA_FREE) - - th = rl.get_time() - - sphere_pos = rl.Vector3(5.0 * math.cos(th), 0.0, 5.0 * math.sin(th)) - - set_sound_position(camera, sound, sphere_pos, 20.0) - if not rl.is_sound_playing(sound): - rl.play_sound(sound) - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - rl.begin_drawing() - - rl.clear_background(rl.RAYWHITE) - - rl.begin_mode_3d(camera) - rl.draw_grid(10, 2) - rl.draw_sphere(sphere_pos, 0.5, rl.RED) - rl.end_mode_3d() - - rl.end_drawing() - # ---------------------------------------------------------------------------------- - -# De-Initialization -# -------------------------------------------------------------------------------------- -rl.unload_sound(sound) -rl.close_audio_device() # Close audio device - -rl.close_window() # Close window and OpenGL context -# -------------------------------------------------------------------------------------- diff --git a/examples/audio/resources/coin.wav b/examples/audio/resources/coin.wav deleted file mode 100644 index ad95bfb..0000000 Binary files a/examples/audio/resources/coin.wav and /dev/null differ diff --git a/examples/audio/resources/country.mp3 b/examples/audio/resources/country.mp3 deleted file mode 100644 index 91066cc..0000000 Binary files a/examples/audio/resources/country.mp3 and /dev/null differ diff --git a/examples/audio/resources/mini1111.xm b/examples/audio/resources/mini1111.xm deleted file mode 100644 index a185c1a..0000000 Binary files a/examples/audio/resources/mini1111.xm and /dev/null differ diff --git a/examples/audio/resources/sound.wav b/examples/audio/resources/sound.wav deleted file mode 100644 index b5d01c9..0000000 Binary files a/examples/audio/resources/sound.wav and /dev/null differ diff --git a/examples/audio/resources/target.ogg b/examples/audio/resources/target.ogg deleted file mode 100644 index 2b73e1c..0000000 Binary files a/examples/audio/resources/target.ogg and /dev/null differ diff --git a/examples/core/core_2d_camera.py b/examples/core/core_2d_camera.py deleted file mode 100644 index 8a6bc05..0000000 --- a/examples/core/core_2d_camera.py +++ /dev/null @@ -1,132 +0,0 @@ -""" - -raylib [core] example - 2D Camera System - -""" -import pyray - -from pyray import ( - RAYWHITE, - DARKGRAY, - RED, - GREEN, - SKYBLUE, - BLUE, - BLACK, -) - -# Initialization -MAX_BUILDINGS = 100 -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT,'raylib [core] example - 2d camera') - -player = pyray.Rectangle(400, 280, 40, 40) -buildings = [] -build_colors = [] -spacing = 0 - -for i in range(MAX_BUILDINGS): - width = pyray.get_random_value(50, 200) - height = pyray.get_random_value(100, 800) - y = SCREEN_HEIGHT - 130 - height - x = -6000 + spacing - - buildings.append(pyray.Rectangle(x, y, width, height)) - - spacing += width - - build_colors.append(pyray.Color( - pyray.get_random_value(200, 240), - pyray.get_random_value(200, 240), - pyray.get_random_value(200, 250), - 255 - )) - -camera = pyray.Camera2D() -camera.target = pyray.Vector2(player.x + 20, player.y + 20) -camera.offset = pyray.Vector2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2) -camera.rotation = 0.0 -camera.zoom = 1.0 - -pyray.set_target_fps(60) # Set our game to run at 60 frames-per-second - -# Main game loop -while not pyray.window_should_close(): # Detect window close button or ESC key - # Update - - # Player movement - if pyray.is_key_down(pyray.KeyboardKey.KEY_RIGHT): - player.x += 2 - elif pyray.is_key_down(pyray.KeyboardKey.KEY_LEFT): - player.x -= 2 - - # Camera target follows player - camera.target = pyray.Vector2(player.x + 20, player.y + 20) - - # Camera rotation controls - if pyray.is_key_down(pyray.KeyboardKey.KEY_A): - camera.rotation -= 1 - elif pyray.is_key_down(pyray.KeyboardKey.KEY_S): - camera.rotation += 1 - - # Limit camera rotation to 80 degrees (-40 to 40) - if camera.rotation > 40: - camera.rotation = 40 - elif camera.rotation < -40: - camera.rotation = -40 - - # Camera zoom controls - camera.zoom += pyray.get_mouse_wheel_move() * 0.05 - - if camera.zoom > 3.0: - camera.zoom = 3.0 - elif camera.zoom < 0.1: - camera.zoom = 0.1 - - # Camera reset (zoom and rotation) - if pyray.is_key_pressed(pyray.KeyboardKey.KEY_R): - camera.zoom = 1.0 - camera.rotation = 0.0 - - # Draw - pyray.begin_drawing() - pyray.clear_background(RAYWHITE) - - pyray.begin_mode_2d(camera) - - pyray.draw_rectangle(-6000, 320, 13000, 8000, DARKGRAY) - - for i in range(MAX_BUILDINGS): - pyray.draw_rectangle_rec(buildings[i], build_colors[i]) - - pyray.draw_rectangle_rec(player, RED) - - x = int(camera.target.x) - y = int(camera.target.y) - pyray.draw_line(x, -SCREEN_HEIGHT * 10, x, SCREEN_HEIGHT * 10, GREEN) - pyray.draw_line(-SCREEN_WIDTH * 10, y, SCREEN_WIDTH * 10, y, GREEN) - - pyray.end_mode_2d() - - pyray.draw_text('SCREEN AREA', 640, 10, 20, RED) - - pyray.draw_rectangle(0, 0, SCREEN_WIDTH, 5, RED) - pyray.draw_rectangle(0, 5, 5, SCREEN_HEIGHT - 10, RED) - pyray.draw_rectangle(SCREEN_WIDTH - 5, 5, 5, SCREEN_HEIGHT - 10, RED) - pyray.draw_rectangle(0, SCREEN_HEIGHT - 5, SCREEN_WIDTH, 5, RED) - - pyray.draw_rectangle(10, 10, 250, 113, pyray.fade(SKYBLUE, 0.5)) - pyray.draw_rectangle_lines(10, 10, 250, 113, BLUE) - - pyray.draw_text('Free 2d camera controls:', 20, 20, 10, BLACK) - pyray.draw_text('- Right/Left to move Offset', 40, 40, 10, DARKGRAY) - pyray.draw_text('- Mouse Wheel to Zoom in-out', 40, 60, 10, DARKGRAY) - pyray.draw_text('- A / S to Rotate', 40, 80, 10, DARKGRAY) - pyray.draw_text('- R to reset Zoom and Rotation', 40, 100, 10, DARKGRAY) - - pyray.end_drawing() - -# De-Initialization -pyray.close_window() # Close window and OpenGL context diff --git a/examples/core/core_2d_camera_mouse_zoom.py b/examples/core/core_2d_camera_mouse_zoom.py deleted file mode 100644 index aeeabf2..0000000 --- a/examples/core/core_2d_camera_mouse_zoom.py +++ /dev/null @@ -1,66 +0,0 @@ -""" -raylib [core] example - 2d camera mouse zoom -""" - -import pyray - -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - 2d camera mouse zoom") - -pyray.set_target_fps(60) - -camera = pyray.Camera2D() - -camera.zoom = 1.0 - -pyray.set_target_fps(60) - -# main game loop -while not pyray.window_should_close(): - # update - if pyray.is_mouse_button_down(pyray.MouseButton.MOUSE_BUTTON_RIGHT): - delta = pyray.get_mouse_delta() - delta = pyray.vector2_scale(delta, -1.0 / camera.zoom) - camera.target = pyray.vector2_add(camera.target, delta) - - # zoom based on mouse wheel - wheel = pyray.get_mouse_wheel_move() - if wheel != 0: - - mouseWorldPos = pyray.get_screen_to_world_2d(pyray.get_mouse_position(), camera) - - camera.offset = pyray.get_mouse_position() - - camera.target = mouseWorldPos - - ZOOM_INCREMENT = 0.125 - - camera.zoom += (wheel*ZOOM_INCREMENT) - if (camera.zoom < ZOOM_INCREMENT): camera.zoom = ZOOM_INCREMENT - - - # draw - pyray.begin_drawing() - pyray.clear_background(pyray.BLACK) - - pyray.begin_mode_2d(camera) - - pyray.rl_push_matrix() - pyray.rl_translatef(0, 25*50, 0) - pyray.rl_rotatef(90, 1, 0, 0) - pyray.draw_grid(100, 50) - pyray.rl_pop_matrix() - - pyray.draw_circle(100, 100, 50, pyray.YELLOW) - - pyray.end_mode_2d() - - pyray.draw_text("Mouse right button drag to move, mouse wheel to zoom", 10, 10, 20, pyray.WHITE) - - pyray.end_drawing() - -# de-Initialization -pyray.close_window() - diff --git a/examples/core/core_2d_camera_platformer.py b/examples/core/core_2d_camera_platformer.py deleted file mode 100644 index db8ed8f..0000000 --- a/examples/core/core_2d_camera_platformer.py +++ /dev/null @@ -1,310 +0,0 @@ -""" - -raylib [core] example - 2D Camera platformer - -""" -from math import sqrt - -import pyray -from pyray import ( - DARKGRAY, - RED, - BLACK, - GRAY, - LIGHTGRAY, -) - -# Initialization -global g_evening_out, g_even_out_target -g_evening_out = False - -G = 400 -PLAYER_JUMP_SPD = 350.0 -PLAYER_HOR_SPD = 200.0 - -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, 'raylib [core] example - 2d camera') - - -# Raylib Math -def vector2_subtract(v1, v2): - return pyray.Vector2(v1.x - v2.x, v1.y - v2.y) - - -def vector2_add(v1, v2): - return pyray.Vector2(v1.x + v2.x, v1.y + v2.y) - - -def vector2_length(v): - return sqrt((v.x * v.x) + (v.y * v.y)) - - -def vector2_scale(v, scale): - return pyray.Vector2(v.x * scale, v.y * scale) - - -class Player: - - def __init__(self, position, speed, can_jump): - self.position = position - self.speed = speed - self.can_jump = can_jump - - -class EnvItem: - - def __init__(self, rect, blocking, color): - self.rect = rect - self.blocking = blocking - self.color = color - - -def update_player(player, env_items, delta): - if pyray.is_key_down(pyray.KeyboardKey.KEY_LEFT): - player.position.x -= PLAYER_HOR_SPD * delta - if pyray.is_key_down(pyray.KeyboardKey.KEY_RIGHT): - player.position.x += PLAYER_HOR_SPD * delta - if pyray.is_key_down(pyray.KeyboardKey.KEY_SPACE) and player.can_jump: - player.speed = -PLAYER_JUMP_SPD - player.can_jump = False - - hit_obstacle = False - for ei in env_items: - p = player.position - if ( - ei.blocking and - ei.rect.x <= p.x and - ei.rect.x + ei.rect.width >= p.x and - ei.rect.y >= p.y and - ei.rect.y < p.y + player.speed * delta - ): - hit_obstacle = True - player.speed = 0.0 - p.y = ei.rect.y - - if not hit_obstacle: - player.position.y += player.speed * delta - player.speed += G * delta - player.can_jump = False - else: - player.can_jump = True - - -def update_camera_center( - camera, player, env_items, delta, width, height -): - camera.offset = pyray.Vector2(width / 2, height / 2) - camera.target = player.position - - -def update_camera_center_inside_map( - camera, player, env_items, delta, width, height -): - camera.target = player.position - camera.offset = pyray.Vector2(width / 2, height / 2) - - minX = 1000 - minY = 1000 - maxX = -1000 - maxY = -1000 - - for ei in env_items: - minX = min(ei.rect.x, minX) - maxX = max(ei.rect.x + ei.rect.width, maxX) - - minY = min(ei.rect.y, minY) - maxY = max(ei.rect.y + ei.rect.height, maxY) - - wmax = pyray.get_world_to_screen_2d(pyray.Vector2(maxX, maxY), camera) - wmin = pyray.get_world_to_screen_2d(pyray.Vector2(minX, minY), camera) - - if wmax.x < width: - camera.offset.x = width - (wmax.x - width / 2) - if wmax.y < height: - camera.offset.y = height - (wmax.y - height / 2) - if wmin.x > 0: - camera.offset.x = width / 2 - wmin.x - if wmin.y > 0: - camera.offset.y = height / 2 - wmin.y - - -def update_camera_center_smooth_follow( - camera, player, env_items, delta, width, height -): - min_speed = 30 - min_effect_length = 10 - fraction_speed = 0.8 - - camera.offset = pyray.Vector2(width / 2, height / 2) - diff = vector2_subtract(player.position, camera.target) - length = vector2_length(diff) - - if length > min_effect_length: - speed = max(fraction_speed * length, min_speed) - camera.target = vector2_add( - camera.target, vector2_scale(diff, speed * delta / length) - ) - - -def update_camera_even_out_on_landing( - camera, player, env_items, delta, width, height -): - global g_evening_out, g_even_out_target - - even_out_speed = 700 - - camera.offset = pyray.Vector2(width / 2, height / 2) - camera.target.x = player.position.x - - if g_evening_out: - if g_even_out_target > camera.target.y: - camera.target.y += even_out_speed * delta - - if camera.target.y > g_even_out_target: - camera.target.y = g_even_out_target - g_evening_out = False - else: - camera.target.y -= even_out_speed * delta - if camera.target.y < g_even_out_target: - camera.target.y = g_even_out_target - g_evening_out = False - else: - if ( - player.can_jump and - (player.speed == 0) and - (player.position.y != camera.target.y) - ): - g_evening_out = True - g_even_out_target = player.position.y - - -def update_camera_player_bounds_push( - camera, player, env_items, delta, width, height -): - bbox = pyray.Vector2(0.2, 0.2) - - bbox_world_min = pyray.get_world_to_screen_2d( - pyray.Vector2((1 - bbox.x) * 0.5 * width, - (1 - bbox.y) * 0.5 * height), - camera - ) - bbox_world_max = pyray.get_world_to_screen_2d( - pyray.Vector2((1 + bbox.x) * 0.5 * width, - (1 + bbox.y) * 0.5 * height), - camera - ) - camera.offset = pyray.Vector2((1 - bbox.x) * 0.5 * width, - (1 - bbox.y) * 0.5 * height) - - if player.position.x < bbox_world_min.x: - camera.target.x = player.position.x - if player.position.y < bbox_world_min.y: - camera.target.y = player.position.y - if player.position.x > bbox_world_max.x: - camera.target.x = ( - bbox_world_min.x + (player.position.x - bbox_world_max.x) - ) - if player.position.y > bbox_world_max.y: - camera.target.y = ( - bbox_world_min.y + (player.position.y - bbox_world_max.y) - ) - - -# Main intialization -player = Player(pyray.Vector2(400, 280), 0, False) -env_items = ( - EnvItem(pyray.Rectangle(0, 0, 1000, 400), 0, LIGHTGRAY), - EnvItem(pyray.Rectangle(0, 400, 1000, 200), 1, GRAY), - EnvItem(pyray.Rectangle(300, 200, 400, 10), 1, GRAY), - EnvItem(pyray.Rectangle(250, 300, 100, 10), 1, GRAY), - EnvItem(pyray.Rectangle(650, 300, 100, 10), 1, GRAY), -) - -camera = pyray.Camera2D() -camera.target = player.position -camera.offset = pyray.Vector2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2) -camera.rotation = 0.0 -camera.zoom = 1.0 - -pyray.set_target_fps(60) # Set our game to run at 60 frames-per-second - -# Store pointers to the multiple update camera functions -camera_updaters = ( - update_camera_center, - update_camera_center_inside_map, - update_camera_center_smooth_follow, - update_camera_even_out_on_landing, - update_camera_player_bounds_push, -) -camera_option = 0 -camera_updaters_length = len(camera_updaters) - -camera_descriptions = ( - 'Follow player center', - 'Follow player center, but clamp to map edges', - 'Follow player center smoothed', - ('Follow player center horizontally ' - 'update player center vertically after landing'), - 'Player push camera on getting too close to screen edge', -) - -# Main game loop -while not pyray.window_should_close(): # Detect window close button or ESC key - # Update - delta_time = pyray.get_frame_time() - - update_player(player, env_items, delta_time) - - camera.zoom += pyray.get_mouse_wheel_move() * 0.05 - - if camera.zoom > 3.0: - camera.zoom = 3.0 - elif camera.zoom < 0.25: - camera.zoom = 0.25 - - if pyray.is_key_pressed(pyray.KeyboardKey.KEY_R): - camera.zoom = 1.0 - player.position = pyray.Vector2(400, 280) - - if pyray.is_key_pressed(pyray.KeyboardKey.KEY_C): - camera_option = (camera_option + 1) % camera_updaters_length - - # Call update camera function by its pointer - camera_updaters[camera_option]( - camera, player, env_items, delta_time, - SCREEN_WIDTH, SCREEN_HEIGHT - ) - - # Draw - pyray.begin_drawing() - pyray.clear_background(LIGHTGRAY) - - pyray.begin_mode_2d(camera) - - for env_item in env_items: - pyray.draw_rectangle_rec(env_item.rect, env_item.color) - - player_rect = pyray.Rectangle( - int(player.position.x) - 20, - int(player.position.y) - 40, - 40, 40 - ) - pyray.draw_rectangle_rec(player_rect, RED) - - pyray.end_mode_2d() - - pyray.draw_text('Controls:', 20, 20, 10, BLACK) - pyray.draw_text('- Right/Left to move', 40, 40, 10, DARKGRAY) - pyray.draw_text('- Space to jump', 40, 60, 10, DARKGRAY) - pyray.draw_text('- Mouse Wheel to Zoom in-out, R to reset zoom', - 40, 80, 10, DARKGRAY) - pyray.draw_text('- C to change camera mode', 40, 100, 10, DARKGRAY) - pyray.draw_text('Current camera mode:', 20, 120, 10, BLACK) - pyray.draw_text(camera_descriptions[camera_option], 40, 140, 10, DARKGRAY) - - pyray.end_drawing() - -# De-Initialization -pyray.close_window() # Close window and OpenGL context diff --git a/examples/core/core_3d_camera_first_person_incomplete.py b/examples/core/core_3d_camera_first_person_incomplete.py deleted file mode 100644 index 743903b..0000000 --- a/examples/core/core_3d_camera_first_person_incomplete.py +++ /dev/null @@ -1,67 +0,0 @@ -""" -raylib [core] example - 3d camera first person -adapted from https://github.com/raysan5/raylib/blob/master/examples/core/core_3d_camera_first_person.c -""" - -import pyray - -MAX_COLUMNS = 20 - -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - 3d camera first person") - -# Define the camera to look into our 3d world (position, target, up vector) -camera = pyray.Camera3D() -camera.position = pyray.Vector3(4.0, 2.0, 4.0) -camera.target = pyray.Vector3(0.0, 1.8, 0.0) -camera.up = pyray.Vector3(0.0, 1.0, 0.0) -camera.fovy = 60.0 -camera.projection = pyray.CameraProjection.CAMERA_PERSPECTIVE - -# Generates some random columns -heights = [] -positions = [] -colors = [] - -for i in range(MAX_COLUMNS): - heights.append(pyray.get_random_value(1, 12) * 1.0) - positions.append(pyray.Vector3(pyray.get_random_value(-15, 15) * 1.0, heights[i]/2.0 * 1.0, pyray.get_random_value(-15, 15) * 1.0)) - colors.append(pyray.Color(pyray.get_random_value(20, 255), pyray.get_random_value(10, 55), 30, 255)) - - -pyray.set_target_fps(60) - -while not pyray.window_should_close(): - - pyray.update_camera(camera, pyray.CameraMode.CAMERA_FIRST_PERSON) - - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - - pyray.begin_mode_3d(camera) - - pyray.draw_plane(pyray.Vector3(0.0, 0.0, 0.0), pyray.Vector2(32.0, 32.0), pyray.LIGHTGRAY) - pyray.draw_cube(pyray.Vector3(-16.0, 2.5, 0.0), 1.0, 5.0, 32.0, pyray.BLUE) - pyray.draw_cube(pyray.Vector3(16.0, 2.5, 0.0), 1.0, 5.0, 32.0, pyray.LIME) - pyray.draw_cube(pyray.Vector3(0.0, 2.5, 16.0), 32.0, 5.0, 1.0, pyray.GOLD) - - for i in range(MAX_COLUMNS): - pyray.draw_cube(positions[i], 2.0, heights[i], 2.0, colors[i]) - pyray.draw_cube_wires(positions[i], 2.0, heights[i], 2.0, pyray.MAROON) - - - pyray.end_mode_3d() - - pyray.draw_rectangle( 10, 10, 220, 70, pyray.fade(pyray.SKYBLUE, 0.5)) - pyray.draw_rectangle_lines( 10, 10, 220, 70, pyray.BLUE) - - pyray.draw_text("First person camera default controls:", 20, 20, 10, pyray.BLACK) - pyray.draw_text("- Move with keys: W, A, S, D", 40, 40, 10, pyray.DARKGRAY) - pyray.draw_text("- Mouse move to look around", 40, 60, 10, pyray.DARKGRAY) - - pyray.end_drawing() - -pyray.close_window() diff --git a/examples/core/core_3d_camera_free_incomplete.py b/examples/core/core_3d_camera_free_incomplete.py deleted file mode 100644 index a1e54ce..0000000 --- a/examples/core/core_3d_camera_free_incomplete.py +++ /dev/null @@ -1,58 +0,0 @@ -from pyray import * - -# Initialization -screenWidth = 800 -screenHeight = 450 - -init_window(screenWidth, screenHeight, "raylib [core] example - 3d camera free") - -# Define the camera to look into our 3d world -camera = Camera3D() -camera.position = Vector3(10.0, 10.0, 10.0) # Camera position -camera.target = Vector3(0.0, 0.0, 0.0) # Camera looking at point -camera.up = Vector3(0.0, 1.0, 0.0) # Camera up vector (rotation towards target) -camera.fovy = 45.0 # Camera field-of-view Y -camera.projection = CameraProjection.CAMERA_PERSPECTIVE # Camera projection type - -cubePosition = Vector3(0.0, 0.0, 0.0) - -disable_cursor() # Limit cursor to relative movement inside the window - -set_target_fps(60) # Set our game to run at 60 frames-per-second - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - # Update - update_camera(camera, CameraMode.CAMERA_FREE) - - if is_key_pressed(KeyboardKey.KEY_Z): - camera.target = Vector3(0.0, 0.0, 0.0) - - # Draw - begin_drawing() - - clear_background(RAYWHITE) - - begin_mode_3d(camera) - - draw_cube(cubePosition, 2.0, 2.0, 2.0, RED) - draw_cube_wires(cubePosition, 2.0, 2.0, 2.0, MAROON) - - draw_grid(10, 1.0) - - end_mode_3d() - - draw_rectangle(10, 10, 320, 93, fade(SKYBLUE, 0.5)) - draw_rectangle_lines(10, 10, 320, 93, BLUE) - - draw_text("Free camera default controls:", 20, 20, 10, BLACK) - draw_text("- Mouse Wheel to Zoom in-out", 40, 40, 10, DARKGRAY) - draw_text("- Mouse Wheel Pressed to Pan", 40, 60, 10, DARKGRAY) - draw_text("- Alt + Mouse Wheel Pressed to Rotate", 40, 80, 10, DARKGRAY) - draw_text("- Alt + Ctrl + Mouse Wheel Pressed for Smooth Zoom", 40, 100, 10, DARKGRAY) - draw_text("- Z to zoom to (0, 0, 0)", 40, 120, 10, DARKGRAY) - - end_drawing() - -# De-Initialization -close_window() # Close window and OpenGL context diff --git a/examples/core/core_3d_camera_mode.py b/examples/core/core_3d_camera_mode.py deleted file mode 100644 index 715660c..0000000 --- a/examples/core/core_3d_camera_mode.py +++ /dev/null @@ -1,51 +0,0 @@ -""" -raylib [core] example - 3d camera mode -adapted from https://github.com/raysan5/raylib/blob/master/examples/core/core_3d_camera_mode.c -""" - -import pyray - -# Initialization -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - 3d camera mode") - -# Define the camera to look into our 3d world -camera = pyray.Camera3D([0]) -camera.position = pyray.Vector3(0.0, 10.0, 10.0) # Camera position -camera.target = pyray.Vector3(0.0, 0.0, 0.0) # Camera looking at point -camera.up = pyray.Vector3(0.0, 1.0, 0.0) # Camera up vector (rotation towards target) -camera.fovy = 45.0 # Camera field-of-view Y -camera.projection = pyray.CameraProjection.CAMERA_PERSPECTIVE # Camera mode type - -cube_position = pyray.Vector3(0.0, 0.0, 0.0) - -pyray.set_target_fps(60) - -# Main game loop -while not pyray.window_should_close(): - - # Draw - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - - pyray.begin_mode_3d(camera) - - pyray.draw_cube(cube_position, 2.0, 2.0, 2.0, pyray.RED) - pyray.draw_cube_wires(cube_position, 2.0, 2.0, 2.0, pyray.MAROON) - - pyray.draw_grid(10, 1.0) - - pyray.end_mode_3d() - - pyray.draw_text("Welcome to the third dimension!", 10, 40, 20, pyray.DARKGRAY) - - pyray.draw_fps(10, 10) - - pyray.end_drawing() - -# De-Initialization -pyray.close_window() - diff --git a/examples/core/core_basic_screen_manager.py b/examples/core/core_basic_screen_manager.py deleted file mode 100644 index 5f3eb09..0000000 --- a/examples/core/core_basic_screen_manager.py +++ /dev/null @@ -1,61 +0,0 @@ -from pyray import * -from enum import Enum, auto - -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - - -class GameScreen(Enum): - LOGO = auto() - TITLE = auto() - GAMEPLAY = auto() - ENDING = auto() - - -def main(): - init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - basic screen manager") - - frame_count = 0 - set_target_fps(60) - current_screen = GameScreen.LOGO - - while not window_should_close(): - - # State machine - if current_screen == GameScreen.LOGO: - frame_count += 1 - if frame_count > 120: - current_screen = GameScreen.TITLE - elif current_screen == GameScreen.TITLE: - if is_key_pressed(KeyboardKey.KEY_ENTER) or is_gesture_detected(Gesture.GESTURE_TAP): - current_screen = GameScreen.GAMEPLAY - elif current_screen == GameScreen.GAMEPLAY: - if is_key_pressed(KeyboardKey.KEY_ENTER) or is_gesture_detected(Gesture.GESTURE_TAP): - current_screen = GameScreen.ENDING - elif current_screen == GameScreen.ENDING: - if is_key_pressed(KeyboardKey.KEY_ENTER) or is_gesture_detected(Gesture.GESTURE_TAP): - current_screen = GameScreen.TITLE - - begin_drawing() - clear_background(RAYWHITE) - if current_screen == GameScreen.LOGO: - draw_text("LOGO SCREEN", 20, 20, 40, LIGHTGRAY) - draw_text("WAIT for 2 SECONDS...", 290, 220, 20, GRAY) - elif current_screen == GameScreen.TITLE: - draw_rectangle(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, GREEN) - draw_text("TITLE SCREEN", 20, 20, 40, DARKGREEN) - draw_text("PRESS ENTER or TAP to JUMP to GAMEPLAY SCREEN", 120, 220, 20, DARKGREEN) - elif current_screen == GameScreen.GAMEPLAY: - draw_rectangle(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, PURPLE) - draw_text("GAMEPLAY SCREEN", 20, 20, 40, MAROON) - draw_text("PRESS ENTER or TAP to JUMP to ENDING SCREEN", 120, 220, 20, MAROON) - elif current_screen == GameScreen.ENDING: - draw_rectangle(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, BLUE) - draw_text("ENDING SCREEN", 20, 20, 40, DARKBLUE) - draw_text("PRESS ENTER or TAP to JUMP to TITLE SCREEN", 120, 220, 20, DARKBLUE) - end_drawing() - close_window() - - -if __name__ == '__main__': - main() diff --git a/examples/core/core_basic_window.py b/examples/core/core_basic_window.py deleted file mode 100644 index b5b0e22..0000000 --- a/examples/core/core_basic_window.py +++ /dev/null @@ -1,32 +0,0 @@ -""" - -raylib [core] example - Basic window - -""" -import pyray - -# Initialization -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, 'raylib [core] example - basic window') -pyray.set_target_fps(60) # Set our game to run at 60 frames-per-second - - -# Main game loop -while not pyray.window_should_close(): # Detect window close button or ESC key - # Update - # TODO: Update your variables here - - # Draw - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - pyray.draw_text( - 'Congrats! You created your first window!', 190, 200, 20, pyray.LIGHTGRAY) - - pyray.end_drawing() - - -# De-Initialization -pyray.close_window() # Close window and OpenGL context diff --git a/examples/core/core_drop_files.py b/examples/core/core_drop_files.py deleted file mode 100644 index d627442..0000000 --- a/examples/core/core_drop_files.py +++ /dev/null @@ -1,51 +0,0 @@ -""" - -* raylib [core] example - Windows drop files -* -* This example only works on platforms that support drag & drop (Windows, Linux, OSX, Html5?) -* -* This example has been created using raylib 1.3 (www.raylib.com) -* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) -* -* Copyright (c) 2015 Ramon Santamaria (@raysan5) - -""" -import pyray - -screenWidth = 800 -screenHeight = 450 - -pyray.init_window(screenWidth, screenHeight, 'raylib [core] example - drop files') -pyray.set_target_fps(60) # Set our game to run at 60 frames-per-second - -droppedFiles = pyray.FilePathList() - - - -while not pyray.window_should_close(): - - if pyray.is_file_dropped(): - droppedFiles = pyray.load_dropped_files() - - - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - - if droppedFiles.count == 0: - pyray.draw_text("Drop your files to this window!", 100, 40, 20, pyray.DARKGRAY) - else: - pyray.draw_text("Dropped files:", 100, 40, 20, pyray.DARKGRAY) - - for i in range(0, droppedFiles.count): - if i % 2 == 0: - pyray.draw_rectangle(0, 85 + 40*i, screenWidth, 40, pyray.fade(pyray.LIGHTGRAY, 0.5)) - else: - pyray.draw_rectangle(0, 85 + 40*i, screenWidth, 40, pyray.fade(pyray.LIGHTGRAY, 0.3)) - pyray.draw_text(droppedFiles.paths[i], 120, 100 + 40*i, 10, pyray.GRAY) - - pyray.draw_text("Drop new files...", 100, 110 + 40*droppedFiles.count, 20, pyray.DARKGRAY) - pyray.end_drawing() - -# De-Initialization -pyray.close_window() # Close window and OpenGL context diff --git a/examples/core/core_input_gestures.py b/examples/core/core_input_gestures.py deleted file mode 100644 index 8d5bff5..0000000 --- a/examples/core/core_input_gestures.py +++ /dev/null @@ -1,95 +0,0 @@ -""" - -raylib [core] example - Input Gestures Detection - -""" -import pyray - - - -# Initialization -MAX_GESTURE_STRINGS = 20 -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, 'raylib [core] example - input gestures') - -touch_position = pyray.Vector2(0, 0) -touch_area = pyray.Rectangle(220, 10, SCREEN_WIDTH - 230, SCREEN_HEIGHT - 20) - -gesture_strings = [] - -current_gesture = pyray.Gesture.GESTURE_NONE -last_gesture = pyray.Gesture.GESTURE_NONE - -GESTURE_LABELS = { - pyray.Gesture.GESTURE_TAP: 'GESTURE TAP', - pyray.Gesture.GESTURE_DOUBLETAP: 'GESTURE DOUBLETAP', - pyray.Gesture.GESTURE_HOLD: 'GESTURE HOLD', - pyray.Gesture.GESTURE_DRAG: 'GESTURE DRAG', - pyray.Gesture.GESTURE_SWIPE_RIGHT: 'GESTURE SWIPE RIGHT', - pyray.Gesture.GESTURE_SWIPE_LEFT: 'GESTURE SWIPE LEFT', - pyray.Gesture.GESTURE_SWIPE_UP: 'GESTURE SWIPE UP', - pyray.Gesture.GESTURE_SWIPE_DOWN: 'GESTURE SWIPE DOWN', - pyray.Gesture.GESTURE_PINCH_IN: 'GESTURE PINCH IN', - pyray.Gesture.GESTURE_PINCH_OUT: 'GESTURE PINCH OUT', -} - -pyray.set_target_fps(60) # Set our game to run at 60 frames-per-second - - -# Main game loop -while not pyray.window_should_close(): # Detect window close button or ESC key - # Update - last_gesture = current_gesture - current_gesture = pyray.get_gesture_detected() - touch_position = pyray.get_touch_position(0) - - if ( - pyray.check_collision_point_rec(touch_position, touch_area) - and current_gesture != pyray.Gesture.GESTURE_NONE - ): - if current_gesture != last_gesture: - gesture_strings.append(GESTURE_LABELS[current_gesture]) - - # Reset gestures strings - if len(gesture_strings) >= MAX_GESTURE_STRINGS: - gesture_strings = [] - - # Draw - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - - pyray.draw_rectangle_rec(touch_area, pyray.GRAY) - pyray.draw_rectangle(225, 15, SCREEN_WIDTH - 240, SCREEN_HEIGHT - 30, - pyray.RAYWHITE) - pyray.draw_text( - 'GESTURES TEST AREA', - SCREEN_WIDTH - 270, SCREEN_HEIGHT - 40, 20, pyray.fade(pyray.GRAY, 0.5) - ) - - for i, val in enumerate(gesture_strings): - if i % 2 == 0: - pyray.draw_rectangle( - 10, 30 + 20 * i, 200, 20, pyray.fade(pyray.LIGHTGRAY, 0.5)) - else: - pyray.draw_rectangle( - 10, 30 + 20 * i, 200, 20, pyray.fade(pyray.LIGHTGRAY, 0.3)) - - if i < len(gesture_strings) - 1: - pyray.draw_text(val, 35, 36 + 20 * i, 10, pyray.DARKGRAY) - else: - pyray.draw_text(val, 35, 36 + 20 * i, 10, pyray.MAROON) - - pyray.draw_rectangle_lines(10, 29, 200, SCREEN_HEIGHT - 50, pyray.GRAY) - pyray.draw_text('DETECTED GESTURES', 50, 15, 10, pyray.GRAY) - - if current_gesture != pyray.Gesture.GESTURE_NONE: - pyray.draw_circle_v(touch_position, 30, pyray.MAROON) - - pyray.end_drawing() - - -# De-Initialization -pyray.close_window() # Close window and OpenGL context diff --git a/examples/core/core_input_keys.py b/examples/core/core_input_keys.py deleted file mode 100644 index 8635ee6..0000000 --- a/examples/core/core_input_keys.py +++ /dev/null @@ -1,42 +0,0 @@ -""" - -raylib [core] example - Keyboard input - -""" -import pyray - - -# Initialization -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, 'raylib [core] example - keyboard input') -ball_position = pyray.Vector2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2) - -pyray.set_target_fps(60) # Set our game to run at 60 frames-per-second - - -# Main game loop -while not pyray.window_should_close(): # Detect window close button or ESC key - # Update - if pyray.is_key_down(pyray.KeyboardKey.KEY_RIGHT): - ball_position.x += 2 - if pyray.is_key_down(pyray.KeyboardKey.KEY_LEFT): - ball_position.x -= 2 - if pyray.is_key_down(pyray.KeyboardKey.KEY_UP): - ball_position.y -= 2 - if pyray.is_key_down(pyray.KeyboardKey.KEY_DOWN): - ball_position.y += 2 - - # Draw - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - pyray.draw_text('move the ball with arrow keys', 10, 10, 20, pyray.DARKGRAY) - pyray.draw_circle_v(ball_position, 50, pyray.MAROON) - - pyray.end_drawing() - - -# De-Initialization -pyray.close_window() # Close window and OpenGL context diff --git a/examples/core/core_input_mouse.py b/examples/core/core_input_mouse.py deleted file mode 100644 index 5f1cce9..0000000 --- a/examples/core/core_input_mouse.py +++ /dev/null @@ -1,52 +0,0 @@ -""" - -raylib [core] example - Mouse input - -""" -from pyray import * - - -# Initialization -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -init_window(SCREEN_WIDTH, SCREEN_HEIGHT, 'raylib [core] example - mouse input') - -ball_position = Vector2(-100, -100) -ball_color = DARKBLUE - -set_target_fps(60) # Set our game to run at 60 frames-per-second - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - # Update - ball_position = get_mouse_position() - - if is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_LEFT): - ball_color = MAROON - elif is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_MIDDLE): - ball_color = LIME - elif is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_RIGHT): - ball_color = DARKBLUE - elif is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_SIDE): - ball_color = PURPLE - elif is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_EXTRA): - ball_color = YELLOW - elif is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_FORWARD): - ball_color = ORANGE - elif is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_BACK): - ball_color = BEIGE - # Draw - begin_drawing() - - clear_background(RAYWHITE) - draw_circle_v(ball_position, 40, ball_color) - draw_text( - 'move ball with mouse and click mouse button to change color', - 10, 10, 20, DARKGRAY - ) - - end_drawing() - -# De-Initialization -close_window() # Close window and OpenGL context diff --git a/examples/core/core_input_mouse_wheel.py b/examples/core/core_input_mouse_wheel.py deleted file mode 100644 index 836cf22..0000000 --- a/examples/core/core_input_mouse_wheel.py +++ /dev/null @@ -1,44 +0,0 @@ -""" - -raylib [core] example - Mouse wheel input - -""" -import pyray - - - - -# Initialization -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, 'raylib [core] example - input mouse wheel') - -box_position_y: int = SCREEN_HEIGHT // 2 - 40 -scroll_speed = 4 # Scrolling speed in pixels - -pyray.set_target_fps(60) # Set our game to run at 60 frames-per-second - - -# Main game loop -while not pyray.window_should_close(): # Detect window close button or ESC key - # Update - box_position_y -= int(pyray.get_mouse_wheel_move() * scroll_speed) - - # Draw - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - - pyray.draw_rectangle(SCREEN_WIDTH // 2 - 40, box_position_y, 80, 80, pyray.MAROON) - - pyray.draw_text('User mouse wheel to move the cube up and down!', - 10, 10, 20, pyray.GRAY) - pyray.draw_text('Box position Y: {:03d}'.format(box_position_y), - 10, 40, 20, pyray.LIGHTGRAY) - - pyray.end_drawing() - - -# De-Initialization -pyray.close_window() # Close window and OpenGL context diff --git a/examples/core/core_random_values.py b/examples/core/core_random_values.py deleted file mode 100644 index 7f63ec3..0000000 --- a/examples/core/core_random_values.py +++ /dev/null @@ -1,49 +0,0 @@ -""" - -raylib [core] example - random values - -""" -from pyray import * - -# Initialization -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -init_window(SCREEN_WIDTH, SCREEN_HEIGHT, 'raylib [core] example - random values') - -# set_random_seed() // Set a custom random seed if desired, by default: "time(NULL)" - -randValue = get_random_value(-8, 5) # Get a random integer number between -8 and 5 (both included) - -framesCounter = 0 # Variable used to count frames - -set_target_fps(60) # Set our game to run at 60 frames-per-second - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - - # Update - # ---------------------------------------------------------------------------------- - framesCounter += 1 - - # Every two seconds (120 frames) a new random value is generated - if ((framesCounter/120) % 2) == 1: - randValue = get_random_value(-8, 5) - framesCounter = 0 - - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - begin_drawing() - - clear_background(RAYWHITE) - - draw_text("Every 2 seconds a new random value is generated:", 130, 100, 20, MAROON) - - draw_text(str(randValue), 360, 180, 80, LIGHTGRAY) - - end_drawing() - -# De-Initialization -close_window() # Close window and OpenGL context diff --git a/examples/core/core_scissor_test.py b/examples/core/core_scissor_test.py deleted file mode 100644 index e54b214..0000000 --- a/examples/core/core_scissor_test.py +++ /dev/null @@ -1,57 +0,0 @@ -""" - -raylib [core] example - Scissor Test - -""" -from pyray import * - - -# Initialization -# -------------------------------------------------------------------------------------- -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - scissor test") - -scissorArea = Rectangle(0, 0, 300, 300) -scissorMode = True - -set_target_fps(60) # Set our game to run at 60 frames-per-second -# -------------------------------------------------------------------------------------- - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - if is_key_pressed(KeyboardKey.KEY_S): - scissorMode = not scissorMode - - # Centre the scissor area around the mouse position - scissorArea.x = get_mouse_x() - scissorArea.width/2 - scissorArea.y = get_mouse_y() - scissorArea.height/2 - # ---------------------------------------------------------------------------------- - - - # Draw - # ---------------------------------------------------------------------------------- - begin_drawing() - - clear_background(RAYWHITE) - if scissorMode: - begin_scissor_mode(int(scissorArea.x), int(scissorArea.y), int(scissorArea.width), int(scissorArea.height)) - - # Draw full screen rectangle and some text - # NOTE: Only part defined by scissor area will be rendered - draw_rectangle(0, 0, get_screen_width(), get_screen_height(), RED) - draw_text("Move the mouse around to reveal this text!", 190, 200, 20, LIGHTGRAY) - - if scissorMode: - end_scissor_mode() - - draw_rectangle_lines_ex(scissorArea, 1, BLACK) - draw_text("Press S to toggle scissor test", 10, 10, 20, BLACK) - - end_drawing() - -# De-Initialization -close_window() # Close window and OpenGL context diff --git a/examples/core/core_smooth_pixel_perfect_camera.py b/examples/core/core_smooth_pixel_perfect_camera.py deleted file mode 100644 index fdf0604..0000000 --- a/examples/core/core_smooth_pixel_perfect_camera.py +++ /dev/null @@ -1,90 +0,0 @@ -from pyray import * -import math -#Initialization - -screenWidth = 800 -screenHeight = 450 - -virtualScreenWidth = 160 -virtualScreenHeight = 90 - -virtualRatio = screenWidth/ virtualScreenWidth - -init_window(screenWidth, screenHeight, "raylib [core] example - smooth pixel-perfect camera") - -worldSpaceCamera = Camera2D([0]) # Game world camera -worldSpaceCamera.zoom = 1.0 - -screenSpaceCamera = Camera2D([0]) # Smoothing camera -screenSpaceCamera.zoom = 1.0 - -target = load_render_texture(virtualScreenWidth, virtualScreenHeight) # This is where we'll draw all our objects. - -rec01 = Rectangle(70.0, 35.0, 20.0, 20.0) -rec02 = Rectangle(90.0, 55.0, 30.0, 10.0) -rec03 = Rectangle(80.0, 65.0, 15.0, 25.0) - -# The target's height is flipped (in the source Rectangle), due to OpenGL reasons -sourceRec = Rectangle(0.0, 0.0, target.texture.width, -target.texture.height) -destRec = Rectangle(-virtualRatio, -virtualRatio, screenWidth + (virtualRatio*2), screenHeight + (virtualRatio*2)) - -origin = Vector2(0.0, 0.0) - -rotation = 0.0 - -cameraX = 0.0 -cameraY = 0.0 - -set_target_fps(60) - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - - # Update - - rotation += 60.0 *get_frame_time() # Rotate the rectangles, 60 degrees per second - - # Make the camera move to demonstrate the effect - cameraX = (math.sin(get_time())*50.0) - 10.0 - cameraY = math.cos(get_time())*30.0 - - # Set the camera's target to the values computed above - screenSpaceCamera.target = Vector2(cameraX, cameraY) - - # Round worldSpace coordinates, keep decimals into screenSpace coordinates - worldSpaceCamera.target.x = screenSpaceCamera.target.x - screenSpaceCamera.target.x -= worldSpaceCamera.target.x - screenSpaceCamera.target.x *= virtualRatio - - worldSpaceCamera.target.y = screenSpaceCamera.target.y - screenSpaceCamera.target.y -= worldSpaceCamera.target.y - screenSpaceCamera.target.y *= virtualRatio - - begin_texture_mode(target) - clear_background(RAYWHITE) - - begin_mode_2d(worldSpaceCamera) - draw_rectangle_pro(rec01, origin, rotation, BLACK) - draw_rectangle_pro(rec02, origin, -rotation, RED) - draw_rectangle_pro(rec03, origin, rotation + 45.0, BLUE) - end_mode_2d() - end_texture_mode() - - begin_drawing() - clear_background(RED) - - begin_mode_2d(screenSpaceCamera) - draw_texture_pro(target.texture, sourceRec, destRec, origin, 0.0, WHITE) - end_mode_2d() - - draw_text(f"Screen resolution: {screenWidth}, {screenHeight}", 10, 10, 20, DARKBLUE) - draw_text(f"World resolution: {virtualScreenWidth}, {virtualScreenHeight}", 10, 40, 20, DARKGREEN) - draw_fps(get_screen_width() - 95, 10) - end_drawing() - - -# De-Initialization - -unload_render_texture(target) # Unload render texture - -close_window() # Close window and OpenGL context \ No newline at end of file diff --git a/examples/core/core_split_screen.py b/examples/core/core_split_screen.py deleted file mode 100644 index 71b5640..0000000 --- a/examples/core/core_split_screen.py +++ /dev/null @@ -1,123 +0,0 @@ -""" - -raylib [core] example - Split Screen - -""" - -from pyray import * - -cameraPlayer1 = Camera3D([0]) -cameraPlayer2 = Camera3D([0]) - -def draw_scene(): - count = 5 - spacing = 4 - - # Grid of cube trees on a plane to make a "world" - - draw_plane(Vector3(0, 0, 0), Vector2(50, 50), BEIGE) - - for x in range(-count*spacing, count*spacing, spacing): - for z in range(-count*spacing, count*spacing, spacing): - draw_cube(Vector3(x, 1.5, z), 1, 1, 1, LIME) - draw_cube(Vector3(x, 0.5, z), 0.25, 1, 0.25, BROWN) - - # Draw a cube at each player's position - draw_cube(cameraPlayer1.position, 1, 1, 1, RED) - draw_cube(cameraPlayer2.position, 1, 1, 1, BLUE) - -# Initialization - -screenWidth = 800 -screenHeight = 450 - -init_window(screenWidth, screenHeight, "raylib [core] example - split screen") - -# Setup player 1 camera and screen - -cameraPlayer1.fovy = 45.0 -cameraPlayer1.up = Vector3(0,1.0,0) -cameraPlayer1.target = Vector3(0,1.0,0) -cameraPlayer1.position = Vector3(0,1,-3) - -screenPlayer1 = load_render_texture(int(screenWidth/2), int(screenHeight)) - -# Setup player 2 camera and screen -cameraPlayer2.fovy = 45.0 -cameraPlayer2.up = Vector3(0,1.0,0) -cameraPlayer2.target = Vector3(0,3.0,0) -cameraPlayer2.position = Vector3(-3,3,0) - -screenPlayer2 = load_render_texture(int(screenWidth / 2), int(screenHeight)) - -# Build a flipped rectangle the size of the split view to use for drawing later -splitScreenRect = Rectangle(0.0, 0.0, screenPlayer1.texture.width, -screenPlayer1.texture.height) - -set_target_fps(60) # Set our game to run at 60 frames-per-second - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - - ''' Update - If anyone moves this frame, how far will they move based on the time since the last frame - this moves thigns at 10 world units per second, regardless of the actual FPS''' - - offsetThisFrame = 10.0 * get_frame_time() - - # Move Player1 forward and backwards (no turning) - - if is_key_down(KeyboardKey.KEY_W): - cameraPlayer1.position.z += offsetThisFrame - cameraPlayer1.target.z += offsetThisFrame - - elif is_key_down(KeyboardKey.KEY_S): - - cameraPlayer1.position.z -= offsetThisFrame - cameraPlayer1.target.z -= offsetThisFrame - - # Move Player2 forward and backwards (no turning) - if is_key_down(KeyboardKey.KEY_UP): - cameraPlayer2.position.x += offsetThisFrame - cameraPlayer2.target.x += offsetThisFrame - - elif is_key_down(KeyboardKey.KEY_DOWN): - cameraPlayer2.position - cameraPlayer2.position.x -= offsetThisFrame - cameraPlayer2.target.x -= offsetThisFrame - - # Draw Player1 view to the render texture - begin_texture_mode(screenPlayer1) - clear_background(SKYBLUE) - begin_mode_3d(cameraPlayer1) - draw_scene() - end_mode_3d() - draw_text("PLAYER1 W/S to move", 10, 10, 20, RED) - end_texture_mode() - - # Draw Player2 view to the render texture - - begin_texture_mode(screenPlayer2) - clear_background(SKYBLUE) - begin_mode_3d(cameraPlayer2) - draw_scene() - end_mode_3d() - draw_text("PLAYER2 UP/DOWN to move", 10, 10, 20, BLUE) - end_texture_mode() - - # Draw both views render textures to the screen side by side - begin_drawing() - clear_background(BLACK) - draw_texture_rec(screenPlayer1.texture, splitScreenRect, Vector2(0,0), WHITE) - draw_texture_rec(screenPlayer2.texture, splitScreenRect, Vector2(screenWidth/2.0, 0 ), WHITE) - end_drawing() - - -# De-Initialization -unload_render_texture(screenPlayer1) # Unload render texture -unload_render_texture(screenPlayer2) # Unload render texture - -close_window() - - - - diff --git a/examples/core/core_vr_simulator.py b/examples/core/core_vr_simulator.py deleted file mode 100644 index 10573f2..0000000 --- a/examples/core/core_vr_simulator.py +++ /dev/null @@ -1,101 +0,0 @@ -import pyray -import raylib - -GLSL_VERSION = 330 - -# Initialization -screenWidth = 800 -screenHeight = 450 - -# NOTE: screenWidth/screenHeight should match VR device aspect ratio -pyray.init_window(screenWidth, screenHeight, "raylib [core] example - vr simulator") - -# VR device parameters definition -device = pyray.VrDeviceInfo( - # Oculus Rift CV1 parameters for simulator - 2160, # Horizontal resolution in pixels - 1200, # Vertical resolution in pixels - 0.133793, # Horizontal size in meters - 0.0669, # Vertical size in meters - 0.041, # Distance between eye and display in meters - 0.07, # Lens separation distance in meters - 0.07, # IPD (distance between pupils) in meters - - # NOTE: CV1 uses fresnel-hybrid-asymmetric lenses with specific compute shaders - # Following parameters are just an approximation to CV1 distortion stereo rendering - [1.0, 0.22, 0.24, 0.0], # Lens distortion constant parameters - [0.996, -0.004, 1.014, 0.0] # Chromatic aberration correction parameters -) - -# Load VR stereo config for VR device parameters (Oculus Rift CV1 parameters) -config = pyray.load_vr_stereo_config(device) - -# Distortion shader (uses device lens distortion and chroma) -distortion = pyray.load_shader(pyray.ffi.NULL, f"resources/distortion{GLSL_VERSION}.fs") - -# Update distortion shader with lens and distortion-scale parameters -pyray.set_shader_value(distortion, 2, pyray.ffi.new('char []', b"leftLensCenter"), pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC2) -pyray.set_shader_value(distortion, 2,pyray.ffi.new('char []', b"rightLensCenter"), pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC2) -pyray.set_shader_value(distortion, 2,pyray.ffi.new('char []', b"leftScreenCenter"), pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC2) -pyray.set_shader_value(distortion, 2,pyray.ffi.new('char []', b"rightScreenCenter"), pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC2) - -pyray.set_shader_value(distortion, 2,pyray.ffi.new('char []', b"scale"), pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC2) -pyray.set_shader_value(distortion, 2,pyray.ffi.new('char []', b"scaleIn"), pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC2) -pyray.set_shader_value(distortion, 4,pyray.ffi.new('char []', b"deviceWarpParam"), pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC4) -pyray.set_shader_value(distortion, 4,pyray.ffi.new('char []', b"chromaAbParam"), pyray.ShaderUniformDataType.SHADER_UNIFORM_VEC4) - -# Initialize framebuffer for stereo rendering -# NOTE: Screen size should match HMD aspect ratio -target = pyray.load_render_texture(device.hResolution, device.vResolution) - -# The target's height is flipped (in the source Rectangle), due to OpenGL reasons -sourceRec = pyray.Rectangle(0.0, 0.0, target.texture.width, -target.texture.height) -destRec = pyray.Rectangle(0.0, 0.0, pyray.get_screen_width(), pyray.get_screen_height()) - -# Define the camera to look into our 3D world -camera = pyray.Camera3D( - pyray.Vector3(5.0, 2.0, 5.0), # Camera position - pyray.Vector3(0.0, 2.0, 0.0), # Camera looking at point - pyray.Vector3(0.0, 1.0, 0.0), # Camera up vector - 60.0, # Camera field-of-view Y - pyray.CameraProjection.CAMERA_PERSPECTIVE # Camera projection type -) - -cubePosition = pyray.Vector3(0.0, 0.0, 0.0) - -pyray.disable_cursor() # Limit cursor to relative movement inside the window - -pyray.set_target_fps(90) # Set our game to run at 90 frames-per-second - -# Main game loop -while not pyray.window_should_close(): # Detect window close button or ESC key - # Update - pyray.update_camera(camera, pyray.CameraMode.CAMERA_FIRST_PERSON) - - # Draw - pyray.begin_texture_mode(target) - pyray.clear_background(pyray.RAYWHITE) - pyray.begin_vr_stereo_mode(config) - pyray.begin_mode_3d(camera) - - pyray.draw_cube(cubePosition, 2.0, 2.0, 2.0, pyray.RED) - pyray.draw_cube_wires(cubePosition, 2.0, 2.0, 2.0, pyray.MAROON) - pyray.draw_grid(40, 1.0) - - pyray.end_mode_3d() - pyray.end_vr_stereo_mode() - pyray.end_texture_mode() - - pyray.begin_drawing() - pyray.clear_background(pyray.RAYWHITE) - pyray.begin_shader_mode(distortion) - pyray.draw_texture_pro(target.texture, sourceRec, destRec, pyray.Vector2(0.0, 0.0), 0.0, pyray.WHITE) - pyray.end_shader_mode() - pyray.draw_fps(10, 10) - pyray.end_drawing() - -# De-Initialization -pyray.unload_vr_stereo_config(config) # Unload stereo config -pyray.unload_render_texture(target) # Unload stereo render fbo -pyray.unload_shader(distortion) # Unload distortion shader -pyray.close_window() # Close window and OpenGL context diff --git a/examples/core/core_window_flags.py b/examples/core/core_window_flags.py deleted file mode 100644 index 14569fe..0000000 --- a/examples/core/core_window_flags.py +++ /dev/null @@ -1,156 +0,0 @@ -from pyray import * -import pyray - -# Initialization -# --------------------------------------------------------- -screen_width = 800 -screen_height = 450 - -init_window(screen_width, screen_height, "raylib [core] example - window flags") - -ball_position = Vector2(get_screen_width() / 2.0, get_screen_height() / 2.0) -ball_speed = Vector2(5.0, 4.0) -ball_radius = 20.0 - -frames_counter = 0 - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - # Update - # ----------------------------------------------------- - if is_key_pressed(pyray.KeyboardKey.KEY_F): - toggle_fullscreen() - - if is_key_pressed(pyray.KeyboardKey.KEY_R): - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_RESIZABLE): - clear_window_state(pyray.ConfigFlags.FLAG_WINDOW_RESIZABLE) - else: - set_window_state(pyray.ConfigFlags.FLAG_WINDOW_RESIZABLE) - - if is_key_pressed(pyray.KeyboardKey.KEY_D): - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_UNDECORATED): - clear_window_state(pyray.ConfigFlags.FLAG_WINDOW_UNDECORATED) - else: - set_window_state(pyray.ConfigFlags.FLAG_WINDOW_UNDECORATED) - - if is_key_pressed(pyray.KeyboardKey.KEY_H): - if not is_window_state(pyray.ConfigFlags.FLAG_WINDOW_HIDDEN): - set_window_state(pyray.ConfigFlags.FLAG_WINDOW_HIDDEN) - frames_counter = 0 - - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_HIDDEN): - frames_counter += 1 - if frames_counter >= 240: - clear_window_state(pyray.ConfigFlags.FLAG_WINDOW_HIDDEN) # Show window after 3 seconds - - if is_key_pressed(pyray.KeyboardKey.KEY_N): - if not is_window_state(pyray.ConfigFlags.FLAG_WINDOW_MINIMIZED): - minimize_window() - frames_counter = 0 - - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_MINIMIZED): - frames_counter += 1 - if frames_counter >= 240: - restore_window() # Restore window after 3 seconds - - if is_key_pressed(pyray.KeyboardKey.KEY_M): - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_RESIZABLE): - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_MAXIMIZED): - restore_window() - else: - maximize_window() - - if is_key_pressed(pyray.KeyboardKey.KEY_U): - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_UNFOCUSED): - clear_window_state(pyray.ConfigFlags.FLAG_WINDOW_UNFOCUSED) - else: - set_window_state(pyray.ConfigFlags.FLAG_WINDOW_UNFOCUSED) - - if is_key_pressed(pyray.KeyboardKey.KEY_T): - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_TOPMOST): - clear_window_state(pyray.ConfigFlags.FLAG_WINDOW_TOPMOST) - else: - set_window_state(pyray.ConfigFlags.FLAG_WINDOW_TOPMOST) - - if is_key_pressed(pyray.KeyboardKey.KEY_A): - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_ALWAYS_RUN): - clear_window_state(pyray.ConfigFlags.FLAG_WINDOW_ALWAYS_RUN) - else: - set_window_state(pyray.ConfigFlags.FLAG_WINDOW_ALWAYS_RUN) - - if is_key_pressed(pyray.KeyboardKey.KEY_V): - if is_window_state(pyray.ConfigFlags.FLAG_VSYNC_HINT): - clear_window_state(pyray.ConfigFlags.FLAG_VSYNC_HINT) - else: - set_window_state(pyray.ConfigFlags.FLAG_VSYNC_HINT) - - # Bouncing ball logic - ball_position.x += ball_speed.x - ball_position.y += ball_speed.y - if ball_position.x >= (get_screen_width() - ball_radius) or ball_position.x <= ball_radius: - ball_speed.x *= -1.0 - if ball_position.y >= (get_screen_height() - ball_radius) or ball_position.y <= ball_radius: - ball_speed.y *= -1.0 - - # Draw - # ----------------------------------------------------- - begin_drawing() - - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_TRANSPARENT): - clear_background(BLANK) - else: - clear_background(RAYWHITE) - - draw_circle_v(ball_position, ball_radius, MAROON) - draw_rectangle_lines_ex(Rectangle(0, 0, get_screen_width(), get_screen_height()), 4, RAYWHITE) - - draw_circle_v(get_mouse_position(), 10, DARKBLUE) - - draw_fps(10, 10) - - draw_text(f"Screen Size: [{get_screen_width()}, {get_screen_height()}]", 10, 40, 10, GREEN) - - # Draw window state info - draw_text("Following flags can be set after window creation:", 10, 60, 10, GRAY) - flag_texts = [ - ("FLAG_FULLSCREEN_MODE", pyray.ConfigFlags.FLAG_FULLSCREEN_MODE), - ("FLAG_WINDOW_RESIZABLE", pyray.ConfigFlags.FLAG_WINDOW_RESIZABLE), - ("FLAG_WINDOW_UNDECORATED", pyray.ConfigFlags.FLAG_WINDOW_UNDECORATED), - ("FLAG_WINDOW_HIDDEN", pyray.ConfigFlags.FLAG_WINDOW_HIDDEN), - ("FLAG_WINDOW_MINIMIZED", pyray.ConfigFlags.FLAG_WINDOW_MINIMIZED), - ("FLAG_WINDOW_MAXIMIZED", pyray.ConfigFlags.FLAG_WINDOW_MAXIMIZED), - ("FLAG_WINDOW_UNFOCUSED", pyray.ConfigFlags.FLAG_WINDOW_UNFOCUSED), - ("FLAG_WINDOW_TOPMOST", pyray.ConfigFlags.FLAG_WINDOW_TOPMOST), - ("FLAG_WINDOW_ALWAYS_RUN", pyray.ConfigFlags.FLAG_WINDOW_ALWAYS_RUN), - ("FLAG_VSYNC_HINT", pyray.ConfigFlags.FLAG_VSYNC_HINT), - ] - y_offset = 80 - for text, flag in flag_texts: - if is_window_state(flag): - draw_text(f"[{text[5:]}] {text}: on", 10, y_offset, 10, LIME) - else: - draw_text(f"[{text[5:]}] {text}: off", 10, y_offset, 10, MAROON) - y_offset += 20 - - draw_text("Following flags can only be set before window creation:", 10, 300, 10, GRAY) - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_HIGHDPI): - draw_text("FLAG_WINDOW_HIGHDPI: on", 10, 320, 10, LIME) - else: - draw_text("FLAG_WINDOW_HIGHDPI: off", 10, 320, 10, MAROON) - if is_window_state(pyray.ConfigFlags.FLAG_WINDOW_TRANSPARENT): - draw_text("FLAG_WINDOW_TRANSPARENT: on", 10, 340, 10, LIME) - else: - draw_text("FLAG_WINDOW_TRANSPARENT: off", 10, 340, 10, MAROON) - if is_window_state(pyray.ConfigFlags.FLAG_MSAA_4X_HINT): - draw_text("FLAG_MSAA_4X_HINT: on", 10, 360, 10, LIME) - else: - draw_text("FLAG_MSAA_4X_HINT: off", 10, 360, 10, MAROON) - - end_drawing() - # ----------------------------------------------------- - -# De-Initialization -# --------------------------------------------------------- -close_window() # Close window and OpenGL context -# --------------------------------------------------------- - diff --git a/examples/core/core_window_should_close.py b/examples/core/core_window_should_close.py deleted file mode 100644 index a02d493..0000000 --- a/examples/core/core_window_should_close.py +++ /dev/null @@ -1,62 +0,0 @@ -""" - -raylib [core] example - Window Should Close - -""" -from pyray import * - -# Initialization -# -------------------------------------------------------------------------------------- -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - window should close") - -set_exit_key(KeyboardKey.KEY_NULL) # Disable KEY_ESCAPE to close window, X-button still works - -exitWindowRequested = False # Flag to request window to exit -exitWindow = False # Flag to set window to exit - -set_target_fps(60) # Set our game to run at 60 frames-per-second -# -------------------------------------------------------------------------------------- - -# Main game loop -while not exitWindow: - - # Update - # ---------------------------------------------------------------------------------- - # Detect if X-button or KEY_ESCAPE have been pressed to close window - if window_should_close() or is_key_pressed(KeyboardKey.KEY_ESCAPE): - exitWindowRequested = True - - if exitWindowRequested: - - # A request for close window has been issued, we can save data before closing - # or just show a message asking for confirmation - - if is_key_pressed(KeyboardKey.KEY_Y): - exitWindow = True - elif is_key_pressed(KeyboardKey.KEY_N): - exitWindowRequested = False - - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - begin_drawing() - - clear_background(RAYWHITE) - - if exitWindowRequested: - - draw_rectangle(0, 100, SCREEN_WIDTH, 200, BLACK) - draw_text("Are you sure you want to exit program? [Y/N]", 40, 180, 30, WHITE) - - else: - draw_text("Try to close the window to get confirmation message!", 120, 200, 20, LIGHTGRAY) - - end_drawing() - # ---------------------------------------------------------------------------------- - -# De-Initialization -close_window() # Close window and OpenGL context diff --git a/examples/extra/extra_camera.py b/examples/extra/extra_camera.py deleted file mode 100644 index e1fcb0b..0000000 --- a/examples/extra/extra_camera.py +++ /dev/null @@ -1,138 +0,0 @@ -# python3 -m pip install pyglm - -from math import sin, cos -import glm # type: ignore -from raylib import rl, ffi - - -class CameraFly: - def __init__(self, x=0, y=0, z=0, fov=70.0): - self.last_mouse = ffi.new("struct Vector2 *", [0, 0]) - self.fov = fov - self.yaw = -46.33 - self.pitch = 0.0 - self.front = glm.vec3() - self.up = glm.vec3() - self.right = glm.vec3() - self.position = glm.vec3(x, y, z) - self.world_up = glm.vec3(0, 1, 0) - self.fps_facing = glm.vec3() - self.movement_speed = 10 - self.mouse_sensitivity = 0.002 - self.last_time = rl.GetFrameTime() - - def get_camera(self): - return ffi.new( - "struct Camera3D *", - [ - self.get_ray_front(), - self.get_ray_position(), - self.get_ray_up(), - self.fov, - rl.CAMERA_PERSPECTIVE - ] - ) - - def get_ray_front(self): - return list(self.position + self.front) - - def get_ray_up(self): - return list(self.up) - - def get_ray_position(self): - return list(self.position) - - def update_keyboard(self): - boost = 4 if rl.IsKeyDown(rl.KEY_LEFT_SHIFT) else 1 - velocity = self.movement_speed * boost * rl.GetFrameTime() - - if rl.IsKeyDown(rl.KEY_W): - self.position = self.position - self.fps_facing * velocity - - if rl.IsKeyDown(rl.KEY_S): - self.position = self.position + self.fps_facing * velocity - - if rl.IsKeyDown(rl.KEY_D): - dirr = glm.normalize(glm.cross(self.fps_facing, self.world_up)) - self.position = self.position - dirr * velocity - - if rl.IsKeyDown(rl.KEY_A): - dirr = glm.normalize(glm.cross(self.fps_facing, self.world_up)) - self.position = self.position + dirr * velocity - - if rl.IsKeyDown(rl.KEY_SPACE): - self.position = self.position + self.world_up * velocity - - if rl.IsKeyDown(rl.KEY_LEFT_CONTROL) or rl.IsKeyDown(rl.KEY_RIGHT_CONTROL): - self.position = self.position - self.world_up * velocity - - def update_mouse(self): - pos = rl.GetMousePosition() - width = rl.GetScreenWidth() - height = rl.GetScreenHeight() - - mouse_coordinates = ffi.new("struct Vector2 *", [ - pos.x - self.last_mouse.x, - pos.y - self.last_mouse.y - ]) - - self.yaw += mouse_coordinates.x * self.mouse_sensitivity - self.pitch += (mouse_coordinates.y * self.mouse_sensitivity) - self.pitch = min(self.pitch, 1.5) - self.pitch = max(self.pitch, -1.5) - self.last_mouse = rl.GetMousePosition() - - def update(self): - # NOTE(pebaz): Comment out these lines to control them in a game loop - self.update_keyboard() - self.update_mouse() - - # Update all camera vectors to reflect changes - self.fps_facing = glm.vec3( - cos((self.yaw)) * cos((0)), - sin((0)), - sin((self.yaw)) * cos((0)) - ) - self.fps_facing = glm.normalize(self.fps_facing) - - front = glm.vec3( - cos((self.yaw)) * cos((self.pitch)), - sin((self.pitch)), - sin((self.yaw)) * cos((self.pitch)) - ) - - self.front = glm.normalize(front) - self.right = glm.normalize(glm.cross(self.front, self.world_up)) - self.up = glm.normalize(glm.cross(self.right, self.front)) - - -def camera_test(): - rl.SetTraceLogLevel(rl.LOG_ERROR) - rl.SetConfigFlags(rl.FLAG_WINDOW_RESIZABLE) - rl.InitWindow(512, 256, b'Test') - rl.SetTargetFPS(60) - rl.DisableCursor() - - flycam = CameraFly() - - - while not rl.WindowShouldClose(): - flycam.update() - cam = flycam.get_camera() - - rl.BeginDrawing() - rl.ClearBackground((0, 200, 255, 255)) - rl.BeginMode3D(cam[0]) - - # NOTE(pebaz): For whatever reason, this can solve a percentage of artifacts - #rl.DrawGizmo([100000000, 100000000, 100000000]) - - rl.DrawGrid(32, 1) - - rl.EndMode3D() - rl.EndDrawing() - - rl.CloseWindow() - -if __name__ == '__main__': - camera_test() \ No newline at end of file diff --git a/examples/extra/extra_flow_field.py b/examples/extra/extra_flow_field.py deleted file mode 100644 index 7f88117..0000000 --- a/examples/extra/extra_flow_field.py +++ /dev/null @@ -1,141 +0,0 @@ -""" -RenderTexture example - -Run with: -python3 -m pip install pyglm -python3 flow-field - flow-field bees -""" - -import sys, math, time, random -import glm # type: ignore -# Note package is PyGLM, not glm. -from raylib import rl, ffi -from raylib.colors import * - -CTM = lambda: round(time.time() * 1000) - - - -BEES = bool(sys.argv[1:]) - - - - -rl.SetTraceLogLevel(rl.LOG_ERROR) -rl.SetConfigFlags(rl.FLAG_WINDOW_RESIZABLE) -rl.InitWindow(512, 512, b'Friendly Bees') -rl.SetTargetFPS(60) -#rl.DisableCursor() - -canvas = rl.LoadRenderTexture(rl.GetScreenWidth(), rl.GetScreenHeight()) -rl.SetTextureWrap(canvas.texture, rl.TEXTURE_WRAP_MIRROR_REPEAT) - -def random_point_in_circle(center, radius): - a = random.random() * 2 * math.pi - r = radius * math.sqrt(random.random()) - x = r * math.cos(a) - z = r * math.sin(a) - return glm.vec3( - x + center.x, - center.y, - z + center.z - ) - -class Particle: - def __init__(self, pos): - self.pos = pos - self.scl = 16 if BEES else 2 - self.ang = math.radians(random.randint(0, 359)) - self.spd = random.randint(4, 10) - self.start = CTM() - self.clr = [255, 200, 0, 155] if BEES else [*(random.randint(55, 255) for i in range(3)), 55] - self.mem = (0, 0) - self.pre = glm.vec2(pos) - - def process(self): - if CTM() > self.start + 50: - self.ang = math.radians(glm.simplex(self.pos) * 360.0) - self.start = CTM() - - self.rot = glm.vec2( - glm.vec4(1) * glm.rotate(glm.mat4(), self.ang, [0, 0, 1]) - ) - self.pre = int(self.pos.x), int(self.pos.y) - self.pos += self.rot * rl.GetFrameTime() * 64 - rl.DrawLine( - int(self.pos.x), int(self.pos.y), *self.pre, self.clr - ) - - if self.pos.x < 0: self.pos.x = rl.GetScreenWidth() - 1 - if self.pos.y < 0: self.pos.y = rl.GetScreenHeight() - 1 - if self.pos.x >= rl.GetScreenWidth(): self.pos.x = 0 - if self.pos.y >= rl.GetScreenHeight(): self.pos.y = 0 - - hlf = self.scl // 2 - self.mem = int(self.pos.x) - hlf, int(self.pos.y) - hlf - rl.DrawRectangle( - *self.mem, - self.scl if not BEES else hlf, - self.scl, - self.clr - ) - if BEES: - rl.DrawRectangle( - self.mem[0] + hlf, self.mem[1], - hlf, - self.scl, - [0, 0, 0, 55] - ) - -dims = rl.GetScreenWidth(), rl.GetScreenHeight() -ini = False -parts = [ - Particle(glm.vec2(random_point_in_circle( - glm.vec3( - rl.GetScreenWidth() / 2, - rl.GetScreenHeight() / 2, - 0 - ), - 64 - ))) - for i in range(125) -] -while not rl.WindowShouldClose(): - if (rl.GetScreenWidth(), rl.GetScreenHeight()) != dims: - canvas = rl.LoadRenderTexture(rl.GetScreenWidth(), rl.GetScreenHeight()) - rl.SetTextureWrap(canvas.texture, rl.WRAP_MIRROR_REPEAT) - ini = False - dims = rl.GetScreenWidth(), rl.GetScreenHeight() - - rl.BeginDrawing() - - rl.BeginTextureMode(canvas) - if not ini: - rl.ClearBackground([200, 200, 0, 255] if BEES else WHITE) - if BEES: - rl.DrawRectangle( - 0, 0, - dims[0], dims[1] // 2, - (0, 200, 255, 255) - ) - rl.DrawCircle( - dims[0] - 72, 72, 32, [255, 200, 0, 255] - ) - else: - ini = True - - for part in parts: part.process() - - rl.EndTextureMode() - - tex = canvas.texture - rl.DrawTexturePro( - tex, [0.0, 0.0, tex.width, -tex.height], - [0, 0, tex.width, tex.height], - [0, 0], 0.0, WHITE - ) - - rl.EndDrawing() - -rl.CloseWindow() diff --git a/examples/extra/mesh_creation.py b/examples/extra/mesh_creation.py deleted file mode 100644 index 5f3c49a..0000000 --- a/examples/extra/mesh_creation.py +++ /dev/null @@ -1,120 +0,0 @@ -from array import array -import pyray as pr - -W, H = 640, 480 - - -def make_cube(width, height, length): - vertices = array('f', [ - -width / 2, -height / 2, length / 2, - width / 2, -height / 2, length / 2, - width / 2, height / 2, length / 2, - -width / 2, height / 2, length / 2, - -width / 2, -height / 2, -length / 2, - -width / 2, height / 2, -length / 2, - width / 2, height / 2, -length / 2, - width / 2, -height / 2, -length / 2, - -width / 2, height / 2, -length / 2, - -width / 2, height / 2, length / 2, - width / 2, height / 2, length / 2, - width / 2, height / 2, -length / 2, - -width / 2, -height / 2, -length / 2, - width / 2, -height / 2, -length / 2, - width / 2, -height / 2, length / 2, - -width / 2, -height / 2, length / 2, - width / 2, -height / 2, -length / 2, - width / 2, height / 2, -length / 2, - width / 2, height / 2, length / 2, - width / 2, -height / 2, length / 2, - -width / 2, -height / 2, -length / 2, - -width / 2, -height / 2, length / 2, - -width / 2, height / 2, length / 2, - -width / 2, height / 2, -length / 2 - ]) - - texcoords = array('f', [ - 0.0, 0.0, - 1.0, 0.0, - 1.0, 1.0, - 0.0, 1.0, - 1.0, 0.0, - 1.0, 1.0, - 0.0, 1.0, - 0.0, 0.0, - 0.0, 1.0, - 0.0, 0.0, - 1.0, 0.0, - 1.0, 1.0, - 1.0, 1.0, - 0.0, 1.0, - 0.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, - 1.0, 1.0, - 0.0, 1.0, - 0.0, 0.0, - 0.0, 0.0, - 1.0, 0.0, - 1.0, 1.0, - 0.0, 1.0]) - - normals = array('f', [ - 0.0, 0.0, 1.0, - 0.0, 0.0, 1.0, - 0.0, 0.0, 1.0, - 0.0, 0.0, 1.0, - 0.0, 0.0, -1.0, - 0.0, 0.0, -1.0, - 0.0, 0.0, -1.0, - 0.0, 0.0, -1.0, - 0.0, 1.0, 0.0, - 0.0, 1.0, 0.0, - 0.0, 1.0, 0.0, - 0.0, 1.0, 0.0, - 0.0, -1.0, 0.0, - 0.0, -1.0, 0.0, - 0.0, -1.0, 0.0, - 0.0, -1.0, 0.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, - -1.0, 0.0, 0.0, - -1.0, 0.0, 0.0, - -1.0, 0.0, 0.0, - -1.0, 0.0, 0.0 - ]) - - indices = array('h', - sum([[4 * k, 4 * k + 1, 4 * k + 2, 4 * k, 4 * k + 2, 4 * k + 3] for k in range(0, 6)], [])) - - print(vertices, indices) - - return (pr.Mesh(24, 12, vertices, texcoords, - None, normals, None, None, indices, - None, None, None, None, 0, None)) - - -pr.init_window(W, H, "Mesh creation") - -msh = make_cube(3, 4, 40) -pr.upload_mesh(msh, False) -matdefault = pr.load_material_default() -eye = pr.matrix_identity() - -camera = pr.Camera3D((30.0, 20.0, 30.0), (0.0, 0.0, 0.0), (0.0, 1.0, 0.0), 70.0, - pr.CameraProjection.CAMERA_PERSPECTIVE) - -# Export so we can inspect it -pr.export_mesh(msh, "test-cube.obj") - -while not pr.window_should_close(): - pr.update_camera(camera, pr.CameraMode.CAMERA_ORBITAL) - pr.begin_drawing() - pr.clear_background(pr.BLACK) - pr.begin_mode_3d(camera) - pr.draw_grid(10, 5.0) - pr.draw_mesh(msh, matdefault, eye) - pr.end_mode_3d() - pr.end_drawing() -pr.close_window() diff --git a/examples/extra/textures_opencv.py b/examples/extra/textures_opencv.py deleted file mode 100644 index 4edea98..0000000 --- a/examples/extra/textures_opencv.py +++ /dev/null @@ -1,26 +0,0 @@ -import cv2 as cv # type:ignore -from pyray import * - -opencv_image = cv.imread("resources/raylib_logo.jpg") -if opencv_image is None: - exit("Could not read the image.") - -screenWidth = 800 -screenHeight = 450 -init_window(screenWidth, screenHeight, "example - image loading") - -pointer_to_image_data = ffi.from_buffer(opencv_image.data) -raylib_image = Image(pointer_to_image_data, 256, 256, 1, PixelFormat.PIXELFORMAT_UNCOMPRESSED_R8G8B8) -texture = load_texture_from_image(raylib_image) -unload_image(raylib_image) - -while not window_should_close(): - begin_drawing() - clear_background(RAYWHITE) - draw_texture(texture, int(screenWidth/2 - texture.width/2), int(screenHeight/2 - texture.height/2), WHITE) - end_drawing() - -unload_texture(texture) -close_window() - - diff --git a/examples/extra/vector2_extended.py b/examples/extra/vector2_extended.py deleted file mode 100644 index 87e665f..0000000 --- a/examples/extra/vector2_extended.py +++ /dev/null @@ -1,260 +0,0 @@ -# An OO wrapper around the Vector2 struct, by @Emtyloc - -from pyray import * - -class Vector2Ex(list): - def __init__(self, x, y): - super(Vector2Ex, self).__init__([x, y]) - - @property - def x(self): - return self[0] - - @x.setter - def x(self, value): - self[0]= value - - @property - def y(self): - return self[1] - - @y.setter - def y(self, value): - self[1]= value - - @staticmethod - def to_Vec2(v: Vector2): - """ - Cast Vector2 to Vec2. - """ - return Vector2Ex(v.x, v.y) - - def __repr__(self) -> str: - return f"{self.x}, {self.y}" - - def __eq__(self, other): - if isinstance(other, Vector2Ex): - return self.x == other.x and self.y == other.y - return False - - def __add__(self, other): - if isinstance(other, Vector2Ex): - return Vector2Ex(self.x + other.x, self.y + other.y) - return Vector2Ex(self.x + other, self.y + other) - - def __iadd__(self, other): - if isinstance(other, Vector2Ex): - self.x += other.x - self.y += other.y - else: - res = vector2_add_value(self, other) - self.x = res.x - self.y = res.y - return self - - def __radd__(self, other): - return self + other - - def __sub__(self, other): - if isinstance(other, Vector2Ex): - return Vector2Ex(self.x - other.x, self.y - other.y) - return Vector2Ex(self.x - other, self.y - other) - - def __isub__(self, other): - if isinstance(other, Vector2Ex): - self.x -= other.x - self.y -= other.y - else: - self.x -= other - self.y -= other - return self - - def __rsub__(self, other): - return Vector2Ex(other - self.x, other - self.y) - - def __mul__(self, other): - if isinstance(other, Vector2Ex): - res = vector2_multiply(self, other) - return self.to_Vec2(res) - return Vector2Ex(self.x * other, self.y * other) - - def __imul__(self, other): - if isinstance(other, Vector2Ex): - res = vector2_multiply(self, other) - else: - res = vector2_scale(self, other) - self.x = res.x - self.y = res.y - return self - - def __truediv__(self, other): - if isinstance(other, Vector2Ex): - res = vector_2divide(self, other) - return self.to_Vec2(res) - return Vector2Ex(self.x / other, self.y / other) - - def __itruediv__(self, other): - if isinstance(other, Vector2Ex): - res = vector_2divide(self, other) - else: - res = vector2_scale(self, 1/other) - self.x = res.x - self.y = res.y - return self - - def __neg__(self): - return Vector2Ex(-self.x, -self.y) - - def __pos__(self): - return Vector2Ex(self.x, self.y) - - def __pow__(self, exponent): - return Vector2Ex(self.x ** exponent, self.y ** exponent) - - # PyRay mapped vector2 functions - - def angle(self, vec2): - return vector2_angle(self, vec2) - - def clamp(self, min_vec2, max_vec2): - res = vector2_clamp(self, min_vec2, max_vec2) - return self.to_Vec2(res) - - def clamp_value(self, min_val: float, max_val: float): - res = vector2_clamp_value(self, min_val, max_val) - return self.to_Vec2(res) - - def distance(self, vec2): - return vector_2distance(self, vec2) - - def distance_sqr(self, vec2) -> float: - return vector_2distance_sqr(self, vec2) - - def dot_product(self, vec2) -> float: - return vector_2dot_product(self, vec2) - - def invert(self): - res = vector2_invert(self) - return self.to_Vec2(res) - - def length(self): - return vector2_length(self) - - def length_sqr(self) -> float: - return vector2_length_sqr(self) - - def lerp(self, vec2, amount: float): - res = vector2_lerp(self, vec2, amount) - return self.to_Vec2(res) - - def move_towards(self, target_vec2, max_distance: float): - res = vector2_move_towards(self, target_vec2, max_distance) - return self.to_Vec2(res) - - def negate(self): - res = vector2_negate(self) - return self.to_Vec2(res) - - def normalize(self): - res = vector2_normalize(self) - return self.to_Vec2(res) - - def reflect(self, normal_vec2): - res = vector2_reflect(self, normal_vec2) - return self.to_Vec2(res) - - def rotate(self, angle: float): - res = vector2_rotate(self, angle) - return self.to_Vec2(res) - - def transform(self, mat: Matrix): - res = vector2_transform(self, mat) - return self.to_Vec2(res) - - @staticmethod - def line_angle(start_vec2, end_vec2) -> float: - return vector2_line_angle(start_vec2, end_vec2) - - @staticmethod - def one(): - return Vector2Ex(1, 1) - - @staticmethod - def zero(): - return Vector2Ex(0, 0) - - -if __name__ == "__main__": - # Arithmetic ops - v1 = Vector2Ex(5, 5) - v2 = Vector2Ex(10, 10) - - print(v1 + v2) # 15, 15 - print(v1 - v2) # -5, -5 - - print(v1 * v2) # 50.0, 50.0 - print(v1 / v2) # 0.5, 0.5 - - print(v1 * 2) # 10, 10 - print(v2 / 2) # 5.0, 5.0 - - v1+=v2 - print(v1) #15, 15 - v2-=v1 - print(v2) #-5, -5 - - v1/=-v2 - print(v1) #3.0, 3.0 - v2*=v1 - print(v2) #-15.0, -15.0 - - v3 = Vector2Ex(3, 5) - print(v3 ** 2) #9, 25 - - v1 = Vector2Ex.one() - print(v1) - - v0 = Vector2Ex.zero() - print(v0) - - # Vector2 pyray methods - v1 = Vector2Ex(3, 4) - v2 = Vector2Ex(1, 2) - v_min = Vector2Ex(0, 0) - v_max = Vector2Ex(5, 5) - - print("Angle:", v1.angle(v2)) - - print("Clamp:", v1.clamp(v_min, v_max)) - - print("Clamp value:", v1.clamp_value(1.5, 3.5)) - - print("Distance:", v1.distance(v2)) - - print("Distance Sqr:", v1.distance_sqr(v2)) - - print("Dot Product:", v1.dot_product(v2)) - - print("Invert:", v1.invert()) - - print("Length:", v1.length()) - - print("Length Sqr:", v1.length_sqr()) - - print("Lerp:", v1.lerp(v2, 0.5)) - - print("Line Angle:", Vector2Ex.line_angle(v1, v2)) - - print("Move Towards:", v1.move_towards(v2, 0.5)) - - print("Negate:", v1.negate()) - - print("Normalize:", v1.normalize()) - - print("Reflect:", v1.reflect(v2)) - - print("Rotate:", v1.rotate(45)) - - # I don't know why this not work - # mat = Matrix2x2(1, 0, 0, 1) - # print("Transform:", v1.transform(mat)) diff --git a/examples/models/models_animation.py b/examples/models/models_animation.py deleted file mode 100644 index 9b40722..0000000 --- a/examples/models/models_animation.py +++ /dev/null @@ -1,82 +0,0 @@ -import pyray as ray - - -screen_width = 800 -screen_height = 450 - -ray.init_window(screen_width, screen_height, "raylib [models] example - model animation") - -# Define the camera to look into our 3d world -camera = ray.Camera3D() -camera.position = ray.Vector3( 10.0, 10.0, 10.0 ) # Camera position -camera.target = ray.Vector3( 0.0, 0.0, 0.0 ) # Camera looking at point -camera.up = ray.Vector3( 0.0, 1.0, 0.0 ) # Camera up vector (rotation towards target) -camera.fovy = 45.0 # Camera field-of-view Y -camera.projection = ray.CameraProjection.CAMERA_PERSPECTIVE # Camera mode type - -model = ray.load_model("resources/models/iqm/guy.iqm") # Load the animated model mesh and basic data -texture = ray.load_texture("resources/models/iqm/guytex.png") # Load model texture and set material -ray.set_material_texture(model.materials, ray.MaterialMapIndex.MATERIAL_MAP_ALBEDO, texture) # Set model material map texture - -position = ( 0., 0., 0. ) # Set model position - -# Load animation data -count = ray.ffi.new("int *", 1) -anims = ray.load_model_animations("resources/models/iqm/guyanim.iqm", count) -anim_frame_counter = 0 - -ray.set_target_fps(60) # Set our game to run at 60 frames-per-second -#-------------------------------------------------------------------------------------- - -# Main game loop -while not ray.window_should_close(): # Detect window close button or ESC key - # Update - #---------------------------------------------------------------------------------- - ray.update_camera(camera, ray.CameraMode.CAMERA_FREE) - - # Play animation when spacebar is held down - if ray.is_key_down(ray.KeyboardKey.KEY_SPACE): - anim_frame_counter+=1 - ray.update_model_animation(model, anims[0], anim_frame_counter) - if anim_frame_counter >= anims[0].frameCount: - anim_frame_counter = 0 - - #---------------------------------------------------------------------------------- - - # Draw - #---------------------------------------------------------------------------------- - ray.begin_drawing() - - ray.clear_background(ray.RAYWHITE) - - ray.begin_mode_3d(camera) - - ray.draw_model_ex(model, position, ray.Vector3( 1.0, 0.0, 0.0 ), -90.0, ray.Vector3( 1.0, 1.0, 1.0 ), ray.WHITE) - - for i in range(model.boneCount): - ray.draw_cube(anims.framePoses[anim_frame_counter][i].translation, 0.2, 0.2, 0.2, ray.RED) - - ray.draw_grid(10, 1.0) # Draw a grid - - ray.end_mode_3d() - - ray.draw_text("PRESS SPACE to PLAY MODEL ANIMATION", 10, 10, 20, ray.MAROON) - ray.draw_text("(c) Guy IQM 3D model by @culacant", screen_width - 200, screen_height - 20, 10, ray.GRAY) - - ray.draw_fps(10, 400) - - ray.end_drawing() - #---------------------------------------------------------------------------------- - - -# De-Initialization -#-------------------------------------------------------------------------------------- -ray.unload_texture(texture) # Unload texture - -# Unload model animations data -for i in range(count[0]): - ray.unload_model_animation(anims[i]) - -ray.unload_model(model) # Unload model - -ray.close_window() # Close window and OpenGL context \ No newline at end of file diff --git a/examples/models/models_billboard.png b/examples/models/models_billboard.png new file mode 100644 index 0000000..dad1e55 Binary files /dev/null and b/examples/models/models_billboard.png differ diff --git a/examples/models/models_billboard.py b/examples/models/models_billboard.py index 6f42c57..a390044 100644 --- a/examples/models/models_billboard.py +++ b/examples/models/models_billboard.py @@ -9,7 +9,7 @@ # * # ********************************************************************************************/ -from raylib import * +from raylib.static import * # Initialization @@ -27,12 +27,14 @@ camera.position = [ 5.0, 4.0, 5.0 ] camera.target = [ 0.0, 2.0, 0.0 ] camera.up = [ 0.0, 1.0, 0.0 ] camera.fovy = 45.0 -camera.projection = CAMERA_PERSPECTIVE +camera.type = CAMERA_PERSPECTIVE bill = LoadTexture(b"resources/billboard.png") # Our texture billboard billPosition = [ 0.0, 2.0, 0.0 ] # Position where draw billboard +SetCameraMode(camera, CAMERA_ORBITAL) # Set an orbital camera mode + SetTargetFPS(60) # Set our game to run at 60 frames-per-second #-------------------------------------------------------------------------------------- @@ -40,7 +42,7 @@ SetTargetFPS(60) # Set our game to run at 60 frames-per-se while not WindowShouldClose() : # Detect window close button or ESC key # Update #---------------------------------------------------------------------------------- - UpdateCamera(cameraPtr, CAMERA_ORBITAL) # Update camera + UpdateCamera(cameraPtr) # Update camera #---------------------------------------------------------------------------------- # Draw diff --git a/examples/models/models_box_collisions.png b/examples/models/models_box_collisions.png new file mode 100644 index 0000000..d01fd9d Binary files /dev/null and b/examples/models/models_box_collisions.png differ diff --git a/examples/models/models_box_collisions.py b/examples/models/models_box_collisions.py index 7f7781a..86c9c72 100644 --- a/examples/models/models_box_collisions.py +++ b/examples/models/models_box_collisions.py @@ -9,7 +9,7 @@ # * # ********************************************************************************************/ -from raylib import * +from raylib.static import * # Initialization # -------------------------------------------------------------------------------------- diff --git a/examples/models/models_cubicmap.png b/examples/models/models_cubicmap.png new file mode 100644 index 0000000..9cb854c Binary files /dev/null and b/examples/models/models_cubicmap.png differ diff --git a/examples/models/models_cubicmap.py b/examples/models/models_cubicmap.py index d0f3367..dbff866 100644 --- a/examples/models/models_cubicmap.py +++ b/examples/models/models_cubicmap.py @@ -9,7 +9,7 @@ # * # ********************************************************************************************/ -from raylib import * +from raylib.static import * # Initialization @@ -30,12 +30,13 @@ model = LoadModelFromMesh(mesh) # NOTE: By default each cube is mapped to one part of texture atlas texture = LoadTexture(b"resources/cubicmap_atlas.png") # Load map texture -model.materials[0].maps[MATERIAL_MAP_ALBEDO ].texture = texture # Set map diffuse texture +model.materials[0].maps[MAP_DIFFUSE].texture = texture # Set map diffuse texture mapPosition = [ -16.0, 0.0, -8.0 ] # Set model position UnloadImage(image) # Unload cubesmap image from RAM, already uploaded to VRAM +SetCameraMode(camera[0], CAMERA_ORBITAL) # Set an orbital camera mode SetTargetFPS(60) # Set our game to run at 60 frames-per-second #-------------------------------------------------------------------------------------- @@ -45,7 +46,7 @@ while not WindowShouldClose(): # Detect window close button or ESC key # Update #---------------------------------------------------------------------------------- - UpdateCamera(camera, CAMERA_ORBITAL) # Update camera + UpdateCamera(camera) # Update camera #---------------------------------------------------------------------------------- # Draw diff --git a/examples/models/models_geometric_shapes.png b/examples/models/models_geometric_shapes.png new file mode 100644 index 0000000..6076b42 Binary files /dev/null and b/examples/models/models_geometric_shapes.png differ diff --git a/examples/models/models_geometric_shapes.py b/examples/models/models_geometric_shapes.py index fd90582..a9a6434 100644 --- a/examples/models/models_geometric_shapes.py +++ b/examples/models/models_geometric_shapes.py @@ -9,7 +9,7 @@ # * # ********************************************************************************************/ -from raylib import * +from raylib.static import * # Initialization @@ -26,7 +26,7 @@ camera.position = [ 0.0, 10.0, 10.0 ] camera.target = [ 0.0, 0.0, 0.0 ] camera.up = [ 0.0, 1.0, 0.0 ] camera.fovy = 45.0 -camera.projection = CAMERA_PERSPECTIVE +camera.type = CAMERA_PERSPECTIVE SetTargetFPS(60) # Set our game to run at 60 frames-per-second #-------------------------------------------------------------------------------------- diff --git a/examples/models/models_heightmap.png b/examples/models/models_heightmap.png new file mode 100644 index 0000000..6dcf01f Binary files /dev/null and b/examples/models/models_heightmap.png differ diff --git a/examples/models/models_heightmap.py b/examples/models/models_heightmap.py index ef7b694..22e0f5c 100644 --- a/examples/models/models_heightmap.py +++ b/examples/models/models_heightmap.py @@ -9,7 +9,7 @@ # * # ********************************************************************************************/ -from raylib import * +from raylib.static import * # Initialization #-------------------------------------------------------------------------------------- @@ -27,11 +27,13 @@ texture = LoadTextureFromImage(image) # Convert image to texture mesh = GenMeshHeightmap(image, ( 16, 8, 16 )) # Generate heightmap mesh (RAM and VRAM) model = LoadModelFromMesh(mesh) # Load model from generated mesh -model.materials[0].maps[MATERIAL_MAP_ALBEDO].texture = texture # Set map diffuse texture +model.materials[0].maps[MAP_DIFFUSE].texture = texture # Set map diffuse texture mapPosition = ( -8.0, 0.0, -8.0 ) # Define model position UnloadImage(image) # Unload heightmap image from RAM, already uploaded to VRAM +SetCameraMode(camera[0], CAMERA_ORBITAL) # Set an orbital camera mode + SetTargetFPS(60) # Set our game to run at 60 frames-per-second #-------------------------------------------------------------------------------------- @@ -39,7 +41,7 @@ SetTargetFPS(60) # Set our game to run at 60 frames-per-se while not WindowShouldClose(): # Detect window close button or ESC key # Update #---------------------------------------------------------------------------------- - UpdateCamera(camera, CAMERA_ORBITAL) # Update camera + UpdateCamera(camera) # Update camera #---------------------------------------------------------------------------------- # Draw diff --git a/examples/models/models_material_pbr.c b/examples/models/models_material_pbr.c new file mode 100644 index 0000000..b656582 --- /dev/null +++ b/examples/models/models_material_pbr.c @@ -0,0 +1,196 @@ +/******************************************************************************************* +* +* raylib [models] example - PBR material +* +* This example has been created using raylib 1.8 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2017 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" +#include "raymath.h" + +#define RLIGHTS_IMPLEMENTATION +#include "rlights.h" + +#define CUBEMAP_SIZE 512 # Cubemap texture size +#define IRRADIANCE_SIZE 32 # Irradiance texture size +#define PREFILTERED_SIZE 256 # Prefiltered HDR environment texture size +#define BRDF_SIZE 512 # BRDF LUT texture size + +# PBR material loading +static Material LoadMaterialPBR(Color albedo, float metalness, float roughness) + +int main() +[ + # Initialization + #-------------------------------------------------------------------------------------- + int screenWidth = 800 + int screenHeight = 450 + + SetConfigFlags(FLAG_MSAA_4X_HINT) # Enable Multi Sampling Anti Aliasing 4x (if available) + InitWindow(screenWidth, screenHeight, "raylib [models] example - pbr material") + + # Define the camera to look into our 3d world + Camera camera = [[ 4.0, 4.0, 4.0 ], [ 0.0, 0.5f, 0.0 ], [ 0.0, 1.0, 0.0 ], 45.0, 0 ] + + # Load model and PBR material + Model model = LoadModel("resources/pbr/trooper.obj") + MeshTangents(&model.mesh) + model.material = LoadMaterialPBR((Color)[ 255, 255, 255, 255 ], 1.0, 1.0) + + # Define lights attributes + # NOTE: Shader is passed to every light on creation to define shader bindings internally + Light lights[MAX_LIGHTS] = [ + CreateLight(LIGHT_POINT, (Vector3)[ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0 ], (Vector3)[ 0.0, 0.0, 0.0 ], (Color)[ 255, 0, 0, 255 ], model.material.shader), + CreateLight(LIGHT_POINT, (Vector3)[ 0.0, LIGHT_HEIGHT, LIGHT_DISTANCE ], (Vector3)[ 0.0, 0.0, 0.0 ], (Color)[ 0, 255, 0, 255 ], model.material.shader), + CreateLight(LIGHT_POINT, (Vector3)[ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0 ], (Vector3)[ 0.0, 0.0, 0.0 ], (Color)[ 0, 0, 255, 255 ], model.material.shader), + CreateLight(LIGHT_DIRECTIONAL, (Vector3)[ 0.0, LIGHT_HEIGHT*2.0, -LIGHT_DISTANCE ], (Vector3)[ 0.0, 0.0, 0.0 ], (Color)[ 255, 0, 255, 255 ], model.material.shader) + ] + + SetCameraMode(camera, CAMERA_ORBITAL) # Set an orbital camera mode + + SetTargetFPS(60) # Set our game to run at 60 frames-per-second + #-------------------------------------------------------------------------------------- + + # Main game loop + while (!WindowShouldClose()) # Detect window close button or ESC key + [ + # Update + #---------------------------------------------------------------------------------- + UpdateCamera(&camera) # Update camera + + # Send to material PBR shader camera view position + float cameraPos[3] = [ camera.position.x, camera.position.y, camera.position.z ] + SetShaderValue(model.material.shader, model.material.shader.locs[LOC_VECTOR_VIEW], cameraPos, 3) + #---------------------------------------------------------------------------------- + + # Draw + #---------------------------------------------------------------------------------- + BeginDrawing() + + ClearBackground(RAYWHITE) + + BeginMode3D(camera) + + DrawModel(model, Vector3Zero(), 1.0, WHITE) + + DrawGrid(10, 1.0) + + EndMode3D() + + DrawFPS(10, 10) + + EndDrawing() + #---------------------------------------------------------------------------------- + ] + + # De-Initialization + #-------------------------------------------------------------------------------------- + UnloadModel(model) # Unload skybox model + + CloseWindow() # Close window and OpenGL context + #-------------------------------------------------------------------------------------- + + return 0 +] + +# Load PBR material (Supports: ALBEDO, NORMAL, METALNESS, ROUGHNESS, AO, EMMISIVE, HEIGHT maps) +# NOTE: PBR shader is loaded inside this function +static Material LoadMaterialPBR(Color albedo, float metalness, float roughness) +[ + Material mat = [ 0 ] # NOTE: All maps textures are set to [ 0 ] + + #define PATH_PBR_VS "resources/shaders/pbr.vs" # Path to physically based rendering vertex shader + #define PATH_PBR_FS "resources/shaders/pbr.fs" # Path to physically based rendering fragment shader + + mat.shader = LoadShader(PATH_PBR_VS, PATH_PBR_FS) + + # Get required locations points for PBR material + # NOTE: Those location names must be available and used in the shader code + mat.shader.locs[LOC_MAP_ALBEDO] = GetShaderLocation(mat.shader, "albedo.sampler") + mat.shader.locs[LOC_MAP_METALNESS] = GetShaderLocation(mat.shader, "metalness.sampler") + mat.shader.locs[LOC_MAP_NORMAL] = GetShaderLocation(mat.shader, "normals.sampler") + mat.shader.locs[LOC_MAP_ROUGHNESS] = GetShaderLocation(mat.shader, "roughness.sampler") + mat.shader.locs[LOC_MAP_OCCLUSION] = GetShaderLocation(mat.shader, "occlusion.sampler") + #mat.shader.locs[LOC_MAP_EMISSION] = GetShaderLocation(mat.shader, "emission.sampler") + #mat.shader.locs[LOC_MAP_HEIGHT] = GetShaderLocation(mat.shader, "height.sampler") + mat.shader.locs[LOC_MAP_IRRADIANCE] = GetShaderLocation(mat.shader, "irradianceMap") + mat.shader.locs[LOC_MAP_PREFILTER] = GetShaderLocation(mat.shader, "prefilterMap") + mat.shader.locs[LOC_MAP_BRDF] = GetShaderLocation(mat.shader, "brdfLUT") + + # Set view matrix location + mat.shader.locs[LOC_MATRIX_MODEL] = GetShaderLocation(mat.shader, "matModel") + mat.shader.locs[LOC_MATRIX_VIEW] = GetShaderLocation(mat.shader, "view") + mat.shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(mat.shader, "viewPos") + + # Set PBR standard maps + mat.maps[MAP_ALBEDO].texture = LoadTexture("resources/pbr/trooper_albedo.png") + mat.maps[MAP_NORMAL].texture = LoadTexture("resources/pbr/trooper_normals.png") + mat.maps[MAP_METALNESS].texture = LoadTexture("resources/pbr/trooper_metalness.png") + mat.maps[MAP_ROUGHNESS].texture = LoadTexture("resources/pbr/trooper_roughness.png") + mat.maps[MAP_OCCLUSION].texture = LoadTexture("resources/pbr/trooper_ao.png") + + # Set environment maps + #define PATH_CUBEMAP_VS "resources/shaders/cubemap.vs" # Path to equirectangular to cubemap vertex shader + #define PATH_CUBEMAP_FS "resources/shaders/cubemap.fs" # Path to equirectangular to cubemap fragment shader + #define PATH_SKYBOX_VS "resources/shaders/skybox.vs" # Path to skybox vertex shader + #define PATH_IRRADIANCE_FS "resources/shaders/irradiance.fs" # Path to irradiance (GI) calculation fragment shader + #define PATH_PREFILTER_FS "resources/shaders/prefilter.fs" # Path to reflection prefilter calculation fragment shader + #define PATH_BRDF_VS "resources/shaders/brdf.vs" # Path to bidirectional reflectance distribution function vertex shader + #define PATH_BRDF_FS "resources/shaders/brdf.fs" # Path to bidirectional reflectance distribution function fragment shader + + Shader shdrCubemap = LoadShader(PATH_CUBEMAP_VS, PATH_CUBEMAP_FS) + Shader shdrIrradiance = LoadShader(PATH_SKYBOX_VS, PATH_IRRADIANCE_FS) + Shader shdrPrefilter = LoadShader(PATH_SKYBOX_VS, PATH_PREFILTER_FS) + Shader shdrBRDF = LoadShader(PATH_BRDF_VS, PATH_BRDF_FS) + + # Setup required shader locations + SetShaderValuei(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1])[ 0 ], 1) + SetShaderValuei(shdrIrradiance, GetShaderLocation(shdrIrradiance, "environmentMap"), (int[1])[ 0 ], 1) + SetShaderValuei(shdrPrefilter, GetShaderLocation(shdrPrefilter, "environmentMap"), (int[1])[ 0 ], 1) + + Texture2D texHDR = LoadTexture("resources/dresden_square.hdr") + Texture2D cubemap = GenTextureCubemap(shdrCubemap, texHDR, CUBEMAP_SIZE) + mat.maps[MAP_IRRADIANCE].texture = GenTextureIrradiance(shdrIrradiance, cubemap, IRRADIANCE_SIZE) + mat.maps[MAP_PREFILTER].texture = GenTexturePrefilter(shdrPrefilter, cubemap, PREFILTERED_SIZE) + mat.maps[MAP_BRDF].texture = GenTextureBRDF(shdrBRDF, cubemap, BRDF_SIZE) + UnloadTexture(cubemap) + UnloadTexture(texHDR) + + # Unload already used shaders (to create specific textures) + UnloadShader(shdrCubemap) + UnloadShader(shdrIrradiance) + UnloadShader(shdrPrefilter) + UnloadShader(shdrBRDF) + + # Set textures filtering for better quality + SetTextureFilter(mat.maps[MAP_ALBEDO].texture, FILTER_BILINEAR) + SetTextureFilter(mat.maps[MAP_NORMAL].texture, FILTER_BILINEAR) + SetTextureFilter(mat.maps[MAP_METALNESS].texture, FILTER_BILINEAR) + SetTextureFilter(mat.maps[MAP_ROUGHNESS].texture, FILTER_BILINEAR) + SetTextureFilter(mat.maps[MAP_OCCLUSION].texture, FILTER_BILINEAR) + + # Enable sample usage in shader for assigned textures + SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "albedo.useSampler"), (int[1])[ 1 ], 1) + SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "normals.useSampler"), (int[1])[ 1 ], 1) + SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "metalness.useSampler"), (int[1])[ 1 ], 1) + SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "roughness.useSampler"), (int[1])[ 1 ], 1) + SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "occlusion.useSampler"), (int[1])[ 1 ], 1) + + int renderModeLoc = GetShaderLocation(mat.shader, "renderMode") + SetShaderValuei(mat.shader, renderModeLoc, (int[1])[ 0 ], 1) + + # Set up material properties color + mat.maps[MAP_ALBEDO].color = albedo + mat.maps[MAP_NORMAL].color = (Color)[ 128, 128, 255, 255 ] + mat.maps[MAP_METALNESS].value = metalness + mat.maps[MAP_ROUGHNESS].value = roughness + mat.maps[MAP_OCCLUSION].value = 1.0 + mat.maps[MAP_EMISSION].value = 0.5f + mat.maps[MAP_HEIGHT].value = 0.5f + + return mat +] diff --git a/examples/models/models_material_pbr.png b/examples/models/models_material_pbr.png new file mode 100644 index 0000000..86ba01b Binary files /dev/null and b/examples/models/models_material_pbr.png differ diff --git a/examples/models/models_mesh_generation.c b/examples/models/models_mesh_generation.c new file mode 100644 index 0000000..3e9b533 --- /dev/null +++ b/examples/models/models_mesh_generation.c @@ -0,0 +1,113 @@ +/******************************************************************************************* +* +* raylib example - procedural mesh generation +* +* This example has been created using raylib 1.8 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2017 Ramon Santamaria (Ray San) +* +********************************************************************************************/ + +#include "raylib.h" + +#define NUM_MODELS 7 # We generate 7 parametric 3d shapes + +int main() +[ + # Initialization + #-------------------------------------------------------------------------------------- + int screenWidth = 800 + int screenHeight = 450 + + InitWindow(screenWidth, screenHeight, "raylib [models] example - mesh generation") + + # We generate a checked image for texturing + Image checked = GenImageChecked(2, 2, 1, 1, RED, GREEN) + Texture2D texture = LoadTextureFromImage(checked) + UnloadImage(checked) + + Model models[NUM_MODELS] + + models[0] = LoadModelFromMesh(GenMeshPlane(2, 2, 5, 5)) + models[1] = LoadModelFromMesh(GenMeshCube(2.0, 1.0, 2.0)) + models[2] = LoadModelFromMesh(GenMeshSphere(2, 32, 32)) + models[3] = LoadModelFromMesh(GenMeshHemiSphere(2, 16, 16)) + models[4] = LoadModelFromMesh(GenMeshCylinder(1, 2, 16)) + models[5] = LoadModelFromMesh(GenMeshTorus(0.25f, 4.0, 16, 32)) + models[6] = LoadModelFromMesh(GenMeshKnot(1.0, 2.0, 16, 128)) + + # Set checked texture as default diffuse component for all models material + for (int i = 0 i < NUM_MODELS i++) models[i].material.maps[MAP_DIFFUSE].texture = texture + + # Define the camera to look into our 3d world + Camera camera = [[ 5.0, 5.0, 5.0 ], [ 0.0, 0.0, 0.0 ], [ 0.0, 1.0, 0.0 ], 45.0, 0 ] + + # Model drawing position + Vector3 position = [ 0.0, 0.0, 0.0 ] + + int currentModel = 0 + + SetCameraMode(camera, CAMERA_ORBITAL) # Set a orbital camera mode + + SetTargetFPS(60) # Set our game to run at 60 frames-per-second + #-------------------------------------------------------------------------------------- + + # Main game loop + while (!WindowShouldClose()) # Detect window close button or ESC key + [ + # Update + #---------------------------------------------------------------------------------- + UpdateCamera(&camera) # Update internal camera and our camera + + if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + [ + currentModel = (currentModel + 1)%NUM_MODELS # Cycle between the textures + ] + #---------------------------------------------------------------------------------- + + # Draw + #---------------------------------------------------------------------------------- + BeginDrawing() + + ClearBackground(RAYWHITE) + + BeginMode3D(camera) + + DrawModel(models[currentModel], position, 1.0, WHITE) + + DrawGrid(10, 1.0) + + EndMode3D() + + DrawRectangle(30, 400, 310, 30, Fade(SKYBLUE, 0.5f)) + DrawRectangleLines(30, 400, 310, 30, Fade(DARKBLUE, 0.5f)) + DrawText("MOUSE LEFT BUTTON to CYCLE PROCEDURAL MODELS", 40, 410, 10, BLUE) + + switch(currentModel) + [ + case 0: DrawText("PLANE", 680, 10, 20, DARKBLUE) break + case 1: DrawText("CUBE", 680, 10, 20, DARKBLUE) break + case 2: DrawText("SPHERE", 680, 10, 20, DARKBLUE) break + case 3: DrawText("HEMISPHERE", 640, 10, 20, DARKBLUE) break + case 4: DrawText("CYLINDER", 680, 10, 20, DARKBLUE) break + case 5: DrawText("TORUS", 680, 10, 20, DARKBLUE) break + case 6: DrawText("KNOT", 680, 10, 20, DARKBLUE) break + default: break + ] + + EndDrawing() + #---------------------------------------------------------------------------------- + ] + + # De-Initialization + #-------------------------------------------------------------------------------------- + + # Unload models data (GPU VRAM) + for (int i = 0 i < NUM_MODELS i++) UnloadModel(models[i]) + + CloseWindow() # Close window and OpenGL context + #-------------------------------------------------------------------------------------- + + return 0 +] \ No newline at end of file diff --git a/examples/models/models_mesh_generation.png b/examples/models/models_mesh_generation.png new file mode 100644 index 0000000..d8eb364 Binary files /dev/null and b/examples/models/models_mesh_generation.png differ diff --git a/examples/models/models_mesh_picking.c b/examples/models/models_mesh_picking.c new file mode 100644 index 0000000..40ece69 --- /dev/null +++ b/examples/models/models_mesh_picking.c @@ -0,0 +1,201 @@ +/******************************************************************************************* +* +* raylib [models] example - Mesh picking in 3d mode, ground plane, triangle, mesh +* +* This example has been created using raylib 1.7 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2015 Ramon Santamaria (@raysan5) +* Example contributed by Joel Davis (@joeld42) +* +********************************************************************************************/ + +#include "raylib.h" +#include "raymath.h" + +#define FLT_MAX 3.40282347E+38F # Maximum value of a float, defined in + +int main() +[ + # Initialization + #-------------------------------------------------------------------------------------- + int screenWidth = 800 + int screenHeight = 450 + + InitWindow(screenWidth, screenHeight, "raylib [models] example - mesh picking") + + # Define the camera to look into our 3d world + Camera camera + camera.position = (Vector3)[ 20.0, 20.0, 20.0 ] # Camera position + camera.target = (Vector3)[ 0.0, 8.0, 0.0 ] # Camera looking at point + camera.up = (Vector3)[ 0.0, 1.6f, 0.0 ] # Camera up vector (rotation towards target) + camera.fovy = 45.0 # Camera field-of-view Y + camera.type = CAMERA_PERSPECTIVE # Camera mode type + + Ray ray # Picking ray + + Model tower = LoadModel("resources/models/turret.obj") # Load OBJ model + Texture2D texture = LoadTexture("resources/models/turret_diffuse.png") # Load model texture + tower.material.maps[MAP_DIFFUSE].texture = texture # Set model diffuse texture + + Vector3 towerPos = [ 0.0, 0.0, 0.0 ] # Set model position + BoundingBox towerBBox = MeshBoundingBox(tower.mesh) # Get mesh bounding box + bool hitMeshBBox = false + bool hitTriangle = false + + # Test triangle + Vector3 ta = (Vector3)[ -25.0, 0.5, 0.0 ] + Vector3 tb = (Vector3)[ -4.0, 2.5, 1.0 ] + Vector3 tc = (Vector3)[ -8.0, 6.5, 0.0 ] + + Vector3 bary = [ 0.0, 0.0, 0.0 ] + + SetCameraMode(camera, CAMERA_FREE) # Set a free camera mode + + SetTargetFPS(60) # Set our game to run at 60 frames-per-second + #-------------------------------------------------------------------------------------- + # Main game loop + while (!WindowShouldClose()) # Detect window close button or ESC key + [ + # Update + #---------------------------------------------------------------------------------- + UpdateCamera(&camera) # Update camera + + # Display information about closest hit + RayHitInfo nearestHit + char *hitObjectName = "None" + nearestHit.distance = FLT_MAX + nearestHit.hit = false + Color cursorColor = WHITE + + # Get ray and test against ground, triangle, and mesh + ray = GetMouseRay(GetMousePosition(), camera) + + # Check ray collision aginst ground plane + RayHitInfo groundHitInfo = GetCollisionRayGround(ray, 0.0) + + if ((groundHitInfo.hit) && (groundHitInfo.distance < nearestHit.distance)) + [ + nearestHit = groundHitInfo + cursorColor = GREEN + hitObjectName = "Ground" + ] + + # Check ray collision against test triangle + RayHitInfo triHitInfo = GetCollisionRayTriangle(ray, ta, tb, tc) + + if ((triHitInfo.hit) && (triHitInfo.distance < nearestHit.distance)) + [ + nearestHit = triHitInfo + cursorColor = PURPLE + hitObjectName = "Triangle" + + bary = Vector3Barycenter(nearestHit.position, ta, tb, tc) + hitTriangle = true + ] + else hitTriangle = false + + RayHitInfo meshHitInfo + + # Check ray collision against bounding box first, before trying the full ray-mesh test + if (CheckCollisionRayBox(ray, towerBBox)) + [ + hitMeshBBox = true + + # Check ray collision against model + # NOTE: It considers model.transform matrix! + meshHitInfo = GetCollisionRayModel(ray, &tower) + + if ((meshHitInfo.hit) && (meshHitInfo.distance < nearestHit.distance)) + [ + nearestHit = meshHitInfo + cursorColor = ORANGE + hitObjectName = "Mesh" + ] + + ] hitMeshBBox = false + #---------------------------------------------------------------------------------- + + # Draw + #---------------------------------------------------------------------------------- + BeginDrawing() + + ClearBackground(RAYWHITE) + + BeginMode3D(camera) + + # Draw the tower + # WARNING: If scale is different than 1.0, + # not considered by GetCollisionRayModel() + DrawModel(tower, towerPos, 1.0, WHITE) + + # Draw the test triangle + DrawLine3D(ta, tb, PURPLE) + DrawLine3D(tb, tc, PURPLE) + DrawLine3D(tc, ta, PURPLE) + + # Draw the mesh bbox if we hit it + if (hitMeshBBox) DrawBoundingBox(towerBBox, LIME) + + # If we hit something, draw the cursor at the hit point + if (nearestHit.hit) + [ + DrawCube(nearestHit.position, 0.3, 0.3, 0.3, cursorColor) + DrawCubeWires(nearestHit.position, 0.3, 0.3, 0.3, RED) + + Vector3 normalEnd + normalEnd.x = nearestHit.position.x + nearestHit.normal.x + normalEnd.y = nearestHit.position.y + nearestHit.normal.y + normalEnd.z = nearestHit.position.z + nearestHit.normal.z + + DrawLine3D(nearestHit.position, normalEnd, RED) + ] + + DrawRay(ray, MAROON) + + DrawGrid(10, 10.0) + + EndMode3D() + + # Draw some debug GUI text + DrawText(FormatText("Hit Object: %s", hitObjectName), 10, 50, 10, BLACK) + + if (nearestHit.hit) + [ + int ypos = 70 + + DrawText(FormatText("Distance: %3.2f", nearestHit.distance), 10, ypos, 10, BLACK) + + DrawText(FormatText("Hit Pos: %3.2f %3.2f %3.2f", + nearestHit.position.x, + nearestHit.position.y, + nearestHit.position.z), 10, ypos + 15, 10, BLACK) + + DrawText(FormatText("Hit Norm: %3.2f %3.2f %3.2f", + nearestHit.normal.x, + nearestHit.normal.y, + nearestHit.normal.z), 10, ypos + 30, 10, BLACK) + + if (hitTriangle) DrawText(FormatText("Barycenter: %3.2f %3.2f %3.2f", bary.x, bary.y, bary.z), 10, ypos + 45, 10, BLACK) + ] + + DrawText("Use Mouse to Move Camera", 10, 430, 10, GRAY) + + DrawText("(c) Turret 3D model by Alberto Cano", screenWidth - 200, screenHeight - 20, 10, GRAY) + + DrawFPS(10, 10) + + EndDrawing() + #---------------------------------------------------------------------------------- + ] + + # De-Initialization + #-------------------------------------------------------------------------------------- + UnloadModel(tower) # Unload model + UnloadTexture(texture) # Unload texture + + CloseWindow() # Close window and OpenGL context + #-------------------------------------------------------------------------------------- + + return 0 +] \ No newline at end of file diff --git a/examples/models/models_mesh_picking.png b/examples/models/models_mesh_picking.png new file mode 100644 index 0000000..0972f94 Binary files /dev/null and b/examples/models/models_mesh_picking.png differ diff --git a/examples/models/models_obj_loading.png b/examples/models/models_obj_loading.png new file mode 100644 index 0000000..098aa60 Binary files /dev/null and b/examples/models/models_obj_loading.png differ diff --git a/examples/models/models_obj_loading.py b/examples/models/models_obj_loading.py index 6dcc074..acfe911 100644 --- a/examples/models/models_obj_loading.py +++ b/examples/models/models_obj_loading.py @@ -9,7 +9,7 @@ # * # ********************************************************************************************/ -from raylib import * +from raylib.static import * # Initialization #-------------------------------------------------------------------------------------- @@ -20,16 +20,15 @@ InitWindow(screenWidth, screenHeight, b"raylib [models] example - obj model load # Define the camera to look into our 3d world camera = ffi.new("struct Camera3D *") -camera.position = [ 5.0, 5.0, 5.0 ] # Camera position +camera.position = [ 50.0, 50.0, 50.0 ] # Camera position camera.target = [ 0.0, 2.5, 0.0 ] # Camera looking at point camera.up = [ 0.0, 1.0, 0.0 ] # Camera up vector (rotation towards target) camera.fovy = 45.0 # Camera field-of-view Y -camera.projection = CAMERA_PERSPECTIVE # Camera mode type +camera.type = CAMERA_PERSPECTIVE # Camera mode type - -model = LoadModel(b"resources/models/house.obj") # Load OBJ model -texture = LoadTexture(b"resources/models/house_diffuse.png") # Load model texture -model.materials.maps[MATERIAL_MAP_ALBEDO].texture = texture # Set map diffuse texture +model = LoadModel(b"resources/models/monkey/monkey4.gltf") # Load OBJ model +texture = LoadTexture(b"resources/models/castle_diffuse.png") # Load model texture +#model.materials.maps[MAP_DIFFUSE].texture = texture # Set map diffuse texture position = [ 0.0, 0.0, 0.0 ] # Set model position SetTargetFPS(60) # Set our game to run at 60 frames-per-second @@ -41,7 +40,7 @@ while not WindowShouldClose(): # Detect window close button or ESC key #---------------------------------------------------------------------------------- #... #---------------------------------------------------------------------------------- - rl.UpdateCamera(camera, rl.CAMERA_ORBITAL) + # Draw #---------------------------------------------------------------------------------- BeginDrawing() @@ -54,6 +53,8 @@ while not WindowShouldClose(): # Detect window close button or ESC key DrawGrid(10, 1.0) # Draw a grid + DrawGizmo(position) # Draw gizmo + EndMode3D() DrawText(b"(c) Castle 3D model by Alberto Cano", screenWidth - 200, screenHeight - 20, 10, GRAY) diff --git a/examples/models/models_orthographic_projection.c b/examples/models/models_orthographic_projection.c new file mode 100644 index 0000000..b00bb23 --- /dev/null +++ b/examples/models/models_orthographic_projection.c @@ -0,0 +1,97 @@ +/******************************************************************************************* +* +* raylib [models] example - Show the difference between perspective and orthographic projection +* +* This program is heavily based on the geometric objects example +* +* This example has been created using raylib 1.9.7 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2018 Max Danielsson & Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +#define FOVY_PERSPECTIVE 45.0 +#define WIDTH_ORTHOGRAPHIC 10.0 + +int main() +[ + # Initialization + #-------------------------------------------------------------------------------------- + int screenWidth = 800 + int screenHeight = 450 + + InitWindow(screenWidth, screenHeight, "raylib [models] example - geometric shapes") + + # Define the camera to look into our 3d world + Camera camera = [[ 0.0, 10.0, 10.0 ], [ 0.0, 0.0, 0.0 ], [ 0.0, 1.0, 0.0 ], FOVY_PERSPECTIVE, CAMERA_PERSPECTIVE ] + + SetTargetFPS(60) # Set our game to run at 60 frames-per-second + #-------------------------------------------------------------------------------------- + + # Main game loop + while (!WindowShouldClose()) # Detect window close button or ESC key + [ + # Update + #---------------------------------------------------------------------------------- + if (IsKeyPressed(KEY_SPACE)) + [ + if (camera.type == CAMERA_PERSPECTIVE) + [ + camera.fovy = WIDTH_ORTHOGRAPHIC + camera.type = CAMERA_ORTHOGRAPHIC + ] + else + [ + camera.fovy = FOVY_PERSPECTIVE + camera.type = CAMERA_PERSPECTIVE + ] + ] + #---------------------------------------------------------------------------------- + + # Draw + #---------------------------------------------------------------------------------- + BeginDrawing() + + ClearBackground(RAYWHITE) + + BeginMode3D(camera) + + DrawCube((Vector3)[-4.0, 0.0, 2.0], 2.0, 5.0, 2.0, RED) + DrawCubeWires((Vector3)[-4.0, 0.0, 2.0], 2.0, 5.0, 2.0, GOLD) + DrawCubeWires((Vector3)[-4.0, 0.0, -2.0], 3.0, 6.0, 2.0, MAROON) + + DrawSphere((Vector3)[-1.0, 0.0, -2.0], 1.0, GREEN) + DrawSphereWires((Vector3)[1.0, 0.0, 2.0], 2.0, 16, 16, LIME) + + DrawCylinder((Vector3)[4.0, 0.0, -2.0], 1.0, 2.0, 3.0, 4, SKYBLUE) + DrawCylinderWires((Vector3)[4.0, 0.0, -2.0], 1.0, 2.0, 3.0, 4, DARKBLUE) + DrawCylinderWires((Vector3)[4.5f, -1.0, 2.0], 1.0, 1.0, 2.0, 6, BROWN) + + DrawCylinder((Vector3)[1.0, 0.0, -4.0], 0.0, 1.5f, 3.0, 8, GOLD) + DrawCylinderWires((Vector3)[1.0, 0.0, -4.0], 0.0, 1.5f, 3.0, 8, PINK) + + DrawGrid(10, 1.0) # Draw a grid + + EndMode3D() + + DrawText("Press Spacebar to switch camera type", 10, GetScreenHeight() - 30, 20, DARKGRAY) + + if (camera.type == CAMERA_ORTHOGRAPHIC) DrawText("ORTHOGRAPHIC", 10, 40, 20, BLACK) + else if (camera.type == CAMERA_PERSPECTIVE) DrawText("PERSPECTIVE", 10, 40, 20, BLACK) + + DrawFPS(10, 10) + + EndDrawing() + #---------------------------------------------------------------------------------- + ] + + # De-Initialization + #-------------------------------------------------------------------------------------- + CloseWindow() # Close window and OpenGL context + #-------------------------------------------------------------------------------------- + + return 0 +] diff --git a/examples/models/models_orthographic_projection.png b/examples/models/models_orthographic_projection.png new file mode 100644 index 0000000..2942eee Binary files /dev/null and b/examples/models/models_orthographic_projection.png differ diff --git a/examples/models/models_skybox.c b/examples/models/models_skybox.c new file mode 100644 index 0000000..17ff9e7 --- /dev/null +++ b/examples/models/models_skybox.c @@ -0,0 +1,90 @@ +/******************************************************************************************* +* +* raylib [models] example - Skybox loading and drawing +* +* This example has been created using raylib 1.8 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2017 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +int main() +[ + # Initialization + #-------------------------------------------------------------------------------------- + int screenWidth = 800 + int screenHeight = 450 + + InitWindow(screenWidth, screenHeight, "raylib [models] example - skybox loading and drawing") + + # Define the camera to look into our 3d world + Camera camera = [[ 1.0, 1.0, 1.0 ], [ 0.0, 0.0, 0.0 ], [ 0.0, 1.0, 0.0 ], 45.0, 0 ] + + # Load skybox model + Mesh cube = GenMeshCube(1.0, 1.0, 1.0) + Model skybox = LoadModelFromMesh(cube) + + # Load skybox shader and set required locations + # NOTE: Some locations are automatically set at shader loading + skybox.material.shader = LoadShader("resources/shaders/skybox.vs", "resources/shaders/skybox.fs") + SetShaderValuei(skybox.material.shader, GetShaderLocation(skybox.material.shader, "environmentMap"), (int[1])[ MAP_CUBEMAP ], 1) + + # Load cubemap shader and setup required shader locations + Shader shdrCubemap = LoadShader("resources/shaders/cubemap.vs", "resources/shaders/cubemap.fs") + SetShaderValuei(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1])[ 0 ], 1) + + # Load HDR panorama (sphere) texture + Texture2D texHDR = LoadTexture("resources/dresden_square.hdr") + + # Generate cubemap (texture with 6 quads-cube-mapping) from panorama HDR texture + # NOTE: New texture is generated rendering to texture, shader computes the sphre->cube coordinates mapping + skybox.material.maps[MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, texHDR, 512) + + UnloadTexture(texHDR) # Texture not required anymore, cubemap already generated + UnloadShader(shdrCubemap) # Unload cubemap generation shader, not required anymore + + SetCameraMode(camera, CAMERA_FIRST_PERSON) # Set a first person camera mode + + SetTargetFPS(60) # Set our game to run at 60 frames-per-second + #-------------------------------------------------------------------------------------- + + # Main game loop + while (!WindowShouldClose()) # Detect window close button or ESC key + [ + # Update + #---------------------------------------------------------------------------------- + UpdateCamera(&camera) # Update camera + #---------------------------------------------------------------------------------- + + # Draw + #---------------------------------------------------------------------------------- + BeginDrawing() + + ClearBackground(RAYWHITE) + + BeginMode3D(camera) + + DrawModel(skybox, (Vector3)[0, 0, 0], 1.0, WHITE) + + DrawGrid(10, 1.0) + + EndMode3D() + + DrawFPS(10, 10) + + EndDrawing() + #---------------------------------------------------------------------------------- + ] + + # De-Initialization + #-------------------------------------------------------------------------------------- + UnloadModel(skybox) # Unload skybox model (and textures) + + CloseWindow() # Close window and OpenGL context + #-------------------------------------------------------------------------------------- + + return 0 +] diff --git a/examples/models/models_skybox.png b/examples/models/models_skybox.png new file mode 100644 index 0000000..feb0f73 Binary files /dev/null and b/examples/models/models_skybox.png differ diff --git a/examples/models/models_skybox_outdated_needs_update.py b/examples/models/models_skybox.py similarity index 74% rename from examples/models/models_skybox_outdated_needs_update.py rename to examples/models/models_skybox.py index 5f193b7..433ffd7 100644 --- a/examples/models/models_skybox_outdated_needs_update.py +++ b/examples/models/models_skybox.py @@ -1,5 +1,4 @@ -#type: ignore -import raylib as rl +from raylib.dynamic import raylib as rl, ffi from raylib.colors import * screenWidth = 1260 @@ -7,7 +6,7 @@ screenHeight = 768 rl.InitWindow(screenWidth, screenHeight, b'Skymap Demo') -camera = rl.ffi.new('struct Camera3D *', [[1, 1, 1], [4, 1, 4], [0, 1, 0], 70, 0]) +camera = ffi.new('struct Camera3D *', [[1, 1, 1], [4, 1, 4], [0, 1, 0], 70, 0]) cube = rl.GenMeshCube(100, 100, 100) skybox = rl.LoadModelFromMesh(cube) @@ -20,8 +19,8 @@ skybox.materials[0].shader = rl.LoadShader( rl.SetShaderValue( skybox.materials[0].shader, rl.GetShaderLocation(skybox.materials[0].shader, b"environmentMap"), - rl.ffi.new('int[]', [rl.MATERIAL_MAP_CUBEMAP]), - rl.RL_SHADER_UNIFORM_INT + ffi.new('int[]', [rl.MAP_CUBEMAP]), + rl.UNIFORM_INT ) shdrCubemap = rl.LoadShader( @@ -32,23 +31,23 @@ shdrCubemap = rl.LoadShader( rl.SetShaderValue( shdrCubemap, rl.GetShaderLocation(shdrCubemap, b'equirectangularMap'), - rl.ffi.new('int[]', [0]), - rl.SHADER_UNIFORM_INT + ffi.new('int[]', [0]), + rl.UNIFORM_INT ) texHDR = rl.LoadTexture(b'resources/dresden_square.hdr') -# THIS FUNCTION NO LONGER EXISTS, will require porting a lot of C code from the C example to replace it -skybox.materials[0].maps[rl.MAP_CUBEMAP].texture = rl.GenTextureCubemap(shdrCubemap, texHDR, 512, rl.UNCOMPRESSED_R32G32B32) - +skybox.materials[0].maps[rl.MAP_CUBEMAP].texture = rl.GenTextureCubemap(shdrCubemap, texHDR, 512); rl.UnloadTexture(texHDR) rl.UnloadShader(shdrCubemap) +rl.SetCameraMode(camera[0], rl.CAMERA_FIRST_PERSON) + rl.SetTargetFPS(60) while not rl.WindowShouldClose(): - rl.UpdateCamera(camera, rl.CAMERA_FIRST_PERSON) + rl.UpdateCamera(camera) rl.BeginDrawing() rl.ClearBackground(RAYWHITE) rl.BeginMode3D(camera[0]) diff --git a/examples/models/models_waving_cubes.py b/examples/models/models_waving_cubes.py deleted file mode 100644 index af14105..0000000 --- a/examples/models/models_waving_cubes.py +++ /dev/null @@ -1,79 +0,0 @@ -from pyray import * -import pyray -import math - -# Program main entry point -# Initialization -screenWidth = 800 -screenHeight = 450 - -init_window(screenWidth, screenHeight, "raylib [models] example - waving cubes") - -# Initialize the camera -camera = Camera3D() -camera.position = Vector3(30.0, 20.0, 30.0) # Camera position -camera.target = Vector3(0.0, 0.0, 0.0) # Camera looking at point -camera.up = Vector3(0.0, 1.0, 0.0) # Camera up vector (rotation towards target) -camera.fovy = 70.0 # Camera field-of-view Y -camera.projection = pyray.CameraProjection.CAMERA_PERSPECTIVE # Camera projection type - -# Specify the amount of blocks in each direction -numBlocks = 15 - -set_target_fps(60) - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - # Update - time = get_time() - - # Calculate time scale for cube position and size - scale = (2.0 + math.sin(time)) * 0.7 - - # Move camera around the scene - cameraTime = time * 0.3 - camera.position.x = math.cos(cameraTime) * 40.0 - camera.position.z = math.sin(cameraTime) * 40.0 - - # Draw - begin_drawing() - - clear_background(RAYWHITE) - - begin_mode_3d(camera) - - draw_grid(10, 5.0) - - for x in range(numBlocks): - for y in range(numBlocks): - for z in range(numBlocks): - # Scale of the blocks depends on x/y/z positions - blockScale = (x + y + z) / 30.0 - - # Scatter makes the waving effect by adding blockScale over time - scatter = math.sin(blockScale * 20.0 + time * 4.0) - - # Calculate the cube position - cubePos = Vector3( - (x - numBlocks / 2) * (scale * 3.0) + scatter, - (y - numBlocks / 2) * (scale * 2.0) + scatter, - (z - numBlocks / 2) * (scale * 3.0) + scatter, - ) - - # Pick a color with a hue depending on cube position for the rainbow color effect - cubeColor = color_from_hsv(((x + y + z) * 18) % 360, 0.75, 0.9) - - # Calculate cube size - cubeSize = (2.4 - scale) * blockScale - - # And finally, draw the cube! - draw_cube(cubePos, cubeSize, cubeSize, cubeSize, cubeColor) - - end_mode_3d() - - draw_fps(10, 10) - - end_drawing() - -# De-Initialization -close_window() # Close window and OpenGL context diff --git a/examples/models/models_yaw_pitch_roll.c b/examples/models/models_yaw_pitch_roll.c new file mode 100644 index 0000000..7e39651 --- /dev/null +++ b/examples/models/models_yaw_pitch_roll.c @@ -0,0 +1,199 @@ +/******************************************************************************************* +* +* raylib [models] example - Plane rotations (yaw, pitch, roll) +* +* This example has been created using raylib 1.8 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Example based on Berni work on Raspberry Pi: +* http:#forum.raylib.com/index.php?p=/discussion/124/line-versus-triangle-drawing-order +* +* Copyright (c) 2017 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" +#include "raymath.h" + +# Draw angle gauge controls +void DrawAngleGauge(Texture2D angleGauge, int x, int y, float angle, char title[], Color color) + +#---------------------------------------------------------------------------------- +# Main entry point +#---------------------------------------------------------------------------------- +int main() +[ + # Initialization + #-------------------------------------------------------------------------------------- + const int screenWidth = 800 + const int screenHeight = 450 + + InitWindow(screenWidth, screenHeight, "raylib [models] example - plane rotations (yaw, pitch, roll)") + + Texture2D texAngleGauge = LoadTexture("resources/angle_gauge.png") + Texture2D texBackground = LoadTexture("resources/background.png") + Texture2D texPitch = LoadTexture("resources/pitch.png") + Texture2D texPlane = LoadTexture("resources/plane.png") + + RenderTexture2D framebuffer = LoadRenderTexture(192, 192) + + # Model loading + Model model = LoadModel("resources/plane.obj") # Load OBJ model + model.material.maps[MAP_DIFFUSE].texture = LoadTexture("resources/plane_diffuse.png") # Set map diffuse texture + + GenTextureMipmaps(&model.material.maps[MAP_DIFFUSE].texture) + + Camera camera = [ 0 ] + camera.position = (Vector3)[ 0.0, 60.0, -120.0 ]# Camera position perspective + camera.target = (Vector3)[ 0.0, 12.0, 0.0 ] # Camera looking at point + camera.up = (Vector3)[ 0.0, 1.0, 0.0 ] # Camera up vector (rotation towards target) + camera.fovy = 30.0 # Camera field-of-view Y + camera.type = CAMERA_PERSPECTIVE # Camera type + + float pitch = 0.0 + float roll = 0.0 + float yaw = 0.0 + + SetTargetFPS(60) + #-------------------------------------------------------------------------------------- + + + while (!WindowShouldClose()) # Detect window close button or ESC key + [ + # Update + #---------------------------------------------------------------------------------- + + # Plane roll (x-axis) controls + if (IsKeyDown(KEY_LEFT)) roll += 1.0 + else if (IsKeyDown(KEY_RIGHT)) roll -= 1.0 + else + [ + if (roll > 0.0) roll -= 0.5f + else if (roll < 0.0) roll += 0.5f + ] + + # Plane yaw (y-axis) controls + if (IsKeyDown(KEY_S)) yaw += 1.0 + else if (IsKeyDown(KEY_A)) yaw -= 1.0 + else + [ + if (yaw > 0.0) yaw -= 0.5f + else if (yaw < 0.0) yaw += 0.5f + ] + + # Plane pitch (z-axis) controls + if (IsKeyDown(KEY_DOWN)) pitch += 0.6f + else if (IsKeyDown(KEY_UP)) pitch -= 0.6f + else + [ + if (pitch > 0.3f) pitch -= 0.3f + else if (pitch < -0.3f) pitch += 0.3f + ] + + # Wraps the phase of an angle to fit between -180 and +180 degrees + int pitchOffset = pitch + while (pitchOffset > 180) pitchOffset -= 360 + while (pitchOffset < -180) pitchOffset += 360 + pitchOffset *= 10 + + Matrix transform = MatrixIdentity() + + transform = MatrixMultiply(transform, MatrixRotateZ(DEG2RAD*roll)) + transform = MatrixMultiply(transform, MatrixRotateX(DEG2RAD*pitch)) + transform = MatrixMultiply(transform, MatrixRotateY(DEG2RAD*yaw)) + + model.transform = transform + #---------------------------------------------------------------------------------- + + # Draw + #---------------------------------------------------------------------------------- + BeginDrawing() + + ClearBackground(RAYWHITE) + + # Draw framebuffer texture (Ahrs Display) + int centerX = framebuffer.texture.width/2 + int centerY = framebuffer.texture.height/2 + float scaleFactor = 0.5f + + BeginTextureMode(framebuffer) + + BeginBlendMode(BLEND_ALPHA) + + DrawTexturePro(texBackground, (Rectangle)[ 0, 0, texBackground.width, texBackground.height ], + (Rectangle)[ centerX, centerY, texBackground.width*scaleFactor, texBackground.height*scaleFactor], + (Vector2)[ texBackground.width/2*scaleFactor, texBackground.height/2*scaleFactor + pitchOffset*scaleFactor ], roll, WHITE) + + DrawTexturePro(texPitch, (Rectangle)[ 0, 0, texPitch.width, texPitch.height ], + (Rectangle)[ centerX, centerY, texPitch.width*scaleFactor, texPitch.height*scaleFactor ], + (Vector2)[ texPitch.width/2*scaleFactor, texPitch.height/2*scaleFactor + pitchOffset*scaleFactor ], roll, WHITE) + + DrawTexturePro(texPlane, (Rectangle)[ 0, 0, texPlane.width, texPlane.height ], + (Rectangle)[ centerX, centerY, texPlane.width*scaleFactor, texPlane.height*scaleFactor ], + (Vector2)[ texPlane.width/2*scaleFactor, texPlane.height/2*scaleFactor ], 0, WHITE) + + EndBlendMode() + + EndTextureMode() + + # Draw 3D model (recomended to draw 3D always before 2D) + BeginMode3D(camera) + + DrawModel(model, (Vector3)[ 0, 6.0, 0 ], 1.0, WHITE) # Draw 3d model with texture + DrawGrid(10, 10.0) + + EndMode3D() + + # Draw 2D GUI stuff + DrawAngleGauge(texAngleGauge, 80, 70, roll, "roll", RED) + DrawAngleGauge(texAngleGauge, 190, 70, pitch, "pitch", GREEN) + DrawAngleGauge(texAngleGauge, 300, 70, yaw, "yaw", SKYBLUE) + + DrawRectangle(30, 360, 260, 70, Fade(SKYBLUE, 0.5f)) + DrawRectangleLines(30, 360, 260, 70, Fade(DARKBLUE, 0.5f)) + DrawText("Pitch controlled with: KEY_UP / KEY_DOWN", 40, 370, 10, DARKGRAY) + DrawText("Roll controlled with: KEY_LEFT / KEY_RIGHT", 40, 390, 10, DARKGRAY) + DrawText("Yaw controlled with: KEY_A / KEY_S", 40, 410, 10, DARKGRAY) + + # Draw framebuffer texture + DrawTextureRec(framebuffer.texture, (Rectangle)[ 0, 0, framebuffer.texture.width, -framebuffer.texture.height ], + (Vector2)[ screenWidth - framebuffer.texture.width - 20, 20 ], Fade(WHITE, 0.8f)) + + DrawRectangleLines(screenWidth - framebuffer.texture.width - 20, 20, framebuffer.texture.width, framebuffer.texture.height, DARKGRAY) + + EndDrawing() + #---------------------------------------------------------------------------------- + ] + + # De-Initialization + #-------------------------------------------------------------------------------------- + + # Unload all loaded data + UnloadModel(model) + + UnloadRenderTexture(framebuffer) + + UnloadTexture(texAngleGauge) + UnloadTexture(texBackground) + UnloadTexture(texPitch) + UnloadTexture(texPlane) + + CloseWindow() # Close window and OpenGL context + #-------------------------------------------------------------------------------------- + + return 0 +] + +# Draw angle gauge controls +void DrawAngleGauge(Texture2D angleGauge, int x, int y, float angle, char title[], Color color) +[ + Rectangle srcRec = [ 0, 0, angleGauge.width, angleGauge.height ] + Rectangle dstRec = [ x, y, angleGauge.width, angleGauge.height ] + Vector2 origin = [ angleGauge.width/2, angleGauge.height/2] + int textSize = 20 + + DrawTexturePro(angleGauge, srcRec, dstRec, origin, angle, color) + + DrawText(FormatText("%5.1f", angle), x - MeasureText(FormatText("%5.1f", angle), textSize) / 2, y + 10, textSize, DARKGRAY) + DrawText(title, x - MeasureText(title, textSize) / 2, y + 60, textSize, DARKGRAY) +] diff --git a/examples/models/models_yaw_pitch_roll.png b/examples/models/models_yaw_pitch_roll.png new file mode 100644 index 0000000..5400304 Binary files /dev/null and b/examples/models/models_yaw_pitch_roll.png differ diff --git a/examples/models/resources/models/iqm/guy.blend b/examples/models/resources/models/iqm/guy.blend deleted file mode 100644 index 3880467..0000000 Binary files a/examples/models/resources/models/iqm/guy.blend and /dev/null differ diff --git a/examples/models/resources/models/iqm/guy.iqm b/examples/models/resources/models/iqm/guy.iqm deleted file mode 100644 index 36bed5e..0000000 Binary files a/examples/models/resources/models/iqm/guy.iqm and /dev/null differ diff --git a/examples/models/resources/models/iqm/guyanim.iqm b/examples/models/resources/models/iqm/guyanim.iqm deleted file mode 100644 index 824a68a..0000000 Binary files a/examples/models/resources/models/iqm/guyanim.iqm and /dev/null differ diff --git a/examples/models/resources/models/iqm/guytex.png b/examples/models/resources/models/iqm/guytex.png deleted file mode 100644 index 05a58ee..0000000 Binary files a/examples/models/resources/models/iqm/guytex.png and /dev/null differ diff --git a/examples/models/resources/models/iqm/vertex_colored_object.iqm b/examples/models/resources/models/iqm/vertex_colored_object.iqm deleted file mode 100644 index ad0db07..0000000 Binary files a/examples/models/resources/models/iqm/vertex_colored_object.iqm and /dev/null differ diff --git a/examples/others/rlgl_standalone.py b/examples/others/rlgl_standalone.py deleted file mode 100644 index 0332b5a..0000000 --- a/examples/others/rlgl_standalone.py +++ /dev/null @@ -1,446 +0,0 @@ -#******************************************************************************************* -# -# raylib [rlgl] example - Using rlgl module as standalone module -# -# rlgl library is an abstraction layer for multiple OpenGL versions (1.1, 2.1, 3.3 Core, ES 2.0) -# that provides a pseudo-OpenGL 1.1 immediate-mode style API (rlVertex, rlTranslate, rlRotate...) -# -# WARNING: This example is intended only for PLATFORM_DESKTOP and OpenGL 3.3 Core profile. -# It could work on other platforms if redesigned for those platforms (out-of-scope) -# -# DEPENDENCIES: -# glfw3 - Windows and context initialization library -# rlgl.h - OpenGL abstraction layer to OpenGL 1.1, 3.3 or ES2 -# glad.h - OpenGL extensions initialization library (required by rlgl) -# raymath.h - 3D math library -# -# WINDOWS COMPILATION: -# gcc -o rlgl_standalone.exe rlgl_standalone.c -s -Iexternal\include -I..\..\src \ -# -L. -Lexternal\lib -lglfw3 -lopengl32 -lgdi32 -Wall -std=c99 -DGRAPHICS_API_OPENGL_33 -# -# APPLE COMPILATION: -# gcc -o rlgl_standalone rlgl_standalone.c -I../../src -Iexternal/include -Lexternal/lib \ -# -lglfw3 -framework CoreVideo -framework OpenGL -framework IOKit -framework Cocoa -# -Wno-deprecated-declarations -std=c99 -DGRAPHICS_API_OPENGL_33 -# -# -# LICENSE: zlib/libpng -# -# This example is licensed under an unmodified zlib/libpng license, which is an OSI-certified, -# BSD-like license that allows static linking with closed source software: -# -# Copyright (c) 2014-2023 Ramon Santamaria (@raysan5) -# -# This software is provided "as-is", without any express or implied warranty. In no event -# will the authors be held liable for any damages arising from the use of this software. -# -# Permission is granted to anyone to use this software for any purpose, including commercial -# applications, and to alter it and redistribute it freely, subject to the following restrictions: -# -# 1. The origin of this software must not be misrepresented you must not claim that you -# wrote the original software. If you use this software in a product, an acknowledgment -# in the product documentation would be appreciated but is not required. -# -# 2. Altered source versions must be plainly marked as such, and must not be misrepresented -# as being the original software. -# -# 3. This notice may not be removed or altered from any source distribution. -# -#*******************************************************************************************/ - -# NOTE: rlgl can be configured just re-defining the following values: -# define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 8192 # Default internal render batch elements limits -# define RL_DEFAULT_BATCH_BUFFERS 1 # Default number of batch buffers (multi-buffering) -# define RL_DEFAULT_BATCH_DRAWCALLS 256 # Default number of batch draw calls (by state changes: mode, texture) -# define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 # Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture()) -# define RL_MAX_MATRIX_STACK_SIZE 32 # Maximum size of internal Matrix stack -# define RL_MAX_SHADER_LOCATIONS 32 # Maximum number of shader locations supported -# define RL_CULL_DISTANCE_NEAR 0.01 # Default projection matrix near cull distance -# define RL_CULL_DISTANCE_FAR 1000.0 # Default projection matrix far cull distance - -import sys -import dataclasses -import pyray -from raylib import ffi, rl -from raylib.defines import ( - GLFW_TRUE, - GLFW_SAMPLES, GLFW_DEPTH_BITS, GLFW_CONTEXT_VERSION_MAJOR, GLFW_CONTEXT_VERSION_MINOR, GLFW_OPENGL_PROFILE, - GLFW_OPENGL_CORE_PROFILE, GLFW_OPENGL_FORWARD_COMPAT, RL_PROJECTION, RL_MODELVIEW, DEG2RAD, RL_LINES, RL_TRIANGLES, - GLFW_KEY_ESCAPE, GLFW_PRESS, -) -from raylib.colors import ( - RAYWHITE, - RED, - DARKGRAY -) - -#---------------------------------------------------------------------------------- -# Structures Definition -#---------------------------------------------------------------------------------- -# Color, 4 components, R8G8B8A8 (32bit) -@dataclasses.dataclass -class Color: - r: int - g: int - b: int - a: int - - -# Camera type, defines a camera position/orientation in 3d space -@dataclasses.dataclass -class Camera: - position: pyray.Vector3 # Camera position - target: pyray.Vector3 # Camera target it looks-at - up: pyray.Vector3 # Camera up vector (rotation over its axis) - fovy: float # Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic - projection: int # Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC - - -#---------------------------------------------------------------------------------- -# Module specific Functions Declaration -#---------------------------------------------------------------------------------- -# static void ErrorCallback(int error, const char *description) -# static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, int mods) - -# Drawing functions (uses rlgl functionality) -# static void DrawGrid(int slices, float spacing) -# static void DrawCube(Vector3 position, float width, float height, float length, Color color) -# static void DrawCubeWires(Vector3 position, float width, float height, float length, Color color) -# static void DrawRectangleV(Vector2 position, Vector2 size, Color color) - -# NOTE: We use raymath to get this functionality but it could be implemented in this module -#static Matrix MatrixIdentity(void) -#static Matrix MatrixOrtho(double left, double right, double bottom, double top, double near, double far) -#static Matrix MatrixPerspective(double fovy, double aspect, double near, double far) -#static Matrix MatrixLookAt(Vector3 eye, Vector3 target, Vector3 up) - - -# GLFW3: Error callback -@ffi.callback("void(int, const char *)") -def ErrorCallback(error: int, description: bytes): - print("%r" % description, file=sys.stderr) - - -# GLFW3: Keyboard callback -@ffi.callback("void(GLFWwindow *, int, int, int, int)") -def KeyCallback(window, key: int, scancode: int, action: int, mods: int): - if key == GLFW_KEY_ESCAPE and action == GLFW_PRESS: - rl.glfwSetWindowShouldClose(window, GLFW_TRUE) - - -# Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) -def DrawRectangleV(position, size, color: Color): - rl.rlBegin(RL_TRIANGLES) - rl.rlColor4ub(color.r, color.g, color.b, color.a) - rl.rlVertex2f(position.x, position.y) - rl.rlVertex2f(position.x, position.y + size.y) - rl.rlVertex2f(position.x + size.x, position.y + size.y) - rl.rlVertex2f(position.x, position.y) - rl.rlVertex2f(position.x + size.x, position.y + size.y) - rl.rlVertex2f(position.x + size.x, position.y) - rl.rlEnd() - - -# Draw a grid centered at (0, 0, 0) -def DrawGrid(slices: int, spacing: float): - half_slices = slices // 2 - - rl.rlBegin(RL_LINES) - for i in range(half_slices * -1, half_slices+1): - if i == 0: - rl.rlColor3f(0.5, 0.5, 0.5) - rl.rlColor3f(0.5, 0.5, 0.5) - rl.rlColor3f(0.5, 0.5, 0.5) - rl.rlColor3f(0.5, 0.5, 0.5) - else: - rl.rlColor3f(0.75, 0.75, 0.75) - rl.rlColor3f(0.75, 0.75, 0.75) - rl.rlColor3f(0.75, 0.75, 0.75) - rl.rlColor3f(0.75, 0.75, 0.75) - - rl.rlVertex3f(float(i)*spacing, 0.0, float(half_slices)*-1.0*spacing) - rl.rlVertex3f(float(i)*spacing, 0.0, float(half_slices)*spacing) - - rl.rlVertex3f(float(half_slices)*-1.0*spacing, 0.0, float(i)*spacing) - rl.rlVertex3f(float(half_slices)*spacing, 0.0, float(i)*spacing) - rl.rlEnd() - - -# Draw cube -# NOTE: Cube position is the center position -def DrawCube(position, width: float, height: float, length: float, color: Color): - x: float = 0.0 - y: float = 0.0 - z: float = 0.0 - - rl.rlPushMatrix() - - - # NOTE: Be careful! Function order matters (rotate -> scale -> translate) - rl.rlTranslatef(position.x, position.y, position.z) - #rlScalef(2.0f, 2.0f, 2.0f) - #rlRotatef(45, 0, 1, 0) - - rl.rlBegin(RL_TRIANGLES) - rl.rlColor4ub(color.r, color.g, color.b, color.a) - - # Front Face ----------------------------------------------------- - rl.rlVertex3f(x-width/2, y-height/2, z+length/2) # Bottom Left - rl.rlVertex3f(x+width/2, y-height/2, z+length/2) # Bottom Right - rl.rlVertex3f(x-width/2, y+height/2, z+length/2) # Top Left - - rl.rlVertex3f(x+width/2, y+height/2, z+length/2) # Top Right - rl.rlVertex3f(x-width/2, y+height/2, z+length/2) # Top Left - rl.rlVertex3f(x+width/2, y-height/2, z+length/2) # Bottom Right - - # Back Face ------------------------------------------------------ - rl.rlVertex3f(x-width/2, y-height/2, z-length/2) # Bottom Left - rl.rlVertex3f(x-width/2, y+height/2, z-length/2) # Top Left - rl.rlVertex3f(x+width/2, y-height/2, z-length/2) # Bottom Right - - rl.rlVertex3f(x+width/2, y+height/2, z-length/2) # Top Right - rl.rlVertex3f(x+width/2, y-height/2, z-length/2) # Bottom Right - rl.rlVertex3f(x-width/2, y+height/2, z-length/2) # Top Left - - # Top Face ------------------------------------------------------- - rl.rlVertex3f(x-width/2, y+height/2, z-length/2) # Top Left - rl.rlVertex3f(x-width/2, y+height/2, z+length/2) # Bottom Left - rl.rlVertex3f(x+width/2, y+height/2, z+length/2) # Bottom Right - - rl.rlVertex3f(x+width/2, y+height/2, z-length/2) # Top Right - rl.rlVertex3f(x-width/2, y+height/2, z-length/2) # Top Left - rl.rlVertex3f(x+width/2, y+height/2, z+length/2) # Bottom Right - - # Bottom Face ---------------------------------------------------- - rl.rlVertex3f(x-width/2, y-height/2, z-length/2) # Top Left - rl.rlVertex3f(x+width/2, y-height/2, z+length/2) # Bottom Right - rl.rlVertex3f(x-width/2, y-height/2, z+length/2) # Bottom Left - - rl.rlVertex3f(x+width/2, y-height/2, z-length/2) # Top Right - rl.rlVertex3f(x+width/2, y-height/2, z+length/2) # Bottom Right - rl.rlVertex3f(x-width/2, y-height/2, z-length/2) # Top Left - - # Right face ----------------------------------------------------- - rl.rlVertex3f(x+width/2, y-height/2, z-length/2) # Bottom Right - rl.rlVertex3f(x+width/2, y+height/2, z-length/2) # Top Right - rl.rlVertex3f(x+width/2, y+height/2, z+length/2) # Top Left - - rl.rlVertex3f(x+width/2, y-height/2, z+length/2) # Bottom Left - rl.rlVertex3f(x+width/2, y-height/2, z-length/2) # Bottom Right - rl.rlVertex3f(x+width/2, y+height/2, z+length/2) # Top Left - - # Left Face ------------------------------------------------------ - rl.rlVertex3f(x-width/2, y-height/2, z-length/2) # Bottom Right - rl.rlVertex3f(x-width/2, y+height/2, z+length/2) # Top Left - rl.rlVertex3f(x-width/2, y+height/2, z-length/2) # Top Right - - rl.rlVertex3f(x-width/2, y-height/2, z+length/2) # Bottom Left - rl.rlVertex3f(x-width/2, y+height/2, z+length/2) # Top Left - rl.rlVertex3f(x-width/2, y-height/2, z-length/2) # Bottom Right - rl.rlEnd() - rl.rlPopMatrix() - - -#Draw cube wires -def DrawCubeWires(position, width: float, height: float, length: float, color: Color): - x: float = 0.0 - y: float = 0.0 - z: float = 0.0 - - rl.rlPushMatrix() - - rl.rlTranslatef(position.x, position.y, position.z) - #rlRotatef(45, 0, 1, 0) - - rl.rlBegin(RL_LINES) - rl.rlColor4ub(color.r, color.g, color.b, color.a) - - # Front Face ----------------------------------------------------- - # Bottom Line - rl.rlVertex3f(x-width/2, y-height/2, z+length/2) # Bottom Left - rl.rlVertex3f(x+width/2, y-height/2, z+length/2) # Bottom Right - - # Left Line - rl.rlVertex3f(x+width/2, y-height/2, z+length/2) # Bottom Right - rl.rlVertex3f(x+width/2, y+height/2, z+length/2) # Top Right - - # Top Line - rl.rlVertex3f(x+width/2, y+height/2, z+length/2) # Top Right - rl.rlVertex3f(x-width/2, y+height/2, z+length/2) # Top Left - - # Right Line - rl.rlVertex3f(x-width/2, y+height/2, z+length/2) # Top Left - rl.rlVertex3f(x-width/2, y-height/2, z+length/2) # Bottom Left - - # Back Face ------------------------------------------------------ - # Bottom Line - rl.rlVertex3f(x-width/2, y-height/2, z-length/2) # Bottom Left - rl.rlVertex3f(x+width/2, y-height/2, z-length/2) # Bottom Right - - # Left Line - rl.rlVertex3f(x+width/2, y-height/2, z-length/2) # Bottom Right - rl.rlVertex3f(x+width/2, y+height/2, z-length/2) # Top Right - - # Top Line - rl.rlVertex3f(x+width/2, y+height/2, z-length/2) # Top Right - rl.rlVertex3f(x-width/2, y+height/2, z-length/2) # Top Left - - # Right Line - rl.rlVertex3f(x-width/2, y+height/2, z-length/2) # Top Left - rl.rlVertex3f(x-width/2, y-height/2, z-length/2) # Bottom Left - - # Top Face ------------------------------------------------------- - # Left Line - rl.rlVertex3f(x-width/2, y+height/2, z+length/2) # Top Left Front - rl.rlVertex3f(x-width/2, y+height/2, z-length/2) # Top Left Back - - # Right Line - rl.rlVertex3f(x+width/2, y+height/2, z+length/2) # Top Right Front - rl.rlVertex3f(x+width/2, y+height/2, z-length/2) # Top Right Back - - # Bottom Face --------------------------------------------------- - # Left Line - rl.rlVertex3f(x-width/2, y-height/2, z+length/2) # Top Left Front - rl.rlVertex3f(x-width/2, y-height/2, z-length/2) # Top Left Back - - # Right Line - rl.rlVertex3f(x+width/2, y-height/2, z+length/2) # Top Right Front - rl.rlVertex3f(x+width/2, y-height/2, z-length/2) # Top Right Back - rl.rlEnd() - rl.rlPopMatrix() - - - -# Initialization -#-------------------------------------------------------------------------------------- -screenWidth: int = 800 -screenHeight: int = 450 - -# GLFW3 Initialization + OpenGL 3.3 Context + Extensions -#-------------------------------------------------------- -rl.glfwSetErrorCallback(ErrorCallback) - -if not rl.glfwInit(): - print("GLFW3: Can not initialize GLFW") - exit(1) - -print("GLFW3: GLFW initialized successfully") - -rl.glfwWindowHint(GLFW_SAMPLES, 4) -rl.glfwWindowHint(GLFW_DEPTH_BITS, 16) - -# WARNING: OpenGL 3.3 Core profile only -rl.glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3) -rl.glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3) -rl.glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE) -#glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE) -#if defined(__APPLE__) -rl.glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE) -#endif - -window = rl.glfwCreateWindow(screenWidth, screenHeight, b"rlgl standalone", ffi.NULL, ffi.NULL) - -if not window: - print("Cannot create GLFW3 Window.") - rl.glfwTerminate() - exit(2) - -print("GLFW3: Window created successfully") - -rl.glfwSetWindowPos(window, 200, 200) - -rl.glfwSetKeyCallback(window, KeyCallback) - -rl.glfwMakeContextCurrent(window) -rl.glfwSwapInterval(0) - -# Load OpenGL 3.3 supported extensions -rl.rlLoadExtensions(ffi.addressof(rl, 'glfwGetProcAddress')) -#-------------------------------------------------------- - -# Initialize OpenGL context (states and resources) -rl.rlglInit(screenWidth, screenHeight) - -# Initialize viewport and internal projection/modelview matrices -rl.rlViewport(0, 0, screenWidth, screenHeight) -rl.rlMatrixMode(RL_PROJECTION) # Switch to PROJECTION matrix -rl.rlLoadIdentity() # Reset current matrix (PROJECTION) -rl.rlOrtho(0, screenWidth, screenHeight, 0, 0.0, 1.0) # Orthographic projection with top-left corner at (0,0) -rl.rlMatrixMode(RL_MODELVIEW) # Switch back to MODELVIEW matrix -rl.rlLoadIdentity() # Reset current matrix (MODELVIEW) - -rl.rlClearColor(245, 245, 245, 255) # Define clear color -rl.rlEnableDepthTest() # Enable DEPTH_TEST for 3D - -camera = Camera( - position = pyray.Vector3(5.0, 5.0, 5.0), # Camera position - target = pyray.Vector3(0.0, 0.0, 0.0), # Camera looking at point - up = pyray.Vector3(0.0, 1.0, 0.0), # Camera up vector (rotation towards target) - fovy = 45.0, # Camera field-of-view Y - projection=rl.CAMERA_PERSPECTIVE) - -cubePosition = pyray.Vector3(0.0, 0.0, 0.0) # Cube default position (center) -#-------------------------------------------------------------------------------------- - -RLGL_SET_MATRIX_MANUALLY = True - -# Main game loop -while not rl.glfwWindowShouldClose(window): - # Update - #---------------------------------------------------------------------------------- - #camera.position.x += 0.01f - #---------------------------------------------------------------------------------- - - # Draw - #---------------------------------------------------------------------------------- - rl.rlClearScreenBuffers() # Clear current framebuffer - - # Draw '3D' elements in the scene - #----------------------------------------------- - # Calculate projection matrix (from perspective) and view matrix from camera look at - matProj = rl.MatrixPerspective(camera.fovy*DEG2RAD, float(screenWidth)/float(screenHeight), 0.01, 1000.0) - matView = rl.MatrixLookAt(camera.position, camera.target, camera.up) - - rl.rlSetMatrixModelview(matView) # Set internal modelview matrix (default shader) - rl.rlSetMatrixProjection(matProj) # Set internal projection matrix (default shader) - - DrawCube(cubePosition, 2.0, 2.0, 2.0, Color(*RED)) - DrawCubeWires(cubePosition, 2.0, 2.0, 2.0, Color(*RAYWHITE)) - DrawGrid(10, 1.0) - - # Draw internal render batch buffers (3D data) - rl.rlDrawRenderBatchActive() - #----------------------------------------------- - - # Draw '2D' elements in the scene (GUI) - #----------------------------------------------- - - if RLGL_SET_MATRIX_MANUALLY: - matProj = rl.MatrixOrtho(0.0, screenWidth, screenHeight, 0.0, 0.0, 1.0) - matView = rl.MatrixIdentity() - rl.rlSetMatrixModelview(matView) # Set internal modelview matrix (default shader) - rl.rlSetMatrixProjection(matProj) # Set internal projection matrix (default shader) - else: # Let rlgl generate and multiply matrix internally - rl.rlMatrixMode(RL_PROJECTION) # Enable internal projection matrix - rl.rlLoadIdentity() # Reset internal projection matrix - rl.rlOrtho(0.0, screenWidth, screenHeight, 0.0, 0.0, 1.0) # Recalculate internal projection matrix - rl.rlMatrixMode(RL_MODELVIEW) # Enable internal modelview matrix - rl.rlLoadIdentity() # Reset internal modelview matrix - - DrawRectangleV(pyray.Vector2(10.0, 10.0), pyray.Vector2(780.0, 20.0), Color(*DARKGRAY)) - - # Draw internal render batch buffers (2D data) - rl.rlDrawRenderBatchActive() - #----------------------------------------------- - - rl.glfwSwapBuffers(window) - rl.glfwPollEvents() - #---------------------------------------------------------------------------------- - -# De-Initialization -#-------------------------------------------------------------------------------------- -rl.rlglClose() # Unload rlgl internal buffers and default shader/texture - -rl.glfwDestroyWindow(window) # Close window -rl.glfwTerminate() # Free GLFW3 resources -#-------------------------------------------------------------------------------------- diff --git a/examples/physics/physac.py b/examples/physics/physac.py deleted file mode 100644 index 1556f34..0000000 --- a/examples/physics/physac.py +++ /dev/null @@ -1,88 +0,0 @@ -""" -raylib [physac] example - physics demo -""" - - -from raylib import * - - -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -SetConfigFlags(FLAG_MSAA_4X_HINT) -InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, b'[physac] Basic demo') - -InitPhysics() - -floor = CreatePhysicsBodyRectangle((SCREEN_WIDTH/2, SCREEN_HEIGHT), 500, 100, 10) -floor.enabled = False - -circle = CreatePhysicsBodyCircle((SCREEN_WIDTH/2, SCREEN_HEIGHT/2), 45, 10) -circle.enabled = False - -SetTargetFPS(60) - -while not WindowShouldClose(): - # Update - # ---------------------------------------------------------------------- - - if IsKeyPressed(KEY_R): # Reset physics system - ClosePhysics() - InitPhysics() - - floor = CreatePhysicsBodyRectangle((SCREEN_WIDTH/2, SCREEN_HEIGHT), 500, 100, 10) - floor.enabled = False - - circle = CreatePhysicsBodyCircle((SCREEN_WIDTH/2, SCREEN_HEIGHT/2), 45, 10) - circle.enabled = False - - # Physics body creation inputs - if IsMouseButtonPressed(MOUSE_BUTTON_LEFT): - CreatePhysicsBodyPolygon(GetMousePosition(), GetRandomValue(20, 80), GetRandomValue(3, 8), 10) - elif IsMouseButtonPressed(MOUSE_BUTTON_RIGHT): - CreatePhysicsBodyCircle(GetMousePosition(), GetRandomValue(10, 45), 10) - - # Destroy falling physics bodies - bodies_count = GetPhysicsBodiesCount() - for i in reversed(range(bodies_count)): - body = GetPhysicsBody(i) - - if body and body.position.y > SCREEN_HEIGHT * 2: - DestroyPhysicsBody(body) - # ---------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------- - BeginDrawing() - - ClearBackground(BLACK) - DrawFPS(SCREEN_WIDTH - 90, SCREEN_HEIGHT - 30) - - # Draw created physics bodies - bodies_count = GetPhysicsBodiesCount() - for i in range(bodies_count): - body = GetPhysicsBody(i) - - if body: - vertex_count = GetPhysicsShapeVerticesCount(i) - for j in range(vertex_count): - # Get physics bodies shape vertices to draw lines - # Note: GetPhysicsShapeVertex() already calculates rotation transformations - vertexA = GetPhysicsShapeVertex(body, j) - - # Get next vertex or first to close the shape - jj = (j + 1) if (j+1) < vertex_count else 0 - vertexB = GetPhysicsShapeVertex(body, jj) - - # Draw a line between two vertex positions - DrawLineV(vertexA, vertexB, GREEN) - - DrawText(b'Left mouse button to create a polygon', 10, 10, 10, WHITE) - DrawText(b'Right mouse button to create a circle', 10, 25, 10, WHITE) - DrawText(b"Press 'R' to reset example", 10, 40, 10, WHITE) - - EndDrawing() - # ---------------------------------------------------------------------- - -ClosePhysics() -CloseWindow() diff --git a/examples/shaders/fog.py b/examples/shaders/fog.py new file mode 100644 index 0000000..3cc18b1 --- /dev/null +++ b/examples/shaders/fog.py @@ -0,0 +1,94 @@ +""" +Example converted to Python from: +http://bedroomcoders.co.uk/raylib-fog/ +""" + +from raylib.dynamic import raylib as rl, ffi +from raylib.colors import * + +rl.SetConfigFlags(rl.FLAG_MSAA_4X_HINT | rl.FLAG_WINDOW_RESIZABLE) +rl.InitWindow(1280, 768, b'Fog Test') + +camera = ffi.new('struct Camera3D *', [ + [2, 2, 6], + [0, 5, 0], + [0, 1, 0], + 45, + rl.CAMERA_PERSPECTIVE +]) + +model = rl.LoadModelFromMesh(rl.GenMeshTorus(0.4, 1, 16, 32)) +model2 = rl.LoadModelFromMesh(rl.GenMeshCube(1, 1, 1)) +model3 = rl.LoadModelFromMesh(rl.GenMeshSphere(0.5, 32, 32)) + +texture = rl.LoadTexture(b'resources/test.png') + +model.materials[0].maps[rl.MAP_DIFFUSE].texture = texture +model2.materials[0].maps[rl.MAP_DIFFUSE].texture = texture +model3.materials[0].maps[rl.MAP_DIFFUSE].texture = texture + +shader = rl.LoadShader(b'resources/shaders/fogLight.vs', b'resources/shaders/fogLight.fs') +shader.locs[rl.LOC_MATRIX_MODEL] = rl.GetShaderLocation(shader, b'matModel') +shader.locs[rl.LOC_VECTOR_VIEW] = rl.GetShaderLocation(shader, b'viewPos') + +amb = rl.GetShaderLocation(shader, b'ambient') +rl.SetShaderValue(shader, amb, ffi.new('float[]', [0.2, 0.2, 0.2, 1.0]), rl.UNIFORM_VEC4) + +fog_color = [0.2, 0.2, 1.0, 1.0] +fogC = rl.GetShaderLocation(shader, b'fogColor') +rl.SetShaderValue(shader, fogC, ffi.new('float[]', fog_color), rl.UNIFORM_VEC4) + +fogD = rl.GetShaderLocation(shader, b'FogDensity') +fogDensity = 0.12 +rl.SetShaderValue(shader, fogD, ffi.new('float[]', [fogDensity]), rl.UNIFORM_FLOAT) + + +model.materials[0].shader = shader +model2.materials[0].shader = shader +model3.materials[0].shader = shader + +rl.SetCameraMode(camera[0], rl.CAMERA_ORBITAL) +rl.SetTargetFPS(60) + +while not rl.WindowShouldClose(): + rl.UpdateCamera(camera) + + if rl.IsKeyDown(rl.KEY_UP): + fogDensity = min(fogDensity + 0.001, 1) + + if rl.IsKeyDown(rl.KEY_DOWN): + fogDensity = max(fogDensity - 0.001, 0) + + rl.SetShaderValue(shader, fogD, ffi.new('float[]', [fogDensity]), rl.UNIFORM_FLOAT) + + rl.SetShaderValue(shader, shader.locs[rl.LOC_VECTOR_VIEW], ffi.new('float[]', [camera.position.x]), rl.UNIFORM_VEC3) + + rl.BeginDrawing() + + rl.ClearBackground([int(255 * i) for i in fog_color]) + + rl.BeginMode3D(camera[0]) + rl.DrawModel(model, [0] * 3, 1, WHITE) + rl.DrawModel(model2, [-2.6, 0, 0], 1, WHITE) + rl.DrawModel(model3, [ 2.6, 0, 0], 1, WHITE) + + for i in range(-20, 20, 2): + rl.DrawModel(model, [i, 0, 2], 1, WHITE) + + + rl.DrawGizmo([1000, 1000, 1000]) + + rl.EndMode3D() + + rl.DrawFPS(10, 10) + rl.DrawText(f'Up/Down to change fog density: {fogDensity}'.encode('utf-8'), 10, 30, 20, WHITE) + + rl.EndDrawing() + + +rl.CloseWindow() +rl.UnloadModel(model) +rl.UnloadModel(model2) +rl.UnloadModel(model3) +rl.UnloadTexture(texture) +rl.UnloadShader(shader) diff --git a/examples/shaders/light_system.py b/examples/shaders/light_system.py deleted file mode 100644 index f07e483..0000000 --- a/examples/shaders/light_system.py +++ /dev/null @@ -1,99 +0,0 @@ -import raylib as rl - - -class LightSystem: - MAX_LIGHTS = 4 #// Max dynamic lights supported by shader - lightsCount = 0 - lights: list['Light'] = [] - - def __init__(self, ambient = [ 0.2, 0.2, 0.2, 1.0 ], *ls): - self.shader = rl.LoadShader(b"resources/shaders/fogLight.vs", - b"resources/shaders/fogLight.fs"); - - #// Get some shader loactions - self.shader.locs[rl.SHADER_LOC_MATRIX_MODEL] = rl.GetShaderLocation(self.shader, b"matModel") - self.shader.locs[rl.SHADER_LOC_VECTOR_VIEW] = rl.GetShaderLocation(self.shader, b"viewPos") - - #// ambient light level - self.ambientLoc = rl.GetShaderLocation(self.shader, b"ambient") - v = rl.ffi.new("struct Vector4 *", ambient) - rl.SetShaderValue(self.shader, self.ambientLoc, v, rl.SHADER_UNIFORM_VEC4) - - for light in ls: - self.add(light) - - def add(self, light): - light.configure(len(self.lights), self.shader) - self.lights.append(light) - if len(self.lights) > self.MAX_LIGHTS: - raise Exception("Too many lights") - - def update(self, cameraPos): - rl.SetShaderValue(self.shader, self.shader.locs[rl.SHADER_LOC_VECTOR_VIEW], rl.ffi.new("struct Vector3 *",cameraPos), rl.SHADER_UNIFORM_VEC3) - for light in self.lights: - light.UpdateLightValues() - - def draw(self): - for light in self.lights: - if light.enabled: - rl.DrawSphereEx(light.position[0], 0.2, 8, 8, light.color) - - - - -LIGHT_DIRECTIONAL=0 -LIGHT_POINT=1 - - -class Light: - def __init__(self, type, position, target, color): - self.enabled = True - self.type = type - self.position = rl.ffi.new("struct Vector3 *",position) - self.target = target - self.color = color - - - - - def configure(self, id, shader): - self.shader = shader - #// TODO: Below code doesn't look good to me, - #// it assumes a specific shader naming and structure - #// Probably this implementation could be improved - self.enabledName = f"lights[{id}].enabled" - self.typeName = f"lights[{id}].type" - self.posName = f"lights[{id}].position" - self.targetName = f"lights[{id}].target" - self.colorName = f"lights[{id}].color" - - self.enabledLoc = rl.GetShaderLocation(shader, self.enabledName.encode('utf-8')) - self.typeLoc = rl.GetShaderLocation(shader, self.typeName.encode('utf-8')) - self.posLoc = rl.GetShaderLocation(shader, self.posName.encode('utf-8')) - self.targetLoc = rl.GetShaderLocation(shader, self.targetName.encode('utf-8')) - self.colorLoc = rl.GetShaderLocation(shader, self.colorName.encode('utf-8')) - - self.UpdateLightValues() - - - #// Send light properties to shader - #// NOTE: Light shader locations should be available - def UpdateLightValues(self): - #// Send to shader light enabled state and type - rl.SetShaderValue(self.shader, self.enabledLoc, rl.ffi.new("int *",self.enabled), rl.SHADER_UNIFORM_INT) - rl.SetShaderValue(self.shader, self.typeLoc, rl.ffi.new("int *",self.type), rl.SHADER_UNIFORM_INT) - - #// Send to shader light position values - position = [ self.position.x, self.position.y, self.position.z] - rl.SetShaderValue(self.shader, self.posLoc, rl.ffi.new("struct Vector3 *",position), rl.SHADER_UNIFORM_VEC3) - - #// Send to shader light target position values - target =[ self.target.x, self.target.y, self.target.z ] - rl.SetShaderValue(self.shader, self.targetLoc, rl.ffi.new("struct Vector3 *",target), rl.SHADER_UNIFORM_VEC3) - - #// Send to shader light color values - color = [self.color[0]/255.0, self.color[1]/255.0, self.color[2]/255.0, self.color[3]/255.0] - rl.SetShaderValue(self.shader, self.colorLoc, rl.ffi.new("struct Vector4 *",color), rl.SHADER_UNIFORM_VEC4) - - - diff --git a/examples/shaders/resources/shaders/fogLight.fs b/examples/shaders/resources/shaders/fogLight.fs index 3841329..652143c 100644 --- a/examples/shaders/resources/shaders/fogLight.fs +++ b/examples/shaders/resources/shaders/fogLight.fs @@ -78,7 +78,6 @@ void main() // gamma finalColor = pow(finalColor, vec4(1.0/2.2)); - float dist = length(viewPos - fragPosition) ; float fogFactor = 1.0 / exp( (dist * FogDensity) * (dist * FogDensity)); @@ -89,5 +88,4 @@ void main() fogFactor = clamp( fogFactor, 0.0, 1.0 ); finalColor = mix(fogColor, finalColor, fogFactor); - } diff --git a/examples/shaders/resources/shaders/glsl330/write_depth.fs b/examples/shaders/resources/shaders/glsl330/write_depth.fs deleted file mode 100644 index f0e07be..0000000 --- a/examples/shaders/resources/shaders/glsl330/write_depth.fs +++ /dev/null @@ -1,20 +0,0 @@ -#version 330 - -// Input vertex attributes (from vertex shader) -in vec2 fragTexCoord; -in vec4 fragColor; - -// Input uniform values -uniform sampler2D texture0; -uniform vec4 colDiffuse; - -// Output fragment color -out vec4 finalColor; - -void main() -{ - vec4 texelColor = texture(texture0, fragTexCoord); - - finalColor = texelColor*colDiffuse*fragColor; - gl_FragDepth = 1.0 - finalColor.z; -} diff --git a/examples/shaders/rlmath.py b/examples/shaders/rlmath.py deleted file mode 100644 index f10ca65..0000000 --- a/examples/shaders/rlmath.py +++ /dev/null @@ -1,96 +0,0 @@ -# just a few functions from raymath - -import raylib as rl -import math - - -PI = 3.14159265358979323846 -DEG2RAD = (PI/180.0) -RAD2DEG = (180.0/PI) - -def Clamp(value: float, minv: float, maxv: float): - #res = value < minv ? minv : value - res = minv if value < minv else value - #return res > maxv ? maxv : res - return maxv if res > maxv else res - -def Lerp(start: float, end: float, amount: float): - return start + amount*(end - start) - - -def Vector2Zero(): - return ffi.new("struct Vector2 *",[ 0, 0]) - - -def Vector3Zero(): - return rl.ffi.new("struct Vector3 *",[ 0, 0, 0]) - -def MatrixRotateX(angle): - result = MatrixIdentity(); - - cosres = math.cos(angle); - sinres = math.sin(angle); - - result.m5 = cosres; - result.m6 = -sinres; - result.m9 = sinres; - result.m10 = cosres; - - return result; - - - -def MatrixRotateY(angle): - result = MatrixIdentity() - - cosres = math.cos(angle); - sinres = math.sin(angle); - - result.m0 = cosres; - result.m2 = sinres; - result.m8 = -sinres; - result.m10 = cosres; - - return result; - - -def MatrixIdentity(): - result = rl.ffi.new("struct Matrix *",[ 1.0, 0.0, 0.0, 0.0,0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ]) - return result - - - -def MatrixRotateZ(angle): - result = MatrixIdentity(); - - cosres = math.cos(angle); - sinres = math.sin(angle); - - result.m0 = cosres; - result.m1 = -sinres; - result.m4 = sinres; - result.m5 = cosres; - - return result - - -def MatrixMultiply(left, right): - result = rl.ffi.new("struct Matrix *") - result.m0 = left.m0*right.m0 + left.m1*right.m4 + left.m2*right.m8 + left.m3*right.m12; - result.m1 = left.m0*right.m1 + left.m1*right.m5 + left.m2*right.m9 + left.m3*right.m13; - result.m2 = left.m0*right.m2 + left.m1*right.m6 + left.m2*right.m10 + left.m3*right.m14; - result.m3 = left.m0*right.m3 + left.m1*right.m7 + left.m2*right.m11 + left.m3*right.m15; - result.m4 = left.m4*right.m0 + left.m5*right.m4 + left.m6*right.m8 + left.m7*right.m12; - result.m5 = left.m4*right.m1 + left.m5*right.m5 + left.m6*right.m9 + left.m7*right.m13; - result.m6 = left.m4*right.m2 + left.m5*right.m6 + left.m6*right.m10 + left.m7*right.m14; - result.m7 = left.m4*right.m3 + left.m5*right.m7 + left.m6*right.m11 + left.m7*right.m15; - result.m8 = left.m8*right.m0 + left.m9*right.m4 + left.m10*right.m8 + left.m11*right.m12; - result.m9 = left.m8*right.m1 + left.m9*right.m5 + left.m10*right.m9 + left.m11*right.m13; - result.m10 = left.m8*right.m2 + left.m9*right.m6 + left.m10*right.m10 + left.m11*right.m14; - result.m11 = left.m8*right.m3 + left.m9*right.m7 + left.m10*right.m11 + left.m11*right.m15; - result.m12 = left.m12*right.m0 + left.m13*right.m4 + left.m14*right.m8 + left.m15*right.m12; - result.m13 = left.m12*right.m1 + left.m13*right.m5 + left.m14*right.m9 + left.m15*right.m13; - result.m14 = left.m12*right.m2 + left.m13*right.m6 + left.m14*right.m10 + left.m15*right.m14; - result.m15 = left.m12*right.m3 + left.m13*right.m7 + left.m14*right.m11 + left.m15*right.m15; - - return result diff --git a/examples/shaders/shaders_basic_lighting.py b/examples/shaders/shaders_basic_lighting.py old mode 100755 new mode 100644 index 101c345..7bcffcd --- a/examples/shaders/shaders_basic_lighting.py +++ b/examples/shaders/shaders_basic_lighting.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 # /******************************************************************************************* # * # * raylib [shaders] example - basic lighting @@ -24,151 +23,323 @@ # * # * Copyright (c) 2019 Chris Camacho (@codifies) and Ramon Santamaria (@raysan5) # * -# * # ********************************************************************************************/ - -import raylib as rl - -from raylib.colors import * +from raylib.static import * from dataclasses import dataclass from enum import Enum from typing import Any import math -# a few functions ported from raymath -from rlmath import * -# lighting system -from light_system import * -# Initialization -# -------------------------------------------------------------------------------------- -screenWidth = 1200 -screenHeight = 720 -rl.SetConfigFlags( - rl.FLAG_MSAA_4X_HINT | rl.FLAG_WINDOW_RESIZABLE) # Enable Multi Sampling Anti Aliasing 4x (if available) -rl.InitWindow(screenWidth, screenHeight, b"raylib [shaders] example - basic lighting") +def MatrixRotateX(angle): + result = MatrixIdentity(); -camera = rl.ffi.new('struct Camera3D *', [ - [2, 2, 6], - [0, .5, 0], - [0, 1, 0], - 45, - rl.CAMERA_PERSPECTIVE -]) + cosres = math.cos(angle); + sinres = math.sin(angle); -# Load models -modelA = rl.LoadModelFromMesh(rl.GenMeshTorus(0.4, 1.0, 16, 32)) -modelB = rl.LoadModelFromMesh(rl.GenMeshCube(1.0, 1.0, 1.0)) -modelC = rl.LoadModelFromMesh(rl.GenMeshSphere(0.5, 32, 32)) + result.m5 = cosres; + result.m6 = -sinres; + result.m9 = sinres; + result.m10 = cosres; -# Load models texture -texture = rl.LoadTexture(b"resources/texel_checker.png") + return result; -# Assign texture to default model material -modelA.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture -modelB.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture -modelC.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture -angle = 6.282 -# Using 4 point lights, white, red, green and blue +def MatrixRotateY(angle): + result = MatrixIdentity() -lights0 = Light(LIGHT_POINT, [4, 2, 4], Vector3Zero(), WHITE) -lights1 = Light(LIGHT_POINT, [4, 2, 4], Vector3Zero(), RED) -lights2 = Light(LIGHT_POINT, [0, 4, 2], Vector3Zero(), GREEN) -lights3 = Light(LIGHT_POINT, [0, 4, 2], Vector3Zero(), BLUE) + cosres = math.cos(angle); + sinres = math.sin(angle); -lightSystem = LightSystem([0.2, 0.2, 0.2, 1.0], lights0, lights1, lights2, lights3) -fogD = rl.GetShaderLocation(lightSystem.shader, b'FogDensity') -fogDensity = 0.0 + result.m0 = cosres; + result.m2 = sinres; + result.m8 = -sinres; + result.m10 = cosres; -# All models use the same shader - which lights them + return result; + + +def MatrixIdentity(): + result = ffi.new("struct Matrix *",[ 1.0, 0.0, 0.0, 0.0,0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ]) + return result + + + +def MatrixRotateZ(angle): + result = MatrixIdentity(); + + cosres = math.cos(angle); + sinres = math.sin(angle); + + result.m0 = cosres; + result.m1 = -sinres; + result.m4 = sinres; + result.m5 = cosres; + + return result + + +def MatrixMultiply(left, right): + result = ffi.new("struct Matrix *") + result.m0 = left.m0*right.m0 + left.m1*right.m4 + left.m2*right.m8 + left.m3*right.m12; + result.m1 = left.m0*right.m1 + left.m1*right.m5 + left.m2*right.m9 + left.m3*right.m13; + result.m2 = left.m0*right.m2 + left.m1*right.m6 + left.m2*right.m10 + left.m3*right.m14; + result.m3 = left.m0*right.m3 + left.m1*right.m7 + left.m2*right.m11 + left.m3*right.m15; + result.m4 = left.m4*right.m0 + left.m5*right.m4 + left.m6*right.m8 + left.m7*right.m12; + result.m5 = left.m4*right.m1 + left.m5*right.m5 + left.m6*right.m9 + left.m7*right.m13; + result.m6 = left.m4*right.m2 + left.m5*right.m6 + left.m6*right.m10 + left.m7*right.m14; + result.m7 = left.m4*right.m3 + left.m5*right.m7 + left.m6*right.m11 + left.m7*right.m15; + result.m8 = left.m8*right.m0 + left.m9*right.m4 + left.m10*right.m8 + left.m11*right.m12; + result.m9 = left.m8*right.m1 + left.m9*right.m5 + left.m10*right.m9 + left.m11*right.m13; + result.m10 = left.m8*right.m2 + left.m9*right.m6 + left.m10*right.m10 + left.m11*right.m14; + result.m11 = left.m8*right.m3 + left.m9*right.m7 + left.m10*right.m11 + left.m11*right.m15; + result.m12 = left.m12*right.m0 + left.m13*right.m4 + left.m14*right.m8 + left.m15*right.m12; + result.m13 = left.m12*right.m1 + left.m13*right.m5 + left.m14*right.m9 + left.m15*right.m13; + result.m14 = left.m12*right.m2 + left.m13*right.m6 + left.m14*right.m10 + left.m15*right.m14; + result.m15 = left.m12*right.m3 + left.m13*right.m7 + left.m14*right.m11 + left.m15*right.m15; + + return result + + +#//---------------------------------------------------------------------------------- +#// Types and Structures Definition +#//---------------------------------------------------------------------------------- + +class LightSystem: + MAX_LIGHTS = 4 #// Max dynamic lights supported by shader + lightsCount = 0 + lights = [] + + def __init__(self, ambient = [ 0.2, 0.2, 0.2, 1.0 ], *ls): + self.shader = LoadShader(b"resources/shaders/glsl330/basic_lighting.vs", + b"resources/shaders/glsl330/basic_lighting.fs"); + + #// Get some shader loactions + self.shader.locs[LOC_MATRIX_MODEL] = GetShaderLocation(self.shader, b"matModel"); + self.shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(self.shader, b"viewPos"); + + #// ambient light level + self.ambientLoc = GetShaderLocation(self.shader, b"ambient"); + v = ffi.new("struct Vector4 *", ambient) + SetShaderValue(self.shader, self.ambientLoc, v, UNIFORM_VEC4); + + for light in ls: + self.add(light) + + def add(self, light): + light.configure(len(self.lights), self.shader) + self.lights.append(light) + if len(self.lights) > self.MAX_LIGHTS: + raise Exception("Too many lights") + + def update(self, cameraPos): + SetShaderValue(self.shader, self.shader.locs[LOC_VECTOR_VIEW], ffi.new("struct Vector3 *",cameraPos), UNIFORM_VEC3) + for light in self.lights: + light.UpdateLightValues() + + def draw(self): + for light in self.lights: + if light.enabled: + DrawSphereEx(light.position[0], 0.2, 8, 8, light.color) + + + + +LIGHT_DIRECTIONAL=0 +LIGHT_POINT=1 + + +class Light: + def __init__(self, type, position, target, color): + self.enabled = True + self.type = type + self.position = ffi.new("struct Vector3 *",position) + self.target = target + self.color = color + + + + + def configure(self, id, shader): + self.shader = shader + #// TODO: Below code doesn't look good to me, + # // it assumes a specific shader naming and structure + # // Probably this implementation could be improved + self.enabledName = f"lights[{id}].enabled" + self.typeName = f"lights[{id}].type" + self.posName = f"lights[{id}].position" + self.targetName = f"lights[{id}].target" + self.colorName = f"lights[{id}].color" + + self.enabledLoc = GetShaderLocation(shader, self.enabledName.encode('utf-8')) + self.typeLoc = GetShaderLocation(shader, self.typeName.encode('utf-8')) + self.posLoc = GetShaderLocation(shader, self.posName.encode('utf-8')) + self.targetLoc = GetShaderLocation(shader, self.targetName.encode('utf-8')) + self.colorLoc = GetShaderLocation(shader, self.colorName.encode('utf-8')) + + self.UpdateLightValues() + + + #// Send light properties to shader + #// NOTE: Light shader locations should be available + def UpdateLightValues(self): + #// Send to shader light enabled state and type + SetShaderValue(self.shader, self.enabledLoc, ffi.new("int *",self.enabled), UNIFORM_INT) + SetShaderValue(self.shader, self.typeLoc, ffi.new("int *",self.type), UNIFORM_INT) + + #// Send to shader light position values + position = [ self.position.x, self.position.y, self.position.z] + SetShaderValue(self.shader, self.posLoc, ffi.new("struct Vector3 *",position), UNIFORM_VEC3) + + #// Send to shader light target position values + target =[ self.target.x, self.target.y, self.target.z ] + SetShaderValue(self.shader, self.targetLoc, ffi.new("struct Vector3 *",target), UNIFORM_VEC3) + + #// Send to shader light color values + color = [self.color[0]/255.0, self.color[1]/255.0, self.color[2]/255.0, self.color[3]/255.0] + SetShaderValue(self.shader, self.colorLoc, ffi.new("struct Vector4 *",color), UNIFORM_VEC4) + + + +def Vector3Zero(): + return ffi.new("struct Vector3 *",[ 0, 0, 0]) + +#// Initialization +#//-------------------------------------------------------------------------------------- +screenWidth = 800; +screenHeight = 450; + +SetConfigFlags(FLAG_MSAA_4X_HINT); # Enable Multi Sampling Anti Aliasing 4x (if available) +InitWindow(screenWidth, screenHeight, b"raylib [shaders] example - basic lighting") + +#// Define the camera to look into our 3d world +cameraPtr = ffi.new("struct Camera3D *") +camera = cameraPtr[0] +camera.position = [ 2.0, 2.0, 6.0 ] # // Camera position +camera.target = [ 0.0, 0.5, 0.0]# // Camera looking at point +camera.up = [ 0.0, 1.0, 0.0]# // Camera up vector (rotation towards target) +camera.fovy = 45.0 # // Camera field-of-view Y +camera.type = CAMERA_PERSPECTIVE # // Camera mode type + + #// Load models +modelA = LoadModelFromMesh(GenMeshTorus(0.4, 1.0, 16, 32)) +modelB = LoadModelFromMesh(GenMeshCube(1.0, 1.0, 1.0)) +modelC = LoadModelFromMesh(GenMeshSphere(0.5, 32, 32)) + +#// Load models texture +texture = LoadTexture(b"resources/texel_checker.png") + +#// Assign texture to default model material +modelA.materials[0].maps[MAP_DIFFUSE].texture = texture +modelB.materials[0].maps[MAP_DIFFUSE].texture = texture +modelC.materials[0].maps[MAP_DIFFUSE].texture = texture + + + + + +angle = 6.282; + + +#// Using 4 point lights, white, red, green and blue + +#lights[0] = Light(LIGHT_POINT, ffi.new("struct Vector3 *",[ 400, 400, 400 ]), Vector3Zero(), WHITE, shader) +lights0 = Light(LIGHT_POINT, [ 4, 2, 4 ], Vector3Zero(), WHITE) +lights1 = Light(LIGHT_POINT, [4, 2, 4 ], Vector3Zero(), RED) +lights2 = Light(LIGHT_POINT, [ 0, 4, 2 ], Vector3Zero(), GREEN) +lights3 = Light(LIGHT_POINT, [ 0, 4, 2 ], Vector3Zero(), BLUE) + +lightSystem = LightSystem([ 0.2, 0.2, 0.2, 1.0 ], lights0, lights1, lights2, lights3) + +#// All models use the same shader modelA.materials[0].shader = lightSystem.shader modelB.materials[0].shader = lightSystem.shader modelC.materials[0].shader = lightSystem.shader -rl.SetTargetFPS(60) # // Set our game to run at 60 frames-per-second -# -------------------------------------------------------------------------------------- -# Main game loop -while not rl.WindowShouldClose(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - if rl.IsKeyPressed(rl.KEY_W): lights0.enabled = not lights0.enabled - if rl.IsKeyPressed(rl.KEY_R): lights1.enabled = not lights1.enabled - if rl.IsKeyPressed(rl.KEY_G): lights2.enabled = not lights2.enabled - if rl.IsKeyPressed(rl.KEY_B): lights3.enabled = not lights3.enabled +SetCameraMode(camera, CAMERA_ORBITAL) #// Set an orbital camera mode - rl.UpdateCamera(camera, rl.CAMERA_ORBITAL) # Update camera +SetTargetFPS(60) # // Set our game to run at 60 frames-per-second +#//-------------------------------------------------------------------------------------- - # Make the lights do differing orbits +#// Main game loop +while not WindowShouldClose(): #// Detect window close button or ESC key + #// Update + #//---------------------------------------------------------------------------------- + if IsKeyPressed(KEY_W): lights0.enabled = not lights0.enabled + if IsKeyPressed(KEY_R): lights1.enabled = not lights1.enabled + if IsKeyPressed(KEY_G): lights2.enabled = not lights2.enabled + if IsKeyPressed(KEY_B): lights3.enabled = not lights3.enabled + + UpdateCamera(cameraPtr); #// Update camera + + #// Make the lights do differing orbits angle -= 0.02 - lights0.position.x = math.cos(angle) * 4.0 - lights0.position.z = math.sin(angle) * 4.0 - lights1.position.x = math.cos(-angle * 0.6) * 4.0 - lights1.position.z = math.sin(-angle * 0.6) * 4.0 - lights2.position.y = math.cos(angle * 0.2) * 4.0 - lights2.position.z = math.sin(angle * 0.2) * 4.0 - lights3.position.y = math.cos(-angle * 0.35) * 4.0 - lights3.position.z = math.sin(-angle * 0.35) * 4.0 + lights0.position.x = math.cos(angle)*4.0 + lights0.position.z = math.sin(angle)*4.0 + lights1.position.x = math.cos(-angle*0.6)*4.0 + lights1.position.z = math.sin(-angle*0.6)*4.0 + lights2.position.y = math.cos(angle*0.2)*4.0 + lights2.position.z = math.sin(angle*0.2)*4.0 + lights3.position.y = math.cos(-angle*0.35)*4.0 + lights3.position.z = math.sin(-angle*0.35)*4.0 - # Update the light shader with the camera view position + #// Update the light shader with the camera view position lightSystem.update(camera.position) - # ffi.cast('wchar_t', x) - # modelA.transform = ffi.cast('Matrix *', MatrixRotateY(angle*1.7))[0] - # modelA.transform = MatrixRotateY(angle*1.7) - # Rotate the torus - # modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateX(-0.025)[0])[0] - # modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateZ(0.012)[0])[0] - modelA.transform = rl.ffi.cast('Matrix *', MatrixMultiply(modelA.transform, MatrixRotateX(-0.025)))[0] - modelA.transform = rl.ffi.cast('Matrix *', MatrixMultiply(modelA.transform, MatrixRotateZ(0.012)))[0] - if (rl.IsKeyPressed(rl.KEY_F)): - rl.ToggleFullscreen() - # ---------------------------------------------------------------------------------- + #// Rotate the torus - # Draw - # ---------------------------------------------------------------------------------- - rl.BeginDrawing() + modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateX(-0.025))[0] + modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateZ(0.012))[0] - rl.ClearBackground(RAYWHITE) - rl.BeginMode3D(camera[0]) - # Draw the three models - rl.DrawModel(modelA, [0, 0, 0], 1.0, WHITE) - rl.DrawModel(modelB, [-1.6, 0, 0], 1.0, WHITE) - rl.DrawModel(modelC, [1.6, 0, 0], 1.0, WHITE) - # Draw markers to show where the lights are + #//---------------------------------------------------------------------------------- + + #// Draw + #//---------------------------------------------------------------------------------- + BeginDrawing() + + ClearBackground(RAYWHITE) + + BeginMode3D(camera) + + #// Draw the three models + DrawModel(modelA, [0,0,0], 1.0, WHITE) + DrawModel(modelB, [-1.6,0,0], 1.0, WHITE) + DrawModel(modelC, [ 1.6,0,0], 1.0, WHITE) + + #// Draw markers to show where the lights are lightSystem.draw() - rl.DrawGrid(10, 1.0) - rl.EndMode3D() + DrawGrid(10, 1.0) - rl.DrawFPS(10, 10) + EndMode3D() - rl.DrawText(b"Keys RGB & W toggle lights", 10, 30, 20, DARKGRAY) + DrawFPS(10, 10) - rl.EndDrawing() -# ---------------------------------------------------------------------------------- + DrawText(b"Keys RGB & W toggle lights", 10, 30, 20, DARKGRAY) + + EndDrawing() +#//---------------------------------------------------------------------------------- -# De-Initialization -# -------------------------------------------------------------------------------------- -rl.UnloadModel(modelA) # Unload the modelA -rl.UnloadModel(modelB) # Unload the modelB -rl.UnloadModel(modelC) # Unload the modelC +#// De-Initialization +#//-------------------------------------------------------------------------------------- +UnloadModel(modelA) # // Unload the modelA +UnloadModel(modelB) # // Unload the modelB +UnloadModel(modelC) # // Unload the modelC -rl.UnloadTexture(texture) # Unload the texture +UnloadTexture(texture) #// Unload the texture +UnloadShader(shader) #// Unload shader -rl.UnloadShader(lightSystem.shader) - -rl.CloseWindow() # Close window and OpenGL context +CloseWindow(); #// Close window and OpenGL context diff --git a/examples/shaders/shaders_custom_uniform.py b/examples/shaders/shaders_custom_uniform.py deleted file mode 100755 index cf90cd9..0000000 --- a/examples/shaders/shaders_custom_uniform.py +++ /dev/null @@ -1,125 +0,0 @@ -# /******************************************************************************************* -# * -# * raylib [shaders] example - custom uniform -# * -# * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -# * OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. -# * -# * NOTE: Shaders used in this example are #version 330 (OpenGL 3.3). -# * -# * This example has been created using raylib 2.5 (www.raylib.com) -# * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) -# * -# * Example contributed by Chris Camacho (@codifies) and reviewed by Ramon Santamaria (@raysan5) -# * -# * Chris Camacho (@codifies - http://bedroomcoders.co.uk/) notes: -# * -# * This is based on the PBR lighting example, but greatly simplified to aid learning... -# * actually there is very little of the PBR example left! -# * When I first looked at the bewildering complexity of the PBR example I feared -# * I would never understand how I could do simple lighting with raylib however its -# * a testement to the authors of raylib (including rlights.h) that the example -# * came together fairly quickly. -# * -# * Copyright (c) 2019 Chris Camacho (@codifies) and Ramon Santamaria (@raysan5) -# * -# * -# ********************************************************************************************/ - - -import raylib as rl -from raylib.colors import * -import math - -# a few functions ported from raymath -from rlmath import * - - -#// Initialization -#//-------------------------------------------------------------------------------------- -screenWidth = 800; -screenHeight = 450; - -rl.SetConfigFlags(rl.FLAG_MSAA_4X_HINT| rl.FLAG_WINDOW_RESIZABLE); # Enable Multi Sampling Anti Aliasing 4x (if available) -rl.InitWindow(screenWidth, screenHeight, b"raylib [shaders] example - custom uniform") - -camera = rl.ffi.new('struct Camera3D *', [ - [2, 12, 6], - [0, .5, 0], - [0, 1, 0], - 45, - rl.CAMERA_PERSPECTIVE -]) - -model = rl.LoadModel(b"resources/models/barracks.obj") # // Load OBJ model -texture = rl.LoadTexture(b"resources/models/barracks_diffuse.png") # // Load model texture (diffuse map) - -#// Assign texture to default model material -model.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture -#// NOTE: Defining 0 (NULL) for vertex shader forces usage of internal default vertex shader -shader = rl.LoadShader(b"", b"resources/shaders/glsl330/swirl.fs") -swirlCenterLoc = rl.GetShaderLocation(shader, b"center") -angle = 6.282; - - - -swirl = rl.ffi.new("struct Vector2 *", [0,0]) - -target = rl.LoadRenderTexture(screenWidth, screenHeight) - -rl.SetTargetFPS(60) # // Set our game to run at 60 frames-per-second -#//-------------------------------------------------------------------------------------- - -#// Main game loop -while not rl.WindowShouldClose(): #// Detect window close button or ESC key - #// Update - #//---------------------------------------------------------------------------------- - - angle -= 0.002 - camera.position.x = math.sin(angle) * 30.0 - camera.position.z = math.cos(angle) * 30.0 - rl.UpdateCamera(camera, rl.CAMERA_PERSPECTIVE) #// Update camera - - swirl.x = rl.GetMouseX() - swirl.y = screenHeight - rl.GetMouseY() - rl.SetShaderValue(shader, swirlCenterLoc, swirl, rl.SHADER_UNIFORM_VEC2); - #//---------------------------------------------------------------------------------- - - #// Draw - #//---------------------------------------------------------------------------------- - rl.BeginDrawing() - - - rl.BeginTextureMode(target) - rl.ClearBackground(RAYWHITE) - rl.BeginMode3D(camera[0]) - - #// Draw the three models - rl.DrawModel(model, [0,0,0], 1.0, WHITE) - - rl.DrawGrid(10, 1.0) - - rl.EndTextureMode() - rl.EndMode3D() - - rl.BeginShaderMode(shader) - #// NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom) - rl.DrawTextureRec(target.texture, [ 0, 0, target.texture.width,-target.texture.height], [0.0], WHITE) - rl.EndShaderMode() - #// Draw some 2d text over drawn texture - rl.DrawText(b"(c) Barracks 3D model by Alberto Cano", screenWidth - 220, screenHeight - 20, 10, GRAY); - - - rl.DrawFPS(10, 10) - - rl.EndDrawing() -#//---------------------------------------------------------------------------------- - - -#// De-Initialization -#//-------------------------------------------------------------------------------------- -rl.UnloadModel(model) # // Unload the model - -rl.UnloadTexture(texture) #// Unload the texture - -rl.CloseWindow() #// Close window and OpenGL context diff --git a/examples/shaders/shaders_fog.py b/examples/shaders/shaders_fog.py deleted file mode 100755 index 34ff1c1..0000000 --- a/examples/shaders/shaders_fog.py +++ /dev/null @@ -1,109 +0,0 @@ -""" - -Example converted to Python from: -http://bedroomcoders.co.uk/raylib-fog/ - - port to python completed by codifies - dont know who started it - - -""" - -import raylib as rl - -from raylib.colors import * -import math - -from rlmath import * -from light_system import * - -rl.SetConfigFlags(rl.FLAG_MSAA_4X_HINT | rl.FLAG_WINDOW_RESIZABLE) -rl.InitWindow(1280, 768, b'Fog Test') - -camera = rl.ffi.new('struct Camera3D *', [ - [6, 2, 6], - [0, .5, 0], - [0, 1, 0], - 45, - rl.CAMERA_PERSPECTIVE -]) - -model = rl.LoadModelFromMesh(rl.GenMeshTorus(0.4, 1, 16, 32)) -model2 = rl.LoadModelFromMesh(rl.GenMeshCube(1, 1, 1)) -model3 = rl.LoadModelFromMesh(rl.GenMeshSphere(0.5, 32, 32)) - -texture = rl.LoadTexture(b'resources/test.png') - -model.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture -model2.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture -model3.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture - -light = Light(LIGHT_POINT, [0, 4, 0], Vector3Zero(), WHITE) -lightSystem = LightSystem([0.2, 0.2, 0.2, 1.0], light) - -fog_color = rl.ffi.new('float[]', [0.2, 0.2, 1.0, 1.0]) -fogC = rl.GetShaderLocation(lightSystem.shader, b'fogColor') -rl.SetShaderValue(lightSystem.shader, fogC, fog_color, rl.SHADER_UNIFORM_VEC4); - -fogC = rl.GetShaderLocation(lightSystem.shader, b'fogColor') -rl.SetShaderValue(lightSystem.shader, fogC, fog_color, rl.SHADER_UNIFORM_VEC4); - -fogD = rl.GetShaderLocation(lightSystem.shader, b'FogDensity') -fogDensity = 0.12 - -model.materials[0].shader = lightSystem.shader -model2.materials[0].shader = lightSystem.shader -model3.materials[0].shader = lightSystem.shader - -rl.SetTargetFPS(60) -a = 0.0 -while not rl.WindowShouldClose(): - - a += 0.01 - camera.position.x = math.sin(a) * 6 - camera.position.z = math.cos(a) * 6 - rl.UpdateCamera(camera, rl.CAMERA_PERSPECTIVE) - - lightSystem.update(camera.position) - - model.transform = rl.ffi.cast("Matrix *", MatrixMultiply(model.transform, MatrixRotateX(-0.025)))[0] - model.transform = rl.ffi.cast("Matrix *", MatrixMultiply(model.transform, MatrixRotateZ(0.012)))[0] - - if rl.IsKeyDown(rl.KEY_UP): - fogDensity = min(fogDensity + 0.001, 1) - - if rl.IsKeyDown(rl.KEY_DOWN): - fogDensity = max(fogDensity - 0.001, 0) - - rl.SetShaderValue(lightSystem.shader, fogD, rl.ffi.new('float[]', [fogDensity]), rl.SHADER_UNIFORM_FLOAT) - - rl.BeginDrawing() - - rl.ClearBackground([int(255 * i) for i in fog_color]) - - if rl.IsKeyDown(rl.KEY_SPACE): - rl.ClearBackground(BLACK) - - rl.BeginMode3D(camera[0]) - rl.DrawModel(model, [0] * 3, 1, WHITE) - rl.DrawModel(model2, [-2.6, 0, 0], 1, WHITE) - rl.DrawModel(model3, [2.6, 0, 0], 1, WHITE) - - for i in range(-20, 20, 2): - rl.DrawModel(model, [i, 0, 2], 1, WHITE) - - # Raylib removed this function - # rl.DrawGizmo([1000, 1000, 1000]) - - rl.EndMode3D() - - rl.DrawFPS(10, 10) - rl.DrawText(f'Up/Down to change fog density: {fogDensity}'.encode('utf-8'), 10, 30, 20, WHITE) - - rl.EndDrawing() - -rl.UnloadModel(model) -rl.UnloadModel(model2) -rl.UnloadModel(model3) -rl.UnloadTexture(texture) -rl.UnloadShader(lightSystem.shader) -rl.CloseWindow() diff --git a/examples/shaders/shaders_texture_drawing.py b/examples/shaders/shaders_texture_drawing.py deleted file mode 100755 index ea36518..0000000 --- a/examples/shaders/shaders_texture_drawing.py +++ /dev/null @@ -1,69 +0,0 @@ -import raylib as rl - - - - -#// Initialization -#//-------------------------------------------------------------------------------------- -screenWidth = 800; -screenHeight = 450; - -rl.SetConfigFlags(rl.FLAG_MSAA_4X_HINT| rl.FLAG_WINDOW_RESIZABLE); # Enable Multi Sampling Anti Aliasing 4x (if available) -rl.InitWindow(screenWidth, screenHeight, b"raylib [shaders] example - basic lighting") - -camera = rl.ffi.new('struct Camera3D *', [ - [2, 12, 6], - [0, .5, 0], - [0, 1, 0], - 45, - rl.CAMERA_PERSPECTIVE -]) - -imBlank = rl.GenImageColor(1024, 1024, rl.BLANK) -texture = rl.LoadTextureFromImage(imBlank) #// Load blank texture to fill on shader -rl.UnloadImage(imBlank); - -#// NOTE: Using GLSL 330 shader version, on OpenGL ES 2.0 use GLSL 100 shader version -shader = rl.LoadShader(b"", b"resources/shaders/glsl330/cubes_panning.fs"); - -time = rl.ffi.new("float *", 0.0) -timeLoc = rl.GetShaderLocation(shader, b"uTime"); -rl.SetShaderValue(shader, timeLoc, time, rl.SHADER_UNIFORM_FLOAT); - - -rl.SetTargetFPS(60) # // Set our game to run at 60 frames-per-second -#//-------------------------------------------------------------------------------------- - -#// Main game loop -while not rl.WindowShouldClose(): #// Detect window close button or ESC key - #// Update - #//---------------------------------------------------------------------------------- - time[0] = rl.GetTime(); - rl.SetShaderValue(shader, timeLoc, time, rl.SHADER_UNIFORM_FLOAT); - - #//---------------------------------------------------------------------------------- - - #// Draw - #//---------------------------------------------------------------------------------- - rl.BeginDrawing() - - rl.ClearBackground(rl.RAYWHITE) - - rl.BeginShaderMode(shader) #// Enable our custom shader for next shapes/textures drawings - rl.DrawTexture(texture, 0, 0, rl.WHITE) #// Drawing BLANK texture, all magic happens on shader - rl.EndShaderMode() #// Disable our custom shader, return to default shader - - rl.DrawText(b"BACKGROUND is PAINTED and ANIMATED on SHADER!", 10, 10, 20, rl.MAROON); - - - rl.EndDrawing() -#//---------------------------------------------------------------------------------- - - -#// De-Initialization -#//-------------------------------------------------------------------------------------- - - -rl.UnloadTexture(texture) #// Unload the texture - -rl.CloseWindow() #// Close window and OpenGL context diff --git a/examples/shaders/shaders_texture_waves.py b/examples/shaders/shaders_texture_waves.py deleted file mode 100755 index 5b977b8..0000000 --- a/examples/shaders/shaders_texture_waves.py +++ /dev/null @@ -1,88 +0,0 @@ -import raylib as rl -from raylib.colors import * -import math - -# a few functions ported from raymath -from rlmath import * - -from ctypes import byref - -#// Initialization -#//-------------------------------------------------------------------------------------- -screenWidth = 800; -screenHeight = 450; - -rl.SetConfigFlags(rl.FLAG_MSAA_4X_HINT| rl.FLAG_WINDOW_RESIZABLE); # Enable Multi Sampling Anti Aliasing 4x (if available) -rl.InitWindow(screenWidth, screenHeight, b"raylib [shaders]") - -camera = rl.ffi.new('struct Camera3D *', [ - [2, 12, 6], - [0, .5, 0], - [0, 1, 0], - 45, - rl.CAMERA_PERSPECTIVE -]) - -texture = rl.LoadTexture(b"resources/space.png") - -shader = rl.LoadShader(b"", b"resources/shaders/glsl330/wave.fs") -secondsLoc = rl.GetShaderLocation(shader, b"secondes") -freqXLoc = rl.GetShaderLocation(shader, b"freqX") -freqYLoc = rl.GetShaderLocation(shader, b"freqY") -ampXLoc = rl.GetShaderLocation(shader, b"ampX") -ampYLoc = rl.GetShaderLocation(shader, b"ampY") -speedXLoc = rl.GetShaderLocation(shader, b"speedX") -speedYLoc = rl.GetShaderLocation(shader, b"speedY") - -freqX = rl.ffi.new("float *", 25.0) -freqY = rl.ffi.new("float *", 25.0) -ampX = rl.ffi.new("float *", 5.0) -ampY = rl.ffi.new("float *", 5.0) -speedX = rl.ffi.new("float *", 8.0) -speedY = rl.ffi.new("float *", 8.0) - -screenSize = rl.ffi.new("struct Vector2 *",[ rl.GetScreenWidth(), rl.GetScreenHeight() ]) -rl.SetShaderValue(shader, rl.GetShaderLocation(shader, b"size"), screenSize, rl.SHADER_UNIFORM_VEC2) - -rl.SetShaderValue(shader, freqXLoc, freqX, rl.SHADER_UNIFORM_FLOAT) -rl.SetShaderValue(shader, freqYLoc, freqY, rl.SHADER_UNIFORM_FLOAT) -rl.SetShaderValue(shader, ampXLoc, ampX, rl.SHADER_UNIFORM_FLOAT) -rl.SetShaderValue(shader, ampYLoc, ampY, rl.SHADER_UNIFORM_FLOAT) -rl.SetShaderValue(shader, speedXLoc, speedX, rl.SHADER_UNIFORM_FLOAT) -rl.SetShaderValue(shader, speedYLoc, speedY, rl.SHADER_UNIFORM_FLOAT) - -seconds = rl.ffi.new("float *", 0.0) - -rl.SetTargetFPS(60) # // Set our game to run at 60 frames-per-second -#//-------------------------------------------------------------------------------------- - -#// Main game loop -while not rl.WindowShouldClose(): #// Detect window close button or ESC key - #// Update - #//---------------------------------------------------------------------------------- - seconds[0] += rl.GetFrameTime() - rl.SetShaderValue(shader, secondsLoc, seconds, rl.SHADER_UNIFORM_FLOAT) - #//---------------------------------------------------------------------------------- - - #// Draw - #//---------------------------------------------------------------------------------- - rl.BeginDrawing() - - - rl.ClearBackground(RAYWHITE) - rl.BeginShaderMode(shader); - - rl.DrawTexture(texture, 0, 0, WHITE); - rl.DrawTexture(texture, texture.width, 0, WHITE); - - rl.EndShaderMode(); - - rl.EndDrawing() -#//---------------------------------------------------------------------------------- - - -#// De-Initialization -#//-------------------------------------------------------------------------------------- - - -rl.CloseWindow() #// Close window and OpenGL context diff --git a/examples/shaders/shaders_write_depth.py b/examples/shaders/shaders_write_depth.py deleted file mode 100644 index 4c51249..0000000 --- a/examples/shaders/shaders_write_depth.py +++ /dev/null @@ -1,123 +0,0 @@ -from pyray import * -import raylib as rl - -#------------------------------------------------------------------------------------ -# Define custom functions required for the example -#------------------------------------------------------------------------------------ -# Load custom render texture, create a writable depth texture buffer -def LoadRenderTextureDepthTex(width, height): - - target = RenderTexture() - - target.id = rl_load_framebuffer() # Load an empty framebuffer - - if target.id > 0: - - rl_enable_framebuffer(target.id) - - # Create color texture (default to RGBA) - target.texture.id = rl_load_texture(None, width, height, PixelFormat.PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, 1) - target.texture.width = width - target.texture.height = height - target.texture.format = PixelFormat.PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 - target.texture.mipmaps = 1 - - # Create depth texture buffer (instead of raylib default renderbuffer) - target.depth.id = rl_load_texture_depth(width, height, False) - target.depth.width = width - target.depth.height = height - target.depth.format = 19 #DEPTH_COMPONENT_24BIT? - target.depth.mipmaps = 1 - - # Attach color texture and depth texture to FBO - rl_framebuffer_attach(target.id, target.texture.id, rl.RL_ATTACHMENT_COLOR_CHANNEL0, rl.RL_ATTACHMENT_TEXTURE2D, 0) - rl_framebuffer_attach(target.id, target.depth.id, rl.RL_ATTACHMENT_DEPTH, rl.RL_ATTACHMENT_TEXTURE2D, 0) - - # Check if fbo is complete with attachments (valid) - if rl_framebuffer_complete(target.id): - print(f"FBO: [{target.id}] Framebuffer object created successfully") - - rl_disable_framebuffer() - - else: - print("FBO: Framebuffer object can not be created") - - return target - - -# Unload render texture from GPU memory (VRAM) -def UnloadRenderTextureDepthTex(target): - - if target.id > 0: - - # Color texture attached to FBO is deleted - rl_unload_texture(target.texture.id) - rl_unload_texture(target.depth.id) - - # NOTE: Depth texture is automatically - # queried and deleted before deleting framebuffer - rl_unload_framebuffer(target.id) - - - -screenWidth = 800 -screenHeight = 450 - -init_window(screenWidth, screenHeight, "raylib [shaders] example - write depth buffer") - -# The shader inverts the depth buffer by writing into it by `gl_FragDepth = 1 - gl_FragCoord.z` -shader = load_shader("","resources/shaders/glsl330/write_depth.fs") - -# Use Customized function to create writable depth texture buffer -target = LoadRenderTextureDepthTex(screenWidth, screenHeight) - -# Define the camera to look into our 3d world -camera = Camera3D((2.0, 2.0, 3.0),(0.0, 0.5, 0.0),(0.0, 1.0, 0.0),45.0, CameraProjection.CAMERA_PERSPECTIVE) - - -set_target_fps(60) # Set our game to run at 60 frames-per-second -#-------------------------------------------------------------------------------------- - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - - # Update - #---------------------------------------------------------------------------------- - update_camera(camera, CameraMode.CAMERA_ORBITAL) - #---------------------------------------------------------------------------------- - - # Draw - #---------------------------------------------------------------------------------- - - # Draw into our custom render texture (framebuffer) - begin_texture_mode(target) - clear_background(WHITE) - - begin_mode_3d(camera) - begin_shader_mode(shader) - draw_cube_wires_v((0.0, 0.5, 1.0) , (1.0,1.0, 1.0), RED) - draw_cube_v((0.0, 0.5, 1.0) , (1.0, 1.0, 1.0) , PURPLE) - draw_cube_wires_v((0.0, 0.5, -1.0), (1.0, 1.0, 1.0) , DARKGREEN) - draw_cube_v((0.0, 0.5, -1.0) , (1.0, 1.0, 1.0) , YELLOW) - draw_grid(10, 1.0) - end_shader_mode() - end_mode_3d() - end_texture_mode() - - # Draw into screen our custom render texture - begin_drawing() - clear_background(RAYWHITE) - - draw_texture_rec(target.texture, Rectangle(0, 0, screenWidth, -screenHeight) , (0, 0) , WHITE) - draw_fps(10, 10) - end_drawing() - - -# De-Initialization -#-------------------------------------------------------------------------------------- -UnloadRenderTextureDepthTex(target) -unload_shader(shader) - -close_window() # Close window and OpenGL context - - diff --git a/examples/shapes/shapes_basic_shapes.py b/examples/shapes/shapes_basic_shapes.py deleted file mode 100644 index 5f039a3..0000000 --- a/examples/shapes/shapes_basic_shapes.py +++ /dev/null @@ -1,56 +0,0 @@ -import pyray - - -# Initialization -screenWidth = 800 -screenHeight = 450 -pyray.init_window(screenWidth, screenHeight, "raylib [shapes] example - basic shapes drawing") - -rotation = 0.0 - -pyray.set_target_fps(60) - -# Main game loop -while not pyray.window_should_close(): - # Update - rotation += 0.2 - - # Draw - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - - pyray.draw_text("some basic shapes available on raylib", 20, 20, 20, pyray.DARKGRAY) - - # Circle shapes and lines - pyray.draw_circle(screenWidth // 5, 120, 35, pyray.DARKBLUE) - pyray.draw_circle_gradient(screenWidth // 5, 220, 60, pyray.GREEN, pyray.SKYBLUE) - pyray.draw_circle_lines(screenWidth // 5, 340, 80, pyray.DARKBLUE) - - # Rectangle shapes and lines - pyray.draw_rectangle(screenWidth // 4 * 2 - 60, 100, 120, 60, pyray.RED) - pyray.draw_rectangle_gradient_h(screenWidth // 4 * 2 - 90, 170, 180, 130, pyray.MAROON, pyray.GOLD) - pyray.draw_rectangle_lines(screenWidth // 4 * 2 - 40, 320, 80, 60, pyray.ORANGE) - - # Triangle shapes and lines - pyray.draw_triangle(pyray.Vector2(screenWidth / 4.0 * 3.0, 80.0), - pyray.Vector2(screenWidth / 4.0 * 3.0 - 60.0, 150.0), - pyray.Vector2(screenWidth / 4.0 * 3.0 + 60.0, 150.0), pyray.VIOLET) - - pyray.draw_triangle_lines(pyray.Vector2(screenWidth / 4.0 * 3.0, 160.0), - pyray.Vector2(screenWidth / 4.0 * 3.0 - 20.0, 230.0), - pyray.Vector2(screenWidth / 4.0 * 3.0 + 20.0, 230.0), pyray.DARKBLUE) - - # Polygon shapes and lines - pyray.draw_poly(pyray.Vector2(screenWidth / 4.0 * 3, 330), 6, 80, rotation, pyray.BROWN) - pyray.draw_poly_lines(pyray.Vector2(screenWidth / 4.0 * 3, 330), 6, 90, rotation, pyray.BROWN) - pyray.draw_poly_lines_ex(pyray.Vector2(screenWidth / 4.0 * 3, 330), 6, 85, rotation, 6, pyray.BEIGE) - - # NOTE: We draw all LINES based shapes together to optimize internal drawing, - # this way, all LINES are rendered in a single draw pass - pyray.draw_line(18, 42, screenWidth - 18, 42, pyray.BLACK) - - pyray.end_drawing() - -# De-Initialization -pyray.close_window() diff --git a/examples/shapes/shapes_bouncing_ball.py b/examples/shapes/shapes_bouncing_ball.py deleted file mode 100644 index cc38371..0000000 --- a/examples/shapes/shapes_bouncing_ball.py +++ /dev/null @@ -1,52 +0,0 @@ -import pyray - -# Initialization -screenWidth = 800 -screenHeight = 450 -pyray.init_window(screenWidth, screenHeight, "pyray [shapes] example - bouncing ball") - -ballPosition = pyray.Vector2(pyray.get_screen_width() / 2.0, pyray.get_screen_height() / 2.0) -ballSpeed = pyray.Vector2(5.0, 4.0) -ballRadius = 20 - -pause = False -framesCounter = 0 - -pyray.set_target_fps(60) - -# Main game loop -while not pyray.window_should_close(): - # Update - if pyray.is_key_pressed(pyray.KeyboardKey.KEY_SPACE): - pause = not pause - - if not pause: - ballPosition.x += ballSpeed.x - ballPosition.y += ballSpeed.y - - # Check walls collision for bouncing - if (ballPosition.x >= (pyray.get_screen_width() - ballRadius)) or (ballPosition.x <= ballRadius): - ballSpeed.x *= -1.0 - if (ballPosition.y >= (pyray.get_screen_height() - ballRadius)) or (ballPosition.y <= ballRadius): - ballSpeed.y *= -1.0 - else: - framesCounter += 1 - - # Draw - pyray.begin_drawing() - - pyray.clear_background(pyray.RAYWHITE) - - pyray.draw_circle_v(ballPosition, ballRadius, pyray.MAROON) - pyray.draw_text("PRESS SPACE to PAUSE BALL MOVEMENT", 10, pyray.get_screen_height() - 25, 20, pyray.LIGHTGRAY) - - # On pause, we draw a blinking message - if pause and (framesCounter // 30) % 2: - pyray.draw_text("PAUSED", 350, 200, 30, pyray.GRAY) - - pyray.draw_fps(10, 10) - - pyray.end_drawing() - -# De-Initialization -pyray.close_window() diff --git a/examples/shapes/shapes_draw_rounded_rectangle_incomplete.py b/examples/shapes/shapes_draw_rounded_rectangle_incomplete.py deleted file mode 100644 index d20d98b..0000000 --- a/examples/shapes/shapes_draw_rounded_rectangle_incomplete.py +++ /dev/null @@ -1,81 +0,0 @@ -#/******************************************************************************************* -#* -#* raylib [shapes] example - draw rectangle rounded (with gui options) -#* -#* This example has been created using raylib 2.5 (www.raylib.com) -#* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) -#* -#* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5) -#* -#* Copyright (c) 2018 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5) -#* -#********************************************************************************************/ - -import pyray - - -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [shapes] example - draw rectangle rounded") - - - -drawRect = False -drawRoundedRect = True -drawRoundedLines = False - -pyray.set_target_fps(60) -width = pyray.ffi.new('float *', 200) -# these need to be changed to pointers for new raygui format -roundness = 0.2 -height = 100 -segments = 0 -lineThick = 1 -#// Main game loop -while not pyray.window_should_close(): #// Detect window close button or ESC key - - #// Update - #//---------------------------------------------------------------------------------- - rec = pyray.Rectangle( (pyray.get_screen_width()-width[0]-250)/2, (pyray.get_screen_height()-height)/2, width[0], height ) - #//---------------------------------------------------------------------------------- - - #// Draw - #//---------------------------------------------------------------------------------- - pyray.begin_drawing() - pyray.clear_background(pyray.RAYWHITE) - - pyray.draw_line(560,0,560,pyray.get_screen_height(),pyray.fade(pyray.LIGHTGRAY,0.6)) - pyray.draw_rectangle(560,0,pyray.get_screen_width()-500,pyray.get_screen_height(),pyray.fade(pyray.LIGHTGRAY,0.3)) - - if drawRect: - pyray.draw_rectangle_rec(rec,pyray.fade(pyray.GOLD,0.6)) - if drawRoundedRect: - pyray.draw_rectangle_rounded(rec,roundness,segments,pyray.fade(pyray.MAROON,0.2)) - if drawRoundedLines: - pyray.draw_rectangle_rounded_lines(rec,roundness,segments,pyray.fade(pyray.MAROON,0.4)) - - #// Draw GUI controls - #//------------------------------------------------------------------------------ - - pyray.gui_slider_bar(pyray.Rectangle(640,40,105,20),"Width","",width,0,pyray.get_screen_width()-300) - - # these need to be updated to new raygui format like above like - - # height = int( pyray.gui_slider_bar(pyray.Rectangle(640,70,105,20),"Height",0,height,0,pyray.get_screen_height()-50) ) - # roundness = pyray.gui_slider_bar(pyray.Rectangle(640,140,105,20),"Roundness",0,roundness,0,1) - # lineThick = int( pyray.gui_slider_bar(pyray.Rectangle(640,170,105,20),"Thickness",0,lineThick,0,20) ) - # segments = int( pyray.gui_slider_bar(pyray.Rectangle(640,240,105,20),"Segments",0,segments,0,60) ) - # - # drawRoundedRect = pyray.gui_check_box(pyray.Rectangle(640,320,20,20),"DrawRoundedRect",drawRoundedRect) - # drawRoundedLines = pyray.gui_check_box(pyray.Rectangle(640,350,20,20),"DrawRoundedLines",drawRoundedLines) - # drawRect = pyray.gui_check_box(pyray.Rectangle(640,380,20,20),"DrawRect",drawRect) - #//------------------------------------------------------------------------------ - - pyray.draw_text( "MANUAL" if segments >= 4 else "AUTO" , 640, 280, 10, pyray.MAROON if segments >= 4 else pyray.DARKGRAY) - pyray.draw_fps(10,10) - pyray.end_drawing() - #//------------------------------------------------------------------------------ - -# De-Initialization -pyray.close_window() # Close window and OpenGL context \ No newline at end of file diff --git a/examples/shapes/shapes_following_eyes.py b/examples/shapes/shapes_following_eyes.py deleted file mode 100644 index 66568eb..0000000 --- a/examples/shapes/shapes_following_eyes.py +++ /dev/null @@ -1,90 +0,0 @@ -""" - -raylib [shapes] example - Following Eyes - -""" - -from pyray import * - -from math import ( - atan2, - cos, - sin -) - -# Initialization -# ---------------------------------------------------------------------------------- -screenWidth = 800 -screenHeight = 450 - -init_window(screenWidth, screenHeight, "raylib [shapes] example - following eyes") - -scleraLeftPosition = Vector2(screenWidth / 2.0 - 100.0, screenHeight / 2.0) -scleraRightPosition = Vector2(screenWidth / 2.0 + 100.0, screenHeight / 2.0) -scleraRadius = 80.0 - -irisLeftPosition = Vector2(screenWidth / 2.0 - 100.0, screenHeight / 2.0) -irisRightPosition = Vector2(screenWidth / 2.0 - 100.0, screenHeight / 2.0) -irisRadius = 24.0 - -angle = 0.0 -dx, dy, dxx, dyy = 0.0, 0.0, 0.0, 0.0 - -set_target_fps(60) -# ---------------------------------------------------------------------------------- - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - irisLeftPosition = get_mouse_position() - irisRightPosition = get_mouse_position() - - # Check not inside the left eye sclera - if not check_collision_point_circle(irisLeftPosition, scleraLeftPosition, scleraRadius - 20): - dx = irisLeftPosition.x - scleraLeftPosition.x - dy = irisLeftPosition.y - scleraLeftPosition.y - - angle = atan2(dy, dx) - - dxx = (scleraRadius - irisRadius)*cos(angle) - dyy = (scleraRadius - irisRadius)*sin(angle) - - irisLeftPosition.x = scleraLeftPosition.x + dxx - irisLeftPosition.y = scleraLeftPosition.y + dyy - - # Check not inside the right eye sclera - if not check_collision_point_circle(irisRightPosition, scleraRightPosition, scleraRadius - 20): - dx = irisRightPosition.x - scleraRightPosition.x - dy = irisRightPosition.y - scleraRightPosition.y - - angle = atan2(dy, dx) - - dxx = (scleraRadius - irisRadius)*cos(angle) - dyy = (scleraRadius - irisRadius)*sin(angle) - - irisRightPosition.x = scleraRightPosition.x + dxx - irisRightPosition.y = scleraRightPosition.y + dyy - - # ---------------------------------------------------------------------------------- - - # draw - # ---------------------------------------------------------------------------------- - begin_drawing() - - clear_background(RAYWHITE) - - draw_circle_v(scleraLeftPosition, scleraRadius, LIGHTGRAY) - draw_circle_v(irisLeftPosition, irisRadius, BROWN) - draw_circle_v(irisLeftPosition, 10, BLACK) - - draw_circle_v(scleraRightPosition, scleraRadius, LIGHTGRAY) - draw_circle_v(irisRightPosition, irisRadius, DARKGREEN) - draw_circle_v(irisRightPosition, 10, BLACK) - - draw_fps(10, 10) - - end_drawing() - -# De-Initialization -close_window() # Close window and OpenGL context diff --git a/examples/shapes/shapes_lines_bezier.py b/examples/shapes/shapes_lines_bezier.py deleted file mode 100644 index 2b3d0af..0000000 --- a/examples/shapes/shapes_lines_bezier.py +++ /dev/null @@ -1,56 +0,0 @@ -""" - -raylib [shapes] example - Lines Bezier - -""" - -from pyray import * - - -# ------------------------------------------------------------------------------------ -# Program main entry point -# ------------------------------------------------------------------------------------ -def main(): - # Initialization - # ------------------------------------------------------------------------------------ - screenWidth = 800 - screenHeight = 450 - - set_config_flags(ConfigFlags.FLAG_MSAA_4X_HINT) - init_window(screenWidth, screenHeight, "raylib [shapes] example - cubic-bezier lines") - - start = Vector2(0, 0) - end = Vector2(screenWidth, screenHeight) - - set_target_fps(60) # Set our game to run at 60 frames-per-second - # ------------------------------------------------------------------------------------- - - # Main game loop - while not window_should_close(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - if is_mouse_button_down(MouseButton.MOUSE_BUTTON_LEFT): start = get_mouse_position() - if is_mouse_button_down(MouseButton.MOUSE_BUTTON_RIGHT): end = get_mouse_position() - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - begin_drawing() - - clear_background(RAYWHITE) - - draw_text("USE MOUSE LEFT-RIGHT CLICK to DEFINE LINE START and END POINTS", 15, 20, 20, GRAY) - - draw_line_bezier(start, end, 2.0, RED) - - end_drawing() - # ---------------------------------------------------------------------------------- - - # De-Initialization - # ---------------------------------------------------------------------------------- - close_window() # Close window and OpenGL context - # ---------------------------------------------------------------------------------- - -# execute the main function -if __name__ == '__main__': - main() diff --git a/examples/shapes/shapes_logo_raylib.py b/examples/shapes/shapes_logo_raylib.py deleted file mode 100644 index 77579fc..0000000 --- a/examples/shapes/shapes_logo_raylib.py +++ /dev/null @@ -1,39 +0,0 @@ -""" - -raylib [shapes] example - Logo Raylib - -""" -from pyray import * - - -# Initialization -screenWidth = 800 -screenHeight = 450 - -init_window(screenWidth, screenHeight, 'raylib [shapes] example - raylib logo using shapes') - -set_target_fps(60) # Set our game to run at 60 frames-per-second - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - # TODO: Update your variables here - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - begin_drawing() - - clear_background(RAYWHITE) - - draw_rectangle(int(screenWidth/2 - 128), int(screenHeight/2 - 128), 256, 256, BLACK) - draw_rectangle(int(screenWidth/2 - 112), int(screenHeight/2 - 112), 224, 224, RAYWHITE) - draw_text("raylib", int(screenWidth/2 - 44), int(screenHeight/2 + 48), 50, BLACK) - - draw_text("this is NOT a texture!", 350, 370, 10, GRAY) - - end_drawing() - -# De-Initialization -close_window() # Close window and OpenGL context diff --git a/examples/textures/resources/raylib_logo.jpg b/examples/textures/resources/raylib_logo.jpg deleted file mode 100644 index cb4ee4c..0000000 Binary files a/examples/textures/resources/raylib_logo.jpg and /dev/null differ diff --git a/examples/textures/resources/raylib_logo.png b/examples/textures/resources/raylib_logo.png deleted file mode 100644 index 15bbaa2..0000000 Binary files a/examples/textures/resources/raylib_logo.png and /dev/null differ diff --git a/examples/textures/resources/scarfy.png b/examples/textures/resources/scarfy.png deleted file mode 100644 index 885a470..0000000 Binary files a/examples/textures/resources/scarfy.png and /dev/null differ diff --git a/examples/textures/resources/wabbit_alpha.png b/examples/textures/resources/wabbit_alpha.png deleted file mode 100644 index db4081f..0000000 Binary files a/examples/textures/resources/wabbit_alpha.png and /dev/null differ diff --git a/examples/textures/textures_bunnymark.py b/examples/textures/textures_bunnymark.py deleted file mode 100644 index 0b8c7c2..0000000 --- a/examples/textures/textures_bunnymark.py +++ /dev/null @@ -1,111 +0,0 @@ -# /******************************************************************************************* -# * -# * raylib [textures] example - Bunnymark -# * -# * This example has been created using raylib 1.6 (www.raylib.com) -# * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) -# * -# * Copyright (c) 2014-2019 Ramon Santamaria (@raysan5) -# * -# ********************************************************************************************/ - -from raylib import * -MAX_BUNNIES = 500000 - -# This is the maximum amount of elements (quads) per batch -# NOTE: This value is defined in [rlgl] module and can be changed there -MAX_BATCH_ELEMENTS = 8192 - - -class Bunny: - def __init__(self): - self.position = ffi.new('struct Vector2 *', [0.0, 0.0]) - self.speed = ffi.new('struct Vector2 *', [0.0, 0.0]) - self.color = ffi.new('struct Color *', [0, 0, 0, 0]) - - -# // Initialization -# //-------------------------------------------------------------------------------------- -screenWidth = 1920; -screenHeight = 1080; - -InitWindow(screenWidth, screenHeight, b"raylib [textures] example - bunnymark") - -# // Load bunny texture -texBunny = LoadTexture(b"resources/wabbit_alpha.png") - -bunnies = [] -for i in range(0, MAX_BUNNIES): - bunnies.append(Bunny()) - -bunniesCount = 0 # Bunnies counter - -SetTargetFPS(60) # Set our game to run at 60 frames-per-second -#//-------------------------------------------------------------------------------------- - -#// Main game loop -while not WindowShouldClose(): #// Detect window close button or ESC key - #// Update - #//---------------------------------------------------------------------------------- - if IsMouseButtonDown(MOUSE_BUTTON_LEFT): - #// Create more bunnies - for i in range(0, 100): - if bunniesCount < MAX_BUNNIES: - bunnies[bunniesCount].position = GetMousePosition() - bunnies[bunniesCount].speed.x = GetRandomValue(-250, 250)/60.0 - bunnies[bunniesCount].speed.y = GetRandomValue(-250, 250)/60.0 - bunnies[bunniesCount].color = (GetRandomValue(50, 240), - GetRandomValue(80, 240), - GetRandomValue(100, 240), 255 ) - - bunniesCount+=1 - - - # // Update bunnies - for i in range(0, bunniesCount): - bunnies[i].position.x += bunnies[i].speed.x - bunnies[i].position.y += bunnies[i].speed.y - - if ((bunnies[i].position.x + texBunny.width/2) > GetScreenWidth()) or ((bunnies[i].position.x + texBunny.width/2) < 0): - bunnies[i].speed.x *= -1 - if ((bunnies[i].position.y + texBunny.height/2) > GetScreenHeight()) or ((bunnies[i].position.y + texBunny.height/2 - 40) < 0): - bunnies[i].speed.y *= -1 - - # //---------------------------------------------------------------------------------- - # - # // Draw - # //---------------------------------------------------------------------------------- - BeginDrawing() - - ClearBackground(RAYWHITE) - - for i in range(0, bunniesCount): - # // NOTE: When internal batch buffer limit is reached (MAX_BATCH_ELEMENTS), - # // a draw call is launched and buffer starts being filled again; - # // before issuing a draw call, updated vertex data from internal CPU buffer is send to GPU... - # // Process of sending data is costly and it could happen that GPU data has not been completely - # // processed for drawing while new data is tried to be sent (updating current in-use buffers) - # // it could generates a stall and consequently a frame drop, limiting the number of drawn bunnies - DrawTexture(texBunny, int(bunnies[i].position.x), int(bunnies[i].position.y), bunnies[i].color) - - DrawRectangle(0, 0, screenWidth, 40, BLACK) - text = f"bunnies {bunniesCount}" - DrawText(text.encode('utf-8'), 120, 10, 20, GREEN) - text = f"batched draw calls: { 1 + int(bunniesCount/MAX_BATCH_ELEMENTS)}" - DrawText(text.encode('utf-8'), 320, 10, 20, MAROON) - - DrawFPS(10, 10) - - EndDrawing() - #//---------------------------------------------------------------------------------- - - -#// De-Initialization -#//-------------------------------------------------------------------------------------- - - -UnloadTexture(texBunny) #Unload bunny texture - -CloseWindow() # Close window and OpenGL context -#//-------------------------------------------------------------------------------------- - diff --git a/examples/textures/textures_bunnymark_more_pythonic.py b/examples/textures/textures_bunnymark_more_pythonic.py deleted file mode 100644 index 9792da8..0000000 --- a/examples/textures/textures_bunnymark_more_pythonic.py +++ /dev/null @@ -1,110 +0,0 @@ -# Dont use C data structures when we can avoid it. Makes Pypy slightly faster. - -from raylib import * -import random - -MAX_BUNNIES = 500000 - -# This is the maximum amount of elements (quads) per batch -# NOTE: This value is defined in [rlgl] module and can be changed there -MAX_BATCH_ELEMENTS = 8192 - - -class Bunny: - def __init__(self): - self.position_x = 0.0 - self.position_y = 0.0 - self.speed_x = 0.0 - self.speed_y = 0.0 - self.color_r = 0 - self.color_g = 0 - self.color_b = 0 - self.color_a = 0 - - -# // Initialization -# //-------------------------------------------------------------------------------------- -screenWidth = 1920; -screenHeight = 1080; - -InitWindow(screenWidth, screenHeight, b"raylib [textures] example - bunnymark") - -# // Load bunny texture -texBunny = LoadTexture(b"resources/wabbit_alpha.png") - -bunnies = [] -for i in range(0, MAX_BUNNIES): - bunnies.append(Bunny()) - -bunniesCount = 0 # Bunnies counter - -SetTargetFPS(60) # Set our game to run at 60 frames-per-second -#//-------------------------------------------------------------------------------------- - -#// Main game loop -while not WindowShouldClose(): #// Detect window close button or ESC key - #// Update - #//---------------------------------------------------------------------------------- - if IsMouseButtonDown(MOUSE_BUTTON_LEFT): - #// Create more bunnies - for i in range(0, 100): - if bunniesCount < MAX_BUNNIES: - bunnies[bunniesCount].position_x = GetMousePosition().x - bunnies[bunniesCount].position_y = GetMousePosition().y - bunnies[bunniesCount].speed_x = random.randint(-250, 250)/60.0 - bunnies[bunniesCount].speed_y = random.randint(-250, 250)/60.0 - bunnies[bunniesCount].color_r = random.randint(50,240) - bunnies[bunniesCount].color_g = random.randint(80, 240) - bunnies[bunniesCount].color_b = random.randint(100, 240) - bunnies[bunniesCount].color_a = 255 - bunniesCount+=1 - - - # // Update bunnies - for i in range(0, bunniesCount): - bunnies[i].position_x += bunnies[i].speed_x - bunnies[i].position_y += bunnies[i].speed_y - - if ((bunnies[i].position_x + texBunny.width/2) > GetScreenWidth()) or ((bunnies[i].position_x + texBunny.width/2) < 0): - bunnies[i].speed_x *= -1 - if ((bunnies[i].position_y + texBunny.height/2) > GetScreenHeight()) or ((bunnies[i].position_y + texBunny.height/2 - 40) < 0): - bunnies[i].speed_y *= -1 - - # //---------------------------------------------------------------------------------- - # - # // Draw - # //---------------------------------------------------------------------------------- - BeginDrawing() - - ClearBackground(RAYWHITE) - - for i in range(0, bunniesCount): - # // NOTE: When internal batch buffer limit is reached (MAX_BATCH_ELEMENTS), - # // a draw call is launched and buffer starts being filled again; - # // before issuing a draw call, updated vertex data from internal CPU buffer is send to GPU... - # // Process of sending data is costly and it could happen that GPU data has not been completely - # // processed for drawing while new data is tried to be sent (updating current in-use buffers) - # // it could generates a stall and consequently a frame drop, limiting the number of drawn bunnies - DrawTexture(texBunny, int(bunnies[i].position_x), int(bunnies[i].position_y), (bunnies[i].color_r,bunnies[i].color_g,bunnies[i].color_b,bunnies[i].color_a)) - - DrawRectangle(0, 0, screenWidth, 40, BLACK) - text = f"bunnies {bunniesCount}" - DrawText(text.encode('utf-8'), 120, 10, 20, GREEN) - text = f"batched draw calls: { 1 + int(bunniesCount/MAX_BATCH_ELEMENTS)}" - DrawText(text.encode('utf-8'), 320, 10, 20, MAROON) - - DrawFPS(10, 10) - - EndDrawing() - #//---------------------------------------------------------------------------------- - - -#// De-Initialization -#//-------------------------------------------------------------------------------------- - - -UnloadTexture(texBunny); #Unload bunny texture - -CloseWindow() # Close window and OpenGL context -#//-------------------------------------------------------------------------------------- - diff --git a/examples/textures/textures_image_loading.py b/examples/textures/textures_image_loading.py deleted file mode 100644 index 889c099..0000000 --- a/examples/textures/textures_image_loading.py +++ /dev/null @@ -1,27 +0,0 @@ -from raylib import * - -screenWidth = 800 -screenHeight = 450 - -InitWindow(screenWidth, screenHeight, b"raylib [textures] example - image loading") - -image = LoadImage(b"resources/raylib_logo.png") -texture = LoadTextureFromImage(image) - -UnloadImage(image) - -while not WindowShouldClose(): - - BeginDrawing() - - ClearBackground(RAYWHITE) - - DrawTexture(texture, int(screenWidth/2 - texture.width/2), int(screenHeight/2 - texture.height/2), WHITE) - - DrawText(b"this IS a texture loaded from an image!", 300, 370, 10, GRAY) - - EndDrawing() - -UnloadTexture(texture) - -CloseWindow() diff --git a/examples/textures/textures_mouse_painting.py b/examples/textures/textures_mouse_painting.py deleted file mode 100644 index 787b332..0000000 --- a/examples/textures/textures_mouse_painting.py +++ /dev/null @@ -1,186 +0,0 @@ -""" - -raylib [texture] example - Mouse Painting - -""" -from pyray import * - -MAX_COLORS_COUNT = 23 # Number of colors available - -# Initialization -screenWidth = 800 -screenHeight = 450 - -init_window(screenWidth, screenHeight, "raylib [textures] example - mouse painting") - -# Colours to choose from -colors = [RAYWHITE, YELLOW, GOLD, ORANGE, PINK, RED, MAROON, GREEN, LIME, DARKGREEN, - SKYBLUE, BLUE, DARKBLUE, PURPLE, VIOLET, DARKPURPLE, BEIGE, BROWN, DARKBROWN, - LIGHTGRAY, GRAY, DARKGRAY, BLACK] - -colorsRecs = [] - -# Define colorsRecs data (for every rectangle) -for i in range(MAX_COLORS_COUNT): - colorsRecs.append(Rectangle(10 + 30.0 * i + 2 * i, 10, 30, 30)) - -colorSelected = 0 -colorSelectedPrev = colorSelected -colorMouseHover = 0 -brushSize = 20.0 -mouseWasPressed = False - -btnSaveRec = Rectangle(750, 10, 40, 30) -btnSaveMouseHover = False -showSaveMessage = False -saveMessageCounter = 0 - -# Create a RenderTexture2D to use as a canvas -target = load_render_texture(screenWidth, screenHeight) - -# Clear render texture before entering the game loop -begin_texture_mode(target) -clear_background(colors[0]) -end_texture_mode() - -set_target_fps(120) # Set our game to run at 120 frames-per-second - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - mousePos = get_mouse_position() - - # Move between colors with keys - if is_key_pressed(KeyboardKey.KEY_RIGHT): - colorSelected += 1 - elif is_key_pressed(KeyboardKey.KEY_LEFT): - colorSelected -= 1 - - if colorSelected >= MAX_COLORS_COUNT: - colorSelected = MAX_COLORS_COUNT - 1 - elif colorSelected < 0: - colorSelected = 0 - - # Choose color with mouse - for i in range(MAX_COLORS_COUNT): - if check_collision_point_rec(mousePos, colorsRecs[i]): - colorMouseHover = i - break - else: - colorMouseHover = -1 - - if colorMouseHover >= 0 and is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_LEFT): - colorSelected = colorMouseHover - colorSelectedPrev = colorSelected - - # Change brush size - brushSize += get_mouse_wheel_move() * 5 - if brushSize < 2: brushSize = 2 - if brushSize > 50: brushSize = 50 - - if is_key_pressed(KeyboardKey.KEY_C): - # Clear render texture to clear color - begin_texture_mode(target) - clear_background(colors[0]) - end_texture_mode() - - if is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_LEFT) or get_gesture_detected() == Gesture.GESTURE_DRAG: - - # Paint circle into render texture - # NOTE: To avoid discontinuous circles, we could store - # previous-next mouse points and just draw a line using brush size - begin_texture_mode(target) - if mousePos.y > 50: - draw_circle(int(mousePos.x), int(mousePos.y), brushSize, colors[colorSelected]) - end_texture_mode() - if is_mouse_button_down(MouseButton.MOUSE_BUTTON_RIGHT): - - if not mouseWasPressed: - colorSelectedPrev = colorSelected - colorSelected = 0 - - mouseWasPressed = True - - # Erase circle from render texture - begin_texture_mode(target) - if mousePos.y > 50: draw_circle(int(mousePos.x), int(mousePos.y), brushSize, colors[0]) - end_texture_mode() - - elif is_mouse_button_released(MouseButton.MOUSE_BUTTON_RIGHT) and mouseWasPressed: - - colorSelected = colorSelectedPrev - mouseWasPressed = False - - # Check mouse hover save button - if check_collision_point_rec(mousePos, btnSaveRec): - btnSaveMouseHover = True - else: - btnSaveMouseHover = False - - # Image saving logic - # NOTE: Saving painted texture to a default named image - if (btnSaveMouseHover and is_mouse_button_released(MouseButton.MOUSE_BUTTON_LEFT)) or is_key_pressed(KeyboardKey.KEY_S): - image = load_image_from_texture(target.texture) - image_flip_vertical(image) - export_image(image, "my_amazing_texture_painting.png") - unload_image(image) - showSaveMessage = True - - if showSaveMessage: - # On saving, show a full screen message for 2 seconds - saveMessageCounter += 1 - if saveMessageCounter > 240: - showSaveMessage = False - saveMessageCounter = 0 - - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - begin_drawing() - clear_background(RAYWHITE) - - # NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom) - draw_texture_rec(target.texture, Rectangle(0, 0, float(target.texture.width), float(-target.texture.height)), - Vector2(0, 0), WHITE) - - # Draw drawing circle for reference - if mousePos.y > 50: - if is_mouse_button_down(MouseButton.MOUSE_BUTTON_RIGHT): - draw_circle_lines(int(mousePos.x), int(mousePos.y), brushSize, GRAY) - else: - draw_circle(get_mouse_x(), get_mouse_y(), brushSize, colors[colorSelected]) - # Draw top panel - draw_rectangle(0, 0, get_screen_width(), 50, RAYWHITE) - draw_line(0, 50, get_screen_width(), 50, LIGHTGRAY) - - # Draw color selection rectangles - for i in range(MAX_COLORS_COUNT): - draw_rectangle_rec(colorsRecs[i], colors[i]) - draw_rectangle_lines(10, 10, 30, 30, LIGHTGRAY) - - if colorMouseHover >= 0: draw_rectangle_rec(colorsRecs[colorMouseHover], fade(WHITE, 0.6)) - - draw_rectangle_lines_ex( - Rectangle(colorsRecs[colorSelected].x - 2, colorsRecs[colorSelected].y - 2, colorsRecs[colorSelected].width + 4, - colorsRecs[colorSelected].height + 4), 2, BLACK) - - # Draw save image button - draw_rectangle_lines_ex(btnSaveRec, 2, RED if btnSaveMouseHover else BLACK) - draw_text("SAVE!", 755, 20, 10, RED if btnSaveMouseHover else BLACK) - - if showSaveMessage: - draw_rectangle(0, 0, get_screen_width(), get_screen_height(), fade(RAYWHITE, 0.8)) - draw_rectangle(0, 150, get_screen_width(), 80, BLACK) - draw_text("IMAGE SAVED: my_amazing_texture_painting.png", 150, 180, 20, RAYWHITE) - - end_drawing() - - # ---------------------------------------------------------------------------------- - -# De-Initialization -# ---------------------------------------------------------------------------------- -unload_render_texture(target) # Unload render texture - -close_window() # Close window and OpenGL context diff --git a/examples/textures/textures_sprite_anim.py b/examples/textures/textures_sprite_anim.py deleted file mode 100644 index c2b9788..0000000 --- a/examples/textures/textures_sprite_anim.py +++ /dev/null @@ -1,78 +0,0 @@ -# Tested with version: 5.5.0.2 -# by @Lightnet - -from pyray import * - - -currentFrame = 0 -framesCounter = 0 -framesSpeed = 8 -# Initialization -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 450 - -MAX_FRAME_SPEED = 15 -MIN_FRAME_SPEED = 1 - -init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [texture] example - sprite anim") - -#need to set in case of animation snyc -set_target_fps(60) # Set our game to run at 60 frames-per-second - -scarfy = load_texture("resources/scarfy.png") # Texture loading - -frameRec = Rectangle(0.0, 0.0, scarfy.width/6, scarfy.height) - -position = Vector2(350.0, 280.0) - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - - framesCounter += 1 - - if framesCounter >= 60/framesSpeed: - framesCounter = 0 - currentFrame += 1 - if currentFrame > 5: - currentFrame = 0 - - frameRec.x = float(currentFrame) * float(scarfy.width/6) - # Control speed animation - if (is_key_pressed(KeyboardKey.KEY_RIGHT)): - framesSpeed += 1 - elif is_key_pressed(KeyboardKey.KEY_LEFT): - framesSpeed -= 1 - - if framesSpeed > MAX_FRAME_SPEED: - framesSpeed = MAX_FRAME_SPEED - elif framesSpeed < MIN_FRAME_SPEED: - framesSpeed = MIN_FRAME_SPEED - - begin_drawing() - - clear_background(RAYWHITE) - #draw sheet block - draw_rectangle_lines(15, 40, scarfy.width, scarfy.height, LIME) - #draw current frame render - draw_rectangle_lines(15 + int(frameRec.x), 40 + int(frameRec.y), int(frameRec.width), int(frameRec.height), RED) - draw_text("FRAME SPEED: ", 165, 210, 10, DARKGRAY) - draw_text(f" FPS {framesSpeed}", 575, 210, 10, DARKGRAY) #format string - draw_text("PRESS RIGHT/LEFT KEYS to CHANGE SPEED!", 290, 240, 10, DARKGRAY) - #display bar framesSpeed cap - for i in range(MAX_FRAME_SPEED): - if i < framesSpeed: - draw_rectangle(250 + 21*i, 205, 20, 20, RED) - draw_rectangle_lines(250 + 21*i, 205, 20, 20, MAROON) - #draw sprite sheet texture - draw_texture(scarfy, 15, 40, WHITE) - #draw sprite animation - draw_texture_rec(scarfy, frameRec, position,WHITE) - - draw_text("(c) Scarfy sprite by Eiden Marsal", SCREEN_WIDTH - 200, SCREEN_HEIGHT - 20, 10, GRAY) - - end_drawing() - -# De-Initialization -unload_texture(scarfy) - -close_window() # Close window and OpenGL context diff --git a/examples/textures/textures_to_image.py b/examples/textures/textures_to_image.py deleted file mode 100644 index 87ec5ab..0000000 --- a/examples/textures/textures_to_image.py +++ /dev/null @@ -1,55 +0,0 @@ -""" - -raylib [texture] example - To image - -""" -from pyray import * - -# Initialization -screenWidth = 800 -screenHeight = 450 - -init_window(screenWidth, screenHeight, "raylib [textures] example - texture to image") - -# NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) - -image = load_image("resources/raylib_logo.png") # Load image data into CPU memory (RAM) -texture = load_texture_from_image(image) # Image converted to texture, GPU memory (RAM -> VRAM) -unload_image(image) # Unload image data from CPU memory (RAM) - -image = load_image_from_texture(texture) # Load image from GPU texture (VRAM -> RAM) -unload_texture(texture) # Unload texture from GPU memory (VRAM) - -texture = load_texture_from_image(image) # Recreate texture from retrieved image data (RAM -> VRAM) -unload_image(image) # Unload retrieved image data from CPU memory (RAM) -# --------------------------------------------------------------------------------------- - - -# Main game loop -while not window_should_close(): # Detect window close button or ESC key - - # Update - # ---------------------------------------------------------------------------------- - # TODO: Update your variables here - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - begin_drawing() - - clear_background(RAYWHITE) - - texture.width - - draw_texture(texture, int(screenWidth/2 - texture.width/2), int(screenHeight/2 - texture.height/2), WHITE) - - draw_text("this IS a texture loaded from an image!", 300, 370, 10, GRAY) - - end_drawing() - # ---------------------------------------------------------------------------------- - -# De-Initialization -# ---------------------------------------------------------------------------------- -unload_texture(texture) # Unload render texture - -close_window() # Close window and OpenGL context diff --git a/examples/textures/texures_srcrec_dstrec.py b/examples/textures/texures_srcrec_dstrec.py deleted file mode 100644 index 9ab4650..0000000 --- a/examples/textures/texures_srcrec_dstrec.py +++ /dev/null @@ -1,81 +0,0 @@ -""" - -raylib [textures] example - Texture source and destination rectangles - -""" - -# Import -# ------------------------------------------------------------------------------------ -from pyray import * -# ------------------------------------------------------------------------------------ - -# ------------------------------------------------------------------------------------ -# Program main entry point -# ------------------------------------------------------------------------------------ -def main(): - # Initialization - # ------------------------------------------------------------------------------------ - SCREEN_WIDTH = 800 - SCREEN_HEIGHT = 450 - - init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [textures] examples - texture source and destination rectangles") - - # NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) - - scarfy = load_texture("resources/scarfy.png") # Texture loading - - frame_width = scarfy.width / 6 - frame_height = scarfy.height - - # Source rectangle (part of the texture to use for drawing) - source_rec = Rectangle(0, 0, frame_width, frame_height) - - # Destination rectangle (screen rectangle where drawing part of texture) - dest_rec = Rectangle(SCREEN_WIDTH/2, SCREEN_HEIGHT/2, frame_width*2, frame_height*2) - - # Origin of the texture (rotation/scale point), it's relative to destination rectangle size - origin = Vector2(frame_width, frame_height) - - rotation = 0 - - set_target_fps(60) # Set our game to run at 60 frames-per-second - # ------------------------------------------------------------------------------------ - - # Main game loop - while not window_should_close(): # Detect window close button or ESC key - # Update - # ---------------------------------------------------------------------------------- - rotation += 1 - # ---------------------------------------------------------------------------------- - - # Draw - # ---------------------------------------------------------------------------------- - begin_drawing() - - clear_background(RAYWHITE) - - # NOTE: Using DrawTexturePro() we can easily rotate and scale the part of the texture we draw - # sourceRec defines the part of the texture we use for drawing - # destRec defines the rectangle where our texture part will fit (scaling it to fit) - # origin defines the point of the texture used as reference for rotation and scaling - # rotation defines the texture rotation (using origin as rotation point) - - draw_texture_pro(scarfy, source_rec, dest_rec, origin, rotation, WHITE) - - draw_line(int(dest_rec.x), 0, int(dest_rec.x), SCREEN_HEIGHT, GRAY) - draw_line(0, int(dest_rec.y), SCREEN_WIDTH, int(dest_rec.y), GRAY) - - draw_text("(c) Scarfy sprite by Eiden Marsal", SCREEN_WIDTH - 200, SCREEN_HEIGHT - 20, 10, GRAY) - - end_drawing() - # ---------------------------------------------------------------------------------- - - # De-Initialization - # ---------------------------------------------------------------------------------- - close_window() # Close window and OpenGL context - # ---------------------------------------------------------------------------------- - - -# Execute the main function -if __name__ == '__main__': - main() diff --git a/examples/extra/extra_transparent_undecorated_window.py b/examples/transparent_undecorated_window.py similarity index 96% rename from examples/extra/extra_transparent_undecorated_window.py rename to examples/transparent_undecorated_window.py index 3c5895a..8b7c55b 100644 --- a/examples/extra/extra_transparent_undecorated_window.py +++ b/examples/transparent_undecorated_window.py @@ -1,11 +1,8 @@ """ -FIXME this example is broken with Raylib 4.0 - Requirements: - raylib - pytweening - pyglm -- screeninfo Windows-Only Requirements: - win32gui @@ -18,10 +15,10 @@ Mac: """ import sys, time -import glm # type: ignore -import pytweening as tween # type: ignore -import screeninfo # type: ignore -from raylib import rl, ffi +import glm +import pytweening as tween +import screeninfo +from raylib.dynamic import raylib as rl, ffi from raylib.colors import * diff --git a/libraylib_mac.a b/libraylib_mac.a new file mode 100644 index 0000000..37418a7 Binary files /dev/null and b/libraylib_mac.a differ diff --git a/make_docs.sh b/make_docs.sh deleted file mode 100755 index fa748bc..0000000 --- a/make_docs.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env bash - -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 .. -make -j2 -sudo make install -cd ../.. - -echo "installing raylib headers to /usr/local/include" - -sudo cp -v ./raylib-c/src/raylib.h /usr/local/include/ -sudo cp -v ./raylib-c/src/rlgl.h /usr/local/include/ -sudo cp -v ./raylib-c/src/raymath.h /usr/local/include/ -sudo cp -v ./raygui/src/raygui.h /usr/local/include/ -sudo cp -v ./physac/src/physac.h /usr/local/include/ -sudo cp -rv ./raylib-c/src/external/glfw/include/GLFW /usr/local/include/ - -echo "building raylib_parser" - -gcc raylib-c/parser/raylib_parser.c - -echo "running parser" - -./a.out -i raygui/src/raygui.h -d RAYGUIAPI -o raygui.json -f JSON -./a.out -i physac/src/physac.h -d PHYSACDEF -o physac.json -f JSON -./a.out -i raylib-c/src/raylib.h -o raylib.json -f JSON -./a.out -i raylib-c/src/rlgl.h -o rlgl.json -f JSON -./a.out -i raylib-c/src/raymath.h -d RMAPI -o raymath.json -f JSON -./a.out -i raylib-c/src/external/glfw/include/GLFW/glfw3.h -d GLFWAPI -o glfw3.json -f JSON -sed -i "s|\/\*.*,$|,|g" glfw3.json - -echo "building raylib_python_cffi" - -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 - -echo "creating defines.py" - -python3 create_define_consts.py | awk '!seen[$0]++' > raylib/defines.py -python3 create_define_consts.py | awk '!seen[$0]++' > dynamic/raylib/defines.py - - -echo "creating pyi files" - -python3 create_stub_pyray.py > pyray/__init__.pyi -python3 create_stub_static.py >raylib/__init__.pyi -python3 create_stub_static.py >dynamic/raylib/__init__.pyi - -echo "installing sphinx modules" - -python3 -m venv venv -source venv/bin/activate -pip3 install sphinx-autoapi myst_parser sphinx_rtd_theme - -echo "building docs" -rm -r docs -cd docs-src -make clean ; make html ; mv _build/html/ ../docs/ -touch ../docs/.nojekyll diff --git a/physac b/physac deleted file mode 160000 index 587b639..0000000 --- a/physac +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 587b63926010593eedf29ef74e3aa22c1a507925 diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index fed528d..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,3 +0,0 @@ -[build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" diff --git a/pyray/__init__.py b/pyray/__init__.py deleted file mode 100644 index 4a28587..0000000 --- a/pyray/__init__.py +++ /dev/null @@ -1,159 +0,0 @@ -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 -import re -import weakref -from array import array - -from raylib import rl, ffi -from raylib.colors import * - -try: - from raylib.defines import * -except AttributeError: - print("sorry deprecated enums dont work on dynamic version") - -from inspect import getmembers, isbuiltin - -current_module = __import__(__name__) - - -def _underscore(word: str) -> str: - word = re.sub('2D$', '_2d', word) - word = re.sub('3D$', '_3d', word) - word = re.sub(r"([A-Z]+)([A-Z][a-z])", r'\1_\2', word) - word = re.sub(r"([a-z\d])([A-Z])", r'\1_\2', word) - word = word.replace("-", "_") - return word.lower() - - -def _wrap_function(original_func): - c_args = [str(x) for x in ffi.typeof(original_func).args] - number_of_args = len(c_args) - c_arg_is_pointer = [x.kind == 'pointer' for x in ffi.typeof(original_func).args] - c_arg_is_string = [str(x) == "" for x in ffi.typeof(original_func).args] - # c_arg_is_void_pointer = [str(x) == "" for x in ffi.typeof(original_func).args] - - def wrapped_func(*args): - args = list(args) # tuple is immutable, converting it to mutable list is faster than constructing new list! - for i in range(number_of_args): - try: - arg = args[i] - except IndexError: - raise RuntimeError(f"function requires {number_of_args} arguments but you supplied {len(args)}") - if c_arg_is_pointer[i]: - if c_arg_is_string[i]: # we assume c_arg is 'const char *' - try: # if it's a non-const 'char *' then user should be supplying a ctype pointer, not a Python - # string - args[i] = arg.encode('utf-8') # in that case this conversion will fail - except AttributeError: # but those functions are uncommon, so quicker on average to try the - # conversion - pass # and ignore the exception - # if user supplied a Python string but c_arg is a 'char *' not a 'const char *' then we ought to raise - # exception because its an out - # parameter and user should supply a ctype pointer, but we cant because cffi cant detect 'const' - # so we would have to get the info from raylib.json - elif c_args[i] == "" and type(arg) is list: - args[i] = [ffi.new("char[]", x.encode('utf-8')) for x in arg] - elif is_cdata(arg) and "*" not in str(arg): - args[i] = ffi.addressof(arg) - elif arg is None: - args[i] = ffi.NULL - elif not is_cdata(arg): - if c_args[i] == "": - raise TypeError( - f"Argument {i} ({arg}) must be a ctype bool, please create one with: pyray.ffi.new('bool " - f"*', True)") - elif c_args[i] == "": - raise TypeError( - f"Argument {i} ({arg}) must be a ctype int, please create one with: pyray.ffi.new('int " - f"*', 1)") - elif c_args[i] == "": - raise TypeError( - f"Argument {i} ({arg}) must be a ctype float, please create one with: pyray.ffi.new(" - f"'float *', 1.0)") - elif c_args[i] == "": - # we could assume it's a string and try to convert it but we would have to be sure it's - # const. that seems reasonable assumption for char* but i'm not confident it is for void* - raise TypeError( - f"Argument {i} ({arg}) must be a cdata pointer. Type is void so I don't know what type it " - f"should be." - "If it's a const string you can create it with pyray.ffi.new('char []', b\"whatever\") . " - "If it's a float you can create it with pyray.ffi.new('float *', 1.0)") - - result = original_func(*args) - if result is None: - return - elif is_cdata(result) and str(result).startswith("": - return "" - else: - return ffi.string(result).decode('utf-8') - else: - return result - - # apparently pypy and cpython produce different types so check for both - def is_cdata(arg): - return str(type(arg)) == "" or str( - type(arg)) == "" - - return wrapped_func - - -global_weakkeydict = weakref.WeakKeyDictionary() - - -def _make_struct_constructor_function(struct): - def func(*args): - # print(struct, args) - modified_args = [] - for (field, arg) in zip(ffi.typeof(struct).fields, args): - # print("arg:", str(arg), "field:", field[1], "field type:", field[1].type, "type(arg):", str(type(arg))) - if arg is None: - arg = ffi.NULL - elif (field[1].type.kind == 'pointer' - and (str(type(arg)) == "" - or isinstance(arg, (array, bytes, bytearray, memoryview)))): - arg = ffi.from_buffer(field[1].type, arg) - modified_args.append(arg) - s = ffi.new(f"{struct} *", modified_args)[0] - global_weakkeydict[s] = modified_args - return s - - return func - - -for name, attr in getmembers(rl): - # print(name, attr) - uname = _underscore(name) - if isbuiltin(attr) or str(type(attr)) == "" or str( - type(attr)) == "": - # print(attr.__call__) - # print(attr.__doc__) - # print(dir(attr)) - # print(dir(attr.__repr__)) - f = _wrap_function(attr) - setattr(current_module, uname, f) - else: - setattr(current_module, name, attr) - -for struct in ffi.list_types()[0]: - f = _make_struct_constructor_function(struct) - setattr(current_module, struct, f) - -# overwrite ffi enums with our own -from raylib.enums import * - - -def text_format(*args): - raise RuntimeError("Use Python f-strings etc rather than calling text_format().") diff --git a/pyray/__init__.pyi b/pyray/__init__.pyi deleted file mode 100644 index e8e8acb..0000000 --- a/pyray/__init__.pyi +++ /dev/null @@ -1,4555 +0,0 @@ -class ConfigFlags(int): - """System/Window config flags.""" - FLAG_VSYNC_HINT = 64 - FLAG_FULLSCREEN_MODE = 2 - FLAG_WINDOW_RESIZABLE = 4 - FLAG_WINDOW_UNDECORATED = 8 - FLAG_WINDOW_HIDDEN = 128 - FLAG_WINDOW_MINIMIZED = 512 - FLAG_WINDOW_MAXIMIZED = 1024 - FLAG_WINDOW_UNFOCUSED = 2048 - FLAG_WINDOW_TOPMOST = 4096 - FLAG_WINDOW_ALWAYS_RUN = 256 - FLAG_WINDOW_TRANSPARENT = 16 - FLAG_WINDOW_HIGHDPI = 8192 - FLAG_WINDOW_MOUSE_PASSTHROUGH = 16384 - FLAG_BORDERLESS_WINDOWED_MODE = 32768 - FLAG_MSAA_4X_HINT = 32 - FLAG_INTERLACED_HINT = 65536 - -class TraceLogLevel(int): - """Trace log level.""" - LOG_ALL = 0 - LOG_TRACE = 1 - LOG_DEBUG = 2 - LOG_INFO = 3 - LOG_WARNING = 4 - LOG_ERROR = 5 - LOG_FATAL = 6 - LOG_NONE = 7 - -class KeyboardKey(int): - """Keyboard keys (US keyboard layout).""" - KEY_NULL = 0 - KEY_APOSTROPHE = 39 - KEY_COMMA = 44 - KEY_MINUS = 45 - KEY_PERIOD = 46 - KEY_SLASH = 47 - KEY_ZERO = 48 - KEY_ONE = 49 - KEY_TWO = 50 - KEY_THREE = 51 - KEY_FOUR = 52 - KEY_FIVE = 53 - KEY_SIX = 54 - KEY_SEVEN = 55 - KEY_EIGHT = 56 - KEY_NINE = 57 - KEY_SEMICOLON = 59 - KEY_EQUAL = 61 - KEY_A = 65 - KEY_B = 66 - KEY_C = 67 - KEY_D = 68 - KEY_E = 69 - KEY_F = 70 - KEY_G = 71 - KEY_H = 72 - KEY_I = 73 - KEY_J = 74 - KEY_K = 75 - KEY_L = 76 - KEY_M = 77 - KEY_N = 78 - KEY_O = 79 - KEY_P = 80 - KEY_Q = 81 - KEY_R = 82 - KEY_S = 83 - KEY_T = 84 - KEY_U = 85 - KEY_V = 86 - KEY_W = 87 - KEY_X = 88 - KEY_Y = 89 - KEY_Z = 90 - KEY_LEFT_BRACKET = 91 - KEY_BACKSLASH = 92 - KEY_RIGHT_BRACKET = 93 - KEY_GRAVE = 96 - KEY_SPACE = 32 - KEY_ESCAPE = 256 - KEY_ENTER = 257 - KEY_TAB = 258 - KEY_BACKSPACE = 259 - KEY_INSERT = 260 - KEY_DELETE = 261 - KEY_RIGHT = 262 - KEY_LEFT = 263 - KEY_DOWN = 264 - KEY_UP = 265 - KEY_PAGE_UP = 266 - KEY_PAGE_DOWN = 267 - KEY_HOME = 268 - KEY_END = 269 - KEY_CAPS_LOCK = 280 - KEY_SCROLL_LOCK = 281 - KEY_NUM_LOCK = 282 - KEY_PRINT_SCREEN = 283 - KEY_PAUSE = 284 - KEY_F1 = 290 - KEY_F2 = 291 - KEY_F3 = 292 - KEY_F4 = 293 - KEY_F5 = 294 - KEY_F6 = 295 - KEY_F7 = 296 - KEY_F8 = 297 - KEY_F9 = 298 - KEY_F10 = 299 - KEY_F11 = 300 - KEY_F12 = 301 - KEY_LEFT_SHIFT = 340 - KEY_LEFT_CONTROL = 341 - KEY_LEFT_ALT = 342 - KEY_LEFT_SUPER = 343 - KEY_RIGHT_SHIFT = 344 - KEY_RIGHT_CONTROL = 345 - KEY_RIGHT_ALT = 346 - KEY_RIGHT_SUPER = 347 - KEY_KB_MENU = 348 - KEY_KP_0 = 320 - KEY_KP_1 = 321 - KEY_KP_2 = 322 - KEY_KP_3 = 323 - KEY_KP_4 = 324 - KEY_KP_5 = 325 - KEY_KP_6 = 326 - KEY_KP_7 = 327 - KEY_KP_8 = 328 - KEY_KP_9 = 329 - KEY_KP_DECIMAL = 330 - KEY_KP_DIVIDE = 331 - KEY_KP_MULTIPLY = 332 - KEY_KP_SUBTRACT = 333 - KEY_KP_ADD = 334 - KEY_KP_ENTER = 335 - KEY_KP_EQUAL = 336 - KEY_BACK = 4 - KEY_MENU = 5 - KEY_VOLUME_UP = 24 - KEY_VOLUME_DOWN = 25 - -class MouseButton(int): - """Mouse buttons.""" - MOUSE_BUTTON_LEFT = 0 - MOUSE_BUTTON_RIGHT = 1 - MOUSE_BUTTON_MIDDLE = 2 - MOUSE_BUTTON_SIDE = 3 - MOUSE_BUTTON_EXTRA = 4 - MOUSE_BUTTON_FORWARD = 5 - MOUSE_BUTTON_BACK = 6 - -class MouseCursor(int): - """Mouse cursor.""" - MOUSE_CURSOR_DEFAULT = 0 - MOUSE_CURSOR_ARROW = 1 - MOUSE_CURSOR_IBEAM = 2 - MOUSE_CURSOR_CROSSHAIR = 3 - MOUSE_CURSOR_POINTING_HAND = 4 - MOUSE_CURSOR_RESIZE_EW = 5 - MOUSE_CURSOR_RESIZE_NS = 6 - MOUSE_CURSOR_RESIZE_NWSE = 7 - MOUSE_CURSOR_RESIZE_NESW = 8 - MOUSE_CURSOR_RESIZE_ALL = 9 - MOUSE_CURSOR_NOT_ALLOWED = 10 - -class GamepadButton(int): - """Gamepad buttons.""" - GAMEPAD_BUTTON_UNKNOWN = 0 - GAMEPAD_BUTTON_LEFT_FACE_UP = 1 - GAMEPAD_BUTTON_LEFT_FACE_RIGHT = 2 - GAMEPAD_BUTTON_LEFT_FACE_DOWN = 3 - GAMEPAD_BUTTON_LEFT_FACE_LEFT = 4 - GAMEPAD_BUTTON_RIGHT_FACE_UP = 5 - GAMEPAD_BUTTON_RIGHT_FACE_RIGHT = 6 - GAMEPAD_BUTTON_RIGHT_FACE_DOWN = 7 - GAMEPAD_BUTTON_RIGHT_FACE_LEFT = 8 - GAMEPAD_BUTTON_LEFT_TRIGGER_1 = 9 - GAMEPAD_BUTTON_LEFT_TRIGGER_2 = 10 - GAMEPAD_BUTTON_RIGHT_TRIGGER_1 = 11 - GAMEPAD_BUTTON_RIGHT_TRIGGER_2 = 12 - GAMEPAD_BUTTON_MIDDLE_LEFT = 13 - GAMEPAD_BUTTON_MIDDLE = 14 - GAMEPAD_BUTTON_MIDDLE_RIGHT = 15 - GAMEPAD_BUTTON_LEFT_THUMB = 16 - GAMEPAD_BUTTON_RIGHT_THUMB = 17 - -class GamepadAxis(int): - """Gamepad axis.""" - GAMEPAD_AXIS_LEFT_X = 0 - GAMEPAD_AXIS_LEFT_Y = 1 - GAMEPAD_AXIS_RIGHT_X = 2 - GAMEPAD_AXIS_RIGHT_Y = 3 - GAMEPAD_AXIS_LEFT_TRIGGER = 4 - GAMEPAD_AXIS_RIGHT_TRIGGER = 5 - -class MaterialMapIndex(int): - """Material map index.""" - MATERIAL_MAP_ALBEDO = 0 - MATERIAL_MAP_METALNESS = 1 - MATERIAL_MAP_NORMAL = 2 - MATERIAL_MAP_ROUGHNESS = 3 - MATERIAL_MAP_OCCLUSION = 4 - MATERIAL_MAP_EMISSION = 5 - MATERIAL_MAP_HEIGHT = 6 - MATERIAL_MAP_CUBEMAP = 7 - MATERIAL_MAP_IRRADIANCE = 8 - MATERIAL_MAP_PREFILTER = 9 - MATERIAL_MAP_BRDF = 10 - -class ShaderLocationIndex(int): - """Shader location index.""" - SHADER_LOC_VERTEX_POSITION = 0 - SHADER_LOC_VERTEX_TEXCOORD01 = 1 - SHADER_LOC_VERTEX_TEXCOORD02 = 2 - SHADER_LOC_VERTEX_NORMAL = 3 - SHADER_LOC_VERTEX_TANGENT = 4 - SHADER_LOC_VERTEX_COLOR = 5 - SHADER_LOC_MATRIX_MVP = 6 - SHADER_LOC_MATRIX_VIEW = 7 - SHADER_LOC_MATRIX_PROJECTION = 8 - SHADER_LOC_MATRIX_MODEL = 9 - SHADER_LOC_MATRIX_NORMAL = 10 - SHADER_LOC_VECTOR_VIEW = 11 - SHADER_LOC_COLOR_DIFFUSE = 12 - SHADER_LOC_COLOR_SPECULAR = 13 - SHADER_LOC_COLOR_AMBIENT = 14 - SHADER_LOC_MAP_ALBEDO = 15 - SHADER_LOC_MAP_METALNESS = 16 - SHADER_LOC_MAP_NORMAL = 17 - SHADER_LOC_MAP_ROUGHNESS = 18 - SHADER_LOC_MAP_OCCLUSION = 19 - SHADER_LOC_MAP_EMISSION = 20 - SHADER_LOC_MAP_HEIGHT = 21 - SHADER_LOC_MAP_CUBEMAP = 22 - 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(int): - """Shader uniform data type.""" - SHADER_UNIFORM_FLOAT = 0 - SHADER_UNIFORM_VEC2 = 1 - SHADER_UNIFORM_VEC3 = 2 - SHADER_UNIFORM_VEC4 = 3 - SHADER_UNIFORM_INT = 4 - SHADER_UNIFORM_IVEC2 = 5 - SHADER_UNIFORM_IVEC3 = 6 - SHADER_UNIFORM_IVEC4 = 7 - SHADER_UNIFORM_SAMPLER2D = 8 - -class ShaderAttributeDataType(int): - """Shader attribute data types.""" - SHADER_ATTRIB_FLOAT = 0 - SHADER_ATTRIB_VEC2 = 1 - SHADER_ATTRIB_VEC3 = 2 - SHADER_ATTRIB_VEC4 = 3 - -class PixelFormat(int): - """Pixel formats.""" - PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1 - PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2 - PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3 - PIXELFORMAT_UNCOMPRESSED_R8G8B8 = 4 - PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = 5 - PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = 6 - PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = 7 - PIXELFORMAT_UNCOMPRESSED_R32 = 8 - PIXELFORMAT_UNCOMPRESSED_R32G32B32 = 9 - PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = 10 - PIXELFORMAT_UNCOMPRESSED_R16 = 11 - PIXELFORMAT_UNCOMPRESSED_R16G16B16 = 12 - PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 = 13 - PIXELFORMAT_COMPRESSED_DXT1_RGB = 14 - PIXELFORMAT_COMPRESSED_DXT1_RGBA = 15 - PIXELFORMAT_COMPRESSED_DXT3_RGBA = 16 - PIXELFORMAT_COMPRESSED_DXT5_RGBA = 17 - PIXELFORMAT_COMPRESSED_ETC1_RGB = 18 - PIXELFORMAT_COMPRESSED_ETC2_RGB = 19 - PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = 20 - PIXELFORMAT_COMPRESSED_PVRT_RGB = 21 - PIXELFORMAT_COMPRESSED_PVRT_RGBA = 22 - PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 23 - PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 24 - -class TextureFilter(int): - """Texture parameters: filter mode.""" - TEXTURE_FILTER_POINT = 0 - TEXTURE_FILTER_BILINEAR = 1 - TEXTURE_FILTER_TRILINEAR = 2 - TEXTURE_FILTER_ANISOTROPIC_4X = 3 - TEXTURE_FILTER_ANISOTROPIC_8X = 4 - TEXTURE_FILTER_ANISOTROPIC_16X = 5 - -class TextureWrap(int): - """Texture parameters: wrap mode.""" - TEXTURE_WRAP_REPEAT = 0 - TEXTURE_WRAP_CLAMP = 1 - TEXTURE_WRAP_MIRROR_REPEAT = 2 - TEXTURE_WRAP_MIRROR_CLAMP = 3 - -class CubemapLayout(int): - """Cubemap layouts.""" - CUBEMAP_LAYOUT_AUTO_DETECT = 0 - CUBEMAP_LAYOUT_LINE_VERTICAL = 1 - CUBEMAP_LAYOUT_LINE_HORIZONTAL = 2 - CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR = 3 - CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE = 4 - -class FontType(int): - """Font type, defines generation method.""" - FONT_DEFAULT = 0 - FONT_BITMAP = 1 - FONT_SDF = 2 - -class BlendMode(int): - """Color blending modes (pre-defined).""" - BLEND_ALPHA = 0 - BLEND_ADDITIVE = 1 - BLEND_MULTIPLIED = 2 - BLEND_ADD_COLORS = 3 - BLEND_SUBTRACT_COLORS = 4 - BLEND_ALPHA_PREMULTIPLY = 5 - BLEND_CUSTOM = 6 - BLEND_CUSTOM_SEPARATE = 7 - -class Gesture(int): - """Gesture.""" - GESTURE_NONE = 0 - GESTURE_TAP = 1 - GESTURE_DOUBLETAP = 2 - GESTURE_HOLD = 4 - GESTURE_DRAG = 8 - GESTURE_SWIPE_RIGHT = 16 - GESTURE_SWIPE_LEFT = 32 - GESTURE_SWIPE_UP = 64 - GESTURE_SWIPE_DOWN = 128 - GESTURE_PINCH_IN = 256 - GESTURE_PINCH_OUT = 512 - -class CameraMode(int): - """Camera system modes.""" - CAMERA_CUSTOM = 0 - CAMERA_FREE = 1 - CAMERA_ORBITAL = 2 - CAMERA_FIRST_PERSON = 3 - CAMERA_THIRD_PERSON = 4 - -class CameraProjection(int): - """Camera projection.""" - CAMERA_PERSPECTIVE = 0 - CAMERA_ORTHOGRAPHIC = 1 - -class NPatchLayout(int): - """N-patch layout.""" - NPATCH_NINE_PATCH = 0 - NPATCH_THREE_PATCH_VERTICAL = 1 - NPATCH_THREE_PATCH_HORIZONTAL = 2 - -class rlGlVersion(int): - """OpenGL version.""" - RL_OPENGL_11 = 1 - RL_OPENGL_21 = 2 - RL_OPENGL_33 = 3 - RL_OPENGL_43 = 4 - RL_OPENGL_ES_20 = 5 - RL_OPENGL_ES_30 = 6 - -class rlTraceLogLevel(int): - """Trace log level.""" - RL_LOG_ALL = 0 - RL_LOG_TRACE = 1 - RL_LOG_DEBUG = 2 - RL_LOG_INFO = 3 - RL_LOG_WARNING = 4 - RL_LOG_ERROR = 5 - RL_LOG_FATAL = 6 - RL_LOG_NONE = 7 - -class rlPixelFormat(int): - """Texture pixel formats.""" - RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1 - RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2 - RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3 - RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8 = 4 - RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = 5 - RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = 6 - RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = 7 - RL_PIXELFORMAT_UNCOMPRESSED_R32 = 8 - RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32 = 9 - RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = 10 - RL_PIXELFORMAT_UNCOMPRESSED_R16 = 11 - RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16 = 12 - RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 = 13 - RL_PIXELFORMAT_COMPRESSED_DXT1_RGB = 14 - RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA = 15 - RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA = 16 - RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA = 17 - RL_PIXELFORMAT_COMPRESSED_ETC1_RGB = 18 - RL_PIXELFORMAT_COMPRESSED_ETC2_RGB = 19 - RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = 20 - RL_PIXELFORMAT_COMPRESSED_PVRT_RGB = 21 - RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA = 22 - RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 23 - RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 24 - -class rlTextureFilter(int): - """Texture parameters: filter mode.""" - RL_TEXTURE_FILTER_POINT = 0 - RL_TEXTURE_FILTER_BILINEAR = 1 - RL_TEXTURE_FILTER_TRILINEAR = 2 - RL_TEXTURE_FILTER_ANISOTROPIC_4X = 3 - RL_TEXTURE_FILTER_ANISOTROPIC_8X = 4 - RL_TEXTURE_FILTER_ANISOTROPIC_16X = 5 - -class rlBlendMode(int): - """Color blending modes (pre-defined).""" - RL_BLEND_ALPHA = 0 - RL_BLEND_ADDITIVE = 1 - RL_BLEND_MULTIPLIED = 2 - RL_BLEND_ADD_COLORS = 3 - RL_BLEND_SUBTRACT_COLORS = 4 - RL_BLEND_ALPHA_PREMULTIPLY = 5 - RL_BLEND_CUSTOM = 6 - RL_BLEND_CUSTOM_SEPARATE = 7 - -class rlShaderLocationIndex(int): - """Shader location point type.""" - RL_SHADER_LOC_VERTEX_POSITION = 0 - RL_SHADER_LOC_VERTEX_TEXCOORD01 = 1 - RL_SHADER_LOC_VERTEX_TEXCOORD02 = 2 - RL_SHADER_LOC_VERTEX_NORMAL = 3 - RL_SHADER_LOC_VERTEX_TANGENT = 4 - RL_SHADER_LOC_VERTEX_COLOR = 5 - RL_SHADER_LOC_MATRIX_MVP = 6 - RL_SHADER_LOC_MATRIX_VIEW = 7 - RL_SHADER_LOC_MATRIX_PROJECTION = 8 - RL_SHADER_LOC_MATRIX_MODEL = 9 - RL_SHADER_LOC_MATRIX_NORMAL = 10 - RL_SHADER_LOC_VECTOR_VIEW = 11 - RL_SHADER_LOC_COLOR_DIFFUSE = 12 - RL_SHADER_LOC_COLOR_SPECULAR = 13 - RL_SHADER_LOC_COLOR_AMBIENT = 14 - RL_SHADER_LOC_MAP_ALBEDO = 15 - RL_SHADER_LOC_MAP_METALNESS = 16 - RL_SHADER_LOC_MAP_NORMAL = 17 - RL_SHADER_LOC_MAP_ROUGHNESS = 18 - RL_SHADER_LOC_MAP_OCCLUSION = 19 - RL_SHADER_LOC_MAP_EMISSION = 20 - RL_SHADER_LOC_MAP_HEIGHT = 21 - RL_SHADER_LOC_MAP_CUBEMAP = 22 - RL_SHADER_LOC_MAP_IRRADIANCE = 23 - RL_SHADER_LOC_MAP_PREFILTER = 24 - RL_SHADER_LOC_MAP_BRDF = 25 - -class rlShaderUniformDataType(int): - """Shader uniform data type.""" - RL_SHADER_UNIFORM_FLOAT = 0 - RL_SHADER_UNIFORM_VEC2 = 1 - RL_SHADER_UNIFORM_VEC3 = 2 - RL_SHADER_UNIFORM_VEC4 = 3 - RL_SHADER_UNIFORM_INT = 4 - RL_SHADER_UNIFORM_IVEC2 = 5 - RL_SHADER_UNIFORM_IVEC3 = 6 - RL_SHADER_UNIFORM_IVEC4 = 7 - RL_SHADER_UNIFORM_UINT = 8 - RL_SHADER_UNIFORM_UIVEC2 = 9 - RL_SHADER_UNIFORM_UIVEC3 = 10 - RL_SHADER_UNIFORM_UIVEC4 = 11 - RL_SHADER_UNIFORM_SAMPLER2D = 12 - -class rlShaderAttributeDataType(int): - """Shader attribute data types.""" - RL_SHADER_ATTRIB_FLOAT = 0 - RL_SHADER_ATTRIB_VEC2 = 1 - RL_SHADER_ATTRIB_VEC3 = 2 - RL_SHADER_ATTRIB_VEC4 = 3 - -class rlFramebufferAttachType(int): - """Framebuffer attachment type.""" - RL_ATTACHMENT_COLOR_CHANNEL0 = 0 - RL_ATTACHMENT_COLOR_CHANNEL1 = 1 - RL_ATTACHMENT_COLOR_CHANNEL2 = 2 - RL_ATTACHMENT_COLOR_CHANNEL3 = 3 - RL_ATTACHMENT_COLOR_CHANNEL4 = 4 - RL_ATTACHMENT_COLOR_CHANNEL5 = 5 - RL_ATTACHMENT_COLOR_CHANNEL6 = 6 - RL_ATTACHMENT_COLOR_CHANNEL7 = 7 - RL_ATTACHMENT_DEPTH = 100 - RL_ATTACHMENT_STENCIL = 200 - -class rlFramebufferAttachTextureType(int): - """Framebuffer texture attachment type.""" - RL_ATTACHMENT_CUBEMAP_POSITIVE_X = 0 - RL_ATTACHMENT_CUBEMAP_NEGATIVE_X = 1 - RL_ATTACHMENT_CUBEMAP_POSITIVE_Y = 2 - RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y = 3 - RL_ATTACHMENT_CUBEMAP_POSITIVE_Z = 4 - RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z = 5 - RL_ATTACHMENT_TEXTURE2D = 100 - RL_ATTACHMENT_RENDERBUFFER = 200 - -class rlCullMode(int): - """Face culling mode.""" - RL_CULL_FACE_FRONT = 0 - RL_CULL_FACE_BACK = 1 - -class GuiState(int): - """Gui control state.""" - STATE_NORMAL = 0 - STATE_FOCUSED = 1 - STATE_PRESSED = 2 - STATE_DISABLED = 3 - -class GuiTextAlignment(int): - """Gui control text alignment.""" - TEXT_ALIGN_LEFT = 0 - TEXT_ALIGN_CENTER = 1 - TEXT_ALIGN_RIGHT = 2 - -class GuiTextAlignmentVertical(int): - """Gui control text alignment vertical.""" - TEXT_ALIGN_TOP = 0 - TEXT_ALIGN_MIDDLE = 1 - TEXT_ALIGN_BOTTOM = 2 - -class GuiTextWrapMode(int): - """Gui control text wrap mode.""" - TEXT_WRAP_NONE = 0 - TEXT_WRAP_CHAR = 1 - TEXT_WRAP_WORD = 2 - -class GuiControl(int): - """Gui controls.""" - DEFAULT = 0 - LABEL = 1 - BUTTON = 2 - TOGGLE = 3 - SLIDER = 4 - PROGRESSBAR = 5 - CHECKBOX = 6 - COMBOBOX = 7 - DROPDOWNBOX = 8 - TEXTBOX = 9 - VALUEBOX = 10 - SPINNER = 11 - LISTVIEW = 12 - COLORPICKER = 13 - SCROLLBAR = 14 - STATUSBAR = 15 - -class GuiControlProperty(int): - """Gui base properties for every control.""" - BORDER_COLOR_NORMAL = 0 - BASE_COLOR_NORMAL = 1 - TEXT_COLOR_NORMAL = 2 - BORDER_COLOR_FOCUSED = 3 - BASE_COLOR_FOCUSED = 4 - TEXT_COLOR_FOCUSED = 5 - BORDER_COLOR_PRESSED = 6 - BASE_COLOR_PRESSED = 7 - TEXT_COLOR_PRESSED = 8 - BORDER_COLOR_DISABLED = 9 - BASE_COLOR_DISABLED = 10 - TEXT_COLOR_DISABLED = 11 - BORDER_WIDTH = 12 - TEXT_PADDING = 13 - TEXT_ALIGNMENT = 14 - -class GuiDefaultProperty(int): - """DEFAULT extended properties.""" - TEXT_SIZE = 16 - TEXT_SPACING = 17 - LINE_COLOR = 18 - BACKGROUND_COLOR = 19 - TEXT_LINE_SPACING = 20 - TEXT_ALIGNMENT_VERTICAL = 21 - TEXT_WRAP_MODE = 22 - -class GuiToggleProperty(int): - """Toggle/ToggleGroup.""" - GROUP_PADDING = 16 - -class GuiSliderProperty(int): - """Slider/SliderBar.""" - SLIDER_WIDTH = 16 - SLIDER_PADDING = 17 - -class GuiProgressBarProperty(int): - """ProgressBar.""" - PROGRESS_PADDING = 16 - -class GuiScrollBarProperty(int): - """ScrollBar.""" - ARROWS_SIZE = 16 - ARROWS_VISIBLE = 17 - SCROLL_SLIDER_PADDING = 18 - SCROLL_SLIDER_SIZE = 19 - SCROLL_PADDING = 20 - SCROLL_SPEED = 21 - -class GuiCheckBoxProperty(int): - """CheckBox.""" - CHECK_PADDING = 16 - -class GuiComboBoxProperty(int): - """ComboBox.""" - COMBO_BUTTON_WIDTH = 16 - COMBO_BUTTON_SPACING = 17 - -class GuiDropdownBoxProperty(int): - """DropdownBox.""" - ARROW_PADDING = 16 - DROPDOWN_ITEMS_SPACING = 17 - DROPDOWN_ARROW_HIDDEN = 18 - DROPDOWN_ROLL_UP = 19 - -class GuiTextBoxProperty(int): - """TextBox/TextBoxMulti/ValueBox/Spinner.""" - TEXT_READONLY = 16 - -class GuiSpinnerProperty(int): - """Spinner.""" - SPIN_BUTTON_WIDTH = 16 - SPIN_BUTTON_SPACING = 17 - -class GuiListViewProperty(int): - """ListView.""" - LIST_ITEMS_HEIGHT = 16 - LIST_ITEMS_SPACING = 17 - SCROLLBAR_WIDTH = 18 - SCROLLBAR_SIDE = 19 - LIST_ITEMS_BORDER_WIDTH = 20 - -class GuiColorPickerProperty(int): - """ColorPicker.""" - COLOR_SELECTOR_SIZE = 16 - HUEBAR_WIDTH = 17 - HUEBAR_PADDING = 18 - HUEBAR_SELECTOR_HEIGHT = 19 - HUEBAR_SELECTOR_OVERFLOW = 20 - -class GuiIconName(int): - """.""" - ICON_NONE = 0 - ICON_FOLDER_FILE_OPEN = 1 - ICON_FILE_SAVE_CLASSIC = 2 - ICON_FOLDER_OPEN = 3 - ICON_FOLDER_SAVE = 4 - ICON_FILE_OPEN = 5 - ICON_FILE_SAVE = 6 - ICON_FILE_EXPORT = 7 - ICON_FILE_ADD = 8 - ICON_FILE_DELETE = 9 - ICON_FILETYPE_TEXT = 10 - ICON_FILETYPE_AUDIO = 11 - ICON_FILETYPE_IMAGE = 12 - ICON_FILETYPE_PLAY = 13 - ICON_FILETYPE_VIDEO = 14 - ICON_FILETYPE_INFO = 15 - ICON_FILE_COPY = 16 - ICON_FILE_CUT = 17 - ICON_FILE_PASTE = 18 - ICON_CURSOR_HAND = 19 - ICON_CURSOR_POINTER = 20 - ICON_CURSOR_CLASSIC = 21 - ICON_PENCIL = 22 - ICON_PENCIL_BIG = 23 - ICON_BRUSH_CLASSIC = 24 - ICON_BRUSH_PAINTER = 25 - ICON_WATER_DROP = 26 - ICON_COLOR_PICKER = 27 - ICON_RUBBER = 28 - ICON_COLOR_BUCKET = 29 - ICON_TEXT_T = 30 - ICON_TEXT_A = 31 - ICON_SCALE = 32 - ICON_RESIZE = 33 - ICON_FILTER_POINT = 34 - ICON_FILTER_BILINEAR = 35 - ICON_CROP = 36 - ICON_CROP_ALPHA = 37 - ICON_SQUARE_TOGGLE = 38 - ICON_SYMMETRY = 39 - ICON_SYMMETRY_HORIZONTAL = 40 - ICON_SYMMETRY_VERTICAL = 41 - ICON_LENS = 42 - ICON_LENS_BIG = 43 - ICON_EYE_ON = 44 - ICON_EYE_OFF = 45 - ICON_FILTER_TOP = 46 - ICON_FILTER = 47 - ICON_TARGET_POINT = 48 - ICON_TARGET_SMALL = 49 - ICON_TARGET_BIG = 50 - ICON_TARGET_MOVE = 51 - ICON_CURSOR_MOVE = 52 - ICON_CURSOR_SCALE = 53 - ICON_CURSOR_SCALE_RIGHT = 54 - ICON_CURSOR_SCALE_LEFT = 55 - ICON_UNDO = 56 - ICON_REDO = 57 - ICON_REREDO = 58 - ICON_MUTATE = 59 - ICON_ROTATE = 60 - ICON_REPEAT = 61 - ICON_SHUFFLE = 62 - ICON_EMPTYBOX = 63 - ICON_TARGET = 64 - ICON_TARGET_SMALL_FILL = 65 - ICON_TARGET_BIG_FILL = 66 - ICON_TARGET_MOVE_FILL = 67 - ICON_CURSOR_MOVE_FILL = 68 - ICON_CURSOR_SCALE_FILL = 69 - ICON_CURSOR_SCALE_RIGHT_FILL = 70 - ICON_CURSOR_SCALE_LEFT_FILL = 71 - ICON_UNDO_FILL = 72 - ICON_REDO_FILL = 73 - ICON_REREDO_FILL = 74 - ICON_MUTATE_FILL = 75 - ICON_ROTATE_FILL = 76 - ICON_REPEAT_FILL = 77 - ICON_SHUFFLE_FILL = 78 - ICON_EMPTYBOX_SMALL = 79 - ICON_BOX = 80 - ICON_BOX_TOP = 81 - ICON_BOX_TOP_RIGHT = 82 - ICON_BOX_RIGHT = 83 - ICON_BOX_BOTTOM_RIGHT = 84 - ICON_BOX_BOTTOM = 85 - ICON_BOX_BOTTOM_LEFT = 86 - ICON_BOX_LEFT = 87 - ICON_BOX_TOP_LEFT = 88 - ICON_BOX_CENTER = 89 - ICON_BOX_CIRCLE_MASK = 90 - ICON_POT = 91 - ICON_ALPHA_MULTIPLY = 92 - ICON_ALPHA_CLEAR = 93 - ICON_DITHERING = 94 - ICON_MIPMAPS = 95 - ICON_BOX_GRID = 96 - ICON_GRID = 97 - ICON_BOX_CORNERS_SMALL = 98 - ICON_BOX_CORNERS_BIG = 99 - ICON_FOUR_BOXES = 100 - ICON_GRID_FILL = 101 - ICON_BOX_MULTISIZE = 102 - ICON_ZOOM_SMALL = 103 - ICON_ZOOM_MEDIUM = 104 - ICON_ZOOM_BIG = 105 - ICON_ZOOM_ALL = 106 - ICON_ZOOM_CENTER = 107 - ICON_BOX_DOTS_SMALL = 108 - ICON_BOX_DOTS_BIG = 109 - ICON_BOX_CONCENTRIC = 110 - ICON_BOX_GRID_BIG = 111 - ICON_OK_TICK = 112 - ICON_CROSS = 113 - ICON_ARROW_LEFT = 114 - ICON_ARROW_RIGHT = 115 - ICON_ARROW_DOWN = 116 - ICON_ARROW_UP = 117 - ICON_ARROW_LEFT_FILL = 118 - ICON_ARROW_RIGHT_FILL = 119 - ICON_ARROW_DOWN_FILL = 120 - ICON_ARROW_UP_FILL = 121 - ICON_AUDIO = 122 - ICON_FX = 123 - ICON_WAVE = 124 - ICON_WAVE_SINUS = 125 - ICON_WAVE_SQUARE = 126 - ICON_WAVE_TRIANGULAR = 127 - ICON_CROSS_SMALL = 128 - ICON_PLAYER_PREVIOUS = 129 - ICON_PLAYER_PLAY_BACK = 130 - ICON_PLAYER_PLAY = 131 - ICON_PLAYER_PAUSE = 132 - ICON_PLAYER_STOP = 133 - ICON_PLAYER_NEXT = 134 - ICON_PLAYER_RECORD = 135 - ICON_MAGNET = 136 - ICON_LOCK_CLOSE = 137 - ICON_LOCK_OPEN = 138 - ICON_CLOCK = 139 - ICON_TOOLS = 140 - ICON_GEAR = 141 - ICON_GEAR_BIG = 142 - ICON_BIN = 143 - ICON_HAND_POINTER = 144 - ICON_LASER = 145 - ICON_COIN = 146 - ICON_EXPLOSION = 147 - ICON_1UP = 148 - ICON_PLAYER = 149 - ICON_PLAYER_JUMP = 150 - ICON_KEY = 151 - ICON_DEMON = 152 - ICON_TEXT_POPUP = 153 - ICON_GEAR_EX = 154 - ICON_CRACK = 155 - ICON_CRACK_POINTS = 156 - ICON_STAR = 157 - ICON_DOOR = 158 - ICON_EXIT = 159 - ICON_MODE_2D = 160 - ICON_MODE_3D = 161 - ICON_CUBE = 162 - ICON_CUBE_FACE_TOP = 163 - ICON_CUBE_FACE_LEFT = 164 - ICON_CUBE_FACE_FRONT = 165 - ICON_CUBE_FACE_BOTTOM = 166 - ICON_CUBE_FACE_RIGHT = 167 - ICON_CUBE_FACE_BACK = 168 - ICON_CAMERA = 169 - ICON_SPECIAL = 170 - ICON_LINK_NET = 171 - ICON_LINK_BOXES = 172 - ICON_LINK_MULTI = 173 - ICON_LINK = 174 - ICON_LINK_BROKE = 175 - ICON_TEXT_NOTES = 176 - ICON_NOTEBOOK = 177 - ICON_SUITCASE = 178 - ICON_SUITCASE_ZIP = 179 - ICON_MAILBOX = 180 - ICON_MONITOR = 181 - ICON_PRINTER = 182 - ICON_PHOTO_CAMERA = 183 - ICON_PHOTO_CAMERA_FLASH = 184 - ICON_HOUSE = 185 - ICON_HEART = 186 - ICON_CORNER = 187 - ICON_VERTICAL_BARS = 188 - ICON_VERTICAL_BARS_FILL = 189 - ICON_LIFE_BARS = 190 - ICON_INFO = 191 - ICON_CROSSLINE = 192 - ICON_HELP = 193 - ICON_FILETYPE_ALPHA = 194 - ICON_FILETYPE_HOME = 195 - ICON_LAYERS_VISIBLE = 196 - ICON_LAYERS = 197 - ICON_WINDOW = 198 - ICON_HIDPI = 199 - ICON_FILETYPE_BINARY = 200 - ICON_HEX = 201 - ICON_SHIELD = 202 - ICON_FILE_NEW = 203 - ICON_FOLDER_ADD = 204 - ICON_ALARM = 205 - ICON_CPU = 206 - ICON_ROM = 207 - ICON_STEP_OVER = 208 - ICON_STEP_INTO = 209 - ICON_STEP_OUT = 210 - ICON_RESTART = 211 - ICON_BREAKPOINT_ON = 212 - ICON_BREAKPOINT_OFF = 213 - ICON_BURGER_MENU = 214 - ICON_CASE_SENSITIVE = 215 - ICON_REG_EXP = 216 - ICON_FOLDER = 217 - ICON_FILE = 218 - ICON_SAND_TIMER = 219 - 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 - ICON_232 = 232 - ICON_233 = 233 - ICON_234 = 234 - ICON_235 = 235 - ICON_236 = 236 - ICON_237 = 237 - ICON_238 = 238 - ICON_239 = 239 - ICON_240 = 240 - ICON_241 = 241 - ICON_242 = 242 - ICON_243 = 243 - ICON_244 = 244 - ICON_245 = 245 - ICON_246 = 246 - ICON_247 = 247 - ICON_248 = 248 - ICON_249 = 249 - ICON_250 = 250 - ICON_251 = 251 - ICON_252 = 252 - ICON_253 = 253 - ICON_254 = 254 - ICON_255 = 255 - -from typing import Any -from warnings import deprecated -import _cffi_backend # type: ignore - -ffi: _cffi_backend.FFI -PhysicsShapeType = int - -def attach_audio_mixed_processor(processor: Any,) -> None: - """Attach audio stream processor to the entire audio pipeline, receives the samples as 'float'.""" - ... -def attach_audio_stream_processor(stream: AudioStream|list|tuple,processor: Any,) -> None: - """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).""" - ... -def begin_drawing() -> None: - """Setup canvas (framebuffer) to start drawing.""" - ... -def begin_mode_2d(camera: Camera2D|list|tuple,) -> None: - """Begin 2D mode with custom camera (2D).""" - ... -def begin_mode_3d(camera: Camera3D|list|tuple,) -> None: - """Begin 3D mode with custom camera (3D).""" - ... -def begin_scissor_mode(x: int,y: int,width: int,height: int,) -> None: - """Begin scissor mode (define screen area for following drawing).""" - ... -def begin_shader_mode(shader: Shader|list|tuple,) -> None: - """Begin custom shader drawing.""" - ... -def begin_texture_mode(target: RenderTexture|list|tuple,) -> None: - """Begin drawing to render texture.""" - ... -def begin_vr_stereo_mode(config: VrStereoConfig|list|tuple,) -> None: - """Begin stereo rendering (requires VR simulator).""" - ... -def change_directory(dir: str,) -> bool: - """Change working directory, return true on success.""" - ... -def check_collision_box_sphere(box: BoundingBox|list|tuple,center: Vector3|list|tuple,radius: float,) -> bool: - """Check collision between box and sphere.""" - ... -def check_collision_boxes(box1: BoundingBox|list|tuple,box2: BoundingBox|list|tuple,) -> bool: - """Check collision between two bounding boxes.""" - ... -def check_collision_circle_line(center: Vector2|list|tuple,radius: float,p1: Vector2|list|tuple,p2: Vector2|list|tuple,) -> bool: - """Check if circle collides with a line created betweeen two points [p1] and [p2].""" - ... -def check_collision_circle_rec(center: Vector2|list|tuple,radius: float,rec: Rectangle|list|tuple,) -> bool: - """Check collision between circle and rectangle.""" - ... -def check_collision_circles(center1: Vector2|list|tuple,radius1: float,center2: Vector2|list|tuple,radius2: float,) -> bool: - """Check collision between two circles.""" - ... -def check_collision_lines(startPos1: Vector2|list|tuple,endPos1: Vector2|list|tuple,startPos2: Vector2|list|tuple,endPos2: Vector2|list|tuple,collisionPoint: Any|list|tuple,) -> bool: - """Check the collision between two lines defined by two points each, returns collision point by reference.""" - ... -def check_collision_point_circle(point: Vector2|list|tuple,center: Vector2|list|tuple,radius: float,) -> bool: - """Check if point is inside circle.""" - ... -def check_collision_point_line(point: Vector2|list|tuple,p1: Vector2|list|tuple,p2: Vector2|list|tuple,threshold: int,) -> bool: - """Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold].""" - ... -def check_collision_point_poly(point: Vector2|list|tuple,points: Any|list|tuple,pointCount: int,) -> bool: - """Check if point is within a polygon described by array of vertices.""" - ... -def check_collision_point_rec(point: Vector2|list|tuple,rec: Rectangle|list|tuple,) -> bool: - """Check if point is inside rectangle.""" - ... -def check_collision_point_triangle(point: Vector2|list|tuple,p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,) -> bool: - """Check if point is inside a triangle.""" - ... -def check_collision_recs(rec1: Rectangle|list|tuple,rec2: Rectangle|list|tuple,) -> bool: - """Check collision between two rectangles.""" - ... -def check_collision_spheres(center1: Vector3|list|tuple,radius1: float,center2: Vector3|list|tuple,radius2: float,) -> bool: - """Check collision between two spheres.""" - ... -def clamp(value: float,min_1: float,max_2: float,) -> float: - """.""" - ... -def clear_background(color: Color|list|tuple,) -> None: - """Set background color (framebuffer clear color).""" - ... -def clear_window_state(flags: int,) -> None: - """Clear window configuration state flags.""" - ... -def close_audio_device() -> None: - """Close the audio device and context.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def close_physics() -> None: - """Unitializes physics pointers and closes physics loop thread.""" - ... -def close_window() -> None: - """Close window and unload OpenGL context.""" - ... -def codepoint_to_utf8(codepoint: int,utf8Size: Any,) -> str: - """Encode one codepoint into UTF-8 byte array (array length returned as parameter).""" - ... -def color_alpha(color: Color|list|tuple,alpha: float,) -> Color: - """Get color with alpha applied, alpha goes from 0.0f to 1.0f.""" - ... -def color_alpha_blend(dst: Color|list|tuple,src: Color|list|tuple,tint: Color|list|tuple,) -> Color: - """Get src alpha-blended into dst color with tint.""" - ... -def color_brightness(color: Color|list|tuple,factor: float,) -> Color: - """Get color with brightness correction, brightness factor goes from -1.0f to 1.0f.""" - ... -def color_contrast(color: Color|list|tuple,contrast: float,) -> Color: - """Get color with contrast correction, contrast values between -1.0f and 1.0f.""" - ... -def color_from_hsv(hue: float,saturation: float,value: float,) -> Color: - """Get a Color from HSV values, hue [0..360], saturation/value [0..1].""" - ... -def color_from_normalized(normalized: Vector4|list|tuple,) -> Color: - """Get Color from normalized values [0..1].""" - ... -def color_is_equal(col1: Color|list|tuple,col2: Color|list|tuple,) -> bool: - """Check if two colors are equal.""" - ... -def color_lerp(color1: Color|list|tuple,color2: Color|list|tuple,factor: float,) -> Color: - """Get color lerp interpolation between two colors, factor [0.0f..1.0f].""" - ... -def color_normalize(color: Color|list|tuple,) -> Vector4: - """Get Color normalized as float [0..1].""" - ... -def color_tint(color: Color|list|tuple,tint: Color|list|tuple,) -> Color: - """Get color multiplied with another color.""" - ... -def color_to_hsv(color: Color|list|tuple,) -> Vector3: - """Get HSV values for a Color, hue [0..360], saturation/value [0..1].""" - ... -def color_to_int(color: Color|list|tuple,) -> int: - """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().""" - ... -def compute_crc32(data: str,dataSize: int,) -> int: - """Compute CRC32 hash code.""" - ... -def compute_md5(data: str,dataSize: int,) -> Any: - """Compute MD5 hash code, returns static int[4] (16 bytes).""" - ... -def compute_sha1(data: str,dataSize: int,) -> Any: - """Compute SHA1 hash code, returns static int[5] (20 bytes).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def create_physics_body_circle(pos: Vector2|list|tuple,radius: float,density: float,) -> Any: - """Creates a new circle physics body with generic parameters.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def create_physics_body_polygon(pos: Vector2|list|tuple,radius: float,sides: int,density: float,) -> Any: - """Creates a new polygon physics body with generic parameters.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def create_physics_body_rectangle(pos: Vector2|list|tuple,width: float,height: float,density: float,) -> Any: - """Creates a new rectangle physics body with generic parameters.""" - ... -def decode_data_base64(data: str,outputSize: Any,) -> str: - """Decode Base64 string data, memory must be MemFree().""" - ... -def decompress_data(compData: str,compDataSize: int,dataSize: Any,) -> str: - """Decompress data (DEFLATE algorithm), memory must be MemFree().""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def destroy_physics_body(body: Any|list|tuple,) -> None: - """Unitializes and destroy a physics body.""" - ... -def detach_audio_mixed_processor(processor: Any,) -> None: - """Detach audio stream processor from the entire audio pipeline.""" - ... -def detach_audio_stream_processor(stream: AudioStream|list|tuple,processor: Any,) -> None: - """Detach audio stream processor from stream.""" - ... -def directory_exists(dirPath: str,) -> bool: - """Check if a directory path exists.""" - ... -def disable_cursor() -> None: - """Disables cursor (lock cursor).""" - ... -def disable_event_waiting() -> None: - """Disable waiting for events on EndDrawing(), automatic events polling.""" - ... -def draw_billboard(camera: Camera3D|list|tuple,texture: Texture|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a billboard texture.""" - ... -def draw_billboard_pro(camera: Camera3D|list|tuple,texture: Texture|list|tuple,source: Rectangle|list|tuple,position: Vector3|list|tuple,up: Vector3|list|tuple,size: Vector2|list|tuple,origin: Vector2|list|tuple,rotation: float,tint: Color|list|tuple,) -> None: - """Draw a billboard texture defined by source and rotation.""" - ... -def draw_billboard_rec(camera: Camera3D|list|tuple,texture: Texture|list|tuple,source: Rectangle|list|tuple,position: Vector3|list|tuple,size: Vector2|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a billboard texture defined by source.""" - ... -def draw_bounding_box(box: BoundingBox|list|tuple,color: Color|list|tuple,) -> None: - """Draw bounding box (wires).""" - ... -def draw_capsule(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,radius: float,slices: int,rings: int,color: Color|list|tuple,) -> None: - """Draw a capsule with the center of its sphere caps at startPos and endPos.""" - ... -def draw_capsule_wires(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,radius: float,slices: int,rings: int,color: Color|list|tuple,) -> None: - """Draw capsule wireframe with the center of its sphere caps at startPos and endPos.""" - ... -def draw_circle(centerX: int,centerY: int,radius: float,color: Color|list|tuple,) -> None: - """Draw a color-filled circle.""" - ... -def draw_circle_3d(center: Vector3|list|tuple,radius: float,rotationAxis: Vector3|list|tuple,rotationAngle: float,color: Color|list|tuple,) -> None: - """Draw a circle in 3D world space.""" - ... -def draw_circle_gradient(centerX: int,centerY: int,radius: float,inner: Color|list|tuple,outer: Color|list|tuple,) -> None: - """Draw a gradient-filled circle.""" - ... -def draw_circle_lines(centerX: int,centerY: int,radius: float,color: Color|list|tuple,) -> None: - """Draw circle outline.""" - ... -def draw_circle_lines_v(center: Vector2|list|tuple,radius: float,color: Color|list|tuple,) -> None: - """Draw circle outline (Vector version).""" - ... -def draw_circle_sector(center: Vector2|list|tuple,radius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw a piece of a circle.""" - ... -def draw_circle_sector_lines(center: Vector2|list|tuple,radius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw circle sector outline.""" - ... -def draw_circle_v(center: Vector2|list|tuple,radius: float,color: Color|list|tuple,) -> None: - """Draw a color-filled circle (Vector version).""" - ... -def draw_cube(position: Vector3|list|tuple,width: float,height: float,length: float,color: Color|list|tuple,) -> None: - """Draw cube.""" - ... -def draw_cube_v(position: Vector3|list|tuple,size: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw cube (Vector version).""" - ... -def draw_cube_wires(position: Vector3|list|tuple,width: float,height: float,length: float,color: Color|list|tuple,) -> None: - """Draw cube wires.""" - ... -def draw_cube_wires_v(position: Vector3|list|tuple,size: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw cube wires (Vector version).""" - ... -def draw_cylinder(position: Vector3|list|tuple,radiusTop: float,radiusBottom: float,height: float,slices: int,color: Color|list|tuple,) -> None: - """Draw a cylinder/cone.""" - ... -def draw_cylinder_ex(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,startRadius: float,endRadius: float,sides: int,color: Color|list|tuple,) -> None: - """Draw a cylinder with base at startPos and top at endPos.""" - ... -def draw_cylinder_wires(position: Vector3|list|tuple,radiusTop: float,radiusBottom: float,height: float,slices: int,color: Color|list|tuple,) -> None: - """Draw a cylinder/cone wires.""" - ... -def draw_cylinder_wires_ex(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,startRadius: float,endRadius: float,sides: int,color: Color|list|tuple,) -> None: - """Draw a cylinder wires with base at startPos and top at endPos.""" - ... -def draw_ellipse(centerX: int,centerY: int,radiusH: float,radiusV: float,color: Color|list|tuple,) -> None: - """Draw ellipse.""" - ... -def draw_ellipse_lines(centerX: int,centerY: int,radiusH: float,radiusV: float,color: Color|list|tuple,) -> None: - """Draw ellipse outline.""" - ... -def draw_fps(posX: int,posY: int,) -> None: - """Draw current FPS.""" - ... -def draw_grid(slices: int,spacing: float,) -> None: - """Draw a grid (centered at (0, 0, 0)).""" - ... -def draw_line(startPosX: int,startPosY: int,endPosX: int,endPosY: int,color: Color|list|tuple,) -> None: - """Draw a line.""" - ... -def draw_line_3d(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw a line in 3D world space.""" - ... -def draw_line_bezier(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw line segment cubic-bezier in-out interpolation.""" - ... -def draw_line_ex(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw a line (using triangles/quads).""" - ... -def draw_line_strip(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw lines sequence (using gl lines).""" - ... -def draw_line_v(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a line (using gl lines).""" - ... -def draw_mesh(mesh: Mesh|list|tuple,material: Material|list|tuple,transform: Matrix|list|tuple,) -> None: - """Draw a 3d mesh with material and transform.""" - ... -def draw_mesh_instanced(mesh: Mesh|list|tuple,material: Material|list|tuple,transforms: Any|list|tuple,instances: int,) -> None: - """Draw multiple mesh instances with material and different transforms.""" - ... -def draw_model(model: Model|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a model (with texture if set).""" - ... -def draw_model_ex(model: Model|list|tuple,position: Vector3|list|tuple,rotationAxis: Vector3|list|tuple,rotationAngle: float,scale: Vector3|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a model with extended parameters.""" - ... -def draw_model_points(model: Model|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a model as points.""" - ... -def draw_model_points_ex(model: Model|list|tuple,position: Vector3|list|tuple,rotationAxis: Vector3|list|tuple,rotationAngle: float,scale: Vector3|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a model as points with extended parameters.""" - ... -def draw_model_wires(model: Model|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a model wires (with texture if set).""" - ... -def draw_model_wires_ex(model: Model|list|tuple,position: Vector3|list|tuple,rotationAxis: Vector3|list|tuple,rotationAngle: float,scale: Vector3|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a model wires (with texture if set) with extended parameters.""" - ... -def draw_pixel(posX: int,posY: int,color: Color|list|tuple,) -> None: - """Draw a pixel using geometry [Can be slow, use with care].""" - ... -def draw_pixel_v(position: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a pixel using geometry (Vector version) [Can be slow, use with care].""" - ... -def draw_plane(centerPos: Vector3|list|tuple,size: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a plane XZ.""" - ... -def draw_point_3d(position: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw a point in 3D space, actually a small line.""" - ... -def draw_poly(center: Vector2|list|tuple,sides: int,radius: float,rotation: float,color: Color|list|tuple,) -> None: - """Draw a regular polygon (Vector version).""" - ... -def draw_poly_lines(center: Vector2|list|tuple,sides: int,radius: float,rotation: float,color: Color|list|tuple,) -> None: - """Draw a polygon outline of n sides.""" - ... -def draw_poly_lines_ex(center: Vector2|list|tuple,sides: int,radius: float,rotation: float,lineThick: float,color: Color|list|tuple,) -> None: - """Draw a polygon outline of n sides with extended parameters.""" - ... -def draw_ray(ray: Ray|list|tuple,color: Color|list|tuple,) -> None: - """Draw a ray line.""" - ... -def draw_rectangle(posX: int,posY: int,width: int,height: int,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle.""" - ... -def draw_rectangle_gradient_ex(rec: Rectangle|list|tuple,topLeft: Color|list|tuple,bottomLeft: Color|list|tuple,topRight: Color|list|tuple,bottomRight: Color|list|tuple,) -> None: - """Draw a gradient-filled rectangle with custom vertex colors.""" - ... -def draw_rectangle_gradient_h(posX: int,posY: int,width: int,height: int,left: Color|list|tuple,right: Color|list|tuple,) -> None: - """Draw a horizontal-gradient-filled rectangle.""" - ... -def draw_rectangle_gradient_v(posX: int,posY: int,width: int,height: int,top: Color|list|tuple,bottom: Color|list|tuple,) -> None: - """Draw a vertical-gradient-filled rectangle.""" - ... -def draw_rectangle_lines(posX: int,posY: int,width: int,height: int,color: Color|list|tuple,) -> None: - """Draw rectangle outline.""" - ... -def draw_rectangle_lines_ex(rec: Rectangle|list|tuple,lineThick: float,color: Color|list|tuple,) -> None: - """Draw rectangle outline with extended parameters.""" - ... -def draw_rectangle_pro(rec: Rectangle|list|tuple,origin: Vector2|list|tuple,rotation: float,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle with pro parameters.""" - ... -def draw_rectangle_rec(rec: Rectangle|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle.""" - ... -def draw_rectangle_rounded(rec: Rectangle|list|tuple,roundness: float,segments: int,color: Color|list|tuple,) -> None: - """Draw rectangle with rounded edges.""" - ... -def draw_rectangle_rounded_lines(rec: Rectangle|list|tuple,roundness: float,segments: int,color: Color|list|tuple,) -> None: - """Draw rectangle lines with rounded edges.""" - ... -def draw_rectangle_rounded_lines_ex(rec: Rectangle|list|tuple,roundness: float,segments: int,lineThick: float,color: Color|list|tuple,) -> None: - """Draw rectangle with rounded edges outline.""" - ... -def draw_rectangle_v(position: Vector2|list|tuple,size: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle (Vector version).""" - ... -def draw_ring(center: Vector2|list|tuple,innerRadius: float,outerRadius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw ring.""" - ... -def draw_ring_lines(center: Vector2|list|tuple,innerRadius: float,outerRadius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw ring outline.""" - ... -def draw_sphere(centerPos: Vector3|list|tuple,radius: float,color: Color|list|tuple,) -> None: - """Draw sphere.""" - ... -def draw_sphere_ex(centerPos: Vector3|list|tuple,radius: float,rings: int,slices: int,color: Color|list|tuple,) -> None: - """Draw sphere with extended parameters.""" - ... -def draw_sphere_wires(centerPos: Vector3|list|tuple,radius: float,rings: int,slices: int,color: Color|list|tuple,) -> None: - """Draw sphere wires.""" - ... -def draw_spline_basis(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: B-Spline, minimum 4 points.""" - ... -def draw_spline_bezier_cubic(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...].""" - ... -def draw_spline_bezier_quadratic(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...].""" - ... -def draw_spline_catmull_rom(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Catmull-Rom, minimum 4 points.""" - ... -def draw_spline_linear(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Linear, minimum 2 points.""" - ... -def draw_spline_segment_basis(p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: B-Spline, 4 points.""" - ... -def draw_spline_segment_bezier_cubic(p1: Vector2|list|tuple,c2: Vector2|list|tuple,c3: Vector2|list|tuple,p4: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Cubic Bezier, 2 points, 2 control points.""" - ... -def draw_spline_segment_bezier_quadratic(p1: Vector2|list|tuple,c2: Vector2|list|tuple,p3: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Quadratic Bezier, 2 points, 1 control point.""" - ... -def draw_spline_segment_catmull_rom(p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Catmull-Rom, 4 points.""" - ... -def draw_spline_segment_linear(p1: Vector2|list|tuple,p2: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Linear, 2 points.""" - ... -def draw_text(text: str,posX: int,posY: int,fontSize: int,color: Color|list|tuple,) -> None: - """Draw text (using default font).""" - ... -def draw_text_codepoint(font: Font|list|tuple,codepoint: int,position: Vector2|list|tuple,fontSize: float,tint: Color|list|tuple,) -> None: - """Draw one character (codepoint).""" - ... -def draw_text_codepoints(font: Font|list|tuple,codepoints: Any,codepointCount: int,position: Vector2|list|tuple,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw multiple character (codepoint).""" - ... -def draw_text_ex(font: Font|list|tuple,text: str,position: Vector2|list|tuple,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw text using font and additional parameters.""" - ... -def draw_text_pro(font: Font|list|tuple,text: str,position: Vector2|list|tuple,origin: Vector2|list|tuple,rotation: float,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw text using Font and pro parameters (rotation).""" - ... -def draw_texture(texture: Texture|list|tuple,posX: int,posY: int,tint: Color|list|tuple,) -> None: - """Draw a Texture2D.""" - ... -def draw_texture_ex(texture: Texture|list|tuple,position: Vector2|list|tuple,rotation: float,scale: float,tint: Color|list|tuple,) -> None: - """Draw a Texture2D with extended parameters.""" - ... -def draw_texture_n_patch(texture: Texture|list|tuple,nPatchInfo: NPatchInfo|list|tuple,dest: Rectangle|list|tuple,origin: Vector2|list|tuple,rotation: float,tint: Color|list|tuple,) -> None: - """Draws a texture (or part of it) that stretches or shrinks nicely.""" - ... -def draw_texture_pro(texture: Texture|list|tuple,source: Rectangle|list|tuple,dest: Rectangle|list|tuple,origin: Vector2|list|tuple,rotation: float,tint: Color|list|tuple,) -> None: - """Draw a part of a texture defined by a rectangle with 'pro' parameters.""" - ... -def draw_texture_rec(texture: Texture|list|tuple,source: Rectangle|list|tuple,position: Vector2|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a part of a texture defined by a rectangle.""" - ... -def draw_texture_v(texture: Texture|list|tuple,position: Vector2|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a Texture2D with position defined as Vector2.""" - ... -def draw_triangle(v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled triangle (vertex in counter-clockwise order!).""" - ... -def draw_triangle_3d(v1: Vector3|list|tuple,v2: Vector3|list|tuple,v3: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled triangle (vertex in counter-clockwise order!).""" - ... -def draw_triangle_fan(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle fan defined by points (first vertex is the center).""" - ... -def draw_triangle_lines(v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw triangle outline (vertex in counter-clockwise order!).""" - ... -def draw_triangle_strip(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle strip defined by points.""" - ... -def draw_triangle_strip_3d(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle strip defined by points.""" - ... -def enable_cursor() -> None: - """Enables cursor (unlock cursor).""" - ... -def enable_event_waiting() -> None: - """Enable waiting for events on EndDrawing(), no automatic event polling.""" - ... -def encode_data_base64(data: str,dataSize: int,outputSize: Any,) -> str: - """Encode data to Base64 string, memory must be MemFree().""" - ... -def end_blend_mode() -> None: - """End blending mode (reset to default: alpha blending).""" - ... -def end_drawing() -> None: - """End canvas drawing and swap buffers (double buffering).""" - ... -def end_mode_2d() -> None: - """Ends 2D mode with custom camera.""" - ... -def end_mode_3d() -> None: - """Ends 3D mode and returns to default 2D orthographic mode.""" - ... -def end_scissor_mode() -> None: - """End scissor mode.""" - ... -def end_shader_mode() -> None: - """End custom shader drawing (use default shader).""" - ... -def end_texture_mode() -> None: - """Ends drawing to render texture.""" - ... -def end_vr_stereo_mode() -> None: - """End stereo rendering (requires VR simulator).""" - ... -def export_automation_event_list(list_0: AutomationEventList|list|tuple,fileName: str,) -> bool: - """Export automation events list as text file.""" - ... -def export_data_as_code(data: str,dataSize: int,fileName: str,) -> bool: - """Export data to code (.h), returns true on success.""" - ... -def export_font_as_code(font: Font|list|tuple,fileName: str,) -> bool: - """Export font as code file, returns true on success.""" - ... -def export_image(image: Image|list|tuple,fileName: str,) -> bool: - """Export image data to file, returns true on success.""" - ... -def export_image_as_code(image: Image|list|tuple,fileName: str,) -> bool: - """Export image as code file defining an array of bytes, returns true on success.""" - ... -def export_image_to_memory(image: Image|list|tuple,fileType: str,fileSize: Any,) -> str: - """Export image to memory buffer.""" - ... -def export_mesh(mesh: Mesh|list|tuple,fileName: str,) -> bool: - """Export mesh data to file, returns true on success.""" - ... -def export_mesh_as_code(mesh: Mesh|list|tuple,fileName: str,) -> bool: - """Export mesh as code file (.h) defining multiple arrays of vertex attributes.""" - ... -def export_wave(wave: Wave|list|tuple,fileName: str,) -> bool: - """Export wave data to file, returns true on success.""" - ... -def export_wave_as_code(wave: Wave|list|tuple,fileName: str,) -> bool: - """Export wave sample data to code (.h), returns true on success.""" - ... -def fade(color: Color|list|tuple,alpha: float,) -> Color: - """Get color with alpha applied, alpha goes from 0.0f to 1.0f.""" - ... -def file_exists(fileName: str,) -> bool: - """Check if file exists.""" - ... -def float_equals(x: float,y: float,) -> int: - """.""" - ... -def gen_image_cellular(width: int,height: int,tileSize: int,) -> Image: - """Generate image: cellular algorithm, bigger tileSize means bigger cells.""" - ... -def gen_image_checked(width: int,height: int,checksX: int,checksY: int,col1: Color|list|tuple,col2: Color|list|tuple,) -> Image: - """Generate image: checked.""" - ... -def gen_image_color(width: int,height: int,color: Color|list|tuple,) -> Image: - """Generate image: plain color.""" - ... -def gen_image_font_atlas(glyphs: Any|list|tuple,glyphRecs: Any|list|tuple,glyphCount: int,fontSize: int,padding: int,packMethod: int,) -> Image: - """Generate image font atlas using chars info.""" - ... -def gen_image_gradient_linear(width: int,height: int,direction: int,start: Color|list|tuple,end: Color|list|tuple,) -> Image: - """Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient.""" - ... -def gen_image_gradient_radial(width: int,height: int,density: float,inner: Color|list|tuple,outer: Color|list|tuple,) -> Image: - """Generate image: radial gradient.""" - ... -def gen_image_gradient_square(width: int,height: int,density: float,inner: Color|list|tuple,outer: Color|list|tuple,) -> Image: - """Generate image: square gradient.""" - ... -def gen_image_perlin_noise(width: int,height: int,offsetX: int,offsetY: int,scale: float,) -> Image: - """Generate image: perlin noise.""" - ... -def gen_image_text(width: int,height: int,text: str,) -> Image: - """Generate image: grayscale image from text data.""" - ... -def gen_image_white_noise(width: int,height: int,factor: float,) -> Image: - """Generate image: white noise.""" - ... -def gen_mesh_cone(radius: float,height: float,slices: int,) -> Mesh: - """Generate cone/pyramid mesh.""" - ... -def gen_mesh_cube(width: float,height: float,length: float,) -> Mesh: - """Generate cuboid mesh.""" - ... -def gen_mesh_cubicmap(cubicmap: Image|list|tuple,cubeSize: Vector3|list|tuple,) -> Mesh: - """Generate cubes-based map mesh from image data.""" - ... -def gen_mesh_cylinder(radius: float,height: float,slices: int,) -> Mesh: - """Generate cylinder mesh.""" - ... -def gen_mesh_heightmap(heightmap: Image|list|tuple,size: Vector3|list|tuple,) -> Mesh: - """Generate heightmap mesh from image data.""" - ... -def gen_mesh_hemi_sphere(radius: float,rings: int,slices: int,) -> Mesh: - """Generate half-sphere mesh (no bottom cap).""" - ... -def gen_mesh_knot(radius: float,size: float,radSeg: int,sides: int,) -> Mesh: - """Generate trefoil knot mesh.""" - ... -def gen_mesh_plane(width: float,length: float,resX: int,resZ: int,) -> Mesh: - """Generate plane mesh (with subdivisions).""" - ... -def gen_mesh_poly(sides: int,radius: float,) -> Mesh: - """Generate polygonal mesh.""" - ... -def gen_mesh_sphere(radius: float,rings: int,slices: int,) -> Mesh: - """Generate sphere mesh (standard sphere).""" - ... -def gen_mesh_tangents(mesh: Any|list|tuple,) -> None: - """Compute mesh tangents.""" - ... -def gen_mesh_torus(radius: float,size: float,radSeg: int,sides: int,) -> Mesh: - """Generate torus mesh.""" - ... -def gen_texture_mipmaps(texture: Any|list|tuple,) -> None: - """Generate GPU mipmaps for a texture.""" - ... -def get_application_directory() -> str: - """Get the directory of the running application (uses static string).""" - ... -def get_camera_matrix(camera: Camera3D|list|tuple,) -> Matrix: - """Get camera transform matrix (view matrix).""" - ... -def get_camera_matrix_2d(camera: Camera2D|list|tuple,) -> Matrix: - """Get camera 2d transform matrix.""" - ... -def get_char_pressed() -> int: - """Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty.""" - ... -def get_clipboard_image() -> Image: - """Get clipboard image content.""" - ... -def get_clipboard_text() -> str: - """Get clipboard text content.""" - ... -def get_codepoint(text: str,codepointSize: Any,) -> int: - """Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure.""" - ... -def get_codepoint_count(text: str,) -> int: - """Get total number of codepoints in a UTF-8 encoded string.""" - ... -def get_codepoint_next(text: str,codepointSize: Any,) -> int: - """Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure.""" - ... -def get_codepoint_previous(text: str,codepointSize: Any,) -> int: - """Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure.""" - ... -def get_collision_rec(rec1: Rectangle|list|tuple,rec2: Rectangle|list|tuple,) -> Rectangle: - """Get collision rectangle for two rectangles collision.""" - ... -def get_color(hexValue: int,) -> Color: - """Get Color structure from hexadecimal value.""" - ... -def get_current_monitor() -> int: - """Get current monitor where window is placed.""" - ... -def get_directory_path(filePath: str,) -> str: - """Get full path for a given fileName with path (uses static string).""" - ... -def get_fps() -> int: - """Get current FPS.""" - ... -def get_file_extension(fileName: str,) -> str: - """Get pointer to extension for a filename string (includes dot: '.png').""" - ... -def get_file_length(fileName: str,) -> int: - """Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h).""" - ... -def get_file_mod_time(fileName: str,) -> int: - """Get file modification time (last write time).""" - ... -def get_file_name(filePath: str,) -> str: - """Get pointer to filename for a path string.""" - ... -def get_file_name_without_ext(filePath: str,) -> str: - """Get filename string without extension (uses static string).""" - ... -def get_font_default() -> Font: - """Get the default Font.""" - ... -def get_frame_time() -> float: - """Get time in seconds for last frame drawn (delta time).""" - ... -def get_gamepad_axis_count(gamepad: int,) -> int: - """Get gamepad axis count for a gamepad.""" - ... -def get_gamepad_axis_movement(gamepad: int,axis: int,) -> float: - """Get axis movement value for a gamepad axis.""" - ... -def get_gamepad_button_pressed() -> int: - """Get the last gamepad button pressed.""" - ... -def get_gamepad_name(gamepad: int,) -> str: - """Get gamepad internal name id.""" - ... -def get_gesture_detected() -> int: - """Get latest detected gesture.""" - ... -def get_gesture_drag_angle() -> float: - """Get gesture drag angle.""" - ... -def get_gesture_drag_vector() -> Vector2: - """Get gesture drag vector.""" - ... -def get_gesture_hold_duration() -> float: - """Get gesture hold time in seconds.""" - ... -def get_gesture_pinch_angle() -> float: - """Get gesture pinch angle.""" - ... -def get_gesture_pinch_vector() -> Vector2: - """Get gesture pinch delta.""" - ... -def get_glyph_atlas_rec(font: Font|list|tuple,codepoint: int,) -> Rectangle: - """Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found.""" - ... -def get_glyph_index(font: Font|list|tuple,codepoint: int,) -> int: - """Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found.""" - ... -def get_glyph_info(font: Font|list|tuple,codepoint: int,) -> GlyphInfo: - """Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found.""" - ... -def get_image_alpha_border(image: Image|list|tuple,threshold: float,) -> Rectangle: - """Get image alpha border rectangle.""" - ... -def get_image_color(image: Image|list|tuple,x: int,y: int,) -> Color: - """Get image pixel color at (x, y) position.""" - ... -def get_key_pressed() -> int: - """Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty.""" - ... -def get_master_volume() -> float: - """Get master volume (listener).""" - ... -def get_mesh_bounding_box(mesh: Mesh|list|tuple,) -> BoundingBox: - """Compute mesh bounding box limits.""" - ... -def get_model_bounding_box(model: Model|list|tuple,) -> BoundingBox: - """Compute model bounding box limits (considers all meshes).""" - ... -def get_monitor_count() -> int: - """Get number of connected monitors.""" - ... -def get_monitor_height(monitor: int,) -> int: - """Get specified monitor height (current video mode used by monitor).""" - ... -def get_monitor_name(monitor: int,) -> str: - """Get the human-readable, UTF-8 encoded name of the specified monitor.""" - ... -def get_monitor_physical_height(monitor: int,) -> int: - """Get specified monitor physical height in millimetres.""" - ... -def get_monitor_physical_width(monitor: int,) -> int: - """Get specified monitor physical width in millimetres.""" - ... -def get_monitor_position(monitor: int,) -> Vector2: - """Get specified monitor position.""" - ... -def get_monitor_refresh_rate(monitor: int,) -> int: - """Get specified monitor refresh rate.""" - ... -def get_monitor_width(monitor: int,) -> int: - """Get specified monitor width (current video mode used by monitor).""" - ... -def get_mouse_delta() -> Vector2: - """Get mouse delta between frames.""" - ... -def get_mouse_position() -> Vector2: - """Get mouse position XY.""" - ... -def get_mouse_wheel_move() -> float: - """Get mouse wheel movement for X or Y, whichever is larger.""" - ... -def get_mouse_wheel_move_v() -> Vector2: - """Get mouse wheel movement for both X and Y.""" - ... -def get_mouse_x() -> int: - """Get mouse position X.""" - ... -def get_mouse_y() -> int: - """Get mouse position Y.""" - ... -def get_music_time_length(music: Music|list|tuple,) -> float: - """Get music time length (in seconds).""" - ... -def get_music_time_played(music: Music|list|tuple,) -> float: - """Get current music time played (in seconds).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def get_physics_bodies_count() -> int: - """Returns the current amount of created physics bodies.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def get_physics_body(index: int,) -> Any: - """Returns a physics body of the bodies pool at a specific index.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def get_physics_shape_type(index: int,) -> int: - """Returns the physics body shape type (PHYSICS_CIRCLE or PHYSICS_POLYGON).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def get_physics_shape_vertex(body: Any|list|tuple,vertex: int,) -> Vector2: - """Returns transformed position of a body shape (body position + vertex transformed position).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def get_physics_shape_vertices_count(index: int,) -> int: - """Returns the amount of vertices of a physics body shape.""" - ... -def get_pixel_color(srcPtr: Any,format: int,) -> Color: - """Get Color from a source pixel pointer of certain format.""" - ... -def get_pixel_data_size(width: int,height: int,format: int,) -> int: - """Get pixel data size in bytes for certain format.""" - ... -def get_prev_directory_path(dirPath: str,) -> str: - """Get previous directory path for a given path (uses static string).""" - ... -def get_random_value(min_0: int,max_1: int,) -> int: - """Get a random value between min and max (both included).""" - ... -def get_ray_collision_box(ray: Ray|list|tuple,box: BoundingBox|list|tuple,) -> RayCollision: - """Get collision info between ray and box.""" - ... -def get_ray_collision_mesh(ray: Ray|list|tuple,mesh: Mesh|list|tuple,transform: Matrix|list|tuple,) -> RayCollision: - """Get collision info between ray and mesh.""" - ... -def get_ray_collision_quad(ray: Ray|list|tuple,p1: Vector3|list|tuple,p2: Vector3|list|tuple,p3: Vector3|list|tuple,p4: Vector3|list|tuple,) -> RayCollision: - """Get collision info between ray and quad.""" - ... -def get_ray_collision_sphere(ray: Ray|list|tuple,center: Vector3|list|tuple,radius: float,) -> RayCollision: - """Get collision info between ray and sphere.""" - ... -def get_ray_collision_triangle(ray: Ray|list|tuple,p1: Vector3|list|tuple,p2: Vector3|list|tuple,p3: Vector3|list|tuple,) -> RayCollision: - """Get collision info between ray and triangle.""" - ... -def get_render_height() -> int: - """Get current render height (it considers HiDPI).""" - ... -def get_render_width() -> int: - """Get current render width (it considers HiDPI).""" - ... -def get_screen_height() -> int: - """Get current screen height.""" - ... -def get_screen_to_world_2d(position: Vector2|list|tuple,camera: Camera2D|list|tuple,) -> Vector2: - """Get the world space position for a 2d camera screen space position.""" - ... -def get_screen_to_world_ray(position: Vector2|list|tuple,camera: Camera3D|list|tuple,) -> Ray: - """Get a ray trace from screen position (i.e mouse).""" - ... -def get_screen_to_world_ray_ex(position: Vector2|list|tuple,camera: Camera3D|list|tuple,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.""" - ... -def get_shader_location(shader: Shader|list|tuple,uniformName: str,) -> int: - """Get shader uniform location.""" - ... -def get_shader_location_attrib(shader: Shader|list|tuple,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|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: B-Spline.""" - ... -def get_spline_point_bezier_cubic(p1: Vector2|list|tuple,c2: Vector2|list|tuple,c3: Vector2|list|tuple,p4: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Cubic Bezier.""" - ... -def get_spline_point_bezier_quad(p1: Vector2|list|tuple,c2: Vector2|list|tuple,p3: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Quadratic Bezier.""" - ... -def get_spline_point_catmull_rom(p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Catmull-Rom.""" - ... -def get_spline_point_linear(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Linear.""" - ... -def get_time() -> float: - """Get elapsed time in seconds since InitWindow().""" - ... -def get_touch_point_count() -> int: - """Get number of touch points.""" - ... -def get_touch_point_id(index: int,) -> int: - """Get touch point identifier for given index.""" - ... -def get_touch_position(index: int,) -> Vector2: - """Get touch position XY for a touch point index (relative to screen size).""" - ... -def get_touch_x() -> int: - """Get touch position X for touch point 0 (relative to screen size).""" - ... -def get_touch_y() -> int: - """Get touch position Y for touch point 0 (relative to screen size).""" - ... -def get_window_handle() -> Any: - """Get native window handle.""" - ... -def get_window_position() -> Vector2: - """Get window position XY on monitor.""" - ... -def get_window_scale_dpi() -> Vector2: - """Get window scale DPI factor.""" - ... -def get_working_directory() -> str: - """Get current working directory (uses static string).""" - ... -def get_world_to_screen(position: Vector3|list|tuple,camera: Camera3D|list|tuple,) -> Vector2: - """Get the screen space position for a 3d world space position.""" - ... -def get_world_to_screen_2d(position: Vector2|list|tuple,camera: Camera2D|list|tuple,) -> Vector2: - """Get the screen space position for a 2d camera world space position.""" - ... -def get_world_to_screen_ex(position: Vector3|list|tuple,camera: Camera3D|list|tuple,width: int,height: int,) -> Vector2: - """Get size position for a 3d world space position.""" - ... -def gui_button(bounds: Rectangle|list|tuple,text: str,) -> int: - """Button control, returns true when clicked.""" - ... -def gui_check_box(bounds: Rectangle|list|tuple,text: str,checked: Any,) -> int: - """Check Box control, returns true when active.""" - ... -def gui_color_bar_alpha(bounds: Rectangle|list|tuple,text: str,alpha: Any,) -> int: - """Color Bar Alpha control.""" - ... -def gui_color_bar_hue(bounds: Rectangle|list|tuple,text: str,value: Any,) -> int: - """Color Bar Hue control.""" - ... -def gui_color_panel(bounds: Rectangle|list|tuple,text: str,color: Any|list|tuple,) -> int: - """Color Panel control.""" - ... -def gui_color_panel_hsv(bounds: Rectangle|list|tuple,text: str,colorHsv: Any|list|tuple,) -> int: - """Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV().""" - ... -def gui_color_picker(bounds: Rectangle|list|tuple,text: str,color: Any|list|tuple,) -> int: - """Color Picker control (multiple color controls).""" - ... -def gui_color_picker_hsv(bounds: Rectangle|list|tuple,text: str,colorHsv: Any|list|tuple,) -> int: - """Color Picker control that avoids conversion to RGB on each call (multiple color controls).""" - ... -def gui_combo_box(bounds: Rectangle|list|tuple,text: str,active: Any,) -> int: - """Combo Box control.""" - ... -def gui_disable() -> None: - """Disable gui controls (global state).""" - ... -def gui_disable_tooltip() -> None: - """Disable gui tooltips (global state).""" - ... -def gui_draw_icon(iconId: int,posX: int,posY: int,pixelSize: int,color: Color|list|tuple,) -> None: - """Draw icon using pixel size at specified position.""" - ... -def gui_dropdown_box(bounds: Rectangle|list|tuple,text: str,active: Any,editMode: bool,) -> int: - """Dropdown Box control.""" - ... -def gui_dummy_rec(bounds: Rectangle|list|tuple,text: str,) -> int: - """Dummy control for placeholders.""" - ... -def gui_enable() -> None: - """Enable gui controls (global state).""" - ... -def gui_enable_tooltip() -> None: - """Enable gui tooltips (global state).""" - ... -def gui_get_font() -> Font: - """Get gui custom font (global state).""" - ... -def gui_get_icons() -> Any: - """Get raygui icons data pointer.""" - ... -def gui_get_state() -> int: - """Get gui state (global state).""" - ... -def gui_get_style(control: int,property: int,) -> int: - """Get one style property.""" - ... -def gui_grid(bounds: Rectangle|list|tuple,text: str,spacing: float,subdivs: int,mouseCell: Any|list|tuple,) -> int: - """Grid control.""" - ... -def gui_group_box(bounds: Rectangle|list|tuple,text: str,) -> int: - """Group Box control with text name.""" - ... -def gui_icon_text(iconId: int,text: str,) -> str: - """Get text with icon id prepended (if supported).""" - ... -def gui_is_locked() -> bool: - """Check if gui is locked (global state).""" - ... -def gui_label(bounds: Rectangle|list|tuple,text: str,) -> int: - """Label control.""" - ... -def gui_label_button(bounds: Rectangle|list|tuple,text: str,) -> int: - """Label button control, returns true when clicked.""" - ... -def gui_line(bounds: Rectangle|list|tuple,text: str,) -> int: - """Line separator control, could contain text.""" - ... -def gui_list_view(bounds: Rectangle|list|tuple,text: str,scrollIndex: Any,active: Any,) -> int: - """List View control.""" - ... -def gui_list_view_ex(bounds: Rectangle|list|tuple,text: list[str],count: int,scrollIndex: Any,active: Any,focus: Any,) -> int: - """List View with extended parameters.""" - ... -def gui_load_icons(fileName: str,loadIconsName: bool,) -> list[str]: - """Load raygui icons file (.rgi) into internal icons data.""" - ... -def gui_load_style(fileName: str,) -> None: - """Load style file over global style variable (.rgs).""" - ... -def gui_load_style_default() -> None: - """Load style default over global style.""" - ... -def gui_lock() -> None: - """Lock gui controls (global state).""" - ... -def gui_message_box(bounds: Rectangle|list|tuple,title: str,message: str,buttons: str,) -> int: - """Message Box control, displays a message.""" - ... -def gui_panel(bounds: Rectangle|list|tuple,text: str,) -> int: - """Panel control, useful to group controls.""" - ... -def gui_progress_bar(bounds: Rectangle|list|tuple,textLeft: str,textRight: str,value: Any,minValue: float,maxValue: float,) -> int: - """Progress Bar control.""" - ... -def gui_scroll_panel(bounds: Rectangle|list|tuple,text: str,content: Rectangle|list|tuple,scroll: Any|list|tuple,view: Any|list|tuple,) -> int: - """Scroll Panel control.""" - ... -def gui_set_alpha(alpha: float,) -> None: - """Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f.""" - ... -def gui_set_font(font: Font|list|tuple,) -> None: - """Set gui custom font (global state).""" - ... -def gui_set_icon_scale(scale: int,) -> None: - """Set default icon drawing size.""" - ... -def gui_set_state(state: int,) -> None: - """Set gui state (global state).""" - ... -def gui_set_style(control: int,property: int,value: int,) -> None: - """Set one style property.""" - ... -def gui_set_tooltip(tooltip: str,) -> None: - """Set tooltip string.""" - ... -def gui_slider(bounds: Rectangle|list|tuple,textLeft: str,textRight: str,value: Any,minValue: float,maxValue: float,) -> int: - """Slider control.""" - ... -def gui_slider_bar(bounds: Rectangle|list|tuple,textLeft: str,textRight: str,value: Any,minValue: float,maxValue: float,) -> int: - """Slider Bar control.""" - ... -def gui_spinner(bounds: Rectangle|list|tuple,text: str,value: Any,minValue: int,maxValue: int,editMode: bool,) -> int: - """Spinner control.""" - ... -def gui_status_bar(bounds: Rectangle|list|tuple,text: str,) -> int: - """Status Bar control, shows info text.""" - ... -def gui_tab_bar(bounds: Rectangle|list|tuple,text: list[str],count: int,active: Any,) -> int: - """Tab Bar control, returns TAB to be closed or -1.""" - ... -def gui_text_box(bounds: Rectangle|list|tuple,text: str,textSize: int,editMode: bool,) -> int: - """Text Box control, updates input text.""" - ... -def gui_text_input_box(bounds: Rectangle|list|tuple,title: str,message: str,buttons: str,text: str,textMaxSize: int,secretViewActive: Any,) -> int: - """Text Input Box control, ask for text, supports secret.""" - ... -def gui_toggle(bounds: Rectangle|list|tuple,text: str,active: Any,) -> int: - """Toggle Button control.""" - ... -def gui_toggle_group(bounds: Rectangle|list|tuple,text: str,active: Any,) -> int: - """Toggle Group control.""" - ... -def gui_toggle_slider(bounds: Rectangle|list|tuple,text: str,active: Any,) -> int: - """Toggle Slider control.""" - ... -def gui_unlock() -> None: - """Unlock gui controls (global state).""" - ... -def gui_value_box(bounds: Rectangle|list|tuple,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|list|tuple,text: str,textValue: str,value: Any,editMode: bool,) -> int: - """Value box control for float values.""" - ... -def gui_window_box(bounds: Rectangle|list|tuple,title: str,) -> int: - """Window Box control, shows a window that can be closed.""" - ... -def hide_cursor() -> None: - """Hides cursor.""" - ... -def image_alpha_clear(image: Any|list|tuple,color: Color|list|tuple,threshold: float,) -> None: - """Clear alpha channel to desired color.""" - ... -def image_alpha_crop(image: Any|list|tuple,threshold: float,) -> None: - """Crop image depending on alpha value.""" - ... -def image_alpha_mask(image: Any|list|tuple,alphaMask: Image|list|tuple,) -> None: - """Apply alpha mask to image.""" - ... -def image_alpha_premultiply(image: Any|list|tuple,) -> None: - """Premultiply alpha channel.""" - ... -def image_blur_gaussian(image: Any|list|tuple,blurSize: int,) -> None: - """Apply Gaussian blur using a box blur approximation.""" - ... -def image_clear_background(dst: Any|list|tuple,color: Color|list|tuple,) -> None: - """Clear image background with given color.""" - ... -def image_color_brightness(image: Any|list|tuple,brightness: int,) -> None: - """Modify image color: brightness (-255 to 255).""" - ... -def image_color_contrast(image: Any|list|tuple,contrast: float,) -> None: - """Modify image color: contrast (-100 to 100).""" - ... -def image_color_grayscale(image: Any|list|tuple,) -> None: - """Modify image color: grayscale.""" - ... -def image_color_invert(image: Any|list|tuple,) -> None: - """Modify image color: invert.""" - ... -def image_color_replace(image: Any|list|tuple,color: Color|list|tuple,replace: Color|list|tuple,) -> None: - """Modify image color: replace color.""" - ... -def image_color_tint(image: Any|list|tuple,color: Color|list|tuple,) -> None: - """Modify image color: tint.""" - ... -def image_copy(image: Image|list|tuple,) -> Image: - """Create an image duplicate (useful for transformations).""" - ... -def image_crop(image: Any|list|tuple,crop: Rectangle|list|tuple,) -> None: - """Crop an image to a defined rectangle.""" - ... -def image_dither(image: Any|list|tuple,rBpp: int,gBpp: int,bBpp: int,aBpp: int,) -> None: - """Dither image data to 16bpp or lower (Floyd-Steinberg dithering).""" - ... -def image_draw(dst: Any|list|tuple,src: Image|list|tuple,srcRec: Rectangle|list|tuple,dstRec: Rectangle|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a source image within a destination image (tint applied to source).""" - ... -def image_draw_circle(dst: Any|list|tuple,centerX: int,centerY: int,radius: int,color: Color|list|tuple,) -> None: - """Draw a filled circle within an image.""" - ... -def image_draw_circle_lines(dst: Any|list|tuple,centerX: int,centerY: int,radius: int,color: Color|list|tuple,) -> None: - """Draw circle outline within an image.""" - ... -def image_draw_circle_lines_v(dst: Any|list|tuple,center: Vector2|list|tuple,radius: int,color: Color|list|tuple,) -> None: - """Draw circle outline within an image (Vector version).""" - ... -def image_draw_circle_v(dst: Any|list|tuple,center: Vector2|list|tuple,radius: int,color: Color|list|tuple,) -> None: - """Draw a filled circle within an image (Vector version).""" - ... -def image_draw_line(dst: Any|list|tuple,startPosX: int,startPosY: int,endPosX: int,endPosY: int,color: Color|list|tuple,) -> None: - """Draw line within an image.""" - ... -def image_draw_line_ex(dst: Any|list|tuple,start: Vector2|list|tuple,end: Vector2|list|tuple,thick: int,color: Color|list|tuple,) -> None: - """Draw a line defining thickness within an image.""" - ... -def image_draw_line_v(dst: Any|list|tuple,start: Vector2|list|tuple,end: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw line within an image (Vector version).""" - ... -def image_draw_pixel(dst: Any|list|tuple,posX: int,posY: int,color: Color|list|tuple,) -> None: - """Draw pixel within an image.""" - ... -def image_draw_pixel_v(dst: Any|list|tuple,position: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw pixel within an image (Vector version).""" - ... -def image_draw_rectangle(dst: Any|list|tuple,posX: int,posY: int,width: int,height: int,color: Color|list|tuple,) -> None: - """Draw rectangle within an image.""" - ... -def image_draw_rectangle_lines(dst: Any|list|tuple,rec: Rectangle|list|tuple,thick: int,color: Color|list|tuple,) -> None: - """Draw rectangle lines within an image.""" - ... -def image_draw_rectangle_rec(dst: Any|list|tuple,rec: Rectangle|list|tuple,color: Color|list|tuple,) -> None: - """Draw rectangle within an image.""" - ... -def image_draw_rectangle_v(dst: Any|list|tuple,position: Vector2|list|tuple,size: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw rectangle within an image (Vector version).""" - ... -def image_draw_text(dst: Any|list|tuple,text: str,posX: int,posY: int,fontSize: int,color: Color|list|tuple,) -> None: - """Draw text (using default font) within an image (destination).""" - ... -def image_draw_text_ex(dst: Any|list|tuple,font: Font|list|tuple,text: str,position: Vector2|list|tuple,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw text (custom sprite font) within an image (destination).""" - ... -def image_draw_triangle(dst: Any|list|tuple,v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw triangle within an image.""" - ... -def image_draw_triangle_ex(dst: Any|list|tuple,v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,c1: Color|list|tuple,c2: Color|list|tuple,c3: Color|list|tuple,) -> None: - """Draw triangle with interpolated colors within an image.""" - ... -def image_draw_triangle_fan(dst: Any|list|tuple,points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle fan defined by points within an image (first vertex is the center).""" - ... -def image_draw_triangle_lines(dst: Any|list|tuple,v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw triangle outline within an image.""" - ... -def image_draw_triangle_strip(dst: Any|list|tuple,points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle strip defined by points within an image.""" - ... -def image_flip_horizontal(image: Any|list|tuple,) -> None: - """Flip image horizontally.""" - ... -def image_flip_vertical(image: Any|list|tuple,) -> None: - """Flip image vertically.""" - ... -def image_format(image: Any|list|tuple,newFormat: int,) -> None: - """Convert image data to desired format.""" - ... -def image_from_channel(image: Image|list|tuple,selectedChannel: int,) -> Image: - """Create an image from a selected channel of another image (GRAYSCALE).""" - ... -def image_from_image(image: Image|list|tuple,rec: Rectangle|list|tuple,) -> Image: - """Create an image from another image piece.""" - ... -def image_kernel_convolution(image: Any|list|tuple,kernel: Any,kernelSize: int,) -> None: - """Apply custom square convolution kernel to image.""" - ... -def image_mipmaps(image: Any|list|tuple,) -> None: - """Compute all mipmap levels for a provided image.""" - ... -def image_resize(image: Any|list|tuple,newWidth: int,newHeight: int,) -> None: - """Resize image (Bicubic scaling algorithm).""" - ... -def image_resize_canvas(image: Any|list|tuple,newWidth: int,newHeight: int,offsetX: int,offsetY: int,fill: Color|list|tuple,) -> None: - """Resize canvas and fill with color.""" - ... -def image_resize_nn(image: Any|list|tuple,newWidth: int,newHeight: int,) -> None: - """Resize image (Nearest-Neighbor scaling algorithm).""" - ... -def image_rotate(image: Any|list|tuple,degrees: int,) -> None: - """Rotate image by input angle in degrees (-359 to 359).""" - ... -def image_rotate_ccw(image: Any|list|tuple,) -> None: - """Rotate image counter-clockwise 90deg.""" - ... -def image_rotate_cw(image: Any|list|tuple,) -> None: - """Rotate image clockwise 90deg.""" - ... -def image_text(text: str,fontSize: int,color: Color|list|tuple,) -> Image: - """Create an image from text (default font).""" - ... -def image_text_ex(font: Font|list|tuple,text: str,fontSize: float,spacing: float,tint: Color|list|tuple,) -> Image: - """Create an image from text (custom sprite font).""" - ... -def image_to_pot(image: Any|list|tuple,fill: Color|list|tuple,) -> None: - """Convert image to POT (power-of-two).""" - ... -def init_audio_device() -> None: - """Initialize audio device and context.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def init_physics() -> None: - """Initializes physics values, pointers and creates physics loop thread.""" - ... -def init_window(width: int,height: int,title: str,) -> None: - """Initialize window and OpenGL context.""" - ... -def is_audio_device_ready() -> bool: - """Check if audio device has been initialized successfully.""" - ... -def is_audio_stream_playing(stream: AudioStream|list|tuple,) -> bool: - """Check if audio stream is playing.""" - ... -def is_audio_stream_processed(stream: AudioStream|list|tuple,) -> bool: - """Check if any audio stream buffers requires refill.""" - ... -def is_audio_stream_valid(stream: AudioStream|list|tuple,) -> bool: - """Checks if an audio stream is valid (buffers initialized).""" - ... -def is_cursor_hidden() -> bool: - """Check if cursor is not visible.""" - ... -def is_cursor_on_screen() -> bool: - """Check if cursor is on the screen.""" - ... -def is_file_dropped() -> bool: - """Check if a file has been dropped into window.""" - ... -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_valid(font: Font|list|tuple,) -> bool: - """Check if a font is valid (font data loaded, WARNING: GPU texture not checked).""" - ... -def is_gamepad_available(gamepad: int,) -> bool: - """Check if a gamepad is available.""" - ... -def is_gamepad_button_down(gamepad: int,button: int,) -> bool: - """Check if a gamepad button is being pressed.""" - ... -def is_gamepad_button_pressed(gamepad: int,button: int,) -> bool: - """Check if a gamepad button has been pressed once.""" - ... -def is_gamepad_button_released(gamepad: int,button: int,) -> bool: - """Check if a gamepad button has been released once.""" - ... -def is_gamepad_button_up(gamepad: int,button: int,) -> bool: - """Check if a gamepad button is NOT being pressed.""" - ... -def is_gesture_detected(gesture: int,) -> bool: - """Check if a gesture have been detected.""" - ... -def is_image_valid(image: Image|list|tuple,) -> bool: - """Check if an image is valid (data and parameters).""" - ... -def is_key_down(key: int,) -> bool: - """Check if a key is being pressed.""" - ... -def is_key_pressed(key: int,) -> bool: - """Check if a key has been pressed once.""" - ... -def is_key_pressed_repeat(key: int,) -> bool: - """Check if a key has been pressed again.""" - ... -def is_key_released(key: int,) -> bool: - """Check if a key has been released once.""" - ... -def is_key_up(key: int,) -> bool: - """Check if a key is NOT being pressed.""" - ... -def is_material_valid(material: Material|list|tuple,) -> bool: - """Check if a material is valid (shader assigned, map textures loaded in GPU).""" - ... -def is_model_animation_valid(model: Model|list|tuple,anim: ModelAnimation|list|tuple,) -> bool: - """Check model animation skeleton match.""" - ... -def is_model_valid(model: Model|list|tuple,) -> bool: - """Check if a model is valid (loaded in GPU, VAO/VBOs).""" - ... -def is_mouse_button_down(button: int,) -> bool: - """Check if a mouse button is being pressed.""" - ... -def is_mouse_button_pressed(button: int,) -> bool: - """Check if a mouse button has been pressed once.""" - ... -def is_mouse_button_released(button: int,) -> bool: - """Check if a mouse button has been released once.""" - ... -def is_mouse_button_up(button: int,) -> bool: - """Check if a mouse button is NOT being pressed.""" - ... -def is_music_stream_playing(music: Music|list|tuple,) -> bool: - """Check if music is playing.""" - ... -def is_music_valid(music: Music|list|tuple,) -> bool: - """Checks if a music stream is valid (context and buffers initialized).""" - ... -def is_path_file(path: str,) -> bool: - """Check if a given path is a file or a directory.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def is_physics_enabled() -> bool: - """Returns true if physics thread is currently enabled.""" - ... -def is_render_texture_valid(target: RenderTexture|list|tuple,) -> bool: - """Check if a render texture is valid (loaded in GPU).""" - ... -def is_shader_valid(shader: Shader|list|tuple,) -> bool: - """Check if a shader is valid (loaded on GPU).""" - ... -def is_sound_playing(sound: Sound|list|tuple,) -> bool: - """Check if a sound is currently playing.""" - ... -def is_sound_valid(sound: Sound|list|tuple,) -> bool: - """Checks if a sound is valid (data loaded and buffers initialized).""" - ... -def is_texture_valid(texture: Texture|list|tuple,) -> bool: - """Check if a texture is valid (loaded in GPU).""" - ... -def is_wave_valid(wave: Wave|list|tuple,) -> bool: - """Checks if wave data is valid (data loaded and parameters).""" - ... -def is_window_focused() -> bool: - """Check if window is currently focused.""" - ... -def is_window_fullscreen() -> bool: - """Check if window is currently fullscreen.""" - ... -def is_window_hidden() -> bool: - """Check if window is currently hidden.""" - ... -def is_window_maximized() -> bool: - """Check if window is currently maximized.""" - ... -def is_window_minimized() -> bool: - """Check if window is currently minimized.""" - ... -def is_window_ready() -> bool: - """Check if window has been initialized successfully.""" - ... -def is_window_resized() -> bool: - """Check if window has been resized last frame.""" - ... -def is_window_state(flag: int,) -> bool: - """Check if one specific window flag is enabled.""" - ... -def lerp(start: float,end: float,amount: float,) -> float: - """.""" - ... -def load_audio_stream(sampleRate: int,sampleSize: int,channels: int,) -> AudioStream: - """Load audio stream (to stream raw audio pcm data).""" - ... -def load_automation_event_list(fileName: str,) -> AutomationEventList: - """Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS.""" - ... -def load_codepoints(text: str,count: Any,) -> Any: - """Load all codepoints from a UTF-8 text string, codepoints count returned by parameter.""" - ... -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. Use 'DIR' in the filter string to include directories in the result.""" - ... -def load_dropped_files() -> FilePathList: - """Load dropped filepaths.""" - ... -def load_file_data(fileName: str,dataSize: Any,) -> str: - """Load file data as byte array (read).""" - ... -def load_file_text(fileName: str,) -> str: - """Load text data from file (read), returns a '\0' terminated string.""" - ... -def load_font(fileName: str,) -> Font: - """Load font from file into GPU memory (VRAM).""" - ... -def load_font_data(fileData: str,dataSize: int,fontSize: int,codepoints: Any,codepointCount: int,type: int,) -> Any: - """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 set, font size is provided in pixels height.""" - ... -def load_font_from_image(image: Image|list|tuple,key: Color|list|tuple,firstChar: int,) -> Font: - """Load font from Image (XNA style).""" - ... -def load_font_from_memory(fileType: str,fileData: str,dataSize: int,fontSize: int,codepoints: Any,codepointCount: int,) -> Font: - """Load font from memory buffer, fileType refers to extension: i.e. '.ttf'.""" - ... -def load_image(fileName: str,) -> Image: - """Load image from file into CPU memory (RAM).""" - ... -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|list|tuple,) -> Any: - """Load color data from image as a Color array (RGBA - 32bit).""" - ... -def load_image_from_memory(fileType: str,fileData: str,dataSize: int,) -> Image: - """Load image from memory buffer, fileType refers to extension: i.e. '.png'.""" - ... -def load_image_from_screen() -> Image: - """Load image from screen buffer and (screenshot).""" - ... -def load_image_from_texture(texture: Texture|list|tuple,) -> Image: - """Load image from GPU texture data.""" - ... -def load_image_palette(image: Image|list|tuple,maxPaletteSize: int,colorCount: Any,) -> Any: - """Load colors palette from image as a Color array (RGBA - 32bit).""" - ... -def load_image_raw(fileName: str,width: int,height: int,format: int,headerSize: int,) -> Image: - """Load image from RAW file data.""" - ... -def load_material_default() -> Material: - """Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps).""" - ... -def load_materials(fileName: str,materialCount: Any,) -> Any: - """Load materials from model file.""" - ... -def load_model(fileName: str,) -> Model: - """Load model from files (meshes and materials).""" - ... -def load_model_animations(fileName: str,animCount: Any,) -> Any: - """Load model animations from file.""" - ... -def load_model_from_mesh(mesh: Mesh|list|tuple,) -> Model: - """Load model from generated mesh (default material).""" - ... -def load_music_stream(fileName: str,) -> Music: - """Load music stream from file.""" - ... -def load_music_stream_from_memory(fileType: str,data: str,dataSize: int,) -> Music: - """Load music stream from data.""" - ... -def load_random_sequence(count: int,min_1: int,max_2: int,) -> Any: - """Load random values sequence, no values repeated.""" - ... -def load_render_texture(width: int,height: int,) -> RenderTexture: - """Load texture for rendering (framebuffer).""" - ... -def load_shader(vsFileName: str,fsFileName: str,) -> Shader: - """Load shader from files and bind default locations.""" - ... -def load_shader_from_memory(vsCode: str,fsCode: str,) -> Shader: - """Load shader from code strings and bind default locations.""" - ... -def load_sound(fileName: str,) -> Sound: - """Load sound from file.""" - ... -def load_sound_alias(source: Sound|list|tuple,) -> Sound: - """Create a new sound that shares the same sample data as the source sound, does not own the sound data.""" - ... -def load_sound_from_wave(wave: Wave|list|tuple,) -> Sound: - """Load sound from wave data.""" - ... -def load_texture(fileName: str,) -> Texture: - """Load texture from file into GPU memory (VRAM).""" - ... -def load_texture_cubemap(image: Image|list|tuple,layout: int,) -> Texture: - """Load cubemap from image, multiple image cubemap layouts supported.""" - ... -def load_texture_from_image(image: Image|list|tuple,) -> Texture: - """Load texture from image data.""" - ... -def load_utf8(codepoints: Any,length: int,) -> str: - """Load UTF-8 text encoded from codepoints array.""" - ... -def load_vr_stereo_config(device: VrDeviceInfo|list|tuple,) -> VrStereoConfig: - """Load VR stereo config for VR simulator device parameters.""" - ... -def load_wave(fileName: str,) -> Wave: - """Load wave data from file.""" - ... -def load_wave_from_memory(fileType: str,fileData: str,dataSize: int,) -> Wave: - """Load wave from memory buffer, fileType refers to extension: i.e. '.wav'.""" - ... -def load_wave_samples(wave: Wave|list|tuple,) -> 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|list|tuple,right: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def matrix_decompose(mat: Matrix|list|tuple,translation: Any|list|tuple,rotation: Any|list|tuple,scale: Any|list|tuple,) -> None: - """.""" - ... -def matrix_determinant(mat: Matrix|list|tuple,) -> float: - """.""" - ... -def matrix_frustum(left: float,right: float,bottom: float,top: float,nearPlane: float,farPlane: float,) -> Matrix: - """.""" - ... -def matrix_identity() -> Matrix: - """.""" - ... -def matrix_invert(mat: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def matrix_look_at(eye: Vector3|list|tuple,target: Vector3|list|tuple,up: Vector3|list|tuple,) -> Matrix: - """.""" - ... -def matrix_multiply(left: Matrix|list|tuple,right: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def matrix_ortho(left: float,right: float,bottom: float,top: float,nearPlane: float,farPlane: float,) -> Matrix: - """.""" - ... -def matrix_perspective(fovY: float,aspect: float,nearPlane: float,farPlane: float,) -> Matrix: - """.""" - ... -def matrix_rotate(axis: Vector3|list|tuple,angle: float,) -> Matrix: - """.""" - ... -def matrix_rotate_x(angle: float,) -> Matrix: - """.""" - ... -def matrix_rotate_xyz(angle: Vector3|list|tuple,) -> Matrix: - """.""" - ... -def matrix_rotate_y(angle: float,) -> Matrix: - """.""" - ... -def matrix_rotate_z(angle: float,) -> Matrix: - """.""" - ... -def matrix_rotate_zyx(angle: Vector3|list|tuple,) -> Matrix: - """.""" - ... -def matrix_scale(x: float,y: float,z: float,) -> Matrix: - """.""" - ... -def matrix_subtract(left: Matrix|list|tuple,right: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def matrix_to_float_v(mat: Matrix|list|tuple,) -> float16: - """.""" - ... -def matrix_trace(mat: Matrix|list|tuple,) -> float: - """.""" - ... -def matrix_translate(x: float,y: float,z: float,) -> Matrix: - """.""" - ... -def matrix_transpose(mat: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def maximize_window() -> None: - """Set window state: maximized, if resizable.""" - ... -def measure_text(text: str,fontSize: int,) -> int: - """Measure string width for default font.""" - ... -def measure_text_ex(font: Font|list|tuple,text: str,fontSize: float,spacing: float,) -> Vector2: - """Measure string size for Font.""" - ... -def mem_alloc(size: int,) -> Any: - """Internal memory allocator.""" - ... -def mem_free(ptr: Any,) -> None: - """Internal memory free.""" - ... -def mem_realloc(ptr: Any,size: int,) -> Any: - """Internal memory reallocator.""" - ... -def minimize_window() -> None: - """Set window state: minimized, if resizable.""" - ... -def normalize(value: float,start: float,end: float,) -> float: - """.""" - ... -def open_url(url: str,) -> None: - """Open URL with default system browser (if available).""" - ... -def pause_audio_stream(stream: AudioStream|list|tuple,) -> None: - """Pause audio stream.""" - ... -def pause_music_stream(music: Music|list|tuple,) -> None: - """Pause music playing.""" - ... -def pause_sound(sound: Sound|list|tuple,) -> None: - """Pause a sound.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def physics_add_force(body: Any|list|tuple,force: Vector2|list|tuple,) -> None: - """Adds a force to a physics body.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def physics_add_torque(body: Any|list|tuple,amount: float,) -> None: - """Adds an angular force to a physics body.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def physics_shatter(body: Any|list|tuple,position: Vector2|list|tuple,force: float,) -> None: - """Shatters a polygon shape physics body to little physics bodies with explosion force.""" - ... -def play_audio_stream(stream: AudioStream|list|tuple,) -> None: - """Play audio stream.""" - ... -def play_automation_event(event: AutomationEvent|list|tuple,) -> None: - """Play a recorded automation event.""" - ... -def play_music_stream(music: Music|list|tuple,) -> None: - """Start music playing.""" - ... -def play_sound(sound: Sound|list|tuple,) -> None: - """Play a sound.""" - ... -def poll_input_events() -> None: - """Register all input events.""" - ... -def quaternion_add(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def quaternion_add_value(q: Vector4|list|tuple,add: float,) -> Vector4: - """.""" - ... -def quaternion_cubic_hermite_spline(q1: Vector4|list|tuple,outTangent1: Vector4|list|tuple,q2: Vector4|list|tuple,inTangent2: Vector4|list|tuple,t: float,) -> Vector4: - """.""" - ... -def quaternion_divide(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def quaternion_equals(p: Vector4|list|tuple,q: Vector4|list|tuple,) -> int: - """.""" - ... -def quaternion_from_axis_angle(axis: Vector3|list|tuple,angle: float,) -> Vector4: - """.""" - ... -def quaternion_from_euler(pitch: float,yaw: float,roll: float,) -> Vector4: - """.""" - ... -def quaternion_from_matrix(mat: Matrix|list|tuple,) -> Vector4: - """.""" - ... -def quaternion_from_vector3_to_vector3(from_0: Vector3|list|tuple,to: Vector3|list|tuple,) -> Vector4: - """.""" - ... -def quaternion_identity() -> Vector4: - """.""" - ... -def quaternion_invert(q: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def quaternion_length(q: Vector4|list|tuple,) -> float: - """.""" - ... -def quaternion_lerp(q1: Vector4|list|tuple,q2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def quaternion_multiply(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def quaternion_nlerp(q1: Vector4|list|tuple,q2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def quaternion_normalize(q: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def quaternion_scale(q: Vector4|list|tuple,mul: float,) -> Vector4: - """.""" - ... -def quaternion_slerp(q1: Vector4|list|tuple,q2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def quaternion_subtract(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def quaternion_subtract_value(q: Vector4|list|tuple,sub: float,) -> Vector4: - """.""" - ... -def quaternion_to_axis_angle(q: Vector4|list|tuple,outAxis: Any|list|tuple,outAngle: Any,) -> None: - """.""" - ... -def quaternion_to_euler(q: Vector4|list|tuple,) -> Vector3: - """.""" - ... -def quaternion_to_matrix(q: Vector4|list|tuple,) -> Matrix: - """.""" - ... -def quaternion_transform(q: Vector4|list|tuple,mat: Matrix|list|tuple,) -> Vector4: - """.""" - ... -def remap(value: float,inputStart: float,inputEnd: float,outputStart: float,outputEnd: float,) -> float: - """.""" - ... -def restore_window() -> None: - """Set window state: not minimized/maximized.""" - ... -def resume_audio_stream(stream: AudioStream|list|tuple,) -> None: - """Resume audio stream.""" - ... -def resume_music_stream(music: Music|list|tuple,) -> None: - """Resume playing paused music.""" - ... -def resume_sound(sound: Sound|list|tuple,) -> None: - """Resume a paused sound.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def run_physics_step() -> None: - """Run physics step, to be used if PHYSICS_NO_THREADS is set in your main loop.""" - ... -def save_file_data(fileName: str,data: Any,dataSize: int,) -> bool: - """Save data to file from byte array (write), returns true on success.""" - ... -def save_file_text(fileName: str,text: str,) -> bool: - """Save text data to file (write), string must be '\0' terminated, returns true on success.""" - ... -def seek_music_stream(music: Music|list|tuple,position: float,) -> None: - """Seek music to a position (in seconds).""" - ... -def set_audio_stream_buffer_size_default(size: int,) -> None: - """Default size for new audio streams.""" - ... -def set_audio_stream_callback(stream: AudioStream|list|tuple,callback: Any,) -> None: - """Audio thread callback to request new data.""" - ... -def set_audio_stream_pan(stream: AudioStream|list|tuple,pan: float,) -> None: - """Set pan for audio stream (0.5 is centered).""" - ... -def set_audio_stream_pitch(stream: AudioStream|list|tuple,pitch: float,) -> None: - """Set pitch for audio stream (1.0 is base level).""" - ... -def set_audio_stream_volume(stream: AudioStream|list|tuple,volume: float,) -> None: - """Set volume for audio stream (1.0 is max level).""" - ... -def set_automation_event_base_frame(frame: int,) -> None: - """Set automation event internal base frame to start recording.""" - ... -def set_automation_event_list(list_0: Any|list|tuple,) -> None: - """Set automation event list to record to.""" - ... -def set_clipboard_text(text: str,) -> None: - """Set clipboard text content.""" - ... -def set_config_flags(flags: int,) -> None: - """Setup init configuration flags (view FLAGS).""" - ... -def set_exit_key(key: int,) -> None: - """Set a custom key to exit program (default is ESC).""" - ... -def set_gamepad_mappings(mappings: str,) -> int: - """Set internal gamepad mappings (SDL_GameControllerDB).""" - ... -def set_gamepad_vibration(gamepad: int,leftMotor: float,rightMotor: float,duration: float,) -> None: - """Set gamepad vibration for both motors (duration in seconds).""" - ... -def set_gestures_enabled(flags: int,) -> None: - """Enable a set of gestures using flags.""" - ... -def set_load_file_data_callback(callback: str,) -> None: - """Set custom file binary data loader.""" - ... -def set_load_file_text_callback(callback: str,) -> None: - """Set custom file text data loader.""" - ... -def set_master_volume(volume: float,) -> None: - """Set master volume (listener).""" - ... -def set_material_texture(material: Any|list|tuple,mapType: int,texture: Texture|list|tuple,) -> None: - """Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...).""" - ... -def set_model_mesh_material(model: Any|list|tuple,meshId: int,materialId: int,) -> None: - """Set material for a mesh.""" - ... -def set_mouse_cursor(cursor: int,) -> None: - """Set mouse cursor.""" - ... -def set_mouse_offset(offsetX: int,offsetY: int,) -> None: - """Set mouse offset.""" - ... -def set_mouse_position(x: int,y: int,) -> None: - """Set mouse position XY.""" - ... -def set_mouse_scale(scaleX: float,scaleY: float,) -> None: - """Set mouse scaling.""" - ... -def set_music_pan(music: Music|list|tuple,pan: float,) -> None: - """Set pan for a music (0.5 is center).""" - ... -def set_music_pitch(music: Music|list|tuple,pitch: float,) -> None: - """Set pitch for a music (1.0 is base level).""" - ... -def set_music_volume(music: Music|list|tuple,volume: float,) -> None: - """Set volume for music (1.0 is max level).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def set_physics_body_rotation(body: Any|list|tuple,radians: float,) -> None: - """Sets physics body shape transform based on radians parameter.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def set_physics_gravity(x: float,y: float,) -> None: - """Sets physics global gravity force.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def set_physics_time_step(delta: float,) -> None: - """Sets physics fixed time step in milliseconds. 1.666666 by default.""" - ... -def set_pixel_color(dstPtr: Any,color: Color|list|tuple,format: int,) -> None: - """Set color formatted into destination pixel pointer.""" - ... -def set_random_seed(seed: int,) -> None: - """Set the seed for the random number generator.""" - ... -def set_save_file_data_callback(callback: str,) -> None: - """Set custom file binary data saver.""" - ... -def set_save_file_text_callback(callback: str,) -> None: - """Set custom file text data saver.""" - ... -def set_shader_value(shader: Shader|list|tuple,locIndex: int,value: Any,uniformType: int,) -> None: - """Set shader uniform value.""" - ... -def set_shader_value_matrix(shader: Shader|list|tuple,locIndex: int,mat: Matrix|list|tuple,) -> None: - """Set shader uniform value (matrix 4x4).""" - ... -def set_shader_value_texture(shader: Shader|list|tuple,locIndex: int,texture: Texture|list|tuple,) -> None: - """Set shader uniform value for texture (sampler2d).""" - ... -def set_shader_value_v(shader: Shader|list|tuple,locIndex: int,value: Any,uniformType: int,count: int,) -> None: - """Set shader uniform value vector.""" - ... -def set_shapes_texture(texture: Texture|list|tuple,source: Rectangle|list|tuple,) -> None: - """Set texture and rectangle to be used on shapes drawing.""" - ... -def set_sound_pan(sound: Sound|list|tuple,pan: float,) -> None: - """Set pan for a sound (0.5 is center).""" - ... -def set_sound_pitch(sound: Sound|list|tuple,pitch: float,) -> None: - """Set pitch for a sound (1.0 is base level).""" - ... -def set_sound_volume(sound: Sound|list|tuple,volume: float,) -> None: - """Set volume for a sound (1.0 is max level).""" - ... -def set_target_fps(fps: int,) -> None: - """Set target FPS (maximum).""" - ... -def set_text_line_spacing(spacing: int,) -> None: - """Set vertical line spacing when drawing with line-breaks.""" - ... -def set_texture_filter(texture: Texture|list|tuple,filter: int,) -> None: - """Set texture scaling filter mode.""" - ... -def set_texture_wrap(texture: Texture|list|tuple,wrap: int,) -> None: - """Set texture wrapping mode.""" - ... -def set_trace_log_callback(callback: str,) -> None: - """Set custom trace log.""" - ... -def set_trace_log_level(logLevel: int,) -> None: - """Set the current threshold (minimum) log level.""" - ... -def set_window_focused() -> None: - """Set window focused.""" - ... -def set_window_icon(image: Image|list|tuple,) -> None: - """Set icon for window (single image, RGBA 32bit).""" - ... -def set_window_icons(images: Any|list|tuple,count: int,) -> None: - """Set icon for window (multiple images, RGBA 32bit).""" - ... -def set_window_max_size(width: int,height: int,) -> None: - """Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE).""" - ... -def set_window_min_size(width: int,height: int,) -> None: - """Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE).""" - ... -def set_window_monitor(monitor: int,) -> None: - """Set monitor for the current window.""" - ... -def set_window_opacity(opacity: float,) -> None: - """Set window opacity [0.0f..1.0f].""" - ... -def set_window_position(x: int,y: int,) -> None: - """Set window position on screen.""" - ... -def set_window_size(width: int,height: int,) -> None: - """Set window dimensions.""" - ... -def set_window_state(flags: int,) -> None: - """Set window configuration state using flags.""" - ... -def set_window_title(title: str,) -> None: - """Set title for window.""" - ... -def show_cursor() -> None: - """Shows cursor.""" - ... -def start_automation_event_recording() -> None: - """Start recording automation events (AutomationEventList must be set).""" - ... -def stop_audio_stream(stream: AudioStream|list|tuple,) -> None: - """Stop audio stream.""" - ... -def stop_automation_event_recording() -> None: - """Stop recording automation events.""" - ... -def stop_music_stream(music: Music|list|tuple,) -> None: - """Stop music playing.""" - ... -def stop_sound(sound: Sound|list|tuple,) -> None: - """Stop playing a sound.""" - ... -def swap_screen_buffer() -> None: - """Swap back buffer with front buffer (screen drawing).""" - ... -def take_screenshot(fileName: str,) -> None: - """Takes a screenshot of current screen (filename extension defines format).""" - ... -def text_append(text: str,append: str,position: Any,) -> None: - """Append text at specific position and move cursor!.""" - ... -def text_copy(dst: str,src: str,) -> int: - """Copy one string to another, returns bytes copied.""" - ... -def text_find_index(text: str,find: str,) -> int: - """Find first text occurrence within a string.""" - ... -def text_format(*args) -> str: - """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI""" - ... -def text_insert(text: str,insert: str,position: int,) -> str: - """Insert text in a position (WARNING: memory must be freed!).""" - ... -def text_is_equal(text1: str,text2: str,) -> bool: - """Check if two text string are equal.""" - ... -def text_join(textList: list[str],count: int,delimiter: str,) -> str: - """Join text strings with delimiter.""" - ... -def text_length(text: str,) -> int: - """Get text length, checks for '\0' ending.""" - ... -def text_replace(text: str,replace: str,by: str,) -> str: - """Replace text string (WARNING: memory must be freed!).""" - ... -def text_split(text: str,delimiter: str,count: Any,) -> list[str]: - """Split text into multiple strings.""" - ... -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).""" - ... -def text_to_lower(text: str,) -> str: - """Get lower case version of provided string.""" - ... -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, resizes window to match monitor resolution.""" - ... -def toggle_fullscreen() -> None: - """Toggle window state: fullscreen/windowed, resizes monitor to match window resolution.""" - ... -def trace_log(*args) -> None: - """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI""" - ... -def unload_audio_stream(stream: AudioStream|list|tuple,) -> None: - """Unload audio stream and free memory.""" - ... -def unload_automation_event_list(list_0: AutomationEventList|list|tuple,) -> None: - """Unload automation events list from file.""" - ... -def unload_codepoints(codepoints: Any,) -> None: - """Unload codepoints data from memory.""" - ... -def unload_directory_files(files: FilePathList|list|tuple,) -> None: - """Unload filepaths.""" - ... -def unload_dropped_files(files: FilePathList|list|tuple,) -> None: - """Unload dropped filepaths.""" - ... -def unload_file_data(data: str,) -> None: - """Unload file data allocated by LoadFileData().""" - ... -def unload_file_text(text: str,) -> None: - """Unload file text data allocated by LoadFileText().""" - ... -def unload_font(font: Font|list|tuple,) -> None: - """Unload font from GPU memory (VRAM).""" - ... -def unload_font_data(glyphs: Any|list|tuple,glyphCount: int,) -> None: - """Unload font chars info data (RAM).""" - ... -def unload_image(image: Image|list|tuple,) -> None: - """Unload image from CPU memory (RAM).""" - ... -def unload_image_colors(colors: Any|list|tuple,) -> None: - """Unload color data loaded with LoadImageColors().""" - ... -def unload_image_palette(colors: Any|list|tuple,) -> None: - """Unload colors palette loaded with LoadImagePalette().""" - ... -def unload_material(material: Material|list|tuple,) -> None: - """Unload material from GPU memory (VRAM).""" - ... -def unload_mesh(mesh: Mesh|list|tuple,) -> None: - """Unload mesh data from CPU and GPU.""" - ... -def unload_model(model: Model|list|tuple,) -> None: - """Unload model (including meshes) from memory (RAM and/or VRAM).""" - ... -def unload_model_animation(anim: ModelAnimation|list|tuple,) -> None: - """Unload animation data.""" - ... -def unload_model_animations(animations: Any|list|tuple,animCount: int,) -> None: - """Unload animation array data.""" - ... -def unload_music_stream(music: Music|list|tuple,) -> None: - """Unload music stream.""" - ... -def unload_random_sequence(sequence: Any,) -> None: - """Unload random values sequence.""" - ... -def unload_render_texture(target: RenderTexture|list|tuple,) -> None: - """Unload render texture from GPU memory (VRAM).""" - ... -def unload_shader(shader: Shader|list|tuple,) -> None: - """Unload shader from GPU memory (VRAM).""" - ... -def unload_sound(sound: Sound|list|tuple,) -> None: - """Unload sound.""" - ... -def unload_sound_alias(alias: Sound|list|tuple,) -> None: - """Unload a sound alias (does not deallocate sample data).""" - ... -def unload_texture(texture: Texture|list|tuple,) -> None: - """Unload texture from GPU memory (VRAM).""" - ... -def unload_utf8(text: str,) -> None: - """Unload UTF-8 text encoded from codepoints array.""" - ... -def unload_vr_stereo_config(config: VrStereoConfig|list|tuple,) -> None: - """Unload VR stereo config.""" - ... -def unload_wave(wave: Wave|list|tuple,) -> None: - """Unload wave data.""" - ... -def unload_wave_samples(samples: Any,) -> None: - """Unload samples data loaded with LoadWaveSamples().""" - ... -def update_audio_stream(stream: AudioStream|list|tuple,data: Any,frameCount: int,) -> None: - """Update audio stream buffers with data.""" - ... -def update_camera(camera: Any|list|tuple,mode: int,) -> None: - """Update camera position for selected mode.""" - ... -def update_camera_pro(camera: Any|list|tuple,movement: Vector3|list|tuple,rotation: Vector3|list|tuple,zoom: float,) -> None: - """Update camera movement/rotation.""" - ... -def update_mesh_buffer(mesh: Mesh|list|tuple,index: int,data: Any,dataSize: int,offset: int,) -> None: - """Update mesh vertex data in GPU for a specific buffer index.""" - ... -def update_model_animation(model: Model|list|tuple,anim: ModelAnimation|list|tuple,frame: int,) -> None: - """Update model animation pose (CPU).""" - ... -def update_model_animation_bones(model: Model|list|tuple,anim: ModelAnimation|list|tuple,frame: int,) -> None: - """Update model animation mesh bone matrices (GPU skinning).""" - ... -def update_music_stream(music: Music|list|tuple,) -> None: - """Updates buffers for music streaming.""" - ... -def update_sound(sound: Sound|list|tuple,data: Any,sampleCount: int,) -> None: - """Update sound buffer with new data.""" - ... -def update_texture(texture: Texture|list|tuple,pixels: Any,) -> None: - """Update GPU texture with new data.""" - ... -def update_texture_rec(texture: Texture|list|tuple,rec: Rectangle|list|tuple,pixels: Any,) -> None: - """Update GPU texture rectangle with new data.""" - ... -def upload_mesh(mesh: Any|list|tuple,dynamic: bool,) -> None: - """Upload mesh vertex data in GPU and provide VAO/VBO ids.""" - ... -def vector2_add(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_add_value(v: Vector2|list|tuple,add: float,) -> Vector2: - """.""" - ... -def vector2_angle(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def vector2_clamp(v: Vector2|list|tuple,min_1: Vector2|list|tuple,max_2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_clamp_value(v: Vector2|list|tuple,min_1: float,max_2: float,) -> Vector2: - """.""" - ... -def vector2_distance(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def vector2_distance_sqr(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def vector2_divide(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_dot_product(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def vector2_equals(p: Vector2|list|tuple,q: Vector2|list|tuple,) -> int: - """.""" - ... -def vector2_invert(v: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_length(v: Vector2|list|tuple,) -> float: - """.""" - ... -def vector2_length_sqr(v: Vector2|list|tuple,) -> float: - """.""" - ... -def vector2_lerp(v1: Vector2|list|tuple,v2: Vector2|list|tuple,amount: float,) -> Vector2: - """.""" - ... -def vector2_line_angle(start: Vector2|list|tuple,end: Vector2|list|tuple,) -> float: - """.""" - ... -def vector2_max(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_min(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_move_towards(v: Vector2|list|tuple,target: Vector2|list|tuple,maxDistance: float,) -> Vector2: - """.""" - ... -def vector2_multiply(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_negate(v: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_normalize(v: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_one() -> Vector2: - """.""" - ... -def vector2_reflect(v: Vector2|list|tuple,normal: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_refract(v: Vector2|list|tuple,n: Vector2|list|tuple,r: float,) -> Vector2: - """.""" - ... -def vector2_rotate(v: Vector2|list|tuple,angle: float,) -> Vector2: - """.""" - ... -def vector2_scale(v: Vector2|list|tuple,scale: float,) -> Vector2: - """.""" - ... -def vector2_subtract(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def vector2_subtract_value(v: Vector2|list|tuple,sub: float,) -> Vector2: - """.""" - ... -def vector2_transform(v: Vector2|list|tuple,mat: Matrix|list|tuple,) -> Vector2: - """.""" - ... -def vector2_zero() -> Vector2: - """.""" - ... -def vector3_add(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_add_value(v: Vector3|list|tuple,add: float,) -> Vector3: - """.""" - ... -def vector3_angle(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def vector3_barycenter(p: Vector3|list|tuple,a: Vector3|list|tuple,b: Vector3|list|tuple,c: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_clamp(v: Vector3|list|tuple,min_1: Vector3|list|tuple,max_2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_clamp_value(v: Vector3|list|tuple,min_1: float,max_2: float,) -> Vector3: - """.""" - ... -def vector3_cross_product(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_cubic_hermite(v1: Vector3|list|tuple,tangent1: Vector3|list|tuple,v2: Vector3|list|tuple,tangent2: Vector3|list|tuple,amount: float,) -> Vector3: - """.""" - ... -def vector3_distance(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def vector3_distance_sqr(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def vector3_divide(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_dot_product(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def vector3_equals(p: Vector3|list|tuple,q: Vector3|list|tuple,) -> int: - """.""" - ... -def vector3_invert(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_length(v: Vector3|list|tuple,) -> float: - """.""" - ... -def vector3_length_sqr(v: Vector3|list|tuple,) -> float: - """.""" - ... -def vector3_lerp(v1: Vector3|list|tuple,v2: Vector3|list|tuple,amount: float,) -> Vector3: - """.""" - ... -def vector3_max(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_min(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_move_towards(v: Vector3|list|tuple,target: Vector3|list|tuple,maxDistance: float,) -> Vector3: - """.""" - ... -def vector3_multiply(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_negate(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_normalize(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_one() -> Vector3: - """.""" - ... -def vector3_ortho_normalize(v1: Any|list|tuple,v2: Any|list|tuple,) -> None: - """.""" - ... -def vector3_perpendicular(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_project(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_reflect(v: Vector3|list|tuple,normal: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_refract(v: Vector3|list|tuple,n: Vector3|list|tuple,r: float,) -> Vector3: - """.""" - ... -def vector3_reject(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_rotate_by_axis_angle(v: Vector3|list|tuple,axis: Vector3|list|tuple,angle: float,) -> Vector3: - """.""" - ... -def vector3_rotate_by_quaternion(v: Vector3|list|tuple,q: Vector4|list|tuple,) -> Vector3: - """.""" - ... -def vector3_scale(v: Vector3|list|tuple,scalar: float,) -> Vector3: - """.""" - ... -def vector3_subtract(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def vector3_subtract_value(v: Vector3|list|tuple,sub: float,) -> Vector3: - """.""" - ... -def vector3_to_float_v(v: Vector3|list|tuple,) -> float3: - """.""" - ... -def vector3_transform(v: Vector3|list|tuple,mat: Matrix|list|tuple,) -> Vector3: - """.""" - ... -def vector3_unproject(source: Vector3|list|tuple,projection: Matrix|list|tuple,view: Matrix|list|tuple,) -> Vector3: - """.""" - ... -def vector3_zero() -> Vector3: - """.""" - ... -def vector4_add(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def vector4_add_value(v: Vector4|list|tuple,add: float,) -> Vector4: - """.""" - ... -def vector4_distance(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> float: - """.""" - ... -def vector4_distance_sqr(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> float: - """.""" - ... -def vector4_divide(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def vector4_dot_product(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> float: - """.""" - ... -def vector4_equals(p: Vector4|list|tuple,q: Vector4|list|tuple,) -> int: - """.""" - ... -def vector4_invert(v: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def vector4_length(v: Vector4|list|tuple,) -> float: - """.""" - ... -def vector4_length_sqr(v: Vector4|list|tuple,) -> float: - """.""" - ... -def vector4_lerp(v1: Vector4|list|tuple,v2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def vector4_max(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def vector4_min(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def vector4_move_towards(v: Vector4|list|tuple,target: Vector4|list|tuple,maxDistance: float,) -> Vector4: - """.""" - ... -def vector4_multiply(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def vector4_negate(v: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def vector4_normalize(v: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def vector4_one() -> Vector4: - """.""" - ... -def vector4_scale(v: Vector4|list|tuple,scale: float,) -> Vector4: - """.""" - ... -def vector4_subtract(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def vector4_subtract_value(v: Vector4|list|tuple,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|list|tuple,) -> Wave: - """Copy a wave to a new wave.""" - ... -def wave_crop(wave: Any|list|tuple,initFrame: int,finalFrame: int,) -> None: - """Crop a wave to defined frames range.""" - ... -def wave_format(wave: Any|list|tuple,sampleRate: int,sampleSize: int,channels: int,) -> None: - """Convert wave data to desired format.""" - ... -def window_should_close() -> bool: - """Check if application should close (KEY_ESCAPE pressed or windows close icon clicked).""" - ... -def wrap(value: float,min_1: float,max_2: float,) -> float: - """.""" - ... -def glfw_create_cursor(image: Any|list|tuple,xhot: int,yhot: int,) -> Any: - """.""" - ... -def glfw_create_standard_cursor(shape: int,) -> Any: - """.""" - ... -def glfw_create_window(width: int,height: int,title: str,monitor: Any|list|tuple,share: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_default_window_hints() -> None: - """.""" - ... -def glfw_destroy_cursor(cursor: Any|list|tuple,) -> None: - """.""" - ... -def glfw_destroy_window(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_extension_supported(extension: str,) -> int: - """.""" - ... -def glfw_focus_window(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_get_clipboard_string(window: Any|list|tuple,) -> str: - """.""" - ... -def glfw_get_current_context() -> Any: - """.""" - ... -def glfw_get_cursor_pos(window: Any|list|tuple,xpos: Any,ypos: Any,) -> None: - """.""" - ... -def glfw_get_error(description: list[str],) -> int: - """.""" - ... -def glfw_get_framebuffer_size(window: Any|list|tuple,width: Any,height: Any,) -> None: - """.""" - ... -def glfw_get_gamepad_name(jid: int,) -> str: - """.""" - ... -def glfw_get_gamepad_state(jid: int,state: Any|list|tuple,) -> int: - """.""" - ... -def glfw_get_gamma_ramp(monitor: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_get_input_mode(window: Any|list|tuple,mode: int,) -> int: - """.""" - ... -def glfw_get_joystick_axes(jid: int,count: Any,) -> Any: - """.""" - ... -def glfw_get_joystick_buttons(jid: int,count: Any,) -> str: - """.""" - ... -def glfw_get_joystick_guid(jid: int,) -> str: - """.""" - ... -def glfw_get_joystick_hats(jid: int,count: Any,) -> str: - """.""" - ... -def glfw_get_joystick_name(jid: int,) -> str: - """.""" - ... -def glfw_get_joystick_user_pointer(jid: int,) -> Any: - """.""" - ... -def glfw_get_key(window: Any|list|tuple,key: int,) -> int: - """.""" - ... -def glfw_get_key_name(key: int,scancode: int,) -> str: - """.""" - ... -def glfw_get_key_scancode(key: int,) -> int: - """.""" - ... -def glfw_get_monitor_content_scale(monitor: Any|list|tuple,xscale: Any,yscale: Any,) -> None: - """.""" - ... -def glfw_get_monitor_name(monitor: Any|list|tuple,) -> str: - """.""" - ... -def glfw_get_monitor_physical_size(monitor: Any|list|tuple,widthMM: Any,heightMM: Any,) -> None: - """.""" - ... -def glfw_get_monitor_pos(monitor: Any|list|tuple,xpos: Any,ypos: Any,) -> None: - """.""" - ... -def glfw_get_monitor_user_pointer(monitor: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_get_monitor_workarea(monitor: Any|list|tuple,xpos: Any,ypos: Any,width: Any,height: Any,) -> None: - """.""" - ... -def glfw_get_monitors(count: Any,) -> Any: - """.""" - ... -def glfw_get_mouse_button(window: Any|list|tuple,button: int,) -> int: - """.""" - ... -def glfw_get_platform() -> int: - """.""" - ... -def glfw_get_primary_monitor() -> Any: - """.""" - ... -def glfw_get_proc_address(procname: str,) -> Any: - """.""" - ... -def glfw_get_required_instance_extensions(count: Any,) -> list[str]: - """.""" - ... -def glfw_get_time() -> float: - """.""" - ... -def glfw_get_timer_frequency() -> int: - """.""" - ... -def glfw_get_timer_value() -> int: - """.""" - ... -def glfw_get_version(major: Any,minor: Any,rev: Any,) -> None: - """.""" - ... -def glfw_get_version_string() -> str: - """.""" - ... -def glfw_get_video_mode(monitor: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_get_video_modes(monitor: Any|list|tuple,count: Any,) -> Any: - """.""" - ... -def glfw_get_window_attrib(window: Any|list|tuple,attrib: int,) -> int: - """.""" - ... -def glfw_get_window_content_scale(window: Any|list|tuple,xscale: Any,yscale: Any,) -> None: - """.""" - ... -def glfw_get_window_frame_size(window: Any|list|tuple,left: Any,top: Any,right: Any,bottom: Any,) -> None: - """.""" - ... -def glfw_get_window_monitor(window: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_get_window_opacity(window: Any|list|tuple,) -> float: - """.""" - ... -def glfw_get_window_pos(window: Any|list|tuple,xpos: Any,ypos: Any,) -> None: - """.""" - ... -def glfw_get_window_size(window: Any|list|tuple,width: Any,height: Any,) -> None: - """.""" - ... -def glfw_get_window_title(window: Any|list|tuple,) -> str: - """.""" - ... -def glfw_get_window_user_pointer(window: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_hide_window(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_iconify_window(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_init() -> int: - """.""" - ... -def glfw_init_allocator(allocator: Any|list|tuple,) -> None: - """.""" - ... -def glfw_init_hint(hint: int,value: int,) -> None: - """.""" - ... -def glfw_joystick_is_gamepad(jid: int,) -> int: - """.""" - ... -def glfw_joystick_present(jid: int,) -> int: - """.""" - ... -def glfw_make_context_current(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_maximize_window(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_platform_supported(platform: int,) -> int: - """.""" - ... -def glfw_poll_events() -> None: - """.""" - ... -def glfw_post_empty_event() -> None: - """.""" - ... -def glfw_raw_mouse_motion_supported() -> int: - """.""" - ... -def glfw_request_window_attention(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_restore_window(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_set_char_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_char_mods_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_clipboard_string(window: Any|list|tuple,string: str,) -> None: - """.""" - ... -def glfw_set_cursor(window: Any|list|tuple,cursor: Any|list|tuple,) -> None: - """.""" - ... -def glfw_set_cursor_enter_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_cursor_pos(window: Any|list|tuple,xpos: float,ypos: float,) -> None: - """.""" - ... -def glfw_set_cursor_pos_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_drop_callback(window: Any|list|tuple,callback: list[str]|list|tuple,) -> list[str]: - """.""" - ... -def glfw_set_error_callback(callback: str,) -> str: - """.""" - ... -def glfw_set_framebuffer_size_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_gamma(monitor: Any|list|tuple,gamma: float,) -> None: - """.""" - ... -def glfw_set_gamma_ramp(monitor: Any|list|tuple,ramp: Any|list|tuple,) -> None: - """.""" - ... -def glfw_set_input_mode(window: Any|list|tuple,mode: int,value: int,) -> None: - """.""" - ... -def glfw_set_joystick_callback(callback: Any,) -> Any: - """.""" - ... -def glfw_set_joystick_user_pointer(jid: int,pointer: Any,) -> None: - """.""" - ... -def glfw_set_key_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_monitor_callback(callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_monitor_user_pointer(monitor: Any|list|tuple,pointer: Any,) -> None: - """.""" - ... -def glfw_set_mouse_button_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_scroll_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_time(time: float,) -> None: - """.""" - ... -def glfw_set_window_aspect_ratio(window: Any|list|tuple,numer: int,denom: int,) -> None: - """.""" - ... -def glfw_set_window_attrib(window: Any|list|tuple,attrib: int,value: int,) -> None: - """.""" - ... -def glfw_set_window_close_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_window_content_scale_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_window_focus_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_window_icon(window: Any|list|tuple,count: int,images: Any|list|tuple,) -> None: - """.""" - ... -def glfw_set_window_iconify_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_window_maximize_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_window_monitor(window: Any|list|tuple,monitor: Any|list|tuple,xpos: int,ypos: int,width: int,height: int,refreshRate: int,) -> None: - """.""" - ... -def glfw_set_window_opacity(window: Any|list|tuple,opacity: float,) -> None: - """.""" - ... -def glfw_set_window_pos(window: Any|list|tuple,xpos: int,ypos: int,) -> None: - """.""" - ... -def glfw_set_window_pos_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_window_refresh_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_window_should_close(window: Any|list|tuple,value: int,) -> None: - """.""" - ... -def glfw_set_window_size(window: Any|list|tuple,width: int,height: int,) -> None: - """.""" - ... -def glfw_set_window_size_callback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfw_set_window_size_limits(window: Any|list|tuple,minwidth: int,minheight: int,maxwidth: int,maxheight: int,) -> None: - """.""" - ... -def glfw_set_window_title(window: Any|list|tuple,title: str,) -> None: - """.""" - ... -def glfw_set_window_user_pointer(window: Any|list|tuple,pointer: Any,) -> None: - """.""" - ... -def glfw_show_window(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_swap_buffers(window: Any|list|tuple,) -> None: - """.""" - ... -def glfw_swap_interval(interval: int,) -> None: - """.""" - ... -def glfw_terminate() -> None: - """.""" - ... -def glfw_update_gamepad_mappings(string: str,) -> int: - """.""" - ... -def glfw_vulkan_supported() -> int: - """.""" - ... -def glfw_wait_events() -> None: - """.""" - ... -def glfw_wait_events_timeout(timeout: float,) -> None: - """.""" - ... -def glfw_window_hint(hint: int,value: int,) -> None: - """.""" - ... -def glfw_window_hint_string(hint: int,value: str,) -> None: - """.""" - ... -def glfw_window_should_close(window: Any|list|tuple,) -> int: - """.""" - ... -def rl_active_draw_buffers(count: int,) -> None: - """Activate multiple draw color buffers.""" - ... -def rl_active_texture_slot(slot: int,) -> None: - """Select and active a texture slot.""" - ... -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.""" - ... -def rl_bind_shader_buffer(id: int,index: int,) -> None: - """Bind SSBO buffer.""" - ... -def rl_blit_framebuffer(srcX: int,srcY: int,srcWidth: int,srcHeight: int,dstX: int,dstY: int,dstWidth: int,dstHeight: int,bufferMask: int,) -> None: - """Blit active framebuffer to main framebuffer.""" - ... -def rl_check_errors() -> None: - """Check and log OpenGL error codes.""" - ... -def rl_check_render_batch_limit(vCount: int,) -> bool: - """Check internal buffer overflow for a given number of vertex.""" - ... -def rl_clear_color(r: int,g: int,b: int,a: int,) -> None: - """Clear color buffer with color.""" - ... -def rl_clear_screen_buffers() -> None: - """Clear used screen buffers (color and depth).""" - ... -def rl_color3f(x: float,y: float,z: float,) -> None: - """Define one vertex (color) - 3 float.""" - ... -def rl_color4f(x: float,y: float,z: float,w: float,) -> None: - """Define one vertex (color) - 4 float.""" - ... -def rl_color4ub(r: int,g: int,b: int,a: int,) -> 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).""" - ... -def rl_compute_shader_dispatch(groupX: int,groupY: int,groupZ: int,) -> None: - """Dispatch compute shader (equivalent to *draw* for graphics pipeline).""" - ... -def rl_copy_shader_buffer(destId: int,srcId: int,destOffset: int,srcOffset: int,count: int,) -> None: - """Copy SSBO data between buffers.""" - ... -def rl_cubemap_parameters(id: int,param: int,value: int,) -> None: - """Set cubemap parameters (filter, wrap).""" - ... -def rl_disable_backface_culling() -> None: - """Disable backface culling.""" - ... -def rl_disable_color_blend() -> None: - """Disable color blending.""" - ... -def rl_disable_depth_mask() -> None: - """Disable depth write.""" - ... -def rl_disable_depth_test() -> None: - """Disable depth test.""" - ... -def rl_disable_framebuffer() -> None: - """Disable render texture (fbo), return to default framebuffer.""" - ... -def rl_disable_scissor_test() -> None: - """Disable scissor test.""" - ... -def rl_disable_shader() -> None: - """Disable shader program.""" - ... -def rl_disable_smooth_lines() -> None: - """Disable line aliasing.""" - ... -def rl_disable_stereo_render() -> None: - """Disable stereo rendering.""" - ... -def rl_disable_texture() -> None: - """Disable texture.""" - ... -def rl_disable_texture_cubemap() -> None: - """Disable texture cubemap.""" - ... -def rl_disable_vertex_array() -> None: - """Disable vertex array (VAO, if supported).""" - ... -def rl_disable_vertex_attribute(index: int,) -> None: - """Disable vertex attribute index.""" - ... -def rl_disable_vertex_buffer() -> None: - """Disable vertex buffer (VBO).""" - ... -def rl_disable_vertex_buffer_element() -> None: - """Disable vertex buffer element (VBO element).""" - ... -def rl_disable_wire_mode() -> None: - """Disable wire (and point) mode.""" - ... -def rl_draw_render_batch(batch: Any|list|tuple,) -> None: - """Draw render batch data (Update->Draw->Reset).""" - ... -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.""" - ... -def rl_enable_color_blend() -> None: - """Enable color blending.""" - ... -def rl_enable_depth_mask() -> None: - """Enable depth write.""" - ... -def rl_enable_depth_test() -> None: - """Enable depth test.""" - ... -def rl_enable_framebuffer(id: int,) -> None: - """Enable render texture (fbo).""" - ... -def rl_enable_point_mode() -> None: - """Enable point mode.""" - ... -def rl_enable_scissor_test() -> None: - """Enable scissor test.""" - ... -def rl_enable_shader(id: int,) -> None: - """Enable shader program.""" - ... -def rl_enable_smooth_lines() -> None: - """Enable line aliasing.""" - ... -def rl_enable_stereo_render() -> None: - """Enable stereo rendering.""" - ... -def rl_enable_texture(id: int,) -> None: - """Enable texture.""" - ... -def rl_enable_texture_cubemap(id: int,) -> None: - """Enable texture cubemap.""" - ... -def rl_enable_vertex_array(vaoId: int,) -> bool: - """Enable vertex array (VAO, if supported).""" - ... -def rl_enable_vertex_attribute(index: int,) -> None: - """Enable vertex attribute index.""" - ... -def rl_enable_vertex_buffer(id: int,) -> None: - """Enable vertex buffer (VBO).""" - ... -def rl_enable_vertex_buffer_element(id: int,) -> None: - """Enable vertex buffer element (VBO element).""" - ... -def rl_enable_wire_mode() -> None: - """Enable wire mode.""" - ... -def rl_end() -> None: - """Finish vertex providing.""" - ... -def rl_framebuffer_attach(fboId: int,texId: int,attachType: int,texType: int,mipLevel: int,) -> None: - """Attach texture/renderbuffer to a framebuffer.""" - ... -def rl_framebuffer_complete(id: int,) -> bool: - """Verify framebuffer is complete.""" - ... -def rl_frustum(left: float,right: float,bottom: float,top: float,znear: float,zfar: float,) -> None: - """.""" - ... -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.""" - ... -def rl_get_framebuffer_width() -> int: - """Get default framebuffer width.""" - ... -def rl_get_gl_texture_formats(format: int,glInternalFormat: Any,glFormat: Any,glType: Any,) -> None: - """Get OpenGL internal formats.""" - ... -def rl_get_line_width() -> float: - """Get the line drawing width.""" - ... -def rl_get_location_attrib(shaderId: int,attribName: str,) -> int: - """Get shader location attribute.""" - ... -def rl_get_location_uniform(shaderId: int,uniformName: str,) -> int: - """Get shader location uniform.""" - ... -def rl_get_matrix_modelview() -> Matrix: - """Get internal modelview matrix.""" - ... -def rl_get_matrix_projection() -> Matrix: - """Get internal projection matrix.""" - ... -def rl_get_matrix_projection_stereo(eye: int,) -> Matrix: - """Get internal projection matrix for stereo render (selected eye).""" - ... -def rl_get_matrix_transform() -> Matrix: - """Get internal accumulated transform matrix.""" - ... -def rl_get_matrix_view_offset_stereo(eye: int,) -> Matrix: - """Get internal view offset matrix for stereo render (selected eye).""" - ... -def rl_get_pixel_format_name(format: int,) -> str: - """Get name string for pixel format.""" - ... -def rl_get_shader_buffer_size(id: int,) -> int: - """Get SSBO buffer size.""" - ... -def rl_get_shader_id_default() -> int: - """Get default shader id.""" - ... -def rl_get_shader_locs_default() -> Any: - """Get default shader locations.""" - ... -def rl_get_texture_id_default() -> int: - """Get default texture id.""" - ... -def rl_get_version() -> int: - """Get current OpenGL version.""" - ... -def rl_is_stereo_render_enabled() -> bool: - """Check if stereo render is enabled.""" - ... -def rl_load_compute_shader_program(shaderId: int,) -> int: - """Load compute shader program.""" - ... -def rl_load_draw_cube() -> None: - """Load and draw a cube.""" - ... -def rl_load_draw_quad() -> None: - """Load and draw a quad.""" - ... -def rl_load_extensions(loader: Any,) -> None: - """Load OpenGL extensions (loader function required).""" - ... -def rl_load_framebuffer() -> int: - """Load an empty framebuffer.""" - ... -def rl_load_identity() -> None: - """Reset current matrix to identity matrix.""" - ... -def rl_load_render_batch(numBuffers: int,bufferElements: int,) -> rlRenderBatch: - """Load a render batch system.""" - ... -def rl_load_shader_buffer(size: int,data: Any,usageHint: int,) -> int: - """Load shader storage buffer object (SSBO).""" - ... -def rl_load_shader_code(vsCode: str,fsCode: str,) -> int: - """Load shader from code strings.""" - ... -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 data.""" - ... -def rl_load_texture_cubemap(data: Any,size: int,format: int,mipmapCount: int,) -> int: - """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).""" - ... -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 object.""" - ... -def rl_load_vertex_buffer_element(buffer: Any,size: int,dynamic: bool,) -> int: - """Load vertex buffer elements object.""" - ... -def rl_matrix_mode(mode: int,) -> None: - """Choose the current matrix to be transformed.""" - ... -def rl_mult_matrixf(matf: Any,) -> None: - """Multiply the current matrix by another matrix.""" - ... -def rl_normal3f(x: float,y: float,z: float,) -> None: - """Define one vertex (normal) - 3 float.""" - ... -def rl_ortho(left: float,right: float,bottom: float,top: float,znear: float,zfar: float,) -> None: - """.""" - ... -def rl_pop_matrix() -> None: - """Pop latest inserted matrix from stack.""" - ... -def rl_push_matrix() -> None: - """Push the current matrix to stack.""" - ... -def rl_read_screen_pixels(width: int,height: int,) -> str: - """Read screen pixel data (color buffer).""" - ... -def rl_read_shader_buffer(id: int,dest: Any,count: int,offset: int,) -> None: - """Read SSBO buffer data (GPU->CPU).""" - ... -def rl_read_texture_pixels(id: int,width: int,height: int,format: int,) -> Any: - """Read texture pixel data.""" - ... -def rl_rotatef(angle: float,x: float,y: float,z: float,) -> None: - """Multiply the current matrix by a rotation matrix.""" - ... -def rl_scalef(x: float,y: float,z: float,) -> None: - """Multiply the current matrix by a scaling matrix.""" - ... -def rl_scissor(x: int,y: int,width: int,height: int,) -> None: - """Scissor test.""" - ... -def rl_set_blend_factors(glSrcFactor: int,glDstFactor: int,glEquation: int,) -> None: - """Set blending mode factor and equation (using OpenGL factors).""" - ... -def rl_set_blend_factors_separate(glSrcRGB: int,glDstRGB: int,glSrcAlpha: int,glDstAlpha: int,glEqRGB: int,glEqAlpha: int,) -> None: - """Set blending mode factors and equations separately (using OpenGL factors).""" - ... -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.""" - ... -def rl_set_framebuffer_height(height: int,) -> None: - """Set current framebuffer height.""" - ... -def rl_set_framebuffer_width(width: int,) -> None: - """Set current framebuffer width.""" - ... -def rl_set_line_width(width: float,) -> None: - """Set the line drawing width.""" - ... -def rl_set_matrix_modelview(view: Matrix|list|tuple,) -> None: - """Set a custom modelview matrix (replaces internal modelview matrix).""" - ... -def rl_set_matrix_projection(proj: Matrix|list|tuple,) -> None: - """Set a custom projection matrix (replaces internal projection matrix).""" - ... -def rl_set_matrix_projection_stereo(right: Matrix|list|tuple,left: Matrix|list|tuple,) -> None: - """Set eyes projection matrices for stereo rendering.""" - ... -def rl_set_matrix_view_offset_stereo(right: Matrix|list|tuple,left: Matrix|list|tuple,) -> None: - """Set eyes view offsets matrices for stereo rendering.""" - ... -def rl_set_render_batch_active(batch: Any|list|tuple,) -> None: - """Set the active render batch for rlgl (NULL for default internal).""" - ... -def rl_set_shader(id: int,locs: Any,) -> None: - """Set shader currently active (id and locations).""" - ... -def rl_set_texture(id: int,) -> None: - """Set current texture for render batch and check buffers limits.""" - ... -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|list|tuple,count: int,) -> None: - """Set shader value matrices.""" - ... -def rl_set_uniform_matrix(locIndex: int,mat: Matrix|list|tuple,) -> 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,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, 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.""" - ... -def rl_texture_parameters(id: int,param: int,value: int,) -> None: - """Set texture parameters (filter, wrap).""" - ... -def rl_translatef(x: float,y: float,z: float,) -> None: - """Multiply the current matrix by a translation matrix.""" - ... -def rl_unload_framebuffer(id: int,) -> None: - """Delete framebuffer from GPU.""" - ... -def rl_unload_render_batch(batch: rlRenderBatch|list|tuple,) -> None: - """Unload render batch system.""" - ... -def rl_unload_shader_buffer(ssboId: int,) -> None: - """Unload shader storage buffer object (SSBO).""" - ... -def rl_unload_shader_program(id: int,) -> None: - """Unload shader program.""" - ... -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 texture with new data on GPU.""" - ... -def rl_update_vertex_buffer(bufferId: int,data: Any,dataSize: int,offset: int,) -> None: - """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 data on GPU buffer.""" - ... -def rl_vertex2f(x: float,y: float,) -> None: - """Define one vertex (position) - 2 float.""" - ... -def rl_vertex2i(x: int,y: int,) -> None: - """Define one vertex (position) - 2 int.""" - ... -def rl_vertex3f(x: float,y: float,z: float,) -> None: - """Define one vertex (position) - 3 float.""" - ... -def rl_viewport(x: int,y: int,width: int,height: int,) -> None: - """Set the viewport area.""" - ... -def rlgl_close() -> None: - """De-initialize rlgl (buffers, shaders, textures).""" - ... -def rlgl_init(width: int,height: int,) -> None: - """Initialize rlgl (buffers, shaders, textures, states).""" - ... -class AudioStream: - """AudioStream, custom audio stream.""" - def __init__(self, buffer: Any|None = None, processor: Any|None = None, sampleRate: int|None = None, sampleSize: int|None = None, channels: int|None = None): - self.buffer:Any = buffer # type: ignore - self.processor:Any = processor # type: ignore - self.sampleRate:int = sampleRate # type: ignore - self.sampleSize:int = sampleSize # type: ignore - self.channels:int = channels # type: ignore -class AutomationEvent: - """Automation event.""" - def __init__(self, frame: int|None = None, type: int|None = None, params: list|None = None): - self.frame:int = frame # type: ignore - self.type:int = type # type: ignore - self.params:list = params # type: ignore -class AutomationEventList: - """Automation event list.""" - def __init__(self, capacity: int|None = None, count: int|None = None, events: Any|None = None): - self.capacity:int = capacity # type: ignore - self.count:int = count # type: ignore - self.events:Any = events # type: ignore -class BoneInfo: - """Bone, skeletal animation bone.""" - def __init__(self, name: list|None = None, parent: int|None = None): - self.name:list = name # type: ignore - self.parent:int = parent # type: ignore -class BoundingBox: - """BoundingBox.""" - def __init__(self, min: Vector3|list|tuple|None = None, max: Vector3|list|tuple|None = None): - self.min:Vector3 = min # type: ignore - self.max:Vector3 = max # type: ignore -class Camera2D: - """Camera2D, defines position/orientation in 2d space.""" - def __init__(self, offset: Vector2|list|tuple|None = None, target: Vector2|list|tuple|None = None, rotation: float|None = None, zoom: float|None = None): - self.offset:Vector2 = offset # type: ignore - self.target:Vector2 = target # type: ignore - self.rotation:float = rotation # type: ignore - self.zoom:float = zoom # type: ignore -class Camera3D: - """Camera, defines position/orientation in 3d space.""" - def __init__(self, position: Vector3|list|tuple|None = None, target: Vector3|list|tuple|None = None, up: Vector3|list|tuple|None = None, fovy: float|None = None, projection: int|None = None): - self.position:Vector3 = position # type: ignore - self.target:Vector3 = target # type: ignore - self.up:Vector3 = up # type: ignore - self.fovy:float = fovy # type: ignore - self.projection:int = projection # type: ignore -class Color: - """Color, 4 components, R8G8B8A8 (32bit).""" - def __init__(self, r: int|None = None, g: int|None = None, b: int|None = None, a: int|None = None): - self.r:int = r # type: ignore - self.g:int = g # type: ignore - self.b:int = b # type: ignore - self.a:int = a # type: ignore -class FilePathList: - """File path list.""" - def __init__(self, capacity: int|None = None, count: int|None = None, paths: list[str]|None = None): - self.capacity:int = capacity # type: ignore - self.count:int = count # type: ignore - self.paths:list[str] = paths # type: ignore -class Font: - """Font, font texture and GlyphInfo array data.""" - def __init__(self, baseSize: int|None = None, glyphCount: int|None = None, glyphPadding: int|None = None, texture: Texture|list|tuple|None = None, recs: Any|None = None, glyphs: Any|None = None): - self.baseSize:int = baseSize # type: ignore - self.glyphCount:int = glyphCount # type: ignore - self.glyphPadding:int = glyphPadding # type: ignore - self.texture:Texture = texture # type: ignore - self.recs:Any = recs # type: ignore - self.glyphs:Any = glyphs # type: ignore -class GlyphInfo: - """GlyphInfo, font characters glyphs info.""" - def __init__(self, value: int|None = None, offsetX: int|None = None, offsetY: int|None = None, advanceX: int|None = None, image: Image|list|tuple|None = None): - self.value:int = value # type: ignore - self.offsetX:int = offsetX # type: ignore - self.offsetY:int = offsetY # type: ignore - self.advanceX:int = advanceX # type: ignore - self.image:Image = image # type: ignore -class GuiStyleProp: - """NOTE: Used when exporting style as code for convenience.""" - def __init__(self, controlId: int|None = None, propertyId: int|None = None, propertyValue: int|None = None): - self.controlId:int = controlId # type: ignore - self.propertyId:int = propertyId # type: ignore - self.propertyValue:int = propertyValue # type: ignore -class Image: - """Image, pixel data stored in CPU memory (RAM).""" - def __init__(self, data: Any|None = None, width: int|None = None, height: int|None = None, mipmaps: int|None = None, format: int|None = None): - self.data:Any = data # type: ignore - self.width:int = width # type: ignore - self.height:int = height # type: ignore - self.mipmaps:int = mipmaps # type: ignore - self.format:int = format # type: ignore -class Mat2: - """Mat2 type (used for polygon shape rotation matrix).""" - def __init__(self, m00: float|None = None, m01: float|None = None, m10: float|None = None, m11: float|None = None): - self.m00:float = m00 # type: ignore - self.m01:float = m01 # type: ignore - self.m10:float = m10 # type: ignore - self.m11:float = m11 # type: ignore -class Material: - """Material, includes shader and maps.""" - def __init__(self, shader: Shader|list|tuple|None = None, maps: Any|None = None, params: list|None = None): - self.shader:Shader = shader # type: ignore - self.maps:Any = maps # type: ignore - self.params:list = params # type: ignore -class MaterialMap: - """MaterialMap.""" - def __init__(self, texture: Texture|list|tuple|None = None, color: Color|list|tuple|None = None, value: float|None = None): - self.texture:Texture = texture # type: ignore - self.color:Color = color # type: ignore - self.value:float = value # type: ignore -class Matrix: - """Matrix, 4x4 components, column major, OpenGL style, right-handed.""" - def __init__(self, m0: float|None = None, m4: float|None = None, m8: float|None = None, m12: float|None = None, m1: float|None = None, m5: float|None = None, m9: float|None = None, m13: float|None = None, m2: float|None = None, m6: float|None = None, m10: float|None = None, m14: float|None = None, m3: float|None = None, m7: float|None = None, m11: float|None = None, m15: float|None = None): - self.m0:float = m0 # type: ignore - self.m4:float = m4 # type: ignore - self.m8:float = m8 # type: ignore - self.m12:float = m12 # type: ignore - self.m1:float = m1 # type: ignore - self.m5:float = m5 # type: ignore - self.m9:float = m9 # type: ignore - self.m13:float = m13 # type: ignore - self.m2:float = m2 # type: ignore - self.m6:float = m6 # type: ignore - self.m10:float = m10 # type: ignore - self.m14:float = m14 # type: ignore - self.m3:float = m3 # type: ignore - self.m7:float = m7 # type: ignore - self.m11:float = m11 # type: ignore - self.m15:float = m15 # type: ignore -class Mesh: - """Mesh, vertex data and vao/vbo.""" - def __init__(self, vertexCount: int|None = None, triangleCount: int|None = None, vertices: Any|None = None, texcoords: Any|None = None, texcoords2: Any|None = None, normals: Any|None = None, tangents: Any|None = None, colors: str|None = None, indices: Any|None = None, animVertices: Any|None = None, animNormals: Any|None = None, boneIds: str|None = None, boneWeights: Any|None = None, boneMatrices: Any|None = None, boneCount: int|None = None, vaoId: int|None = None, vboId: Any|None = None): - self.vertexCount:int = vertexCount # type: ignore - self.triangleCount:int = triangleCount # type: ignore - self.vertices:Any = vertices # type: ignore - self.texcoords:Any = texcoords # type: ignore - self.texcoords2:Any = texcoords2 # type: ignore - self.normals:Any = normals # type: ignore - self.tangents:Any = tangents # type: ignore - self.colors:str = colors # type: ignore - self.indices:Any = indices # type: ignore - self.animVertices:Any = animVertices # type: ignore - self.animNormals:Any = animNormals # type: ignore - self.boneIds:str = boneIds # type: ignore - self.boneWeights:Any = boneWeights # type: ignore - self.boneMatrices:Any = boneMatrices # type: ignore - self.boneCount:int = boneCount # type: ignore - self.vaoId:int = vaoId # type: ignore - self.vboId:Any = vboId # type: ignore -class Model: - """Model, meshes, materials and animation data.""" - def __init__(self, transform: Matrix|list|tuple|None = None, meshCount: int|None = None, materialCount: int|None = None, meshes: Any|None = None, materials: Any|None = None, meshMaterial: Any|None = None, boneCount: int|None = None, bones: Any|None = None, bindPose: Any|None = None): - self.transform:Matrix = transform # type: ignore - self.meshCount:int = meshCount # type: ignore - self.materialCount:int = materialCount # type: ignore - self.meshes:Any = meshes # type: ignore - self.materials:Any = materials # type: ignore - self.meshMaterial:Any = meshMaterial # type: ignore - self.boneCount:int = boneCount # type: ignore - self.bones:Any = bones # type: ignore - self.bindPose:Any = bindPose # type: ignore -class ModelAnimation: - """ModelAnimation.""" - def __init__(self, boneCount: int|None = None, frameCount: int|None = None, bones: Any|None = None, framePoses: Any|None = None, name: list|None = None): - self.boneCount:int = boneCount # type: ignore - self.frameCount:int = frameCount # type: ignore - self.bones:Any = bones # type: ignore - self.framePoses:Any = framePoses # type: ignore - self.name:list = name # type: ignore -class Music: - """Music, audio stream, anything longer than ~10 seconds should be streamed.""" - def __init__(self, stream: AudioStream|list|tuple|None = None, frameCount: int|None = None, looping: bool|None = None, ctxType: int|None = None, ctxData: Any|None = None): - self.stream:AudioStream = stream # type: ignore - self.frameCount:int = frameCount # type: ignore - self.looping:bool = looping # type: ignore - self.ctxType:int = ctxType # type: ignore - self.ctxData:Any = ctxData # type: ignore -class NPatchInfo: - """NPatchInfo, n-patch layout info.""" - def __init__(self, source: Rectangle|list|tuple|None = None, left: int|None = None, top: int|None = None, right: int|None = None, bottom: int|None = None, layout: int|None = None): - self.source:Rectangle = source # type: ignore - self.left:int = left # type: ignore - self.top:int = top # type: ignore - self.right:int = right # type: ignore - self.bottom:int = bottom # type: ignore - self.layout:int = layout # type: ignore -class PhysicsBodyData: - """.""" - def __init__(self, id: int|None = None, enabled: bool|None = None, position: Vector2|list|tuple|None = None, velocity: Vector2|list|tuple|None = None, force: Vector2|list|tuple|None = None, angularVelocity: float|None = None, torque: float|None = None, orient: float|None = None, inertia: float|None = None, inverseInertia: float|None = None, mass: float|None = None, inverseMass: float|None = None, staticFriction: float|None = None, dynamicFriction: float|None = None, restitution: float|None = None, useGravity: bool|None = None, isGrounded: bool|None = None, freezeOrient: bool|None = None, shape: PhysicsShape|list|tuple|None = None): - self.id:int = id # type: ignore - self.enabled:bool = enabled # type: ignore - self.position:Vector2 = position # type: ignore - self.velocity:Vector2 = velocity # type: ignore - self.force:Vector2 = force # type: ignore - self.angularVelocity:float = angularVelocity # type: ignore - self.torque:float = torque # type: ignore - self.orient:float = orient # type: ignore - self.inertia:float = inertia # type: ignore - self.inverseInertia:float = inverseInertia # type: ignore - self.mass:float = mass # type: ignore - self.inverseMass:float = inverseMass # type: ignore - self.staticFriction:float = staticFriction # type: ignore - self.dynamicFriction:float = dynamicFriction # type: ignore - self.restitution:float = restitution # type: ignore - self.useGravity:bool = useGravity # type: ignore - self.isGrounded:bool = isGrounded # type: ignore - self.freezeOrient:bool = freezeOrient # type: ignore - self.shape:PhysicsShape = shape # type: ignore -class PhysicsManifoldData: - """.""" - def __init__(self, id: int|None = None, bodyA: Any|None = None, bodyB: Any|None = None, penetration: float|None = None, normal: Vector2|list|tuple|None = None, contacts: list|None = None, contactsCount: int|None = None, restitution: float|None = None, dynamicFriction: float|None = None, staticFriction: float|None = None): - self.id:int = id # type: ignore - self.bodyA:Any = bodyA # type: ignore - self.bodyB:Any = bodyB # type: ignore - self.penetration:float = penetration # type: ignore - self.normal:Vector2 = normal # type: ignore - self.contacts:list = contacts # type: ignore - self.contactsCount:int = contactsCount # type: ignore - self.restitution:float = restitution # type: ignore - self.dynamicFriction:float = dynamicFriction # type: ignore - self.staticFriction:float = staticFriction # type: ignore -class PhysicsShape: - """.""" - def __init__(self, type: PhysicsShapeType|None = None, body: Any|None = None, radius: float|None = None, transform: Mat2|list|tuple|None = None, vertexData: PolygonData|list|tuple|None = None): - self.type:PhysicsShapeType = type # type: ignore - self.body:Any = body # type: ignore - self.radius:float = radius # type: ignore - self.transform:Mat2 = transform # type: ignore - self.vertexData:PolygonData = vertexData # type: ignore -class PolygonData: - """.""" - def __init__(self, vertexCount: int|None = None, positions: list|None = None, normals: list|None = None): - self.vertexCount:int = vertexCount # type: ignore - self.positions:list = positions # type: ignore - self.normals:list = normals # type: ignore -class Ray: - """Ray, ray for raycasting.""" - def __init__(self, position: Vector3|list|tuple|None = None, direction: Vector3|list|tuple|None = None): - self.position:Vector3 = position # type: ignore - self.direction:Vector3 = direction # type: ignore -class RayCollision: - """RayCollision, ray hit information.""" - def __init__(self, hit: bool|None = None, distance: float|None = None, point: Vector3|list|tuple|None = None, normal: Vector3|list|tuple|None = None): - self.hit:bool = hit # type: ignore - self.distance:float = distance # type: ignore - self.point:Vector3 = point # type: ignore - self.normal:Vector3 = normal # type: ignore -class Rectangle: - """Rectangle, 4 components.""" - def __init__(self, x: float|None = None, y: float|None = None, width: float|None = None, height: float|None = None): - self.x:float = x # type: ignore - self.y:float = y # type: ignore - self.width:float = width # type: ignore - self.height:float = height # type: ignore -class RenderTexture: - """RenderTexture, fbo for texture rendering.""" - def __init__(self, id: int|None = None, texture: Texture|list|tuple|None = None, depth: Texture|list|tuple|None = None): - self.id:int = id # type: ignore - self.texture:Texture = texture # type: ignore - self.depth:Texture = depth # type: ignore -class Shader: - """Shader.""" - def __init__(self, id: int|None = None, locs: Any|None = None): - self.id:int = id # type: ignore - self.locs:Any = locs # type: ignore -class Sound: - """Sound.""" - def __init__(self, stream: AudioStream|list|tuple|None = None, frameCount: int|None = None): - self.stream:AudioStream = stream # type: ignore - self.frameCount:int = frameCount # type: ignore -class Texture: - """Texture, tex data stored in GPU memory (VRAM).""" - def __init__(self, id: int|None = None, width: int|None = None, height: int|None = None, mipmaps: int|None = None, format: int|None = None): - self.id:int = id # type: ignore - self.width:int = width # type: ignore - self.height:int = height # type: ignore - self.mipmaps:int = mipmaps # type: ignore - self.format:int = format # type: ignore -class Texture2D: - """It should be redesigned to be provided by user.""" - def __init__(self, id: int|None = None, width: int|None = None, height: int|None = None, mipmaps: int|None = None, format: int|None = None): - self.id:int = id # type: ignore - self.width:int = width # type: ignore - self.height:int = height # type: ignore - self.mipmaps:int = mipmaps # type: ignore - self.format:int = format # type: ignore -class Transform: - """Transform, vertex transformation data.""" - def __init__(self, translation: Vector3|list|tuple|None = None, rotation: Vector4|list|tuple|None = None, scale: Vector3|list|tuple|None = None): - self.translation:Vector3 = translation # type: ignore - self.rotation:Vector4 = rotation # type: ignore - self.scale:Vector3 = scale # type: ignore -class Vector2: - """Vector2, 2 components.""" - def __init__(self, x: float|None = None, y: float|None = None): - self.x:float = x # type: ignore - self.y:float = y # type: ignore -class Vector3: - """Vector3, 3 components.""" - def __init__(self, x: float|None = None, y: float|None = None, z: float|None = None): - self.x:float = x # type: ignore - self.y:float = y # type: ignore - self.z:float = z # type: ignore -class Vector4: - """Vector4, 4 components.""" - def __init__(self, x: float|None = None, y: float|None = None, z: float|None = None, w: float|None = None): - self.x:float = x # type: ignore - self.y:float = y # type: ignore - self.z:float = z # type: ignore - self.w:float = w # type: ignore -class VrDeviceInfo: - """VrDeviceInfo, Head-Mounted-Display device parameters.""" - def __init__(self, hResolution: int|None = None, vResolution: int|None = None, hScreenSize: float|None = None, vScreenSize: float|None = None, eyeToScreenDistance: float|None = None, lensSeparationDistance: float|None = None, interpupillaryDistance: float|None = None, lensDistortionValues: list|None = None, chromaAbCorrection: list|None = None): - self.hResolution:int = hResolution # type: ignore - self.vResolution:int = vResolution # type: ignore - self.hScreenSize:float = hScreenSize # type: ignore - self.vScreenSize:float = vScreenSize # type: ignore - self.eyeToScreenDistance:float = eyeToScreenDistance # type: ignore - self.lensSeparationDistance:float = lensSeparationDistance # type: ignore - self.interpupillaryDistance:float = interpupillaryDistance # type: ignore - self.lensDistortionValues:list = lensDistortionValues # type: ignore - self.chromaAbCorrection:list = chromaAbCorrection # type: ignore -class VrStereoConfig: - """VrStereoConfig, VR stereo rendering configuration for simulator.""" - def __init__(self, projection: list|None = None, viewOffset: list|None = None, leftLensCenter: list|None = None, rightLensCenter: list|None = None, leftScreenCenter: list|None = None, rightScreenCenter: list|None = None, scale: list|None = None, scaleIn: list|None = None): - self.projection:list = projection # type: ignore - self.viewOffset:list = viewOffset # type: ignore - self.leftLensCenter:list = leftLensCenter # type: ignore - self.rightLensCenter:list = rightLensCenter # type: ignore - self.leftScreenCenter:list = leftScreenCenter # type: ignore - self.rightScreenCenter:list = rightScreenCenter # type: ignore - self.scale:list = scale # type: ignore - self.scaleIn:list = scaleIn # type: ignore -class Wave: - """Wave, audio wave data.""" - def __init__(self, frameCount: int|None = None, sampleRate: int|None = None, sampleSize: int|None = None, channels: int|None = None, data: Any|None = None): - self.frameCount:int = frameCount # type: ignore - self.sampleRate:int = sampleRate # type: ignore - self.sampleSize:int = sampleSize # type: ignore - self.channels:int = channels # type: ignore - self.data:Any = data # type: ignore -class float16: - """.""" - def __init__(self, v: list|None = None): - self.v:list = v # type: ignore -class float3: - """NOTE: Helper types to be used instead of array return types for *ToFloat functions.""" - def __init__(self, v: list|None = None): - self.v:list = v # type: ignore -class rlDrawCall: - """of those state-change happens (this is done in core module).""" - def __init__(self, mode: int|None = None, vertexCount: int|None = None, vertexAlignment: int|None = None, textureId: int|None = None): - self.mode:int = mode # type: ignore - self.vertexCount:int = vertexCount # type: ignore - self.vertexAlignment:int = vertexAlignment # type: ignore - self.textureId:int = textureId # type: ignore -class rlRenderBatch: - """rlRenderBatch type.""" - def __init__(self, bufferCount: int|None = None, currentBuffer: int|None = None, vertexBuffer: Any|None = None, draws: Any|None = None, drawCounter: int|None = None, currentDepth: float|None = None): - self.bufferCount:int = bufferCount # type: ignore - self.currentBuffer:int = currentBuffer # type: ignore - self.vertexBuffer:Any = vertexBuffer # type: ignore - self.draws:Any = draws # type: ignore - self.drawCounter:int = drawCounter # type: ignore - self.currentDepth:float = currentDepth # type: ignore -class rlVertexBuffer: - """Dynamic vertex buffers (position + texcoords + colors + indices arrays).""" - def __init__(self, elementCount: int|None = None, vertices: Any|None = None, texcoords: Any|None = None, normals: Any|None = None, colors: str|None = None, indices: Any|None = None, vaoId: int|None = None, vboId: list|None = None): - self.elementCount:int = elementCount # type: ignore - self.vertices:Any = vertices # type: ignore - self.texcoords:Any = texcoords # type: ignore - self.normals:Any = normals # type: ignore - self.colors:str = colors # type: ignore - self.indices:Any = indices # type: ignore - self.vaoId:int = vaoId # type: ignore - self.vboId:list = vboId # type: ignore - -LIGHTGRAY : Color -GRAY : Color -DARKGRAY : Color -YELLOW : Color -GOLD : Color -ORANGE : Color -PINK : Color -RED : Color -MAROON : Color -GREEN : Color -LIME : Color -DARKGREEN : Color -SKYBLUE : Color -BLUE : Color -DARKBLUE : Color -PURPLE : Color -VIOLET : Color -DARKPURPLE : Color -BEIGE : Color -BROWN : Color -DARKBROWN : Color -WHITE : Color -BLACK : Color -BLANK : Color -MAGENTA : Color -RAYWHITE : Color - diff --git a/pyray/py.typed b/pyray/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/raygui b/raygui deleted file mode 160000 index 1e03efc..0000000 --- a/raygui +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1e03efca48c50c5ea4b4a053d5bf04bad58d3e43 diff --git a/raylib-c b/raylib-c deleted file mode 160000 index 15afe89..0000000 --- a/raylib-c +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 15afe89aff2fc7da96ab5de80bde7f6186971cde diff --git a/raylib/__init__.py b/raylib/__init__.py index 786ad69..c4d180d 100644 --- a/raylib/__init__.py +++ b/raylib/__init__.py @@ -1,34 +1 @@ -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -import sys -import logging - -logger = logging.getLogger(__name__) - -try: - from ._raylib_cffi import ffi, lib as rl -except ModuleNotFoundError: - logger.error("*** ERROR LOADING NATIVE CODE ***") - logger.error("See https://github.com/electronstudio/raylib-python-cffi/issues/142") - logger.error("Your Python is: %s", str(sys.implementation)) - raise - -from raylib._raylib_cffi.lib import * -from raylib.colors import * -from raylib.defines import * -import cffi -from .version import __version__ - -logger.warning("RAYLIB STATIC %s LOADED", __version__) +__version__ = "2.5.0" \ No newline at end of file diff --git a/raylib/__init__.pyi b/raylib/__init__.pyi deleted file mode 100644 index c1b492f..0000000 --- a/raylib/__init__.pyi +++ /dev/null @@ -1,4423 +0,0 @@ -from typing import Any -from warnings import deprecated -import _cffi_backend # type: ignore - -ffi: _cffi_backend.FFI -rl: _cffi_backend.Lib -PhysicsShapeType = int - -class struct: ... - - -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'.""" - ... -def AttachAudioStreamProcessor(stream: AudioStream|list|tuple,processor: Any,) -> None: - """Attach audio stream processor to stream, receives the samples as 'float'.""" - ... -BACKGROUND_COLOR: int -BASE_COLOR_DISABLED: int -BASE_COLOR_FOCUSED: int -BASE_COLOR_NORMAL: int -BASE_COLOR_PRESSED: int -BLEND_ADDITIVE: int -BLEND_ADD_COLORS: int -BLEND_ALPHA: int -BLEND_ALPHA_PREMULTIPLY: int -BLEND_CUSTOM: int -BLEND_CUSTOM_SEPARATE: int -BLEND_MULTIPLIED: int -BLEND_SUBTRACT_COLORS: int -BORDER_COLOR_DISABLED: int -BORDER_COLOR_FOCUSED: int -BORDER_COLOR_NORMAL: int -BORDER_COLOR_PRESSED: int -BORDER_WIDTH: int -BUTTON: int -def BeginBlendMode(mode: int,) -> None: - """Begin blending mode (alpha, additive, multiplied, subtract, custom).""" - ... -def BeginDrawing() -> None: - """Setup canvas (framebuffer) to start drawing.""" - ... -def BeginMode2D(camera: Camera2D|list|tuple,) -> None: - """Begin 2D mode with custom camera (2D).""" - ... -def BeginMode3D(camera: Camera3D|list|tuple,) -> None: - """Begin 3D mode with custom camera (3D).""" - ... -def BeginScissorMode(x: int,y: int,width: int,height: int,) -> None: - """Begin scissor mode (define screen area for following drawing).""" - ... -def BeginShaderMode(shader: Shader|list|tuple,) -> None: - """Begin custom shader drawing.""" - ... -def BeginTextureMode(target: RenderTexture|list|tuple,) -> None: - """Begin drawing to render texture.""" - ... -def BeginVrStereoMode(config: VrStereoConfig|list|tuple,) -> None: - """Begin stereo rendering (requires VR simulator).""" - ... -CAMERA_CUSTOM: int -CAMERA_FIRST_PERSON: int -CAMERA_FREE: int -CAMERA_ORBITAL: int -CAMERA_ORTHOGRAPHIC: int -CAMERA_PERSPECTIVE: int -CAMERA_THIRD_PERSON: int -CHECKBOX: int -CHECK_PADDING: int -COLORPICKER: int -COLOR_SELECTOR_SIZE: int -COMBOBOX: int -COMBO_BUTTON_SPACING: int -COMBO_BUTTON_WIDTH: int -CUBEMAP_LAYOUT_AUTO_DETECT: int -CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE: int -CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR: int -CUBEMAP_LAYOUT_LINE_HORIZONTAL: int -CUBEMAP_LAYOUT_LINE_VERTICAL: int -def ChangeDirectory(dir: bytes,) -> bool: - """Change working directory, return true on success.""" - ... -def CheckCollisionBoxSphere(box: BoundingBox|list|tuple,center: Vector3|list|tuple,radius: float,) -> bool: - """Check collision between box and sphere.""" - ... -def CheckCollisionBoxes(box1: BoundingBox|list|tuple,box2: BoundingBox|list|tuple,) -> bool: - """Check collision between two bounding boxes.""" - ... -def CheckCollisionCircleLine(center: Vector2|list|tuple,radius: float,p1: Vector2|list|tuple,p2: Vector2|list|tuple,) -> bool: - """Check if circle collides with a line created betweeen two points [p1] and [p2].""" - ... -def CheckCollisionCircleRec(center: Vector2|list|tuple,radius: float,rec: Rectangle|list|tuple,) -> bool: - """Check collision between circle and rectangle.""" - ... -def CheckCollisionCircles(center1: Vector2|list|tuple,radius1: float,center2: Vector2|list|tuple,radius2: float,) -> bool: - """Check collision between two circles.""" - ... -def CheckCollisionLines(startPos1: Vector2|list|tuple,endPos1: Vector2|list|tuple,startPos2: Vector2|list|tuple,endPos2: Vector2|list|tuple,collisionPoint: Any|list|tuple,) -> bool: - """Check the collision between two lines defined by two points each, returns collision point by reference.""" - ... -def CheckCollisionPointCircle(point: Vector2|list|tuple,center: Vector2|list|tuple,radius: float,) -> bool: - """Check if point is inside circle.""" - ... -def CheckCollisionPointLine(point: Vector2|list|tuple,p1: Vector2|list|tuple,p2: Vector2|list|tuple,threshold: int,) -> bool: - """Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold].""" - ... -def CheckCollisionPointPoly(point: Vector2|list|tuple,points: Any|list|tuple,pointCount: int,) -> bool: - """Check if point is within a polygon described by array of vertices.""" - ... -def CheckCollisionPointRec(point: Vector2|list|tuple,rec: Rectangle|list|tuple,) -> bool: - """Check if point is inside rectangle.""" - ... -def CheckCollisionPointTriangle(point: Vector2|list|tuple,p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,) -> bool: - """Check if point is inside a triangle.""" - ... -def CheckCollisionRecs(rec1: Rectangle|list|tuple,rec2: Rectangle|list|tuple,) -> bool: - """Check collision between two rectangles.""" - ... -def CheckCollisionSpheres(center1: Vector3|list|tuple,radius1: float,center2: Vector3|list|tuple,radius2: float,) -> bool: - """Check collision between two spheres.""" - ... -def Clamp(value: float,min_1: float,max_2: float,) -> float: - """.""" - ... -def ClearBackground(color: Color|list|tuple,) -> None: - """Set background color (framebuffer clear color).""" - ... -def ClearWindowState(flags: int,) -> None: - """Clear window configuration state flags.""" - ... -def CloseAudioDevice() -> None: - """Close the audio device and context.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def ClosePhysics() -> None: - """Unitializes physics pointers and closes physics loop thread.""" - ... -def CloseWindow() -> None: - """Close window and unload OpenGL context.""" - ... -def CodepointToUTF8(codepoint: int,utf8Size: Any,) -> bytes: - """Encode one codepoint into UTF-8 byte array (array length returned as parameter).""" - ... -def ColorAlpha(color: Color|list|tuple,alpha: float,) -> Color: - """Get color with alpha applied, alpha goes from 0.0f to 1.0f.""" - ... -def ColorAlphaBlend(dst: Color|list|tuple,src: Color|list|tuple,tint: Color|list|tuple,) -> Color: - """Get src alpha-blended into dst color with tint.""" - ... -def ColorBrightness(color: Color|list|tuple,factor: float,) -> Color: - """Get color with brightness correction, brightness factor goes from -1.0f to 1.0f.""" - ... -def ColorContrast(color: Color|list|tuple,contrast: float,) -> Color: - """Get color with contrast correction, contrast values between -1.0f and 1.0f.""" - ... -def ColorFromHSV(hue: float,saturation: float,value: float,) -> Color: - """Get a Color from HSV values, hue [0..360], saturation/value [0..1].""" - ... -def ColorFromNormalized(normalized: Vector4|list|tuple,) -> Color: - """Get Color from normalized values [0..1].""" - ... -def ColorIsEqual(col1: Color|list|tuple,col2: Color|list|tuple,) -> bool: - """Check if two colors are equal.""" - ... -def ColorLerp(color1: Color|list|tuple,color2: Color|list|tuple,factor: float,) -> Color: - """Get color lerp interpolation between two colors, factor [0.0f..1.0f].""" - ... -def ColorNormalize(color: Color|list|tuple,) -> Vector4: - """Get Color normalized as float [0..1].""" - ... -def ColorTint(color: Color|list|tuple,tint: Color|list|tuple,) -> Color: - """Get color multiplied with another color.""" - ... -def ColorToHSV(color: Color|list|tuple,) -> Vector3: - """Get HSV values for a Color, hue [0..360], saturation/value [0..1].""" - ... -def ColorToInt(color: Color|list|tuple,) -> int: - """Get hexadecimal value for a Color (0xRRGGBBAA).""" - ... -def CompressData(data: bytes,dataSize: int,compDataSize: Any,) -> bytes: - """Compress data (DEFLATE algorithm), memory must be MemFree().""" - ... -def ComputeCRC32(data: bytes,dataSize: int,) -> int: - """Compute CRC32 hash code.""" - ... -def ComputeMD5(data: bytes,dataSize: int,) -> Any: - """Compute MD5 hash code, returns static int[4] (16 bytes).""" - ... -def ComputeSHA1(data: bytes,dataSize: int,) -> Any: - """Compute SHA1 hash code, returns static int[5] (20 bytes).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def CreatePhysicsBodyCircle(pos: Vector2|list|tuple,radius: float,density: float,) -> Any: - """Creates a new circle physics body with generic parameters.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def CreatePhysicsBodyPolygon(pos: Vector2|list|tuple,radius: float,sides: int,density: float,) -> Any: - """Creates a new polygon physics body with generic parameters.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def CreatePhysicsBodyRectangle(pos: Vector2|list|tuple,width: float,height: float,density: float,) -> Any: - """Creates a new rectangle physics body with generic parameters.""" - ... -DEFAULT: int -DROPDOWNBOX: int -DROPDOWN_ARROW_HIDDEN: int -DROPDOWN_ITEMS_SPACING: int -DROPDOWN_ROLL_UP: int -def DecodeDataBase64(data: bytes,outputSize: Any,) -> bytes: - """Decode Base64 string data, memory must be MemFree().""" - ... -def DecompressData(compData: bytes,compDataSize: int,dataSize: Any,) -> bytes: - """Decompress data (DEFLATE algorithm), memory must be MemFree().""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def DestroyPhysicsBody(body: Any|list|tuple,) -> None: - """Unitializes and destroy a physics body.""" - ... -def DetachAudioMixedProcessor(processor: Any,) -> None: - """Detach audio stream processor from the entire audio pipeline.""" - ... -def DetachAudioStreamProcessor(stream: AudioStream|list|tuple,processor: Any,) -> None: - """Detach audio stream processor from stream.""" - ... -def DirectoryExists(dirPath: bytes,) -> bool: - """Check if a directory path exists.""" - ... -def DisableCursor() -> None: - """Disables cursor (lock cursor).""" - ... -def DisableEventWaiting() -> None: - """Disable waiting for events on EndDrawing(), automatic events polling.""" - ... -def DrawBillboard(camera: Camera3D|list|tuple,texture: Texture|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a billboard texture.""" - ... -def DrawBillboardPro(camera: Camera3D|list|tuple,texture: Texture|list|tuple,source: Rectangle|list|tuple,position: Vector3|list|tuple,up: Vector3|list|tuple,size: Vector2|list|tuple,origin: Vector2|list|tuple,rotation: float,tint: Color|list|tuple,) -> None: - """Draw a billboard texture defined by source and rotation.""" - ... -def DrawBillboardRec(camera: Camera3D|list|tuple,texture: Texture|list|tuple,source: Rectangle|list|tuple,position: Vector3|list|tuple,size: Vector2|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a billboard texture defined by source.""" - ... -def DrawBoundingBox(box: BoundingBox|list|tuple,color: Color|list|tuple,) -> None: - """Draw bounding box (wires).""" - ... -def DrawCapsule(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,radius: float,slices: int,rings: int,color: Color|list|tuple,) -> None: - """Draw a capsule with the center of its sphere caps at startPos and endPos.""" - ... -def DrawCapsuleWires(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,radius: float,slices: int,rings: int,color: Color|list|tuple,) -> None: - """Draw capsule wireframe with the center of its sphere caps at startPos and endPos.""" - ... -def DrawCircle(centerX: int,centerY: int,radius: float,color: Color|list|tuple,) -> None: - """Draw a color-filled circle.""" - ... -def DrawCircle3D(center: Vector3|list|tuple,radius: float,rotationAxis: Vector3|list|tuple,rotationAngle: float,color: Color|list|tuple,) -> None: - """Draw a circle in 3D world space.""" - ... -def DrawCircleGradient(centerX: int,centerY: int,radius: float,inner: Color|list|tuple,outer: Color|list|tuple,) -> None: - """Draw a gradient-filled circle.""" - ... -def DrawCircleLines(centerX: int,centerY: int,radius: float,color: Color|list|tuple,) -> None: - """Draw circle outline.""" - ... -def DrawCircleLinesV(center: Vector2|list|tuple,radius: float,color: Color|list|tuple,) -> None: - """Draw circle outline (Vector version).""" - ... -def DrawCircleSector(center: Vector2|list|tuple,radius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw a piece of a circle.""" - ... -def DrawCircleSectorLines(center: Vector2|list|tuple,radius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw circle sector outline.""" - ... -def DrawCircleV(center: Vector2|list|tuple,radius: float,color: Color|list|tuple,) -> None: - """Draw a color-filled circle (Vector version).""" - ... -def DrawCube(position: Vector3|list|tuple,width: float,height: float,length: float,color: Color|list|tuple,) -> None: - """Draw cube.""" - ... -def DrawCubeV(position: Vector3|list|tuple,size: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw cube (Vector version).""" - ... -def DrawCubeWires(position: Vector3|list|tuple,width: float,height: float,length: float,color: Color|list|tuple,) -> None: - """Draw cube wires.""" - ... -def DrawCubeWiresV(position: Vector3|list|tuple,size: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw cube wires (Vector version).""" - ... -def DrawCylinder(position: Vector3|list|tuple,radiusTop: float,radiusBottom: float,height: float,slices: int,color: Color|list|tuple,) -> None: - """Draw a cylinder/cone.""" - ... -def DrawCylinderEx(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,startRadius: float,endRadius: float,sides: int,color: Color|list|tuple,) -> None: - """Draw a cylinder with base at startPos and top at endPos.""" - ... -def DrawCylinderWires(position: Vector3|list|tuple,radiusTop: float,radiusBottom: float,height: float,slices: int,color: Color|list|tuple,) -> None: - """Draw a cylinder/cone wires.""" - ... -def DrawCylinderWiresEx(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,startRadius: float,endRadius: float,sides: int,color: Color|list|tuple,) -> None: - """Draw a cylinder wires with base at startPos and top at endPos.""" - ... -def DrawEllipse(centerX: int,centerY: int,radiusH: float,radiusV: float,color: Color|list|tuple,) -> None: - """Draw ellipse.""" - ... -def DrawEllipseLines(centerX: int,centerY: int,radiusH: float,radiusV: float,color: Color|list|tuple,) -> None: - """Draw ellipse outline.""" - ... -def DrawFPS(posX: int,posY: int,) -> None: - """Draw current FPS.""" - ... -def DrawGrid(slices: int,spacing: float,) -> None: - """Draw a grid (centered at (0, 0, 0)).""" - ... -def DrawLine(startPosX: int,startPosY: int,endPosX: int,endPosY: int,color: Color|list|tuple,) -> None: - """Draw a line.""" - ... -def DrawLine3D(startPos: Vector3|list|tuple,endPos: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw a line in 3D world space.""" - ... -def DrawLineBezier(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw line segment cubic-bezier in-out interpolation.""" - ... -def DrawLineEx(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw a line (using triangles/quads).""" - ... -def DrawLineStrip(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw lines sequence (using gl lines).""" - ... -def DrawLineV(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a line (using gl lines).""" - ... -def DrawMesh(mesh: Mesh|list|tuple,material: Material|list|tuple,transform: Matrix|list|tuple,) -> None: - """Draw a 3d mesh with material and transform.""" - ... -def DrawMeshInstanced(mesh: Mesh|list|tuple,material: Material|list|tuple,transforms: Any|list|tuple,instances: int,) -> None: - """Draw multiple mesh instances with material and different transforms.""" - ... -def DrawModel(model: Model|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a model (with texture if set).""" - ... -def DrawModelEx(model: Model|list|tuple,position: Vector3|list|tuple,rotationAxis: Vector3|list|tuple,rotationAngle: float,scale: Vector3|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a model with extended parameters.""" - ... -def DrawModelPoints(model: Model|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a model as points.""" - ... -def DrawModelPointsEx(model: Model|list|tuple,position: Vector3|list|tuple,rotationAxis: Vector3|list|tuple,rotationAngle: float,scale: Vector3|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a model as points with extended parameters.""" - ... -def DrawModelWires(model: Model|list|tuple,position: Vector3|list|tuple,scale: float,tint: Color|list|tuple,) -> None: - """Draw a model wires (with texture if set).""" - ... -def DrawModelWiresEx(model: Model|list|tuple,position: Vector3|list|tuple,rotationAxis: Vector3|list|tuple,rotationAngle: float,scale: Vector3|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a model wires (with texture if set) with extended parameters.""" - ... -def DrawPixel(posX: int,posY: int,color: Color|list|tuple,) -> None: - """Draw a pixel using geometry [Can be slow, use with care].""" - ... -def DrawPixelV(position: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a pixel using geometry (Vector version) [Can be slow, use with care].""" - ... -def DrawPlane(centerPos: Vector3|list|tuple,size: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a plane XZ.""" - ... -def DrawPoint3D(position: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw a point in 3D space, actually a small line.""" - ... -def DrawPoly(center: Vector2|list|tuple,sides: int,radius: float,rotation: float,color: Color|list|tuple,) -> None: - """Draw a regular polygon (Vector version).""" - ... -def DrawPolyLines(center: Vector2|list|tuple,sides: int,radius: float,rotation: float,color: Color|list|tuple,) -> None: - """Draw a polygon outline of n sides.""" - ... -def DrawPolyLinesEx(center: Vector2|list|tuple,sides: int,radius: float,rotation: float,lineThick: float,color: Color|list|tuple,) -> None: - """Draw a polygon outline of n sides with extended parameters.""" - ... -def DrawRay(ray: Ray|list|tuple,color: Color|list|tuple,) -> None: - """Draw a ray line.""" - ... -def DrawRectangle(posX: int,posY: int,width: int,height: int,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle.""" - ... -def DrawRectangleGradientEx(rec: Rectangle|list|tuple,topLeft: Color|list|tuple,bottomLeft: Color|list|tuple,topRight: Color|list|tuple,bottomRight: Color|list|tuple,) -> None: - """Draw a gradient-filled rectangle with custom vertex colors.""" - ... -def DrawRectangleGradientH(posX: int,posY: int,width: int,height: int,left: Color|list|tuple,right: Color|list|tuple,) -> None: - """Draw a horizontal-gradient-filled rectangle.""" - ... -def DrawRectangleGradientV(posX: int,posY: int,width: int,height: int,top: Color|list|tuple,bottom: Color|list|tuple,) -> None: - """Draw a vertical-gradient-filled rectangle.""" - ... -def DrawRectangleLines(posX: int,posY: int,width: int,height: int,color: Color|list|tuple,) -> None: - """Draw rectangle outline.""" - ... -def DrawRectangleLinesEx(rec: Rectangle|list|tuple,lineThick: float,color: Color|list|tuple,) -> None: - """Draw rectangle outline with extended parameters.""" - ... -def DrawRectanglePro(rec: Rectangle|list|tuple,origin: Vector2|list|tuple,rotation: float,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle with pro parameters.""" - ... -def DrawRectangleRec(rec: Rectangle|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle.""" - ... -def DrawRectangleRounded(rec: Rectangle|list|tuple,roundness: float,segments: int,color: Color|list|tuple,) -> None: - """Draw rectangle with rounded edges.""" - ... -def DrawRectangleRoundedLines(rec: Rectangle|list|tuple,roundness: float,segments: int,color: Color|list|tuple,) -> None: - """Draw rectangle lines with rounded edges.""" - ... -def DrawRectangleRoundedLinesEx(rec: Rectangle|list|tuple,roundness: float,segments: int,lineThick: float,color: Color|list|tuple,) -> None: - """Draw rectangle with rounded edges outline.""" - ... -def DrawRectangleV(position: Vector2|list|tuple,size: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled rectangle (Vector version).""" - ... -def DrawRing(center: Vector2|list|tuple,innerRadius: float,outerRadius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw ring.""" - ... -def DrawRingLines(center: Vector2|list|tuple,innerRadius: float,outerRadius: float,startAngle: float,endAngle: float,segments: int,color: Color|list|tuple,) -> None: - """Draw ring outline.""" - ... -def DrawSphere(centerPos: Vector3|list|tuple,radius: float,color: Color|list|tuple,) -> None: - """Draw sphere.""" - ... -def DrawSphereEx(centerPos: Vector3|list|tuple,radius: float,rings: int,slices: int,color: Color|list|tuple,) -> None: - """Draw sphere with extended parameters.""" - ... -def DrawSphereWires(centerPos: Vector3|list|tuple,radius: float,rings: int,slices: int,color: Color|list|tuple,) -> None: - """Draw sphere wires.""" - ... -def DrawSplineBasis(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: B-Spline, minimum 4 points.""" - ... -def DrawSplineBezierCubic(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...].""" - ... -def DrawSplineBezierQuadratic(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...].""" - ... -def DrawSplineCatmullRom(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Catmull-Rom, minimum 4 points.""" - ... -def DrawSplineLinear(points: Any|list|tuple,pointCount: int,thick: float,color: Color|list|tuple,) -> None: - """Draw spline: Linear, minimum 2 points.""" - ... -def DrawSplineSegmentBasis(p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: B-Spline, 4 points.""" - ... -def DrawSplineSegmentBezierCubic(p1: Vector2|list|tuple,c2: Vector2|list|tuple,c3: Vector2|list|tuple,p4: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Cubic Bezier, 2 points, 2 control points.""" - ... -def DrawSplineSegmentBezierQuadratic(p1: Vector2|list|tuple,c2: Vector2|list|tuple,p3: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Quadratic Bezier, 2 points, 1 control point.""" - ... -def DrawSplineSegmentCatmullRom(p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Catmull-Rom, 4 points.""" - ... -def DrawSplineSegmentLinear(p1: Vector2|list|tuple,p2: Vector2|list|tuple,thick: float,color: Color|list|tuple,) -> None: - """Draw spline segment: Linear, 2 points.""" - ... -def DrawText(text: bytes,posX: int,posY: int,fontSize: int,color: Color|list|tuple,) -> None: - """Draw text (using default font).""" - ... -def DrawTextCodepoint(font: Font|list|tuple,codepoint: int,position: Vector2|list|tuple,fontSize: float,tint: Color|list|tuple,) -> None: - """Draw one character (codepoint).""" - ... -def DrawTextCodepoints(font: Font|list|tuple,codepoints: Any,codepointCount: int,position: Vector2|list|tuple,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw multiple character (codepoint).""" - ... -def DrawTextEx(font: Font|list|tuple,text: bytes,position: Vector2|list|tuple,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw text using font and additional parameters.""" - ... -def DrawTextPro(font: Font|list|tuple,text: bytes,position: Vector2|list|tuple,origin: Vector2|list|tuple,rotation: float,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw text using Font and pro parameters (rotation).""" - ... -def DrawTexture(texture: Texture|list|tuple,posX: int,posY: int,tint: Color|list|tuple,) -> None: - """Draw a Texture2D.""" - ... -def DrawTextureEx(texture: Texture|list|tuple,position: Vector2|list|tuple,rotation: float,scale: float,tint: Color|list|tuple,) -> None: - """Draw a Texture2D with extended parameters.""" - ... -def DrawTextureNPatch(texture: Texture|list|tuple,nPatchInfo: NPatchInfo|list|tuple,dest: Rectangle|list|tuple,origin: Vector2|list|tuple,rotation: float,tint: Color|list|tuple,) -> None: - """Draws a texture (or part of it) that stretches or shrinks nicely.""" - ... -def DrawTexturePro(texture: Texture|list|tuple,source: Rectangle|list|tuple,dest: Rectangle|list|tuple,origin: Vector2|list|tuple,rotation: float,tint: Color|list|tuple,) -> None: - """Draw a part of a texture defined by a rectangle with 'pro' parameters.""" - ... -def DrawTextureRec(texture: Texture|list|tuple,source: Rectangle|list|tuple,position: Vector2|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a part of a texture defined by a rectangle.""" - ... -def DrawTextureV(texture: Texture|list|tuple,position: Vector2|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a Texture2D with position defined as Vector2.""" - ... -def DrawTriangle(v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled triangle (vertex in counter-clockwise order!).""" - ... -def DrawTriangle3D(v1: Vector3|list|tuple,v2: Vector3|list|tuple,v3: Vector3|list|tuple,color: Color|list|tuple,) -> None: - """Draw a color-filled triangle (vertex in counter-clockwise order!).""" - ... -def DrawTriangleFan(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle fan defined by points (first vertex is the center).""" - ... -def DrawTriangleLines(v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw triangle outline (vertex in counter-clockwise order!).""" - ... -def DrawTriangleStrip(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle strip defined by points.""" - ... -def DrawTriangleStrip3D(points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle strip defined by points.""" - ... -def EnableCursor() -> None: - """Enables cursor (unlock cursor).""" - ... -def EnableEventWaiting() -> None: - """Enable waiting for events on EndDrawing(), no automatic event polling.""" - ... -def EncodeDataBase64(data: bytes,dataSize: int,outputSize: Any,) -> bytes: - """Encode data to Base64 string, memory must be MemFree().""" - ... -def EndBlendMode() -> None: - """End blending mode (reset to default: alpha blending).""" - ... -def EndDrawing() -> None: - """End canvas drawing and swap buffers (double buffering).""" - ... -def EndMode2D() -> None: - """Ends 2D mode with custom camera.""" - ... -def EndMode3D() -> None: - """Ends 3D mode and returns to default 2D orthographic mode.""" - ... -def EndScissorMode() -> None: - """End scissor mode.""" - ... -def EndShaderMode() -> None: - """End custom shader drawing (use default shader).""" - ... -def EndTextureMode() -> None: - """Ends drawing to render texture.""" - ... -def EndVrStereoMode() -> None: - """End stereo rendering (requires VR simulator).""" - ... -def ExportAutomationEventList(list_0: AutomationEventList|list|tuple,fileName: bytes,) -> bool: - """Export automation events list as text file.""" - ... -def ExportDataAsCode(data: bytes,dataSize: int,fileName: bytes,) -> bool: - """Export data to code (.h), returns true on success.""" - ... -def ExportFontAsCode(font: Font|list|tuple,fileName: bytes,) -> bool: - """Export font as code file, returns true on success.""" - ... -def ExportImage(image: Image|list|tuple,fileName: bytes,) -> bool: - """Export image data to file, returns true on success.""" - ... -def ExportImageAsCode(image: Image|list|tuple,fileName: bytes,) -> bool: - """Export image as code file defining an array of bytes, returns true on success.""" - ... -def ExportImageToMemory(image: Image|list|tuple,fileType: bytes,fileSize: Any,) -> bytes: - """Export image to memory buffer.""" - ... -def ExportMesh(mesh: Mesh|list|tuple,fileName: bytes,) -> bool: - """Export mesh data to file, returns true on success.""" - ... -def ExportMeshAsCode(mesh: Mesh|list|tuple,fileName: bytes,) -> bool: - """Export mesh as code file (.h) defining multiple arrays of vertex attributes.""" - ... -def ExportWave(wave: Wave|list|tuple,fileName: bytes,) -> bool: - """Export wave data to file, returns true on success.""" - ... -def ExportWaveAsCode(wave: Wave|list|tuple,fileName: bytes,) -> bool: - """Export wave sample data to code (.h), returns true on success.""" - ... -FLAG_BORDERLESS_WINDOWED_MODE: int -FLAG_FULLSCREEN_MODE: int -FLAG_INTERLACED_HINT: int -FLAG_MSAA_4X_HINT: int -FLAG_VSYNC_HINT: int -FLAG_WINDOW_ALWAYS_RUN: int -FLAG_WINDOW_HIDDEN: int -FLAG_WINDOW_HIGHDPI: int -FLAG_WINDOW_MAXIMIZED: int -FLAG_WINDOW_MINIMIZED: int -FLAG_WINDOW_MOUSE_PASSTHROUGH: int -FLAG_WINDOW_RESIZABLE: int -FLAG_WINDOW_TOPMOST: int -FLAG_WINDOW_TRANSPARENT: int -FLAG_WINDOW_UNDECORATED: int -FLAG_WINDOW_UNFOCUSED: int -FONT_BITMAP: int -FONT_DEFAULT: int -FONT_SDF: int -def Fade(color: Color|list|tuple,alpha: float,) -> Color: - """Get color with alpha applied, alpha goes from 0.0f to 1.0f.""" - ... -def FileExists(fileName: bytes,) -> bool: - """Check if file exists.""" - ... -def FloatEquals(x: float,y: float,) -> int: - """.""" - ... -GAMEPAD_AXIS_LEFT_TRIGGER: int -GAMEPAD_AXIS_LEFT_X: int -GAMEPAD_AXIS_LEFT_Y: int -GAMEPAD_AXIS_RIGHT_TRIGGER: int -GAMEPAD_AXIS_RIGHT_X: int -GAMEPAD_AXIS_RIGHT_Y: int -GAMEPAD_BUTTON_LEFT_FACE_DOWN: int -GAMEPAD_BUTTON_LEFT_FACE_LEFT: int -GAMEPAD_BUTTON_LEFT_FACE_RIGHT: int -GAMEPAD_BUTTON_LEFT_FACE_UP: int -GAMEPAD_BUTTON_LEFT_THUMB: int -GAMEPAD_BUTTON_LEFT_TRIGGER_1: int -GAMEPAD_BUTTON_LEFT_TRIGGER_2: int -GAMEPAD_BUTTON_MIDDLE: int -GAMEPAD_BUTTON_MIDDLE_LEFT: int -GAMEPAD_BUTTON_MIDDLE_RIGHT: int -GAMEPAD_BUTTON_RIGHT_FACE_DOWN: int -GAMEPAD_BUTTON_RIGHT_FACE_LEFT: int -GAMEPAD_BUTTON_RIGHT_FACE_RIGHT: int -GAMEPAD_BUTTON_RIGHT_FACE_UP: int -GAMEPAD_BUTTON_RIGHT_THUMB: int -GAMEPAD_BUTTON_RIGHT_TRIGGER_1: int -GAMEPAD_BUTTON_RIGHT_TRIGGER_2: int -GAMEPAD_BUTTON_UNKNOWN: int -GESTURE_DOUBLETAP: int -GESTURE_DRAG: int -GESTURE_HOLD: int -GESTURE_NONE: int -GESTURE_PINCH_IN: int -GESTURE_PINCH_OUT: int -GESTURE_SWIPE_DOWN: int -GESTURE_SWIPE_LEFT: int -GESTURE_SWIPE_RIGHT: int -GESTURE_SWIPE_UP: int -GESTURE_TAP: int -GROUP_PADDING: int -def GenImageCellular(width: int,height: int,tileSize: int,) -> Image: - """Generate image: cellular algorithm, bigger tileSize means bigger cells.""" - ... -def GenImageChecked(width: int,height: int,checksX: int,checksY: int,col1: Color|list|tuple,col2: Color|list|tuple,) -> Image: - """Generate image: checked.""" - ... -def GenImageColor(width: int,height: int,color: Color|list|tuple,) -> Image: - """Generate image: plain color.""" - ... -def GenImageFontAtlas(glyphs: Any|list|tuple,glyphRecs: Any|list|tuple,glyphCount: int,fontSize: int,padding: int,packMethod: int,) -> Image: - """Generate image font atlas using chars info.""" - ... -def GenImageGradientLinear(width: int,height: int,direction: int,start: Color|list|tuple,end: Color|list|tuple,) -> Image: - """Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient.""" - ... -def GenImageGradientRadial(width: int,height: int,density: float,inner: Color|list|tuple,outer: Color|list|tuple,) -> Image: - """Generate image: radial gradient.""" - ... -def GenImageGradientSquare(width: int,height: int,density: float,inner: Color|list|tuple,outer: Color|list|tuple,) -> Image: - """Generate image: square gradient.""" - ... -def GenImagePerlinNoise(width: int,height: int,offsetX: int,offsetY: int,scale: float,) -> Image: - """Generate image: perlin noise.""" - ... -def GenImageText(width: int,height: int,text: bytes,) -> Image: - """Generate image: grayscale image from text data.""" - ... -def GenImageWhiteNoise(width: int,height: int,factor: float,) -> Image: - """Generate image: white noise.""" - ... -def GenMeshCone(radius: float,height: float,slices: int,) -> Mesh: - """Generate cone/pyramid mesh.""" - ... -def GenMeshCube(width: float,height: float,length: float,) -> Mesh: - """Generate cuboid mesh.""" - ... -def GenMeshCubicmap(cubicmap: Image|list|tuple,cubeSize: Vector3|list|tuple,) -> Mesh: - """Generate cubes-based map mesh from image data.""" - ... -def GenMeshCylinder(radius: float,height: float,slices: int,) -> Mesh: - """Generate cylinder mesh.""" - ... -def GenMeshHeightmap(heightmap: Image|list|tuple,size: Vector3|list|tuple,) -> Mesh: - """Generate heightmap mesh from image data.""" - ... -def GenMeshHemiSphere(radius: float,rings: int,slices: int,) -> Mesh: - """Generate half-sphere mesh (no bottom cap).""" - ... -def GenMeshKnot(radius: float,size: float,radSeg: int,sides: int,) -> Mesh: - """Generate trefoil knot mesh.""" - ... -def GenMeshPlane(width: float,length: float,resX: int,resZ: int,) -> Mesh: - """Generate plane mesh (with subdivisions).""" - ... -def GenMeshPoly(sides: int,radius: float,) -> Mesh: - """Generate polygonal mesh.""" - ... -def GenMeshSphere(radius: float,rings: int,slices: int,) -> Mesh: - """Generate sphere mesh (standard sphere).""" - ... -def GenMeshTangents(mesh: Any|list|tuple,) -> None: - """Compute mesh tangents.""" - ... -def GenMeshTorus(radius: float,size: float,radSeg: int,sides: int,) -> Mesh: - """Generate torus mesh.""" - ... -def GenTextureMipmaps(texture: Any|list|tuple,) -> None: - """Generate GPU mipmaps for a texture.""" - ... -def GetApplicationDirectory() -> bytes: - """Get the directory of the running application (uses static string).""" - ... -def GetCameraMatrix(camera: Camera3D|list|tuple,) -> Matrix: - """Get camera transform matrix (view matrix).""" - ... -def GetCameraMatrix2D(camera: Camera2D|list|tuple,) -> Matrix: - """Get camera 2d transform matrix.""" - ... -def GetCharPressed() -> int: - """Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty.""" - ... -def GetClipboardImage() -> Image: - """Get clipboard image content.""" - ... -def GetClipboardText() -> bytes: - """Get clipboard text content.""" - ... -def GetCodepoint(text: bytes,codepointSize: Any,) -> int: - """Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure.""" - ... -def GetCodepointCount(text: bytes,) -> int: - """Get total number of codepoints in a UTF-8 encoded string.""" - ... -def GetCodepointNext(text: bytes,codepointSize: Any,) -> int: - """Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure.""" - ... -def GetCodepointPrevious(text: bytes,codepointSize: Any,) -> int: - """Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure.""" - ... -def GetCollisionRec(rec1: Rectangle|list|tuple,rec2: Rectangle|list|tuple,) -> Rectangle: - """Get collision rectangle for two rectangles collision.""" - ... -def GetColor(hexValue: int,) -> Color: - """Get Color structure from hexadecimal value.""" - ... -def GetCurrentMonitor() -> int: - """Get current monitor where window is placed.""" - ... -def GetDirectoryPath(filePath: bytes,) -> bytes: - """Get full path for a given fileName with path (uses static string).""" - ... -def GetFPS() -> int: - """Get current FPS.""" - ... -def GetFileExtension(fileName: bytes,) -> bytes: - """Get pointer to extension for a filename string (includes dot: '.png').""" - ... -def GetFileLength(fileName: bytes,) -> int: - """Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h).""" - ... -def GetFileModTime(fileName: bytes,) -> int: - """Get file modification time (last write time).""" - ... -def GetFileName(filePath: bytes,) -> bytes: - """Get pointer to filename for a path string.""" - ... -def GetFileNameWithoutExt(filePath: bytes,) -> bytes: - """Get filename string without extension (uses static string).""" - ... -def GetFontDefault() -> Font: - """Get the default Font.""" - ... -def GetFrameTime() -> float: - """Get time in seconds for last frame drawn (delta time).""" - ... -def GetGamepadAxisCount(gamepad: int,) -> int: - """Get gamepad axis count for a gamepad.""" - ... -def GetGamepadAxisMovement(gamepad: int,axis: int,) -> float: - """Get axis movement value for a gamepad axis.""" - ... -def GetGamepadButtonPressed() -> int: - """Get the last gamepad button pressed.""" - ... -def GetGamepadName(gamepad: int,) -> bytes: - """Get gamepad internal name id.""" - ... -def GetGestureDetected() -> int: - """Get latest detected gesture.""" - ... -def GetGestureDragAngle() -> float: - """Get gesture drag angle.""" - ... -def GetGestureDragVector() -> Vector2: - """Get gesture drag vector.""" - ... -def GetGestureHoldDuration() -> float: - """Get gesture hold time in seconds.""" - ... -def GetGesturePinchAngle() -> float: - """Get gesture pinch angle.""" - ... -def GetGesturePinchVector() -> Vector2: - """Get gesture pinch delta.""" - ... -def GetGlyphAtlasRec(font: Font|list|tuple,codepoint: int,) -> Rectangle: - """Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found.""" - ... -def GetGlyphIndex(font: Font|list|tuple,codepoint: int,) -> int: - """Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found.""" - ... -def GetGlyphInfo(font: Font|list|tuple,codepoint: int,) -> GlyphInfo: - """Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found.""" - ... -def GetImageAlphaBorder(image: Image|list|tuple,threshold: float,) -> Rectangle: - """Get image alpha border rectangle.""" - ... -def GetImageColor(image: Image|list|tuple,x: int,y: int,) -> Color: - """Get image pixel color at (x, y) position.""" - ... -def GetKeyPressed() -> int: - """Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty.""" - ... -def GetMasterVolume() -> float: - """Get master volume (listener).""" - ... -def GetMeshBoundingBox(mesh: Mesh|list|tuple,) -> BoundingBox: - """Compute mesh bounding box limits.""" - ... -def GetModelBoundingBox(model: Model|list|tuple,) -> BoundingBox: - """Compute model bounding box limits (considers all meshes).""" - ... -def GetMonitorCount() -> int: - """Get number of connected monitors.""" - ... -def GetMonitorHeight(monitor: int,) -> int: - """Get specified monitor height (current video mode used by monitor).""" - ... -def GetMonitorName(monitor: int,) -> bytes: - """Get the human-readable, UTF-8 encoded name of the specified monitor.""" - ... -def GetMonitorPhysicalHeight(monitor: int,) -> int: - """Get specified monitor physical height in millimetres.""" - ... -def GetMonitorPhysicalWidth(monitor: int,) -> int: - """Get specified monitor physical width in millimetres.""" - ... -def GetMonitorPosition(monitor: int,) -> Vector2: - """Get specified monitor position.""" - ... -def GetMonitorRefreshRate(monitor: int,) -> int: - """Get specified monitor refresh rate.""" - ... -def GetMonitorWidth(monitor: int,) -> int: - """Get specified monitor width (current video mode used by monitor).""" - ... -def GetMouseDelta() -> Vector2: - """Get mouse delta between frames.""" - ... -def GetMousePosition() -> Vector2: - """Get mouse position XY.""" - ... -def GetMouseWheelMove() -> float: - """Get mouse wheel movement for X or Y, whichever is larger.""" - ... -def GetMouseWheelMoveV() -> Vector2: - """Get mouse wheel movement for both X and Y.""" - ... -def GetMouseX() -> int: - """Get mouse position X.""" - ... -def GetMouseY() -> int: - """Get mouse position Y.""" - ... -def GetMusicTimeLength(music: Music|list|tuple,) -> float: - """Get music time length (in seconds).""" - ... -def GetMusicTimePlayed(music: Music|list|tuple,) -> float: - """Get current music time played (in seconds).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsBodiesCount() -> int: - """Returns the current amount of created physics bodies.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsBody(index: int,) -> Any: - """Returns a physics body of the bodies pool at a specific index.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsShapeType(index: int,) -> int: - """Returns the physics body shape type (PHYSICS_CIRCLE or PHYSICS_POLYGON).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsShapeVertex(body: Any|list|tuple,vertex: int,) -> Vector2: - """Returns transformed position of a body shape (body position + vertex transformed position).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def GetPhysicsShapeVerticesCount(index: int,) -> int: - """Returns the amount of vertices of a physics body shape.""" - ... -def GetPixelColor(srcPtr: Any,format: int,) -> Color: - """Get Color from a source pixel pointer of certain format.""" - ... -def GetPixelDataSize(width: int,height: int,format: int,) -> int: - """Get pixel data size in bytes for certain format.""" - ... -def GetPrevDirectoryPath(dirPath: bytes,) -> bytes: - """Get previous directory path for a given path (uses static string).""" - ... -def GetRandomValue(min_0: int,max_1: int,) -> int: - """Get a random value between min and max (both included).""" - ... -def GetRayCollisionBox(ray: Ray|list|tuple,box: BoundingBox|list|tuple,) -> RayCollision: - """Get collision info between ray and box.""" - ... -def GetRayCollisionMesh(ray: Ray|list|tuple,mesh: Mesh|list|tuple,transform: Matrix|list|tuple,) -> RayCollision: - """Get collision info between ray and mesh.""" - ... -def GetRayCollisionQuad(ray: Ray|list|tuple,p1: Vector3|list|tuple,p2: Vector3|list|tuple,p3: Vector3|list|tuple,p4: Vector3|list|tuple,) -> RayCollision: - """Get collision info between ray and quad.""" - ... -def GetRayCollisionSphere(ray: Ray|list|tuple,center: Vector3|list|tuple,radius: float,) -> RayCollision: - """Get collision info between ray and sphere.""" - ... -def GetRayCollisionTriangle(ray: Ray|list|tuple,p1: Vector3|list|tuple,p2: Vector3|list|tuple,p3: Vector3|list|tuple,) -> RayCollision: - """Get collision info between ray and triangle.""" - ... -def GetRenderHeight() -> int: - """Get current render height (it considers HiDPI).""" - ... -def GetRenderWidth() -> int: - """Get current render width (it considers HiDPI).""" - ... -def GetScreenHeight() -> int: - """Get current screen height.""" - ... -def GetScreenToWorld2D(position: Vector2|list|tuple,camera: Camera2D|list|tuple,) -> Vector2: - """Get the world space position for a 2d camera screen space position.""" - ... -def GetScreenToWorldRay(position: Vector2|list|tuple,camera: Camera3D|list|tuple,) -> Ray: - """Get a ray trace from screen position (i.e mouse).""" - ... -def GetScreenToWorldRayEx(position: Vector2|list|tuple,camera: Camera3D|list|tuple,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.""" - ... -def GetShaderLocation(shader: Shader|list|tuple,uniformName: bytes,) -> int: - """Get shader uniform location.""" - ... -def GetShaderLocationAttrib(shader: Shader|list|tuple,attribName: bytes,) -> 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|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: B-Spline.""" - ... -def GetSplinePointBezierCubic(p1: Vector2|list|tuple,c2: Vector2|list|tuple,c3: Vector2|list|tuple,p4: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Cubic Bezier.""" - ... -def GetSplinePointBezierQuad(p1: Vector2|list|tuple,c2: Vector2|list|tuple,p3: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Quadratic Bezier.""" - ... -def GetSplinePointCatmullRom(p1: Vector2|list|tuple,p2: Vector2|list|tuple,p3: Vector2|list|tuple,p4: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Catmull-Rom.""" - ... -def GetSplinePointLinear(startPos: Vector2|list|tuple,endPos: Vector2|list|tuple,t: float,) -> Vector2: - """Get (evaluate) spline point: Linear.""" - ... -def GetTime() -> float: - """Get elapsed time in seconds since InitWindow().""" - ... -def GetTouchPointCount() -> int: - """Get number of touch points.""" - ... -def GetTouchPointId(index: int,) -> int: - """Get touch point identifier for given index.""" - ... -def GetTouchPosition(index: int,) -> Vector2: - """Get touch position XY for a touch point index (relative to screen size).""" - ... -def GetTouchX() -> int: - """Get touch position X for touch point 0 (relative to screen size).""" - ... -def GetTouchY() -> int: - """Get touch position Y for touch point 0 (relative to screen size).""" - ... -def GetWindowHandle() -> Any: - """Get native window handle.""" - ... -def GetWindowPosition() -> Vector2: - """Get window position XY on monitor.""" - ... -def GetWindowScaleDPI() -> Vector2: - """Get window scale DPI factor.""" - ... -def GetWorkingDirectory() -> bytes: - """Get current working directory (uses static string).""" - ... -def GetWorldToScreen(position: Vector3|list|tuple,camera: Camera3D|list|tuple,) -> Vector2: - """Get the screen space position for a 3d world space position.""" - ... -def GetWorldToScreen2D(position: Vector2|list|tuple,camera: Camera2D|list|tuple,) -> Vector2: - """Get the screen space position for a 2d camera world space position.""" - ... -def GetWorldToScreenEx(position: Vector3|list|tuple,camera: Camera3D|list|tuple,width: int,height: int,) -> Vector2: - """Get size position for a 3d world space position.""" - ... -def GuiButton(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Button control, returns true when clicked.""" - ... -def GuiCheckBox(bounds: Rectangle|list|tuple,text: bytes,checked: Any,) -> int: - """Check Box control, returns true when active.""" - ... -def GuiColorBarAlpha(bounds: Rectangle|list|tuple,text: bytes,alpha: Any,) -> int: - """Color Bar Alpha control.""" - ... -def GuiColorBarHue(bounds: Rectangle|list|tuple,text: bytes,value: Any,) -> int: - """Color Bar Hue control.""" - ... -def GuiColorPanel(bounds: Rectangle|list|tuple,text: bytes,color: Any|list|tuple,) -> int: - """Color Panel control.""" - ... -def GuiColorPanelHSV(bounds: Rectangle|list|tuple,text: bytes,colorHsv: Any|list|tuple,) -> int: - """Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV().""" - ... -def GuiColorPicker(bounds: Rectangle|list|tuple,text: bytes,color: Any|list|tuple,) -> int: - """Color Picker control (multiple color controls).""" - ... -def GuiColorPickerHSV(bounds: Rectangle|list|tuple,text: bytes,colorHsv: Any|list|tuple,) -> int: - """Color Picker control that avoids conversion to RGB on each call (multiple color controls).""" - ... -def GuiComboBox(bounds: Rectangle|list|tuple,text: bytes,active: Any,) -> int: - """Combo Box control.""" - ... -def GuiDisable() -> None: - """Disable gui controls (global state).""" - ... -def GuiDisableTooltip() -> None: - """Disable gui tooltips (global state).""" - ... -def GuiDrawIcon(iconId: int,posX: int,posY: int,pixelSize: int,color: Color|list|tuple,) -> None: - """Draw icon using pixel size at specified position.""" - ... -def GuiDropdownBox(bounds: Rectangle|list|tuple,text: bytes,active: Any,editMode: bool,) -> int: - """Dropdown Box control.""" - ... -def GuiDummyRec(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Dummy control for placeholders.""" - ... -def GuiEnable() -> None: - """Enable gui controls (global state).""" - ... -def GuiEnableTooltip() -> None: - """Enable gui tooltips (global state).""" - ... -def GuiGetFont() -> Font: - """Get gui custom font (global state).""" - ... -def GuiGetIcons() -> Any: - """Get raygui icons data pointer.""" - ... -def GuiGetState() -> int: - """Get gui state (global state).""" - ... -def GuiGetStyle(control: int,property: int,) -> int: - """Get one style property.""" - ... -def GuiGrid(bounds: Rectangle|list|tuple,text: bytes,spacing: float,subdivs: int,mouseCell: Any|list|tuple,) -> int: - """Grid control.""" - ... -def GuiGroupBox(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Group Box control with text name.""" - ... -def GuiIconText(iconId: int,text: bytes,) -> bytes: - """Get text with icon id prepended (if supported).""" - ... -def GuiIsLocked() -> bool: - """Check if gui is locked (global state).""" - ... -def GuiLabel(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Label control.""" - ... -def GuiLabelButton(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Label button control, returns true when clicked.""" - ... -def GuiLine(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Line separator control, could contain text.""" - ... -def GuiListView(bounds: Rectangle|list|tuple,text: bytes,scrollIndex: Any,active: Any,) -> int: - """List View control.""" - ... -def GuiListViewEx(bounds: Rectangle|list|tuple,text: list[bytes],count: int,scrollIndex: Any,active: Any,focus: Any,) -> int: - """List View with extended parameters.""" - ... -def GuiLoadIcons(fileName: bytes,loadIconsName: bool,) -> list[bytes]: - """Load raygui icons file (.rgi) into internal icons data.""" - ... -def GuiLoadStyle(fileName: bytes,) -> None: - """Load style file over global style variable (.rgs).""" - ... -def GuiLoadStyleDefault() -> None: - """Load style default over global style.""" - ... -def GuiLock() -> None: - """Lock gui controls (global state).""" - ... -def GuiMessageBox(bounds: Rectangle|list|tuple,title: bytes,message: bytes,buttons: bytes,) -> int: - """Message Box control, displays a message.""" - ... -def GuiPanel(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Panel control, useful to group controls.""" - ... -def GuiProgressBar(bounds: Rectangle|list|tuple,textLeft: bytes,textRight: bytes,value: Any,minValue: float,maxValue: float,) -> int: - """Progress Bar control.""" - ... -def GuiScrollPanel(bounds: Rectangle|list|tuple,text: bytes,content: Rectangle|list|tuple,scroll: Any|list|tuple,view: Any|list|tuple,) -> int: - """Scroll Panel control.""" - ... -def GuiSetAlpha(alpha: float,) -> None: - """Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f.""" - ... -def GuiSetFont(font: Font|list|tuple,) -> None: - """Set gui custom font (global state).""" - ... -def GuiSetIconScale(scale: int,) -> None: - """Set default icon drawing size.""" - ... -def GuiSetState(state: int,) -> None: - """Set gui state (global state).""" - ... -def GuiSetStyle(control: int,property: int,value: int,) -> None: - """Set one style property.""" - ... -def GuiSetTooltip(tooltip: bytes,) -> None: - """Set tooltip string.""" - ... -def GuiSlider(bounds: Rectangle|list|tuple,textLeft: bytes,textRight: bytes,value: Any,minValue: float,maxValue: float,) -> int: - """Slider control.""" - ... -def GuiSliderBar(bounds: Rectangle|list|tuple,textLeft: bytes,textRight: bytes,value: Any,minValue: float,maxValue: float,) -> int: - """Slider Bar control.""" - ... -def GuiSpinner(bounds: Rectangle|list|tuple,text: bytes,value: Any,minValue: int,maxValue: int,editMode: bool,) -> int: - """Spinner control.""" - ... -def GuiStatusBar(bounds: Rectangle|list|tuple,text: bytes,) -> int: - """Status Bar control, shows info text.""" - ... -def GuiTabBar(bounds: Rectangle|list|tuple,text: list[bytes],count: int,active: Any,) -> int: - """Tab Bar control, returns TAB to be closed or -1.""" - ... -def GuiTextBox(bounds: Rectangle|list|tuple,text: bytes,textSize: int,editMode: bool,) -> int: - """Text Box control, updates input text.""" - ... -def GuiTextInputBox(bounds: Rectangle|list|tuple,title: bytes,message: bytes,buttons: bytes,text: bytes,textMaxSize: int,secretViewActive: Any,) -> int: - """Text Input Box control, ask for text, supports secret.""" - ... -def GuiToggle(bounds: Rectangle|list|tuple,text: bytes,active: Any,) -> int: - """Toggle Button control.""" - ... -def GuiToggleGroup(bounds: Rectangle|list|tuple,text: bytes,active: Any,) -> int: - """Toggle Group control.""" - ... -def GuiToggleSlider(bounds: Rectangle|list|tuple,text: bytes,active: Any,) -> int: - """Toggle Slider control.""" - ... -def GuiUnlock() -> None: - """Unlock gui controls (global state).""" - ... -def GuiValueBox(bounds: Rectangle|list|tuple,text: bytes,value: Any,minValue: int,maxValue: int,editMode: bool,) -> int: - """Value Box control, updates input text with numbers.""" - ... -def GuiValueBoxFloat(bounds: Rectangle|list|tuple,text: bytes,textValue: bytes,value: Any,editMode: bool,) -> int: - """Value box control for float values.""" - ... -def GuiWindowBox(bounds: Rectangle|list|tuple,title: bytes,) -> int: - """Window Box control, shows a window that can be closed.""" - ... -HUEBAR_PADDING: int -HUEBAR_SELECTOR_HEIGHT: int -HUEBAR_SELECTOR_OVERFLOW: int -HUEBAR_WIDTH: int -def HideCursor() -> None: - """Hides cursor.""" - ... -ICON_1UP: int -ICON_229: int -ICON_230: int -ICON_231: int -ICON_232: int -ICON_233: int -ICON_234: int -ICON_235: int -ICON_236: int -ICON_237: int -ICON_238: int -ICON_239: int -ICON_240: int -ICON_241: int -ICON_242: int -ICON_243: int -ICON_244: int -ICON_245: int -ICON_246: int -ICON_247: int -ICON_248: int -ICON_249: int -ICON_250: int -ICON_251: int -ICON_252: int -ICON_253: int -ICON_254: int -ICON_255: int -ICON_ALARM: int -ICON_ALPHA_CLEAR: int -ICON_ALPHA_MULTIPLY: int -ICON_ARROW_DOWN: int -ICON_ARROW_DOWN_FILL: int -ICON_ARROW_LEFT: int -ICON_ARROW_LEFT_FILL: int -ICON_ARROW_RIGHT: int -ICON_ARROW_RIGHT_FILL: int -ICON_ARROW_UP: int -ICON_ARROW_UP_FILL: int -ICON_AUDIO: int -ICON_BIN: int -ICON_BOX: int -ICON_BOX_BOTTOM: int -ICON_BOX_BOTTOM_LEFT: int -ICON_BOX_BOTTOM_RIGHT: int -ICON_BOX_CENTER: int -ICON_BOX_CIRCLE_MASK: int -ICON_BOX_CONCENTRIC: int -ICON_BOX_CORNERS_BIG: int -ICON_BOX_CORNERS_SMALL: int -ICON_BOX_DOTS_BIG: int -ICON_BOX_DOTS_SMALL: int -ICON_BOX_GRID: int -ICON_BOX_GRID_BIG: int -ICON_BOX_LEFT: int -ICON_BOX_MULTISIZE: int -ICON_BOX_RIGHT: int -ICON_BOX_TOP: int -ICON_BOX_TOP_LEFT: int -ICON_BOX_TOP_RIGHT: int -ICON_BREAKPOINT_OFF: int -ICON_BREAKPOINT_ON: int -ICON_BRUSH_CLASSIC: int -ICON_BRUSH_PAINTER: int -ICON_BURGER_MENU: int -ICON_CAMERA: int -ICON_CASE_SENSITIVE: int -ICON_CLOCK: int -ICON_COIN: int -ICON_COLOR_BUCKET: int -ICON_COLOR_PICKER: int -ICON_CORNER: int -ICON_CPU: int -ICON_CRACK: int -ICON_CRACK_POINTS: int -ICON_CROP: int -ICON_CROP_ALPHA: int -ICON_CROSS: int -ICON_CROSSLINE: int -ICON_CROSS_SMALL: int -ICON_CUBE: int -ICON_CUBE_FACE_BACK: int -ICON_CUBE_FACE_BOTTOM: int -ICON_CUBE_FACE_FRONT: int -ICON_CUBE_FACE_LEFT: int -ICON_CUBE_FACE_RIGHT: int -ICON_CUBE_FACE_TOP: int -ICON_CURSOR_CLASSIC: int -ICON_CURSOR_HAND: int -ICON_CURSOR_MOVE: int -ICON_CURSOR_MOVE_FILL: int -ICON_CURSOR_POINTER: int -ICON_CURSOR_SCALE: int -ICON_CURSOR_SCALE_FILL: int -ICON_CURSOR_SCALE_LEFT: int -ICON_CURSOR_SCALE_LEFT_FILL: int -ICON_CURSOR_SCALE_RIGHT: int -ICON_CURSOR_SCALE_RIGHT_FILL: int -ICON_DEMON: int -ICON_DITHERING: int -ICON_DOOR: int -ICON_EMPTYBOX: int -ICON_EMPTYBOX_SMALL: int -ICON_EXIT: int -ICON_EXPLOSION: int -ICON_EYE_OFF: int -ICON_EYE_ON: int -ICON_FILE: int -ICON_FILETYPE_ALPHA: int -ICON_FILETYPE_AUDIO: int -ICON_FILETYPE_BINARY: int -ICON_FILETYPE_HOME: int -ICON_FILETYPE_IMAGE: int -ICON_FILETYPE_INFO: int -ICON_FILETYPE_PLAY: int -ICON_FILETYPE_TEXT: int -ICON_FILETYPE_VIDEO: int -ICON_FILE_ADD: int -ICON_FILE_COPY: int -ICON_FILE_CUT: int -ICON_FILE_DELETE: int -ICON_FILE_EXPORT: int -ICON_FILE_NEW: int -ICON_FILE_OPEN: int -ICON_FILE_PASTE: int -ICON_FILE_SAVE: int -ICON_FILE_SAVE_CLASSIC: int -ICON_FILTER: int -ICON_FILTER_BILINEAR: int -ICON_FILTER_POINT: int -ICON_FILTER_TOP: int -ICON_FOLDER: int -ICON_FOLDER_ADD: int -ICON_FOLDER_FILE_OPEN: int -ICON_FOLDER_OPEN: int -ICON_FOLDER_SAVE: int -ICON_FOUR_BOXES: int -ICON_FX: int -ICON_GEAR: int -ICON_GEAR_BIG: int -ICON_GEAR_EX: int -ICON_GRID: int -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 -ICON_LIFE_BARS: int -ICON_LINK: int -ICON_LINK_BOXES: int -ICON_LINK_BROKE: int -ICON_LINK_MULTI: int -ICON_LINK_NET: int -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 -ICON_MUTATE: int -ICON_MUTATE_FILL: int -ICON_NONE: int -ICON_NOTEBOOK: int -ICON_OK_TICK: int -ICON_PENCIL: int -ICON_PENCIL_BIG: int -ICON_PHOTO_CAMERA: int -ICON_PHOTO_CAMERA_FLASH: int -ICON_PLAYER: int -ICON_PLAYER_JUMP: int -ICON_PLAYER_NEXT: int -ICON_PLAYER_PAUSE: int -ICON_PLAYER_PLAY: int -ICON_PLAYER_PLAY_BACK: int -ICON_PLAYER_PREVIOUS: int -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 -ICON_REPEAT: int -ICON_REPEAT_FILL: int -ICON_REREDO: int -ICON_REREDO_FILL: int -ICON_RESIZE: int -ICON_RESTART: int -ICON_ROM: int -ICON_ROTATE: int -ICON_ROTATE_FILL: int -ICON_RUBBER: int -ICON_SAND_TIMER: int -ICON_SCALE: int -ICON_SHIELD: int -ICON_SHUFFLE: int -ICON_SHUFFLE_FILL: int -ICON_SPECIAL: int -ICON_SQUARE_TOGGLE: int -ICON_STAR: int -ICON_STEP_INTO: int -ICON_STEP_OUT: int -ICON_STEP_OVER: int -ICON_SUITCASE: int -ICON_SUITCASE_ZIP: int -ICON_SYMMETRY: int -ICON_SYMMETRY_HORIZONTAL: int -ICON_SYMMETRY_VERTICAL: int -ICON_TARGET: int -ICON_TARGET_BIG: int -ICON_TARGET_BIG_FILL: int -ICON_TARGET_MOVE: int -ICON_TARGET_MOVE_FILL: int -ICON_TARGET_POINT: int -ICON_TARGET_SMALL: int -ICON_TARGET_SMALL_FILL: int -ICON_TEXT_A: int -ICON_TEXT_NOTES: int -ICON_TEXT_POPUP: int -ICON_TEXT_T: int -ICON_TOOLS: int -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 -ICON_WAVE_SQUARE: int -ICON_WAVE_TRIANGULAR: int -ICON_WINDOW: int -ICON_ZOOM_ALL: int -ICON_ZOOM_BIG: int -ICON_ZOOM_CENTER: int -ICON_ZOOM_MEDIUM: int -ICON_ZOOM_SMALL: int -def ImageAlphaClear(image: Any|list|tuple,color: Color|list|tuple,threshold: float,) -> None: - """Clear alpha channel to desired color.""" - ... -def ImageAlphaCrop(image: Any|list|tuple,threshold: float,) -> None: - """Crop image depending on alpha value.""" - ... -def ImageAlphaMask(image: Any|list|tuple,alphaMask: Image|list|tuple,) -> None: - """Apply alpha mask to image.""" - ... -def ImageAlphaPremultiply(image: Any|list|tuple,) -> None: - """Premultiply alpha channel.""" - ... -def ImageBlurGaussian(image: Any|list|tuple,blurSize: int,) -> None: - """Apply Gaussian blur using a box blur approximation.""" - ... -def ImageClearBackground(dst: Any|list|tuple,color: Color|list|tuple,) -> None: - """Clear image background with given color.""" - ... -def ImageColorBrightness(image: Any|list|tuple,brightness: int,) -> None: - """Modify image color: brightness (-255 to 255).""" - ... -def ImageColorContrast(image: Any|list|tuple,contrast: float,) -> None: - """Modify image color: contrast (-100 to 100).""" - ... -def ImageColorGrayscale(image: Any|list|tuple,) -> None: - """Modify image color: grayscale.""" - ... -def ImageColorInvert(image: Any|list|tuple,) -> None: - """Modify image color: invert.""" - ... -def ImageColorReplace(image: Any|list|tuple,color: Color|list|tuple,replace: Color|list|tuple,) -> None: - """Modify image color: replace color.""" - ... -def ImageColorTint(image: Any|list|tuple,color: Color|list|tuple,) -> None: - """Modify image color: tint.""" - ... -def ImageCopy(image: Image|list|tuple,) -> Image: - """Create an image duplicate (useful for transformations).""" - ... -def ImageCrop(image: Any|list|tuple,crop: Rectangle|list|tuple,) -> None: - """Crop an image to a defined rectangle.""" - ... -def ImageDither(image: Any|list|tuple,rBpp: int,gBpp: int,bBpp: int,aBpp: int,) -> None: - """Dither image data to 16bpp or lower (Floyd-Steinberg dithering).""" - ... -def ImageDraw(dst: Any|list|tuple,src: Image|list|tuple,srcRec: Rectangle|list|tuple,dstRec: Rectangle|list|tuple,tint: Color|list|tuple,) -> None: - """Draw a source image within a destination image (tint applied to source).""" - ... -def ImageDrawCircle(dst: Any|list|tuple,centerX: int,centerY: int,radius: int,color: Color|list|tuple,) -> None: - """Draw a filled circle within an image.""" - ... -def ImageDrawCircleLines(dst: Any|list|tuple,centerX: int,centerY: int,radius: int,color: Color|list|tuple,) -> None: - """Draw circle outline within an image.""" - ... -def ImageDrawCircleLinesV(dst: Any|list|tuple,center: Vector2|list|tuple,radius: int,color: Color|list|tuple,) -> None: - """Draw circle outline within an image (Vector version).""" - ... -def ImageDrawCircleV(dst: Any|list|tuple,center: Vector2|list|tuple,radius: int,color: Color|list|tuple,) -> None: - """Draw a filled circle within an image (Vector version).""" - ... -def ImageDrawLine(dst: Any|list|tuple,startPosX: int,startPosY: int,endPosX: int,endPosY: int,color: Color|list|tuple,) -> None: - """Draw line within an image.""" - ... -def ImageDrawLineEx(dst: Any|list|tuple,start: Vector2|list|tuple,end: Vector2|list|tuple,thick: int,color: Color|list|tuple,) -> None: - """Draw a line defining thickness within an image.""" - ... -def ImageDrawLineV(dst: Any|list|tuple,start: Vector2|list|tuple,end: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw line within an image (Vector version).""" - ... -def ImageDrawPixel(dst: Any|list|tuple,posX: int,posY: int,color: Color|list|tuple,) -> None: - """Draw pixel within an image.""" - ... -def ImageDrawPixelV(dst: Any|list|tuple,position: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw pixel within an image (Vector version).""" - ... -def ImageDrawRectangle(dst: Any|list|tuple,posX: int,posY: int,width: int,height: int,color: Color|list|tuple,) -> None: - """Draw rectangle within an image.""" - ... -def ImageDrawRectangleLines(dst: Any|list|tuple,rec: Rectangle|list|tuple,thick: int,color: Color|list|tuple,) -> None: - """Draw rectangle lines within an image.""" - ... -def ImageDrawRectangleRec(dst: Any|list|tuple,rec: Rectangle|list|tuple,color: Color|list|tuple,) -> None: - """Draw rectangle within an image.""" - ... -def ImageDrawRectangleV(dst: Any|list|tuple,position: Vector2|list|tuple,size: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw rectangle within an image (Vector version).""" - ... -def ImageDrawText(dst: Any|list|tuple,text: bytes,posX: int,posY: int,fontSize: int,color: Color|list|tuple,) -> None: - """Draw text (using default font) within an image (destination).""" - ... -def ImageDrawTextEx(dst: Any|list|tuple,font: Font|list|tuple,text: bytes,position: Vector2|list|tuple,fontSize: float,spacing: float,tint: Color|list|tuple,) -> None: - """Draw text (custom sprite font) within an image (destination).""" - ... -def ImageDrawTriangle(dst: Any|list|tuple,v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw triangle within an image.""" - ... -def ImageDrawTriangleEx(dst: Any|list|tuple,v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,c1: Color|list|tuple,c2: Color|list|tuple,c3: Color|list|tuple,) -> None: - """Draw triangle with interpolated colors within an image.""" - ... -def ImageDrawTriangleFan(dst: Any|list|tuple,points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle fan defined by points within an image (first vertex is the center).""" - ... -def ImageDrawTriangleLines(dst: Any|list|tuple,v1: Vector2|list|tuple,v2: Vector2|list|tuple,v3: Vector2|list|tuple,color: Color|list|tuple,) -> None: - """Draw triangle outline within an image.""" - ... -def ImageDrawTriangleStrip(dst: Any|list|tuple,points: Any|list|tuple,pointCount: int,color: Color|list|tuple,) -> None: - """Draw a triangle strip defined by points within an image.""" - ... -def ImageFlipHorizontal(image: Any|list|tuple,) -> None: - """Flip image horizontally.""" - ... -def ImageFlipVertical(image: Any|list|tuple,) -> None: - """Flip image vertically.""" - ... -def ImageFormat(image: Any|list|tuple,newFormat: int,) -> None: - """Convert image data to desired format.""" - ... -def ImageFromChannel(image: Image|list|tuple,selectedChannel: int,) -> Image: - """Create an image from a selected channel of another image (GRAYSCALE).""" - ... -def ImageFromImage(image: Image|list|tuple,rec: Rectangle|list|tuple,) -> Image: - """Create an image from another image piece.""" - ... -def ImageKernelConvolution(image: Any|list|tuple,kernel: Any,kernelSize: int,) -> None: - """Apply custom square convolution kernel to image.""" - ... -def ImageMipmaps(image: Any|list|tuple,) -> None: - """Compute all mipmap levels for a provided image.""" - ... -def ImageResize(image: Any|list|tuple,newWidth: int,newHeight: int,) -> None: - """Resize image (Bicubic scaling algorithm).""" - ... -def ImageResizeCanvas(image: Any|list|tuple,newWidth: int,newHeight: int,offsetX: int,offsetY: int,fill: Color|list|tuple,) -> None: - """Resize canvas and fill with color.""" - ... -def ImageResizeNN(image: Any|list|tuple,newWidth: int,newHeight: int,) -> None: - """Resize image (Nearest-Neighbor scaling algorithm).""" - ... -def ImageRotate(image: Any|list|tuple,degrees: int,) -> None: - """Rotate image by input angle in degrees (-359 to 359).""" - ... -def ImageRotateCCW(image: Any|list|tuple,) -> None: - """Rotate image counter-clockwise 90deg.""" - ... -def ImageRotateCW(image: Any|list|tuple,) -> None: - """Rotate image clockwise 90deg.""" - ... -def ImageText(text: bytes,fontSize: int,color: Color|list|tuple,) -> Image: - """Create an image from text (default font).""" - ... -def ImageTextEx(font: Font|list|tuple,text: bytes,fontSize: float,spacing: float,tint: Color|list|tuple,) -> Image: - """Create an image from text (custom sprite font).""" - ... -def ImageToPOT(image: Any|list|tuple,fill: Color|list|tuple,) -> None: - """Convert image to POT (power-of-two).""" - ... -def InitAudioDevice() -> None: - """Initialize audio device and context.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def InitPhysics() -> None: - """Initializes physics values, pointers and creates physics loop thread.""" - ... -def InitWindow(width: int,height: int,title: bytes,) -> None: - """Initialize window and OpenGL context.""" - ... -def IsAudioDeviceReady() -> bool: - """Check if audio device has been initialized successfully.""" - ... -def IsAudioStreamPlaying(stream: AudioStream|list|tuple,) -> bool: - """Check if audio stream is playing.""" - ... -def IsAudioStreamProcessed(stream: AudioStream|list|tuple,) -> bool: - """Check if any audio stream buffers requires refill.""" - ... -def IsAudioStreamValid(stream: AudioStream|list|tuple,) -> bool: - """Checks if an audio stream is valid (buffers initialized).""" - ... -def IsCursorHidden() -> bool: - """Check if cursor is not visible.""" - ... -def IsCursorOnScreen() -> bool: - """Check if cursor is on the screen.""" - ... -def IsFileDropped() -> bool: - """Check if a file has been dropped into window.""" - ... -def IsFileExtension(fileName: bytes,ext: bytes,) -> bool: - """Check file extension (including point: .png, .wav).""" - ... -def IsFileNameValid(fileName: bytes,) -> bool: - """Check if fileName is valid for the platform/OS.""" - ... -def IsFontValid(font: Font|list|tuple,) -> bool: - """Check if a font is valid (font data loaded, WARNING: GPU texture not checked).""" - ... -def IsGamepadAvailable(gamepad: int,) -> bool: - """Check if a gamepad is available.""" - ... -def IsGamepadButtonDown(gamepad: int,button: int,) -> bool: - """Check if a gamepad button is being pressed.""" - ... -def IsGamepadButtonPressed(gamepad: int,button: int,) -> bool: - """Check if a gamepad button has been pressed once.""" - ... -def IsGamepadButtonReleased(gamepad: int,button: int,) -> bool: - """Check if a gamepad button has been released once.""" - ... -def IsGamepadButtonUp(gamepad: int,button: int,) -> bool: - """Check if a gamepad button is NOT being pressed.""" - ... -def IsGestureDetected(gesture: int,) -> bool: - """Check if a gesture have been detected.""" - ... -def IsImageValid(image: Image|list|tuple,) -> bool: - """Check if an image is valid (data and parameters).""" - ... -def IsKeyDown(key: int,) -> bool: - """Check if a key is being pressed.""" - ... -def IsKeyPressed(key: int,) -> bool: - """Check if a key has been pressed once.""" - ... -def IsKeyPressedRepeat(key: int,) -> bool: - """Check if a key has been pressed again.""" - ... -def IsKeyReleased(key: int,) -> bool: - """Check if a key has been released once.""" - ... -def IsKeyUp(key: int,) -> bool: - """Check if a key is NOT being pressed.""" - ... -def IsMaterialValid(material: Material|list|tuple,) -> bool: - """Check if a material is valid (shader assigned, map textures loaded in GPU).""" - ... -def IsModelAnimationValid(model: Model|list|tuple,anim: ModelAnimation|list|tuple,) -> bool: - """Check model animation skeleton match.""" - ... -def IsModelValid(model: Model|list|tuple,) -> bool: - """Check if a model is valid (loaded in GPU, VAO/VBOs).""" - ... -def IsMouseButtonDown(button: int,) -> bool: - """Check if a mouse button is being pressed.""" - ... -def IsMouseButtonPressed(button: int,) -> bool: - """Check if a mouse button has been pressed once.""" - ... -def IsMouseButtonReleased(button: int,) -> bool: - """Check if a mouse button has been released once.""" - ... -def IsMouseButtonUp(button: int,) -> bool: - """Check if a mouse button is NOT being pressed.""" - ... -def IsMusicStreamPlaying(music: Music|list|tuple,) -> bool: - """Check if music is playing.""" - ... -def IsMusicValid(music: Music|list|tuple,) -> bool: - """Checks if a music stream is valid (context and buffers initialized).""" - ... -def IsPathFile(path: bytes,) -> bool: - """Check if a given path is a file or a directory.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def IsPhysicsEnabled() -> bool: - """Returns true if physics thread is currently enabled.""" - ... -def IsRenderTextureValid(target: RenderTexture|list|tuple,) -> bool: - """Check if a render texture is valid (loaded in GPU).""" - ... -def IsShaderValid(shader: Shader|list|tuple,) -> bool: - """Check if a shader is valid (loaded on GPU).""" - ... -def IsSoundPlaying(sound: Sound|list|tuple,) -> bool: - """Check if a sound is currently playing.""" - ... -def IsSoundValid(sound: Sound|list|tuple,) -> bool: - """Checks if a sound is valid (data loaded and buffers initialized).""" - ... -def IsTextureValid(texture: Texture|list|tuple,) -> bool: - """Check if a texture is valid (loaded in GPU).""" - ... -def IsWaveValid(wave: Wave|list|tuple,) -> bool: - """Checks if wave data is valid (data loaded and parameters).""" - ... -def IsWindowFocused() -> bool: - """Check if window is currently focused.""" - ... -def IsWindowFullscreen() -> bool: - """Check if window is currently fullscreen.""" - ... -def IsWindowHidden() -> bool: - """Check if window is currently hidden.""" - ... -def IsWindowMaximized() -> bool: - """Check if window is currently maximized.""" - ... -def IsWindowMinimized() -> bool: - """Check if window is currently minimized.""" - ... -def IsWindowReady() -> bool: - """Check if window has been initialized successfully.""" - ... -def IsWindowResized() -> bool: - """Check if window has been resized last frame.""" - ... -def IsWindowState(flag: int,) -> bool: - """Check if one specific window flag is enabled.""" - ... -KEY_A: int -KEY_APOSTROPHE: int -KEY_B: int -KEY_BACK: int -KEY_BACKSLASH: int -KEY_BACKSPACE: int -KEY_C: int -KEY_CAPS_LOCK: int -KEY_COMMA: int -KEY_D: int -KEY_DELETE: int -KEY_DOWN: int -KEY_E: int -KEY_EIGHT: int -KEY_END: int -KEY_ENTER: int -KEY_EQUAL: int -KEY_ESCAPE: int -KEY_F: int -KEY_F1: int -KEY_F10: int -KEY_F11: int -KEY_F12: int -KEY_F2: int -KEY_F3: int -KEY_F4: int -KEY_F5: int -KEY_F6: int -KEY_F7: int -KEY_F8: int -KEY_F9: int -KEY_FIVE: int -KEY_FOUR: int -KEY_G: int -KEY_GRAVE: int -KEY_H: int -KEY_HOME: int -KEY_I: int -KEY_INSERT: int -KEY_J: int -KEY_K: int -KEY_KB_MENU: int -KEY_KP_0: int -KEY_KP_1: int -KEY_KP_2: int -KEY_KP_3: int -KEY_KP_4: int -KEY_KP_5: int -KEY_KP_6: int -KEY_KP_7: int -KEY_KP_8: int -KEY_KP_9: int -KEY_KP_ADD: int -KEY_KP_DECIMAL: int -KEY_KP_DIVIDE: int -KEY_KP_ENTER: int -KEY_KP_EQUAL: int -KEY_KP_MULTIPLY: int -KEY_KP_SUBTRACT: int -KEY_L: int -KEY_LEFT: int -KEY_LEFT_ALT: int -KEY_LEFT_BRACKET: int -KEY_LEFT_CONTROL: int -KEY_LEFT_SHIFT: int -KEY_LEFT_SUPER: int -KEY_M: int -KEY_MENU: int -KEY_MINUS: int -KEY_N: int -KEY_NINE: int -KEY_NULL: int -KEY_NUM_LOCK: int -KEY_O: int -KEY_ONE: int -KEY_P: int -KEY_PAGE_DOWN: int -KEY_PAGE_UP: int -KEY_PAUSE: int -KEY_PERIOD: int -KEY_PRINT_SCREEN: int -KEY_Q: int -KEY_R: int -KEY_RIGHT: int -KEY_RIGHT_ALT: int -KEY_RIGHT_BRACKET: int -KEY_RIGHT_CONTROL: int -KEY_RIGHT_SHIFT: int -KEY_RIGHT_SUPER: int -KEY_S: int -KEY_SCROLL_LOCK: int -KEY_SEMICOLON: int -KEY_SEVEN: int -KEY_SIX: int -KEY_SLASH: int -KEY_SPACE: int -KEY_T: int -KEY_TAB: int -KEY_THREE: int -KEY_TWO: int -KEY_U: int -KEY_UP: int -KEY_V: int -KEY_VOLUME_DOWN: int -KEY_VOLUME_UP: int -KEY_W: int -KEY_X: int -KEY_Y: int -KEY_Z: int -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 -LOG_DEBUG: int -LOG_ERROR: int -LOG_FATAL: int -LOG_INFO: int -LOG_NONE: int -LOG_TRACE: int -LOG_WARNING: int -def Lerp(start: float,end: float,amount: float,) -> float: - """.""" - ... -def LoadAudioStream(sampleRate: int,sampleSize: int,channels: int,) -> AudioStream: - """Load audio stream (to stream raw audio pcm data).""" - ... -def LoadAutomationEventList(fileName: bytes,) -> AutomationEventList: - """Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS.""" - ... -def LoadCodepoints(text: bytes,count: Any,) -> Any: - """Load all codepoints from a UTF-8 text string, codepoints count returned by parameter.""" - ... -def LoadDirectoryFiles(dirPath: bytes,) -> FilePathList: - """Load directory filepaths.""" - ... -def LoadDirectoryFilesEx(basePath: bytes,filter: bytes,scanSubdirs: bool,) -> FilePathList: - """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.""" - ... -def LoadFileData(fileName: bytes,dataSize: Any,) -> bytes: - """Load file data as byte array (read).""" - ... -def LoadFileText(fileName: bytes,) -> bytes: - """Load text data from file (read), returns a '\0' terminated string.""" - ... -def LoadFont(fileName: bytes,) -> Font: - """Load font from file into GPU memory (VRAM).""" - ... -def LoadFontData(fileData: bytes,dataSize: int,fontSize: int,codepoints: Any,codepointCount: int,type: int,) -> Any: - """Load font data for further use.""" - ... -def LoadFontEx(fileName: bytes,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 set, font size is provided in pixels height.""" - ... -def LoadFontFromImage(image: Image|list|tuple,key: Color|list|tuple,firstChar: int,) -> Font: - """Load font from Image (XNA style).""" - ... -def LoadFontFromMemory(fileType: bytes,fileData: bytes,dataSize: int,fontSize: int,codepoints: Any,codepointCount: int,) -> Font: - """Load font from memory buffer, fileType refers to extension: i.e. '.ttf'.""" - ... -def LoadImage(fileName: bytes,) -> Image: - """Load image from file into CPU memory (RAM).""" - ... -def LoadImageAnim(fileName: bytes,frames: Any,) -> Image: - """Load image sequence from file (frames appended to image.data).""" - ... -def LoadImageAnimFromMemory(fileType: bytes,fileData: bytes,dataSize: int,frames: Any,) -> Image: - """Load image sequence from memory buffer.""" - ... -def LoadImageColors(image: Image|list|tuple,) -> Any: - """Load color data from image as a Color array (RGBA - 32bit).""" - ... -def LoadImageFromMemory(fileType: bytes,fileData: bytes,dataSize: int,) -> Image: - """Load image from memory buffer, fileType refers to extension: i.e. '.png'.""" - ... -def LoadImageFromScreen() -> Image: - """Load image from screen buffer and (screenshot).""" - ... -def LoadImageFromTexture(texture: Texture|list|tuple,) -> Image: - """Load image from GPU texture data.""" - ... -def LoadImagePalette(image: Image|list|tuple,maxPaletteSize: int,colorCount: Any,) -> Any: - """Load colors palette from image as a Color array (RGBA - 32bit).""" - ... -def LoadImageRaw(fileName: bytes,width: int,height: int,format: int,headerSize: int,) -> Image: - """Load image from RAW file data.""" - ... -def LoadMaterialDefault() -> Material: - """Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps).""" - ... -def LoadMaterials(fileName: bytes,materialCount: Any,) -> Any: - """Load materials from model file.""" - ... -def LoadModel(fileName: bytes,) -> Model: - """Load model from files (meshes and materials).""" - ... -def LoadModelAnimations(fileName: bytes,animCount: Any,) -> Any: - """Load model animations from file.""" - ... -def LoadModelFromMesh(mesh: Mesh|list|tuple,) -> Model: - """Load model from generated mesh (default material).""" - ... -def LoadMusicStream(fileName: bytes,) -> Music: - """Load music stream from file.""" - ... -def LoadMusicStreamFromMemory(fileType: bytes,data: bytes,dataSize: int,) -> Music: - """Load music stream from data.""" - ... -def LoadRandomSequence(count: int,min_1: int,max_2: int,) -> Any: - """Load random values sequence, no values repeated.""" - ... -def LoadRenderTexture(width: int,height: int,) -> RenderTexture: - """Load texture for rendering (framebuffer).""" - ... -def LoadShader(vsFileName: bytes,fsFileName: bytes,) -> Shader: - """Load shader from files and bind default locations.""" - ... -def LoadShaderFromMemory(vsCode: bytes,fsCode: bytes,) -> Shader: - """Load shader from code strings and bind default locations.""" - ... -def LoadSound(fileName: bytes,) -> Sound: - """Load sound from file.""" - ... -def LoadSoundAlias(source: Sound|list|tuple,) -> Sound: - """Create a new sound that shares the same sample data as the source sound, does not own the sound data.""" - ... -def LoadSoundFromWave(wave: Wave|list|tuple,) -> Sound: - """Load sound from wave data.""" - ... -def LoadTexture(fileName: bytes,) -> Texture: - """Load texture from file into GPU memory (VRAM).""" - ... -def LoadTextureCubemap(image: Image|list|tuple,layout: int,) -> Texture: - """Load cubemap from image, multiple image cubemap layouts supported.""" - ... -def LoadTextureFromImage(image: Image|list|tuple,) -> Texture: - """Load texture from image data.""" - ... -def LoadUTF8(codepoints: Any,length: int,) -> bytes: - """Load UTF-8 text encoded from codepoints array.""" - ... -def LoadVrStereoConfig(device: VrDeviceInfo|list|tuple,) -> VrStereoConfig: - """Load VR stereo config for VR simulator device parameters.""" - ... -def LoadWave(fileName: bytes,) -> Wave: - """Load wave data from file.""" - ... -def LoadWaveFromMemory(fileType: bytes,fileData: bytes,dataSize: int,) -> Wave: - """Load wave from memory buffer, fileType refers to extension: i.e. '.wav'.""" - ... -def LoadWaveSamples(wave: Wave|list|tuple,) -> Any: - """Load samples data from wave as a 32bit float data array.""" - ... -MATERIAL_MAP_ALBEDO: int -MATERIAL_MAP_BRDF: int -MATERIAL_MAP_CUBEMAP: int -MATERIAL_MAP_EMISSION: int -MATERIAL_MAP_HEIGHT: int -MATERIAL_MAP_IRRADIANCE: int -MATERIAL_MAP_METALNESS: int -MATERIAL_MAP_NORMAL: int -MATERIAL_MAP_OCCLUSION: int -MATERIAL_MAP_PREFILTER: int -MATERIAL_MAP_ROUGHNESS: int -MOUSE_BUTTON_BACK: int -MOUSE_BUTTON_EXTRA: int -MOUSE_BUTTON_FORWARD: int -MOUSE_BUTTON_LEFT: int -MOUSE_BUTTON_MIDDLE: int -MOUSE_BUTTON_RIGHT: int -MOUSE_BUTTON_SIDE: int -MOUSE_CURSOR_ARROW: int -MOUSE_CURSOR_CROSSHAIR: int -MOUSE_CURSOR_DEFAULT: int -MOUSE_CURSOR_IBEAM: int -MOUSE_CURSOR_NOT_ALLOWED: int -MOUSE_CURSOR_POINTING_HAND: int -MOUSE_CURSOR_RESIZE_ALL: int -MOUSE_CURSOR_RESIZE_EW: int -MOUSE_CURSOR_RESIZE_NESW: int -MOUSE_CURSOR_RESIZE_NS: int -MOUSE_CURSOR_RESIZE_NWSE: int -def MakeDirectory(dirPath: bytes,) -> int: - """Create directories (including full path requested), returns 0 on success.""" - ... -def MatrixAdd(left: Matrix|list|tuple,right: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MatrixDecompose(mat: Matrix|list|tuple,translation: Any|list|tuple,rotation: Any|list|tuple,scale: Any|list|tuple,) -> None: - """.""" - ... -def MatrixDeterminant(mat: Matrix|list|tuple,) -> float: - """.""" - ... -def MatrixFrustum(left: float,right: float,bottom: float,top: float,nearPlane: float,farPlane: float,) -> Matrix: - """.""" - ... -def MatrixIdentity() -> Matrix: - """.""" - ... -def MatrixInvert(mat: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MatrixLookAt(eye: Vector3|list|tuple,target: Vector3|list|tuple,up: Vector3|list|tuple,) -> Matrix: - """.""" - ... -def MatrixMultiply(left: Matrix|list|tuple,right: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MatrixOrtho(left: float,right: float,bottom: float,top: float,nearPlane: float,farPlane: float,) -> Matrix: - """.""" - ... -def MatrixPerspective(fovY: float,aspect: float,nearPlane: float,farPlane: float,) -> Matrix: - """.""" - ... -def MatrixRotate(axis: Vector3|list|tuple,angle: float,) -> Matrix: - """.""" - ... -def MatrixRotateX(angle: float,) -> Matrix: - """.""" - ... -def MatrixRotateXYZ(angle: Vector3|list|tuple,) -> Matrix: - """.""" - ... -def MatrixRotateY(angle: float,) -> Matrix: - """.""" - ... -def MatrixRotateZ(angle: float,) -> Matrix: - """.""" - ... -def MatrixRotateZYX(angle: Vector3|list|tuple,) -> Matrix: - """.""" - ... -def MatrixScale(x: float,y: float,z: float,) -> Matrix: - """.""" - ... -def MatrixSubtract(left: Matrix|list|tuple,right: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MatrixToFloatV(mat: Matrix|list|tuple,) -> float16: - """.""" - ... -def MatrixTrace(mat: Matrix|list|tuple,) -> float: - """.""" - ... -def MatrixTranslate(x: float,y: float,z: float,) -> Matrix: - """.""" - ... -def MatrixTranspose(mat: Matrix|list|tuple,) -> Matrix: - """.""" - ... -def MaximizeWindow() -> None: - """Set window state: maximized, if resizable.""" - ... -def MeasureText(text: bytes,fontSize: int,) -> int: - """Measure string width for default font.""" - ... -def MeasureTextEx(font: Font|list|tuple,text: bytes,fontSize: float,spacing: float,) -> Vector2: - """Measure string size for Font.""" - ... -def MemAlloc(size: int,) -> Any: - """Internal memory allocator.""" - ... -def MemFree(ptr: Any,) -> None: - """Internal memory free.""" - ... -def MemRealloc(ptr: Any,size: int,) -> Any: - """Internal memory reallocator.""" - ... -def MinimizeWindow() -> None: - """Set window state: minimized, if resizable.""" - ... -NPATCH_NINE_PATCH: int -NPATCH_THREE_PATCH_HORIZONTAL: int -NPATCH_THREE_PATCH_VERTICAL: int -def Normalize(value: float,start: float,end: float,) -> float: - """.""" - ... -def OpenURL(url: bytes,) -> None: - """Open URL with default system browser (if available).""" - ... -PHYSICS_CIRCLE: int -PHYSICS_POLYGON: int -PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: int -PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: int -PIXELFORMAT_COMPRESSED_DXT1_RGB: int -PIXELFORMAT_COMPRESSED_DXT1_RGBA: int -PIXELFORMAT_COMPRESSED_DXT3_RGBA: int -PIXELFORMAT_COMPRESSED_DXT5_RGBA: int -PIXELFORMAT_COMPRESSED_ETC1_RGB: int -PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: int -PIXELFORMAT_COMPRESSED_ETC2_RGB: int -PIXELFORMAT_COMPRESSED_PVRT_RGB: int -PIXELFORMAT_COMPRESSED_PVRT_RGBA: int -PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: int -PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: int -PIXELFORMAT_UNCOMPRESSED_R16: int -PIXELFORMAT_UNCOMPRESSED_R16G16B16: int -PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: int -PIXELFORMAT_UNCOMPRESSED_R32: int -PIXELFORMAT_UNCOMPRESSED_R32G32B32: int -PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: int -PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: int -PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: int -PIXELFORMAT_UNCOMPRESSED_R5G6B5: int -PIXELFORMAT_UNCOMPRESSED_R8G8B8: int -PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: int -PROGRESSBAR: int -PROGRESS_PADDING: int -def PauseAudioStream(stream: AudioStream|list|tuple,) -> None: - """Pause audio stream.""" - ... -def PauseMusicStream(music: Music|list|tuple,) -> None: - """Pause music playing.""" - ... -def PauseSound(sound: Sound|list|tuple,) -> None: - """Pause a sound.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def PhysicsAddForce(body: Any|list|tuple,force: Vector2|list|tuple,) -> None: - """Adds a force to a physics body.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def PhysicsAddTorque(body: Any|list|tuple,amount: float,) -> None: - """Adds an angular force to a physics body.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def PhysicsShatter(body: Any|list|tuple,position: Vector2|list|tuple,force: float,) -> None: - """Shatters a polygon shape physics body to little physics bodies with explosion force.""" - ... -def PlayAudioStream(stream: AudioStream|list|tuple,) -> None: - """Play audio stream.""" - ... -def PlayAutomationEvent(event: AutomationEvent|list|tuple,) -> None: - """Play a recorded automation event.""" - ... -def PlayMusicStream(music: Music|list|tuple,) -> None: - """Start music playing.""" - ... -def PlaySound(sound: Sound|list|tuple,) -> None: - """Play a sound.""" - ... -def PollInputEvents() -> None: - """Register all input events.""" - ... -def QuaternionAdd(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionAddValue(q: Vector4|list|tuple,add: float,) -> Vector4: - """.""" - ... -def QuaternionCubicHermiteSpline(q1: Vector4|list|tuple,outTangent1: Vector4|list|tuple,q2: Vector4|list|tuple,inTangent2: Vector4|list|tuple,t: float,) -> Vector4: - """.""" - ... -def QuaternionDivide(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionEquals(p: Vector4|list|tuple,q: Vector4|list|tuple,) -> int: - """.""" - ... -def QuaternionFromAxisAngle(axis: Vector3|list|tuple,angle: float,) -> Vector4: - """.""" - ... -def QuaternionFromEuler(pitch: float,yaw: float,roll: float,) -> Vector4: - """.""" - ... -def QuaternionFromMatrix(mat: Matrix|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionFromVector3ToVector3(from_0: Vector3|list|tuple,to: Vector3|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionIdentity() -> Vector4: - """.""" - ... -def QuaternionInvert(q: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionLength(q: Vector4|list|tuple,) -> float: - """.""" - ... -def QuaternionLerp(q1: Vector4|list|tuple,q2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def QuaternionMultiply(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionNlerp(q1: Vector4|list|tuple,q2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def QuaternionNormalize(q: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionScale(q: Vector4|list|tuple,mul: float,) -> Vector4: - """.""" - ... -def QuaternionSlerp(q1: Vector4|list|tuple,q2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def QuaternionSubtract(q1: Vector4|list|tuple,q2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def QuaternionSubtractValue(q: Vector4|list|tuple,sub: float,) -> Vector4: - """.""" - ... -def QuaternionToAxisAngle(q: Vector4|list|tuple,outAxis: Any|list|tuple,outAngle: Any,) -> None: - """.""" - ... -def QuaternionToEuler(q: Vector4|list|tuple,) -> Vector3: - """.""" - ... -def QuaternionToMatrix(q: Vector4|list|tuple,) -> Matrix: - """.""" - ... -def QuaternionTransform(q: Vector4|list|tuple,mat: Matrix|list|tuple,) -> Vector4: - """.""" - ... -RL_ATTACHMENT_COLOR_CHANNEL0: int -RL_ATTACHMENT_COLOR_CHANNEL1: int -RL_ATTACHMENT_COLOR_CHANNEL2: int -RL_ATTACHMENT_COLOR_CHANNEL3: int -RL_ATTACHMENT_COLOR_CHANNEL4: int -RL_ATTACHMENT_COLOR_CHANNEL5: int -RL_ATTACHMENT_COLOR_CHANNEL6: int -RL_ATTACHMENT_COLOR_CHANNEL7: int -RL_ATTACHMENT_CUBEMAP_NEGATIVE_X: int -RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y: int -RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z: int -RL_ATTACHMENT_CUBEMAP_POSITIVE_X: int -RL_ATTACHMENT_CUBEMAP_POSITIVE_Y: int -RL_ATTACHMENT_CUBEMAP_POSITIVE_Z: int -RL_ATTACHMENT_DEPTH: int -RL_ATTACHMENT_RENDERBUFFER: int -RL_ATTACHMENT_STENCIL: int -RL_ATTACHMENT_TEXTURE2D: int -RL_BLEND_ADDITIVE: int -RL_BLEND_ADD_COLORS: int -RL_BLEND_ALPHA: int -RL_BLEND_ALPHA_PREMULTIPLY: int -RL_BLEND_CUSTOM: int -RL_BLEND_CUSTOM_SEPARATE: int -RL_BLEND_MULTIPLIED: int -RL_BLEND_SUBTRACT_COLORS: int -RL_CULL_FACE_BACK: int -RL_CULL_FACE_FRONT: int -RL_LOG_ALL: int -RL_LOG_DEBUG: int -RL_LOG_ERROR: int -RL_LOG_FATAL: int -RL_LOG_INFO: int -RL_LOG_NONE: int -RL_LOG_TRACE: int -RL_LOG_WARNING: int -RL_OPENGL_11: int -RL_OPENGL_21: int -RL_OPENGL_33: int -RL_OPENGL_43: int -RL_OPENGL_ES_20: int -RL_OPENGL_ES_30: int -RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: int -RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: int -RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: int -RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: int -RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: int -RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: int -RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: int -RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: int -RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: int -RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: int -RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: int -RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: int -RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: int -RL_PIXELFORMAT_UNCOMPRESSED_R16: int -RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: int -RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: int -RL_PIXELFORMAT_UNCOMPRESSED_R32: int -RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: int -RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: int -RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: int -RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: int -RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: int -RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: int -RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: int -RL_SHADER_ATTRIB_FLOAT: int -RL_SHADER_ATTRIB_VEC2: int -RL_SHADER_ATTRIB_VEC3: int -RL_SHADER_ATTRIB_VEC4: int -RL_SHADER_LOC_COLOR_AMBIENT: int -RL_SHADER_LOC_COLOR_DIFFUSE: int -RL_SHADER_LOC_COLOR_SPECULAR: int -RL_SHADER_LOC_MAP_ALBEDO: int -RL_SHADER_LOC_MAP_BRDF: int -RL_SHADER_LOC_MAP_CUBEMAP: int -RL_SHADER_LOC_MAP_EMISSION: int -RL_SHADER_LOC_MAP_HEIGHT: int -RL_SHADER_LOC_MAP_IRRADIANCE: int -RL_SHADER_LOC_MAP_METALNESS: int -RL_SHADER_LOC_MAP_NORMAL: int -RL_SHADER_LOC_MAP_OCCLUSION: int -RL_SHADER_LOC_MAP_PREFILTER: int -RL_SHADER_LOC_MAP_ROUGHNESS: int -RL_SHADER_LOC_MATRIX_MODEL: int -RL_SHADER_LOC_MATRIX_MVP: int -RL_SHADER_LOC_MATRIX_NORMAL: int -RL_SHADER_LOC_MATRIX_PROJECTION: int -RL_SHADER_LOC_MATRIX_VIEW: int -RL_SHADER_LOC_VECTOR_VIEW: int -RL_SHADER_LOC_VERTEX_COLOR: int -RL_SHADER_LOC_VERTEX_NORMAL: int -RL_SHADER_LOC_VERTEX_POSITION: int -RL_SHADER_LOC_VERTEX_TANGENT: int -RL_SHADER_LOC_VERTEX_TEXCOORD01: int -RL_SHADER_LOC_VERTEX_TEXCOORD02: int -RL_SHADER_UNIFORM_FLOAT: int -RL_SHADER_UNIFORM_INT: int -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 -RL_TEXTURE_FILTER_ANISOTROPIC_16X: int -RL_TEXTURE_FILTER_ANISOTROPIC_4X: int -RL_TEXTURE_FILTER_ANISOTROPIC_8X: int -RL_TEXTURE_FILTER_BILINEAR: int -RL_TEXTURE_FILTER_POINT: int -RL_TEXTURE_FILTER_TRILINEAR: int -def Remap(value: float,inputStart: float,inputEnd: float,outputStart: float,outputEnd: float,) -> float: - """.""" - ... -def RestoreWindow() -> None: - """Set window state: not minimized/maximized.""" - ... -def ResumeAudioStream(stream: AudioStream|list|tuple,) -> None: - """Resume audio stream.""" - ... -def ResumeMusicStream(music: Music|list|tuple,) -> None: - """Resume playing paused music.""" - ... -def ResumeSound(sound: Sound|list|tuple,) -> None: - """Resume a paused sound.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def RunPhysicsStep() -> None: - """Run physics step, to be used if PHYSICS_NO_THREADS is set in your main loop.""" - ... -SCROLLBAR: int -SCROLLBAR_SIDE: int -SCROLLBAR_WIDTH: int -SCROLL_PADDING: int -SCROLL_SLIDER_PADDING: int -SCROLL_SLIDER_SIZE: int -SCROLL_SPEED: int -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 -SHADER_LOC_MAP_ALBEDO: int -SHADER_LOC_MAP_BRDF: int -SHADER_LOC_MAP_CUBEMAP: int -SHADER_LOC_MAP_EMISSION: int -SHADER_LOC_MAP_HEIGHT: int -SHADER_LOC_MAP_IRRADIANCE: int -SHADER_LOC_MAP_METALNESS: int -SHADER_LOC_MAP_NORMAL: int -SHADER_LOC_MAP_OCCLUSION: int -SHADER_LOC_MAP_PREFILTER: int -SHADER_LOC_MAP_ROUGHNESS: int -SHADER_LOC_MATRIX_MODEL: int -SHADER_LOC_MATRIX_MVP: int -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 -SHADER_LOC_VERTEX_TANGENT: int -SHADER_LOC_VERTEX_TEXCOORD01: int -SHADER_LOC_VERTEX_TEXCOORD02: int -SHADER_UNIFORM_FLOAT: int -SHADER_UNIFORM_INT: int -SHADER_UNIFORM_IVEC2: int -SHADER_UNIFORM_IVEC3: int -SHADER_UNIFORM_IVEC4: int -SHADER_UNIFORM_SAMPLER2D: int -SHADER_UNIFORM_VEC2: int -SHADER_UNIFORM_VEC3: int -SHADER_UNIFORM_VEC4: int -SLIDER: int -SLIDER_PADDING: int -SLIDER_WIDTH: int -SPINNER: int -SPIN_BUTTON_SPACING: int -SPIN_BUTTON_WIDTH: int -STATE_DISABLED: int -STATE_FOCUSED: int -STATE_NORMAL: int -STATE_PRESSED: int -STATUSBAR: int -def SaveFileData(fileName: bytes,data: Any,dataSize: int,) -> bool: - """Save data to file from byte array (write), returns true on success.""" - ... -def SaveFileText(fileName: bytes,text: bytes,) -> bool: - """Save text data to file (write), string must be '\0' terminated, returns true on success.""" - ... -def SeekMusicStream(music: Music|list|tuple,position: float,) -> None: - """Seek music to a position (in seconds).""" - ... -def SetAudioStreamBufferSizeDefault(size: int,) -> None: - """Default size for new audio streams.""" - ... -def SetAudioStreamCallback(stream: AudioStream|list|tuple,callback: Any,) -> None: - """Audio thread callback to request new data.""" - ... -def SetAudioStreamPan(stream: AudioStream|list|tuple,pan: float,) -> None: - """Set pan for audio stream (0.5 is centered).""" - ... -def SetAudioStreamPitch(stream: AudioStream|list|tuple,pitch: float,) -> None: - """Set pitch for audio stream (1.0 is base level).""" - ... -def SetAudioStreamVolume(stream: AudioStream|list|tuple,volume: float,) -> None: - """Set volume for audio stream (1.0 is max level).""" - ... -def SetAutomationEventBaseFrame(frame: int,) -> None: - """Set automation event internal base frame to start recording.""" - ... -def SetAutomationEventList(list_0: Any|list|tuple,) -> None: - """Set automation event list to record to.""" - ... -def SetClipboardText(text: bytes,) -> None: - """Set clipboard text content.""" - ... -def SetConfigFlags(flags: int,) -> None: - """Setup init configuration flags (view FLAGS).""" - ... -def SetExitKey(key: int,) -> None: - """Set a custom key to exit program (default is ESC).""" - ... -def SetGamepadMappings(mappings: bytes,) -> int: - """Set internal gamepad mappings (SDL_GameControllerDB).""" - ... -def SetGamepadVibration(gamepad: int,leftMotor: float,rightMotor: float,duration: float,) -> None: - """Set gamepad vibration for both motors (duration in seconds).""" - ... -def SetGesturesEnabled(flags: int,) -> None: - """Enable a set of gestures using flags.""" - ... -def SetLoadFileDataCallback(callback: bytes,) -> None: - """Set custom file binary data loader.""" - ... -def SetLoadFileTextCallback(callback: bytes,) -> None: - """Set custom file text data loader.""" - ... -def SetMasterVolume(volume: float,) -> None: - """Set master volume (listener).""" - ... -def SetMaterialTexture(material: Any|list|tuple,mapType: int,texture: Texture|list|tuple,) -> None: - """Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...).""" - ... -def SetModelMeshMaterial(model: Any|list|tuple,meshId: int,materialId: int,) -> None: - """Set material for a mesh.""" - ... -def SetMouseCursor(cursor: int,) -> None: - """Set mouse cursor.""" - ... -def SetMouseOffset(offsetX: int,offsetY: int,) -> None: - """Set mouse offset.""" - ... -def SetMousePosition(x: int,y: int,) -> None: - """Set mouse position XY.""" - ... -def SetMouseScale(scaleX: float,scaleY: float,) -> None: - """Set mouse scaling.""" - ... -def SetMusicPan(music: Music|list|tuple,pan: float,) -> None: - """Set pan for a music (0.5 is center).""" - ... -def SetMusicPitch(music: Music|list|tuple,pitch: float,) -> None: - """Set pitch for a music (1.0 is base level).""" - ... -def SetMusicVolume(music: Music|list|tuple,volume: float,) -> None: - """Set volume for music (1.0 is max level).""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def SetPhysicsBodyRotation(body: Any|list|tuple,radians: float,) -> None: - """Sets physics body shape transform based on radians parameter.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def SetPhysicsGravity(x: float,y: float,) -> None: - """Sets physics global gravity force.""" - ... -@deprecated("Raylib no longer recommends the use of Physac library") -def SetPhysicsTimeStep(delta: float,) -> None: - """Sets physics fixed time step in milliseconds. 1.666666 by default.""" - ... -def SetPixelColor(dstPtr: Any,color: Color|list|tuple,format: int,) -> None: - """Set color formatted into destination pixel pointer.""" - ... -def SetRandomSeed(seed: int,) -> None: - """Set the seed for the random number generator.""" - ... -def SetSaveFileDataCallback(callback: bytes,) -> None: - """Set custom file binary data saver.""" - ... -def SetSaveFileTextCallback(callback: bytes,) -> None: - """Set custom file text data saver.""" - ... -def SetShaderValue(shader: Shader|list|tuple,locIndex: int,value: Any,uniformType: int,) -> None: - """Set shader uniform value.""" - ... -def SetShaderValueMatrix(shader: Shader|list|tuple,locIndex: int,mat: Matrix|list|tuple,) -> None: - """Set shader uniform value (matrix 4x4).""" - ... -def SetShaderValueTexture(shader: Shader|list|tuple,locIndex: int,texture: Texture|list|tuple,) -> None: - """Set shader uniform value for texture (sampler2d).""" - ... -def SetShaderValueV(shader: Shader|list|tuple,locIndex: int,value: Any,uniformType: int,count: int,) -> None: - """Set shader uniform value vector.""" - ... -def SetShapesTexture(texture: Texture|list|tuple,source: Rectangle|list|tuple,) -> None: - """Set texture and rectangle to be used on shapes drawing.""" - ... -def SetSoundPan(sound: Sound|list|tuple,pan: float,) -> None: - """Set pan for a sound (0.5 is center).""" - ... -def SetSoundPitch(sound: Sound|list|tuple,pitch: float,) -> None: - """Set pitch for a sound (1.0 is base level).""" - ... -def SetSoundVolume(sound: Sound|list|tuple,volume: float,) -> None: - """Set volume for a sound (1.0 is max level).""" - ... -def SetTargetFPS(fps: int,) -> None: - """Set target FPS (maximum).""" - ... -def SetTextLineSpacing(spacing: int,) -> None: - """Set vertical line spacing when drawing with line-breaks.""" - ... -def SetTextureFilter(texture: Texture|list|tuple,filter: int,) -> None: - """Set texture scaling filter mode.""" - ... -def SetTextureWrap(texture: Texture|list|tuple,wrap: int,) -> None: - """Set texture wrapping mode.""" - ... -def SetTraceLogCallback(callback: bytes,) -> None: - """Set custom trace log.""" - ... -def SetTraceLogLevel(logLevel: int,) -> None: - """Set the current threshold (minimum) log level.""" - ... -def SetWindowFocused() -> None: - """Set window focused.""" - ... -def SetWindowIcon(image: Image|list|tuple,) -> None: - """Set icon for window (single image, RGBA 32bit).""" - ... -def SetWindowIcons(images: Any|list|tuple,count: int,) -> None: - """Set icon for window (multiple images, RGBA 32bit).""" - ... -def SetWindowMaxSize(width: int,height: int,) -> None: - """Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE).""" - ... -def SetWindowMinSize(width: int,height: int,) -> None: - """Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE).""" - ... -def SetWindowMonitor(monitor: int,) -> None: - """Set monitor for the current window.""" - ... -def SetWindowOpacity(opacity: float,) -> None: - """Set window opacity [0.0f..1.0f].""" - ... -def SetWindowPosition(x: int,y: int,) -> None: - """Set window position on screen.""" - ... -def SetWindowSize(width: int,height: int,) -> None: - """Set window dimensions.""" - ... -def SetWindowState(flags: int,) -> None: - """Set window configuration state using flags.""" - ... -def SetWindowTitle(title: bytes,) -> None: - """Set title for window.""" - ... -def ShowCursor() -> None: - """Shows cursor.""" - ... -def StartAutomationEventRecording() -> None: - """Start recording automation events (AutomationEventList must be set).""" - ... -def StopAudioStream(stream: AudioStream|list|tuple,) -> None: - """Stop audio stream.""" - ... -def StopAutomationEventRecording() -> None: - """Stop recording automation events.""" - ... -def StopMusicStream(music: Music|list|tuple,) -> None: - """Stop music playing.""" - ... -def StopSound(sound: Sound|list|tuple,) -> None: - """Stop playing a sound.""" - ... -def SwapScreenBuffer() -> None: - """Swap back buffer with front buffer (screen drawing).""" - ... -TEXTBOX: int -TEXTURE_FILTER_ANISOTROPIC_16X: int -TEXTURE_FILTER_ANISOTROPIC_4X: int -TEXTURE_FILTER_ANISOTROPIC_8X: int -TEXTURE_FILTER_BILINEAR: int -TEXTURE_FILTER_POINT: int -TEXTURE_FILTER_TRILINEAR: int -TEXTURE_WRAP_CLAMP: int -TEXTURE_WRAP_MIRROR_CLAMP: int -TEXTURE_WRAP_MIRROR_REPEAT: int -TEXTURE_WRAP_REPEAT: int -TEXT_ALIGNMENT: int -TEXT_ALIGNMENT_VERTICAL: int -TEXT_ALIGN_BOTTOM: int -TEXT_ALIGN_CENTER: int -TEXT_ALIGN_LEFT: int -TEXT_ALIGN_MIDDLE: int -TEXT_ALIGN_RIGHT: int -TEXT_ALIGN_TOP: int -TEXT_COLOR_DISABLED: int -TEXT_COLOR_FOCUSED: int -TEXT_COLOR_NORMAL: int -TEXT_COLOR_PRESSED: int -TEXT_LINE_SPACING: int -TEXT_PADDING: int -TEXT_READONLY: int -TEXT_SIZE: int -TEXT_SPACING: int -TEXT_WRAP_CHAR: int -TEXT_WRAP_MODE: int -TEXT_WRAP_NONE: int -TEXT_WRAP_WORD: int -TOGGLE: int -def TakeScreenshot(fileName: bytes,) -> None: - """Takes a screenshot of current screen (filename extension defines format).""" - ... -def TextAppend(text: bytes,append: bytes,position: Any,) -> None: - """Append text at specific position and move cursor!.""" - ... -def TextCopy(dst: bytes,src: bytes,) -> int: - """Copy one string to another, returns bytes copied.""" - ... -def TextFindIndex(text: bytes,find: bytes,) -> int: - """Find first text occurrence within a string.""" - ... -def TextFormat(*args) -> bytes: - """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI""" - ... -def TextInsert(text: bytes,insert: bytes,position: int,) -> bytes: - """Insert text in a position (WARNING: memory must be freed!).""" - ... -def TextIsEqual(text1: bytes,text2: bytes,) -> bool: - """Check if two text string are equal.""" - ... -def TextJoin(textList: list[bytes],count: int,delimiter: bytes,) -> bytes: - """Join text strings with delimiter.""" - ... -def TextLength(text: bytes,) -> int: - """Get text length, checks for '\0' ending.""" - ... -def TextReplace(text: bytes,replace: bytes,by: bytes,) -> bytes: - """Replace text string (WARNING: memory must be freed!).""" - ... -def TextSplit(text: bytes,delimiter: bytes,count: Any,) -> list[bytes]: - """Split text into multiple strings.""" - ... -def TextSubtext(text: bytes,position: int,length: int,) -> bytes: - """Get a piece of a text string.""" - ... -def TextToCamel(text: bytes,) -> bytes: - """Get Camel case notation version of provided string.""" - ... -def TextToFloat(text: bytes,) -> float: - """Get float value from text (negative values not supported).""" - ... -def TextToInteger(text: bytes,) -> int: - """Get integer value from text (negative values not supported).""" - ... -def TextToLower(text: bytes,) -> bytes: - """Get lower case version of provided string.""" - ... -def TextToPascal(text: bytes,) -> bytes: - """Get Pascal case notation version of provided string.""" - ... -def TextToSnake(text: bytes,) -> bytes: - """Get Snake case notation version of provided string.""" - ... -def TextToUpper(text: bytes,) -> bytes: - """Get upper case version of provided string.""" - ... -def ToggleBorderlessWindowed() -> None: - """Toggle window state: borderless windowed, resizes window to match monitor resolution.""" - ... -def ToggleFullscreen() -> None: - """Toggle window state: fullscreen/windowed, resizes monitor to match window resolution.""" - ... -def TraceLog(*args) -> None: - """VARARG FUNCTION - MAY NOT BE SUPPORTED BY CFFI""" - ... -def UnloadAudioStream(stream: AudioStream|list|tuple,) -> None: - """Unload audio stream and free memory.""" - ... -def UnloadAutomationEventList(list_0: AutomationEventList|list|tuple,) -> None: - """Unload automation events list from file.""" - ... -def UnloadCodepoints(codepoints: Any,) -> None: - """Unload codepoints data from memory.""" - ... -def UnloadDirectoryFiles(files: FilePathList|list|tuple,) -> None: - """Unload filepaths.""" - ... -def UnloadDroppedFiles(files: FilePathList|list|tuple,) -> None: - """Unload dropped filepaths.""" - ... -def UnloadFileData(data: bytes,) -> None: - """Unload file data allocated by LoadFileData().""" - ... -def UnloadFileText(text: bytes,) -> None: - """Unload file text data allocated by LoadFileText().""" - ... -def UnloadFont(font: Font|list|tuple,) -> None: - """Unload font from GPU memory (VRAM).""" - ... -def UnloadFontData(glyphs: Any|list|tuple,glyphCount: int,) -> None: - """Unload font chars info data (RAM).""" - ... -def UnloadImage(image: Image|list|tuple,) -> None: - """Unload image from CPU memory (RAM).""" - ... -def UnloadImageColors(colors: Any|list|tuple,) -> None: - """Unload color data loaded with LoadImageColors().""" - ... -def UnloadImagePalette(colors: Any|list|tuple,) -> None: - """Unload colors palette loaded with LoadImagePalette().""" - ... -def UnloadMaterial(material: Material|list|tuple,) -> None: - """Unload material from GPU memory (VRAM).""" - ... -def UnloadMesh(mesh: Mesh|list|tuple,) -> None: - """Unload mesh data from CPU and GPU.""" - ... -def UnloadModel(model: Model|list|tuple,) -> None: - """Unload model (including meshes) from memory (RAM and/or VRAM).""" - ... -def UnloadModelAnimation(anim: ModelAnimation|list|tuple,) -> None: - """Unload animation data.""" - ... -def UnloadModelAnimations(animations: Any|list|tuple,animCount: int,) -> None: - """Unload animation array data.""" - ... -def UnloadMusicStream(music: Music|list|tuple,) -> None: - """Unload music stream.""" - ... -def UnloadRandomSequence(sequence: Any,) -> None: - """Unload random values sequence.""" - ... -def UnloadRenderTexture(target: RenderTexture|list|tuple,) -> None: - """Unload render texture from GPU memory (VRAM).""" - ... -def UnloadShader(shader: Shader|list|tuple,) -> None: - """Unload shader from GPU memory (VRAM).""" - ... -def UnloadSound(sound: Sound|list|tuple,) -> None: - """Unload sound.""" - ... -def UnloadSoundAlias(alias: Sound|list|tuple,) -> None: - """Unload a sound alias (does not deallocate sample data).""" - ... -def UnloadTexture(texture: Texture|list|tuple,) -> None: - """Unload texture from GPU memory (VRAM).""" - ... -def UnloadUTF8(text: bytes,) -> None: - """Unload UTF-8 text encoded from codepoints array.""" - ... -def UnloadVrStereoConfig(config: VrStereoConfig|list|tuple,) -> None: - """Unload VR stereo config.""" - ... -def UnloadWave(wave: Wave|list|tuple,) -> None: - """Unload wave data.""" - ... -def UnloadWaveSamples(samples: Any,) -> None: - """Unload samples data loaded with LoadWaveSamples().""" - ... -def UpdateAudioStream(stream: AudioStream|list|tuple,data: Any,frameCount: int,) -> None: - """Update audio stream buffers with data.""" - ... -def UpdateCamera(camera: Any|list|tuple,mode: int,) -> None: - """Update camera position for selected mode.""" - ... -def UpdateCameraPro(camera: Any|list|tuple,movement: Vector3|list|tuple,rotation: Vector3|list|tuple,zoom: float,) -> None: - """Update camera movement/rotation.""" - ... -def UpdateMeshBuffer(mesh: Mesh|list|tuple,index: int,data: Any,dataSize: int,offset: int,) -> None: - """Update mesh vertex data in GPU for a specific buffer index.""" - ... -def UpdateModelAnimation(model: Model|list|tuple,anim: ModelAnimation|list|tuple,frame: int,) -> None: - """Update model animation pose (CPU).""" - ... -def UpdateModelAnimationBones(model: Model|list|tuple,anim: ModelAnimation|list|tuple,frame: int,) -> None: - """Update model animation mesh bone matrices (GPU skinning).""" - ... -def UpdateMusicStream(music: Music|list|tuple,) -> None: - """Updates buffers for music streaming.""" - ... -def UpdateSound(sound: Sound|list|tuple,data: Any,sampleCount: int,) -> None: - """Update sound buffer with new data.""" - ... -def UpdateTexture(texture: Texture|list|tuple,pixels: Any,) -> None: - """Update GPU texture with new data.""" - ... -def UpdateTextureRec(texture: Texture|list|tuple,rec: Rectangle|list|tuple,pixels: Any,) -> None: - """Update GPU texture rectangle with new data.""" - ... -def UploadMesh(mesh: Any|list|tuple,dynamic: bool,) -> None: - """Upload mesh vertex data in GPU and provide VAO/VBO ids.""" - ... -VALUEBOX: int -def Vector2Add(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2AddValue(v: Vector2|list|tuple,add: float,) -> Vector2: - """.""" - ... -def Vector2Angle(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Clamp(v: Vector2|list|tuple,min_1: Vector2|list|tuple,max_2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2ClampValue(v: Vector2|list|tuple,min_1: float,max_2: float,) -> Vector2: - """.""" - ... -def Vector2Distance(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2DistanceSqr(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Divide(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2DotProduct(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Equals(p: Vector2|list|tuple,q: Vector2|list|tuple,) -> int: - """.""" - ... -def Vector2Invert(v: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Length(v: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2LengthSqr(v: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Lerp(v1: Vector2|list|tuple,v2: Vector2|list|tuple,amount: float,) -> Vector2: - """.""" - ... -def Vector2LineAngle(start: Vector2|list|tuple,end: Vector2|list|tuple,) -> float: - """.""" - ... -def Vector2Max(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Min(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2MoveTowards(v: Vector2|list|tuple,target: Vector2|list|tuple,maxDistance: float,) -> Vector2: - """.""" - ... -def Vector2Multiply(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Negate(v: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Normalize(v: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2One() -> Vector2: - """.""" - ... -def Vector2Reflect(v: Vector2|list|tuple,normal: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Refract(v: Vector2|list|tuple,n: Vector2|list|tuple,r: float,) -> Vector2: - """.""" - ... -def Vector2Rotate(v: Vector2|list|tuple,angle: float,) -> Vector2: - """.""" - ... -def Vector2Scale(v: Vector2|list|tuple,scale: float,) -> Vector2: - """.""" - ... -def Vector2Subtract(v1: Vector2|list|tuple,v2: Vector2|list|tuple,) -> Vector2: - """.""" - ... -def Vector2SubtractValue(v: Vector2|list|tuple,sub: float,) -> Vector2: - """.""" - ... -def Vector2Transform(v: Vector2|list|tuple,mat: Matrix|list|tuple,) -> Vector2: - """.""" - ... -def Vector2Zero() -> Vector2: - """.""" - ... -def Vector3Add(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3AddValue(v: Vector3|list|tuple,add: float,) -> Vector3: - """.""" - ... -def Vector3Angle(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3Barycenter(p: Vector3|list|tuple,a: Vector3|list|tuple,b: Vector3|list|tuple,c: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Clamp(v: Vector3|list|tuple,min_1: Vector3|list|tuple,max_2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3ClampValue(v: Vector3|list|tuple,min_1: float,max_2: float,) -> Vector3: - """.""" - ... -def Vector3CrossProduct(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3CubicHermite(v1: Vector3|list|tuple,tangent1: Vector3|list|tuple,v2: Vector3|list|tuple,tangent2: Vector3|list|tuple,amount: float,) -> Vector3: - """.""" - ... -def Vector3Distance(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3DistanceSqr(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3Divide(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3DotProduct(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3Equals(p: Vector3|list|tuple,q: Vector3|list|tuple,) -> int: - """.""" - ... -def Vector3Invert(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Length(v: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3LengthSqr(v: Vector3|list|tuple,) -> float: - """.""" - ... -def Vector3Lerp(v1: Vector3|list|tuple,v2: Vector3|list|tuple,amount: float,) -> Vector3: - """.""" - ... -def Vector3Max(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Min(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3MoveTowards(v: Vector3|list|tuple,target: Vector3|list|tuple,maxDistance: float,) -> Vector3: - """.""" - ... -def Vector3Multiply(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Negate(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Normalize(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3One() -> Vector3: - """.""" - ... -def Vector3OrthoNormalize(v1: Any|list|tuple,v2: Any|list|tuple,) -> None: - """.""" - ... -def Vector3Perpendicular(v: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Project(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Reflect(v: Vector3|list|tuple,normal: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Refract(v: Vector3|list|tuple,n: Vector3|list|tuple,r: float,) -> Vector3: - """.""" - ... -def Vector3Reject(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3RotateByAxisAngle(v: Vector3|list|tuple,axis: Vector3|list|tuple,angle: float,) -> Vector3: - """.""" - ... -def Vector3RotateByQuaternion(v: Vector3|list|tuple,q: Vector4|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Scale(v: Vector3|list|tuple,scalar: float,) -> Vector3: - """.""" - ... -def Vector3Subtract(v1: Vector3|list|tuple,v2: Vector3|list|tuple,) -> Vector3: - """.""" - ... -def Vector3SubtractValue(v: Vector3|list|tuple,sub: float,) -> Vector3: - """.""" - ... -def Vector3ToFloatV(v: Vector3|list|tuple,) -> float3: - """.""" - ... -def Vector3Transform(v: Vector3|list|tuple,mat: Matrix|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Unproject(source: Vector3|list|tuple,projection: Matrix|list|tuple,view: Matrix|list|tuple,) -> Vector3: - """.""" - ... -def Vector3Zero() -> Vector3: - """.""" - ... -def Vector4Add(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4AddValue(v: Vector4|list|tuple,add: float,) -> Vector4: - """.""" - ... -def Vector4Distance(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4DistanceSqr(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4Divide(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4DotProduct(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4Equals(p: Vector4|list|tuple,q: Vector4|list|tuple,) -> int: - """.""" - ... -def Vector4Invert(v: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4Length(v: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4LengthSqr(v: Vector4|list|tuple,) -> float: - """.""" - ... -def Vector4Lerp(v1: Vector4|list|tuple,v2: Vector4|list|tuple,amount: float,) -> Vector4: - """.""" - ... -def Vector4Max(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4Min(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4MoveTowards(v: Vector4|list|tuple,target: Vector4|list|tuple,maxDistance: float,) -> Vector4: - """.""" - ... -def Vector4Multiply(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4Negate(v: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4Normalize(v: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4One() -> Vector4: - """.""" - ... -def Vector4Scale(v: Vector4|list|tuple,scale: float,) -> Vector4: - """.""" - ... -def Vector4Subtract(v1: Vector4|list|tuple,v2: Vector4|list|tuple,) -> Vector4: - """.""" - ... -def Vector4SubtractValue(v: Vector4|list|tuple,add: float,) -> Vector4: - """.""" - ... -def Vector4Zero() -> Vector4: - """.""" - ... -def WaitTime(seconds: float,) -> None: - """Wait for some time (halt program execution).""" - ... -def WaveCopy(wave: Wave|list|tuple,) -> Wave: - """Copy a wave to a new wave.""" - ... -def WaveCrop(wave: Any|list|tuple,initFrame: int,finalFrame: int,) -> None: - """Crop a wave to defined frames range.""" - ... -def WaveFormat(wave: Any|list|tuple,sampleRate: int,sampleSize: int,channels: int,) -> None: - """Convert wave data to desired format.""" - ... -def WindowShouldClose() -> bool: - """Check if application should close (KEY_ESCAPE pressed or windows close icon clicked).""" - ... -def Wrap(value: float,min_1: float,max_2: float,) -> float: - """.""" - ... -def glfwCreateCursor(image: Any|list|tuple,xhot: int,yhot: int,) -> Any: - """.""" - ... -def glfwCreateStandardCursor(shape: int,) -> Any: - """.""" - ... -def glfwCreateWindow(width: int,height: int,title: bytes,monitor: Any|list|tuple,share: Any|list|tuple,) -> Any: - """.""" - ... -def glfwDefaultWindowHints() -> None: - """.""" - ... -def glfwDestroyCursor(cursor: Any|list|tuple,) -> None: - """.""" - ... -def glfwDestroyWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwExtensionSupported(extension: bytes,) -> int: - """.""" - ... -def glfwFocusWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwGetClipboardString(window: Any|list|tuple,) -> bytes: - """.""" - ... -def glfwGetCurrentContext() -> Any: - """.""" - ... -def glfwGetCursorPos(window: Any|list|tuple,xpos: Any,ypos: Any,) -> None: - """.""" - ... -def glfwGetError(description: list[bytes],) -> int: - """.""" - ... -def glfwGetFramebufferSize(window: Any|list|tuple,width: Any,height: Any,) -> None: - """.""" - ... -def glfwGetGamepadName(jid: int,) -> bytes: - """.""" - ... -def glfwGetGamepadState(jid: int,state: Any|list|tuple,) -> int: - """.""" - ... -def glfwGetGammaRamp(monitor: Any|list|tuple,) -> Any: - """.""" - ... -def glfwGetInputMode(window: Any|list|tuple,mode: int,) -> int: - """.""" - ... -def glfwGetJoystickAxes(jid: int,count: Any,) -> Any: - """.""" - ... -def glfwGetJoystickButtons(jid: int,count: Any,) -> bytes: - """.""" - ... -def glfwGetJoystickGUID(jid: int,) -> bytes: - """.""" - ... -def glfwGetJoystickHats(jid: int,count: Any,) -> bytes: - """.""" - ... -def glfwGetJoystickName(jid: int,) -> bytes: - """.""" - ... -def glfwGetJoystickUserPointer(jid: int,) -> Any: - """.""" - ... -def glfwGetKey(window: Any|list|tuple,key: int,) -> int: - """.""" - ... -def glfwGetKeyName(key: int,scancode: int,) -> bytes: - """.""" - ... -def glfwGetKeyScancode(key: int,) -> int: - """.""" - ... -def glfwGetMonitorContentScale(monitor: Any|list|tuple,xscale: Any,yscale: Any,) -> None: - """.""" - ... -def glfwGetMonitorName(monitor: Any|list|tuple,) -> bytes: - """.""" - ... -def glfwGetMonitorPhysicalSize(monitor: Any|list|tuple,widthMM: Any,heightMM: Any,) -> None: - """.""" - ... -def glfwGetMonitorPos(monitor: Any|list|tuple,xpos: Any,ypos: Any,) -> None: - """.""" - ... -def glfwGetMonitorUserPointer(monitor: Any|list|tuple,) -> Any: - """.""" - ... -def glfwGetMonitorWorkarea(monitor: Any|list|tuple,xpos: Any,ypos: Any,width: Any,height: Any,) -> None: - """.""" - ... -def glfwGetMonitors(count: Any,) -> Any: - """.""" - ... -def glfwGetMouseButton(window: Any|list|tuple,button: int,) -> int: - """.""" - ... -def glfwGetPlatform() -> int: - """.""" - ... -def glfwGetPrimaryMonitor() -> Any: - """.""" - ... -def glfwGetProcAddress(procname: bytes,) -> Any: - """.""" - ... -def glfwGetRequiredInstanceExtensions(count: Any,) -> list[bytes]: - """.""" - ... -def glfwGetTime() -> float: - """.""" - ... -def glfwGetTimerFrequency() -> int: - """.""" - ... -def glfwGetTimerValue() -> int: - """.""" - ... -def glfwGetVersion(major: Any,minor: Any,rev: Any,) -> None: - """.""" - ... -def glfwGetVersionString() -> bytes: - """.""" - ... -def glfwGetVideoMode(monitor: Any|list|tuple,) -> Any: - """.""" - ... -def glfwGetVideoModes(monitor: Any|list|tuple,count: Any,) -> Any: - """.""" - ... -def glfwGetWindowAttrib(window: Any|list|tuple,attrib: int,) -> int: - """.""" - ... -def glfwGetWindowContentScale(window: Any|list|tuple,xscale: Any,yscale: Any,) -> None: - """.""" - ... -def glfwGetWindowFrameSize(window: Any|list|tuple,left: Any,top: Any,right: Any,bottom: Any,) -> None: - """.""" - ... -def glfwGetWindowMonitor(window: Any|list|tuple,) -> Any: - """.""" - ... -def glfwGetWindowOpacity(window: Any|list|tuple,) -> float: - """.""" - ... -def glfwGetWindowPos(window: Any|list|tuple,xpos: Any,ypos: Any,) -> None: - """.""" - ... -def glfwGetWindowSize(window: Any|list|tuple,width: Any,height: Any,) -> None: - """.""" - ... -def glfwGetWindowTitle(window: Any|list|tuple,) -> bytes: - """.""" - ... -def glfwGetWindowUserPointer(window: Any|list|tuple,) -> Any: - """.""" - ... -def glfwHideWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwIconifyWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwInit() -> int: - """.""" - ... -def glfwInitAllocator(allocator: Any|list|tuple,) -> None: - """.""" - ... -def glfwInitHint(hint: int,value: int,) -> None: - """.""" - ... -def glfwJoystickIsGamepad(jid: int,) -> int: - """.""" - ... -def glfwJoystickPresent(jid: int,) -> int: - """.""" - ... -def glfwMakeContextCurrent(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwMaximizeWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwPlatformSupported(platform: int,) -> int: - """.""" - ... -def glfwPollEvents() -> None: - """.""" - ... -def glfwPostEmptyEvent() -> None: - """.""" - ... -def glfwRawMouseMotionSupported() -> int: - """.""" - ... -def glfwRequestWindowAttention(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwRestoreWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwSetCharCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetCharModsCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetClipboardString(window: Any|list|tuple,string: bytes,) -> None: - """.""" - ... -def glfwSetCursor(window: Any|list|tuple,cursor: Any|list|tuple,) -> None: - """.""" - ... -def glfwSetCursorEnterCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetCursorPos(window: Any|list|tuple,xpos: float,ypos: float,) -> None: - """.""" - ... -def glfwSetCursorPosCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetDropCallback(window: Any|list|tuple,callback: list[bytes]|list|tuple,) -> list[bytes]: - """.""" - ... -def glfwSetErrorCallback(callback: bytes,) -> bytes: - """.""" - ... -def glfwSetFramebufferSizeCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetGamma(monitor: Any|list|tuple,gamma: float,) -> None: - """.""" - ... -def glfwSetGammaRamp(monitor: Any|list|tuple,ramp: Any|list|tuple,) -> None: - """.""" - ... -def glfwSetInputMode(window: Any|list|tuple,mode: int,value: int,) -> None: - """.""" - ... -def glfwSetJoystickCallback(callback: Any,) -> Any: - """.""" - ... -def glfwSetJoystickUserPointer(jid: int,pointer: Any,) -> None: - """.""" - ... -def glfwSetKeyCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetMonitorCallback(callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetMonitorUserPointer(monitor: Any|list|tuple,pointer: Any,) -> None: - """.""" - ... -def glfwSetMouseButtonCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetScrollCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetTime(time: float,) -> None: - """.""" - ... -def glfwSetWindowAspectRatio(window: Any|list|tuple,numer: int,denom: int,) -> None: - """.""" - ... -def glfwSetWindowAttrib(window: Any|list|tuple,attrib: int,value: int,) -> None: - """.""" - ... -def glfwSetWindowCloseCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowContentScaleCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowFocusCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowIcon(window: Any|list|tuple,count: int,images: Any|list|tuple,) -> None: - """.""" - ... -def glfwSetWindowIconifyCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowMaximizeCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowMonitor(window: Any|list|tuple,monitor: Any|list|tuple,xpos: int,ypos: int,width: int,height: int,refreshRate: int,) -> None: - """.""" - ... -def glfwSetWindowOpacity(window: Any|list|tuple,opacity: float,) -> None: - """.""" - ... -def glfwSetWindowPos(window: Any|list|tuple,xpos: int,ypos: int,) -> None: - """.""" - ... -def glfwSetWindowPosCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowRefreshCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowShouldClose(window: Any|list|tuple,value: int,) -> None: - """.""" - ... -def glfwSetWindowSize(window: Any|list|tuple,width: int,height: int,) -> None: - """.""" - ... -def glfwSetWindowSizeCallback(window: Any|list|tuple,callback: Any|list|tuple,) -> Any: - """.""" - ... -def glfwSetWindowSizeLimits(window: Any|list|tuple,minwidth: int,minheight: int,maxwidth: int,maxheight: int,) -> None: - """.""" - ... -def glfwSetWindowTitle(window: Any|list|tuple,title: bytes,) -> None: - """.""" - ... -def glfwSetWindowUserPointer(window: Any|list|tuple,pointer: Any,) -> None: - """.""" - ... -def glfwShowWindow(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwSwapBuffers(window: Any|list|tuple,) -> None: - """.""" - ... -def glfwSwapInterval(interval: int,) -> None: - """.""" - ... -def glfwTerminate() -> None: - """.""" - ... -def glfwUpdateGamepadMappings(string: bytes,) -> int: - """.""" - ... -def glfwVulkanSupported() -> int: - """.""" - ... -def glfwWaitEvents() -> None: - """.""" - ... -def glfwWaitEventsTimeout(timeout: float,) -> None: - """.""" - ... -def glfwWindowHint(hint: int,value: int,) -> None: - """.""" - ... -def glfwWindowHintString(hint: int,value: bytes,) -> None: - """.""" - ... -def glfwWindowShouldClose(window: Any|list|tuple,) -> int: - """.""" - ... -def rlActiveDrawBuffers(count: int,) -> None: - """Activate multiple draw color buffers.""" - ... -def rlActiveTextureSlot(slot: int,) -> None: - """Select and active a texture slot.""" - ... -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.""" - ... -def rlBindShaderBuffer(id: int,index: int,) -> None: - """Bind SSBO buffer.""" - ... -def rlBlitFramebuffer(srcX: int,srcY: int,srcWidth: int,srcHeight: int,dstX: int,dstY: int,dstWidth: int,dstHeight: int,bufferMask: int,) -> None: - """Blit active framebuffer to main framebuffer.""" - ... -def rlCheckErrors() -> None: - """Check and log OpenGL error codes.""" - ... -def rlCheckRenderBatchLimit(vCount: int,) -> bool: - """Check internal buffer overflow for a given number of vertex.""" - ... -def rlClearColor(r: bytes,g: bytes,b: bytes,a: bytes,) -> None: - """Clear color buffer with color.""" - ... -def rlClearScreenBuffers() -> None: - """Clear used screen buffers (color and depth).""" - ... -def rlColor3f(x: float,y: float,z: float,) -> None: - """Define one vertex (color) - 3 float.""" - ... -def rlColor4f(x: float,y: float,z: float,w: float,) -> None: - """Define one vertex (color) - 4 float.""" - ... -def rlColor4ub(r: bytes,g: bytes,b: bytes,a: bytes,) -> None: - """Define one vertex (color) - 4 byte.""" - ... -def rlColorMask(r: bool,g: bool,b: bool,a: bool,) -> None: - """Color mask control.""" - ... -def rlCompileShader(shaderCode: bytes,type: int,) -> int: - """Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER).""" - ... -def rlComputeShaderDispatch(groupX: int,groupY: int,groupZ: int,) -> None: - """Dispatch compute shader (equivalent to *draw* for graphics pipeline).""" - ... -def rlCopyShaderBuffer(destId: int,srcId: int,destOffset: int,srcOffset: int,count: int,) -> None: - """Copy SSBO data between buffers.""" - ... -def rlCubemapParameters(id: int,param: int,value: int,) -> None: - """Set cubemap parameters (filter, wrap).""" - ... -def rlDisableBackfaceCulling() -> None: - """Disable backface culling.""" - ... -def rlDisableColorBlend() -> None: - """Disable color blending.""" - ... -def rlDisableDepthMask() -> None: - """Disable depth write.""" - ... -def rlDisableDepthTest() -> None: - """Disable depth test.""" - ... -def rlDisableFramebuffer() -> None: - """Disable render texture (fbo), return to default framebuffer.""" - ... -def rlDisableScissorTest() -> None: - """Disable scissor test.""" - ... -def rlDisableShader() -> None: - """Disable shader program.""" - ... -def rlDisableSmoothLines() -> None: - """Disable line aliasing.""" - ... -def rlDisableStereoRender() -> None: - """Disable stereo rendering.""" - ... -def rlDisableTexture() -> None: - """Disable texture.""" - ... -def rlDisableTextureCubemap() -> None: - """Disable texture cubemap.""" - ... -def rlDisableVertexArray() -> None: - """Disable vertex array (VAO, if supported).""" - ... -def rlDisableVertexAttribute(index: int,) -> None: - """Disable vertex attribute index.""" - ... -def rlDisableVertexBuffer() -> None: - """Disable vertex buffer (VBO).""" - ... -def rlDisableVertexBufferElement() -> None: - """Disable vertex buffer element (VBO element).""" - ... -def rlDisableWireMode() -> None: - """Disable wire (and point) mode.""" - ... -def rlDrawRenderBatch(batch: Any|list|tuple,) -> None: - """Draw render batch data (Update->Draw->Reset).""" - ... -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.""" - ... -def rlEnableColorBlend() -> None: - """Enable color blending.""" - ... -def rlEnableDepthMask() -> None: - """Enable depth write.""" - ... -def rlEnableDepthTest() -> None: - """Enable depth test.""" - ... -def rlEnableFramebuffer(id: int,) -> None: - """Enable render texture (fbo).""" - ... -def rlEnablePointMode() -> None: - """Enable point mode.""" - ... -def rlEnableScissorTest() -> None: - """Enable scissor test.""" - ... -def rlEnableShader(id: int,) -> None: - """Enable shader program.""" - ... -def rlEnableSmoothLines() -> None: - """Enable line aliasing.""" - ... -def rlEnableStereoRender() -> None: - """Enable stereo rendering.""" - ... -def rlEnableTexture(id: int,) -> None: - """Enable texture.""" - ... -def rlEnableTextureCubemap(id: int,) -> None: - """Enable texture cubemap.""" - ... -def rlEnableVertexArray(vaoId: int,) -> bool: - """Enable vertex array (VAO, if supported).""" - ... -def rlEnableVertexAttribute(index: int,) -> None: - """Enable vertex attribute index.""" - ... -def rlEnableVertexBuffer(id: int,) -> None: - """Enable vertex buffer (VBO).""" - ... -def rlEnableVertexBufferElement(id: int,) -> None: - """Enable vertex buffer element (VBO element).""" - ... -def rlEnableWireMode() -> None: - """Enable wire mode.""" - ... -def rlEnd() -> None: - """Finish vertex providing.""" - ... -def rlFramebufferAttach(fboId: int,texId: int,attachType: int,texType: int,mipLevel: int,) -> None: - """Attach texture/renderbuffer to a framebuffer.""" - ... -def rlFramebufferComplete(id: int,) -> bool: - """Verify framebuffer is complete.""" - ... -def rlFrustum(left: float,right: float,bottom: float,top: float,znear: float,zfar: float,) -> None: - """.""" - ... -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.""" - ... -def rlGetFramebufferWidth() -> int: - """Get default framebuffer width.""" - ... -def rlGetGlTextureFormats(format: int,glInternalFormat: Any,glFormat: Any,glType: Any,) -> None: - """Get OpenGL internal formats.""" - ... -def rlGetLineWidth() -> float: - """Get the line drawing width.""" - ... -def rlGetLocationAttrib(shaderId: int,attribName: bytes,) -> int: - """Get shader location attribute.""" - ... -def rlGetLocationUniform(shaderId: int,uniformName: bytes,) -> int: - """Get shader location uniform.""" - ... -def rlGetMatrixModelview() -> Matrix: - """Get internal modelview matrix.""" - ... -def rlGetMatrixProjection() -> Matrix: - """Get internal projection matrix.""" - ... -def rlGetMatrixProjectionStereo(eye: int,) -> Matrix: - """Get internal projection matrix for stereo render (selected eye).""" - ... -def rlGetMatrixTransform() -> Matrix: - """Get internal accumulated transform matrix.""" - ... -def rlGetMatrixViewOffsetStereo(eye: int,) -> Matrix: - """Get internal view offset matrix for stereo render (selected eye).""" - ... -def rlGetPixelFormatName(format: int,) -> bytes: - """Get name string for pixel format.""" - ... -def rlGetShaderBufferSize(id: int,) -> int: - """Get SSBO buffer size.""" - ... -def rlGetShaderIdDefault() -> int: - """Get default shader id.""" - ... -def rlGetShaderLocsDefault() -> Any: - """Get default shader locations.""" - ... -def rlGetTextureIdDefault() -> int: - """Get default texture id.""" - ... -def rlGetVersion() -> int: - """Get current OpenGL version.""" - ... -def rlIsStereoRenderEnabled() -> bool: - """Check if stereo render is enabled.""" - ... -def rlLoadComputeShaderProgram(shaderId: int,) -> int: - """Load compute shader program.""" - ... -def rlLoadDrawCube() -> None: - """Load and draw a cube.""" - ... -def rlLoadDrawQuad() -> None: - """Load and draw a quad.""" - ... -def rlLoadExtensions(loader: Any,) -> None: - """Load OpenGL extensions (loader function required).""" - ... -def rlLoadFramebuffer() -> int: - """Load an empty framebuffer.""" - ... -def rlLoadIdentity() -> None: - """Reset current matrix to identity matrix.""" - ... -def rlLoadRenderBatch(numBuffers: int,bufferElements: int,) -> rlRenderBatch: - """Load a render batch system.""" - ... -def rlLoadShaderBuffer(size: int,data: Any,usageHint: int,) -> int: - """Load shader storage buffer object (SSBO).""" - ... -def rlLoadShaderCode(vsCode: bytes,fsCode: bytes,) -> int: - """Load shader from code strings.""" - ... -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 data.""" - ... -def rlLoadTextureCubemap(data: Any,size: int,format: int,mipmapCount: int,) -> int: - """Load texture cubemap data.""" - ... -def rlLoadTextureDepth(width: int,height: int,useRenderBuffer: bool,) -> int: - """Load depth texture/renderbuffer (to be attached to fbo).""" - ... -def rlLoadVertexArray() -> int: - """Load vertex array (vao) if supported.""" - ... -def rlLoadVertexBuffer(buffer: Any,size: int,dynamic: bool,) -> int: - """Load a vertex buffer object.""" - ... -def rlLoadVertexBufferElement(buffer: Any,size: int,dynamic: bool,) -> int: - """Load vertex buffer elements object.""" - ... -def rlMatrixMode(mode: int,) -> None: - """Choose the current matrix to be transformed.""" - ... -def rlMultMatrixf(matf: Any,) -> None: - """Multiply the current matrix by another matrix.""" - ... -def rlNormal3f(x: float,y: float,z: float,) -> None: - """Define one vertex (normal) - 3 float.""" - ... -def rlOrtho(left: float,right: float,bottom: float,top: float,znear: float,zfar: float,) -> None: - """.""" - ... -def rlPopMatrix() -> None: - """Pop latest inserted matrix from stack.""" - ... -def rlPushMatrix() -> None: - """Push the current matrix to stack.""" - ... -def rlReadScreenPixels(width: int,height: int,) -> bytes: - """Read screen pixel data (color buffer).""" - ... -def rlReadShaderBuffer(id: int,dest: Any,count: int,offset: int,) -> None: - """Read SSBO buffer data (GPU->CPU).""" - ... -def rlReadTexturePixels(id: int,width: int,height: int,format: int,) -> Any: - """Read texture pixel data.""" - ... -def rlRotatef(angle: float,x: float,y: float,z: float,) -> None: - """Multiply the current matrix by a rotation matrix.""" - ... -def rlScalef(x: float,y: float,z: float,) -> None: - """Multiply the current matrix by a scaling matrix.""" - ... -def rlScissor(x: int,y: int,width: int,height: int,) -> None: - """Scissor test.""" - ... -def rlSetBlendFactors(glSrcFactor: int,glDstFactor: int,glEquation: int,) -> None: - """Set blending mode factor and equation (using OpenGL factors).""" - ... -def rlSetBlendFactorsSeparate(glSrcRGB: int,glDstRGB: int,glSrcAlpha: int,glDstAlpha: int,glEqRGB: int,glEqAlpha: int,) -> None: - """Set blending mode factors and equations separately (using OpenGL factors).""" - ... -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.""" - ... -def rlSetFramebufferHeight(height: int,) -> None: - """Set current framebuffer height.""" - ... -def rlSetFramebufferWidth(width: int,) -> None: - """Set current framebuffer width.""" - ... -def rlSetLineWidth(width: float,) -> None: - """Set the line drawing width.""" - ... -def rlSetMatrixModelview(view: Matrix|list|tuple,) -> None: - """Set a custom modelview matrix (replaces internal modelview matrix).""" - ... -def rlSetMatrixProjection(proj: Matrix|list|tuple,) -> None: - """Set a custom projection matrix (replaces internal projection matrix).""" - ... -def rlSetMatrixProjectionStereo(right: Matrix|list|tuple,left: Matrix|list|tuple,) -> None: - """Set eyes projection matrices for stereo rendering.""" - ... -def rlSetMatrixViewOffsetStereo(right: Matrix|list|tuple,left: Matrix|list|tuple,) -> None: - """Set eyes view offsets matrices for stereo rendering.""" - ... -def rlSetRenderBatchActive(batch: Any|list|tuple,) -> None: - """Set the active render batch for rlgl (NULL for default internal).""" - ... -def rlSetShader(id: int,locs: Any,) -> None: - """Set shader currently active (id and locations).""" - ... -def rlSetTexture(id: int,) -> None: - """Set current texture for render batch and check buffers limits.""" - ... -def rlSetUniform(locIndex: int,value: Any,uniformType: int,count: int,) -> None: - """Set shader value uniform.""" - ... -def rlSetUniformMatrices(locIndex: int,mat: Any|list|tuple,count: int,) -> None: - """Set shader value matrices.""" - ... -def rlSetUniformMatrix(locIndex: int,mat: Matrix|list|tuple,) -> 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,offset: int,) -> None: - """Set vertex attribute data configuration.""" - ... -def rlSetVertexAttributeDefault(locIndex: int,value: Any,attribType: int,count: int,) -> None: - """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.""" - ... -def rlTextureParameters(id: int,param: int,value: int,) -> None: - """Set texture parameters (filter, wrap).""" - ... -def rlTranslatef(x: float,y: float,z: float,) -> None: - """Multiply the current matrix by a translation matrix.""" - ... -def rlUnloadFramebuffer(id: int,) -> None: - """Delete framebuffer from GPU.""" - ... -def rlUnloadRenderBatch(batch: rlRenderBatch|list|tuple,) -> None: - """Unload render batch system.""" - ... -def rlUnloadShaderBuffer(ssboId: int,) -> None: - """Unload shader storage buffer object (SSBO).""" - ... -def rlUnloadShaderProgram(id: int,) -> None: - """Unload shader program.""" - ... -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 texture with new data on GPU.""" - ... -def rlUpdateVertexBuffer(bufferId: int,data: Any,dataSize: int,offset: int,) -> None: - """Update vertex buffer object data on GPU buffer.""" - ... -def rlUpdateVertexBufferElements(id: int,data: Any,dataSize: int,offset: int,) -> None: - """Update vertex buffer elements data on GPU buffer.""" - ... -def rlVertex2f(x: float,y: float,) -> None: - """Define one vertex (position) - 2 float.""" - ... -def rlVertex2i(x: int,y: int,) -> None: - """Define one vertex (position) - 2 int.""" - ... -def rlVertex3f(x: float,y: float,z: float,) -> None: - """Define one vertex (position) - 3 float.""" - ... -def rlViewport(x: int,y: int,width: int,height: int,) -> None: - """Set the viewport area.""" - ... -def rlglClose() -> None: - """De-initialize rlgl (buffers, shaders, textures).""" - ... -def rlglInit(width: int,height: int,) -> None: - """Initialize rlgl (buffers, shaders, textures, states).""" - ... -class AudioStream: - buffer: Any - processor: Any - sampleRate: int - sampleSize: int - channels: int -class AutomationEvent: - frame: int - type: int - params: list -class AutomationEventList: - capacity: int - count: int - events: Any -BlendMode = int -class BoneInfo: - name: bytes - parent: int -class BoundingBox: - min: Vector3 - max: Vector3 -class Camera: - position: Vector3 - target: Vector3 - up: Vector3 - fovy: float - projection: int -class Camera2D: - offset: Vector2 - target: Vector2 - rotation: float - zoom: float -class Camera3D: - position: Vector3 - target: Vector3 - up: Vector3 - fovy: float - projection: int -CameraMode = int -CameraProjection = int -class Color: - r: bytes - g: bytes - b: bytes - a: bytes -ConfigFlags = int -CubemapLayout = int -class FilePathList: - capacity: int - count: int - paths: list[bytes] -class Font: - baseSize: int - glyphCount: int - glyphPadding: int - texture: Texture - recs: Any - glyphs: Any -FontType = int -class GLFWallocator: - allocate: Any - reallocate: Any - deallocate: Any - user: Any -class GLFWcursor: - ... -class GLFWgamepadstate: - buttons: bytes - axes: list -class GLFWgammaramp: - red: Any - green: Any - blue: Any - size: int -class GLFWimage: - width: int - height: int - pixels: bytes -class GLFWmonitor: - ... -class GLFWvidmode: - width: int - height: int - redBits: int - greenBits: int - blueBits: int - refreshRate: int -class GLFWwindow: - ... -GamepadAxis = int -GamepadButton = int -Gesture = int -class GlyphInfo: - value: int - offsetX: int - offsetY: int - advanceX: int - image: Image -GuiCheckBoxProperty = int -GuiColorPickerProperty = int -GuiComboBoxProperty = int -GuiControl = int -GuiControlProperty = int -GuiDefaultProperty = int -GuiDropdownBoxProperty = int -GuiIconName = int -GuiListViewProperty = int -GuiProgressBarProperty = int -GuiScrollBarProperty = int -GuiSliderProperty = int -GuiSpinnerProperty = int -GuiState = int -class GuiStyleProp: - controlId: int - propertyId: int - propertyValue: int -GuiTextAlignment = int -GuiTextAlignmentVertical = int -GuiTextBoxProperty = int -GuiTextWrapMode = int -GuiToggleProperty = int -class Image: - data: Any - width: int - height: int - mipmaps: int - format: int -KeyboardKey = int -class Mat2: - m00: float - m01: float - m10: float - m11: float -class Material: - shader: Shader - maps: Any - params: list -class MaterialMap: - texture: Texture - color: Color - value: float -MaterialMapIndex = int -class Matrix: - m0: float - m4: float - m8: float - m12: float - m1: float - m5: float - m9: float - m13: float - m2: float - m6: float - m10: float - m14: float - m3: float - m7: float - m11: float - m15: float -class Mesh: - vertexCount: int - triangleCount: int - vertices: Any - texcoords: Any - texcoords2: Any - normals: Any - tangents: Any - colors: bytes - indices: Any - animVertices: Any - animNormals: Any - boneIds: bytes - boneWeights: Any - boneMatrices: Any - boneCount: int - vaoId: int - vboId: Any -class Model: - transform: Matrix - meshCount: int - materialCount: int - meshes: Any - materials: Any - meshMaterial: Any - boneCount: int - bones: Any - bindPose: Any -class ModelAnimation: - boneCount: int - frameCount: int - bones: Any - framePoses: Any - name: bytes -MouseButton = int -MouseCursor = int -class Music: - stream: AudioStream - frameCount: int - looping: bool - ctxType: int - ctxData: Any -class NPatchInfo: - source: Rectangle - left: int - top: int - right: int - bottom: int - layout: int -NPatchLayout = int -class PhysicsBodyData: - id: int - enabled: bool - position: Vector2 - velocity: Vector2 - force: Vector2 - angularVelocity: float - torque: float - orient: float - inertia: float - inverseInertia: float - mass: float - inverseMass: float - staticFriction: float - dynamicFriction: float - restitution: float - useGravity: bool - isGrounded: bool - freezeOrient: bool - shape: PhysicsShape -class PhysicsManifoldData: - id: int - bodyA: Any - bodyB: Any - penetration: float - normal: Vector2 - contacts: list - contactsCount: int - restitution: float - dynamicFriction: float - staticFriction: float -class PhysicsShape: - type: PhysicsShapeType - body: Any - radius: float - transform: Mat2 - vertexData: PolygonData -PhysicsShapeType = int -PixelFormat = int -class PolygonData: - vertexCount: int - positions: list - normals: list -class Quaternion: - x: float - y: float - z: float - w: float -class Ray: - position: Vector3 - direction: Vector3 -class RayCollision: - hit: bool - distance: float - point: Vector3 - normal: Vector3 -class Rectangle: - x: float - y: float - width: float - height: float -class RenderTexture: - id: int - texture: Texture - depth: Texture -class RenderTexture2D: - id: int - texture: Texture - depth: Texture -class Shader: - id: int - locs: Any -ShaderAttributeDataType = int -ShaderLocationIndex = int -ShaderUniformDataType = int -class Sound: - stream: AudioStream - frameCount: int -class Texture: - id: int - width: int - height: int - mipmaps: int - format: int -class Texture2D: - id: int - width: int - height: int - mipmaps: int - format: int -class TextureCubemap: - id: int - width: int - height: int - mipmaps: int - format: int -TextureFilter = int -TextureWrap = int -TraceLogLevel = int -class Transform: - translation: Vector3 - rotation: Vector4 - scale: Vector3 -class Vector2: - x: float - y: float -class Vector3: - x: float - y: float - z: float -class Vector4: - x: float - y: float - z: float - w: float -class VrDeviceInfo: - hResolution: int - vResolution: int - hScreenSize: float - vScreenSize: float - eyeToScreenDistance: float - lensSeparationDistance: float - interpupillaryDistance: float - lensDistortionValues: list - chromaAbCorrection: list -class VrStereoConfig: - projection: list - viewOffset: list - leftLensCenter: list - rightLensCenter: list - leftScreenCenter: list - rightScreenCenter: list - scale: list - scaleIn: list -class Wave: - frameCount: int - sampleRate: int - sampleSize: int - channels: int - data: Any -class float16: - v: list -class float3: - v: list -class rAudioBuffer: - ... -class rAudioProcessor: - ... -rlBlendMode = int -rlCullMode = int -class rlDrawCall: - mode: int - vertexCount: int - vertexAlignment: int - textureId: int -rlFramebufferAttachTextureType = int -rlFramebufferAttachType = int -rlGlVersion = int -rlPixelFormat = int -class rlRenderBatch: - bufferCount: int - currentBuffer: int - vertexBuffer: Any - draws: Any - drawCounter: int - currentDepth: float -rlShaderAttributeDataType = int -rlShaderLocationIndex = int -rlShaderUniformDataType = int -rlTextureFilter = int -rlTraceLogLevel = int -class rlVertexBuffer: - elementCount: int - vertices: Any - texcoords: Any - normals: Any - colors: bytes - indices: Any - vaoId: int - vboId: list - -LIGHTGRAY : Color -GRAY : Color -DARKGRAY : Color -YELLOW : Color -GOLD : Color -ORANGE : Color -PINK : Color -RED : Color -MAROON : Color -GREEN : Color -LIME : Color -DARKGREEN : Color -SKYBLUE : Color -BLUE : Color -DARKBLUE : Color -PURPLE : Color -VIOLET : Color -DARKPURPLE : Color -BEIGE : Color -BROWN : Color -DARKBROWN : Color -WHITE : Color -BLACK : Color -BLANK : Color -MAGENTA : Color -RAYWHITE : Color - diff --git a/raylib/build.py b/raylib/build.py deleted file mode 100644 index ca477c8..0000000 --- a/raylib/build.py +++ /dev/null @@ -1,278 +0,0 @@ -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - -# Assumes raylib, GL, etc are all already installed as system libraries. We dont distribute them. -# Raylib must be installed and compiled with: cmake -DWITH_PIC=ON -DSHARED=ON -DSTATIC=ON .. - -# We use /usr/local/lib/libraylib.a to ensure we link to static version -import re - -from cffi import FFI -import os -import platform -import sys -import subprocess -import time -from pathlib import Path - -THIS_DIR = Path(__file__).resolve().parent -REPO_ROOT = THIS_DIR.parent - - -RAYLIB_PLATFORM = os.getenv("RAYLIB_PLATFORM", "Desktop") -ENABLE_WAYLAND_DRM_LEASING = os.getenv("ENABLE_WAYLAND_DRM_LEASING") - -def check_raylib_installed(): - return subprocess.run(['pkg-config', '--exists', 'raylib'], text=True, stdout=subprocess.PIPE).returncode == 0 - -def check_SDL_installed(): - return subprocess.run(['pkg-config', '--exists', 'sdl2'], text=True, stdout=subprocess.PIPE).returncode == 0 - -def get_the_include_path(): - return subprocess.run(['pkg-config', '--variable=includedir', 'raylib'], text=True, - stdout=subprocess.PIPE).stdout.strip() - - -def get_the_lib_path(): - return subprocess.run(['pkg-config', '--variable=libdir', 'raylib'], text=True, - stdout=subprocess.PIPE).stdout.strip() - -def get_specified_libs(lib_target): - libs = subprocess.run(['pkg-config', '--libs', lib_target], text=True, - stdout=subprocess.PIPE).stdout.strip().split() - - if libs == "": - raise ValueError(f"Failed to get specified libs ({lib_target})") - - print(f"{lib_target}: {libs}") - - return libs - -def get_lib_flags(): - return subprocess.run(['pkg-config', '--libs', 'raylib'], text=True, - stdout=subprocess.PIPE).stdout.strip().split() - -def pre_process_header(filename, remove_function_bodies=False): - print("Pre-processing " + filename) - file = open(filename, "r") - filetext = "".join([line for line in file if '#include' not in line]) - command = ['gcc', '-CC', '-P', '-undef', '-nostdinc', '-DRL_MATRIX_TYPE', - '-DRL_QUATERNION_TYPE','-DRL_VECTOR4_TYPE','-DRL_VECTOR3_TYPE','-DRL_VECTOR2_TYPE', - '-DRLAPI=', '-DPHYSACDEF=', '-DRAYGUIDEF=','-DRMAPI=', - '-dDI', '-E', '-'] - filetext = subprocess.run(command, text=True, input=filetext, stdout=subprocess.PIPE).stdout - filetext = filetext.replace("va_list", "void *") - if remove_function_bodies: - filetext = re.sub('\n{\n(.|\n)*?\n}\n', ';', filetext) - filetext = "\n".join([line for line in filetext.splitlines() if not line.startswith("#")]) - file = open("raylib/"+os.path.basename(filename)+".modified", "w") - file.write(filetext) - # print(r) - return filetext - - -def check_header_exists(file): - if not os.path.isfile(file): - print("\n\n*************** WARNING ***************\n\n") - print( - file + " not found. Build will not contain these extra functions.\n\nPlease copy file from src/extras to " + file + " if you want them.\n\n") - print("**************************************\n\n") - time.sleep(1) - return False - return True - - -# def mangle(file): -# result = "" -# skip = False -# for line in open(file): -# line = line.strip().replace("va_list", "void *") + "\n" -# if skip: -# if line.startswith("#endif"): -# skip = False -# continue -# if line.startswith("#if defined(__cplusplus)"): -# skip = True -# continue -# if line.startswith("#endif // RAYGUI_H"): -# break -# if line.startswith("#"): -# continue -# if line.startswith("RLAPI"): -# line = line.replace('RLAPI ', '') -# if line.startswith("RAYGUIDEF"): -# line = line.replace('RAYGUIDEF ', '') -# if line.startswith("PHYSACDEF"): -# line = line.replace('PHYSACDEF ', '') -# result += line -# # print(line) -# return result - - -def build_unix(): - if not check_raylib_installed(): - raise Exception("ERROR: raylib not found by pkg-config. Please install pkg-config and Raylib.") - - if RAYLIB_PLATFORM=="SDL" and not check_SDL_installed(): - raise Exception("ERROR: SDL2 not found by pkg-config. Please install pkg-config and SDL2.") - - raylib_h = get_the_include_path() + "/raylib.h" - rlgl_h = get_the_include_path() + "/rlgl.h" - raymath_h = get_the_include_path() + "/raymath.h" - - if not os.path.isfile(raylib_h): - raise Exception("ERROR: " + raylib_h + " not found. Please install Raylib.") - - if not os.path.isfile(rlgl_h): - raise Exception("ERROR: " + rlgl_h + " not found. Please install Raylib.") - - if not os.path.isfile(raymath_h): - raise Exception("ERROR: " + raylib_h + " not found. Please install Raylib.") - - ffi_includes = """ - #include "raylib.h" - #include "rlgl.h" - #include "raymath.h" - """ - - glfw3_h = get_the_include_path() + "/GLFW/glfw3.h" - if RAYLIB_PLATFORM=="Desktop" and check_header_exists(glfw3_h): - ffi_includes += """ - #include "GLFW/glfw3.h" - """ - - raygui_h = get_the_include_path() + "/raygui.h" - if check_header_exists(raygui_h): - ffi_includes += """ - #define RAYGUI_IMPLEMENTATION - #define RAYGUI_SUPPORT_RICONS - #include "raygui.h" - """ - - physac_h = get_the_include_path() + "/physac.h" - if check_header_exists(physac_h): - ffi_includes += """ - #define PHYSAC_IMPLEMENTATION - #include "physac.h" - """ - - ffibuilder.cdef(pre_process_header(raylib_h)) - ffibuilder.cdef(pre_process_header(rlgl_h)) - ffibuilder.cdef(pre_process_header(raymath_h, True)) - - if os.path.isfile(raygui_h): - ffibuilder.cdef(pre_process_header(raygui_h)) - if os.path.isfile(physac_h): - ffibuilder.cdef(pre_process_header(physac_h)) - if RAYLIB_PLATFORM=="Desktop" and os.path.isfile(glfw3_h): - ffibuilder.cdef(pre_process_header(glfw3_h)) - - - if platform.system() == "Darwin": - print("BUILDING FOR MAC") - extra_link_args = [get_the_lib_path() + '/libraylib.a', '-framework', 'OpenGL', '-framework', 'Cocoa', - '-framework', 'IOKit', '-framework', 'CoreFoundation', '-framework', - 'CoreVideo'] - if RAYLIB_PLATFORM=="SDL": - extra_link_args += ['/usr/local/lib/libSDL2.a', '-framework', 'CoreHaptics', '-framework', 'ForceFeedback', - '-framework', 'GameController'] - libraries = [] - extra_compile_args = ["-Wno-error=incompatible-function-pointer-types", "-D_CFFI_NO_LIMITED_API"] - else: #platform.system() == "Linux": - print("BUILDING FOR LINUX") - extra_link_args = get_lib_flags() + [ '-lm', '-lpthread', '-lGL', - '-lrt', '-lm', '-ldl', '-lpthread', '-latomic'] - if RAYLIB_PLATFORM=="SDL": - extra_link_args += ['-lX11','-lSDL2'] - elif RAYLIB_PLATFORM=="DRM": - extra_link_args += get_specified_libs("egl") - extra_link_args += get_specified_libs("gbm") - - if ENABLE_WAYLAND_DRM_LEASING != "": - extra_link_args += get_specified_libs("wayland-client") - else: - extra_link_args += ['-lX11'] - extra_compile_args = ["-Wno-incompatible-pointer-types", "-D_CFFI_NO_LIMITED_API"] - libraries = [] # Not sure why but we put them in extra_link_args instead so *shouldnt* be needed here - - - print("extra_link_args: "+str(extra_link_args)) - print("extra_compile_args: "+str(extra_compile_args)) - print("libraries: "+str(libraries)) - ffibuilder.set_source("raylib._raylib_cffi", - ffi_includes, - py_limited_api=False, - include_dirs=[get_the_include_path()], - extra_link_args=extra_link_args, - extra_compile_args=extra_compile_args, - libraries=libraries) - - -def build_windows(): - print("BUILDING FOR WINDOWS") - ffibuilder.cdef((THIS_DIR / "raylib.h.modified").read_text()) - if RAYLIB_PLATFORM=="Desktop": - ffibuilder.cdef((THIS_DIR / "glfw3.h.modified").read_text()) - ffibuilder.cdef((THIS_DIR / "rlgl.h.modified").read_text()) - ffibuilder.cdef((THIS_DIR / "raygui.h.modified").read_text()) - ffibuilder.cdef((THIS_DIR / "physac.h.modified").read_text()) - ffibuilder.cdef((THIS_DIR / "raymath.h.modified").read_text()) - - ffi_includes = """ - #include "raylib.h" - #include "rlgl.h" - #include "raymath.h" - """ - - if RAYLIB_PLATFORM=="Desktop": - ffi_includes += """ - #include "GLFW/glfw3.h" - """ - - ffi_includes += """ - #define RAYGUI_IMPLEMENTATION - #define RAYGUI_SUPPORT_RICONS - #include "raygui.h" - #define PHYSAC_IMPLEMENTATION - #define PHYSAC_NO_THREADS - #include "physac.h" - """ - libraries = ['raylib', 'gdi32', 'shell32', 'user32', 'OpenGL32', 'winmm'] - if RAYLIB_PLATFORM=="SDL": - libraries += ['SDL2'] - - print("libraries: "+str(libraries)) - ffibuilder.set_source("raylib._raylib_cffi", ffi_includes, - extra_link_args=['/NODEFAULTLIB:MSVCRTD'], - extra_compile_args=["/D_CFFI_NO_LIMITED_API"], - py_limited_api=False, - libraries=libraries, - include_dirs=[str(REPO_ROOT / 'raylib-c/src'), - str(REPO_ROOT / 'raylib-c/src/external/glfw/include'), - str(REPO_ROOT / 'raygui/src'), - str(REPO_ROOT / 'physac/src')], - ) - - -ffibuilder = FFI() - -if platform.system() == "Windows": - build_windows() -else: - print("not windows, trying Unix build") - build_unix() - - -if __name__ == "__main__": - ffibuilder.compile(verbose=True) diff --git a/raylib/build_multi.sh b/raylib/build_multi.sh deleted file mode 100755 index a48885e..0000000 --- a/raylib/build_multi.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -if ! command -v pyenv &> /dev/null -then - echo "Pyenv required: https://github.com/pyenv/pyenv-installer" - exit -fi - -pyenv update - -function build() { - echo "Building for Python $1" - pyenv install -s $1 - pyenv global $1 - pip3 install cffi - pip3 install wheel - rm -rf raylib/_raylib_cffi.* build - python setup.py bdist_wheel -} - -build 3.9.5 -build 3.8.10 -build 3.7.10 - - diff --git a/raylib/build_multi_linux.sh b/raylib/build_multi_linux.sh deleted file mode 100755 index d3e5eff..0000000 --- a/raylib/build_multi_linux.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -if ! command -v pyenv &> /dev/null -then - echo "Pyenv required: https://github.com/pyenv/pyenv-installer" - exit -fi - -pyenv update - -function build() { - echo "Building for Python $1" - pyenv install -s $1 - pyenv global $1 - pip3 install cffi - pip3 install wheel - rm -rf raylib/_raylib_cffi.* build - python setup.py bdist_wheel --plat-name manylinux2014_x86_64 -} - -build 3.9.5 -build 3.8.10 -build 3.7.10 - - diff --git a/raylib/build_multi_rpi_nox.sh b/raylib/build_multi_rpi_nox.sh deleted file mode 100755 index 87bad31..0000000 --- a/raylib/build_multi_rpi_nox.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -if ! command -v pyenv &> /dev/null -then - echo "Pyenv required: https://github.com/pyenv/pyenv-installer" - exit -fi - -pyenv update - -function build() { - echo "Building for Python $1" - pyenv install -s $1 - pyenv global $1 - pip3 install cffi - pip3 install wheel - rm -rf raylib/_raylib_cffi.* build - python setup.py bdist_wheel --plat-name manylinux2014_armv7l -} - -build 3.9.5 -build 3.8.10 -build 3.7.10 - - diff --git a/raylib/colors.py b/raylib/colors.py index 024297f..dafbc83 100644 --- a/raylib/colors.py +++ b/raylib/colors.py @@ -1,17 +1,3 @@ -# Copyright (c) 2021 Richard Smith and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0. -# -# This Source Code may also be made available under the following Secondary -# licenses when the conditions for such availability set forth in the Eclipse -# Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -# with the GNU Classpath Exception which is -# available at https://www.gnu.org/software/classpath/license.html. -# -# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - LIGHTGRAY =( 200, 200, 200, 255 ) GRAY =( 130, 130, 130, 255 ) DARKGRAY =( 80, 80, 80, 255 ) @@ -37,5 +23,4 @@ WHITE =( 255, 255, 255, 255 ) BLACK =( 0, 0, 0, 255 ) BLANK =( 0, 0, 0, 0 ) MAGENTA =( 255, 0, 255, 255 ) -RAYWHITE =( 245, 245, 245, 255 ) - +RAYWHITE =( 245, 245, 245, 255 ) \ No newline at end of file diff --git a/raylib/defines.py b/raylib/defines.py deleted file mode 100644 index fe706d3..0000000 --- a/raylib/defines.py +++ /dev/null @@ -1,508 +0,0 @@ -import raylib - -RAYLIB_VERSION_MAJOR: int = 5 -RAYLIB_VERSION_MINOR: int = 5 -RAYLIB_VERSION_PATCH: int = 0 -RAYLIB_VERSION: str = "5.5" -PI: float = 3.141592653589793 -DEG2RAD = PI / 180.0 -RAD2DEG = 180.0 / PI -MOUSE_LEFT_BUTTON = raylib.MOUSE_BUTTON_LEFT -MOUSE_RIGHT_BUTTON = raylib.MOUSE_BUTTON_RIGHT -MOUSE_MIDDLE_BUTTON = raylib.MOUSE_BUTTON_MIDDLE -MATERIAL_MAP_DIFFUSE = raylib.MATERIAL_MAP_ALBEDO -MATERIAL_MAP_SPECULAR = raylib.MATERIAL_MAP_METALNESS -SHADER_LOC_MAP_DIFFUSE = raylib.SHADER_LOC_MAP_ALBEDO -SHADER_LOC_MAP_SPECULAR = raylib.SHADER_LOC_MAP_METALNESS -EPSILON: float = 1e-06 -RLGL_VERSION: str = "5.0" -RL_DEFAULT_BATCH_BUFFER_ELEMENTS: int = 8192 -RL_DEFAULT_BATCH_BUFFERS: int = 1 -RL_DEFAULT_BATCH_DRAWCALLS: int = 256 -RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS: int = 4 -RL_MAX_MATRIX_STACK_SIZE: int = 32 -RL_MAX_SHADER_LOCATIONS: int = 32 -RL_TEXTURE_WRAP_S: int = 10242 -RL_TEXTURE_WRAP_T: int = 10243 -RL_TEXTURE_MAG_FILTER: int = 10240 -RL_TEXTURE_MIN_FILTER: int = 10241 -RL_TEXTURE_FILTER_NEAREST: int = 9728 -RL_TEXTURE_FILTER_LINEAR: int = 9729 -RL_TEXTURE_FILTER_MIP_NEAREST: int = 9984 -RL_TEXTURE_FILTER_NEAREST_MIP_LINEAR: int = 9986 -RL_TEXTURE_FILTER_LINEAR_MIP_NEAREST: int = 9985 -RL_TEXTURE_FILTER_MIP_LINEAR: int = 9987 -RL_TEXTURE_FILTER_ANISOTROPIC: int = 12288 -RL_TEXTURE_MIPMAP_BIAS_RATIO: int = 16384 -RL_TEXTURE_WRAP_REPEAT: int = 10497 -RL_TEXTURE_WRAP_CLAMP: int = 33071 -RL_TEXTURE_WRAP_MIRROR_REPEAT: int = 33648 -RL_TEXTURE_WRAP_MIRROR_CLAMP: int = 34626 -RL_MODELVIEW: int = 5888 -RL_PROJECTION: int = 5889 -RL_TEXTURE: int = 5890 -RL_LINES: int = 1 -RL_TRIANGLES: int = 4 -RL_QUADS: int = 7 -RL_UNSIGNED_BYTE: int = 5121 -RL_FLOAT: int = 5126 -RL_STREAM_DRAW: int = 35040 -RL_STREAM_READ: int = 35041 -RL_STREAM_COPY: int = 35042 -RL_STATIC_DRAW: int = 35044 -RL_STATIC_READ: int = 35045 -RL_STATIC_COPY: int = 35046 -RL_DYNAMIC_DRAW: int = 35048 -RL_DYNAMIC_READ: int = 35049 -RL_DYNAMIC_COPY: int = 35050 -RL_FRAGMENT_SHADER: int = 35632 -RL_VERTEX_SHADER: int = 35633 -RL_COMPUTE_SHADER: int = 37305 -RL_ZERO: int = 0 -RL_ONE: int = 1 -RL_SRC_COLOR: int = 768 -RL_ONE_MINUS_SRC_COLOR: int = 769 -RL_SRC_ALPHA: int = 770 -RL_ONE_MINUS_SRC_ALPHA: int = 771 -RL_DST_ALPHA: int = 772 -RL_ONE_MINUS_DST_ALPHA: int = 773 -RL_DST_COLOR: int = 774 -RL_ONE_MINUS_DST_COLOR: int = 775 -RL_SRC_ALPHA_SATURATE: int = 776 -RL_CONSTANT_COLOR: int = 32769 -RL_ONE_MINUS_CONSTANT_COLOR: int = 32770 -RL_CONSTANT_ALPHA: int = 32771 -RL_ONE_MINUS_CONSTANT_ALPHA: int = 32772 -RL_FUNC_ADD: int = 32774 -RL_MIN: int = 32775 -RL_MAX: int = 32776 -RL_FUNC_SUBTRACT: int = 32778 -RL_FUNC_REVERSE_SUBTRACT: int = 32779 -RL_BLEND_EQUATION: int = 32777 -RL_BLEND_EQUATION_RGB: int = 32777 -RL_BLEND_EQUATION_ALPHA: int = 34877 -RL_BLEND_DST_RGB: int = 32968 -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 -GL_SHADING_LANGUAGE_VERSION: int = 35724 -GL_COMPRESSED_RGB_S3TC_DXT1_EXT: int = 33776 -GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: int = 33777 -GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: int = 33778 -GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: int = 33779 -GL_ETC1_RGB8_OES: int = 36196 -GL_COMPRESSED_RGB8_ETC2: int = 37492 -GL_COMPRESSED_RGBA8_ETC2_EAC: int = 37496 -GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: int = 35840 -GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: int = 35842 -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 -GL_LUMINANCE: int = 6409 -GL_LUMINANCE_ALPHA: int = 6410 -RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION: str = "vertexPosition" -RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD: str = "vertexTexCoord" -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 = 5 -RAYGUI_VERSION_PATCH: int = 0 -RAYGUI_VERSION: str = "4.5-dev" -SCROLLBAR_LEFT_SIDE: int = 0 -SCROLLBAR_RIGHT_SIDE: int = 1 -RAYGUI_ICON_SIZE: int = 16 -RAYGUI_ICON_MAX_ICONS: int = 256 -RAYGUI_ICON_MAX_NAME_LENGTH: int = 32 -RAYGUI_MAX_CONTROLS: int = 16 -RAYGUI_MAX_PROPS_BASE: int = 16 -RAYGUI_MAX_PROPS_EXTENDED: int = 8 -KEY_RIGHT: int = 262 -KEY_LEFT: int = 263 -KEY_DOWN: int = 264 -KEY_UP: int = 265 -KEY_BACKSPACE: int = 259 -KEY_ENTER: int = 257 -MOUSE_LEFT_BUTTON: int = 0 -RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT: int = 24 -RAYGUI_GROUPBOX_LINE_THICK: int = 1 -RAYGUI_LINE_MARGIN_TEXT: int = 12 -RAYGUI_LINE_TEXT_PADDING: int = 4 -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 -RAYGUI_VALUEBOX_MAX_CHARS: int = 32 -RAYGUI_COLORBARALPHA_CHECKED_SIZE: int = 10 -RAYGUI_MESSAGEBOX_BUTTON_HEIGHT: int = 24 -RAYGUI_MESSAGEBOX_BUTTON_PADDING: int = 12 -RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT: int = 24 -RAYGUI_TEXTINPUTBOX_BUTTON_PADDING: int = 12 -RAYGUI_TEXTINPUTBOX_HEIGHT: int = 26 -RAYGUI_GRID_ALPHA: float = 0.15 -MAX_LINE_BUFFER_SIZE: int = 256 -ICON_TEXT_PADDING: int = 4 -RAYGUI_MAX_TEXT_LINES: int = 128 -RAYGUI_TEXTSPLIT_MAX_ITEMS: int = 128 -RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE: int = 1024 -RAYGUI_TEXTFORMAT_MAX_SIZE: int = 256 -PHYSAC_MAX_BODIES: int = 64 -PHYSAC_MAX_MANIFOLDS: int = 4096 -PHYSAC_MAX_VERTICES: int = 24 -PHYSAC_CIRCLE_VERTICES: int = 24 -PHYSAC_COLLISION_ITERATIONS: int = 20 -PHYSAC_PENETRATION_ALLOWANCE: float = 0.05 -PHYSAC_PENETRATION_CORRECTION: float = 0.4 -PHYSAC_FLT_MAX: float = 3.402823466e+38 -PHYSAC_EPSILON: float = 1e-06 -GLFW_VERSION_MAJOR: int = 3 -GLFW_VERSION_MINOR: int = 4 -GLFW_VERSION_REVISION: int = 0 -GLFW_TRUE: int = 1 -GLFW_FALSE: int = 0 -GLFW_RELEASE: int = 0 -GLFW_PRESS: int = 1 -GLFW_REPEAT: int = 2 -GLFW_HAT_CENTERED: int = 0 -GLFW_HAT_UP: int = 1 -GLFW_HAT_RIGHT: int = 2 -GLFW_HAT_DOWN: int = 4 -GLFW_HAT_LEFT: int = 8 -GLFW_HAT_RIGHT_UP = GLFW_HAT_RIGHT | GLFW_HAT_UP -GLFW_HAT_RIGHT_DOWN = GLFW_HAT_RIGHT | GLFW_HAT_DOWN -GLFW_HAT_LEFT_UP = GLFW_HAT_LEFT | GLFW_HAT_UP -GLFW_HAT_LEFT_DOWN = GLFW_HAT_LEFT | GLFW_HAT_DOWN -GLFW_KEY_SPACE: int = 32 -GLFW_KEY_APOSTROPHE: int = 39 -GLFW_KEY_COMMA: int = 44 -GLFW_KEY_MINUS: int = 45 -GLFW_KEY_PERIOD: int = 46 -GLFW_KEY_SLASH: int = 47 -GLFW_KEY_0: int = 48 -GLFW_KEY_1: int = 49 -GLFW_KEY_2: int = 50 -GLFW_KEY_3: int = 51 -GLFW_KEY_4: int = 52 -GLFW_KEY_5: int = 53 -GLFW_KEY_6: int = 54 -GLFW_KEY_7: int = 55 -GLFW_KEY_8: int = 56 -GLFW_KEY_9: int = 57 -GLFW_KEY_SEMICOLON: int = 59 -GLFW_KEY_EQUAL: int = 61 -GLFW_KEY_A: int = 65 -GLFW_KEY_B: int = 66 -GLFW_KEY_C: int = 67 -GLFW_KEY_D: int = 68 -GLFW_KEY_E: int = 69 -GLFW_KEY_F: int = 70 -GLFW_KEY_G: int = 71 -GLFW_KEY_H: int = 72 -GLFW_KEY_I: int = 73 -GLFW_KEY_J: int = 74 -GLFW_KEY_K: int = 75 -GLFW_KEY_L: int = 76 -GLFW_KEY_M: int = 77 -GLFW_KEY_N: int = 78 -GLFW_KEY_O: int = 79 -GLFW_KEY_P: int = 80 -GLFW_KEY_Q: int = 81 -GLFW_KEY_R: int = 82 -GLFW_KEY_S: int = 83 -GLFW_KEY_T: int = 84 -GLFW_KEY_U: int = 85 -GLFW_KEY_V: int = 86 -GLFW_KEY_W: int = 87 -GLFW_KEY_X: int = 88 -GLFW_KEY_Y: int = 89 -GLFW_KEY_Z: int = 90 -GLFW_KEY_LEFT_BRACKET: int = 91 -GLFW_KEY_BACKSLASH: int = 92 -GLFW_KEY_RIGHT_BRACKET: int = 93 -GLFW_KEY_GRAVE_ACCENT: int = 96 -GLFW_KEY_WORLD_1: int = 161 -GLFW_KEY_WORLD_2: int = 162 -GLFW_KEY_ESCAPE: int = 256 -GLFW_KEY_ENTER: int = 257 -GLFW_KEY_TAB: int = 258 -GLFW_KEY_BACKSPACE: int = 259 -GLFW_KEY_INSERT: int = 260 -GLFW_KEY_DELETE: int = 261 -GLFW_KEY_RIGHT: int = 262 -GLFW_KEY_LEFT: int = 263 -GLFW_KEY_DOWN: int = 264 -GLFW_KEY_UP: int = 265 -GLFW_KEY_PAGE_UP: int = 266 -GLFW_KEY_PAGE_DOWN: int = 267 -GLFW_KEY_HOME: int = 268 -GLFW_KEY_END: int = 269 -GLFW_KEY_CAPS_LOCK: int = 280 -GLFW_KEY_SCROLL_LOCK: int = 281 -GLFW_KEY_NUM_LOCK: int = 282 -GLFW_KEY_PRINT_SCREEN: int = 283 -GLFW_KEY_PAUSE: int = 284 -GLFW_KEY_F1: int = 290 -GLFW_KEY_F2: int = 291 -GLFW_KEY_F3: int = 292 -GLFW_KEY_F4: int = 293 -GLFW_KEY_F5: int = 294 -GLFW_KEY_F6: int = 295 -GLFW_KEY_F7: int = 296 -GLFW_KEY_F8: int = 297 -GLFW_KEY_F9: int = 298 -GLFW_KEY_F10: int = 299 -GLFW_KEY_F11: int = 300 -GLFW_KEY_F12: int = 301 -GLFW_KEY_F13: int = 302 -GLFW_KEY_F14: int = 303 -GLFW_KEY_F15: int = 304 -GLFW_KEY_F16: int = 305 -GLFW_KEY_F17: int = 306 -GLFW_KEY_F18: int = 307 -GLFW_KEY_F19: int = 308 -GLFW_KEY_F20: int = 309 -GLFW_KEY_F21: int = 310 -GLFW_KEY_F22: int = 311 -GLFW_KEY_F23: int = 312 -GLFW_KEY_F24: int = 313 -GLFW_KEY_F25: int = 314 -GLFW_KEY_KP_0: int = 320 -GLFW_KEY_KP_1: int = 321 -GLFW_KEY_KP_2: int = 322 -GLFW_KEY_KP_3: int = 323 -GLFW_KEY_KP_4: int = 324 -GLFW_KEY_KP_5: int = 325 -GLFW_KEY_KP_6: int = 326 -GLFW_KEY_KP_7: int = 327 -GLFW_KEY_KP_8: int = 328 -GLFW_KEY_KP_9: int = 329 -GLFW_KEY_KP_DECIMAL: int = 330 -GLFW_KEY_KP_DIVIDE: int = 331 -GLFW_KEY_KP_MULTIPLY: int = 332 -GLFW_KEY_KP_SUBTRACT: int = 333 -GLFW_KEY_KP_ADD: int = 334 -GLFW_KEY_KP_ENTER: int = 335 -GLFW_KEY_KP_EQUAL: int = 336 -GLFW_KEY_LEFT_SHIFT: int = 340 -GLFW_KEY_LEFT_CONTROL: int = 341 -GLFW_KEY_LEFT_ALT: int = 342 -GLFW_KEY_LEFT_SUPER: int = 343 -GLFW_KEY_RIGHT_SHIFT: int = 344 -GLFW_KEY_RIGHT_CONTROL: int = 345 -GLFW_KEY_RIGHT_ALT: int = 346 -GLFW_KEY_RIGHT_SUPER: int = 347 -GLFW_KEY_MENU: int = 348 -GLFW_MOD_SHIFT: int = 1 -GLFW_MOD_CONTROL: int = 2 -GLFW_MOD_ALT: int = 4 -GLFW_MOD_SUPER: int = 8 -GLFW_MOD_CAPS_LOCK: int = 16 -GLFW_MOD_NUM_LOCK: int = 32 -GLFW_MOUSE_BUTTON_1: int = 0 -GLFW_MOUSE_BUTTON_2: int = 1 -GLFW_MOUSE_BUTTON_3: int = 2 -GLFW_MOUSE_BUTTON_4: int = 3 -GLFW_MOUSE_BUTTON_5: int = 4 -GLFW_MOUSE_BUTTON_6: int = 5 -GLFW_MOUSE_BUTTON_7: int = 6 -GLFW_MOUSE_BUTTON_8: int = 7 -GLFW_JOYSTICK_1: int = 0 -GLFW_JOYSTICK_2: int = 1 -GLFW_JOYSTICK_3: int = 2 -GLFW_JOYSTICK_4: int = 3 -GLFW_JOYSTICK_5: int = 4 -GLFW_JOYSTICK_6: int = 5 -GLFW_JOYSTICK_7: int = 6 -GLFW_JOYSTICK_8: int = 7 -GLFW_JOYSTICK_9: int = 8 -GLFW_JOYSTICK_10: int = 9 -GLFW_JOYSTICK_11: int = 10 -GLFW_JOYSTICK_12: int = 11 -GLFW_JOYSTICK_13: int = 12 -GLFW_JOYSTICK_14: int = 13 -GLFW_JOYSTICK_15: int = 14 -GLFW_JOYSTICK_16: int = 15 -GLFW_GAMEPAD_BUTTON_A: int = 0 -GLFW_GAMEPAD_BUTTON_B: int = 1 -GLFW_GAMEPAD_BUTTON_X: int = 2 -GLFW_GAMEPAD_BUTTON_Y: int = 3 -GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: int = 4 -GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: int = 5 -GLFW_GAMEPAD_BUTTON_BACK: int = 6 -GLFW_GAMEPAD_BUTTON_START: int = 7 -GLFW_GAMEPAD_BUTTON_GUIDE: int = 8 -GLFW_GAMEPAD_BUTTON_LEFT_THUMB: int = 9 -GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: int = 10 -GLFW_GAMEPAD_BUTTON_DPAD_UP: int = 11 -GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: int = 12 -GLFW_GAMEPAD_BUTTON_DPAD_DOWN: int = 13 -GLFW_GAMEPAD_BUTTON_DPAD_LEFT: int = 14 -GLFW_GAMEPAD_AXIS_LEFT_X: int = 0 -GLFW_GAMEPAD_AXIS_LEFT_Y: int = 1 -GLFW_GAMEPAD_AXIS_RIGHT_X: int = 2 -GLFW_GAMEPAD_AXIS_RIGHT_Y: int = 3 -GLFW_GAMEPAD_AXIS_LEFT_TRIGGER: int = 4 -GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER: int = 5 -GLFW_NO_ERROR: int = 0 -GLFW_NOT_INITIALIZED: int = 65537 -GLFW_NO_CURRENT_CONTEXT: int = 65538 -GLFW_INVALID_ENUM: int = 65539 -GLFW_INVALID_VALUE: int = 65540 -GLFW_OUT_OF_MEMORY: int = 65541 -GLFW_API_UNAVAILABLE: int = 65542 -GLFW_VERSION_UNAVAILABLE: int = 65543 -GLFW_PLATFORM_ERROR: int = 65544 -GLFW_FORMAT_UNAVAILABLE: int = 65545 -GLFW_NO_WINDOW_CONTEXT: int = 65546 -GLFW_CURSOR_UNAVAILABLE: int = 65547 -GLFW_FEATURE_UNAVAILABLE: int = 65548 -GLFW_FEATURE_UNIMPLEMENTED: int = 65549 -GLFW_PLATFORM_UNAVAILABLE: int = 65550 -GLFW_FOCUSED: int = 131073 -GLFW_ICONIFIED: int = 131074 -GLFW_RESIZABLE: int = 131075 -GLFW_VISIBLE: int = 131076 -GLFW_DECORATED: int = 131077 -GLFW_AUTO_ICONIFY: int = 131078 -GLFW_FLOATING: int = 131079 -GLFW_MAXIMIZED: int = 131080 -GLFW_CENTER_CURSOR: int = 131081 -GLFW_TRANSPARENT_FRAMEBUFFER: int = 131082 -GLFW_HOVERED: int = 131083 -GLFW_FOCUS_ON_SHOW: int = 131084 -GLFW_MOUSE_PASSTHROUGH: int = 131085 -GLFW_POSITION_X: int = 131086 -GLFW_POSITION_Y: int = 131087 -GLFW_RED_BITS: int = 135169 -GLFW_GREEN_BITS: int = 135170 -GLFW_BLUE_BITS: int = 135171 -GLFW_ALPHA_BITS: int = 135172 -GLFW_DEPTH_BITS: int = 135173 -GLFW_STENCIL_BITS: int = 135174 -GLFW_ACCUM_RED_BITS: int = 135175 -GLFW_ACCUM_GREEN_BITS: int = 135176 -GLFW_ACCUM_BLUE_BITS: int = 135177 -GLFW_ACCUM_ALPHA_BITS: int = 135178 -GLFW_AUX_BUFFERS: int = 135179 -GLFW_STEREO: int = 135180 -GLFW_SAMPLES: int = 135181 -GLFW_SRGB_CAPABLE: int = 135182 -GLFW_REFRESH_RATE: int = 135183 -GLFW_DOUBLEBUFFER: int = 135184 -GLFW_CLIENT_API: int = 139265 -GLFW_CONTEXT_VERSION_MAJOR: int = 139266 -GLFW_CONTEXT_VERSION_MINOR: int = 139267 -GLFW_CONTEXT_REVISION: int = 139268 -GLFW_CONTEXT_ROBUSTNESS: int = 139269 -GLFW_OPENGL_FORWARD_COMPAT: int = 139270 -GLFW_CONTEXT_DEBUG: int = 139271 -GLFW_OPENGL_PROFILE: int = 139272 -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 -GLFW_OPENGL_ES_API: int = 196610 -GLFW_NO_ROBUSTNESS: int = 0 -GLFW_NO_RESET_NOTIFICATION: int = 200705 -GLFW_LOSE_CONTEXT_ON_RESET: int = 200706 -GLFW_OPENGL_ANY_PROFILE: int = 0 -GLFW_OPENGL_CORE_PROFILE: int = 204801 -GLFW_OPENGL_COMPAT_PROFILE: int = 204802 -GLFW_CURSOR: int = 208897 -GLFW_STICKY_KEYS: int = 208898 -GLFW_STICKY_MOUSE_BUTTONS: int = 208899 -GLFW_LOCK_KEY_MODS: int = 208900 -GLFW_RAW_MOUSE_MOTION: int = 208901 -GLFW_CURSOR_NORMAL: int = 212993 -GLFW_CURSOR_HIDDEN: int = 212994 -GLFW_CURSOR_DISABLED: int = 212995 -GLFW_CURSOR_CAPTURED: int = 212996 -GLFW_ANY_RELEASE_BEHAVIOR: int = 0 -GLFW_RELEASE_BEHAVIOR_FLUSH: int = 217089 -GLFW_RELEASE_BEHAVIOR_NONE: int = 217090 -GLFW_NATIVE_CONTEXT_API: int = 221185 -GLFW_EGL_CONTEXT_API: int = 221186 -GLFW_OSMESA_CONTEXT_API: int = 221187 -GLFW_ANGLE_PLATFORM_TYPE_NONE: int = 225281 -GLFW_ANGLE_PLATFORM_TYPE_OPENGL: int = 225282 -GLFW_ANGLE_PLATFORM_TYPE_OPENGLES: int = 225283 -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 -GLFW_CROSSHAIR_CURSOR: int = 221187 -GLFW_POINTING_HAND_CURSOR: int = 221188 -GLFW_RESIZE_EW_CURSOR: int = 221189 -GLFW_RESIZE_NS_CURSOR: int = 221190 -GLFW_RESIZE_NWSE_CURSOR: int = 221191 -GLFW_RESIZE_NESW_CURSOR: int = 221192 -GLFW_RESIZE_ALL_CURSOR: int = 221193 -GLFW_NOT_ALLOWED_CURSOR: int = 221194 -GLFW_CONNECTED: int = 262145 -GLFW_DISCONNECTED: int = 262146 -GLFW_JOYSTICK_HAT_BUTTONS: int = 327681 -GLFW_ANGLE_PLATFORM_TYPE: int = 327682 -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 -GLFW_PLATFORM_WAYLAND: int = 393219 -GLFW_PLATFORM_X11: int = 393220 -GLFW_PLATFORM_NULL: int = 393221 diff --git a/raylib/dynamic/32bit/libraylib.dll b/raylib/dynamic/32bit/libraylib.dll new file mode 100644 index 0000000..981e190 Binary files /dev/null and b/raylib/dynamic/32bit/libraylib.dll differ diff --git a/raylib/dynamic/32bit/raylib.dll b/raylib/dynamic/32bit/raylib.dll new file mode 100644 index 0000000..961c8b7 Binary files /dev/null and b/raylib/dynamic/32bit/raylib.dll differ diff --git a/raylib/dynamic/__init__.py b/raylib/dynamic/__init__.py new file mode 100644 index 0000000..bf60908 --- /dev/null +++ b/raylib/dynamic/__init__.py @@ -0,0 +1,37 @@ +""" +This is an attempt at a CFFI dynamic (ABI) binding. It was failing in the exactly same place the ctypes binding fails, accessing +materials of a model. But now it __seems__ to work +""" + +import platform + +# Probably unnecessary, just covering all bases in case people add or remove dlls +MAC_NAMES = ['libraylib.2.6.0.dylib', 'libraylib.261.dylib', 'libraylib.dylib'] +LINUX_NAMES = ['libraylib.so.2.6.0','libraylib.so.2', 'libraylib.so'] +WINDOWS_NAMES = ['libraylib.dll', 'raylib.dll','32bit/raylib.dll', '32bit/libraylib.dll'] + +if platform.system() == "Darwin": + NAMES_TO_TRY = MAC_NAMES +elif platform.system() == "Linux": + NAMES_TO_TRY = LINUX_NAMES +elif platform.system() == "Windows": + NAMES_TO_TRY = WINDOWS_NAMES +else: + NAMES_TO_TRY = MAC_NAMES + LINUX_NAMES + WINDOWS_NAMES + +import pathlib +MODULE = pathlib.Path(__file__).parent.parent + +from cffi import FFI +ffi = FFI() +ffi.cdef(open(MODULE / "raylib_modified.h").read().replace('RLAPI ', '')) + +for name in NAMES_TO_TRY: + file = str(MODULE)+"/dynamic/"+name + try: + raylib = ffi.dlopen(file) + print("LOADED DYNAMICALLY SHARED LIB "+file) + break + except Exception as e: + print(e) + diff --git a/raylib/dynamic/libraylib.2.6.0.dylib b/raylib/dynamic/libraylib.2.6.0.dylib new file mode 100755 index 0000000..d6199c5 Binary files /dev/null and b/raylib/dynamic/libraylib.2.6.0.dylib differ diff --git a/raylib/dynamic/libraylib.261.dylib b/raylib/dynamic/libraylib.261.dylib new file mode 100755 index 0000000..d6199c5 Binary files /dev/null and b/raylib/dynamic/libraylib.261.dylib differ diff --git a/raylib/dynamic/libraylib.dll b/raylib/dynamic/libraylib.dll new file mode 100644 index 0000000..fc73cd1 Binary files /dev/null and b/raylib/dynamic/libraylib.dll differ diff --git a/raylib/dynamic/libraylib.dylib b/raylib/dynamic/libraylib.dylib new file mode 100755 index 0000000..d6199c5 Binary files /dev/null and b/raylib/dynamic/libraylib.dylib differ diff --git a/raylib/dynamic/libraylib.so b/raylib/dynamic/libraylib.so new file mode 120000 index 0000000..b40e75c --- /dev/null +++ b/raylib/dynamic/libraylib.so @@ -0,0 +1 @@ +libraylib.so.2.5.0 \ No newline at end of file diff --git a/raylib/dynamic/libraylib.so.2 b/raylib/dynamic/libraylib.so.2 new file mode 120000 index 0000000..b40e75c --- /dev/null +++ b/raylib/dynamic/libraylib.so.2 @@ -0,0 +1 @@ +libraylib.so.2.5.0 \ No newline at end of file diff --git a/raylib/dynamic/libraylib.so.2.6.0 b/raylib/dynamic/libraylib.so.2.6.0 new file mode 100644 index 0000000..a3852b2 Binary files /dev/null and b/raylib/dynamic/libraylib.so.2.6.0 differ diff --git a/raylib/dynamic/raylib.dll b/raylib/dynamic/raylib.dll new file mode 100644 index 0000000..7d142e7 Binary files /dev/null and b/raylib/dynamic/raylib.dll differ diff --git a/raylib/enums.py b/raylib/enums.py deleted file mode 100644 index d33b987..0000000 --- a/raylib/enums.py +++ /dev/null @@ -1,759 +0,0 @@ -from enum import IntEnum - -class ConfigFlags(IntEnum): - """System/Window config flags.""" - FLAG_VSYNC_HINT = 64 - FLAG_FULLSCREEN_MODE = 2 - FLAG_WINDOW_RESIZABLE = 4 - FLAG_WINDOW_UNDECORATED = 8 - FLAG_WINDOW_HIDDEN = 128 - FLAG_WINDOW_MINIMIZED = 512 - FLAG_WINDOW_MAXIMIZED = 1024 - FLAG_WINDOW_UNFOCUSED = 2048 - FLAG_WINDOW_TOPMOST = 4096 - FLAG_WINDOW_ALWAYS_RUN = 256 - FLAG_WINDOW_TRANSPARENT = 16 - FLAG_WINDOW_HIGHDPI = 8192 - FLAG_WINDOW_MOUSE_PASSTHROUGH = 16384 - FLAG_BORDERLESS_WINDOWED_MODE = 32768 - FLAG_MSAA_4X_HINT = 32 - FLAG_INTERLACED_HINT = 65536 - -class TraceLogLevel(IntEnum): - """Trace log level.""" - LOG_ALL = 0 - LOG_TRACE = 1 - LOG_DEBUG = 2 - LOG_INFO = 3 - LOG_WARNING = 4 - LOG_ERROR = 5 - LOG_FATAL = 6 - LOG_NONE = 7 - -class KeyboardKey(IntEnum): - """Keyboard keys (US keyboard layout).""" - KEY_NULL = 0 - KEY_APOSTROPHE = 39 - KEY_COMMA = 44 - KEY_MINUS = 45 - KEY_PERIOD = 46 - KEY_SLASH = 47 - KEY_ZERO = 48 - KEY_ONE = 49 - KEY_TWO = 50 - KEY_THREE = 51 - KEY_FOUR = 52 - KEY_FIVE = 53 - KEY_SIX = 54 - KEY_SEVEN = 55 - KEY_EIGHT = 56 - KEY_NINE = 57 - KEY_SEMICOLON = 59 - KEY_EQUAL = 61 - KEY_A = 65 - KEY_B = 66 - KEY_C = 67 - KEY_D = 68 - KEY_E = 69 - KEY_F = 70 - KEY_G = 71 - KEY_H = 72 - KEY_I = 73 - KEY_J = 74 - KEY_K = 75 - KEY_L = 76 - KEY_M = 77 - KEY_N = 78 - KEY_O = 79 - KEY_P = 80 - KEY_Q = 81 - KEY_R = 82 - KEY_S = 83 - KEY_T = 84 - KEY_U = 85 - KEY_V = 86 - KEY_W = 87 - KEY_X = 88 - KEY_Y = 89 - KEY_Z = 90 - KEY_LEFT_BRACKET = 91 - KEY_BACKSLASH = 92 - KEY_RIGHT_BRACKET = 93 - KEY_GRAVE = 96 - KEY_SPACE = 32 - KEY_ESCAPE = 256 - KEY_ENTER = 257 - KEY_TAB = 258 - KEY_BACKSPACE = 259 - KEY_INSERT = 260 - KEY_DELETE = 261 - KEY_RIGHT = 262 - KEY_LEFT = 263 - KEY_DOWN = 264 - KEY_UP = 265 - KEY_PAGE_UP = 266 - KEY_PAGE_DOWN = 267 - KEY_HOME = 268 - KEY_END = 269 - KEY_CAPS_LOCK = 280 - KEY_SCROLL_LOCK = 281 - KEY_NUM_LOCK = 282 - KEY_PRINT_SCREEN = 283 - KEY_PAUSE = 284 - KEY_F1 = 290 - KEY_F2 = 291 - KEY_F3 = 292 - KEY_F4 = 293 - KEY_F5 = 294 - KEY_F6 = 295 - KEY_F7 = 296 - KEY_F8 = 297 - KEY_F9 = 298 - KEY_F10 = 299 - KEY_F11 = 300 - KEY_F12 = 301 - KEY_LEFT_SHIFT = 340 - KEY_LEFT_CONTROL = 341 - KEY_LEFT_ALT = 342 - KEY_LEFT_SUPER = 343 - KEY_RIGHT_SHIFT = 344 - KEY_RIGHT_CONTROL = 345 - KEY_RIGHT_ALT = 346 - KEY_RIGHT_SUPER = 347 - KEY_KB_MENU = 348 - KEY_KP_0 = 320 - KEY_KP_1 = 321 - KEY_KP_2 = 322 - KEY_KP_3 = 323 - KEY_KP_4 = 324 - KEY_KP_5 = 325 - KEY_KP_6 = 326 - KEY_KP_7 = 327 - KEY_KP_8 = 328 - KEY_KP_9 = 329 - KEY_KP_DECIMAL = 330 - KEY_KP_DIVIDE = 331 - KEY_KP_MULTIPLY = 332 - KEY_KP_SUBTRACT = 333 - KEY_KP_ADD = 334 - KEY_KP_ENTER = 335 - KEY_KP_EQUAL = 336 - KEY_BACK = 4 - KEY_MENU = 5 - KEY_VOLUME_UP = 24 - KEY_VOLUME_DOWN = 25 - -class MouseButton(IntEnum): - """Mouse buttons.""" - MOUSE_BUTTON_LEFT = 0 - MOUSE_BUTTON_RIGHT = 1 - MOUSE_BUTTON_MIDDLE = 2 - MOUSE_BUTTON_SIDE = 3 - MOUSE_BUTTON_EXTRA = 4 - MOUSE_BUTTON_FORWARD = 5 - MOUSE_BUTTON_BACK = 6 - -class MouseCursor(IntEnum): - """Mouse cursor.""" - MOUSE_CURSOR_DEFAULT = 0 - MOUSE_CURSOR_ARROW = 1 - MOUSE_CURSOR_IBEAM = 2 - MOUSE_CURSOR_CROSSHAIR = 3 - MOUSE_CURSOR_POINTING_HAND = 4 - MOUSE_CURSOR_RESIZE_EW = 5 - MOUSE_CURSOR_RESIZE_NS = 6 - MOUSE_CURSOR_RESIZE_NWSE = 7 - MOUSE_CURSOR_RESIZE_NESW = 8 - MOUSE_CURSOR_RESIZE_ALL = 9 - MOUSE_CURSOR_NOT_ALLOWED = 10 - -class GamepadButton(IntEnum): - """Gamepad buttons.""" - GAMEPAD_BUTTON_UNKNOWN = 0 - GAMEPAD_BUTTON_LEFT_FACE_UP = 1 - GAMEPAD_BUTTON_LEFT_FACE_RIGHT = 2 - GAMEPAD_BUTTON_LEFT_FACE_DOWN = 3 - GAMEPAD_BUTTON_LEFT_FACE_LEFT = 4 - GAMEPAD_BUTTON_RIGHT_FACE_UP = 5 - GAMEPAD_BUTTON_RIGHT_FACE_RIGHT = 6 - GAMEPAD_BUTTON_RIGHT_FACE_DOWN = 7 - GAMEPAD_BUTTON_RIGHT_FACE_LEFT = 8 - GAMEPAD_BUTTON_LEFT_TRIGGER_1 = 9 - GAMEPAD_BUTTON_LEFT_TRIGGER_2 = 10 - GAMEPAD_BUTTON_RIGHT_TRIGGER_1 = 11 - GAMEPAD_BUTTON_RIGHT_TRIGGER_2 = 12 - GAMEPAD_BUTTON_MIDDLE_LEFT = 13 - GAMEPAD_BUTTON_MIDDLE = 14 - GAMEPAD_BUTTON_MIDDLE_RIGHT = 15 - GAMEPAD_BUTTON_LEFT_THUMB = 16 - GAMEPAD_BUTTON_RIGHT_THUMB = 17 - -class GamepadAxis(IntEnum): - """Gamepad axis.""" - GAMEPAD_AXIS_LEFT_X = 0 - GAMEPAD_AXIS_LEFT_Y = 1 - GAMEPAD_AXIS_RIGHT_X = 2 - GAMEPAD_AXIS_RIGHT_Y = 3 - GAMEPAD_AXIS_LEFT_TRIGGER = 4 - GAMEPAD_AXIS_RIGHT_TRIGGER = 5 - -class MaterialMapIndex(IntEnum): - """Material map index.""" - MATERIAL_MAP_ALBEDO = 0 - MATERIAL_MAP_METALNESS = 1 - MATERIAL_MAP_NORMAL = 2 - MATERIAL_MAP_ROUGHNESS = 3 - MATERIAL_MAP_OCCLUSION = 4 - MATERIAL_MAP_EMISSION = 5 - MATERIAL_MAP_HEIGHT = 6 - MATERIAL_MAP_CUBEMAP = 7 - MATERIAL_MAP_IRRADIANCE = 8 - MATERIAL_MAP_PREFILTER = 9 - MATERIAL_MAP_BRDF = 10 - -class ShaderLocationIndex(IntEnum): - """Shader location index.""" - SHADER_LOC_VERTEX_POSITION = 0 - SHADER_LOC_VERTEX_TEXCOORD01 = 1 - SHADER_LOC_VERTEX_TEXCOORD02 = 2 - SHADER_LOC_VERTEX_NORMAL = 3 - SHADER_LOC_VERTEX_TANGENT = 4 - SHADER_LOC_VERTEX_COLOR = 5 - SHADER_LOC_MATRIX_MVP = 6 - SHADER_LOC_MATRIX_VIEW = 7 - SHADER_LOC_MATRIX_PROJECTION = 8 - SHADER_LOC_MATRIX_MODEL = 9 - SHADER_LOC_MATRIX_NORMAL = 10 - SHADER_LOC_VECTOR_VIEW = 11 - SHADER_LOC_COLOR_DIFFUSE = 12 - SHADER_LOC_COLOR_SPECULAR = 13 - SHADER_LOC_COLOR_AMBIENT = 14 - SHADER_LOC_MAP_ALBEDO = 15 - SHADER_LOC_MAP_METALNESS = 16 - SHADER_LOC_MAP_NORMAL = 17 - SHADER_LOC_MAP_ROUGHNESS = 18 - SHADER_LOC_MAP_OCCLUSION = 19 - SHADER_LOC_MAP_EMISSION = 20 - SHADER_LOC_MAP_HEIGHT = 21 - SHADER_LOC_MAP_CUBEMAP = 22 - 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 data type.""" - SHADER_UNIFORM_FLOAT = 0 - SHADER_UNIFORM_VEC2 = 1 - SHADER_UNIFORM_VEC3 = 2 - SHADER_UNIFORM_VEC4 = 3 - SHADER_UNIFORM_INT = 4 - SHADER_UNIFORM_IVEC2 = 5 - SHADER_UNIFORM_IVEC3 = 6 - SHADER_UNIFORM_IVEC4 = 7 - SHADER_UNIFORM_SAMPLER2D = 8 - -class ShaderAttributeDataType(IntEnum): - """Shader attribute data types.""" - SHADER_ATTRIB_FLOAT = 0 - SHADER_ATTRIB_VEC2 = 1 - SHADER_ATTRIB_VEC3 = 2 - SHADER_ATTRIB_VEC4 = 3 - -class PixelFormat(IntEnum): - """Pixel formats.""" - PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1 - PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2 - PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3 - PIXELFORMAT_UNCOMPRESSED_R8G8B8 = 4 - PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = 5 - PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = 6 - PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = 7 - PIXELFORMAT_UNCOMPRESSED_R32 = 8 - PIXELFORMAT_UNCOMPRESSED_R32G32B32 = 9 - PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = 10 - PIXELFORMAT_UNCOMPRESSED_R16 = 11 - PIXELFORMAT_UNCOMPRESSED_R16G16B16 = 12 - PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 = 13 - PIXELFORMAT_COMPRESSED_DXT1_RGB = 14 - PIXELFORMAT_COMPRESSED_DXT1_RGBA = 15 - PIXELFORMAT_COMPRESSED_DXT3_RGBA = 16 - PIXELFORMAT_COMPRESSED_DXT5_RGBA = 17 - PIXELFORMAT_COMPRESSED_ETC1_RGB = 18 - PIXELFORMAT_COMPRESSED_ETC2_RGB = 19 - PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = 20 - PIXELFORMAT_COMPRESSED_PVRT_RGB = 21 - PIXELFORMAT_COMPRESSED_PVRT_RGBA = 22 - PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 23 - PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 24 - -class TextureFilter(IntEnum): - """Texture parameters: filter mode.""" - TEXTURE_FILTER_POINT = 0 - TEXTURE_FILTER_BILINEAR = 1 - TEXTURE_FILTER_TRILINEAR = 2 - TEXTURE_FILTER_ANISOTROPIC_4X = 3 - TEXTURE_FILTER_ANISOTROPIC_8X = 4 - TEXTURE_FILTER_ANISOTROPIC_16X = 5 - -class TextureWrap(IntEnum): - """Texture parameters: wrap mode.""" - TEXTURE_WRAP_REPEAT = 0 - TEXTURE_WRAP_CLAMP = 1 - TEXTURE_WRAP_MIRROR_REPEAT = 2 - TEXTURE_WRAP_MIRROR_CLAMP = 3 - -class CubemapLayout(IntEnum): - """Cubemap layouts.""" - CUBEMAP_LAYOUT_AUTO_DETECT = 0 - CUBEMAP_LAYOUT_LINE_VERTICAL = 1 - CUBEMAP_LAYOUT_LINE_HORIZONTAL = 2 - CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR = 3 - CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE = 4 - -class FontType(IntEnum): - """Font type, defines generation method.""" - FONT_DEFAULT = 0 - FONT_BITMAP = 1 - FONT_SDF = 2 - -class BlendMode(IntEnum): - """Color blending modes (pre-defined).""" - BLEND_ALPHA = 0 - BLEND_ADDITIVE = 1 - BLEND_MULTIPLIED = 2 - BLEND_ADD_COLORS = 3 - BLEND_SUBTRACT_COLORS = 4 - BLEND_ALPHA_PREMULTIPLY = 5 - BLEND_CUSTOM = 6 - BLEND_CUSTOM_SEPARATE = 7 - -class Gesture(IntEnum): - """Gesture.""" - GESTURE_NONE = 0 - GESTURE_TAP = 1 - GESTURE_DOUBLETAP = 2 - GESTURE_HOLD = 4 - GESTURE_DRAG = 8 - GESTURE_SWIPE_RIGHT = 16 - GESTURE_SWIPE_LEFT = 32 - GESTURE_SWIPE_UP = 64 - GESTURE_SWIPE_DOWN = 128 - GESTURE_PINCH_IN = 256 - GESTURE_PINCH_OUT = 512 - -class CameraMode(IntEnum): - """Camera system modes.""" - CAMERA_CUSTOM = 0 - CAMERA_FREE = 1 - CAMERA_ORBITAL = 2 - CAMERA_FIRST_PERSON = 3 - CAMERA_THIRD_PERSON = 4 - -class CameraProjection(IntEnum): - """Camera projection.""" - CAMERA_PERSPECTIVE = 0 - CAMERA_ORTHOGRAPHIC = 1 - -class NPatchLayout(IntEnum): - """N-patch layout.""" - NPATCH_NINE_PATCH = 0 - NPATCH_THREE_PATCH_VERTICAL = 1 - NPATCH_THREE_PATCH_HORIZONTAL = 2 - -class GuiState(IntEnum): - """Gui control state.""" - STATE_NORMAL = 0 - STATE_FOCUSED = 1 - STATE_PRESSED = 2 - STATE_DISABLED = 3 - -class GuiTextAlignment(IntEnum): - """Gui control text alignment.""" - TEXT_ALIGN_LEFT = 0 - TEXT_ALIGN_CENTER = 1 - TEXT_ALIGN_RIGHT = 2 - -class GuiTextAlignmentVertical(IntEnum): - """Gui control text alignment vertical.""" - TEXT_ALIGN_TOP = 0 - TEXT_ALIGN_MIDDLE = 1 - TEXT_ALIGN_BOTTOM = 2 - -class GuiTextWrapMode(IntEnum): - """Gui control text wrap mode.""" - TEXT_WRAP_NONE = 0 - TEXT_WRAP_CHAR = 1 - TEXT_WRAP_WORD = 2 - -class GuiControl(IntEnum): - """Gui controls.""" - DEFAULT = 0 - LABEL = 1 - BUTTON = 2 - TOGGLE = 3 - SLIDER = 4 - PROGRESSBAR = 5 - CHECKBOX = 6 - COMBOBOX = 7 - DROPDOWNBOX = 8 - TEXTBOX = 9 - VALUEBOX = 10 - SPINNER = 11 - LISTVIEW = 12 - COLORPICKER = 13 - SCROLLBAR = 14 - STATUSBAR = 15 - -class GuiControlProperty(IntEnum): - """Gui base properties for every control.""" - BORDER_COLOR_NORMAL = 0 - BASE_COLOR_NORMAL = 1 - TEXT_COLOR_NORMAL = 2 - BORDER_COLOR_FOCUSED = 3 - BASE_COLOR_FOCUSED = 4 - TEXT_COLOR_FOCUSED = 5 - BORDER_COLOR_PRESSED = 6 - BASE_COLOR_PRESSED = 7 - TEXT_COLOR_PRESSED = 8 - BORDER_COLOR_DISABLED = 9 - BASE_COLOR_DISABLED = 10 - TEXT_COLOR_DISABLED = 11 - BORDER_WIDTH = 12 - TEXT_PADDING = 13 - TEXT_ALIGNMENT = 14 - -class GuiDefaultProperty(IntEnum): - """DEFAULT extended properties.""" - TEXT_SIZE = 16 - TEXT_SPACING = 17 - LINE_COLOR = 18 - BACKGROUND_COLOR = 19 - TEXT_LINE_SPACING = 20 - TEXT_ALIGNMENT_VERTICAL = 21 - TEXT_WRAP_MODE = 22 - -class GuiToggleProperty(IntEnum): - """Toggle/ToggleGroup.""" - GROUP_PADDING = 16 - -class GuiSliderProperty(IntEnum): - """Slider/SliderBar.""" - SLIDER_WIDTH = 16 - SLIDER_PADDING = 17 - -class GuiProgressBarProperty(IntEnum): - """ProgressBar.""" - PROGRESS_PADDING = 16 - -class GuiScrollBarProperty(IntEnum): - """ScrollBar.""" - ARROWS_SIZE = 16 - ARROWS_VISIBLE = 17 - SCROLL_SLIDER_PADDING = 18 - SCROLL_SLIDER_SIZE = 19 - SCROLL_PADDING = 20 - SCROLL_SPEED = 21 - -class GuiCheckBoxProperty(IntEnum): - """CheckBox.""" - CHECK_PADDING = 16 - -class GuiComboBoxProperty(IntEnum): - """ComboBox.""" - COMBO_BUTTON_WIDTH = 16 - COMBO_BUTTON_SPACING = 17 - -class GuiDropdownBoxProperty(IntEnum): - """DropdownBox.""" - ARROW_PADDING = 16 - DROPDOWN_ITEMS_SPACING = 17 - DROPDOWN_ARROW_HIDDEN = 18 - DROPDOWN_ROLL_UP = 19 - -class GuiTextBoxProperty(IntEnum): - """TextBox/TextBoxMulti/ValueBox/Spinner.""" - TEXT_READONLY = 16 - -class GuiSpinnerProperty(IntEnum): - """Spinner.""" - SPIN_BUTTON_WIDTH = 16 - SPIN_BUTTON_SPACING = 17 - -class GuiListViewProperty(IntEnum): - """ListView.""" - LIST_ITEMS_HEIGHT = 16 - LIST_ITEMS_SPACING = 17 - SCROLLBAR_WIDTH = 18 - SCROLLBAR_SIDE = 19 - LIST_ITEMS_BORDER_WIDTH = 20 - -class GuiColorPickerProperty(IntEnum): - """ColorPicker.""" - COLOR_SELECTOR_SIZE = 16 - HUEBAR_WIDTH = 17 - HUEBAR_PADDING = 18 - HUEBAR_SELECTOR_HEIGHT = 19 - HUEBAR_SELECTOR_OVERFLOW = 20 - -class GuiIconName(IntEnum): - """.""" - ICON_NONE = 0 - ICON_FOLDER_FILE_OPEN = 1 - ICON_FILE_SAVE_CLASSIC = 2 - ICON_FOLDER_OPEN = 3 - ICON_FOLDER_SAVE = 4 - ICON_FILE_OPEN = 5 - ICON_FILE_SAVE = 6 - ICON_FILE_EXPORT = 7 - ICON_FILE_ADD = 8 - ICON_FILE_DELETE = 9 - ICON_FILETYPE_TEXT = 10 - ICON_FILETYPE_AUDIO = 11 - ICON_FILETYPE_IMAGE = 12 - ICON_FILETYPE_PLAY = 13 - ICON_FILETYPE_VIDEO = 14 - ICON_FILETYPE_INFO = 15 - ICON_FILE_COPY = 16 - ICON_FILE_CUT = 17 - ICON_FILE_PASTE = 18 - ICON_CURSOR_HAND = 19 - ICON_CURSOR_POINTER = 20 - ICON_CURSOR_CLASSIC = 21 - ICON_PENCIL = 22 - ICON_PENCIL_BIG = 23 - ICON_BRUSH_CLASSIC = 24 - ICON_BRUSH_PAINTER = 25 - ICON_WATER_DROP = 26 - ICON_COLOR_PICKER = 27 - ICON_RUBBER = 28 - ICON_COLOR_BUCKET = 29 - ICON_TEXT_T = 30 - ICON_TEXT_A = 31 - ICON_SCALE = 32 - ICON_RESIZE = 33 - ICON_FILTER_POINT = 34 - ICON_FILTER_BILINEAR = 35 - ICON_CROP = 36 - ICON_CROP_ALPHA = 37 - ICON_SQUARE_TOGGLE = 38 - ICON_SYMMETRY = 39 - ICON_SYMMETRY_HORIZONTAL = 40 - ICON_SYMMETRY_VERTICAL = 41 - ICON_LENS = 42 - ICON_LENS_BIG = 43 - ICON_EYE_ON = 44 - ICON_EYE_OFF = 45 - ICON_FILTER_TOP = 46 - ICON_FILTER = 47 - ICON_TARGET_POINT = 48 - ICON_TARGET_SMALL = 49 - ICON_TARGET_BIG = 50 - ICON_TARGET_MOVE = 51 - ICON_CURSOR_MOVE = 52 - ICON_CURSOR_SCALE = 53 - ICON_CURSOR_SCALE_RIGHT = 54 - ICON_CURSOR_SCALE_LEFT = 55 - ICON_UNDO = 56 - ICON_REDO = 57 - ICON_REREDO = 58 - ICON_MUTATE = 59 - ICON_ROTATE = 60 - ICON_REPEAT = 61 - ICON_SHUFFLE = 62 - ICON_EMPTYBOX = 63 - ICON_TARGET = 64 - ICON_TARGET_SMALL_FILL = 65 - ICON_TARGET_BIG_FILL = 66 - ICON_TARGET_MOVE_FILL = 67 - ICON_CURSOR_MOVE_FILL = 68 - ICON_CURSOR_SCALE_FILL = 69 - ICON_CURSOR_SCALE_RIGHT_FILL = 70 - ICON_CURSOR_SCALE_LEFT_FILL = 71 - ICON_UNDO_FILL = 72 - ICON_REDO_FILL = 73 - ICON_REREDO_FILL = 74 - ICON_MUTATE_FILL = 75 - ICON_ROTATE_FILL = 76 - ICON_REPEAT_FILL = 77 - ICON_SHUFFLE_FILL = 78 - ICON_EMPTYBOX_SMALL = 79 - ICON_BOX = 80 - ICON_BOX_TOP = 81 - ICON_BOX_TOP_RIGHT = 82 - ICON_BOX_RIGHT = 83 - ICON_BOX_BOTTOM_RIGHT = 84 - ICON_BOX_BOTTOM = 85 - ICON_BOX_BOTTOM_LEFT = 86 - ICON_BOX_LEFT = 87 - ICON_BOX_TOP_LEFT = 88 - ICON_BOX_CENTER = 89 - ICON_BOX_CIRCLE_MASK = 90 - ICON_POT = 91 - ICON_ALPHA_MULTIPLY = 92 - ICON_ALPHA_CLEAR = 93 - ICON_DITHERING = 94 - ICON_MIPMAPS = 95 - ICON_BOX_GRID = 96 - ICON_GRID = 97 - ICON_BOX_CORNERS_SMALL = 98 - ICON_BOX_CORNERS_BIG = 99 - ICON_FOUR_BOXES = 100 - ICON_GRID_FILL = 101 - ICON_BOX_MULTISIZE = 102 - ICON_ZOOM_SMALL = 103 - ICON_ZOOM_MEDIUM = 104 - ICON_ZOOM_BIG = 105 - ICON_ZOOM_ALL = 106 - ICON_ZOOM_CENTER = 107 - ICON_BOX_DOTS_SMALL = 108 - ICON_BOX_DOTS_BIG = 109 - ICON_BOX_CONCENTRIC = 110 - ICON_BOX_GRID_BIG = 111 - ICON_OK_TICK = 112 - ICON_CROSS = 113 - ICON_ARROW_LEFT = 114 - ICON_ARROW_RIGHT = 115 - ICON_ARROW_DOWN = 116 - ICON_ARROW_UP = 117 - ICON_ARROW_LEFT_FILL = 118 - ICON_ARROW_RIGHT_FILL = 119 - ICON_ARROW_DOWN_FILL = 120 - ICON_ARROW_UP_FILL = 121 - ICON_AUDIO = 122 - ICON_FX = 123 - ICON_WAVE = 124 - ICON_WAVE_SINUS = 125 - ICON_WAVE_SQUARE = 126 - ICON_WAVE_TRIANGULAR = 127 - ICON_CROSS_SMALL = 128 - ICON_PLAYER_PREVIOUS = 129 - ICON_PLAYER_PLAY_BACK = 130 - ICON_PLAYER_PLAY = 131 - ICON_PLAYER_PAUSE = 132 - ICON_PLAYER_STOP = 133 - ICON_PLAYER_NEXT = 134 - ICON_PLAYER_RECORD = 135 - ICON_MAGNET = 136 - ICON_LOCK_CLOSE = 137 - ICON_LOCK_OPEN = 138 - ICON_CLOCK = 139 - ICON_TOOLS = 140 - ICON_GEAR = 141 - ICON_GEAR_BIG = 142 - ICON_BIN = 143 - ICON_HAND_POINTER = 144 - ICON_LASER = 145 - ICON_COIN = 146 - ICON_EXPLOSION = 147 - ICON_1UP = 148 - ICON_PLAYER = 149 - ICON_PLAYER_JUMP = 150 - ICON_KEY = 151 - ICON_DEMON = 152 - ICON_TEXT_POPUP = 153 - ICON_GEAR_EX = 154 - ICON_CRACK = 155 - ICON_CRACK_POINTS = 156 - ICON_STAR = 157 - ICON_DOOR = 158 - ICON_EXIT = 159 - ICON_MODE_2D = 160 - ICON_MODE_3D = 161 - ICON_CUBE = 162 - ICON_CUBE_FACE_TOP = 163 - ICON_CUBE_FACE_LEFT = 164 - ICON_CUBE_FACE_FRONT = 165 - ICON_CUBE_FACE_BOTTOM = 166 - ICON_CUBE_FACE_RIGHT = 167 - ICON_CUBE_FACE_BACK = 168 - ICON_CAMERA = 169 - ICON_SPECIAL = 170 - ICON_LINK_NET = 171 - ICON_LINK_BOXES = 172 - ICON_LINK_MULTI = 173 - ICON_LINK = 174 - ICON_LINK_BROKE = 175 - ICON_TEXT_NOTES = 176 - ICON_NOTEBOOK = 177 - ICON_SUITCASE = 178 - ICON_SUITCASE_ZIP = 179 - ICON_MAILBOX = 180 - ICON_MONITOR = 181 - ICON_PRINTER = 182 - ICON_PHOTO_CAMERA = 183 - ICON_PHOTO_CAMERA_FLASH = 184 - ICON_HOUSE = 185 - ICON_HEART = 186 - ICON_CORNER = 187 - ICON_VERTICAL_BARS = 188 - ICON_VERTICAL_BARS_FILL = 189 - ICON_LIFE_BARS = 190 - ICON_INFO = 191 - ICON_CROSSLINE = 192 - ICON_HELP = 193 - ICON_FILETYPE_ALPHA = 194 - ICON_FILETYPE_HOME = 195 - ICON_LAYERS_VISIBLE = 196 - ICON_LAYERS = 197 - ICON_WINDOW = 198 - ICON_HIDPI = 199 - ICON_FILETYPE_BINARY = 200 - ICON_HEX = 201 - ICON_SHIELD = 202 - ICON_FILE_NEW = 203 - ICON_FOLDER_ADD = 204 - ICON_ALARM = 205 - ICON_CPU = 206 - ICON_ROM = 207 - ICON_STEP_OVER = 208 - ICON_STEP_INTO = 209 - ICON_STEP_OUT = 210 - ICON_RESTART = 211 - ICON_BREAKPOINT_ON = 212 - ICON_BREAKPOINT_OFF = 213 - ICON_BURGER_MENU = 214 - ICON_CASE_SENSITIVE = 215 - ICON_REG_EXP = 216 - ICON_FOLDER = 217 - ICON_FILE = 218 - ICON_SAND_TIMER = 219 - 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 - ICON_232 = 232 - ICON_233 = 233 - ICON_234 = 234 - ICON_235 = 235 - ICON_236 = 236 - ICON_237 = 237 - ICON_238 = 238 - ICON_239 = 239 - ICON_240 = 240 - ICON_241 = 241 - ICON_242 = 242 - ICON_243 = 243 - ICON_244 = 244 - ICON_245 = 245 - ICON_246 = 246 - ICON_247 = 247 - ICON_248 = 248 - ICON_249 = 249 - ICON_250 = 250 - ICON_251 = 251 - ICON_252 = 252 - ICON_253 = 253 - ICON_254 = 254 - ICON_255 = 255 - diff --git a/raylib/glfw3.h.modified b/raylib/glfw3.h.modified deleted file mode 100644 index 08a5669..0000000 --- a/raylib/glfw3.h.modified +++ /dev/null @@ -1,5618 +0,0 @@ -/************************************************************************* - * GLFW 3.4 - www.glfw.org - * A library for OpenGL, window and input - *------------------------------------------------------------------------ - * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2019 Camilla Löwy - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ -/************************************************************************* - * Doxygen documentation - *************************************************************************/ -/*! @file glfw3.h - * @brief The header of the GLFW 3 API. - * - * This is the header file of the GLFW 3 API. It defines all its types and - * declares all its functions. - * - * For more information about how to use this file, see @ref build_include. - */ -/*! @defgroup context Context reference - * @brief Functions and types related to OpenGL and OpenGL ES contexts. - * - * This is the reference documentation for OpenGL and OpenGL ES context related - * functions. For more task-oriented information, see the @ref context_guide. - */ -/*! @defgroup vulkan Vulkan support reference - * @brief Functions and types related to Vulkan. - * - * This is the reference documentation for Vulkan related functions and types. - * For more task-oriented information, see the @ref vulkan_guide. - */ -/*! @defgroup init Initialization, version and error reference - * @brief Functions and types related to initialization and error handling. - * - * This is the reference documentation for initialization and termination of - * the library, version management and error handling. For more task-oriented - * information, see the @ref intro_guide. - */ -/*! @defgroup input Input reference - * @brief Functions and types related to input handling. - * - * This is the reference documentation for input related functions and types. - * For more task-oriented information, see the @ref input_guide. - */ -/*! @defgroup monitor Monitor reference - * @brief Functions and types related to monitors. - * - * This is the reference documentation for monitor related functions and types. - * For more task-oriented information, see the @ref monitor_guide. - */ -/*! @defgroup window Window reference - * @brief Functions and types related to windows. - * - * This is the reference documentation for window related functions and types, - * including creation, deletion and event polling. For more task-oriented - * information, see the @ref window_guide. - */ -/************************************************************************* - * Compiler- and platform-specific preprocessor work - *************************************************************************/ -/* If we are we on Windows, we want a single define for it. - */ -/* Include because most Windows GLU headers need wchar_t and - * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. - * Include it unconditionally to avoid surprising side-effects. - */ -/* Include because it is needed by Vulkan and related functions. - * Include it unconditionally to avoid surprising side-effects. - */ -/* The Vulkan header may have indirectly included windows.h (because of - * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. - */ -/* It is customary to use APIENTRY for OpenGL function pointer declarations on - * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. - */ -/* Some Windows OpenGL headers need this. - */ -/* Some Windows GLU headers need this. - */ -/* Include the chosen OpenGL or OpenGL ES headers. - */ -/* GLFWAPI is used to declare public API functions for export - * from the DLL / shared library / dynamic library. - */ -/************************************************************************* - * GLFW API tokens - *************************************************************************/ -/*! @name GLFW version macros - * @{ */ -/*! @brief The major version number of the GLFW header. - * - * The major version number of the GLFW header. This is incremented when the - * API is changed in non-compatible ways. - * @ingroup init - */ -/*! @brief The minor version number of the GLFW header. - * - * The minor version number of the GLFW header. This is incremented when - * features are added to the API but it remains backward-compatible. - * @ingroup init - */ -/*! @brief The revision number of the GLFW header. - * - * The revision number of the GLFW header. This is incremented when a bug fix - * release is made that does not contain any API changes. - * @ingroup init - */ -/*! @} */ -/*! @brief One. - * - * This is only semantic sugar for the number 1. You can instead use `1` or - * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal - * to one. - * - * @ingroup init - */ -/*! @brief Zero. - * - * This is only semantic sugar for the number 0. You can instead use `0` or - * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is - * equal to zero. - * - * @ingroup init - */ -/*! @name Key and button actions - * @{ */ -/*! @brief The key or mouse button was released. - * - * The key or mouse button was released. - * - * @ingroup input - */ -/*! @brief The key or mouse button was pressed. - * - * The key or mouse button was pressed. - * - * @ingroup input - */ -/*! @brief The key was held down until it repeated. - * - * The key was held down until it repeated. - * - * @ingroup input - */ -/*! @} */ -/*! @defgroup hat_state Joystick hat states - * @brief Joystick hat states. - * - * See [joystick hat input](@ref joystick_hat) for how these are used. - * - * @ingroup input - * @{ */ -/*! @ingroup input - */ -/*! @} */ -/*! @defgroup keys Keyboard key tokens - * @brief Keyboard key tokens. - * - * See [key input](@ref input_key) for how these are used. - * - * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), - * but re-arranged to map to 7-bit ASCII for printable keys (function keys are - * put in the 256+ range). - * - * The naming of the key codes follow these rules: - * - The US keyboard layout is used - * - Names of printable alphanumeric characters are used (e.g. "A", "R", - * "3", etc.) - * - For non-alphanumeric characters, Unicode:ish names are used (e.g. - * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not - * correspond to the Unicode standard (usually for brevity) - * - Keys that lack a clear US mapping are named "WORLD_x" - * - For non-printable keys, custom names are used (e.g. "F4", - * "BACKSPACE", etc.) - * - * @ingroup input - * @{ - */ -/* Printable keys */ -/* Function keys */ -/*! @} */ -/*! @defgroup mods Modifier key flags - * @brief Modifier key flags. - * - * See [key input](@ref input_key) for how these are used. - * - * @ingroup input - * @{ */ -/*! @brief If this bit is set one or more Shift keys were held down. - * - * If this bit is set one or more Shift keys were held down. - */ -/*! @brief If this bit is set one or more Control keys were held down. - * - * If this bit is set one or more Control keys were held down. - */ -/*! @brief If this bit is set one or more Alt keys were held down. - * - * If this bit is set one or more Alt keys were held down. - */ -/*! @brief If this bit is set one or more Super keys were held down. - * - * If this bit is set one or more Super keys were held down. - */ -/*! @brief If this bit is set the Caps Lock key is enabled. - * - * If this bit is set the Caps Lock key is enabled and the @ref - * GLFW_LOCK_KEY_MODS input mode is set. - */ -/*! @brief If this bit is set the Num Lock key is enabled. - * - * If this bit is set the Num Lock key is enabled and the @ref - * GLFW_LOCK_KEY_MODS input mode is set. - */ -/*! @} */ -/*! @defgroup buttons Mouse buttons - * @brief Mouse button IDs. - * - * See [mouse button input](@ref input_mouse_button) for how these are used. - * - * @ingroup input - * @{ */ -/*! @} */ -/*! @defgroup joysticks Joysticks - * @brief Joystick IDs. - * - * See [joystick input](@ref joystick) for how these are used. - * - * @ingroup input - * @{ */ -/*! @} */ -/*! @defgroup gamepad_buttons Gamepad buttons - * @brief Gamepad buttons. - * - * See @ref gamepad for how these are used. - * - * @ingroup input - * @{ */ -/*! @} */ -/*! @defgroup gamepad_axes Gamepad axes - * @brief Gamepad axes. - * - * See @ref gamepad for how these are used. - * - * @ingroup input - * @{ */ -/*! @} */ -/*! @defgroup errors Error codes - * @brief Error codes. - * - * See [error handling](@ref error_handling) for how these are used. - * - * @ingroup init - * @{ */ -/*! @brief No error has occurred. - * - * No error has occurred. - * - * @analysis Yay. - */ -/*! @brief GLFW has not been initialized. - * - * This occurs if a GLFW function was called that must not be called unless the - * library is [initialized](@ref intro_init). - * - * @analysis Application programmer error. Initialize GLFW before calling any - * function that requires initialization. - */ -/*! @brief No context is current for this thread. - * - * This occurs if a GLFW function was called that needs and operates on the - * current OpenGL or OpenGL ES context but no context is current on the calling - * thread. One such function is @ref glfwSwapInterval. - * - * @analysis Application programmer error. Ensure a context is current before - * calling functions that require a current context. - */ -/*! @brief One of the arguments to the function was an invalid enum value. - * - * One of the arguments to the function was an invalid enum value, for example - * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. - * - * @analysis Application programmer error. Fix the offending call. - */ -/*! @brief One of the arguments to the function was an invalid value. - * - * One of the arguments to the function was an invalid value, for example - * requesting a non-existent OpenGL or OpenGL ES version like 2.7. - * - * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead - * result in a @ref GLFW_VERSION_UNAVAILABLE error. - * - * @analysis Application programmer error. Fix the offending call. - */ -/*! @brief A memory allocation failed. - * - * A memory allocation failed. - * - * @analysis A bug in GLFW or the underlying operating system. Report the bug - * to our [issue tracker](https://github.com/glfw/glfw/issues). - */ -/*! @brief GLFW could not find support for the requested API on the system. - * - * GLFW could not find support for the requested API on the system. - * - * @analysis The installed graphics driver does not support the requested - * API, or does not support it via the chosen context creation API. - * Below are a few examples. - * - * @par - * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only - * supports OpenGL ES via EGL, while Nvidia and Intel only support it via - * a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa - * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary - * driver. Older graphics drivers do not support Vulkan. - */ -/*! @brief The requested OpenGL or OpenGL ES version is not available. - * - * The requested OpenGL or OpenGL ES version (including any requested context - * or framebuffer hints) is not available on this machine. - * - * @analysis The machine does not support your requirements. If your - * application is sufficiently flexible, downgrade your requirements and try - * again. Otherwise, inform the user that their machine does not match your - * requirements. - * - * @par - * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 - * comes out before the 4.x series gets that far, also fail with this error and - * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions - * will exist. - */ -/*! @brief A platform-specific error occurred that does not match any of the - * more specific categories. - * - * A platform-specific error occurred that does not match any of the more - * specific categories. - * - * @analysis A bug or configuration error in GLFW, the underlying operating - * system or its drivers, or a lack of required resources. Report the issue to - * our [issue tracker](https://github.com/glfw/glfw/issues). - */ -/*! @brief The requested format is not supported or available. - * - * If emitted during window creation, the requested pixel format is not - * supported. - * - * If emitted when querying the clipboard, the contents of the clipboard could - * not be converted to the requested format. - * - * @analysis If emitted during window creation, one or more - * [hard constraints](@ref window_hints_hard) did not match any of the - * available pixel formats. If your application is sufficiently flexible, - * downgrade your requirements and try again. Otherwise, inform the user that - * their machine does not match your requirements. - * - * @par - * If emitted when querying the clipboard, ignore the error or report it to - * the user, as appropriate. - */ -/*! @brief The specified window does not have an OpenGL or OpenGL ES context. - * - * A window that does not have an OpenGL or OpenGL ES context was passed to - * a function that requires it to have one. - * - * @analysis Application programmer error. Fix the offending call. - */ -/*! @brief The specified cursor shape is not available. - * - * The specified standard cursor shape is not available, either because the - * current platform cursor theme does not provide it or because it is not - * available on the platform. - * - * @analysis Platform or system settings limitation. Pick another - * [standard cursor shape](@ref shapes) or create a - * [custom cursor](@ref cursor_custom). - */ -/*! @brief The requested feature is not provided by the platform. - * - * The requested feature is not provided by the platform, so GLFW is unable to - * implement it. The documentation for each function notes if it could emit - * this error. - * - * @analysis Platform or platform version limitation. The error can be ignored - * unless the feature is critical to the application. - * - * @par - * A function call that emits this error has no effect other than the error and - * updating any existing out parameters. - */ -/*! @brief The requested feature is not implemented for the platform. - * - * The requested feature has not yet been implemented in GLFW for this platform. - * - * @analysis An incomplete implementation of GLFW for this platform, hopefully - * fixed in a future release. The error can be ignored unless the feature is - * critical to the application. - * - * @par - * A function call that emits this error has no effect other than the error and - * updating any existing out parameters. - */ -/*! @brief Platform unavailable or no matching platform was found. - * - * 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. - * - * @analysis Failure to detect any platform usually only happens on non-macOS Unix - * systems, either when no window system is running or the program was run from - * a terminal that does not have the necessary environment variables. Fall back to - * a different platform if possible or notify the user that no usable platform was - * detected. - * - * Failure to detect a specific platform may have the same cause as above or be because - * support for that platform was not compiled in. Call @ref glfwPlatformSupported to - * check whether a specific platform is supported by a library binary. - */ -/*! @} */ -/*! @addtogroup window - * @{ */ -/*! @brief Input focus window hint and attribute - * - * Input focus [window hint](@ref GLFW_FOCUSED_hint) or - * [window attribute](@ref GLFW_FOCUSED_attrib). - */ -/*! @brief Window iconification window attribute - * - * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). - */ -/*! @brief Window resize-ability window hint and attribute - * - * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and - * [window attribute](@ref GLFW_RESIZABLE_attrib). - */ -/*! @brief Window visibility window hint and attribute - * - * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and - * [window attribute](@ref GLFW_VISIBLE_attrib). - */ -/*! @brief Window decoration window hint and attribute - * - * Window decoration [window hint](@ref GLFW_DECORATED_hint) and - * [window attribute](@ref GLFW_DECORATED_attrib). - */ -/*! @brief Window auto-iconification window hint and attribute - * - * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and - * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). - */ -/*! @brief Window decoration window hint and attribute - * - * Window decoration [window hint](@ref GLFW_FLOATING_hint) and - * [window attribute](@ref GLFW_FLOATING_attrib). - */ -/*! @brief Window maximization window hint and attribute - * - * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and - * [window attribute](@ref GLFW_MAXIMIZED_attrib). - */ -/*! @brief Cursor centering window hint - * - * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). - */ -/*! @brief Window framebuffer transparency hint and attribute - * - * Window framebuffer transparency - * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and - * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). - */ -/*! @brief Mouse cursor hover window attribute. - * - * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). - */ -/*! @brief Input focus on calling show window hint and attribute - * - * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or - * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). - */ -/*! @brief Mouse input transparency window hint and attribute - * - * Mouse input transparency [window hint](@ref GLFW_MOUSE_PASSTHROUGH_hint) or - * [window attribute](@ref GLFW_MOUSE_PASSTHROUGH_attrib). - */ -/*! @brief Initial position x-coordinate window hint. - * - * Initial position x-coordinate [window hint](@ref GLFW_POSITION_X). - */ -/*! @brief Initial position y-coordinate window hint. - * - * Initial position y-coordinate [window hint](@ref GLFW_POSITION_Y). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). - */ -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). - */ -/*! @brief Framebuffer auxiliary buffer hint. - * - * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). - */ -/*! @brief OpenGL stereoscopic rendering hint. - * - * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). - */ -/*! @brief Framebuffer MSAA samples hint. - * - * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). - */ -/*! @brief Framebuffer sRGB hint. - * - * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). - */ -/*! @brief Monitor refresh rate hint. - * - * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). - */ -/*! @brief Framebuffer double buffering hint and attribute. - * - * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER_hint) and - * [attribute](@ref GLFW_DOUBLEBUFFER_attrib). - */ -/*! @brief Context client API hint and attribute. - * - * Context client API [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -/*! @brief Context client API major version hint and attribute. - * - * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) - * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). - */ -/*! @brief Context client API minor version hint and attribute. - * - * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) - * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). - */ -/*! @brief Context client API revision number attribute. - * - * Context client API revision number - * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). - */ -/*! @brief Context robustness hint and attribute. - * - * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) - * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). - */ -/*! @brief OpenGL forward-compatibility hint and attribute. - * - * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) - * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). - */ -/*! @brief Debug mode context hint and attribute. - * - * Debug mode context [hint](@ref GLFW_CONTEXT_DEBUG_hint) and - * [attribute](@ref GLFW_CONTEXT_DEBUG_attrib). - */ -/*! @brief Legacy name for compatibility. - * - * This is an alias for compatibility with earlier versions. - */ -/*! @brief OpenGL profile hint and attribute. - * - * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and - * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). - */ -/*! @brief Context flush-on-release hint and attribute. - * - * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and - * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). - */ -/*! @brief Context error suppression hint and attribute. - * - * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and - * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). - */ -/*! @brief Context creation API hint and attribute. - * - * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and - * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). - */ -/*! @brief Window content area scaling window - * [window hint](@ref GLFW_SCALE_TO_MONITOR). - */ -/*! @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). - */ -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). - */ -/*! @brief X11 specific - * [window hint](@ref GLFW_X11_CLASS_NAME_hint). - */ -/*! @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). - * - * Allows specification of the Wayland app_id. - */ -/*! @} */ -/*! @defgroup shapes Standard cursor shapes - * @brief Standard system cursor shapes. - * - * These are the [standard cursor shapes](@ref cursor_standard) that can be - * requested from the platform (window system). - * - * @ingroup input - * @{ */ -/*! @brief The regular arrow cursor shape. - * - * The regular arrow cursor shape. - */ -/*! @brief The text input I-beam cursor shape. - * - * The text input I-beam cursor shape. - */ -/*! @brief The crosshair cursor shape. - * - * The crosshair cursor shape. - */ -/*! @brief The pointing hand cursor shape. - * - * The pointing hand cursor shape. - */ -/*! @brief The horizontal resize/move arrow shape. - * - * The horizontal resize/move arrow shape. This is usually a horizontal - * double-headed arrow. - */ -/*! @brief The vertical resize/move arrow shape. - * - * The vertical resize/move shape. This is usually a vertical double-headed - * arrow. - */ -/*! @brief The top-left to bottom-right diagonal resize/move arrow shape. - * - * The top-left to bottom-right diagonal resize/move shape. This is usually - * a diagonal double-headed arrow. - * - * @note @macos This shape is provided by a private system API and may fail - * with @ref GLFW_CURSOR_UNAVAILABLE in the future. - * - * @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. - * - * The top-right to bottom-left diagonal resize/move shape. This is usually - * a diagonal double-headed arrow. - * - * @note @macos This shape is provided by a private system API and may fail - * with @ref GLFW_CURSOR_UNAVAILABLE in the future. - * - * @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. - * - * The omni-directional resize cursor/move shape. This is usually either - * a combined horizontal and vertical double-headed arrow or a grabbing hand. - */ -/*! @brief The operation-not-allowed shape. - * - * The operation-not-allowed shape. This is usually a circle with a diagonal - * line through it. - * - * @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. - * - * This is an alias for compatibility with earlier versions. - */ -/*! @brief Legacy name for compatibility. - * - * This is an alias for compatibility with earlier versions. - */ -/*! @brief Legacy name for compatibility. - * - * This is an alias for compatibility with earlier versions. - */ -/*! @} */ -/*! @addtogroup init - * @{ */ -/*! @brief Joystick hat buttons init hint. - * - * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). - */ -/*! @brief ANGLE rendering backend init hint. - * - * ANGLE rendering backend [init hint](@ref GLFW_ANGLE_PLATFORM_TYPE_hint). - */ -/*! @brief Platform selection init hint. - * - * Platform selection [init hint](@ref GLFW_PLATFORM). - */ -/*! @brief macOS specific init hint. - * - * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). - */ -/*! @brief macOS specific init hint. - * - * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). - */ -/*! @brief X11 specific init hint. - * - * 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 - * @{ */ -/*! @brief Hint value that enables automatic platform selection. - * - * Hint value for @ref GLFW_PLATFORM that enables automatic platform selection. - */ -/*! @} */ -/************************************************************************* - * GLFW API types - *************************************************************************/ -/*! @brief Client API function pointer type. - * - * Generic function pointer used for returning client API function pointers - * without forcing a cast from a regular pointer. - * - * @sa @ref context_glext - * @sa @ref glfwGetProcAddress - * - * @since Added in version 3.0. - * - * @ingroup context - */ -typedef void (*GLFWglproc)(void); -/*! @brief Vulkan API function pointer type. - * - * Generic function pointer used for returning Vulkan API function pointers - * without forcing a cast from a regular pointer. - * - * @sa @ref vulkan_proc - * @sa @ref glfwGetInstanceProcAddress - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -typedef void (*GLFWvkproc)(void); -/*! @brief Opaque monitor object. - * - * Opaque monitor object. - * - * @see @ref monitor_object - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef struct GLFWmonitor GLFWmonitor; -/*! @brief Opaque window object. - * - * Opaque window object. - * - * @see @ref window_object - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef struct GLFWwindow GLFWwindow; -/*! @brief Opaque cursor object. - * - * Opaque cursor object. - * - * @see @ref cursor_object - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef struct GLFWcursor GLFWcursor; -/*! @brief The function pointer type for memory allocation callbacks. - * - * This is the function pointer type for memory allocation callbacks. A memory - * allocation callback function has the following signature: - * @code - * void* function_name(size_t size, void* user) - * @endcode - * - * This function must return either a memory block at least `size` bytes long, - * or `NULL` if allocation failed. Note that not all parts of GLFW handle allocation - * failures gracefully yet. - * - * 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 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 - * error occurred. - * - * @pointer_lifetime The returned memory block must be valid at least until it - * is deallocated. - * - * @reentrancy This function should not call any GLFW function. - * - * @thread_safety This function must support being called from any thread that calls GLFW - * functions. - * - * @sa @ref init_allocator - * @sa @ref GLFWallocator - * - * @since Added in version 3.4. - * - * @ingroup init - */ -typedef void* (* GLFWallocatefun)(size_t size, void* user); -/*! @brief The function pointer type for memory reallocation callbacks. - * - * This is the function pointer type for memory reallocation callbacks. - * A memory reallocation callback function has the following signature: - * @code - * void* function_name(void* block, size_t size, void* user) - * @endcode - * - * This function must return a memory block at least `size` bytes long, or - * `NULL` if allocation failed. Note that not all parts of GLFW handle allocation - * failures gracefully yet. - * - * 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 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 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. - * @param[in] user The user-defined pointer from the allocator. - * @return The address of the newly allocated or resized memory block, or - * `NULL` if an error occurred. - * - * @pointer_lifetime The returned memory block must be valid at least until it - * is deallocated. - * - * @reentrancy This function should not call any GLFW function. - * - * @thread_safety This function must support being called from any thread that calls GLFW - * functions. - * - * @sa @ref init_allocator - * @sa @ref GLFWallocator - * - * @since Added in version 3.4. - * - * @ingroup init - */ -typedef void* (* GLFWreallocatefun)(void* block, size_t size, void* user); -/*! @brief The function pointer type for memory deallocation callbacks. - * - * This is the function pointer type for memory deallocation callbacks. - * A memory deallocation callback function has the following signature: - * @code - * void function_name(void* block, void* user) - * @endcode - * - * This function may deallocate the specified memory block. This memory block - * will have been allocated with the same allocator. - * - * 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. - * - * @pointer_lifetime The specified memory block will not be accessed by GLFW - * after this function is called. - * - * @reentrancy This function should not call any GLFW function. - * - * @thread_safety This function must support being called from any thread that calls GLFW - * functions. - * - * @sa @ref init_allocator - * @sa @ref GLFWallocator - * - * @since Added in version 3.4. - * - * @ingroup init - */ -typedef void (* GLFWdeallocatefun)(void* block, void* user); -/*! @brief The function pointer type for error callbacks. - * - * This is the function pointer type for error callbacks. An error callback - * function has the following signature: - * @code - * void callback_name(int error_code, const char* description) - * @endcode - * - * @param[in] error_code An [error code](@ref errors). Future releases may add - * more error codes. - * @param[in] description A UTF-8 encoded string describing the error. - * - * @pointer_lifetime The error description string is valid until the callback - * function returns. - * - * @sa @ref error_handling - * @sa @ref glfwSetErrorCallback - * - * @since Added in version 3.0. - * - * @ingroup init - */ -typedef void (* GLFWerrorfun)(int error_code, const char* description); -/*! @brief The function pointer type for window position callbacks. - * - * This is the function pointer type for window position callbacks. A window - * position callback function has the following signature: - * @code - * void callback_name(GLFWwindow* window, int xpos, int ypos) - * @endcode - * - * @param[in] window The window that was moved. - * @param[in] xpos The new x-coordinate, in screen coordinates, of the - * upper-left corner of the content area of the window. - * @param[in] ypos The new y-coordinate, in screen coordinates, of the - * upper-left corner of the content area of the window. - * - * @sa @ref window_pos - * @sa @ref glfwSetWindowPosCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowposfun)(GLFWwindow* window, int xpos, int ypos); -/*! @brief The function pointer type for window size callbacks. - * - * This is the function pointer type for window size callbacks. A window size - * callback function has the following signature: - * @code - * void callback_name(GLFWwindow* window, int width, int height) - * @endcode - * - * @param[in] window The window that was resized. - * @param[in] width The new width, in screen coordinates, of the window. - * @param[in] height The new height, in screen coordinates, of the window. - * - * @sa @ref window_size - * @sa @ref glfwSetWindowSizeCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowsizefun)(GLFWwindow* window, int width, int height); -/*! @brief The function pointer type for window close callbacks. - * - * This is the function pointer type for window close callbacks. A window - * close callback function has the following signature: - * @code - * void function_name(GLFWwindow* window) - * @endcode - * - * @param[in] window The window that the user attempted to close. - * - * @sa @ref window_close - * @sa @ref glfwSetWindowCloseCallback - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowclosefun)(GLFWwindow* window); -/*! @brief The function pointer type for window content refresh callbacks. - * - * This is the function pointer type for window content refresh callbacks. - * A window content refresh callback function has the following signature: - * @code - * void function_name(GLFWwindow* window); - * @endcode - * - * @param[in] window The window whose content needs to be refreshed. - * - * @sa @ref window_refresh - * @sa @ref glfwSetWindowRefreshCallback - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowrefreshfun)(GLFWwindow* window); -/*! @brief The function pointer type for window focus callbacks. - * - * This is the function pointer type for window focus callbacks. A window - * focus callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int focused) - * @endcode - * - * @param[in] window The window that gained or lost input focus. - * @param[in] focused `GLFW_TRUE` if the window was given input focus, or - * `GLFW_FALSE` if it lost it. - * - * @sa @ref window_focus - * @sa @ref glfwSetWindowFocusCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowfocusfun)(GLFWwindow* window, int focused); -/*! @brief The function pointer type for window iconify callbacks. - * - * This is the function pointer type for window iconify callbacks. A window - * iconify callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int iconified) - * @endcode - * - * @param[in] window The window that was iconified or restored. - * @param[in] iconified `GLFW_TRUE` if the window was iconified, or - * `GLFW_FALSE` if it was restored. - * - * @sa @ref window_iconify - * @sa @ref glfwSetWindowIconifyCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowiconifyfun)(GLFWwindow* window, int iconified); -/*! @brief The function pointer type for window maximize callbacks. - * - * This is the function pointer type for window maximize callbacks. A window - * maximize callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int maximized) - * @endcode - * - * @param[in] window The window that was maximized or restored. - * @param[in] maximized `GLFW_TRUE` if the window was maximized, or - * `GLFW_FALSE` if it was restored. - * - * @sa @ref window_maximize - * @sa glfwSetWindowMaximizeCallback - * - * @since Added in version 3.3. - * - * @ingroup window - */ -typedef void (* GLFWwindowmaximizefun)(GLFWwindow* window, int maximized); -/*! @brief The function pointer type for framebuffer size callbacks. - * - * This is the function pointer type for framebuffer size callbacks. - * A framebuffer size callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int width, int height) - * @endcode - * - * @param[in] window The window whose framebuffer was resized. - * @param[in] width The new width, in pixels, of the framebuffer. - * @param[in] height The new height, in pixels, of the framebuffer. - * - * @sa @ref window_fbsize - * @sa @ref glfwSetFramebufferSizeCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWframebuffersizefun)(GLFWwindow* window, int width, int height); -/*! @brief The function pointer type for window content scale callbacks. - * - * This is the function pointer type for window content scale callbacks. - * A window content scale callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, float xscale, float yscale) - * @endcode - * - * @param[in] window The window whose content scale changed. - * @param[in] xscale The new x-axis content scale of the window. - * @param[in] yscale The new y-axis content scale of the window. - * - * @sa @ref window_scale - * @sa @ref glfwSetWindowContentScaleCallback - * - * @since Added in version 3.3. - * - * @ingroup window - */ -typedef void (* GLFWwindowcontentscalefun)(GLFWwindow* window, float xscale, float yscale); -/*! @brief The function pointer type for mouse button callbacks. - * - * This is the function pointer type for mouse button callback functions. - * A mouse button callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int button, int action, int mods) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] button The [mouse button](@ref buttons) that was pressed or - * released. - * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases - * may add more actions. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_mouse_button - * @sa @ref glfwSetMouseButtonCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle and modifier mask parameters. - * - * @ingroup input - */ -typedef void (* GLFWmousebuttonfun)(GLFWwindow* window, int button, int action, int mods); -/*! @brief The function pointer type for cursor position callbacks. - * - * This is the function pointer type for cursor position callbacks. A cursor - * position callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, double xpos, double ypos); - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] xpos The new cursor x-coordinate, relative to the left edge of - * the content area. - * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the - * content area. - * - * @sa @ref cursor_pos - * @sa @ref glfwSetCursorPosCallback - * - * @since Added in version 3.0. Replaces `GLFWmouseposfun`. - * - * @ingroup input - */ -typedef void (* GLFWcursorposfun)(GLFWwindow* window, double xpos, double ypos); -/*! @brief The function pointer type for cursor enter/leave callbacks. - * - * This is the function pointer type for cursor enter/leave callbacks. - * A cursor enter/leave callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int entered) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content - * area, or `GLFW_FALSE` if it left it. - * - * @sa @ref cursor_enter - * @sa @ref glfwSetCursorEnterCallback - * - * @since Added in version 3.0. - * - * @ingroup input - */ -typedef void (* GLFWcursorenterfun)(GLFWwindow* window, int entered); -/*! @brief The function pointer type for scroll callbacks. - * - * This is the function pointer type for scroll callbacks. A scroll callback - * function has the following signature: - * @code - * void function_name(GLFWwindow* window, double xoffset, double yoffset) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] xoffset The scroll offset along the x-axis. - * @param[in] yoffset The scroll offset along the y-axis. - * - * @sa @ref scrolling - * @sa @ref glfwSetScrollCallback - * - * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. - * - * @ingroup input - */ -typedef void (* GLFWscrollfun)(GLFWwindow* window, double xoffset, double yoffset); -/*! @brief The function pointer type for keyboard key callbacks. - * - * This is the function pointer type for keyboard key callbacks. A keyboard - * key callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] key The [keyboard key](@ref keys) that was pressed or released. - * @param[in] scancode The platform-specific scancode of the key. - * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future - * releases may add more actions. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_key - * @sa @ref glfwSetKeyCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle, scancode and modifier mask parameters. - * - * @ingroup input - */ -typedef void (* GLFWkeyfun)(GLFWwindow* window, int key, int scancode, int action, int mods); -/*! @brief The function pointer type for Unicode character callbacks. - * - * This is the function pointer type for Unicode character callbacks. - * A Unicode character callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * - * @sa @ref input_char - * @sa @ref glfwSetCharCallback - * - * @since Added in version 2.4. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -typedef void (* GLFWcharfun)(GLFWwindow* window, unsigned int codepoint); -/*! @brief The function pointer type for Unicode character with modifiers - * callbacks. - * - * This is the function pointer type for Unicode character with modifiers - * callbacks. It is called for each input character, regardless of what - * modifier keys are held down. A Unicode character with modifiers callback - * function has the following signature: - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_char - * @sa @ref glfwSetCharModsCallback - * - * @deprecated Scheduled for removal in version 4.0. - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef void (* GLFWcharmodsfun)(GLFWwindow* window, unsigned int codepoint, int mods); -/*! @brief The function pointer type for path drop callbacks. - * - * This is the function pointer type for path drop callbacks. A path drop - * callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int path_count, const char* paths[]) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] path_count The number of dropped paths. - * @param[in] paths The UTF-8 encoded file and/or directory path names. - * - * @pointer_lifetime The path array and its strings are valid until the - * callback function returns. - * - * @sa @ref path_drop - * @sa @ref glfwSetDropCallback - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef void (* GLFWdropfun)(GLFWwindow* window, int path_count, const char* paths[]); -/*! @brief The function pointer type for monitor configuration callbacks. - * - * This is the function pointer type for monitor configuration callbacks. - * A monitor callback function has the following signature: - * @code - * void function_name(GLFWmonitor* monitor, int event) - * @endcode - * - * @param[in] monitor The monitor that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future - * releases may add more events. - * - * @sa @ref monitor_event - * @sa @ref glfwSetMonitorCallback - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef void (* GLFWmonitorfun)(GLFWmonitor* monitor, int event); -/*! @brief The function pointer type for joystick configuration callbacks. - * - * This is the function pointer type for joystick configuration callbacks. - * A joystick configuration callback function has the following signature: - * @code - * void function_name(int jid, int event) - * @endcode - * - * @param[in] jid The joystick that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future - * releases may add more events. - * - * @sa @ref joystick_event - * @sa @ref glfwSetJoystickCallback - * - * @since Added in version 3.2. - * - * @ingroup input - */ -typedef void (* GLFWjoystickfun)(int jid, int event); -/*! @brief Video mode type. - * - * This describes a single video mode. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoMode - * @sa @ref glfwGetVideoModes - * - * @since Added in version 1.0. - * @glfw3 Added refresh rate member. - * - * @ingroup monitor - */ -typedef struct GLFWvidmode -{ - /*! The width, in screen coordinates, of the video mode. - */ - int width; - /*! The height, in screen coordinates, of the video mode. - */ - int height; - /*! The bit depth of the red channel of the video mode. - */ - int redBits; - /*! The bit depth of the green channel of the video mode. - */ - int greenBits; - /*! The bit depth of the blue channel of the video mode. - */ - int blueBits; - /*! The refresh rate, in Hz, of the video mode. - */ - int refreshRate; -} GLFWvidmode; -/*! @brief Gamma ramp. - * - * This describes the gamma ramp for a monitor. - * - * @sa @ref monitor_gamma - * @sa @ref glfwGetGammaRamp - * @sa @ref glfwSetGammaRamp - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef struct GLFWgammaramp -{ - /*! An array of value describing the response of the red channel. - */ - unsigned short* red; - /*! An array of value describing the response of the green channel. - */ - unsigned short* green; - /*! An array of value describing the response of the blue channel. - */ - unsigned short* blue; - /*! The number of elements in each array. - */ - unsigned int size; -} GLFWgammaramp; -/*! @brief Image data. - * - * This describes a single 2D image. See the documentation for each related - * function what the expected pixel format is. - * - * @sa @ref cursor_custom - * @sa @ref window_icon - * - * @since Added in version 2.1. - * @glfw3 Removed format and bytes-per-pixel members. - * - * @ingroup window - */ -typedef struct GLFWimage -{ - /*! The width, in pixels, of this image. - */ - int width; - /*! The height, in pixels, of this image. - */ - int height; - /*! The pixel data of this image, arranged left-to-right, top-to-bottom. - */ - unsigned char* pixels; -} GLFWimage; -/*! @brief Gamepad input state - * - * This describes the input state of a gamepad. - * - * @sa @ref gamepad - * @sa @ref glfwGetGamepadState - * - * @since Added in version 3.3. - * - * @ingroup input - */ -typedef struct GLFWgamepadstate -{ - /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` - * or `GLFW_RELEASE`. - */ - unsigned char buttons[15]; - /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 - * to 1.0 inclusive. - */ - float axes[6]; -} GLFWgamepadstate; -/*! @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 - * - * @since Added in version 3.4. - * - * @ingroup init - */ -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; -/************************************************************************* - * GLFW API functions - *************************************************************************/ -/*! @brief Initializes the GLFW library. - * - * This function initializes the GLFW library. Before most GLFW functions can - * be used, GLFW must be initialized, and before an application terminates GLFW - * should be terminated in order to free any resources allocated during or - * after initialization. - * - * If this function fails, it calls @ref glfwTerminate before returning. If it - * succeeds, you should call @ref glfwTerminate before the application exits. - * - * Additional calls to this function after successful initialization but before - * termination will return `GLFW_TRUE` immediately. - * - * The @ref GLFW_PLATFORM init hint controls which platforms are considered during - * initialization. This also depends on which platforms the library was compiled to - * support. - * - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_PLATFORM_UNAVAILABLE and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @macos This function will change the current directory of the - * application to the `Contents/Resources` subdirectory of the application's - * bundle, if present. This can be disabled with the @ref - * GLFW_COCOA_CHDIR_RESOURCES init hint. - * - * @remark @macos This function will create the main menu and dock icon for the - * application. If GLFW finds a `MainMenu.nib` it is loaded and assumed to - * contain a menu bar. Otherwise a minimal menu bar is created manually with - * common commands like Hide, Quit and About. The About entry opens a minimal - * about dialog with information from the application's bundle. The menu bar - * 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. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref intro_init - * @sa @ref glfwInitHint - * @sa @ref glfwInitAllocator - * @sa @ref glfwTerminate - * - * @since Added in version 1.0. - * - * @ingroup init - */ - int glfwInit(void); -/*! @brief Terminates the GLFW library. - * - * This function destroys all remaining windows and cursors, restores any - * modified gamma ramps and frees any other allocated resources. Once this - * function is called, you must again call @ref glfwInit successfully before - * you will be able to use most GLFW functions. - * - * If GLFW has been successfully initialized, this function should be called - * before the application exits. If initialization fails, there is no need to - * call this function, as it is called by @ref glfwInit before it returns - * failure. - * - * This function has no effect if GLFW is not initialized. - * - * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. - * - * @remark This function may be called before @ref glfwInit. - * - * @warning The contexts of any remaining windows must not be current on any - * other thread when this function is called. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref intro_init - * @sa @ref glfwInit - * - * @since Added in version 1.0. - * - * @ingroup init - */ - void glfwTerminate(void); -/*! @brief Sets the specified init hint to the desired value. - * - * This function sets hints for the next initialization of GLFW. - * - * The values you set hints to are never reset by GLFW, but they only take - * effect during initialization. Once GLFW has been initialized, any values - * you set will be ignored until the library is terminated and initialized - * again. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [init hint](@ref init_hints) to set. - * @param[in] value The new value of the init hint. - * - * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref - * GLFW_INVALID_VALUE. - * - * @remarks This function may be called before @ref glfwInit. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa init_hints - * @sa glfwInit - * - * @since Added in version 3.3. - * - * @ingroup init - */ - void glfwInitHint(int hint, int value); -/*! @brief Sets the init allocator to the desired value. - * - * 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 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. - * - * @errors Possible errors include @ref GLFW_INVALID_VALUE. - * - * @pointer_lifetime The specified allocator is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref init_allocator - * @sa @ref glfwInit - * - * @since Added in version 3.4. - * - * @ingroup init - */ - void glfwInitAllocator(const GLFWallocator* allocator); -/*! @brief Retrieves the version of the GLFW library. - * - * This function retrieves the major, minor and revision numbers of the GLFW - * library. It is intended for when you are using GLFW as a shared library and - * want to ensure that you are using the minimum required version. - * - * Any or all of the version arguments may be `NULL`. - * - * @param[out] major Where to store the major version number, or `NULL`. - * @param[out] minor Where to store the minor version number, or `NULL`. - * @param[out] rev Where to store the revision number, or `NULL`. - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref intro_version - * @sa @ref glfwGetVersionString - * - * @since Added in version 1.0. - * - * @ingroup init - */ - void glfwGetVersion(int* major, int* minor, int* rev); -/*! @brief Returns a string describing the compile-time configuration. - * - * This function returns the compile-time generated - * [version string](@ref intro_version_string) of the GLFW library binary. It describes - * the version, platforms, compiler and any platform or operating system specific - * compile-time options. It should not be confused with the OpenGL or OpenGL ES version - * string, queried with `glGetString`. - * - * __Do not use the version string__ to parse the GLFW library version. The - * @ref glfwGetVersion function provides the version of the running library - * binary in numerical format. - * - * __Do not use the version string__ to parse what platforms are supported. The @ref - * glfwPlatformSupported function lets you query platform support. - * - * @return The ASCII encoded GLFW version string. - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @pointer_lifetime The returned string is static and compile-time generated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref intro_version - * @sa @ref glfwGetVersion - * - * @since Added in version 3.0. - * - * @ingroup init - */ - const char* glfwGetVersionString(void); -/*! @brief Returns and clears the last error for the calling thread. - * - * This function returns and clears the [error code](@ref errors) of the last - * error that occurred on the calling thread, and optionally a UTF-8 encoded - * human-readable description of it. If no error has occurred since the last - * call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is - * set to `NULL`. - * - * @param[in] description Where to store the error description pointer, or `NULL`. - * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR - * (zero). - * - * @errors None. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * next error occurs or the library is terminated. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref error_handling - * @sa @ref glfwSetErrorCallback - * - * @since Added in version 3.3. - * - * @ingroup init - */ - int glfwGetError(const char** description); -/*! @brief Sets the error callback. - * - * This function sets the error callback, which is called with an error code - * and a human-readable description each time a GLFW error occurs. - * - * The error code is set before the callback is called. Calling @ref - * glfwGetError from the error callback will return the same value as the error - * code argument. - * - * The error callback is called on the thread where the error occurred. If you - * are using GLFW from multiple threads, your error callback needs to be - * written accordingly. - * - * Because the description string may have been generated specifically for that - * error, it is not guaranteed to be valid after the callback has returned. If - * you wish to use it after the callback returns, you need to make a copy. - * - * Once set, the error callback remains set even after the library has been - * terminated. - * - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set. - * - * @callback_signature - * @code - * void callback_name(int error_code, const char* description) - * @endcode - * For more information about the callback parameters, see the - * [callback pointer type](@ref GLFWerrorfun). - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref error_handling - * @sa @ref glfwGetError - * - * @since Added in version 3.0. - * - * @ingroup init - */ - GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); -/*! @brief Returns the currently selected platform. - * - * This function returns the platform that was selected during initialization. The - * returned value will be one of `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, - * `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` or `GLFW_PLATFORM_NULL`. - * - * @return The currently selected platform, or zero if an error occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref platform - * @sa @ref glfwPlatformSupported - * - * @since Added in version 3.4. - * - * @ingroup init - */ - int glfwGetPlatform(void); -/*! @brief Returns whether the library includes support for the specified platform. - * - * This function returns whether the library was compiled with support for the specified - * platform. The platform must be one of `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, - * `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` or `GLFW_PLATFORM_NULL`. - * - * @param[in] platform The platform to query. - * @return `GLFW_TRUE` if the platform is supported, or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_INVALID_ENUM. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref platform - * @sa @ref glfwGetPlatform - * - * @since Added in version 3.4. - * - * @ingroup init - */ - int glfwPlatformSupported(int platform); -/*! @brief Returns the currently connected monitors. - * - * This function returns an array of handles for all currently connected - * monitors. The primary monitor is always first in the returned array. If no - * monitors were found, this function returns `NULL`. - * - * @param[out] count Where to store the number of monitors in the returned - * array. This is set to zero if an error occurred. - * @return An array of monitor handles, or `NULL` if no monitors were found or - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * monitor configuration changes or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_monitors - * @sa @ref monitor_event - * @sa @ref glfwGetPrimaryMonitor - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ - GLFWmonitor** glfwGetMonitors(int* count); -/*! @brief Returns the primary monitor. - * - * This function returns the primary monitor. This is usually the monitor - * where elements like the task bar or global menu bar are located. - * - * @return The primary monitor, or `NULL` if no monitors were found or if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @remark The primary monitor is always first in the array returned by @ref - * glfwGetMonitors. - * - * @sa @ref monitor_monitors - * @sa @ref glfwGetMonitors - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ - GLFWmonitor* glfwGetPrimaryMonitor(void); -/*! @brief Returns the position of the monitor's viewport on the virtual screen. - * - * This function returns the position, in screen coordinates, of the upper-left - * corner of the specified monitor. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. - * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ - void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); -/*! @brief Retrieves the work area of the monitor. - * - * This function returns the position, in screen coordinates, of the upper-left - * corner of the work area of the specified monitor along with the work area - * size in screen coordinates. The work area is defined as the area of the - * monitor not occluded by the window system task bar where present. If no - * task bar exists then the work area is the monitor resolution in screen - * coordinates. - * - * Any or all of the position and size arguments may be `NULL`. If an error - * occurs, all non-`NULL` position and size arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. - * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. - * @param[out] width Where to store the monitor width, or `NULL`. - * @param[out] height Where to store the monitor height, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_workarea - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ - void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); -/*! @brief Returns the physical size of the monitor. - * - * This function returns the size, in millimetres, of the display area of the - * specified monitor. - * - * Some platforms do not provide accurate monitor size information, either - * 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. - * - * @param[in] monitor The monitor to query. - * @param[out] widthMM Where to store the width, in millimetres, of the - * monitor's display area, or `NULL`. - * @param[out] heightMM Where to store the height, in millimetres, of the - * monitor's display area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @win32 On Windows 8 and earlier the physical size is calculated from - * the current resolution and system DPI instead of querying the monitor EDID data. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ - void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); -/*! @brief Retrieves the content scale for the specified monitor. - * - * This function retrieves the content scale for the specified monitor. The - * content scale is the ratio between the current DPI and the platform's - * default DPI. This is especially important for text and any UI elements. If - * the pixel dimensions of your UI scaled by this look appropriate on your - * machine then it should appear at a reasonable size on other machines - * regardless of their DPI and scaling settings. This relies on the system DPI - * and scaling settings being somewhat correct. - * - * The content scale may depend on both the monitor resolution and pixel - * density and on user settings. It may be very different from the raw DPI - * calculated from the physical size and current resolution. - * - * @param[in] monitor The monitor to query. - * @param[out] xscale Where to store the x-axis content scale, or `NULL`. - * @param[out] yscale Where to store the y-axis content scale, or `NULL`. - * - * @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 - * @sa @ref glfwGetWindowContentScale - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ - void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); -/*! @brief Returns the name of the specified monitor. - * - * This function returns a human-readable name, encoded as UTF-8, of the - * specified monitor. The name typically reflects the make and model of the - * monitor and is not guaranteed to be unique among the connected monitors. - * - * @param[in] monitor The monitor to query. - * @return The UTF-8 encoded name of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ - const char* glfwGetMonitorName(GLFWmonitor* monitor); -/*! @brief Sets the user pointer of the specified monitor. - * - * This function sets the user-defined pointer of the specified monitor. The - * current value is retained until the monitor is disconnected. The initial - * value is `NULL`. - * - * This function may be called from the monitor callback, even for a monitor - * that is being disconnected. - * - * @param[in] monitor The monitor whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref monitor_userptr - * @sa @ref glfwGetMonitorUserPointer - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ - void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); -/*! @brief Returns the user pointer of the specified monitor. - * - * This function returns the current value of the user-defined pointer of the - * specified monitor. The initial value is `NULL`. - * - * This function may be called from the monitor callback, even for a monitor - * that is being disconnected. - * - * @param[in] monitor The monitor whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref monitor_userptr - * @sa @ref glfwSetMonitorUserPointer - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ - void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); -/*! @brief Sets the monitor configuration callback. - * - * This function sets the monitor configuration callback, or removes the - * currently set callback. This is called when a monitor is connected to or - * disconnected from the system. - * - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWmonitor* monitor, int event) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWmonitorfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_event - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ - GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); -/*! @brief Returns the available video modes for the specified monitor. - * - * This function returns an array of all video modes supported by the specified - * monitor. The returned array is sorted in ascending order, first by color - * bit depth (the sum of all channel depths), then by resolution area (the - * product of width and height), then resolution width and finally by refresh - * rate. - * - * @param[in] monitor The monitor to query. - * @param[out] count Where to store the number of video modes in the returned - * array. This is set to zero if an error occurred. - * @return An array of video modes, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected, this function is called again for that monitor or the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoMode - * - * @since Added in version 1.0. - * @glfw3 Changed to return an array of modes for a specific monitor. - * - * @ingroup monitor - */ - const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); -/*! @brief Returns the current mode of the specified monitor. - * - * This function returns the current video mode of the specified monitor. If - * you have created a full screen window for that monitor, the return value - * will depend on whether that window is iconified. - * - * @param[in] monitor The monitor to query. - * @return The current mode of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoModes - * - * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. - * - * @ingroup monitor - */ - const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); -/*! @brief Generates a gamma ramp and sets it for the specified monitor. - * - * This function generates an appropriately sized gamma ramp from the specified - * exponent and then calls @ref glfwSetGammaRamp with it. The value must be - * a finite number greater than zero. - * - * The software controlled gamma ramp is applied _in addition_ to the hardware - * gamma correction, which today is usually an approximation of sRGB gamma. - * This means that setting a perfectly linear ramp, or gamma 1.0, will produce - * the default (usually sRGB-like) behavior. - * - * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref - * GLFW_SRGB_CAPABLE hint. - * - * @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, - * @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_FEATURE_UNAVAILABLE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ - void glfwSetGamma(GLFWmonitor* monitor, float gamma); -/*! @brief Returns the current gamma ramp for the specified monitor. - * - * This function returns the current gamma ramp of the specified monitor. - * - * @param[in] monitor The monitor to query. - * @return The current gamma ramp, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @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_FEATURE_UNAVAILABLE while - * returning `NULL`. - * - * @pointer_lifetime The returned structure and its arrays are allocated and - * freed by GLFW. You should not free them yourself. They are valid until the - * specified monitor is disconnected, this function is called again for that - * monitor or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ - const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); -/*! @brief Sets the current gamma ramp for the specified monitor. - * - * This function sets the current gamma ramp for the specified monitor. The - * original gamma ramp for that monitor is saved by GLFW the first time this - * function is called and is restored by @ref glfwTerminate. - * - * The software controlled gamma ramp is applied _in addition_ to the hardware - * gamma correction, which today is usually an approximation of sRGB gamma. - * This means that setting a perfectly linear ramp, or gamma 1.0, will produce - * the default (usually sRGB-like) behavior. - * - * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref - * GLFW_SRGB_CAPABLE hint. - * - * @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, @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. - * - * @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_FEATURE_UNAVAILABLE. - * - * @pointer_lifetime The specified gamma ramp is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ - void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); -/*! @brief Resets all window hints to their default values. - * - * This function resets all window hints to their - * [default values](@ref window_hints_values). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHint - * @sa @ref glfwWindowHintString - * - * @since Added in version 3.0. - * - * @ingroup window - */ - void glfwDefaultWindowHints(void); -/*! @brief Sets the specified window hint to the desired value. - * - * This function sets hints for the next call to @ref glfwCreateWindow. The - * hints, once set, retain their values until changed by a call to this - * function or @ref glfwDefaultWindowHints, or until the library is terminated. - * - * Only integer value hints can be set with this function. String value hints - * are set with @ref glfwWindowHintString. - * - * This function does not check whether the specified hint values are valid. - * If you set hints to invalid values this will instead be reported by the next - * call to @ref glfwCreateWindow. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [window hint](@ref window_hints) to set. - * @param[in] value The new value of the window hint. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHintString - * @sa @ref glfwDefaultWindowHints - * - * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. - * - * @ingroup window - */ - void glfwWindowHint(int hint, int value); -/*! @brief Sets the specified window hint to the desired value. - * - * This function sets hints for the next call to @ref glfwCreateWindow. The - * hints, once set, retain their values until changed by a call to this - * function or @ref glfwDefaultWindowHints, or until the library is terminated. - * - * Only string type hints can be set with this function. Integer value hints - * are set with @ref glfwWindowHint. - * - * This function does not check whether the specified hint values are valid. - * If you set hints to invalid values this will instead be reported by the next - * call to @ref glfwCreateWindow. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [window hint](@ref window_hints) to set. - * @param[in] value The new value of the window hint. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHint - * @sa @ref glfwDefaultWindowHints - * - * @since Added in version 3.3. - * - * @ingroup window - */ - void glfwWindowHintString(int hint, const char* value); -/*! @brief Creates a window and its associated context. - * - * This function creates a window and its associated OpenGL or OpenGL ES - * context. Most of the options controlling how the window and its context - * should be created are specified with [window hints](@ref window_hints). - * - * Successful creation does not change which context is current. Before you - * can use the newly created context, you need to - * [make it current](@ref context_current). For information about the `share` - * parameter, see @ref context_sharing. - * - * The created window, framebuffer and context may differ from what you - * requested, as not all parameters and hints are - * [hard constraints](@ref window_hints_hard). This includes the size of the - * window, especially for full screen windows. To query the actual attributes - * of the created window, framebuffer and context, see @ref - * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. - * - * To create a full screen window, you need to specify the monitor the window - * will cover. If no monitor is specified, the window will be windowed mode. - * Unless you have a way for the user to choose a specific monitor, it is - * recommended that you pick the primary monitor. For more information on how - * to query connected monitors, see @ref monitor_monitors. - * - * For full screen windows, the specified size becomes the resolution of the - * window's _desired video mode_. As long as a full screen window is not - * iconified, the supported video mode most closely matching the desired video - * mode is set for the specified monitor. For more information about full - * screen windows, including the creation of so called _windowed full screen_ - * or _borderless full screen_ windows, see @ref window_windowed_full_screen. - * - * Once you have created the window, you can switch it between windowed and - * full screen mode with @ref glfwSetWindowMonitor. This will not affect its - * OpenGL or OpenGL ES context. - * - * By default, newly created windows use the placement recommended by the - * window system. To create the window at a specific position, set the @ref - * GLFW_POSITION_X and @ref GLFW_POSITION_Y window hints before creation. To - * restore the default behavior, set either or both hints back to - * `GLFW_ANY_POSITION`. - * - * As long as at least one full screen window is not iconified, the screensaver - * is prohibited from starting. - * - * Window systems put limits on window sizes. Very large or very small window - * dimensions may be overridden by the window system on creation. Check the - * actual [size](@ref window_size) after creation. - * - * The [swap interval](@ref buffer_swap) is not set during window creation and - * the initial value may vary depending on driver settings and defaults. - * - * @param[in] width The desired width, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] height The desired height, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] title The initial, UTF-8 encoded window title. - * @param[in] monitor The monitor to use for full screen mode, or `NULL` for - * windowed mode. - * @param[in] share The window whose context to share resources with, or `NULL` - * to not share resources. - * @return The handle of the created window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @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, @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. - * - * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it - * will be set as the initial icon for the window. If no such icon is present, - * the `IDI_APPLICATION` icon will be used instead. To set a different icon, - * see @ref glfwSetWindowIcon. - * - * @remark @win32 The context to share resources with must not be current on - * any other thread. - * - * @remark @macos The OS only supports core profile contexts for OpenGL - * versions 3.2 and later. Before creating an OpenGL context of version 3.2 or - * later you must set the [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) - * hint accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all - * on macOS. - * - * @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][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_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][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. - * - * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for - * a window to reach its requested state. This means you may not be able to - * query the final size, position or other attributes directly after window - * creation. - * - * @remark @x11 The class part of the `WM_CLASS` window property will by - * default be set to the window title passed to this function. The instance - * part will use the contents of the `RESOURCE_NAME` environment variable, if - * present and not empty, or fall back to the window title. Set the - * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and - * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to - * override this. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_creation - * @sa @ref glfwDestroyWindow - * - * @since Added in version 3.0. Replaces `glfwOpenWindow`. - * - * @ingroup window - */ - GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); -/*! @brief Destroys the specified window and its context. - * - * This function destroys the specified window and its context. On calling - * this function, no further callbacks will be called for that window. - * - * If the context of the specified window is current on the main thread, it is - * detached before being destroyed. - * - * @param[in] window The window to destroy. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @note The context of the specified window must not be current on any other - * thread when this function is called. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_creation - * @sa @ref glfwCreateWindow - * - * @since Added in version 3.0. Replaces `glfwCloseWindow`. - * - * @ingroup window - */ - void glfwDestroyWindow(GLFWwindow* window); -/*! @brief Checks the close flag of the specified window. - * - * This function returns the value of the close flag of the specified window. - * - * @param[in] window The window to query. - * @return The value of the close flag. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_close - * - * @since Added in version 3.0. - * - * @ingroup window - */ - int glfwWindowShouldClose(GLFWwindow* window); -/*! @brief Sets the close flag of the specified window. - * - * This function sets the value of the close flag of the specified window. - * This can be used to override the user's attempt to close the window, or - * to signal that it should be closed. - * - * @param[in] window The window whose flag to change. - * @param[in] value The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_close - * - * @since Added in version 3.0. - * - * @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 - * window. - * - * @param[in] window The window whose title to change. - * @param[in] title The UTF-8 encoded window title. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @macos The window title will not be updated until the next time you - * process events. - * - * @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. - * - * @ingroup window - */ - void glfwSetWindowTitle(GLFWwindow* window, const char* title); -/*! @brief Sets the icon for the specified window. - * - * This function sets the icon of the specified window. If passed an array of - * candidate images, those of or closest to the sizes desired by the system are - * selected. If no images are specified, the window reverts to its default - * icon. - * - * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight - * bits per channel with the red channel first. They are arranged canonically - * as packed sequential rows, starting from the top-left corner. - * - * The desired image sizes varies depending on platform and system settings. - * The selected images will be rescaled as needed. Good sizes include 16x16, - * 32x32 and 48x48. - * - * @param[in] window The window whose icon to set. - * @param[in] count The number of images in the specified array, or zero to - * revert to the default window icon. - * @param[in] images The images to create the icon from. This is ignored if - * count is zero. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref - * GLFW_FEATURE_UNAVAILABLE (see remarks). - * - * @pointer_lifetime The specified image data is copied before this function - * returns. - * - * @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][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. - * This function will emit @ref GLFW_FEATURE_UNAVAILABLE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_icon - * - * @since Added in version 3.2. - * - * @ingroup window - */ - void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); -/*! @brief Retrieves the position of the content area of the specified window. - * - * This function retrieves the position, in screen coordinates, of the - * upper-left corner of the content area of the specified window. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The window to query. - * @param[out] xpos Where to store the x-coordinate of the upper-left corner of - * the content area, or `NULL`. - * @param[out] ypos Where to store the y-coordinate of the upper-left corner of - * the content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). - * - * @remark @wayland There is no way for an application to retrieve the global - * position of its windows. This function will emit @ref - * GLFW_FEATURE_UNAVAILABLE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * @sa @ref glfwSetWindowPos - * - * @since Added in version 3.0. - * - * @ingroup window - */ - void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); -/*! @brief Sets the position of the content area of the specified window. - * - * This function sets the position, in screen coordinates, of the upper-left - * corner of the content area of the specified windowed mode window. If the - * window is a full screen window, this function does nothing. - * - * __Do not use this function__ to move an already visible window unless you - * have very good reasons for doing so, as it will confuse and annoy the user. - * - * The window manager may put limits on what positions are allowed. GLFW - * cannot and should not override these limits. - * - * @param[in] window The window to query. - * @param[in] xpos The x-coordinate of the upper-left corner of the content area. - * @param[in] ypos The y-coordinate of the upper-left corner of the content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). - * - * @remark @wayland There is no way for an application to set the global - * position of its windows. This function will emit @ref - * GLFW_FEATURE_UNAVAILABLE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * @sa @ref glfwGetWindowPos - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ - void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); -/*! @brief Retrieves the size of the content area of the specified window. - * - * This function retrieves the size, in screen coordinates, of the content area - * of the specified window. If you wish to retrieve the size of the - * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose size to retrieve. - * @param[out] width Where to store the width, in screen coordinates, of the - * content area, or `NULL`. - * @param[out] height Where to store the height, in screen coordinates, of the - * content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * @sa @ref glfwSetWindowSize - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ - void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); -/*! @brief Sets the size limits of the specified window. - * - * This function sets the size limits of the content area of the specified - * window. If the window is full screen, the size limits only take effect - * once it is made windowed. If the window is not resizable, this function - * does nothing. - * - * The size limits are applied immediately to a windowed mode window and may - * cause it to be resized. - * - * The maximum dimensions must be greater than or equal to the minimum - * dimensions and all must be greater than or equal to zero. - * - * @param[in] window The window to set limits for. - * @param[in] minwidth The minimum width, in screen coordinates, of the content - * area, or `GLFW_DONT_CARE`. - * @param[in] minheight The minimum height, in screen coordinates, of the - * content area, or `GLFW_DONT_CARE`. - * @param[in] maxwidth The maximum width, in screen coordinates, of the content - * area, or `GLFW_DONT_CARE`. - * @param[in] maxheight The maximum height, in screen coordinates, of the - * content area, or `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark If you set size limits and an aspect ratio that conflict, the - * results are undefined. - * - * @remark @wayland The size limits will not be applied until the window is - * actually resized, either by the user or by the compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_sizelimits - * @sa @ref glfwSetWindowAspectRatio - * - * @since Added in version 3.2. - * - * @ingroup window - */ - void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); -/*! @brief Sets the aspect ratio of the specified window. - * - * This function sets the required aspect ratio of the content area of the - * specified window. If the window is full screen, the aspect ratio only takes - * effect once it is made windowed. If the window is not resizable, this - * function does nothing. - * - * The aspect ratio is specified as a numerator and a denominator and both - * values must be greater than zero. For example, the common 16:9 aspect ratio - * is specified as 16 and 9, respectively. - * - * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect - * ratio limit is disabled. - * - * The aspect ratio is applied immediately to a windowed mode window and may - * cause it to be resized. - * - * @param[in] window The window to set limits for. - * @param[in] numer The numerator of the desired aspect ratio, or - * `GLFW_DONT_CARE`. - * @param[in] denom The denominator of the desired aspect ratio, or - * `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark If you set size limits and an aspect ratio that conflict, the - * results are undefined. - * - * @remark @wayland The aspect ratio will not be applied until the window is - * actually resized, either by the user or by the compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_sizelimits - * @sa @ref glfwSetWindowSizeLimits - * - * @since Added in version 3.2. - * - * @ingroup window - */ - void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); -/*! @brief Sets the size of the content area of the specified window. - * - * This function sets the size, in screen coordinates, of the content area of - * the specified window. - * - * For full screen windows, this function updates the resolution of its desired - * video mode and switches to the video mode closest to it, without affecting - * the window's context. As the context is unaffected, the bit depths of the - * framebuffer remain unchanged. - * - * If you wish to update the refresh rate of the desired video mode in addition - * to its resolution, see @ref glfwSetWindowMonitor. - * - * The window manager may put limits on what sizes are allowed. GLFW cannot - * and should not override these limits. - * - * @param[in] window The window to resize. - * @param[in] width The desired width, in screen coordinates, of the window - * content area. - * @param[in] height The desired height, in screen coordinates, of the window - * content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * @sa @ref glfwGetWindowSize - * @sa @ref glfwSetWindowMonitor - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ - void glfwSetWindowSize(GLFWwindow* window, int width, int height); -/*! @brief Retrieves the size of the framebuffer of the specified window. - * - * This function retrieves the size, in pixels, of the framebuffer of the - * specified window. If you wish to retrieve the size of the window in screen - * coordinates, see @ref glfwGetWindowSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose framebuffer to query. - * @param[out] width Where to store the width, in pixels, of the framebuffer, - * or `NULL`. - * @param[out] height Where to store the height, in pixels, of the framebuffer, - * or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_fbsize - * @sa @ref glfwSetFramebufferSizeCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ - void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); -/*! @brief Retrieves the size of the frame of the window. - * - * This function retrieves the size, in screen coordinates, of each edge of the - * frame of the specified window. This size includes the title bar, if the - * window has one. The size of the frame may vary depending on the - * [window-related hints](@ref window_hints_wnd) used to create it. - * - * Because this function retrieves the size of each window frame edge and not - * the offset along a particular coordinate axis, the retrieved values will - * always be zero or positive. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose frame size to query. - * @param[out] left Where to store the size, in screen coordinates, of the left - * edge of the window frame, or `NULL`. - * @param[out] top Where to store the size, in screen coordinates, of the top - * edge of the window frame, or `NULL`. - * @param[out] right Where to store the size, in screen coordinates, of the - * right edge of the window frame, or `NULL`. - * @param[out] bottom Where to store the size, in screen coordinates, of the - * bottom edge of the window frame, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in version 3.1. - * - * @ingroup window - */ - void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); -/*! @brief Retrieves the content scale for the specified window. - * - * This function retrieves the content scale for the specified window. The - * content scale is the ratio between the current DPI and the platform's - * default DPI. This is especially important for text and any UI elements. If - * the pixel dimensions of your UI scaled by this look appropriate on your - * machine then it should appear at a reasonable size on other machines - * regardless of their DPI and scaling settings. This relies on the system DPI - * and scaling settings being somewhat correct. - * - * On platforms where each monitors can have its own content scale, the window - * content scale will depend on which monitor the system considers the window - * to be on. - * - * @param[in] window The window to query. - * @param[out] xscale Where to store the x-axis content scale, or `NULL`. - * @param[out] yscale Where to store the y-axis content scale, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_scale - * @sa @ref glfwSetWindowContentScaleCallback - * @sa @ref glfwGetMonitorContentScale - * - * @since Added in version 3.3. - * - * @ingroup window - */ - void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); -/*! @brief Returns the opacity of the whole window. - * - * This function returns the opacity of the window, including any decorations. - * - * The opacity (or alpha) value is a positive finite number between zero and - * one, where zero is fully transparent and one is fully opaque. If the system - * does not support whole window transparency, this function always returns one. - * - * The initial opacity value for newly created windows is one. - * - * @param[in] window The window to query. - * @return The opacity value of the specified window. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_transparency - * @sa @ref glfwSetWindowOpacity - * - * @since Added in version 3.3. - * - * @ingroup window - */ - float glfwGetWindowOpacity(GLFWwindow* window); -/*! @brief Sets the opacity of the whole window. - * - * This function sets the opacity of the window, including any decorations. - * - * The opacity (or alpha) value is a positive finite number between zero and - * one, where zero is fully transparent and one is fully opaque. - * - * The initial opacity value for newly created windows is one. - * - * A window created with framebuffer transparency may not use whole window - * transparency. The results of doing this are undefined. - * - * @param[in] window The window to set the opacity for. - * @param[in] opacity The desired opacity of the specified window. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). - * - * @remark @wayland There is no way to set an opacity factor for a window. - * This function will emit @ref GLFW_FEATURE_UNAVAILABLE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_transparency - * @sa @ref glfwGetWindowOpacity - * - * @since Added in version 3.3. - * - * @ingroup window - */ - void glfwSetWindowOpacity(GLFWwindow* window, float opacity); -/*! @brief Iconifies the specified window. - * - * This function iconifies (minimizes) the specified window if it was - * previously restored. If the window is already iconified, this function does - * nothing. - * - * If the specified window is a full screen window, GLFW restores the original - * video mode of the monitor. The window's desired video mode is set again - * when the window is restored. - * - * @param[in] window The window to iconify. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland Once a window is iconified, @ref glfwRestoreWindow won’t - * be able to restore it. This is a design decision of the xdg-shell - * protocol. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwRestoreWindow - * @sa @ref glfwMaximizeWindow - * - * @since Added in version 2.1. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ - void glfwIconifyWindow(GLFWwindow* window); -/*! @brief Restores the specified window. - * - * This function restores the specified window if it was previously iconified - * (minimized) or maximized. If the window is already restored, this function - * does nothing. - * - * If the specified window is an iconified full screen window, its desired - * video mode is set again for its monitor when the window is restored. - * - * @param[in] window The window to restore. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwIconifyWindow - * @sa @ref glfwMaximizeWindow - * - * @since Added in version 2.1. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ - void glfwRestoreWindow(GLFWwindow* window); -/*! @brief Maximizes the specified window. - * - * This function maximizes the specified window if it was previously not - * maximized. If the window is already maximized, this function does nothing. - * - * If the specified window is a full screen window, this function does nothing. - * - * @param[in] window The window to maximize. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwIconifyWindow - * @sa @ref glfwRestoreWindow - * - * @since Added in GLFW 3.2. - * - * @ingroup window - */ - void glfwMaximizeWindow(GLFWwindow* window); -/*! @brief Makes the specified window visible. - * - * This function makes the specified window visible if it was previously - * hidden. If the window is already visible or is in full screen mode, this - * function does nothing. - * - * By default, windowed mode windows are focused when shown - * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint - * to change this behavior for all newly created windows, or change the - * behavior for an existing window with @ref glfwSetWindowAttrib. - * - * @param[in] window The window to make visible. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland Because Wayland wants every frame of the desktop to be - * complete, this function does not immediately make the window visible. - * Instead it will become visible the next time the window framebuffer is - * updated after this call. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hide - * @sa @ref glfwHideWindow - * - * @since Added in version 3.0. - * - * @ingroup window - */ - void glfwShowWindow(GLFWwindow* window); -/*! @brief Hides the specified window. - * - * This function hides the specified window if it was previously visible. If - * the window is already hidden or is in full screen mode, this function does - * nothing. - * - * @param[in] window The window to hide. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hide - * @sa @ref glfwShowWindow - * - * @since Added in version 3.0. - * - * @ingroup window - */ - void glfwHideWindow(GLFWwindow* window); -/*! @brief Brings the specified window to front and sets input focus. - * - * This function brings the specified window to front and sets input focus. - * The window should already be visible and not iconified. - * - * By default, both windowed and full screen mode windows are focused when - * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to - * disable this behavior. - * - * Also by default, windowed mode windows are focused when shown - * with @ref glfwShowWindow. Set the - * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. - * - * __Do not use this function__ to steal focus from other applications unless - * you are certain that is what the user wants. Focus stealing can be - * extremely disruptive. - * - * For a less disruptive way of getting the user's attention, see - * [attention requests](@ref window_attention). - * - * @param[in] window The window to give input focus. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @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. - * - * @sa @ref window_focus - * @sa @ref window_attention - * - * @since Added in version 3.2. - * - * @ingroup window - */ - void glfwFocusWindow(GLFWwindow* window); -/*! @brief Requests user attention to the specified window. - * - * This function requests user attention to the specified window. On - * platforms where this is not supported, attention is requested to the - * application as a whole. - * - * Once the user has given attention, usually by focusing the window or - * application, the system will end the request automatically. - * - * @param[in] window The window to request attention to. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @macos Attention is requested to the application as a whole, not the - * specific window. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attention - * - * @since Added in version 3.3. - * - * @ingroup window - */ - void glfwRequestWindowAttention(GLFWwindow* window); -/*! @brief Returns the monitor that the window uses for full screen mode. - * - * This function returns the handle of the monitor that the specified window is - * in full screen on. - * - * @param[in] window The window to query. - * @return The monitor, or `NULL` if the window is in windowed mode or an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_monitor - * @sa @ref glfwSetWindowMonitor - * - * @since Added in version 3.0. - * - * @ingroup window - */ - GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); -/*! @brief Sets the mode, monitor, video mode and placement of a window. - * - * This function sets the monitor that the window uses for full screen mode or, - * if the monitor is `NULL`, makes it windowed mode. - * - * When setting a monitor, this function updates the width, height and refresh - * rate of the desired video mode and switches to the video mode closest to it. - * The window position is ignored when setting a monitor. - * - * When the monitor is `NULL`, the position, width and height are used to - * place the window content area. The refresh rate is ignored when no monitor - * is specified. - * - * If you only wish to update the resolution of a full screen window or the - * size of a windowed mode window, see @ref glfwSetWindowSize. - * - * When a window transitions from full screen to windowed mode, this function - * restores any previous window settings such as whether it is decorated, - * floating, resizable, has size or aspect ratio limits, etc. - * - * @param[in] window The window whose monitor, size or video mode to set. - * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. - * @param[in] xpos The desired x-coordinate of the upper-left corner of the - * content area. - * @param[in] ypos The desired y-coordinate of the upper-left corner of the - * content area. - * @param[in] width The desired with, in screen coordinates, of the content - * area or video mode. - * @param[in] height The desired height, in screen coordinates, of the content - * area or video mode. - * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, - * or `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise - * affected by any resizing or mode switching, although you may need to update - * your viewport if the framebuffer size has changed. - * - * @remark @wayland The desired window position is ignored, as there is no way - * for an application to set this property. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_monitor - * @sa @ref window_full_screen - * @sa @ref glfwGetWindowMonitor - * @sa @ref glfwSetWindowSize - * - * @since Added in version 3.2. - * - * @ingroup window - */ - void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); -/*! @brief Returns an attribute of the specified window. - * - * This function returns the value of an attribute of the specified window or - * its OpenGL or OpenGL ES context. - * - * @param[in] window The window to query. - * @param[in] attrib The [window attribute](@ref window_attribs) whose value to - * return. - * @return The value of the attribute, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @remark Framebuffer related hints are not window attributes. See @ref - * window_attribs_fb for more information. - * - * @remark Zero is a valid value for many window and context related - * attributes so you cannot use a return value of zero as an indication of - * errors. However, this function should not fail as long as it is passed - * valid arguments and the library has been [initialized](@ref intro_init). - * - * @remark @wayland The Wayland protocol provides no way to check whether a - * window is iconfied, so @ref GLFW_ICONIFIED always returns `GLFW_FALSE`. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attribs - * @sa @ref glfwSetWindowAttrib - * - * @since Added in version 3.0. Replaces `glfwGetWindowParam` and - * `glfwGetGLVersion`. - * - * @ingroup window - */ - int glfwGetWindowAttrib(GLFWwindow* window, int attrib); -/*! @brief Sets an attribute of the specified window. - * - * This function sets the value of an attribute of the specified window. - * - * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), - * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), - * [GLFW_FLOATING](@ref GLFW_FLOATING_attrib), - * [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and - * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib). - * [GLFW_MOUSE_PASSTHROUGH](@ref GLFW_MOUSE_PASSTHROUGH_attrib) - * - * Some of these attributes are ignored for full screen windows. The new - * value will take effect if the window is later made windowed. - * - * Some of these attributes are ignored for windowed mode windows. The new - * value will take effect if the window is later made full screen. - * - * @param[in] window The window to set the attribute for. - * @param[in] attrib A supported window attribute. - * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * 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 - * @sa @ref glfwGetWindowAttrib - * - * @since Added in version 3.3. - * - * @ingroup window - */ - void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); -/*! @brief Sets the user pointer of the specified window. - * - * This function sets the user-defined pointer of the specified window. The - * current value is retained until the window is destroyed. The initial value - * is `NULL`. - * - * @param[in] window The window whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_userptr - * @sa @ref glfwGetWindowUserPointer - * - * @since Added in version 3.0. - * - * @ingroup window - */ - void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); -/*! @brief Returns the user pointer of the specified window. - * - * This function returns the current value of the user-defined pointer of the - * specified window. The initial value is `NULL`. - * - * @param[in] window The window whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_userptr - * @sa @ref glfwSetWindowUserPointer - * - * @since Added in version 3.0. - * - * @ingroup window - */ - void* glfwGetWindowUserPointer(GLFWwindow* window); -/*! @brief Sets the position callback for the specified window. - * - * This function sets the position callback of the specified window, which is - * called when the window is moved. The callback is provided with the - * position, in screen coordinates, of the upper-left corner of the content - * area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int xpos, int ypos) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowposfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland This callback will never be called, as there is no way for - * an application to know its global position. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * - * @since Added in version 3.0. - * - * @ingroup window - */ - GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); -/*! @brief Sets the size callback for the specified window. - * - * This function sets the size callback of the specified window, which is - * called when the window is resized. The callback is provided with the size, - * in screen coordinates, of the content area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int width, int height) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowsizefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ - GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); -/*! @brief Sets the close callback for the specified window. - * - * This function sets the close callback of the specified window, which is - * called when the user attempts to close the window, for example by clicking - * the close widget in the title bar. - * - * The close flag is set before this callback is called, but you can modify it - * at any time with @ref glfwSetWindowShouldClose. - * - * The close callback is not triggered by @ref glfwDestroyWindow. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowclosefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @macos Selecting Quit from the application menu will trigger the - * close callback for all windows. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_close - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ - GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); -/*! @brief Sets the refresh callback for the specified window. - * - * This function sets the refresh callback of the specified window, which is - * called when the content area of the window needs to be redrawn, for example - * if the window has been exposed after having been covered by another window. - * - * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where - * the window contents are saved off-screen, this callback may be called only - * very infrequently or never at all. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window); - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowrefreshfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_refresh - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ - GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); -/*! @brief Sets the focus callback for the specified window. - * - * This function sets the focus callback of the specified window, which is - * called when the window gains or loses input focus. - * - * After the focus callback is called for a window that lost input focus, - * synthetic key and mouse button release events will be generated for all such - * that had been pressed. For more information, see @ref glfwSetKeyCallback - * and @ref glfwSetMouseButtonCallback. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int focused) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowfocusfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_focus - * - * @since Added in version 3.0. - * - * @ingroup window - */ - GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); -/*! @brief Sets the iconify callback for the specified window. - * - * This function sets the iconification callback of the specified window, which - * is called when the window is iconified or restored. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int iconified) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowiconifyfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * - * @since Added in version 3.0. - * - * @ingroup window - */ - GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); -/*! @brief Sets the maximize callback for the specified window. - * - * This function sets the maximization callback of the specified window, which - * is called when the window is maximized or restored. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int maximized) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowmaximizefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_maximize - * - * @since Added in version 3.3. - * - * @ingroup window - */ - GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); -/*! @brief Sets the framebuffer resize callback for the specified window. - * - * This function sets the framebuffer resize callback of the specified window, - * which is called when the framebuffer of the specified window is resized. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int width, int height) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWframebuffersizefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_fbsize - * - * @since Added in version 3.0. - * - * @ingroup window - */ - GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); -/*! @brief Sets the window content scale callback for the specified window. - * - * This function sets the window content scale callback of the specified window, - * which is called when the content scale of the specified window changes. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, float xscale, float yscale) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowcontentscalefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_scale - * @sa @ref glfwGetWindowContentScale - * - * @since Added in version 3.3. - * - * @ingroup window - */ - GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); -/*! @brief Processes all pending events. - * - * This function processes only those events that are already in the event - * queue and then returns immediately. Processing events will cause the window - * and input callbacks associated with those events to be called. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwWaitEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 1.0. - * - * @ingroup window - */ - void glfwPollEvents(void); -/*! @brief Waits until events are queued and processes them. - * - * This function puts the calling thread to sleep until at least one event is - * available in the event queue. Once one or more events are available, - * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue - * are processed and the function then returns immediately. Processing events - * will cause the window and input callbacks associated with those events to be - * called. - * - * Since not all events are associated with callbacks, this function may return - * without a callback having been called even if you are monitoring all - * callbacks. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwPollEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 2.5. - * - * @ingroup window - */ - void glfwWaitEvents(void); -/*! @brief Waits with timeout until events are queued and processes them. - * - * This function puts the calling thread to sleep until at least one event is - * available in the event queue, or until the specified timeout is reached. If - * one or more events are available, it behaves exactly like @ref - * glfwPollEvents, i.e. the events in the queue are processed and the function - * then returns immediately. Processing events will cause the window and input - * callbacks associated with those events to be called. - * - * The timeout value must be a positive finite number. - * - * Since not all events are associated with callbacks, this function may return - * without a callback having been called even if you are monitoring all - * callbacks. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @param[in] timeout The maximum amount of time, in seconds, to wait. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwPollEvents - * @sa @ref glfwWaitEvents - * - * @since Added in version 3.2. - * - * @ingroup window - */ - void glfwWaitEventsTimeout(double timeout); -/*! @brief Posts an empty event to the event queue. - * - * This function posts an empty event from the current thread to the event - * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref events - * @sa @ref glfwWaitEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 3.1. - * - * @ingroup window - */ - void glfwPostEmptyEvent(void); -/*! @brief Returns the value of an input option for the specified window. - * - * This function returns the value of an input option for the specified window. - * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or - * @ref GLFW_RAW_MOUSE_MOTION. - * - * @param[in] window The window to query. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or - * `GLFW_RAW_MOUSE_MOTION`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref glfwSetInputMode - * - * @since Added in version 3.0. - * - * @ingroup input - */ - int glfwGetInputMode(GLFWwindow* window, int mode); -/*! @brief Sets an input option for the specified window. - * - * This function sets an input mode option for the specified window. The mode - * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or - * @ref GLFW_RAW_MOUSE_MOTION. - * - * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor - * modes: - * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. - * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the - * content area of the window but does not restrict the cursor from leaving. - * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual - * and unlimited cursor movement. This is useful for implementing for - * example 3D camera controls. - * - `GLFW_CURSOR_CAPTURED` makes the cursor visible and confines it to the - * content area of the window. - * - * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to - * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are - * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` - * the next time it is called even if the key had been released before the - * call. This is useful when you are only interested in whether keys have been - * pressed but not when or in which order. - * - * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either - * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. - * If sticky mouse buttons are enabled, a mouse button press will ensure that - * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even - * if the mouse button had been released before the call. This is useful when - * you are only interested in whether mouse buttons have been pressed but not - * when or in which order. - * - * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to - * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, - * callbacks that receive modifier bits will also have the @ref - * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, - * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. - * - * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` - * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is - * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, - * attempting to set this will emit @ref GLFW_FEATURE_UNAVAILABLE. Call @ref - * glfwRawMouseMotionSupported to check for support. - * - * @param[in] window The window whose input mode to set. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or - * `GLFW_RAW_MOUSE_MOTION`. - * @param[in] value The new value of the specified input mode. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM, @ref GLFW_PLATFORM_ERROR and @ref - * GLFW_FEATURE_UNAVAILABLE (see above). - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref glfwGetInputMode - * - * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. - * - * @ingroup input - */ - void glfwSetInputMode(GLFWwindow* window, int mode, int value); -/*! @brief Returns whether raw mouse motion is supported. - * - * This function returns whether raw mouse motion is supported on the current - * system. This status does not change after GLFW has been initialized so you - * only need to check this once. If you attempt to enable raw motion on - * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. - * - * Raw mouse motion is closer to the actual motion of the mouse across - * a surface. It is not affected by the scaling and acceleration applied to - * the motion of the desktop cursor. That processing is suitable for a cursor - * while raw motion is better for controlling for example a 3D camera. Because - * of this, raw mouse motion is only provided when the cursor is disabled. - * - * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, - * or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref raw_mouse_motion - * @sa @ref glfwSetInputMode - * - * @since Added in version 3.3. - * - * @ingroup input - */ - int glfwRawMouseMotionSupported(void); -/*! @brief Returns the layout-specific name of the specified printable key. - * - * This function returns the name of the specified printable key, encoded as - * UTF-8. This is typically the character that key would produce without any - * modifier keys, intended for displaying key bindings to the user. For dead - * keys, it is typically the diacritic it would add to a character. - * - * __Do not use this function__ for [text input](@ref input_char). You will - * break text input for many languages even if it happens to work for yours. - * - * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, - * otherwise the scancode is ignored. If you specify a non-printable key, or - * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this - * function returns `NULL` but does not emit an error. - * - * This behavior allows you to always pass in the arguments in the - * [key callback](@ref input_key) without modification. - * - * The printable keys are: - * - `GLFW_KEY_APOSTROPHE` - * - `GLFW_KEY_COMMA` - * - `GLFW_KEY_MINUS` - * - `GLFW_KEY_PERIOD` - * - `GLFW_KEY_SLASH` - * - `GLFW_KEY_SEMICOLON` - * - `GLFW_KEY_EQUAL` - * - `GLFW_KEY_LEFT_BRACKET` - * - `GLFW_KEY_RIGHT_BRACKET` - * - `GLFW_KEY_BACKSLASH` - * - `GLFW_KEY_WORLD_1` - * - `GLFW_KEY_WORLD_2` - * - `GLFW_KEY_0` to `GLFW_KEY_9` - * - `GLFW_KEY_A` to `GLFW_KEY_Z` - * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` - * - `GLFW_KEY_KP_DECIMAL` - * - `GLFW_KEY_KP_DIVIDE` - * - `GLFW_KEY_KP_MULTIPLY` - * - `GLFW_KEY_KP_SUBTRACT` - * - `GLFW_KEY_KP_ADD` - * - `GLFW_KEY_KP_EQUAL` - * - * Names for printable keys depend on keyboard layout, while names for - * non-printable keys are the same across layouts but depend on the application - * language and should be localized along with other user interface text. - * - * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. - * @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, @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. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key_name - * - * @since Added in version 3.2. - * - * @ingroup input - */ - const char* glfwGetKeyName(int key, int scancode); -/*! @brief Returns the platform-specific scancode of the specified key. - * - * This function returns the platform-specific scancode of the specified key. - * - * 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 [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 and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref input_key - * - * @since Added in version 3.3. - * - * @ingroup input - */ - int glfwGetKeyScancode(int key); -/*! @brief Returns the last reported state of a keyboard key for the specified - * window. - * - * This function returns the last state reported for the specified key to the - * specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. The action `GLFW_REPEAT` is only reported to the key callback. - * - * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns - * `GLFW_PRESS` the first time you call it for a key that was pressed, even if - * that key has already been released. - * - * The key functions deal with physical keys, with [key tokens](@ref keys) - * named after their use on the standard US keyboard layout. If you want to - * input text, use the Unicode character callback instead. - * - * The [modifier key bit masks](@ref mods) are not key tokens and cannot be - * used with this function. - * - * __Do not use this function__ to implement [text input](@ref input_char). - * - * @param[in] window The desired window. - * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is - * not a valid key for this function. - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ - int glfwGetKey(GLFWwindow* window, int key); -/*! @brief Returns the last reported state of a mouse button for the specified - * window. - * - * This function returns the last state reported for the specified mouse button - * to the specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. - * - * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function - * returns `GLFW_PRESS` the first time you call it for a mouse button that was - * pressed, even if that mouse button has already been released. - * - * @param[in] window The desired window. - * @param[in] button The desired [mouse button](@ref buttons). - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ - int glfwGetMouseButton(GLFWwindow* window, int button); -/*! @brief Retrieves the position of the cursor relative to the content area of - * the window. - * - * This function returns the position of the cursor, in screen coordinates, - * relative to the upper-left corner of the content area of the specified - * window. - * - * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor - * position is unbounded and limited only by the minimum and maximum values of - * a `double`. - * - * The coordinate can be converted to their integer equivalents with the - * `floor` function. Casting directly to an integer type works for positive - * coordinates, but fails for negative ones. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The desired window. - * @param[out] xpos Where to store the cursor x-coordinate, relative to the - * left edge of the content area, or `NULL`. - * @param[out] ypos Where to store the cursor y-coordinate, relative to the to - * top edge of the content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa @ref glfwSetCursorPos - * - * @since Added in version 3.0. Replaces `glfwGetMousePos`. - * - * @ingroup input - */ - void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); -/*! @brief Sets the position of the cursor, relative to the content area of the - * window. - * - * This function sets the position, in screen coordinates, of the cursor - * relative to the upper-left corner of the content area of the specified - * window. The window must have input focus. If the window does not have - * input focus when this function is called, it fails silently. - * - * __Do not use this function__ to implement things like camera controls. GLFW - * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the - * cursor, transparently re-centers it and provides unconstrained cursor - * motion. See @ref glfwSetInputMode for more information. - * - * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is - * unconstrained and limited only by the minimum and maximum values of - * a `double`. - * - * @param[in] window The desired window. - * @param[in] xpos The desired x-coordinate, relative to the left edge of the - * content area. - * @param[in] ypos The desired y-coordinate, relative to the top edge of the - * content area. - * - * @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 emit @ref GLFW_FEATURE_UNAVAILABLE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa @ref glfwGetCursorPos - * - * @since Added in version 3.0. Replaces `glfwSetMousePos`. - * - * @ingroup input - */ - void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); -/*! @brief Creates a custom cursor. - * - * Creates a new custom cursor image that can be set for a window with @ref - * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. - * Any remaining cursors are destroyed by @ref glfwTerminate. - * - * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight - * bits per channel with the red channel first. They are arranged canonically - * as packed sequential rows, starting from the top-left corner. - * - * The cursor hotspot is specified in pixels, relative to the upper-left corner - * of the cursor image. Like all other coordinate systems in GLFW, the X-axis - * points to the right and the Y-axis points down. - * - * @param[in] image The desired cursor image. - * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. - * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. - * @return The handle of the created cursor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified image data is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwDestroyCursor - * @sa @ref glfwCreateStandardCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ - GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); -/*! @brief Creates a cursor with a standard shape. - * - * Returns a cursor with a standard shape, that can be set for a window with - * @ref glfwSetCursor. The images for these cursors come from the system - * cursor theme and their exact appearance will vary between platforms. - * - * Most of these shapes are guaranteed to exist on every supported platform but - * a few may not be present. See the table below for details. - * - * Cursor shape | Windows | macOS | X11 | Wayland - * ------------------------------ | ------- | ----- | ------ | ------- - * @ref GLFW_ARROW_CURSOR | Yes | Yes | Yes | Yes - * @ref GLFW_IBEAM_CURSOR | Yes | Yes | Yes | Yes - * @ref GLFW_CROSSHAIR_CURSOR | Yes | Yes | Yes | Yes - * @ref GLFW_POINTING_HAND_CURSOR | Yes | Yes | Yes | Yes - * @ref GLFW_RESIZE_EW_CURSOR | Yes | Yes | Yes | Yes - * @ref GLFW_RESIZE_NS_CURSOR | Yes | Yes | Yes | Yes - * @ref GLFW_RESIZE_NWSE_CURSOR | Yes | Yes1 | Maybe2 | Maybe2 - * @ref GLFW_RESIZE_NESW_CURSOR | Yes | Yes1 | Maybe2 | Maybe2 - * @ref GLFW_RESIZE_ALL_CURSOR | Yes | Yes | Yes | Yes - * @ref GLFW_NOT_ALLOWED_CURSOR | Yes | Yes | Maybe2 | Maybe2 - * - * 1) This uses a private system API and may fail in the future. - * - * 2) This uses a newer standard that not all cursor themes support. - * - * If the requested shape is not available, this function emits a @ref - * GLFW_CURSOR_UNAVAILABLE error and returns `NULL`. - * - * @param[in] shape One of the [standard shapes](@ref shapes). - * @return A new cursor ready to use or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM, @ref GLFW_CURSOR_UNAVAILABLE and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_standard - * @sa @ref glfwCreateCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ - GLFWcursor* glfwCreateStandardCursor(int shape); -/*! @brief Destroys a cursor. - * - * This function destroys a cursor previously created with @ref - * glfwCreateCursor. Any remaining cursors will be destroyed by @ref - * glfwTerminate. - * - * If the specified cursor is current for any window, that window will be - * reverted to the default cursor. This does not affect the cursor mode. - * - * @param[in] cursor The cursor object to destroy. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwCreateCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ - void glfwDestroyCursor(GLFWcursor* cursor); -/*! @brief Sets the cursor for the window. - * - * This function sets the cursor image to be used when the cursor is over the - * content area of the specified window. The set cursor will only be visible - * when the [cursor mode](@ref cursor_mode) of the window is - * `GLFW_CURSOR_NORMAL`. - * - * On some platforms, the set cursor may not be visible unless the window also - * has input focus. - * - * @param[in] window The window to set the cursor for. - * @param[in] cursor The cursor to set, or `NULL` to switch back to the default - * arrow cursor. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * - * @since Added in version 3.1. - * - * @ingroup input - */ - void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); -/*! @brief Sets the key callback. - * - * This function sets the key callback of the specified window, which is called - * when a key is pressed, repeated or released. - * - * The key functions deal with physical keys, with layout independent - * [key tokens](@ref keys) named after their values in the standard US keyboard - * layout. If you want to input text, use the - * [character callback](@ref glfwSetCharCallback) instead. - * - * When a window loses input focus, it will generate synthetic key release - * 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 - * machine. Scancodes are intended to allow users to bind keys that don't have - * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their - * state is not saved and so it cannot be queried with @ref glfwGetKey. - * - * Sometimes GLFW needs to generate synthetic key events, in which case the - * scancode may be zero. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new key callback, or `NULL` to remove the currently - * set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWkeyfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ - GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); -/*! @brief Sets the Unicode character callback. - * - * This function sets the character callback of the specified window, which is - * called when a Unicode character is input. - * - * The character callback is intended for Unicode text input. As it deals with - * characters, it is keyboard layout dependent, whereas the - * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 - * to physical keys, as a key may produce zero, one or more characters. If you - * want to know whether a specific physical key was pressed or released, see - * the key callback instead. - * - * The character callback behaves as system text input normally does and will - * not be called if modifier keys are held down that would prevent normal text - * input on that platform, for example a Super (Command) key on macOS or Alt key - * on Windows. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcharfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in version 2.4. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ - GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); -/*! @brief Sets the Unicode character with modifiers callback. - * - * This function sets the character with modifiers callback of the specified - * window, which is called when a Unicode character is input regardless of what - * modifier keys are used. - * - * The character with modifiers callback is intended for implementing custom - * Unicode character input. For regular Unicode text input, see the - * [character callback](@ref glfwSetCharCallback). Like the character - * callback, the character with modifiers callback deals with characters and is - * keyboard layout dependent. Characters do not map 1:1 to physical keys, as - * a key may produce zero, one or more characters. If you want to know whether - * a specific physical key was pressed or released, see the - * [key callback](@ref glfwSetKeyCallback) instead. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * [error](@ref error_handling) occurred. - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcharmodsfun). - * - * @deprecated Scheduled for removal in version 4.0. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in version 3.1. - * - * @ingroup input - */ - GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); -/*! @brief Sets the mouse button callback. - * - * This function sets the mouse button callback of the specified window, which - * is called when a mouse button is pressed or released. - * - * When a window loses input focus, it will generate synthetic mouse button - * release events for all pressed mouse buttons. 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. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int button, int action, int mods) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWmousebuttonfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ - GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); -/*! @brief Sets the cursor position callback. - * - * This function sets the cursor position callback of the specified window, - * which is called when the cursor is moved. The callback is provided with the - * position, in screen coordinates, relative to the upper-left corner of the - * content area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, double xpos, double ypos); - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcursorposfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * - * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. - * - * @ingroup input - */ - GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); -/*! @brief Sets the cursor enter/leave callback. - * - * This function sets the cursor boundary crossing callback of the specified - * window, which is called when the cursor enters or leaves the content area of - * the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int entered) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcursorenterfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_enter - * - * @since Added in version 3.0. - * - * @ingroup input - */ - GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); -/*! @brief Sets the scroll callback. - * - * This function sets the scroll callback of the specified window, which is - * called when a scrolling device is used, such as a mouse wheel or scrolling - * area of a touchpad. - * - * The scroll callback receives all scrolling input, like that from a mouse - * wheel or a touchpad scrolling area. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new scroll callback, or `NULL` to remove the - * currently set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, double xoffset, double yoffset) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWscrollfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref scrolling - * - * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. - * - * @ingroup input - */ - GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); -/*! @brief Sets the path drop callback. - * - * This function sets the path drop callback of the specified window, which is - * called when one or more dragged paths are dropped on the window. - * - * Because the path array and its strings may have been generated specifically - * for that event, they are not guaranteed to be valid after the callback has - * returned. If you wish to use them after the callback returns, you need to - * make a deep copy. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new file drop callback, or `NULL` to remove the - * currently set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int path_count, const char* paths[]) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWdropfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref path_drop - * - * @since Added in version 3.1. - * - * @ingroup input - */ - GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); -/*! @brief Returns whether the specified joystick is present. - * - * This function returns whether the specified joystick is present. - * - * There is no need to call this function before other functions that accept - * a joystick ID, as they all check for presence before performing any other - * work. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick - * - * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. - * - * @ingroup input - */ - int glfwJoystickPresent(int jid); -/*! @brief Returns the values of all axes of the specified joystick. - * - * This function returns the values of all axes of the specified joystick. - * Each element in the array is a value between -1.0 and 1.0. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of axis values in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of axis values, or `NULL` if the joystick is not present or - * an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_axis - * - * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. - * - * @ingroup input - */ - const float* glfwGetJoystickAxes(int jid, int* count); -/*! @brief Returns the state of all buttons of the specified joystick. - * - * This function returns the state of all buttons of the specified joystick. - * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. - * - * For backward compatibility with earlier versions that did not have @ref - * glfwGetJoystickHats, the button array also includes all hats, each - * represented as four buttons. The hats are in the same order as returned by - * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and - * _left_. To disable these extra buttons, set the @ref - * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of button states in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of button states, or `NULL` if the joystick is not present - * or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_button - * - * @since Added in version 2.2. - * @glfw3 Changed to return a dynamic array. - * - * @ingroup input - */ - const unsigned char* glfwGetJoystickButtons(int jid, int* count); -/*! @brief Returns the state of all hats of the specified joystick. - * - * This function returns the state of all hats of the specified joystick. - * Each element in the array is one of the following values: - * - * Name | Value - * ---- | ----- - * `GLFW_HAT_CENTERED` | 0 - * `GLFW_HAT_UP` | 1 - * `GLFW_HAT_RIGHT` | 2 - * `GLFW_HAT_DOWN` | 4 - * `GLFW_HAT_LEFT` | 8 - * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` - * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` - * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` - * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` - * - * The diagonal directions are bitwise combinations of the primary (up, right, - * down and left) directions and you can test for these individually by ANDing - * it with the corresponding direction. - * - * @code - * if (hats[2] & GLFW_HAT_RIGHT) - * { - * // State of hat 2 could be right-up, right or right-down - * } - * @endcode - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of hat states in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of hat states, or `NULL` if the joystick is not present - * or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected, this function is called again for that joystick or the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_hat - * - * @since Added in version 3.3. - * - * @ingroup input - */ - const unsigned char* glfwGetJoystickHats(int jid, int* count); -/*! @brief Returns the name of the specified joystick. - * - * This function returns the name, encoded as UTF-8, of the specified joystick. - * The returned string is allocated and freed by GLFW. You should not free it - * yourself. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick - * is not present or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_name - * - * @since Added in version 3.0. - * - * @ingroup input - */ - const char* glfwGetJoystickName(int jid); -/*! @brief Returns the SDL compatible GUID of the specified joystick. - * - * This function returns the SDL compatible GUID, as a UTF-8 encoded - * hexadecimal string, of the specified joystick. The returned string is - * allocated and freed by GLFW. You should not free it yourself. - * - * The GUID is what connects a joystick to a gamepad mapping. A connected - * joystick will always have a GUID even if there is no gamepad mapping - * assigned to it. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to - * uniquely identify the make and model of a joystick but does not identify - * a specific unit, e.g. all wired Xbox 360 controllers will have the same - * GUID on that platform. The GUID for a unit may vary between platforms - * depending on what hardware information the platform specific APIs provide. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick - * is not present or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ - const char* glfwGetJoystickGUID(int jid); -/*! @brief Sets the user pointer of the specified joystick. - * - * This function sets the user-defined pointer of the specified joystick. The - * current value is retained until the joystick is disconnected. The initial - * value is `NULL`. - * - * This function may be called from the joystick callback, even for a joystick - * that is being disconnected. - * - * @param[in] jid The joystick whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref joystick_userptr - * @sa @ref glfwGetJoystickUserPointer - * - * @since Added in version 3.3. - * - * @ingroup input - */ - void glfwSetJoystickUserPointer(int jid, void* pointer); -/*! @brief Returns the user pointer of the specified joystick. - * - * This function returns the current value of the user-defined pointer of the - * specified joystick. The initial value is `NULL`. - * - * This function may be called from the joystick callback, even for a joystick - * that is being disconnected. - * - * @param[in] jid The joystick whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref joystick_userptr - * @sa @ref glfwSetJoystickUserPointer - * - * @since Added in version 3.3. - * - * @ingroup input - */ - void* glfwGetJoystickUserPointer(int jid); -/*! @brief Returns whether the specified joystick has a gamepad mapping. - * - * This function returns whether the specified joystick is both present and has - * a gamepad mapping. - * - * If the specified joystick is present but does not have a gamepad mapping - * this function will return `GLFW_FALSE` but will not generate an error. Call - * @ref glfwJoystickPresent to check if a joystick is present regardless of - * whether it has a mapping. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, - * or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwGetGamepadState - * - * @since Added in version 3.3. - * - * @ingroup input - */ - int glfwJoystickIsGamepad(int jid); -/*! @brief Sets the joystick configuration callback. - * - * This function sets the joystick configuration callback, or removes the - * currently set callback. This is called when a joystick is connected to or - * disconnected from the system. - * - * For joystick connection and disconnection events to be delivered on all - * platforms, you need to call one of the [event processing](@ref events) - * functions. Joystick disconnection may also be detected and the callback - * called by joystick functions. The function will then return whatever it - * returns if the joystick is not present. - * - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(int jid, int event) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWjoystickfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_event - * - * @since Added in version 3.2. - * - * @ingroup input - */ - GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); -/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. - * - * This function parses the specified ASCII encoded string and updates the - * internal list with any gamepad mappings it finds. This string may - * contain either a single gamepad mapping or many mappings separated by - * newlines. The parser supports the full format of the `gamecontrollerdb.txt` - * source file including empty lines and comments. - * - * See @ref gamepad_mapping for a description of the format. - * - * If there is already a gamepad mapping for a given GUID in the internal list, - * it will be replaced by the one passed to this function. If the library is - * terminated and re-initialized the internal list will revert to the built-in - * default. - * - * @param[in] string The string containing the gamepad mappings. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_VALUE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwJoystickIsGamepad - * @sa @ref glfwGetGamepadName - * - * @since Added in version 3.3. - * - * @ingroup input - */ - int glfwUpdateGamepadMappings(const char* string); -/*! @brief Returns the human-readable gamepad name for the specified joystick. - * - * This function returns the human-readable name of the gamepad from the - * gamepad mapping assigned to the specified joystick. - * - * If the specified joystick is not present or does not have a gamepad mapping - * this function will return `NULL` but will not generate an error. Call - * @ref glfwJoystickPresent to check whether it is present regardless of - * whether it has a mapping. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded name of the gamepad, or `NULL` if the - * joystick is not present, does not have a mapping or an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref GLFW_INVALID_ENUM. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected, the gamepad mappings are updated or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwJoystickIsGamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ - const char* glfwGetGamepadName(int jid); -/*! @brief Retrieves the state of the specified joystick remapped as a gamepad. - * - * This function retrieves the state of the specified joystick remapped to - * an Xbox-like gamepad. - * - * If the specified joystick is not present or does not have a gamepad mapping - * this function will return `GLFW_FALSE` but will not generate an error. Call - * @ref glfwJoystickPresent to check whether it is present regardless of - * whether it has a mapping. - * - * The Guide button may not be available for input as it is often hooked by the - * system or the Steam client. - * - * Not all devices have all the buttons or axes provided by @ref - * GLFWgamepadstate. Unavailable buttons and axes will always report - * `GLFW_RELEASE` and 0.0 respectively. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] state The gamepad input state of the joystick. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is - * connected, it has no gamepad mapping or an [error](@ref error_handling) - * occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwUpdateGamepadMappings - * @sa @ref glfwJoystickIsGamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ - int glfwGetGamepadState(int jid, GLFWgamepadstate* state); -/*! @brief Sets the clipboard to the specified string. - * - * This function sets the system clipboard to the specified, UTF-8 encoded - * string. - * - * @param[in] window Deprecated. Any valid window or `NULL`. - * @param[in] string A UTF-8 encoded string. - * - * @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. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa @ref glfwGetClipboardString - * - * @since Added in version 3.0. - * - * @ingroup input - */ - void glfwSetClipboardString(GLFWwindow* window, const char* string); -/*! @brief Returns the contents of the clipboard as a string. - * - * This function returns the contents of the system clipboard, if it contains - * or is convertible to a UTF-8 encoded string. If the clipboard is empty or - * if its contents cannot be converted, `NULL` is returned and a @ref - * GLFW_FORMAT_UNAVAILABLE error is generated. - * - * @param[in] window Deprecated. Any valid window or `NULL`. - * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` - * if an [error](@ref error_handling) occurred. - * - * @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 - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa @ref glfwSetClipboardString - * - * @since Added in version 3.0. - * - * @ingroup input - */ - const char* glfwGetClipboardString(GLFWwindow* window); -/*! @brief Returns the GLFW time. - * - * This function returns the current GLFW time, in seconds. Unless the time - * has been set using @ref glfwSetTime it measures time elapsed since GLFW was - * initialized. - * - * This function and @ref glfwSetTime are helper functions on top of @ref - * glfwGetTimerFrequency and @ref glfwGetTimerValue. - * - * The resolution of the timer is system dependent, but is usually on the order - * of a few micro- or nanoseconds. It uses the highest-resolution monotonic - * time source on each operating system. - * - * @return The current time, in seconds, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Reading and - * writing of the internal base time is not atomic, so it needs to be - * externally synchronized with calls to @ref glfwSetTime. - * - * @sa @ref time - * - * @since Added in version 1.0. - * - * @ingroup input - */ - double glfwGetTime(void); -/*! @brief Sets the GLFW time. - * - * This function sets the current GLFW time, in seconds. The value must be - * a positive finite number less than or equal to 18446744073.0, which is - * approximately 584.5 years. - * - * This function and @ref glfwGetTime are helper functions on top of @ref - * glfwGetTimerFrequency and @ref glfwGetTimerValue. - * - * @param[in] time The new value, in seconds. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_VALUE. - * - * @remark The upper limit of GLFW time is calculated as - * floor((264 - 1) / 109) and is due to implementations - * storing nanoseconds in 64 bits. The limit may be increased in the future. - * - * @thread_safety This function may be called from any thread. Reading and - * writing of the internal base time is not atomic, so it needs to be - * externally synchronized with calls to @ref glfwGetTime. - * - * @sa @ref time - * - * @since Added in version 2.2. - * - * @ingroup input - */ - void glfwSetTime(double time); -/*! @brief Returns the current value of the raw timer. - * - * This function returns the current value of the raw timer, measured in - * 1 / frequency seconds. To get the frequency, call @ref - * glfwGetTimerFrequency. - * - * @return The value of the timer, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref time - * @sa @ref glfwGetTimerFrequency - * - * @since Added in version 3.2. - * - * @ingroup input - */ - uint64_t glfwGetTimerValue(void); -/*! @brief Returns the frequency, in Hz, of the raw timer. - * - * This function returns the frequency, in Hz, of the raw timer. - * - * @return The frequency of the timer, in Hz, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref time - * @sa @ref glfwGetTimerValue - * - * @since Added in version 3.2. - * - * @ingroup input - */ - uint64_t glfwGetTimerFrequency(void); -/*! @brief Makes the context of the specified window current for the calling - * thread. - * - * This function makes the OpenGL or OpenGL ES context of the specified window - * 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`. - * - * 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 - * whether a context performs this flush by setting the - * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) - * hint. - * - * The specified window must have an OpenGL or OpenGL ES context. Specifying - * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT - * error. - * - * @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. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_current - * @sa @ref glfwGetCurrentContext - * - * @since Added in version 3.0. - * - * @ingroup context - */ - void glfwMakeContextCurrent(GLFWwindow* window); -/*! @brief Returns the window whose context is current on the calling thread. - * - * This function returns the window whose OpenGL or OpenGL ES context is - * current on the calling thread. - * - * @return The window whose context is current, or `NULL` if no window's - * context is current. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_current - * @sa @ref glfwMakeContextCurrent - * - * @since Added in version 3.0. - * - * @ingroup context - */ - GLFWwindow* glfwGetCurrentContext(void); -/*! @brief Swaps the front and back buffers of the specified window. - * - * This function swaps the front and back buffers of the specified window when - * rendering with OpenGL or OpenGL ES. If the swap interval is greater than - * zero, the GPU driver waits the specified number of screen updates before - * swapping the buffers. - * - * The specified window must have an OpenGL or OpenGL ES context. Specifying - * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT - * error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see `vkQueuePresentKHR` instead. - * - * @param[in] window The window whose buffers to swap. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark __EGL:__ The context of the specified window must be current on the - * calling thread. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa @ref glfwSwapInterval - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ - void glfwSwapBuffers(GLFWwindow* window); -/*! @brief Sets the swap interval for the current context. - * - * This function sets the swap interval for the current OpenGL or OpenGL ES - * context, i.e. the number of screen updates to wait from the time @ref - * glfwSwapBuffers was called before swapping the buffers and returning. This - * is sometimes called _vertical synchronization_, _vertical retrace - * synchronization_ or just _vsync_. - * - * A context that supports either of the `WGL_EXT_swap_control_tear` and - * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap - * intervals, which allows the driver to swap immediately even if a frame - * arrives a little bit late. You can check for these extensions with @ref - * glfwExtensionSupported. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see the present mode of your swapchain instead. - * - * @param[in] interval The minimum number of screen updates to wait for - * until the buffers are swapped by @ref glfwSwapBuffers. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark This function is not called during context creation, leaving the - * swap interval set to whatever is the default for that API. This is done - * because some swap interval extensions used by GLFW do not allow the swap - * interval to be reset to zero once it has been set to a non-zero value. - * - * @remark Some GPU drivers do not honor the requested swap interval, either - * because of a user setting that overrides the application's request or due to - * bugs in the driver. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa @ref glfwSwapBuffers - * - * @since Added in version 1.0. - * - * @ingroup context - */ - void glfwSwapInterval(int interval); -/*! @brief Returns whether the specified extension is available. - * - * This function returns whether the specified - * [API extension](@ref context_glext) is supported by the current OpenGL or - * OpenGL ES context. It searches both for client API extension and context - * creation API extensions. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * As this functions retrieves and searches one or more extension strings each - * call, it is recommended that you cache its results if it is going to be used - * frequently. The extension strings will not change during the lifetime of - * a context, so there is no danger in doing this. - * - * This function does not apply to Vulkan. If you are using Vulkan, see @ref - * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` - * and `vkEnumerateDeviceExtensionProperties` instead. - * - * @param[in] extension The ASCII encoded name of the extension. - * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` - * otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_glext - * @sa @ref glfwGetProcAddress - * - * @since Added in version 1.0. - * - * @ingroup context - */ - int glfwExtensionSupported(const char* extension); -/*! @brief Returns the address of the specified function for the current - * context. - * - * This function returns the address of the specified OpenGL or OpenGL ES - * [core or extension function](@ref context_glext), if it is supported - * by the current context. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and - * `vkGetDeviceProcAddr` instead. - * - * @param[in] procname The ASCII encoded name of the function. - * @return The address of the function, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark The address of a given function is not guaranteed to be the same - * between contexts. - * - * @remark This function may return a non-`NULL` address despite the - * associated version or extension not being available. Always check the - * context version or extension string first. - * - * @pointer_lifetime The returned function pointer is valid until the context - * is destroyed or the library is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_glext - * @sa @ref glfwExtensionSupported - * - * @since Added in version 1.0. - * - * @ingroup context - */ - GLFWglproc glfwGetProcAddress(const char* procname); -/*! @brief Returns whether the Vulkan loader and an ICD have been found. - * - * This function returns whether the Vulkan loader and any minimally functional - * ICD have been found. - * - * The availability of a Vulkan loader and even an ICD does not by itself guarantee that - * surface creation or even instance creation is possible. Call @ref - * glfwGetRequiredInstanceExtensions to check whether the extensions necessary for Vulkan - * surface creation are available and @ref glfwGetPhysicalDevicePresentationSupport to - * check whether a queue family of a physical device supports image presentation. - * - * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` - * otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_support - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ - int glfwVulkanSupported(void); -/*! @brief Returns the Vulkan instance extensions required by GLFW. - * - * This function returns an array of names of Vulkan instance extensions required - * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the - * list will always contain `VK_KHR_surface`, so if you don't require any - * additional extensions you can pass this list directly to the - * `VkInstanceCreateInfo` struct. - * - * If Vulkan is not available on the machine, this function returns `NULL` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available. - * - * If Vulkan is available but no set of extensions allowing window surface - * creation was found, this function returns `NULL`. You may still use Vulkan - * for off-screen rendering and compute work. - * - * @param[out] count Where to store the number of extensions in the returned - * array. This is set to zero if an error occurred. - * @return An array of ASCII encoded extension names, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_API_UNAVAILABLE. - * - * @remark Additional extensions may be required by future versions of GLFW. - * You should check if any extensions you wish to enable are already in the - * returned array, as it is an error to specify an extension more than once in - * the `VkInstanceCreateInfo` struct. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * library is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_ext - * @sa @ref glfwCreateWindowSurface - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ - const char** glfwGetRequiredInstanceExtensions(uint32_t* count); -/************************************************************************* - * Global definition cleanup - *************************************************************************/ -/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ -/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally - * defined by some gl.h variants (OpenBSD) so define it after if needed. - */ -/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ \ No newline at end of file diff --git a/raylib/physac.h.modified b/raylib/physac.h.modified deleted file mode 100644 index a17015d..0000000 --- a/raylib/physac.h.modified +++ /dev/null @@ -1,171 +0,0 @@ -/********************************************************************************************** -* -* Physac v1.1 - 2D Physics library for videogames -* -* DESCRIPTION: -* -* Physac is a small 2D physics library written in pure C. The engine uses a fixed time-step thread loop -* to simluate physics. A physics step contains the following phases: get collision information, -* apply dynamics, collision solving and position correction. It uses a very simple struct for physic -* bodies with a position vector to be used in any 3D rendering API. -* -* CONFIGURATION: -* -* #define PHYSAC_IMPLEMENTATION -* Generates the implementation of the library into the included file. -* If not defined, the library is in header only mode and can be included in other headers -* or source files without problems. But only ONE file should hold the implementation. -* -* #define PHYSAC_STATIC (defined by default) -* The generated implementation will stay private inside implementation file and all -* internal symbols and functions will only be visible inside that file. -* -* #define PHYSAC_NO_THREADS -* The generated implementation won't include pthread library and user must create a secondary thread to call PhysicsThread(). -* It is so important that the thread where PhysicsThread() is called must not have v-sync or any other CPU limitation. -* -* #define PHYSAC_STANDALONE -* Avoid raylib.h header inclusion in this file. Data types defined on raylib are defined -* internally in the library and input management and drawing functions must be provided by -* the user (check library implementation for further details). -* -* #define PHYSAC_DEBUG -* Traces log messages when creating and destroying physics bodies and detects errors in physics -* calculations and reference exceptions; it is useful for debug purposes -* -* #define PHYSAC_MALLOC() -* #define PHYSAC_FREE() -* You can define your own malloc/free implementation replacing stdlib.h malloc()/free() functions. -* Otherwise it will include stdlib.h and use the C standard library malloc()/free() function. -* -* -* NOTE 1: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations. -* NOTE 2: Physac requires static C library linkage to avoid dependency on MinGW DLL (-static -lpthread) -* -* Use the following code to compile: -* gcc -o $(NAME_PART).exe $(FILE_NAME) -s -static -lraylib -lpthread -lopengl32 -lgdi32 -lwinmm -std=c99 -* -* VERY THANKS TO: -* - raysan5: helped with library design -* - ficoos: added support for Linux -* - R8D8: added support for Linux -* - jubalh: fixed implementation of time calculations -* - a3f: fixed implementation of time calculations -* - define-private-public: added support for OSX -* - pamarcos: fixed implementation of physics steps -* - noshbar: fixed some memory leaks -* -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2016-2025 Victor Fisac (github: @victorfisac) -* -* This software is provided "as-is", without any express or implied warranty. In no event -* will the authors be held liable for any damages arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, including commercial -* applications, and to alter it and redistribute it freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not claim that you -* wrote the original software. If you use this software in a product, an acknowledgment -* in the product documentation would be appreciated but is not required. -* -* 2. Altered source versions must be plainly marked as such, and must not be misrepresented -* as being the original software. -* -* 3. This notice may not be removed or altered from any source distribution. -* -**********************************************************************************************/ -// #define PHYSAC_STATIC -// #define PHYSAC_NO_THREADS -// #define PHYSAC_STANDALONE -// #define PHYSAC_DEBUG -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------- -// Types and Structures Definition -// NOTE: Below types are required for PHYSAC_STANDALONE usage -//---------------------------------------------------------------------------------- -typedef enum PhysicsShapeType { PHYSICS_CIRCLE, PHYSICS_POLYGON } PhysicsShapeType; -// Previously defined to be used in PhysicsShape struct as circular dependencies -typedef struct PhysicsBodyData *PhysicsBody; -// Mat2 type (used for polygon shape rotation matrix) -typedef struct Mat2 { - float m00; - float m01; - float m10; - float m11; -} Mat2; -typedef struct PolygonData { - unsigned int vertexCount; // Current used vertex and normals count - Vector2 positions[24]; // Polygon vertex positions vectors - Vector2 normals[24]; // Polygon vertex normals vectors -} PolygonData; -typedef struct PhysicsShape { - PhysicsShapeType type; // Physics shape type (circle or polygon) - PhysicsBody body; // Shape physics body reference - float radius; // Circle shape radius (used for circle shapes) - Mat2 transform; // Vertices transform matrix 2x2 - PolygonData vertexData; // Polygon shape vertices position and normals data (just used for polygon shapes) -} PhysicsShape; -typedef struct PhysicsBodyData { - unsigned int id; // Reference unique identifier - bool enabled; // Enabled dynamics state (collisions are calculated anyway) - Vector2 position; // Physics body shape pivot - Vector2 velocity; // Current linear velocity applied to position - Vector2 force; // Current linear force (reset to 0 every step) - float angularVelocity; // Current angular velocity applied to orient - float torque; // Current angular force (reset to 0 every step) - float orient; // Rotation in radians - float inertia; // Moment of inertia - float inverseInertia; // Inverse value of inertia - float mass; // Physics body mass - float inverseMass; // Inverse value of mass - float staticFriction; // Friction when the body has not movement (0 to 1) - float dynamicFriction; // Friction when the body has movement (0 to 1) - float restitution; // Restitution coefficient of the body (0 to 1) - bool useGravity; // Apply gravity force to dynamics - bool isGrounded; // Physics grounded on other body state - bool freezeOrient; // Physics rotation constraint - PhysicsShape shape; // Physics body shape information (type, radius, vertices, normals) -} PhysicsBodyData; -typedef struct PhysicsManifoldData { - unsigned int id; // Reference unique identifier - PhysicsBody bodyA; // Manifold first physics body reference - PhysicsBody bodyB; // Manifold second physics body reference - float penetration; // Depth of penetration from collision - Vector2 normal; // Normal direction vector from 'a' to 'b' - Vector2 contacts[2]; // Points of contact during collision - unsigned int contactsCount; // Current collision number of contacts - float restitution; // Mixed restitution during collision - float dynamicFriction; // Mixed dynamic friction during collision - float staticFriction; // Mixed static friction during collision -} PhysicsManifoldData, *PhysicsManifold; -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -extern /* Functions visible from other files*/ void InitPhysics(void); // Initializes physics values, pointers and creates physics loop thread -extern /* Functions visible from other files*/ void RunPhysicsStep(void); // Run physics step, to be used if PHYSICS_NO_THREADS is set in your main loop -extern /* Functions visible from other files*/ void SetPhysicsTimeStep(double delta); // Sets physics fixed time step in milliseconds. 1.666666 by default -extern /* Functions visible from other files*/ bool IsPhysicsEnabled(void); // Returns true if physics thread is currently enabled -extern /* Functions visible from other files*/ void SetPhysicsGravity(float x, float y); // Sets physics global gravity force -extern /* Functions visible from other files*/ PhysicsBody CreatePhysicsBodyCircle(Vector2 pos, float radius, float density); // Creates a new circle physics body with generic parameters -extern /* Functions visible from other files*/ PhysicsBody CreatePhysicsBodyRectangle(Vector2 pos, float width, float height, float density); // Creates a new rectangle physics body with generic parameters -extern /* Functions visible from other files*/ PhysicsBody CreatePhysicsBodyPolygon(Vector2 pos, float radius, int sides, float density); // Creates a new polygon physics body with generic parameters -extern /* Functions visible from other files*/ void PhysicsAddForce(PhysicsBody body, Vector2 force); // Adds a force to a physics body -extern /* Functions visible from other files*/ void PhysicsAddTorque(PhysicsBody body, float amount); // Adds an angular force to a physics body -extern /* Functions visible from other files*/ void PhysicsShatter(PhysicsBody body, Vector2 position, float force); // Shatters a polygon shape physics body to little physics bodies with explosion force -extern /* Functions visible from other files*/ int GetPhysicsBodiesCount(void); // Returns the current amount of created physics bodies -extern /* Functions visible from other files*/ PhysicsBody GetPhysicsBody(int index); // Returns a physics body of the bodies pool at a specific index -extern /* Functions visible from other files*/ int GetPhysicsShapeType(int index); // Returns the physics body shape type (PHYSICS_CIRCLE or PHYSICS_POLYGON) -extern /* Functions visible from other files*/ int GetPhysicsShapeVerticesCount(int index); // Returns the amount of vertices of a physics body shape -extern /* Functions visible from other files*/ Vector2 GetPhysicsShapeVertex(PhysicsBody body, int vertex); // Returns transformed position of a body shape (body position + vertex transformed position) -extern /* Functions visible from other files*/ void SetPhysicsBodyRotation(PhysicsBody body, float radians); // Sets physics body shape transform based on radians parameter -extern /* Functions visible from other files*/ void DestroyPhysicsBody(PhysicsBody body); // Unitializes and destroy a physics body -extern /* Functions visible from other files*/ void ClosePhysics(void); // Unitializes physics pointers and closes physics loop thread -/*********************************************************************************** -* -* PHYSAC IMPLEMENTATION -* -************************************************************************************/ \ No newline at end of file diff --git a/raylib/py.typed b/raylib/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/raylib/pyray.py b/raylib/pyray.py new file mode 100644 index 0000000..26cfa5e --- /dev/null +++ b/raylib/pyray.py @@ -0,0 +1,51 @@ +from .static import rl, ffi +from .colors import * +from inspect import ismethod,getmembers,isbuiltin +import inflection + +class PyRay: + def pointer(self, struct): + return ffi.addressof(struct) + + +def makefunc(a): + #print("makefunc ",a) + def func(self, *args): + modified_args = [] + for arg in args: + #print(arg, type(arg)) + if type(arg) == str: + encoded = arg.encode('utf-8') + modified_args.append(encoded) + else: + modified_args.append(arg) + return a(*modified_args) + return func + +def makeStructHelper(struct): + def func(self, *args): + return ffi.new(f"struct {struct} *", args)[0] + return func + + +for name, attr in getmembers(rl): + #print(name, attr) + uname = inflection.underscore(name).replace('3_d','_3d').replace('2_d','_2d') + if isbuiltin(attr): + #print(attr.__call__) + #print(attr.__doc__) + #print(attr.__text_signature__) + #print(dir(attr)) + #print(dir(attr.__repr__)) + f = makefunc(attr) + setattr(PyRay, uname, f) + #def wrap(*args): + # print("call to ",attr) + #setattr(PyRay, uname, lambda *args: print("call to ",attr)) + else: + setattr(PyRay, name, attr) + +for struct in ('Vector2','Vector3','Vector4','Camera2D', 'Camera3D', 'Quaternion', 'Color'): + f = makeStructHelper(struct) + setattr(PyRay, struct, f) + diff --git a/raylib/raygui.h.modified b/raylib/raygui.h.modified deleted file mode 100644 index 34568d3..0000000 --- a/raylib/raygui.h.modified +++ /dev/null @@ -1,865 +0,0 @@ -/******************************************************************************************* -* -* raygui v4.5-dev - A simple and easy-to-use immediate-mode gui library -* -* DESCRIPTION: -* raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also -* available as a standalone library, as long as input and drawing functions are provided. -* -* FEATURES: -* - Immediate-mode gui, minimal retained data -* - +25 controls provided (basic and advanced) -* - Styling system for colors, font and metrics -* - Icons supported, embedded as a 1-bit icons pack -* - Standalone mode option (custom input/graphics backend) -* - Multiple support tools provided for raygui development -* -* POSSIBLE IMPROVEMENTS: -* - Better standalone mode API for easy plug of custom backends -* - Externalize required inputs, allow user easier customization -* -* LIMITATIONS: -* - No editable multi-line word-wraped text box supported -* - No auto-layout mechanism, up to the user to define controls position and size -* - Standalone mode requires library modification and some user work to plug another backend -* -* NOTES: -* - WARNING: GuiLoadStyle() and GuiLoadStyle{Custom}() functions, allocate memory for -* font atlas recs and glyphs, freeing that memory is (usually) up to the user, -* no unload function is explicitly provided... but note that GuiLoadStyleDefault() unloads -* by default any previously loaded font (texture, recs, glyphs). -* - Global UI alpha (guiAlpha) is applied inside GuiDrawRectangle() and GuiDrawText() functions -* -* CONTROLS PROVIDED: -* # Container/separators Controls -* - WindowBox --> StatusBar, Panel -* - GroupBox --> Line -* - Line -* - Panel --> StatusBar -* - ScrollPanel --> StatusBar -* - TabBar --> Button -* -* # Basic Controls -* - Label -* - LabelButton --> Label -* - Button -* - Toggle -* - ToggleGroup --> Toggle -* - ToggleSlider -* - CheckBox -* - ComboBox -* - DropdownBox -* - TextBox -* - ValueBox --> TextBox -* - Spinner --> Button, ValueBox -* - Slider -* - SliderBar --> Slider -* - ProgressBar -* - StatusBar -* - DummyRec -* - Grid -* -* # Advance Controls -* - ListView -* - ColorPicker --> ColorPanel, ColorBarHue -* - MessageBox --> Window, Label, Button -* - TextInputBox --> Window, Label, TextBox, Button -* -* It also provides a set of functions for styling the controls based on its properties (size, color). -* -* -* RAYGUI STYLE (guiStyle): -* raygui uses a global data array for all gui style properties (allocated on data segment by default), -* when a new style is loaded, it is loaded over the global style... but a default gui style could always be -* recovered with GuiLoadStyleDefault() function, that overwrites the current style to the default one -* -* The global style array size is fixed and depends on the number of controls and properties: -* -* static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)]; -* -* guiStyle size is by default: 16*(16 + 8) = 384*4 = 1536 bytes = 1.5 KB -* -* Note that the first set of BASE properties (by default guiStyle[0..15]) belong to the generic style -* used for all controls, when any of those base values is set, it is automatically populated to all -* controls, so, specific control values overwriting generic style should be set after base values. -* -* After the first BASE set we have the EXTENDED properties (by default guiStyle[16..23]), those -* properties are actually common to all controls and can not be overwritten individually (like BASE ones) -* Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR -* -* Custom control properties can be defined using the EXTENDED properties for each independent control. -* -* TOOL: rGuiStyler is a visual tool to customize raygui style: github.com/raysan5/rguistyler -* -* -* RAYGUI ICONS (guiIcons): -* raygui could use a global array containing icons data (allocated on data segment by default), -* a custom icons set could be loaded over this array using GuiLoadIcons(), but loaded icons set -* must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS will be loaded -* -* Every icon is codified in binary form, using 1 bit per pixel, so, every 16x16 icon -* requires 8 integers (16*16/32) to be stored in memory. -* -* When the icon is draw, actually one quad per pixel is drawn if the bit for that pixel is set. -* -* The global icons array size is fixed and depends on the number of icons and size: -* -* static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS]; -* -* guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB -* -* TOOL: rGuiIcons is a visual tool to customize/create raygui icons: github.com/raysan5/rguiicons -* -* RAYGUI LAYOUT: -* raygui currently does not provide an auto-layout mechanism like other libraries, -* layouts must be defined manually on controls drawing, providing the right bounds Rectangle for it. -* -* TOOL: rGuiLayout is a visual tool to create raygui layouts: github.com/raysan5/rguilayout -* -* CONFIGURATION: -* #define RAYGUI_IMPLEMENTATION -* Generates the implementation of the library into the included file. -* If not defined, the library is in header only mode and can be included in other headers -* or source files without problems. But only ONE file should hold the implementation. -* -* #define RAYGUI_STANDALONE -* Avoid raylib.h header inclusion in this file. Data types defined on raylib are defined -* internally in the library and input management and drawing functions must be provided by -* the user (check library implementation for further details). -* -* #define RAYGUI_NO_ICONS -* Avoid including embedded ricons data (256 icons, 16x16 pixels, 1-bit per pixel, 2KB) -* -* #define RAYGUI_CUSTOM_ICONS -* Includes custom ricons.h header defining a set of custom icons, -* this file can be generated using rGuiIcons tool -* -* #define RAYGUI_DEBUG_RECS_BOUNDS -* Draw control bounds rectangles for debug -* -* #define RAYGUI_DEBUG_TEXT_BOUNDS -* Draw text bounds rectangles for debug -* -* VERSIONS HISTORY: -* 4.5-dev (Sep-2024) Current dev version... -* ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes -* ADDED: GuiValueBoxFloat() -* ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP -* ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH -* ADDED: Multiple new icons -* REVIEWED: GuiTabBar(), close tab with mouse middle button -* REVIEWED: GuiScrollPanel(), scroll speed proportional to content -* REVIEWED: GuiDropdownBox(), support roll up and hidden arrow -* REVIEWED: GuiTextBox(), cursor position initialization -* REVIEWED: GuiSliderPro(), control value change check -* REVIEWED: GuiGrid(), simplified implementation -* REVIEWED: GuiIconText(), increase buffer size and reviewed padding -* REVIEWED: GuiDrawText(), improved wrap mode drawing -* REVIEWED: GuiScrollBar(), minor tweaks -* REVIEWED: Functions descriptions, removed wrong return value reference -* REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion -* -* 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() -* ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() -* ADDED: Multiple new icons, mostly compiler related -* ADDED: New DEFAULT properties: TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE -* ADDED: New enum values: GuiTextAlignment, GuiTextAlignmentVertical, GuiTextWrapMode -* ADDED: Support loading styles with custom font charset from external file -* REDESIGNED: GuiTextBox(), support mouse cursor positioning -* REDESIGNED: GuiDrawText(), support multiline and word-wrap modes (read only) -* REDESIGNED: GuiProgressBar() to be more visual, progress affects border color -* REDESIGNED: Global alpha consideration moved to GuiDrawRectangle() and GuiDrawText() -* REDESIGNED: GuiScrollPanel(), get parameters by reference and return result value -* REDESIGNED: GuiToggleGroup(), get parameters by reference and return result value -* REDESIGNED: GuiComboBox(), get parameters by reference and return result value -* REDESIGNED: GuiCheckBox(), get parameters by reference and return result value -* REDESIGNED: GuiSlider(), get parameters by reference and return result value -* REDESIGNED: GuiSliderBar(), get parameters by reference and return result value -* REDESIGNED: GuiProgressBar(), get parameters by reference and return result value -* REDESIGNED: GuiListView(), get parameters by reference and return result value -* REDESIGNED: GuiColorPicker(), get parameters by reference and return result value -* REDESIGNED: GuiColorPanel(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarAlpha(), get parameters by reference and return result value -* REDESIGNED: GuiColorBarHue(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), get parameters by reference and return result value -* REDESIGNED: GuiGrid(), added extra parameter -* REDESIGNED: GuiListViewEx(), change parameters order -* REDESIGNED: All controls return result as int value -* REVIEWED: GuiScrollPanel() to avoid smallish scroll-bars -* REVIEWED: All examples and specially controls_test_suite -* RENAMED: gui_file_dialog module to gui_window_file_dialog -* UPDATED: All styles to include ISO-8859-15 charset (as much as possible) -* -* 3.6 (10-May-2023) ADDED: New icon: SAND_TIMER -* ADDED: GuiLoadStyleFromMemory() (binary only) -* REVIEWED: GuiScrollBar() horizontal movement key -* REVIEWED: GuiTextBox() crash on cursor movement -* REVIEWED: GuiTextBox(), additional inputs support -* REVIEWED: GuiLabelButton(), avoid text cut -* REVIEWED: GuiTextInputBox(), password input -* REVIEWED: Local GetCodepointNext(), aligned with raylib -* REDESIGNED: GuiSlider*()/GuiScrollBar() to support out-of-bounds -* -* 3.5 (20-Apr-2023) ADDED: GuiTabBar(), based on GuiToggle() -* ADDED: Helper functions to split text in separate lines -* ADDED: Multiple new icons, useful for code editing tools -* REMOVED: Unneeded icon editing functions -* REMOVED: GuiTextBoxMulti(), very limited and broken -* REMOVED: MeasureTextEx() dependency, logic directly implemented -* REMOVED: DrawTextEx() dependency, logic directly implemented -* REVIEWED: GuiScrollBar(), improve mouse-click behaviour -* REVIEWED: Library header info, more info, better organized -* REDESIGNED: GuiTextBox() to support cursor movement -* REDESIGNED: GuiDrawText() to divide drawing by lines -* -* 3.2 (22-May-2022) RENAMED: Some enum values, for unification, avoiding prefixes -* REMOVED: GuiScrollBar(), only internal -* REDESIGNED: GuiPanel() to support text parameter -* REDESIGNED: GuiScrollPanel() to support text parameter -* REDESIGNED: GuiColorPicker() to support text parameter -* REDESIGNED: GuiColorPanel() to support text parameter -* REDESIGNED: GuiColorBarAlpha() to support text parameter -* REDESIGNED: GuiColorBarHue() to support text parameter -* REDESIGNED: GuiTextInputBox() to support password -* -* 3.1 (12-Jan-2022) REVIEWED: Default style for consistency (aligned with rGuiLayout v2.5 tool) -* REVIEWED: GuiLoadStyle() to support compressed font atlas image data and unload previous textures -* REVIEWED: External icons usage logic -* REVIEWED: GuiLine() for centered alignment when including text -* RENAMED: Multiple controls properties definitions to prepend RAYGUI_ -* RENAMED: RICON_ references to RAYGUI_ICON_ for library consistency -* Projects updated and multiple tweaks -* -* 3.0 (04-Nov-2021) Integrated ricons data to avoid external file -* REDESIGNED: GuiTextBoxMulti() -* REMOVED: GuiImageButton*() -* Multiple minor tweaks and bugs corrected -* -* 2.9 (17-Mar-2021) REMOVED: Tooltip API -* 2.8 (03-May-2020) Centralized rectangles drawing to GuiDrawRectangle() -* 2.7 (20-Feb-2020) ADDED: Possible tooltips API -* 2.6 (09-Sep-2019) ADDED: GuiTextInputBox() -* REDESIGNED: GuiListView*(), GuiDropdownBox(), GuiSlider*(), GuiProgressBar(), GuiMessageBox() -* REVIEWED: GuiTextBox(), GuiSpinner(), GuiValueBox(), GuiLoadStyle() -* Replaced property INNER_PADDING by TEXT_PADDING, renamed some properties -* ADDED: 8 new custom styles ready to use -* Multiple minor tweaks and bugs corrected -* -* 2.5 (28-May-2019) Implemented extended GuiTextBox(), GuiValueBox(), GuiSpinner() -* 2.3 (29-Apr-2019) ADDED: rIcons auxiliar library and support for it, multiple controls reviewed -* Refactor all controls drawing mechanism to use control state -* 2.2 (05-Feb-2019) ADDED: GuiScrollBar(), GuiScrollPanel(), reviewed GuiListView(), removed Gui*Ex() controls -* 2.1 (26-Dec-2018) REDESIGNED: GuiCheckBox(), GuiComboBox(), GuiDropdownBox(), GuiToggleGroup() > Use combined text string -* REDESIGNED: Style system (breaking change) -* 2.0 (08-Nov-2018) ADDED: Support controls guiLock and custom fonts -* REVIEWED: GuiComboBox(), GuiListView()... -* 1.9 (09-Oct-2018) REVIEWED: GuiGrid(), GuiTextBox(), GuiTextBoxMulti(), GuiValueBox()... -* 1.8 (01-May-2018) Lot of rework and redesign to align with rGuiStyler and rGuiLayout -* 1.5 (21-Jun-2017) Working in an improved styles system -* 1.4 (15-Jun-2017) Rewritten all GUI functions (removed useless ones) -* 1.3 (12-Jun-2017) Complete redesign of style system -* 1.1 (01-Jun-2017) Complete review of the library -* 1.0 (07-Jun-2016) Converted to header-only by Ramon Santamaria. -* 0.9 (07-Mar-2016) Reviewed and tested by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria. -* 0.8 (27-Aug-2015) Initial release. Implemented by Kevin Gato, Daniel Nicolás and Ramon Santamaria. -* -* DEPENDENCIES: -* raylib 5.0 - Inputs reading (keyboard/mouse), shapes drawing, font loading and text drawing -* -* STANDALONE MODE: -* By default raygui depends on raylib mostly for the inputs and the drawing functionality but that dependency can be disabled -* with the config flag RAYGUI_STANDALONE. In that case is up to the user to provide another backend to cover library needs. -* -* The following functions should be redefined for a custom backend: -* -* - Vector2 GetMousePosition(void); -* - float GetMouseWheelMove(void); -* - bool IsMouseButtonDown(int button); -* - bool IsMouseButtonPressed(int button); -* - bool IsMouseButtonReleased(int button); -* - bool IsKeyDown(int key); -* - bool IsKeyPressed(int key); -* - int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() -* -* - void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() -* - void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() -* -* - Font GetFontDefault(void); // -- GuiLoadStyleDefault() -* - Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle() -* - Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image -* - void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) -* - char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data -* - void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data -* - const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs -* - int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list -* - void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list -* - unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() -* -* CONTRIBUTORS: -* Ramon Santamaria: Supervision, review, redesign, update and maintenance -* Vlad Adrian: Complete rewrite of GuiTextBox() to support extended features (2019) -* Sergio Martinez: Review, testing (2015) and redesign of multiple controls (2018) -* Adria Arranz: Testing and implementation of additional controls (2018) -* Jordi Jorba: Testing and implementation of additional controls (2018) -* Albert Martos: Review and testing of the library (2015) -* Ian Eito: Review and testing of the library (2015) -* Kevin Gato: Initial implementation of basic components (2014) -* Daniel Nicolas: Initial implementation of basic components (2014) -* -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2014-2024 Ramon Santamaria (@raysan5) -* -* This software is provided "as-is", without any express or implied warranty. In no event -* will the authors be held liable for any damages arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, including commercial -* applications, and to alter it and redistribute it freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not claim that you -* wrote the original software. If you use this software in a product, an acknowledgment -* in the product documentation would be appreciated but is not required. -* -* 2. Altered source versions must be plainly marked as such, and must not be misrepresented -* as being the original software. -* -* 3. This notice may not be removed or altered from any source distribution. -* -**********************************************************************************************/ -// Function specifiers in case library is build/used as a shared library (Windows) -// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll -// Function specifiers definition -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -// Allow custom memory allocators -// Simple log system to avoid printf() calls if required -// NOTE: Avoiding those calls, also avoids const strings memory usage -//---------------------------------------------------------------------------------- -// Types and Structures Definition -// NOTE: Some types are required for RAYGUI_STANDALONE usage -//---------------------------------------------------------------------------------- -// Style property -// NOTE: Used when exporting style as code for convenience -typedef struct GuiStyleProp { - unsigned short controlId; // Control identifier - unsigned short propertyId; // Property identifier - int propertyValue; // Property value -} GuiStyleProp; -/* -// Controls text style -NOT USED- -// NOTE: Text style is defined by control -typedef struct GuiTextStyle { - unsigned int size; - int charSpacing; - int lineSpacing; - int alignmentH; - int alignmentV; - int padding; -} GuiTextStyle; -*/ -// Gui control state -typedef enum { - STATE_NORMAL = 0, - STATE_FOCUSED, - STATE_PRESSED, - STATE_DISABLED -} GuiState; -// Gui control text alignment -typedef enum { - TEXT_ALIGN_LEFT = 0, - TEXT_ALIGN_CENTER, - TEXT_ALIGN_RIGHT -} GuiTextAlignment; -// Gui control text alignment vertical -// NOTE: Text vertical position inside the text bounds -typedef enum { - TEXT_ALIGN_TOP = 0, - TEXT_ALIGN_MIDDLE, - TEXT_ALIGN_BOTTOM -} GuiTextAlignmentVertical; -// Gui control text wrap mode -// NOTE: Useful for multiline text -typedef enum { - TEXT_WRAP_NONE = 0, - TEXT_WRAP_CHAR, - TEXT_WRAP_WORD -} GuiTextWrapMode; -// Gui controls -typedef enum { - // Default -> populates to all controls when set - DEFAULT = 0, - // Basic controls - LABEL, // Used also for: LABELBUTTON - BUTTON, - TOGGLE, // Used also for: TOGGLEGROUP - SLIDER, // Used also for: SLIDERBAR, TOGGLESLIDER - PROGRESSBAR, - CHECKBOX, - COMBOBOX, - DROPDOWNBOX, - TEXTBOX, // Used also for: TEXTBOXMULTI - VALUEBOX, - SPINNER, // Uses: BUTTON, VALUEBOX - LISTVIEW, - COLORPICKER, - SCROLLBAR, - STATUSBAR -} GuiControl; -// Gui base properties for every control -// NOTE: RAYGUI_MAX_PROPS_BASE properties (by default 16 properties) -typedef enum { - BORDER_COLOR_NORMAL = 0, // Control border color in STATE_NORMAL - BASE_COLOR_NORMAL, // Control base color in STATE_NORMAL - TEXT_COLOR_NORMAL, // Control text color in STATE_NORMAL - BORDER_COLOR_FOCUSED, // Control border color in STATE_FOCUSED - BASE_COLOR_FOCUSED, // Control base color in STATE_FOCUSED - TEXT_COLOR_FOCUSED, // Control text color in STATE_FOCUSED - BORDER_COLOR_PRESSED, // Control border color in STATE_PRESSED - BASE_COLOR_PRESSED, // Control base color in STATE_PRESSED - TEXT_COLOR_PRESSED, // Control text color in STATE_PRESSED - BORDER_COLOR_DISABLED, // Control border color in STATE_DISABLED - BASE_COLOR_DISABLED, // Control base color in STATE_DISABLED - TEXT_COLOR_DISABLED, // Control text color in STATE_DISABLED - BORDER_WIDTH, // Control border size, 0 for no border - //TEXT_SIZE, // Control text size (glyphs max height) -> GLOBAL for all controls - //TEXT_SPACING, // Control text spacing between glyphs -> GLOBAL for all controls - //TEXT_LINE_SPACING // Control text spacing between lines -> GLOBAL for all controls - TEXT_PADDING, // Control text padding, not considering border - TEXT_ALIGNMENT, // Control text horizontal alignment inside control text bound (after border and padding) - //TEXT_WRAP_MODE // Control text wrap-mode inside text bounds -> GLOBAL for all controls -} GuiControlProperty; -// TODO: Which text styling properties should be global or per-control? -// At this moment TEXT_PADDING and TEXT_ALIGNMENT is configured and saved per control while -// TEXT_SIZE, TEXT_SPACING, TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE are global and -// should be configured by user as needed while defining the UI layout -// Gui extended properties depend on control -// NOTE: RAYGUI_MAX_PROPS_EXTENDED properties (by default, max 8 properties) -//---------------------------------------------------------------------------------- -// DEFAULT extended properties -// NOTE: Those properties are common to all controls or global -// WARNING: We only have 8 slots for those properties by default!!! -> New global control: TEXT? -typedef enum { - TEXT_SIZE = 16, // Text size (glyphs max height) - TEXT_SPACING, // Text spacing between glyphs - LINE_COLOR, // Line control color - BACKGROUND_COLOR, // Background color - TEXT_LINE_SPACING, // Text spacing between lines - TEXT_ALIGNMENT_VERTICAL, // Text vertical alignment inside text bounds (after border and padding) - TEXT_WRAP_MODE // Text wrap-mode inside text bounds - //TEXT_DECORATION // Text decoration: 0-None, 1-Underline, 2-Line-through, 3-Overline - //TEXT_DECORATION_THICK // Text decoration line thickness -} GuiDefaultProperty; -// Other possible text properties: -// TEXT_WEIGHT // Normal, Italic, Bold -> Requires specific font change -// TEXT_INDENT // Text indentation -> Now using TEXT_PADDING... -// Label -//typedef enum { } GuiLabelProperty; -// Button/Spinner -//typedef enum { } GuiButtonProperty; -// Toggle/ToggleGroup -typedef enum { - GROUP_PADDING = 16, // ToggleGroup separation between toggles -} GuiToggleProperty; -// Slider/SliderBar -typedef enum { - SLIDER_WIDTH = 16, // Slider size of internal bar - SLIDER_PADDING // Slider/SliderBar internal bar padding -} GuiSliderProperty; -// ProgressBar -typedef enum { - PROGRESS_PADDING = 16, // ProgressBar internal padding -} GuiProgressBarProperty; -// ScrollBar -typedef enum { - ARROWS_SIZE = 16, // ScrollBar arrows size - ARROWS_VISIBLE, // ScrollBar arrows visible - SCROLL_SLIDER_PADDING, // ScrollBar slider internal padding - SCROLL_SLIDER_SIZE, // ScrollBar slider size - SCROLL_PADDING, // ScrollBar scroll padding from arrows - SCROLL_SPEED, // ScrollBar scrolling speed -} GuiScrollBarProperty; -// CheckBox -typedef enum { - CHECK_PADDING = 16 // CheckBox internal check padding -} GuiCheckBoxProperty; -// ComboBox -typedef enum { - COMBO_BUTTON_WIDTH = 16, // ComboBox right button width - COMBO_BUTTON_SPACING // ComboBox button separation -} GuiComboBoxProperty; -// DropdownBox -typedef enum { - ARROW_PADDING = 16, // DropdownBox arrow separation from border and items - DROPDOWN_ITEMS_SPACING, // DropdownBox items separation - DROPDOWN_ARROW_HIDDEN, // DropdownBox arrow hidden - DROPDOWN_ROLL_UP // DropdownBox roll up flag (default rolls down) -} GuiDropdownBoxProperty; -// TextBox/TextBoxMulti/ValueBox/Spinner -typedef enum { - TEXT_READONLY = 16, // TextBox in read-only mode: 0-text editable, 1-text no-editable -} GuiTextBoxProperty; -// Spinner -typedef enum { - SPIN_BUTTON_WIDTH = 16, // Spinner left/right buttons width - SPIN_BUTTON_SPACING, // Spinner buttons separation -} GuiSpinnerProperty; -// ListView -typedef enum { - LIST_ITEMS_HEIGHT = 16, // ListView items height - LIST_ITEMS_SPACING, // ListView items separation - SCROLLBAR_WIDTH, // ListView scrollbar size (usually width) - SCROLLBAR_SIDE, // ListView scrollbar side (0-SCROLLBAR_LEFT_SIDE, 1-SCROLLBAR_RIGHT_SIDE) - LIST_ITEMS_BORDER_WIDTH // ListView items border width -} GuiListViewProperty; -// ColorPicker -typedef enum { - COLOR_SELECTOR_SIZE = 16, - HUEBAR_WIDTH, // ColorPicker right hue bar width - HUEBAR_PADDING, // ColorPicker right hue bar separation from panel - HUEBAR_SELECTOR_HEIGHT, // ColorPicker right hue bar selector height - HUEBAR_SELECTOR_OVERFLOW // ColorPicker right hue bar selector overflow -} GuiColorPickerProperty; -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -// ... -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -// Global gui state control functions -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiEnable(void); // Enable gui controls (global state) -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiDisable(void); // Disable gui controls (global state) -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiLock(void); // Lock gui controls (global state) -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiUnlock(void); // Unlock gui controls (global state) -/* Functions defined as 'extern' by default (implicit specifiers)*/ bool GuiIsLocked(void); // Check if gui is locked (global state) -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiSetAlpha(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiSetState(int state); // Set gui state (global state) -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiGetState(void); // Get gui state (global state) -// Font set/get functions -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiSetFont(Font font); // Set gui custom font (global state) -/* Functions defined as 'extern' by default (implicit specifiers)*/ Font GuiGetFont(void); // Get gui custom font (global state) -// Style set/get functions -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiSetStyle(int control, int property, int value); // Set one style property -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiGetStyle(int control, int property); // Get one style property -// Styles loading functions -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiLoadStyle(const char *fileName); // Load style file over global style variable (.rgs) -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiLoadStyleDefault(void); // Load style default over global style -// Tooltips management functions -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiEnableTooltip(void); // Enable gui tooltips (global state) -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiDisableTooltip(void); // Disable gui tooltips (global state) -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiSetTooltip(const char *tooltip); // Set tooltip string -// Icons functionality -/* Functions defined as 'extern' by default (implicit specifiers)*/ const char *GuiIconText(int iconId, const char *text); // Get text with icon id prepended (if supported) -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiSetIconScale(int scale); // Set default icon drawing size -/* Functions defined as 'extern' by default (implicit specifiers)*/ unsigned int *GuiGetIcons(void); // Get raygui icons data pointer -/* Functions defined as 'extern' by default (implicit specifiers)*/ char **GuiLoadIcons(const char *fileName, bool loadIconsName); // Load raygui icons file (.rgi) into internal icons data -/* Functions defined as 'extern' by default (implicit specifiers)*/ void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color); // Draw icon using pixel size at specified position -// Controls -//---------------------------------------------------------------------------------------------------------- -// Container/separator controls, useful for controls organization -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiWindowBox(Rectangle bounds, const char *title); // Window Box control, shows a window that can be closed -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiGroupBox(Rectangle bounds, const char *text); // Group Box control with text name -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiLine(Rectangle bounds, const char *text); // Line separator control, could contain text -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiPanel(Rectangle bounds, const char *text); // Panel control, useful to group controls -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiTabBar(Rectangle bounds, const char **text, int count, int *active); // Tab Bar control, returns TAB to be closed or -1 -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view); // Scroll Panel control -// Basic controls set -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiLabel(Rectangle bounds, const char *text); // Label control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiButton(Rectangle bounds, const char *text); // Button control, returns true when clicked -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiLabelButton(Rectangle bounds, const char *text); // Label button control, returns true when clicked -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiToggle(Rectangle bounds, const char *text, bool *active); // Toggle Button control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiToggleGroup(Rectangle bounds, const char *text, int *active); // Toggle Group control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiToggleSlider(Rectangle bounds, const char *text, int *active); // Toggle Slider control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked); // Check Box control, returns true when active -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiComboBox(Rectangle bounds, const char *text, int *active); // Combo Box control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode); // Dropdown Box control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Spinner control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Value Box control, updates input text with numbers -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode); // Value box control for float values -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode); // Text Box control, updates input text -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider Bar control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Progress Bar control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiStatusBar(Rectangle bounds, const char *text); // Status Bar control, shows info text -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiDummyRec(Rectangle bounds, const char *text); // Dummy control for placeholders -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell); // Grid control -// Advance controls set -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active); // List View control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollIndex, int *active, int *focus); // List View with extended parameters -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons); // Message Box control, displays a message -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive); // Text Input Box control, ask for text, supports secret -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiColorPicker(Rectangle bounds, const char *text, Color *color); // Color Picker control (multiple color controls) -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiColorPanel(Rectangle bounds, const char *text, Color *color); // Color Panel control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha); // Color Bar Alpha control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiColorBarHue(Rectangle bounds, const char *text, float *value); // Color Bar Hue control -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Picker control that avoids conversion to RGB on each call (multiple color controls) -/* Functions defined as 'extern' by default (implicit specifiers)*/ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV() -//---------------------------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------- -// Icons enumeration -//---------------------------------------------------------------------------------- -typedef enum { - ICON_NONE = 0, - ICON_FOLDER_FILE_OPEN = 1, - ICON_FILE_SAVE_CLASSIC = 2, - ICON_FOLDER_OPEN = 3, - ICON_FOLDER_SAVE = 4, - ICON_FILE_OPEN = 5, - ICON_FILE_SAVE = 6, - ICON_FILE_EXPORT = 7, - ICON_FILE_ADD = 8, - ICON_FILE_DELETE = 9, - ICON_FILETYPE_TEXT = 10, - ICON_FILETYPE_AUDIO = 11, - ICON_FILETYPE_IMAGE = 12, - ICON_FILETYPE_PLAY = 13, - ICON_FILETYPE_VIDEO = 14, - ICON_FILETYPE_INFO = 15, - ICON_FILE_COPY = 16, - ICON_FILE_CUT = 17, - ICON_FILE_PASTE = 18, - ICON_CURSOR_HAND = 19, - ICON_CURSOR_POINTER = 20, - ICON_CURSOR_CLASSIC = 21, - ICON_PENCIL = 22, - ICON_PENCIL_BIG = 23, - ICON_BRUSH_CLASSIC = 24, - ICON_BRUSH_PAINTER = 25, - ICON_WATER_DROP = 26, - ICON_COLOR_PICKER = 27, - ICON_RUBBER = 28, - ICON_COLOR_BUCKET = 29, - ICON_TEXT_T = 30, - ICON_TEXT_A = 31, - ICON_SCALE = 32, - ICON_RESIZE = 33, - ICON_FILTER_POINT = 34, - ICON_FILTER_BILINEAR = 35, - ICON_CROP = 36, - ICON_CROP_ALPHA = 37, - ICON_SQUARE_TOGGLE = 38, - ICON_SYMMETRY = 39, - ICON_SYMMETRY_HORIZONTAL = 40, - ICON_SYMMETRY_VERTICAL = 41, - ICON_LENS = 42, - ICON_LENS_BIG = 43, - ICON_EYE_ON = 44, - ICON_EYE_OFF = 45, - ICON_FILTER_TOP = 46, - ICON_FILTER = 47, - ICON_TARGET_POINT = 48, - ICON_TARGET_SMALL = 49, - ICON_TARGET_BIG = 50, - ICON_TARGET_MOVE = 51, - ICON_CURSOR_MOVE = 52, - ICON_CURSOR_SCALE = 53, - ICON_CURSOR_SCALE_RIGHT = 54, - ICON_CURSOR_SCALE_LEFT = 55, - ICON_UNDO = 56, - ICON_REDO = 57, - ICON_REREDO = 58, - ICON_MUTATE = 59, - ICON_ROTATE = 60, - ICON_REPEAT = 61, - ICON_SHUFFLE = 62, - ICON_EMPTYBOX = 63, - ICON_TARGET = 64, - ICON_TARGET_SMALL_FILL = 65, - ICON_TARGET_BIG_FILL = 66, - ICON_TARGET_MOVE_FILL = 67, - ICON_CURSOR_MOVE_FILL = 68, - ICON_CURSOR_SCALE_FILL = 69, - ICON_CURSOR_SCALE_RIGHT_FILL = 70, - ICON_CURSOR_SCALE_LEFT_FILL = 71, - ICON_UNDO_FILL = 72, - ICON_REDO_FILL = 73, - ICON_REREDO_FILL = 74, - ICON_MUTATE_FILL = 75, - ICON_ROTATE_FILL = 76, - ICON_REPEAT_FILL = 77, - ICON_SHUFFLE_FILL = 78, - ICON_EMPTYBOX_SMALL = 79, - ICON_BOX = 80, - ICON_BOX_TOP = 81, - ICON_BOX_TOP_RIGHT = 82, - ICON_BOX_RIGHT = 83, - ICON_BOX_BOTTOM_RIGHT = 84, - ICON_BOX_BOTTOM = 85, - ICON_BOX_BOTTOM_LEFT = 86, - ICON_BOX_LEFT = 87, - ICON_BOX_TOP_LEFT = 88, - ICON_BOX_CENTER = 89, - ICON_BOX_CIRCLE_MASK = 90, - ICON_POT = 91, - ICON_ALPHA_MULTIPLY = 92, - ICON_ALPHA_CLEAR = 93, - ICON_DITHERING = 94, - ICON_MIPMAPS = 95, - ICON_BOX_GRID = 96, - ICON_GRID = 97, - ICON_BOX_CORNERS_SMALL = 98, - ICON_BOX_CORNERS_BIG = 99, - ICON_FOUR_BOXES = 100, - ICON_GRID_FILL = 101, - ICON_BOX_MULTISIZE = 102, - ICON_ZOOM_SMALL = 103, - ICON_ZOOM_MEDIUM = 104, - ICON_ZOOM_BIG = 105, - ICON_ZOOM_ALL = 106, - ICON_ZOOM_CENTER = 107, - ICON_BOX_DOTS_SMALL = 108, - ICON_BOX_DOTS_BIG = 109, - ICON_BOX_CONCENTRIC = 110, - ICON_BOX_GRID_BIG = 111, - ICON_OK_TICK = 112, - ICON_CROSS = 113, - ICON_ARROW_LEFT = 114, - ICON_ARROW_RIGHT = 115, - ICON_ARROW_DOWN = 116, - ICON_ARROW_UP = 117, - ICON_ARROW_LEFT_FILL = 118, - ICON_ARROW_RIGHT_FILL = 119, - ICON_ARROW_DOWN_FILL = 120, - ICON_ARROW_UP_FILL = 121, - ICON_AUDIO = 122, - ICON_FX = 123, - ICON_WAVE = 124, - ICON_WAVE_SINUS = 125, - ICON_WAVE_SQUARE = 126, - ICON_WAVE_TRIANGULAR = 127, - ICON_CROSS_SMALL = 128, - ICON_PLAYER_PREVIOUS = 129, - ICON_PLAYER_PLAY_BACK = 130, - ICON_PLAYER_PLAY = 131, - ICON_PLAYER_PAUSE = 132, - ICON_PLAYER_STOP = 133, - ICON_PLAYER_NEXT = 134, - ICON_PLAYER_RECORD = 135, - ICON_MAGNET = 136, - ICON_LOCK_CLOSE = 137, - ICON_LOCK_OPEN = 138, - ICON_CLOCK = 139, - ICON_TOOLS = 140, - ICON_GEAR = 141, - ICON_GEAR_BIG = 142, - ICON_BIN = 143, - ICON_HAND_POINTER = 144, - ICON_LASER = 145, - ICON_COIN = 146, - ICON_EXPLOSION = 147, - ICON_1UP = 148, - ICON_PLAYER = 149, - ICON_PLAYER_JUMP = 150, - ICON_KEY = 151, - ICON_DEMON = 152, - ICON_TEXT_POPUP = 153, - ICON_GEAR_EX = 154, - ICON_CRACK = 155, - ICON_CRACK_POINTS = 156, - ICON_STAR = 157, - ICON_DOOR = 158, - ICON_EXIT = 159, - ICON_MODE_2D = 160, - ICON_MODE_3D = 161, - ICON_CUBE = 162, - ICON_CUBE_FACE_TOP = 163, - ICON_CUBE_FACE_LEFT = 164, - ICON_CUBE_FACE_FRONT = 165, - ICON_CUBE_FACE_BOTTOM = 166, - ICON_CUBE_FACE_RIGHT = 167, - ICON_CUBE_FACE_BACK = 168, - ICON_CAMERA = 169, - ICON_SPECIAL = 170, - ICON_LINK_NET = 171, - ICON_LINK_BOXES = 172, - ICON_LINK_MULTI = 173, - ICON_LINK = 174, - ICON_LINK_BROKE = 175, - ICON_TEXT_NOTES = 176, - ICON_NOTEBOOK = 177, - ICON_SUITCASE = 178, - ICON_SUITCASE_ZIP = 179, - ICON_MAILBOX = 180, - ICON_MONITOR = 181, - ICON_PRINTER = 182, - ICON_PHOTO_CAMERA = 183, - ICON_PHOTO_CAMERA_FLASH = 184, - ICON_HOUSE = 185, - ICON_HEART = 186, - ICON_CORNER = 187, - ICON_VERTICAL_BARS = 188, - ICON_VERTICAL_BARS_FILL = 189, - ICON_LIFE_BARS = 190, - ICON_INFO = 191, - ICON_CROSSLINE = 192, - ICON_HELP = 193, - ICON_FILETYPE_ALPHA = 194, - ICON_FILETYPE_HOME = 195, - ICON_LAYERS_VISIBLE = 196, - ICON_LAYERS = 197, - ICON_WINDOW = 198, - ICON_HIDPI = 199, - ICON_FILETYPE_BINARY = 200, - ICON_HEX = 201, - ICON_SHIELD = 202, - ICON_FILE_NEW = 203, - ICON_FOLDER_ADD = 204, - ICON_ALARM = 205, - ICON_CPU = 206, - ICON_ROM = 207, - ICON_STEP_OVER = 208, - ICON_STEP_INTO = 209, - ICON_STEP_OUT = 210, - ICON_RESTART = 211, - ICON_BREAKPOINT_ON = 212, - ICON_BREAKPOINT_OFF = 213, - ICON_BURGER_MENU = 214, - ICON_CASE_SENSITIVE = 215, - ICON_REG_EXP = 216, - ICON_FOLDER = 217, - ICON_FILE = 218, - ICON_SAND_TIMER = 219, - 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, - ICON_232 = 232, - ICON_233 = 233, - ICON_234 = 234, - ICON_235 = 235, - ICON_236 = 236, - ICON_237 = 237, - ICON_238 = 238, - ICON_239 = 239, - ICON_240 = 240, - ICON_241 = 241, - ICON_242 = 242, - ICON_243 = 243, - ICON_244 = 244, - ICON_245 = 245, - ICON_246 = 246, - ICON_247 = 247, - ICON_248 = 248, - ICON_249 = 249, - ICON_250 = 250, - ICON_251 = 251, - ICON_252 = 252, - ICON_253 = 253, - ICON_254 = 254, - ICON_255 = 255, -} GuiIconName; -/*********************************************************************************** -* -* RAYGUI IMPLEMENTATION -* -************************************************************************************/ \ No newline at end of file diff --git a/raylib/raylib.h b/raylib/raylib.h new file mode 100644 index 0000000..fbfc500 --- /dev/null +++ b/raylib/raylib.h @@ -0,0 +1,1441 @@ +/********************************************************************************************** +* +* raylib - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com) +* +* FEATURES: +* - NO external dependencies, all required libraries included with raylib +* - Multiplatform: Windows, Linux, FreeBSD, OpenBSD, NetBSD, DragonFly, MacOS, UWP, Android, Raspberry Pi, HTML5. +* - Written in plain C code (C99) in PascalCase/camelCase notation +* - Hardware accelerated with OpenGL (1.1, 2.1, 3.3 or ES2 - choose at compile) +* - Unique OpenGL abstraction layer (usable as standalone module): [rlgl] +* - Powerful fonts module (XNA SpriteFonts, BMFonts, TTF) +* - Outstanding texture formats support, including compressed formats (DXT, ETC, ASTC) +* - Full 3d support for 3d Shapes, Models, Billboards, Heightmaps and more! +* - Flexible Materials system, supporting classic maps and PBR maps +* - Skeletal Animation support (CPU bones-based animation) +* - Shaders support, including Model shaders and Postprocessing shaders +* - Powerful math module for Vector, Matrix and Quaternion operations: [raymath] +* - Audio loading and playing with streaming support (WAV, OGG, MP3, FLAC, XM, MOD) +* - VR stereo rendering with configurable HMD device parameters +* - Bindings to multiple programming languages available! +* +* NOTES: +* One custom font is loaded by default when InitWindow() [core] +* If using OpenGL 3.3 or ES2, one default shader is loaded automatically (internally defined) [rlgl] +* If using OpenGL 3.3 or ES2, several vertex buffers (VAO/VBO) are created to manage lines-triangles-quads +* +* DEPENDENCIES (included): +* [core] rglfw (github.com/glfw/glfw) for window/context management and input (only PLATFORM_DESKTOP) +* [rlgl] glad (github.com/Dav1dde/glad) for OpenGL 3.3 extensions loading (only PLATFORM_DESKTOP) +* [raudio] miniaudio (github.com/dr-soft/miniaudio) for audio device/context management +* +* OPTIONAL DEPENDENCIES (included): +* [core] rgif (Charlie Tangora, Ramon Santamaria) for GIF recording +* [textures] stb_image (Sean Barret) for images loading (BMP, TGA, PNG, JPEG, HDR...) +* [textures] stb_image_write (Sean Barret) for image writting (BMP, TGA, PNG, JPG) +* [textures] stb_image_resize (Sean Barret) for image resizing algorithms +* [textures] stb_perlin (Sean Barret) for Perlin noise image generation +* [text] stb_truetype (Sean Barret) for ttf fonts loading +* [text] stb_rect_pack (Sean Barret) for rectangles packing +* [models] par_shapes (Philip Rideout) for parametric 3d shapes generation +* [models] tinyobj_loader_c (Syoyo Fujita) for models loading (OBJ, MTL) +* [models] cgltf (Johannes Kuhlmann) for models loading (glTF) +* [raudio] stb_vorbis (Sean Barret) for OGG audio loading +* [raudio] dr_flac (David Reid) for FLAC audio file loading +* [raudio] dr_mp3 (David Reid) for MP3 audio file loading +* [raudio] jar_xm (Joshua Reisenauer) for XM audio module loading +* [raudio] jar_mod (Joshua Reisenauer) for MOD audio module loading +* +* +* LICENSE: zlib/libpng +* +* raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software: +* +* Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +**********************************************************************************************/ + +#ifndef RAYLIB_H +#define RAYLIB_H + +#include // Required for: va_list - Only used by TraceLogCallback + +#define RLAPI // We are building or using raylib as a static library (or Linux shared library) + +#if defined(_WIN32) + // Microsoft attibutes to tell compiler that symbols are imported/exported from a .dll + #if defined(BUILD_LIBTYPE_SHARED) + #define RLAPI __declspec(dllexport) // We are building raylib as a Win32 shared library (.dll) + #elif defined(USE_LIBTYPE_SHARED) + #define RLAPI __declspec(dllimport) // We are using raylib as a Win32 shared library (.dll) + #endif +#endif + +//---------------------------------------------------------------------------------- +// Some basic Defines +//---------------------------------------------------------------------------------- +#ifndef PI + #define PI 3.14159265358979323846f +#endif + +#define DEG2RAD (PI/180.0f) +#define RAD2DEG (180.0f/PI) + +#define MAX_TOUCH_POINTS 10 // Maximum number of touch points supported + +// Allow custom memory allocators +#ifndef RL_MALLOC + #define RL_MALLOC(sz) malloc(sz) +#endif +#ifndef RL_CALLOC + #define RL_CALLOC(n,sz) calloc(n,sz) +#endif +#ifndef RL_REALLOC + #define RL_REALLOC(n,sz) realloc(n,sz) +#endif +#ifndef RL_FREE + #define RL_FREE(p) free(p) +#endif + +// NOTE: MSC C++ compiler does not support compound literals (C99 feature) +// Plain structures in C++ (without constructors) can be initialized from { } initializers. +#if defined(__cplusplus) + #define CLITERAL(type) type +#else + #define CLITERAL(type) (type) +#endif + +// Some Basic Colors +// NOTE: Custom raylib color palette for amazing visuals on WHITE background +#define LIGHTGRAY CLITERAL(Color){ 200, 200, 200, 255 } // Light Gray +#define GRAY CLITERAL(Color){ 130, 130, 130, 255 } // Gray +#define DARKGRAY CLITERAL(Color){ 80, 80, 80, 255 } // Dark Gray +#define YELLOW CLITERAL(Color){ 253, 249, 0, 255 } // Yellow +#define GOLD CLITERAL(Color){ 255, 203, 0, 255 } // Gold +#define ORANGE CLITERAL(Color){ 255, 161, 0, 255 } // Orange +#define PINK CLITERAL(Color){ 255, 109, 194, 255 } // Pink +#define RED CLITERAL(Color){ 230, 41, 55, 255 } // Red +#define MAROON CLITERAL(Color){ 190, 33, 55, 255 } // Maroon +#define GREEN CLITERAL(Color){ 0, 228, 48, 255 } // Green +#define LIME CLITERAL(Color){ 0, 158, 47, 255 } // Lime +#define DARKGREEN CLITERAL(Color){ 0, 117, 44, 255 } // Dark Green +#define SKYBLUE CLITERAL(Color){ 102, 191, 255, 255 } // Sky Blue +#define BLUE CLITERAL(Color){ 0, 121, 241, 255 } // Blue +#define DARKBLUE CLITERAL(Color){ 0, 82, 172, 255 } // Dark Blue +#define PURPLE CLITERAL(Color){ 200, 122, 255, 255 } // Purple +#define VIOLET CLITERAL(Color){ 135, 60, 190, 255 } // Violet +#define DARKPURPLE CLITERAL(Color){ 112, 31, 126, 255 } // Dark Purple +#define BEIGE CLITERAL(Color){ 211, 176, 131, 255 } // Beige +#define BROWN CLITERAL(Color){ 127, 106, 79, 255 } // Brown +#define DARKBROWN CLITERAL(Color){ 76, 63, 47, 255 } // Dark Brown + +#define WHITE CLITERAL(Color){ 255, 255, 255, 255 } // White +#define BLACK CLITERAL(Color){ 0, 0, 0, 255 } // Black +#define BLANK CLITERAL(Color){ 0, 0, 0, 0 } // Blank (Transparent) +#define MAGENTA CLITERAL(Color){ 255, 0, 255, 255 } // Magenta +#define RAYWHITE CLITERAL(Color){ 245, 245, 245, 255 } // My own White (raylib logo) + +// Temporal hack to avoid breaking old codebases using +// deprecated raylib implementation of these functions +#define FormatText TextFormat +#define SubText TextSubtext +#define ShowWindow UnhideWindow + +//---------------------------------------------------------------------------------- +// Structures Definition +//---------------------------------------------------------------------------------- +// Boolean type +#if defined(__STDC__) && __STDC_VERSION__ >= 199901L + #include +#elif !defined(__cplusplus) && !defined(bool) + typedef enum { false, true } bool; +#endif + +// Vector2 type +typedef struct Vector2 { + float x; + float y; +} Vector2; + +// Vector3 type +typedef struct Vector3 { + float x; + float y; + float z; +} Vector3; + +// Vector4 type +typedef struct Vector4 { + float x; + float y; + float z; + float w; +} Vector4; + +// Quaternion type, same as Vector4 +typedef Vector4 Quaternion; + +// Matrix type (OpenGL style 4x4 - right handed, column major) +typedef struct Matrix { + float m0, m4, m8, m12; + float m1, m5, m9, m13; + float m2, m6, m10, m14; + float m3, m7, m11, m15; +} Matrix; + +// Color type, RGBA (32bit) +typedef struct Color { + unsigned char r; + unsigned char g; + unsigned char b; + unsigned char a; +} Color; + +// Rectangle type +typedef struct Rectangle { + float x; + float y; + float width; + float height; +} Rectangle; + +// Image type, bpp always RGBA (32bit) +// NOTE: Data stored in CPU memory (RAM) +typedef struct Image { + void *data; // Image raw data + int width; // Image base width + int height; // Image base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) +} Image; + +// Texture2D type +// NOTE: Data stored in GPU memory +typedef struct Texture2D { + unsigned int id; // OpenGL texture id + int width; // Texture base width + int height; // Texture base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) +} Texture2D; + +// Texture type, same as Texture2D +typedef Texture2D Texture; + +// TextureCubemap type, actually, same as Texture2D +typedef Texture2D TextureCubemap; + +// RenderTexture2D type, for texture rendering +typedef struct RenderTexture2D { + unsigned int id; // OpenGL Framebuffer Object (FBO) id + Texture2D texture; // Color buffer attachment texture + Texture2D depth; // Depth buffer attachment texture + bool depthTexture; // Track if depth attachment is a texture or renderbuffer +} RenderTexture2D; + +// RenderTexture type, same as RenderTexture2D +typedef RenderTexture2D RenderTexture; + +// N-Patch layout info +typedef struct NPatchInfo { + Rectangle sourceRec; // Region in the texture + int left; // left border offset + int top; // top border offset + int right; // right border offset + int bottom; // bottom border offset + int type; // layout of the n-patch: 3x3, 1x3 or 3x1 +} NPatchInfo; + +// Font character info +typedef struct CharInfo { + int value; // Character value (Unicode) + int offsetX; // Character offset X when drawing + int offsetY; // Character offset Y when drawing + int advanceX; // Character advance position X + Image image; // Character image data +} CharInfo; + +// Font type, includes texture and charSet array data +typedef struct Font { + int baseSize; // Base size (default chars height) + int charsCount; // Number of characters + Texture2D texture; // Characters texture atlas + Rectangle *recs; // Characters rectangles in texture + CharInfo *chars; // Characters info data +} Font; + +#define SpriteFont Font // SpriteFont type fallback, defaults to Font + +// Camera type, defines a camera position/orientation in 3d space +typedef struct Camera3D { + Vector3 position; // Camera position + Vector3 target; // Camera target it looks-at + Vector3 up; // Camera up vector (rotation over its axis) + float fovy; // Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic + int type; // Camera type, defines projection type: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC +} Camera3D; + +typedef Camera3D Camera; // Camera type fallback, defaults to Camera3D + +// Camera2D type, defines a 2d camera +typedef struct Camera2D { + Vector2 offset; // Camera offset (displacement from target) + Vector2 target; // Camera target (rotation and zoom origin) + float rotation; // Camera rotation in degrees + float zoom; // Camera zoom (scaling), should be 1.0f by default +} Camera2D; + +// Vertex data definning a mesh +// NOTE: Data stored in CPU memory (and GPU) +typedef struct Mesh { + int vertexCount; // Number of vertices stored in arrays + int triangleCount; // Number of triangles stored (indexed or not) + + // Default vertex data + float *vertices; // Vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + float *texcoords2; // Vertex second texture coordinates (useful for lightmaps) (shader-location = 5) + float *normals; // Vertex normals (XYZ - 3 components per vertex) (shader-location = 2) + float *tangents; // Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4) + unsigned char *colors; // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3) + unsigned short *indices;// Vertex indices (in case vertex data comes indexed) + + // Animation vertex data + float *animVertices; // Animated vertex positions (after bones transformations) + float *animNormals; // Animated normals (after bones transformations) + int *boneIds; // Vertex bone ids, up to 4 bones influence by vertex (skinning) + float *boneWeights; // Vertex bone weight, up to 4 bones influence by vertex (skinning) + + // OpenGL identifiers + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int *vboId; // OpenGL Vertex Buffer Objects id (default vertex data) +} Mesh; + +// Shader type (generic) +typedef struct Shader { + unsigned int id; // Shader program id + int *locs; // Shader locations array (MAX_SHADER_LOCATIONS) +} Shader; + +// Material texture map +typedef struct MaterialMap { + Texture2D texture; // Material map texture + Color color; // Material map color + float value; // Material map value +} MaterialMap; + +// Material type (generic) +typedef struct Material { + Shader shader; // Material shader + MaterialMap *maps; // Material maps array (MAX_MATERIAL_MAPS) + float *params; // Material generic parameters (if required) +} Material; + +// Transformation properties +typedef struct Transform { + Vector3 translation; // Translation + Quaternion rotation; // Rotation + Vector3 scale; // Scale +} Transform; + +// Bone information +typedef struct BoneInfo { + char name[32]; // Bone name + int parent; // Bone parent +} BoneInfo; + +// Model type +typedef struct Model { + Matrix transform; // Local transform matrix + + int meshCount; // Number of meshes + Mesh *meshes; // Meshes array + + int materialCount; // Number of materials + Material *materials; // Materials array + int *meshMaterial; // Mesh material number + + // Animation data + int boneCount; // Number of bones + BoneInfo *bones; // Bones information (skeleton) + Transform *bindPose; // Bones base transformation (pose) +} Model; + +// Model animation +typedef struct ModelAnimation { + int boneCount; // Number of bones + BoneInfo *bones; // Bones information (skeleton) + + int frameCount; // Number of animation frames + Transform **framePoses; // Poses array by frame +} ModelAnimation; + +// Ray type (useful for raycast) +typedef struct Ray { + Vector3 position; // Ray position (origin) + Vector3 direction; // Ray direction +} Ray; + +// Raycast hit information +typedef struct RayHitInfo { + bool hit; // Did the ray hit something? + float distance; // Distance to nearest hit + Vector3 position; // Position of nearest hit + Vector3 normal; // Surface normal of hit +} RayHitInfo; + +// Bounding box type +typedef struct BoundingBox { + Vector3 min; // Minimum vertex box-corner + Vector3 max; // Maximum vertex box-corner +} BoundingBox; + +// Wave type, defines audio wave data +typedef struct Wave { + unsigned int sampleCount; // Total number of samples + unsigned int sampleRate; // Frequency (samples per second) + unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) + unsigned int channels; // Number of channels (1-mono, 2-stereo) + void *data; // Buffer data pointer +} Wave; + +typedef struct rAudioBuffer rAudioBuffer; + +// Audio stream type +// NOTE: Useful to create custom audio streams not bound to a specific file +typedef struct AudioStream { + unsigned int sampleRate; // Frequency (samples per second) + unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) + unsigned int channels; // Number of channels (1-mono, 2-stereo) + + rAudioBuffer *buffer; // Pointer to internal data used by the audio system +} AudioStream; + +// Sound source type +typedef struct Sound { + unsigned int sampleCount; // Total number of samples + AudioStream stream; // Audio stream +} Sound; + +// Music stream type (audio file streaming from memory) +// NOTE: Anything longer than ~10 seconds should be streamed +typedef struct Music { + int ctxType; // Type of music context (audio filetype) + void *ctxData; // Audio context data, depends on type + + unsigned int sampleCount; // Total number of samples + unsigned int loopCount; // Loops count (times music will play), 0 means infinite loop + + AudioStream stream; // Audio stream +} Music; + +// Head-Mounted-Display device parameters +typedef struct VrDeviceInfo { + int hResolution; // HMD horizontal resolution in pixels + int vResolution; // HMD vertical resolution in pixels + float hScreenSize; // HMD horizontal size in meters + float vScreenSize; // HMD vertical size in meters + float vScreenCenter; // HMD screen center in meters + float eyeToScreenDistance; // HMD distance between eye and display in meters + float lensSeparationDistance; // HMD lens separation distance in meters + float interpupillaryDistance; // HMD IPD (distance between pupils) in meters + float lensDistortionValues[4]; // HMD lens distortion constant parameters + float chromaAbCorrection[4]; // HMD chromatic aberration correction parameters +} VrDeviceInfo; + +//---------------------------------------------------------------------------------- +// Enumerators Definition +//---------------------------------------------------------------------------------- +// System config flags +// NOTE: Used for bit masks +typedef enum { + FLAG_RESERVED = 1, // Reserved + FLAG_FULLSCREEN_MODE = 2, // Set to run program in fullscreen + FLAG_WINDOW_RESIZABLE = 4, // Set to allow resizable window + FLAG_WINDOW_UNDECORATED = 8, // Set to disable window decoration (frame and buttons) + FLAG_WINDOW_TRANSPARENT = 16, // Set to allow transparent window + FLAG_WINDOW_HIDDEN = 128, // Set to create the window initially hidden + FLAG_WINDOW_ALWAYS_RUN = 256, // Set to allow windows running while minimized + FLAG_MSAA_4X_HINT = 32, // Set to try enabling MSAA 4X + FLAG_VSYNC_HINT = 64 // Set to try enabling V-Sync on GPU +} ConfigFlag; + +// Trace log type +typedef enum { + LOG_ALL = 0, // Display all logs + LOG_TRACE, + LOG_DEBUG, + LOG_INFO, + LOG_WARNING, + LOG_ERROR, + LOG_FATAL, + LOG_NONE // Disable logging +} TraceLogType; + +// Keyboard keys +typedef enum { + // Alphanumeric keys + KEY_APOSTROPHE = 39, + KEY_COMMA = 44, + KEY_MINUS = 45, + KEY_PERIOD = 46, + KEY_SLASH = 47, + KEY_ZERO = 48, + KEY_ONE = 49, + KEY_TWO = 50, + KEY_THREE = 51, + KEY_FOUR = 52, + KEY_FIVE = 53, + KEY_SIX = 54, + KEY_SEVEN = 55, + KEY_EIGHT = 56, + KEY_NINE = 57, + KEY_SEMICOLON = 59, + KEY_EQUAL = 61, + KEY_A = 65, + KEY_B = 66, + KEY_C = 67, + KEY_D = 68, + KEY_E = 69, + KEY_F = 70, + KEY_G = 71, + KEY_H = 72, + KEY_I = 73, + KEY_J = 74, + KEY_K = 75, + KEY_L = 76, + KEY_M = 77, + KEY_N = 78, + KEY_O = 79, + KEY_P = 80, + KEY_Q = 81, + KEY_R = 82, + KEY_S = 83, + KEY_T = 84, + KEY_U = 85, + KEY_V = 86, + KEY_W = 87, + KEY_X = 88, + KEY_Y = 89, + KEY_Z = 90, + + // Function keys + KEY_SPACE = 32, + KEY_ESCAPE = 256, + KEY_ENTER = 257, + KEY_TAB = 258, + KEY_BACKSPACE = 259, + KEY_INSERT = 260, + KEY_DELETE = 261, + KEY_RIGHT = 262, + KEY_LEFT = 263, + KEY_DOWN = 264, + KEY_UP = 265, + KEY_PAGE_UP = 266, + KEY_PAGE_DOWN = 267, + KEY_HOME = 268, + KEY_END = 269, + KEY_CAPS_LOCK = 280, + KEY_SCROLL_LOCK = 281, + KEY_NUM_LOCK = 282, + KEY_PRINT_SCREEN = 283, + KEY_PAUSE = 284, + KEY_F1 = 290, + KEY_F2 = 291, + KEY_F3 = 292, + KEY_F4 = 293, + KEY_F5 = 294, + KEY_F6 = 295, + KEY_F7 = 296, + KEY_F8 = 297, + KEY_F9 = 298, + KEY_F10 = 299, + KEY_F11 = 300, + KEY_F12 = 301, + KEY_LEFT_SHIFT = 340, + KEY_LEFT_CONTROL = 341, + KEY_LEFT_ALT = 342, + KEY_LEFT_SUPER = 343, + KEY_RIGHT_SHIFT = 344, + KEY_RIGHT_CONTROL = 345, + KEY_RIGHT_ALT = 346, + KEY_RIGHT_SUPER = 347, + KEY_KB_MENU = 348, + KEY_LEFT_BRACKET = 91, + KEY_BACKSLASH = 92, + KEY_RIGHT_BRACKET = 93, + KEY_GRAVE = 96, + + // Keypad keys + KEY_KP_0 = 320, + KEY_KP_1 = 321, + KEY_KP_2 = 322, + KEY_KP_3 = 323, + KEY_KP_4 = 324, + KEY_KP_5 = 325, + KEY_KP_6 = 326, + KEY_KP_7 = 327, + KEY_KP_8 = 328, + KEY_KP_9 = 329, + KEY_KP_DECIMAL = 330, + KEY_KP_DIVIDE = 331, + KEY_KP_MULTIPLY = 332, + KEY_KP_SUBTRACT = 333, + KEY_KP_ADD = 334, + KEY_KP_ENTER = 335, + KEY_KP_EQUAL = 336 +} KeyboardKey; + +// Android buttons +typedef enum { + KEY_BACK = 4, + KEY_MENU = 82, + KEY_VOLUME_UP = 24, + KEY_VOLUME_DOWN = 25 +} AndroidButton; + +// Mouse buttons +typedef enum { + MOUSE_LEFT_BUTTON = 0, + MOUSE_RIGHT_BUTTON = 1, + MOUSE_MIDDLE_BUTTON = 2 +} MouseButton; + +// Gamepad number +typedef enum { + GAMEPAD_PLAYER1 = 0, + GAMEPAD_PLAYER2 = 1, + GAMEPAD_PLAYER3 = 2, + GAMEPAD_PLAYER4 = 3 +} GamepadNumber; + +// Gamepad Buttons +typedef enum { + // This is here just for error checking + GAMEPAD_BUTTON_UNKNOWN = 0, + + // This is normally a DPAD + GAMEPAD_BUTTON_LEFT_FACE_UP, + GAMEPAD_BUTTON_LEFT_FACE_RIGHT, + GAMEPAD_BUTTON_LEFT_FACE_DOWN, + GAMEPAD_BUTTON_LEFT_FACE_LEFT, + + // This normally corresponds with PlayStation and Xbox controllers + // XBOX: [Y,X,A,B] + // PS3: [Triangle,Square,Cross,Circle] + // No support for 6 button controllers though.. + GAMEPAD_BUTTON_RIGHT_FACE_UP, + GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, + GAMEPAD_BUTTON_RIGHT_FACE_DOWN, + GAMEPAD_BUTTON_RIGHT_FACE_LEFT, + + // Triggers + GAMEPAD_BUTTON_LEFT_TRIGGER_1, + GAMEPAD_BUTTON_LEFT_TRIGGER_2, + GAMEPAD_BUTTON_RIGHT_TRIGGER_1, + GAMEPAD_BUTTON_RIGHT_TRIGGER_2, + + // These are buttons in the center of the gamepad + GAMEPAD_BUTTON_MIDDLE_LEFT, //PS3 Select + GAMEPAD_BUTTON_MIDDLE, //PS Button/XBOX Button + GAMEPAD_BUTTON_MIDDLE_RIGHT, //PS3 Start + + // These are the joystick press in buttons + GAMEPAD_BUTTON_LEFT_THUMB, + GAMEPAD_BUTTON_RIGHT_THUMB +} GamepadButton; + +typedef enum { + // This is here just for error checking + GAMEPAD_AXIS_UNKNOWN = 0, + + // Left stick + GAMEPAD_AXIS_LEFT_X, + GAMEPAD_AXIS_LEFT_Y, + + // Right stick + GAMEPAD_AXIS_RIGHT_X, + GAMEPAD_AXIS_RIGHT_Y, + + // Pressure levels for the back triggers + GAMEPAD_AXIS_LEFT_TRIGGER, // [1..-1] (pressure-level) + GAMEPAD_AXIS_RIGHT_TRIGGER // [1..-1] (pressure-level) +} GamepadAxis; + +// Shader location point type +typedef enum { + LOC_VERTEX_POSITION = 0, + LOC_VERTEX_TEXCOORD01, + LOC_VERTEX_TEXCOORD02, + LOC_VERTEX_NORMAL, + LOC_VERTEX_TANGENT, + LOC_VERTEX_COLOR, + LOC_MATRIX_MVP, + LOC_MATRIX_MODEL, + LOC_MATRIX_VIEW, + LOC_MATRIX_PROJECTION, + LOC_VECTOR_VIEW, + LOC_COLOR_DIFFUSE, + LOC_COLOR_SPECULAR, + LOC_COLOR_AMBIENT, + LOC_MAP_ALBEDO, // LOC_MAP_DIFFUSE + LOC_MAP_METALNESS, // LOC_MAP_SPECULAR + LOC_MAP_NORMAL, + LOC_MAP_ROUGHNESS, + LOC_MAP_OCCLUSION, + LOC_MAP_EMISSION, + LOC_MAP_HEIGHT, + LOC_MAP_CUBEMAP, + LOC_MAP_IRRADIANCE, + LOC_MAP_PREFILTER, + LOC_MAP_BRDF +} ShaderLocationIndex; + +#define LOC_MAP_DIFFUSE LOC_MAP_ALBEDO +#define LOC_MAP_SPECULAR LOC_MAP_METALNESS + +// Shader uniform data types +typedef enum { + UNIFORM_FLOAT = 0, + UNIFORM_VEC2, + UNIFORM_VEC3, + UNIFORM_VEC4, + UNIFORM_INT, + UNIFORM_IVEC2, + UNIFORM_IVEC3, + UNIFORM_IVEC4, + UNIFORM_SAMPLER2D +} ShaderUniformDataType; + +// Material map type +typedef enum { + MAP_ALBEDO = 0, // MAP_DIFFUSE + MAP_METALNESS = 1, // MAP_SPECULAR + MAP_NORMAL = 2, + MAP_ROUGHNESS = 3, + MAP_OCCLUSION, + MAP_EMISSION, + MAP_HEIGHT, + MAP_CUBEMAP, // NOTE: Uses GL_TEXTURE_CUBE_MAP + MAP_IRRADIANCE, // NOTE: Uses GL_TEXTURE_CUBE_MAP + MAP_PREFILTER, // NOTE: Uses GL_TEXTURE_CUBE_MAP + MAP_BRDF +} MaterialMapType; + +#define MAP_DIFFUSE MAP_ALBEDO +#define MAP_SPECULAR MAP_METALNESS + +// Pixel formats +// NOTE: Support depends on OpenGL version and platform +typedef enum { + UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) + UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) + UNCOMPRESSED_R5G6B5, // 16 bpp + UNCOMPRESSED_R8G8B8, // 24 bpp + UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) + UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) + UNCOMPRESSED_R8G8B8A8, // 32 bpp + UNCOMPRESSED_R32, // 32 bpp (1 channel - float) + UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) + UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) + COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) + COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) + COMPRESSED_DXT3_RGBA, // 8 bpp + COMPRESSED_DXT5_RGBA, // 8 bpp + COMPRESSED_ETC1_RGB, // 4 bpp + COMPRESSED_ETC2_RGB, // 4 bpp + COMPRESSED_ETC2_EAC_RGBA, // 8 bpp + COMPRESSED_PVRT_RGB, // 4 bpp + COMPRESSED_PVRT_RGBA, // 4 bpp + COMPRESSED_ASTC_4x4_RGBA, // 8 bpp + COMPRESSED_ASTC_8x8_RGBA // 2 bpp +} PixelFormat; + +// Texture parameters: filter mode +// NOTE 1: Filtering considers mipmaps if available in the texture +// NOTE 2: Filter is accordingly set for minification and magnification +typedef enum { + FILTER_POINT = 0, // No filter, just pixel aproximation + FILTER_BILINEAR, // Linear filtering + FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) + FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x + FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x + FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x +} TextureFilterMode; + +// Cubemap layout type +typedef enum { + CUBEMAP_AUTO_DETECT = 0, // Automatically detect layout type + CUBEMAP_LINE_VERTICAL, // Layout is defined by a vertical line with faces + CUBEMAP_LINE_HORIZONTAL, // Layout is defined by an horizontal line with faces + CUBEMAP_CROSS_THREE_BY_FOUR, // Layout is defined by a 3x4 cross with cubemap faces + CUBEMAP_CROSS_FOUR_BY_THREE, // Layout is defined by a 4x3 cross with cubemap faces + CUBEMAP_PANORAMA // Layout is defined by a panorama image (equirectangular map) +} CubemapLayoutType; + +// Texture parameters: wrap mode +typedef enum { + WRAP_REPEAT = 0, // Repeats texture in tiled mode + WRAP_CLAMP, // Clamps texture to edge pixel in tiled mode + WRAP_MIRROR_REPEAT, // Mirrors and repeats the texture in tiled mode + WRAP_MIRROR_CLAMP // Mirrors and clamps to border the texture in tiled mode +} TextureWrapMode; + +// Font type, defines generation method +typedef enum { + FONT_DEFAULT = 0, // Default font generation, anti-aliased + FONT_BITMAP, // Bitmap font generation, no anti-aliasing + FONT_SDF // SDF font generation, requires external shader +} FontType; + +// Color blending modes (pre-defined) +typedef enum { + BLEND_ALPHA = 0, // Blend textures considering alpha (default) + BLEND_ADDITIVE, // Blend textures adding colors + BLEND_MULTIPLIED // Blend textures multiplying colors +} BlendMode; + +// Gestures type +// NOTE: It could be used as flags to enable only some gestures +typedef enum { + GESTURE_NONE = 0, + GESTURE_TAP = 1, + GESTURE_DOUBLETAP = 2, + GESTURE_HOLD = 4, + GESTURE_DRAG = 8, + GESTURE_SWIPE_RIGHT = 16, + GESTURE_SWIPE_LEFT = 32, + GESTURE_SWIPE_UP = 64, + GESTURE_SWIPE_DOWN = 128, + GESTURE_PINCH_IN = 256, + GESTURE_PINCH_OUT = 512 +} GestureType; + +// Camera system modes +typedef enum { + CAMERA_CUSTOM = 0, + CAMERA_FREE, + CAMERA_ORBITAL, + CAMERA_FIRST_PERSON, + CAMERA_THIRD_PERSON +} CameraMode; + +// Camera projection modes +typedef enum { + CAMERA_PERSPECTIVE = 0, + CAMERA_ORTHOGRAPHIC +} CameraType; + +// Type of n-patch +typedef enum { + NPT_9PATCH = 0, // Npatch defined by 3x3 tiles + NPT_3PATCH_VERTICAL, // Npatch defined by 1x3 tiles + NPT_3PATCH_HORIZONTAL // Npatch defined by 3x1 tiles +} NPatchType; + +// Callbacks to be implemented by users +typedef void (*TraceLogCallback)(int logType, const char *text, va_list args); + +#if defined(__cplusplus) +extern "C" { // Prevents name mangling of functions +#endif + +//------------------------------------------------------------------------------------ +// Global Variables Definition +//------------------------------------------------------------------------------------ +// It's lonely here... + +//------------------------------------------------------------------------------------ +// Window and Graphics Device Functions (Module: core) +//------------------------------------------------------------------------------------ + +// Window-related functions +RLAPI void InitWindow(int width, int height, const char *title); // Initialize window and OpenGL context +RLAPI bool WindowShouldClose(void); // Check if KEY_ESCAPE pressed or Close icon pressed +RLAPI void CloseWindow(void); // Close window and unload OpenGL context +RLAPI bool IsWindowReady(void); // Check if window has been initialized successfully +RLAPI bool IsWindowMinimized(void); // Check if window has been minimized (or lost focus) +RLAPI bool IsWindowResized(void); // Check if window has been resized +RLAPI bool IsWindowHidden(void); // Check if window is currently hidden +RLAPI void ToggleFullscreen(void); // Toggle fullscreen mode (only PLATFORM_DESKTOP) +RLAPI void UnhideWindow(void); // Show the window +RLAPI void HideWindow(void); // Hide the window +RLAPI void SetWindowIcon(Image image); // Set icon for window (only PLATFORM_DESKTOP) +RLAPI void SetWindowTitle(const char *title); // Set title for window (only PLATFORM_DESKTOP) +RLAPI void SetWindowPosition(int x, int y); // Set window position on screen (only PLATFORM_DESKTOP) +RLAPI void SetWindowMonitor(int monitor); // Set monitor for the current window (fullscreen mode) +RLAPI void SetWindowMinSize(int width, int height); // Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE) +RLAPI void SetWindowSize(int width, int height); // Set window dimensions +RLAPI void *GetWindowHandle(void); // Get native window handle +RLAPI int GetScreenWidth(void); // Get current screen width +RLAPI int GetScreenHeight(void); // Get current screen height +RLAPI int GetMonitorCount(void); // Get number of connected monitors +RLAPI int GetMonitorWidth(int monitor); // Get primary monitor width +RLAPI int GetMonitorHeight(int monitor); // Get primary monitor height +RLAPI int GetMonitorPhysicalWidth(int monitor); // Get primary monitor physical width in millimetres +RLAPI int GetMonitorPhysicalHeight(int monitor); // Get primary monitor physical height in millimetres +RLAPI Vector2 GetWindowPosition(void); // Get window position XY on monitor +RLAPI const char *GetMonitorName(int monitor); // Get the human-readable, UTF-8 encoded name of the primary monitor +RLAPI const char *GetClipboardText(void); // Get clipboard text content +RLAPI void SetClipboardText(const char *text); // Set clipboard text content + +// Cursor-related functions +RLAPI void ShowCursor(void); // Shows cursor +RLAPI void HideCursor(void); // Hides cursor +RLAPI bool IsCursorHidden(void); // Check if cursor is not visible +RLAPI void EnableCursor(void); // Enables cursor (unlock cursor) +RLAPI void DisableCursor(void); // Disables cursor (lock cursor) + +// Drawing-related functions +RLAPI void ClearBackground(Color color); // Set background color (framebuffer clear color) +RLAPI void BeginDrawing(void); // Setup canvas (framebuffer) to start drawing +RLAPI void EndDrawing(void); // End canvas drawing and swap buffers (double buffering) +RLAPI void BeginMode2D(Camera2D camera); // Initialize 2D mode with custom camera (2D) +RLAPI void EndMode2D(void); // Ends 2D mode with custom camera +RLAPI void BeginMode3D(Camera3D camera); // Initializes 3D mode with custom camera (3D) +RLAPI void EndMode3D(void); // Ends 3D mode and returns to default 2D orthographic mode +RLAPI void BeginTextureMode(RenderTexture2D target); // Initializes render texture for drawing +RLAPI void EndTextureMode(void); // Ends drawing to render texture +RLAPI void BeginScissorMode(int x, int y, int width, int height); // Begin scissor mode (define screen area for following drawing) +RLAPI void EndScissorMode(void); // End scissor mode + +// Screen-space-related functions +RLAPI Ray GetMouseRay(Vector2 mousePosition, Camera camera); // Returns a ray trace from mouse position +RLAPI Matrix GetCameraMatrix(Camera camera); // Returns camera transform matrix (view matrix) +RLAPI Matrix GetCameraMatrix2D(Camera2D camera); // Returns camera 2d transform matrix +RLAPI Vector2 GetWorldToScreen(Vector3 position, Camera camera); // Returns the screen space position for a 3d world space position +RLAPI Vector2 GetWorldToScreenEx(Vector3 position, Camera camera, int width, int height); // Returns size position for a 3d world space position +RLAPI Vector2 GetWorldToScreen2D(Vector2 position, Camera2D camera); // Returns the screen space position for a 2d camera world space position +RLAPI Vector2 GetScreenToWorld2D(Vector2 position, Camera2D camera); // Returns the world space position for a 2d camera screen space position + +// Timing-related functions +RLAPI void SetTargetFPS(int fps); // Set target FPS (maximum) +RLAPI int GetFPS(void); // Returns current FPS +RLAPI float GetFrameTime(void); // Returns time in seconds for last frame drawn +RLAPI double GetTime(void); // Returns elapsed time in seconds since InitWindow() + +// Color-related functions +RLAPI int ColorToInt(Color color); // Returns hexadecimal value for a Color +RLAPI Vector4 ColorNormalize(Color color); // Returns color normalized as float [0..1] +RLAPI Color ColorFromNormalized(Vector4 normalized); // Returns color from normalized values [0..1] +RLAPI Vector3 ColorToHSV(Color color); // Returns HSV values for a Color +RLAPI Color ColorFromHSV(Vector3 hsv); // Returns a Color from HSV values +RLAPI Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value +RLAPI Color Fade(Color color, float alpha); // Color fade-in or fade-out, alpha goes from 0.0f to 1.0f + +// Misc. functions +RLAPI void SetConfigFlags(unsigned int flags); // Setup window configuration flags (view FLAGS) +RLAPI void SetTraceLogLevel(int logType); // Set the current threshold (minimum) log level +RLAPI void SetTraceLogExit(int logType); // Set the exit threshold (minimum) log level +RLAPI void SetTraceLogCallback(TraceLogCallback callback); // Set a trace log callback to enable custom logging +RLAPI void TraceLog(int logType, const char *text, ...); // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR) +RLAPI void TakeScreenshot(const char *fileName); // Takes a screenshot of current screen (saved a .png) +RLAPI int GetRandomValue(int min, int max); // Returns a random value between min and max (both included) + +// Files management functions +RLAPI bool FileExists(const char *fileName); // Check if file exists +RLAPI bool IsFileExtension(const char *fileName, const char *ext);// Check file extension +RLAPI bool DirectoryExists(const char *dirPath); // Check if a directory path exists +RLAPI const char *GetExtension(const char *fileName); // Get pointer to extension for a filename string +RLAPI const char *GetFileName(const char *filePath); // Get pointer to filename for a path string +RLAPI const char *GetFileNameWithoutExt(const char *filePath); // Get filename string without extension (uses static string) +RLAPI const char *GetDirectoryPath(const char *filePath); // Get full path for a given fileName with path (uses static string) +RLAPI const char *GetPrevDirectoryPath(const char *dirPath); // Get previous directory path for a given path (uses static string) +RLAPI const char *GetWorkingDirectory(void); // Get current working directory (uses static string) +RLAPI char **GetDirectoryFiles(const char *dirPath, int *count); // Get filenames in a directory path (memory should be freed) +RLAPI void ClearDirectoryFiles(void); // Clear directory files paths buffers (free memory) +RLAPI bool ChangeDirectory(const char *dir); // Change working directory, returns true if success +RLAPI bool IsFileDropped(void); // Check if a file has been dropped into window +RLAPI char **GetDroppedFiles(int *count); // Get dropped files names (memory should be freed) +RLAPI void ClearDroppedFiles(void); // Clear dropped files paths buffer (free memory) +RLAPI long GetFileModTime(const char *fileName); // Get file modification time (last write time) + +RLAPI unsigned char *CompressData(unsigned char *data, int dataLength, int *compDataLength); // Compress data (DEFLATE algorythm) +RLAPI unsigned char *DecompressData(unsigned char *compData, int compDataLength, int *dataLength); // Decompress data (DEFLATE algorythm) + +// Persistent storage management +RLAPI void StorageSaveValue(int position, int value); // Save integer value to storage file (to defined position) +RLAPI int StorageLoadValue(int position); // Load integer value from storage file (from defined position) + +RLAPI void OpenURL(const char *url); // Open URL with default system browser (if available) + +//------------------------------------------------------------------------------------ +// Input Handling Functions (Module: core) +//------------------------------------------------------------------------------------ + +// Input-related functions: keyboard +RLAPI bool IsKeyPressed(int key); // Detect if a key has been pressed once +RLAPI bool IsKeyDown(int key); // Detect if a key is being pressed +RLAPI bool IsKeyReleased(int key); // Detect if a key has been released once +RLAPI bool IsKeyUp(int key); // Detect if a key is NOT being pressed +RLAPI void SetExitKey(int key); // Set a custom key to exit program (default is ESC) +RLAPI int GetKeyPressed(void); // Get key pressed, call it multiple times for chars queued + +// Input-related functions: gamepads +RLAPI bool IsGamepadAvailable(int gamepad); // Detect if a gamepad is available +RLAPI bool IsGamepadName(int gamepad, const char *name); // Check gamepad name (if available) +RLAPI const char *GetGamepadName(int gamepad); // Return gamepad internal name id +RLAPI bool IsGamepadButtonPressed(int gamepad, int button); // Detect if a gamepad button has been pressed once +RLAPI bool IsGamepadButtonDown(int gamepad, int button); // Detect if a gamepad button is being pressed +RLAPI bool IsGamepadButtonReleased(int gamepad, int button); // Detect if a gamepad button has been released once +RLAPI bool IsGamepadButtonUp(int gamepad, int button); // Detect if a gamepad button is NOT being pressed +RLAPI int GetGamepadButtonPressed(void); // Get the last gamepad button pressed +RLAPI int GetGamepadAxisCount(int gamepad); // Return gamepad axis count for a gamepad +RLAPI float GetGamepadAxisMovement(int gamepad, int axis); // Return axis movement value for a gamepad axis + +// Input-related functions: mouse +RLAPI bool IsMouseButtonPressed(int button); // Detect if a mouse button has been pressed once +RLAPI bool IsMouseButtonDown(int button); // Detect if a mouse button is being pressed +RLAPI bool IsMouseButtonReleased(int button); // Detect if a mouse button has been released once +RLAPI bool IsMouseButtonUp(int button); // Detect if a mouse button is NOT being pressed +RLAPI int GetMouseX(void); // Returns mouse position X +RLAPI int GetMouseY(void); // Returns mouse position Y +RLAPI Vector2 GetMousePosition(void); // Returns mouse position XY +RLAPI void SetMousePosition(int x, int y); // Set mouse position XY +RLAPI void SetMouseOffset(int offsetX, int offsetY); // Set mouse offset +RLAPI void SetMouseScale(float scaleX, float scaleY); // Set mouse scaling +RLAPI int GetMouseWheelMove(void); // Returns mouse wheel movement Y + +// Input-related functions: touch +RLAPI int GetTouchX(void); // Returns touch position X for touch point 0 (relative to screen size) +RLAPI int GetTouchY(void); // Returns touch position Y for touch point 0 (relative to screen size) +RLAPI Vector2 GetTouchPosition(int index); // Returns touch position XY for a touch point index (relative to screen size) + +//------------------------------------------------------------------------------------ +// Gestures and Touch Handling Functions (Module: gestures) +//------------------------------------------------------------------------------------ +RLAPI void SetGesturesEnabled(unsigned int gestureFlags); // Enable a set of gestures using flags +RLAPI bool IsGestureDetected(int gesture); // Check if a gesture have been detected +RLAPI int GetGestureDetected(void); // Get latest detected gesture +RLAPI int GetTouchPointsCount(void); // Get touch points count +RLAPI float GetGestureHoldDuration(void); // Get gesture hold time in milliseconds +RLAPI Vector2 GetGestureDragVector(void); // Get gesture drag vector +RLAPI float GetGestureDragAngle(void); // Get gesture drag angle +RLAPI Vector2 GetGesturePinchVector(void); // Get gesture pinch delta +RLAPI float GetGesturePinchAngle(void); // Get gesture pinch angle + +//------------------------------------------------------------------------------------ +// Camera System Functions (Module: camera) +//------------------------------------------------------------------------------------ +RLAPI void SetCameraMode(Camera camera, int mode); // Set camera mode (multiple camera modes available) +RLAPI void UpdateCamera(Camera *camera); // Update camera position for selected mode + +RLAPI void SetCameraPanControl(int panKey); // Set camera pan key to combine with mouse movement (free camera) +RLAPI void SetCameraAltControl(int altKey); // Set camera alt key to combine with mouse movement (free camera) +RLAPI void SetCameraSmoothZoomControl(int szKey); // Set camera smooth zoom key to combine with mouse (free camera) +RLAPI void SetCameraMoveControls(int frontKey, int backKey, int rightKey, int leftKey, int upKey, int downKey); // Set camera move controls (1st person and 3rd person cameras) + +//------------------------------------------------------------------------------------ +// Basic Shapes Drawing Functions (Module: shapes) +//------------------------------------------------------------------------------------ + +// Basic shapes drawing functions +RLAPI void DrawPixel(int posX, int posY, Color color); // Draw a pixel +RLAPI void DrawPixelV(Vector2 position, Color color); // Draw a pixel (Vector version) +RLAPI void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw a line +RLAPI void DrawLineV(Vector2 startPos, Vector2 endPos, Color color); // Draw a line (Vector version) +RLAPI void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line defining thickness +RLAPI void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line using cubic-bezier curves in-out +RLAPI void DrawLineStrip(Vector2 *points, int numPoints, Color color); // Draw lines sequence +RLAPI void DrawCircle(int centerX, int centerY, float radius, Color color); // Draw a color-filled circle +RLAPI void DrawCircleSector(Vector2 center, float radius, int startAngle, int endAngle, int segments, Color color); // Draw a piece of a circle +RLAPI void DrawCircleSectorLines(Vector2 center, float radius, int startAngle, int endAngle, int segments, Color color); // Draw circle sector outline +RLAPI void DrawCircleGradient(int centerX, int centerY, float radius, Color color1, Color color2); // Draw a gradient-filled circle +RLAPI void DrawCircleV(Vector2 center, float radius, Color color); // Draw a color-filled circle (Vector version) +RLAPI void DrawCircleLines(int centerX, int centerY, float radius, Color color); // Draw circle outline +RLAPI void DrawEllipse(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse +RLAPI void DrawEllipseLines(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse outline +RLAPI void DrawRing(Vector2 center, float innerRadius, float outerRadius, int startAngle, int endAngle, int segments, Color color); // Draw ring +RLAPI void DrawRingLines(Vector2 center, float innerRadius, float outerRadius, int startAngle, int endAngle, int segments, Color color); // Draw ring outline +RLAPI void DrawRectangle(int posX, int posY, int width, int height, Color color); // Draw a color-filled rectangle +RLAPI void DrawRectangleV(Vector2 position, Vector2 size, Color color); // Draw a color-filled rectangle (Vector version) +RLAPI void DrawRectangleRec(Rectangle rec, Color color); // Draw a color-filled rectangle +RLAPI void DrawRectanglePro(Rectangle rec, Vector2 origin, float rotation, Color color); // Draw a color-filled rectangle with pro parameters +RLAPI void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2);// Draw a vertical-gradient-filled rectangle +RLAPI void DrawRectangleGradientH(int posX, int posY, int width, int height, Color color1, Color color2);// Draw a horizontal-gradient-filled rectangle +RLAPI void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // Draw a gradient-filled rectangle with custom vertex colors +RLAPI void DrawRectangleLines(int posX, int posY, int width, int height, Color color); // Draw rectangle outline +RLAPI void DrawRectangleLinesEx(Rectangle rec, int lineThick, Color color); // Draw rectangle outline with extended parameters +RLAPI void DrawRectangleRounded(Rectangle rec, float roundness, int segments, Color color); // Draw rectangle with rounded edges +RLAPI void DrawRectangleRoundedLines(Rectangle rec, float roundness, int segments, int lineThick, Color color); // Draw rectangle with rounded edges outline +RLAPI void DrawTriangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) +RLAPI void DrawTriangleLines(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw triangle outline (vertex in counter-clockwise order!) +RLAPI void DrawTriangleFan(Vector2 *points, int numPoints, Color color); // Draw a triangle fan defined by points (first vertex is the center) +RLAPI void DrawTriangleStrip(Vector2 *points, int pointsCount, Color color); // Draw a triangle strip defined by points +RLAPI void DrawPoly(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a regular polygon (Vector version) +RLAPI void DrawPolyLines(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a polygon outline of n sides + +RLAPI void SetShapesTexture(Texture2D texture, Rectangle source); // Define default texture used to draw shapes + +// Basic shapes collision detection functions +RLAPI bool CheckCollisionRecs(Rectangle rec1, Rectangle rec2); // Check collision between two rectangles +RLAPI bool CheckCollisionCircles(Vector2 center1, float radius1, Vector2 center2, float radius2); // Check collision between two circles +RLAPI bool CheckCollisionCircleRec(Vector2 center, float radius, Rectangle rec); // Check collision between circle and rectangle +RLAPI Rectangle GetCollisionRec(Rectangle rec1, Rectangle rec2); // Get collision rectangle for two rectangles collision +RLAPI bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle +RLAPI bool CheckCollisionPointCircle(Vector2 point, Vector2 center, float radius); // Check if point is inside circle +RLAPI bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3); // Check if point is inside a triangle + +//------------------------------------------------------------------------------------ +// Texture Loading and Drawing Functions (Module: textures) +//------------------------------------------------------------------------------------ + +// Image/Texture2D data loading/unloading/saving functions +RLAPI Image LoadImage(const char *fileName); // Load image from file into CPU memory (RAM) +RLAPI Image LoadImageEx(Color *pixels, int width, int height); // Load image from Color array data (RGBA - 32bit) +RLAPI Image LoadImagePro(void *data, int width, int height, int format); // Load image from raw data with parameters +RLAPI Image LoadImageRaw(const char *fileName, int width, int height, int format, int headerSize); // Load image from RAW file data +RLAPI void ExportImage(Image image, const char *fileName); // Export image data to file +RLAPI void ExportImageAsCode(Image image, const char *fileName); // Export image as code file defining an array of bytes +RLAPI Texture2D LoadTexture(const char *fileName); // Load texture from file into GPU memory (VRAM) +RLAPI Texture2D LoadTextureFromImage(Image image); // Load texture from image data +RLAPI TextureCubemap LoadTextureCubemap(Image image, int layoutType); // Load cubemap from image, multiple image cubemap layouts supported +RLAPI RenderTexture2D LoadRenderTexture(int width, int height); // Load texture for rendering (framebuffer) +RLAPI void UnloadImage(Image image); // Unload image from CPU memory (RAM) +RLAPI void UnloadTexture(Texture2D texture); // Unload texture from GPU memory (VRAM) +RLAPI void UnloadRenderTexture(RenderTexture2D target); // Unload render texture from GPU memory (VRAM) +RLAPI Color *GetImageData(Image image); // Get pixel data from image as a Color struct array +RLAPI Vector4 *GetImageDataNormalized(Image image); // Get pixel data from image as Vector4 array (float normalized) +RLAPI Rectangle GetImageAlphaBorder(Image image, float threshold); // Get image alpha border rectangle +RLAPI int GetPixelDataSize(int width, int height, int format); // Get pixel data size in bytes (image or texture) +RLAPI Image GetTextureData(Texture2D texture); // Get pixel data from GPU texture and return an Image +RLAPI Image GetScreenData(void); // Get pixel data from screen buffer and return an Image (screenshot) +RLAPI void UpdateTexture(Texture2D texture, const void *pixels); // Update GPU texture with new data + +// Image manipulation functions +RLAPI Image ImageCopy(Image image); // Create an image duplicate (useful for transformations) +RLAPI Image ImageFromImage(Image image, Rectangle rec); // Create an image from another image piece +RLAPI void ImageToPOT(Image *image, Color fillColor); // Convert image to POT (power-of-two) +RLAPI void ImageFormat(Image *image, int newFormat); // Convert image data to desired format +RLAPI void ImageAlphaMask(Image *image, Image alphaMask); // Apply alpha mask to image +RLAPI void ImageAlphaClear(Image *image, Color color, float threshold); // Clear alpha channel to desired color +RLAPI void ImageAlphaCrop(Image *image, float threshold); // Crop image depending on alpha value +RLAPI void ImageAlphaPremultiply(Image *image); // Premultiply alpha channel +RLAPI void ImageCrop(Image *image, Rectangle crop); // Crop an image to a defined rectangle +RLAPI void ImageResize(Image *image, int newWidth, int newHeight); // Resize image (Bicubic scaling algorithm) +RLAPI void ImageResizeNN(Image *image, int newWidth,int newHeight); // Resize image (Nearest-Neighbor scaling algorithm) +RLAPI void ImageResizeCanvas(Image *image, int newWidth, int newHeight, int offsetX, int offsetY, Color color); // Resize canvas and fill with color +RLAPI void ImageMipmaps(Image *image); // Generate all mipmap levels for a provided image +RLAPI void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp); // Dither image data to 16bpp or lower (Floyd-Steinberg dithering) +RLAPI Color *ImageExtractPalette(Image image, int maxPaletteSize, int *extractCount); // Extract color palette from image to maximum size (memory should be freed) +RLAPI Image ImageText(const char *text, int fontSize, Color color); // Create an image from text (default font) +RLAPI Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Color tint); // Create an image from text (custom sprite font) +RLAPI void ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color tint); // Draw a source image within a destination image (tint applied to source) +RLAPI void ImageDrawRectangle(Image *dst, Rectangle rec, Color color); // Draw rectangle within an image +RLAPI void ImageDrawRectangleLines(Image *dst, Rectangle rec, int thick, Color color); // Draw rectangle lines within an image +RLAPI void ImageDrawText(Image *dst, Vector2 position, const char *text, int fontSize, Color color); // Draw text (default font) within an image (destination) +RLAPI void ImageDrawTextEx(Image *dst, Vector2 position, Font font, const char *text, float fontSize, float spacing, Color color); // Draw text (custom sprite font) within an image (destination) +RLAPI void ImageFlipVertical(Image *image); // Flip image vertically +RLAPI void ImageFlipHorizontal(Image *image); // Flip image horizontally +RLAPI void ImageRotateCW(Image *image); // Rotate image clockwise 90deg +RLAPI void ImageRotateCCW(Image *image); // Rotate image counter-clockwise 90deg +RLAPI void ImageColorTint(Image *image, Color color); // Modify image color: tint +RLAPI void ImageColorInvert(Image *image); // Modify image color: invert +RLAPI void ImageColorGrayscale(Image *image); // Modify image color: grayscale +RLAPI void ImageColorContrast(Image *image, float contrast); // Modify image color: contrast (-100 to 100) +RLAPI void ImageColorBrightness(Image *image, int brightness); // Modify image color: brightness (-255 to 255) +RLAPI void ImageColorReplace(Image *image, Color color, Color replace); // Modify image color: replace color + +// Image generation functions +RLAPI Image GenImageColor(int width, int height, Color color); // Generate image: plain color +RLAPI Image GenImageGradientV(int width, int height, Color top, Color bottom); // Generate image: vertical gradient +RLAPI Image GenImageGradientH(int width, int height, Color left, Color right); // Generate image: horizontal gradient +RLAPI Image GenImageGradientRadial(int width, int height, float density, Color inner, Color outer); // Generate image: radial gradient +RLAPI Image GenImageChecked(int width, int height, int checksX, int checksY, Color col1, Color col2); // Generate image: checked +RLAPI Image GenImageWhiteNoise(int width, int height, float factor); // Generate image: white noise +RLAPI Image GenImagePerlinNoise(int width, int height, int offsetX, int offsetY, float scale); // Generate image: perlin noise +RLAPI Image GenImageCellular(int width, int height, int tileSize); // Generate image: cellular algorithm. Bigger tileSize means bigger cells + +// Texture2D configuration functions +RLAPI void GenTextureMipmaps(Texture2D *texture); // Generate GPU mipmaps for a texture +RLAPI void SetTextureFilter(Texture2D texture, int filterMode); // Set texture scaling filter mode +RLAPI void SetTextureWrap(Texture2D texture, int wrapMode); // Set texture wrapping mode + +// Texture2D drawing functions +RLAPI void DrawTexture(Texture2D texture, int posX, int posY, Color tint); // Draw a Texture2D +RLAPI void DrawTextureV(Texture2D texture, Vector2 position, Color tint); // Draw a Texture2D with position defined as Vector2 +RLAPI void DrawTextureEx(Texture2D texture, Vector2 position, float rotation, float scale, Color tint); // Draw a Texture2D with extended parameters +RLAPI void DrawTextureRec(Texture2D texture, Rectangle sourceRec, Vector2 position, Color tint); // Draw a part of a texture defined by a rectangle +RLAPI void DrawTextureQuad(Texture2D texture, Vector2 tiling, Vector2 offset, Rectangle quad, Color tint); // Draw texture quad with tiling and offset parameters +RLAPI void DrawTexturePro(Texture2D texture, Rectangle sourceRec, Rectangle destRec, Vector2 origin, float rotation, Color tint); // Draw a part of a texture defined by a rectangle with 'pro' parameters +RLAPI void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle destRec, Vector2 origin, float rotation, Color tint); // Draws a texture (or part of it) that stretches or shrinks nicely + +//------------------------------------------------------------------------------------ +// Font Loading and Text Drawing Functions (Module: text) +//------------------------------------------------------------------------------------ + +// Font loading/unloading functions +RLAPI Font GetFontDefault(void); // Get the default Font +RLAPI Font LoadFont(const char *fileName); // Load font from file into GPU memory (VRAM) +RLAPI Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int charsCount); // Load font from file with extended parameters +RLAPI Font LoadFontFromImage(Image image, Color key, int firstChar); // Load font from Image (XNA style) +RLAPI CharInfo *LoadFontData(const char *fileName, int fontSize, int *fontChars, int charsCount, int type); // Load font data for further use +RLAPI Image GenImageFontAtlas(const CharInfo *chars, Rectangle **recs, int charsCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info +RLAPI void UnloadFont(Font font); // Unload Font from GPU memory (VRAM) + +// Text drawing functions +RLAPI void DrawFPS(int posX, int posY); // Shows current FPS +RLAPI void DrawText(const char *text, int posX, int posY, int fontSize, Color color); // Draw text (using default font) +RLAPI void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // Draw text using font and additional parameters +RLAPI void DrawTextRec(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint); // Draw text using font inside rectangle limits +RLAPI void DrawTextRecEx(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint, + int selectStart, int selectLength, Color selectTint, Color selectBackTint); // Draw text using font inside rectangle limits with support for text selection +RLAPI void DrawTextCodepoint(Font font, int codepoint, Vector2 position, float scale, Color tint); // Draw one character (codepoint) + +// Text misc. functions +RLAPI int MeasureText(const char *text, int fontSize); // Measure string width for default font +RLAPI Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing); // Measure string size for Font +RLAPI int GetGlyphIndex(Font font, int codepoint); // Get index position for a unicode character on font + +// Text strings management functions (no utf8 strings, only byte chars) +// NOTE: Some strings allocate memory internally for returned strings, just be careful! +RLAPI int TextCopy(char *dst, const char *src); // Copy one string to another, returns bytes copied +RLAPI bool TextIsEqual(const char *text1, const char *text2); // Check if two text string are equal +RLAPI unsigned int TextLength(const char *text); // Get text length, checks for '\0' ending +RLAPI const char *TextFormat(const char *text, ...); // Text formatting with variables (sprintf style) +RLAPI const char *TextSubtext(const char *text, int position, int length); // Get a piece of a text string +RLAPI char *TextReplace(char *text, const char *replace, const char *by); // Replace text string (memory must be freed!) +RLAPI char *TextInsert(const char *text, const char *insert, int position); // Insert text in a position (memory must be freed!) +RLAPI const char *TextJoin(const char **textList, int count, const char *delimiter); // Join text strings with delimiter +RLAPI const char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings +RLAPI void TextAppend(char *text, const char *append, int *position); // Append text at specific position and move cursor! +RLAPI int TextFindIndex(const char *text, const char *find); // Find first text occurrence within a string +RLAPI const char *TextToUpper(const char *text); // Get upper case version of provided string +RLAPI const char *TextToLower(const char *text); // Get lower case version of provided string +RLAPI const char *TextToPascal(const char *text); // Get Pascal case notation version of provided string +RLAPI int TextToInteger(const char *text); // Get integer value from text (negative values not supported) +RLAPI char *TextToUtf8(int *codepoints, int length); // Encode text codepoint into utf8 text (memory must be freed!) + +// UTF8 text strings management functions +RLAPI int *GetCodepoints(const char *text, int *count); // Get all codepoints in a string, codepoints count returned by parameters +RLAPI int GetCodepointsCount(const char *text); // Get total number of characters (codepoints) in a UTF8 encoded string +RLAPI int GetNextCodepoint(const char *text, int *bytesProcessed); // Returns next codepoint in a UTF8 encoded string; 0x3f('?') is returned on failure +RLAPI const char *CodepointToUtf8(int codepoint, int *byteLength); // Encode codepoint into utf8 text (char array length returned as parameter) + +//------------------------------------------------------------------------------------ +// Basic 3d Shapes Drawing Functions (Module: models) +//------------------------------------------------------------------------------------ + +// Basic geometric 3D shapes drawing functions +RLAPI void DrawLine3D(Vector3 startPos, Vector3 endPos, Color color); // Draw a line in 3D world space +RLAPI void DrawPoint3D(Vector3 position, Color color); // Draw a point in 3D space, actually a small line +RLAPI void DrawCircle3D(Vector3 center, float radius, Vector3 rotationAxis, float rotationAngle, Color color); // Draw a circle in 3D world space +RLAPI void DrawCube(Vector3 position, float width, float height, float length, Color color); // Draw cube +RLAPI void DrawCubeV(Vector3 position, Vector3 size, Color color); // Draw cube (Vector version) +RLAPI void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); // Draw cube wires +RLAPI void DrawCubeWiresV(Vector3 position, Vector3 size, Color color); // Draw cube wires (Vector version) +RLAPI void DrawCubeTexture(Texture2D texture, Vector3 position, float width, float height, float length, Color color); // Draw cube textured +RLAPI void DrawSphere(Vector3 centerPos, float radius, Color color); // Draw sphere +RLAPI void DrawSphereEx(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere with extended parameters +RLAPI void DrawSphereWires(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere wires +RLAPI void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone +RLAPI void DrawCylinderWires(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone wires +RLAPI void DrawPlane(Vector3 centerPos, Vector2 size, Color color); // Draw a plane XZ +RLAPI void DrawRay(Ray ray, Color color); // Draw a ray line +RLAPI void DrawGrid(int slices, float spacing); // Draw a grid (centered at (0, 0, 0)) +RLAPI void DrawGizmo(Vector3 position); // Draw simple gizmo +//DrawTorus(), DrawTeapot() could be useful? + +//------------------------------------------------------------------------------------ +// Model 3d Loading and Drawing Functions (Module: models) +//------------------------------------------------------------------------------------ + +// Model loading/unloading functions +RLAPI Model LoadModel(const char *fileName); // Load model from files (meshes and materials) +RLAPI Model LoadModelFromMesh(Mesh mesh); // Load model from generated mesh (default material) +RLAPI void UnloadModel(Model model); // Unload model from memory (RAM and/or VRAM) + +// Mesh loading/unloading functions +RLAPI Mesh *LoadMeshes(const char *fileName, int *meshCount); // Load meshes from model file +RLAPI void ExportMesh(Mesh mesh, const char *fileName); // Export mesh data to file +RLAPI void UnloadMesh(Mesh mesh); // Unload mesh from memory (RAM and/or VRAM) + +// Material loading/unloading functions +RLAPI Material *LoadMaterials(const char *fileName, int *materialCount); // Load materials from model file +RLAPI Material LoadMaterialDefault(void); // Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) +RLAPI void UnloadMaterial(Material material); // Unload material from GPU memory (VRAM) +RLAPI void SetMaterialTexture(Material *material, int mapType, Texture2D texture); // Set texture for a material map type (MAP_DIFFUSE, MAP_SPECULAR...) +RLAPI void SetModelMeshMaterial(Model *model, int meshId, int materialId); // Set material for a mesh + +// Model animations loading/unloading functions +RLAPI ModelAnimation *LoadModelAnimations(const char *fileName, int *animsCount); // Load model animations from file +RLAPI void UpdateModelAnimation(Model model, ModelAnimation anim, int frame); // Update model animation pose +RLAPI void UnloadModelAnimation(ModelAnimation anim); // Unload animation data +RLAPI bool IsModelAnimationValid(Model model, ModelAnimation anim); // Check model animation skeleton match + +// Mesh generation functions +RLAPI Mesh GenMeshPoly(int sides, float radius); // Generate polygonal mesh +RLAPI Mesh GenMeshPlane(float width, float length, int resX, int resZ); // Generate plane mesh (with subdivisions) +RLAPI Mesh GenMeshCube(float width, float height, float length); // Generate cuboid mesh +RLAPI Mesh GenMeshSphere(float radius, int rings, int slices); // Generate sphere mesh (standard sphere) +RLAPI Mesh GenMeshHemiSphere(float radius, int rings, int slices); // Generate half-sphere mesh (no bottom cap) +RLAPI Mesh GenMeshCylinder(float radius, float height, int slices); // Generate cylinder mesh +RLAPI Mesh GenMeshTorus(float radius, float size, int radSeg, int sides); // Generate torus mesh +RLAPI Mesh GenMeshKnot(float radius, float size, int radSeg, int sides); // Generate trefoil knot mesh +RLAPI Mesh GenMeshHeightmap(Image heightmap, Vector3 size); // Generate heightmap mesh from image data +RLAPI Mesh GenMeshCubicmap(Image cubicmap, Vector3 cubeSize); // Generate cubes-based map mesh from image data + +// Mesh manipulation functions +RLAPI BoundingBox MeshBoundingBox(Mesh mesh); // Compute mesh bounding box limits +RLAPI void MeshTangents(Mesh *mesh); // Compute mesh tangents +RLAPI void MeshBinormals(Mesh *mesh); // Compute mesh binormals + +// Model drawing functions +RLAPI void DrawModel(Model model, Vector3 position, float scale, Color tint); // Draw a model (with texture if set) +RLAPI void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model with extended parameters +RLAPI void DrawModelWires(Model model, Vector3 position, float scale, Color tint); // Draw a model wires (with texture if set) +RLAPI void DrawModelWiresEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model wires (with texture if set) with extended parameters +RLAPI void DrawBoundingBox(BoundingBox box, Color color); // Draw bounding box (wires) +RLAPI void DrawBillboard(Camera camera, Texture2D texture, Vector3 center, float size, Color tint); // Draw a billboard texture +RLAPI void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle sourceRec, Vector3 center, float size, Color tint); // Draw a billboard texture defined by sourceRec + +// Collision detection functions +RLAPI bool CheckCollisionSpheres(Vector3 centerA, float radiusA, Vector3 centerB, float radiusB); // Detect collision between two spheres +RLAPI bool CheckCollisionBoxes(BoundingBox box1, BoundingBox box2); // Detect collision between two bounding boxes +RLAPI bool CheckCollisionBoxSphere(BoundingBox box, Vector3 center, float radius); // Detect collision between box and sphere +RLAPI bool CheckCollisionRaySphere(Ray ray, Vector3 center, float radius); // Detect collision between ray and sphere +RLAPI bool CheckCollisionRaySphereEx(Ray ray, Vector3 center, float radius, Vector3 *collisionPoint); // Detect collision between ray and sphere, returns collision point +RLAPI bool CheckCollisionRayBox(Ray ray, BoundingBox box); // Detect collision between ray and box +RLAPI RayHitInfo GetCollisionRayModel(Ray ray, Model model); // Get collision info between ray and model +RLAPI RayHitInfo GetCollisionRayTriangle(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3); // Get collision info between ray and triangle +RLAPI RayHitInfo GetCollisionRayGround(Ray ray, float groundHeight); // Get collision info between ray and ground plane (Y-normal plane) + +//------------------------------------------------------------------------------------ +// Shaders System Functions (Module: rlgl) +// NOTE: This functions are useless when using OpenGL 1.1 +//------------------------------------------------------------------------------------ + +// Shader loading/unloading functions +RLAPI char *LoadText(const char *fileName); // Load chars array from text file +RLAPI Shader LoadShader(const char *vsFileName, const char *fsFileName); // Load shader from files and bind default locations +RLAPI Shader LoadShaderCode(const char *vsCode, const char *fsCode); // Load shader from code strings and bind default locations +RLAPI void UnloadShader(Shader shader); // Unload shader from GPU memory (VRAM) + +RLAPI Shader GetShaderDefault(void); // Get default shader +RLAPI Texture2D GetTextureDefault(void); // Get default texture + +// Shader configuration functions +RLAPI int GetShaderLocation(Shader shader, const char *uniformName); // Get shader uniform location +RLAPI void SetShaderValue(Shader shader, int uniformLoc, const void *value, int uniformType); // Set shader uniform value +RLAPI void SetShaderValueV(Shader shader, int uniformLoc, const void *value, int uniformType, int count); // Set shader uniform value vector +RLAPI void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat); // Set shader uniform value (matrix 4x4) +RLAPI void SetShaderValueTexture(Shader shader, int uniformLoc, Texture2D texture); // Set shader uniform value for texture +RLAPI void SetMatrixProjection(Matrix proj); // Set a custom projection matrix (replaces internal projection matrix) +RLAPI void SetMatrixModelview(Matrix view); // Set a custom modelview matrix (replaces internal modelview matrix) +RLAPI Matrix GetMatrixModelview(void); // Get internal modelview matrix +RLAPI Matrix GetMatrixProjection(void); // Get internal projection matrix + +// Texture maps generation (PBR) +// NOTE: Required shaders should be provided +RLAPI Texture2D GenTextureCubemap(Shader shader, Texture2D map, int size); // Generate cubemap texture from 2D texture +RLAPI Texture2D GenTextureIrradiance(Shader shader, Texture2D cubemap, int size); // Generate irradiance texture using cubemap data +RLAPI Texture2D GenTexturePrefilter(Shader shader, Texture2D cubemap, int size); // Generate prefilter texture using cubemap data +RLAPI Texture2D GenTextureBRDF(Shader shader, int size); // Generate BRDF texture + +// Shading begin/end functions +RLAPI void BeginShaderMode(Shader shader); // Begin custom shader drawing +RLAPI void EndShaderMode(void); // End custom shader drawing (use default shader) +RLAPI void BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied) +RLAPI void EndBlendMode(void); // End blending mode (reset to default: alpha blending) + +// VR control functions +RLAPI void InitVrSimulator(void); // Init VR simulator for selected device parameters +RLAPI void CloseVrSimulator(void); // Close VR simulator for current device +RLAPI void UpdateVrTracking(Camera *camera); // Update VR tracking (position and orientation) and camera +RLAPI void SetVrConfiguration(VrDeviceInfo info, Shader distortion); // Set stereo rendering configuration parameters +RLAPI bool IsVrSimulatorReady(void); // Detect if VR simulator is ready +RLAPI void ToggleVrMode(void); // Enable/Disable VR experience +RLAPI void BeginVrDrawing(void); // Begin VR simulator stereo rendering +RLAPI void EndVrDrawing(void); // End VR simulator stereo rendering + +//------------------------------------------------------------------------------------ +// Audio Loading and Playing Functions (Module: audio) +//------------------------------------------------------------------------------------ + +// Audio device management functions +RLAPI void InitAudioDevice(void); // Initialize audio device and context +RLAPI void CloseAudioDevice(void); // Close the audio device and context +RLAPI bool IsAudioDeviceReady(void); // Check if audio device has been initialized successfully +RLAPI void SetMasterVolume(float volume); // Set master volume (listener) + +// Wave/Sound loading/unloading functions +RLAPI Wave LoadWave(const char *fileName); // Load wave data from file +RLAPI Sound LoadSound(const char *fileName); // Load sound from file +RLAPI Sound LoadSoundFromWave(Wave wave); // Load sound from wave data +RLAPI void UpdateSound(Sound sound, const void *data, int samplesCount);// Update sound buffer with new data +RLAPI void UnloadWave(Wave wave); // Unload wave data +RLAPI void UnloadSound(Sound sound); // Unload sound +RLAPI void ExportWave(Wave wave, const char *fileName); // Export wave data to file +RLAPI void ExportWaveAsCode(Wave wave, const char *fileName); // Export wave sample data to code (.h) + +// Wave/Sound management functions +RLAPI void PlaySound(Sound sound); // Play a sound +RLAPI void StopSound(Sound sound); // Stop playing a sound +RLAPI void PauseSound(Sound sound); // Pause a sound +RLAPI void ResumeSound(Sound sound); // Resume a paused sound +RLAPI void PlaySoundMulti(Sound sound); // Play a sound (using multichannel buffer pool) +RLAPI void StopSoundMulti(void); // Stop any sound playing (using multichannel buffer pool) +RLAPI int GetSoundsPlaying(void); // Get number of sounds playing in the multichannel +RLAPI bool IsSoundPlaying(Sound sound); // Check if a sound is currently playing +RLAPI void SetSoundVolume(Sound sound, float volume); // Set volume for a sound (1.0 is max level) +RLAPI void SetSoundPitch(Sound sound, float pitch); // Set pitch for a sound (1.0 is base level) +RLAPI void WaveFormat(Wave *wave, int sampleRate, int sampleSize, int channels); // Convert wave data to desired format +RLAPI Wave WaveCopy(Wave wave); // Copy a wave to a new wave +RLAPI void WaveCrop(Wave *wave, int initSample, int finalSample); // Crop a wave to defined samples range +RLAPI float *GetWaveData(Wave wave); // Get samples data from wave as a floats array + +// Music management functions +RLAPI Music LoadMusicStream(const char *fileName); // Load music stream from file +RLAPI void UnloadMusicStream(Music music); // Unload music stream +RLAPI void PlayMusicStream(Music music); // Start music playing +RLAPI void UpdateMusicStream(Music music); // Updates buffers for music streaming +RLAPI void StopMusicStream(Music music); // Stop music playing +RLAPI void PauseMusicStream(Music music); // Pause music playing +RLAPI void ResumeMusicStream(Music music); // Resume playing paused music +RLAPI bool IsMusicPlaying(Music music); // Check if music is playing +RLAPI void SetMusicVolume(Music music, float volume); // Set volume for music (1.0 is max level) +RLAPI void SetMusicPitch(Music music, float pitch); // Set pitch for a music (1.0 is base level) +RLAPI void SetMusicLoopCount(Music music, int count); // Set music loop count (loop repeats) +RLAPI float GetMusicTimeLength(Music music); // Get music time length (in seconds) +RLAPI float GetMusicTimePlayed(Music music); // Get current music time played (in seconds) + +// AudioStream management functions +RLAPI AudioStream InitAudioStream(unsigned int sampleRate, unsigned int sampleSize, unsigned int channels); // Init audio stream (to stream raw audio pcm data) +RLAPI void UpdateAudioStream(AudioStream stream, const void *data, int samplesCount); // Update audio stream buffers with data +RLAPI void CloseAudioStream(AudioStream stream); // Close audio stream and free memory +RLAPI bool IsAudioStreamProcessed(AudioStream stream); // Check if any audio stream buffers requires refill +RLAPI void PlayAudioStream(AudioStream stream); // Play audio stream +RLAPI void PauseAudioStream(AudioStream stream); // Pause audio stream +RLAPI void ResumeAudioStream(AudioStream stream); // Resume audio stream +RLAPI bool IsAudioStreamPlaying(AudioStream stream); // Check if audio stream is playing +RLAPI void StopAudioStream(AudioStream stream); // Stop audio stream +RLAPI void SetAudioStreamVolume(AudioStream stream, float volume); // Set volume for audio stream (1.0 is max level) +RLAPI void SetAudioStreamPitch(AudioStream stream, float pitch); // Set pitch for audio stream (1.0 is base level) + +//------------------------------------------------------------------------------------ +// Network (Module: network) +//------------------------------------------------------------------------------------ + +// IN PROGRESS: Check rnet.h for reference + +#if defined(__cplusplus) +} +#endif + +#endif // RAYLIB_H diff --git a/raylib/raylib.h.modified b/raylib/raylib.h.modified deleted file mode 100644 index 8c73cd6..0000000 --- a/raylib/raylib.h.modified +++ /dev/null @@ -1,1448 +0,0 @@ -/********************************************************************************************** -* -* raylib v5.5 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com) -* -* FEATURES: -* - NO external dependencies, all required libraries included with raylib -* - Multiplatform: Windows, Linux, FreeBSD, OpenBSD, NetBSD, DragonFly, -* MacOS, Haiku, Android, Raspberry Pi, DRM native, HTML5. -* - Written in plain C code (C99) in PascalCase/camelCase notation -* - Hardware accelerated with OpenGL (1.1, 2.1, 3.3, 4.3, ES2, ES3 - choose at compile) -* - Unique OpenGL abstraction layer (usable as standalone module): [rlgl] -* - Multiple Fonts formats supported (TTF, OTF, FNT, BDF, Sprite fonts) -* - Outstanding texture formats support, including compressed formats (DXT, ETC, ASTC) -* - Full 3d support for 3d Shapes, Models, Billboards, Heightmaps and more! -* - Flexible Materials system, supporting classic maps and PBR maps -* - Animated 3D models supported (skeletal bones animation) (IQM, M3D, GLTF) -* - Shaders support, including Model shaders and Postprocessing shaders -* - Powerful math module for Vector, Matrix and Quaternion operations: [raymath] -* - Audio loading and playing with streaming support (WAV, OGG, MP3, FLAC, QOA, XM, MOD) -* - VR stereo rendering with configurable HMD device parameters -* - Bindings to multiple programming languages available! -* -* NOTES: -* - One default Font is loaded on InitWindow()->LoadFontDefault() [core, text] -* - One default Texture2D is loaded on rlglInit(), 1x1 white pixel R8G8B8A8 [rlgl] (OpenGL 3.3 or ES2) -* - One default Shader is loaded on rlglInit()->rlLoadShaderDefault() [rlgl] (OpenGL 3.3 or ES2) -* - One default RenderBatch is loaded on rlglInit()->rlLoadRenderBatch() [rlgl] (OpenGL 3.3 or ES2) -* -* DEPENDENCIES (included): -* [rcore][GLFW] rglfw (Camilla Löwy - github.com/glfw/glfw) for window/context management and input -* [rcore][RGFW] rgfw (ColleagueRiley - github.com/ColleagueRiley/RGFW) for window/context management and input -* [rlgl] glad/glad_gles2 (David Herberth - github.com/Dav1dde/glad) for OpenGL 3.3 extensions loading -* [raudio] miniaudio (David Reid - github.com/mackron/miniaudio) for audio device/context management -* -* OPTIONAL DEPENDENCIES (included): -* [rcore] msf_gif (Miles Fogle) for GIF recording -* [rcore] sinfl (Micha Mettke) for DEFLATE decompression algorithm -* [rcore] sdefl (Micha Mettke) for DEFLATE compression algorithm -* [rcore] rprand (Ramon Snatamaria) for pseudo-random numbers generation -* [rtextures] qoi (Dominic Szablewski - https://phoboslab.org) for QOI image manage -* [rtextures] stb_image (Sean Barret) for images loading (BMP, TGA, PNG, JPEG, HDR...) -* [rtextures] stb_image_write (Sean Barret) for image writing (BMP, TGA, PNG, JPG) -* [rtextures] stb_image_resize2 (Sean Barret) for image resizing algorithms -* [rtextures] stb_perlin (Sean Barret) for Perlin Noise image generation -* [rtext] stb_truetype (Sean Barret) for ttf fonts loading -* [rtext] stb_rect_pack (Sean Barret) for rectangles packing -* [rmodels] par_shapes (Philip Rideout) for parametric 3d shapes generation -* [rmodels] tinyobj_loader_c (Syoyo Fujita) for models loading (OBJ, MTL) -* [rmodels] cgltf (Johannes Kuhlmann) for models loading (glTF) -* [rmodels] m3d (bzt) for models loading (M3D, https://bztsrc.gitlab.io/model3d) -* [rmodels] vox_loader (Johann Nadalutti) for models loading (VOX) -* [raudio] dr_wav (David Reid) for WAV audio file loading -* [raudio] dr_flac (David Reid) for FLAC audio file loading -* [raudio] dr_mp3 (David Reid) for MP3 audio file loading -* [raudio] stb_vorbis (Sean Barret) for OGG audio loading -* [raudio] jar_xm (Joshua Reisenauer) for XM audio module loading -* [raudio] jar_mod (Joshua Reisenauer) for MOD audio module loading -* [raudio] qoa (Dominic Szablewski - https://phoboslab.org) for QOA audio manage -* -* -* LICENSE: zlib/libpng -* -* raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software: -* -* Copyright (c) 2013-2024 Ramon Santamaria (@raysan5) -* -* This software is provided "as-is", without any express or implied warranty. In no event -* will the authors be held liable for any damages arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, including commercial -* applications, and to alter it and redistribute it freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not claim that you -* wrote the original software. If you use this software in a product, an acknowledgment -* in the product documentation would be appreciated but is not required. -* -* 2. Altered source versions must be plainly marked as such, and must not be misrepresented -* as being the original software. -* -* 3. This notice may not be removed or altered from any source distribution. -* -**********************************************************************************************/ -// Function specifiers in case library is build/used as a shared library -// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll -// NOTE: visibility("default") attribute makes symbols "visible" when compiled with -fvisibility=hidden -//---------------------------------------------------------------------------------- -// Some basic Defines -//---------------------------------------------------------------------------------- -// Allow custom memory allocators -// NOTE: Require recompiling raylib sources -// NOTE: MSVC C++ compiler does not support compound literals (C99 feature) -// Plain structures in C++ (without constructors) can be initialized with { } -// This is called aggregate initialization (C++11 feature) -// Some compilers (mostly macos clang) default to C++98, -// where aggregate initialization can't be used -// So, give a more clear error stating how to fix this -// NOTE: We set some defines with some data types declared by raylib -// Other modules (raymath, rlgl) also require some of those types, so, -// to be able to use those other modules as standalone (not depending on raylib) -// this defines are very useful for internal check and avoid type (re)definitions -// Some Basic Colors -// NOTE: Custom raylib color palette for amazing visuals on WHITE background -//---------------------------------------------------------------------------------- -// Structures Definition -//---------------------------------------------------------------------------------- -// Boolean type -// Vector2, 2 components -typedef struct Vector2 { - float x; // Vector x component - float y; // Vector y component -} Vector2; -// Vector3, 3 components -typedef struct Vector3 { - float x; // Vector x component - float y; // Vector y component - float z; // Vector z component -} Vector3; -// Vector4, 4 components -typedef struct Vector4 { - float x; // Vector x component - float y; // Vector y component - float z; // Vector z component - float w; // Vector w component -} Vector4; -// Quaternion, 4 components (Vector4 alias) -typedef Vector4 Quaternion; -// Matrix, 4x4 components, column major, OpenGL style, right-handed -typedef struct Matrix { - float m0, m4, m8, m12; // Matrix first row (4 components) - float m1, m5, m9, m13; // Matrix second row (4 components) - float m2, m6, m10, m14; // Matrix third row (4 components) - float m3, m7, m11, m15; // Matrix fourth row (4 components) -} Matrix; -// Color, 4 components, R8G8B8A8 (32bit) -typedef struct Color { - unsigned char r; // Color red value - unsigned char g; // Color green value - unsigned char b; // Color blue value - unsigned char a; // Color alpha value -} Color; -// Rectangle, 4 components -typedef struct Rectangle { - float x; // Rectangle top-left corner position x - float y; // Rectangle top-left corner position y - float width; // Rectangle width - float height; // Rectangle height -} Rectangle; -// Image, pixel data stored in CPU memory (RAM) -typedef struct Image { - void *data; // Image raw data - int width; // Image base width - int height; // Image base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) -} Image; -// Texture, tex data stored in GPU memory (VRAM) -typedef struct Texture { - unsigned int id; // OpenGL texture id - int width; // Texture base width - int height; // Texture base height - int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (PixelFormat type) -} Texture; -// Texture2D, same as Texture -typedef Texture Texture2D; -// TextureCubemap, same as Texture -typedef Texture TextureCubemap; -// RenderTexture, fbo for texture rendering -typedef struct RenderTexture { - unsigned int id; // OpenGL framebuffer object id - Texture texture; // Color buffer attachment texture - Texture depth; // Depth buffer attachment texture -} RenderTexture; -// RenderTexture2D, same as RenderTexture -typedef RenderTexture RenderTexture2D; -// NPatchInfo, n-patch layout info -typedef struct NPatchInfo { - Rectangle source; // Texture source rectangle - int left; // Left border offset - int top; // Top border offset - int right; // Right border offset - int bottom; // Bottom border offset - int layout; // Layout of the n-patch: 3x3, 1x3 or 3x1 -} NPatchInfo; -// GlyphInfo, font characters glyphs info -typedef struct GlyphInfo { - int value; // Character value (Unicode) - int offsetX; // Character offset X when drawing - int offsetY; // Character offset Y when drawing - int advanceX; // Character advance position X - Image image; // Character image data -} GlyphInfo; -// Font, font texture and GlyphInfo array data -typedef struct Font { - int baseSize; // Base size (default chars height) - int glyphCount; // Number of glyph characters - int glyphPadding; // Padding around the glyph characters - Texture2D texture; // Texture atlas containing the glyphs - Rectangle *recs; // Rectangles in texture for the glyphs - GlyphInfo *glyphs; // Glyphs info data -} Font; -// Camera, defines position/orientation in 3d space -typedef struct Camera3D { - Vector3 position; // Camera position - Vector3 target; // Camera target it looks-at - Vector3 up; // Camera up vector (rotation over its axis) - float fovy; // Camera field-of-view aperture in Y (degrees) in perspective, used as near plane width in orthographic - int projection; // Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC -} Camera3D; -typedef Camera3D Camera; // Camera type fallback, defaults to Camera3D -// Camera2D, defines position/orientation in 2d space -typedef struct Camera2D { - Vector2 offset; // Camera offset (displacement from target) - Vector2 target; // Camera target (rotation and zoom origin) - float rotation; // Camera rotation in degrees - float zoom; // Camera zoom (scaling), should be 1.0f by default -} Camera2D; -// Mesh, vertex data and vao/vbo -typedef struct Mesh { - int vertexCount; // Number of vertices stored in arrays - int triangleCount; // Number of triangles stored (indexed or not) - // Vertex attributes data - float *vertices; // Vertex position (XYZ - 3 components per vertex) (shader-location = 0) - float *texcoords; // Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) - float *texcoords2; // Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5) - float *normals; // Vertex normals (XYZ - 3 components per vertex) (shader-location = 2) - float *tangents; // Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4) - unsigned char *colors; // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3) - unsigned short *indices; // Vertex indices (in case vertex data comes indexed) - // Animation vertex data - float *animVertices; // Animated vertex positions (after bones transformations) - float *animNormals; // Animated normals (after bones transformations) - unsigned char *boneIds; // Vertex bone ids, max 255 bone ids, up to 4 bones influence by vertex (skinning) (shader-location = 6) - float *boneWeights; // Vertex bone weight, up to 4 bones influence by vertex (skinning) (shader-location = 7) - Matrix *boneMatrices; // Bones animated transformation matrices - int boneCount; // Number of bones - // OpenGL identifiers - unsigned int vaoId; // OpenGL Vertex Array Object id - unsigned int *vboId; // OpenGL Vertex Buffer Objects id (default vertex data) -} Mesh; -// Shader -typedef struct Shader { - unsigned int id; // Shader program id - int *locs; // Shader locations array (RL_MAX_SHADER_LOCATIONS) -} Shader; -// MaterialMap -typedef struct MaterialMap { - Texture2D texture; // Material map texture - Color color; // Material map color - float value; // Material map value -} MaterialMap; -// Material, includes shader and maps -typedef struct Material { - Shader shader; // Material shader - MaterialMap *maps; // Material maps array (MAX_MATERIAL_MAPS) - float params[4]; // Material generic parameters (if required) -} Material; -// Transform, vertex transformation data -typedef struct Transform { - Vector3 translation; // Translation - Quaternion rotation; // Rotation - Vector3 scale; // Scale -} Transform; -// Bone, skeletal animation bone -typedef struct BoneInfo { - char name[32]; // Bone name - int parent; // Bone parent -} BoneInfo; -// Model, meshes, materials and animation data -typedef struct Model { - Matrix transform; // Local transform matrix - int meshCount; // Number of meshes - int materialCount; // Number of materials - Mesh *meshes; // Meshes array - Material *materials; // Materials array - int *meshMaterial; // Mesh material number - // Animation data - int boneCount; // Number of bones - BoneInfo *bones; // Bones information (skeleton) - Transform *bindPose; // Bones base transformation (pose) -} Model; -// ModelAnimation -typedef struct ModelAnimation { - int boneCount; // Number of bones - int frameCount; // Number of animation frames - BoneInfo *bones; // Bones information (skeleton) - Transform **framePoses; // Poses array by frame - char name[32]; // Animation name -} ModelAnimation; -// Ray, ray for raycasting -typedef struct Ray { - Vector3 position; // Ray position (origin) - Vector3 direction; // Ray direction (normalized) -} Ray; -// RayCollision, ray hit information -typedef struct RayCollision { - bool hit; // Did the ray hit something? - float distance; // Distance to the nearest hit - Vector3 point; // Point of the nearest hit - Vector3 normal; // Surface normal of hit -} RayCollision; -// BoundingBox -typedef struct BoundingBox { - Vector3 min; // Minimum vertex box-corner - Vector3 max; // Maximum vertex box-corner -} BoundingBox; -// Wave, audio wave data -typedef struct Wave { - unsigned int frameCount; // Total number of frames (considering channels) - unsigned int sampleRate; // Frequency (samples per second) - unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) - unsigned int channels; // Number of channels (1-mono, 2-stereo, ...) - void *data; // Buffer data pointer -} Wave; -// Opaque structs declaration -// NOTE: Actual structs are defined internally in raudio module -typedef struct rAudioBuffer rAudioBuffer; -typedef struct rAudioProcessor rAudioProcessor; -// AudioStream, custom audio stream -typedef struct AudioStream { - rAudioBuffer *buffer; // Pointer to internal data used by the audio system - rAudioProcessor *processor; // Pointer to internal data processor, useful for audio effects - unsigned int sampleRate; // Frequency (samples per second) - unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) - unsigned int channels; // Number of channels (1-mono, 2-stereo, ...) -} AudioStream; -// Sound -typedef struct Sound { - AudioStream stream; // Audio stream - unsigned int frameCount; // Total number of frames (considering channels) -} Sound; -// Music, audio stream, anything longer than ~10 seconds should be streamed -typedef struct Music { - AudioStream stream; // Audio stream - unsigned int frameCount; // Total number of frames (considering channels) - bool looping; // Music looping enable - int ctxType; // Type of music context (audio filetype) - void *ctxData; // Audio context data, depends on type -} Music; -// VrDeviceInfo, Head-Mounted-Display device parameters -typedef struct VrDeviceInfo { - int hResolution; // Horizontal resolution in pixels - int vResolution; // Vertical resolution in pixels - float hScreenSize; // Horizontal size in meters - float vScreenSize; // Vertical size in meters - float eyeToScreenDistance; // Distance between eye and display in meters - float lensSeparationDistance; // Lens separation distance in meters - float interpupillaryDistance; // IPD (distance between pupils) in meters - float lensDistortionValues[4]; // Lens distortion constant parameters - float chromaAbCorrection[4]; // Chromatic aberration correction parameters -} VrDeviceInfo; -// VrStereoConfig, VR stereo rendering configuration for simulator -typedef struct VrStereoConfig { - Matrix projection[2]; // VR projection matrices (per eye) - Matrix viewOffset[2]; // VR view offset matrices (per eye) - float leftLensCenter[2]; // VR left lens center - float rightLensCenter[2]; // VR right lens center - float leftScreenCenter[2]; // VR left screen center - float rightScreenCenter[2]; // VR right screen center - float scale[2]; // VR distortion scale - float scaleIn[2]; // VR distortion scale in -} VrStereoConfig; -// File path list -typedef struct FilePathList { - unsigned int capacity; // Filepaths max entries - unsigned int count; // Filepaths entries count - char **paths; // Filepaths entries -} FilePathList; -// Automation event -typedef struct AutomationEvent { - unsigned int frame; // Event frame - unsigned int type; // Event type (AutomationEventType) - int params[4]; // Event parameters (if required) -} AutomationEvent; -// Automation event list -typedef struct AutomationEventList { - unsigned int capacity; // Events max entries (MAX_AUTOMATION_EVENTS) - unsigned int count; // Events entries count - AutomationEvent *events; // Events entries -} AutomationEventList; -//---------------------------------------------------------------------------------- -// Enumerators Definition -//---------------------------------------------------------------------------------- -// System/Window config flags -// NOTE: Every bit registers one state (use it with bit masks) -// By default all flags are set to 0 -typedef enum { - FLAG_VSYNC_HINT = 0x00000040, // Set to try enabling V-Sync on GPU - FLAG_FULLSCREEN_MODE = 0x00000002, // Set to run program in fullscreen - FLAG_WINDOW_RESIZABLE = 0x00000004, // Set to allow resizable window - FLAG_WINDOW_UNDECORATED = 0x00000008, // Set to disable window decoration (frame and buttons) - FLAG_WINDOW_HIDDEN = 0x00000080, // Set to hide window - FLAG_WINDOW_MINIMIZED = 0x00000200, // Set to minimize window (iconify) - FLAG_WINDOW_MAXIMIZED = 0x00000400, // Set to maximize window (expanded to monitor) - FLAG_WINDOW_UNFOCUSED = 0x00000800, // Set to window non focused - FLAG_WINDOW_TOPMOST = 0x00001000, // Set to window always on top - FLAG_WINDOW_ALWAYS_RUN = 0x00000100, // Set to allow windows running while minimized - FLAG_WINDOW_TRANSPARENT = 0x00000010, // Set to allow transparent framebuffer - FLAG_WINDOW_HIGHDPI = 0x00002000, // Set to support HighDPI - FLAG_WINDOW_MOUSE_PASSTHROUGH = 0x00004000, // Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED - FLAG_BORDERLESS_WINDOWED_MODE = 0x00008000, // Set to run program in borderless windowed mode - FLAG_MSAA_4X_HINT = 0x00000020, // Set to try enabling MSAA 4X - FLAG_INTERLACED_HINT = 0x00010000 // Set to try enabling interlaced video format (for V3D) -} ConfigFlags; -// Trace log level -// NOTE: Organized by priority level -typedef enum { - LOG_ALL = 0, // Display all logs - LOG_TRACE, // Trace logging, intended for internal use only - LOG_DEBUG, // Debug logging, used for internal debugging, it should be disabled on release builds - LOG_INFO, // Info logging, used for program execution info - LOG_WARNING, // Warning logging, used on recoverable failures - LOG_ERROR, // Error logging, used on unrecoverable failures - LOG_FATAL, // Fatal logging, used to abort program: exit(EXIT_FAILURE) - LOG_NONE // Disable logging -} TraceLogLevel; -// Keyboard keys (US keyboard layout) -// NOTE: Use GetKeyPressed() to allow redefining -// required keys for alternative layouts -typedef enum { - KEY_NULL = 0, // Key: NULL, used for no key pressed - // Alphanumeric keys - KEY_APOSTROPHE = 39, // Key: ' - KEY_COMMA = 44, // Key: , - KEY_MINUS = 45, // Key: - - KEY_PERIOD = 46, // Key: . - KEY_SLASH = 47, // Key: / - KEY_ZERO = 48, // Key: 0 - KEY_ONE = 49, // Key: 1 - KEY_TWO = 50, // Key: 2 - KEY_THREE = 51, // Key: 3 - KEY_FOUR = 52, // Key: 4 - KEY_FIVE = 53, // Key: 5 - KEY_SIX = 54, // Key: 6 - KEY_SEVEN = 55, // Key: 7 - KEY_EIGHT = 56, // Key: 8 - KEY_NINE = 57, // Key: 9 - KEY_SEMICOLON = 59, // Key: ; - KEY_EQUAL = 61, // Key: = - KEY_A = 65, // Key: A | a - KEY_B = 66, // Key: B | b - KEY_C = 67, // Key: C | c - KEY_D = 68, // Key: D | d - KEY_E = 69, // Key: E | e - KEY_F = 70, // Key: F | f - KEY_G = 71, // Key: G | g - KEY_H = 72, // Key: H | h - KEY_I = 73, // Key: I | i - KEY_J = 74, // Key: J | j - KEY_K = 75, // Key: K | k - KEY_L = 76, // Key: L | l - KEY_M = 77, // Key: M | m - KEY_N = 78, // Key: N | n - KEY_O = 79, // Key: O | o - KEY_P = 80, // Key: P | p - KEY_Q = 81, // Key: Q | q - KEY_R = 82, // Key: R | r - KEY_S = 83, // Key: S | s - KEY_T = 84, // Key: T | t - KEY_U = 85, // Key: U | u - KEY_V = 86, // Key: V | v - KEY_W = 87, // Key: W | w - KEY_X = 88, // Key: X | x - KEY_Y = 89, // Key: Y | y - KEY_Z = 90, // Key: Z | z - KEY_LEFT_BRACKET = 91, // Key: [ - KEY_BACKSLASH = 92, // Key: '\' - KEY_RIGHT_BRACKET = 93, // Key: ] - KEY_GRAVE = 96, // Key: ` - // Function keys - KEY_SPACE = 32, // Key: Space - KEY_ESCAPE = 256, // Key: Esc - KEY_ENTER = 257, // Key: Enter - KEY_TAB = 258, // Key: Tab - KEY_BACKSPACE = 259, // Key: Backspace - KEY_INSERT = 260, // Key: Ins - KEY_DELETE = 261, // Key: Del - KEY_RIGHT = 262, // Key: Cursor right - KEY_LEFT = 263, // Key: Cursor left - KEY_DOWN = 264, // Key: Cursor down - KEY_UP = 265, // Key: Cursor up - KEY_PAGE_UP = 266, // Key: Page up - KEY_PAGE_DOWN = 267, // Key: Page down - KEY_HOME = 268, // Key: Home - KEY_END = 269, // Key: End - KEY_CAPS_LOCK = 280, // Key: Caps lock - KEY_SCROLL_LOCK = 281, // Key: Scroll down - KEY_NUM_LOCK = 282, // Key: Num lock - KEY_PRINT_SCREEN = 283, // Key: Print screen - KEY_PAUSE = 284, // Key: Pause - KEY_F1 = 290, // Key: F1 - KEY_F2 = 291, // Key: F2 - KEY_F3 = 292, // Key: F3 - KEY_F4 = 293, // Key: F4 - KEY_F5 = 294, // Key: F5 - KEY_F6 = 295, // Key: F6 - KEY_F7 = 296, // Key: F7 - KEY_F8 = 297, // Key: F8 - KEY_F9 = 298, // Key: F9 - KEY_F10 = 299, // Key: F10 - KEY_F11 = 300, // Key: F11 - KEY_F12 = 301, // Key: F12 - KEY_LEFT_SHIFT = 340, // Key: Shift left - KEY_LEFT_CONTROL = 341, // Key: Control left - KEY_LEFT_ALT = 342, // Key: Alt left - KEY_LEFT_SUPER = 343, // Key: Super left - KEY_RIGHT_SHIFT = 344, // Key: Shift right - KEY_RIGHT_CONTROL = 345, // Key: Control right - KEY_RIGHT_ALT = 346, // Key: Alt right - KEY_RIGHT_SUPER = 347, // Key: Super right - KEY_KB_MENU = 348, // Key: KB menu - // Keypad keys - KEY_KP_0 = 320, // Key: Keypad 0 - KEY_KP_1 = 321, // Key: Keypad 1 - KEY_KP_2 = 322, // Key: Keypad 2 - KEY_KP_3 = 323, // Key: Keypad 3 - KEY_KP_4 = 324, // Key: Keypad 4 - KEY_KP_5 = 325, // Key: Keypad 5 - KEY_KP_6 = 326, // Key: Keypad 6 - KEY_KP_7 = 327, // Key: Keypad 7 - KEY_KP_8 = 328, // Key: Keypad 8 - KEY_KP_9 = 329, // Key: Keypad 9 - KEY_KP_DECIMAL = 330, // Key: Keypad . - KEY_KP_DIVIDE = 331, // Key: Keypad / - KEY_KP_MULTIPLY = 332, // Key: Keypad * - KEY_KP_SUBTRACT = 333, // Key: Keypad - - KEY_KP_ADD = 334, // Key: Keypad + - KEY_KP_ENTER = 335, // Key: Keypad Enter - KEY_KP_EQUAL = 336, // Key: Keypad = - // Android key buttons - KEY_BACK = 4, // Key: Android back button - KEY_MENU = 5, // Key: Android menu button - KEY_VOLUME_UP = 24, // Key: Android volume up button - KEY_VOLUME_DOWN = 25 // Key: Android volume down button -} KeyboardKey; -// Add backwards compatibility support for deprecated names -// Mouse buttons -typedef enum { - MOUSE_BUTTON_LEFT = 0, // Mouse button left - MOUSE_BUTTON_RIGHT = 1, // Mouse button right - MOUSE_BUTTON_MIDDLE = 2, // Mouse button middle (pressed wheel) - MOUSE_BUTTON_SIDE = 3, // Mouse button side (advanced mouse device) - MOUSE_BUTTON_EXTRA = 4, // Mouse button extra (advanced mouse device) - MOUSE_BUTTON_FORWARD = 5, // Mouse button forward (advanced mouse device) - MOUSE_BUTTON_BACK = 6, // Mouse button back (advanced mouse device) -} MouseButton; -// Mouse cursor -typedef enum { - MOUSE_CURSOR_DEFAULT = 0, // Default pointer shape - MOUSE_CURSOR_ARROW = 1, // Arrow shape - MOUSE_CURSOR_IBEAM = 2, // Text writing cursor shape - MOUSE_CURSOR_CROSSHAIR = 3, // Cross shape - MOUSE_CURSOR_POINTING_HAND = 4, // Pointing hand cursor - MOUSE_CURSOR_RESIZE_EW = 5, // Horizontal resize/move arrow shape - MOUSE_CURSOR_RESIZE_NS = 6, // Vertical resize/move arrow shape - MOUSE_CURSOR_RESIZE_NWSE = 7, // Top-left to bottom-right diagonal resize/move arrow shape - MOUSE_CURSOR_RESIZE_NESW = 8, // The top-right to bottom-left diagonal resize/move arrow shape - MOUSE_CURSOR_RESIZE_ALL = 9, // The omnidirectional resize/move cursor shape - MOUSE_CURSOR_NOT_ALLOWED = 10 // The operation-not-allowed shape -} MouseCursor; -// Gamepad buttons -typedef enum { - GAMEPAD_BUTTON_UNKNOWN = 0, // Unknown button, just for error checking - GAMEPAD_BUTTON_LEFT_FACE_UP, // Gamepad left DPAD up button - GAMEPAD_BUTTON_LEFT_FACE_RIGHT, // Gamepad left DPAD right button - GAMEPAD_BUTTON_LEFT_FACE_DOWN, // Gamepad left DPAD down button - GAMEPAD_BUTTON_LEFT_FACE_LEFT, // Gamepad left DPAD left button - GAMEPAD_BUTTON_RIGHT_FACE_UP, // Gamepad right button up (i.e. PS3: Triangle, Xbox: Y) - GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, // Gamepad right button right (i.e. PS3: Circle, Xbox: B) - GAMEPAD_BUTTON_RIGHT_FACE_DOWN, // Gamepad right button down (i.e. PS3: Cross, Xbox: A) - GAMEPAD_BUTTON_RIGHT_FACE_LEFT, // Gamepad right button left (i.e. PS3: Square, Xbox: X) - GAMEPAD_BUTTON_LEFT_TRIGGER_1, // Gamepad top/back trigger left (first), it could be a trailing button - GAMEPAD_BUTTON_LEFT_TRIGGER_2, // Gamepad top/back trigger left (second), it could be a trailing button - GAMEPAD_BUTTON_RIGHT_TRIGGER_1, // Gamepad top/back trigger right (first), it could be a trailing button - GAMEPAD_BUTTON_RIGHT_TRIGGER_2, // Gamepad top/back trigger right (second), it could be a trailing button - GAMEPAD_BUTTON_MIDDLE_LEFT, // Gamepad center buttons, left one (i.e. PS3: Select) - GAMEPAD_BUTTON_MIDDLE, // Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX) - GAMEPAD_BUTTON_MIDDLE_RIGHT, // Gamepad center buttons, right one (i.e. PS3: Start) - GAMEPAD_BUTTON_LEFT_THUMB, // Gamepad joystick pressed button left - GAMEPAD_BUTTON_RIGHT_THUMB // Gamepad joystick pressed button right -} GamepadButton; -// Gamepad axis -typedef enum { - GAMEPAD_AXIS_LEFT_X = 0, // Gamepad left stick X axis - GAMEPAD_AXIS_LEFT_Y = 1, // Gamepad left stick Y axis - GAMEPAD_AXIS_RIGHT_X = 2, // Gamepad right stick X axis - GAMEPAD_AXIS_RIGHT_Y = 3, // Gamepad right stick Y axis - GAMEPAD_AXIS_LEFT_TRIGGER = 4, // Gamepad back trigger left, pressure level: [1..-1] - GAMEPAD_AXIS_RIGHT_TRIGGER = 5 // Gamepad back trigger right, pressure level: [1..-1] -} GamepadAxis; -// Material map index -typedef enum { - MATERIAL_MAP_ALBEDO = 0, // Albedo material (same as: MATERIAL_MAP_DIFFUSE) - MATERIAL_MAP_METALNESS, // Metalness material (same as: MATERIAL_MAP_SPECULAR) - MATERIAL_MAP_NORMAL, // Normal material - MATERIAL_MAP_ROUGHNESS, // Roughness material - MATERIAL_MAP_OCCLUSION, // Ambient occlusion material - MATERIAL_MAP_EMISSION, // Emission material - MATERIAL_MAP_HEIGHT, // Heightmap material - MATERIAL_MAP_CUBEMAP, // Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP) - MATERIAL_MAP_IRRADIANCE, // Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP) - MATERIAL_MAP_PREFILTER, // Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP) - MATERIAL_MAP_BRDF // Brdf material -} MaterialMapIndex; -// Shader location index -typedef enum { - SHADER_LOC_VERTEX_POSITION = 0, // Shader location: vertex attribute: position - SHADER_LOC_VERTEX_TEXCOORD01, // Shader location: vertex attribute: texcoord01 - SHADER_LOC_VERTEX_TEXCOORD02, // Shader location: vertex attribute: texcoord02 - SHADER_LOC_VERTEX_NORMAL, // Shader location: vertex attribute: normal - SHADER_LOC_VERTEX_TANGENT, // Shader location: vertex attribute: tangent - SHADER_LOC_VERTEX_COLOR, // Shader location: vertex attribute: color - SHADER_LOC_MATRIX_MVP, // Shader location: matrix uniform: model-view-projection - SHADER_LOC_MATRIX_VIEW, // Shader location: matrix uniform: view (camera transform) - SHADER_LOC_MATRIX_PROJECTION, // Shader location: matrix uniform: projection - SHADER_LOC_MATRIX_MODEL, // Shader location: matrix uniform: model (transform) - SHADER_LOC_MATRIX_NORMAL, // Shader location: matrix uniform: normal - SHADER_LOC_VECTOR_VIEW, // Shader location: vector uniform: view - SHADER_LOC_COLOR_DIFFUSE, // Shader location: vector uniform: diffuse color - SHADER_LOC_COLOR_SPECULAR, // Shader location: vector uniform: specular color - SHADER_LOC_COLOR_AMBIENT, // Shader location: vector uniform: ambient color - SHADER_LOC_MAP_ALBEDO, // Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE) - SHADER_LOC_MAP_METALNESS, // Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR) - SHADER_LOC_MAP_NORMAL, // Shader location: sampler2d texture: normal - SHADER_LOC_MAP_ROUGHNESS, // Shader location: sampler2d texture: roughness - SHADER_LOC_MAP_OCCLUSION, // Shader location: sampler2d texture: occlusion - SHADER_LOC_MAP_EMISSION, // Shader location: sampler2d texture: emission - SHADER_LOC_MAP_HEIGHT, // Shader location: sampler2d texture: height - SHADER_LOC_MAP_CUBEMAP, // Shader location: samplerCube texture: cubemap - SHADER_LOC_MAP_IRRADIANCE, // Shader location: samplerCube texture: irradiance - SHADER_LOC_MAP_PREFILTER, // Shader location: samplerCube texture: prefilter - SHADER_LOC_MAP_BRDF, // Shader location: sampler2d texture: brdf - SHADER_LOC_VERTEX_BONEIDS, // Shader location: vertex attribute: boneIds - SHADER_LOC_VERTEX_BONEWEIGHTS, // Shader location: vertex attribute: boneWeights - SHADER_LOC_BONE_MATRICES // Shader location: array of matrices uniform: boneMatrices -} ShaderLocationIndex; -// Shader uniform data type -typedef enum { - SHADER_UNIFORM_FLOAT = 0, // Shader uniform type: float - SHADER_UNIFORM_VEC2, // Shader uniform type: vec2 (2 float) - SHADER_UNIFORM_VEC3, // Shader uniform type: vec3 (3 float) - SHADER_UNIFORM_VEC4, // Shader uniform type: vec4 (4 float) - SHADER_UNIFORM_INT, // Shader uniform type: int - SHADER_UNIFORM_IVEC2, // Shader uniform type: ivec2 (2 int) - SHADER_UNIFORM_IVEC3, // Shader uniform type: ivec3 (3 int) - SHADER_UNIFORM_IVEC4, // Shader uniform type: ivec4 (4 int) - SHADER_UNIFORM_SAMPLER2D // Shader uniform type: sampler2d -} ShaderUniformDataType; -// Shader attribute data types -typedef enum { - SHADER_ATTRIB_FLOAT = 0, // Shader attribute type: float - SHADER_ATTRIB_VEC2, // Shader attribute type: vec2 (2 float) - SHADER_ATTRIB_VEC3, // Shader attribute type: vec3 (3 float) - SHADER_ATTRIB_VEC4 // Shader attribute type: vec4 (4 float) -} ShaderAttributeDataType; -// Pixel formats -// NOTE: Support depends on OpenGL version and platform -typedef enum { - PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) - PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) - PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp - PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp - PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) - PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) - PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp - PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) - PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) - PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) - PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) - PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) - PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) - PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) - PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) - PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp - PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp - PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp - PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp - PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp - PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp - PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp - PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp - PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp -} PixelFormat; -// Texture parameters: filter mode -// NOTE 1: Filtering considers mipmaps if available in the texture -// NOTE 2: Filter is accordingly set for minification and magnification -typedef enum { - TEXTURE_FILTER_POINT = 0, // No filter, just pixel approximation - TEXTURE_FILTER_BILINEAR, // Linear filtering - TEXTURE_FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) - TEXTURE_FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x - TEXTURE_FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x - TEXTURE_FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x -} TextureFilter; -// Texture parameters: wrap mode -typedef enum { - TEXTURE_WRAP_REPEAT = 0, // Repeats texture in tiled mode - TEXTURE_WRAP_CLAMP, // Clamps texture to edge pixel in tiled mode - TEXTURE_WRAP_MIRROR_REPEAT, // Mirrors and repeats the texture in tiled mode - TEXTURE_WRAP_MIRROR_CLAMP // Mirrors and clamps to border the texture in tiled mode -} TextureWrap; -// Cubemap layouts -typedef enum { - CUBEMAP_LAYOUT_AUTO_DETECT = 0, // Automatically detect layout type - CUBEMAP_LAYOUT_LINE_VERTICAL, // Layout is defined by a vertical line with faces - CUBEMAP_LAYOUT_LINE_HORIZONTAL, // Layout is defined by a horizontal line with faces - CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR, // Layout is defined by a 3x4 cross with cubemap faces - CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE // Layout is defined by a 4x3 cross with cubemap faces -} CubemapLayout; -// Font type, defines generation method -typedef enum { - FONT_DEFAULT = 0, // Default font generation, anti-aliased - FONT_BITMAP, // Bitmap font generation, no anti-aliasing - FONT_SDF // SDF font generation, requires external shader -} FontType; -// Color blending modes (pre-defined) -typedef enum { - BLEND_ALPHA = 0, // Blend textures considering alpha (default) - BLEND_ADDITIVE, // Blend textures adding colors - BLEND_MULTIPLIED, // Blend textures multiplying colors - BLEND_ADD_COLORS, // Blend textures adding colors (alternative) - BLEND_SUBTRACT_COLORS, // Blend textures subtracting colors (alternative) - BLEND_ALPHA_PREMULTIPLY, // Blend premultiplied textures considering alpha - BLEND_CUSTOM, // Blend textures using custom src/dst factors (use rlSetBlendFactors()) - BLEND_CUSTOM_SEPARATE // Blend textures using custom rgb/alpha separate src/dst factors (use rlSetBlendFactorsSeparate()) -} BlendMode; -// Gesture -// NOTE: Provided as bit-wise flags to enable only desired gestures -typedef enum { - GESTURE_NONE = 0, // No gesture - GESTURE_TAP = 1, // Tap gesture - GESTURE_DOUBLETAP = 2, // Double tap gesture - GESTURE_HOLD = 4, // Hold gesture - GESTURE_DRAG = 8, // Drag gesture - GESTURE_SWIPE_RIGHT = 16, // Swipe right gesture - GESTURE_SWIPE_LEFT = 32, // Swipe left gesture - GESTURE_SWIPE_UP = 64, // Swipe up gesture - GESTURE_SWIPE_DOWN = 128, // Swipe down gesture - GESTURE_PINCH_IN = 256, // Pinch in gesture - GESTURE_PINCH_OUT = 512 // Pinch out gesture -} Gesture; -// Camera system modes -typedef enum { - CAMERA_CUSTOM = 0, // Camera custom, controlled by user (UpdateCamera() does nothing) - CAMERA_FREE, // Camera free mode - CAMERA_ORBITAL, // Camera orbital, around target, zoom supported - CAMERA_FIRST_PERSON, // Camera first person - CAMERA_THIRD_PERSON // Camera third person -} CameraMode; -// Camera projection -typedef enum { - CAMERA_PERSPECTIVE = 0, // Perspective projection - CAMERA_ORTHOGRAPHIC // Orthographic projection -} CameraProjection; -// N-patch layout -typedef enum { - NPATCH_NINE_PATCH = 0, // Npatch layout: 3x3 tiles - NPATCH_THREE_PATCH_VERTICAL, // Npatch layout: 1x3 tiles - NPATCH_THREE_PATCH_HORIZONTAL // Npatch layout: 3x1 tiles -} NPatchLayout; -// Callbacks to hook some internal functions -// WARNING: These callbacks are intended for advanced users -typedef void (*TraceLogCallback)(int logLevel, const char *text, void * args); // Logging: Redirect trace log messages -typedef unsigned char *(*LoadFileDataCallback)(const char *fileName, int *dataSize); // FileIO: Load binary data -typedef bool (*SaveFileDataCallback)(const char *fileName, void *data, int dataSize); // FileIO: Save binary data -typedef char *(*LoadFileTextCallback)(const char *fileName); // FileIO: Load text data -typedef bool (*SaveFileTextCallback)(const char *fileName, char *text); // FileIO: Save text data -//------------------------------------------------------------------------------------ -// Global Variables Definition -//------------------------------------------------------------------------------------ -// It's lonely here... -//------------------------------------------------------------------------------------ -// Window and Graphics Device Functions (Module: core) -//------------------------------------------------------------------------------------ -// Window-related functions - void InitWindow(int width, int height, const char *title); // Initialize window and OpenGL context - void CloseWindow(void); // Close window and unload OpenGL context - bool WindowShouldClose(void); // Check if application should close (KEY_ESCAPE pressed or windows close icon clicked) - bool IsWindowReady(void); // Check if window has been initialized successfully - bool IsWindowFullscreen(void); // Check if window is currently fullscreen - bool IsWindowHidden(void); // Check if window is currently hidden - bool IsWindowMinimized(void); // Check if window is currently minimized - bool IsWindowMaximized(void); // Check if window is currently maximized - bool IsWindowFocused(void); // Check if window is currently focused - bool IsWindowResized(void); // Check if window has been resized last frame - bool IsWindowState(unsigned int flag); // Check if one specific window flag is enabled - void SetWindowState(unsigned int flags); // Set window configuration state using flags - void ClearWindowState(unsigned int flags); // Clear window configuration state flags - void ToggleFullscreen(void); // Toggle window state: fullscreen/windowed, resizes monitor to match window resolution - void ToggleBorderlessWindowed(void); // Toggle window state: borderless windowed, resizes window to match monitor resolution - void MaximizeWindow(void); // Set window state: maximized, if resizable - void MinimizeWindow(void); // Set window state: minimized, if resizable - void RestoreWindow(void); // Set window state: not minimized/maximized - void SetWindowIcon(Image image); // Set icon for window (single image, RGBA 32bit) - void SetWindowIcons(Image *images, int count); // Set icon for window (multiple images, RGBA 32bit) - void SetWindowTitle(const char *title); // Set title for window - void SetWindowPosition(int x, int y); // Set window position on screen - void SetWindowMonitor(int monitor); // Set monitor for the current window - void SetWindowMinSize(int width, int height); // Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE) - void SetWindowMaxSize(int width, int height); // Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE) - void SetWindowSize(int width, int height); // Set window dimensions - void SetWindowOpacity(float opacity); // Set window opacity [0.0f..1.0f] - void SetWindowFocused(void); // Set window focused - void *GetWindowHandle(void); // Get native window handle - int GetScreenWidth(void); // Get current screen width - int GetScreenHeight(void); // Get current screen height - int GetRenderWidth(void); // Get current render width (it considers HiDPI) - int GetRenderHeight(void); // Get current render height (it considers HiDPI) - int GetMonitorCount(void); // Get number of connected monitors - int GetCurrentMonitor(void); // Get current monitor where window is placed - Vector2 GetMonitorPosition(int monitor); // Get specified monitor position - int GetMonitorWidth(int monitor); // Get specified monitor width (current video mode used by monitor) - int GetMonitorHeight(int monitor); // Get specified monitor height (current video mode used by monitor) - int GetMonitorPhysicalWidth(int monitor); // Get specified monitor physical width in millimetres - int GetMonitorPhysicalHeight(int monitor); // Get specified monitor physical height in millimetres - int GetMonitorRefreshRate(int monitor); // Get specified monitor refresh rate - Vector2 GetWindowPosition(void); // Get window position XY on monitor - Vector2 GetWindowScaleDPI(void); // Get window scale DPI factor - const char *GetMonitorName(int monitor); // Get the human-readable, UTF-8 encoded name of the specified monitor - void SetClipboardText(const char *text); // Set clipboard text content - const char *GetClipboardText(void); // Get clipboard text content - Image GetClipboardImage(void); // Get clipboard image content - void EnableEventWaiting(void); // Enable waiting for events on EndDrawing(), no automatic event polling - void DisableEventWaiting(void); // Disable waiting for events on EndDrawing(), automatic events polling -// Cursor-related functions - void ShowCursor(void); // Shows cursor - void HideCursor(void); // Hides cursor - bool IsCursorHidden(void); // Check if cursor is not visible - void EnableCursor(void); // Enables cursor (unlock cursor) - void DisableCursor(void); // Disables cursor (lock cursor) - bool IsCursorOnScreen(void); // Check if cursor is on the screen -// Drawing-related functions - void ClearBackground(Color color); // Set background color (framebuffer clear color) - void BeginDrawing(void); // Setup canvas (framebuffer) to start drawing - void EndDrawing(void); // End canvas drawing and swap buffers (double buffering) - void BeginMode2D(Camera2D camera); // Begin 2D mode with custom camera (2D) - void EndMode2D(void); // Ends 2D mode with custom camera - void BeginMode3D(Camera3D camera); // Begin 3D mode with custom camera (3D) - void EndMode3D(void); // Ends 3D mode and returns to default 2D orthographic mode - void BeginTextureMode(RenderTexture2D target); // Begin drawing to render texture - void EndTextureMode(void); // Ends drawing to render texture - void BeginShaderMode(Shader shader); // Begin custom shader drawing - void EndShaderMode(void); // End custom shader drawing (use default shader) - void BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied, subtract, custom) - void EndBlendMode(void); // End blending mode (reset to default: alpha blending) - void BeginScissorMode(int x, int y, int width, int height); // Begin scissor mode (define screen area for following drawing) - void EndScissorMode(void); // End scissor mode - void BeginVrStereoMode(VrStereoConfig config); // Begin stereo rendering (requires VR simulator) - void EndVrStereoMode(void); // End stereo rendering (requires VR simulator) -// VR stereo config functions for VR simulator - VrStereoConfig LoadVrStereoConfig(VrDeviceInfo device); // Load VR stereo config for VR simulator device parameters - void UnloadVrStereoConfig(VrStereoConfig config); // Unload VR stereo config -// Shader management functions -// NOTE: Shader functionality is not available on OpenGL 1.1 - Shader LoadShader(const char *vsFileName, const char *fsFileName); // Load shader from files and bind default locations - Shader LoadShaderFromMemory(const char *vsCode, const char *fsCode); // Load shader from code strings and bind default locations - bool IsShaderValid(Shader shader); // Check if a shader is valid (loaded on GPU) - int GetShaderLocation(Shader shader, const char *uniformName); // Get shader uniform location - int GetShaderLocationAttrib(Shader shader, const char *attribName); // Get shader attribute location - void SetShaderValue(Shader shader, int locIndex, const void *value, int uniformType); // Set shader uniform value - void SetShaderValueV(Shader shader, int locIndex, const void *value, int uniformType, int count); // Set shader uniform value vector - void SetShaderValueMatrix(Shader shader, int locIndex, Matrix mat); // Set shader uniform value (matrix 4x4) - void SetShaderValueTexture(Shader shader, int locIndex, Texture2D texture); // Set shader uniform value for texture (sampler2d) - void UnloadShader(Shader shader); // Unload shader from GPU memory (VRAM) -// Screen-space-related functions - Ray GetScreenToWorldRay(Vector2 position, Camera camera); // Get a ray trace from screen position (i.e mouse) - Ray GetScreenToWorldRayEx(Vector2 position, Camera camera, int width, int height); // Get a ray trace from screen position (i.e mouse) in a viewport - Vector2 GetWorldToScreen(Vector3 position, Camera camera); // Get the screen space position for a 3d world space position - Vector2 GetWorldToScreenEx(Vector3 position, Camera camera, int width, int height); // Get size position for a 3d world space position - Vector2 GetWorldToScreen2D(Vector2 position, Camera2D camera); // Get the screen space position for a 2d camera world space position - Vector2 GetScreenToWorld2D(Vector2 position, Camera2D camera); // Get the world space position for a 2d camera screen space position - Matrix GetCameraMatrix(Camera camera); // Get camera transform matrix (view matrix) - Matrix GetCameraMatrix2D(Camera2D camera); // Get camera 2d transform matrix -// Timing-related functions - void SetTargetFPS(int fps); // Set target FPS (maximum) - float GetFrameTime(void); // Get time in seconds for last frame drawn (delta time) - double GetTime(void); // Get elapsed time in seconds since InitWindow() - int GetFPS(void); // Get current FPS -// Custom frame control functions -// NOTE: Those functions are intended for advanced users that want full control over the frame processing -// By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timing + PollInputEvents() -// To avoid that behaviour and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL - void SwapScreenBuffer(void); // Swap back buffer with front buffer (screen drawing) - void PollInputEvents(void); // Register all input events - void WaitTime(double seconds); // Wait for some time (halt program execution) -// Random values generation functions - void SetRandomSeed(unsigned int seed); // Set the seed for the random number generator - int GetRandomValue(int min, int max); // Get a random value between min and max (both included) - int *LoadRandomSequence(unsigned int count, int min, int max); // Load random values sequence, no values repeated - void UnloadRandomSequence(int *sequence); // Unload random values sequence -// Misc. functions - void TakeScreenshot(const char *fileName); // Takes a screenshot of current screen (filename extension defines format) - void SetConfigFlags(unsigned int flags); // Setup init configuration flags (view FLAGS) - void OpenURL(const char *url); // Open URL with default system browser (if available) -// NOTE: Following functions implemented in module [utils] -//------------------------------------------------------------------ - void TraceLog(int logLevel, const char *text, ...); // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...) - void SetTraceLogLevel(int logLevel); // Set the current threshold (minimum) log level - void *MemAlloc(unsigned int size); // Internal memory allocator - void *MemRealloc(void *ptr, unsigned int size); // Internal memory reallocator - void MemFree(void *ptr); // Internal memory free -// Set custom callbacks -// WARNING: Callbacks setup is intended for advanced users - void SetTraceLogCallback(TraceLogCallback callback); // Set custom trace log - void SetLoadFileDataCallback(LoadFileDataCallback callback); // Set custom file binary data loader - void SetSaveFileDataCallback(SaveFileDataCallback callback); // Set custom file binary data saver - void SetLoadFileTextCallback(LoadFileTextCallback callback); // Set custom file text data loader - void SetSaveFileTextCallback(SaveFileTextCallback callback); // Set custom file text data saver -// Files management functions - unsigned char *LoadFileData(const char *fileName, int *dataSize); // Load file data as byte array (read) - void UnloadFileData(unsigned char *data); // Unload file data allocated by LoadFileData() - bool SaveFileData(const char *fileName, void *data, int dataSize); // Save data to file from byte array (write), returns true on success - bool ExportDataAsCode(const unsigned char *data, int dataSize, const char *fileName); // Export data to code (.h), returns true on success - char *LoadFileText(const char *fileName); // Load text data from file (read), returns a '\0' terminated string - void UnloadFileText(char *text); // Unload file text data allocated by LoadFileText() - bool SaveFileText(const char *fileName, char *text); // Save text data to file (write), string must be '\0' terminated, returns true on success -//------------------------------------------------------------------ -// File system functions - bool FileExists(const char *fileName); // Check if file exists - bool DirectoryExists(const char *dirPath); // Check if a directory path exists - bool IsFileExtension(const char *fileName, const char *ext); // Check file extension (including point: .png, .wav) - int GetFileLength(const char *fileName); // Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h) - const char *GetFileExtension(const char *fileName); // Get pointer to extension for a filename string (includes dot: '.png') - const char *GetFileName(const char *filePath); // Get pointer to filename for a path string - const char *GetFileNameWithoutExt(const char *filePath); // Get filename string without extension (uses static string) - const char *GetDirectoryPath(const char *filePath); // Get full path for a given fileName with path (uses static string) - const char *GetPrevDirectoryPath(const char *dirPath); // Get previous directory path for a given path (uses static string) - const char *GetWorkingDirectory(void); // Get current working directory (uses static string) - const char *GetApplicationDirectory(void); // Get the directory of the running application (uses static string) - int MakeDirectory(const char *dirPath); // Create directories (including full path requested), returns 0 on success - bool ChangeDirectory(const char *dir); // Change working directory, return true on success - bool IsPathFile(const char *path); // Check if a given path is a file or a directory - bool IsFileNameValid(const char *fileName); // Check if fileName is valid for the platform/OS - FilePathList LoadDirectoryFiles(const char *dirPath); // Load directory filepaths - FilePathList LoadDirectoryFilesEx(const char *basePath, const char *filter, bool scanSubdirs); // Load directory filepaths with extension filtering and recursive directory scan. Use 'DIR' in the filter string to include directories in the result - void UnloadDirectoryFiles(FilePathList files); // Unload filepaths - bool IsFileDropped(void); // Check if a file has been dropped into window - FilePathList LoadDroppedFiles(void); // Load dropped filepaths - void UnloadDroppedFiles(FilePathList files); // Unload dropped filepaths - long GetFileModTime(const char *fileName); // Get file modification time (last write time) -// Compression/Encoding functionality - unsigned char *CompressData(const unsigned char *data, int dataSize, int *compDataSize); // Compress data (DEFLATE algorithm), memory must be MemFree() - unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // Decompress data (DEFLATE algorithm), memory must be MemFree() - char *EncodeDataBase64(const unsigned char *data, int dataSize, int *outputSize); // Encode data to Base64 string, memory must be MemFree() - unsigned char *DecodeDataBase64(const unsigned char *data, int *outputSize); // Decode Base64 string data, memory must be MemFree() - unsigned int ComputeCRC32(unsigned char *data, int dataSize); // Compute CRC32 hash code - unsigned int *ComputeMD5(unsigned char *data, int dataSize); // Compute MD5 hash code, returns static int[4] (16 bytes) - unsigned int *ComputeSHA1(unsigned char *data, int dataSize); // Compute SHA1 hash code, returns static int[5] (20 bytes) -// Automation events functionality - AutomationEventList LoadAutomationEventList(const char *fileName); // Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS - void UnloadAutomationEventList(AutomationEventList list); // Unload automation events list from file - bool ExportAutomationEventList(AutomationEventList list, const char *fileName); // Export automation events list as text file - void SetAutomationEventList(AutomationEventList *list); // Set automation event list to record to - void SetAutomationEventBaseFrame(int frame); // Set automation event internal base frame to start recording - void StartAutomationEventRecording(void); // Start recording automation events (AutomationEventList must be set) - void StopAutomationEventRecording(void); // Stop recording automation events - void PlayAutomationEvent(AutomationEvent event); // Play a recorded automation event -//------------------------------------------------------------------------------------ -// Input Handling Functions (Module: core) -//------------------------------------------------------------------------------------ -// Input-related functions: keyboard - bool IsKeyPressed(int key); // Check if a key has been pressed once - bool IsKeyPressedRepeat(int key); // Check if a key has been pressed again - bool IsKeyDown(int key); // Check if a key is being pressed - bool IsKeyReleased(int key); // Check if a key has been released once - bool IsKeyUp(int key); // Check if a key is NOT being pressed - int GetKeyPressed(void); // Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty - int GetCharPressed(void); // Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty - void SetExitKey(int key); // Set a custom key to exit program (default is ESC) -// Input-related functions: gamepads - bool IsGamepadAvailable(int gamepad); // Check if a gamepad is available - const char *GetGamepadName(int gamepad); // Get gamepad internal name id - bool IsGamepadButtonPressed(int gamepad, int button); // Check if a gamepad button has been pressed once - bool IsGamepadButtonDown(int gamepad, int button); // Check if a gamepad button is being pressed - bool IsGamepadButtonReleased(int gamepad, int button); // Check if a gamepad button has been released once - bool IsGamepadButtonUp(int gamepad, int button); // Check if a gamepad button is NOT being pressed - int GetGamepadButtonPressed(void); // Get the last gamepad button pressed - int GetGamepadAxisCount(int gamepad); // Get gamepad axis count for a gamepad - float GetGamepadAxisMovement(int gamepad, int axis); // Get axis movement value for a gamepad axis - int SetGamepadMappings(const char *mappings); // Set internal gamepad mappings (SDL_GameControllerDB) - void SetGamepadVibration(int gamepad, float leftMotor, float rightMotor, float duration); // Set gamepad vibration for both motors (duration in seconds) -// Input-related functions: mouse - bool IsMouseButtonPressed(int button); // Check if a mouse button has been pressed once - bool IsMouseButtonDown(int button); // Check if a mouse button is being pressed - bool IsMouseButtonReleased(int button); // Check if a mouse button has been released once - bool IsMouseButtonUp(int button); // Check if a mouse button is NOT being pressed - int GetMouseX(void); // Get mouse position X - int GetMouseY(void); // Get mouse position Y - Vector2 GetMousePosition(void); // Get mouse position XY - Vector2 GetMouseDelta(void); // Get mouse delta between frames - void SetMousePosition(int x, int y); // Set mouse position XY - void SetMouseOffset(int offsetX, int offsetY); // Set mouse offset - void SetMouseScale(float scaleX, float scaleY); // Set mouse scaling - float GetMouseWheelMove(void); // Get mouse wheel movement for X or Y, whichever is larger - Vector2 GetMouseWheelMoveV(void); // Get mouse wheel movement for both X and Y - void SetMouseCursor(int cursor); // Set mouse cursor -// Input-related functions: touch - int GetTouchX(void); // Get touch position X for touch point 0 (relative to screen size) - int GetTouchY(void); // Get touch position Y for touch point 0 (relative to screen size) - Vector2 GetTouchPosition(int index); // Get touch position XY for a touch point index (relative to screen size) - int GetTouchPointId(int index); // Get touch point identifier for given index - int GetTouchPointCount(void); // Get number of touch points -//------------------------------------------------------------------------------------ -// Gestures and Touch Handling Functions (Module: rgestures) -//------------------------------------------------------------------------------------ - void SetGesturesEnabled(unsigned int flags); // Enable a set of gestures using flags - bool IsGestureDetected(unsigned int gesture); // Check if a gesture have been detected - int GetGestureDetected(void); // Get latest detected gesture - float GetGestureHoldDuration(void); // Get gesture hold time in seconds - Vector2 GetGestureDragVector(void); // Get gesture drag vector - float GetGestureDragAngle(void); // Get gesture drag angle - Vector2 GetGesturePinchVector(void); // Get gesture pinch delta - float GetGesturePinchAngle(void); // Get gesture pinch angle -//------------------------------------------------------------------------------------ -// Camera System Functions (Module: rcamera) -//------------------------------------------------------------------------------------ - void UpdateCamera(Camera *camera, int mode); // Update camera position for selected mode - void UpdateCameraPro(Camera *camera, Vector3 movement, Vector3 rotation, float zoom); // Update camera movement/rotation -//------------------------------------------------------------------------------------ -// Basic Shapes Drawing Functions (Module: shapes) -//------------------------------------------------------------------------------------ -// Set texture and rectangle to be used on shapes drawing -// NOTE: It can be useful when using basic shapes and one single font, -// defining a font char white rectangle would allow drawing everything in a single draw call - void SetShapesTexture(Texture2D texture, Rectangle source); // Set texture and rectangle to be used on shapes drawing - Texture2D GetShapesTexture(void); // Get texture that is used for shapes drawing - Rectangle GetShapesTextureRectangle(void); // Get texture source rectangle that is used for shapes drawing -// Basic shapes drawing functions - void DrawPixel(int posX, int posY, Color color); // Draw a pixel using geometry [Can be slow, use with care] - void DrawPixelV(Vector2 position, Color color); // Draw a pixel using geometry (Vector version) [Can be slow, use with care] - void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw a line - void DrawLineV(Vector2 startPos, Vector2 endPos, Color color); // Draw a line (using gl lines) - void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line (using triangles/quads) - void DrawLineStrip(const Vector2 *points, int pointCount, Color color); // Draw lines sequence (using gl lines) - void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw line segment cubic-bezier in-out interpolation - void DrawCircle(int centerX, int centerY, float radius, Color color); // Draw a color-filled circle - void DrawCircleSector(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color); // Draw a piece of a circle - void DrawCircleSectorLines(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color); // Draw circle sector outline - void DrawCircleGradient(int centerX, int centerY, float radius, Color inner, Color outer); // Draw a gradient-filled circle - void DrawCircleV(Vector2 center, float radius, Color color); // Draw a color-filled circle (Vector version) - void DrawCircleLines(int centerX, int centerY, float radius, Color color); // Draw circle outline - void DrawCircleLinesV(Vector2 center, float radius, Color color); // Draw circle outline (Vector version) - void DrawEllipse(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse - void DrawEllipseLines(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse outline - void DrawRing(Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color); // Draw ring - void DrawRingLines(Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color); // Draw ring outline - void DrawRectangle(int posX, int posY, int width, int height, Color color); // Draw a color-filled rectangle - void DrawRectangleV(Vector2 position, Vector2 size, Color color); // Draw a color-filled rectangle (Vector version) - void DrawRectangleRec(Rectangle rec, Color color); // Draw a color-filled rectangle - void DrawRectanglePro(Rectangle rec, Vector2 origin, float rotation, Color color); // Draw a color-filled rectangle with pro parameters - void DrawRectangleGradientV(int posX, int posY, int width, int height, Color top, Color bottom); // Draw a vertical-gradient-filled rectangle - void DrawRectangleGradientH(int posX, int posY, int width, int height, Color left, Color right); // Draw a horizontal-gradient-filled rectangle - void DrawRectangleGradientEx(Rectangle rec, Color topLeft, Color bottomLeft, Color topRight, Color bottomRight); // Draw a gradient-filled rectangle with custom vertex colors - void DrawRectangleLines(int posX, int posY, int width, int height, Color color); // Draw rectangle outline - void DrawRectangleLinesEx(Rectangle rec, float lineThick, Color color); // Draw rectangle outline with extended parameters - void DrawRectangleRounded(Rectangle rec, float roundness, int segments, Color color); // Draw rectangle with rounded edges - void DrawRectangleRoundedLines(Rectangle rec, float roundness, int segments, Color color); // Draw rectangle lines with rounded edges - void DrawRectangleRoundedLinesEx(Rectangle rec, float roundness, int segments, float lineThick, Color color); // Draw rectangle with rounded edges outline - void DrawTriangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) - void DrawTriangleLines(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw triangle outline (vertex in counter-clockwise order!) - void DrawTriangleFan(const Vector2 *points, int pointCount, Color color); // Draw a triangle fan defined by points (first vertex is the center) - void DrawTriangleStrip(const Vector2 *points, int pointCount, Color color); // Draw a triangle strip defined by points - void DrawPoly(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a regular polygon (Vector version) - void DrawPolyLines(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a polygon outline of n sides - void DrawPolyLinesEx(Vector2 center, int sides, float radius, float rotation, float lineThick, Color color); // Draw a polygon outline of n sides with extended parameters -// Splines drawing functions - void DrawSplineLinear(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Linear, minimum 2 points - void DrawSplineBasis(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: B-Spline, minimum 4 points - void DrawSplineCatmullRom(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Catmull-Rom, minimum 4 points - void DrawSplineBezierQuadratic(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...] - void DrawSplineBezierCubic(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...] - void DrawSplineSegmentLinear(Vector2 p1, Vector2 p2, float thick, Color color); // Draw spline segment: Linear, 2 points - void DrawSplineSegmentBasis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color); // Draw spline segment: B-Spline, 4 points - void DrawSplineSegmentCatmullRom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color); // Draw spline segment: Catmull-Rom, 4 points - void DrawSplineSegmentBezierQuadratic(Vector2 p1, Vector2 c2, Vector2 p3, float thick, Color color); // Draw spline segment: Quadratic Bezier, 2 points, 1 control point - void DrawSplineSegmentBezierCubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float thick, Color color); // Draw spline segment: Cubic Bezier, 2 points, 2 control points -// Spline segment point evaluation functions, for a given t [0.0f .. 1.0f] - Vector2 GetSplinePointLinear(Vector2 startPos, Vector2 endPos, float t); // Get (evaluate) spline point: Linear - Vector2 GetSplinePointBasis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t); // Get (evaluate) spline point: B-Spline - Vector2 GetSplinePointCatmullRom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t); // Get (evaluate) spline point: Catmull-Rom - Vector2 GetSplinePointBezierQuad(Vector2 p1, Vector2 c2, Vector2 p3, float t); // Get (evaluate) spline point: Quadratic Bezier - Vector2 GetSplinePointBezierCubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float t); // Get (evaluate) spline point: Cubic Bezier -// Basic shapes collision detection functions - bool CheckCollisionRecs(Rectangle rec1, Rectangle rec2); // Check collision between two rectangles - bool CheckCollisionCircles(Vector2 center1, float radius1, Vector2 center2, float radius2); // Check collision between two circles - bool CheckCollisionCircleRec(Vector2 center, float radius, Rectangle rec); // Check collision between circle and rectangle - bool CheckCollisionCircleLine(Vector2 center, float radius, Vector2 p1, Vector2 p2); // Check if circle collides with a line created betweeen two points [p1] and [p2] - bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle - bool CheckCollisionPointCircle(Vector2 point, Vector2 center, float radius); // Check if point is inside circle - bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3); // Check if point is inside a triangle - bool CheckCollisionPointLine(Vector2 point, Vector2 p1, Vector2 p2, int threshold); // Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold] - bool CheckCollisionPointPoly(Vector2 point, const Vector2 *points, int pointCount); // Check if point is within a polygon described by array of vertices - bool CheckCollisionLines(Vector2 startPos1, Vector2 endPos1, Vector2 startPos2, Vector2 endPos2, Vector2 *collisionPoint); // Check the collision between two lines defined by two points each, returns collision point by reference - Rectangle GetCollisionRec(Rectangle rec1, Rectangle rec2); // Get collision rectangle for two rectangles collision -//------------------------------------------------------------------------------------ -// Texture Loading and Drawing Functions (Module: textures) -//------------------------------------------------------------------------------------ -// Image loading functions -// NOTE: These functions do not require GPU access - Image LoadImage(const char *fileName); // Load image from file into CPU memory (RAM) - Image LoadImageRaw(const char *fileName, int width, int height, int format, int headerSize); // Load image from RAW file data - Image LoadImageAnim(const char *fileName, int *frames); // Load image sequence from file (frames appended to image.data) - Image LoadImageAnimFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int *frames); // Load image sequence from memory buffer - Image LoadImageFromMemory(const char *fileType, const unsigned char *fileData, int dataSize); // Load image from memory buffer, fileType refers to extension: i.e. '.png' - Image LoadImageFromTexture(Texture2D texture); // Load image from GPU texture data - Image LoadImageFromScreen(void); // Load image from screen buffer and (screenshot) - bool IsImageValid(Image image); // Check if an image is valid (data and parameters) - void UnloadImage(Image image); // Unload image from CPU memory (RAM) - bool ExportImage(Image image, const char *fileName); // Export image data to file, returns true on success - unsigned char *ExportImageToMemory(Image image, const char *fileType, int *fileSize); // Export image to memory buffer - bool ExportImageAsCode(Image image, const char *fileName); // Export image as code file defining an array of bytes, returns true on success -// Image generation functions - Image GenImageColor(int width, int height, Color color); // Generate image: plain color - Image GenImageGradientLinear(int width, int height, int direction, Color start, Color end); // Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient - Image GenImageGradientRadial(int width, int height, float density, Color inner, Color outer); // Generate image: radial gradient - Image GenImageGradientSquare(int width, int height, float density, Color inner, Color outer); // Generate image: square gradient - Image GenImageChecked(int width, int height, int checksX, int checksY, Color col1, Color col2); // Generate image: checked - Image GenImageWhiteNoise(int width, int height, float factor); // Generate image: white noise - Image GenImagePerlinNoise(int width, int height, int offsetX, int offsetY, float scale); // Generate image: perlin noise - Image GenImageCellular(int width, int height, int tileSize); // Generate image: cellular algorithm, bigger tileSize means bigger cells - Image GenImageText(int width, int height, const char *text); // Generate image: grayscale image from text data -// Image manipulation functions - Image ImageCopy(Image image); // Create an image duplicate (useful for transformations) - Image ImageFromImage(Image image, Rectangle rec); // Create an image from another image piece - Image ImageFromChannel(Image image, int selectedChannel); // Create an image from a selected channel of another image (GRAYSCALE) - Image ImageText(const char *text, int fontSize, Color color); // Create an image from text (default font) - Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Color tint); // Create an image from text (custom sprite font) - void ImageFormat(Image *image, int newFormat); // Convert image data to desired format - void ImageToPOT(Image *image, Color fill); // Convert image to POT (power-of-two) - void ImageCrop(Image *image, Rectangle crop); // Crop an image to a defined rectangle - void ImageAlphaCrop(Image *image, float threshold); // Crop image depending on alpha value - void ImageAlphaClear(Image *image, Color color, float threshold); // Clear alpha channel to desired color - void ImageAlphaMask(Image *image, Image alphaMask); // Apply alpha mask to image - void ImageAlphaPremultiply(Image *image); // Premultiply alpha channel - void ImageBlurGaussian(Image *image, int blurSize); // Apply Gaussian blur using a box blur approximation - void ImageKernelConvolution(Image *image, const float *kernel, int kernelSize); // Apply custom square convolution kernel to image - void ImageResize(Image *image, int newWidth, int newHeight); // Resize image (Bicubic scaling algorithm) - void ImageResizeNN(Image *image, int newWidth,int newHeight); // Resize image (Nearest-Neighbor scaling algorithm) - void ImageResizeCanvas(Image *image, int newWidth, int newHeight, int offsetX, int offsetY, Color fill); // Resize canvas and fill with color - void ImageMipmaps(Image *image); // Compute all mipmap levels for a provided image - void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp); // Dither image data to 16bpp or lower (Floyd-Steinberg dithering) - void ImageFlipVertical(Image *image); // Flip image vertically - void ImageFlipHorizontal(Image *image); // Flip image horizontally - void ImageRotate(Image *image, int degrees); // Rotate image by input angle in degrees (-359 to 359) - void ImageRotateCW(Image *image); // Rotate image clockwise 90deg - void ImageRotateCCW(Image *image); // Rotate image counter-clockwise 90deg - void ImageColorTint(Image *image, Color color); // Modify image color: tint - void ImageColorInvert(Image *image); // Modify image color: invert - void ImageColorGrayscale(Image *image); // Modify image color: grayscale - void ImageColorContrast(Image *image, float contrast); // Modify image color: contrast (-100 to 100) - void ImageColorBrightness(Image *image, int brightness); // Modify image color: brightness (-255 to 255) - void ImageColorReplace(Image *image, Color color, Color replace); // Modify image color: replace color - Color *LoadImageColors(Image image); // Load color data from image as a Color array (RGBA - 32bit) - Color *LoadImagePalette(Image image, int maxPaletteSize, int *colorCount); // Load colors palette from image as a Color array (RGBA - 32bit) - void UnloadImageColors(Color *colors); // Unload color data loaded with LoadImageColors() - void UnloadImagePalette(Color *colors); // Unload colors palette loaded with LoadImagePalette() - Rectangle GetImageAlphaBorder(Image image, float threshold); // Get image alpha border rectangle - Color GetImageColor(Image image, int x, int y); // Get image pixel color at (x, y) position -// Image drawing functions -// NOTE: Image software-rendering functions (CPU) - void ImageClearBackground(Image *dst, Color color); // Clear image background with given color - void ImageDrawPixel(Image *dst, int posX, int posY, Color color); // Draw pixel within an image - void ImageDrawPixelV(Image *dst, Vector2 position, Color color); // Draw pixel within an image (Vector version) - void ImageDrawLine(Image *dst, int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw line within an image - void ImageDrawLineV(Image *dst, Vector2 start, Vector2 end, Color color); // Draw line within an image (Vector version) - void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, int thick, Color color); // Draw a line defining thickness within an image - void ImageDrawCircle(Image *dst, int centerX, int centerY, int radius, Color color); // Draw a filled circle within an image - void ImageDrawCircleV(Image *dst, Vector2 center, int radius, Color color); // Draw a filled circle within an image (Vector version) - void ImageDrawCircleLines(Image *dst, int centerX, int centerY, int radius, Color color); // Draw circle outline within an image - void ImageDrawCircleLinesV(Image *dst, Vector2 center, int radius, Color color); // Draw circle outline within an image (Vector version) - void ImageDrawRectangle(Image *dst, int posX, int posY, int width, int height, Color color); // Draw rectangle within an image - void ImageDrawRectangleV(Image *dst, Vector2 position, Vector2 size, Color color); // Draw rectangle within an image (Vector version) - void ImageDrawRectangleRec(Image *dst, Rectangle rec, Color color); // Draw rectangle within an image - void ImageDrawRectangleLines(Image *dst, Rectangle rec, int thick, Color color); // Draw rectangle lines within an image - void ImageDrawTriangle(Image *dst, Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw triangle within an image - void ImageDrawTriangleEx(Image *dst, Vector2 v1, Vector2 v2, Vector2 v3, Color c1, Color c2, Color c3); // Draw triangle with interpolated colors within an image - void ImageDrawTriangleLines(Image *dst, Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw triangle outline within an image - void ImageDrawTriangleFan(Image *dst, Vector2 *points, int pointCount, Color color); // Draw a triangle fan defined by points within an image (first vertex is the center) - void ImageDrawTriangleStrip(Image *dst, Vector2 *points, int pointCount, Color color); // Draw a triangle strip defined by points within an image - void ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color tint); // Draw a source image within a destination image (tint applied to source) - void ImageDrawText(Image *dst, const char *text, int posX, int posY, int fontSize, Color color); // Draw text (using default font) within an image (destination) - void ImageDrawTextEx(Image *dst, Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // Draw text (custom sprite font) within an image (destination) -// Texture loading functions -// NOTE: These functions require GPU access - Texture2D LoadTexture(const char *fileName); // Load texture from file into GPU memory (VRAM) - Texture2D LoadTextureFromImage(Image image); // Load texture from image data - TextureCubemap LoadTextureCubemap(Image image, int layout); // Load cubemap from image, multiple image cubemap layouts supported - RenderTexture2D LoadRenderTexture(int width, int height); // Load texture for rendering (framebuffer) - bool IsTextureValid(Texture2D texture); // Check if a texture is valid (loaded in GPU) - void UnloadTexture(Texture2D texture); // Unload texture from GPU memory (VRAM) - bool IsRenderTextureValid(RenderTexture2D target); // Check if a render texture is valid (loaded in GPU) - void UnloadRenderTexture(RenderTexture2D target); // Unload render texture from GPU memory (VRAM) - void UpdateTexture(Texture2D texture, const void *pixels); // Update GPU texture with new data - void UpdateTextureRec(Texture2D texture, Rectangle rec, const void *pixels); // Update GPU texture rectangle with new data -// Texture configuration functions - void GenTextureMipmaps(Texture2D *texture); // Generate GPU mipmaps for a texture - void SetTextureFilter(Texture2D texture, int filter); // Set texture scaling filter mode - void SetTextureWrap(Texture2D texture, int wrap); // Set texture wrapping mode -// Texture drawing functions - void DrawTexture(Texture2D texture, int posX, int posY, Color tint); // Draw a Texture2D - void DrawTextureV(Texture2D texture, Vector2 position, Color tint); // Draw a Texture2D with position defined as Vector2 - void DrawTextureEx(Texture2D texture, Vector2 position, float rotation, float scale, Color tint); // Draw a Texture2D with extended parameters - void DrawTextureRec(Texture2D texture, Rectangle source, Vector2 position, Color tint); // Draw a part of a texture defined by a rectangle - void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, Color tint); // Draw a part of a texture defined by a rectangle with 'pro' parameters - void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle dest, Vector2 origin, float rotation, Color tint); // Draws a texture (or part of it) that stretches or shrinks nicely -// Color/pixel related functions - bool ColorIsEqual(Color col1, Color col2); // Check if two colors are equal - Color Fade(Color color, float alpha); // Get color with alpha applied, alpha goes from 0.0f to 1.0f - int ColorToInt(Color color); // Get hexadecimal value for a Color (0xRRGGBBAA) - Vector4 ColorNormalize(Color color); // Get Color normalized as float [0..1] - Color ColorFromNormalized(Vector4 normalized); // Get Color from normalized values [0..1] - Vector3 ColorToHSV(Color color); // Get HSV values for a Color, hue [0..360], saturation/value [0..1] - Color ColorFromHSV(float hue, float saturation, float value); // Get a Color from HSV values, hue [0..360], saturation/value [0..1] - Color ColorTint(Color color, Color tint); // Get color multiplied with another color - Color ColorBrightness(Color color, float factor); // Get color with brightness correction, brightness factor goes from -1.0f to 1.0f - Color ColorContrast(Color color, float contrast); // Get color with contrast correction, contrast values between -1.0f and 1.0f - Color ColorAlpha(Color color, float alpha); // Get color with alpha applied, alpha goes from 0.0f to 1.0f - Color ColorAlphaBlend(Color dst, Color src, Color tint); // Get src alpha-blended into dst color with tint - Color ColorLerp(Color color1, Color color2, float factor); // Get color lerp interpolation between two colors, factor [0.0f..1.0f] - Color GetColor(unsigned int hexValue); // Get Color structure from hexadecimal value - Color GetPixelColor(void *srcPtr, int format); // Get Color from a source pixel pointer of certain format - void SetPixelColor(void *dstPtr, Color color, int format); // Set color formatted into destination pixel pointer - int GetPixelDataSize(int width, int height, int format); // Get pixel data size in bytes for certain format -//------------------------------------------------------------------------------------ -// Font Loading and Text Drawing Functions (Module: text) -//------------------------------------------------------------------------------------ -// Font loading/unloading functions - Font GetFontDefault(void); // Get the default Font - Font LoadFont(const char *fileName); // Load font from file into GPU memory (VRAM) - Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // 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 - Font LoadFontFromImage(Image image, Color key, int firstChar); // Load font from Image (XNA style) - Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount); // Load font from memory buffer, fileType refers to extension: i.e. '.ttf' - bool IsFontValid(Font font); // Check if a font is valid (font data loaded, WARNING: GPU texture not checked) - GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type); // Load font data for further use - Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyphCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info - void UnloadFontData(GlyphInfo *glyphs, int glyphCount); // Unload font chars info data (RAM) - void UnloadFont(Font font); // Unload font from GPU memory (VRAM) - bool ExportFontAsCode(Font font, const char *fileName); // Export font as code file, returns true on success -// Text drawing functions - void DrawFPS(int posX, int posY); // Draw current FPS - void DrawText(const char *text, int posX, int posY, int fontSize, Color color); // Draw text (using default font) - void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // Draw text using font and additional parameters - void DrawTextPro(Font font, const char *text, Vector2 position, Vector2 origin, float rotation, float fontSize, float spacing, Color tint); // Draw text using Font and pro parameters (rotation) - void DrawTextCodepoint(Font font, int codepoint, Vector2 position, float fontSize, Color tint); // Draw one character (codepoint) - void DrawTextCodepoints(Font font, const int *codepoints, int codepointCount, Vector2 position, float fontSize, float spacing, Color tint); // Draw multiple character (codepoint) -// Text font info functions - void SetTextLineSpacing(int spacing); // Set vertical line spacing when drawing with line-breaks - int MeasureText(const char *text, int fontSize); // Measure string width for default font - Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing); // Measure string size for Font - int GetGlyphIndex(Font font, int codepoint); // Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found - GlyphInfo GetGlyphInfo(Font font, int codepoint); // Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found - Rectangle GetGlyphAtlasRec(Font font, int codepoint); // Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found -// Text codepoints management functions (unicode characters) - char *LoadUTF8(const int *codepoints, int length); // Load UTF-8 text encoded from codepoints array - void UnloadUTF8(char *text); // Unload UTF-8 text encoded from codepoints array - int *LoadCodepoints(const char *text, int *count); // Load all codepoints from a UTF-8 text string, codepoints count returned by parameter - void UnloadCodepoints(int *codepoints); // Unload codepoints data from memory - int GetCodepointCount(const char *text); // Get total number of codepoints in a UTF-8 encoded string - int GetCodepoint(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure - int GetCodepointNext(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure - int GetCodepointPrevious(const char *text, int *codepointSize); // Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure - const char *CodepointToUTF8(int codepoint, int *utf8Size); // Encode one codepoint into UTF-8 byte array (array length returned as parameter) -// Text strings management functions (no UTF-8 strings, only byte chars) -// NOTE: Some strings allocate memory internally for returned strings, just be careful! - int TextCopy(char *dst, const char *src); // Copy one string to another, returns bytes copied - bool TextIsEqual(const char *text1, const char *text2); // Check if two text string are equal - unsigned int TextLength(const char *text); // Get text length, checks for '\0' ending - const char *TextFormat(const char *text, ...); // Text formatting with variables (sprintf() style) - const char *TextSubtext(const char *text, int position, int length); // Get a piece of a text string - char *TextReplace(const char *text, const char *replace, const char *by); // Replace text string (WARNING: memory must be freed!) - char *TextInsert(const char *text, const char *insert, int position); // Insert text in a position (WARNING: memory must be freed!) - const char *TextJoin(const char **textList, int count, const char *delimiter); // Join text strings with delimiter - const char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings - void TextAppend(char *text, const char *append, int *position); // Append text at specific position and move cursor! - int TextFindIndex(const char *text, const char *find); // Find first text occurrence within a string - const char *TextToUpper(const char *text); // Get upper case version of provided string - const char *TextToLower(const char *text); // Get lower case version of provided string - const char *TextToPascal(const char *text); // Get Pascal case notation version of provided string - const char *TextToSnake(const char *text); // Get Snake case notation version of provided string - const char *TextToCamel(const char *text); // Get Camel case notation version of provided string - int TextToInteger(const char *text); // Get integer value from text (negative values not supported) - float TextToFloat(const char *text); // Get float value from text (negative values not supported) -//------------------------------------------------------------------------------------ -// Basic 3d Shapes Drawing Functions (Module: models) -//------------------------------------------------------------------------------------ -// Basic geometric 3D shapes drawing functions - void DrawLine3D(Vector3 startPos, Vector3 endPos, Color color); // Draw a line in 3D world space - void DrawPoint3D(Vector3 position, Color color); // Draw a point in 3D space, actually a small line - void DrawCircle3D(Vector3 center, float radius, Vector3 rotationAxis, float rotationAngle, Color color); // Draw a circle in 3D world space - void DrawTriangle3D(Vector3 v1, Vector3 v2, Vector3 v3, Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) - void DrawTriangleStrip3D(const Vector3 *points, int pointCount, Color color); // Draw a triangle strip defined by points - void DrawCube(Vector3 position, float width, float height, float length, Color color); // Draw cube - void DrawCubeV(Vector3 position, Vector3 size, Color color); // Draw cube (Vector version) - void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); // Draw cube wires - void DrawCubeWiresV(Vector3 position, Vector3 size, Color color); // Draw cube wires (Vector version) - void DrawSphere(Vector3 centerPos, float radius, Color color); // Draw sphere - void DrawSphereEx(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere with extended parameters - void DrawSphereWires(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere wires - void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone - void DrawCylinderEx(Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color); // Draw a cylinder with base at startPos and top at endPos - void DrawCylinderWires(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone wires - void DrawCylinderWiresEx(Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color); // Draw a cylinder wires with base at startPos and top at endPos - void DrawCapsule(Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color); // Draw a capsule with the center of its sphere caps at startPos and endPos - void DrawCapsuleWires(Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color); // Draw capsule wireframe with the center of its sphere caps at startPos and endPos - void DrawPlane(Vector3 centerPos, Vector2 size, Color color); // Draw a plane XZ - void DrawRay(Ray ray, Color color); // Draw a ray line - void DrawGrid(int slices, float spacing); // Draw a grid (centered at (0, 0, 0)) -//------------------------------------------------------------------------------------ -// Model 3d Loading and Drawing Functions (Module: models) -//------------------------------------------------------------------------------------ -// Model management functions - Model LoadModel(const char *fileName); // Load model from files (meshes and materials) - Model LoadModelFromMesh(Mesh mesh); // Load model from generated mesh (default material) - bool IsModelValid(Model model); // Check if a model is valid (loaded in GPU, VAO/VBOs) - void UnloadModel(Model model); // Unload model (including meshes) from memory (RAM and/or VRAM) - BoundingBox GetModelBoundingBox(Model model); // Compute model bounding box limits (considers all meshes) -// Model drawing functions - void DrawModel(Model model, Vector3 position, float scale, Color tint); // Draw a model (with texture if set) - void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model with extended parameters - void DrawModelWires(Model model, Vector3 position, float scale, Color tint); // Draw a model wires (with texture if set) - void DrawModelWiresEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model wires (with texture if set) with extended parameters - void DrawModelPoints(Model model, Vector3 position, float scale, Color tint); // Draw a model as points - void DrawModelPointsEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model as points with extended parameters - void DrawBoundingBox(BoundingBox box, Color color); // Draw bounding box (wires) - void DrawBillboard(Camera camera, Texture2D texture, Vector3 position, float scale, Color tint); // Draw a billboard texture - void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector2 size, Color tint); // Draw a billboard texture defined by source - void DrawBillboardPro(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint); // Draw a billboard texture defined by source and rotation -// Mesh management functions - void UploadMesh(Mesh *mesh, bool dynamic); // Upload mesh vertex data in GPU and provide VAO/VBO ids - void UpdateMeshBuffer(Mesh mesh, int index, const void *data, int dataSize, int offset); // Update mesh vertex data in GPU for a specific buffer index - void UnloadMesh(Mesh mesh); // Unload mesh data from CPU and GPU - void DrawMesh(Mesh mesh, Material material, Matrix transform); // Draw a 3d mesh with material and transform - void DrawMeshInstanced(Mesh mesh, Material material, const Matrix *transforms, int instances); // Draw multiple mesh instances with material and different transforms - BoundingBox GetMeshBoundingBox(Mesh mesh); // Compute mesh bounding box limits - void GenMeshTangents(Mesh *mesh); // Compute mesh tangents - bool ExportMesh(Mesh mesh, const char *fileName); // Export mesh data to file, returns true on success - bool ExportMeshAsCode(Mesh mesh, const char *fileName); // Export mesh as code file (.h) defining multiple arrays of vertex attributes -// Mesh generation functions - Mesh GenMeshPoly(int sides, float radius); // Generate polygonal mesh - Mesh GenMeshPlane(float width, float length, int resX, int resZ); // Generate plane mesh (with subdivisions) - Mesh GenMeshCube(float width, float height, float length); // Generate cuboid mesh - Mesh GenMeshSphere(float radius, int rings, int slices); // Generate sphere mesh (standard sphere) - Mesh GenMeshHemiSphere(float radius, int rings, int slices); // Generate half-sphere mesh (no bottom cap) - Mesh GenMeshCylinder(float radius, float height, int slices); // Generate cylinder mesh - Mesh GenMeshCone(float radius, float height, int slices); // Generate cone/pyramid mesh - Mesh GenMeshTorus(float radius, float size, int radSeg, int sides); // Generate torus mesh - Mesh GenMeshKnot(float radius, float size, int radSeg, int sides); // Generate trefoil knot mesh - Mesh GenMeshHeightmap(Image heightmap, Vector3 size); // Generate heightmap mesh from image data - Mesh GenMeshCubicmap(Image cubicmap, Vector3 cubeSize); // Generate cubes-based map mesh from image data -// Material loading/unloading functions - Material *LoadMaterials(const char *fileName, int *materialCount); // Load materials from model file - Material LoadMaterialDefault(void); // Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) - bool IsMaterialValid(Material material); // Check if a material is valid (shader assigned, map textures loaded in GPU) - void UnloadMaterial(Material material); // Unload material from GPU memory (VRAM) - void SetMaterialTexture(Material *material, int mapType, Texture2D texture); // Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...) - void SetModelMeshMaterial(Model *model, int meshId, int materialId); // Set material for a mesh -// Model animations loading/unloading functions - ModelAnimation *LoadModelAnimations(const char *fileName, int *animCount); // Load model animations from file - void UpdateModelAnimation(Model model, ModelAnimation anim, int frame); // Update model animation pose (CPU) - void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame); // Update model animation mesh bone matrices (GPU skinning) - void UnloadModelAnimation(ModelAnimation anim); // Unload animation data - void UnloadModelAnimations(ModelAnimation *animations, int animCount); // Unload animation array data - bool IsModelAnimationValid(Model model, ModelAnimation anim); // Check model animation skeleton match -// Collision detection functions - bool CheckCollisionSpheres(Vector3 center1, float radius1, Vector3 center2, float radius2); // Check collision between two spheres - bool CheckCollisionBoxes(BoundingBox box1, BoundingBox box2); // Check collision between two bounding boxes - bool CheckCollisionBoxSphere(BoundingBox box, Vector3 center, float radius); // Check collision between box and sphere - RayCollision GetRayCollisionSphere(Ray ray, Vector3 center, float radius); // Get collision info between ray and sphere - RayCollision GetRayCollisionBox(Ray ray, BoundingBox box); // Get collision info between ray and box - RayCollision GetRayCollisionMesh(Ray ray, Mesh mesh, Matrix transform); // Get collision info between ray and mesh - RayCollision GetRayCollisionTriangle(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3); // Get collision info between ray and triangle - RayCollision GetRayCollisionQuad(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4); // Get collision info between ray and quad -//------------------------------------------------------------------------------------ -// Audio Loading and Playing Functions (Module: audio) -//------------------------------------------------------------------------------------ -typedef void (*AudioCallback)(void *bufferData, unsigned int frames); -// Audio device management functions - void InitAudioDevice(void); // Initialize audio device and context - void CloseAudioDevice(void); // Close the audio device and context - bool IsAudioDeviceReady(void); // Check if audio device has been initialized successfully - void SetMasterVolume(float volume); // Set master volume (listener) - float GetMasterVolume(void); // Get master volume (listener) -// Wave/Sound loading/unloading functions - Wave LoadWave(const char *fileName); // Load wave data from file - Wave LoadWaveFromMemory(const char *fileType, const unsigned char *fileData, int dataSize); // Load wave from memory buffer, fileType refers to extension: i.e. '.wav' - bool IsWaveValid(Wave wave); // Checks if wave data is valid (data loaded and parameters) - Sound LoadSound(const char *fileName); // Load sound from file - Sound LoadSoundFromWave(Wave wave); // Load sound from wave data - Sound LoadSoundAlias(Sound source); // Create a new sound that shares the same sample data as the source sound, does not own the sound data - bool IsSoundValid(Sound sound); // Checks if a sound is valid (data loaded and buffers initialized) - void UpdateSound(Sound sound, const void *data, int sampleCount); // Update sound buffer with new data - void UnloadWave(Wave wave); // Unload wave data - void UnloadSound(Sound sound); // Unload sound - void UnloadSoundAlias(Sound alias); // Unload a sound alias (does not deallocate sample data) - bool ExportWave(Wave wave, const char *fileName); // Export wave data to file, returns true on success - bool ExportWaveAsCode(Wave wave, const char *fileName); // Export wave sample data to code (.h), returns true on success -// Wave/Sound management functions - void PlaySound(Sound sound); // Play a sound - void StopSound(Sound sound); // Stop playing a sound - void PauseSound(Sound sound); // Pause a sound - void ResumeSound(Sound sound); // Resume a paused sound - bool IsSoundPlaying(Sound sound); // Check if a sound is currently playing - void SetSoundVolume(Sound sound, float volume); // Set volume for a sound (1.0 is max level) - void SetSoundPitch(Sound sound, float pitch); // Set pitch for a sound (1.0 is base level) - void SetSoundPan(Sound sound, float pan); // Set pan for a sound (0.5 is center) - Wave WaveCopy(Wave wave); // Copy a wave to a new wave - void WaveCrop(Wave *wave, int initFrame, int finalFrame); // Crop a wave to defined frames range - void WaveFormat(Wave *wave, int sampleRate, int sampleSize, int channels); // Convert wave data to desired format - float *LoadWaveSamples(Wave wave); // Load samples data from wave as a 32bit float data array - void UnloadWaveSamples(float *samples); // Unload samples data loaded with LoadWaveSamples() -// Music management functions - Music LoadMusicStream(const char *fileName); // Load music stream from file - Music LoadMusicStreamFromMemory(const char *fileType, const unsigned char *data, int dataSize); // Load music stream from data - bool IsMusicValid(Music music); // Checks if a music stream is valid (context and buffers initialized) - void UnloadMusicStream(Music music); // Unload music stream - void PlayMusicStream(Music music); // Start music playing - bool IsMusicStreamPlaying(Music music); // Check if music is playing - void UpdateMusicStream(Music music); // Updates buffers for music streaming - void StopMusicStream(Music music); // Stop music playing - void PauseMusicStream(Music music); // Pause music playing - void ResumeMusicStream(Music music); // Resume playing paused music - void SeekMusicStream(Music music, float position); // Seek music to a position (in seconds) - void SetMusicVolume(Music music, float volume); // Set volume for music (1.0 is max level) - void SetMusicPitch(Music music, float pitch); // Set pitch for a music (1.0 is base level) - void SetMusicPan(Music music, float pan); // Set pan for a music (0.5 is center) - float GetMusicTimeLength(Music music); // Get music time length (in seconds) - float GetMusicTimePlayed(Music music); // Get current music time played (in seconds) -// AudioStream management functions - AudioStream LoadAudioStream(unsigned int sampleRate, unsigned int sampleSize, unsigned int channels); // Load audio stream (to stream raw audio pcm data) - bool IsAudioStreamValid(AudioStream stream); // Checks if an audio stream is valid (buffers initialized) - void UnloadAudioStream(AudioStream stream); // Unload audio stream and free memory - void UpdateAudioStream(AudioStream stream, const void *data, int frameCount); // Update audio stream buffers with data - bool IsAudioStreamProcessed(AudioStream stream); // Check if any audio stream buffers requires refill - void PlayAudioStream(AudioStream stream); // Play audio stream - void PauseAudioStream(AudioStream stream); // Pause audio stream - void ResumeAudioStream(AudioStream stream); // Resume audio stream - bool IsAudioStreamPlaying(AudioStream stream); // Check if audio stream is playing - void StopAudioStream(AudioStream stream); // Stop audio stream - void SetAudioStreamVolume(AudioStream stream, float volume); // Set volume for audio stream (1.0 is max level) - void SetAudioStreamPitch(AudioStream stream, float pitch); // Set pitch for audio stream (1.0 is base level) - void SetAudioStreamPan(AudioStream stream, float pan); // Set pan for audio stream (0.5 is centered) - void SetAudioStreamBufferSizeDefault(int size); // Default size for new audio streams - void SetAudioStreamCallback(AudioStream stream, AudioCallback callback); // Audio thread callback to request new data - void AttachAudioStreamProcessor(AudioStream stream, AudioCallback processor); // Attach audio stream processor to stream, receives the samples as 'float' - void DetachAudioStreamProcessor(AudioStream stream, AudioCallback processor); // Detach audio stream processor from stream - void AttachAudioMixedProcessor(AudioCallback processor); // Attach audio stream processor to the entire audio pipeline, receives the samples as 'float' - void DetachAudioMixedProcessor(AudioCallback processor); // Detach audio stream processor from the entire audio pipeline \ No newline at end of file diff --git a/raylib/raylib_modified.h b/raylib/raylib_modified.h new file mode 100644 index 0000000..0fcd2fd --- /dev/null +++ b/raylib/raylib_modified.h @@ -0,0 +1,1357 @@ +// Raylib.h version 2.6-release modified by hand so it can be processed by CFFI +/********************************************************************************************** +* +* raylib - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com) +* +* FEATURES: +* - NO external dependencies, all required libraries included with raylib +* - Multiplatform: Windows, Linux, FreeBSD, OpenBSD, NetBSD, DragonFly, MacOS, UWP, Android, Raspberry Pi, HTML5. +* - Written in plain C code (C99) in PascalCase/camelCase notation +* - Hardware accelerated with OpenGL (1.1, 2.1, 3.3 or ES2 - choose at compile) +* - Unique OpenGL abstraction layer (usable as standalone module): [rlgl] +* - Powerful fonts module (XNA SpriteFonts, BMFonts, TTF) +* - Outstanding texture formats support, including compressed formats (DXT, ETC, ASTC) +* - Full 3d support for 3d Shapes, Models, Billboards, Heightmaps and more! +* - Flexible Materials system, supporting classic maps and PBR maps +* - Skeletal Animation support (CPU bones-based animation) +* - Shaders support, including Model shaders and Postprocessing shaders +* - Powerful math module for Vector, Matrix and Quaternion operations: [raymath] +* - Audio loading and playing with streaming support (WAV, OGG, MP3, FLAC, XM, MOD) +* - VR stereo rendering with configurable HMD device parameters +* - Bindings to multiple programming languages available! +* +* NOTES: +* One custom font is loaded by default when InitWindow() [core] +* If using OpenGL 3.3 or ES2, one default shader is loaded automatically (internally defined) [rlgl] +* If using OpenGL 3.3 or ES2, several vertex buffers (VAO/VBO) are created to manage lines-triangles-quads +* +* DEPENDENCIES (included): +* [core] rglfw (github.com/glfw/glfw) for window/context management and input (only PLATFORM_DESKTOP) +* [rlgl] glad (github.com/Dav1dde/glad) for OpenGL 3.3 extensions loading (only PLATFORM_DESKTOP) +* [raudio] miniaudio (github.com/dr-soft/miniaudio) for audio device/context management +* +* OPTIONAL DEPENDENCIES (included): +* [core] rgif (Charlie Tangora, Ramon Santamaria) for GIF recording +* [textures] stb_image (Sean Barret) for images loading (BMP, TGA, PNG, JPEG, HDR...) +* [textures] stb_image_write (Sean Barret) for image writting (BMP, TGA, PNG, JPG) +* [textures] stb_image_resize (Sean Barret) for image resizing algorithms +* [textures] stb_perlin (Sean Barret) for Perlin noise image generation +* [text] stb_truetype (Sean Barret) for ttf fonts loading +* [text] stb_rect_pack (Sean Barret) for rectangles packing +* [models] par_shapes (Philip Rideout) for parametric 3d shapes generation +* [models] tinyobj_loader_c (Syoyo Fujita) for models loading (OBJ, MTL) +* [models] cgltf (Johannes Kuhlmann) for models loading (glTF) +* [raudio] stb_vorbis (Sean Barret) for OGG audio loading +* [raudio] dr_flac (David Reid) for FLAC audio file loading +* [raudio] dr_mp3 (David Reid) for MP3 audio file loading +* [raudio] jar_xm (Joshua Reisenauer) for XM audio module loading +* [raudio] jar_mod (Joshua Reisenauer) for MOD audio module loading +* +* +* LICENSE: zlib/libpng +* +* raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software: +* +* Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +**********************************************************************************************/ + + + +//---------------------------------------------------------------------------------- +// Some basic Defines +//---------------------------------------------------------------------------------- + + +#define MAX_TOUCH_POINTS 10 // Maximum number of touch points supported + + + + +//---------------------------------------------------------------------------------- +// Structures Definition +//---------------------------------------------------------------------------------- + + +// Vector2 type +typedef struct Vector2 { + float x; + float y; +} Vector2; + +// Vector3 type +typedef struct Vector3 { + float x; + float y; + float z; +} Vector3; + +// Vector4 type +typedef struct Vector4 { + float x; + float y; + float z; + float w; +} Vector4; + +// Quaternion type, same as Vector4 +typedef Vector4 Quaternion; + +// Matrix type (OpenGL style 4x4 - right handed, column major) +typedef struct Matrix { + float m0, m4, m8, m12; + float m1, m5, m9, m13; + float m2, m6, m10, m14; + float m3, m7, m11, m15; +} Matrix; + +// Color type, RGBA (32bit) +typedef struct Color { + unsigned char r; + unsigned char g; + unsigned char b; + unsigned char a; +} Color; + +// Rectangle type +typedef struct Rectangle { + float x; + float y; + float width; + float height; +} Rectangle; + +// Image type, bpp always RGBA (32bit) +// NOTE: Data stored in CPU memory (RAM) +typedef struct Image { + void *data; // Image raw data + int width; // Image base width + int height; // Image base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) +} Image; + +// Texture2D type +// NOTE: Data stored in GPU memory +typedef struct Texture2D { + unsigned int id; // OpenGL texture id + int width; // Texture base width + int height; // Texture base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) +} Texture2D; + +// Texture type, same as Texture2D +typedef Texture2D Texture; + +// TextureCubemap type, actually, same as Texture2D +typedef Texture2D TextureCubemap; + +// RenderTexture2D type, for texture rendering +typedef struct RenderTexture2D { + unsigned int id; // OpenGL Framebuffer Object (FBO) id + Texture2D texture; // Color buffer attachment texture + Texture2D depth; // Depth buffer attachment texture + bool depthTexture; // Track if depth attachment is a texture or renderbuffer +} RenderTexture2D; + +// RenderTexture type, same as RenderTexture2D +typedef RenderTexture2D RenderTexture; + +// N-Patch layout info +typedef struct NPatchInfo { + Rectangle sourceRec; // Region in the texture + int left; // left border offset + int top; // top border offset + int right; // right border offset + int bottom; // bottom border offset + int type; // layout of the n-patch: 3x3, 1x3 or 3x1 +} NPatchInfo; + +// Font character info +typedef struct CharInfo { + int value; // Character value (Unicode) + int offsetX; // Character offset X when drawing + int offsetY; // Character offset Y when drawing + int advanceX; // Character advance position X + Image image; // Character image data +} CharInfo; + +// Font type, includes texture and charSet array data +typedef struct Font { + int baseSize; // Base size (default chars height) + int charsCount; // Number of characters + Texture2D texture; // Characters texture atlas + Rectangle *recs; // Characters rectangles in texture + CharInfo *chars; // Characters info data +} Font; + + + +// Camera type, defines a camera position/orientation in 3d space +typedef struct Camera3D { + Vector3 position; // Camera position + Vector3 target; // Camera target it looks-at + Vector3 up; // Camera up vector (rotation over its axis) + float fovy; // Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic + int type; // Camera type, defines projection type: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC +} Camera3D; + +typedef Camera3D Camera; // Camera type fallback, defaults to Camera3D + +// Camera2D type, defines a 2d camera +typedef struct Camera2D { + Vector2 offset; // Camera offset (displacement from target) + Vector2 target; // Camera target (rotation and zoom origin) + float rotation; // Camera rotation in degrees + float zoom; // Camera zoom (scaling), should be 1.0f by default +} Camera2D; + +// Vertex data definning a mesh +// NOTE: Data stored in CPU memory (and GPU) +typedef struct Mesh { + int vertexCount; // Number of vertices stored in arrays + int triangleCount; // Number of triangles stored (indexed or not) + + // Default vertex data + float *vertices; // Vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + float *texcoords2; // Vertex second texture coordinates (useful for lightmaps) (shader-location = 5) + float *normals; // Vertex normals (XYZ - 3 components per vertex) (shader-location = 2) + float *tangents; // Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4) + unsigned char *colors; // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3) + unsigned short *indices;// Vertex indices (in case vertex data comes indexed) + + // Animation vertex data + float *animVertices; // Animated vertex positions (after bones transformations) + float *animNormals; // Animated normals (after bones transformations) + int *boneIds; // Vertex bone ids, up to 4 bones influence by vertex (skinning) + float *boneWeights; // Vertex bone weight, up to 4 bones influence by vertex (skinning) + + // OpenGL identifiers + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int *vboId; // OpenGL Vertex Buffer Objects id (default vertex data) +} Mesh; + +// Shader type (generic) +typedef struct Shader { + unsigned int id; // Shader program id + int *locs; // Shader locations array (MAX_SHADER_LOCATIONS) +} Shader; + +// Material texture map +typedef struct MaterialMap { + Texture2D texture; // Material map texture + Color color; // Material map color + float value; // Material map value +} MaterialMap; + +// Material type (generic) +typedef struct Material { + Shader shader; // Material shader + MaterialMap *maps; // Material maps array (MAX_MATERIAL_MAPS) + float *params; // Material generic parameters (if required) +} Material; + +// Transformation properties +typedef struct Transform { + Vector3 translation; // Translation + Quaternion rotation; // Rotation + Vector3 scale; // Scale +} Transform; + +// Bone information +typedef struct BoneInfo { + char name[32]; // Bone name + int parent; // Bone parent +} BoneInfo; + +// Model type +typedef struct Model { + Matrix transform; // Local transform matrix + + int meshCount; // Number of meshes + Mesh *meshes; // Meshes array + + int materialCount; // Number of materials + Material *materials; // Materials array + int *meshMaterial; // Mesh material number + + // Animation data + int boneCount; // Number of bones + BoneInfo *bones; // Bones information (skeleton) + Transform *bindPose; // Bones base transformation (pose) +} Model; + +// Model animation +typedef struct ModelAnimation { + int boneCount; // Number of bones + BoneInfo *bones; // Bones information (skeleton) + + int frameCount; // Number of animation frames + Transform **framePoses; // Poses array by frame +} ModelAnimation; + +// Ray type (useful for raycast) +typedef struct Ray { + Vector3 position; // Ray position (origin) + Vector3 direction; // Ray direction +} Ray; + +// Raycast hit information +typedef struct RayHitInfo { + bool hit; // Did the ray hit something? + float distance; // Distance to nearest hit + Vector3 position; // Position of nearest hit + Vector3 normal; // Surface normal of hit +} RayHitInfo; + +// Bounding box type +typedef struct BoundingBox { + Vector3 min; // Minimum vertex box-corner + Vector3 max; // Maximum vertex box-corner +} BoundingBox; + +// Wave type, defines audio wave data +typedef struct Wave { + unsigned int sampleCount; // Total number of samples + unsigned int sampleRate; // Frequency (samples per second) + unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) + unsigned int channels; // Number of channels (1-mono, 2-stereo) + void *data; // Buffer data pointer +} Wave; + +typedef struct rAudioBuffer rAudioBuffer; + +// Audio stream type +// NOTE: Useful to create custom audio streams not bound to a specific file +typedef struct AudioStream { + unsigned int sampleRate; // Frequency (samples per second) + unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) + unsigned int channels; // Number of channels (1-mono, 2-stereo) + + rAudioBuffer *buffer; // Pointer to internal data used by the audio system +} AudioStream; + +// Sound source type +typedef struct Sound { + unsigned int sampleCount; // Total number of samples + AudioStream stream; // Audio stream +} Sound; + +// Music stream type (audio file streaming from memory) +// NOTE: Anything longer than ~10 seconds should be streamed +typedef struct Music { + int ctxType; // Type of music context (audio filetype) + void *ctxData; // Audio context data, depends on type + + unsigned int sampleCount; // Total number of samples + unsigned int loopCount; // Loops count (times music will play), 0 means infinite loop + + AudioStream stream; // Audio stream +} Music; + +// Head-Mounted-Display device parameters +typedef struct VrDeviceInfo { + int hResolution; // HMD horizontal resolution in pixels + int vResolution; // HMD vertical resolution in pixels + float hScreenSize; // HMD horizontal size in meters + float vScreenSize; // HMD vertical size in meters + float vScreenCenter; // HMD screen center in meters + float eyeToScreenDistance; // HMD distance between eye and display in meters + float lensSeparationDistance; // HMD lens separation distance in meters + float interpupillaryDistance; // HMD IPD (distance between pupils) in meters + float lensDistortionValues[4]; // HMD lens distortion constant parameters + float chromaAbCorrection[4]; // HMD chromatic aberration correction parameters +} VrDeviceInfo; + +//---------------------------------------------------------------------------------- +// Enumerators Definition +//---------------------------------------------------------------------------------- +// System config flags +// NOTE: Used for bit masks +typedef enum { + FLAG_RESERVED = 1, // Reserved + FLAG_FULLSCREEN_MODE = 2, // Set to run program in fullscreen + FLAG_WINDOW_RESIZABLE = 4, // Set to allow resizable window + FLAG_WINDOW_UNDECORATED = 8, // Set to disable window decoration (frame and buttons) + FLAG_WINDOW_TRANSPARENT = 16, // Set to allow transparent window + FLAG_WINDOW_HIDDEN = 128, // Set to create the window initially hidden + FLAG_WINDOW_ALWAYS_RUN = 256, // Set to allow windows running while minimized + FLAG_MSAA_4X_HINT = 32, // Set to try enabling MSAA 4X + FLAG_VSYNC_HINT = 64 // Set to try enabling V-Sync on GPU +} ConfigFlag; + +// Trace log type +typedef enum { + LOG_ALL = 0, // Display all logs + LOG_TRACE, + LOG_DEBUG, + LOG_INFO, + LOG_WARNING, + LOG_ERROR, + LOG_FATAL, + LOG_NONE // Disable logging +} TraceLogType; + +// Keyboard keys +typedef enum { + // Alphanumeric keys + KEY_APOSTROPHE = 39, + KEY_COMMA = 44, + KEY_MINUS = 45, + KEY_PERIOD = 46, + KEY_SLASH = 47, + KEY_ZERO = 48, + KEY_ONE = 49, + KEY_TWO = 50, + KEY_THREE = 51, + KEY_FOUR = 52, + KEY_FIVE = 53, + KEY_SIX = 54, + KEY_SEVEN = 55, + KEY_EIGHT = 56, + KEY_NINE = 57, + KEY_SEMICOLON = 59, + KEY_EQUAL = 61, + KEY_A = 65, + KEY_B = 66, + KEY_C = 67, + KEY_D = 68, + KEY_E = 69, + KEY_F = 70, + KEY_G = 71, + KEY_H = 72, + KEY_I = 73, + KEY_J = 74, + KEY_K = 75, + KEY_L = 76, + KEY_M = 77, + KEY_N = 78, + KEY_O = 79, + KEY_P = 80, + KEY_Q = 81, + KEY_R = 82, + KEY_S = 83, + KEY_T = 84, + KEY_U = 85, + KEY_V = 86, + KEY_W = 87, + KEY_X = 88, + KEY_Y = 89, + KEY_Z = 90, + + // Function keys + KEY_SPACE = 32, + KEY_ESCAPE = 256, + KEY_ENTER = 257, + KEY_TAB = 258, + KEY_BACKSPACE = 259, + KEY_INSERT = 260, + KEY_DELETE = 261, + KEY_RIGHT = 262, + KEY_LEFT = 263, + KEY_DOWN = 264, + KEY_UP = 265, + KEY_PAGE_UP = 266, + KEY_PAGE_DOWN = 267, + KEY_HOME = 268, + KEY_END = 269, + KEY_CAPS_LOCK = 280, + KEY_SCROLL_LOCK = 281, + KEY_NUM_LOCK = 282, + KEY_PRINT_SCREEN = 283, + KEY_PAUSE = 284, + KEY_F1 = 290, + KEY_F2 = 291, + KEY_F3 = 292, + KEY_F4 = 293, + KEY_F5 = 294, + KEY_F6 = 295, + KEY_F7 = 296, + KEY_F8 = 297, + KEY_F9 = 298, + KEY_F10 = 299, + KEY_F11 = 300, + KEY_F12 = 301, + KEY_LEFT_SHIFT = 340, + KEY_LEFT_CONTROL = 341, + KEY_LEFT_ALT = 342, + KEY_LEFT_SUPER = 343, + KEY_RIGHT_SHIFT = 344, + KEY_RIGHT_CONTROL = 345, + KEY_RIGHT_ALT = 346, + KEY_RIGHT_SUPER = 347, + KEY_KB_MENU = 348, + KEY_LEFT_BRACKET = 91, + KEY_BACKSLASH = 92, + KEY_RIGHT_BRACKET = 93, + KEY_GRAVE = 96, + + // Keypad keys + KEY_KP_0 = 320, + KEY_KP_1 = 321, + KEY_KP_2 = 322, + KEY_KP_3 = 323, + KEY_KP_4 = 324, + KEY_KP_5 = 325, + KEY_KP_6 = 326, + KEY_KP_7 = 327, + KEY_KP_8 = 328, + KEY_KP_9 = 329, + KEY_KP_DECIMAL = 330, + KEY_KP_DIVIDE = 331, + KEY_KP_MULTIPLY = 332, + KEY_KP_SUBTRACT = 333, + KEY_KP_ADD = 334, + KEY_KP_ENTER = 335, + KEY_KP_EQUAL = 336 +} KeyboardKey; + +// Android buttons +typedef enum { + KEY_BACK = 4, + KEY_MENU = 82, + KEY_VOLUME_UP = 24, + KEY_VOLUME_DOWN = 25 +} AndroidButton; + +// Mouse buttons +typedef enum { + MOUSE_LEFT_BUTTON = 0, + MOUSE_RIGHT_BUTTON = 1, + MOUSE_MIDDLE_BUTTON = 2 +} MouseButton; + +// Gamepad number +typedef enum { + GAMEPAD_PLAYER1 = 0, + GAMEPAD_PLAYER2 = 1, + GAMEPAD_PLAYER3 = 2, + GAMEPAD_PLAYER4 = 3 +} GamepadNumber; + +// Gamepad Buttons +typedef enum { + // This is here just for error checking + GAMEPAD_BUTTON_UNKNOWN = 0, + + // This is normally a DPAD + GAMEPAD_BUTTON_LEFT_FACE_UP, + GAMEPAD_BUTTON_LEFT_FACE_RIGHT, + GAMEPAD_BUTTON_LEFT_FACE_DOWN, + GAMEPAD_BUTTON_LEFT_FACE_LEFT, + + // This normally corresponds with PlayStation and Xbox controllers + // XBOX: [Y,X,A,B] + // PS3: [Triangle,Square,Cross,Circle] + // No support for 6 button controllers though.. + GAMEPAD_BUTTON_RIGHT_FACE_UP, + GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, + GAMEPAD_BUTTON_RIGHT_FACE_DOWN, + GAMEPAD_BUTTON_RIGHT_FACE_LEFT, + + // Triggers + GAMEPAD_BUTTON_LEFT_TRIGGER_1, + GAMEPAD_BUTTON_LEFT_TRIGGER_2, + GAMEPAD_BUTTON_RIGHT_TRIGGER_1, + GAMEPAD_BUTTON_RIGHT_TRIGGER_2, + + // These are buttons in the center of the gamepad + GAMEPAD_BUTTON_MIDDLE_LEFT, //PS3 Select + GAMEPAD_BUTTON_MIDDLE, //PS Button/XBOX Button + GAMEPAD_BUTTON_MIDDLE_RIGHT, //PS3 Start + + // These are the joystick press in buttons + GAMEPAD_BUTTON_LEFT_THUMB, + GAMEPAD_BUTTON_RIGHT_THUMB +} GamepadButton; + +typedef enum { + // This is here just for error checking + GAMEPAD_AXIS_UNKNOWN = 0, + + // Left stick + GAMEPAD_AXIS_LEFT_X, + GAMEPAD_AXIS_LEFT_Y, + + // Right stick + GAMEPAD_AXIS_RIGHT_X, + GAMEPAD_AXIS_RIGHT_Y, + + // Pressure levels for the back triggers + GAMEPAD_AXIS_LEFT_TRIGGER, // [1..-1] (pressure-level) + GAMEPAD_AXIS_RIGHT_TRIGGER // [1..-1] (pressure-level) +} GamepadAxis; + +// Shader location point type +typedef enum { + LOC_VERTEX_POSITION = 0, + LOC_VERTEX_TEXCOORD01, + LOC_VERTEX_TEXCOORD02, + LOC_VERTEX_NORMAL, + LOC_VERTEX_TANGENT, + LOC_VERTEX_COLOR, + LOC_MATRIX_MVP, + LOC_MATRIX_MODEL, + LOC_MATRIX_VIEW, + LOC_MATRIX_PROJECTION, + LOC_VECTOR_VIEW, + LOC_COLOR_DIFFUSE, + LOC_COLOR_SPECULAR, + LOC_COLOR_AMBIENT, + LOC_MAP_ALBEDO, // LOC_MAP_DIFFUSE + LOC_MAP_METALNESS, // LOC_MAP_SPECULAR + LOC_MAP_NORMAL, + LOC_MAP_ROUGHNESS, + LOC_MAP_OCCLUSION, + LOC_MAP_EMISSION, + LOC_MAP_HEIGHT, + LOC_MAP_CUBEMAP, + LOC_MAP_IRRADIANCE, + LOC_MAP_PREFILTER, + LOC_MAP_BRDF +} ShaderLocationIndex; + +#define LOC_MAP_DIFFUSE 14 +#define LOC_MAP_SPECULAR 15 + +// Shader uniform data types +typedef enum { + UNIFORM_FLOAT = 0, + UNIFORM_VEC2, + UNIFORM_VEC3, + UNIFORM_VEC4, + UNIFORM_INT, + UNIFORM_IVEC2, + UNIFORM_IVEC3, + UNIFORM_IVEC4, + UNIFORM_SAMPLER2D +} ShaderUniformDataType; + +// Material map type +typedef enum { + MAP_ALBEDO = 0, // MAP_DIFFUSE + MAP_METALNESS = 1, // MAP_SPECULAR + MAP_NORMAL = 2, + MAP_ROUGHNESS = 3, + MAP_OCCLUSION, + MAP_EMISSION, + MAP_HEIGHT, + MAP_CUBEMAP, // NOTE: Uses GL_TEXTURE_CUBE_MAP + MAP_IRRADIANCE, // NOTE: Uses GL_TEXTURE_CUBE_MAP + MAP_PREFILTER, // NOTE: Uses GL_TEXTURE_CUBE_MAP + MAP_BRDF +} MaterialMapType; + +#define MAP_DIFFUSE 0 +#define MAP_SPECULAR 1 + +// Pixel formats +// NOTE: Support depends on OpenGL version and platform +typedef enum { + UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) + UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) + UNCOMPRESSED_R5G6B5, // 16 bpp + UNCOMPRESSED_R8G8B8, // 24 bpp + UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) + UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) + UNCOMPRESSED_R8G8B8A8, // 32 bpp + UNCOMPRESSED_R32, // 32 bpp (1 channel - float) + UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) + UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) + COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) + COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) + COMPRESSED_DXT3_RGBA, // 8 bpp + COMPRESSED_DXT5_RGBA, // 8 bpp + COMPRESSED_ETC1_RGB, // 4 bpp + COMPRESSED_ETC2_RGB, // 4 bpp + COMPRESSED_ETC2_EAC_RGBA, // 8 bpp + COMPRESSED_PVRT_RGB, // 4 bpp + COMPRESSED_PVRT_RGBA, // 4 bpp + COMPRESSED_ASTC_4x4_RGBA, // 8 bpp + COMPRESSED_ASTC_8x8_RGBA // 2 bpp +} PixelFormat; + +// Texture parameters: filter mode +// NOTE 1: Filtering considers mipmaps if available in the texture +// NOTE 2: Filter is accordingly set for minification and magnification +typedef enum { + FILTER_POINT = 0, // No filter, just pixel aproximation + FILTER_BILINEAR, // Linear filtering + FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) + FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x + FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x + FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x +} TextureFilterMode; + +// Cubemap layout type +typedef enum { + CUBEMAP_AUTO_DETECT = 0, // Automatically detect layout type + CUBEMAP_LINE_VERTICAL, // Layout is defined by a vertical line with faces + CUBEMAP_LINE_HORIZONTAL, // Layout is defined by an horizontal line with faces + CUBEMAP_CROSS_THREE_BY_FOUR, // Layout is defined by a 3x4 cross with cubemap faces + CUBEMAP_CROSS_FOUR_BY_THREE, // Layout is defined by a 4x3 cross with cubemap faces + CUBEMAP_PANORAMA // Layout is defined by a panorama image (equirectangular map) +} CubemapLayoutType; + +// Texture parameters: wrap mode +typedef enum { + WRAP_REPEAT = 0, // Repeats texture in tiled mode + WRAP_CLAMP, // Clamps texture to edge pixel in tiled mode + WRAP_MIRROR_REPEAT, // Mirrors and repeats the texture in tiled mode + WRAP_MIRROR_CLAMP // Mirrors and clamps to border the texture in tiled mode +} TextureWrapMode; + +// Font type, defines generation method +typedef enum { + FONT_DEFAULT = 0, // Default font generation, anti-aliased + FONT_BITMAP, // Bitmap font generation, no anti-aliasing + FONT_SDF // SDF font generation, requires external shader +} FontType; + +// Color blending modes (pre-defined) +typedef enum { + BLEND_ALPHA = 0, // Blend textures considering alpha (default) + BLEND_ADDITIVE, // Blend textures adding colors + BLEND_MULTIPLIED // Blend textures multiplying colors +} BlendMode; + +// Gestures type +// NOTE: It could be used as flags to enable only some gestures +typedef enum { + GESTURE_NONE = 0, + GESTURE_TAP = 1, + GESTURE_DOUBLETAP = 2, + GESTURE_HOLD = 4, + GESTURE_DRAG = 8, + GESTURE_SWIPE_RIGHT = 16, + GESTURE_SWIPE_LEFT = 32, + GESTURE_SWIPE_UP = 64, + GESTURE_SWIPE_DOWN = 128, + GESTURE_PINCH_IN = 256, + GESTURE_PINCH_OUT = 512 +} GestureType; + +// Camera system modes +typedef enum { + CAMERA_CUSTOM = 0, + CAMERA_FREE, + CAMERA_ORBITAL, + CAMERA_FIRST_PERSON, + CAMERA_THIRD_PERSON +} CameraMode; + +// Camera projection modes +typedef enum { + CAMERA_PERSPECTIVE = 0, + CAMERA_ORTHOGRAPHIC +} CameraType; + +// Type of n-patch +typedef enum { + NPT_9PATCH = 0, // Npatch defined by 3x3 tiles + NPT_3PATCH_VERTICAL, // Npatch defined by 1x3 tiles + NPT_3PATCH_HORIZONTAL // Npatch defined by 3x1 tiles +} NPatchType; + + + + + +//------------------------------------------------------------------------------------ +// Global Variables Definition +//------------------------------------------------------------------------------------ +// It's lonely here... + +//------------------------------------------------------------------------------------ +// Window and Graphics Device Functions (Module: core) +//------------------------------------------------------------------------------------ + +// Window-related functions +RLAPI void InitWindow(int width, int height, const char *title); // Initialize window and OpenGL context +RLAPI bool WindowShouldClose(void); // Check if KEY_ESCAPE pressed or Close icon pressed +RLAPI void CloseWindow(void); // Close window and unload OpenGL context +RLAPI bool IsWindowReady(void); // Check if window has been initialized successfully +RLAPI bool IsWindowMinimized(void); // Check if window has been minimized (or lost focus) +RLAPI bool IsWindowResized(void); // Check if window has been resized +RLAPI bool IsWindowHidden(void); // Check if window is currently hidden +RLAPI void ToggleFullscreen(void); // Toggle fullscreen mode (only PLATFORM_DESKTOP) +RLAPI void UnhideWindow(void); // Show the window +RLAPI void HideWindow(void); // Hide the window +RLAPI void SetWindowIcon(Image image); // Set icon for window (only PLATFORM_DESKTOP) +RLAPI void SetWindowTitle(const char *title); // Set title for window (only PLATFORM_DESKTOP) +RLAPI void SetWindowPosition(int x, int y); // Set window position on screen (only PLATFORM_DESKTOP) +RLAPI void SetWindowMonitor(int monitor); // Set monitor for the current window (fullscreen mode) +RLAPI void SetWindowMinSize(int width, int height); // Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE) +RLAPI void SetWindowSize(int width, int height); // Set window dimensions +RLAPI void *GetWindowHandle(void); // Get native window handle +RLAPI int GetScreenWidth(void); // Get current screen width +RLAPI int GetScreenHeight(void); // Get current screen height +RLAPI int GetMonitorCount(void); // Get number of connected monitors +RLAPI int GetMonitorWidth(int monitor); // Get primary monitor width +RLAPI int GetMonitorHeight(int monitor); // Get primary monitor height +RLAPI int GetMonitorPhysicalWidth(int monitor); // Get primary monitor physical width in millimetres +RLAPI int GetMonitorPhysicalHeight(int monitor); // Get primary monitor physical height in millimetres +RLAPI Vector2 GetWindowPosition(void); // Get window position XY on monitor +RLAPI const char *GetMonitorName(int monitor); // Get the human-readable, UTF-8 encoded name of the primary monitor +RLAPI const char *GetClipboardText(void); // Get clipboard text content +RLAPI void SetClipboardText(const char *text); // Set clipboard text content + +// Cursor-related functions +RLAPI void ShowCursor(void); // Shows cursor +RLAPI void HideCursor(void); // Hides cursor +RLAPI bool IsCursorHidden(void); // Check if cursor is not visible +RLAPI void EnableCursor(void); // Enables cursor (unlock cursor) +RLAPI void DisableCursor(void); // Disables cursor (lock cursor) + +// Drawing-related functions +RLAPI void ClearBackground(Color color); // Set background color (framebuffer clear color) +RLAPI void BeginDrawing(void); // Setup canvas (framebuffer) to start drawing +RLAPI void EndDrawing(void); // End canvas drawing and swap buffers (double buffering) +RLAPI void BeginMode2D(Camera2D camera); // Initialize 2D mode with custom camera (2D) +RLAPI void EndMode2D(void); // Ends 2D mode with custom camera +RLAPI void BeginMode3D(Camera3D camera); // Initializes 3D mode with custom camera (3D) +RLAPI void EndMode3D(void); // Ends 3D mode and returns to default 2D orthographic mode +RLAPI void BeginTextureMode(RenderTexture2D target); // Initializes render texture for drawing +RLAPI void EndTextureMode(void); // Ends drawing to render texture +RLAPI void BeginScissorMode(int x, int y, int width, int height); // Begin scissor mode (define screen area for following drawing) +RLAPI void EndScissorMode(void); // End scissor mode + +// Screen-space-related functions +RLAPI Ray GetMouseRay(Vector2 mousePosition, Camera camera); // Returns a ray trace from mouse position +RLAPI Matrix GetCameraMatrix(Camera camera); // Returns camera transform matrix (view matrix) +RLAPI Matrix GetCameraMatrix2D(Camera2D camera); // Returns camera 2d transform matrix +RLAPI Vector2 GetWorldToScreen(Vector3 position, Camera camera); // Returns the screen space position for a 3d world space position +RLAPI Vector2 GetWorldToScreenEx(Vector3 position, Camera camera, int width, int height); // Returns size position for a 3d world space position +RLAPI Vector2 GetWorldToScreen2D(Vector2 position, Camera2D camera); // Returns the screen space position for a 2d camera world space position +RLAPI Vector2 GetScreenToWorld2D(Vector2 position, Camera2D camera); // Returns the world space position for a 2d camera screen space position + +// Timing-related functions +RLAPI void SetTargetFPS(int fps); // Set target FPS (maximum) +RLAPI int GetFPS(void); // Returns current FPS +RLAPI float GetFrameTime(void); // Returns time in seconds for last frame drawn +RLAPI double GetTime(void); // Returns elapsed time in seconds since InitWindow() + +// Color-related functions +RLAPI int ColorToInt(Color color); // Returns hexadecimal value for a Color +RLAPI Vector4 ColorNormalize(Color color); // Returns color normalized as float [0..1] +RLAPI Color ColorFromNormalized(Vector4 normalized); // Returns color from normalized values [0..1] +RLAPI Vector3 ColorToHSV(Color color); // Returns HSV values for a Color +RLAPI Color ColorFromHSV(Vector3 hsv); // Returns a Color from HSV values +RLAPI Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value +RLAPI Color Fade(Color color, float alpha); // Color fade-in or fade-out, alpha goes from 0.0f to 1.0f + +// Misc. functions +RLAPI void SetConfigFlags(unsigned int flags); // Setup window configuration flags (view FLAGS) +RLAPI void SetTraceLogLevel(int logType); // Set the current threshold (minimum) log level +RLAPI void SetTraceLogExit(int logType); // Set the exit threshold (minimum) log level +RLAPI void TraceLog(int logType, const char *text, ...); // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR) +RLAPI void TakeScreenshot(const char *fileName); // Takes a screenshot of current screen (saved a .png) +RLAPI int GetRandomValue(int min, int max); // Returns a random value between min and max (both included) + +// Files management functions +RLAPI bool FileExists(const char *fileName); // Check if file exists +RLAPI bool IsFileExtension(const char *fileName, const char *ext);// Check file extension +RLAPI bool DirectoryExists(const char *dirPath); // Check if a directory path exists +RLAPI const char *GetExtension(const char *fileName); // Get pointer to extension for a filename string +RLAPI const char *GetFileName(const char *filePath); // Get pointer to filename for a path string +RLAPI const char *GetFileNameWithoutExt(const char *filePath); // Get filename string without extension (uses static string) +RLAPI const char *GetDirectoryPath(const char *filePath); // Get full path for a given fileName with path (uses static string) +RLAPI const char *GetPrevDirectoryPath(const char *dirPath); // Get previous directory path for a given path (uses static string) +RLAPI const char *GetWorkingDirectory(void); // Get current working directory (uses static string) +RLAPI char **GetDirectoryFiles(const char *dirPath, int *count); // Get filenames in a directory path (memory should be freed) +RLAPI void ClearDirectoryFiles(void); // Clear directory files paths buffers (free memory) +RLAPI bool ChangeDirectory(const char *dir); // Change working directory, returns true if success +RLAPI bool IsFileDropped(void); // Check if a file has been dropped into window +RLAPI char **GetDroppedFiles(int *count); // Get dropped files names (memory should be freed) +RLAPI void ClearDroppedFiles(void); // Clear dropped files paths buffer (free memory) +RLAPI long GetFileModTime(const char *fileName); // Get file modification time (last write time) + +RLAPI unsigned char *CompressData(unsigned char *data, int dataLength, int *compDataLength); // Compress data (DEFLATE algorythm) +RLAPI unsigned char *DecompressData(unsigned char *compData, int compDataLength, int *dataLength); // Decompress data (DEFLATE algorythm) + +// Persistent storage management +RLAPI void StorageSaveValue(int position, int value); // Save integer value to storage file (to defined position) +RLAPI int StorageLoadValue(int position); // Load integer value from storage file (from defined position) + +RLAPI void OpenURL(const char *url); // Open URL with default system browser (if available) + +//------------------------------------------------------------------------------------ +// Input Handling Functions (Module: core) +//------------------------------------------------------------------------------------ + +// Input-related functions: keyboard +RLAPI bool IsKeyPressed(int key); // Detect if a key has been pressed once +RLAPI bool IsKeyDown(int key); // Detect if a key is being pressed +RLAPI bool IsKeyReleased(int key); // Detect if a key has been released once +RLAPI bool IsKeyUp(int key); // Detect if a key is NOT being pressed +RLAPI void SetExitKey(int key); // Set a custom key to exit program (default is ESC) +RLAPI int GetKeyPressed(void); // Get key pressed, call it multiple times for chars queued + +// Input-related functions: gamepads +RLAPI bool IsGamepadAvailable(int gamepad); // Detect if a gamepad is available +RLAPI bool IsGamepadName(int gamepad, const char *name); // Check gamepad name (if available) +RLAPI const char *GetGamepadName(int gamepad); // Return gamepad internal name id +RLAPI bool IsGamepadButtonPressed(int gamepad, int button); // Detect if a gamepad button has been pressed once +RLAPI bool IsGamepadButtonDown(int gamepad, int button); // Detect if a gamepad button is being pressed +RLAPI bool IsGamepadButtonReleased(int gamepad, int button); // Detect if a gamepad button has been released once +RLAPI bool IsGamepadButtonUp(int gamepad, int button); // Detect if a gamepad button is NOT being pressed +RLAPI int GetGamepadButtonPressed(void); // Get the last gamepad button pressed +RLAPI int GetGamepadAxisCount(int gamepad); // Return gamepad axis count for a gamepad +RLAPI float GetGamepadAxisMovement(int gamepad, int axis); // Return axis movement value for a gamepad axis + +// Input-related functions: mouse +RLAPI bool IsMouseButtonPressed(int button); // Detect if a mouse button has been pressed once +RLAPI bool IsMouseButtonDown(int button); // Detect if a mouse button is being pressed +RLAPI bool IsMouseButtonReleased(int button); // Detect if a mouse button has been released once +RLAPI bool IsMouseButtonUp(int button); // Detect if a mouse button is NOT being pressed +RLAPI int GetMouseX(void); // Returns mouse position X +RLAPI int GetMouseY(void); // Returns mouse position Y +RLAPI Vector2 GetMousePosition(void); // Returns mouse position XY +RLAPI void SetMousePosition(int x, int y); // Set mouse position XY +RLAPI void SetMouseOffset(int offsetX, int offsetY); // Set mouse offset +RLAPI void SetMouseScale(float scaleX, float scaleY); // Set mouse scaling +RLAPI int GetMouseWheelMove(void); // Returns mouse wheel movement Y + +// Input-related functions: touch +RLAPI int GetTouchX(void); // Returns touch position X for touch point 0 (relative to screen size) +RLAPI int GetTouchY(void); // Returns touch position Y for touch point 0 (relative to screen size) +RLAPI Vector2 GetTouchPosition(int index); // Returns touch position XY for a touch point index (relative to screen size) + +//------------------------------------------------------------------------------------ +// Gestures and Touch Handling Functions (Module: gestures) +//------------------------------------------------------------------------------------ +RLAPI void SetGesturesEnabled(unsigned int gestureFlags); // Enable a set of gestures using flags +RLAPI bool IsGestureDetected(int gesture); // Check if a gesture have been detected +RLAPI int GetGestureDetected(void); // Get latest detected gesture +RLAPI int GetTouchPointsCount(void); // Get touch points count +RLAPI float GetGestureHoldDuration(void); // Get gesture hold time in milliseconds +RLAPI Vector2 GetGestureDragVector(void); // Get gesture drag vector +RLAPI float GetGestureDragAngle(void); // Get gesture drag angle +RLAPI Vector2 GetGesturePinchVector(void); // Get gesture pinch delta +RLAPI float GetGesturePinchAngle(void); // Get gesture pinch angle + +//------------------------------------------------------------------------------------ +// Camera System Functions (Module: camera) +//------------------------------------------------------------------------------------ +RLAPI void SetCameraMode(Camera camera, int mode); // Set camera mode (multiple camera modes available) +RLAPI void UpdateCamera(Camera *camera); // Update camera position for selected mode + +RLAPI void SetCameraPanControl(int panKey); // Set camera pan key to combine with mouse movement (free camera) +RLAPI void SetCameraAltControl(int altKey); // Set camera alt key to combine with mouse movement (free camera) +RLAPI void SetCameraSmoothZoomControl(int szKey); // Set camera smooth zoom key to combine with mouse (free camera) +RLAPI void SetCameraMoveControls(int frontKey, int backKey, int rightKey, int leftKey, int upKey, int downKey); // Set camera move controls (1st person and 3rd person cameras) + +//------------------------------------------------------------------------------------ +// Basic Shapes Drawing Functions (Module: shapes) +//------------------------------------------------------------------------------------ + +// Basic shapes drawing functions +RLAPI void DrawPixel(int posX, int posY, Color color); // Draw a pixel +RLAPI void DrawPixelV(Vector2 position, Color color); // Draw a pixel (Vector version) +RLAPI void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw a line +RLAPI void DrawLineV(Vector2 startPos, Vector2 endPos, Color color); // Draw a line (Vector version) +RLAPI void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line defining thickness +RLAPI void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line using cubic-bezier curves in-out +RLAPI void DrawLineStrip(Vector2 *points, int numPoints, Color color); // Draw lines sequence +RLAPI void DrawCircle(int centerX, int centerY, float radius, Color color); // Draw a color-filled circle +RLAPI void DrawCircleSector(Vector2 center, float radius, int startAngle, int endAngle, int segments, Color color); // Draw a piece of a circle +RLAPI void DrawCircleSectorLines(Vector2 center, float radius, int startAngle, int endAngle, int segments, Color color); // Draw circle sector outline +RLAPI void DrawCircleGradient(int centerX, int centerY, float radius, Color color1, Color color2); // Draw a gradient-filled circle +RLAPI void DrawCircleV(Vector2 center, float radius, Color color); // Draw a color-filled circle (Vector version) +RLAPI void DrawCircleLines(int centerX, int centerY, float radius, Color color); // Draw circle outline +RLAPI void DrawEllipse(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse +RLAPI void DrawEllipseLines(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse outline +RLAPI void DrawRing(Vector2 center, float innerRadius, float outerRadius, int startAngle, int endAngle, int segments, Color color); // Draw ring +RLAPI void DrawRingLines(Vector2 center, float innerRadius, float outerRadius, int startAngle, int endAngle, int segments, Color color); // Draw ring outline +RLAPI void DrawRectangle(int posX, int posY, int width, int height, Color color); // Draw a color-filled rectangle +RLAPI void DrawRectangleV(Vector2 position, Vector2 size, Color color); // Draw a color-filled rectangle (Vector version) +RLAPI void DrawRectangleRec(Rectangle rec, Color color); // Draw a color-filled rectangle +RLAPI void DrawRectanglePro(Rectangle rec, Vector2 origin, float rotation, Color color); // Draw a color-filled rectangle with pro parameters +RLAPI void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2);// Draw a vertical-gradient-filled rectangle +RLAPI void DrawRectangleGradientH(int posX, int posY, int width, int height, Color color1, Color color2);// Draw a horizontal-gradient-filled rectangle +RLAPI void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // Draw a gradient-filled rectangle with custom vertex colors +RLAPI void DrawRectangleLines(int posX, int posY, int width, int height, Color color); // Draw rectangle outline +RLAPI void DrawRectangleLinesEx(Rectangle rec, int lineThick, Color color); // Draw rectangle outline with extended parameters +RLAPI void DrawRectangleRounded(Rectangle rec, float roundness, int segments, Color color); // Draw rectangle with rounded edges +RLAPI void DrawRectangleRoundedLines(Rectangle rec, float roundness, int segments, int lineThick, Color color); // Draw rectangle with rounded edges outline +RLAPI void DrawTriangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) +RLAPI void DrawTriangleLines(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw triangle outline (vertex in counter-clockwise order!) +RLAPI void DrawTriangleFan(Vector2 *points, int numPoints, Color color); // Draw a triangle fan defined by points (first vertex is the center) +RLAPI void DrawTriangleStrip(Vector2 *points, int pointsCount, Color color); // Draw a triangle strip defined by points +RLAPI void DrawPoly(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a regular polygon (Vector version) +RLAPI void DrawPolyLines(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a polygon outline of n sides + +RLAPI void SetShapesTexture(Texture2D texture, Rectangle source); // Define default texture used to draw shapes + +// Basic shapes collision detection functions +RLAPI bool CheckCollisionRecs(Rectangle rec1, Rectangle rec2); // Check collision between two rectangles +RLAPI bool CheckCollisionCircles(Vector2 center1, float radius1, Vector2 center2, float radius2); // Check collision between two circles +RLAPI bool CheckCollisionCircleRec(Vector2 center, float radius, Rectangle rec); // Check collision between circle and rectangle +RLAPI Rectangle GetCollisionRec(Rectangle rec1, Rectangle rec2); // Get collision rectangle for two rectangles collision +RLAPI bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle +RLAPI bool CheckCollisionPointCircle(Vector2 point, Vector2 center, float radius); // Check if point is inside circle +RLAPI bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3); // Check if point is inside a triangle + +//------------------------------------------------------------------------------------ +// Texture Loading and Drawing Functions (Module: textures) +//------------------------------------------------------------------------------------ + +// Image/Texture2D data loading/unloading/saving functions +RLAPI Image LoadImage(const char *fileName); // Load image from file into CPU memory (RAM) +RLAPI Image LoadImageEx(Color *pixels, int width, int height); // Load image from Color array data (RGBA - 32bit) +RLAPI Image LoadImagePro(void *data, int width, int height, int format); // Load image from raw data with parameters +RLAPI Image LoadImageRaw(const char *fileName, int width, int height, int format, int headerSize); // Load image from RAW file data +RLAPI void ExportImage(Image image, const char *fileName); // Export image data to file +RLAPI void ExportImageAsCode(Image image, const char *fileName); // Export image as code file defining an array of bytes +RLAPI Texture2D LoadTexture(const char *fileName); // Load texture from file into GPU memory (VRAM) +RLAPI Texture2D LoadTextureFromImage(Image image); // Load texture from image data +RLAPI TextureCubemap LoadTextureCubemap(Image image, int layoutType); // Load cubemap from image, multiple image cubemap layouts supported +RLAPI RenderTexture2D LoadRenderTexture(int width, int height); // Load texture for rendering (framebuffer) +RLAPI void UnloadImage(Image image); // Unload image from CPU memory (RAM) +RLAPI void UnloadTexture(Texture2D texture); // Unload texture from GPU memory (VRAM) +RLAPI void UnloadRenderTexture(RenderTexture2D target); // Unload render texture from GPU memory (VRAM) +RLAPI Color *GetImageData(Image image); // Get pixel data from image as a Color struct array +RLAPI Vector4 *GetImageDataNormalized(Image image); // Get pixel data from image as Vector4 array (float normalized) +RLAPI Rectangle GetImageAlphaBorder(Image image, float threshold); // Get image alpha border rectangle +RLAPI int GetPixelDataSize(int width, int height, int format); // Get pixel data size in bytes (image or texture) +RLAPI Image GetTextureData(Texture2D texture); // Get pixel data from GPU texture and return an Image +RLAPI Image GetScreenData(void); // Get pixel data from screen buffer and return an Image (screenshot) +RLAPI void UpdateTexture(Texture2D texture, const void *pixels); // Update GPU texture with new data + +// Image manipulation functions +RLAPI Image ImageCopy(Image image); // Create an image duplicate (useful for transformations) +RLAPI Image ImageFromImage(Image image, Rectangle rec); // Create an image from another image piece +RLAPI void ImageToPOT(Image *image, Color fillColor); // Convert image to POT (power-of-two) +RLAPI void ImageFormat(Image *image, int newFormat); // Convert image data to desired format +RLAPI void ImageAlphaMask(Image *image, Image alphaMask); // Apply alpha mask to image +RLAPI void ImageAlphaClear(Image *image, Color color, float threshold); // Clear alpha channel to desired color +RLAPI void ImageAlphaCrop(Image *image, float threshold); // Crop image depending on alpha value +RLAPI void ImageAlphaPremultiply(Image *image); // Premultiply alpha channel +RLAPI void ImageCrop(Image *image, Rectangle crop); // Crop an image to a defined rectangle +RLAPI void ImageResize(Image *image, int newWidth, int newHeight); // Resize image (Bicubic scaling algorithm) +RLAPI void ImageResizeNN(Image *image, int newWidth,int newHeight); // Resize image (Nearest-Neighbor scaling algorithm) +RLAPI void ImageResizeCanvas(Image *image, int newWidth, int newHeight, int offsetX, int offsetY, Color color); // Resize canvas and fill with color +RLAPI void ImageMipmaps(Image *image); // Generate all mipmap levels for a provided image +RLAPI void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp); // Dither image data to 16bpp or lower (Floyd-Steinberg dithering) +RLAPI Color *ImageExtractPalette(Image image, int maxPaletteSize, int *extractCount); // Extract color palette from image to maximum size (memory should be freed) +RLAPI Image ImageText(const char *text, int fontSize, Color color); // Create an image from text (default font) +RLAPI Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Color tint); // Create an image from text (custom sprite font) +RLAPI void ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color tint); // Draw a source image within a destination image (tint applied to source) +RLAPI void ImageDrawRectangle(Image *dst, Rectangle rec, Color color); // Draw rectangle within an image +RLAPI void ImageDrawRectangleLines(Image *dst, Rectangle rec, int thick, Color color); // Draw rectangle lines within an image +RLAPI void ImageDrawText(Image *dst, Vector2 position, const char *text, int fontSize, Color color); // Draw text (default font) within an image (destination) +RLAPI void ImageDrawTextEx(Image *dst, Vector2 position, Font font, const char *text, float fontSize, float spacing, Color color); // Draw text (custom sprite font) within an image (destination) +RLAPI void ImageFlipVertical(Image *image); // Flip image vertically +RLAPI void ImageFlipHorizontal(Image *image); // Flip image horizontally +RLAPI void ImageRotateCW(Image *image); // Rotate image clockwise 90deg +RLAPI void ImageRotateCCW(Image *image); // Rotate image counter-clockwise 90deg +RLAPI void ImageColorTint(Image *image, Color color); // Modify image color: tint +RLAPI void ImageColorInvert(Image *image); // Modify image color: invert +RLAPI void ImageColorGrayscale(Image *image); // Modify image color: grayscale +RLAPI void ImageColorContrast(Image *image, float contrast); // Modify image color: contrast (-100 to 100) +RLAPI void ImageColorBrightness(Image *image, int brightness); // Modify image color: brightness (-255 to 255) +RLAPI void ImageColorReplace(Image *image, Color color, Color replace); // Modify image color: replace color + +// Image generation functions +RLAPI Image GenImageColor(int width, int height, Color color); // Generate image: plain color +RLAPI Image GenImageGradientV(int width, int height, Color top, Color bottom); // Generate image: vertical gradient +RLAPI Image GenImageGradientH(int width, int height, Color left, Color right); // Generate image: horizontal gradient +RLAPI Image GenImageGradientRadial(int width, int height, float density, Color inner, Color outer); // Generate image: radial gradient +RLAPI Image GenImageChecked(int width, int height, int checksX, int checksY, Color col1, Color col2); // Generate image: checked +RLAPI Image GenImageWhiteNoise(int width, int height, float factor); // Generate image: white noise +RLAPI Image GenImagePerlinNoise(int width, int height, int offsetX, int offsetY, float scale); // Generate image: perlin noise +RLAPI Image GenImageCellular(int width, int height, int tileSize); // Generate image: cellular algorithm. Bigger tileSize means bigger cells + +// Texture2D configuration functions +RLAPI void GenTextureMipmaps(Texture2D *texture); // Generate GPU mipmaps for a texture +RLAPI void SetTextureFilter(Texture2D texture, int filterMode); // Set texture scaling filter mode +RLAPI void SetTextureWrap(Texture2D texture, int wrapMode); // Set texture wrapping mode + +// Texture2D drawing functions +RLAPI void DrawTexture(Texture2D texture, int posX, int posY, Color tint); // Draw a Texture2D +RLAPI void DrawTextureV(Texture2D texture, Vector2 position, Color tint); // Draw a Texture2D with position defined as Vector2 +RLAPI void DrawTextureEx(Texture2D texture, Vector2 position, float rotation, float scale, Color tint); // Draw a Texture2D with extended parameters +RLAPI void DrawTextureRec(Texture2D texture, Rectangle sourceRec, Vector2 position, Color tint); // Draw a part of a texture defined by a rectangle +RLAPI void DrawTextureQuad(Texture2D texture, Vector2 tiling, Vector2 offset, Rectangle quad, Color tint); // Draw texture quad with tiling and offset parameters +RLAPI void DrawTexturePro(Texture2D texture, Rectangle sourceRec, Rectangle destRec, Vector2 origin, float rotation, Color tint); // Draw a part of a texture defined by a rectangle with 'pro' parameters +RLAPI void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle destRec, Vector2 origin, float rotation, Color tint); // Draws a texture (or part of it) that stretches or shrinks nicely + +//------------------------------------------------------------------------------------ +// Font Loading and Text Drawing Functions (Module: text) +//------------------------------------------------------------------------------------ + +// Font loading/unloading functions +RLAPI Font GetFontDefault(void); // Get the default Font +RLAPI Font LoadFont(const char *fileName); // Load font from file into GPU memory (VRAM) +RLAPI Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int charsCount); // Load font from file with extended parameters +RLAPI Font LoadFontFromImage(Image image, Color key, int firstChar); // Load font from Image (XNA style) +RLAPI CharInfo *LoadFontData(const char *fileName, int fontSize, int *fontChars, int charsCount, int type); // Load font data for further use +RLAPI Image GenImageFontAtlas(const CharInfo *chars, Rectangle **recs, int charsCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info +RLAPI void UnloadFont(Font font); // Unload Font from GPU memory (VRAM) + +// Text drawing functions +RLAPI void DrawFPS(int posX, int posY); // Shows current FPS +RLAPI void DrawText(const char *text, int posX, int posY, int fontSize, Color color); // Draw text (using default font) +RLAPI void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // Draw text using font and additional parameters +RLAPI void DrawTextRec(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint); // Draw text using font inside rectangle limits +RLAPI void DrawTextRecEx(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint, + int selectStart, int selectLength, Color selectTint, Color selectBackTint); // Draw text using font inside rectangle limits with support for text selection +RLAPI void DrawTextCodepoint(Font font, int codepoint, Vector2 position, float scale, Color tint); // Draw one character (codepoint) + +// Text misc. functions +RLAPI int MeasureText(const char *text, int fontSize); // Measure string width for default font +RLAPI Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing); // Measure string size for Font +RLAPI int GetGlyphIndex(Font font, int codepoint); // Get index position for a unicode character on font + +// Text strings management functions (no utf8 strings, only byte chars) +// NOTE: Some strings allocate memory internally for returned strings, just be careful! +RLAPI int TextCopy(char *dst, const char *src); // Copy one string to another, returns bytes copied +RLAPI bool TextIsEqual(const char *text1, const char *text2); // Check if two text string are equal +RLAPI unsigned int TextLength(const char *text); // Get text length, checks for '\0' ending +RLAPI const char *TextFormat(const char *text, ...); // Text formatting with variables (sprintf style) +RLAPI const char *TextSubtext(const char *text, int position, int length); // Get a piece of a text string +RLAPI char *TextReplace(char *text, const char *replace, const char *by); // Replace text string (memory must be freed!) +RLAPI char *TextInsert(const char *text, const char *insert, int position); // Insert text in a position (memory must be freed!) +RLAPI const char *TextJoin(const char **textList, int count, const char *delimiter); // Join text strings with delimiter +RLAPI const char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings +RLAPI void TextAppend(char *text, const char *append, int *position); // Append text at specific position and move cursor! +RLAPI int TextFindIndex(const char *text, const char *find); // Find first text occurrence within a string +RLAPI const char *TextToUpper(const char *text); // Get upper case version of provided string +RLAPI const char *TextToLower(const char *text); // Get lower case version of provided string +RLAPI const char *TextToPascal(const char *text); // Get Pascal case notation version of provided string +RLAPI int TextToInteger(const char *text); // Get integer value from text (negative values not supported) +RLAPI char *TextToUtf8(int *codepoints, int length); // Encode text codepoint into utf8 text (memory must be freed!) + +// UTF8 text strings management functions +RLAPI int *GetCodepoints(const char *text, int *count); // Get all codepoints in a string, codepoints count returned by parameters +RLAPI int GetCodepointsCount(const char *text); // Get total number of characters (codepoints) in a UTF8 encoded string +RLAPI int GetNextCodepoint(const char *text, int *bytesProcessed); // Returns next codepoint in a UTF8 encoded string; 0x3f('?') is returned on failure +RLAPI const char *CodepointToUtf8(int codepoint, int *byteLength); // Encode codepoint into utf8 text (char array length returned as parameter) + +//------------------------------------------------------------------------------------ +// Basic 3d Shapes Drawing Functions (Module: models) +//------------------------------------------------------------------------------------ + +// Basic geometric 3D shapes drawing functions +RLAPI void DrawLine3D(Vector3 startPos, Vector3 endPos, Color color); // Draw a line in 3D world space +RLAPI void DrawPoint3D(Vector3 position, Color color); // Draw a point in 3D space, actually a small line +RLAPI void DrawCircle3D(Vector3 center, float radius, Vector3 rotationAxis, float rotationAngle, Color color); // Draw a circle in 3D world space +RLAPI void DrawCube(Vector3 position, float width, float height, float length, Color color); // Draw cube +RLAPI void DrawCubeV(Vector3 position, Vector3 size, Color color); // Draw cube (Vector version) +RLAPI void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); // Draw cube wires +RLAPI void DrawCubeWiresV(Vector3 position, Vector3 size, Color color); // Draw cube wires (Vector version) +RLAPI void DrawCubeTexture(Texture2D texture, Vector3 position, float width, float height, float length, Color color); // Draw cube textured +RLAPI void DrawSphere(Vector3 centerPos, float radius, Color color); // Draw sphere +RLAPI void DrawSphereEx(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere with extended parameters +RLAPI void DrawSphereWires(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere wires +RLAPI void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone +RLAPI void DrawCylinderWires(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone wires +RLAPI void DrawPlane(Vector3 centerPos, Vector2 size, Color color); // Draw a plane XZ +RLAPI void DrawRay(Ray ray, Color color); // Draw a ray line +RLAPI void DrawGrid(int slices, float spacing); // Draw a grid (centered at (0, 0, 0)) +RLAPI void DrawGizmo(Vector3 position); // Draw simple gizmo +//DrawTorus(), DrawTeapot() could be useful? + +//------------------------------------------------------------------------------------ +// Model 3d Loading and Drawing Functions (Module: models) +//------------------------------------------------------------------------------------ + +// Model loading/unloading functions +RLAPI Model LoadModel(const char *fileName); // Load model from files (meshes and materials) +RLAPI Model LoadModelFromMesh(Mesh mesh); // Load model from generated mesh (default material) +RLAPI void UnloadModel(Model model); // Unload model from memory (RAM and/or VRAM) + +// Mesh loading/unloading functions +RLAPI Mesh *LoadMeshes(const char *fileName, int *meshCount); // Load meshes from model file +RLAPI void ExportMesh(Mesh mesh, const char *fileName); // Export mesh data to file +RLAPI void UnloadMesh(Mesh mesh); // Unload mesh from memory (RAM and/or VRAM) + +// Material loading/unloading functions +RLAPI Material *LoadMaterials(const char *fileName, int *materialCount); // Load materials from model file +RLAPI Material LoadMaterialDefault(void); // Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) +RLAPI void UnloadMaterial(Material material); // Unload material from GPU memory (VRAM) +RLAPI void SetMaterialTexture(Material *material, int mapType, Texture2D texture); // Set texture for a material map type (MAP_DIFFUSE, MAP_SPECULAR...) +RLAPI void SetModelMeshMaterial(Model *model, int meshId, int materialId); // Set material for a mesh + +// Model animations loading/unloading functions +RLAPI ModelAnimation *LoadModelAnimations(const char *fileName, int *animsCount); // Load model animations from file +RLAPI void UpdateModelAnimation(Model model, ModelAnimation anim, int frame); // Update model animation pose +RLAPI void UnloadModelAnimation(ModelAnimation anim); // Unload animation data +RLAPI bool IsModelAnimationValid(Model model, ModelAnimation anim); // Check model animation skeleton match + +// Mesh generation functions +RLAPI Mesh GenMeshPoly(int sides, float radius); // Generate polygonal mesh +RLAPI Mesh GenMeshPlane(float width, float length, int resX, int resZ); // Generate plane mesh (with subdivisions) +RLAPI Mesh GenMeshCube(float width, float height, float length); // Generate cuboid mesh +RLAPI Mesh GenMeshSphere(float radius, int rings, int slices); // Generate sphere mesh (standard sphere) +RLAPI Mesh GenMeshHemiSphere(float radius, int rings, int slices); // Generate half-sphere mesh (no bottom cap) +RLAPI Mesh GenMeshCylinder(float radius, float height, int slices); // Generate cylinder mesh +RLAPI Mesh GenMeshTorus(float radius, float size, int radSeg, int sides); // Generate torus mesh +RLAPI Mesh GenMeshKnot(float radius, float size, int radSeg, int sides); // Generate trefoil knot mesh +RLAPI Mesh GenMeshHeightmap(Image heightmap, Vector3 size); // Generate heightmap mesh from image data +RLAPI Mesh GenMeshCubicmap(Image cubicmap, Vector3 cubeSize); // Generate cubes-based map mesh from image data + +// Mesh manipulation functions +RLAPI BoundingBox MeshBoundingBox(Mesh mesh); // Compute mesh bounding box limits +RLAPI void MeshTangents(Mesh *mesh); // Compute mesh tangents +RLAPI void MeshBinormals(Mesh *mesh); // Compute mesh binormals + +// Model drawing functions +RLAPI void DrawModel(Model model, Vector3 position, float scale, Color tint); // Draw a model (with texture if set) +RLAPI void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model with extended parameters +RLAPI void DrawModelWires(Model model, Vector3 position, float scale, Color tint); // Draw a model wires (with texture if set) +RLAPI void DrawModelWiresEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model wires (with texture if set) with extended parameters +RLAPI void DrawBoundingBox(BoundingBox box, Color color); // Draw bounding box (wires) +RLAPI void DrawBillboard(Camera camera, Texture2D texture, Vector3 center, float size, Color tint); // Draw a billboard texture +RLAPI void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle sourceRec, Vector3 center, float size, Color tint); // Draw a billboard texture defined by sourceRec + +// Collision detection functions +RLAPI bool CheckCollisionSpheres(Vector3 centerA, float radiusA, Vector3 centerB, float radiusB); // Detect collision between two spheres +RLAPI bool CheckCollisionBoxes(BoundingBox box1, BoundingBox box2); // Detect collision between two bounding boxes +RLAPI bool CheckCollisionBoxSphere(BoundingBox box, Vector3 center, float radius); // Detect collision between box and sphere +RLAPI bool CheckCollisionRaySphere(Ray ray, Vector3 center, float radius); // Detect collision between ray and sphere +RLAPI bool CheckCollisionRaySphereEx(Ray ray, Vector3 center, float radius, Vector3 *collisionPoint); // Detect collision between ray and sphere, returns collision point +RLAPI bool CheckCollisionRayBox(Ray ray, BoundingBox box); // Detect collision between ray and box +RLAPI RayHitInfo GetCollisionRayModel(Ray ray, Model model); // Get collision info between ray and model +RLAPI RayHitInfo GetCollisionRayTriangle(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3); // Get collision info between ray and triangle +RLAPI RayHitInfo GetCollisionRayGround(Ray ray, float groundHeight); // Get collision info between ray and ground plane (Y-normal plane) + +//------------------------------------------------------------------------------------ +// Shaders System Functions (Module: rlgl) +// NOTE: This functions are useless when using OpenGL 1.1 +//------------------------------------------------------------------------------------ + +// Shader loading/unloading functions +RLAPI char *LoadText(const char *fileName); // Load chars array from text file +RLAPI Shader LoadShader(const char *vsFileName, const char *fsFileName); // Load shader from files and bind default locations +RLAPI Shader LoadShaderCode(const char *vsCode, const char *fsCode); // Load shader from code strings and bind default locations +RLAPI void UnloadShader(Shader shader); // Unload shader from GPU memory (VRAM) + +RLAPI Shader GetShaderDefault(void); // Get default shader +RLAPI Texture2D GetTextureDefault(void); // Get default texture + +// Shader configuration functions +RLAPI int GetShaderLocation(Shader shader, const char *uniformName); // Get shader uniform location +RLAPI void SetShaderValue(Shader shader, int uniformLoc, const void *value, int uniformType); // Set shader uniform value +RLAPI void SetShaderValueV(Shader shader, int uniformLoc, const void *value, int uniformType, int count); // Set shader uniform value vector +RLAPI void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat); // Set shader uniform value (matrix 4x4) +RLAPI void SetShaderValueTexture(Shader shader, int uniformLoc, Texture2D texture); // Set shader uniform value for texture +RLAPI void SetMatrixProjection(Matrix proj); // Set a custom projection matrix (replaces internal projection matrix) +RLAPI void SetMatrixModelview(Matrix view); // Set a custom modelview matrix (replaces internal modelview matrix) +RLAPI Matrix GetMatrixModelview(void); // Get internal modelview matrix +RLAPI Matrix GetMatrixProjection(void); // Get internal projection matrix + +// Texture maps generation (PBR) +// NOTE: Required shaders should be provided +RLAPI Texture2D GenTextureCubemap(Shader shader, Texture2D map, int size); // Generate cubemap texture from 2D texture +RLAPI Texture2D GenTextureIrradiance(Shader shader, Texture2D cubemap, int size); // Generate irradiance texture using cubemap data +RLAPI Texture2D GenTexturePrefilter(Shader shader, Texture2D cubemap, int size); // Generate prefilter texture using cubemap data +RLAPI Texture2D GenTextureBRDF(Shader shader, int size); // Generate BRDF texture + +// Shading begin/end functions +RLAPI void BeginShaderMode(Shader shader); // Begin custom shader drawing +RLAPI void EndShaderMode(void); // End custom shader drawing (use default shader) +RLAPI void BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied) +RLAPI void EndBlendMode(void); // End blending mode (reset to default: alpha blending) + +// VR control functions +RLAPI void InitVrSimulator(void); // Init VR simulator for selected device parameters +RLAPI void CloseVrSimulator(void); // Close VR simulator for current device +RLAPI void UpdateVrTracking(Camera *camera); // Update VR tracking (position and orientation) and camera +RLAPI void SetVrConfiguration(VrDeviceInfo info, Shader distortion); // Set stereo rendering configuration parameters +RLAPI bool IsVrSimulatorReady(void); // Detect if VR simulator is ready +RLAPI void ToggleVrMode(void); // Enable/Disable VR experience +RLAPI void BeginVrDrawing(void); // Begin VR simulator stereo rendering +RLAPI void EndVrDrawing(void); // End VR simulator stereo rendering + +//------------------------------------------------------------------------------------ +// Audio Loading and Playing Functions (Module: audio) +//------------------------------------------------------------------------------------ + +// Audio device management functions +RLAPI void InitAudioDevice(void); // Initialize audio device and context +RLAPI void CloseAudioDevice(void); // Close the audio device and context +RLAPI bool IsAudioDeviceReady(void); // Check if audio device has been initialized successfully +RLAPI void SetMasterVolume(float volume); // Set master volume (listener) + +// Wave/Sound loading/unloading functions +RLAPI Wave LoadWave(const char *fileName); // Load wave data from file +RLAPI Sound LoadSound(const char *fileName); // Load sound from file +RLAPI Sound LoadSoundFromWave(Wave wave); // Load sound from wave data +RLAPI void UpdateSound(Sound sound, const void *data, int samplesCount);// Update sound buffer with new data +RLAPI void UnloadWave(Wave wave); // Unload wave data +RLAPI void UnloadSound(Sound sound); // Unload sound +RLAPI void ExportWave(Wave wave, const char *fileName); // Export wave data to file +RLAPI void ExportWaveAsCode(Wave wave, const char *fileName); // Export wave sample data to code (.h) + +// Wave/Sound management functions +RLAPI void PlaySound(Sound sound); // Play a sound +RLAPI void StopSound(Sound sound); // Stop playing a sound +RLAPI void PauseSound(Sound sound); // Pause a sound +RLAPI void ResumeSound(Sound sound); // Resume a paused sound +RLAPI void PlaySoundMulti(Sound sound); // Play a sound (using multichannel buffer pool) +RLAPI void StopSoundMulti(void); // Stop any sound playing (using multichannel buffer pool) +RLAPI int GetSoundsPlaying(void); // Get number of sounds playing in the multichannel +RLAPI bool IsSoundPlaying(Sound sound); // Check if a sound is currently playing +RLAPI void SetSoundVolume(Sound sound, float volume); // Set volume for a sound (1.0 is max level) +RLAPI void SetSoundPitch(Sound sound, float pitch); // Set pitch for a sound (1.0 is base level) +RLAPI void WaveFormat(Wave *wave, int sampleRate, int sampleSize, int channels); // Convert wave data to desired format +RLAPI Wave WaveCopy(Wave wave); // Copy a wave to a new wave +RLAPI void WaveCrop(Wave *wave, int initSample, int finalSample); // Crop a wave to defined samples range +RLAPI float *GetWaveData(Wave wave); // Get samples data from wave as a floats array + +// Music management functions +RLAPI Music LoadMusicStream(const char *fileName); // Load music stream from file +RLAPI void UnloadMusicStream(Music music); // Unload music stream +RLAPI void PlayMusicStream(Music music); // Start music playing +RLAPI void UpdateMusicStream(Music music); // Updates buffers for music streaming +RLAPI void StopMusicStream(Music music); // Stop music playing +RLAPI void PauseMusicStream(Music music); // Pause music playing +RLAPI void ResumeMusicStream(Music music); // Resume playing paused music +RLAPI bool IsMusicPlaying(Music music); // Check if music is playing +RLAPI void SetMusicVolume(Music music, float volume); // Set volume for music (1.0 is max level) +RLAPI void SetMusicPitch(Music music, float pitch); // Set pitch for a music (1.0 is base level) +RLAPI void SetMusicLoopCount(Music music, int count); // Set music loop count (loop repeats) +RLAPI float GetMusicTimeLength(Music music); // Get music time length (in seconds) +RLAPI float GetMusicTimePlayed(Music music); // Get current music time played (in seconds) + +// AudioStream management functions +RLAPI AudioStream InitAudioStream(unsigned int sampleRate, unsigned int sampleSize, unsigned int channels); // Init audio stream (to stream raw audio pcm data) +RLAPI void UpdateAudioStream(AudioStream stream, const void *data, int samplesCount); // Update audio stream buffers with data +RLAPI void CloseAudioStream(AudioStream stream); // Close audio stream and free memory +RLAPI bool IsAudioStreamProcessed(AudioStream stream); // Check if any audio stream buffers requires refill +RLAPI void PlayAudioStream(AudioStream stream); // Play audio stream +RLAPI void PauseAudioStream(AudioStream stream); // Pause audio stream +RLAPI void ResumeAudioStream(AudioStream stream); // Resume audio stream +RLAPI bool IsAudioStreamPlaying(AudioStream stream); // Check if audio stream is playing +RLAPI void StopAudioStream(AudioStream stream); // Stop audio stream +RLAPI void SetAudioStreamVolume(AudioStream stream, float volume); // Set volume for audio stream (1.0 is max level) +RLAPI void SetAudioStreamPitch(AudioStream stream, float pitch); // Set pitch for audio stream (1.0 is base level) + +//------------------------------------------------------------------------------------ +// Network (Module: network) +//------------------------------------------------------------------------------------ + +// IN PROGRESS: Check rnet.h for reference + + + + diff --git a/raylib/raymath.h.modified b/raylib/raymath.h.modified deleted file mode 100644 index bf37329..0000000 --- a/raylib/raymath.h.modified +++ /dev/null @@ -1,249 +0,0 @@ -/********************************************************************************************** -* -* raymath v2.0 - Math functions to work with Vector2, Vector3, Matrix and Quaternions -* -* CONVENTIONS: -* - Matrix structure is defined as row-major (memory layout) but parameters naming AND all -* math operations performed by the library consider the structure as it was column-major -* It is like transposed versions of the matrices are used for all the maths -* It benefits some functions making them cache-friendly and also avoids matrix -* transpositions sometimes required by OpenGL -* Example: In memory order, row0 is [m0 m4 m8 m12] but in semantic math row0 is [m0 m1 m2 m3] -* - Functions are always self-contained, no function use another raymath function inside, -* required code is directly re-implemented inside -* - Functions input parameters are always received by value (2 unavoidable exceptions) -* - Functions use always a "result" variable for return (except C++ operators) -* - Functions are always defined inline -* - Angles are always in radians (DEG2RAD/RAD2DEG macros provided for convenience) -* - No compound literals used to make sure libray is compatible with C++ -* -* CONFIGURATION: -* #define RAYMATH_IMPLEMENTATION -* Generates the implementation of the library into the included file. -* If not defined, the library is in header only mode and can be included in other headers -* or source files without problems. But only ONE file should hold the implementation. -* -* #define RAYMATH_STATIC_INLINE -* This may use up lots of memory. -* -* #define RAYMATH_DISABLE_CPP_OPERATORS -* Disables C++ operator overloads for raymath types. -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2015-2024 Ramon Santamaria (@raysan5) -* -* This software is provided "as-is", without any express or implied warranty. In no event -* will the authors be held liable for any damages arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, including commercial -* applications, and to alter it and redistribute it freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not claim that you -* wrote the original software. If you use this software in a product, an acknowledgment -* in the product documentation would be appreciated but is not required. -* -* 2. Altered source versions must be plainly marked as such, and must not be misrepresented -* as being the original software. -* -* 3. This notice may not be removed or altered from any source distribution. -* -**********************************************************************************************/ -// Function specifiers definition -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -// Get float vector for Matrix -// Get float vector for Vector3 -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -// NOTE: Helper types to be used instead of array return types for *ToFloat functions -typedef struct float3 { - float v[3]; -} float3; -typedef struct float16 { - float v[16]; -} float16; -//---------------------------------------------------------------------------------- -// Module Functions Definition - Utils math -//---------------------------------------------------------------------------------- -// Clamp float value -inline /* Functions may be inlined or external definition used*/ float Clamp(float value, float min, float max);// Calculate linear interpolation between two floats -inline /* Functions may be inlined or external definition used*/ float Lerp(float start, float end, float amount);// Normalize input value within input range -inline /* Functions may be inlined or external definition used*/ float Normalize(float value, float start, float end);// Remap input value within input range to output range -inline /* Functions may be inlined or external definition used*/ float Remap(float value, float inputStart, float inputEnd, float outputStart, float outputEnd);// Wrap input value from min to max -inline /* Functions may be inlined or external definition used*/ float Wrap(float value, float min, float max);// Check whether two given floats are almost equal -inline /* Functions may be inlined or external definition used*/ int FloatEquals(float x, float y);//---------------------------------------------------------------------------------- -// Module Functions Definition - Vector2 math -//---------------------------------------------------------------------------------- -// Vector with components value 0.0f -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Zero(void);// Vector with components value 1.0f -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2One(void);// Add two vectors (v1 + v2) -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Add(Vector2 v1, Vector2 v2);// Add vector and float value -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2AddValue(Vector2 v, float add);// Subtract two vectors (v1 - v2) -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Subtract(Vector2 v1, Vector2 v2);// Subtract vector by float value -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2SubtractValue(Vector2 v, float sub);// Calculate vector length -inline /* Functions may be inlined or external definition used*/ float Vector2Length(Vector2 v);// Calculate vector square length -inline /* Functions may be inlined or external definition used*/ float Vector2LengthSqr(Vector2 v);// Calculate two vectors dot product -inline /* Functions may be inlined or external definition used*/ float Vector2DotProduct(Vector2 v1, Vector2 v2);// Calculate distance between two vectors -inline /* Functions may be inlined or external definition used*/ float Vector2Distance(Vector2 v1, Vector2 v2);// Calculate square distance between two vectors -inline /* Functions may be inlined or external definition used*/ float Vector2DistanceSqr(Vector2 v1, Vector2 v2);// Calculate angle between two vectors -// NOTE: Angle is calculated from origin point (0, 0) -inline /* Functions may be inlined or external definition used*/ float Vector2Angle(Vector2 v1, Vector2 v2);// Calculate angle defined by a two vectors line -// NOTE: Parameters need to be normalized -// Current implementation should be aligned with glm::angle -inline /* Functions may be inlined or external definition used*/ float Vector2LineAngle(Vector2 start, Vector2 end);// Scale vector (multiply by value) -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Scale(Vector2 v, float scale);// Multiply vector by vector -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Multiply(Vector2 v1, Vector2 v2);// Negate vector -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Negate(Vector2 v);// Divide vector by vector -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Divide(Vector2 v1, Vector2 v2);// Normalize provided vector -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Normalize(Vector2 v);// Transforms a Vector2 by a given Matrix -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Transform(Vector2 v, Matrix mat);// Calculate linear interpolation between two vectors -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Lerp(Vector2 v1, Vector2 v2, float amount);// Calculate reflected vector to normal -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Reflect(Vector2 v, Vector2 normal);// Get min value for each pair of components -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Min(Vector2 v1, Vector2 v2);// Get max value for each pair of components -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Max(Vector2 v1, Vector2 v2);// Rotate vector by angle -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Rotate(Vector2 v, float angle);// Move Vector towards target -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2MoveTowards(Vector2 v, Vector2 target, float maxDistance);// Invert the given vector -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Invert(Vector2 v);// Clamp the components of the vector between -// min and max values specified by the given vectors -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Clamp(Vector2 v, Vector2 min, Vector2 max);// Clamp the magnitude of the vector between two min and max values -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2ClampValue(Vector2 v, float min, float max);// Check whether two given vectors are almost equal -inline /* Functions may be inlined or external definition used*/ int Vector2Equals(Vector2 p, Vector2 q);// Compute the direction of a refracted ray -// v: normalized direction of the incoming ray -// n: normalized normal vector of the interface of two optical media -// r: ratio of the refractive index of the medium from where the ray comes -// to the refractive index of the medium on the other side of the surface -inline /* Functions may be inlined or external definition used*/ Vector2 Vector2Refract(Vector2 v, Vector2 n, float r);//---------------------------------------------------------------------------------- -// Module Functions Definition - Vector3 math -//---------------------------------------------------------------------------------- -// Vector with components value 0.0f -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Zero(void);// Vector with components value 1.0f -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3One(void);// Add two vectors -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Add(Vector3 v1, Vector3 v2);// Add vector and float value -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3AddValue(Vector3 v, float add);// Subtract two vectors -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Subtract(Vector3 v1, Vector3 v2);// Subtract vector by float value -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3SubtractValue(Vector3 v, float sub);// Multiply vector by scalar -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Scale(Vector3 v, float scalar);// Multiply vector by vector -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Multiply(Vector3 v1, Vector3 v2);// Calculate two vectors cross product -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3CrossProduct(Vector3 v1, Vector3 v2);// Calculate one vector perpendicular vector -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Perpendicular(Vector3 v);// Calculate vector length -inline /* Functions may be inlined or external definition used*/ float Vector3Length(const Vector3 v);// Calculate vector square length -inline /* Functions may be inlined or external definition used*/ float Vector3LengthSqr(const Vector3 v);// Calculate two vectors dot product -inline /* Functions may be inlined or external definition used*/ float Vector3DotProduct(Vector3 v1, Vector3 v2);// Calculate distance between two vectors -inline /* Functions may be inlined or external definition used*/ float Vector3Distance(Vector3 v1, Vector3 v2);// Calculate square distance between two vectors -inline /* Functions may be inlined or external definition used*/ float Vector3DistanceSqr(Vector3 v1, Vector3 v2);// Calculate angle between two vectors -inline /* Functions may be inlined or external definition used*/ float Vector3Angle(Vector3 v1, Vector3 v2);// Negate provided vector (invert direction) -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Negate(Vector3 v);// Divide vector by vector -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Divide(Vector3 v1, Vector3 v2);// Normalize provided vector -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Normalize(Vector3 v);//Calculate the projection of the vector v1 on to v2 -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Project(Vector3 v1, Vector3 v2);//Calculate the rejection of the vector v1 on to v2 -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Reject(Vector3 v1, Vector3 v2);// Orthonormalize provided vectors -// Makes vectors normalized and orthogonal to each other -// Gram-Schmidt function implementation -inline /* Functions may be inlined or external definition used*/ void Vector3OrthoNormalize(Vector3 *v1, Vector3 *v2);// Transforms a Vector3 by a given Matrix -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Transform(Vector3 v, Matrix mat);// Transform a vector by quaternion rotation -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3RotateByQuaternion(Vector3 v, Quaternion q);// Rotates a vector around an axis -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3RotateByAxisAngle(Vector3 v, Vector3 axis, float angle);// Move Vector towards target -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3MoveTowards(Vector3 v, Vector3 target, float maxDistance);// Calculate linear interpolation between two vectors -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Lerp(Vector3 v1, Vector3 v2, float amount);// Calculate cubic hermite interpolation between two vectors and their tangents -// as described in the GLTF 2.0 specification: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#interpolation-cubic -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3CubicHermite(Vector3 v1, Vector3 tangent1, Vector3 v2, Vector3 tangent2, float amount);// Calculate reflected vector to normal -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Reflect(Vector3 v, Vector3 normal);// Get min value for each pair of components -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Min(Vector3 v1, Vector3 v2);// Get max value for each pair of components -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Max(Vector3 v1, Vector3 v2);// Compute barycenter coordinates (u, v, w) for point p with respect to triangle (a, b, c) -// NOTE: Assumes P is on the plane of the triangle -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Barycenter(Vector3 p, Vector3 a, Vector3 b, Vector3 c);// Projects a Vector3 from screen space into object space -// NOTE: We are avoiding calling other raymath functions despite available -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Unproject(Vector3 source, Matrix projection, Matrix view);// Get Vector3 as float array -inline /* Functions may be inlined or external definition used*/ float3 Vector3ToFloatV(Vector3 v);// Invert the given vector -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Invert(Vector3 v);// Clamp the components of the vector between -// min and max values specified by the given vectors -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Clamp(Vector3 v, Vector3 min, Vector3 max);// Clamp the magnitude of the vector between two values -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3ClampValue(Vector3 v, float min, float max);// Check whether two given vectors are almost equal -inline /* Functions may be inlined or external definition used*/ int Vector3Equals(Vector3 p, Vector3 q);// Compute the direction of a refracted ray -// v: normalized direction of the incoming ray -// n: normalized normal vector of the interface of two optical media -// r: ratio of the refractive index of the medium from where the ray comes -// to the refractive index of the medium on the other side of the surface -inline /* Functions may be inlined or external definition used*/ Vector3 Vector3Refract(Vector3 v, Vector3 n, float r);//---------------------------------------------------------------------------------- -// Module Functions Definition - Vector4 math -//---------------------------------------------------------------------------------- -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Zero(void);inline /* Functions may be inlined or external definition used*/ Vector4 Vector4One(void);inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Add(Vector4 v1, Vector4 v2);inline /* Functions may be inlined or external definition used*/ Vector4 Vector4AddValue(Vector4 v, float add);inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Subtract(Vector4 v1, Vector4 v2);inline /* Functions may be inlined or external definition used*/ Vector4 Vector4SubtractValue(Vector4 v, float add);inline /* Functions may be inlined or external definition used*/ float Vector4Length(Vector4 v);inline /* Functions may be inlined or external definition used*/ float Vector4LengthSqr(Vector4 v);inline /* Functions may be inlined or external definition used*/ float Vector4DotProduct(Vector4 v1, Vector4 v2);// Calculate distance between two vectors -inline /* Functions may be inlined or external definition used*/ float Vector4Distance(Vector4 v1, Vector4 v2);// Calculate square distance between two vectors -inline /* Functions may be inlined or external definition used*/ float Vector4DistanceSqr(Vector4 v1, Vector4 v2);inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Scale(Vector4 v, float scale);// Multiply vector by vector -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Multiply(Vector4 v1, Vector4 v2);// Negate vector -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Negate(Vector4 v);// Divide vector by vector -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Divide(Vector4 v1, Vector4 v2);// Normalize provided vector -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Normalize(Vector4 v);// Get min value for each pair of components -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Min(Vector4 v1, Vector4 v2);// Get max value for each pair of components -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Max(Vector4 v1, Vector4 v2);// Calculate linear interpolation between two vectors -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Lerp(Vector4 v1, Vector4 v2, float amount);// Move Vector towards target -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4MoveTowards(Vector4 v, Vector4 target, float maxDistance);// Invert the given vector -inline /* Functions may be inlined or external definition used*/ Vector4 Vector4Invert(Vector4 v);// Check whether two given vectors are almost equal -inline /* Functions may be inlined or external definition used*/ int Vector4Equals(Vector4 p, Vector4 q);//---------------------------------------------------------------------------------- -// Module Functions Definition - Matrix math -//---------------------------------------------------------------------------------- -// Compute matrix determinant -inline /* Functions may be inlined or external definition used*/ float MatrixDeterminant(Matrix mat);// Get the trace of the matrix (sum of the values along the diagonal) -inline /* Functions may be inlined or external definition used*/ float MatrixTrace(Matrix mat);// Transposes provided matrix -inline /* Functions may be inlined or external definition used*/ Matrix MatrixTranspose(Matrix mat);// Invert provided matrix -inline /* Functions may be inlined or external definition used*/ Matrix MatrixInvert(Matrix mat);// Get identity matrix -inline /* Functions may be inlined or external definition used*/ Matrix MatrixIdentity(void);// Add two matrices -inline /* Functions may be inlined or external definition used*/ Matrix MatrixAdd(Matrix left, Matrix right);// Subtract two matrices (left - right) -inline /* Functions may be inlined or external definition used*/ Matrix MatrixSubtract(Matrix left, Matrix right);// Get two matrix multiplication -// NOTE: When multiplying matrices... the order matters! -inline /* Functions may be inlined or external definition used*/ Matrix MatrixMultiply(Matrix left, Matrix right);// Get translation matrix -inline /* Functions may be inlined or external definition used*/ Matrix MatrixTranslate(float x, float y, float z);// Create rotation matrix from axis and angle -// NOTE: Angle should be provided in radians -inline /* Functions may be inlined or external definition used*/ Matrix MatrixRotate(Vector3 axis, float angle);// Get x-rotation matrix -// NOTE: Angle must be provided in radians -inline /* Functions may be inlined or external definition used*/ Matrix MatrixRotateX(float angle);// Get y-rotation matrix -// NOTE: Angle must be provided in radians -inline /* Functions may be inlined or external definition used*/ Matrix MatrixRotateY(float angle);// Get z-rotation matrix -// NOTE: Angle must be provided in radians -inline /* Functions may be inlined or external definition used*/ Matrix MatrixRotateZ(float angle);// Get xyz-rotation matrix -// NOTE: Angle must be provided in radians -inline /* Functions may be inlined or external definition used*/ Matrix MatrixRotateXYZ(Vector3 angle);// Get zyx-rotation matrix -// NOTE: Angle must be provided in radians -inline /* Functions may be inlined or external definition used*/ Matrix MatrixRotateZYX(Vector3 angle);// Get scaling matrix -inline /* Functions may be inlined or external definition used*/ Matrix MatrixScale(float x, float y, float z);// Get perspective projection matrix -inline /* Functions may be inlined or external definition used*/ Matrix MatrixFrustum(double left, double right, double bottom, double top, double nearPlane, double farPlane);// Get perspective projection matrix -// NOTE: Fovy angle must be provided in radians -inline /* Functions may be inlined or external definition used*/ Matrix MatrixPerspective(double fovY, double aspect, double nearPlane, double farPlane);// Get orthographic projection matrix -inline /* Functions may be inlined or external definition used*/ Matrix MatrixOrtho(double left, double right, double bottom, double top, double nearPlane, double farPlane);// Get camera look-at matrix (view matrix) -inline /* Functions may be inlined or external definition used*/ Matrix MatrixLookAt(Vector3 eye, Vector3 target, Vector3 up);// Get float array of matrix data -inline /* Functions may be inlined or external definition used*/ float16 MatrixToFloatV(Matrix mat);//---------------------------------------------------------------------------------- -// Module Functions Definition - Quaternion math -//---------------------------------------------------------------------------------- -// Add two quaternions -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionAdd(Quaternion q1, Quaternion q2);// Add quaternion and float value -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionAddValue(Quaternion q, float add);// Subtract two quaternions -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionSubtract(Quaternion q1, Quaternion q2);// Subtract quaternion and float value -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionSubtractValue(Quaternion q, float sub);// Get identity quaternion -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionIdentity(void);// Computes the length of a quaternion -inline /* Functions may be inlined or external definition used*/ float QuaternionLength(Quaternion q);// Normalize provided quaternion -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionNormalize(Quaternion q);// Invert provided quaternion -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionInvert(Quaternion q);// Calculate two quaternion multiplication -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionMultiply(Quaternion q1, Quaternion q2);// Scale quaternion by float value -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionScale(Quaternion q, float mul);// Divide two quaternions -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionDivide(Quaternion q1, Quaternion q2);// Calculate linear interpolation between two quaternions -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionLerp(Quaternion q1, Quaternion q2, float amount);// Calculate slerp-optimized interpolation between two quaternions -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionNlerp(Quaternion q1, Quaternion q2, float amount);// Calculates spherical linear interpolation between two quaternions -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionSlerp(Quaternion q1, Quaternion q2, float amount);// Calculate quaternion cubic spline interpolation using Cubic Hermite Spline algorithm -// as described in the GLTF 2.0 specification: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#interpolation-cubic -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionCubicHermiteSpline(Quaternion q1, Quaternion outTangent1, Quaternion q2, Quaternion inTangent2, float t);// Calculate quaternion based on the rotation from one vector to another -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionFromVector3ToVector3(Vector3 from, Vector3 to);// Get a quaternion for a given rotation matrix -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionFromMatrix(Matrix mat);// Get a matrix for a given quaternion -inline /* Functions may be inlined or external definition used*/ Matrix QuaternionToMatrix(Quaternion q);// Get rotation quaternion for an angle and axis -// NOTE: Angle must be provided in radians -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionFromAxisAngle(Vector3 axis, float angle);// Get the rotation angle and axis for a given quaternion -inline /* Functions may be inlined or external definition used*/ void QuaternionToAxisAngle(Quaternion q, Vector3 *outAxis, float *outAngle);// Get the quaternion equivalent to Euler angles -// NOTE: Rotation order is ZYX -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionFromEuler(float pitch, float yaw, float roll);// Get the Euler angles equivalent to quaternion (roll, pitch, yaw) -// NOTE: Angles are returned in a Vector3 struct in radians -inline /* Functions may be inlined or external definition used*/ Vector3 QuaternionToEuler(Quaternion q);// Transform a quaternion given a transformation matrix -inline /* Functions may be inlined or external definition used*/ Quaternion QuaternionTransform(Quaternion q, Matrix mat);// Check whether two given quaternions are almost equal -inline /* Functions may be inlined or external definition used*/ int QuaternionEquals(Quaternion p, Quaternion q);// Decompose a transformation matrix into its rotational, translational and scaling components -inline /* Functions may be inlined or external definition used*/ void MatrixDecompose(Matrix mat, Vector3 *translation, Quaternion *rotation, Vector3 *scale); \ No newline at end of file diff --git a/raylib/rlgl.h.modified b/raylib/rlgl.h.modified deleted file mode 100644 index 1184262..0000000 --- a/raylib/rlgl.h.modified +++ /dev/null @@ -1,522 +0,0 @@ -/********************************************************************************************** -* -* rlgl v5.0 - A multi-OpenGL abstraction layer with an immediate-mode style API -* -* DESCRIPTION: -* An abstraction layer for multiple OpenGL versions (1.1, 2.1, 3.3 Core, 4.3 Core, ES 2.0) -* that provides a pseudo-OpenGL 1.1 immediate-mode style API (rlVertex, rlTranslate, rlRotate...) -* -* ADDITIONAL NOTES: -* When choosing an OpenGL backend different than OpenGL 1.1, some internal buffer are -* initialized on rlglInit() to accumulate vertex data -* -* When an internal state change is required all the stored vertex data is renderer in batch, -* additionally, rlDrawRenderBatchActive() could be called to force flushing of the batch -* -* Some resources are also loaded for convenience, here the complete list: -* - Default batch (RLGL.defaultBatch): RenderBatch system to accumulate vertex data -* - Default texture (RLGL.defaultTextureId): 1x1 white pixel R8G8B8A8 -* - Default shader (RLGL.State.defaultShaderId, RLGL.State.defaultShaderLocs) -* -* Internal buffer (and resources) must be manually unloaded calling rlglClose() -* -* CONFIGURATION: -* #define GRAPHICS_API_OPENGL_11 -* #define GRAPHICS_API_OPENGL_21 -* #define GRAPHICS_API_OPENGL_33 -* #define GRAPHICS_API_OPENGL_43 -* #define GRAPHICS_API_OPENGL_ES2 -* #define GRAPHICS_API_OPENGL_ES3 -* Use selected OpenGL graphics backend, should be supported by platform -* Those preprocessor defines are only used on rlgl module, if OpenGL version is -* required by any other module, use rlGetVersion() to check it -* -* #define RLGL_IMPLEMENTATION -* Generates the implementation of the library into the included file -* If not defined, the library is in header only mode and can be included in other headers -* or source files without problems. But only ONE file should hold the implementation -* -* #define RLGL_RENDER_TEXTURES_HINT -* Enable framebuffer objects (fbo) support (enabled by default) -* Some GPUs could not support them despite the OpenGL version -* -* #define RLGL_SHOW_GL_DETAILS_INFO -* Show OpenGL extensions and capabilities detailed logs on init -* -* #define RLGL_ENABLE_OPENGL_DEBUG_CONTEXT -* Enable debug context (only available on OpenGL 4.3) -* -* rlgl capabilities could be customized just defining some internal -* values before library inclusion (default values listed): -* -* #define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 8192 // Default internal render batch elements limits -* #define RL_DEFAULT_BATCH_BUFFERS 1 // Default number of batch buffers (multi-buffering) -* #define RL_DEFAULT_BATCH_DRAWCALLS 256 // Default number of batch draw calls (by state changes: mode, texture) -* #define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 // Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture()) -* -* #define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal Matrix stack -* #define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported -* #define RL_CULL_DISTANCE_NEAR 0.01 // Default projection matrix near cull distance -* #define RL_CULL_DISTANCE_FAR 1000.0 // Default projection matrix far cull distance -* -* When loading a shader, the following vertex attributes and uniform -* location names are tried to be set automatically: -* -* #define RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION "vertexPosition" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION -* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD "vertexTexCoord" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD -* #define RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL "vertexNormal" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL -* #define RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR "vertexColor" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR -* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT "vertexTangent" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT -* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 "vertexTexCoord2" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2 -* #define RL_DEFAULT_SHADER_ATTRIB_NAME_BONEIDS "vertexBoneIds" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS -* #define RL_DEFAULT_SHADER_ATTRIB_NAME_BONEWEIGHTS "vertexBoneWeights" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS -* #define RL_DEFAULT_SHADER_UNIFORM_NAME_MVP "mvp" // model-view-projection matrix -* #define RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW "matView" // view matrix -* #define RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION "matProjection" // projection matrix -* #define RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL "matModel" // model matrix -* #define RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL "matNormal" // normal matrix (transpose(inverse(matModelView))) -* #define RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR "colDiffuse" // color diffuse (base tint color, multiplied by texture color) -* #define RL_DEFAULT_SHADER_UNIFORM_NAME_BONE_MATRICES "boneMatrices" // bone matrices -* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0 "texture0" // texture0 (texture slot active 0) -* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 "texture1" // texture1 (texture slot active 1) -* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 "texture2" // texture2 (texture slot active 2) -* -* DEPENDENCIES: -* - OpenGL libraries (depending on platform and OpenGL version selected) -* - GLAD OpenGL extensions loading library (only for OpenGL 3.3 Core, 4.3 Core) -* -* -* LICENSE: zlib/libpng -* -* Copyright (c) 2014-2024 Ramon Santamaria (@raysan5) -* -* This software is provided "as-is", without any express or implied warranty. In no event -* will the authors be held liable for any damages arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, including commercial -* applications, and to alter it and redistribute it freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not claim that you -* wrote the original software. If you use this software in a product, an acknowledgment -* in the product documentation would be appreciated but is not required. -* -* 2. Altered source versions must be plainly marked as such, and must not be misrepresented -* as being the original software. -* -* 3. This notice may not be removed or altered from any source distribution. -* -**********************************************************************************************/ -// Function specifiers in case library is build/used as a shared library -// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll -// NOTE: visibility(default) attribute makes symbols "visible" when compiled with -fvisibility=hidden -// Function specifiers definition -// Support TRACELOG macros -// Allow custom memory allocators -// Security check in case no GRAPHICS_API_OPENGL_* defined -// Security check in case multiple GRAPHICS_API_OPENGL_* defined -// OpenGL 2.1 uses most of OpenGL 3.3 Core functionality -// WARNING: Specific parts are checked with #if defines -// OpenGL 4.3 uses OpenGL 3.3 Core functionality -// OpenGL ES 3.0 uses OpenGL ES 2.0 functionality (and more) -// Support framebuffer objects by default -// NOTE: Some driver implementation do not support it, despite they should -//---------------------------------------------------------------------------------- -// Defines and Macros -//---------------------------------------------------------------------------------- -// Default internal render batch elements limits - // This is the maximum amount of elements (quads) per batch - // NOTE: Be careful with text, every letter maps to a quad -// Internal Matrix stack -// Shader limits -// Projection matrix culling -// Texture parameters (equivalent to OpenGL defines) -// Matrix modes (equivalent to OpenGL) -// Primitive assembly draw modes -// GL equivalent data types -// GL buffer usage hint -// GL Shader type -// GL blending factors -// GL blending functions/equations -// Default shader vertex attribute locations -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -// Dynamic vertex buffers (position + texcoords + colors + indices arrays) -typedef struct rlVertexBuffer { - int elementCount; // Number of elements in the buffer (QUADS) - float *vertices; // Vertex position (XYZ - 3 components per vertex) (shader-location = 0) - float *texcoords; // Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) - float *normals; // Vertex normal (XYZ - 3 components per vertex) (shader-location = 2) - unsigned char *colors; // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3) - unsigned int *indices; // Vertex indices (in case vertex data comes indexed) (6 indices per quad) - unsigned int vaoId; // OpenGL Vertex Array Object id - unsigned int vboId[5]; // OpenGL Vertex Buffer Objects id (5 types of vertex data) -} rlVertexBuffer; -// Draw call type -// NOTE: Only texture changes register a new draw, other state-change-related elements are not -// used at this moment (vaoId, shaderId, matrices), raylib just forces a batch draw call if any -// of those state-change happens (this is done in core module) -typedef struct rlDrawCall { - int mode; // Drawing mode: LINES, TRIANGLES, QUADS - int vertexCount; // Number of vertex of the draw - int vertexAlignment; // Number of vertex required for index alignment (LINES, TRIANGLES) - //unsigned int vaoId; // Vertex array id to be used on the draw -> Using RLGL.currentBatch->vertexBuffer.vaoId - //unsigned int shaderId; // Shader id to be used on the draw -> Using RLGL.currentShaderId - unsigned int textureId; // Texture id to be used on the draw -> Use to create new draw call if changes - //Matrix projection; // Projection matrix for this draw -> Using RLGL.projection by default - //Matrix modelview; // Modelview matrix for this draw -> Using RLGL.modelview by default -} rlDrawCall; -// rlRenderBatch type -typedef struct rlRenderBatch { - int bufferCount; // Number of vertex buffers (multi-buffering support) - int currentBuffer; // Current buffer tracking in case of multi-buffering - rlVertexBuffer *vertexBuffer; // Dynamic buffer(s) for vertex data - rlDrawCall *draws; // Draw calls array, depends on textureId - int drawCounter; // Draw calls counter - float currentDepth; // Current depth value for next draw -} rlRenderBatch; -// OpenGL version -typedef enum { - RL_OPENGL_11 = 1, // OpenGL 1.1 - RL_OPENGL_21, // OpenGL 2.1 (GLSL 120) - RL_OPENGL_33, // OpenGL 3.3 (GLSL 330) - RL_OPENGL_43, // OpenGL 4.3 (using GLSL 330) - RL_OPENGL_ES_20, // OpenGL ES 2.0 (GLSL 100) - RL_OPENGL_ES_30 // OpenGL ES 3.0 (GLSL 300 es) -} rlGlVersion; -// Trace log level -// NOTE: Organized by priority level -typedef enum { - RL_LOG_ALL = 0, // Display all logs - RL_LOG_TRACE, // Trace logging, intended for internal use only - RL_LOG_DEBUG, // Debug logging, used for internal debugging, it should be disabled on release builds - RL_LOG_INFO, // Info logging, used for program execution info - RL_LOG_WARNING, // Warning logging, used on recoverable failures - RL_LOG_ERROR, // Error logging, used on unrecoverable failures - RL_LOG_FATAL, // Fatal logging, used to abort program: exit(EXIT_FAILURE) - RL_LOG_NONE // Disable logging -} rlTraceLogLevel; -// Texture pixel formats -// NOTE: Support depends on OpenGL version -typedef enum { - RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) - RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) - RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp - RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp - RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) - RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) - RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp - RL_PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) - RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) - RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) - RL_PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) - RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) - RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) - RL_PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) - RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) - RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp -} rlPixelFormat; -// Texture parameters: filter mode -// NOTE 1: Filtering considers mipmaps if available in the texture -// NOTE 2: Filter is accordingly set for minification and magnification -typedef enum { - RL_TEXTURE_FILTER_POINT = 0, // No filter, just pixel approximation - RL_TEXTURE_FILTER_BILINEAR, // Linear filtering - RL_TEXTURE_FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) - RL_TEXTURE_FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x - RL_TEXTURE_FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x - RL_TEXTURE_FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x -} rlTextureFilter; -// Color blending modes (pre-defined) -typedef enum { - RL_BLEND_ALPHA = 0, // Blend textures considering alpha (default) - RL_BLEND_ADDITIVE, // Blend textures adding colors - RL_BLEND_MULTIPLIED, // Blend textures multiplying colors - RL_BLEND_ADD_COLORS, // Blend textures adding colors (alternative) - RL_BLEND_SUBTRACT_COLORS, // Blend textures subtracting colors (alternative) - RL_BLEND_ALPHA_PREMULTIPLY, // Blend premultiplied textures considering alpha - RL_BLEND_CUSTOM, // Blend textures using custom src/dst factors (use rlSetBlendFactors()) - RL_BLEND_CUSTOM_SEPARATE // Blend textures using custom src/dst factors (use rlSetBlendFactorsSeparate()) -} rlBlendMode; -// Shader location point type -typedef enum { - RL_SHADER_LOC_VERTEX_POSITION = 0, // Shader location: vertex attribute: position - RL_SHADER_LOC_VERTEX_TEXCOORD01, // Shader location: vertex attribute: texcoord01 - RL_SHADER_LOC_VERTEX_TEXCOORD02, // Shader location: vertex attribute: texcoord02 - RL_SHADER_LOC_VERTEX_NORMAL, // Shader location: vertex attribute: normal - RL_SHADER_LOC_VERTEX_TANGENT, // Shader location: vertex attribute: tangent - RL_SHADER_LOC_VERTEX_COLOR, // Shader location: vertex attribute: color - RL_SHADER_LOC_MATRIX_MVP, // Shader location: matrix uniform: model-view-projection - RL_SHADER_LOC_MATRIX_VIEW, // Shader location: matrix uniform: view (camera transform) - RL_SHADER_LOC_MATRIX_PROJECTION, // Shader location: matrix uniform: projection - RL_SHADER_LOC_MATRIX_MODEL, // Shader location: matrix uniform: model (transform) - RL_SHADER_LOC_MATRIX_NORMAL, // Shader location: matrix uniform: normal - RL_SHADER_LOC_VECTOR_VIEW, // Shader location: vector uniform: view - RL_SHADER_LOC_COLOR_DIFFUSE, // Shader location: vector uniform: diffuse color - RL_SHADER_LOC_COLOR_SPECULAR, // Shader location: vector uniform: specular color - RL_SHADER_LOC_COLOR_AMBIENT, // Shader location: vector uniform: ambient color - RL_SHADER_LOC_MAP_ALBEDO, // Shader location: sampler2d texture: albedo (same as: RL_SHADER_LOC_MAP_DIFFUSE) - RL_SHADER_LOC_MAP_METALNESS, // Shader location: sampler2d texture: metalness (same as: RL_SHADER_LOC_MAP_SPECULAR) - RL_SHADER_LOC_MAP_NORMAL, // Shader location: sampler2d texture: normal - RL_SHADER_LOC_MAP_ROUGHNESS, // Shader location: sampler2d texture: roughness - RL_SHADER_LOC_MAP_OCCLUSION, // Shader location: sampler2d texture: occlusion - RL_SHADER_LOC_MAP_EMISSION, // Shader location: sampler2d texture: emission - RL_SHADER_LOC_MAP_HEIGHT, // Shader location: sampler2d texture: height - RL_SHADER_LOC_MAP_CUBEMAP, // Shader location: samplerCube texture: cubemap - RL_SHADER_LOC_MAP_IRRADIANCE, // Shader location: samplerCube texture: irradiance - RL_SHADER_LOC_MAP_PREFILTER, // Shader location: samplerCube texture: prefilter - RL_SHADER_LOC_MAP_BRDF // Shader location: sampler2d texture: brdf -} rlShaderLocationIndex; -// Shader uniform data type -typedef enum { - RL_SHADER_UNIFORM_FLOAT = 0, // Shader uniform type: float - RL_SHADER_UNIFORM_VEC2, // Shader uniform type: vec2 (2 float) - RL_SHADER_UNIFORM_VEC3, // Shader uniform type: vec3 (3 float) - RL_SHADER_UNIFORM_VEC4, // Shader uniform type: vec4 (4 float) - RL_SHADER_UNIFORM_INT, // Shader uniform type: int - RL_SHADER_UNIFORM_IVEC2, // Shader uniform type: ivec2 (2 int) - RL_SHADER_UNIFORM_IVEC3, // Shader uniform type: ivec3 (3 int) - RL_SHADER_UNIFORM_IVEC4, // Shader uniform type: ivec4 (4 int) - RL_SHADER_UNIFORM_UINT, // Shader uniform type: unsigned int - RL_SHADER_UNIFORM_UIVEC2, // Shader uniform type: uivec2 (2 unsigned int) - RL_SHADER_UNIFORM_UIVEC3, // Shader uniform type: uivec3 (3 unsigned int) - RL_SHADER_UNIFORM_UIVEC4, // Shader uniform type: uivec4 (4 unsigned int) - RL_SHADER_UNIFORM_SAMPLER2D // Shader uniform type: sampler2d -} rlShaderUniformDataType; -// Shader attribute data types -typedef enum { - RL_SHADER_ATTRIB_FLOAT = 0, // Shader attribute type: float - RL_SHADER_ATTRIB_VEC2, // Shader attribute type: vec2 (2 float) - RL_SHADER_ATTRIB_VEC3, // Shader attribute type: vec3 (3 float) - RL_SHADER_ATTRIB_VEC4 // Shader attribute type: vec4 (4 float) -} rlShaderAttributeDataType; -// Framebuffer attachment type -// NOTE: By default up to 8 color channels defined, but it can be more -typedef enum { - RL_ATTACHMENT_COLOR_CHANNEL0 = 0, // Framebuffer attachment type: color 0 - RL_ATTACHMENT_COLOR_CHANNEL1 = 1, // Framebuffer attachment type: color 1 - RL_ATTACHMENT_COLOR_CHANNEL2 = 2, // Framebuffer attachment type: color 2 - RL_ATTACHMENT_COLOR_CHANNEL3 = 3, // Framebuffer attachment type: color 3 - RL_ATTACHMENT_COLOR_CHANNEL4 = 4, // Framebuffer attachment type: color 4 - RL_ATTACHMENT_COLOR_CHANNEL5 = 5, // Framebuffer attachment type: color 5 - RL_ATTACHMENT_COLOR_CHANNEL6 = 6, // Framebuffer attachment type: color 6 - RL_ATTACHMENT_COLOR_CHANNEL7 = 7, // Framebuffer attachment type: color 7 - RL_ATTACHMENT_DEPTH = 100, // Framebuffer attachment type: depth - RL_ATTACHMENT_STENCIL = 200, // Framebuffer attachment type: stencil -} rlFramebufferAttachType; -// Framebuffer texture attachment type -typedef enum { - RL_ATTACHMENT_CUBEMAP_POSITIVE_X = 0, // Framebuffer texture attachment type: cubemap, +X side - RL_ATTACHMENT_CUBEMAP_NEGATIVE_X = 1, // Framebuffer texture attachment type: cubemap, -X side - RL_ATTACHMENT_CUBEMAP_POSITIVE_Y = 2, // Framebuffer texture attachment type: cubemap, +Y side - RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y = 3, // Framebuffer texture attachment type: cubemap, -Y side - RL_ATTACHMENT_CUBEMAP_POSITIVE_Z = 4, // Framebuffer texture attachment type: cubemap, +Z side - RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z = 5, // Framebuffer texture attachment type: cubemap, -Z side - RL_ATTACHMENT_TEXTURE2D = 100, // Framebuffer texture attachment type: texture2d - RL_ATTACHMENT_RENDERBUFFER = 200, // Framebuffer texture attachment type: renderbuffer -} rlFramebufferAttachTextureType; -// Face culling mode -typedef enum { - RL_CULL_FACE_FRONT = 0, - RL_CULL_FACE_BACK -} rlCullMode; -//------------------------------------------------------------------------------------ -// Functions Declaration - Matrix operations -//------------------------------------------------------------------------------------ - void rlMatrixMode(int mode); // Choose the current matrix to be transformed - void rlPushMatrix(void); // Push the current matrix to stack - void rlPopMatrix(void); // Pop latest inserted matrix from stack - void rlLoadIdentity(void); // Reset current matrix to identity matrix - void rlTranslatef(float x, float y, float z); // Multiply the current matrix by a translation matrix - void rlRotatef(float angle, float x, float y, float z); // Multiply the current matrix by a rotation matrix - void rlScalef(float x, float y, float z); // Multiply the current matrix by a scaling matrix - void rlMultMatrixf(const float *matf); // Multiply the current matrix by another matrix - void rlFrustum(double left, double right, double bottom, double top, double znear, double zfar); - void rlOrtho(double left, double right, double bottom, double top, double znear, double zfar); - void rlViewport(int x, int y, int width, int height); // Set the viewport area - void rlSetClipPlanes(double nearPlane, double farPlane); // Set clip planes distances - double rlGetCullDistanceNear(void); // Get cull plane distance near - double rlGetCullDistanceFar(void); // Get cull plane distance far -//------------------------------------------------------------------------------------ -// Functions Declaration - Vertex level operations -//------------------------------------------------------------------------------------ - void rlBegin(int mode); // Initialize drawing mode (how to organize vertex) - void rlEnd(void); // Finish vertex providing - void rlVertex2i(int x, int y); // Define one vertex (position) - 2 int - void rlVertex2f(float x, float y); // Define one vertex (position) - 2 float - void rlVertex3f(float x, float y, float z); // Define one vertex (position) - 3 float - void rlTexCoord2f(float x, float y); // Define one vertex (texture coordinate) - 2 float - void rlNormal3f(float x, float y, float z); // Define one vertex (normal) - 3 float - void rlColor4ub(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Define one vertex (color) - 4 byte - void rlColor3f(float x, float y, float z); // Define one vertex (color) - 3 float - void rlColor4f(float x, float y, float z, float w); // Define one vertex (color) - 4 float -//------------------------------------------------------------------------------------ -// Functions Declaration - OpenGL style functions (common to 1.1, 3.3+, ES2) -// NOTE: This functions are used to completely abstract raylib code from OpenGL layer, -// some of them are direct wrappers over OpenGL calls, some others are custom -//------------------------------------------------------------------------------------ -// Vertex buffers state - bool rlEnableVertexArray(unsigned int vaoId); // Enable vertex array (VAO, if supported) - void rlDisableVertexArray(void); // Disable vertex array (VAO, if supported) - void rlEnableVertexBuffer(unsigned int id); // Enable vertex buffer (VBO) - void rlDisableVertexBuffer(void); // Disable vertex buffer (VBO) - void rlEnableVertexBufferElement(unsigned int id); // Enable vertex buffer element (VBO element) - void rlDisableVertexBufferElement(void); // Disable vertex buffer element (VBO element) - void rlEnableVertexAttribute(unsigned int index); // Enable vertex attribute index - void rlDisableVertexAttribute(unsigned int index); // Disable vertex attribute index -// Textures state - void rlActiveTextureSlot(int slot); // Select and active a texture slot - void rlEnableTexture(unsigned int id); // Enable texture - void rlDisableTexture(void); // Disable texture - void rlEnableTextureCubemap(unsigned int id); // Enable texture cubemap - void rlDisableTextureCubemap(void); // Disable texture cubemap - void rlTextureParameters(unsigned int id, int param, int value); // Set texture parameters (filter, wrap) - void rlCubemapParameters(unsigned int id, int param, int value); // Set cubemap parameters (filter, wrap) -// Shader state - void rlEnableShader(unsigned int id); // Enable shader program - void rlDisableShader(void); // Disable shader program -// Framebuffer state - void rlEnableFramebuffer(unsigned int id); // Enable render texture (fbo) - void rlDisableFramebuffer(void); // Disable render texture (fbo), return to default framebuffer - unsigned int rlGetActiveFramebuffer(void); // Get the currently active render texture (fbo), 0 for default framebuffer - void rlActiveDrawBuffers(int count); // Activate multiple draw color buffers - void rlBlitFramebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight, int bufferMask); // Blit active framebuffer to main framebuffer - void rlBindFramebuffer(unsigned int target, unsigned int framebuffer); // Bind framebuffer (FBO) -// General render state - void rlEnableColorBlend(void); // Enable color blending - void rlDisableColorBlend(void); // Disable color blending - void rlEnableDepthTest(void); // Enable depth test - void rlDisableDepthTest(void); // Disable depth test - void rlEnableDepthMask(void); // Enable depth write - void rlDisableDepthMask(void); // Disable depth write - void rlEnableBackfaceCulling(void); // Enable backface culling - void rlDisableBackfaceCulling(void); // Disable backface culling - void rlColorMask(bool r, bool g, bool b, bool a); // Color mask control - void rlSetCullFace(int mode); // Set face culling mode - void rlEnableScissorTest(void); // Enable scissor test - void rlDisableScissorTest(void); // Disable scissor test - void rlScissor(int x, int y, int width, int height); // Scissor test - void rlEnableWireMode(void); // Enable wire mode - void rlEnablePointMode(void); // Enable point mode - void rlDisableWireMode(void); // Disable wire (and point) mode - void rlSetLineWidth(float width); // Set the line drawing width - float rlGetLineWidth(void); // Get the line drawing width - void rlEnableSmoothLines(void); // Enable line aliasing - void rlDisableSmoothLines(void); // Disable line aliasing - void rlEnableStereoRender(void); // Enable stereo rendering - void rlDisableStereoRender(void); // Disable stereo rendering - bool rlIsStereoRenderEnabled(void); // Check if stereo render is enabled - void rlClearColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Clear color buffer with color - void rlClearScreenBuffers(void); // Clear used screen buffers (color and depth) - void rlCheckErrors(void); // Check and log OpenGL error codes - void rlSetBlendMode(int mode); // Set blending mode - void rlSetBlendFactors(int glSrcFactor, int glDstFactor, int glEquation); // Set blending mode factor and equation (using OpenGL factors) - void rlSetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha); // Set blending mode factors and equations separately (using OpenGL factors) -//------------------------------------------------------------------------------------ -// Functions Declaration - rlgl functionality -//------------------------------------------------------------------------------------ -// rlgl initialization functions - void rlglInit(int width, int height); // Initialize rlgl (buffers, shaders, textures, states) - void rlglClose(void); // De-initialize rlgl (buffers, shaders, textures) - void rlLoadExtensions(void *loader); // Load OpenGL extensions (loader function required) - int rlGetVersion(void); // Get current OpenGL version - void rlSetFramebufferWidth(int width); // Set current framebuffer width - int rlGetFramebufferWidth(void); // Get default framebuffer width - void rlSetFramebufferHeight(int height); // Set current framebuffer height - int rlGetFramebufferHeight(void); // Get default framebuffer height - unsigned int rlGetTextureIdDefault(void); // Get default texture id - unsigned int rlGetShaderIdDefault(void); // Get default shader id - int *rlGetShaderLocsDefault(void); // Get default shader locations -// Render batch management -// NOTE: rlgl provides a default render batch to behave like OpenGL 1.1 immediate mode -// but this render batch API is exposed in case of custom batches are required - rlRenderBatch rlLoadRenderBatch(int numBuffers, int bufferElements); // Load a render batch system - void rlUnloadRenderBatch(rlRenderBatch batch); // Unload render batch system - void rlDrawRenderBatch(rlRenderBatch *batch); // Draw render batch data (Update->Draw->Reset) - void rlSetRenderBatchActive(rlRenderBatch *batch); // Set the active render batch for rlgl (NULL for default internal) - void rlDrawRenderBatchActive(void); // Update and draw internal render batch - bool rlCheckRenderBatchLimit(int vCount); // Check internal buffer overflow for a given number of vertex - void rlSetTexture(unsigned int id); // Set current texture for render batch and check buffers limits -//------------------------------------------------------------------------------------------------------------------------ -// Vertex buffers management - unsigned int rlLoadVertexArray(void); // Load vertex array (vao) if supported - unsigned int rlLoadVertexBuffer(const void *buffer, int size, bool dynamic); // Load a vertex buffer object - unsigned int rlLoadVertexBufferElement(const void *buffer, int size, bool dynamic); // Load vertex buffer elements object - void rlUpdateVertexBuffer(unsigned int bufferId, const void *data, int dataSize, int offset); // Update vertex buffer object data on GPU buffer - void rlUpdateVertexBufferElements(unsigned int id, const void *data, int dataSize, int offset); // Update vertex buffer elements data on GPU buffer - void rlUnloadVertexArray(unsigned int vaoId); // Unload vertex array (vao) - void rlUnloadVertexBuffer(unsigned int vboId); // Unload vertex buffer object - void rlSetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, int offset); // Set vertex attribute data configuration - void rlSetVertexAttributeDivisor(unsigned int index, int divisor); // Set vertex attribute data divisor - void rlSetVertexAttributeDefault(int locIndex, const void *value, int attribType, int count); // Set vertex attribute default value, when attribute to provided - void rlDrawVertexArray(int offset, int count); // Draw vertex array (currently active vao) - void rlDrawVertexArrayElements(int offset, int count, const void *buffer); // Draw vertex array elements - void rlDrawVertexArrayInstanced(int offset, int count, int instances); // Draw vertex array (currently active vao) with instancing - void rlDrawVertexArrayElementsInstanced(int offset, int count, const void *buffer, int instances); // Draw vertex array elements with instancing -// Textures management - unsigned int rlLoadTexture(const void *data, int width, int height, int format, int mipmapCount); // Load texture data - unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer); // Load depth texture/renderbuffer (to be attached to fbo) - unsigned int rlLoadTextureCubemap(const void *data, int size, int format, int mipmapCount); // Load texture cubemap data - void rlUpdateTexture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data); // Update texture with new data on GPU - void rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType); // Get OpenGL internal formats - const char *rlGetPixelFormatName(unsigned int format); // Get name string for pixel format - void rlUnloadTexture(unsigned int id); // Unload texture from GPU memory - void rlGenTextureMipmaps(unsigned int id, int width, int height, int format, int *mipmaps); // Generate mipmap data for selected texture - void *rlReadTexturePixels(unsigned int id, int width, int height, int format); // Read texture pixel data - unsigned char *rlReadScreenPixels(int width, int height); // Read screen pixel data (color buffer) -// Framebuffer management (fbo) - unsigned int rlLoadFramebuffer(void); // Load an empty framebuffer - void rlFramebufferAttach(unsigned int fboId, unsigned int texId, int attachType, int texType, int mipLevel); // Attach texture/renderbuffer to a framebuffer - bool rlFramebufferComplete(unsigned int id); // Verify framebuffer is complete - void rlUnloadFramebuffer(unsigned int id); // Delete framebuffer from GPU -// Shaders management - unsigned int rlLoadShaderCode(const char *vsCode, const char *fsCode); // Load shader from code strings - unsigned int rlCompileShader(const char *shaderCode, int type); // Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER) - unsigned int rlLoadShaderProgram(unsigned int vShaderId, unsigned int fShaderId); // Load custom shader program - void rlUnloadShaderProgram(unsigned int id); // Unload shader program - int rlGetLocationUniform(unsigned int shaderId, const char *uniformName); // Get shader location uniform - int rlGetLocationAttrib(unsigned int shaderId, const char *attribName); // Get shader location attribute - void rlSetUniform(int locIndex, const void *value, int uniformType, int count); // Set shader value uniform - void rlSetUniformMatrix(int locIndex, Matrix mat); // Set shader value matrix - void rlSetUniformMatrices(int locIndex, const Matrix *mat, int count); // Set shader value matrices - void rlSetUniformSampler(int locIndex, unsigned int textureId); // Set shader value sampler - void rlSetShader(unsigned int id, int *locs); // Set shader currently active (id and locations) -// Compute shader management - unsigned int rlLoadComputeShaderProgram(unsigned int shaderId); // Load compute shader program - void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ); // Dispatch compute shader (equivalent to *draw* for graphics pipeline) -// Shader buffer storage object management (ssbo) - unsigned int rlLoadShaderBuffer(unsigned int size, const void *data, int usageHint); // Load shader storage buffer object (SSBO) - void rlUnloadShaderBuffer(unsigned int ssboId); // Unload shader storage buffer object (SSBO) - void rlUpdateShaderBuffer(unsigned int id, const void *data, unsigned int dataSize, unsigned int offset); // Update SSBO buffer data - void rlBindShaderBuffer(unsigned int id, unsigned int index); // Bind SSBO buffer - void rlReadShaderBuffer(unsigned int id, void *dest, unsigned int count, unsigned int offset); // Read SSBO buffer data (GPU->CPU) - void rlCopyShaderBuffer(unsigned int destId, unsigned int srcId, unsigned int destOffset, unsigned int srcOffset, unsigned int count); // Copy SSBO data between buffers - unsigned int rlGetShaderBufferSize(unsigned int id); // Get SSBO buffer size -// Buffer management - void rlBindImageTexture(unsigned int id, unsigned int index, int format, bool readonly); // Bind image texture -// Matrix state management - Matrix rlGetMatrixModelview(void); // Get internal modelview matrix - Matrix rlGetMatrixProjection(void); // Get internal projection matrix - Matrix rlGetMatrixTransform(void); // Get internal accumulated transform matrix - Matrix rlGetMatrixProjectionStereo(int eye); // Get internal projection matrix for stereo render (selected eye) - Matrix rlGetMatrixViewOffsetStereo(int eye); // Get internal view offset matrix for stereo render (selected eye) - void rlSetMatrixProjection(Matrix proj); // Set a custom projection matrix (replaces internal projection matrix) - void rlSetMatrixModelview(Matrix view); // Set a custom modelview matrix (replaces internal modelview matrix) - void rlSetMatrixProjectionStereo(Matrix right, Matrix left); // Set eyes projection matrices for stereo rendering - void rlSetMatrixViewOffsetStereo(Matrix right, Matrix left); // Set eyes view offsets matrices for stereo rendering -// Quick and dirty cube/quad buffers load->draw->unload - void rlLoadDrawCube(void); // Load and draw a cube - void rlLoadDrawQuad(void); // Load and draw a quad -/*********************************************************************************** -* -* RLGL IMPLEMENTATION -* -************************************************************************************/ \ No newline at end of file diff --git a/raylib/static/__init__.py b/raylib/static/__init__.py new file mode 100644 index 0000000..1146208 --- /dev/null +++ b/raylib/static/__init__.py @@ -0,0 +1,6 @@ +from ._raylib_cffi import ffi, lib as rl +from _raylib_cffi.lib import * +from raylib.colors import * +import cffi + +print("RAYLIB STATIC LOADED") diff --git a/raylib/static/_raylib_cffi.c b/raylib/static/_raylib_cffi.c new file mode 100644 index 0000000..a44ab1b --- /dev/null +++ b/raylib/static/_raylib_cffi.c @@ -0,0 +1,22895 @@ +#define _CFFI_ + +/* We try to define Py_LIMITED_API before including Python.h. + + Mess: we can only define it if Py_DEBUG, Py_TRACE_REFS and + Py_REF_DEBUG are not defined. This is a best-effort approximation: + we can learn about Py_DEBUG from pyconfig.h, but it is unclear if + the same works for the other two macros. Py_DEBUG implies them, + but not the other way around. + + Issue #350 is still open: on Windows, the code here causes it to link + with PYTHON36.DLL (for example) instead of PYTHON3.DLL. A fix was + attempted in 164e526a5515 and 14ce6985e1c3, but reverted: virtualenv + does not make PYTHON3.DLL available, and so the "correctly" compiled + version would not run inside a virtualenv. We will re-apply the fix + after virtualenv has been fixed for some time. For explanation, see + issue #355. For a workaround if you want PYTHON3.DLL and don't worry + about virtualenv, see issue #350. See also 'py_limited_api' in + setuptools_ext.py. +*/ +#if !defined(_CFFI_USE_EMBEDDING) && !defined(Py_LIMITED_API) +# include +# if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) +# define Py_LIMITED_API +# endif +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#include + +/* This part is from file 'cffi/parse_c_type.h'. It is copied at the + beginning of C sources generated by CFFI's ffi.set_source(). */ + +typedef void *_cffi_opcode_t; + +#define _CFFI_OP(opcode, arg) (_cffi_opcode_t)(opcode | (((uintptr_t)(arg)) << 8)) +#define _CFFI_GETOP(cffi_opcode) ((unsigned char)(uintptr_t)cffi_opcode) +#define _CFFI_GETARG(cffi_opcode) (((intptr_t)cffi_opcode) >> 8) + +#define _CFFI_OP_PRIMITIVE 1 +#define _CFFI_OP_POINTER 3 +#define _CFFI_OP_ARRAY 5 +#define _CFFI_OP_OPEN_ARRAY 7 +#define _CFFI_OP_STRUCT_UNION 9 +#define _CFFI_OP_ENUM 11 +#define _CFFI_OP_FUNCTION 13 +#define _CFFI_OP_FUNCTION_END 15 +#define _CFFI_OP_NOOP 17 +#define _CFFI_OP_BITFIELD 19 +#define _CFFI_OP_TYPENAME 21 +#define _CFFI_OP_CPYTHON_BLTN_V 23 // varargs +#define _CFFI_OP_CPYTHON_BLTN_N 25 // noargs +#define _CFFI_OP_CPYTHON_BLTN_O 27 // O (i.e. a single arg) +#define _CFFI_OP_CONSTANT 29 +#define _CFFI_OP_CONSTANT_INT 31 +#define _CFFI_OP_GLOBAL_VAR 33 +#define _CFFI_OP_DLOPEN_FUNC 35 +#define _CFFI_OP_DLOPEN_CONST 37 +#define _CFFI_OP_GLOBAL_VAR_F 39 +#define _CFFI_OP_EXTERN_PYTHON 41 + +#define _CFFI_PRIM_VOID 0 +#define _CFFI_PRIM_BOOL 1 +#define _CFFI_PRIM_CHAR 2 +#define _CFFI_PRIM_SCHAR 3 +#define _CFFI_PRIM_UCHAR 4 +#define _CFFI_PRIM_SHORT 5 +#define _CFFI_PRIM_USHORT 6 +#define _CFFI_PRIM_INT 7 +#define _CFFI_PRIM_UINT 8 +#define _CFFI_PRIM_LONG 9 +#define _CFFI_PRIM_ULONG 10 +#define _CFFI_PRIM_LONGLONG 11 +#define _CFFI_PRIM_ULONGLONG 12 +#define _CFFI_PRIM_FLOAT 13 +#define _CFFI_PRIM_DOUBLE 14 +#define _CFFI_PRIM_LONGDOUBLE 15 + +#define _CFFI_PRIM_WCHAR 16 +#define _CFFI_PRIM_INT8 17 +#define _CFFI_PRIM_UINT8 18 +#define _CFFI_PRIM_INT16 19 +#define _CFFI_PRIM_UINT16 20 +#define _CFFI_PRIM_INT32 21 +#define _CFFI_PRIM_UINT32 22 +#define _CFFI_PRIM_INT64 23 +#define _CFFI_PRIM_UINT64 24 +#define _CFFI_PRIM_INTPTR 25 +#define _CFFI_PRIM_UINTPTR 26 +#define _CFFI_PRIM_PTRDIFF 27 +#define _CFFI_PRIM_SIZE 28 +#define _CFFI_PRIM_SSIZE 29 +#define _CFFI_PRIM_INT_LEAST8 30 +#define _CFFI_PRIM_UINT_LEAST8 31 +#define _CFFI_PRIM_INT_LEAST16 32 +#define _CFFI_PRIM_UINT_LEAST16 33 +#define _CFFI_PRIM_INT_LEAST32 34 +#define _CFFI_PRIM_UINT_LEAST32 35 +#define _CFFI_PRIM_INT_LEAST64 36 +#define _CFFI_PRIM_UINT_LEAST64 37 +#define _CFFI_PRIM_INT_FAST8 38 +#define _CFFI_PRIM_UINT_FAST8 39 +#define _CFFI_PRIM_INT_FAST16 40 +#define _CFFI_PRIM_UINT_FAST16 41 +#define _CFFI_PRIM_INT_FAST32 42 +#define _CFFI_PRIM_UINT_FAST32 43 +#define _CFFI_PRIM_INT_FAST64 44 +#define _CFFI_PRIM_UINT_FAST64 45 +#define _CFFI_PRIM_INTMAX 46 +#define _CFFI_PRIM_UINTMAX 47 +#define _CFFI_PRIM_FLOATCOMPLEX 48 +#define _CFFI_PRIM_DOUBLECOMPLEX 49 +#define _CFFI_PRIM_CHAR16 50 +#define _CFFI_PRIM_CHAR32 51 + +#define _CFFI__NUM_PRIM 52 +#define _CFFI__UNKNOWN_PRIM (-1) +#define _CFFI__UNKNOWN_FLOAT_PRIM (-2) +#define _CFFI__UNKNOWN_LONG_DOUBLE (-3) + +#define _CFFI__IO_FILE_STRUCT (-1) + + +struct _cffi_global_s { + const char *name; + void *address; + _cffi_opcode_t type_op; + void *size_or_direct_fn; // OP_GLOBAL_VAR: size, or 0 if unknown + // OP_CPYTHON_BLTN_*: addr of direct function +}; + +struct _cffi_getconst_s { + unsigned long long value; + const struct _cffi_type_context_s *ctx; + int gindex; +}; + +struct _cffi_struct_union_s { + const char *name; + int type_index; // -> _cffi_types, on a OP_STRUCT_UNION + int flags; // _CFFI_F_* flags below + size_t size; + int alignment; + int first_field_index; // -> _cffi_fields array + int num_fields; +}; +#define _CFFI_F_UNION 0x01 // is a union, not a struct +#define _CFFI_F_CHECK_FIELDS 0x02 // complain if fields are not in the + // "standard layout" or if some are missing +#define _CFFI_F_PACKED 0x04 // for CHECK_FIELDS, assume a packed struct +#define _CFFI_F_EXTERNAL 0x08 // in some other ffi.include() +#define _CFFI_F_OPAQUE 0x10 // opaque + +struct _cffi_field_s { + const char *name; + size_t field_offset; + size_t field_size; + _cffi_opcode_t field_type_op; +}; + +struct _cffi_enum_s { + const char *name; + int type_index; // -> _cffi_types, on a OP_ENUM + int type_prim; // _CFFI_PRIM_xxx + const char *enumerators; // comma-delimited string +}; + +struct _cffi_typename_s { + const char *name; + int type_index; /* if opaque, points to a possibly artificial + OP_STRUCT which is itself opaque */ +}; + +struct _cffi_type_context_s { + _cffi_opcode_t *types; + const struct _cffi_global_s *globals; + const struct _cffi_field_s *fields; + const struct _cffi_struct_union_s *struct_unions; + const struct _cffi_enum_s *enums; + const struct _cffi_typename_s *typenames; + int num_globals; + int num_struct_unions; + int num_enums; + int num_typenames; + const char *const *includes; + int num_types; + int flags; /* future extension */ +}; + +struct _cffi_parse_info_s { + const struct _cffi_type_context_s *ctx; + _cffi_opcode_t *output; + unsigned int output_size; + size_t error_location; + const char *error_message; +}; + +struct _cffi_externpy_s { + const char *name; + size_t size_of_result; + void *reserved1, *reserved2; +}; + +#ifdef _CFFI_INTERNAL +static int parse_c_type(struct _cffi_parse_info_s *info, const char *input); +static int search_in_globals(const struct _cffi_type_context_s *ctx, + const char *search, size_t search_len); +static int search_in_struct_unions(const struct _cffi_type_context_s *ctx, + const char *search, size_t search_len); +#endif + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +#endif + +#ifdef __GNUC__ +# define _CFFI_UNUSED_FN __attribute__((unused)) +#else +# define _CFFI_UNUSED_FN /* nothing */ +#endif + +#ifdef __cplusplus +# ifndef _Bool + typedef bool _Bool; /* semi-hackish: C++ has no _Bool; bool is builtin */ +# endif +#endif + +/********** CPython-specific section **********/ +#ifndef PYPY_VERSION + + +#if PY_MAJOR_VERSION >= 3 +# define PyInt_FromLong PyLong_FromLong +#endif + +#define _cffi_from_c_double PyFloat_FromDouble +#define _cffi_from_c_float PyFloat_FromDouble +#define _cffi_from_c_long PyInt_FromLong +#define _cffi_from_c_ulong PyLong_FromUnsignedLong +#define _cffi_from_c_longlong PyLong_FromLongLong +#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong +#define _cffi_from_c__Bool PyBool_FromLong + +#define _cffi_to_c_double PyFloat_AsDouble +#define _cffi_to_c_float PyFloat_AsDouble + +#define _cffi_from_c_int(x, type) \ + (((type)-1) > 0 ? /* unsigned */ \ + (sizeof(type) < sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + sizeof(type) == sizeof(long) ? \ + PyLong_FromUnsignedLong((unsigned long)x) : \ + PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ + (sizeof(type) <= sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + PyLong_FromLongLong((long long)x))) + +#define _cffi_to_c_int(o, type) \ + ((type)( \ + sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ + : (type)_cffi_to_c_i8(o)) : \ + sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ + : (type)_cffi_to_c_i16(o)) : \ + sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ + : (type)_cffi_to_c_i32(o)) : \ + sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ + : (type)_cffi_to_c_i64(o)) : \ + (Py_FatalError("unsupported size for type " #type), (type)0))) + +#define _cffi_to_c_i8 \ + ((int(*)(PyObject *))_cffi_exports[1]) +#define _cffi_to_c_u8 \ + ((int(*)(PyObject *))_cffi_exports[2]) +#define _cffi_to_c_i16 \ + ((int(*)(PyObject *))_cffi_exports[3]) +#define _cffi_to_c_u16 \ + ((int(*)(PyObject *))_cffi_exports[4]) +#define _cffi_to_c_i32 \ + ((int(*)(PyObject *))_cffi_exports[5]) +#define _cffi_to_c_u32 \ + ((unsigned int(*)(PyObject *))_cffi_exports[6]) +#define _cffi_to_c_i64 \ + ((long long(*)(PyObject *))_cffi_exports[7]) +#define _cffi_to_c_u64 \ + ((unsigned long long(*)(PyObject *))_cffi_exports[8]) +#define _cffi_to_c_char \ + ((int(*)(PyObject *))_cffi_exports[9]) +#define _cffi_from_c_pointer \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[10]) +#define _cffi_to_c_pointer \ + ((char *(*)(PyObject *, struct _cffi_ctypedescr *))_cffi_exports[11]) +#define _cffi_get_struct_layout \ + not used any more +#define _cffi_restore_errno \ + ((void(*)(void))_cffi_exports[13]) +#define _cffi_save_errno \ + ((void(*)(void))_cffi_exports[14]) +#define _cffi_from_c_char \ + ((PyObject *(*)(char))_cffi_exports[15]) +#define _cffi_from_c_deref \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[16]) +#define _cffi_to_c \ + ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[17]) +#define _cffi_from_c_struct \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[18]) +#define _cffi_to_c_wchar_t \ + ((_cffi_wchar_t(*)(PyObject *))_cffi_exports[19]) +#define _cffi_from_c_wchar_t \ + ((PyObject *(*)(_cffi_wchar_t))_cffi_exports[20]) +#define _cffi_to_c_long_double \ + ((long double(*)(PyObject *))_cffi_exports[21]) +#define _cffi_to_c__Bool \ + ((_Bool(*)(PyObject *))_cffi_exports[22]) +#define _cffi_prepare_pointer_call_argument \ + ((Py_ssize_t(*)(struct _cffi_ctypedescr *, \ + PyObject *, char **))_cffi_exports[23]) +#define _cffi_convert_array_from_object \ + ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[24]) +#define _CFFI_CPIDX 25 +#define _cffi_call_python \ + ((void(*)(struct _cffi_externpy_s *, char *))_cffi_exports[_CFFI_CPIDX]) +#define _cffi_to_c_wchar3216_t \ + ((int(*)(PyObject *))_cffi_exports[26]) +#define _cffi_from_c_wchar3216_t \ + ((PyObject *(*)(int))_cffi_exports[27]) +#define _CFFI_NUM_EXPORTS 28 + +struct _cffi_ctypedescr; + +static void *_cffi_exports[_CFFI_NUM_EXPORTS]; + +#define _cffi_type(index) ( \ + assert((((uintptr_t)_cffi_types[index]) & 1) == 0), \ + (struct _cffi_ctypedescr *)_cffi_types[index]) + +static PyObject *_cffi_init(const char *module_name, Py_ssize_t version, + const struct _cffi_type_context_s *ctx) +{ + PyObject *module, *o_arg, *new_module; + void *raw[] = { + (void *)module_name, + (void *)version, + (void *)_cffi_exports, + (void *)ctx, + }; + + module = PyImport_ImportModule("_cffi_backend"); + if (module == NULL) + goto failure; + + o_arg = PyLong_FromVoidPtr((void *)raw); + if (o_arg == NULL) + goto failure; + + new_module = PyObject_CallMethod( + module, (char *)"_init_cffi_1_0_external_module", (char *)"O", o_arg); + + Py_DECREF(o_arg); + Py_DECREF(module); + return new_module; + + failure: + Py_XDECREF(module); + return NULL; +} + + +#ifdef HAVE_WCHAR_H +typedef wchar_t _cffi_wchar_t; +#else +typedef uint16_t _cffi_wchar_t; /* same random pick as _cffi_backend.c */ +#endif + +_CFFI_UNUSED_FN static uint16_t _cffi_to_c_char16_t(PyObject *o) +{ + if (sizeof(_cffi_wchar_t) == 2) + return (uint16_t)_cffi_to_c_wchar_t(o); + else + return (uint16_t)_cffi_to_c_wchar3216_t(o); +} + +_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char16_t(uint16_t x) +{ + if (sizeof(_cffi_wchar_t) == 2) + return _cffi_from_c_wchar_t((_cffi_wchar_t)x); + else + return _cffi_from_c_wchar3216_t((int)x); +} + +_CFFI_UNUSED_FN static int _cffi_to_c_char32_t(PyObject *o) +{ + if (sizeof(_cffi_wchar_t) == 4) + return (int)_cffi_to_c_wchar_t(o); + else + return (int)_cffi_to_c_wchar3216_t(o); +} + +_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char32_t(unsigned int x) +{ + if (sizeof(_cffi_wchar_t) == 4) + return _cffi_from_c_wchar_t((_cffi_wchar_t)x); + else + return _cffi_from_c_wchar3216_t((int)x); +} + +union _cffi_union_alignment_u { + unsigned char m_char; + unsigned short m_short; + unsigned int m_int; + unsigned long m_long; + unsigned long long m_longlong; + float m_float; + double m_double; + long double m_longdouble; +}; + +struct _cffi_freeme_s { + struct _cffi_freeme_s *next; + union _cffi_union_alignment_u alignment; +}; + +_CFFI_UNUSED_FN static int +_cffi_convert_array_argument(struct _cffi_ctypedescr *ctptr, PyObject *arg, + char **output_data, Py_ssize_t datasize, + struct _cffi_freeme_s **freeme) +{ + char *p; + if (datasize < 0) + return -1; + + p = *output_data; + if (p == NULL) { + struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( + offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); + if (fp == NULL) + return -1; + fp->next = *freeme; + *freeme = fp; + p = *output_data = (char *)&fp->alignment; + } + memset((void *)p, 0, (size_t)datasize); + return _cffi_convert_array_from_object(p, ctptr, arg); +} + +_CFFI_UNUSED_FN static void +_cffi_free_array_arguments(struct _cffi_freeme_s *freeme) +{ + do { + void *p = (void *)freeme; + freeme = freeme->next; + PyObject_Free(p); + } while (freeme != NULL); +} + +/********** end CPython-specific section **********/ +#else +_CFFI_UNUSED_FN +static void (*_cffi_call_python_org)(struct _cffi_externpy_s *, char *); +# define _cffi_call_python _cffi_call_python_org +#endif + + +#define _cffi_array_len(array) (sizeof(array) / sizeof((array)[0])) + +#define _cffi_prim_int(size, sign) \ + ((size) == 1 ? ((sign) ? _CFFI_PRIM_INT8 : _CFFI_PRIM_UINT8) : \ + (size) == 2 ? ((sign) ? _CFFI_PRIM_INT16 : _CFFI_PRIM_UINT16) : \ + (size) == 4 ? ((sign) ? _CFFI_PRIM_INT32 : _CFFI_PRIM_UINT32) : \ + (size) == 8 ? ((sign) ? _CFFI_PRIM_INT64 : _CFFI_PRIM_UINT64) : \ + _CFFI__UNKNOWN_PRIM) + +#define _cffi_prim_float(size) \ + ((size) == sizeof(float) ? _CFFI_PRIM_FLOAT : \ + (size) == sizeof(double) ? _CFFI_PRIM_DOUBLE : \ + (size) == sizeof(long double) ? _CFFI__UNKNOWN_LONG_DOUBLE : \ + _CFFI__UNKNOWN_FLOAT_PRIM) + +#define _cffi_check_int(got, got_nonpos, expected) \ + ((got_nonpos) == (expected <= 0) && \ + (got) == (unsigned long long)expected) + +#ifdef MS_WIN32 +# define _cffi_stdcall __stdcall +#else +# define _cffi_stdcall /* nothing */ +#endif + +#ifdef __cplusplus +} +#endif + +/************************************************************/ + + + #include "../raylib.h" + + +/************************************************************/ + +static void *_cffi_types[] = { +/* 0 */ _CFFI_OP(_CFFI_OP_FUNCTION, 384), // AudioStream()(unsigned int, unsigned int, unsigned int) +/* 1 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 8), // unsigned int +/* 2 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 8), +/* 3 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 8), +/* 4 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 5 */ _CFFI_OP(_CFFI_OP_FUNCTION, 387), // BoundingBox()(Mesh) +/* 6 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 12), // Mesh +/* 7 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 8 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1148), // CharInfo *()(char const *, int, int *, int, int) +/* 9 */ _CFFI_OP(_CFFI_OP_POINTER, 337), // char const * +/* 10 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), // int +/* 11 */ _CFFI_OP(_CFFI_OP_POINTER, 10), // int * +/* 12 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 13 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 14 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 15 */ _CFFI_OP(_CFFI_OP_FUNCTION, 61), // Color *()(Image) +/* 16 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 8), // Image +/* 17 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 18 */ _CFFI_OP(_CFFI_OP_FUNCTION, 61), // Color *()(Image, int, int *) +/* 19 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 20 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 21 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 22 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 23 */ _CFFI_OP(_CFFI_OP_FUNCTION, 24), // Color()(Color, float) +/* 24 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 6), // Color +/* 25 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), // float +/* 26 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 27 */ _CFFI_OP(_CFFI_OP_FUNCTION, 24), // Color()(Vector3) +/* 28 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 26), // Vector3 +/* 29 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 30 */ _CFFI_OP(_CFFI_OP_FUNCTION, 24), // Color()(Vector4) +/* 31 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 27), // Vector4 +/* 32 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 33 */ _CFFI_OP(_CFFI_OP_FUNCTION, 24), // Color()(int) +/* 34 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 35 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 36 */ _CFFI_OP(_CFFI_OP_FUNCTION, 66), // Font()(Image, Color, int) +/* 37 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 38 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 39 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 40 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 41 */ _CFFI_OP(_CFFI_OP_FUNCTION, 66), // Font()(char const *) +/* 42 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 43 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 44 */ _CFFI_OP(_CFFI_OP_FUNCTION, 66), // Font()(char const *, int, int *, int) +/* 45 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 46 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 47 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 48 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 49 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 50 */ _CFFI_OP(_CFFI_OP_FUNCTION, 66), // Font()(void) +/* 51 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 52 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(CharInfo const *, Rectangle * *, int, int, int, int) +/* 53 */ _CFFI_OP(_CFFI_OP_POINTER, 1149), // CharInfo const * +/* 54 */ _CFFI_OP(_CFFI_OP_POINTER, 1166), // Rectangle * * +/* 55 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 56 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 57 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 58 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 59 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 60 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(Color *, int, int) +/* 61 */ _CFFI_OP(_CFFI_OP_POINTER, 24), // Color * +/* 62 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 63 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 64 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 65 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(Font, char const *, float, float, Color) +/* 66 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 7), // Font +/* 67 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 68 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 69 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 70 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 71 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 72 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(Image) +/* 73 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 74 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 75 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(Image, Rectangle) +/* 76 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 77 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 19), // Rectangle +/* 78 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 79 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(Texture2D) +/* 80 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 23), // Texture2D +/* 81 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 82 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(char const *) +/* 83 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 84 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 85 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(char const *, int, Color) +/* 86 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 87 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 88 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 89 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 90 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(char const *, int, int, int, int) +/* 91 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 92 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 93 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 94 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 95 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 96 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 97 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(int, int, Color) +/* 98 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 99 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 100 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 101 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 102 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(int, int, Color, Color) +/* 103 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 104 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 105 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 106 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 107 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 108 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(int, int, float) +/* 109 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 110 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 111 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 112 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 113 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(int, int, float, Color, Color) +/* 114 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 115 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 116 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 117 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 118 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 119 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 120 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(int, int, int) +/* 121 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 122 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 123 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 124 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 125 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(int, int, int, int, Color, Color) +/* 126 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 127 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 128 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 129 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 130 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 131 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 132 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 133 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(int, int, int, int, float) +/* 134 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 135 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 136 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 137 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 138 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 139 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 140 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(void *, int, int, int) +/* 141 */ _CFFI_OP(_CFFI_OP_POINTER, 1192), // void * +/* 142 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 143 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 144 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 145 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 146 */ _CFFI_OP(_CFFI_OP_FUNCTION, 16), // Image()(void) +/* 147 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 148 */ _CFFI_OP(_CFFI_OP_FUNCTION, 699), // Material *()(char const *, int *) +/* 149 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 150 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 151 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 152 */ _CFFI_OP(_CFFI_OP_FUNCTION, 704), // Material()(void) +/* 153 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 154 */ _CFFI_OP(_CFFI_OP_FUNCTION, 707), // Matrix()(Camera2D) +/* 155 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 3), // Camera2D +/* 156 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 157 */ _CFFI_OP(_CFFI_OP_FUNCTION, 707), // Matrix()(Camera3D) +/* 158 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 4), // Camera3D +/* 159 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 160 */ _CFFI_OP(_CFFI_OP_FUNCTION, 707), // Matrix()(void) +/* 161 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 162 */ _CFFI_OP(_CFFI_OP_FUNCTION, 710), // Mesh *()(char const *, int *) +/* 163 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 164 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 165 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 166 */ _CFFI_OP(_CFFI_OP_FUNCTION, 6), // Mesh()(Image, Vector3) +/* 167 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 168 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 169 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 170 */ _CFFI_OP(_CFFI_OP_FUNCTION, 6), // Mesh()(float, float, float) +/* 171 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 172 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 173 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 174 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 175 */ _CFFI_OP(_CFFI_OP_FUNCTION, 6), // Mesh()(float, float, int) +/* 176 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 177 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 178 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 179 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 180 */ _CFFI_OP(_CFFI_OP_FUNCTION, 6), // Mesh()(float, float, int, int) +/* 181 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 182 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 183 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 184 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 185 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 186 */ _CFFI_OP(_CFFI_OP_FUNCTION, 6), // Mesh()(float, int, int) +/* 187 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 188 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 189 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 190 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 191 */ _CFFI_OP(_CFFI_OP_FUNCTION, 6), // Mesh()(int, float) +/* 192 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 193 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 194 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 195 */ _CFFI_OP(_CFFI_OP_FUNCTION, 214), // Model()(Mesh) +/* 196 */ _CFFI_OP(_CFFI_OP_NOOP, 6), +/* 197 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 198 */ _CFFI_OP(_CFFI_OP_FUNCTION, 214), // Model()(char const *) +/* 199 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 200 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 201 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1161), // ModelAnimation *()(char const *, int *) +/* 202 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 203 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 204 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 205 */ _CFFI_OP(_CFFI_OP_FUNCTION, 371), // Music()(char const *) +/* 206 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 207 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 208 */ _CFFI_OP(_CFFI_OP_FUNCTION, 213), // Ray()(Vector2, Camera3D) +/* 209 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 25), // Vector2 +/* 210 */ _CFFI_OP(_CFFI_OP_NOOP, 158), +/* 211 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 212 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1165), // RayHitInfo()(Ray, Model) +/* 213 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 17), // Ray +/* 214 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 13), // Model +/* 215 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 216 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1165), // RayHitInfo()(Ray, Vector3, Vector3, Vector3) +/* 217 */ _CFFI_OP(_CFFI_OP_NOOP, 213), +/* 218 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 219 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 220 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 221 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 222 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1165), // RayHitInfo()(Ray, float) +/* 223 */ _CFFI_OP(_CFFI_OP_NOOP, 213), +/* 224 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 225 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 226 */ _CFFI_OP(_CFFI_OP_FUNCTION, 77), // Rectangle()(Image, float) +/* 227 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 228 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 229 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 230 */ _CFFI_OP(_CFFI_OP_FUNCTION, 77), // Rectangle()(Rectangle, Rectangle) +/* 231 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 232 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 233 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 234 */ _CFFI_OP(_CFFI_OP_FUNCTION, 800), // RenderTexture2D()(int, int) +/* 235 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 236 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 237 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 238 */ _CFFI_OP(_CFFI_OP_FUNCTION, 258), // Shader()(char const *, char const *) +/* 239 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 240 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 241 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 242 */ _CFFI_OP(_CFFI_OP_FUNCTION, 258), // Shader()(void) +/* 243 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 244 */ _CFFI_OP(_CFFI_OP_FUNCTION, 433), // Sound()(Wave) +/* 245 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 29), // Wave +/* 246 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 247 */ _CFFI_OP(_CFFI_OP_FUNCTION, 433), // Sound()(char const *) +/* 248 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 249 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 250 */ _CFFI_OP(_CFFI_OP_FUNCTION, 80), // Texture2D()(Image) +/* 251 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 252 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 253 */ _CFFI_OP(_CFFI_OP_FUNCTION, 80), // Texture2D()(Image, int) +/* 254 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 255 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 256 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 257 */ _CFFI_OP(_CFFI_OP_FUNCTION, 80), // Texture2D()(Shader, Texture2D, int) +/* 258 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 21), // Shader +/* 259 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 260 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 261 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 262 */ _CFFI_OP(_CFFI_OP_FUNCTION, 80), // Texture2D()(Shader, int) +/* 263 */ _CFFI_OP(_CFFI_OP_NOOP, 258), +/* 264 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 265 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 266 */ _CFFI_OP(_CFFI_OP_FUNCTION, 80), // Texture2D()(char const *) +/* 267 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 268 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 269 */ _CFFI_OP(_CFFI_OP_FUNCTION, 80), // Texture2D()(void) +/* 270 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 271 */ _CFFI_OP(_CFFI_OP_FUNCTION, 209), // Vector2()(Font, char const *, float, float) +/* 272 */ _CFFI_OP(_CFFI_OP_NOOP, 66), +/* 273 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 274 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 275 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 276 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 277 */ _CFFI_OP(_CFFI_OP_FUNCTION, 209), // Vector2()(Vector2, Camera2D) +/* 278 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 279 */ _CFFI_OP(_CFFI_OP_NOOP, 155), +/* 280 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 281 */ _CFFI_OP(_CFFI_OP_FUNCTION, 209), // Vector2()(Vector3, Camera3D) +/* 282 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 283 */ _CFFI_OP(_CFFI_OP_NOOP, 158), +/* 284 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 285 */ _CFFI_OP(_CFFI_OP_FUNCTION, 209), // Vector2()(Vector3, Camera3D, int, int) +/* 286 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 287 */ _CFFI_OP(_CFFI_OP_NOOP, 158), +/* 288 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 289 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 290 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 291 */ _CFFI_OP(_CFFI_OP_FUNCTION, 209), // Vector2()(int) +/* 292 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 293 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 294 */ _CFFI_OP(_CFFI_OP_FUNCTION, 209), // Vector2()(void) +/* 295 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 296 */ _CFFI_OP(_CFFI_OP_FUNCTION, 28), // Vector3()(Color) +/* 297 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 298 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 299 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1175), // Vector4 *()(Image) +/* 300 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 301 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 302 */ _CFFI_OP(_CFFI_OP_FUNCTION, 31), // Vector4()(Color) +/* 303 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 304 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 305 */ _CFFI_OP(_CFFI_OP_FUNCTION, 245), // Wave()(Wave) +/* 306 */ _CFFI_OP(_CFFI_OP_NOOP, 245), +/* 307 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 308 */ _CFFI_OP(_CFFI_OP_FUNCTION, 245), // Wave()(char const *) +/* 309 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 310 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 311 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1176), // char * *()(char const *, int *) +/* 312 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 313 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 314 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 315 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1176), // char * *()(int *) +/* 316 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 317 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 318 */ _CFFI_OP(_CFFI_OP_FUNCTION, 319), // char *()(char *, char const *, char const *) +/* 319 */ _CFFI_OP(_CFFI_OP_POINTER, 337), // char * +/* 320 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 321 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 322 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 323 */ _CFFI_OP(_CFFI_OP_FUNCTION, 319), // char *()(char const *) +/* 324 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 325 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 326 */ _CFFI_OP(_CFFI_OP_FUNCTION, 319), // char *()(char const *, char const *, int) +/* 327 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 328 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 329 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 330 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 331 */ _CFFI_OP(_CFFI_OP_FUNCTION, 319), // char *()(int *, int) +/* 332 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 333 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 334 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 335 */ _CFFI_OP(_CFFI_OP_FUNCTION, 341), // char const * *()(char const *, char, int *) +/* 336 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 337 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 2), // char +/* 338 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 339 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 340 */ _CFFI_OP(_CFFI_OP_FUNCTION, 9), // char const *()(char const * *, int, char const *) +/* 341 */ _CFFI_OP(_CFFI_OP_POINTER, 9), // char const * * +/* 342 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 343 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 344 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 345 */ _CFFI_OP(_CFFI_OP_FUNCTION, 9), // char const *()(char const *) +/* 346 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 347 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 348 */ _CFFI_OP(_CFFI_OP_FUNCTION, 9), // char const *()(char const *, ...) +/* 349 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 350 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 1), +/* 351 */ _CFFI_OP(_CFFI_OP_FUNCTION, 9), // char const *()(char const *, int, int) +/* 352 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 353 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 354 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 355 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 356 */ _CFFI_OP(_CFFI_OP_FUNCTION, 9), // char const *()(int) +/* 357 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 358 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 359 */ _CFFI_OP(_CFFI_OP_FUNCTION, 9), // char const *()(int, int *) +/* 360 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 361 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 362 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 363 */ _CFFI_OP(_CFFI_OP_FUNCTION, 9), // char const *()(void) +/* 364 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 365 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1180), // double()(void) +/* 366 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 367 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1181), // float *()(Wave) +/* 368 */ _CFFI_OP(_CFFI_OP_NOOP, 245), +/* 369 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 370 */ _CFFI_OP(_CFFI_OP_FUNCTION, 25), // float()(Music) +/* 371 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 15), // Music +/* 372 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 373 */ _CFFI_OP(_CFFI_OP_FUNCTION, 25), // float()(int, int) +/* 374 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 375 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 376 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 377 */ _CFFI_OP(_CFFI_OP_FUNCTION, 25), // float()(void) +/* 378 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 379 */ _CFFI_OP(_CFFI_OP_FUNCTION, 11), // int *()(char const *, int *) +/* 380 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 381 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 382 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 383 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(AudioStream) +/* 384 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 0), // AudioStream +/* 385 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 386 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(BoundingBox, BoundingBox) +/* 387 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 2), // BoundingBox +/* 388 */ _CFFI_OP(_CFFI_OP_NOOP, 387), +/* 389 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 390 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(BoundingBox, Vector3, float) +/* 391 */ _CFFI_OP(_CFFI_OP_NOOP, 387), +/* 392 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 393 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 394 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 395 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Color) +/* 396 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 397 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 398 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Font, int) +/* 399 */ _CFFI_OP(_CFFI_OP_NOOP, 66), +/* 400 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 401 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 402 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Model, ModelAnimation) +/* 403 */ _CFFI_OP(_CFFI_OP_NOOP, 214), +/* 404 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 14), // ModelAnimation +/* 405 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 406 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Music) +/* 407 */ _CFFI_OP(_CFFI_OP_NOOP, 371), +/* 408 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 409 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Ray, BoundingBox) +/* 410 */ _CFFI_OP(_CFFI_OP_NOOP, 213), +/* 411 */ _CFFI_OP(_CFFI_OP_NOOP, 387), +/* 412 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 413 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Ray, Vector3, float) +/* 414 */ _CFFI_OP(_CFFI_OP_NOOP, 213), +/* 415 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 416 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 417 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 418 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Ray, Vector3, float, Vector3 *) +/* 419 */ _CFFI_OP(_CFFI_OP_NOOP, 213), +/* 420 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 421 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 422 */ _CFFI_OP(_CFFI_OP_POINTER, 28), // Vector3 * +/* 423 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 424 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Rectangle, Rectangle) +/* 425 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 426 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 427 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 428 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Shader, char const *) +/* 429 */ _CFFI_OP(_CFFI_OP_NOOP, 258), +/* 430 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 431 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 432 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Sound) +/* 433 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 22), // Sound +/* 434 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 435 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Vector2, Rectangle) +/* 436 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 437 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 438 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 439 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Vector2, Vector2, Vector2, Vector2) +/* 440 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 441 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 442 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 443 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 444 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 445 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Vector2, Vector2, float) +/* 446 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 447 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 448 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 449 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 450 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Vector2, float, Rectangle) +/* 451 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 452 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 453 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 454 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 455 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Vector2, float, Vector2, float) +/* 456 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 457 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 458 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 459 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 460 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 461 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(Vector3, float, Vector3, float) +/* 462 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 463 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 464 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 465 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 466 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 467 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(char *, char const *) +/* 468 */ _CFFI_OP(_CFFI_OP_NOOP, 319), +/* 469 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 470 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 471 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(char const *) +/* 472 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 473 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 474 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(char const *, char const *) +/* 475 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 476 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 477 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 478 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(char const *, int *) +/* 479 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 480 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 481 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 482 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(char const *, int) +/* 483 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 484 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 485 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 486 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(int) +/* 487 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 488 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 489 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(int, char const *) +/* 490 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 491 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 492 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 493 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(int, int) +/* 494 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 495 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 496 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 497 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(int, int, int) +/* 498 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 499 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 500 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 501 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 502 */ _CFFI_OP(_CFFI_OP_FUNCTION, 10), // int()(void) +/* 503 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 504 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1184), // long()(char const *) +/* 505 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 506 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 507 */ _CFFI_OP(_CFFI_OP_FUNCTION, 508), // unsigned char *()(unsigned char *, int, int *) +/* 508 */ _CFFI_OP(_CFFI_OP_POINTER, 1187), // unsigned char * +/* 509 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 510 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 511 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 512 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1), // unsigned int()(char const *) +/* 513 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 514 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 515 */ _CFFI_OP(_CFFI_OP_FUNCTION, 141), // void *()(void) +/* 516 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 517 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(AudioStream) +/* 518 */ _CFFI_OP(_CFFI_OP_NOOP, 384), +/* 519 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 520 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(AudioStream, float) +/* 521 */ _CFFI_OP(_CFFI_OP_NOOP, 384), +/* 522 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 523 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 524 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(AudioStream, void const *, int) +/* 525 */ _CFFI_OP(_CFFI_OP_NOOP, 384), +/* 526 */ _CFFI_OP(_CFFI_OP_POINTER, 1192), // void const * +/* 527 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 528 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 529 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(BoundingBox, Color) +/* 530 */ _CFFI_OP(_CFFI_OP_NOOP, 387), +/* 531 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 532 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 533 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Camera2D) +/* 534 */ _CFFI_OP(_CFFI_OP_NOOP, 155), +/* 535 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 536 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Camera3D *) +/* 537 */ _CFFI_OP(_CFFI_OP_POINTER, 158), // Camera3D * +/* 538 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 539 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Camera3D) +/* 540 */ _CFFI_OP(_CFFI_OP_NOOP, 158), +/* 541 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 542 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Camera3D, Texture2D, Rectangle, Vector3, float, Color) +/* 543 */ _CFFI_OP(_CFFI_OP_NOOP, 158), +/* 544 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 545 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 546 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 547 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 548 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 549 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 550 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Camera3D, Texture2D, Vector3, float, Color) +/* 551 */ _CFFI_OP(_CFFI_OP_NOOP, 158), +/* 552 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 553 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 554 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 555 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 556 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 557 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Camera3D, int) +/* 558 */ _CFFI_OP(_CFFI_OP_NOOP, 158), +/* 559 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 560 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 561 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Color) +/* 562 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 563 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 564 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Font) +/* 565 */ _CFFI_OP(_CFFI_OP_NOOP, 66), +/* 566 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 567 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Font, char const *, Rectangle, float, float, int, Color) +/* 568 */ _CFFI_OP(_CFFI_OP_NOOP, 66), +/* 569 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 570 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 571 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 572 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 573 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 574 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 575 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 576 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Font, char const *, Rectangle, float, float, int, Color, int, int, Color, Color) +/* 577 */ _CFFI_OP(_CFFI_OP_NOOP, 66), +/* 578 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 579 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 580 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 581 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 582 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 583 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 584 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 585 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 586 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 587 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 588 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 589 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Font, char const *, Vector2, float, float, Color) +/* 590 */ _CFFI_OP(_CFFI_OP_NOOP, 66), +/* 591 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 592 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 593 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 594 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 595 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 596 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 597 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Font, int, Vector2, float, Color) +/* 598 */ _CFFI_OP(_CFFI_OP_NOOP, 66), +/* 599 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 600 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 601 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 602 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 603 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 604 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *) +/* 605 */ _CFFI_OP(_CFFI_OP_POINTER, 16), // Image * +/* 606 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 607 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Color) +/* 608 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 609 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 610 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 611 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Color, Color) +/* 612 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 613 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 614 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 615 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 616 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Color, float) +/* 617 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 618 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 619 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 620 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 621 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Image) +/* 622 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 623 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 624 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 625 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Image, Rectangle, Rectangle, Color) +/* 626 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 627 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 628 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 629 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 630 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 631 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 632 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Rectangle) +/* 633 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 634 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 635 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 636 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Rectangle, Color) +/* 637 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 638 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 639 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 640 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 641 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Rectangle, int, Color) +/* 642 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 643 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 644 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 645 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 646 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 647 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Vector2, Font, char const *, float, float, Color) +/* 648 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 649 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 650 */ _CFFI_OP(_CFFI_OP_NOOP, 66), +/* 651 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 652 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 653 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 654 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 655 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 656 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, Vector2, char const *, int, Color) +/* 657 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 658 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 659 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 660 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 661 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 662 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 663 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, float) +/* 664 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 665 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 666 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 667 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, int) +/* 668 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 669 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 670 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 671 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, int, int) +/* 672 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 673 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 674 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 675 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 676 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, int, int, int, int) +/* 677 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 678 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 679 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 680 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 681 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 682 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 683 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image *, int, int, int, int, Color) +/* 684 */ _CFFI_OP(_CFFI_OP_NOOP, 605), +/* 685 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 686 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 687 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 688 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 689 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 690 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 691 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image) +/* 692 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 693 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 694 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Image, char const *) +/* 695 */ _CFFI_OP(_CFFI_OP_NOOP, 16), +/* 696 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 697 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 698 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Material *, int, Texture2D) +/* 699 */ _CFFI_OP(_CFFI_OP_POINTER, 704), // Material * +/* 700 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 701 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 702 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 703 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Material) +/* 704 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 9), // Material +/* 705 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 706 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Matrix) +/* 707 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 11), // Matrix +/* 708 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 709 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Mesh *) +/* 710 */ _CFFI_OP(_CFFI_OP_POINTER, 6), // Mesh * +/* 711 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 712 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Mesh) +/* 713 */ _CFFI_OP(_CFFI_OP_NOOP, 6), +/* 714 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 715 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Mesh, char const *) +/* 716 */ _CFFI_OP(_CFFI_OP_NOOP, 6), +/* 717 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 718 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 719 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Model *, int, int) +/* 720 */ _CFFI_OP(_CFFI_OP_POINTER, 214), // Model * +/* 721 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 722 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 723 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 724 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Model) +/* 725 */ _CFFI_OP(_CFFI_OP_NOOP, 214), +/* 726 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 727 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Model, ModelAnimation, int) +/* 728 */ _CFFI_OP(_CFFI_OP_NOOP, 214), +/* 729 */ _CFFI_OP(_CFFI_OP_NOOP, 404), +/* 730 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 731 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 732 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Model, Vector3, Vector3, float, Vector3, Color) +/* 733 */ _CFFI_OP(_CFFI_OP_NOOP, 214), +/* 734 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 735 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 736 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 737 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 738 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 739 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 740 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Model, Vector3, float, Color) +/* 741 */ _CFFI_OP(_CFFI_OP_NOOP, 214), +/* 742 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 743 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 744 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 745 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 746 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(ModelAnimation) +/* 747 */ _CFFI_OP(_CFFI_OP_NOOP, 404), +/* 748 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 749 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Music) +/* 750 */ _CFFI_OP(_CFFI_OP_NOOP, 371), +/* 751 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 752 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Music, float) +/* 753 */ _CFFI_OP(_CFFI_OP_NOOP, 371), +/* 754 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 755 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 756 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Music, int) +/* 757 */ _CFFI_OP(_CFFI_OP_NOOP, 371), +/* 758 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 759 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 760 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Ray, Color) +/* 761 */ _CFFI_OP(_CFFI_OP_NOOP, 213), +/* 762 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 763 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 764 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Rectangle, Color) +/* 765 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 766 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 767 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 768 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Rectangle, Color, Color, Color, Color) +/* 769 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 770 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 771 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 772 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 773 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 774 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 775 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Rectangle, Vector2, float, Color) +/* 776 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 777 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 778 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 779 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 780 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 781 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Rectangle, float, int, Color) +/* 782 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 783 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 784 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 785 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 786 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 787 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Rectangle, float, int, int, Color) +/* 788 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 789 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 790 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 791 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 792 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 793 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 794 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Rectangle, int, Color) +/* 795 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 796 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 797 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 798 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 799 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(RenderTexture2D) +/* 800 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 20), // RenderTexture2D +/* 801 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 802 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Shader) +/* 803 */ _CFFI_OP(_CFFI_OP_NOOP, 258), +/* 804 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 805 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Shader, int, Matrix) +/* 806 */ _CFFI_OP(_CFFI_OP_NOOP, 258), +/* 807 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 808 */ _CFFI_OP(_CFFI_OP_NOOP, 707), +/* 809 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 810 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Shader, int, Texture2D) +/* 811 */ _CFFI_OP(_CFFI_OP_NOOP, 258), +/* 812 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 813 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 814 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 815 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Shader, int, void const *, int) +/* 816 */ _CFFI_OP(_CFFI_OP_NOOP, 258), +/* 817 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 818 */ _CFFI_OP(_CFFI_OP_NOOP, 526), +/* 819 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 820 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 821 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Shader, int, void const *, int, int) +/* 822 */ _CFFI_OP(_CFFI_OP_NOOP, 258), +/* 823 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 824 */ _CFFI_OP(_CFFI_OP_NOOP, 526), +/* 825 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 826 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 827 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 828 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Sound) +/* 829 */ _CFFI_OP(_CFFI_OP_NOOP, 433), +/* 830 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 831 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Sound, float) +/* 832 */ _CFFI_OP(_CFFI_OP_NOOP, 433), +/* 833 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 834 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 835 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Sound, void const *, int) +/* 836 */ _CFFI_OP(_CFFI_OP_NOOP, 433), +/* 837 */ _CFFI_OP(_CFFI_OP_NOOP, 526), +/* 838 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 839 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 840 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D *) +/* 841 */ _CFFI_OP(_CFFI_OP_POINTER, 80), // Texture2D * +/* 842 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 843 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D) +/* 844 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 845 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 846 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, NPatchInfo, Rectangle, Vector2, float, Color) +/* 847 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 848 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 16), // NPatchInfo +/* 849 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 850 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 851 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 852 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 853 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 854 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, Rectangle) +/* 855 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 856 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 857 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 858 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, Rectangle, Rectangle, Vector2, float, Color) +/* 859 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 860 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 861 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 862 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 863 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 864 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 865 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 866 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, Rectangle, Vector2, Color) +/* 867 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 868 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 869 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 870 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 871 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 872 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, Vector2, Color) +/* 873 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 874 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 875 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 876 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 877 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, Vector2, Vector2, Rectangle, Color) +/* 878 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 879 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 880 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 881 */ _CFFI_OP(_CFFI_OP_NOOP, 77), +/* 882 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 883 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 884 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, Vector2, float, float, Color) +/* 885 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 886 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 887 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 888 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 889 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 890 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 891 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, Vector3, float, float, float, Color) +/* 892 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 893 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 894 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 895 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 896 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 897 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 898 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 899 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, int) +/* 900 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 901 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 902 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 903 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, int, int, Color) +/* 904 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 905 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 906 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 907 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 908 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 909 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Texture2D, void const *) +/* 910 */ _CFFI_OP(_CFFI_OP_NOOP, 80), +/* 911 */ _CFFI_OP(_CFFI_OP_NOOP, 526), +/* 912 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 913 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector2 *, int, Color) +/* 914 */ _CFFI_OP(_CFFI_OP_POINTER, 209), // Vector2 * +/* 915 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 916 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 917 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 918 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector2, Color) +/* 919 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 920 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 921 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 922 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector2, Vector2, Color) +/* 923 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 924 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 925 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 926 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 927 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector2, Vector2, Vector2, Color) +/* 928 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 929 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 930 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 931 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 932 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 933 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector2, Vector2, float, Color) +/* 934 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 935 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 936 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 937 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 938 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 939 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector2, float, Color) +/* 940 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 941 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 942 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 943 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 944 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector2, float, float, int, int, int, Color) +/* 945 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 946 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 947 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 948 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 949 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 950 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 951 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 952 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 953 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector2, float, int, int, int, Color) +/* 954 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 955 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 956 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 957 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 958 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 959 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 960 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 961 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector2, int, float, float, Color) +/* 962 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 963 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 964 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 965 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 966 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 967 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 968 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector3) +/* 969 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 970 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 971 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector3, Color) +/* 972 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 973 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 974 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 975 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector3, Vector2, Color) +/* 976 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 977 */ _CFFI_OP(_CFFI_OP_NOOP, 209), +/* 978 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 979 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 980 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector3, Vector3, Color) +/* 981 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 982 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 983 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 984 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 985 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector3, float, Color) +/* 986 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 987 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 988 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 989 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 990 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector3, float, Vector3, float, Color) +/* 991 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 992 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 993 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 994 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 995 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 996 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 997 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector3, float, float, float, Color) +/* 998 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 999 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1000 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1001 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1002 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1003 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1004 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector3, float, float, float, int, Color) +/* 1005 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 1006 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1007 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1008 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1009 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1010 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1011 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1012 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Vector3, float, int, int, Color) +/* 1013 */ _CFFI_OP(_CFFI_OP_NOOP, 28), +/* 1014 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1015 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1016 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1017 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1018 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1019 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(VrDeviceInfo, Shader) +/* 1020 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 28), // VrDeviceInfo +/* 1021 */ _CFFI_OP(_CFFI_OP_NOOP, 258), +/* 1022 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1023 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Wave *, int, int) +/* 1024 */ _CFFI_OP(_CFFI_OP_POINTER, 245), // Wave * +/* 1025 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1026 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1027 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1028 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Wave *, int, int, int) +/* 1029 */ _CFFI_OP(_CFFI_OP_NOOP, 1024), +/* 1030 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1031 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1032 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1033 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1034 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Wave) +/* 1035 */ _CFFI_OP(_CFFI_OP_NOOP, 245), +/* 1036 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1037 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(Wave, char const *) +/* 1038 */ _CFFI_OP(_CFFI_OP_NOOP, 245), +/* 1039 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 1040 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1041 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(char *, char const *, int *) +/* 1042 */ _CFFI_OP(_CFFI_OP_NOOP, 319), +/* 1043 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 1044 */ _CFFI_OP(_CFFI_OP_NOOP, 11), +/* 1045 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1046 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(char const *) +/* 1047 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 1048 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1049 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(char const *, int, int, int, Color) +/* 1050 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 1051 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1052 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1053 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1054 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1055 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1056 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(float) +/* 1057 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1058 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1059 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(float, float) +/* 1060 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1061 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1062 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1063 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int) +/* 1064 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1065 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1066 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, char const *, ...) +/* 1067 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1068 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 1069 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 1), +/* 1070 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, float) +/* 1071 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1072 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1073 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1074 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int) +/* 1075 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1076 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1077 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1078 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int, Color) +/* 1079 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1080 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1081 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1082 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1083 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int, char const *) +/* 1084 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1085 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1086 */ _CFFI_OP(_CFFI_OP_NOOP, 9), +/* 1087 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1088 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int, float, Color) +/* 1089 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1090 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1091 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1092 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1093 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1094 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int, float, Color, Color) +/* 1095 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1096 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1097 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1098 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1099 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1100 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1101 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int, float, float, Color) +/* 1102 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1103 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1104 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1105 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 13), +/* 1106 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1107 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1108 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int, int, int) +/* 1109 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1110 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1111 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1112 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1113 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1114 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int, int, int, Color) +/* 1115 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1116 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1117 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1118 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1119 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1120 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1121 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int, int, int, Color, Color) +/* 1122 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1123 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1124 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1125 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1126 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1127 */ _CFFI_OP(_CFFI_OP_NOOP, 24), +/* 1128 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1129 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(int, int, int, int, int, int) +/* 1130 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1131 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1132 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1133 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1134 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1135 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 7), +/* 1136 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1137 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(unsigned int) +/* 1138 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 8), +/* 1139 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1140 */ _CFFI_OP(_CFFI_OP_FUNCTION, 1192), // void()(void) +/* 1141 */ _CFFI_OP(_CFFI_OP_FUNCTION_END, 0), +/* 1142 */ _CFFI_OP(_CFFI_OP_ENUM, 0), // AndroidButton +/* 1143 */ _CFFI_OP(_CFFI_OP_ENUM, 1), // BlendMode +/* 1144 */ _CFFI_OP(_CFFI_OP_POINTER, 1145), // BoneInfo * +/* 1145 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 1), // BoneInfo +/* 1146 */ _CFFI_OP(_CFFI_OP_ENUM, 2), // CameraMode +/* 1147 */ _CFFI_OP(_CFFI_OP_ENUM, 3), // CameraType +/* 1148 */ _CFFI_OP(_CFFI_OP_POINTER, 1149), // CharInfo * +/* 1149 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 5), // CharInfo +/* 1150 */ _CFFI_OP(_CFFI_OP_ENUM, 4), // ConfigFlag +/* 1151 */ _CFFI_OP(_CFFI_OP_ENUM, 5), // CubemapLayoutType +/* 1152 */ _CFFI_OP(_CFFI_OP_ENUM, 6), // FontType +/* 1153 */ _CFFI_OP(_CFFI_OP_ENUM, 7), // GamepadAxis +/* 1154 */ _CFFI_OP(_CFFI_OP_ENUM, 8), // GamepadButton +/* 1155 */ _CFFI_OP(_CFFI_OP_ENUM, 9), // GamepadNumber +/* 1156 */ _CFFI_OP(_CFFI_OP_ENUM, 10), // GestureType +/* 1157 */ _CFFI_OP(_CFFI_OP_ENUM, 11), // KeyboardKey +/* 1158 */ _CFFI_OP(_CFFI_OP_POINTER, 1159), // MaterialMap * +/* 1159 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 10), // MaterialMap +/* 1160 */ _CFFI_OP(_CFFI_OP_ENUM, 12), // MaterialMapType +/* 1161 */ _CFFI_OP(_CFFI_OP_POINTER, 404), // ModelAnimation * +/* 1162 */ _CFFI_OP(_CFFI_OP_ENUM, 13), // MouseButton +/* 1163 */ _CFFI_OP(_CFFI_OP_ENUM, 14), // NPatchType +/* 1164 */ _CFFI_OP(_CFFI_OP_ENUM, 15), // PixelFormat +/* 1165 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 18), // RayHitInfo +/* 1166 */ _CFFI_OP(_CFFI_OP_POINTER, 77), // Rectangle * +/* 1167 */ _CFFI_OP(_CFFI_OP_ENUM, 16), // ShaderLocationIndex +/* 1168 */ _CFFI_OP(_CFFI_OP_ENUM, 17), // ShaderUniformDataType +/* 1169 */ _CFFI_OP(_CFFI_OP_ENUM, 18), // TextureFilterMode +/* 1170 */ _CFFI_OP(_CFFI_OP_ENUM, 19), // TextureWrapMode +/* 1171 */ _CFFI_OP(_CFFI_OP_ENUM, 20), // TraceLogType +/* 1172 */ _CFFI_OP(_CFFI_OP_POINTER, 1173), // Transform * * +/* 1173 */ _CFFI_OP(_CFFI_OP_POINTER, 1174), // Transform * +/* 1174 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 24), // Transform +/* 1175 */ _CFFI_OP(_CFFI_OP_POINTER, 31), // Vector4 * +/* 1176 */ _CFFI_OP(_CFFI_OP_POINTER, 319), // char * * +/* 1177 */ _CFFI_OP(_CFFI_OP_POINTER, 348), // char const *(*)(char const *, ...) +/* 1178 */ _CFFI_OP(_CFFI_OP_ARRAY, 337), // char[32] +/* 1179 */ (_cffi_opcode_t)(32), +/* 1180 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 14), // double +/* 1181 */ _CFFI_OP(_CFFI_OP_POINTER, 25), // float * +/* 1182 */ _CFFI_OP(_CFFI_OP_ARRAY, 25), // float[4] +/* 1183 */ (_cffi_opcode_t)(4), +/* 1184 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 9), // long +/* 1185 */ _CFFI_OP(_CFFI_OP_POINTER, 1186), // rAudioBuffer * +/* 1186 */ _CFFI_OP(_CFFI_OP_STRUCT_UNION, 30), // rAudioBuffer +/* 1187 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 4), // unsigned char +/* 1188 */ _CFFI_OP(_CFFI_OP_POINTER, 1), // unsigned int * +/* 1189 */ _CFFI_OP(_CFFI_OP_POINTER, 1190), // unsigned short * +/* 1190 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 6), // unsigned short +/* 1191 */ _CFFI_OP(_CFFI_OP_POINTER, 1066), // void(*)(int, char const *, ...) +/* 1192 */ _CFFI_OP(_CFFI_OP_PRIMITIVE, 0), // void +}; + +static int _cffi_const_KEY_BACK(unsigned long long *o) +{ + int n = (KEY_BACK) <= 0; + *o = (unsigned long long)((KEY_BACK) | 0); /* check that KEY_BACK is an integer */ + return n; +} + +static int _cffi_const_KEY_MENU(unsigned long long *o) +{ + int n = (KEY_MENU) <= 0; + *o = (unsigned long long)((KEY_MENU) | 0); /* check that KEY_MENU is an integer */ + return n; +} + +static int _cffi_const_KEY_VOLUME_UP(unsigned long long *o) +{ + int n = (KEY_VOLUME_UP) <= 0; + *o = (unsigned long long)((KEY_VOLUME_UP) | 0); /* check that KEY_VOLUME_UP is an integer */ + return n; +} + +static int _cffi_const_KEY_VOLUME_DOWN(unsigned long long *o) +{ + int n = (KEY_VOLUME_DOWN) <= 0; + *o = (unsigned long long)((KEY_VOLUME_DOWN) | 0); /* check that KEY_VOLUME_DOWN is an integer */ + return n; +} + +static int _cffi_const_BLEND_ALPHA(unsigned long long *o) +{ + int n = (BLEND_ALPHA) <= 0; + *o = (unsigned long long)((BLEND_ALPHA) | 0); /* check that BLEND_ALPHA is an integer */ + return n; +} + +static int _cffi_const_BLEND_ADDITIVE(unsigned long long *o) +{ + int n = (BLEND_ADDITIVE) <= 0; + *o = (unsigned long long)((BLEND_ADDITIVE) | 0); /* check that BLEND_ADDITIVE is an integer */ + return n; +} + +static int _cffi_const_BLEND_MULTIPLIED(unsigned long long *o) +{ + int n = (BLEND_MULTIPLIED) <= 0; + *o = (unsigned long long)((BLEND_MULTIPLIED) | 0); /* check that BLEND_MULTIPLIED is an integer */ + return n; +} + +static int _cffi_const_CAMERA_CUSTOM(unsigned long long *o) +{ + int n = (CAMERA_CUSTOM) <= 0; + *o = (unsigned long long)((CAMERA_CUSTOM) | 0); /* check that CAMERA_CUSTOM is an integer */ + return n; +} + +static int _cffi_const_CAMERA_FREE(unsigned long long *o) +{ + int n = (CAMERA_FREE) <= 0; + *o = (unsigned long long)((CAMERA_FREE) | 0); /* check that CAMERA_FREE is an integer */ + return n; +} + +static int _cffi_const_CAMERA_ORBITAL(unsigned long long *o) +{ + int n = (CAMERA_ORBITAL) <= 0; + *o = (unsigned long long)((CAMERA_ORBITAL) | 0); /* check that CAMERA_ORBITAL is an integer */ + return n; +} + +static int _cffi_const_CAMERA_FIRST_PERSON(unsigned long long *o) +{ + int n = (CAMERA_FIRST_PERSON) <= 0; + *o = (unsigned long long)((CAMERA_FIRST_PERSON) | 0); /* check that CAMERA_FIRST_PERSON is an integer */ + return n; +} + +static int _cffi_const_CAMERA_THIRD_PERSON(unsigned long long *o) +{ + int n = (CAMERA_THIRD_PERSON) <= 0; + *o = (unsigned long long)((CAMERA_THIRD_PERSON) | 0); /* check that CAMERA_THIRD_PERSON is an integer */ + return n; +} + +static int _cffi_const_CAMERA_PERSPECTIVE(unsigned long long *o) +{ + int n = (CAMERA_PERSPECTIVE) <= 0; + *o = (unsigned long long)((CAMERA_PERSPECTIVE) | 0); /* check that CAMERA_PERSPECTIVE is an integer */ + return n; +} + +static int _cffi_const_CAMERA_ORTHOGRAPHIC(unsigned long long *o) +{ + int n = (CAMERA_ORTHOGRAPHIC) <= 0; + *o = (unsigned long long)((CAMERA_ORTHOGRAPHIC) | 0); /* check that CAMERA_ORTHOGRAPHIC is an integer */ + return n; +} + +static int _cffi_const_FLAG_RESERVED(unsigned long long *o) +{ + int n = (FLAG_RESERVED) <= 0; + *o = (unsigned long long)((FLAG_RESERVED) | 0); /* check that FLAG_RESERVED is an integer */ + return n; +} + +static int _cffi_const_FLAG_FULLSCREEN_MODE(unsigned long long *o) +{ + int n = (FLAG_FULLSCREEN_MODE) <= 0; + *o = (unsigned long long)((FLAG_FULLSCREEN_MODE) | 0); /* check that FLAG_FULLSCREEN_MODE is an integer */ + return n; +} + +static int _cffi_const_FLAG_WINDOW_RESIZABLE(unsigned long long *o) +{ + int n = (FLAG_WINDOW_RESIZABLE) <= 0; + *o = (unsigned long long)((FLAG_WINDOW_RESIZABLE) | 0); /* check that FLAG_WINDOW_RESIZABLE is an integer */ + return n; +} + +static int _cffi_const_FLAG_WINDOW_UNDECORATED(unsigned long long *o) +{ + int n = (FLAG_WINDOW_UNDECORATED) <= 0; + *o = (unsigned long long)((FLAG_WINDOW_UNDECORATED) | 0); /* check that FLAG_WINDOW_UNDECORATED is an integer */ + return n; +} + +static int _cffi_const_FLAG_WINDOW_TRANSPARENT(unsigned long long *o) +{ + int n = (FLAG_WINDOW_TRANSPARENT) <= 0; + *o = (unsigned long long)((FLAG_WINDOW_TRANSPARENT) | 0); /* check that FLAG_WINDOW_TRANSPARENT is an integer */ + return n; +} + +static int _cffi_const_FLAG_WINDOW_HIDDEN(unsigned long long *o) +{ + int n = (FLAG_WINDOW_HIDDEN) <= 0; + *o = (unsigned long long)((FLAG_WINDOW_HIDDEN) | 0); /* check that FLAG_WINDOW_HIDDEN is an integer */ + return n; +} + +static int _cffi_const_FLAG_WINDOW_ALWAYS_RUN(unsigned long long *o) +{ + int n = (FLAG_WINDOW_ALWAYS_RUN) <= 0; + *o = (unsigned long long)((FLAG_WINDOW_ALWAYS_RUN) | 0); /* check that FLAG_WINDOW_ALWAYS_RUN is an integer */ + return n; +} + +static int _cffi_const_FLAG_MSAA_4X_HINT(unsigned long long *o) +{ + int n = (FLAG_MSAA_4X_HINT) <= 0; + *o = (unsigned long long)((FLAG_MSAA_4X_HINT) | 0); /* check that FLAG_MSAA_4X_HINT is an integer */ + return n; +} + +static int _cffi_const_FLAG_VSYNC_HINT(unsigned long long *o) +{ + int n = (FLAG_VSYNC_HINT) <= 0; + *o = (unsigned long long)((FLAG_VSYNC_HINT) | 0); /* check that FLAG_VSYNC_HINT is an integer */ + return n; +} + +static int _cffi_const_CUBEMAP_AUTO_DETECT(unsigned long long *o) +{ + int n = (CUBEMAP_AUTO_DETECT) <= 0; + *o = (unsigned long long)((CUBEMAP_AUTO_DETECT) | 0); /* check that CUBEMAP_AUTO_DETECT is an integer */ + return n; +} + +static int _cffi_const_CUBEMAP_LINE_VERTICAL(unsigned long long *o) +{ + int n = (CUBEMAP_LINE_VERTICAL) <= 0; + *o = (unsigned long long)((CUBEMAP_LINE_VERTICAL) | 0); /* check that CUBEMAP_LINE_VERTICAL is an integer */ + return n; +} + +static int _cffi_const_CUBEMAP_LINE_HORIZONTAL(unsigned long long *o) +{ + int n = (CUBEMAP_LINE_HORIZONTAL) <= 0; + *o = (unsigned long long)((CUBEMAP_LINE_HORIZONTAL) | 0); /* check that CUBEMAP_LINE_HORIZONTAL is an integer */ + return n; +} + +static int _cffi_const_CUBEMAP_CROSS_THREE_BY_FOUR(unsigned long long *o) +{ + int n = (CUBEMAP_CROSS_THREE_BY_FOUR) <= 0; + *o = (unsigned long long)((CUBEMAP_CROSS_THREE_BY_FOUR) | 0); /* check that CUBEMAP_CROSS_THREE_BY_FOUR is an integer */ + return n; +} + +static int _cffi_const_CUBEMAP_CROSS_FOUR_BY_THREE(unsigned long long *o) +{ + int n = (CUBEMAP_CROSS_FOUR_BY_THREE) <= 0; + *o = (unsigned long long)((CUBEMAP_CROSS_FOUR_BY_THREE) | 0); /* check that CUBEMAP_CROSS_FOUR_BY_THREE is an integer */ + return n; +} + +static int _cffi_const_CUBEMAP_PANORAMA(unsigned long long *o) +{ + int n = (CUBEMAP_PANORAMA) <= 0; + *o = (unsigned long long)((CUBEMAP_PANORAMA) | 0); /* check that CUBEMAP_PANORAMA is an integer */ + return n; +} + +static int _cffi_const_FONT_DEFAULT(unsigned long long *o) +{ + int n = (FONT_DEFAULT) <= 0; + *o = (unsigned long long)((FONT_DEFAULT) | 0); /* check that FONT_DEFAULT is an integer */ + return n; +} + +static int _cffi_const_FONT_BITMAP(unsigned long long *o) +{ + int n = (FONT_BITMAP) <= 0; + *o = (unsigned long long)((FONT_BITMAP) | 0); /* check that FONT_BITMAP is an integer */ + return n; +} + +static int _cffi_const_FONT_SDF(unsigned long long *o) +{ + int n = (FONT_SDF) <= 0; + *o = (unsigned long long)((FONT_SDF) | 0); /* check that FONT_SDF is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_AXIS_UNKNOWN(unsigned long long *o) +{ + int n = (GAMEPAD_AXIS_UNKNOWN) <= 0; + *o = (unsigned long long)((GAMEPAD_AXIS_UNKNOWN) | 0); /* check that GAMEPAD_AXIS_UNKNOWN is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_AXIS_LEFT_X(unsigned long long *o) +{ + int n = (GAMEPAD_AXIS_LEFT_X) <= 0; + *o = (unsigned long long)((GAMEPAD_AXIS_LEFT_X) | 0); /* check that GAMEPAD_AXIS_LEFT_X is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_AXIS_LEFT_Y(unsigned long long *o) +{ + int n = (GAMEPAD_AXIS_LEFT_Y) <= 0; + *o = (unsigned long long)((GAMEPAD_AXIS_LEFT_Y) | 0); /* check that GAMEPAD_AXIS_LEFT_Y is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_AXIS_RIGHT_X(unsigned long long *o) +{ + int n = (GAMEPAD_AXIS_RIGHT_X) <= 0; + *o = (unsigned long long)((GAMEPAD_AXIS_RIGHT_X) | 0); /* check that GAMEPAD_AXIS_RIGHT_X is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_AXIS_RIGHT_Y(unsigned long long *o) +{ + int n = (GAMEPAD_AXIS_RIGHT_Y) <= 0; + *o = (unsigned long long)((GAMEPAD_AXIS_RIGHT_Y) | 0); /* check that GAMEPAD_AXIS_RIGHT_Y is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_AXIS_LEFT_TRIGGER(unsigned long long *o) +{ + int n = (GAMEPAD_AXIS_LEFT_TRIGGER) <= 0; + *o = (unsigned long long)((GAMEPAD_AXIS_LEFT_TRIGGER) | 0); /* check that GAMEPAD_AXIS_LEFT_TRIGGER is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_AXIS_RIGHT_TRIGGER(unsigned long long *o) +{ + int n = (GAMEPAD_AXIS_RIGHT_TRIGGER) <= 0; + *o = (unsigned long long)((GAMEPAD_AXIS_RIGHT_TRIGGER) | 0); /* check that GAMEPAD_AXIS_RIGHT_TRIGGER is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_UNKNOWN(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_UNKNOWN) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_UNKNOWN) | 0); /* check that GAMEPAD_BUTTON_UNKNOWN is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_LEFT_FACE_UP(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_LEFT_FACE_UP) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_LEFT_FACE_UP) | 0); /* check that GAMEPAD_BUTTON_LEFT_FACE_UP is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_LEFT_FACE_RIGHT(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_LEFT_FACE_RIGHT) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_LEFT_FACE_RIGHT) | 0); /* check that GAMEPAD_BUTTON_LEFT_FACE_RIGHT is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_LEFT_FACE_DOWN(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_LEFT_FACE_DOWN) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_LEFT_FACE_DOWN) | 0); /* check that GAMEPAD_BUTTON_LEFT_FACE_DOWN is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_LEFT_FACE_LEFT(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_LEFT_FACE_LEFT) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_LEFT_FACE_LEFT) | 0); /* check that GAMEPAD_BUTTON_LEFT_FACE_LEFT is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_RIGHT_FACE_UP(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_RIGHT_FACE_UP) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_RIGHT_FACE_UP) | 0); /* check that GAMEPAD_BUTTON_RIGHT_FACE_UP is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_RIGHT_FACE_RIGHT(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_RIGHT_FACE_RIGHT) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_RIGHT_FACE_RIGHT) | 0); /* check that GAMEPAD_BUTTON_RIGHT_FACE_RIGHT is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_RIGHT_FACE_DOWN(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_RIGHT_FACE_DOWN) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_RIGHT_FACE_DOWN) | 0); /* check that GAMEPAD_BUTTON_RIGHT_FACE_DOWN is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_RIGHT_FACE_LEFT(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_RIGHT_FACE_LEFT) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_RIGHT_FACE_LEFT) | 0); /* check that GAMEPAD_BUTTON_RIGHT_FACE_LEFT is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_LEFT_TRIGGER_1(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_LEFT_TRIGGER_1) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_LEFT_TRIGGER_1) | 0); /* check that GAMEPAD_BUTTON_LEFT_TRIGGER_1 is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_LEFT_TRIGGER_2(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_LEFT_TRIGGER_2) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_LEFT_TRIGGER_2) | 0); /* check that GAMEPAD_BUTTON_LEFT_TRIGGER_2 is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_RIGHT_TRIGGER_1(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_RIGHT_TRIGGER_1) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_RIGHT_TRIGGER_1) | 0); /* check that GAMEPAD_BUTTON_RIGHT_TRIGGER_1 is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_RIGHT_TRIGGER_2(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_RIGHT_TRIGGER_2) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_RIGHT_TRIGGER_2) | 0); /* check that GAMEPAD_BUTTON_RIGHT_TRIGGER_2 is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_MIDDLE_LEFT(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_MIDDLE_LEFT) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_MIDDLE_LEFT) | 0); /* check that GAMEPAD_BUTTON_MIDDLE_LEFT is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_MIDDLE(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_MIDDLE) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_MIDDLE) | 0); /* check that GAMEPAD_BUTTON_MIDDLE is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_MIDDLE_RIGHT(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_MIDDLE_RIGHT) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_MIDDLE_RIGHT) | 0); /* check that GAMEPAD_BUTTON_MIDDLE_RIGHT is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_LEFT_THUMB(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_LEFT_THUMB) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_LEFT_THUMB) | 0); /* check that GAMEPAD_BUTTON_LEFT_THUMB is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_BUTTON_RIGHT_THUMB(unsigned long long *o) +{ + int n = (GAMEPAD_BUTTON_RIGHT_THUMB) <= 0; + *o = (unsigned long long)((GAMEPAD_BUTTON_RIGHT_THUMB) | 0); /* check that GAMEPAD_BUTTON_RIGHT_THUMB is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_PLAYER1(unsigned long long *o) +{ + int n = (GAMEPAD_PLAYER1) <= 0; + *o = (unsigned long long)((GAMEPAD_PLAYER1) | 0); /* check that GAMEPAD_PLAYER1 is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_PLAYER2(unsigned long long *o) +{ + int n = (GAMEPAD_PLAYER2) <= 0; + *o = (unsigned long long)((GAMEPAD_PLAYER2) | 0); /* check that GAMEPAD_PLAYER2 is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_PLAYER3(unsigned long long *o) +{ + int n = (GAMEPAD_PLAYER3) <= 0; + *o = (unsigned long long)((GAMEPAD_PLAYER3) | 0); /* check that GAMEPAD_PLAYER3 is an integer */ + return n; +} + +static int _cffi_const_GAMEPAD_PLAYER4(unsigned long long *o) +{ + int n = (GAMEPAD_PLAYER4) <= 0; + *o = (unsigned long long)((GAMEPAD_PLAYER4) | 0); /* check that GAMEPAD_PLAYER4 is an integer */ + return n; +} + +static int _cffi_const_GESTURE_NONE(unsigned long long *o) +{ + int n = (GESTURE_NONE) <= 0; + *o = (unsigned long long)((GESTURE_NONE) | 0); /* check that GESTURE_NONE is an integer */ + return n; +} + +static int _cffi_const_GESTURE_TAP(unsigned long long *o) +{ + int n = (GESTURE_TAP) <= 0; + *o = (unsigned long long)((GESTURE_TAP) | 0); /* check that GESTURE_TAP is an integer */ + return n; +} + +static int _cffi_const_GESTURE_DOUBLETAP(unsigned long long *o) +{ + int n = (GESTURE_DOUBLETAP) <= 0; + *o = (unsigned long long)((GESTURE_DOUBLETAP) | 0); /* check that GESTURE_DOUBLETAP is an integer */ + return n; +} + +static int _cffi_const_GESTURE_HOLD(unsigned long long *o) +{ + int n = (GESTURE_HOLD) <= 0; + *o = (unsigned long long)((GESTURE_HOLD) | 0); /* check that GESTURE_HOLD is an integer */ + return n; +} + +static int _cffi_const_GESTURE_DRAG(unsigned long long *o) +{ + int n = (GESTURE_DRAG) <= 0; + *o = (unsigned long long)((GESTURE_DRAG) | 0); /* check that GESTURE_DRAG is an integer */ + return n; +} + +static int _cffi_const_GESTURE_SWIPE_RIGHT(unsigned long long *o) +{ + int n = (GESTURE_SWIPE_RIGHT) <= 0; + *o = (unsigned long long)((GESTURE_SWIPE_RIGHT) | 0); /* check that GESTURE_SWIPE_RIGHT is an integer */ + return n; +} + +static int _cffi_const_GESTURE_SWIPE_LEFT(unsigned long long *o) +{ + int n = (GESTURE_SWIPE_LEFT) <= 0; + *o = (unsigned long long)((GESTURE_SWIPE_LEFT) | 0); /* check that GESTURE_SWIPE_LEFT is an integer */ + return n; +} + +static int _cffi_const_GESTURE_SWIPE_UP(unsigned long long *o) +{ + int n = (GESTURE_SWIPE_UP) <= 0; + *o = (unsigned long long)((GESTURE_SWIPE_UP) | 0); /* check that GESTURE_SWIPE_UP is an integer */ + return n; +} + +static int _cffi_const_GESTURE_SWIPE_DOWN(unsigned long long *o) +{ + int n = (GESTURE_SWIPE_DOWN) <= 0; + *o = (unsigned long long)((GESTURE_SWIPE_DOWN) | 0); /* check that GESTURE_SWIPE_DOWN is an integer */ + return n; +} + +static int _cffi_const_GESTURE_PINCH_IN(unsigned long long *o) +{ + int n = (GESTURE_PINCH_IN) <= 0; + *o = (unsigned long long)((GESTURE_PINCH_IN) | 0); /* check that GESTURE_PINCH_IN is an integer */ + return n; +} + +static int _cffi_const_GESTURE_PINCH_OUT(unsigned long long *o) +{ + int n = (GESTURE_PINCH_OUT) <= 0; + *o = (unsigned long long)((GESTURE_PINCH_OUT) | 0); /* check that GESTURE_PINCH_OUT is an integer */ + return n; +} + +static int _cffi_const_KEY_APOSTROPHE(unsigned long long *o) +{ + int n = (KEY_APOSTROPHE) <= 0; + *o = (unsigned long long)((KEY_APOSTROPHE) | 0); /* check that KEY_APOSTROPHE is an integer */ + return n; +} + +static int _cffi_const_KEY_COMMA(unsigned long long *o) +{ + int n = (KEY_COMMA) <= 0; + *o = (unsigned long long)((KEY_COMMA) | 0); /* check that KEY_COMMA is an integer */ + return n; +} + +static int _cffi_const_KEY_MINUS(unsigned long long *o) +{ + int n = (KEY_MINUS) <= 0; + *o = (unsigned long long)((KEY_MINUS) | 0); /* check that KEY_MINUS is an integer */ + return n; +} + +static int _cffi_const_KEY_PERIOD(unsigned long long *o) +{ + int n = (KEY_PERIOD) <= 0; + *o = (unsigned long long)((KEY_PERIOD) | 0); /* check that KEY_PERIOD is an integer */ + return n; +} + +static int _cffi_const_KEY_SLASH(unsigned long long *o) +{ + int n = (KEY_SLASH) <= 0; + *o = (unsigned long long)((KEY_SLASH) | 0); /* check that KEY_SLASH is an integer */ + return n; +} + +static int _cffi_const_KEY_ZERO(unsigned long long *o) +{ + int n = (KEY_ZERO) <= 0; + *o = (unsigned long long)((KEY_ZERO) | 0); /* check that KEY_ZERO is an integer */ + return n; +} + +static int _cffi_const_KEY_ONE(unsigned long long *o) +{ + int n = (KEY_ONE) <= 0; + *o = (unsigned long long)((KEY_ONE) | 0); /* check that KEY_ONE is an integer */ + return n; +} + +static int _cffi_const_KEY_TWO(unsigned long long *o) +{ + int n = (KEY_TWO) <= 0; + *o = (unsigned long long)((KEY_TWO) | 0); /* check that KEY_TWO is an integer */ + return n; +} + +static int _cffi_const_KEY_THREE(unsigned long long *o) +{ + int n = (KEY_THREE) <= 0; + *o = (unsigned long long)((KEY_THREE) | 0); /* check that KEY_THREE is an integer */ + return n; +} + +static int _cffi_const_KEY_FOUR(unsigned long long *o) +{ + int n = (KEY_FOUR) <= 0; + *o = (unsigned long long)((KEY_FOUR) | 0); /* check that KEY_FOUR is an integer */ + return n; +} + +static int _cffi_const_KEY_FIVE(unsigned long long *o) +{ + int n = (KEY_FIVE) <= 0; + *o = (unsigned long long)((KEY_FIVE) | 0); /* check that KEY_FIVE is an integer */ + return n; +} + +static int _cffi_const_KEY_SIX(unsigned long long *o) +{ + int n = (KEY_SIX) <= 0; + *o = (unsigned long long)((KEY_SIX) | 0); /* check that KEY_SIX is an integer */ + return n; +} + +static int _cffi_const_KEY_SEVEN(unsigned long long *o) +{ + int n = (KEY_SEVEN) <= 0; + *o = (unsigned long long)((KEY_SEVEN) | 0); /* check that KEY_SEVEN is an integer */ + return n; +} + +static int _cffi_const_KEY_EIGHT(unsigned long long *o) +{ + int n = (KEY_EIGHT) <= 0; + *o = (unsigned long long)((KEY_EIGHT) | 0); /* check that KEY_EIGHT is an integer */ + return n; +} + +static int _cffi_const_KEY_NINE(unsigned long long *o) +{ + int n = (KEY_NINE) <= 0; + *o = (unsigned long long)((KEY_NINE) | 0); /* check that KEY_NINE is an integer */ + return n; +} + +static int _cffi_const_KEY_SEMICOLON(unsigned long long *o) +{ + int n = (KEY_SEMICOLON) <= 0; + *o = (unsigned long long)((KEY_SEMICOLON) | 0); /* check that KEY_SEMICOLON is an integer */ + return n; +} + +static int _cffi_const_KEY_EQUAL(unsigned long long *o) +{ + int n = (KEY_EQUAL) <= 0; + *o = (unsigned long long)((KEY_EQUAL) | 0); /* check that KEY_EQUAL is an integer */ + return n; +} + +static int _cffi_const_KEY_A(unsigned long long *o) +{ + int n = (KEY_A) <= 0; + *o = (unsigned long long)((KEY_A) | 0); /* check that KEY_A is an integer */ + return n; +} + +static int _cffi_const_KEY_B(unsigned long long *o) +{ + int n = (KEY_B) <= 0; + *o = (unsigned long long)((KEY_B) | 0); /* check that KEY_B is an integer */ + return n; +} + +static int _cffi_const_KEY_C(unsigned long long *o) +{ + int n = (KEY_C) <= 0; + *o = (unsigned long long)((KEY_C) | 0); /* check that KEY_C is an integer */ + return n; +} + +static int _cffi_const_KEY_D(unsigned long long *o) +{ + int n = (KEY_D) <= 0; + *o = (unsigned long long)((KEY_D) | 0); /* check that KEY_D is an integer */ + return n; +} + +static int _cffi_const_KEY_E(unsigned long long *o) +{ + int n = (KEY_E) <= 0; + *o = (unsigned long long)((KEY_E) | 0); /* check that KEY_E is an integer */ + return n; +} + +static int _cffi_const_KEY_F(unsigned long long *o) +{ + int n = (KEY_F) <= 0; + *o = (unsigned long long)((KEY_F) | 0); /* check that KEY_F is an integer */ + return n; +} + +static int _cffi_const_KEY_G(unsigned long long *o) +{ + int n = (KEY_G) <= 0; + *o = (unsigned long long)((KEY_G) | 0); /* check that KEY_G is an integer */ + return n; +} + +static int _cffi_const_KEY_H(unsigned long long *o) +{ + int n = (KEY_H) <= 0; + *o = (unsigned long long)((KEY_H) | 0); /* check that KEY_H is an integer */ + return n; +} + +static int _cffi_const_KEY_I(unsigned long long *o) +{ + int n = (KEY_I) <= 0; + *o = (unsigned long long)((KEY_I) | 0); /* check that KEY_I is an integer */ + return n; +} + +static int _cffi_const_KEY_J(unsigned long long *o) +{ + int n = (KEY_J) <= 0; + *o = (unsigned long long)((KEY_J) | 0); /* check that KEY_J is an integer */ + return n; +} + +static int _cffi_const_KEY_K(unsigned long long *o) +{ + int n = (KEY_K) <= 0; + *o = (unsigned long long)((KEY_K) | 0); /* check that KEY_K is an integer */ + return n; +} + +static int _cffi_const_KEY_L(unsigned long long *o) +{ + int n = (KEY_L) <= 0; + *o = (unsigned long long)((KEY_L) | 0); /* check that KEY_L is an integer */ + return n; +} + +static int _cffi_const_KEY_M(unsigned long long *o) +{ + int n = (KEY_M) <= 0; + *o = (unsigned long long)((KEY_M) | 0); /* check that KEY_M is an integer */ + return n; +} + +static int _cffi_const_KEY_N(unsigned long long *o) +{ + int n = (KEY_N) <= 0; + *o = (unsigned long long)((KEY_N) | 0); /* check that KEY_N is an integer */ + return n; +} + +static int _cffi_const_KEY_O(unsigned long long *o) +{ + int n = (KEY_O) <= 0; + *o = (unsigned long long)((KEY_O) | 0); /* check that KEY_O is an integer */ + return n; +} + +static int _cffi_const_KEY_P(unsigned long long *o) +{ + int n = (KEY_P) <= 0; + *o = (unsigned long long)((KEY_P) | 0); /* check that KEY_P is an integer */ + return n; +} + +static int _cffi_const_KEY_Q(unsigned long long *o) +{ + int n = (KEY_Q) <= 0; + *o = (unsigned long long)((KEY_Q) | 0); /* check that KEY_Q is an integer */ + return n; +} + +static int _cffi_const_KEY_R(unsigned long long *o) +{ + int n = (KEY_R) <= 0; + *o = (unsigned long long)((KEY_R) | 0); /* check that KEY_R is an integer */ + return n; +} + +static int _cffi_const_KEY_S(unsigned long long *o) +{ + int n = (KEY_S) <= 0; + *o = (unsigned long long)((KEY_S) | 0); /* check that KEY_S is an integer */ + return n; +} + +static int _cffi_const_KEY_T(unsigned long long *o) +{ + int n = (KEY_T) <= 0; + *o = (unsigned long long)((KEY_T) | 0); /* check that KEY_T is an integer */ + return n; +} + +static int _cffi_const_KEY_U(unsigned long long *o) +{ + int n = (KEY_U) <= 0; + *o = (unsigned long long)((KEY_U) | 0); /* check that KEY_U is an integer */ + return n; +} + +static int _cffi_const_KEY_V(unsigned long long *o) +{ + int n = (KEY_V) <= 0; + *o = (unsigned long long)((KEY_V) | 0); /* check that KEY_V is an integer */ + return n; +} + +static int _cffi_const_KEY_W(unsigned long long *o) +{ + int n = (KEY_W) <= 0; + *o = (unsigned long long)((KEY_W) | 0); /* check that KEY_W is an integer */ + return n; +} + +static int _cffi_const_KEY_X(unsigned long long *o) +{ + int n = (KEY_X) <= 0; + *o = (unsigned long long)((KEY_X) | 0); /* check that KEY_X is an integer */ + return n; +} + +static int _cffi_const_KEY_Y(unsigned long long *o) +{ + int n = (KEY_Y) <= 0; + *o = (unsigned long long)((KEY_Y) | 0); /* check that KEY_Y is an integer */ + return n; +} + +static int _cffi_const_KEY_Z(unsigned long long *o) +{ + int n = (KEY_Z) <= 0; + *o = (unsigned long long)((KEY_Z) | 0); /* check that KEY_Z is an integer */ + return n; +} + +static int _cffi_const_KEY_SPACE(unsigned long long *o) +{ + int n = (KEY_SPACE) <= 0; + *o = (unsigned long long)((KEY_SPACE) | 0); /* check that KEY_SPACE is an integer */ + return n; +} + +static int _cffi_const_KEY_ESCAPE(unsigned long long *o) +{ + int n = (KEY_ESCAPE) <= 0; + *o = (unsigned long long)((KEY_ESCAPE) | 0); /* check that KEY_ESCAPE is an integer */ + return n; +} + +static int _cffi_const_KEY_ENTER(unsigned long long *o) +{ + int n = (KEY_ENTER) <= 0; + *o = (unsigned long long)((KEY_ENTER) | 0); /* check that KEY_ENTER is an integer */ + return n; +} + +static int _cffi_const_KEY_TAB(unsigned long long *o) +{ + int n = (KEY_TAB) <= 0; + *o = (unsigned long long)((KEY_TAB) | 0); /* check that KEY_TAB is an integer */ + return n; +} + +static int _cffi_const_KEY_BACKSPACE(unsigned long long *o) +{ + int n = (KEY_BACKSPACE) <= 0; + *o = (unsigned long long)((KEY_BACKSPACE) | 0); /* check that KEY_BACKSPACE is an integer */ + return n; +} + +static int _cffi_const_KEY_INSERT(unsigned long long *o) +{ + int n = (KEY_INSERT) <= 0; + *o = (unsigned long long)((KEY_INSERT) | 0); /* check that KEY_INSERT is an integer */ + return n; +} + +static int _cffi_const_KEY_DELETE(unsigned long long *o) +{ + int n = (KEY_DELETE) <= 0; + *o = (unsigned long long)((KEY_DELETE) | 0); /* check that KEY_DELETE is an integer */ + return n; +} + +static int _cffi_const_KEY_RIGHT(unsigned long long *o) +{ + int n = (KEY_RIGHT) <= 0; + *o = (unsigned long long)((KEY_RIGHT) | 0); /* check that KEY_RIGHT is an integer */ + return n; +} + +static int _cffi_const_KEY_LEFT(unsigned long long *o) +{ + int n = (KEY_LEFT) <= 0; + *o = (unsigned long long)((KEY_LEFT) | 0); /* check that KEY_LEFT is an integer */ + return n; +} + +static int _cffi_const_KEY_DOWN(unsigned long long *o) +{ + int n = (KEY_DOWN) <= 0; + *o = (unsigned long long)((KEY_DOWN) | 0); /* check that KEY_DOWN is an integer */ + return n; +} + +static int _cffi_const_KEY_UP(unsigned long long *o) +{ + int n = (KEY_UP) <= 0; + *o = (unsigned long long)((KEY_UP) | 0); /* check that KEY_UP is an integer */ + return n; +} + +static int _cffi_const_KEY_PAGE_UP(unsigned long long *o) +{ + int n = (KEY_PAGE_UP) <= 0; + *o = (unsigned long long)((KEY_PAGE_UP) | 0); /* check that KEY_PAGE_UP is an integer */ + return n; +} + +static int _cffi_const_KEY_PAGE_DOWN(unsigned long long *o) +{ + int n = (KEY_PAGE_DOWN) <= 0; + *o = (unsigned long long)((KEY_PAGE_DOWN) | 0); /* check that KEY_PAGE_DOWN is an integer */ + return n; +} + +static int _cffi_const_KEY_HOME(unsigned long long *o) +{ + int n = (KEY_HOME) <= 0; + *o = (unsigned long long)((KEY_HOME) | 0); /* check that KEY_HOME is an integer */ + return n; +} + +static int _cffi_const_KEY_END(unsigned long long *o) +{ + int n = (KEY_END) <= 0; + *o = (unsigned long long)((KEY_END) | 0); /* check that KEY_END is an integer */ + return n; +} + +static int _cffi_const_KEY_CAPS_LOCK(unsigned long long *o) +{ + int n = (KEY_CAPS_LOCK) <= 0; + *o = (unsigned long long)((KEY_CAPS_LOCK) | 0); /* check that KEY_CAPS_LOCK is an integer */ + return n; +} + +static int _cffi_const_KEY_SCROLL_LOCK(unsigned long long *o) +{ + int n = (KEY_SCROLL_LOCK) <= 0; + *o = (unsigned long long)((KEY_SCROLL_LOCK) | 0); /* check that KEY_SCROLL_LOCK is an integer */ + return n; +} + +static int _cffi_const_KEY_NUM_LOCK(unsigned long long *o) +{ + int n = (KEY_NUM_LOCK) <= 0; + *o = (unsigned long long)((KEY_NUM_LOCK) | 0); /* check that KEY_NUM_LOCK is an integer */ + return n; +} + +static int _cffi_const_KEY_PRINT_SCREEN(unsigned long long *o) +{ + int n = (KEY_PRINT_SCREEN) <= 0; + *o = (unsigned long long)((KEY_PRINT_SCREEN) | 0); /* check that KEY_PRINT_SCREEN is an integer */ + return n; +} + +static int _cffi_const_KEY_PAUSE(unsigned long long *o) +{ + int n = (KEY_PAUSE) <= 0; + *o = (unsigned long long)((KEY_PAUSE) | 0); /* check that KEY_PAUSE is an integer */ + return n; +} + +static int _cffi_const_KEY_F1(unsigned long long *o) +{ + int n = (KEY_F1) <= 0; + *o = (unsigned long long)((KEY_F1) | 0); /* check that KEY_F1 is an integer */ + return n; +} + +static int _cffi_const_KEY_F2(unsigned long long *o) +{ + int n = (KEY_F2) <= 0; + *o = (unsigned long long)((KEY_F2) | 0); /* check that KEY_F2 is an integer */ + return n; +} + +static int _cffi_const_KEY_F3(unsigned long long *o) +{ + int n = (KEY_F3) <= 0; + *o = (unsigned long long)((KEY_F3) | 0); /* check that KEY_F3 is an integer */ + return n; +} + +static int _cffi_const_KEY_F4(unsigned long long *o) +{ + int n = (KEY_F4) <= 0; + *o = (unsigned long long)((KEY_F4) | 0); /* check that KEY_F4 is an integer */ + return n; +} + +static int _cffi_const_KEY_F5(unsigned long long *o) +{ + int n = (KEY_F5) <= 0; + *o = (unsigned long long)((KEY_F5) | 0); /* check that KEY_F5 is an integer */ + return n; +} + +static int _cffi_const_KEY_F6(unsigned long long *o) +{ + int n = (KEY_F6) <= 0; + *o = (unsigned long long)((KEY_F6) | 0); /* check that KEY_F6 is an integer */ + return n; +} + +static int _cffi_const_KEY_F7(unsigned long long *o) +{ + int n = (KEY_F7) <= 0; + *o = (unsigned long long)((KEY_F7) | 0); /* check that KEY_F7 is an integer */ + return n; +} + +static int _cffi_const_KEY_F8(unsigned long long *o) +{ + int n = (KEY_F8) <= 0; + *o = (unsigned long long)((KEY_F8) | 0); /* check that KEY_F8 is an integer */ + return n; +} + +static int _cffi_const_KEY_F9(unsigned long long *o) +{ + int n = (KEY_F9) <= 0; + *o = (unsigned long long)((KEY_F9) | 0); /* check that KEY_F9 is an integer */ + return n; +} + +static int _cffi_const_KEY_F10(unsigned long long *o) +{ + int n = (KEY_F10) <= 0; + *o = (unsigned long long)((KEY_F10) | 0); /* check that KEY_F10 is an integer */ + return n; +} + +static int _cffi_const_KEY_F11(unsigned long long *o) +{ + int n = (KEY_F11) <= 0; + *o = (unsigned long long)((KEY_F11) | 0); /* check that KEY_F11 is an integer */ + return n; +} + +static int _cffi_const_KEY_F12(unsigned long long *o) +{ + int n = (KEY_F12) <= 0; + *o = (unsigned long long)((KEY_F12) | 0); /* check that KEY_F12 is an integer */ + return n; +} + +static int _cffi_const_KEY_LEFT_SHIFT(unsigned long long *o) +{ + int n = (KEY_LEFT_SHIFT) <= 0; + *o = (unsigned long long)((KEY_LEFT_SHIFT) | 0); /* check that KEY_LEFT_SHIFT is an integer */ + return n; +} + +static int _cffi_const_KEY_LEFT_CONTROL(unsigned long long *o) +{ + int n = (KEY_LEFT_CONTROL) <= 0; + *o = (unsigned long long)((KEY_LEFT_CONTROL) | 0); /* check that KEY_LEFT_CONTROL is an integer */ + return n; +} + +static int _cffi_const_KEY_LEFT_ALT(unsigned long long *o) +{ + int n = (KEY_LEFT_ALT) <= 0; + *o = (unsigned long long)((KEY_LEFT_ALT) | 0); /* check that KEY_LEFT_ALT is an integer */ + return n; +} + +static int _cffi_const_KEY_LEFT_SUPER(unsigned long long *o) +{ + int n = (KEY_LEFT_SUPER) <= 0; + *o = (unsigned long long)((KEY_LEFT_SUPER) | 0); /* check that KEY_LEFT_SUPER is an integer */ + return n; +} + +static int _cffi_const_KEY_RIGHT_SHIFT(unsigned long long *o) +{ + int n = (KEY_RIGHT_SHIFT) <= 0; + *o = (unsigned long long)((KEY_RIGHT_SHIFT) | 0); /* check that KEY_RIGHT_SHIFT is an integer */ + return n; +} + +static int _cffi_const_KEY_RIGHT_CONTROL(unsigned long long *o) +{ + int n = (KEY_RIGHT_CONTROL) <= 0; + *o = (unsigned long long)((KEY_RIGHT_CONTROL) | 0); /* check that KEY_RIGHT_CONTROL is an integer */ + return n; +} + +static int _cffi_const_KEY_RIGHT_ALT(unsigned long long *o) +{ + int n = (KEY_RIGHT_ALT) <= 0; + *o = (unsigned long long)((KEY_RIGHT_ALT) | 0); /* check that KEY_RIGHT_ALT is an integer */ + return n; +} + +static int _cffi_const_KEY_RIGHT_SUPER(unsigned long long *o) +{ + int n = (KEY_RIGHT_SUPER) <= 0; + *o = (unsigned long long)((KEY_RIGHT_SUPER) | 0); /* check that KEY_RIGHT_SUPER is an integer */ + return n; +} + +static int _cffi_const_KEY_KB_MENU(unsigned long long *o) +{ + int n = (KEY_KB_MENU) <= 0; + *o = (unsigned long long)((KEY_KB_MENU) | 0); /* check that KEY_KB_MENU is an integer */ + return n; +} + +static int _cffi_const_KEY_LEFT_BRACKET(unsigned long long *o) +{ + int n = (KEY_LEFT_BRACKET) <= 0; + *o = (unsigned long long)((KEY_LEFT_BRACKET) | 0); /* check that KEY_LEFT_BRACKET is an integer */ + return n; +} + +static int _cffi_const_KEY_BACKSLASH(unsigned long long *o) +{ + int n = (KEY_BACKSLASH) <= 0; + *o = (unsigned long long)((KEY_BACKSLASH) | 0); /* check that KEY_BACKSLASH is an integer */ + return n; +} + +static int _cffi_const_KEY_RIGHT_BRACKET(unsigned long long *o) +{ + int n = (KEY_RIGHT_BRACKET) <= 0; + *o = (unsigned long long)((KEY_RIGHT_BRACKET) | 0); /* check that KEY_RIGHT_BRACKET is an integer */ + return n; +} + +static int _cffi_const_KEY_GRAVE(unsigned long long *o) +{ + int n = (KEY_GRAVE) <= 0; + *o = (unsigned long long)((KEY_GRAVE) | 0); /* check that KEY_GRAVE is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_0(unsigned long long *o) +{ + int n = (KEY_KP_0) <= 0; + *o = (unsigned long long)((KEY_KP_0) | 0); /* check that KEY_KP_0 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_1(unsigned long long *o) +{ + int n = (KEY_KP_1) <= 0; + *o = (unsigned long long)((KEY_KP_1) | 0); /* check that KEY_KP_1 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_2(unsigned long long *o) +{ + int n = (KEY_KP_2) <= 0; + *o = (unsigned long long)((KEY_KP_2) | 0); /* check that KEY_KP_2 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_3(unsigned long long *o) +{ + int n = (KEY_KP_3) <= 0; + *o = (unsigned long long)((KEY_KP_3) | 0); /* check that KEY_KP_3 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_4(unsigned long long *o) +{ + int n = (KEY_KP_4) <= 0; + *o = (unsigned long long)((KEY_KP_4) | 0); /* check that KEY_KP_4 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_5(unsigned long long *o) +{ + int n = (KEY_KP_5) <= 0; + *o = (unsigned long long)((KEY_KP_5) | 0); /* check that KEY_KP_5 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_6(unsigned long long *o) +{ + int n = (KEY_KP_6) <= 0; + *o = (unsigned long long)((KEY_KP_6) | 0); /* check that KEY_KP_6 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_7(unsigned long long *o) +{ + int n = (KEY_KP_7) <= 0; + *o = (unsigned long long)((KEY_KP_7) | 0); /* check that KEY_KP_7 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_8(unsigned long long *o) +{ + int n = (KEY_KP_8) <= 0; + *o = (unsigned long long)((KEY_KP_8) | 0); /* check that KEY_KP_8 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_9(unsigned long long *o) +{ + int n = (KEY_KP_9) <= 0; + *o = (unsigned long long)((KEY_KP_9) | 0); /* check that KEY_KP_9 is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_DECIMAL(unsigned long long *o) +{ + int n = (KEY_KP_DECIMAL) <= 0; + *o = (unsigned long long)((KEY_KP_DECIMAL) | 0); /* check that KEY_KP_DECIMAL is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_DIVIDE(unsigned long long *o) +{ + int n = (KEY_KP_DIVIDE) <= 0; + *o = (unsigned long long)((KEY_KP_DIVIDE) | 0); /* check that KEY_KP_DIVIDE is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_MULTIPLY(unsigned long long *o) +{ + int n = (KEY_KP_MULTIPLY) <= 0; + *o = (unsigned long long)((KEY_KP_MULTIPLY) | 0); /* check that KEY_KP_MULTIPLY is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_SUBTRACT(unsigned long long *o) +{ + int n = (KEY_KP_SUBTRACT) <= 0; + *o = (unsigned long long)((KEY_KP_SUBTRACT) | 0); /* check that KEY_KP_SUBTRACT is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_ADD(unsigned long long *o) +{ + int n = (KEY_KP_ADD) <= 0; + *o = (unsigned long long)((KEY_KP_ADD) | 0); /* check that KEY_KP_ADD is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_ENTER(unsigned long long *o) +{ + int n = (KEY_KP_ENTER) <= 0; + *o = (unsigned long long)((KEY_KP_ENTER) | 0); /* check that KEY_KP_ENTER is an integer */ + return n; +} + +static int _cffi_const_KEY_KP_EQUAL(unsigned long long *o) +{ + int n = (KEY_KP_EQUAL) <= 0; + *o = (unsigned long long)((KEY_KP_EQUAL) | 0); /* check that KEY_KP_EQUAL is an integer */ + return n; +} + +static int _cffi_const_MAP_ALBEDO(unsigned long long *o) +{ + int n = (MAP_ALBEDO) <= 0; + *o = (unsigned long long)((MAP_ALBEDO) | 0); /* check that MAP_ALBEDO is an integer */ + return n; +} + +static int _cffi_const_MAP_METALNESS(unsigned long long *o) +{ + int n = (MAP_METALNESS) <= 0; + *o = (unsigned long long)((MAP_METALNESS) | 0); /* check that MAP_METALNESS is an integer */ + return n; +} + +static int _cffi_const_MAP_NORMAL(unsigned long long *o) +{ + int n = (MAP_NORMAL) <= 0; + *o = (unsigned long long)((MAP_NORMAL) | 0); /* check that MAP_NORMAL is an integer */ + return n; +} + +static int _cffi_const_MAP_ROUGHNESS(unsigned long long *o) +{ + int n = (MAP_ROUGHNESS) <= 0; + *o = (unsigned long long)((MAP_ROUGHNESS) | 0); /* check that MAP_ROUGHNESS is an integer */ + return n; +} + +static int _cffi_const_MAP_OCCLUSION(unsigned long long *o) +{ + int n = (MAP_OCCLUSION) <= 0; + *o = (unsigned long long)((MAP_OCCLUSION) | 0); /* check that MAP_OCCLUSION is an integer */ + return n; +} + +static int _cffi_const_MAP_EMISSION(unsigned long long *o) +{ + int n = (MAP_EMISSION) <= 0; + *o = (unsigned long long)((MAP_EMISSION) | 0); /* check that MAP_EMISSION is an integer */ + return n; +} + +static int _cffi_const_MAP_HEIGHT(unsigned long long *o) +{ + int n = (MAP_HEIGHT) <= 0; + *o = (unsigned long long)((MAP_HEIGHT) | 0); /* check that MAP_HEIGHT is an integer */ + return n; +} + +static int _cffi_const_MAP_CUBEMAP(unsigned long long *o) +{ + int n = (MAP_CUBEMAP) <= 0; + *o = (unsigned long long)((MAP_CUBEMAP) | 0); /* check that MAP_CUBEMAP is an integer */ + return n; +} + +static int _cffi_const_MAP_IRRADIANCE(unsigned long long *o) +{ + int n = (MAP_IRRADIANCE) <= 0; + *o = (unsigned long long)((MAP_IRRADIANCE) | 0); /* check that MAP_IRRADIANCE is an integer */ + return n; +} + +static int _cffi_const_MAP_PREFILTER(unsigned long long *o) +{ + int n = (MAP_PREFILTER) <= 0; + *o = (unsigned long long)((MAP_PREFILTER) | 0); /* check that MAP_PREFILTER is an integer */ + return n; +} + +static int _cffi_const_MAP_BRDF(unsigned long long *o) +{ + int n = (MAP_BRDF) <= 0; + *o = (unsigned long long)((MAP_BRDF) | 0); /* check that MAP_BRDF is an integer */ + return n; +} + +static int _cffi_const_MOUSE_LEFT_BUTTON(unsigned long long *o) +{ + int n = (MOUSE_LEFT_BUTTON) <= 0; + *o = (unsigned long long)((MOUSE_LEFT_BUTTON) | 0); /* check that MOUSE_LEFT_BUTTON is an integer */ + return n; +} + +static int _cffi_const_MOUSE_RIGHT_BUTTON(unsigned long long *o) +{ + int n = (MOUSE_RIGHT_BUTTON) <= 0; + *o = (unsigned long long)((MOUSE_RIGHT_BUTTON) | 0); /* check that MOUSE_RIGHT_BUTTON is an integer */ + return n; +} + +static int _cffi_const_MOUSE_MIDDLE_BUTTON(unsigned long long *o) +{ + int n = (MOUSE_MIDDLE_BUTTON) <= 0; + *o = (unsigned long long)((MOUSE_MIDDLE_BUTTON) | 0); /* check that MOUSE_MIDDLE_BUTTON is an integer */ + return n; +} + +static int _cffi_const_NPT_9PATCH(unsigned long long *o) +{ + int n = (NPT_9PATCH) <= 0; + *o = (unsigned long long)((NPT_9PATCH) | 0); /* check that NPT_9PATCH is an integer */ + return n; +} + +static int _cffi_const_NPT_3PATCH_VERTICAL(unsigned long long *o) +{ + int n = (NPT_3PATCH_VERTICAL) <= 0; + *o = (unsigned long long)((NPT_3PATCH_VERTICAL) | 0); /* check that NPT_3PATCH_VERTICAL is an integer */ + return n; +} + +static int _cffi_const_NPT_3PATCH_HORIZONTAL(unsigned long long *o) +{ + int n = (NPT_3PATCH_HORIZONTAL) <= 0; + *o = (unsigned long long)((NPT_3PATCH_HORIZONTAL) | 0); /* check that NPT_3PATCH_HORIZONTAL is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_GRAYSCALE(unsigned long long *o) +{ + int n = (UNCOMPRESSED_GRAYSCALE) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_GRAYSCALE) | 0); /* check that UNCOMPRESSED_GRAYSCALE is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_GRAY_ALPHA(unsigned long long *o) +{ + int n = (UNCOMPRESSED_GRAY_ALPHA) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_GRAY_ALPHA) | 0); /* check that UNCOMPRESSED_GRAY_ALPHA is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_R5G6B5(unsigned long long *o) +{ + int n = (UNCOMPRESSED_R5G6B5) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_R5G6B5) | 0); /* check that UNCOMPRESSED_R5G6B5 is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_R8G8B8(unsigned long long *o) +{ + int n = (UNCOMPRESSED_R8G8B8) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_R8G8B8) | 0); /* check that UNCOMPRESSED_R8G8B8 is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_R5G5B5A1(unsigned long long *o) +{ + int n = (UNCOMPRESSED_R5G5B5A1) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_R5G5B5A1) | 0); /* check that UNCOMPRESSED_R5G5B5A1 is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_R4G4B4A4(unsigned long long *o) +{ + int n = (UNCOMPRESSED_R4G4B4A4) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_R4G4B4A4) | 0); /* check that UNCOMPRESSED_R4G4B4A4 is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_R8G8B8A8(unsigned long long *o) +{ + int n = (UNCOMPRESSED_R8G8B8A8) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_R8G8B8A8) | 0); /* check that UNCOMPRESSED_R8G8B8A8 is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_R32(unsigned long long *o) +{ + int n = (UNCOMPRESSED_R32) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_R32) | 0); /* check that UNCOMPRESSED_R32 is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_R32G32B32(unsigned long long *o) +{ + int n = (UNCOMPRESSED_R32G32B32) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_R32G32B32) | 0); /* check that UNCOMPRESSED_R32G32B32 is an integer */ + return n; +} + +static int _cffi_const_UNCOMPRESSED_R32G32B32A32(unsigned long long *o) +{ + int n = (UNCOMPRESSED_R32G32B32A32) <= 0; + *o = (unsigned long long)((UNCOMPRESSED_R32G32B32A32) | 0); /* check that UNCOMPRESSED_R32G32B32A32 is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_DXT1_RGB(unsigned long long *o) +{ + int n = (COMPRESSED_DXT1_RGB) <= 0; + *o = (unsigned long long)((COMPRESSED_DXT1_RGB) | 0); /* check that COMPRESSED_DXT1_RGB is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_DXT1_RGBA(unsigned long long *o) +{ + int n = (COMPRESSED_DXT1_RGBA) <= 0; + *o = (unsigned long long)((COMPRESSED_DXT1_RGBA) | 0); /* check that COMPRESSED_DXT1_RGBA is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_DXT3_RGBA(unsigned long long *o) +{ + int n = (COMPRESSED_DXT3_RGBA) <= 0; + *o = (unsigned long long)((COMPRESSED_DXT3_RGBA) | 0); /* check that COMPRESSED_DXT3_RGBA is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_DXT5_RGBA(unsigned long long *o) +{ + int n = (COMPRESSED_DXT5_RGBA) <= 0; + *o = (unsigned long long)((COMPRESSED_DXT5_RGBA) | 0); /* check that COMPRESSED_DXT5_RGBA is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_ETC1_RGB(unsigned long long *o) +{ + int n = (COMPRESSED_ETC1_RGB) <= 0; + *o = (unsigned long long)((COMPRESSED_ETC1_RGB) | 0); /* check that COMPRESSED_ETC1_RGB is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_ETC2_RGB(unsigned long long *o) +{ + int n = (COMPRESSED_ETC2_RGB) <= 0; + *o = (unsigned long long)((COMPRESSED_ETC2_RGB) | 0); /* check that COMPRESSED_ETC2_RGB is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_ETC2_EAC_RGBA(unsigned long long *o) +{ + int n = (COMPRESSED_ETC2_EAC_RGBA) <= 0; + *o = (unsigned long long)((COMPRESSED_ETC2_EAC_RGBA) | 0); /* check that COMPRESSED_ETC2_EAC_RGBA is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_PVRT_RGB(unsigned long long *o) +{ + int n = (COMPRESSED_PVRT_RGB) <= 0; + *o = (unsigned long long)((COMPRESSED_PVRT_RGB) | 0); /* check that COMPRESSED_PVRT_RGB is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_PVRT_RGBA(unsigned long long *o) +{ + int n = (COMPRESSED_PVRT_RGBA) <= 0; + *o = (unsigned long long)((COMPRESSED_PVRT_RGBA) | 0); /* check that COMPRESSED_PVRT_RGBA is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_ASTC_4x4_RGBA(unsigned long long *o) +{ + int n = (COMPRESSED_ASTC_4x4_RGBA) <= 0; + *o = (unsigned long long)((COMPRESSED_ASTC_4x4_RGBA) | 0); /* check that COMPRESSED_ASTC_4x4_RGBA is an integer */ + return n; +} + +static int _cffi_const_COMPRESSED_ASTC_8x8_RGBA(unsigned long long *o) +{ + int n = (COMPRESSED_ASTC_8x8_RGBA) <= 0; + *o = (unsigned long long)((COMPRESSED_ASTC_8x8_RGBA) | 0); /* check that COMPRESSED_ASTC_8x8_RGBA is an integer */ + return n; +} + +static int _cffi_const_LOC_VERTEX_POSITION(unsigned long long *o) +{ + int n = (LOC_VERTEX_POSITION) <= 0; + *o = (unsigned long long)((LOC_VERTEX_POSITION) | 0); /* check that LOC_VERTEX_POSITION is an integer */ + return n; +} + +static int _cffi_const_LOC_VERTEX_TEXCOORD01(unsigned long long *o) +{ + int n = (LOC_VERTEX_TEXCOORD01) <= 0; + *o = (unsigned long long)((LOC_VERTEX_TEXCOORD01) | 0); /* check that LOC_VERTEX_TEXCOORD01 is an integer */ + return n; +} + +static int _cffi_const_LOC_VERTEX_TEXCOORD02(unsigned long long *o) +{ + int n = (LOC_VERTEX_TEXCOORD02) <= 0; + *o = (unsigned long long)((LOC_VERTEX_TEXCOORD02) | 0); /* check that LOC_VERTEX_TEXCOORD02 is an integer */ + return n; +} + +static int _cffi_const_LOC_VERTEX_NORMAL(unsigned long long *o) +{ + int n = (LOC_VERTEX_NORMAL) <= 0; + *o = (unsigned long long)((LOC_VERTEX_NORMAL) | 0); /* check that LOC_VERTEX_NORMAL is an integer */ + return n; +} + +static int _cffi_const_LOC_VERTEX_TANGENT(unsigned long long *o) +{ + int n = (LOC_VERTEX_TANGENT) <= 0; + *o = (unsigned long long)((LOC_VERTEX_TANGENT) | 0); /* check that LOC_VERTEX_TANGENT is an integer */ + return n; +} + +static int _cffi_const_LOC_VERTEX_COLOR(unsigned long long *o) +{ + int n = (LOC_VERTEX_COLOR) <= 0; + *o = (unsigned long long)((LOC_VERTEX_COLOR) | 0); /* check that LOC_VERTEX_COLOR is an integer */ + return n; +} + +static int _cffi_const_LOC_MATRIX_MVP(unsigned long long *o) +{ + int n = (LOC_MATRIX_MVP) <= 0; + *o = (unsigned long long)((LOC_MATRIX_MVP) | 0); /* check that LOC_MATRIX_MVP is an integer */ + return n; +} + +static int _cffi_const_LOC_MATRIX_MODEL(unsigned long long *o) +{ + int n = (LOC_MATRIX_MODEL) <= 0; + *o = (unsigned long long)((LOC_MATRIX_MODEL) | 0); /* check that LOC_MATRIX_MODEL is an integer */ + return n; +} + +static int _cffi_const_LOC_MATRIX_VIEW(unsigned long long *o) +{ + int n = (LOC_MATRIX_VIEW) <= 0; + *o = (unsigned long long)((LOC_MATRIX_VIEW) | 0); /* check that LOC_MATRIX_VIEW is an integer */ + return n; +} + +static int _cffi_const_LOC_MATRIX_PROJECTION(unsigned long long *o) +{ + int n = (LOC_MATRIX_PROJECTION) <= 0; + *o = (unsigned long long)((LOC_MATRIX_PROJECTION) | 0); /* check that LOC_MATRIX_PROJECTION is an integer */ + return n; +} + +static int _cffi_const_LOC_VECTOR_VIEW(unsigned long long *o) +{ + int n = (LOC_VECTOR_VIEW) <= 0; + *o = (unsigned long long)((LOC_VECTOR_VIEW) | 0); /* check that LOC_VECTOR_VIEW is an integer */ + return n; +} + +static int _cffi_const_LOC_COLOR_DIFFUSE(unsigned long long *o) +{ + int n = (LOC_COLOR_DIFFUSE) <= 0; + *o = (unsigned long long)((LOC_COLOR_DIFFUSE) | 0); /* check that LOC_COLOR_DIFFUSE is an integer */ + return n; +} + +static int _cffi_const_LOC_COLOR_SPECULAR(unsigned long long *o) +{ + int n = (LOC_COLOR_SPECULAR) <= 0; + *o = (unsigned long long)((LOC_COLOR_SPECULAR) | 0); /* check that LOC_COLOR_SPECULAR is an integer */ + return n; +} + +static int _cffi_const_LOC_COLOR_AMBIENT(unsigned long long *o) +{ + int n = (LOC_COLOR_AMBIENT) <= 0; + *o = (unsigned long long)((LOC_COLOR_AMBIENT) | 0); /* check that LOC_COLOR_AMBIENT is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_ALBEDO(unsigned long long *o) +{ + int n = (LOC_MAP_ALBEDO) <= 0; + *o = (unsigned long long)((LOC_MAP_ALBEDO) | 0); /* check that LOC_MAP_ALBEDO is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_METALNESS(unsigned long long *o) +{ + int n = (LOC_MAP_METALNESS) <= 0; + *o = (unsigned long long)((LOC_MAP_METALNESS) | 0); /* check that LOC_MAP_METALNESS is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_NORMAL(unsigned long long *o) +{ + int n = (LOC_MAP_NORMAL) <= 0; + *o = (unsigned long long)((LOC_MAP_NORMAL) | 0); /* check that LOC_MAP_NORMAL is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_ROUGHNESS(unsigned long long *o) +{ + int n = (LOC_MAP_ROUGHNESS) <= 0; + *o = (unsigned long long)((LOC_MAP_ROUGHNESS) | 0); /* check that LOC_MAP_ROUGHNESS is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_OCCLUSION(unsigned long long *o) +{ + int n = (LOC_MAP_OCCLUSION) <= 0; + *o = (unsigned long long)((LOC_MAP_OCCLUSION) | 0); /* check that LOC_MAP_OCCLUSION is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_EMISSION(unsigned long long *o) +{ + int n = (LOC_MAP_EMISSION) <= 0; + *o = (unsigned long long)((LOC_MAP_EMISSION) | 0); /* check that LOC_MAP_EMISSION is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_HEIGHT(unsigned long long *o) +{ + int n = (LOC_MAP_HEIGHT) <= 0; + *o = (unsigned long long)((LOC_MAP_HEIGHT) | 0); /* check that LOC_MAP_HEIGHT is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_CUBEMAP(unsigned long long *o) +{ + int n = (LOC_MAP_CUBEMAP) <= 0; + *o = (unsigned long long)((LOC_MAP_CUBEMAP) | 0); /* check that LOC_MAP_CUBEMAP is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_IRRADIANCE(unsigned long long *o) +{ + int n = (LOC_MAP_IRRADIANCE) <= 0; + *o = (unsigned long long)((LOC_MAP_IRRADIANCE) | 0); /* check that LOC_MAP_IRRADIANCE is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_PREFILTER(unsigned long long *o) +{ + int n = (LOC_MAP_PREFILTER) <= 0; + *o = (unsigned long long)((LOC_MAP_PREFILTER) | 0); /* check that LOC_MAP_PREFILTER is an integer */ + return n; +} + +static int _cffi_const_LOC_MAP_BRDF(unsigned long long *o) +{ + int n = (LOC_MAP_BRDF) <= 0; + *o = (unsigned long long)((LOC_MAP_BRDF) | 0); /* check that LOC_MAP_BRDF is an integer */ + return n; +} + +static int _cffi_const_UNIFORM_FLOAT(unsigned long long *o) +{ + int n = (UNIFORM_FLOAT) <= 0; + *o = (unsigned long long)((UNIFORM_FLOAT) | 0); /* check that UNIFORM_FLOAT is an integer */ + return n; +} + +static int _cffi_const_UNIFORM_VEC2(unsigned long long *o) +{ + int n = (UNIFORM_VEC2) <= 0; + *o = (unsigned long long)((UNIFORM_VEC2) | 0); /* check that UNIFORM_VEC2 is an integer */ + return n; +} + +static int _cffi_const_UNIFORM_VEC3(unsigned long long *o) +{ + int n = (UNIFORM_VEC3) <= 0; + *o = (unsigned long long)((UNIFORM_VEC3) | 0); /* check that UNIFORM_VEC3 is an integer */ + return n; +} + +static int _cffi_const_UNIFORM_VEC4(unsigned long long *o) +{ + int n = (UNIFORM_VEC4) <= 0; + *o = (unsigned long long)((UNIFORM_VEC4) | 0); /* check that UNIFORM_VEC4 is an integer */ + return n; +} + +static int _cffi_const_UNIFORM_INT(unsigned long long *o) +{ + int n = (UNIFORM_INT) <= 0; + *o = (unsigned long long)((UNIFORM_INT) | 0); /* check that UNIFORM_INT is an integer */ + return n; +} + +static int _cffi_const_UNIFORM_IVEC2(unsigned long long *o) +{ + int n = (UNIFORM_IVEC2) <= 0; + *o = (unsigned long long)((UNIFORM_IVEC2) | 0); /* check that UNIFORM_IVEC2 is an integer */ + return n; +} + +static int _cffi_const_UNIFORM_IVEC3(unsigned long long *o) +{ + int n = (UNIFORM_IVEC3) <= 0; + *o = (unsigned long long)((UNIFORM_IVEC3) | 0); /* check that UNIFORM_IVEC3 is an integer */ + return n; +} + +static int _cffi_const_UNIFORM_IVEC4(unsigned long long *o) +{ + int n = (UNIFORM_IVEC4) <= 0; + *o = (unsigned long long)((UNIFORM_IVEC4) | 0); /* check that UNIFORM_IVEC4 is an integer */ + return n; +} + +static int _cffi_const_UNIFORM_SAMPLER2D(unsigned long long *o) +{ + int n = (UNIFORM_SAMPLER2D) <= 0; + *o = (unsigned long long)((UNIFORM_SAMPLER2D) | 0); /* check that UNIFORM_SAMPLER2D is an integer */ + return n; +} + +static int _cffi_const_FILTER_POINT(unsigned long long *o) +{ + int n = (FILTER_POINT) <= 0; + *o = (unsigned long long)((FILTER_POINT) | 0); /* check that FILTER_POINT is an integer */ + return n; +} + +static int _cffi_const_FILTER_BILINEAR(unsigned long long *o) +{ + int n = (FILTER_BILINEAR) <= 0; + *o = (unsigned long long)((FILTER_BILINEAR) | 0); /* check that FILTER_BILINEAR is an integer */ + return n; +} + +static int _cffi_const_FILTER_TRILINEAR(unsigned long long *o) +{ + int n = (FILTER_TRILINEAR) <= 0; + *o = (unsigned long long)((FILTER_TRILINEAR) | 0); /* check that FILTER_TRILINEAR is an integer */ + return n; +} + +static int _cffi_const_FILTER_ANISOTROPIC_4X(unsigned long long *o) +{ + int n = (FILTER_ANISOTROPIC_4X) <= 0; + *o = (unsigned long long)((FILTER_ANISOTROPIC_4X) | 0); /* check that FILTER_ANISOTROPIC_4X is an integer */ + return n; +} + +static int _cffi_const_FILTER_ANISOTROPIC_8X(unsigned long long *o) +{ + int n = (FILTER_ANISOTROPIC_8X) <= 0; + *o = (unsigned long long)((FILTER_ANISOTROPIC_8X) | 0); /* check that FILTER_ANISOTROPIC_8X is an integer */ + return n; +} + +static int _cffi_const_FILTER_ANISOTROPIC_16X(unsigned long long *o) +{ + int n = (FILTER_ANISOTROPIC_16X) <= 0; + *o = (unsigned long long)((FILTER_ANISOTROPIC_16X) | 0); /* check that FILTER_ANISOTROPIC_16X is an integer */ + return n; +} + +static int _cffi_const_WRAP_REPEAT(unsigned long long *o) +{ + int n = (WRAP_REPEAT) <= 0; + *o = (unsigned long long)((WRAP_REPEAT) | 0); /* check that WRAP_REPEAT is an integer */ + return n; +} + +static int _cffi_const_WRAP_CLAMP(unsigned long long *o) +{ + int n = (WRAP_CLAMP) <= 0; + *o = (unsigned long long)((WRAP_CLAMP) | 0); /* check that WRAP_CLAMP is an integer */ + return n; +} + +static int _cffi_const_WRAP_MIRROR_REPEAT(unsigned long long *o) +{ + int n = (WRAP_MIRROR_REPEAT) <= 0; + *o = (unsigned long long)((WRAP_MIRROR_REPEAT) | 0); /* check that WRAP_MIRROR_REPEAT is an integer */ + return n; +} + +static int _cffi_const_WRAP_MIRROR_CLAMP(unsigned long long *o) +{ + int n = (WRAP_MIRROR_CLAMP) <= 0; + *o = (unsigned long long)((WRAP_MIRROR_CLAMP) | 0); /* check that WRAP_MIRROR_CLAMP is an integer */ + return n; +} + +static int _cffi_const_LOG_ALL(unsigned long long *o) +{ + int n = (LOG_ALL) <= 0; + *o = (unsigned long long)((LOG_ALL) | 0); /* check that LOG_ALL is an integer */ + return n; +} + +static int _cffi_const_LOG_TRACE(unsigned long long *o) +{ + int n = (LOG_TRACE) <= 0; + *o = (unsigned long long)((LOG_TRACE) | 0); /* check that LOG_TRACE is an integer */ + return n; +} + +static int _cffi_const_LOG_DEBUG(unsigned long long *o) +{ + int n = (LOG_DEBUG) <= 0; + *o = (unsigned long long)((LOG_DEBUG) | 0); /* check that LOG_DEBUG is an integer */ + return n; +} + +static int _cffi_const_LOG_INFO(unsigned long long *o) +{ + int n = (LOG_INFO) <= 0; + *o = (unsigned long long)((LOG_INFO) | 0); /* check that LOG_INFO is an integer */ + return n; +} + +static int _cffi_const_LOG_WARNING(unsigned long long *o) +{ + int n = (LOG_WARNING) <= 0; + *o = (unsigned long long)((LOG_WARNING) | 0); /* check that LOG_WARNING is an integer */ + return n; +} + +static int _cffi_const_LOG_ERROR(unsigned long long *o) +{ + int n = (LOG_ERROR) <= 0; + *o = (unsigned long long)((LOG_ERROR) | 0); /* check that LOG_ERROR is an integer */ + return n; +} + +static int _cffi_const_LOG_FATAL(unsigned long long *o) +{ + int n = (LOG_FATAL) <= 0; + *o = (unsigned long long)((LOG_FATAL) | 0); /* check that LOG_FATAL is an integer */ + return n; +} + +static int _cffi_const_LOG_NONE(unsigned long long *o) +{ + int n = (LOG_NONE) <= 0; + *o = (unsigned long long)((LOG_NONE) | 0); /* check that LOG_NONE is an integer */ + return n; +} + +static void _cffi_d_BeginBlendMode(int x0) +{ + BeginBlendMode(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_BeginBlendMode(PyObject *self, PyObject *arg0) +{ + int x0; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { BeginBlendMode(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_BeginBlendMode _cffi_d_BeginBlendMode +#endif + +static void _cffi_d_BeginDrawing(void) +{ + BeginDrawing(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_BeginDrawing(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { BeginDrawing(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_BeginDrawing _cffi_d_BeginDrawing +#endif + +static void _cffi_d_BeginMode2D(Camera2D x0) +{ + BeginMode2D(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_BeginMode2D(PyObject *self, PyObject *arg0) +{ + Camera2D x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(155), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { BeginMode2D(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_BeginMode2D(Camera2D *x0) +{ + { BeginMode2D(*x0); } +} +#endif + +static void _cffi_d_BeginMode3D(Camera3D x0) +{ + BeginMode3D(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_BeginMode3D(PyObject *self, PyObject *arg0) +{ + Camera3D x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(158), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { BeginMode3D(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_BeginMode3D(Camera3D *x0) +{ + { BeginMode3D(*x0); } +} +#endif + +static void _cffi_d_BeginScissorMode(int x0, int x1, int x2, int x3) +{ + BeginScissorMode(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_BeginScissorMode(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "BeginScissorMode", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { BeginScissorMode(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_BeginScissorMode _cffi_d_BeginScissorMode +#endif + +static void _cffi_d_BeginShaderMode(Shader x0) +{ + BeginShaderMode(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_BeginShaderMode(PyObject *self, PyObject *arg0) +{ + Shader x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { BeginShaderMode(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_BeginShaderMode(Shader *x0) +{ + { BeginShaderMode(*x0); } +} +#endif + +static void _cffi_d_BeginTextureMode(RenderTexture2D x0) +{ + BeginTextureMode(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_BeginTextureMode(PyObject *self, PyObject *arg0) +{ + RenderTexture2D x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(800), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { BeginTextureMode(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_BeginTextureMode(RenderTexture2D *x0) +{ + { BeginTextureMode(*x0); } +} +#endif + +static void _cffi_d_BeginVrDrawing(void) +{ + BeginVrDrawing(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_BeginVrDrawing(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { BeginVrDrawing(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_BeginVrDrawing _cffi_d_BeginVrDrawing +#endif + +static int _cffi_d_ChangeDirectory(char const * x0) +{ + return ChangeDirectory(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ChangeDirectory(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ChangeDirectory(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_ChangeDirectory _cffi_d_ChangeDirectory +#endif + +static int _cffi_d_CheckCollisionBoxSphere(BoundingBox x0, Vector3 x1, float x2) +{ + return CheckCollisionBoxSphere(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionBoxSphere(PyObject *self, PyObject *args) +{ + BoundingBox x0; + Vector3 x1; + float x2; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "CheckCollisionBoxSphere", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(387), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionBoxSphere(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionBoxSphere(BoundingBox *x0, Vector3 *x1, float x2) +{ + int result; + { result = CheckCollisionBoxSphere(*x0, *x1, x2); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionBoxes(BoundingBox x0, BoundingBox x1) +{ + return CheckCollisionBoxes(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionBoxes(PyObject *self, PyObject *args) +{ + BoundingBox x0; + BoundingBox x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "CheckCollisionBoxes", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(387), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(387), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionBoxes(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionBoxes(BoundingBox *x0, BoundingBox *x1) +{ + int result; + { result = CheckCollisionBoxes(*x0, *x1); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionCircleRec(Vector2 x0, float x1, Rectangle x2) +{ + return CheckCollisionCircleRec(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionCircleRec(PyObject *self, PyObject *args) +{ + Vector2 x0; + float x1; + Rectangle x2; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "CheckCollisionCircleRec", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(77), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionCircleRec(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionCircleRec(Vector2 *x0, float x1, Rectangle *x2) +{ + int result; + { result = CheckCollisionCircleRec(*x0, x1, *x2); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionCircles(Vector2 x0, float x1, Vector2 x2, float x3) +{ + return CheckCollisionCircles(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionCircles(PyObject *self, PyObject *args) +{ + Vector2 x0; + float x1; + Vector2 x2; + float x3; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "CheckCollisionCircles", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(209), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionCircles(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionCircles(Vector2 *x0, float x1, Vector2 *x2, float x3) +{ + int result; + { result = CheckCollisionCircles(*x0, x1, *x2, x3); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionPointCircle(Vector2 x0, Vector2 x1, float x2) +{ + return CheckCollisionPointCircle(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionPointCircle(PyObject *self, PyObject *args) +{ + Vector2 x0; + Vector2 x1; + float x2; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "CheckCollisionPointCircle", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionPointCircle(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionPointCircle(Vector2 *x0, Vector2 *x1, float x2) +{ + int result; + { result = CheckCollisionPointCircle(*x0, *x1, x2); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionPointRec(Vector2 x0, Rectangle x1) +{ + return CheckCollisionPointRec(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionPointRec(PyObject *self, PyObject *args) +{ + Vector2 x0; + Rectangle x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "CheckCollisionPointRec", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionPointRec(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionPointRec(Vector2 *x0, Rectangle *x1) +{ + int result; + { result = CheckCollisionPointRec(*x0, *x1); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionPointTriangle(Vector2 x0, Vector2 x1, Vector2 x2, Vector2 x3) +{ + return CheckCollisionPointTriangle(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionPointTriangle(PyObject *self, PyObject *args) +{ + Vector2 x0; + Vector2 x1; + Vector2 x2; + Vector2 x3; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "CheckCollisionPointTriangle", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(209), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(209), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionPointTriangle(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionPointTriangle(Vector2 *x0, Vector2 *x1, Vector2 *x2, Vector2 *x3) +{ + int result; + { result = CheckCollisionPointTriangle(*x0, *x1, *x2, *x3); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionRayBox(Ray x0, BoundingBox x1) +{ + return CheckCollisionRayBox(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionRayBox(PyObject *self, PyObject *args) +{ + Ray x0; + BoundingBox x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "CheckCollisionRayBox", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(213), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(387), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionRayBox(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionRayBox(Ray *x0, BoundingBox *x1) +{ + int result; + { result = CheckCollisionRayBox(*x0, *x1); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionRaySphere(Ray x0, Vector3 x1, float x2) +{ + return CheckCollisionRaySphere(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionRaySphere(PyObject *self, PyObject *args) +{ + Ray x0; + Vector3 x1; + float x2; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "CheckCollisionRaySphere", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(213), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionRaySphere(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionRaySphere(Ray *x0, Vector3 *x1, float x2) +{ + int result; + { result = CheckCollisionRaySphere(*x0, *x1, x2); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionRaySphereEx(Ray x0, Vector3 x1, float x2, Vector3 * x3) +{ + return CheckCollisionRaySphereEx(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionRaySphereEx(PyObject *self, PyObject *args) +{ + Ray x0; + Vector3 x1; + float x2; + Vector3 * x3; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "CheckCollisionRaySphereEx", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(213), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(422), arg3, (char **)&x3); + if (datasize != 0) { + x3 = ((size_t)datasize) <= 640 ? (Vector3 *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(422), arg3, (char **)&x3, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionRaySphereEx(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionRaySphereEx(Ray *x0, Vector3 *x1, float x2, Vector3 * x3) +{ + int result; + { result = CheckCollisionRaySphereEx(*x0, *x1, x2, x3); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionRecs(Rectangle x0, Rectangle x1) +{ + return CheckCollisionRecs(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionRecs(PyObject *self, PyObject *args) +{ + Rectangle x0; + Rectangle x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "CheckCollisionRecs", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(77), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionRecs(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionRecs(Rectangle *x0, Rectangle *x1) +{ + int result; + { result = CheckCollisionRecs(*x0, *x1); } + return result; +} +#endif + +static int _cffi_d_CheckCollisionSpheres(Vector3 x0, float x1, Vector3 x2, float x3) +{ + return CheckCollisionSpheres(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CheckCollisionSpheres(PyObject *self, PyObject *args) +{ + Vector3 x0; + float x1; + Vector3 x2; + float x3; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "CheckCollisionSpheres", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(28), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CheckCollisionSpheres(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_CheckCollisionSpheres(Vector3 *x0, float x1, Vector3 *x2, float x3) +{ + int result; + { result = CheckCollisionSpheres(*x0, x1, *x2, x3); } + return result; +} +#endif + +static void _cffi_d_ClearBackground(Color x0) +{ + ClearBackground(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ClearBackground(PyObject *self, PyObject *arg0) +{ + Color x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(24), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ClearBackground(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ClearBackground(Color *x0) +{ + { ClearBackground(*x0); } +} +#endif + +static void _cffi_d_ClearDirectoryFiles(void) +{ + ClearDirectoryFiles(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ClearDirectoryFiles(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ClearDirectoryFiles(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ClearDirectoryFiles _cffi_d_ClearDirectoryFiles +#endif + +static void _cffi_d_ClearDroppedFiles(void) +{ + ClearDroppedFiles(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ClearDroppedFiles(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ClearDroppedFiles(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ClearDroppedFiles _cffi_d_ClearDroppedFiles +#endif + +static void _cffi_d_CloseAudioDevice(void) +{ + CloseAudioDevice(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CloseAudioDevice(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { CloseAudioDevice(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_CloseAudioDevice _cffi_d_CloseAudioDevice +#endif + +static void _cffi_d_CloseAudioStream(AudioStream x0) +{ + CloseAudioStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CloseAudioStream(PyObject *self, PyObject *arg0) +{ + AudioStream x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { CloseAudioStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_CloseAudioStream(AudioStream *x0) +{ + { CloseAudioStream(*x0); } +} +#endif + +static void _cffi_d_CloseVrSimulator(void) +{ + CloseVrSimulator(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CloseVrSimulator(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { CloseVrSimulator(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_CloseVrSimulator _cffi_d_CloseVrSimulator +#endif + +static void _cffi_d_CloseWindow(void) +{ + CloseWindow(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CloseWindow(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { CloseWindow(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_CloseWindow _cffi_d_CloseWindow +#endif + +static char const * _cffi_d_CodepointToUtf8(int x0, int * x1) +{ + return CodepointToUtf8(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CodepointToUtf8(PyObject *self, PyObject *args) +{ + int x0; + int * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "CodepointToUtf8", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CodepointToUtf8(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_CodepointToUtf8 _cffi_d_CodepointToUtf8 +#endif + +static Color _cffi_d_ColorFromHSV(Vector3 x0) +{ + return ColorFromHSV(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ColorFromHSV(PyObject *self, PyObject *arg0) +{ + Vector3 x0; + Color result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ColorFromHSV(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(24)); + return pyresult; +} +#else +static void _cffi_f_ColorFromHSV(Color *result, Vector3 *x0) +{ + { *result = ColorFromHSV(*x0); } +} +#endif + +static Color _cffi_d_ColorFromNormalized(Vector4 x0) +{ + return ColorFromNormalized(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ColorFromNormalized(PyObject *self, PyObject *arg0) +{ + Vector4 x0; + Color result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(31), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ColorFromNormalized(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(24)); + return pyresult; +} +#else +static void _cffi_f_ColorFromNormalized(Color *result, Vector4 *x0) +{ + { *result = ColorFromNormalized(*x0); } +} +#endif + +static Vector4 _cffi_d_ColorNormalize(Color x0) +{ + return ColorNormalize(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ColorNormalize(PyObject *self, PyObject *arg0) +{ + Color x0; + Vector4 result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(24), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ColorNormalize(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(31)); + return pyresult; +} +#else +static void _cffi_f_ColorNormalize(Vector4 *result, Color *x0) +{ + { *result = ColorNormalize(*x0); } +} +#endif + +static Vector3 _cffi_d_ColorToHSV(Color x0) +{ + return ColorToHSV(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ColorToHSV(PyObject *self, PyObject *arg0) +{ + Color x0; + Vector3 result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(24), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ColorToHSV(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(28)); + return pyresult; +} +#else +static void _cffi_f_ColorToHSV(Vector3 *result, Color *x0) +{ + { *result = ColorToHSV(*x0); } +} +#endif + +static int _cffi_d_ColorToInt(Color x0) +{ + return ColorToInt(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ColorToInt(PyObject *self, PyObject *arg0) +{ + Color x0; + int result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(24), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ColorToInt(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_ColorToInt(Color *x0) +{ + int result; + { result = ColorToInt(*x0); } + return result; +} +#endif + +static unsigned char * _cffi_d_CompressData(unsigned char * x0, int x1, int * x2) +{ + return CompressData(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_CompressData(PyObject *self, PyObject *args) +{ + unsigned char * x0; + int x1; + int * x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + unsigned char * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "CompressData", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(508), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (unsigned char *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(508), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = CompressData(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(508)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_CompressData _cffi_d_CompressData +#endif + +static unsigned char * _cffi_d_DecompressData(unsigned char * x0, int x1, int * x2) +{ + return DecompressData(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DecompressData(PyObject *self, PyObject *args) +{ + unsigned char * x0; + int x1; + int * x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + unsigned char * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DecompressData", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(508), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (unsigned char *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(508), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = DecompressData(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(508)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_DecompressData _cffi_d_DecompressData +#endif + +static int _cffi_d_DirectoryExists(char const * x0) +{ + return DirectoryExists(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DirectoryExists(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = DirectoryExists(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_DirectoryExists _cffi_d_DirectoryExists +#endif + +static void _cffi_d_DisableCursor(void) +{ + DisableCursor(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DisableCursor(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DisableCursor(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_DisableCursor _cffi_d_DisableCursor +#endif + +static void _cffi_d_DrawBillboard(Camera3D x0, Texture2D x1, Vector3 x2, float x3, Color x4) +{ + DrawBillboard(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawBillboard(PyObject *self, PyObject *args) +{ + Camera3D x0; + Texture2D x1; + Vector3 x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawBillboard", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(158), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(80), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(28), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawBillboard(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawBillboard(Camera3D *x0, Texture2D *x1, Vector3 *x2, float x3, Color *x4) +{ + { DrawBillboard(*x0, *x1, *x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawBillboardRec(Camera3D x0, Texture2D x1, Rectangle x2, Vector3 x3, float x4, Color x5) +{ + DrawBillboardRec(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawBillboardRec(PyObject *self, PyObject *args) +{ + Camera3D x0; + Texture2D x1; + Rectangle x2; + Vector3 x3; + float x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawBillboardRec", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(158), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(80), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(77), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(28), arg3) < 0) + return NULL; + + x4 = (float)_cffi_to_c_float(arg4); + if (x4 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawBillboardRec(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawBillboardRec(Camera3D *x0, Texture2D *x1, Rectangle *x2, Vector3 *x3, float x4, Color *x5) +{ + { DrawBillboardRec(*x0, *x1, *x2, *x3, x4, *x5); } +} +#endif + +static void _cffi_d_DrawBoundingBox(BoundingBox x0, Color x1) +{ + DrawBoundingBox(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawBoundingBox(PyObject *self, PyObject *args) +{ + BoundingBox x0; + Color x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "DrawBoundingBox", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(387), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawBoundingBox(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawBoundingBox(BoundingBox *x0, Color *x1) +{ + { DrawBoundingBox(*x0, *x1); } +} +#endif + +static void _cffi_d_DrawCircle(int x0, int x1, float x2, Color x3) +{ + DrawCircle(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCircle(PyObject *self, PyObject *args) +{ + int x0; + int x1; + float x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawCircle", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCircle(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCircle(int x0, int x1, float x2, Color *x3) +{ + { DrawCircle(x0, x1, x2, *x3); } +} +#endif + +static void _cffi_d_DrawCircle3D(Vector3 x0, float x1, Vector3 x2, float x3, Color x4) +{ + DrawCircle3D(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCircle3D(PyObject *self, PyObject *args) +{ + Vector3 x0; + float x1; + Vector3 x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawCircle3D", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(28), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCircle3D(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCircle3D(Vector3 *x0, float x1, Vector3 *x2, float x3, Color *x4) +{ + { DrawCircle3D(*x0, x1, *x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawCircleGradient(int x0, int x1, float x2, Color x3, Color x4) +{ + DrawCircleGradient(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCircleGradient(PyObject *self, PyObject *args) +{ + int x0; + int x1; + float x2; + Color x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawCircleGradient", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCircleGradient(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCircleGradient(int x0, int x1, float x2, Color *x3, Color *x4) +{ + { DrawCircleGradient(x0, x1, x2, *x3, *x4); } +} +#endif + +static void _cffi_d_DrawCircleLines(int x0, int x1, float x2, Color x3) +{ + DrawCircleLines(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCircleLines(PyObject *self, PyObject *args) +{ + int x0; + int x1; + float x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawCircleLines", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCircleLines(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCircleLines(int x0, int x1, float x2, Color *x3) +{ + { DrawCircleLines(x0, x1, x2, *x3); } +} +#endif + +static void _cffi_d_DrawCircleSector(Vector2 x0, float x1, int x2, int x3, int x4, Color x5) +{ + DrawCircleSector(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCircleSector(PyObject *self, PyObject *args) +{ + Vector2 x0; + float x1; + int x2; + int x3; + int x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawCircleSector", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCircleSector(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCircleSector(Vector2 *x0, float x1, int x2, int x3, int x4, Color *x5) +{ + { DrawCircleSector(*x0, x1, x2, x3, x4, *x5); } +} +#endif + +static void _cffi_d_DrawCircleSectorLines(Vector2 x0, float x1, int x2, int x3, int x4, Color x5) +{ + DrawCircleSectorLines(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCircleSectorLines(PyObject *self, PyObject *args) +{ + Vector2 x0; + float x1; + int x2; + int x3; + int x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawCircleSectorLines", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCircleSectorLines(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCircleSectorLines(Vector2 *x0, float x1, int x2, int x3, int x4, Color *x5) +{ + { DrawCircleSectorLines(*x0, x1, x2, x3, x4, *x5); } +} +#endif + +static void _cffi_d_DrawCircleV(Vector2 x0, float x1, Color x2) +{ + DrawCircleV(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCircleV(PyObject *self, PyObject *args) +{ + Vector2 x0; + float x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawCircleV", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCircleV(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCircleV(Vector2 *x0, float x1, Color *x2) +{ + { DrawCircleV(*x0, x1, *x2); } +} +#endif + +static void _cffi_d_DrawCube(Vector3 x0, float x1, float x2, float x3, Color x4) +{ + DrawCube(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCube(PyObject *self, PyObject *args) +{ + Vector3 x0; + float x1; + float x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawCube", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCube(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCube(Vector3 *x0, float x1, float x2, float x3, Color *x4) +{ + { DrawCube(*x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawCubeTexture(Texture2D x0, Vector3 x1, float x2, float x3, float x4, Color x5) +{ + DrawCubeTexture(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCubeTexture(PyObject *self, PyObject *args) +{ + Texture2D x0; + Vector3 x1; + float x2; + float x3; + float x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawCubeTexture", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + x4 = (float)_cffi_to_c_float(arg4); + if (x4 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCubeTexture(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCubeTexture(Texture2D *x0, Vector3 *x1, float x2, float x3, float x4, Color *x5) +{ + { DrawCubeTexture(*x0, *x1, x2, x3, x4, *x5); } +} +#endif + +static void _cffi_d_DrawCubeV(Vector3 x0, Vector3 x1, Color x2) +{ + DrawCubeV(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCubeV(PyObject *self, PyObject *args) +{ + Vector3 x0; + Vector3 x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawCubeV", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCubeV(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCubeV(Vector3 *x0, Vector3 *x1, Color *x2) +{ + { DrawCubeV(*x0, *x1, *x2); } +} +#endif + +static void _cffi_d_DrawCubeWires(Vector3 x0, float x1, float x2, float x3, Color x4) +{ + DrawCubeWires(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCubeWires(PyObject *self, PyObject *args) +{ + Vector3 x0; + float x1; + float x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawCubeWires", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCubeWires(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCubeWires(Vector3 *x0, float x1, float x2, float x3, Color *x4) +{ + { DrawCubeWires(*x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawCubeWiresV(Vector3 x0, Vector3 x1, Color x2) +{ + DrawCubeWiresV(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCubeWiresV(PyObject *self, PyObject *args) +{ + Vector3 x0; + Vector3 x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawCubeWiresV", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCubeWiresV(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCubeWiresV(Vector3 *x0, Vector3 *x1, Color *x2) +{ + { DrawCubeWiresV(*x0, *x1, *x2); } +} +#endif + +static void _cffi_d_DrawCylinder(Vector3 x0, float x1, float x2, float x3, int x4, Color x5) +{ + DrawCylinder(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCylinder(PyObject *self, PyObject *args) +{ + Vector3 x0; + float x1; + float x2; + float x3; + int x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawCylinder", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCylinder(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCylinder(Vector3 *x0, float x1, float x2, float x3, int x4, Color *x5) +{ + { DrawCylinder(*x0, x1, x2, x3, x4, *x5); } +} +#endif + +static void _cffi_d_DrawCylinderWires(Vector3 x0, float x1, float x2, float x3, int x4, Color x5) +{ + DrawCylinderWires(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawCylinderWires(PyObject *self, PyObject *args) +{ + Vector3 x0; + float x1; + float x2; + float x3; + int x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawCylinderWires", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawCylinderWires(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawCylinderWires(Vector3 *x0, float x1, float x2, float x3, int x4, Color *x5) +{ + { DrawCylinderWires(*x0, x1, x2, x3, x4, *x5); } +} +#endif + +static void _cffi_d_DrawEllipse(int x0, int x1, float x2, float x3, Color x4) +{ + DrawEllipse(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawEllipse(PyObject *self, PyObject *args) +{ + int x0; + int x1; + float x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawEllipse", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawEllipse(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawEllipse(int x0, int x1, float x2, float x3, Color *x4) +{ + { DrawEllipse(x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawEllipseLines(int x0, int x1, float x2, float x3, Color x4) +{ + DrawEllipseLines(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawEllipseLines(PyObject *self, PyObject *args) +{ + int x0; + int x1; + float x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawEllipseLines", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawEllipseLines(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawEllipseLines(int x0, int x1, float x2, float x3, Color *x4) +{ + { DrawEllipseLines(x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawFPS(int x0, int x1) +{ + DrawFPS(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawFPS(PyObject *self, PyObject *args) +{ + int x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "DrawFPS", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawFPS(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_DrawFPS _cffi_d_DrawFPS +#endif + +static void _cffi_d_DrawGizmo(Vector3 x0) +{ + DrawGizmo(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawGizmo(PyObject *self, PyObject *arg0) +{ + Vector3 x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawGizmo(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawGizmo(Vector3 *x0) +{ + { DrawGizmo(*x0); } +} +#endif + +static void _cffi_d_DrawGrid(int x0, float x1) +{ + DrawGrid(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawGrid(PyObject *self, PyObject *args) +{ + int x0; + float x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "DrawGrid", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawGrid(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_DrawGrid _cffi_d_DrawGrid +#endif + +static void _cffi_d_DrawLine(int x0, int x1, int x2, int x3, Color x4) +{ + DrawLine(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawLine(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawLine", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawLine(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawLine(int x0, int x1, int x2, int x3, Color *x4) +{ + { DrawLine(x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawLine3D(Vector3 x0, Vector3 x1, Color x2) +{ + DrawLine3D(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawLine3D(PyObject *self, PyObject *args) +{ + Vector3 x0; + Vector3 x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawLine3D", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawLine3D(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawLine3D(Vector3 *x0, Vector3 *x1, Color *x2) +{ + { DrawLine3D(*x0, *x1, *x2); } +} +#endif + +static void _cffi_d_DrawLineBezier(Vector2 x0, Vector2 x1, float x2, Color x3) +{ + DrawLineBezier(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawLineBezier(PyObject *self, PyObject *args) +{ + Vector2 x0; + Vector2 x1; + float x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawLineBezier", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawLineBezier(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawLineBezier(Vector2 *x0, Vector2 *x1, float x2, Color *x3) +{ + { DrawLineBezier(*x0, *x1, x2, *x3); } +} +#endif + +static void _cffi_d_DrawLineEx(Vector2 x0, Vector2 x1, float x2, Color x3) +{ + DrawLineEx(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawLineEx(PyObject *self, PyObject *args) +{ + Vector2 x0; + Vector2 x1; + float x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawLineEx", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawLineEx(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawLineEx(Vector2 *x0, Vector2 *x1, float x2, Color *x3) +{ + { DrawLineEx(*x0, *x1, x2, *x3); } +} +#endif + +static void _cffi_d_DrawLineStrip(Vector2 * x0, int x1, Color x2) +{ + DrawLineStrip(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawLineStrip(PyObject *self, PyObject *args) +{ + Vector2 * x0; + int x1; + Color x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawLineStrip", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(914), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Vector2 *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(914), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawLineStrip(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawLineStrip(Vector2 * x0, int x1, Color *x2) +{ + { DrawLineStrip(x0, x1, *x2); } +} +#endif + +static void _cffi_d_DrawLineV(Vector2 x0, Vector2 x1, Color x2) +{ + DrawLineV(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawLineV(PyObject *self, PyObject *args) +{ + Vector2 x0; + Vector2 x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawLineV", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawLineV(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawLineV(Vector2 *x0, Vector2 *x1, Color *x2) +{ + { DrawLineV(*x0, *x1, *x2); } +} +#endif + +static void _cffi_d_DrawModel(Model x0, Vector3 x1, float x2, Color x3) +{ + DrawModel(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawModel(PyObject *self, PyObject *args) +{ + Model x0; + Vector3 x1; + float x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawModel", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(214), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawModel(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawModel(Model *x0, Vector3 *x1, float x2, Color *x3) +{ + { DrawModel(*x0, *x1, x2, *x3); } +} +#endif + +static void _cffi_d_DrawModelEx(Model x0, Vector3 x1, Vector3 x2, float x3, Vector3 x4, Color x5) +{ + DrawModelEx(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawModelEx(PyObject *self, PyObject *args) +{ + Model x0; + Vector3 x1; + Vector3 x2; + float x3; + Vector3 x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawModelEx", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(214), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(28), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(28), arg4) < 0) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawModelEx(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawModelEx(Model *x0, Vector3 *x1, Vector3 *x2, float x3, Vector3 *x4, Color *x5) +{ + { DrawModelEx(*x0, *x1, *x2, x3, *x4, *x5); } +} +#endif + +static void _cffi_d_DrawModelWires(Model x0, Vector3 x1, float x2, Color x3) +{ + DrawModelWires(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawModelWires(PyObject *self, PyObject *args) +{ + Model x0; + Vector3 x1; + float x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawModelWires", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(214), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawModelWires(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawModelWires(Model *x0, Vector3 *x1, float x2, Color *x3) +{ + { DrawModelWires(*x0, *x1, x2, *x3); } +} +#endif + +static void _cffi_d_DrawModelWiresEx(Model x0, Vector3 x1, Vector3 x2, float x3, Vector3 x4, Color x5) +{ + DrawModelWiresEx(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawModelWiresEx(PyObject *self, PyObject *args) +{ + Model x0; + Vector3 x1; + Vector3 x2; + float x3; + Vector3 x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawModelWiresEx", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(214), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(28), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(28), arg4) < 0) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawModelWiresEx(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawModelWiresEx(Model *x0, Vector3 *x1, Vector3 *x2, float x3, Vector3 *x4, Color *x5) +{ + { DrawModelWiresEx(*x0, *x1, *x2, x3, *x4, *x5); } +} +#endif + +static void _cffi_d_DrawPixel(int x0, int x1, Color x2) +{ + DrawPixel(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawPixel(PyObject *self, PyObject *args) +{ + int x0; + int x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawPixel", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawPixel(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawPixel(int x0, int x1, Color *x2) +{ + { DrawPixel(x0, x1, *x2); } +} +#endif + +static void _cffi_d_DrawPixelV(Vector2 x0, Color x1) +{ + DrawPixelV(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawPixelV(PyObject *self, PyObject *args) +{ + Vector2 x0; + Color x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "DrawPixelV", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawPixelV(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawPixelV(Vector2 *x0, Color *x1) +{ + { DrawPixelV(*x0, *x1); } +} +#endif + +static void _cffi_d_DrawPlane(Vector3 x0, Vector2 x1, Color x2) +{ + DrawPlane(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawPlane(PyObject *self, PyObject *args) +{ + Vector3 x0; + Vector2 x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawPlane", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawPlane(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawPlane(Vector3 *x0, Vector2 *x1, Color *x2) +{ + { DrawPlane(*x0, *x1, *x2); } +} +#endif + +static void _cffi_d_DrawPoint3D(Vector3 x0, Color x1) +{ + DrawPoint3D(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawPoint3D(PyObject *self, PyObject *args) +{ + Vector3 x0; + Color x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "DrawPoint3D", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawPoint3D(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawPoint3D(Vector3 *x0, Color *x1) +{ + { DrawPoint3D(*x0, *x1); } +} +#endif + +static void _cffi_d_DrawPoly(Vector2 x0, int x1, float x2, float x3, Color x4) +{ + DrawPoly(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawPoly(PyObject *self, PyObject *args) +{ + Vector2 x0; + int x1; + float x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawPoly", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawPoly(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawPoly(Vector2 *x0, int x1, float x2, float x3, Color *x4) +{ + { DrawPoly(*x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawPolyLines(Vector2 x0, int x1, float x2, float x3, Color x4) +{ + DrawPolyLines(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawPolyLines(PyObject *self, PyObject *args) +{ + Vector2 x0; + int x1; + float x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawPolyLines", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawPolyLines(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawPolyLines(Vector2 *x0, int x1, float x2, float x3, Color *x4) +{ + { DrawPolyLines(*x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawRay(Ray x0, Color x1) +{ + DrawRay(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRay(PyObject *self, PyObject *args) +{ + Ray x0; + Color x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "DrawRay", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(213), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRay(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRay(Ray *x0, Color *x1) +{ + { DrawRay(*x0, *x1); } +} +#endif + +static void _cffi_d_DrawRectangle(int x0, int x1, int x2, int x3, Color x4) +{ + DrawRectangle(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangle(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawRectangle", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangle(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangle(int x0, int x1, int x2, int x3, Color *x4) +{ + { DrawRectangle(x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawRectangleGradientEx(Rectangle x0, Color x1, Color x2, Color x3, Color x4) +{ + DrawRectangleGradientEx(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangleGradientEx(PyObject *self, PyObject *args) +{ + Rectangle x0; + Color x1; + Color x2; + Color x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawRectangleGradientEx", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(77), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangleGradientEx(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangleGradientEx(Rectangle *x0, Color *x1, Color *x2, Color *x3, Color *x4) +{ + { DrawRectangleGradientEx(*x0, *x1, *x2, *x3, *x4); } +} +#endif + +static void _cffi_d_DrawRectangleGradientH(int x0, int x1, int x2, int x3, Color x4, Color x5) +{ + DrawRectangleGradientH(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangleGradientH(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int x3; + Color x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawRectangleGradientH", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangleGradientH(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangleGradientH(int x0, int x1, int x2, int x3, Color *x4, Color *x5) +{ + { DrawRectangleGradientH(x0, x1, x2, x3, *x4, *x5); } +} +#endif + +static void _cffi_d_DrawRectangleGradientV(int x0, int x1, int x2, int x3, Color x4, Color x5) +{ + DrawRectangleGradientV(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangleGradientV(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int x3; + Color x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawRectangleGradientV", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangleGradientV(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangleGradientV(int x0, int x1, int x2, int x3, Color *x4, Color *x5) +{ + { DrawRectangleGradientV(x0, x1, x2, x3, *x4, *x5); } +} +#endif + +static void _cffi_d_DrawRectangleLines(int x0, int x1, int x2, int x3, Color x4) +{ + DrawRectangleLines(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangleLines(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawRectangleLines", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangleLines(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangleLines(int x0, int x1, int x2, int x3, Color *x4) +{ + { DrawRectangleLines(x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawRectangleLinesEx(Rectangle x0, int x1, Color x2) +{ + DrawRectangleLinesEx(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangleLinesEx(PyObject *self, PyObject *args) +{ + Rectangle x0; + int x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawRectangleLinesEx", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(77), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangleLinesEx(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangleLinesEx(Rectangle *x0, int x1, Color *x2) +{ + { DrawRectangleLinesEx(*x0, x1, *x2); } +} +#endif + +static void _cffi_d_DrawRectanglePro(Rectangle x0, Vector2 x1, float x2, Color x3) +{ + DrawRectanglePro(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectanglePro(PyObject *self, PyObject *args) +{ + Rectangle x0; + Vector2 x1; + float x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawRectanglePro", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(77), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectanglePro(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectanglePro(Rectangle *x0, Vector2 *x1, float x2, Color *x3) +{ + { DrawRectanglePro(*x0, *x1, x2, *x3); } +} +#endif + +static void _cffi_d_DrawRectangleRec(Rectangle x0, Color x1) +{ + DrawRectangleRec(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangleRec(PyObject *self, PyObject *args) +{ + Rectangle x0; + Color x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "DrawRectangleRec", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(77), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangleRec(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangleRec(Rectangle *x0, Color *x1) +{ + { DrawRectangleRec(*x0, *x1); } +} +#endif + +static void _cffi_d_DrawRectangleRounded(Rectangle x0, float x1, int x2, Color x3) +{ + DrawRectangleRounded(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangleRounded(PyObject *self, PyObject *args) +{ + Rectangle x0; + float x1; + int x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawRectangleRounded", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(77), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangleRounded(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangleRounded(Rectangle *x0, float x1, int x2, Color *x3) +{ + { DrawRectangleRounded(*x0, x1, x2, *x3); } +} +#endif + +static void _cffi_d_DrawRectangleRoundedLines(Rectangle x0, float x1, int x2, int x3, Color x4) +{ + DrawRectangleRoundedLines(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangleRoundedLines(PyObject *self, PyObject *args) +{ + Rectangle x0; + float x1; + int x2; + int x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawRectangleRoundedLines", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(77), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangleRoundedLines(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangleRoundedLines(Rectangle *x0, float x1, int x2, int x3, Color *x4) +{ + { DrawRectangleRoundedLines(*x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawRectangleV(Vector2 x0, Vector2 x1, Color x2) +{ + DrawRectangleV(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRectangleV(PyObject *self, PyObject *args) +{ + Vector2 x0; + Vector2 x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawRectangleV", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRectangleV(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRectangleV(Vector2 *x0, Vector2 *x1, Color *x2) +{ + { DrawRectangleV(*x0, *x1, *x2); } +} +#endif + +static void _cffi_d_DrawRing(Vector2 x0, float x1, float x2, int x3, int x4, int x5, Color x6) +{ + DrawRing(x0, x1, x2, x3, x4, x5, x6); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRing(PyObject *self, PyObject *args) +{ + Vector2 x0; + float x1; + float x2; + int x3; + int x4; + int x5; + Color x6; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + PyObject *arg6; + + if (!PyArg_UnpackTuple(args, "DrawRing", 7, 7, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5, &arg6)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + x5 = _cffi_to_c_int(arg5, int); + if (x5 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x6, _cffi_type(24), arg6) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRing(x0, x1, x2, x3, x4, x5, x6); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRing(Vector2 *x0, float x1, float x2, int x3, int x4, int x5, Color *x6) +{ + { DrawRing(*x0, x1, x2, x3, x4, x5, *x6); } +} +#endif + +static void _cffi_d_DrawRingLines(Vector2 x0, float x1, float x2, int x3, int x4, int x5, Color x6) +{ + DrawRingLines(x0, x1, x2, x3, x4, x5, x6); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawRingLines(PyObject *self, PyObject *args) +{ + Vector2 x0; + float x1; + float x2; + int x3; + int x4; + int x5; + Color x6; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + PyObject *arg6; + + if (!PyArg_UnpackTuple(args, "DrawRingLines", 7, 7, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5, &arg6)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + x5 = _cffi_to_c_int(arg5, int); + if (x5 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x6, _cffi_type(24), arg6) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawRingLines(x0, x1, x2, x3, x4, x5, x6); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawRingLines(Vector2 *x0, float x1, float x2, int x3, int x4, int x5, Color *x6) +{ + { DrawRingLines(*x0, x1, x2, x3, x4, x5, *x6); } +} +#endif + +static void _cffi_d_DrawSphere(Vector3 x0, float x1, Color x2) +{ + DrawSphere(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawSphere(PyObject *self, PyObject *args) +{ + Vector3 x0; + float x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawSphere", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawSphere(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawSphere(Vector3 *x0, float x1, Color *x2) +{ + { DrawSphere(*x0, x1, *x2); } +} +#endif + +static void _cffi_d_DrawSphereEx(Vector3 x0, float x1, int x2, int x3, Color x4) +{ + DrawSphereEx(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawSphereEx(PyObject *self, PyObject *args) +{ + Vector3 x0; + float x1; + int x2; + int x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawSphereEx", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawSphereEx(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawSphereEx(Vector3 *x0, float x1, int x2, int x3, Color *x4) +{ + { DrawSphereEx(*x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawSphereWires(Vector3 x0, float x1, int x2, int x3, Color x4) +{ + DrawSphereWires(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawSphereWires(PyObject *self, PyObject *args) +{ + Vector3 x0; + float x1; + int x2; + int x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawSphereWires", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawSphereWires(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawSphereWires(Vector3 *x0, float x1, int x2, int x3, Color *x4) +{ + { DrawSphereWires(*x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawText(char const * x0, int x1, int x2, int x3, Color x4) +{ + DrawText(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawText(PyObject *self, PyObject *args) +{ + char const * x0; + int x1; + int x2; + int x3; + Color x4; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawText", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawText(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawText(char const * x0, int x1, int x2, int x3, Color *x4) +{ + { DrawText(x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawTextCodepoint(Font x0, int x1, Vector2 x2, float x3, Color x4) +{ + DrawTextCodepoint(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTextCodepoint(PyObject *self, PyObject *args) +{ + Font x0; + int x1; + Vector2 x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawTextCodepoint", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(66), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(209), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTextCodepoint(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTextCodepoint(Font *x0, int x1, Vector2 *x2, float x3, Color *x4) +{ + { DrawTextCodepoint(*x0, x1, *x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawTextEx(Font x0, char const * x1, Vector2 x2, float x3, float x4, Color x5) +{ + DrawTextEx(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTextEx(PyObject *self, PyObject *args) +{ + Font x0; + char const * x1; + Vector2 x2; + float x3; + float x4; + Color x5; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawTextEx", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(66), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x2, _cffi_type(209), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + x4 = (float)_cffi_to_c_float(arg4); + if (x4 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTextEx(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTextEx(Font *x0, char const * x1, Vector2 *x2, float x3, float x4, Color *x5) +{ + { DrawTextEx(*x0, x1, *x2, x3, x4, *x5); } +} +#endif + +static void _cffi_d_DrawTextRec(Font x0, char const * x1, Rectangle x2, float x3, float x4, int x5, Color x6) +{ + DrawTextRec(x0, x1, x2, x3, x4, x5, x6); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTextRec(PyObject *self, PyObject *args) +{ + Font x0; + char const * x1; + Rectangle x2; + float x3; + float x4; + int x5; + Color x6; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + PyObject *arg6; + + if (!PyArg_UnpackTuple(args, "DrawTextRec", 7, 7, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5, &arg6)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(66), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x2, _cffi_type(77), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + x4 = (float)_cffi_to_c_float(arg4); + if (x4 == (float)-1 && PyErr_Occurred()) + return NULL; + + x5 = _cffi_to_c_int(arg5, int); + if (x5 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x6, _cffi_type(24), arg6) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTextRec(x0, x1, x2, x3, x4, x5, x6); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTextRec(Font *x0, char const * x1, Rectangle *x2, float x3, float x4, int x5, Color *x6) +{ + { DrawTextRec(*x0, x1, *x2, x3, x4, x5, *x6); } +} +#endif + +static void _cffi_d_DrawTextRecEx(Font x0, char const * x1, Rectangle x2, float x3, float x4, int x5, Color x6, int x7, int x8, Color x9, Color x10) +{ + DrawTextRecEx(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTextRecEx(PyObject *self, PyObject *args) +{ + Font x0; + char const * x1; + Rectangle x2; + float x3; + float x4; + int x5; + Color x6; + int x7; + int x8; + Color x9; + Color x10; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + PyObject *arg6; + PyObject *arg7; + PyObject *arg8; + PyObject *arg9; + PyObject *arg10; + + if (!PyArg_UnpackTuple(args, "DrawTextRecEx", 11, 11, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5, &arg6, &arg7, &arg8, &arg9, &arg10)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(66), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x2, _cffi_type(77), arg2) < 0) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + x4 = (float)_cffi_to_c_float(arg4); + if (x4 == (float)-1 && PyErr_Occurred()) + return NULL; + + x5 = _cffi_to_c_int(arg5, int); + if (x5 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x6, _cffi_type(24), arg6) < 0) + return NULL; + + x7 = _cffi_to_c_int(arg7, int); + if (x7 == (int)-1 && PyErr_Occurred()) + return NULL; + + x8 = _cffi_to_c_int(arg8, int); + if (x8 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x9, _cffi_type(24), arg9) < 0) + return NULL; + + if (_cffi_to_c((char *)&x10, _cffi_type(24), arg10) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTextRecEx(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTextRecEx(Font *x0, char const * x1, Rectangle *x2, float x3, float x4, int x5, Color *x6, int x7, int x8, Color *x9, Color *x10) +{ + { DrawTextRecEx(*x0, x1, *x2, x3, x4, x5, *x6, x7, x8, *x9, *x10); } +} +#endif + +static void _cffi_d_DrawTexture(Texture2D x0, int x1, int x2, Color x3) +{ + DrawTexture(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTexture(PyObject *self, PyObject *args) +{ + Texture2D x0; + int x1; + int x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawTexture", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTexture(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTexture(Texture2D *x0, int x1, int x2, Color *x3) +{ + { DrawTexture(*x0, x1, x2, *x3); } +} +#endif + +static void _cffi_d_DrawTextureEx(Texture2D x0, Vector2 x1, float x2, float x3, Color x4) +{ + DrawTextureEx(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTextureEx(PyObject *self, PyObject *args) +{ + Texture2D x0; + Vector2 x1; + float x2; + float x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawTextureEx", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTextureEx(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTextureEx(Texture2D *x0, Vector2 *x1, float x2, float x3, Color *x4) +{ + { DrawTextureEx(*x0, *x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_DrawTextureNPatch(Texture2D x0, NPatchInfo x1, Rectangle x2, Vector2 x3, float x4, Color x5) +{ + DrawTextureNPatch(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTextureNPatch(PyObject *self, PyObject *args) +{ + Texture2D x0; + NPatchInfo x1; + Rectangle x2; + Vector2 x3; + float x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawTextureNPatch", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(848), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(77), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(209), arg3) < 0) + return NULL; + + x4 = (float)_cffi_to_c_float(arg4); + if (x4 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTextureNPatch(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTextureNPatch(Texture2D *x0, NPatchInfo *x1, Rectangle *x2, Vector2 *x3, float x4, Color *x5) +{ + { DrawTextureNPatch(*x0, *x1, *x2, *x3, x4, *x5); } +} +#endif + +static void _cffi_d_DrawTexturePro(Texture2D x0, Rectangle x1, Rectangle x2, Vector2 x3, float x4, Color x5) +{ + DrawTexturePro(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTexturePro(PyObject *self, PyObject *args) +{ + Texture2D x0; + Rectangle x1; + Rectangle x2; + Vector2 x3; + float x4; + Color x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "DrawTexturePro", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(77), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(209), arg3) < 0) + return NULL; + + x4 = (float)_cffi_to_c_float(arg4); + if (x4 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTexturePro(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTexturePro(Texture2D *x0, Rectangle *x1, Rectangle *x2, Vector2 *x3, float x4, Color *x5) +{ + { DrawTexturePro(*x0, *x1, *x2, *x3, x4, *x5); } +} +#endif + +static void _cffi_d_DrawTextureQuad(Texture2D x0, Vector2 x1, Vector2 x2, Rectangle x3, Color x4) +{ + DrawTextureQuad(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTextureQuad(PyObject *self, PyObject *args) +{ + Texture2D x0; + Vector2 x1; + Vector2 x2; + Rectangle x3; + Color x4; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "DrawTextureQuad", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(209), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(77), arg3) < 0) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTextureQuad(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTextureQuad(Texture2D *x0, Vector2 *x1, Vector2 *x2, Rectangle *x3, Color *x4) +{ + { DrawTextureQuad(*x0, *x1, *x2, *x3, *x4); } +} +#endif + +static void _cffi_d_DrawTextureRec(Texture2D x0, Rectangle x1, Vector2 x2, Color x3) +{ + DrawTextureRec(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTextureRec(PyObject *self, PyObject *args) +{ + Texture2D x0; + Rectangle x1; + Vector2 x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawTextureRec", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(209), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTextureRec(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTextureRec(Texture2D *x0, Rectangle *x1, Vector2 *x2, Color *x3) +{ + { DrawTextureRec(*x0, *x1, *x2, *x3); } +} +#endif + +static void _cffi_d_DrawTextureV(Texture2D x0, Vector2 x1, Color x2) +{ + DrawTextureV(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTextureV(PyObject *self, PyObject *args) +{ + Texture2D x0; + Vector2 x1; + Color x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawTextureV", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTextureV(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTextureV(Texture2D *x0, Vector2 *x1, Color *x2) +{ + { DrawTextureV(*x0, *x1, *x2); } +} +#endif + +static void _cffi_d_DrawTriangle(Vector2 x0, Vector2 x1, Vector2 x2, Color x3) +{ + DrawTriangle(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTriangle(PyObject *self, PyObject *args) +{ + Vector2 x0; + Vector2 x1; + Vector2 x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawTriangle", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(209), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTriangle(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTriangle(Vector2 *x0, Vector2 *x1, Vector2 *x2, Color *x3) +{ + { DrawTriangle(*x0, *x1, *x2, *x3); } +} +#endif + +static void _cffi_d_DrawTriangleFan(Vector2 * x0, int x1, Color x2) +{ + DrawTriangleFan(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTriangleFan(PyObject *self, PyObject *args) +{ + Vector2 * x0; + int x1; + Color x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawTriangleFan", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(914), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Vector2 *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(914), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTriangleFan(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTriangleFan(Vector2 * x0, int x1, Color *x2) +{ + { DrawTriangleFan(x0, x1, *x2); } +} +#endif + +static void _cffi_d_DrawTriangleLines(Vector2 x0, Vector2 x1, Vector2 x2, Color x3) +{ + DrawTriangleLines(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTriangleLines(PyObject *self, PyObject *args) +{ + Vector2 x0; + Vector2 x1; + Vector2 x2; + Color x3; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "DrawTriangleLines", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(209), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTriangleLines(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTriangleLines(Vector2 *x0, Vector2 *x1, Vector2 *x2, Color *x3) +{ + { DrawTriangleLines(*x0, *x1, *x2, *x3); } +} +#endif + +static void _cffi_d_DrawTriangleStrip(Vector2 * x0, int x1, Color x2) +{ + DrawTriangleStrip(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_DrawTriangleStrip(PyObject *self, PyObject *args) +{ + Vector2 * x0; + int x1; + Color x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "DrawTriangleStrip", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(914), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Vector2 *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(914), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { DrawTriangleStrip(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_DrawTriangleStrip(Vector2 * x0, int x1, Color *x2) +{ + { DrawTriangleStrip(x0, x1, *x2); } +} +#endif + +static void _cffi_d_EnableCursor(void) +{ + EnableCursor(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_EnableCursor(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { EnableCursor(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_EnableCursor _cffi_d_EnableCursor +#endif + +static void _cffi_d_EndBlendMode(void) +{ + EndBlendMode(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_EndBlendMode(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { EndBlendMode(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_EndBlendMode _cffi_d_EndBlendMode +#endif + +static void _cffi_d_EndDrawing(void) +{ + EndDrawing(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_EndDrawing(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { EndDrawing(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_EndDrawing _cffi_d_EndDrawing +#endif + +static void _cffi_d_EndMode2D(void) +{ + EndMode2D(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_EndMode2D(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { EndMode2D(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_EndMode2D _cffi_d_EndMode2D +#endif + +static void _cffi_d_EndMode3D(void) +{ + EndMode3D(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_EndMode3D(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { EndMode3D(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_EndMode3D _cffi_d_EndMode3D +#endif + +static void _cffi_d_EndScissorMode(void) +{ + EndScissorMode(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_EndScissorMode(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { EndScissorMode(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_EndScissorMode _cffi_d_EndScissorMode +#endif + +static void _cffi_d_EndShaderMode(void) +{ + EndShaderMode(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_EndShaderMode(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { EndShaderMode(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_EndShaderMode _cffi_d_EndShaderMode +#endif + +static void _cffi_d_EndTextureMode(void) +{ + EndTextureMode(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_EndTextureMode(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { EndTextureMode(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_EndTextureMode _cffi_d_EndTextureMode +#endif + +static void _cffi_d_EndVrDrawing(void) +{ + EndVrDrawing(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_EndVrDrawing(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { EndVrDrawing(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_EndVrDrawing _cffi_d_EndVrDrawing +#endif + +static void _cffi_d_ExportImage(Image x0, char const * x1) +{ + ExportImage(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ExportImage(PyObject *self, PyObject *args) +{ + Image x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ExportImage", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ExportImage(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ExportImage(Image *x0, char const * x1) +{ + { ExportImage(*x0, x1); } +} +#endif + +static void _cffi_d_ExportImageAsCode(Image x0, char const * x1) +{ + ExportImageAsCode(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ExportImageAsCode(PyObject *self, PyObject *args) +{ + Image x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ExportImageAsCode", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ExportImageAsCode(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ExportImageAsCode(Image *x0, char const * x1) +{ + { ExportImageAsCode(*x0, x1); } +} +#endif + +static void _cffi_d_ExportMesh(Mesh x0, char const * x1) +{ + ExportMesh(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ExportMesh(PyObject *self, PyObject *args) +{ + Mesh x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ExportMesh", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(6), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ExportMesh(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ExportMesh(Mesh *x0, char const * x1) +{ + { ExportMesh(*x0, x1); } +} +#endif + +static void _cffi_d_ExportWave(Wave x0, char const * x1) +{ + ExportWave(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ExportWave(PyObject *self, PyObject *args) +{ + Wave x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ExportWave", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(245), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ExportWave(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ExportWave(Wave *x0, char const * x1) +{ + { ExportWave(*x0, x1); } +} +#endif + +static void _cffi_d_ExportWaveAsCode(Wave x0, char const * x1) +{ + ExportWaveAsCode(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ExportWaveAsCode(PyObject *self, PyObject *args) +{ + Wave x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ExportWaveAsCode", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(245), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ExportWaveAsCode(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ExportWaveAsCode(Wave *x0, char const * x1) +{ + { ExportWaveAsCode(*x0, x1); } +} +#endif + +static Color _cffi_d_Fade(Color x0, float x1) +{ + return Fade(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_Fade(PyObject *self, PyObject *args) +{ + Color x0; + float x1; + Color result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "Fade", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(24), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = Fade(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(24)); + return pyresult; +} +#else +static void _cffi_f_Fade(Color *result, Color *x0, float x1) +{ + { *result = Fade(*x0, x1); } +} +#endif + +static int _cffi_d_FileExists(char const * x0) +{ + return FileExists(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_FileExists(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = FileExists(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_FileExists _cffi_d_FileExists +#endif + +static Image _cffi_d_GenImageCellular(int x0, int x1, int x2) +{ + return GenImageCellular(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenImageCellular(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenImageCellular", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenImageCellular(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GenImageCellular(Image *result, int x0, int x1, int x2) +{ + { *result = GenImageCellular(x0, x1, x2); } +} +#endif + +static Image _cffi_d_GenImageChecked(int x0, int x1, int x2, int x3, Color x4, Color x5) +{ + return GenImageChecked(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenImageChecked(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int x3; + Color x4; + Color x5; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "GenImageChecked", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenImageChecked(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GenImageChecked(Image *result, int x0, int x1, int x2, int x3, Color *x4, Color *x5) +{ + { *result = GenImageChecked(x0, x1, x2, x3, *x4, *x5); } +} +#endif + +static Image _cffi_d_GenImageColor(int x0, int x1, Color x2) +{ + return GenImageColor(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenImageColor(PyObject *self, PyObject *args) +{ + int x0; + int x1; + Color x2; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenImageColor", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenImageColor(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GenImageColor(Image *result, int x0, int x1, Color *x2) +{ + { *result = GenImageColor(x0, x1, *x2); } +} +#endif + +static Image _cffi_d_GenImageFontAtlas(CharInfo const * x0, Rectangle * * x1, int x2, int x3, int x4, int x5) +{ + return GenImageFontAtlas(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenImageFontAtlas(PyObject *self, PyObject *args) +{ + CharInfo const * x0; + Rectangle * * x1; + int x2; + int x3; + int x4; + int x5; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "GenImageFontAtlas", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(53), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (CharInfo const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(53), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(54), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (Rectangle * *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(54), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + x5 = _cffi_to_c_int(arg5, int); + if (x5 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenImageFontAtlas(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_GenImageFontAtlas(Image *result, CharInfo const * x0, Rectangle * * x1, int x2, int x3, int x4, int x5) +{ + { *result = GenImageFontAtlas(x0, x1, x2, x3, x4, x5); } +} +#endif + +static Image _cffi_d_GenImageGradientH(int x0, int x1, Color x2, Color x3) +{ + return GenImageGradientH(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenImageGradientH(PyObject *self, PyObject *args) +{ + int x0; + int x1; + Color x2; + Color x3; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "GenImageGradientH", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenImageGradientH(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GenImageGradientH(Image *result, int x0, int x1, Color *x2, Color *x3) +{ + { *result = GenImageGradientH(x0, x1, *x2, *x3); } +} +#endif + +static Image _cffi_d_GenImageGradientRadial(int x0, int x1, float x2, Color x3, Color x4) +{ + return GenImageGradientRadial(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenImageGradientRadial(PyObject *self, PyObject *args) +{ + int x0; + int x1; + float x2; + Color x3; + Color x4; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "GenImageGradientRadial", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenImageGradientRadial(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GenImageGradientRadial(Image *result, int x0, int x1, float x2, Color *x3, Color *x4) +{ + { *result = GenImageGradientRadial(x0, x1, x2, *x3, *x4); } +} +#endif + +static Image _cffi_d_GenImageGradientV(int x0, int x1, Color x2, Color x3) +{ + return GenImageGradientV(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenImageGradientV(PyObject *self, PyObject *args) +{ + int x0; + int x1; + Color x2; + Color x3; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "GenImageGradientV", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenImageGradientV(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GenImageGradientV(Image *result, int x0, int x1, Color *x2, Color *x3) +{ + { *result = GenImageGradientV(x0, x1, *x2, *x3); } +} +#endif + +static Image _cffi_d_GenImagePerlinNoise(int x0, int x1, int x2, int x3, float x4) +{ + return GenImagePerlinNoise(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenImagePerlinNoise(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int x3; + float x4; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "GenImagePerlinNoise", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = (float)_cffi_to_c_float(arg4); + if (x4 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenImagePerlinNoise(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GenImagePerlinNoise(Image *result, int x0, int x1, int x2, int x3, float x4) +{ + { *result = GenImagePerlinNoise(x0, x1, x2, x3, x4); } +} +#endif + +static Image _cffi_d_GenImageWhiteNoise(int x0, int x1, float x2) +{ + return GenImageWhiteNoise(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenImageWhiteNoise(PyObject *self, PyObject *args) +{ + int x0; + int x1; + float x2; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenImageWhiteNoise", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenImageWhiteNoise(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GenImageWhiteNoise(Image *result, int x0, int x1, float x2) +{ + { *result = GenImageWhiteNoise(x0, x1, x2); } +} +#endif + +static Mesh _cffi_d_GenMeshCube(float x0, float x1, float x2) +{ + return GenMeshCube(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshCube(PyObject *self, PyObject *args) +{ + float x0; + float x1; + float x2; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenMeshCube", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = (float)_cffi_to_c_float(arg0); + if (x0 == (float)-1 && PyErr_Occurred()) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshCube(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshCube(Mesh *result, float x0, float x1, float x2) +{ + { *result = GenMeshCube(x0, x1, x2); } +} +#endif + +static Mesh _cffi_d_GenMeshCubicmap(Image x0, Vector3 x1) +{ + return GenMeshCubicmap(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshCubicmap(PyObject *self, PyObject *args) +{ + Image x0; + Vector3 x1; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GenMeshCubicmap", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshCubicmap(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshCubicmap(Mesh *result, Image *x0, Vector3 *x1) +{ + { *result = GenMeshCubicmap(*x0, *x1); } +} +#endif + +static Mesh _cffi_d_GenMeshCylinder(float x0, float x1, int x2) +{ + return GenMeshCylinder(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshCylinder(PyObject *self, PyObject *args) +{ + float x0; + float x1; + int x2; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenMeshCylinder", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = (float)_cffi_to_c_float(arg0); + if (x0 == (float)-1 && PyErr_Occurred()) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshCylinder(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshCylinder(Mesh *result, float x0, float x1, int x2) +{ + { *result = GenMeshCylinder(x0, x1, x2); } +} +#endif + +static Mesh _cffi_d_GenMeshHeightmap(Image x0, Vector3 x1) +{ + return GenMeshHeightmap(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshHeightmap(PyObject *self, PyObject *args) +{ + Image x0; + Vector3 x1; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GenMeshHeightmap", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshHeightmap(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshHeightmap(Mesh *result, Image *x0, Vector3 *x1) +{ + { *result = GenMeshHeightmap(*x0, *x1); } +} +#endif + +static Mesh _cffi_d_GenMeshHemiSphere(float x0, int x1, int x2) +{ + return GenMeshHemiSphere(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshHemiSphere(PyObject *self, PyObject *args) +{ + float x0; + int x1; + int x2; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenMeshHemiSphere", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = (float)_cffi_to_c_float(arg0); + if (x0 == (float)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshHemiSphere(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshHemiSphere(Mesh *result, float x0, int x1, int x2) +{ + { *result = GenMeshHemiSphere(x0, x1, x2); } +} +#endif + +static Mesh _cffi_d_GenMeshKnot(float x0, float x1, int x2, int x3) +{ + return GenMeshKnot(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshKnot(PyObject *self, PyObject *args) +{ + float x0; + float x1; + int x2; + int x3; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "GenMeshKnot", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + x0 = (float)_cffi_to_c_float(arg0); + if (x0 == (float)-1 && PyErr_Occurred()) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshKnot(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshKnot(Mesh *result, float x0, float x1, int x2, int x3) +{ + { *result = GenMeshKnot(x0, x1, x2, x3); } +} +#endif + +static Mesh _cffi_d_GenMeshPlane(float x0, float x1, int x2, int x3) +{ + return GenMeshPlane(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshPlane(PyObject *self, PyObject *args) +{ + float x0; + float x1; + int x2; + int x3; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "GenMeshPlane", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + x0 = (float)_cffi_to_c_float(arg0); + if (x0 == (float)-1 && PyErr_Occurred()) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshPlane(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshPlane(Mesh *result, float x0, float x1, int x2, int x3) +{ + { *result = GenMeshPlane(x0, x1, x2, x3); } +} +#endif + +static Mesh _cffi_d_GenMeshPoly(int x0, float x1) +{ + return GenMeshPoly(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshPoly(PyObject *self, PyObject *args) +{ + int x0; + float x1; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GenMeshPoly", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshPoly(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshPoly(Mesh *result, int x0, float x1) +{ + { *result = GenMeshPoly(x0, x1); } +} +#endif + +static Mesh _cffi_d_GenMeshSphere(float x0, int x1, int x2) +{ + return GenMeshSphere(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshSphere(PyObject *self, PyObject *args) +{ + float x0; + int x1; + int x2; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenMeshSphere", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = (float)_cffi_to_c_float(arg0); + if (x0 == (float)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshSphere(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshSphere(Mesh *result, float x0, int x1, int x2) +{ + { *result = GenMeshSphere(x0, x1, x2); } +} +#endif + +static Mesh _cffi_d_GenMeshTorus(float x0, float x1, int x2, int x3) +{ + return GenMeshTorus(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenMeshTorus(PyObject *self, PyObject *args) +{ + float x0; + float x1; + int x2; + int x3; + Mesh result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "GenMeshTorus", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + x0 = (float)_cffi_to_c_float(arg0); + if (x0 == (float)-1 && PyErr_Occurred()) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenMeshTorus(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(6)); + return pyresult; +} +#else +static void _cffi_f_GenMeshTorus(Mesh *result, float x0, float x1, int x2, int x3) +{ + { *result = GenMeshTorus(x0, x1, x2, x3); } +} +#endif + +static Texture2D _cffi_d_GenTextureBRDF(Shader x0, int x1) +{ + return GenTextureBRDF(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenTextureBRDF(PyObject *self, PyObject *args) +{ + Shader x0; + int x1; + Texture2D result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GenTextureBRDF", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenTextureBRDF(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(80)); + return pyresult; +} +#else +static void _cffi_f_GenTextureBRDF(Texture2D *result, Shader *x0, int x1) +{ + { *result = GenTextureBRDF(*x0, x1); } +} +#endif + +static Texture2D _cffi_d_GenTextureCubemap(Shader x0, Texture2D x1, int x2) +{ + return GenTextureCubemap(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenTextureCubemap(PyObject *self, PyObject *args) +{ + Shader x0; + Texture2D x1; + int x2; + Texture2D result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenTextureCubemap", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(80), arg1) < 0) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenTextureCubemap(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(80)); + return pyresult; +} +#else +static void _cffi_f_GenTextureCubemap(Texture2D *result, Shader *x0, Texture2D *x1, int x2) +{ + { *result = GenTextureCubemap(*x0, *x1, x2); } +} +#endif + +static Texture2D _cffi_d_GenTextureIrradiance(Shader x0, Texture2D x1, int x2) +{ + return GenTextureIrradiance(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenTextureIrradiance(PyObject *self, PyObject *args) +{ + Shader x0; + Texture2D x1; + int x2; + Texture2D result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenTextureIrradiance", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(80), arg1) < 0) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenTextureIrradiance(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(80)); + return pyresult; +} +#else +static void _cffi_f_GenTextureIrradiance(Texture2D *result, Shader *x0, Texture2D *x1, int x2) +{ + { *result = GenTextureIrradiance(*x0, *x1, x2); } +} +#endif + +static void _cffi_d_GenTextureMipmaps(Texture2D * x0) +{ + GenTextureMipmaps(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenTextureMipmaps(PyObject *self, PyObject *arg0) +{ + Texture2D * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(841), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Texture2D *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(841), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { GenTextureMipmaps(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_GenTextureMipmaps _cffi_d_GenTextureMipmaps +#endif + +static Texture2D _cffi_d_GenTexturePrefilter(Shader x0, Texture2D x1, int x2) +{ + return GenTexturePrefilter(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GenTexturePrefilter(PyObject *self, PyObject *args) +{ + Shader x0; + Texture2D x1; + int x2; + Texture2D result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GenTexturePrefilter", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(80), arg1) < 0) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GenTexturePrefilter(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(80)); + return pyresult; +} +#else +static void _cffi_f_GenTexturePrefilter(Texture2D *result, Shader *x0, Texture2D *x1, int x2) +{ + { *result = GenTexturePrefilter(*x0, *x1, x2); } +} +#endif + +static Matrix _cffi_d_GetCameraMatrix(Camera3D x0) +{ + return GetCameraMatrix(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetCameraMatrix(PyObject *self, PyObject *arg0) +{ + Camera3D x0; + Matrix result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(158), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetCameraMatrix(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(707)); + return pyresult; +} +#else +static void _cffi_f_GetCameraMatrix(Matrix *result, Camera3D *x0) +{ + { *result = GetCameraMatrix(*x0); } +} +#endif + +static Matrix _cffi_d_GetCameraMatrix2D(Camera2D x0) +{ + return GetCameraMatrix2D(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetCameraMatrix2D(PyObject *self, PyObject *arg0) +{ + Camera2D x0; + Matrix result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(155), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetCameraMatrix2D(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(707)); + return pyresult; +} +#else +static void _cffi_f_GetCameraMatrix2D(Matrix *result, Camera2D *x0) +{ + { *result = GetCameraMatrix2D(*x0); } +} +#endif + +static char const * _cffi_d_GetClipboardText(void) +{ + return GetClipboardText(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetClipboardText(PyObject *self, PyObject *noarg) +{ + char const * result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetClipboardText(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + return pyresult; +} +#else +# define _cffi_f_GetClipboardText _cffi_d_GetClipboardText +#endif + +static int * _cffi_d_GetCodepoints(char const * x0, int * x1) +{ + return GetCodepoints(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetCodepoints(PyObject *self, PyObject *args) +{ + char const * x0; + int * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetCodepoints", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetCodepoints(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(11)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetCodepoints _cffi_d_GetCodepoints +#endif + +static int _cffi_d_GetCodepointsCount(char const * x0) +{ + return GetCodepointsCount(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetCodepointsCount(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetCodepointsCount(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetCodepointsCount _cffi_d_GetCodepointsCount +#endif + +static RayHitInfo _cffi_d_GetCollisionRayGround(Ray x0, float x1) +{ + return GetCollisionRayGround(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetCollisionRayGround(PyObject *self, PyObject *args) +{ + Ray x0; + float x1; + RayHitInfo result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetCollisionRayGround", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(213), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetCollisionRayGround(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(1165)); + return pyresult; +} +#else +static void _cffi_f_GetCollisionRayGround(RayHitInfo *result, Ray *x0, float x1) +{ + { *result = GetCollisionRayGround(*x0, x1); } +} +#endif + +static RayHitInfo _cffi_d_GetCollisionRayModel(Ray x0, Model x1) +{ + return GetCollisionRayModel(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetCollisionRayModel(PyObject *self, PyObject *args) +{ + Ray x0; + Model x1; + RayHitInfo result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetCollisionRayModel", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(213), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(214), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetCollisionRayModel(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(1165)); + return pyresult; +} +#else +static void _cffi_f_GetCollisionRayModel(RayHitInfo *result, Ray *x0, Model *x1) +{ + { *result = GetCollisionRayModel(*x0, *x1); } +} +#endif + +static RayHitInfo _cffi_d_GetCollisionRayTriangle(Ray x0, Vector3 x1, Vector3 x2, Vector3 x3) +{ + return GetCollisionRayTriangle(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetCollisionRayTriangle(PyObject *self, PyObject *args) +{ + Ray x0; + Vector3 x1; + Vector3 x2; + Vector3 x3; + RayHitInfo result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "GetCollisionRayTriangle", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(213), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(28), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(28), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(28), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetCollisionRayTriangle(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(1165)); + return pyresult; +} +#else +static void _cffi_f_GetCollisionRayTriangle(RayHitInfo *result, Ray *x0, Vector3 *x1, Vector3 *x2, Vector3 *x3) +{ + { *result = GetCollisionRayTriangle(*x0, *x1, *x2, *x3); } +} +#endif + +static Rectangle _cffi_d_GetCollisionRec(Rectangle x0, Rectangle x1) +{ + return GetCollisionRec(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetCollisionRec(PyObject *self, PyObject *args) +{ + Rectangle x0; + Rectangle x1; + Rectangle result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetCollisionRec", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(77), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetCollisionRec(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(77)); + return pyresult; +} +#else +static void _cffi_f_GetCollisionRec(Rectangle *result, Rectangle *x0, Rectangle *x1) +{ + { *result = GetCollisionRec(*x0, *x1); } +} +#endif + +static Color _cffi_d_GetColor(int x0) +{ + return GetColor(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetColor(PyObject *self, PyObject *arg0) +{ + int x0; + Color result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetColor(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(24)); + return pyresult; +} +#else +static void _cffi_f_GetColor(Color *result, int x0) +{ + { *result = GetColor(x0); } +} +#endif + +static char * * _cffi_d_GetDirectoryFiles(char const * x0, int * x1) +{ + return GetDirectoryFiles(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetDirectoryFiles(PyObject *self, PyObject *args) +{ + char const * x0; + int * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char * * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetDirectoryFiles", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetDirectoryFiles(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(1176)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetDirectoryFiles _cffi_d_GetDirectoryFiles +#endif + +static char const * _cffi_d_GetDirectoryPath(char const * x0) +{ + return GetDirectoryPath(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetDirectoryPath(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetDirectoryPath(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetDirectoryPath _cffi_d_GetDirectoryPath +#endif + +static char * * _cffi_d_GetDroppedFiles(int * x0) +{ + return GetDroppedFiles(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetDroppedFiles(PyObject *self, PyObject *arg0) +{ + int * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char * * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetDroppedFiles(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(1176)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetDroppedFiles _cffi_d_GetDroppedFiles +#endif + +static char const * _cffi_d_GetExtension(char const * x0) +{ + return GetExtension(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetExtension(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetExtension(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetExtension _cffi_d_GetExtension +#endif + +static int _cffi_d_GetFPS(void) +{ + return GetFPS(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetFPS(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetFPS(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetFPS _cffi_d_GetFPS +#endif + +static long _cffi_d_GetFileModTime(char const * x0) +{ + return GetFileModTime(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetFileModTime(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + long result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetFileModTime(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, long); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetFileModTime _cffi_d_GetFileModTime +#endif + +static char const * _cffi_d_GetFileName(char const * x0) +{ + return GetFileName(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetFileName(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetFileName(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetFileName _cffi_d_GetFileName +#endif + +static char const * _cffi_d_GetFileNameWithoutExt(char const * x0) +{ + return GetFileNameWithoutExt(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetFileNameWithoutExt(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetFileNameWithoutExt(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetFileNameWithoutExt _cffi_d_GetFileNameWithoutExt +#endif + +static Font _cffi_d_GetFontDefault(void) +{ + return GetFontDefault(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetFontDefault(PyObject *self, PyObject *noarg) +{ + Font result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetFontDefault(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(66)); + return pyresult; +} +#else +static void _cffi_f_GetFontDefault(Font *result) +{ + { *result = GetFontDefault(); } +} +#endif + +static float _cffi_d_GetFrameTime(void) +{ + return GetFrameTime(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetFrameTime(PyObject *self, PyObject *noarg) +{ + float result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetFrameTime(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_float(result); + return pyresult; +} +#else +# define _cffi_f_GetFrameTime _cffi_d_GetFrameTime +#endif + +static int _cffi_d_GetGamepadAxisCount(int x0) +{ + return GetGamepadAxisCount(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGamepadAxisCount(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGamepadAxisCount(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetGamepadAxisCount _cffi_d_GetGamepadAxisCount +#endif + +static float _cffi_d_GetGamepadAxisMovement(int x0, int x1) +{ + return GetGamepadAxisMovement(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGamepadAxisMovement(PyObject *self, PyObject *args) +{ + int x0; + int x1; + float result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetGamepadAxisMovement", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGamepadAxisMovement(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_float(result); + return pyresult; +} +#else +# define _cffi_f_GetGamepadAxisMovement _cffi_d_GetGamepadAxisMovement +#endif + +static int _cffi_d_GetGamepadButtonPressed(void) +{ + return GetGamepadButtonPressed(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGamepadButtonPressed(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGamepadButtonPressed(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetGamepadButtonPressed _cffi_d_GetGamepadButtonPressed +#endif + +static char const * _cffi_d_GetGamepadName(int x0) +{ + return GetGamepadName(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGamepadName(PyObject *self, PyObject *arg0) +{ + int x0; + char const * result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGamepadName(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + return pyresult; +} +#else +# define _cffi_f_GetGamepadName _cffi_d_GetGamepadName +#endif + +static int _cffi_d_GetGestureDetected(void) +{ + return GetGestureDetected(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGestureDetected(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGestureDetected(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetGestureDetected _cffi_d_GetGestureDetected +#endif + +static float _cffi_d_GetGestureDragAngle(void) +{ + return GetGestureDragAngle(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGestureDragAngle(PyObject *self, PyObject *noarg) +{ + float result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGestureDragAngle(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_float(result); + return pyresult; +} +#else +# define _cffi_f_GetGestureDragAngle _cffi_d_GetGestureDragAngle +#endif + +static Vector2 _cffi_d_GetGestureDragVector(void) +{ + return GetGestureDragVector(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGestureDragVector(PyObject *self, PyObject *noarg) +{ + Vector2 result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGestureDragVector(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + return pyresult; +} +#else +static void _cffi_f_GetGestureDragVector(Vector2 *result) +{ + { *result = GetGestureDragVector(); } +} +#endif + +static float _cffi_d_GetGestureHoldDuration(void) +{ + return GetGestureHoldDuration(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGestureHoldDuration(PyObject *self, PyObject *noarg) +{ + float result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGestureHoldDuration(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_float(result); + return pyresult; +} +#else +# define _cffi_f_GetGestureHoldDuration _cffi_d_GetGestureHoldDuration +#endif + +static float _cffi_d_GetGesturePinchAngle(void) +{ + return GetGesturePinchAngle(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGesturePinchAngle(PyObject *self, PyObject *noarg) +{ + float result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGesturePinchAngle(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_float(result); + return pyresult; +} +#else +# define _cffi_f_GetGesturePinchAngle _cffi_d_GetGesturePinchAngle +#endif + +static Vector2 _cffi_d_GetGesturePinchVector(void) +{ + return GetGesturePinchVector(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGesturePinchVector(PyObject *self, PyObject *noarg) +{ + Vector2 result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGesturePinchVector(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + return pyresult; +} +#else +static void _cffi_f_GetGesturePinchVector(Vector2 *result) +{ + { *result = GetGesturePinchVector(); } +} +#endif + +static int _cffi_d_GetGlyphIndex(Font x0, int x1) +{ + return GetGlyphIndex(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetGlyphIndex(PyObject *self, PyObject *args) +{ + Font x0; + int x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetGlyphIndex", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(66), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetGlyphIndex(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_GetGlyphIndex(Font *x0, int x1) +{ + int result; + { result = GetGlyphIndex(*x0, x1); } + return result; +} +#endif + +static Rectangle _cffi_d_GetImageAlphaBorder(Image x0, float x1) +{ + return GetImageAlphaBorder(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetImageAlphaBorder(PyObject *self, PyObject *args) +{ + Image x0; + float x1; + Rectangle result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetImageAlphaBorder", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetImageAlphaBorder(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(77)); + return pyresult; +} +#else +static void _cffi_f_GetImageAlphaBorder(Rectangle *result, Image *x0, float x1) +{ + { *result = GetImageAlphaBorder(*x0, x1); } +} +#endif + +static Color * _cffi_d_GetImageData(Image x0) +{ + return GetImageData(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetImageData(PyObject *self, PyObject *arg0) +{ + Image x0; + Color * result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetImageData(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(61)); + return pyresult; +} +#else +static Color * _cffi_f_GetImageData(Image *x0) +{ + Color * result; + { result = GetImageData(*x0); } + return result; +} +#endif + +static Vector4 * _cffi_d_GetImageDataNormalized(Image x0) +{ + return GetImageDataNormalized(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetImageDataNormalized(PyObject *self, PyObject *arg0) +{ + Image x0; + Vector4 * result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetImageDataNormalized(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(1175)); + return pyresult; +} +#else +static Vector4 * _cffi_f_GetImageDataNormalized(Image *x0) +{ + Vector4 * result; + { result = GetImageDataNormalized(*x0); } + return result; +} +#endif + +static int _cffi_d_GetKeyPressed(void) +{ + return GetKeyPressed(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetKeyPressed(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetKeyPressed(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetKeyPressed _cffi_d_GetKeyPressed +#endif + +static Matrix _cffi_d_GetMatrixModelview(void) +{ + return GetMatrixModelview(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMatrixModelview(PyObject *self, PyObject *noarg) +{ + Matrix result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMatrixModelview(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(707)); + return pyresult; +} +#else +static void _cffi_f_GetMatrixModelview(Matrix *result) +{ + { *result = GetMatrixModelview(); } +} +#endif + +static Matrix _cffi_d_GetMatrixProjection(void) +{ + return GetMatrixProjection(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMatrixProjection(PyObject *self, PyObject *noarg) +{ + Matrix result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMatrixProjection(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(707)); + return pyresult; +} +#else +static void _cffi_f_GetMatrixProjection(Matrix *result) +{ + { *result = GetMatrixProjection(); } +} +#endif + +static int _cffi_d_GetMonitorCount(void) +{ + return GetMonitorCount(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMonitorCount(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMonitorCount(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetMonitorCount _cffi_d_GetMonitorCount +#endif + +static int _cffi_d_GetMonitorHeight(int x0) +{ + return GetMonitorHeight(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMonitorHeight(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMonitorHeight(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetMonitorHeight _cffi_d_GetMonitorHeight +#endif + +static char const * _cffi_d_GetMonitorName(int x0) +{ + return GetMonitorName(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMonitorName(PyObject *self, PyObject *arg0) +{ + int x0; + char const * result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMonitorName(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + return pyresult; +} +#else +# define _cffi_f_GetMonitorName _cffi_d_GetMonitorName +#endif + +static int _cffi_d_GetMonitorPhysicalHeight(int x0) +{ + return GetMonitorPhysicalHeight(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMonitorPhysicalHeight(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMonitorPhysicalHeight(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetMonitorPhysicalHeight _cffi_d_GetMonitorPhysicalHeight +#endif + +static int _cffi_d_GetMonitorPhysicalWidth(int x0) +{ + return GetMonitorPhysicalWidth(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMonitorPhysicalWidth(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMonitorPhysicalWidth(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetMonitorPhysicalWidth _cffi_d_GetMonitorPhysicalWidth +#endif + +static int _cffi_d_GetMonitorWidth(int x0) +{ + return GetMonitorWidth(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMonitorWidth(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMonitorWidth(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetMonitorWidth _cffi_d_GetMonitorWidth +#endif + +static Vector2 _cffi_d_GetMousePosition(void) +{ + return GetMousePosition(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMousePosition(PyObject *self, PyObject *noarg) +{ + Vector2 result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMousePosition(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + return pyresult; +} +#else +static void _cffi_f_GetMousePosition(Vector2 *result) +{ + { *result = GetMousePosition(); } +} +#endif + +static Ray _cffi_d_GetMouseRay(Vector2 x0, Camera3D x1) +{ + return GetMouseRay(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMouseRay(PyObject *self, PyObject *args) +{ + Vector2 x0; + Camera3D x1; + Ray result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetMouseRay", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(158), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMouseRay(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(213)); + return pyresult; +} +#else +static void _cffi_f_GetMouseRay(Ray *result, Vector2 *x0, Camera3D *x1) +{ + { *result = GetMouseRay(*x0, *x1); } +} +#endif + +static int _cffi_d_GetMouseWheelMove(void) +{ + return GetMouseWheelMove(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMouseWheelMove(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMouseWheelMove(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetMouseWheelMove _cffi_d_GetMouseWheelMove +#endif + +static int _cffi_d_GetMouseX(void) +{ + return GetMouseX(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMouseX(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMouseX(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetMouseX _cffi_d_GetMouseX +#endif + +static int _cffi_d_GetMouseY(void) +{ + return GetMouseY(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMouseY(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMouseY(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetMouseY _cffi_d_GetMouseY +#endif + +static float _cffi_d_GetMusicTimeLength(Music x0) +{ + return GetMusicTimeLength(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMusicTimeLength(PyObject *self, PyObject *arg0) +{ + Music x0; + float result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMusicTimeLength(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_float(result); + return pyresult; +} +#else +static float _cffi_f_GetMusicTimeLength(Music *x0) +{ + float result; + { result = GetMusicTimeLength(*x0); } + return result; +} +#endif + +static float _cffi_d_GetMusicTimePlayed(Music x0) +{ + return GetMusicTimePlayed(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetMusicTimePlayed(PyObject *self, PyObject *arg0) +{ + Music x0; + float result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetMusicTimePlayed(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_float(result); + return pyresult; +} +#else +static float _cffi_f_GetMusicTimePlayed(Music *x0) +{ + float result; + { result = GetMusicTimePlayed(*x0); } + return result; +} +#endif + +static int _cffi_d_GetNextCodepoint(char const * x0, int * x1) +{ + return GetNextCodepoint(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetNextCodepoint(PyObject *self, PyObject *args) +{ + char const * x0; + int * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetNextCodepoint", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetNextCodepoint(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetNextCodepoint _cffi_d_GetNextCodepoint +#endif + +static int _cffi_d_GetPixelDataSize(int x0, int x1, int x2) +{ + return GetPixelDataSize(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetPixelDataSize(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "GetPixelDataSize", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetPixelDataSize(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetPixelDataSize _cffi_d_GetPixelDataSize +#endif + +static char const * _cffi_d_GetPrevDirectoryPath(char const * x0) +{ + return GetPrevDirectoryPath(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetPrevDirectoryPath(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetPrevDirectoryPath(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_GetPrevDirectoryPath _cffi_d_GetPrevDirectoryPath +#endif + +static int _cffi_d_GetRandomValue(int x0, int x1) +{ + return GetRandomValue(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetRandomValue(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetRandomValue", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetRandomValue(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetRandomValue _cffi_d_GetRandomValue +#endif + +static Image _cffi_d_GetScreenData(void) +{ + return GetScreenData(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetScreenData(PyObject *self, PyObject *noarg) +{ + Image result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetScreenData(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GetScreenData(Image *result) +{ + { *result = GetScreenData(); } +} +#endif + +static int _cffi_d_GetScreenHeight(void) +{ + return GetScreenHeight(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetScreenHeight(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetScreenHeight(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetScreenHeight _cffi_d_GetScreenHeight +#endif + +static Vector2 _cffi_d_GetScreenToWorld2D(Vector2 x0, Camera2D x1) +{ + return GetScreenToWorld2D(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetScreenToWorld2D(PyObject *self, PyObject *args) +{ + Vector2 x0; + Camera2D x1; + Vector2 result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetScreenToWorld2D", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(155), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetScreenToWorld2D(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + return pyresult; +} +#else +static void _cffi_f_GetScreenToWorld2D(Vector2 *result, Vector2 *x0, Camera2D *x1) +{ + { *result = GetScreenToWorld2D(*x0, *x1); } +} +#endif + +static int _cffi_d_GetScreenWidth(void) +{ + return GetScreenWidth(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetScreenWidth(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetScreenWidth(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetScreenWidth _cffi_d_GetScreenWidth +#endif + +static Shader _cffi_d_GetShaderDefault(void) +{ + return GetShaderDefault(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetShaderDefault(PyObject *self, PyObject *noarg) +{ + Shader result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetShaderDefault(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(258)); + return pyresult; +} +#else +static void _cffi_f_GetShaderDefault(Shader *result) +{ + { *result = GetShaderDefault(); } +} +#endif + +static int _cffi_d_GetShaderLocation(Shader x0, char const * x1) +{ + return GetShaderLocation(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetShaderLocation(PyObject *self, PyObject *args) +{ + Shader x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetShaderLocation", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetShaderLocation(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static int _cffi_f_GetShaderLocation(Shader *x0, char const * x1) +{ + int result; + { result = GetShaderLocation(*x0, x1); } + return result; +} +#endif + +static int _cffi_d_GetSoundsPlaying(void) +{ + return GetSoundsPlaying(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetSoundsPlaying(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetSoundsPlaying(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetSoundsPlaying _cffi_d_GetSoundsPlaying +#endif + +static Image _cffi_d_GetTextureData(Texture2D x0) +{ + return GetTextureData(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetTextureData(PyObject *self, PyObject *arg0) +{ + Texture2D x0; + Image result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetTextureData(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_GetTextureData(Image *result, Texture2D *x0) +{ + { *result = GetTextureData(*x0); } +} +#endif + +static Texture2D _cffi_d_GetTextureDefault(void) +{ + return GetTextureDefault(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetTextureDefault(PyObject *self, PyObject *noarg) +{ + Texture2D result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetTextureDefault(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(80)); + return pyresult; +} +#else +static void _cffi_f_GetTextureDefault(Texture2D *result) +{ + { *result = GetTextureDefault(); } +} +#endif + +static double _cffi_d_GetTime(void) +{ + return GetTime(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetTime(PyObject *self, PyObject *noarg) +{ + double result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetTime(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_double(result); + return pyresult; +} +#else +# define _cffi_f_GetTime _cffi_d_GetTime +#endif + +static int _cffi_d_GetTouchPointsCount(void) +{ + return GetTouchPointsCount(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetTouchPointsCount(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetTouchPointsCount(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetTouchPointsCount _cffi_d_GetTouchPointsCount +#endif + +static Vector2 _cffi_d_GetTouchPosition(int x0) +{ + return GetTouchPosition(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetTouchPosition(PyObject *self, PyObject *arg0) +{ + int x0; + Vector2 result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetTouchPosition(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + return pyresult; +} +#else +static void _cffi_f_GetTouchPosition(Vector2 *result, int x0) +{ + { *result = GetTouchPosition(x0); } +} +#endif + +static int _cffi_d_GetTouchX(void) +{ + return GetTouchX(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetTouchX(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetTouchX(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetTouchX _cffi_d_GetTouchX +#endif + +static int _cffi_d_GetTouchY(void) +{ + return GetTouchY(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetTouchY(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetTouchY(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_GetTouchY _cffi_d_GetTouchY +#endif + +static float * _cffi_d_GetWaveData(Wave x0) +{ + return GetWaveData(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetWaveData(PyObject *self, PyObject *arg0) +{ + Wave x0; + float * result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(245), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetWaveData(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(1181)); + return pyresult; +} +#else +static float * _cffi_f_GetWaveData(Wave *x0) +{ + float * result; + { result = GetWaveData(*x0); } + return result; +} +#endif + +static void * _cffi_d_GetWindowHandle(void) +{ + return GetWindowHandle(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetWindowHandle(PyObject *self, PyObject *noarg) +{ + void * result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetWindowHandle(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(141)); + return pyresult; +} +#else +# define _cffi_f_GetWindowHandle _cffi_d_GetWindowHandle +#endif + +static Vector2 _cffi_d_GetWindowPosition(void) +{ + return GetWindowPosition(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetWindowPosition(PyObject *self, PyObject *noarg) +{ + Vector2 result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetWindowPosition(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + return pyresult; +} +#else +static void _cffi_f_GetWindowPosition(Vector2 *result) +{ + { *result = GetWindowPosition(); } +} +#endif + +static char const * _cffi_d_GetWorkingDirectory(void) +{ + return GetWorkingDirectory(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetWorkingDirectory(PyObject *self, PyObject *noarg) +{ + char const * result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetWorkingDirectory(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + return pyresult; +} +#else +# define _cffi_f_GetWorkingDirectory _cffi_d_GetWorkingDirectory +#endif + +static Vector2 _cffi_d_GetWorldToScreen(Vector3 x0, Camera3D x1) +{ + return GetWorldToScreen(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetWorldToScreen(PyObject *self, PyObject *args) +{ + Vector3 x0; + Camera3D x1; + Vector2 result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetWorldToScreen", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(158), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetWorldToScreen(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + return pyresult; +} +#else +static void _cffi_f_GetWorldToScreen(Vector2 *result, Vector3 *x0, Camera3D *x1) +{ + { *result = GetWorldToScreen(*x0, *x1); } +} +#endif + +static Vector2 _cffi_d_GetWorldToScreen2D(Vector2 x0, Camera2D x1) +{ + return GetWorldToScreen2D(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetWorldToScreen2D(PyObject *self, PyObject *args) +{ + Vector2 x0; + Camera2D x1; + Vector2 result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "GetWorldToScreen2D", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(209), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(155), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetWorldToScreen2D(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + return pyresult; +} +#else +static void _cffi_f_GetWorldToScreen2D(Vector2 *result, Vector2 *x0, Camera2D *x1) +{ + { *result = GetWorldToScreen2D(*x0, *x1); } +} +#endif + +static Vector2 _cffi_d_GetWorldToScreenEx(Vector3 x0, Camera3D x1, int x2, int x3) +{ + return GetWorldToScreenEx(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_GetWorldToScreenEx(PyObject *self, PyObject *args) +{ + Vector3 x0; + Camera3D x1; + int x2; + int x3; + Vector2 result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "GetWorldToScreenEx", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(28), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(158), arg1) < 0) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = GetWorldToScreenEx(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + return pyresult; +} +#else +static void _cffi_f_GetWorldToScreenEx(Vector2 *result, Vector3 *x0, Camera3D *x1, int x2, int x3) +{ + { *result = GetWorldToScreenEx(*x0, *x1, x2, x3); } +} +#endif + +static void _cffi_d_HideCursor(void) +{ + HideCursor(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_HideCursor(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { HideCursor(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_HideCursor _cffi_d_HideCursor +#endif + +static void _cffi_d_HideWindow(void) +{ + HideWindow(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_HideWindow(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { HideWindow(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_HideWindow _cffi_d_HideWindow +#endif + +static void _cffi_d_ImageAlphaClear(Image * x0, Color x1, float x2) +{ + ImageAlphaClear(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageAlphaClear(PyObject *self, PyObject *args) +{ + Image * x0; + Color x1; + float x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "ImageAlphaClear", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageAlphaClear(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageAlphaClear(Image * x0, Color *x1, float x2) +{ + { ImageAlphaClear(x0, *x1, x2); } +} +#endif + +static void _cffi_d_ImageAlphaCrop(Image * x0, float x1) +{ + ImageAlphaCrop(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageAlphaCrop(PyObject *self, PyObject *args) +{ + Image * x0; + float x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ImageAlphaCrop", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageAlphaCrop(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageAlphaCrop _cffi_d_ImageAlphaCrop +#endif + +static void _cffi_d_ImageAlphaMask(Image * x0, Image x1) +{ + ImageAlphaMask(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageAlphaMask(PyObject *self, PyObject *args) +{ + Image * x0; + Image x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ImageAlphaMask", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(16), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageAlphaMask(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageAlphaMask(Image * x0, Image *x1) +{ + { ImageAlphaMask(x0, *x1); } +} +#endif + +static void _cffi_d_ImageAlphaPremultiply(Image * x0) +{ + ImageAlphaPremultiply(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageAlphaPremultiply(PyObject *self, PyObject *arg0) +{ + Image * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageAlphaPremultiply(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageAlphaPremultiply _cffi_d_ImageAlphaPremultiply +#endif + +static void _cffi_d_ImageColorBrightness(Image * x0, int x1) +{ + ImageColorBrightness(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageColorBrightness(PyObject *self, PyObject *args) +{ + Image * x0; + int x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ImageColorBrightness", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageColorBrightness(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageColorBrightness _cffi_d_ImageColorBrightness +#endif + +static void _cffi_d_ImageColorContrast(Image * x0, float x1) +{ + ImageColorContrast(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageColorContrast(PyObject *self, PyObject *args) +{ + Image * x0; + float x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ImageColorContrast", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageColorContrast(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageColorContrast _cffi_d_ImageColorContrast +#endif + +static void _cffi_d_ImageColorGrayscale(Image * x0) +{ + ImageColorGrayscale(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageColorGrayscale(PyObject *self, PyObject *arg0) +{ + Image * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageColorGrayscale(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageColorGrayscale _cffi_d_ImageColorGrayscale +#endif + +static void _cffi_d_ImageColorInvert(Image * x0) +{ + ImageColorInvert(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageColorInvert(PyObject *self, PyObject *arg0) +{ + Image * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageColorInvert(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageColorInvert _cffi_d_ImageColorInvert +#endif + +static void _cffi_d_ImageColorReplace(Image * x0, Color x1, Color x2) +{ + ImageColorReplace(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageColorReplace(PyObject *self, PyObject *args) +{ + Image * x0; + Color x1; + Color x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "ImageColorReplace", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageColorReplace(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageColorReplace(Image * x0, Color *x1, Color *x2) +{ + { ImageColorReplace(x0, *x1, *x2); } +} +#endif + +static void _cffi_d_ImageColorTint(Image * x0, Color x1) +{ + ImageColorTint(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageColorTint(PyObject *self, PyObject *args) +{ + Image * x0; + Color x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ImageColorTint", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageColorTint(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageColorTint(Image * x0, Color *x1) +{ + { ImageColorTint(x0, *x1); } +} +#endif + +static Image _cffi_d_ImageCopy(Image x0) +{ + return ImageCopy(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageCopy(PyObject *self, PyObject *arg0) +{ + Image x0; + Image result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ImageCopy(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_ImageCopy(Image *result, Image *x0) +{ + { *result = ImageCopy(*x0); } +} +#endif + +static void _cffi_d_ImageCrop(Image * x0, Rectangle x1) +{ + ImageCrop(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageCrop(PyObject *self, PyObject *args) +{ + Image * x0; + Rectangle x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ImageCrop", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageCrop(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageCrop(Image * x0, Rectangle *x1) +{ + { ImageCrop(x0, *x1); } +} +#endif + +static void _cffi_d_ImageDither(Image * x0, int x1, int x2, int x3, int x4) +{ + ImageDither(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageDither(PyObject *self, PyObject *args) +{ + Image * x0; + int x1; + int x2; + int x3; + int x4; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "ImageDither", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageDither(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageDither _cffi_d_ImageDither +#endif + +static void _cffi_d_ImageDraw(Image * x0, Image x1, Rectangle x2, Rectangle x3, Color x4) +{ + ImageDraw(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageDraw(PyObject *self, PyObject *args) +{ + Image * x0; + Image x1; + Rectangle x2; + Rectangle x3; + Color x4; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "ImageDraw", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(16), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(77), arg2) < 0) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(77), arg3) < 0) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageDraw(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageDraw(Image * x0, Image *x1, Rectangle *x2, Rectangle *x3, Color *x4) +{ + { ImageDraw(x0, *x1, *x2, *x3, *x4); } +} +#endif + +static void _cffi_d_ImageDrawRectangle(Image * x0, Rectangle x1, Color x2) +{ + ImageDrawRectangle(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageDrawRectangle(PyObject *self, PyObject *args) +{ + Image * x0; + Rectangle x1; + Color x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "ImageDrawRectangle", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageDrawRectangle(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageDrawRectangle(Image * x0, Rectangle *x1, Color *x2) +{ + { ImageDrawRectangle(x0, *x1, *x2); } +} +#endif + +static void _cffi_d_ImageDrawRectangleLines(Image * x0, Rectangle x1, int x2, Color x3) +{ + ImageDrawRectangleLines(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageDrawRectangleLines(PyObject *self, PyObject *args) +{ + Image * x0; + Rectangle x1; + int x2; + Color x3; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "ImageDrawRectangleLines", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x3, _cffi_type(24), arg3) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageDrawRectangleLines(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageDrawRectangleLines(Image * x0, Rectangle *x1, int x2, Color *x3) +{ + { ImageDrawRectangleLines(x0, *x1, x2, *x3); } +} +#endif + +static void _cffi_d_ImageDrawText(Image * x0, Vector2 x1, char const * x2, int x3, Color x4) +{ + ImageDrawText(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageDrawText(PyObject *self, PyObject *args) +{ + Image * x0; + Vector2 x1; + char const * x2; + int x3; + Color x4; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "ImageDrawText", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageDrawText(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageDrawText(Image * x0, Vector2 *x1, char const * x2, int x3, Color *x4) +{ + { ImageDrawText(x0, *x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_ImageDrawTextEx(Image * x0, Vector2 x1, Font x2, char const * x3, float x4, float x5, Color x6) +{ + ImageDrawTextEx(x0, x1, x2, x3, x4, x5, x6); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageDrawTextEx(PyObject *self, PyObject *args) +{ + Image * x0; + Vector2 x1; + Font x2; + char const * x3; + float x4; + float x5; + Color x6; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + PyObject *arg6; + + if (!PyArg_UnpackTuple(args, "ImageDrawTextEx", 7, 7, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5, &arg6)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(209), arg1) < 0) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(66), arg2) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg3, (char **)&x3); + if (datasize != 0) { + x3 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg3, (char **)&x3, + datasize, &large_args_free) < 0) + return NULL; + } + + x4 = (float)_cffi_to_c_float(arg4); + if (x4 == (float)-1 && PyErr_Occurred()) + return NULL; + + x5 = (float)_cffi_to_c_float(arg5); + if (x5 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x6, _cffi_type(24), arg6) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageDrawTextEx(x0, x1, x2, x3, x4, x5, x6); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageDrawTextEx(Image * x0, Vector2 *x1, Font *x2, char const * x3, float x4, float x5, Color *x6) +{ + { ImageDrawTextEx(x0, *x1, *x2, x3, x4, x5, *x6); } +} +#endif + +static Color * _cffi_d_ImageExtractPalette(Image x0, int x1, int * x2) +{ + return ImageExtractPalette(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageExtractPalette(PyObject *self, PyObject *args) +{ + Image x0; + int x1; + int * x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Color * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "ImageExtractPalette", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ImageExtractPalette(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(61)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static Color * _cffi_f_ImageExtractPalette(Image *x0, int x1, int * x2) +{ + Color * result; + { result = ImageExtractPalette(*x0, x1, x2); } + return result; +} +#endif + +static void _cffi_d_ImageFlipHorizontal(Image * x0) +{ + ImageFlipHorizontal(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageFlipHorizontal(PyObject *self, PyObject *arg0) +{ + Image * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageFlipHorizontal(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageFlipHorizontal _cffi_d_ImageFlipHorizontal +#endif + +static void _cffi_d_ImageFlipVertical(Image * x0) +{ + ImageFlipVertical(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageFlipVertical(PyObject *self, PyObject *arg0) +{ + Image * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageFlipVertical(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageFlipVertical _cffi_d_ImageFlipVertical +#endif + +static void _cffi_d_ImageFormat(Image * x0, int x1) +{ + ImageFormat(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageFormat(PyObject *self, PyObject *args) +{ + Image * x0; + int x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ImageFormat", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageFormat(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageFormat _cffi_d_ImageFormat +#endif + +static Image _cffi_d_ImageFromImage(Image x0, Rectangle x1) +{ + return ImageFromImage(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageFromImage(PyObject *self, PyObject *args) +{ + Image x0; + Rectangle x1; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ImageFromImage", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ImageFromImage(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + return pyresult; +} +#else +static void _cffi_f_ImageFromImage(Image *result, Image *x0, Rectangle *x1) +{ + { *result = ImageFromImage(*x0, *x1); } +} +#endif + +static void _cffi_d_ImageMipmaps(Image * x0) +{ + ImageMipmaps(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageMipmaps(PyObject *self, PyObject *arg0) +{ + Image * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageMipmaps(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageMipmaps _cffi_d_ImageMipmaps +#endif + +static void _cffi_d_ImageResize(Image * x0, int x1, int x2) +{ + ImageResize(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageResize(PyObject *self, PyObject *args) +{ + Image * x0; + int x1; + int x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "ImageResize", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageResize(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageResize _cffi_d_ImageResize +#endif + +static void _cffi_d_ImageResizeCanvas(Image * x0, int x1, int x2, int x3, int x4, Color x5) +{ + ImageResizeCanvas(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageResizeCanvas(PyObject *self, PyObject *args) +{ + Image * x0; + int x1; + int x2; + int x3; + int x4; + Color x5; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "ImageResizeCanvas", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x5, _cffi_type(24), arg5) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageResizeCanvas(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageResizeCanvas(Image * x0, int x1, int x2, int x3, int x4, Color *x5) +{ + { ImageResizeCanvas(x0, x1, x2, x3, x4, *x5); } +} +#endif + +static void _cffi_d_ImageResizeNN(Image * x0, int x1, int x2) +{ + ImageResizeNN(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageResizeNN(PyObject *self, PyObject *args) +{ + Image * x0; + int x1; + int x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "ImageResizeNN", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageResizeNN(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageResizeNN _cffi_d_ImageResizeNN +#endif + +static void _cffi_d_ImageRotateCCW(Image * x0) +{ + ImageRotateCCW(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageRotateCCW(PyObject *self, PyObject *arg0) +{ + Image * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageRotateCCW(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageRotateCCW _cffi_d_ImageRotateCCW +#endif + +static void _cffi_d_ImageRotateCW(Image * x0) +{ + ImageRotateCW(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageRotateCW(PyObject *self, PyObject *arg0) +{ + Image * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageRotateCW(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ImageRotateCW _cffi_d_ImageRotateCW +#endif + +static Image _cffi_d_ImageText(char const * x0, int x1, Color x2) +{ + return ImageText(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageText(PyObject *self, PyObject *args) +{ + char const * x0; + int x1; + Color x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "ImageText", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(24), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ImageText(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_ImageText(Image *result, char const * x0, int x1, Color *x2) +{ + { *result = ImageText(x0, x1, *x2); } +} +#endif + +static Image _cffi_d_ImageTextEx(Font x0, char const * x1, float x2, float x3, Color x4) +{ + return ImageTextEx(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageTextEx(PyObject *self, PyObject *args) +{ + Font x0; + char const * x1; + float x2; + float x3; + Color x4; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "ImageTextEx", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(66), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x4, _cffi_type(24), arg4) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = ImageTextEx(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_ImageTextEx(Image *result, Font *x0, char const * x1, float x2, float x3, Color *x4) +{ + { *result = ImageTextEx(*x0, x1, x2, x3, *x4); } +} +#endif + +static void _cffi_d_ImageToPOT(Image * x0, Color x1) +{ + ImageToPOT(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ImageToPOT(PyObject *self, PyObject *args) +{ + Image * x0; + Color x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "ImageToPOT", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(605), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Image *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(605), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ImageToPOT(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ImageToPOT(Image * x0, Color *x1) +{ + { ImageToPOT(x0, *x1); } +} +#endif + +static void _cffi_d_InitAudioDevice(void) +{ + InitAudioDevice(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_InitAudioDevice(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { InitAudioDevice(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_InitAudioDevice _cffi_d_InitAudioDevice +#endif + +static AudioStream _cffi_d_InitAudioStream(unsigned int x0, unsigned int x1, unsigned int x2) +{ + return InitAudioStream(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_InitAudioStream(PyObject *self, PyObject *args) +{ + unsigned int x0; + unsigned int x1; + unsigned int x2; + AudioStream result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "InitAudioStream", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = _cffi_to_c_int(arg0, unsigned int); + if (x0 == (unsigned int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, unsigned int); + if (x1 == (unsigned int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, unsigned int); + if (x2 == (unsigned int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = InitAudioStream(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(384)); + return pyresult; +} +#else +static void _cffi_f_InitAudioStream(AudioStream *result, unsigned int x0, unsigned int x1, unsigned int x2) +{ + { *result = InitAudioStream(x0, x1, x2); } +} +#endif + +static void _cffi_d_InitVrSimulator(void) +{ + InitVrSimulator(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_InitVrSimulator(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { InitVrSimulator(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_InitVrSimulator _cffi_d_InitVrSimulator +#endif + +static void _cffi_d_InitWindow(int x0, int x1, char const * x2) +{ + InitWindow(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_InitWindow(PyObject *self, PyObject *args) +{ + int x0; + int x1; + char const * x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "InitWindow", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { InitWindow(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_InitWindow _cffi_d_InitWindow +#endif + +static int _cffi_d_IsAudioDeviceReady(void) +{ + return IsAudioDeviceReady(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsAudioDeviceReady(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsAudioDeviceReady(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsAudioDeviceReady _cffi_d_IsAudioDeviceReady +#endif + +static int _cffi_d_IsAudioStreamPlaying(AudioStream x0) +{ + return IsAudioStreamPlaying(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsAudioStreamPlaying(PyObject *self, PyObject *arg0) +{ + AudioStream x0; + int result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsAudioStreamPlaying(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_IsAudioStreamPlaying(AudioStream *x0) +{ + int result; + { result = IsAudioStreamPlaying(*x0); } + return result; +} +#endif + +static int _cffi_d_IsAudioStreamProcessed(AudioStream x0) +{ + return IsAudioStreamProcessed(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsAudioStreamProcessed(PyObject *self, PyObject *arg0) +{ + AudioStream x0; + int result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsAudioStreamProcessed(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_IsAudioStreamProcessed(AudioStream *x0) +{ + int result; + { result = IsAudioStreamProcessed(*x0); } + return result; +} +#endif + +static int _cffi_d_IsCursorHidden(void) +{ + return IsCursorHidden(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsCursorHidden(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsCursorHidden(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsCursorHidden _cffi_d_IsCursorHidden +#endif + +static int _cffi_d_IsFileDropped(void) +{ + return IsFileDropped(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsFileDropped(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsFileDropped(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsFileDropped _cffi_d_IsFileDropped +#endif + +static int _cffi_d_IsFileExtension(char const * x0, char const * x1) +{ + return IsFileExtension(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsFileExtension(PyObject *self, PyObject *args) +{ + char const * x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "IsFileExtension", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsFileExtension(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_IsFileExtension _cffi_d_IsFileExtension +#endif + +static int _cffi_d_IsGamepadAvailable(int x0) +{ + return IsGamepadAvailable(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsGamepadAvailable(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsGamepadAvailable(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsGamepadAvailable _cffi_d_IsGamepadAvailable +#endif + +static int _cffi_d_IsGamepadButtonDown(int x0, int x1) +{ + return IsGamepadButtonDown(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsGamepadButtonDown(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "IsGamepadButtonDown", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsGamepadButtonDown(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsGamepadButtonDown _cffi_d_IsGamepadButtonDown +#endif + +static int _cffi_d_IsGamepadButtonPressed(int x0, int x1) +{ + return IsGamepadButtonPressed(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsGamepadButtonPressed(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "IsGamepadButtonPressed", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsGamepadButtonPressed(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsGamepadButtonPressed _cffi_d_IsGamepadButtonPressed +#endif + +static int _cffi_d_IsGamepadButtonReleased(int x0, int x1) +{ + return IsGamepadButtonReleased(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsGamepadButtonReleased(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "IsGamepadButtonReleased", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsGamepadButtonReleased(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsGamepadButtonReleased _cffi_d_IsGamepadButtonReleased +#endif + +static int _cffi_d_IsGamepadButtonUp(int x0, int x1) +{ + return IsGamepadButtonUp(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsGamepadButtonUp(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "IsGamepadButtonUp", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsGamepadButtonUp(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsGamepadButtonUp _cffi_d_IsGamepadButtonUp +#endif + +static int _cffi_d_IsGamepadName(int x0, char const * x1) +{ + return IsGamepadName(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsGamepadName(PyObject *self, PyObject *args) +{ + int x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "IsGamepadName", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsGamepadName(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_IsGamepadName _cffi_d_IsGamepadName +#endif + +static int _cffi_d_IsGestureDetected(int x0) +{ + return IsGestureDetected(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsGestureDetected(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsGestureDetected(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsGestureDetected _cffi_d_IsGestureDetected +#endif + +static int _cffi_d_IsKeyDown(int x0) +{ + return IsKeyDown(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsKeyDown(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsKeyDown(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsKeyDown _cffi_d_IsKeyDown +#endif + +static int _cffi_d_IsKeyPressed(int x0) +{ + return IsKeyPressed(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsKeyPressed(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsKeyPressed(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsKeyPressed _cffi_d_IsKeyPressed +#endif + +static int _cffi_d_IsKeyReleased(int x0) +{ + return IsKeyReleased(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsKeyReleased(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsKeyReleased(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsKeyReleased _cffi_d_IsKeyReleased +#endif + +static int _cffi_d_IsKeyUp(int x0) +{ + return IsKeyUp(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsKeyUp(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsKeyUp(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsKeyUp _cffi_d_IsKeyUp +#endif + +static int _cffi_d_IsModelAnimationValid(Model x0, ModelAnimation x1) +{ + return IsModelAnimationValid(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsModelAnimationValid(PyObject *self, PyObject *args) +{ + Model x0; + ModelAnimation x1; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "IsModelAnimationValid", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(214), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(404), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsModelAnimationValid(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_IsModelAnimationValid(Model *x0, ModelAnimation *x1) +{ + int result; + { result = IsModelAnimationValid(*x0, *x1); } + return result; +} +#endif + +static int _cffi_d_IsMouseButtonDown(int x0) +{ + return IsMouseButtonDown(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsMouseButtonDown(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsMouseButtonDown(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsMouseButtonDown _cffi_d_IsMouseButtonDown +#endif + +static int _cffi_d_IsMouseButtonPressed(int x0) +{ + return IsMouseButtonPressed(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsMouseButtonPressed(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsMouseButtonPressed(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsMouseButtonPressed _cffi_d_IsMouseButtonPressed +#endif + +static int _cffi_d_IsMouseButtonReleased(int x0) +{ + return IsMouseButtonReleased(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsMouseButtonReleased(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsMouseButtonReleased(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsMouseButtonReleased _cffi_d_IsMouseButtonReleased +#endif + +static int _cffi_d_IsMouseButtonUp(int x0) +{ + return IsMouseButtonUp(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsMouseButtonUp(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsMouseButtonUp(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsMouseButtonUp _cffi_d_IsMouseButtonUp +#endif + +static int _cffi_d_IsMusicPlaying(Music x0) +{ + return IsMusicPlaying(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsMusicPlaying(PyObject *self, PyObject *arg0) +{ + Music x0; + int result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsMusicPlaying(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_IsMusicPlaying(Music *x0) +{ + int result; + { result = IsMusicPlaying(*x0); } + return result; +} +#endif + +static int _cffi_d_IsSoundPlaying(Sound x0) +{ + return IsSoundPlaying(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsSoundPlaying(PyObject *self, PyObject *arg0) +{ + Sound x0; + int result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsSoundPlaying(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +static int _cffi_f_IsSoundPlaying(Sound *x0) +{ + int result; + { result = IsSoundPlaying(*x0); } + return result; +} +#endif + +static int _cffi_d_IsVrSimulatorReady(void) +{ + return IsVrSimulatorReady(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsVrSimulatorReady(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsVrSimulatorReady(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsVrSimulatorReady _cffi_d_IsVrSimulatorReady +#endif + +static int _cffi_d_IsWindowHidden(void) +{ + return IsWindowHidden(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsWindowHidden(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsWindowHidden(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsWindowHidden _cffi_d_IsWindowHidden +#endif + +static int _cffi_d_IsWindowMinimized(void) +{ + return IsWindowMinimized(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsWindowMinimized(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsWindowMinimized(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsWindowMinimized _cffi_d_IsWindowMinimized +#endif + +static int _cffi_d_IsWindowReady(void) +{ + return IsWindowReady(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsWindowReady(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsWindowReady(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsWindowReady _cffi_d_IsWindowReady +#endif + +static int _cffi_d_IsWindowResized(void) +{ + return IsWindowResized(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_IsWindowResized(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = IsWindowResized(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_IsWindowResized _cffi_d_IsWindowResized +#endif + +static Font _cffi_d_LoadFont(char const * x0) +{ + return LoadFont(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadFont(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Font result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadFont(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(66)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadFont(Font *result, char const * x0) +{ + { *result = LoadFont(x0); } +} +#endif + +static CharInfo * _cffi_d_LoadFontData(char const * x0, int x1, int * x2, int x3, int x4) +{ + return LoadFontData(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadFontData(PyObject *self, PyObject *args) +{ + char const * x0; + int x1; + int * x2; + int x3; + int x4; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + CharInfo * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "LoadFontData", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadFontData(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(1148)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_LoadFontData _cffi_d_LoadFontData +#endif + +static Font _cffi_d_LoadFontEx(char const * x0, int x1, int * x2, int x3) +{ + return LoadFontEx(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadFontEx(PyObject *self, PyObject *args) +{ + char const * x0; + int x1; + int * x2; + int x3; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Font result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "LoadFontEx", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadFontEx(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(66)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadFontEx(Font *result, char const * x0, int x1, int * x2, int x3) +{ + { *result = LoadFontEx(x0, x1, x2, x3); } +} +#endif + +static Font _cffi_d_LoadFontFromImage(Image x0, Color x1, int x2) +{ + return LoadFontFromImage(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadFontFromImage(PyObject *self, PyObject *args) +{ + Image x0; + Color x1; + int x2; + Font result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "LoadFontFromImage", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(24), arg1) < 0) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadFontFromImage(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(66)); + return pyresult; +} +#else +static void _cffi_f_LoadFontFromImage(Font *result, Image *x0, Color *x1, int x2) +{ + { *result = LoadFontFromImage(*x0, *x1, x2); } +} +#endif + +static Image _cffi_d_LoadImage(char const * x0) +{ + return LoadImage(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadImage(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Image result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadImage(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadImage(Image *result, char const * x0) +{ + { *result = LoadImage(x0); } +} +#endif + +static Image _cffi_d_LoadImageEx(Color * x0, int x1, int x2) +{ + return LoadImageEx(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadImageEx(PyObject *self, PyObject *args) +{ + Color * x0; + int x1; + int x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "LoadImageEx", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(61), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Color *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(61), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadImageEx(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadImageEx(Image *result, Color * x0, int x1, int x2) +{ + { *result = LoadImageEx(x0, x1, x2); } +} +#endif + +static Image _cffi_d_LoadImagePro(void * x0, int x1, int x2, int x3) +{ + return LoadImagePro(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadImagePro(PyObject *self, PyObject *args) +{ + void * x0; + int x1; + int x2; + int x3; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "LoadImagePro", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(141), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (void *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(141), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadImagePro(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadImagePro(Image *result, void * x0, int x1, int x2, int x3) +{ + { *result = LoadImagePro(x0, x1, x2, x3); } +} +#endif + +static Image _cffi_d_LoadImageRaw(char const * x0, int x1, int x2, int x3, int x4) +{ + return LoadImageRaw(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadImageRaw(PyObject *self, PyObject *args) +{ + char const * x0; + int x1; + int x2; + int x3; + int x4; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Image result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "LoadImageRaw", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadImageRaw(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(16)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadImageRaw(Image *result, char const * x0, int x1, int x2, int x3, int x4) +{ + { *result = LoadImageRaw(x0, x1, x2, x3, x4); } +} +#endif + +static Material _cffi_d_LoadMaterialDefault(void) +{ + return LoadMaterialDefault(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadMaterialDefault(PyObject *self, PyObject *noarg) +{ + Material result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadMaterialDefault(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(704)); + return pyresult; +} +#else +static void _cffi_f_LoadMaterialDefault(Material *result) +{ + { *result = LoadMaterialDefault(); } +} +#endif + +static Material * _cffi_d_LoadMaterials(char const * x0, int * x1) +{ + return LoadMaterials(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadMaterials(PyObject *self, PyObject *args) +{ + char const * x0; + int * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Material * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "LoadMaterials", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadMaterials(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(699)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_LoadMaterials _cffi_d_LoadMaterials +#endif + +static Mesh * _cffi_d_LoadMeshes(char const * x0, int * x1) +{ + return LoadMeshes(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadMeshes(PyObject *self, PyObject *args) +{ + char const * x0; + int * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Mesh * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "LoadMeshes", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadMeshes(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(710)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_LoadMeshes _cffi_d_LoadMeshes +#endif + +static Model _cffi_d_LoadModel(char const * x0) +{ + return LoadModel(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadModel(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Model result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadModel(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(214)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadModel(Model *result, char const * x0) +{ + { *result = LoadModel(x0); } +} +#endif + +static ModelAnimation * _cffi_d_LoadModelAnimations(char const * x0, int * x1) +{ + return LoadModelAnimations(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadModelAnimations(PyObject *self, PyObject *args) +{ + char const * x0; + int * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + ModelAnimation * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "LoadModelAnimations", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadModelAnimations(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(1161)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_LoadModelAnimations _cffi_d_LoadModelAnimations +#endif + +static Model _cffi_d_LoadModelFromMesh(Mesh x0) +{ + return LoadModelFromMesh(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadModelFromMesh(PyObject *self, PyObject *arg0) +{ + Mesh x0; + Model result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(6), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadModelFromMesh(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(214)); + return pyresult; +} +#else +static void _cffi_f_LoadModelFromMesh(Model *result, Mesh *x0) +{ + { *result = LoadModelFromMesh(*x0); } +} +#endif + +static Music _cffi_d_LoadMusicStream(char const * x0) +{ + return LoadMusicStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadMusicStream(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Music result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadMusicStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(371)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadMusicStream(Music *result, char const * x0) +{ + { *result = LoadMusicStream(x0); } +} +#endif + +static RenderTexture2D _cffi_d_LoadRenderTexture(int x0, int x1) +{ + return LoadRenderTexture(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadRenderTexture(PyObject *self, PyObject *args) +{ + int x0; + int x1; + RenderTexture2D result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "LoadRenderTexture", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadRenderTexture(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(800)); + return pyresult; +} +#else +static void _cffi_f_LoadRenderTexture(RenderTexture2D *result, int x0, int x1) +{ + { *result = LoadRenderTexture(x0, x1); } +} +#endif + +static Shader _cffi_d_LoadShader(char const * x0, char const * x1) +{ + return LoadShader(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadShader(PyObject *self, PyObject *args) +{ + char const * x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Shader result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "LoadShader", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadShader(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(258)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadShader(Shader *result, char const * x0, char const * x1) +{ + { *result = LoadShader(x0, x1); } +} +#endif + +static Shader _cffi_d_LoadShaderCode(char const * x0, char const * x1) +{ + return LoadShaderCode(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadShaderCode(PyObject *self, PyObject *args) +{ + char const * x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Shader result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "LoadShaderCode", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadShaderCode(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(258)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadShaderCode(Shader *result, char const * x0, char const * x1) +{ + { *result = LoadShaderCode(x0, x1); } +} +#endif + +static Sound _cffi_d_LoadSound(char const * x0) +{ + return LoadSound(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadSound(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Sound result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadSound(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(433)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadSound(Sound *result, char const * x0) +{ + { *result = LoadSound(x0); } +} +#endif + +static Sound _cffi_d_LoadSoundFromWave(Wave x0) +{ + return LoadSoundFromWave(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadSoundFromWave(PyObject *self, PyObject *arg0) +{ + Wave x0; + Sound result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(245), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadSoundFromWave(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(433)); + return pyresult; +} +#else +static void _cffi_f_LoadSoundFromWave(Sound *result, Wave *x0) +{ + { *result = LoadSoundFromWave(*x0); } +} +#endif + +static char * _cffi_d_LoadText(char const * x0) +{ + return LoadText(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadText(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadText(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(319)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_LoadText _cffi_d_LoadText +#endif + +static Texture2D _cffi_d_LoadTexture(char const * x0) +{ + return LoadTexture(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadTexture(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Texture2D result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadTexture(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(80)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadTexture(Texture2D *result, char const * x0) +{ + { *result = LoadTexture(x0); } +} +#endif + +static Texture2D _cffi_d_LoadTextureCubemap(Image x0, int x1) +{ + return LoadTextureCubemap(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadTextureCubemap(PyObject *self, PyObject *args) +{ + Image x0; + int x1; + Texture2D result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "LoadTextureCubemap", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadTextureCubemap(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(80)); + return pyresult; +} +#else +static void _cffi_f_LoadTextureCubemap(Texture2D *result, Image *x0, int x1) +{ + { *result = LoadTextureCubemap(*x0, x1); } +} +#endif + +static Texture2D _cffi_d_LoadTextureFromImage(Image x0) +{ + return LoadTextureFromImage(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadTextureFromImage(PyObject *self, PyObject *arg0) +{ + Image x0; + Texture2D result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadTextureFromImage(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(80)); + return pyresult; +} +#else +static void _cffi_f_LoadTextureFromImage(Texture2D *result, Image *x0) +{ + { *result = LoadTextureFromImage(*x0); } +} +#endif + +static Wave _cffi_d_LoadWave(char const * x0) +{ + return LoadWave(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_LoadWave(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Wave result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = LoadWave(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(245)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_LoadWave(Wave *result, char const * x0) +{ + { *result = LoadWave(x0); } +} +#endif + +static int _cffi_d_MeasureText(char const * x0, int x1) +{ + return MeasureText(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_MeasureText(PyObject *self, PyObject *args) +{ + char const * x0; + int x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "MeasureText", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = MeasureText(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_MeasureText _cffi_d_MeasureText +#endif + +static Vector2 _cffi_d_MeasureTextEx(Font x0, char const * x1, float x2, float x3) +{ + return MeasureTextEx(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_MeasureTextEx(PyObject *self, PyObject *args) +{ + Font x0; + char const * x1; + float x2; + float x3; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + Vector2 result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "MeasureTextEx", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(66), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + x2 = (float)_cffi_to_c_float(arg2); + if (x2 == (float)-1 && PyErr_Occurred()) + return NULL; + + x3 = (float)_cffi_to_c_float(arg3); + if (x3 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = MeasureTextEx(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(209)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +static void _cffi_f_MeasureTextEx(Vector2 *result, Font *x0, char const * x1, float x2, float x3) +{ + { *result = MeasureTextEx(*x0, x1, x2, x3); } +} +#endif + +static void _cffi_d_MeshBinormals(Mesh * x0) +{ + MeshBinormals(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_MeshBinormals(PyObject *self, PyObject *arg0) +{ + Mesh * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(710), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Mesh *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(710), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { MeshBinormals(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_MeshBinormals _cffi_d_MeshBinormals +#endif + +static BoundingBox _cffi_d_MeshBoundingBox(Mesh x0) +{ + return MeshBoundingBox(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_MeshBoundingBox(PyObject *self, PyObject *arg0) +{ + Mesh x0; + BoundingBox result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(6), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = MeshBoundingBox(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(387)); + return pyresult; +} +#else +static void _cffi_f_MeshBoundingBox(BoundingBox *result, Mesh *x0) +{ + { *result = MeshBoundingBox(*x0); } +} +#endif + +static void _cffi_d_MeshTangents(Mesh * x0) +{ + MeshTangents(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_MeshTangents(PyObject *self, PyObject *arg0) +{ + Mesh * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(710), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Mesh *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(710), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { MeshTangents(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_MeshTangents _cffi_d_MeshTangents +#endif + +static void _cffi_d_OpenURL(char const * x0) +{ + OpenURL(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_OpenURL(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { OpenURL(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_OpenURL _cffi_d_OpenURL +#endif + +static void _cffi_d_PauseAudioStream(AudioStream x0) +{ + PauseAudioStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_PauseAudioStream(PyObject *self, PyObject *arg0) +{ + AudioStream x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { PauseAudioStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_PauseAudioStream(AudioStream *x0) +{ + { PauseAudioStream(*x0); } +} +#endif + +static void _cffi_d_PauseMusicStream(Music x0) +{ + PauseMusicStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_PauseMusicStream(PyObject *self, PyObject *arg0) +{ + Music x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { PauseMusicStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_PauseMusicStream(Music *x0) +{ + { PauseMusicStream(*x0); } +} +#endif + +static void _cffi_d_PauseSound(Sound x0) +{ + PauseSound(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_PauseSound(PyObject *self, PyObject *arg0) +{ + Sound x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { PauseSound(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_PauseSound(Sound *x0) +{ + { PauseSound(*x0); } +} +#endif + +static void _cffi_d_PlayAudioStream(AudioStream x0) +{ + PlayAudioStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_PlayAudioStream(PyObject *self, PyObject *arg0) +{ + AudioStream x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { PlayAudioStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_PlayAudioStream(AudioStream *x0) +{ + { PlayAudioStream(*x0); } +} +#endif + +static void _cffi_d_PlayMusicStream(Music x0) +{ + PlayMusicStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_PlayMusicStream(PyObject *self, PyObject *arg0) +{ + Music x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { PlayMusicStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_PlayMusicStream(Music *x0) +{ + { PlayMusicStream(*x0); } +} +#endif + +static void _cffi_d_PlaySound(Sound x0) +{ + PlaySound(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_PlaySound(PyObject *self, PyObject *arg0) +{ + Sound x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { PlaySound(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_PlaySound(Sound *x0) +{ + { PlaySound(*x0); } +} +#endif + +static void _cffi_d_PlaySoundMulti(Sound x0) +{ + PlaySoundMulti(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_PlaySoundMulti(PyObject *self, PyObject *arg0) +{ + Sound x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { PlaySoundMulti(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_PlaySoundMulti(Sound *x0) +{ + { PlaySoundMulti(*x0); } +} +#endif + +static void _cffi_d_ResumeAudioStream(AudioStream x0) +{ + ResumeAudioStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ResumeAudioStream(PyObject *self, PyObject *arg0) +{ + AudioStream x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ResumeAudioStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ResumeAudioStream(AudioStream *x0) +{ + { ResumeAudioStream(*x0); } +} +#endif + +static void _cffi_d_ResumeMusicStream(Music x0) +{ + ResumeMusicStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ResumeMusicStream(PyObject *self, PyObject *arg0) +{ + Music x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ResumeMusicStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ResumeMusicStream(Music *x0) +{ + { ResumeMusicStream(*x0); } +} +#endif + +static void _cffi_d_ResumeSound(Sound x0) +{ + ResumeSound(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ResumeSound(PyObject *self, PyObject *arg0) +{ + Sound x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ResumeSound(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_ResumeSound(Sound *x0) +{ + { ResumeSound(*x0); } +} +#endif + +static void _cffi_d_SetAudioStreamPitch(AudioStream x0, float x1) +{ + SetAudioStreamPitch(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetAudioStreamPitch(PyObject *self, PyObject *args) +{ + AudioStream x0; + float x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetAudioStreamPitch", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetAudioStreamPitch(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetAudioStreamPitch(AudioStream *x0, float x1) +{ + { SetAudioStreamPitch(*x0, x1); } +} +#endif + +static void _cffi_d_SetAudioStreamVolume(AudioStream x0, float x1) +{ + SetAudioStreamVolume(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetAudioStreamVolume(PyObject *self, PyObject *args) +{ + AudioStream x0; + float x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetAudioStreamVolume", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetAudioStreamVolume(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetAudioStreamVolume(AudioStream *x0, float x1) +{ + { SetAudioStreamVolume(*x0, x1); } +} +#endif + +static void _cffi_d_SetCameraAltControl(int x0) +{ + SetCameraAltControl(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetCameraAltControl(PyObject *self, PyObject *arg0) +{ + int x0; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetCameraAltControl(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetCameraAltControl _cffi_d_SetCameraAltControl +#endif + +static void _cffi_d_SetCameraMode(Camera3D x0, int x1) +{ + SetCameraMode(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetCameraMode(PyObject *self, PyObject *args) +{ + Camera3D x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetCameraMode", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(158), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetCameraMode(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetCameraMode(Camera3D *x0, int x1) +{ + { SetCameraMode(*x0, x1); } +} +#endif + +static void _cffi_d_SetCameraMoveControls(int x0, int x1, int x2, int x3, int x4, int x5) +{ + SetCameraMoveControls(x0, x1, x2, x3, x4, x5); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetCameraMoveControls(PyObject *self, PyObject *args) +{ + int x0; + int x1; + int x2; + int x3; + int x4; + int x5; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + PyObject *arg5; + + if (!PyArg_UnpackTuple(args, "SetCameraMoveControls", 6, 6, &arg0, &arg1, &arg2, &arg3, &arg4, &arg5)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + x5 = _cffi_to_c_int(arg5, int); + if (x5 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetCameraMoveControls(x0, x1, x2, x3, x4, x5); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetCameraMoveControls _cffi_d_SetCameraMoveControls +#endif + +static void _cffi_d_SetCameraPanControl(int x0) +{ + SetCameraPanControl(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetCameraPanControl(PyObject *self, PyObject *arg0) +{ + int x0; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetCameraPanControl(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetCameraPanControl _cffi_d_SetCameraPanControl +#endif + +static void _cffi_d_SetCameraSmoothZoomControl(int x0) +{ + SetCameraSmoothZoomControl(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetCameraSmoothZoomControl(PyObject *self, PyObject *arg0) +{ + int x0; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetCameraSmoothZoomControl(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetCameraSmoothZoomControl _cffi_d_SetCameraSmoothZoomControl +#endif + +static void _cffi_d_SetClipboardText(char const * x0) +{ + SetClipboardText(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetClipboardText(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetClipboardText(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetClipboardText _cffi_d_SetClipboardText +#endif + +static void _cffi_d_SetConfigFlags(unsigned int x0) +{ + SetConfigFlags(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetConfigFlags(PyObject *self, PyObject *arg0) +{ + unsigned int x0; + + x0 = _cffi_to_c_int(arg0, unsigned int); + if (x0 == (unsigned int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetConfigFlags(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetConfigFlags _cffi_d_SetConfigFlags +#endif + +static void _cffi_d_SetExitKey(int x0) +{ + SetExitKey(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetExitKey(PyObject *self, PyObject *arg0) +{ + int x0; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetExitKey(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetExitKey _cffi_d_SetExitKey +#endif + +static void _cffi_d_SetGesturesEnabled(unsigned int x0) +{ + SetGesturesEnabled(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetGesturesEnabled(PyObject *self, PyObject *arg0) +{ + unsigned int x0; + + x0 = _cffi_to_c_int(arg0, unsigned int); + if (x0 == (unsigned int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetGesturesEnabled(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetGesturesEnabled _cffi_d_SetGesturesEnabled +#endif + +static void _cffi_d_SetMasterVolume(float x0) +{ + SetMasterVolume(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMasterVolume(PyObject *self, PyObject *arg0) +{ + float x0; + + x0 = (float)_cffi_to_c_float(arg0); + if (x0 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMasterVolume(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetMasterVolume _cffi_d_SetMasterVolume +#endif + +static void _cffi_d_SetMaterialTexture(Material * x0, int x1, Texture2D x2) +{ + SetMaterialTexture(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMaterialTexture(PyObject *self, PyObject *args) +{ + Material * x0; + int x1; + Texture2D x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "SetMaterialTexture", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(699), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Material *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(699), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(80), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMaterialTexture(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetMaterialTexture(Material * x0, int x1, Texture2D *x2) +{ + { SetMaterialTexture(x0, x1, *x2); } +} +#endif + +static void _cffi_d_SetMatrixModelview(Matrix x0) +{ + SetMatrixModelview(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMatrixModelview(PyObject *self, PyObject *arg0) +{ + Matrix x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(707), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMatrixModelview(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetMatrixModelview(Matrix *x0) +{ + { SetMatrixModelview(*x0); } +} +#endif + +static void _cffi_d_SetMatrixProjection(Matrix x0) +{ + SetMatrixProjection(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMatrixProjection(PyObject *self, PyObject *arg0) +{ + Matrix x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(707), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMatrixProjection(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetMatrixProjection(Matrix *x0) +{ + { SetMatrixProjection(*x0); } +} +#endif + +static void _cffi_d_SetModelMeshMaterial(Model * x0, int x1, int x2) +{ + SetModelMeshMaterial(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetModelMeshMaterial(PyObject *self, PyObject *args) +{ + Model * x0; + int x1; + int x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "SetModelMeshMaterial", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(720), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Model *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(720), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetModelMeshMaterial(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetModelMeshMaterial _cffi_d_SetModelMeshMaterial +#endif + +static void _cffi_d_SetMouseOffset(int x0, int x1) +{ + SetMouseOffset(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMouseOffset(PyObject *self, PyObject *args) +{ + int x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetMouseOffset", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMouseOffset(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetMouseOffset _cffi_d_SetMouseOffset +#endif + +static void _cffi_d_SetMousePosition(int x0, int x1) +{ + SetMousePosition(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMousePosition(PyObject *self, PyObject *args) +{ + int x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetMousePosition", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMousePosition(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetMousePosition _cffi_d_SetMousePosition +#endif + +static void _cffi_d_SetMouseScale(float x0, float x1) +{ + SetMouseScale(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMouseScale(PyObject *self, PyObject *args) +{ + float x0; + float x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetMouseScale", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = (float)_cffi_to_c_float(arg0); + if (x0 == (float)-1 && PyErr_Occurred()) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMouseScale(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetMouseScale _cffi_d_SetMouseScale +#endif + +static void _cffi_d_SetMusicLoopCount(Music x0, int x1) +{ + SetMusicLoopCount(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMusicLoopCount(PyObject *self, PyObject *args) +{ + Music x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetMusicLoopCount", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMusicLoopCount(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetMusicLoopCount(Music *x0, int x1) +{ + { SetMusicLoopCount(*x0, x1); } +} +#endif + +static void _cffi_d_SetMusicPitch(Music x0, float x1) +{ + SetMusicPitch(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMusicPitch(PyObject *self, PyObject *args) +{ + Music x0; + float x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetMusicPitch", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMusicPitch(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetMusicPitch(Music *x0, float x1) +{ + { SetMusicPitch(*x0, x1); } +} +#endif + +static void _cffi_d_SetMusicVolume(Music x0, float x1) +{ + SetMusicVolume(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetMusicVolume(PyObject *self, PyObject *args) +{ + Music x0; + float x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetMusicVolume", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetMusicVolume(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetMusicVolume(Music *x0, float x1) +{ + { SetMusicVolume(*x0, x1); } +} +#endif + +static void _cffi_d_SetShaderValue(Shader x0, int x1, void const * x2, int x3) +{ + SetShaderValue(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetShaderValue(PyObject *self, PyObject *args) +{ + Shader x0; + int x1; + void const * x2; + int x3; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "SetShaderValue", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(526), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (void const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(526), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetShaderValue(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetShaderValue(Shader *x0, int x1, void const * x2, int x3) +{ + { SetShaderValue(*x0, x1, x2, x3); } +} +#endif + +static void _cffi_d_SetShaderValueMatrix(Shader x0, int x1, Matrix x2) +{ + SetShaderValueMatrix(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetShaderValueMatrix(PyObject *self, PyObject *args) +{ + Shader x0; + int x1; + Matrix x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "SetShaderValueMatrix", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(707), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetShaderValueMatrix(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetShaderValueMatrix(Shader *x0, int x1, Matrix *x2) +{ + { SetShaderValueMatrix(*x0, x1, *x2); } +} +#endif + +static void _cffi_d_SetShaderValueTexture(Shader x0, int x1, Texture2D x2) +{ + SetShaderValueTexture(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetShaderValueTexture(PyObject *self, PyObject *args) +{ + Shader x0; + int x1; + Texture2D x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "SetShaderValueTexture", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + if (_cffi_to_c((char *)&x2, _cffi_type(80), arg2) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetShaderValueTexture(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetShaderValueTexture(Shader *x0, int x1, Texture2D *x2) +{ + { SetShaderValueTexture(*x0, x1, *x2); } +} +#endif + +static void _cffi_d_SetShaderValueV(Shader x0, int x1, void const * x2, int x3, int x4) +{ + SetShaderValueV(x0, x1, x2, x3, x4); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetShaderValueV(PyObject *self, PyObject *args) +{ + Shader x0; + int x1; + void const * x2; + int x3; + int x4; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + PyObject *arg4; + + if (!PyArg_UnpackTuple(args, "SetShaderValueV", 5, 5, &arg0, &arg1, &arg2, &arg3, &arg4)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(526), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (void const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(526), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + x4 = _cffi_to_c_int(arg4, int); + if (x4 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetShaderValueV(x0, x1, x2, x3, x4); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetShaderValueV(Shader *x0, int x1, void const * x2, int x3, int x4) +{ + { SetShaderValueV(*x0, x1, x2, x3, x4); } +} +#endif + +static void _cffi_d_SetShapesTexture(Texture2D x0, Rectangle x1) +{ + SetShapesTexture(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetShapesTexture(PyObject *self, PyObject *args) +{ + Texture2D x0; + Rectangle x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetShapesTexture", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(77), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetShapesTexture(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetShapesTexture(Texture2D *x0, Rectangle *x1) +{ + { SetShapesTexture(*x0, *x1); } +} +#endif + +static void _cffi_d_SetSoundPitch(Sound x0, float x1) +{ + SetSoundPitch(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetSoundPitch(PyObject *self, PyObject *args) +{ + Sound x0; + float x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetSoundPitch", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetSoundPitch(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetSoundPitch(Sound *x0, float x1) +{ + { SetSoundPitch(*x0, x1); } +} +#endif + +static void _cffi_d_SetSoundVolume(Sound x0, float x1) +{ + SetSoundVolume(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetSoundVolume(PyObject *self, PyObject *args) +{ + Sound x0; + float x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetSoundVolume", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + x1 = (float)_cffi_to_c_float(arg1); + if (x1 == (float)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetSoundVolume(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetSoundVolume(Sound *x0, float x1) +{ + { SetSoundVolume(*x0, x1); } +} +#endif + +static void _cffi_d_SetTargetFPS(int x0) +{ + SetTargetFPS(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetTargetFPS(PyObject *self, PyObject *arg0) +{ + int x0; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetTargetFPS(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetTargetFPS _cffi_d_SetTargetFPS +#endif + +static void _cffi_d_SetTextureFilter(Texture2D x0, int x1) +{ + SetTextureFilter(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetTextureFilter(PyObject *self, PyObject *args) +{ + Texture2D x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetTextureFilter", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetTextureFilter(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetTextureFilter(Texture2D *x0, int x1) +{ + { SetTextureFilter(*x0, x1); } +} +#endif + +static void _cffi_d_SetTextureWrap(Texture2D x0, int x1) +{ + SetTextureWrap(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetTextureWrap(PyObject *self, PyObject *args) +{ + Texture2D x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetTextureWrap", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetTextureWrap(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetTextureWrap(Texture2D *x0, int x1) +{ + { SetTextureWrap(*x0, x1); } +} +#endif + +static void _cffi_d_SetTraceLogExit(int x0) +{ + SetTraceLogExit(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetTraceLogExit(PyObject *self, PyObject *arg0) +{ + int x0; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetTraceLogExit(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetTraceLogExit _cffi_d_SetTraceLogExit +#endif + +static void _cffi_d_SetTraceLogLevel(int x0) +{ + SetTraceLogLevel(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetTraceLogLevel(PyObject *self, PyObject *arg0) +{ + int x0; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetTraceLogLevel(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetTraceLogLevel _cffi_d_SetTraceLogLevel +#endif + +static void _cffi_d_SetVrConfiguration(VrDeviceInfo x0, Shader x1) +{ + SetVrConfiguration(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetVrConfiguration(PyObject *self, PyObject *args) +{ + VrDeviceInfo x0; + Shader x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetVrConfiguration", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(1020), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(258), arg1) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetVrConfiguration(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetVrConfiguration(VrDeviceInfo *x0, Shader *x1) +{ + { SetVrConfiguration(*x0, *x1); } +} +#endif + +static void _cffi_d_SetWindowIcon(Image x0) +{ + SetWindowIcon(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetWindowIcon(PyObject *self, PyObject *arg0) +{ + Image x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetWindowIcon(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_SetWindowIcon(Image *x0) +{ + { SetWindowIcon(*x0); } +} +#endif + +static void _cffi_d_SetWindowMinSize(int x0, int x1) +{ + SetWindowMinSize(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetWindowMinSize(PyObject *self, PyObject *args) +{ + int x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetWindowMinSize", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetWindowMinSize(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetWindowMinSize _cffi_d_SetWindowMinSize +#endif + +static void _cffi_d_SetWindowMonitor(int x0) +{ + SetWindowMonitor(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetWindowMonitor(PyObject *self, PyObject *arg0) +{ + int x0; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetWindowMonitor(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetWindowMonitor _cffi_d_SetWindowMonitor +#endif + +static void _cffi_d_SetWindowPosition(int x0, int x1) +{ + SetWindowPosition(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetWindowPosition(PyObject *self, PyObject *args) +{ + int x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetWindowPosition", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetWindowPosition(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetWindowPosition _cffi_d_SetWindowPosition +#endif + +static void _cffi_d_SetWindowSize(int x0, int x1) +{ + SetWindowSize(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetWindowSize(PyObject *self, PyObject *args) +{ + int x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "SetWindowSize", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetWindowSize(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetWindowSize _cffi_d_SetWindowSize +#endif + +static void _cffi_d_SetWindowTitle(char const * x0) +{ + SetWindowTitle(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_SetWindowTitle(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { SetWindowTitle(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_SetWindowTitle _cffi_d_SetWindowTitle +#endif + +static void _cffi_d_ShowCursor(void) +{ + ShowCursor(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ShowCursor(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ShowCursor(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ShowCursor _cffi_d_ShowCursor +#endif + +static void _cffi_d_StopAudioStream(AudioStream x0) +{ + StopAudioStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_StopAudioStream(PyObject *self, PyObject *arg0) +{ + AudioStream x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { StopAudioStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_StopAudioStream(AudioStream *x0) +{ + { StopAudioStream(*x0); } +} +#endif + +static void _cffi_d_StopMusicStream(Music x0) +{ + StopMusicStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_StopMusicStream(PyObject *self, PyObject *arg0) +{ + Music x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { StopMusicStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_StopMusicStream(Music *x0) +{ + { StopMusicStream(*x0); } +} +#endif + +static void _cffi_d_StopSound(Sound x0) +{ + StopSound(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_StopSound(PyObject *self, PyObject *arg0) +{ + Sound x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { StopSound(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_StopSound(Sound *x0) +{ + { StopSound(*x0); } +} +#endif + +static void _cffi_d_StopSoundMulti(void) +{ + StopSoundMulti(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_StopSoundMulti(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { StopSoundMulti(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_StopSoundMulti _cffi_d_StopSoundMulti +#endif + +static int _cffi_d_StorageLoadValue(int x0) +{ + return StorageLoadValue(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_StorageLoadValue(PyObject *self, PyObject *arg0) +{ + int x0; + int result; + PyObject *pyresult; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = StorageLoadValue(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_StorageLoadValue _cffi_d_StorageLoadValue +#endif + +static void _cffi_d_StorageSaveValue(int x0, int x1) +{ + StorageSaveValue(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_StorageSaveValue(PyObject *self, PyObject *args) +{ + int x0; + int x1; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "StorageSaveValue", 2, 2, &arg0, &arg1)) + return NULL; + + x0 = _cffi_to_c_int(arg0, int); + if (x0 == (int)-1 && PyErr_Occurred()) + return NULL; + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { StorageSaveValue(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_StorageSaveValue _cffi_d_StorageSaveValue +#endif + +static void _cffi_d_TakeScreenshot(char const * x0) +{ + TakeScreenshot(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TakeScreenshot(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { TakeScreenshot(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_TakeScreenshot _cffi_d_TakeScreenshot +#endif + +static void _cffi_d_TextAppend(char * x0, char const * x1, int * x2) +{ + TextAppend(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextAppend(PyObject *self, PyObject *args) +{ + char * x0; + char const * x1; + int * x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "TextAppend", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(319), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(319), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { TextAppend(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_TextAppend _cffi_d_TextAppend +#endif + +static int _cffi_d_TextCopy(char * x0, char const * x1) +{ + return TextCopy(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextCopy(PyObject *self, PyObject *args) +{ + char * x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "TextCopy", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(319), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(319), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextCopy(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextCopy _cffi_d_TextCopy +#endif + +static int _cffi_d_TextFindIndex(char const * x0, char const * x1) +{ + return TextFindIndex(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextFindIndex(PyObject *self, PyObject *args) +{ + char const * x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "TextFindIndex", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextFindIndex(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextFindIndex _cffi_d_TextFindIndex +#endif + +static void _cffi_const_TextFormat(char *o) +{ + *(char const *(* *)(char const *, ...))o = TextFormat; +} + +static char * _cffi_d_TextInsert(char const * x0, char const * x1, int x2) +{ + return TextInsert(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextInsert(PyObject *self, PyObject *args) +{ + char const * x0; + char const * x1; + int x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "TextInsert", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextInsert(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(319)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextInsert _cffi_d_TextInsert +#endif + +static int _cffi_d_TextIsEqual(char const * x0, char const * x1) +{ + return TextIsEqual(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextIsEqual(PyObject *self, PyObject *args) +{ + char const * x0; + char const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "TextIsEqual", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextIsEqual(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextIsEqual _cffi_d_TextIsEqual +#endif + +static char const * _cffi_d_TextJoin(char const * * x0, int x1, char const * x2) +{ + return TextJoin(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextJoin(PyObject *self, PyObject *args) +{ + char const * * x0; + int x1; + char const * x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "TextJoin", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(341), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const * *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(341), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextJoin(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextJoin _cffi_d_TextJoin +#endif + +static unsigned int _cffi_d_TextLength(char const * x0) +{ + return TextLength(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextLength(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + unsigned int result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextLength(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, unsigned int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextLength _cffi_d_TextLength +#endif + +static char * _cffi_d_TextReplace(char * x0, char const * x1, char const * x2) +{ + return TextReplace(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextReplace(PyObject *self, PyObject *args) +{ + char * x0; + char const * x1; + char const * x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "TextReplace", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(319), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(319), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextReplace(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(319)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextReplace _cffi_d_TextReplace +#endif + +static char const * * _cffi_d_TextSplit(char const * x0, char x1, int * x2) +{ + return TextSplit(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextSplit(PyObject *self, PyObject *args) +{ + char const * x0; + char x1; + int * x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "TextSplit", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = (char)_cffi_to_c_char(arg1); + if (x1 == (char)-1 && PyErr_Occurred()) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg2, (char **)&x2); + if (datasize != 0) { + x2 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg2, (char **)&x2, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextSplit(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(341)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextSplit _cffi_d_TextSplit +#endif + +static char const * _cffi_d_TextSubtext(char const * x0, int x1, int x2) +{ + return TextSubtext(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextSubtext(PyObject *self, PyObject *args) +{ + char const * x0; + int x1; + int x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "TextSubtext", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextSubtext(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextSubtext _cffi_d_TextSubtext +#endif + +static int _cffi_d_TextToInteger(char const * x0) +{ + return TextToInteger(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextToInteger(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + int result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextToInteger(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_int(result, int); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextToInteger _cffi_d_TextToInteger +#endif + +static char const * _cffi_d_TextToLower(char const * x0) +{ + return TextToLower(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextToLower(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextToLower(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextToLower _cffi_d_TextToLower +#endif + +static char const * _cffi_d_TextToPascal(char const * x0) +{ + return TextToPascal(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextToPascal(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextToPascal(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextToPascal _cffi_d_TextToPascal +#endif + +static char const * _cffi_d_TextToUpper(char const * x0) +{ + return TextToUpper(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextToUpper(PyObject *self, PyObject *arg0) +{ + char const * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char const * result; + PyObject *pyresult; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(9), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (char const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(9), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextToUpper(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(9)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextToUpper _cffi_d_TextToUpper +#endif + +static char * _cffi_d_TextToUtf8(int * x0, int x1) +{ + return TextToUtf8(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_TextToUtf8(PyObject *self, PyObject *args) +{ + int * x0; + int x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + char * result; + PyObject *pyresult; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "TextToUtf8", 2, 2, &arg0, &arg1)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(11), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (int *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(11), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = TextToUtf8(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_pointer((char *)result, _cffi_type(319)); + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + return pyresult; +} +#else +# define _cffi_f_TextToUtf8 _cffi_d_TextToUtf8 +#endif + +static void _cffi_d_ToggleFullscreen(void) +{ + ToggleFullscreen(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ToggleFullscreen(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ToggleFullscreen(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ToggleFullscreen _cffi_d_ToggleFullscreen +#endif + +static void _cffi_d_ToggleVrMode(void) +{ + ToggleVrMode(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_ToggleVrMode(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { ToggleVrMode(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_ToggleVrMode _cffi_d_ToggleVrMode +#endif + +static void _cffi_const_TraceLog(char *o) +{ + *(void(* *)(int, char const *, ...))o = TraceLog; +} + +static void _cffi_d_UnhideWindow(void) +{ + UnhideWindow(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnhideWindow(PyObject *self, PyObject *noarg) +{ + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnhideWindow(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_UnhideWindow _cffi_d_UnhideWindow +#endif + +static void _cffi_d_UnloadFont(Font x0) +{ + UnloadFont(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadFont(PyObject *self, PyObject *arg0) +{ + Font x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(66), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadFont(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadFont(Font *x0) +{ + { UnloadFont(*x0); } +} +#endif + +static void _cffi_d_UnloadImage(Image x0) +{ + UnloadImage(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadImage(PyObject *self, PyObject *arg0) +{ + Image x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(16), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadImage(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadImage(Image *x0) +{ + { UnloadImage(*x0); } +} +#endif + +static void _cffi_d_UnloadMaterial(Material x0) +{ + UnloadMaterial(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadMaterial(PyObject *self, PyObject *arg0) +{ + Material x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(704), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadMaterial(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadMaterial(Material *x0) +{ + { UnloadMaterial(*x0); } +} +#endif + +static void _cffi_d_UnloadMesh(Mesh x0) +{ + UnloadMesh(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadMesh(PyObject *self, PyObject *arg0) +{ + Mesh x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(6), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadMesh(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadMesh(Mesh *x0) +{ + { UnloadMesh(*x0); } +} +#endif + +static void _cffi_d_UnloadModel(Model x0) +{ + UnloadModel(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadModel(PyObject *self, PyObject *arg0) +{ + Model x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(214), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadModel(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadModel(Model *x0) +{ + { UnloadModel(*x0); } +} +#endif + +static void _cffi_d_UnloadModelAnimation(ModelAnimation x0) +{ + UnloadModelAnimation(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadModelAnimation(PyObject *self, PyObject *arg0) +{ + ModelAnimation x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(404), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadModelAnimation(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadModelAnimation(ModelAnimation *x0) +{ + { UnloadModelAnimation(*x0); } +} +#endif + +static void _cffi_d_UnloadMusicStream(Music x0) +{ + UnloadMusicStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadMusicStream(PyObject *self, PyObject *arg0) +{ + Music x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadMusicStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadMusicStream(Music *x0) +{ + { UnloadMusicStream(*x0); } +} +#endif + +static void _cffi_d_UnloadRenderTexture(RenderTexture2D x0) +{ + UnloadRenderTexture(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadRenderTexture(PyObject *self, PyObject *arg0) +{ + RenderTexture2D x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(800), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadRenderTexture(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadRenderTexture(RenderTexture2D *x0) +{ + { UnloadRenderTexture(*x0); } +} +#endif + +static void _cffi_d_UnloadShader(Shader x0) +{ + UnloadShader(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadShader(PyObject *self, PyObject *arg0) +{ + Shader x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(258), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadShader(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadShader(Shader *x0) +{ + { UnloadShader(*x0); } +} +#endif + +static void _cffi_d_UnloadSound(Sound x0) +{ + UnloadSound(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadSound(PyObject *self, PyObject *arg0) +{ + Sound x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadSound(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadSound(Sound *x0) +{ + { UnloadSound(*x0); } +} +#endif + +static void _cffi_d_UnloadTexture(Texture2D x0) +{ + UnloadTexture(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadTexture(PyObject *self, PyObject *arg0) +{ + Texture2D x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadTexture(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadTexture(Texture2D *x0) +{ + { UnloadTexture(*x0); } +} +#endif + +static void _cffi_d_UnloadWave(Wave x0) +{ + UnloadWave(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UnloadWave(PyObject *self, PyObject *arg0) +{ + Wave x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(245), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UnloadWave(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UnloadWave(Wave *x0) +{ + { UnloadWave(*x0); } +} +#endif + +static void _cffi_d_UpdateAudioStream(AudioStream x0, void const * x1, int x2) +{ + UpdateAudioStream(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UpdateAudioStream(PyObject *self, PyObject *args) +{ + AudioStream x0; + void const * x1; + int x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "UpdateAudioStream", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(384), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(526), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (void const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(526), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UpdateAudioStream(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UpdateAudioStream(AudioStream *x0, void const * x1, int x2) +{ + { UpdateAudioStream(*x0, x1, x2); } +} +#endif + +static void _cffi_d_UpdateCamera(Camera3D * x0) +{ + UpdateCamera(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UpdateCamera(PyObject *self, PyObject *arg0) +{ + Camera3D * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(537), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Camera3D *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(537), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UpdateCamera(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_UpdateCamera _cffi_d_UpdateCamera +#endif + +static void _cffi_d_UpdateModelAnimation(Model x0, ModelAnimation x1, int x2) +{ + UpdateModelAnimation(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UpdateModelAnimation(PyObject *self, PyObject *args) +{ + Model x0; + ModelAnimation x1; + int x2; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "UpdateModelAnimation", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(214), arg0) < 0) + return NULL; + + if (_cffi_to_c((char *)&x1, _cffi_type(404), arg1) < 0) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UpdateModelAnimation(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UpdateModelAnimation(Model *x0, ModelAnimation *x1, int x2) +{ + { UpdateModelAnimation(*x0, *x1, x2); } +} +#endif + +static void _cffi_d_UpdateMusicStream(Music x0) +{ + UpdateMusicStream(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UpdateMusicStream(PyObject *self, PyObject *arg0) +{ + Music x0; + + if (_cffi_to_c((char *)&x0, _cffi_type(371), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UpdateMusicStream(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UpdateMusicStream(Music *x0) +{ + { UpdateMusicStream(*x0); } +} +#endif + +static void _cffi_d_UpdateSound(Sound x0, void const * x1, int x2) +{ + UpdateSound(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UpdateSound(PyObject *self, PyObject *args) +{ + Sound x0; + void const * x1; + int x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "UpdateSound", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(433), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(526), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (void const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(526), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UpdateSound(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UpdateSound(Sound *x0, void const * x1, int x2) +{ + { UpdateSound(*x0, x1, x2); } +} +#endif + +static void _cffi_d_UpdateTexture(Texture2D x0, void const * x1) +{ + UpdateTexture(x0, x1); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UpdateTexture(PyObject *self, PyObject *args) +{ + Texture2D x0; + void const * x1; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + + if (!PyArg_UnpackTuple(args, "UpdateTexture", 2, 2, &arg0, &arg1)) + return NULL; + + if (_cffi_to_c((char *)&x0, _cffi_type(80), arg0) < 0) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(526), arg1, (char **)&x1); + if (datasize != 0) { + x1 = ((size_t)datasize) <= 640 ? (void const *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(526), arg1, (char **)&x1, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UpdateTexture(x0, x1); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +static void _cffi_f_UpdateTexture(Texture2D *x0, void const * x1) +{ + { UpdateTexture(*x0, x1); } +} +#endif + +static void _cffi_d_UpdateVrTracking(Camera3D * x0) +{ + UpdateVrTracking(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_UpdateVrTracking(PyObject *self, PyObject *arg0) +{ + Camera3D * x0; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(537), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Camera3D *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(537), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { UpdateVrTracking(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_UpdateVrTracking _cffi_d_UpdateVrTracking +#endif + +static Wave _cffi_d_WaveCopy(Wave x0) +{ + return WaveCopy(x0); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_WaveCopy(PyObject *self, PyObject *arg0) +{ + Wave x0; + Wave result; + PyObject *pyresult; + + if (_cffi_to_c((char *)&x0, _cffi_type(245), arg0) < 0) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = WaveCopy(x0); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + pyresult = _cffi_from_c_struct((char *)&result, _cffi_type(245)); + return pyresult; +} +#else +static void _cffi_f_WaveCopy(Wave *result, Wave *x0) +{ + { *result = WaveCopy(*x0); } +} +#endif + +static void _cffi_d_WaveCrop(Wave * x0, int x1, int x2) +{ + WaveCrop(x0, x1, x2); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_WaveCrop(PyObject *self, PyObject *args) +{ + Wave * x0; + int x1; + int x2; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + + if (!PyArg_UnpackTuple(args, "WaveCrop", 3, 3, &arg0, &arg1, &arg2)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(1024), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Wave *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(1024), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { WaveCrop(x0, x1, x2); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_WaveCrop _cffi_d_WaveCrop +#endif + +static void _cffi_d_WaveFormat(Wave * x0, int x1, int x2, int x3) +{ + WaveFormat(x0, x1, x2, x3); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_WaveFormat(PyObject *self, PyObject *args) +{ + Wave * x0; + int x1; + int x2; + int x3; + Py_ssize_t datasize; + struct _cffi_freeme_s *large_args_free = NULL; + PyObject *arg0; + PyObject *arg1; + PyObject *arg2; + PyObject *arg3; + + if (!PyArg_UnpackTuple(args, "WaveFormat", 4, 4, &arg0, &arg1, &arg2, &arg3)) + return NULL; + + datasize = _cffi_prepare_pointer_call_argument( + _cffi_type(1024), arg0, (char **)&x0); + if (datasize != 0) { + x0 = ((size_t)datasize) <= 640 ? (Wave *)alloca((size_t)datasize) : NULL; + if (_cffi_convert_array_argument(_cffi_type(1024), arg0, (char **)&x0, + datasize, &large_args_free) < 0) + return NULL; + } + + x1 = _cffi_to_c_int(arg1, int); + if (x1 == (int)-1 && PyErr_Occurred()) + return NULL; + + x2 = _cffi_to_c_int(arg2, int); + if (x2 == (int)-1 && PyErr_Occurred()) + return NULL; + + x3 = _cffi_to_c_int(arg3, int); + if (x3 == (int)-1 && PyErr_Occurred()) + return NULL; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { WaveFormat(x0, x1, x2, x3); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + if (large_args_free != NULL) _cffi_free_array_arguments(large_args_free); + Py_INCREF(Py_None); + return Py_None; +} +#else +# define _cffi_f_WaveFormat _cffi_d_WaveFormat +#endif + +static int _cffi_d_WindowShouldClose(void) +{ + return WindowShouldClose(); +} +#ifndef PYPY_VERSION +static PyObject * +_cffi_f_WindowShouldClose(PyObject *self, PyObject *noarg) +{ + int result; + PyObject *pyresult; + + Py_BEGIN_ALLOW_THREADS + _cffi_restore_errno(); + { result = WindowShouldClose(); } + _cffi_save_errno(); + Py_END_ALLOW_THREADS + + (void)self; /* unused */ + (void)noarg; /* unused */ + pyresult = _cffi_from_c_int(result, int); + return pyresult; +} +#else +# define _cffi_f_WindowShouldClose _cffi_d_WindowShouldClose +#endif + +static int _cffi_const_LOC_MAP_DIFFUSE(unsigned long long *o) +{ + int n = (LOC_MAP_DIFFUSE) <= 0; + *o = (unsigned long long)((LOC_MAP_DIFFUSE) | 0); /* check that LOC_MAP_DIFFUSE is an integer */ + if (!_cffi_check_int(*o, n, 14U)) + n |= 2; + return n; +} + +static int _cffi_const_LOC_MAP_SPECULAR(unsigned long long *o) +{ + int n = (LOC_MAP_SPECULAR) <= 0; + *o = (unsigned long long)((LOC_MAP_SPECULAR) | 0); /* check that LOC_MAP_SPECULAR is an integer */ + if (!_cffi_check_int(*o, n, 15U)) + n |= 2; + return n; +} + +static int _cffi_const_MAP_DIFFUSE(unsigned long long *o) +{ + int n = (MAP_DIFFUSE) <= 0; + *o = (unsigned long long)((MAP_DIFFUSE) | 0); /* check that MAP_DIFFUSE is an integer */ + if (!_cffi_check_int(*o, n, 0)) + n |= 2; + return n; +} + +static int _cffi_const_MAP_SPECULAR(unsigned long long *o) +{ + int n = (MAP_SPECULAR) <= 0; + *o = (unsigned long long)((MAP_SPECULAR) | 0); /* check that MAP_SPECULAR is an integer */ + if (!_cffi_check_int(*o, n, 1U)) + n |= 2; + return n; +} + +static int _cffi_const_MAX_TOUCH_POINTS(unsigned long long *o) +{ + int n = (MAX_TOUCH_POINTS) <= 0; + *o = (unsigned long long)((MAX_TOUCH_POINTS) | 0); /* check that MAX_TOUCH_POINTS is an integer */ + if (!_cffi_check_int(*o, n, 10U)) + n |= 2; + return n; +} + +_CFFI_UNUSED_FN +static void _cffi_checkfld__AudioStream(AudioStream *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->sampleRate) | 0); /* check that 'AudioStream.sampleRate' is an integer */ + (void)((p->sampleSize) | 0); /* check that 'AudioStream.sampleSize' is an integer */ + (void)((p->channels) | 0); /* check that 'AudioStream.channels' is an integer */ + { rAudioBuffer * *tmp = &p->buffer; (void)tmp; } +} +struct _cffi_align__AudioStream { char x; AudioStream y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__BoneInfo(BoneInfo *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { char(*tmp)[32] = &p->name; (void)tmp; } + (void)((p->parent) | 0); /* check that 'BoneInfo.parent' is an integer */ +} +struct _cffi_align__BoneInfo { char x; BoneInfo y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__BoundingBox(BoundingBox *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { Vector3 *tmp = &p->min; (void)tmp; } + { Vector3 *tmp = &p->max; (void)tmp; } +} +struct _cffi_align__BoundingBox { char x; BoundingBox y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Camera2D(Camera2D *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { Vector2 *tmp = &p->offset; (void)tmp; } + { Vector2 *tmp = &p->target; (void)tmp; } + { float *tmp = &p->rotation; (void)tmp; } + { float *tmp = &p->zoom; (void)tmp; } +} +struct _cffi_align__Camera2D { char x; Camera2D y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Camera3D(Camera3D *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { Vector3 *tmp = &p->position; (void)tmp; } + { Vector3 *tmp = &p->target; (void)tmp; } + { Vector3 *tmp = &p->up; (void)tmp; } + { float *tmp = &p->fovy; (void)tmp; } + (void)((p->type) | 0); /* check that 'Camera3D.type' is an integer */ +} +struct _cffi_align__Camera3D { char x; Camera3D y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__CharInfo(CharInfo *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->value) | 0); /* check that 'CharInfo.value' is an integer */ + (void)((p->offsetX) | 0); /* check that 'CharInfo.offsetX' is an integer */ + (void)((p->offsetY) | 0); /* check that 'CharInfo.offsetY' is an integer */ + (void)((p->advanceX) | 0); /* check that 'CharInfo.advanceX' is an integer */ + { Image *tmp = &p->image; (void)tmp; } +} +struct _cffi_align__CharInfo { char x; CharInfo y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Color(Color *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->r) | 0); /* check that 'Color.r' is an integer */ + (void)((p->g) | 0); /* check that 'Color.g' is an integer */ + (void)((p->b) | 0); /* check that 'Color.b' is an integer */ + (void)((p->a) | 0); /* check that 'Color.a' is an integer */ +} +struct _cffi_align__Color { char x; Color y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Font(Font *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->baseSize) | 0); /* check that 'Font.baseSize' is an integer */ + (void)((p->charsCount) | 0); /* check that 'Font.charsCount' is an integer */ + { Texture2D *tmp = &p->texture; (void)tmp; } + { Rectangle * *tmp = &p->recs; (void)tmp; } + { CharInfo * *tmp = &p->chars; (void)tmp; } +} +struct _cffi_align__Font { char x; Font y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Image(Image *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { void * *tmp = &p->data; (void)tmp; } + (void)((p->width) | 0); /* check that 'Image.width' is an integer */ + (void)((p->height) | 0); /* check that 'Image.height' is an integer */ + (void)((p->mipmaps) | 0); /* check that 'Image.mipmaps' is an integer */ + (void)((p->format) | 0); /* check that 'Image.format' is an integer */ +} +struct _cffi_align__Image { char x; Image y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Material(Material *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { Shader *tmp = &p->shader; (void)tmp; } + { MaterialMap * *tmp = &p->maps; (void)tmp; } + { float * *tmp = &p->params; (void)tmp; } +} +struct _cffi_align__Material { char x; Material y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__MaterialMap(MaterialMap *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { Texture2D *tmp = &p->texture; (void)tmp; } + { Color *tmp = &p->color; (void)tmp; } + { float *tmp = &p->value; (void)tmp; } +} +struct _cffi_align__MaterialMap { char x; MaterialMap y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Matrix(Matrix *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { float *tmp = &p->m0; (void)tmp; } + { float *tmp = &p->m4; (void)tmp; } + { float *tmp = &p->m8; (void)tmp; } + { float *tmp = &p->m12; (void)tmp; } + { float *tmp = &p->m1; (void)tmp; } + { float *tmp = &p->m5; (void)tmp; } + { float *tmp = &p->m9; (void)tmp; } + { float *tmp = &p->m13; (void)tmp; } + { float *tmp = &p->m2; (void)tmp; } + { float *tmp = &p->m6; (void)tmp; } + { float *tmp = &p->m10; (void)tmp; } + { float *tmp = &p->m14; (void)tmp; } + { float *tmp = &p->m3; (void)tmp; } + { float *tmp = &p->m7; (void)tmp; } + { float *tmp = &p->m11; (void)tmp; } + { float *tmp = &p->m15; (void)tmp; } +} +struct _cffi_align__Matrix { char x; Matrix y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Mesh(Mesh *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->vertexCount) | 0); /* check that 'Mesh.vertexCount' is an integer */ + (void)((p->triangleCount) | 0); /* check that 'Mesh.triangleCount' is an integer */ + { float * *tmp = &p->vertices; (void)tmp; } + { float * *tmp = &p->texcoords; (void)tmp; } + { float * *tmp = &p->texcoords2; (void)tmp; } + { float * *tmp = &p->normals; (void)tmp; } + { float * *tmp = &p->tangents; (void)tmp; } + { unsigned char * *tmp = &p->colors; (void)tmp; } + { unsigned short * *tmp = &p->indices; (void)tmp; } + { float * *tmp = &p->animVertices; (void)tmp; } + { float * *tmp = &p->animNormals; (void)tmp; } + { int * *tmp = &p->boneIds; (void)tmp; } + { float * *tmp = &p->boneWeights; (void)tmp; } + (void)((p->vaoId) | 0); /* check that 'Mesh.vaoId' is an integer */ + { unsigned int * *tmp = &p->vboId; (void)tmp; } +} +struct _cffi_align__Mesh { char x; Mesh y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Model(Model *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { Matrix *tmp = &p->transform; (void)tmp; } + (void)((p->meshCount) | 0); /* check that 'Model.meshCount' is an integer */ + { Mesh * *tmp = &p->meshes; (void)tmp; } + (void)((p->materialCount) | 0); /* check that 'Model.materialCount' is an integer */ + { Material * *tmp = &p->materials; (void)tmp; } + { int * *tmp = &p->meshMaterial; (void)tmp; } + (void)((p->boneCount) | 0); /* check that 'Model.boneCount' is an integer */ + { BoneInfo * *tmp = &p->bones; (void)tmp; } + { Transform * *tmp = &p->bindPose; (void)tmp; } +} +struct _cffi_align__Model { char x; Model y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__ModelAnimation(ModelAnimation *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->boneCount) | 0); /* check that 'ModelAnimation.boneCount' is an integer */ + { BoneInfo * *tmp = &p->bones; (void)tmp; } + (void)((p->frameCount) | 0); /* check that 'ModelAnimation.frameCount' is an integer */ + { Transform * * *tmp = &p->framePoses; (void)tmp; } +} +struct _cffi_align__ModelAnimation { char x; ModelAnimation y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Music(Music *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->ctxType) | 0); /* check that 'Music.ctxType' is an integer */ + { void * *tmp = &p->ctxData; (void)tmp; } + (void)((p->sampleCount) | 0); /* check that 'Music.sampleCount' is an integer */ + (void)((p->loopCount) | 0); /* check that 'Music.loopCount' is an integer */ + { AudioStream *tmp = &p->stream; (void)tmp; } +} +struct _cffi_align__Music { char x; Music y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__NPatchInfo(NPatchInfo *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { Rectangle *tmp = &p->sourceRec; (void)tmp; } + (void)((p->left) | 0); /* check that 'NPatchInfo.left' is an integer */ + (void)((p->top) | 0); /* check that 'NPatchInfo.top' is an integer */ + (void)((p->right) | 0); /* check that 'NPatchInfo.right' is an integer */ + (void)((p->bottom) | 0); /* check that 'NPatchInfo.bottom' is an integer */ + (void)((p->type) | 0); /* check that 'NPatchInfo.type' is an integer */ +} +struct _cffi_align__NPatchInfo { char x; NPatchInfo y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Ray(Ray *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { Vector3 *tmp = &p->position; (void)tmp; } + { Vector3 *tmp = &p->direction; (void)tmp; } +} +struct _cffi_align__Ray { char x; Ray y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__RayHitInfo(RayHitInfo *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->hit) | 0); /* check that 'RayHitInfo.hit' is an integer */ + { float *tmp = &p->distance; (void)tmp; } + { Vector3 *tmp = &p->position; (void)tmp; } + { Vector3 *tmp = &p->normal; (void)tmp; } +} +struct _cffi_align__RayHitInfo { char x; RayHitInfo y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Rectangle(Rectangle *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { float *tmp = &p->x; (void)tmp; } + { float *tmp = &p->y; (void)tmp; } + { float *tmp = &p->width; (void)tmp; } + { float *tmp = &p->height; (void)tmp; } +} +struct _cffi_align__Rectangle { char x; Rectangle y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__RenderTexture2D(RenderTexture2D *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->id) | 0); /* check that 'RenderTexture2D.id' is an integer */ + { Texture2D *tmp = &p->texture; (void)tmp; } + { Texture2D *tmp = &p->depth; (void)tmp; } + (void)((p->depthTexture) | 0); /* check that 'RenderTexture2D.depthTexture' is an integer */ +} +struct _cffi_align__RenderTexture2D { char x; RenderTexture2D y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Shader(Shader *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->id) | 0); /* check that 'Shader.id' is an integer */ + { int * *tmp = &p->locs; (void)tmp; } +} +struct _cffi_align__Shader { char x; Shader y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Sound(Sound *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->sampleCount) | 0); /* check that 'Sound.sampleCount' is an integer */ + { AudioStream *tmp = &p->stream; (void)tmp; } +} +struct _cffi_align__Sound { char x; Sound y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Texture2D(Texture2D *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->id) | 0); /* check that 'Texture2D.id' is an integer */ + (void)((p->width) | 0); /* check that 'Texture2D.width' is an integer */ + (void)((p->height) | 0); /* check that 'Texture2D.height' is an integer */ + (void)((p->mipmaps) | 0); /* check that 'Texture2D.mipmaps' is an integer */ + (void)((p->format) | 0); /* check that 'Texture2D.format' is an integer */ +} +struct _cffi_align__Texture2D { char x; Texture2D y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Transform(Transform *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { Vector3 *tmp = &p->translation; (void)tmp; } + { Vector4 *tmp = &p->rotation; (void)tmp; } + { Vector3 *tmp = &p->scale; (void)tmp; } +} +struct _cffi_align__Transform { char x; Transform y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Vector2(Vector2 *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { float *tmp = &p->x; (void)tmp; } + { float *tmp = &p->y; (void)tmp; } +} +struct _cffi_align__Vector2 { char x; Vector2 y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Vector3(Vector3 *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { float *tmp = &p->x; (void)tmp; } + { float *tmp = &p->y; (void)tmp; } + { float *tmp = &p->z; (void)tmp; } +} +struct _cffi_align__Vector3 { char x; Vector3 y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Vector4(Vector4 *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + { float *tmp = &p->x; (void)tmp; } + { float *tmp = &p->y; (void)tmp; } + { float *tmp = &p->z; (void)tmp; } + { float *tmp = &p->w; (void)tmp; } +} +struct _cffi_align__Vector4 { char x; Vector4 y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__VrDeviceInfo(VrDeviceInfo *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->hResolution) | 0); /* check that 'VrDeviceInfo.hResolution' is an integer */ + (void)((p->vResolution) | 0); /* check that 'VrDeviceInfo.vResolution' is an integer */ + { float *tmp = &p->hScreenSize; (void)tmp; } + { float *tmp = &p->vScreenSize; (void)tmp; } + { float *tmp = &p->vScreenCenter; (void)tmp; } + { float *tmp = &p->eyeToScreenDistance; (void)tmp; } + { float *tmp = &p->lensSeparationDistance; (void)tmp; } + { float *tmp = &p->interpupillaryDistance; (void)tmp; } + { float(*tmp)[4] = &p->lensDistortionValues; (void)tmp; } + { float(*tmp)[4] = &p->chromaAbCorrection; (void)tmp; } +} +struct _cffi_align__VrDeviceInfo { char x; VrDeviceInfo y; }; + +_CFFI_UNUSED_FN +static void _cffi_checkfld__Wave(Wave *p) +{ + /* only to generate compile-time warnings or errors */ + (void)p; + (void)((p->sampleCount) | 0); /* check that 'Wave.sampleCount' is an integer */ + (void)((p->sampleRate) | 0); /* check that 'Wave.sampleRate' is an integer */ + (void)((p->sampleSize) | 0); /* check that 'Wave.sampleSize' is an integer */ + (void)((p->channels) | 0); /* check that 'Wave.channels' is an integer */ + { void * *tmp = &p->data; (void)tmp; } +} +struct _cffi_align__Wave { char x; Wave y; }; + +static const struct _cffi_global_s _cffi_globals[] = { + { "BLEND_ADDITIVE", (void *)_cffi_const_BLEND_ADDITIVE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "BLEND_ALPHA", (void *)_cffi_const_BLEND_ALPHA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "BLEND_MULTIPLIED", (void *)_cffi_const_BLEND_MULTIPLIED, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "BeginBlendMode", (void *)_cffi_f_BeginBlendMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1063), (void *)_cffi_d_BeginBlendMode }, + { "BeginDrawing", (void *)_cffi_f_BeginDrawing, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_BeginDrawing }, + { "BeginMode2D", (void *)_cffi_f_BeginMode2D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 533), (void *)_cffi_d_BeginMode2D }, + { "BeginMode3D", (void *)_cffi_f_BeginMode3D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 539), (void *)_cffi_d_BeginMode3D }, + { "BeginScissorMode", (void *)_cffi_f_BeginScissorMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1108), (void *)_cffi_d_BeginScissorMode }, + { "BeginShaderMode", (void *)_cffi_f_BeginShaderMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 802), (void *)_cffi_d_BeginShaderMode }, + { "BeginTextureMode", (void *)_cffi_f_BeginTextureMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 799), (void *)_cffi_d_BeginTextureMode }, + { "BeginVrDrawing", (void *)_cffi_f_BeginVrDrawing, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_BeginVrDrawing }, + { "CAMERA_CUSTOM", (void *)_cffi_const_CAMERA_CUSTOM, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CAMERA_FIRST_PERSON", (void *)_cffi_const_CAMERA_FIRST_PERSON, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CAMERA_FREE", (void *)_cffi_const_CAMERA_FREE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CAMERA_ORBITAL", (void *)_cffi_const_CAMERA_ORBITAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CAMERA_ORTHOGRAPHIC", (void *)_cffi_const_CAMERA_ORTHOGRAPHIC, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CAMERA_PERSPECTIVE", (void *)_cffi_const_CAMERA_PERSPECTIVE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CAMERA_THIRD_PERSON", (void *)_cffi_const_CAMERA_THIRD_PERSON, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_ASTC_4x4_RGBA", (void *)_cffi_const_COMPRESSED_ASTC_4x4_RGBA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_ASTC_8x8_RGBA", (void *)_cffi_const_COMPRESSED_ASTC_8x8_RGBA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_DXT1_RGB", (void *)_cffi_const_COMPRESSED_DXT1_RGB, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_DXT1_RGBA", (void *)_cffi_const_COMPRESSED_DXT1_RGBA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_DXT3_RGBA", (void *)_cffi_const_COMPRESSED_DXT3_RGBA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_DXT5_RGBA", (void *)_cffi_const_COMPRESSED_DXT5_RGBA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_ETC1_RGB", (void *)_cffi_const_COMPRESSED_ETC1_RGB, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_ETC2_EAC_RGBA", (void *)_cffi_const_COMPRESSED_ETC2_EAC_RGBA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_ETC2_RGB", (void *)_cffi_const_COMPRESSED_ETC2_RGB, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_PVRT_RGB", (void *)_cffi_const_COMPRESSED_PVRT_RGB, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "COMPRESSED_PVRT_RGBA", (void *)_cffi_const_COMPRESSED_PVRT_RGBA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CUBEMAP_AUTO_DETECT", (void *)_cffi_const_CUBEMAP_AUTO_DETECT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CUBEMAP_CROSS_FOUR_BY_THREE", (void *)_cffi_const_CUBEMAP_CROSS_FOUR_BY_THREE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CUBEMAP_CROSS_THREE_BY_FOUR", (void *)_cffi_const_CUBEMAP_CROSS_THREE_BY_FOUR, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CUBEMAP_LINE_HORIZONTAL", (void *)_cffi_const_CUBEMAP_LINE_HORIZONTAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CUBEMAP_LINE_VERTICAL", (void *)_cffi_const_CUBEMAP_LINE_VERTICAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "CUBEMAP_PANORAMA", (void *)_cffi_const_CUBEMAP_PANORAMA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "ChangeDirectory", (void *)_cffi_f_ChangeDirectory, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 471), (void *)_cffi_d_ChangeDirectory }, + { "CheckCollisionBoxSphere", (void *)_cffi_f_CheckCollisionBoxSphere, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 390), (void *)_cffi_d_CheckCollisionBoxSphere }, + { "CheckCollisionBoxes", (void *)_cffi_f_CheckCollisionBoxes, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 386), (void *)_cffi_d_CheckCollisionBoxes }, + { "CheckCollisionCircleRec", (void *)_cffi_f_CheckCollisionCircleRec, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 450), (void *)_cffi_d_CheckCollisionCircleRec }, + { "CheckCollisionCircles", (void *)_cffi_f_CheckCollisionCircles, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 455), (void *)_cffi_d_CheckCollisionCircles }, + { "CheckCollisionPointCircle", (void *)_cffi_f_CheckCollisionPointCircle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 445), (void *)_cffi_d_CheckCollisionPointCircle }, + { "CheckCollisionPointRec", (void *)_cffi_f_CheckCollisionPointRec, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 435), (void *)_cffi_d_CheckCollisionPointRec }, + { "CheckCollisionPointTriangle", (void *)_cffi_f_CheckCollisionPointTriangle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 439), (void *)_cffi_d_CheckCollisionPointTriangle }, + { "CheckCollisionRayBox", (void *)_cffi_f_CheckCollisionRayBox, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 409), (void *)_cffi_d_CheckCollisionRayBox }, + { "CheckCollisionRaySphere", (void *)_cffi_f_CheckCollisionRaySphere, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 413), (void *)_cffi_d_CheckCollisionRaySphere }, + { "CheckCollisionRaySphereEx", (void *)_cffi_f_CheckCollisionRaySphereEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 418), (void *)_cffi_d_CheckCollisionRaySphereEx }, + { "CheckCollisionRecs", (void *)_cffi_f_CheckCollisionRecs, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 424), (void *)_cffi_d_CheckCollisionRecs }, + { "CheckCollisionSpheres", (void *)_cffi_f_CheckCollisionSpheres, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 461), (void *)_cffi_d_CheckCollisionSpheres }, + { "ClearBackground", (void *)_cffi_f_ClearBackground, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 561), (void *)_cffi_d_ClearBackground }, + { "ClearDirectoryFiles", (void *)_cffi_f_ClearDirectoryFiles, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_ClearDirectoryFiles }, + { "ClearDroppedFiles", (void *)_cffi_f_ClearDroppedFiles, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_ClearDroppedFiles }, + { "CloseAudioDevice", (void *)_cffi_f_CloseAudioDevice, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_CloseAudioDevice }, + { "CloseAudioStream", (void *)_cffi_f_CloseAudioStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 517), (void *)_cffi_d_CloseAudioStream }, + { "CloseVrSimulator", (void *)_cffi_f_CloseVrSimulator, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_CloseVrSimulator }, + { "CloseWindow", (void *)_cffi_f_CloseWindow, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_CloseWindow }, + { "CodepointToUtf8", (void *)_cffi_f_CodepointToUtf8, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 359), (void *)_cffi_d_CodepointToUtf8 }, + { "ColorFromHSV", (void *)_cffi_f_ColorFromHSV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 27), (void *)_cffi_d_ColorFromHSV }, + { "ColorFromNormalized", (void *)_cffi_f_ColorFromNormalized, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 30), (void *)_cffi_d_ColorFromNormalized }, + { "ColorNormalize", (void *)_cffi_f_ColorNormalize, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 302), (void *)_cffi_d_ColorNormalize }, + { "ColorToHSV", (void *)_cffi_f_ColorToHSV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 296), (void *)_cffi_d_ColorToHSV }, + { "ColorToInt", (void *)_cffi_f_ColorToInt, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 395), (void *)_cffi_d_ColorToInt }, + { "CompressData", (void *)_cffi_f_CompressData, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 507), (void *)_cffi_d_CompressData }, + { "DecompressData", (void *)_cffi_f_DecompressData, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 507), (void *)_cffi_d_DecompressData }, + { "DirectoryExists", (void *)_cffi_f_DirectoryExists, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 471), (void *)_cffi_d_DirectoryExists }, + { "DisableCursor", (void *)_cffi_f_DisableCursor, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_DisableCursor }, + { "DrawBillboard", (void *)_cffi_f_DrawBillboard, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 550), (void *)_cffi_d_DrawBillboard }, + { "DrawBillboardRec", (void *)_cffi_f_DrawBillboardRec, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 542), (void *)_cffi_d_DrawBillboardRec }, + { "DrawBoundingBox", (void *)_cffi_f_DrawBoundingBox, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 529), (void *)_cffi_d_DrawBoundingBox }, + { "DrawCircle", (void *)_cffi_f_DrawCircle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1088), (void *)_cffi_d_DrawCircle }, + { "DrawCircle3D", (void *)_cffi_f_DrawCircle3D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 990), (void *)_cffi_d_DrawCircle3D }, + { "DrawCircleGradient", (void *)_cffi_f_DrawCircleGradient, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1094), (void *)_cffi_d_DrawCircleGradient }, + { "DrawCircleLines", (void *)_cffi_f_DrawCircleLines, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1088), (void *)_cffi_d_DrawCircleLines }, + { "DrawCircleSector", (void *)_cffi_f_DrawCircleSector, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 953), (void *)_cffi_d_DrawCircleSector }, + { "DrawCircleSectorLines", (void *)_cffi_f_DrawCircleSectorLines, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 953), (void *)_cffi_d_DrawCircleSectorLines }, + { "DrawCircleV", (void *)_cffi_f_DrawCircleV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 939), (void *)_cffi_d_DrawCircleV }, + { "DrawCube", (void *)_cffi_f_DrawCube, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 997), (void *)_cffi_d_DrawCube }, + { "DrawCubeTexture", (void *)_cffi_f_DrawCubeTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 891), (void *)_cffi_d_DrawCubeTexture }, + { "DrawCubeV", (void *)_cffi_f_DrawCubeV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 980), (void *)_cffi_d_DrawCubeV }, + { "DrawCubeWires", (void *)_cffi_f_DrawCubeWires, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 997), (void *)_cffi_d_DrawCubeWires }, + { "DrawCubeWiresV", (void *)_cffi_f_DrawCubeWiresV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 980), (void *)_cffi_d_DrawCubeWiresV }, + { "DrawCylinder", (void *)_cffi_f_DrawCylinder, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1004), (void *)_cffi_d_DrawCylinder }, + { "DrawCylinderWires", (void *)_cffi_f_DrawCylinderWires, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1004), (void *)_cffi_d_DrawCylinderWires }, + { "DrawEllipse", (void *)_cffi_f_DrawEllipse, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1101), (void *)_cffi_d_DrawEllipse }, + { "DrawEllipseLines", (void *)_cffi_f_DrawEllipseLines, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1101), (void *)_cffi_d_DrawEllipseLines }, + { "DrawFPS", (void *)_cffi_f_DrawFPS, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1074), (void *)_cffi_d_DrawFPS }, + { "DrawGizmo", (void *)_cffi_f_DrawGizmo, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 968), (void *)_cffi_d_DrawGizmo }, + { "DrawGrid", (void *)_cffi_f_DrawGrid, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1070), (void *)_cffi_d_DrawGrid }, + { "DrawLine", (void *)_cffi_f_DrawLine, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1114), (void *)_cffi_d_DrawLine }, + { "DrawLine3D", (void *)_cffi_f_DrawLine3D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 980), (void *)_cffi_d_DrawLine3D }, + { "DrawLineBezier", (void *)_cffi_f_DrawLineBezier, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 933), (void *)_cffi_d_DrawLineBezier }, + { "DrawLineEx", (void *)_cffi_f_DrawLineEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 933), (void *)_cffi_d_DrawLineEx }, + { "DrawLineStrip", (void *)_cffi_f_DrawLineStrip, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 913), (void *)_cffi_d_DrawLineStrip }, + { "DrawLineV", (void *)_cffi_f_DrawLineV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 922), (void *)_cffi_d_DrawLineV }, + { "DrawModel", (void *)_cffi_f_DrawModel, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 740), (void *)_cffi_d_DrawModel }, + { "DrawModelEx", (void *)_cffi_f_DrawModelEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 732), (void *)_cffi_d_DrawModelEx }, + { "DrawModelWires", (void *)_cffi_f_DrawModelWires, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 740), (void *)_cffi_d_DrawModelWires }, + { "DrawModelWiresEx", (void *)_cffi_f_DrawModelWiresEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 732), (void *)_cffi_d_DrawModelWiresEx }, + { "DrawPixel", (void *)_cffi_f_DrawPixel, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1078), (void *)_cffi_d_DrawPixel }, + { "DrawPixelV", (void *)_cffi_f_DrawPixelV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 918), (void *)_cffi_d_DrawPixelV }, + { "DrawPlane", (void *)_cffi_f_DrawPlane, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 975), (void *)_cffi_d_DrawPlane }, + { "DrawPoint3D", (void *)_cffi_f_DrawPoint3D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 971), (void *)_cffi_d_DrawPoint3D }, + { "DrawPoly", (void *)_cffi_f_DrawPoly, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 961), (void *)_cffi_d_DrawPoly }, + { "DrawPolyLines", (void *)_cffi_f_DrawPolyLines, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 961), (void *)_cffi_d_DrawPolyLines }, + { "DrawRay", (void *)_cffi_f_DrawRay, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 760), (void *)_cffi_d_DrawRay }, + { "DrawRectangle", (void *)_cffi_f_DrawRectangle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1114), (void *)_cffi_d_DrawRectangle }, + { "DrawRectangleGradientEx", (void *)_cffi_f_DrawRectangleGradientEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 768), (void *)_cffi_d_DrawRectangleGradientEx }, + { "DrawRectangleGradientH", (void *)_cffi_f_DrawRectangleGradientH, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1121), (void *)_cffi_d_DrawRectangleGradientH }, + { "DrawRectangleGradientV", (void *)_cffi_f_DrawRectangleGradientV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1121), (void *)_cffi_d_DrawRectangleGradientV }, + { "DrawRectangleLines", (void *)_cffi_f_DrawRectangleLines, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1114), (void *)_cffi_d_DrawRectangleLines }, + { "DrawRectangleLinesEx", (void *)_cffi_f_DrawRectangleLinesEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 794), (void *)_cffi_d_DrawRectangleLinesEx }, + { "DrawRectanglePro", (void *)_cffi_f_DrawRectanglePro, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 775), (void *)_cffi_d_DrawRectanglePro }, + { "DrawRectangleRec", (void *)_cffi_f_DrawRectangleRec, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 764), (void *)_cffi_d_DrawRectangleRec }, + { "DrawRectangleRounded", (void *)_cffi_f_DrawRectangleRounded, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 781), (void *)_cffi_d_DrawRectangleRounded }, + { "DrawRectangleRoundedLines", (void *)_cffi_f_DrawRectangleRoundedLines, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 787), (void *)_cffi_d_DrawRectangleRoundedLines }, + { "DrawRectangleV", (void *)_cffi_f_DrawRectangleV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 922), (void *)_cffi_d_DrawRectangleV }, + { "DrawRing", (void *)_cffi_f_DrawRing, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 944), (void *)_cffi_d_DrawRing }, + { "DrawRingLines", (void *)_cffi_f_DrawRingLines, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 944), (void *)_cffi_d_DrawRingLines }, + { "DrawSphere", (void *)_cffi_f_DrawSphere, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 985), (void *)_cffi_d_DrawSphere }, + { "DrawSphereEx", (void *)_cffi_f_DrawSphereEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1012), (void *)_cffi_d_DrawSphereEx }, + { "DrawSphereWires", (void *)_cffi_f_DrawSphereWires, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1012), (void *)_cffi_d_DrawSphereWires }, + { "DrawText", (void *)_cffi_f_DrawText, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1049), (void *)_cffi_d_DrawText }, + { "DrawTextCodepoint", (void *)_cffi_f_DrawTextCodepoint, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 597), (void *)_cffi_d_DrawTextCodepoint }, + { "DrawTextEx", (void *)_cffi_f_DrawTextEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 589), (void *)_cffi_d_DrawTextEx }, + { "DrawTextRec", (void *)_cffi_f_DrawTextRec, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 567), (void *)_cffi_d_DrawTextRec }, + { "DrawTextRecEx", (void *)_cffi_f_DrawTextRecEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 576), (void *)_cffi_d_DrawTextRecEx }, + { "DrawTexture", (void *)_cffi_f_DrawTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 903), (void *)_cffi_d_DrawTexture }, + { "DrawTextureEx", (void *)_cffi_f_DrawTextureEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 884), (void *)_cffi_d_DrawTextureEx }, + { "DrawTextureNPatch", (void *)_cffi_f_DrawTextureNPatch, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 846), (void *)_cffi_d_DrawTextureNPatch }, + { "DrawTexturePro", (void *)_cffi_f_DrawTexturePro, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 858), (void *)_cffi_d_DrawTexturePro }, + { "DrawTextureQuad", (void *)_cffi_f_DrawTextureQuad, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 877), (void *)_cffi_d_DrawTextureQuad }, + { "DrawTextureRec", (void *)_cffi_f_DrawTextureRec, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 866), (void *)_cffi_d_DrawTextureRec }, + { "DrawTextureV", (void *)_cffi_f_DrawTextureV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 872), (void *)_cffi_d_DrawTextureV }, + { "DrawTriangle", (void *)_cffi_f_DrawTriangle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 927), (void *)_cffi_d_DrawTriangle }, + { "DrawTriangleFan", (void *)_cffi_f_DrawTriangleFan, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 913), (void *)_cffi_d_DrawTriangleFan }, + { "DrawTriangleLines", (void *)_cffi_f_DrawTriangleLines, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 927), (void *)_cffi_d_DrawTriangleLines }, + { "DrawTriangleStrip", (void *)_cffi_f_DrawTriangleStrip, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 913), (void *)_cffi_d_DrawTriangleStrip }, + { "EnableCursor", (void *)_cffi_f_EnableCursor, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_EnableCursor }, + { "EndBlendMode", (void *)_cffi_f_EndBlendMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_EndBlendMode }, + { "EndDrawing", (void *)_cffi_f_EndDrawing, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_EndDrawing }, + { "EndMode2D", (void *)_cffi_f_EndMode2D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_EndMode2D }, + { "EndMode3D", (void *)_cffi_f_EndMode3D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_EndMode3D }, + { "EndScissorMode", (void *)_cffi_f_EndScissorMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_EndScissorMode }, + { "EndShaderMode", (void *)_cffi_f_EndShaderMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_EndShaderMode }, + { "EndTextureMode", (void *)_cffi_f_EndTextureMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_EndTextureMode }, + { "EndVrDrawing", (void *)_cffi_f_EndVrDrawing, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_EndVrDrawing }, + { "ExportImage", (void *)_cffi_f_ExportImage, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 694), (void *)_cffi_d_ExportImage }, + { "ExportImageAsCode", (void *)_cffi_f_ExportImageAsCode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 694), (void *)_cffi_d_ExportImageAsCode }, + { "ExportMesh", (void *)_cffi_f_ExportMesh, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 715), (void *)_cffi_d_ExportMesh }, + { "ExportWave", (void *)_cffi_f_ExportWave, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1037), (void *)_cffi_d_ExportWave }, + { "ExportWaveAsCode", (void *)_cffi_f_ExportWaveAsCode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1037), (void *)_cffi_d_ExportWaveAsCode }, + { "FILTER_ANISOTROPIC_16X", (void *)_cffi_const_FILTER_ANISOTROPIC_16X, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FILTER_ANISOTROPIC_4X", (void *)_cffi_const_FILTER_ANISOTROPIC_4X, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FILTER_ANISOTROPIC_8X", (void *)_cffi_const_FILTER_ANISOTROPIC_8X, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FILTER_BILINEAR", (void *)_cffi_const_FILTER_BILINEAR, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FILTER_POINT", (void *)_cffi_const_FILTER_POINT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FILTER_TRILINEAR", (void *)_cffi_const_FILTER_TRILINEAR, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FLAG_FULLSCREEN_MODE", (void *)_cffi_const_FLAG_FULLSCREEN_MODE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FLAG_MSAA_4X_HINT", (void *)_cffi_const_FLAG_MSAA_4X_HINT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FLAG_RESERVED", (void *)_cffi_const_FLAG_RESERVED, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FLAG_VSYNC_HINT", (void *)_cffi_const_FLAG_VSYNC_HINT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FLAG_WINDOW_ALWAYS_RUN", (void *)_cffi_const_FLAG_WINDOW_ALWAYS_RUN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FLAG_WINDOW_HIDDEN", (void *)_cffi_const_FLAG_WINDOW_HIDDEN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FLAG_WINDOW_RESIZABLE", (void *)_cffi_const_FLAG_WINDOW_RESIZABLE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FLAG_WINDOW_TRANSPARENT", (void *)_cffi_const_FLAG_WINDOW_TRANSPARENT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FLAG_WINDOW_UNDECORATED", (void *)_cffi_const_FLAG_WINDOW_UNDECORATED, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FONT_BITMAP", (void *)_cffi_const_FONT_BITMAP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FONT_DEFAULT", (void *)_cffi_const_FONT_DEFAULT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "FONT_SDF", (void *)_cffi_const_FONT_SDF, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "Fade", (void *)_cffi_f_Fade, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 23), (void *)_cffi_d_Fade }, + { "FileExists", (void *)_cffi_f_FileExists, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 471), (void *)_cffi_d_FileExists }, + { "GAMEPAD_AXIS_LEFT_TRIGGER", (void *)_cffi_const_GAMEPAD_AXIS_LEFT_TRIGGER, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_AXIS_LEFT_X", (void *)_cffi_const_GAMEPAD_AXIS_LEFT_X, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_AXIS_LEFT_Y", (void *)_cffi_const_GAMEPAD_AXIS_LEFT_Y, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_AXIS_RIGHT_TRIGGER", (void *)_cffi_const_GAMEPAD_AXIS_RIGHT_TRIGGER, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_AXIS_RIGHT_X", (void *)_cffi_const_GAMEPAD_AXIS_RIGHT_X, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_AXIS_RIGHT_Y", (void *)_cffi_const_GAMEPAD_AXIS_RIGHT_Y, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_AXIS_UNKNOWN", (void *)_cffi_const_GAMEPAD_AXIS_UNKNOWN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_LEFT_FACE_DOWN", (void *)_cffi_const_GAMEPAD_BUTTON_LEFT_FACE_DOWN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_LEFT_FACE_LEFT", (void *)_cffi_const_GAMEPAD_BUTTON_LEFT_FACE_LEFT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_LEFT_FACE_RIGHT", (void *)_cffi_const_GAMEPAD_BUTTON_LEFT_FACE_RIGHT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_LEFT_FACE_UP", (void *)_cffi_const_GAMEPAD_BUTTON_LEFT_FACE_UP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_LEFT_THUMB", (void *)_cffi_const_GAMEPAD_BUTTON_LEFT_THUMB, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_LEFT_TRIGGER_1", (void *)_cffi_const_GAMEPAD_BUTTON_LEFT_TRIGGER_1, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_LEFT_TRIGGER_2", (void *)_cffi_const_GAMEPAD_BUTTON_LEFT_TRIGGER_2, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_MIDDLE", (void *)_cffi_const_GAMEPAD_BUTTON_MIDDLE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_MIDDLE_LEFT", (void *)_cffi_const_GAMEPAD_BUTTON_MIDDLE_LEFT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_MIDDLE_RIGHT", (void *)_cffi_const_GAMEPAD_BUTTON_MIDDLE_RIGHT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_RIGHT_FACE_DOWN", (void *)_cffi_const_GAMEPAD_BUTTON_RIGHT_FACE_DOWN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_RIGHT_FACE_LEFT", (void *)_cffi_const_GAMEPAD_BUTTON_RIGHT_FACE_LEFT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_RIGHT_FACE_RIGHT", (void *)_cffi_const_GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_RIGHT_FACE_UP", (void *)_cffi_const_GAMEPAD_BUTTON_RIGHT_FACE_UP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_RIGHT_THUMB", (void *)_cffi_const_GAMEPAD_BUTTON_RIGHT_THUMB, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_RIGHT_TRIGGER_1", (void *)_cffi_const_GAMEPAD_BUTTON_RIGHT_TRIGGER_1, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_RIGHT_TRIGGER_2", (void *)_cffi_const_GAMEPAD_BUTTON_RIGHT_TRIGGER_2, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_BUTTON_UNKNOWN", (void *)_cffi_const_GAMEPAD_BUTTON_UNKNOWN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_PLAYER1", (void *)_cffi_const_GAMEPAD_PLAYER1, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_PLAYER2", (void *)_cffi_const_GAMEPAD_PLAYER2, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_PLAYER3", (void *)_cffi_const_GAMEPAD_PLAYER3, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GAMEPAD_PLAYER4", (void *)_cffi_const_GAMEPAD_PLAYER4, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_DOUBLETAP", (void *)_cffi_const_GESTURE_DOUBLETAP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_DRAG", (void *)_cffi_const_GESTURE_DRAG, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_HOLD", (void *)_cffi_const_GESTURE_HOLD, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_NONE", (void *)_cffi_const_GESTURE_NONE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_PINCH_IN", (void *)_cffi_const_GESTURE_PINCH_IN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_PINCH_OUT", (void *)_cffi_const_GESTURE_PINCH_OUT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_SWIPE_DOWN", (void *)_cffi_const_GESTURE_SWIPE_DOWN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_SWIPE_LEFT", (void *)_cffi_const_GESTURE_SWIPE_LEFT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_SWIPE_RIGHT", (void *)_cffi_const_GESTURE_SWIPE_RIGHT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_SWIPE_UP", (void *)_cffi_const_GESTURE_SWIPE_UP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GESTURE_TAP", (void *)_cffi_const_GESTURE_TAP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "GenImageCellular", (void *)_cffi_f_GenImageCellular, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 120), (void *)_cffi_d_GenImageCellular }, + { "GenImageChecked", (void *)_cffi_f_GenImageChecked, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 125), (void *)_cffi_d_GenImageChecked }, + { "GenImageColor", (void *)_cffi_f_GenImageColor, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 97), (void *)_cffi_d_GenImageColor }, + { "GenImageFontAtlas", (void *)_cffi_f_GenImageFontAtlas, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 52), (void *)_cffi_d_GenImageFontAtlas }, + { "GenImageGradientH", (void *)_cffi_f_GenImageGradientH, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 102), (void *)_cffi_d_GenImageGradientH }, + { "GenImageGradientRadial", (void *)_cffi_f_GenImageGradientRadial, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 113), (void *)_cffi_d_GenImageGradientRadial }, + { "GenImageGradientV", (void *)_cffi_f_GenImageGradientV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 102), (void *)_cffi_d_GenImageGradientV }, + { "GenImagePerlinNoise", (void *)_cffi_f_GenImagePerlinNoise, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 133), (void *)_cffi_d_GenImagePerlinNoise }, + { "GenImageWhiteNoise", (void *)_cffi_f_GenImageWhiteNoise, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 108), (void *)_cffi_d_GenImageWhiteNoise }, + { "GenMeshCube", (void *)_cffi_f_GenMeshCube, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 170), (void *)_cffi_d_GenMeshCube }, + { "GenMeshCubicmap", (void *)_cffi_f_GenMeshCubicmap, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 166), (void *)_cffi_d_GenMeshCubicmap }, + { "GenMeshCylinder", (void *)_cffi_f_GenMeshCylinder, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 175), (void *)_cffi_d_GenMeshCylinder }, + { "GenMeshHeightmap", (void *)_cffi_f_GenMeshHeightmap, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 166), (void *)_cffi_d_GenMeshHeightmap }, + { "GenMeshHemiSphere", (void *)_cffi_f_GenMeshHemiSphere, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 186), (void *)_cffi_d_GenMeshHemiSphere }, + { "GenMeshKnot", (void *)_cffi_f_GenMeshKnot, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 180), (void *)_cffi_d_GenMeshKnot }, + { "GenMeshPlane", (void *)_cffi_f_GenMeshPlane, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 180), (void *)_cffi_d_GenMeshPlane }, + { "GenMeshPoly", (void *)_cffi_f_GenMeshPoly, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 191), (void *)_cffi_d_GenMeshPoly }, + { "GenMeshSphere", (void *)_cffi_f_GenMeshSphere, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 186), (void *)_cffi_d_GenMeshSphere }, + { "GenMeshTorus", (void *)_cffi_f_GenMeshTorus, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 180), (void *)_cffi_d_GenMeshTorus }, + { "GenTextureBRDF", (void *)_cffi_f_GenTextureBRDF, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 262), (void *)_cffi_d_GenTextureBRDF }, + { "GenTextureCubemap", (void *)_cffi_f_GenTextureCubemap, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 257), (void *)_cffi_d_GenTextureCubemap }, + { "GenTextureIrradiance", (void *)_cffi_f_GenTextureIrradiance, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 257), (void *)_cffi_d_GenTextureIrradiance }, + { "GenTextureMipmaps", (void *)_cffi_f_GenTextureMipmaps, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 840), (void *)_cffi_d_GenTextureMipmaps }, + { "GenTexturePrefilter", (void *)_cffi_f_GenTexturePrefilter, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 257), (void *)_cffi_d_GenTexturePrefilter }, + { "GetCameraMatrix", (void *)_cffi_f_GetCameraMatrix, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 157), (void *)_cffi_d_GetCameraMatrix }, + { "GetCameraMatrix2D", (void *)_cffi_f_GetCameraMatrix2D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 154), (void *)_cffi_d_GetCameraMatrix2D }, + { "GetClipboardText", (void *)_cffi_f_GetClipboardText, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 363), (void *)_cffi_d_GetClipboardText }, + { "GetCodepoints", (void *)_cffi_f_GetCodepoints, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 379), (void *)_cffi_d_GetCodepoints }, + { "GetCodepointsCount", (void *)_cffi_f_GetCodepointsCount, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 471), (void *)_cffi_d_GetCodepointsCount }, + { "GetCollisionRayGround", (void *)_cffi_f_GetCollisionRayGround, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 222), (void *)_cffi_d_GetCollisionRayGround }, + { "GetCollisionRayModel", (void *)_cffi_f_GetCollisionRayModel, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 212), (void *)_cffi_d_GetCollisionRayModel }, + { "GetCollisionRayTriangle", (void *)_cffi_f_GetCollisionRayTriangle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 216), (void *)_cffi_d_GetCollisionRayTriangle }, + { "GetCollisionRec", (void *)_cffi_f_GetCollisionRec, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 230), (void *)_cffi_d_GetCollisionRec }, + { "GetColor", (void *)_cffi_f_GetColor, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 33), (void *)_cffi_d_GetColor }, + { "GetDirectoryFiles", (void *)_cffi_f_GetDirectoryFiles, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 311), (void *)_cffi_d_GetDirectoryFiles }, + { "GetDirectoryPath", (void *)_cffi_f_GetDirectoryPath, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 345), (void *)_cffi_d_GetDirectoryPath }, + { "GetDroppedFiles", (void *)_cffi_f_GetDroppedFiles, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 315), (void *)_cffi_d_GetDroppedFiles }, + { "GetExtension", (void *)_cffi_f_GetExtension, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 345), (void *)_cffi_d_GetExtension }, + { "GetFPS", (void *)_cffi_f_GetFPS, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetFPS }, + { "GetFileModTime", (void *)_cffi_f_GetFileModTime, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 504), (void *)_cffi_d_GetFileModTime }, + { "GetFileName", (void *)_cffi_f_GetFileName, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 345), (void *)_cffi_d_GetFileName }, + { "GetFileNameWithoutExt", (void *)_cffi_f_GetFileNameWithoutExt, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 345), (void *)_cffi_d_GetFileNameWithoutExt }, + { "GetFontDefault", (void *)_cffi_f_GetFontDefault, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 50), (void *)_cffi_d_GetFontDefault }, + { "GetFrameTime", (void *)_cffi_f_GetFrameTime, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 377), (void *)_cffi_d_GetFrameTime }, + { "GetGamepadAxisCount", (void *)_cffi_f_GetGamepadAxisCount, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_GetGamepadAxisCount }, + { "GetGamepadAxisMovement", (void *)_cffi_f_GetGamepadAxisMovement, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 373), (void *)_cffi_d_GetGamepadAxisMovement }, + { "GetGamepadButtonPressed", (void *)_cffi_f_GetGamepadButtonPressed, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetGamepadButtonPressed }, + { "GetGamepadName", (void *)_cffi_f_GetGamepadName, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 356), (void *)_cffi_d_GetGamepadName }, + { "GetGestureDetected", (void *)_cffi_f_GetGestureDetected, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetGestureDetected }, + { "GetGestureDragAngle", (void *)_cffi_f_GetGestureDragAngle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 377), (void *)_cffi_d_GetGestureDragAngle }, + { "GetGestureDragVector", (void *)_cffi_f_GetGestureDragVector, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 294), (void *)_cffi_d_GetGestureDragVector }, + { "GetGestureHoldDuration", (void *)_cffi_f_GetGestureHoldDuration, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 377), (void *)_cffi_d_GetGestureHoldDuration }, + { "GetGesturePinchAngle", (void *)_cffi_f_GetGesturePinchAngle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 377), (void *)_cffi_d_GetGesturePinchAngle }, + { "GetGesturePinchVector", (void *)_cffi_f_GetGesturePinchVector, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 294), (void *)_cffi_d_GetGesturePinchVector }, + { "GetGlyphIndex", (void *)_cffi_f_GetGlyphIndex, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 398), (void *)_cffi_d_GetGlyphIndex }, + { "GetImageAlphaBorder", (void *)_cffi_f_GetImageAlphaBorder, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 226), (void *)_cffi_d_GetImageAlphaBorder }, + { "GetImageData", (void *)_cffi_f_GetImageData, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 15), (void *)_cffi_d_GetImageData }, + { "GetImageDataNormalized", (void *)_cffi_f_GetImageDataNormalized, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 299), (void *)_cffi_d_GetImageDataNormalized }, + { "GetKeyPressed", (void *)_cffi_f_GetKeyPressed, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetKeyPressed }, + { "GetMatrixModelview", (void *)_cffi_f_GetMatrixModelview, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 160), (void *)_cffi_d_GetMatrixModelview }, + { "GetMatrixProjection", (void *)_cffi_f_GetMatrixProjection, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 160), (void *)_cffi_d_GetMatrixProjection }, + { "GetMonitorCount", (void *)_cffi_f_GetMonitorCount, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetMonitorCount }, + { "GetMonitorHeight", (void *)_cffi_f_GetMonitorHeight, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_GetMonitorHeight }, + { "GetMonitorName", (void *)_cffi_f_GetMonitorName, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 356), (void *)_cffi_d_GetMonitorName }, + { "GetMonitorPhysicalHeight", (void *)_cffi_f_GetMonitorPhysicalHeight, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_GetMonitorPhysicalHeight }, + { "GetMonitorPhysicalWidth", (void *)_cffi_f_GetMonitorPhysicalWidth, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_GetMonitorPhysicalWidth }, + { "GetMonitorWidth", (void *)_cffi_f_GetMonitorWidth, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_GetMonitorWidth }, + { "GetMousePosition", (void *)_cffi_f_GetMousePosition, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 294), (void *)_cffi_d_GetMousePosition }, + { "GetMouseRay", (void *)_cffi_f_GetMouseRay, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 208), (void *)_cffi_d_GetMouseRay }, + { "GetMouseWheelMove", (void *)_cffi_f_GetMouseWheelMove, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetMouseWheelMove }, + { "GetMouseX", (void *)_cffi_f_GetMouseX, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetMouseX }, + { "GetMouseY", (void *)_cffi_f_GetMouseY, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetMouseY }, + { "GetMusicTimeLength", (void *)_cffi_f_GetMusicTimeLength, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 370), (void *)_cffi_d_GetMusicTimeLength }, + { "GetMusicTimePlayed", (void *)_cffi_f_GetMusicTimePlayed, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 370), (void *)_cffi_d_GetMusicTimePlayed }, + { "GetNextCodepoint", (void *)_cffi_f_GetNextCodepoint, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 478), (void *)_cffi_d_GetNextCodepoint }, + { "GetPixelDataSize", (void *)_cffi_f_GetPixelDataSize, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 497), (void *)_cffi_d_GetPixelDataSize }, + { "GetPrevDirectoryPath", (void *)_cffi_f_GetPrevDirectoryPath, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 345), (void *)_cffi_d_GetPrevDirectoryPath }, + { "GetRandomValue", (void *)_cffi_f_GetRandomValue, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 493), (void *)_cffi_d_GetRandomValue }, + { "GetScreenData", (void *)_cffi_f_GetScreenData, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 146), (void *)_cffi_d_GetScreenData }, + { "GetScreenHeight", (void *)_cffi_f_GetScreenHeight, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetScreenHeight }, + { "GetScreenToWorld2D", (void *)_cffi_f_GetScreenToWorld2D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 277), (void *)_cffi_d_GetScreenToWorld2D }, + { "GetScreenWidth", (void *)_cffi_f_GetScreenWidth, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetScreenWidth }, + { "GetShaderDefault", (void *)_cffi_f_GetShaderDefault, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 242), (void *)_cffi_d_GetShaderDefault }, + { "GetShaderLocation", (void *)_cffi_f_GetShaderLocation, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 428), (void *)_cffi_d_GetShaderLocation }, + { "GetSoundsPlaying", (void *)_cffi_f_GetSoundsPlaying, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetSoundsPlaying }, + { "GetTextureData", (void *)_cffi_f_GetTextureData, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 79), (void *)_cffi_d_GetTextureData }, + { "GetTextureDefault", (void *)_cffi_f_GetTextureDefault, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 269), (void *)_cffi_d_GetTextureDefault }, + { "GetTime", (void *)_cffi_f_GetTime, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 365), (void *)_cffi_d_GetTime }, + { "GetTouchPointsCount", (void *)_cffi_f_GetTouchPointsCount, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetTouchPointsCount }, + { "GetTouchPosition", (void *)_cffi_f_GetTouchPosition, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 291), (void *)_cffi_d_GetTouchPosition }, + { "GetTouchX", (void *)_cffi_f_GetTouchX, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetTouchX }, + { "GetTouchY", (void *)_cffi_f_GetTouchY, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_GetTouchY }, + { "GetWaveData", (void *)_cffi_f_GetWaveData, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 367), (void *)_cffi_d_GetWaveData }, + { "GetWindowHandle", (void *)_cffi_f_GetWindowHandle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 515), (void *)_cffi_d_GetWindowHandle }, + { "GetWindowPosition", (void *)_cffi_f_GetWindowPosition, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 294), (void *)_cffi_d_GetWindowPosition }, + { "GetWorkingDirectory", (void *)_cffi_f_GetWorkingDirectory, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 363), (void *)_cffi_d_GetWorkingDirectory }, + { "GetWorldToScreen", (void *)_cffi_f_GetWorldToScreen, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 281), (void *)_cffi_d_GetWorldToScreen }, + { "GetWorldToScreen2D", (void *)_cffi_f_GetWorldToScreen2D, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 277), (void *)_cffi_d_GetWorldToScreen2D }, + { "GetWorldToScreenEx", (void *)_cffi_f_GetWorldToScreenEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 285), (void *)_cffi_d_GetWorldToScreenEx }, + { "HideCursor", (void *)_cffi_f_HideCursor, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_HideCursor }, + { "HideWindow", (void *)_cffi_f_HideWindow, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_HideWindow }, + { "ImageAlphaClear", (void *)_cffi_f_ImageAlphaClear, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 616), (void *)_cffi_d_ImageAlphaClear }, + { "ImageAlphaCrop", (void *)_cffi_f_ImageAlphaCrop, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 663), (void *)_cffi_d_ImageAlphaCrop }, + { "ImageAlphaMask", (void *)_cffi_f_ImageAlphaMask, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 621), (void *)_cffi_d_ImageAlphaMask }, + { "ImageAlphaPremultiply", (void *)_cffi_f_ImageAlphaPremultiply, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 604), (void *)_cffi_d_ImageAlphaPremultiply }, + { "ImageColorBrightness", (void *)_cffi_f_ImageColorBrightness, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 667), (void *)_cffi_d_ImageColorBrightness }, + { "ImageColorContrast", (void *)_cffi_f_ImageColorContrast, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 663), (void *)_cffi_d_ImageColorContrast }, + { "ImageColorGrayscale", (void *)_cffi_f_ImageColorGrayscale, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 604), (void *)_cffi_d_ImageColorGrayscale }, + { "ImageColorInvert", (void *)_cffi_f_ImageColorInvert, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 604), (void *)_cffi_d_ImageColorInvert }, + { "ImageColorReplace", (void *)_cffi_f_ImageColorReplace, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 611), (void *)_cffi_d_ImageColorReplace }, + { "ImageColorTint", (void *)_cffi_f_ImageColorTint, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 607), (void *)_cffi_d_ImageColorTint }, + { "ImageCopy", (void *)_cffi_f_ImageCopy, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 72), (void *)_cffi_d_ImageCopy }, + { "ImageCrop", (void *)_cffi_f_ImageCrop, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 632), (void *)_cffi_d_ImageCrop }, + { "ImageDither", (void *)_cffi_f_ImageDither, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 676), (void *)_cffi_d_ImageDither }, + { "ImageDraw", (void *)_cffi_f_ImageDraw, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 625), (void *)_cffi_d_ImageDraw }, + { "ImageDrawRectangle", (void *)_cffi_f_ImageDrawRectangle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 636), (void *)_cffi_d_ImageDrawRectangle }, + { "ImageDrawRectangleLines", (void *)_cffi_f_ImageDrawRectangleLines, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 641), (void *)_cffi_d_ImageDrawRectangleLines }, + { "ImageDrawText", (void *)_cffi_f_ImageDrawText, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 656), (void *)_cffi_d_ImageDrawText }, + { "ImageDrawTextEx", (void *)_cffi_f_ImageDrawTextEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 647), (void *)_cffi_d_ImageDrawTextEx }, + { "ImageExtractPalette", (void *)_cffi_f_ImageExtractPalette, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 18), (void *)_cffi_d_ImageExtractPalette }, + { "ImageFlipHorizontal", (void *)_cffi_f_ImageFlipHorizontal, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 604), (void *)_cffi_d_ImageFlipHorizontal }, + { "ImageFlipVertical", (void *)_cffi_f_ImageFlipVertical, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 604), (void *)_cffi_d_ImageFlipVertical }, + { "ImageFormat", (void *)_cffi_f_ImageFormat, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 667), (void *)_cffi_d_ImageFormat }, + { "ImageFromImage", (void *)_cffi_f_ImageFromImage, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 75), (void *)_cffi_d_ImageFromImage }, + { "ImageMipmaps", (void *)_cffi_f_ImageMipmaps, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 604), (void *)_cffi_d_ImageMipmaps }, + { "ImageResize", (void *)_cffi_f_ImageResize, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 671), (void *)_cffi_d_ImageResize }, + { "ImageResizeCanvas", (void *)_cffi_f_ImageResizeCanvas, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 683), (void *)_cffi_d_ImageResizeCanvas }, + { "ImageResizeNN", (void *)_cffi_f_ImageResizeNN, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 671), (void *)_cffi_d_ImageResizeNN }, + { "ImageRotateCCW", (void *)_cffi_f_ImageRotateCCW, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 604), (void *)_cffi_d_ImageRotateCCW }, + { "ImageRotateCW", (void *)_cffi_f_ImageRotateCW, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 604), (void *)_cffi_d_ImageRotateCW }, + { "ImageText", (void *)_cffi_f_ImageText, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 85), (void *)_cffi_d_ImageText }, + { "ImageTextEx", (void *)_cffi_f_ImageTextEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 65), (void *)_cffi_d_ImageTextEx }, + { "ImageToPOT", (void *)_cffi_f_ImageToPOT, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 607), (void *)_cffi_d_ImageToPOT }, + { "InitAudioDevice", (void *)_cffi_f_InitAudioDevice, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_InitAudioDevice }, + { "InitAudioStream", (void *)_cffi_f_InitAudioStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 0), (void *)_cffi_d_InitAudioStream }, + { "InitVrSimulator", (void *)_cffi_f_InitVrSimulator, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_InitVrSimulator }, + { "InitWindow", (void *)_cffi_f_InitWindow, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1083), (void *)_cffi_d_InitWindow }, + { "IsAudioDeviceReady", (void *)_cffi_f_IsAudioDeviceReady, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_IsAudioDeviceReady }, + { "IsAudioStreamPlaying", (void *)_cffi_f_IsAudioStreamPlaying, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 383), (void *)_cffi_d_IsAudioStreamPlaying }, + { "IsAudioStreamProcessed", (void *)_cffi_f_IsAudioStreamProcessed, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 383), (void *)_cffi_d_IsAudioStreamProcessed }, + { "IsCursorHidden", (void *)_cffi_f_IsCursorHidden, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_IsCursorHidden }, + { "IsFileDropped", (void *)_cffi_f_IsFileDropped, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_IsFileDropped }, + { "IsFileExtension", (void *)_cffi_f_IsFileExtension, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 474), (void *)_cffi_d_IsFileExtension }, + { "IsGamepadAvailable", (void *)_cffi_f_IsGamepadAvailable, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsGamepadAvailable }, + { "IsGamepadButtonDown", (void *)_cffi_f_IsGamepadButtonDown, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 493), (void *)_cffi_d_IsGamepadButtonDown }, + { "IsGamepadButtonPressed", (void *)_cffi_f_IsGamepadButtonPressed, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 493), (void *)_cffi_d_IsGamepadButtonPressed }, + { "IsGamepadButtonReleased", (void *)_cffi_f_IsGamepadButtonReleased, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 493), (void *)_cffi_d_IsGamepadButtonReleased }, + { "IsGamepadButtonUp", (void *)_cffi_f_IsGamepadButtonUp, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 493), (void *)_cffi_d_IsGamepadButtonUp }, + { "IsGamepadName", (void *)_cffi_f_IsGamepadName, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 489), (void *)_cffi_d_IsGamepadName }, + { "IsGestureDetected", (void *)_cffi_f_IsGestureDetected, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsGestureDetected }, + { "IsKeyDown", (void *)_cffi_f_IsKeyDown, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsKeyDown }, + { "IsKeyPressed", (void *)_cffi_f_IsKeyPressed, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsKeyPressed }, + { "IsKeyReleased", (void *)_cffi_f_IsKeyReleased, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsKeyReleased }, + { "IsKeyUp", (void *)_cffi_f_IsKeyUp, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsKeyUp }, + { "IsModelAnimationValid", (void *)_cffi_f_IsModelAnimationValid, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 402), (void *)_cffi_d_IsModelAnimationValid }, + { "IsMouseButtonDown", (void *)_cffi_f_IsMouseButtonDown, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsMouseButtonDown }, + { "IsMouseButtonPressed", (void *)_cffi_f_IsMouseButtonPressed, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsMouseButtonPressed }, + { "IsMouseButtonReleased", (void *)_cffi_f_IsMouseButtonReleased, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsMouseButtonReleased }, + { "IsMouseButtonUp", (void *)_cffi_f_IsMouseButtonUp, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_IsMouseButtonUp }, + { "IsMusicPlaying", (void *)_cffi_f_IsMusicPlaying, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 406), (void *)_cffi_d_IsMusicPlaying }, + { "IsSoundPlaying", (void *)_cffi_f_IsSoundPlaying, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 432), (void *)_cffi_d_IsSoundPlaying }, + { "IsVrSimulatorReady", (void *)_cffi_f_IsVrSimulatorReady, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_IsVrSimulatorReady }, + { "IsWindowHidden", (void *)_cffi_f_IsWindowHidden, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_IsWindowHidden }, + { "IsWindowMinimized", (void *)_cffi_f_IsWindowMinimized, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_IsWindowMinimized }, + { "IsWindowReady", (void *)_cffi_f_IsWindowReady, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_IsWindowReady }, + { "IsWindowResized", (void *)_cffi_f_IsWindowResized, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_IsWindowResized }, + { "KEY_A", (void *)_cffi_const_KEY_A, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_APOSTROPHE", (void *)_cffi_const_KEY_APOSTROPHE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_B", (void *)_cffi_const_KEY_B, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_BACK", (void *)_cffi_const_KEY_BACK, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_BACKSLASH", (void *)_cffi_const_KEY_BACKSLASH, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_BACKSPACE", (void *)_cffi_const_KEY_BACKSPACE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_C", (void *)_cffi_const_KEY_C, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_CAPS_LOCK", (void *)_cffi_const_KEY_CAPS_LOCK, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_COMMA", (void *)_cffi_const_KEY_COMMA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_D", (void *)_cffi_const_KEY_D, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_DELETE", (void *)_cffi_const_KEY_DELETE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_DOWN", (void *)_cffi_const_KEY_DOWN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_E", (void *)_cffi_const_KEY_E, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_EIGHT", (void *)_cffi_const_KEY_EIGHT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_END", (void *)_cffi_const_KEY_END, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_ENTER", (void *)_cffi_const_KEY_ENTER, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_EQUAL", (void *)_cffi_const_KEY_EQUAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_ESCAPE", (void *)_cffi_const_KEY_ESCAPE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F", (void *)_cffi_const_KEY_F, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F1", (void *)_cffi_const_KEY_F1, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F10", (void *)_cffi_const_KEY_F10, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F11", (void *)_cffi_const_KEY_F11, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F12", (void *)_cffi_const_KEY_F12, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F2", (void *)_cffi_const_KEY_F2, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F3", (void *)_cffi_const_KEY_F3, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F4", (void *)_cffi_const_KEY_F4, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F5", (void *)_cffi_const_KEY_F5, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F6", (void *)_cffi_const_KEY_F6, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F7", (void *)_cffi_const_KEY_F7, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F8", (void *)_cffi_const_KEY_F8, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_F9", (void *)_cffi_const_KEY_F9, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_FIVE", (void *)_cffi_const_KEY_FIVE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_FOUR", (void *)_cffi_const_KEY_FOUR, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_G", (void *)_cffi_const_KEY_G, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_GRAVE", (void *)_cffi_const_KEY_GRAVE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_H", (void *)_cffi_const_KEY_H, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_HOME", (void *)_cffi_const_KEY_HOME, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_I", (void *)_cffi_const_KEY_I, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_INSERT", (void *)_cffi_const_KEY_INSERT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_J", (void *)_cffi_const_KEY_J, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_K", (void *)_cffi_const_KEY_K, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KB_MENU", (void *)_cffi_const_KEY_KB_MENU, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_0", (void *)_cffi_const_KEY_KP_0, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_1", (void *)_cffi_const_KEY_KP_1, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_2", (void *)_cffi_const_KEY_KP_2, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_3", (void *)_cffi_const_KEY_KP_3, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_4", (void *)_cffi_const_KEY_KP_4, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_5", (void *)_cffi_const_KEY_KP_5, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_6", (void *)_cffi_const_KEY_KP_6, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_7", (void *)_cffi_const_KEY_KP_7, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_8", (void *)_cffi_const_KEY_KP_8, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_9", (void *)_cffi_const_KEY_KP_9, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_ADD", (void *)_cffi_const_KEY_KP_ADD, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_DECIMAL", (void *)_cffi_const_KEY_KP_DECIMAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_DIVIDE", (void *)_cffi_const_KEY_KP_DIVIDE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_ENTER", (void *)_cffi_const_KEY_KP_ENTER, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_EQUAL", (void *)_cffi_const_KEY_KP_EQUAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_MULTIPLY", (void *)_cffi_const_KEY_KP_MULTIPLY, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_KP_SUBTRACT", (void *)_cffi_const_KEY_KP_SUBTRACT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_L", (void *)_cffi_const_KEY_L, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_LEFT", (void *)_cffi_const_KEY_LEFT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_LEFT_ALT", (void *)_cffi_const_KEY_LEFT_ALT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_LEFT_BRACKET", (void *)_cffi_const_KEY_LEFT_BRACKET, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_LEFT_CONTROL", (void *)_cffi_const_KEY_LEFT_CONTROL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_LEFT_SHIFT", (void *)_cffi_const_KEY_LEFT_SHIFT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_LEFT_SUPER", (void *)_cffi_const_KEY_LEFT_SUPER, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_M", (void *)_cffi_const_KEY_M, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_MENU", (void *)_cffi_const_KEY_MENU, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_MINUS", (void *)_cffi_const_KEY_MINUS, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_N", (void *)_cffi_const_KEY_N, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_NINE", (void *)_cffi_const_KEY_NINE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_NUM_LOCK", (void *)_cffi_const_KEY_NUM_LOCK, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_O", (void *)_cffi_const_KEY_O, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_ONE", (void *)_cffi_const_KEY_ONE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_P", (void *)_cffi_const_KEY_P, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_PAGE_DOWN", (void *)_cffi_const_KEY_PAGE_DOWN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_PAGE_UP", (void *)_cffi_const_KEY_PAGE_UP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_PAUSE", (void *)_cffi_const_KEY_PAUSE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_PERIOD", (void *)_cffi_const_KEY_PERIOD, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_PRINT_SCREEN", (void *)_cffi_const_KEY_PRINT_SCREEN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_Q", (void *)_cffi_const_KEY_Q, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_R", (void *)_cffi_const_KEY_R, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_RIGHT", (void *)_cffi_const_KEY_RIGHT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_RIGHT_ALT", (void *)_cffi_const_KEY_RIGHT_ALT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_RIGHT_BRACKET", (void *)_cffi_const_KEY_RIGHT_BRACKET, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_RIGHT_CONTROL", (void *)_cffi_const_KEY_RIGHT_CONTROL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_RIGHT_SHIFT", (void *)_cffi_const_KEY_RIGHT_SHIFT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_RIGHT_SUPER", (void *)_cffi_const_KEY_RIGHT_SUPER, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_S", (void *)_cffi_const_KEY_S, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_SCROLL_LOCK", (void *)_cffi_const_KEY_SCROLL_LOCK, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_SEMICOLON", (void *)_cffi_const_KEY_SEMICOLON, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_SEVEN", (void *)_cffi_const_KEY_SEVEN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_SIX", (void *)_cffi_const_KEY_SIX, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_SLASH", (void *)_cffi_const_KEY_SLASH, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_SPACE", (void *)_cffi_const_KEY_SPACE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_T", (void *)_cffi_const_KEY_T, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_TAB", (void *)_cffi_const_KEY_TAB, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_THREE", (void *)_cffi_const_KEY_THREE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_TWO", (void *)_cffi_const_KEY_TWO, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_U", (void *)_cffi_const_KEY_U, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_UP", (void *)_cffi_const_KEY_UP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_V", (void *)_cffi_const_KEY_V, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_VOLUME_DOWN", (void *)_cffi_const_KEY_VOLUME_DOWN, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_VOLUME_UP", (void *)_cffi_const_KEY_VOLUME_UP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_W", (void *)_cffi_const_KEY_W, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_X", (void *)_cffi_const_KEY_X, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_Y", (void *)_cffi_const_KEY_Y, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_Z", (void *)_cffi_const_KEY_Z, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "KEY_ZERO", (void *)_cffi_const_KEY_ZERO, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_COLOR_AMBIENT", (void *)_cffi_const_LOC_COLOR_AMBIENT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_COLOR_DIFFUSE", (void *)_cffi_const_LOC_COLOR_DIFFUSE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_COLOR_SPECULAR", (void *)_cffi_const_LOC_COLOR_SPECULAR, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_ALBEDO", (void *)_cffi_const_LOC_MAP_ALBEDO, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_BRDF", (void *)_cffi_const_LOC_MAP_BRDF, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_CUBEMAP", (void *)_cffi_const_LOC_MAP_CUBEMAP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_DIFFUSE", (void *)_cffi_const_LOC_MAP_DIFFUSE, _CFFI_OP(_CFFI_OP_CONSTANT_INT, -1), (void *)0 }, + { "LOC_MAP_EMISSION", (void *)_cffi_const_LOC_MAP_EMISSION, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_HEIGHT", (void *)_cffi_const_LOC_MAP_HEIGHT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_IRRADIANCE", (void *)_cffi_const_LOC_MAP_IRRADIANCE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_METALNESS", (void *)_cffi_const_LOC_MAP_METALNESS, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_NORMAL", (void *)_cffi_const_LOC_MAP_NORMAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_OCCLUSION", (void *)_cffi_const_LOC_MAP_OCCLUSION, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_PREFILTER", (void *)_cffi_const_LOC_MAP_PREFILTER, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_ROUGHNESS", (void *)_cffi_const_LOC_MAP_ROUGHNESS, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MAP_SPECULAR", (void *)_cffi_const_LOC_MAP_SPECULAR, _CFFI_OP(_CFFI_OP_CONSTANT_INT, -1), (void *)0 }, + { "LOC_MATRIX_MODEL", (void *)_cffi_const_LOC_MATRIX_MODEL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MATRIX_MVP", (void *)_cffi_const_LOC_MATRIX_MVP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MATRIX_PROJECTION", (void *)_cffi_const_LOC_MATRIX_PROJECTION, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_MATRIX_VIEW", (void *)_cffi_const_LOC_MATRIX_VIEW, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_VECTOR_VIEW", (void *)_cffi_const_LOC_VECTOR_VIEW, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_VERTEX_COLOR", (void *)_cffi_const_LOC_VERTEX_COLOR, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_VERTEX_NORMAL", (void *)_cffi_const_LOC_VERTEX_NORMAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_VERTEX_POSITION", (void *)_cffi_const_LOC_VERTEX_POSITION, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_VERTEX_TANGENT", (void *)_cffi_const_LOC_VERTEX_TANGENT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_VERTEX_TEXCOORD01", (void *)_cffi_const_LOC_VERTEX_TEXCOORD01, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOC_VERTEX_TEXCOORD02", (void *)_cffi_const_LOC_VERTEX_TEXCOORD02, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOG_ALL", (void *)_cffi_const_LOG_ALL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOG_DEBUG", (void *)_cffi_const_LOG_DEBUG, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOG_ERROR", (void *)_cffi_const_LOG_ERROR, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOG_FATAL", (void *)_cffi_const_LOG_FATAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOG_INFO", (void *)_cffi_const_LOG_INFO, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOG_NONE", (void *)_cffi_const_LOG_NONE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOG_TRACE", (void *)_cffi_const_LOG_TRACE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LOG_WARNING", (void *)_cffi_const_LOG_WARNING, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "LoadFont", (void *)_cffi_f_LoadFont, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 41), (void *)_cffi_d_LoadFont }, + { "LoadFontData", (void *)_cffi_f_LoadFontData, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 8), (void *)_cffi_d_LoadFontData }, + { "LoadFontEx", (void *)_cffi_f_LoadFontEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 44), (void *)_cffi_d_LoadFontEx }, + { "LoadFontFromImage", (void *)_cffi_f_LoadFontFromImage, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 36), (void *)_cffi_d_LoadFontFromImage }, + { "LoadImage", (void *)_cffi_f_LoadImage, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 82), (void *)_cffi_d_LoadImage }, + { "LoadImageEx", (void *)_cffi_f_LoadImageEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 60), (void *)_cffi_d_LoadImageEx }, + { "LoadImagePro", (void *)_cffi_f_LoadImagePro, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 140), (void *)_cffi_d_LoadImagePro }, + { "LoadImageRaw", (void *)_cffi_f_LoadImageRaw, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 90), (void *)_cffi_d_LoadImageRaw }, + { "LoadMaterialDefault", (void *)_cffi_f_LoadMaterialDefault, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 152), (void *)_cffi_d_LoadMaterialDefault }, + { "LoadMaterials", (void *)_cffi_f_LoadMaterials, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 148), (void *)_cffi_d_LoadMaterials }, + { "LoadMeshes", (void *)_cffi_f_LoadMeshes, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 162), (void *)_cffi_d_LoadMeshes }, + { "LoadModel", (void *)_cffi_f_LoadModel, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 198), (void *)_cffi_d_LoadModel }, + { "LoadModelAnimations", (void *)_cffi_f_LoadModelAnimations, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 201), (void *)_cffi_d_LoadModelAnimations }, + { "LoadModelFromMesh", (void *)_cffi_f_LoadModelFromMesh, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 195), (void *)_cffi_d_LoadModelFromMesh }, + { "LoadMusicStream", (void *)_cffi_f_LoadMusicStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 205), (void *)_cffi_d_LoadMusicStream }, + { "LoadRenderTexture", (void *)_cffi_f_LoadRenderTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 234), (void *)_cffi_d_LoadRenderTexture }, + { "LoadShader", (void *)_cffi_f_LoadShader, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 238), (void *)_cffi_d_LoadShader }, + { "LoadShaderCode", (void *)_cffi_f_LoadShaderCode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 238), (void *)_cffi_d_LoadShaderCode }, + { "LoadSound", (void *)_cffi_f_LoadSound, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 247), (void *)_cffi_d_LoadSound }, + { "LoadSoundFromWave", (void *)_cffi_f_LoadSoundFromWave, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 244), (void *)_cffi_d_LoadSoundFromWave }, + { "LoadText", (void *)_cffi_f_LoadText, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 323), (void *)_cffi_d_LoadText }, + { "LoadTexture", (void *)_cffi_f_LoadTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 266), (void *)_cffi_d_LoadTexture }, + { "LoadTextureCubemap", (void *)_cffi_f_LoadTextureCubemap, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 253), (void *)_cffi_d_LoadTextureCubemap }, + { "LoadTextureFromImage", (void *)_cffi_f_LoadTextureFromImage, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 250), (void *)_cffi_d_LoadTextureFromImage }, + { "LoadWave", (void *)_cffi_f_LoadWave, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 308), (void *)_cffi_d_LoadWave }, + { "MAP_ALBEDO", (void *)_cffi_const_MAP_ALBEDO, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_BRDF", (void *)_cffi_const_MAP_BRDF, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_CUBEMAP", (void *)_cffi_const_MAP_CUBEMAP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_DIFFUSE", (void *)_cffi_const_MAP_DIFFUSE, _CFFI_OP(_CFFI_OP_CONSTANT_INT, -1), (void *)0 }, + { "MAP_EMISSION", (void *)_cffi_const_MAP_EMISSION, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_HEIGHT", (void *)_cffi_const_MAP_HEIGHT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_IRRADIANCE", (void *)_cffi_const_MAP_IRRADIANCE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_METALNESS", (void *)_cffi_const_MAP_METALNESS, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_NORMAL", (void *)_cffi_const_MAP_NORMAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_OCCLUSION", (void *)_cffi_const_MAP_OCCLUSION, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_PREFILTER", (void *)_cffi_const_MAP_PREFILTER, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_ROUGHNESS", (void *)_cffi_const_MAP_ROUGHNESS, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MAP_SPECULAR", (void *)_cffi_const_MAP_SPECULAR, _CFFI_OP(_CFFI_OP_CONSTANT_INT, -1), (void *)0 }, + { "MAX_TOUCH_POINTS", (void *)_cffi_const_MAX_TOUCH_POINTS, _CFFI_OP(_CFFI_OP_CONSTANT_INT, -1), (void *)0 }, + { "MOUSE_LEFT_BUTTON", (void *)_cffi_const_MOUSE_LEFT_BUTTON, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MOUSE_MIDDLE_BUTTON", (void *)_cffi_const_MOUSE_MIDDLE_BUTTON, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MOUSE_RIGHT_BUTTON", (void *)_cffi_const_MOUSE_RIGHT_BUTTON, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "MeasureText", (void *)_cffi_f_MeasureText, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 482), (void *)_cffi_d_MeasureText }, + { "MeasureTextEx", (void *)_cffi_f_MeasureTextEx, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 271), (void *)_cffi_d_MeasureTextEx }, + { "MeshBinormals", (void *)_cffi_f_MeshBinormals, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 709), (void *)_cffi_d_MeshBinormals }, + { "MeshBoundingBox", (void *)_cffi_f_MeshBoundingBox, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 5), (void *)_cffi_d_MeshBoundingBox }, + { "MeshTangents", (void *)_cffi_f_MeshTangents, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 709), (void *)_cffi_d_MeshTangents }, + { "NPT_3PATCH_HORIZONTAL", (void *)_cffi_const_NPT_3PATCH_HORIZONTAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "NPT_3PATCH_VERTICAL", (void *)_cffi_const_NPT_3PATCH_VERTICAL, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "NPT_9PATCH", (void *)_cffi_const_NPT_9PATCH, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "OpenURL", (void *)_cffi_f_OpenURL, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1046), (void *)_cffi_d_OpenURL }, + { "PauseAudioStream", (void *)_cffi_f_PauseAudioStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 517), (void *)_cffi_d_PauseAudioStream }, + { "PauseMusicStream", (void *)_cffi_f_PauseMusicStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 749), (void *)_cffi_d_PauseMusicStream }, + { "PauseSound", (void *)_cffi_f_PauseSound, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 828), (void *)_cffi_d_PauseSound }, + { "PlayAudioStream", (void *)_cffi_f_PlayAudioStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 517), (void *)_cffi_d_PlayAudioStream }, + { "PlayMusicStream", (void *)_cffi_f_PlayMusicStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 749), (void *)_cffi_d_PlayMusicStream }, + { "PlaySound", (void *)_cffi_f_PlaySound, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 828), (void *)_cffi_d_PlaySound }, + { "PlaySoundMulti", (void *)_cffi_f_PlaySoundMulti, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 828), (void *)_cffi_d_PlaySoundMulti }, + { "ResumeAudioStream", (void *)_cffi_f_ResumeAudioStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 517), (void *)_cffi_d_ResumeAudioStream }, + { "ResumeMusicStream", (void *)_cffi_f_ResumeMusicStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 749), (void *)_cffi_d_ResumeMusicStream }, + { "ResumeSound", (void *)_cffi_f_ResumeSound, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 828), (void *)_cffi_d_ResumeSound }, + { "SetAudioStreamPitch", (void *)_cffi_f_SetAudioStreamPitch, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 520), (void *)_cffi_d_SetAudioStreamPitch }, + { "SetAudioStreamVolume", (void *)_cffi_f_SetAudioStreamVolume, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 520), (void *)_cffi_d_SetAudioStreamVolume }, + { "SetCameraAltControl", (void *)_cffi_f_SetCameraAltControl, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1063), (void *)_cffi_d_SetCameraAltControl }, + { "SetCameraMode", (void *)_cffi_f_SetCameraMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 557), (void *)_cffi_d_SetCameraMode }, + { "SetCameraMoveControls", (void *)_cffi_f_SetCameraMoveControls, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1129), (void *)_cffi_d_SetCameraMoveControls }, + { "SetCameraPanControl", (void *)_cffi_f_SetCameraPanControl, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1063), (void *)_cffi_d_SetCameraPanControl }, + { "SetCameraSmoothZoomControl", (void *)_cffi_f_SetCameraSmoothZoomControl, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1063), (void *)_cffi_d_SetCameraSmoothZoomControl }, + { "SetClipboardText", (void *)_cffi_f_SetClipboardText, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1046), (void *)_cffi_d_SetClipboardText }, + { "SetConfigFlags", (void *)_cffi_f_SetConfigFlags, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1137), (void *)_cffi_d_SetConfigFlags }, + { "SetExitKey", (void *)_cffi_f_SetExitKey, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1063), (void *)_cffi_d_SetExitKey }, + { "SetGesturesEnabled", (void *)_cffi_f_SetGesturesEnabled, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1137), (void *)_cffi_d_SetGesturesEnabled }, + { "SetMasterVolume", (void *)_cffi_f_SetMasterVolume, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1056), (void *)_cffi_d_SetMasterVolume }, + { "SetMaterialTexture", (void *)_cffi_f_SetMaterialTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 698), (void *)_cffi_d_SetMaterialTexture }, + { "SetMatrixModelview", (void *)_cffi_f_SetMatrixModelview, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 706), (void *)_cffi_d_SetMatrixModelview }, + { "SetMatrixProjection", (void *)_cffi_f_SetMatrixProjection, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 706), (void *)_cffi_d_SetMatrixProjection }, + { "SetModelMeshMaterial", (void *)_cffi_f_SetModelMeshMaterial, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 719), (void *)_cffi_d_SetModelMeshMaterial }, + { "SetMouseOffset", (void *)_cffi_f_SetMouseOffset, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1074), (void *)_cffi_d_SetMouseOffset }, + { "SetMousePosition", (void *)_cffi_f_SetMousePosition, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1074), (void *)_cffi_d_SetMousePosition }, + { "SetMouseScale", (void *)_cffi_f_SetMouseScale, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1059), (void *)_cffi_d_SetMouseScale }, + { "SetMusicLoopCount", (void *)_cffi_f_SetMusicLoopCount, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 756), (void *)_cffi_d_SetMusicLoopCount }, + { "SetMusicPitch", (void *)_cffi_f_SetMusicPitch, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 752), (void *)_cffi_d_SetMusicPitch }, + { "SetMusicVolume", (void *)_cffi_f_SetMusicVolume, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 752), (void *)_cffi_d_SetMusicVolume }, + { "SetShaderValue", (void *)_cffi_f_SetShaderValue, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 815), (void *)_cffi_d_SetShaderValue }, + { "SetShaderValueMatrix", (void *)_cffi_f_SetShaderValueMatrix, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 805), (void *)_cffi_d_SetShaderValueMatrix }, + { "SetShaderValueTexture", (void *)_cffi_f_SetShaderValueTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 810), (void *)_cffi_d_SetShaderValueTexture }, + { "SetShaderValueV", (void *)_cffi_f_SetShaderValueV, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 821), (void *)_cffi_d_SetShaderValueV }, + { "SetShapesTexture", (void *)_cffi_f_SetShapesTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 854), (void *)_cffi_d_SetShapesTexture }, + { "SetSoundPitch", (void *)_cffi_f_SetSoundPitch, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 831), (void *)_cffi_d_SetSoundPitch }, + { "SetSoundVolume", (void *)_cffi_f_SetSoundVolume, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 831), (void *)_cffi_d_SetSoundVolume }, + { "SetTargetFPS", (void *)_cffi_f_SetTargetFPS, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1063), (void *)_cffi_d_SetTargetFPS }, + { "SetTextureFilter", (void *)_cffi_f_SetTextureFilter, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 899), (void *)_cffi_d_SetTextureFilter }, + { "SetTextureWrap", (void *)_cffi_f_SetTextureWrap, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 899), (void *)_cffi_d_SetTextureWrap }, + { "SetTraceLogExit", (void *)_cffi_f_SetTraceLogExit, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1063), (void *)_cffi_d_SetTraceLogExit }, + { "SetTraceLogLevel", (void *)_cffi_f_SetTraceLogLevel, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1063), (void *)_cffi_d_SetTraceLogLevel }, + { "SetVrConfiguration", (void *)_cffi_f_SetVrConfiguration, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1019), (void *)_cffi_d_SetVrConfiguration }, + { "SetWindowIcon", (void *)_cffi_f_SetWindowIcon, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 691), (void *)_cffi_d_SetWindowIcon }, + { "SetWindowMinSize", (void *)_cffi_f_SetWindowMinSize, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1074), (void *)_cffi_d_SetWindowMinSize }, + { "SetWindowMonitor", (void *)_cffi_f_SetWindowMonitor, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1063), (void *)_cffi_d_SetWindowMonitor }, + { "SetWindowPosition", (void *)_cffi_f_SetWindowPosition, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1074), (void *)_cffi_d_SetWindowPosition }, + { "SetWindowSize", (void *)_cffi_f_SetWindowSize, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1074), (void *)_cffi_d_SetWindowSize }, + { "SetWindowTitle", (void *)_cffi_f_SetWindowTitle, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1046), (void *)_cffi_d_SetWindowTitle }, + { "ShowCursor", (void *)_cffi_f_ShowCursor, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_ShowCursor }, + { "StopAudioStream", (void *)_cffi_f_StopAudioStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 517), (void *)_cffi_d_StopAudioStream }, + { "StopMusicStream", (void *)_cffi_f_StopMusicStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 749), (void *)_cffi_d_StopMusicStream }, + { "StopSound", (void *)_cffi_f_StopSound, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 828), (void *)_cffi_d_StopSound }, + { "StopSoundMulti", (void *)_cffi_f_StopSoundMulti, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_StopSoundMulti }, + { "StorageLoadValue", (void *)_cffi_f_StorageLoadValue, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 486), (void *)_cffi_d_StorageLoadValue }, + { "StorageSaveValue", (void *)_cffi_f_StorageSaveValue, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1074), (void *)_cffi_d_StorageSaveValue }, + { "TakeScreenshot", (void *)_cffi_f_TakeScreenshot, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1046), (void *)_cffi_d_TakeScreenshot }, + { "TextAppend", (void *)_cffi_f_TextAppend, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1041), (void *)_cffi_d_TextAppend }, + { "TextCopy", (void *)_cffi_f_TextCopy, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 467), (void *)_cffi_d_TextCopy }, + { "TextFindIndex", (void *)_cffi_f_TextFindIndex, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 474), (void *)_cffi_d_TextFindIndex }, + { "TextFormat", (void *)_cffi_const_TextFormat, _CFFI_OP(_CFFI_OP_CONSTANT, 1177), (void *)0 }, + { "TextInsert", (void *)_cffi_f_TextInsert, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 326), (void *)_cffi_d_TextInsert }, + { "TextIsEqual", (void *)_cffi_f_TextIsEqual, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 474), (void *)_cffi_d_TextIsEqual }, + { "TextJoin", (void *)_cffi_f_TextJoin, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 340), (void *)_cffi_d_TextJoin }, + { "TextLength", (void *)_cffi_f_TextLength, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 512), (void *)_cffi_d_TextLength }, + { "TextReplace", (void *)_cffi_f_TextReplace, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 318), (void *)_cffi_d_TextReplace }, + { "TextSplit", (void *)_cffi_f_TextSplit, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 335), (void *)_cffi_d_TextSplit }, + { "TextSubtext", (void *)_cffi_f_TextSubtext, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 351), (void *)_cffi_d_TextSubtext }, + { "TextToInteger", (void *)_cffi_f_TextToInteger, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 471), (void *)_cffi_d_TextToInteger }, + { "TextToLower", (void *)_cffi_f_TextToLower, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 345), (void *)_cffi_d_TextToLower }, + { "TextToPascal", (void *)_cffi_f_TextToPascal, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 345), (void *)_cffi_d_TextToPascal }, + { "TextToUpper", (void *)_cffi_f_TextToUpper, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 345), (void *)_cffi_d_TextToUpper }, + { "TextToUtf8", (void *)_cffi_f_TextToUtf8, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 331), (void *)_cffi_d_TextToUtf8 }, + { "ToggleFullscreen", (void *)_cffi_f_ToggleFullscreen, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_ToggleFullscreen }, + { "ToggleVrMode", (void *)_cffi_f_ToggleVrMode, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_ToggleVrMode }, + { "TraceLog", (void *)_cffi_const_TraceLog, _CFFI_OP(_CFFI_OP_CONSTANT, 1191), (void *)0 }, + { "UNCOMPRESSED_GRAYSCALE", (void *)_cffi_const_UNCOMPRESSED_GRAYSCALE, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNCOMPRESSED_GRAY_ALPHA", (void *)_cffi_const_UNCOMPRESSED_GRAY_ALPHA, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNCOMPRESSED_R32", (void *)_cffi_const_UNCOMPRESSED_R32, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNCOMPRESSED_R32G32B32", (void *)_cffi_const_UNCOMPRESSED_R32G32B32, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNCOMPRESSED_R32G32B32A32", (void *)_cffi_const_UNCOMPRESSED_R32G32B32A32, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNCOMPRESSED_R4G4B4A4", (void *)_cffi_const_UNCOMPRESSED_R4G4B4A4, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNCOMPRESSED_R5G5B5A1", (void *)_cffi_const_UNCOMPRESSED_R5G5B5A1, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNCOMPRESSED_R5G6B5", (void *)_cffi_const_UNCOMPRESSED_R5G6B5, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNCOMPRESSED_R8G8B8", (void *)_cffi_const_UNCOMPRESSED_R8G8B8, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNCOMPRESSED_R8G8B8A8", (void *)_cffi_const_UNCOMPRESSED_R8G8B8A8, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNIFORM_FLOAT", (void *)_cffi_const_UNIFORM_FLOAT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNIFORM_INT", (void *)_cffi_const_UNIFORM_INT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNIFORM_IVEC2", (void *)_cffi_const_UNIFORM_IVEC2, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNIFORM_IVEC3", (void *)_cffi_const_UNIFORM_IVEC3, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNIFORM_IVEC4", (void *)_cffi_const_UNIFORM_IVEC4, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNIFORM_SAMPLER2D", (void *)_cffi_const_UNIFORM_SAMPLER2D, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNIFORM_VEC2", (void *)_cffi_const_UNIFORM_VEC2, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNIFORM_VEC3", (void *)_cffi_const_UNIFORM_VEC3, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UNIFORM_VEC4", (void *)_cffi_const_UNIFORM_VEC4, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "UnhideWindow", (void *)_cffi_f_UnhideWindow, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 1140), (void *)_cffi_d_UnhideWindow }, + { "UnloadFont", (void *)_cffi_f_UnloadFont, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 564), (void *)_cffi_d_UnloadFont }, + { "UnloadImage", (void *)_cffi_f_UnloadImage, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 691), (void *)_cffi_d_UnloadImage }, + { "UnloadMaterial", (void *)_cffi_f_UnloadMaterial, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 703), (void *)_cffi_d_UnloadMaterial }, + { "UnloadMesh", (void *)_cffi_f_UnloadMesh, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 712), (void *)_cffi_d_UnloadMesh }, + { "UnloadModel", (void *)_cffi_f_UnloadModel, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 724), (void *)_cffi_d_UnloadModel }, + { "UnloadModelAnimation", (void *)_cffi_f_UnloadModelAnimation, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 746), (void *)_cffi_d_UnloadModelAnimation }, + { "UnloadMusicStream", (void *)_cffi_f_UnloadMusicStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 749), (void *)_cffi_d_UnloadMusicStream }, + { "UnloadRenderTexture", (void *)_cffi_f_UnloadRenderTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 799), (void *)_cffi_d_UnloadRenderTexture }, + { "UnloadShader", (void *)_cffi_f_UnloadShader, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 802), (void *)_cffi_d_UnloadShader }, + { "UnloadSound", (void *)_cffi_f_UnloadSound, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 828), (void *)_cffi_d_UnloadSound }, + { "UnloadTexture", (void *)_cffi_f_UnloadTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 843), (void *)_cffi_d_UnloadTexture }, + { "UnloadWave", (void *)_cffi_f_UnloadWave, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 1034), (void *)_cffi_d_UnloadWave }, + { "UpdateAudioStream", (void *)_cffi_f_UpdateAudioStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 524), (void *)_cffi_d_UpdateAudioStream }, + { "UpdateCamera", (void *)_cffi_f_UpdateCamera, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 536), (void *)_cffi_d_UpdateCamera }, + { "UpdateModelAnimation", (void *)_cffi_f_UpdateModelAnimation, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 727), (void *)_cffi_d_UpdateModelAnimation }, + { "UpdateMusicStream", (void *)_cffi_f_UpdateMusicStream, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 749), (void *)_cffi_d_UpdateMusicStream }, + { "UpdateSound", (void *)_cffi_f_UpdateSound, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 835), (void *)_cffi_d_UpdateSound }, + { "UpdateTexture", (void *)_cffi_f_UpdateTexture, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 909), (void *)_cffi_d_UpdateTexture }, + { "UpdateVrTracking", (void *)_cffi_f_UpdateVrTracking, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 536), (void *)_cffi_d_UpdateVrTracking }, + { "WRAP_CLAMP", (void *)_cffi_const_WRAP_CLAMP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "WRAP_MIRROR_CLAMP", (void *)_cffi_const_WRAP_MIRROR_CLAMP, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "WRAP_MIRROR_REPEAT", (void *)_cffi_const_WRAP_MIRROR_REPEAT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "WRAP_REPEAT", (void *)_cffi_const_WRAP_REPEAT, _CFFI_OP(_CFFI_OP_ENUM, -1), (void *)0 }, + { "WaveCopy", (void *)_cffi_f_WaveCopy, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_O, 305), (void *)_cffi_d_WaveCopy }, + { "WaveCrop", (void *)_cffi_f_WaveCrop, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1023), (void *)_cffi_d_WaveCrop }, + { "WaveFormat", (void *)_cffi_f_WaveFormat, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_V, 1028), (void *)_cffi_d_WaveFormat }, + { "WindowShouldClose", (void *)_cffi_f_WindowShouldClose, _CFFI_OP(_CFFI_OP_CPYTHON_BLTN_N, 502), (void *)_cffi_d_WindowShouldClose }, +}; + +static const struct _cffi_field_s _cffi_fields[] = { + { "sampleRate", offsetof(AudioStream, sampleRate), + sizeof(((AudioStream *)0)->sampleRate), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "sampleSize", offsetof(AudioStream, sampleSize), + sizeof(((AudioStream *)0)->sampleSize), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "channels", offsetof(AudioStream, channels), + sizeof(((AudioStream *)0)->channels), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "buffer", offsetof(AudioStream, buffer), + sizeof(((AudioStream *)0)->buffer), + _CFFI_OP(_CFFI_OP_NOOP, 1185) }, + { "name", offsetof(BoneInfo, name), + sizeof(((BoneInfo *)0)->name), + _CFFI_OP(_CFFI_OP_NOOP, 1178) }, + { "parent", offsetof(BoneInfo, parent), + sizeof(((BoneInfo *)0)->parent), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "min", offsetof(BoundingBox, min), + sizeof(((BoundingBox *)0)->min), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "max", offsetof(BoundingBox, max), + sizeof(((BoundingBox *)0)->max), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "offset", offsetof(Camera2D, offset), + sizeof(((Camera2D *)0)->offset), + _CFFI_OP(_CFFI_OP_NOOP, 209) }, + { "target", offsetof(Camera2D, target), + sizeof(((Camera2D *)0)->target), + _CFFI_OP(_CFFI_OP_NOOP, 209) }, + { "rotation", offsetof(Camera2D, rotation), + sizeof(((Camera2D *)0)->rotation), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "zoom", offsetof(Camera2D, zoom), + sizeof(((Camera2D *)0)->zoom), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "position", offsetof(Camera3D, position), + sizeof(((Camera3D *)0)->position), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "target", offsetof(Camera3D, target), + sizeof(((Camera3D *)0)->target), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "up", offsetof(Camera3D, up), + sizeof(((Camera3D *)0)->up), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "fovy", offsetof(Camera3D, fovy), + sizeof(((Camera3D *)0)->fovy), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "type", offsetof(Camera3D, type), + sizeof(((Camera3D *)0)->type), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "value", offsetof(CharInfo, value), + sizeof(((CharInfo *)0)->value), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "offsetX", offsetof(CharInfo, offsetX), + sizeof(((CharInfo *)0)->offsetX), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "offsetY", offsetof(CharInfo, offsetY), + sizeof(((CharInfo *)0)->offsetY), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "advanceX", offsetof(CharInfo, advanceX), + sizeof(((CharInfo *)0)->advanceX), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "image", offsetof(CharInfo, image), + sizeof(((CharInfo *)0)->image), + _CFFI_OP(_CFFI_OP_NOOP, 16) }, + { "r", offsetof(Color, r), + sizeof(((Color *)0)->r), + _CFFI_OP(_CFFI_OP_NOOP, 1187) }, + { "g", offsetof(Color, g), + sizeof(((Color *)0)->g), + _CFFI_OP(_CFFI_OP_NOOP, 1187) }, + { "b", offsetof(Color, b), + sizeof(((Color *)0)->b), + _CFFI_OP(_CFFI_OP_NOOP, 1187) }, + { "a", offsetof(Color, a), + sizeof(((Color *)0)->a), + _CFFI_OP(_CFFI_OP_NOOP, 1187) }, + { "baseSize", offsetof(Font, baseSize), + sizeof(((Font *)0)->baseSize), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "charsCount", offsetof(Font, charsCount), + sizeof(((Font *)0)->charsCount), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "texture", offsetof(Font, texture), + sizeof(((Font *)0)->texture), + _CFFI_OP(_CFFI_OP_NOOP, 80) }, + { "recs", offsetof(Font, recs), + sizeof(((Font *)0)->recs), + _CFFI_OP(_CFFI_OP_NOOP, 1166) }, + { "chars", offsetof(Font, chars), + sizeof(((Font *)0)->chars), + _CFFI_OP(_CFFI_OP_NOOP, 1148) }, + { "data", offsetof(Image, data), + sizeof(((Image *)0)->data), + _CFFI_OP(_CFFI_OP_NOOP, 141) }, + { "width", offsetof(Image, width), + sizeof(((Image *)0)->width), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "height", offsetof(Image, height), + sizeof(((Image *)0)->height), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "mipmaps", offsetof(Image, mipmaps), + sizeof(((Image *)0)->mipmaps), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "format", offsetof(Image, format), + sizeof(((Image *)0)->format), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "shader", offsetof(Material, shader), + sizeof(((Material *)0)->shader), + _CFFI_OP(_CFFI_OP_NOOP, 258) }, + { "maps", offsetof(Material, maps), + sizeof(((Material *)0)->maps), + _CFFI_OP(_CFFI_OP_NOOP, 1158) }, + { "params", offsetof(Material, params), + sizeof(((Material *)0)->params), + _CFFI_OP(_CFFI_OP_NOOP, 1181) }, + { "texture", offsetof(MaterialMap, texture), + sizeof(((MaterialMap *)0)->texture), + _CFFI_OP(_CFFI_OP_NOOP, 80) }, + { "color", offsetof(MaterialMap, color), + sizeof(((MaterialMap *)0)->color), + _CFFI_OP(_CFFI_OP_NOOP, 24) }, + { "value", offsetof(MaterialMap, value), + sizeof(((MaterialMap *)0)->value), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m0", offsetof(Matrix, m0), + sizeof(((Matrix *)0)->m0), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m4", offsetof(Matrix, m4), + sizeof(((Matrix *)0)->m4), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m8", offsetof(Matrix, m8), + sizeof(((Matrix *)0)->m8), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m12", offsetof(Matrix, m12), + sizeof(((Matrix *)0)->m12), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m1", offsetof(Matrix, m1), + sizeof(((Matrix *)0)->m1), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m5", offsetof(Matrix, m5), + sizeof(((Matrix *)0)->m5), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m9", offsetof(Matrix, m9), + sizeof(((Matrix *)0)->m9), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m13", offsetof(Matrix, m13), + sizeof(((Matrix *)0)->m13), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m2", offsetof(Matrix, m2), + sizeof(((Matrix *)0)->m2), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m6", offsetof(Matrix, m6), + sizeof(((Matrix *)0)->m6), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m10", offsetof(Matrix, m10), + sizeof(((Matrix *)0)->m10), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m14", offsetof(Matrix, m14), + sizeof(((Matrix *)0)->m14), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m3", offsetof(Matrix, m3), + sizeof(((Matrix *)0)->m3), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m7", offsetof(Matrix, m7), + sizeof(((Matrix *)0)->m7), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m11", offsetof(Matrix, m11), + sizeof(((Matrix *)0)->m11), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "m15", offsetof(Matrix, m15), + sizeof(((Matrix *)0)->m15), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "vertexCount", offsetof(Mesh, vertexCount), + sizeof(((Mesh *)0)->vertexCount), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "triangleCount", offsetof(Mesh, triangleCount), + sizeof(((Mesh *)0)->triangleCount), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "vertices", offsetof(Mesh, vertices), + sizeof(((Mesh *)0)->vertices), + _CFFI_OP(_CFFI_OP_NOOP, 1181) }, + { "texcoords", offsetof(Mesh, texcoords), + sizeof(((Mesh *)0)->texcoords), + _CFFI_OP(_CFFI_OP_NOOP, 1181) }, + { "texcoords2", offsetof(Mesh, texcoords2), + sizeof(((Mesh *)0)->texcoords2), + _CFFI_OP(_CFFI_OP_NOOP, 1181) }, + { "normals", offsetof(Mesh, normals), + sizeof(((Mesh *)0)->normals), + _CFFI_OP(_CFFI_OP_NOOP, 1181) }, + { "tangents", offsetof(Mesh, tangents), + sizeof(((Mesh *)0)->tangents), + _CFFI_OP(_CFFI_OP_NOOP, 1181) }, + { "colors", offsetof(Mesh, colors), + sizeof(((Mesh *)0)->colors), + _CFFI_OP(_CFFI_OP_NOOP, 508) }, + { "indices", offsetof(Mesh, indices), + sizeof(((Mesh *)0)->indices), + _CFFI_OP(_CFFI_OP_NOOP, 1189) }, + { "animVertices", offsetof(Mesh, animVertices), + sizeof(((Mesh *)0)->animVertices), + _CFFI_OP(_CFFI_OP_NOOP, 1181) }, + { "animNormals", offsetof(Mesh, animNormals), + sizeof(((Mesh *)0)->animNormals), + _CFFI_OP(_CFFI_OP_NOOP, 1181) }, + { "boneIds", offsetof(Mesh, boneIds), + sizeof(((Mesh *)0)->boneIds), + _CFFI_OP(_CFFI_OP_NOOP, 11) }, + { "boneWeights", offsetof(Mesh, boneWeights), + sizeof(((Mesh *)0)->boneWeights), + _CFFI_OP(_CFFI_OP_NOOP, 1181) }, + { "vaoId", offsetof(Mesh, vaoId), + sizeof(((Mesh *)0)->vaoId), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "vboId", offsetof(Mesh, vboId), + sizeof(((Mesh *)0)->vboId), + _CFFI_OP(_CFFI_OP_NOOP, 1188) }, + { "transform", offsetof(Model, transform), + sizeof(((Model *)0)->transform), + _CFFI_OP(_CFFI_OP_NOOP, 707) }, + { "meshCount", offsetof(Model, meshCount), + sizeof(((Model *)0)->meshCount), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "meshes", offsetof(Model, meshes), + sizeof(((Model *)0)->meshes), + _CFFI_OP(_CFFI_OP_NOOP, 710) }, + { "materialCount", offsetof(Model, materialCount), + sizeof(((Model *)0)->materialCount), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "materials", offsetof(Model, materials), + sizeof(((Model *)0)->materials), + _CFFI_OP(_CFFI_OP_NOOP, 699) }, + { "meshMaterial", offsetof(Model, meshMaterial), + sizeof(((Model *)0)->meshMaterial), + _CFFI_OP(_CFFI_OP_NOOP, 11) }, + { "boneCount", offsetof(Model, boneCount), + sizeof(((Model *)0)->boneCount), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "bones", offsetof(Model, bones), + sizeof(((Model *)0)->bones), + _CFFI_OP(_CFFI_OP_NOOP, 1144) }, + { "bindPose", offsetof(Model, bindPose), + sizeof(((Model *)0)->bindPose), + _CFFI_OP(_CFFI_OP_NOOP, 1173) }, + { "boneCount", offsetof(ModelAnimation, boneCount), + sizeof(((ModelAnimation *)0)->boneCount), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "bones", offsetof(ModelAnimation, bones), + sizeof(((ModelAnimation *)0)->bones), + _CFFI_OP(_CFFI_OP_NOOP, 1144) }, + { "frameCount", offsetof(ModelAnimation, frameCount), + sizeof(((ModelAnimation *)0)->frameCount), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "framePoses", offsetof(ModelAnimation, framePoses), + sizeof(((ModelAnimation *)0)->framePoses), + _CFFI_OP(_CFFI_OP_NOOP, 1172) }, + { "ctxType", offsetof(Music, ctxType), + sizeof(((Music *)0)->ctxType), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "ctxData", offsetof(Music, ctxData), + sizeof(((Music *)0)->ctxData), + _CFFI_OP(_CFFI_OP_NOOP, 141) }, + { "sampleCount", offsetof(Music, sampleCount), + sizeof(((Music *)0)->sampleCount), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "loopCount", offsetof(Music, loopCount), + sizeof(((Music *)0)->loopCount), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "stream", offsetof(Music, stream), + sizeof(((Music *)0)->stream), + _CFFI_OP(_CFFI_OP_NOOP, 384) }, + { "sourceRec", offsetof(NPatchInfo, sourceRec), + sizeof(((NPatchInfo *)0)->sourceRec), + _CFFI_OP(_CFFI_OP_NOOP, 77) }, + { "left", offsetof(NPatchInfo, left), + sizeof(((NPatchInfo *)0)->left), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "top", offsetof(NPatchInfo, top), + sizeof(((NPatchInfo *)0)->top), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "right", offsetof(NPatchInfo, right), + sizeof(((NPatchInfo *)0)->right), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "bottom", offsetof(NPatchInfo, bottom), + sizeof(((NPatchInfo *)0)->bottom), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "type", offsetof(NPatchInfo, type), + sizeof(((NPatchInfo *)0)->type), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "position", offsetof(Ray, position), + sizeof(((Ray *)0)->position), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "direction", offsetof(Ray, direction), + sizeof(((Ray *)0)->direction), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "hit", offsetof(RayHitInfo, hit), + sizeof(((RayHitInfo *)0)->hit), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "distance", offsetof(RayHitInfo, distance), + sizeof(((RayHitInfo *)0)->distance), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "position", offsetof(RayHitInfo, position), + sizeof(((RayHitInfo *)0)->position), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "normal", offsetof(RayHitInfo, normal), + sizeof(((RayHitInfo *)0)->normal), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "x", offsetof(Rectangle, x), + sizeof(((Rectangle *)0)->x), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "y", offsetof(Rectangle, y), + sizeof(((Rectangle *)0)->y), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "width", offsetof(Rectangle, width), + sizeof(((Rectangle *)0)->width), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "height", offsetof(Rectangle, height), + sizeof(((Rectangle *)0)->height), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "id", offsetof(RenderTexture2D, id), + sizeof(((RenderTexture2D *)0)->id), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "texture", offsetof(RenderTexture2D, texture), + sizeof(((RenderTexture2D *)0)->texture), + _CFFI_OP(_CFFI_OP_NOOP, 80) }, + { "depth", offsetof(RenderTexture2D, depth), + sizeof(((RenderTexture2D *)0)->depth), + _CFFI_OP(_CFFI_OP_NOOP, 80) }, + { "depthTexture", offsetof(RenderTexture2D, depthTexture), + sizeof(((RenderTexture2D *)0)->depthTexture), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "id", offsetof(Shader, id), + sizeof(((Shader *)0)->id), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "locs", offsetof(Shader, locs), + sizeof(((Shader *)0)->locs), + _CFFI_OP(_CFFI_OP_NOOP, 11) }, + { "sampleCount", offsetof(Sound, sampleCount), + sizeof(((Sound *)0)->sampleCount), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "stream", offsetof(Sound, stream), + sizeof(((Sound *)0)->stream), + _CFFI_OP(_CFFI_OP_NOOP, 384) }, + { "id", offsetof(Texture2D, id), + sizeof(((Texture2D *)0)->id), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "width", offsetof(Texture2D, width), + sizeof(((Texture2D *)0)->width), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "height", offsetof(Texture2D, height), + sizeof(((Texture2D *)0)->height), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "mipmaps", offsetof(Texture2D, mipmaps), + sizeof(((Texture2D *)0)->mipmaps), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "format", offsetof(Texture2D, format), + sizeof(((Texture2D *)0)->format), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "translation", offsetof(Transform, translation), + sizeof(((Transform *)0)->translation), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "rotation", offsetof(Transform, rotation), + sizeof(((Transform *)0)->rotation), + _CFFI_OP(_CFFI_OP_NOOP, 31) }, + { "scale", offsetof(Transform, scale), + sizeof(((Transform *)0)->scale), + _CFFI_OP(_CFFI_OP_NOOP, 28) }, + { "x", offsetof(Vector2, x), + sizeof(((Vector2 *)0)->x), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "y", offsetof(Vector2, y), + sizeof(((Vector2 *)0)->y), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "x", offsetof(Vector3, x), + sizeof(((Vector3 *)0)->x), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "y", offsetof(Vector3, y), + sizeof(((Vector3 *)0)->y), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "z", offsetof(Vector3, z), + sizeof(((Vector3 *)0)->z), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "x", offsetof(Vector4, x), + sizeof(((Vector4 *)0)->x), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "y", offsetof(Vector4, y), + sizeof(((Vector4 *)0)->y), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "z", offsetof(Vector4, z), + sizeof(((Vector4 *)0)->z), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "w", offsetof(Vector4, w), + sizeof(((Vector4 *)0)->w), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "hResolution", offsetof(VrDeviceInfo, hResolution), + sizeof(((VrDeviceInfo *)0)->hResolution), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "vResolution", offsetof(VrDeviceInfo, vResolution), + sizeof(((VrDeviceInfo *)0)->vResolution), + _CFFI_OP(_CFFI_OP_NOOP, 10) }, + { "hScreenSize", offsetof(VrDeviceInfo, hScreenSize), + sizeof(((VrDeviceInfo *)0)->hScreenSize), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "vScreenSize", offsetof(VrDeviceInfo, vScreenSize), + sizeof(((VrDeviceInfo *)0)->vScreenSize), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "vScreenCenter", offsetof(VrDeviceInfo, vScreenCenter), + sizeof(((VrDeviceInfo *)0)->vScreenCenter), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "eyeToScreenDistance", offsetof(VrDeviceInfo, eyeToScreenDistance), + sizeof(((VrDeviceInfo *)0)->eyeToScreenDistance), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "lensSeparationDistance", offsetof(VrDeviceInfo, lensSeparationDistance), + sizeof(((VrDeviceInfo *)0)->lensSeparationDistance), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "interpupillaryDistance", offsetof(VrDeviceInfo, interpupillaryDistance), + sizeof(((VrDeviceInfo *)0)->interpupillaryDistance), + _CFFI_OP(_CFFI_OP_NOOP, 25) }, + { "lensDistortionValues", offsetof(VrDeviceInfo, lensDistortionValues), + sizeof(((VrDeviceInfo *)0)->lensDistortionValues), + _CFFI_OP(_CFFI_OP_NOOP, 1182) }, + { "chromaAbCorrection", offsetof(VrDeviceInfo, chromaAbCorrection), + sizeof(((VrDeviceInfo *)0)->chromaAbCorrection), + _CFFI_OP(_CFFI_OP_NOOP, 1182) }, + { "sampleCount", offsetof(Wave, sampleCount), + sizeof(((Wave *)0)->sampleCount), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "sampleRate", offsetof(Wave, sampleRate), + sizeof(((Wave *)0)->sampleRate), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "sampleSize", offsetof(Wave, sampleSize), + sizeof(((Wave *)0)->sampleSize), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "channels", offsetof(Wave, channels), + sizeof(((Wave *)0)->channels), + _CFFI_OP(_CFFI_OP_NOOP, 1) }, + { "data", offsetof(Wave, data), + sizeof(((Wave *)0)->data), + _CFFI_OP(_CFFI_OP_NOOP, 141) }, +}; + +static const struct _cffi_struct_union_s _cffi_struct_unions[] = { + { "AudioStream", 384, _CFFI_F_CHECK_FIELDS, + sizeof(AudioStream), offsetof(struct _cffi_align__AudioStream, y), 0, 4 }, + { "BoneInfo", 1145, _CFFI_F_CHECK_FIELDS, + sizeof(BoneInfo), offsetof(struct _cffi_align__BoneInfo, y), 4, 2 }, + { "BoundingBox", 387, _CFFI_F_CHECK_FIELDS, + sizeof(BoundingBox), offsetof(struct _cffi_align__BoundingBox, y), 6, 2 }, + { "Camera2D", 155, _CFFI_F_CHECK_FIELDS, + sizeof(Camera2D), offsetof(struct _cffi_align__Camera2D, y), 8, 4 }, + { "Camera3D", 158, _CFFI_F_CHECK_FIELDS, + sizeof(Camera3D), offsetof(struct _cffi_align__Camera3D, y), 12, 5 }, + { "CharInfo", 1149, _CFFI_F_CHECK_FIELDS, + sizeof(CharInfo), offsetof(struct _cffi_align__CharInfo, y), 17, 5 }, + { "Color", 24, _CFFI_F_CHECK_FIELDS, + sizeof(Color), offsetof(struct _cffi_align__Color, y), 22, 4 }, + { "Font", 66, _CFFI_F_CHECK_FIELDS, + sizeof(Font), offsetof(struct _cffi_align__Font, y), 26, 5 }, + { "Image", 16, _CFFI_F_CHECK_FIELDS, + sizeof(Image), offsetof(struct _cffi_align__Image, y), 31, 5 }, + { "Material", 704, _CFFI_F_CHECK_FIELDS, + sizeof(Material), offsetof(struct _cffi_align__Material, y), 36, 3 }, + { "MaterialMap", 1159, _CFFI_F_CHECK_FIELDS, + sizeof(MaterialMap), offsetof(struct _cffi_align__MaterialMap, y), 39, 3 }, + { "Matrix", 707, _CFFI_F_CHECK_FIELDS, + sizeof(Matrix), offsetof(struct _cffi_align__Matrix, y), 42, 16 }, + { "Mesh", 6, _CFFI_F_CHECK_FIELDS, + sizeof(Mesh), offsetof(struct _cffi_align__Mesh, y), 58, 15 }, + { "Model", 214, _CFFI_F_CHECK_FIELDS, + sizeof(Model), offsetof(struct _cffi_align__Model, y), 73, 9 }, + { "ModelAnimation", 404, _CFFI_F_CHECK_FIELDS, + sizeof(ModelAnimation), offsetof(struct _cffi_align__ModelAnimation, y), 82, 4 }, + { "Music", 371, _CFFI_F_CHECK_FIELDS, + sizeof(Music), offsetof(struct _cffi_align__Music, y), 86, 5 }, + { "NPatchInfo", 848, _CFFI_F_CHECK_FIELDS, + sizeof(NPatchInfo), offsetof(struct _cffi_align__NPatchInfo, y), 91, 6 }, + { "Ray", 213, _CFFI_F_CHECK_FIELDS, + sizeof(Ray), offsetof(struct _cffi_align__Ray, y), 97, 2 }, + { "RayHitInfo", 1165, _CFFI_F_CHECK_FIELDS, + sizeof(RayHitInfo), offsetof(struct _cffi_align__RayHitInfo, y), 99, 4 }, + { "Rectangle", 77, _CFFI_F_CHECK_FIELDS, + sizeof(Rectangle), offsetof(struct _cffi_align__Rectangle, y), 103, 4 }, + { "RenderTexture2D", 800, _CFFI_F_CHECK_FIELDS, + sizeof(RenderTexture2D), offsetof(struct _cffi_align__RenderTexture2D, y), 107, 4 }, + { "Shader", 258, _CFFI_F_CHECK_FIELDS, + sizeof(Shader), offsetof(struct _cffi_align__Shader, y), 111, 2 }, + { "Sound", 433, _CFFI_F_CHECK_FIELDS, + sizeof(Sound), offsetof(struct _cffi_align__Sound, y), 113, 2 }, + { "Texture2D", 80, _CFFI_F_CHECK_FIELDS, + sizeof(Texture2D), offsetof(struct _cffi_align__Texture2D, y), 115, 5 }, + { "Transform", 1174, _CFFI_F_CHECK_FIELDS, + sizeof(Transform), offsetof(struct _cffi_align__Transform, y), 120, 3 }, + { "Vector2", 209, _CFFI_F_CHECK_FIELDS, + sizeof(Vector2), offsetof(struct _cffi_align__Vector2, y), 123, 2 }, + { "Vector3", 28, _CFFI_F_CHECK_FIELDS, + sizeof(Vector3), offsetof(struct _cffi_align__Vector3, y), 125, 3 }, + { "Vector4", 31, _CFFI_F_CHECK_FIELDS, + sizeof(Vector4), offsetof(struct _cffi_align__Vector4, y), 128, 4 }, + { "VrDeviceInfo", 1020, _CFFI_F_CHECK_FIELDS, + sizeof(VrDeviceInfo), offsetof(struct _cffi_align__VrDeviceInfo, y), 132, 10 }, + { "Wave", 245, _CFFI_F_CHECK_FIELDS, + sizeof(Wave), offsetof(struct _cffi_align__Wave, y), 142, 5 }, + { "rAudioBuffer", 1186, _CFFI_F_OPAQUE, + (size_t)-1, -1, -1, 0 /* opaque */ }, +}; + +static const struct _cffi_enum_s _cffi_enums[] = { + { "$AndroidButton", 1142, _cffi_prim_int(sizeof(AndroidButton), ((AndroidButton)-1) <= 0), + "KEY_BACK,KEY_MENU,KEY_VOLUME_UP,KEY_VOLUME_DOWN" }, + { "$BlendMode", 1143, _cffi_prim_int(sizeof(BlendMode), ((BlendMode)-1) <= 0), + "BLEND_ALPHA,BLEND_ADDITIVE,BLEND_MULTIPLIED" }, + { "$CameraMode", 1146, _cffi_prim_int(sizeof(CameraMode), ((CameraMode)-1) <= 0), + "CAMERA_CUSTOM,CAMERA_FREE,CAMERA_ORBITAL,CAMERA_FIRST_PERSON,CAMERA_THIRD_PERSON" }, + { "$CameraType", 1147, _cffi_prim_int(sizeof(CameraType), ((CameraType)-1) <= 0), + "CAMERA_PERSPECTIVE,CAMERA_ORTHOGRAPHIC" }, + { "$ConfigFlag", 1150, _cffi_prim_int(sizeof(ConfigFlag), ((ConfigFlag)-1) <= 0), + "FLAG_RESERVED,FLAG_FULLSCREEN_MODE,FLAG_WINDOW_RESIZABLE,FLAG_WINDOW_UNDECORATED,FLAG_WINDOW_TRANSPARENT,FLAG_WINDOW_HIDDEN,FLAG_WINDOW_ALWAYS_RUN,FLAG_MSAA_4X_HINT,FLAG_VSYNC_HINT" }, + { "$CubemapLayoutType", 1151, _cffi_prim_int(sizeof(CubemapLayoutType), ((CubemapLayoutType)-1) <= 0), + "CUBEMAP_AUTO_DETECT,CUBEMAP_LINE_VERTICAL,CUBEMAP_LINE_HORIZONTAL,CUBEMAP_CROSS_THREE_BY_FOUR,CUBEMAP_CROSS_FOUR_BY_THREE,CUBEMAP_PANORAMA" }, + { "$FontType", 1152, _cffi_prim_int(sizeof(FontType), ((FontType)-1) <= 0), + "FONT_DEFAULT,FONT_BITMAP,FONT_SDF" }, + { "$GamepadAxis", 1153, _cffi_prim_int(sizeof(GamepadAxis), ((GamepadAxis)-1) <= 0), + "GAMEPAD_AXIS_UNKNOWN,GAMEPAD_AXIS_LEFT_X,GAMEPAD_AXIS_LEFT_Y,GAMEPAD_AXIS_RIGHT_X,GAMEPAD_AXIS_RIGHT_Y,GAMEPAD_AXIS_LEFT_TRIGGER,GAMEPAD_AXIS_RIGHT_TRIGGER" }, + { "$GamepadButton", 1154, _cffi_prim_int(sizeof(GamepadButton), ((GamepadButton)-1) <= 0), + "GAMEPAD_BUTTON_UNKNOWN,GAMEPAD_BUTTON_LEFT_FACE_UP,GAMEPAD_BUTTON_LEFT_FACE_RIGHT,GAMEPAD_BUTTON_LEFT_FACE_DOWN,GAMEPAD_BUTTON_LEFT_FACE_LEFT,GAMEPAD_BUTTON_RIGHT_FACE_UP,GAMEPAD_BUTTON_RIGHT_FACE_RIGHT,GAMEPAD_BUTTON_RIGHT_FACE_DOWN,GAMEPAD_BUTTON_RIGHT_FACE_LEFT,GAMEPAD_BUTTON_LEFT_TRIGGER_1,GAMEPAD_BUTTON_LEFT_TRIGGER_2,GAMEPAD_BUTTON_RIGHT_TRIGGER_1,GAMEPAD_BUTTON_RIGHT_TRIGGER_2,GAMEPAD_BUTTON_MIDDLE_LEFT,GAMEPAD_BUTTON_MIDDLE,GAMEPAD_BUTTON_MIDDLE_RIGHT,GAMEPAD_BUTTON_LEFT_THUMB,GAMEPAD_BUTTON_RIGHT_THUMB" }, + { "$GamepadNumber", 1155, _cffi_prim_int(sizeof(GamepadNumber), ((GamepadNumber)-1) <= 0), + "GAMEPAD_PLAYER1,GAMEPAD_PLAYER2,GAMEPAD_PLAYER3,GAMEPAD_PLAYER4" }, + { "$GestureType", 1156, _cffi_prim_int(sizeof(GestureType), ((GestureType)-1) <= 0), + "GESTURE_NONE,GESTURE_TAP,GESTURE_DOUBLETAP,GESTURE_HOLD,GESTURE_DRAG,GESTURE_SWIPE_RIGHT,GESTURE_SWIPE_LEFT,GESTURE_SWIPE_UP,GESTURE_SWIPE_DOWN,GESTURE_PINCH_IN,GESTURE_PINCH_OUT" }, + { "$KeyboardKey", 1157, _cffi_prim_int(sizeof(KeyboardKey), ((KeyboardKey)-1) <= 0), + "KEY_APOSTROPHE,KEY_COMMA,KEY_MINUS,KEY_PERIOD,KEY_SLASH,KEY_ZERO,KEY_ONE,KEY_TWO,KEY_THREE,KEY_FOUR,KEY_FIVE,KEY_SIX,KEY_SEVEN,KEY_EIGHT,KEY_NINE,KEY_SEMICOLON,KEY_EQUAL,KEY_A,KEY_B,KEY_C,KEY_D,KEY_E,KEY_F,KEY_G,KEY_H,KEY_I,KEY_J,KEY_K,KEY_L,KEY_M,KEY_N,KEY_O,KEY_P,KEY_Q,KEY_R,KEY_S,KEY_T,KEY_U,KEY_V,KEY_W,KEY_X,KEY_Y,KEY_Z,KEY_SPACE,KEY_ESCAPE,KEY_ENTER,KEY_TAB,KEY_BACKSPACE,KEY_INSERT,KEY_DELETE,KEY_RIGHT,KEY_LEFT,KEY_DOWN,KEY_UP,KEY_PAGE_UP,KEY_PAGE_DOWN,KEY_HOME,KEY_END,KEY_CAPS_LOCK,KEY_SCROLL_LOCK,KEY_NUM_LOCK,KEY_PRINT_SCREEN,KEY_PAUSE,KEY_F1,KEY_F2,KEY_F3,KEY_F4,KEY_F5,KEY_F6,KEY_F7,KEY_F8,KEY_F9,KEY_F10,KEY_F11,KEY_F12,KEY_LEFT_SHIFT,KEY_LEFT_CONTROL,KEY_LEFT_ALT,KEY_LEFT_SUPER,KEY_RIGHT_SHIFT,KEY_RIGHT_CONTROL,KEY_RIGHT_ALT,KEY_RIGHT_SUPER,KEY_KB_MENU,KEY_LEFT_BRACKET,KEY_BACKSLASH,KEY_RIGHT_BRACKET,KEY_GRAVE,KEY_KP_0,KEY_KP_1,KEY_KP_2,KEY_KP_3,KEY_KP_4,KEY_KP_5,KEY_KP_6,KEY_KP_7,KEY_KP_8,KEY_KP_9,KEY_KP_DECIMAL,KEY_KP_DIVIDE,KEY_KP_MULTIPLY,KEY_KP_SUBTRACT,KEY_KP_ADD,KEY_KP_ENTER,KEY_KP_EQUAL" }, + { "$MaterialMapType", 1160, _cffi_prim_int(sizeof(MaterialMapType), ((MaterialMapType)-1) <= 0), + "MAP_ALBEDO,MAP_METALNESS,MAP_NORMAL,MAP_ROUGHNESS,MAP_OCCLUSION,MAP_EMISSION,MAP_HEIGHT,MAP_CUBEMAP,MAP_IRRADIANCE,MAP_PREFILTER,MAP_BRDF" }, + { "$MouseButton", 1162, _cffi_prim_int(sizeof(MouseButton), ((MouseButton)-1) <= 0), + "MOUSE_LEFT_BUTTON,MOUSE_RIGHT_BUTTON,MOUSE_MIDDLE_BUTTON" }, + { "$NPatchType", 1163, _cffi_prim_int(sizeof(NPatchType), ((NPatchType)-1) <= 0), + "NPT_9PATCH,NPT_3PATCH_VERTICAL,NPT_3PATCH_HORIZONTAL" }, + { "$PixelFormat", 1164, _cffi_prim_int(sizeof(PixelFormat), ((PixelFormat)-1) <= 0), + "UNCOMPRESSED_GRAYSCALE,UNCOMPRESSED_GRAY_ALPHA,UNCOMPRESSED_R5G6B5,UNCOMPRESSED_R8G8B8,UNCOMPRESSED_R5G5B5A1,UNCOMPRESSED_R4G4B4A4,UNCOMPRESSED_R8G8B8A8,UNCOMPRESSED_R32,UNCOMPRESSED_R32G32B32,UNCOMPRESSED_R32G32B32A32,COMPRESSED_DXT1_RGB,COMPRESSED_DXT1_RGBA,COMPRESSED_DXT3_RGBA,COMPRESSED_DXT5_RGBA,COMPRESSED_ETC1_RGB,COMPRESSED_ETC2_RGB,COMPRESSED_ETC2_EAC_RGBA,COMPRESSED_PVRT_RGB,COMPRESSED_PVRT_RGBA,COMPRESSED_ASTC_4x4_RGBA,COMPRESSED_ASTC_8x8_RGBA" }, + { "$ShaderLocationIndex", 1167, _cffi_prim_int(sizeof(ShaderLocationIndex), ((ShaderLocationIndex)-1) <= 0), + "LOC_VERTEX_POSITION,LOC_VERTEX_TEXCOORD01,LOC_VERTEX_TEXCOORD02,LOC_VERTEX_NORMAL,LOC_VERTEX_TANGENT,LOC_VERTEX_COLOR,LOC_MATRIX_MVP,LOC_MATRIX_MODEL,LOC_MATRIX_VIEW,LOC_MATRIX_PROJECTION,LOC_VECTOR_VIEW,LOC_COLOR_DIFFUSE,LOC_COLOR_SPECULAR,LOC_COLOR_AMBIENT,LOC_MAP_ALBEDO,LOC_MAP_METALNESS,LOC_MAP_NORMAL,LOC_MAP_ROUGHNESS,LOC_MAP_OCCLUSION,LOC_MAP_EMISSION,LOC_MAP_HEIGHT,LOC_MAP_CUBEMAP,LOC_MAP_IRRADIANCE,LOC_MAP_PREFILTER,LOC_MAP_BRDF" }, + { "$ShaderUniformDataType", 1168, _cffi_prim_int(sizeof(ShaderUniformDataType), ((ShaderUniformDataType)-1) <= 0), + "UNIFORM_FLOAT,UNIFORM_VEC2,UNIFORM_VEC3,UNIFORM_VEC4,UNIFORM_INT,UNIFORM_IVEC2,UNIFORM_IVEC3,UNIFORM_IVEC4,UNIFORM_SAMPLER2D" }, + { "$TextureFilterMode", 1169, _cffi_prim_int(sizeof(TextureFilterMode), ((TextureFilterMode)-1) <= 0), + "FILTER_POINT,FILTER_BILINEAR,FILTER_TRILINEAR,FILTER_ANISOTROPIC_4X,FILTER_ANISOTROPIC_8X,FILTER_ANISOTROPIC_16X" }, + { "$TextureWrapMode", 1170, _cffi_prim_int(sizeof(TextureWrapMode), ((TextureWrapMode)-1) <= 0), + "WRAP_REPEAT,WRAP_CLAMP,WRAP_MIRROR_REPEAT,WRAP_MIRROR_CLAMP" }, + { "$TraceLogType", 1171, _cffi_prim_int(sizeof(TraceLogType), ((TraceLogType)-1) <= 0), + "LOG_ALL,LOG_TRACE,LOG_DEBUG,LOG_INFO,LOG_WARNING,LOG_ERROR,LOG_FATAL,LOG_NONE" }, +}; + +static const struct _cffi_typename_s _cffi_typenames[] = { + { "AndroidButton", 1142 }, + { "AudioStream", 384 }, + { "BlendMode", 1143 }, + { "BoneInfo", 1145 }, + { "BoundingBox", 387 }, + { "Camera", 158 }, + { "Camera2D", 155 }, + { "Camera3D", 158 }, + { "CameraMode", 1146 }, + { "CameraType", 1147 }, + { "CharInfo", 1149 }, + { "Color", 24 }, + { "ConfigFlag", 1150 }, + { "CubemapLayoutType", 1151 }, + { "Font", 66 }, + { "FontType", 1152 }, + { "GamepadAxis", 1153 }, + { "GamepadButton", 1154 }, + { "GamepadNumber", 1155 }, + { "GestureType", 1156 }, + { "Image", 16 }, + { "KeyboardKey", 1157 }, + { "Material", 704 }, + { "MaterialMap", 1159 }, + { "MaterialMapType", 1160 }, + { "Matrix", 707 }, + { "Mesh", 6 }, + { "Model", 214 }, + { "ModelAnimation", 404 }, + { "MouseButton", 1162 }, + { "Music", 371 }, + { "NPatchInfo", 848 }, + { "NPatchType", 1163 }, + { "PixelFormat", 1164 }, + { "Quaternion", 31 }, + { "Ray", 213 }, + { "RayHitInfo", 1165 }, + { "Rectangle", 77 }, + { "RenderTexture", 800 }, + { "RenderTexture2D", 800 }, + { "Shader", 258 }, + { "ShaderLocationIndex", 1167 }, + { "ShaderUniformDataType", 1168 }, + { "Sound", 433 }, + { "Texture", 80 }, + { "Texture2D", 80 }, + { "TextureCubemap", 80 }, + { "TextureFilterMode", 1169 }, + { "TextureWrapMode", 1170 }, + { "TraceLogType", 1171 }, + { "Transform", 1174 }, + { "Vector2", 209 }, + { "Vector3", 28 }, + { "Vector4", 31 }, + { "VrDeviceInfo", 1020 }, + { "Wave", 245 }, + { "rAudioBuffer", 1186 }, +}; + +static const struct _cffi_type_context_s _cffi_type_context = { + _cffi_types, + _cffi_globals, + _cffi_fields, + _cffi_struct_unions, + _cffi_enums, + _cffi_typenames, + 696, /* num_globals */ + 31, /* num_struct_unions */ + 21, /* num_enums */ + 57, /* num_typenames */ + NULL, /* no includes */ + 1193, /* num_types */ + 0, /* flags */ +}; + +#ifdef __GNUC__ +# pragma GCC visibility push(default) /* for -fvisibility= */ +#endif + +#ifdef PYPY_VERSION +PyMODINIT_FUNC +_cffi_pypyinit__raylib_cffi(const void *p[]) +{ + p[0] = (const void *)0x2601; + p[1] = &_cffi_type_context; +#if PY_MAJOR_VERSION >= 3 + return NULL; +#endif +} +# ifdef _MSC_VER + PyMODINIT_FUNC +# if PY_MAJOR_VERSION >= 3 + PyInit__raylib_cffi(void) { return NULL; } +# else + init_raylib_cffi(void) { } +# endif +# endif +#elif PY_MAJOR_VERSION >= 3 +PyMODINIT_FUNC +PyInit__raylib_cffi(void) +{ + return _cffi_init("_raylib_cffi", 0x2601, &_cffi_type_context); +} +#else +PyMODINIT_FUNC +init_raylib_cffi(void) +{ + _cffi_init("_raylib_cffi", 0x2601, &_cffi_type_context); +} +#endif + +#ifdef __GNUC__ +# pragma GCC visibility pop +#endif diff --git a/raylib/static/_raylib_cffi.cp36-win_amd64.pyd b/raylib/static/_raylib_cffi.cp36-win_amd64.pyd new file mode 100644 index 0000000..bd6e745 Binary files /dev/null and b/raylib/static/_raylib_cffi.cp36-win_amd64.pyd differ diff --git a/raylib/static/_raylib_cffi.cp37-win_amd64.pyd b/raylib/static/_raylib_cffi.cp37-win_amd64.pyd new file mode 100644 index 0000000..c47e4bc Binary files /dev/null and b/raylib/static/_raylib_cffi.cp37-win_amd64.pyd differ diff --git a/raylib/static/_raylib_cffi.cp38-win32.pyd b/raylib/static/_raylib_cffi.cp38-win32.pyd new file mode 100644 index 0000000..b5f4ff8 Binary files /dev/null and b/raylib/static/_raylib_cffi.cp38-win32.pyd differ diff --git a/raylib/static/_raylib_cffi.cp38-win_amd64.pyd b/raylib/static/_raylib_cffi.cp38-win_amd64.pyd new file mode 100644 index 0000000..f8922c3 Binary files /dev/null and b/raylib/static/_raylib_cffi.cp38-win_amd64.pyd differ diff --git a/raylib/static/_raylib_cffi.cpython-36m-darwin.so b/raylib/static/_raylib_cffi.cpython-36m-darwin.so new file mode 100755 index 0000000..a81c222 Binary files /dev/null and b/raylib/static/_raylib_cffi.cpython-36m-darwin.so differ diff --git a/raylib/static/_raylib_cffi.cpython-36m-x86_64-linux-gnu.so b/raylib/static/_raylib_cffi.cpython-36m-x86_64-linux-gnu.so new file mode 100755 index 0000000..1fbe481 Binary files /dev/null and b/raylib/static/_raylib_cffi.cpython-36m-x86_64-linux-gnu.so differ diff --git a/raylib/static/_raylib_cffi.cpython-37m-darwin.so b/raylib/static/_raylib_cffi.cpython-37m-darwin.so new file mode 100755 index 0000000..dc22f47 Binary files /dev/null and b/raylib/static/_raylib_cffi.cpython-37m-darwin.so differ diff --git a/raylib/static/_raylib_cffi.cpython-37m-x86_64-linux-gnu.so b/raylib/static/_raylib_cffi.cpython-37m-x86_64-linux-gnu.so new file mode 100755 index 0000000..e2ef2ba Binary files /dev/null and b/raylib/static/_raylib_cffi.cpython-37m-x86_64-linux-gnu.so differ diff --git a/raylib/static/_raylib_cffi.cpython-38-darwin.so b/raylib/static/_raylib_cffi.cpython-38-darwin.so new file mode 100755 index 0000000..a91b9e6 Binary files /dev/null and b/raylib/static/_raylib_cffi.cpython-38-darwin.so differ diff --git a/raylib/static/_raylib_cffi.cpython-38-x86_64-linux-gnu.so b/raylib/static/_raylib_cffi.cpython-38-x86_64-linux-gnu.so new file mode 100755 index 0000000..8c0b6ca Binary files /dev/null and b/raylib/static/_raylib_cffi.cpython-38-x86_64-linux-gnu.so differ diff --git a/raylib/static/build_linux.py b/raylib/static/build_linux.py new file mode 100644 index 0000000..0a6db28 --- /dev/null +++ b/raylib/static/build_linux.py @@ -0,0 +1,24 @@ +# Linux build assumes raylib, GL, etc are all already installed as system libraries. We dont distribute them. +# Raylib must be installed the compiled with: cmake -DWITH_PIC=ON -DSHARED=ON -DSTATIC=ON .. + +from cffi import FFI +import os +import platform +ffibuilder = FFI() + + +ffibuilder.cdef(open("../raylib_modified.h").read().replace('RLAPI ', '')) + + +ffibuilder.set_source("_raylib_cffi", + """ + #include "../raylib.h" + """, + extra_link_args=['/usr/local/lib/libraylib.a','-lm', '-lpthread', '-lGLU', '-lGL', '-lrt', '-lm', '-ldl', '-lX11', '-lpthread'], + libraries=['GL','m','pthread', 'dl', 'rt', 'X11'] + ) + + +if __name__ == "__main__": + ffibuilder.compile(verbose=True) + diff --git a/raylib/static/build_linux_multi.sh b/raylib/static/build_linux_multi.sh new file mode 100755 index 0000000..bf591e9 --- /dev/null +++ b/raylib/static/build_linux_multi.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +rm *linux-gnu.so +pyenv global 3.8.1 +pip3 install cffi +python build_linux.py +pyenv global 3.7.6 +pip3 install cffi +python build_linux.py +pyenv global 3.6.10 +pip3 install cffi +python build_linux.py diff --git a/raylib/static/build_mac.py b/raylib/static/build_mac.py new file mode 100644 index 0000000..29b6f6e --- /dev/null +++ b/raylib/static/build_mac.py @@ -0,0 +1,27 @@ +from cffi import FFI +import os +import platform +import sys +ffibuilder = FFI() + + +ffibuilder.cdef(open("../raylib_modified.h").read().replace('RLAPI ', '')) + + +ffibuilder.set_source("_raylib_cffi", + """ + #include "../raylib.h" // the C header of the library, supplied by us here + """ + ) + +# Hack to produce static linked lib using static librarylib.a supplied by us +version = sys.implementation.cache_tag +if version == 'cpython-36' or version == 'cpython-37': + version += 'm' +command = "clang -bundle -undefined dynamic_lookup ./_raylib_cffi.o -L/usr/local/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/sqlite/lib ../../libraylib_mac.a -F/System/Library/Frameworks -framework OpenGL -framework Cocoa -framework IOKit -framework CoreFoundation -framework CoreVideo -o ./_raylib_cffi."+version+"-darwin.so" + +if __name__ == "__main__": + ffibuilder.compile(verbose=True) + if platform.system()=="Darwin": + print(command) + os.system(command) diff --git a/raylib/static/build_mac_multi.sh b/raylib/static/build_mac_multi.sh new file mode 100755 index 0000000..d087474 --- /dev/null +++ b/raylib/static/build_mac_multi.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +rm *darwin.so +pyenv global 3.8.1 +pip3 install cffi +python build_mac.py +pyenv global 3.7.5 +pip3 install cffi +python build_mac.py +pyenv global 3.6.9 +pip3 install cffi +python build_mac.py diff --git a/raylib/static/build_win32.py b/raylib/static/build_win32.py new file mode 100644 index 0000000..343cf6a --- /dev/null +++ b/raylib/static/build_win32.py @@ -0,0 +1,17 @@ +# Windows build assumes raylib, OpenGL32, etc are all already installed as system libraries. We dont distribute them. + +from cffi import FFI + +ffibuilder = FFI() +ffibuilder.cdef(open("../raylib_modified.h").read().replace('RLAPI ', '').replace('bool','int')) +ffibuilder.set_source("_raylib_cffi", + """ + #include "../raylib.h" + """, + extra_link_args=['/NODEFAULTLIB:MSVCRTD'], + libraries=['raylib_static', 'gdi32', 'shell32', 'user32','OpenGL32', 'winmm'], +) + + +if __name__ == "__main__": + ffibuilder.compile(verbose=True) diff --git a/raylib/version.py b/raylib/version.py deleted file mode 120000 index a508b60..0000000 --- a/raylib/version.py +++ /dev/null @@ -1 +0,0 @@ -../version.py \ No newline at end of file diff --git a/setup.py b/setup.py index c91f3bb..8db935f 100644 --- a/setup.py +++ b/setup.py @@ -1,51 +1,32 @@ import pathlib from setuptools import setup -from setuptools.dist import Distribution -import os # The directory containing this file HERE = pathlib.Path(__file__).parent # The text of the README file README = (HERE / "README.md").read_text() -VERSION = (HERE / "version.py").read_text().split()[-1].strip("\"'") -RAYLIB_PLATFORM = os.getenv("RAYLIB_PLATFORM", "Desktop") -if RAYLIB_PLATFORM == "SDL": - NAME = "_sdl" -elif RAYLIB_PLATFORM == "DRM": - NAME = "_drm" -else: - NAME = "" - -class BinaryDistribution(Distribution): - """Distribution which always forces a binary package with platform name""" - def has_ext_modules(foo): - return True - -# should be name="raylib"+NAME but then Github doesn't track dependants +# This call to setup() does all the work setup( name="raylib", - version=VERSION, + version="2.6.0", description="Python CFFI bindings for Raylib", long_description=README, long_description_content_type="text/markdown", url="https://github.com/electronstudio/raylib-python-cffi", author="Electron Studio", author_email="github@electronstudio.co.uk", - license="EPL-2.0", + license="LGPLv3+", classifiers=[ - "License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0)", + "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.13", - "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", ], - packages=["raylib", "pyray"], + packages=["raylib", "raylib.dynamic", "raylib.static"], include_package_data=True, - setup_requires=["cffi>=1.17.1"], - install_requires=["cffi>=1.17.1"], - distclass=BinaryDistribution, - cffi_modules=["raylib/build.py:ffibuilder"] + install_requires=["cffi>=1.14.0","inflection"], + #cffi_modules=["raylib/build_mac.py:ffibuilder"], # this would build libs whenever the module is installed, but we are distributing static libs instead ) diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 8facf8b..0000000 --- a/shell.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - pkgs ? import { }, -}: pkgs.mkShell { - buildInputs = with pkgs; [ - python3 - cmake - clang-tools - pkg-config - wayland-scanner - wayland - libGL - libgbm - libdrm - xorg.libXi - xorg.libXcursor - xorg.libXrandr - xorg.libXinerama - xorg.libX11 - ]; - - shellHook = '' - export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath [ pkgs.xorg.libX11 pkgs.libGL ]}:$LD_LIBRARY_PATH" - - if [ ! -d ".venv" ]; then - python3 -m venv .venv - fi - - source .venv/bin/activate - ''; -} diff --git a/tests/test_static_with_only_api_from_dynamic.py b/test_dynamic.py similarity index 74% rename from tests/test_static_with_only_api_from_dynamic.py rename to test_dynamic.py index b8b3c31..90c452c 100644 --- a/tests/test_static_with_only_api_from_dynamic.py +++ b/test_dynamic.py @@ -2,8 +2,8 @@ This shows how to use the CFFI dynamic (ABI) binding. Note that is slower and more likely to run into silent errors and segfaults. But it doesnt require any C compiler to build. """ - -from raylib import ffi, rl, colors +from raylib.dynamic import ffi, raylib as rl +from raylib.colors import * rl.InitWindow(800, 450, b"Raylib dynamic binding test") rl.SetTargetFPS(60) @@ -14,19 +14,20 @@ texture = rl.LoadTextureFromImage(image) mesh = rl.GenMeshHeightmap(image, [16, 8, 16]) model = rl.LoadModelFromMesh(mesh) print(model.materials) # SHOULD BE A pointer to a 'struct Material' but some is NULL pointer to 'Material' ? -model.materials.maps[rl.MATERIAL_MAP_ALBEDO].texture = texture +model.materials.maps[rl.MAP_DIFFUSE].texture = texture rl.UnloadImage(image) +rl.SetCameraMode(camera[0], rl.CAMERA_ORBITAL) while not rl.WindowShouldClose(): - rl.UpdateCamera(camera, rl.CAMERA_ORBITAL) + rl.UpdateCamera(camera) rl.BeginDrawing() - rl.ClearBackground(colors.RAYWHITE) + rl.ClearBackground(RAYWHITE) rl.BeginMode3D(camera[0]) - rl.DrawModel(model, (-8.0, 0.0, -8.0), 1.0, colors.RED) + rl.DrawModel(model, (-8.0, 0.0, -8.0), 1.0, RED) rl.DrawGrid(20, 1.0) rl.EndMode3D() - rl.DrawText(b"This mesh should be textured", 190, 200, 20, colors.VIOLET) + rl.DrawText(b"This mesh should be textured", 190, 200, 20, VIOLET) rl.EndDrawing() rl.CloseWindow() diff --git a/test_pyray.py b/test_pyray.py new file mode 100644 index 0000000..8085c72 --- /dev/null +++ b/test_pyray.py @@ -0,0 +1,44 @@ +""" +This shows how to use the Pyray wrapper around the static binding. +""" + +from raylib.pyray import PyRay +from raylib.colors import * + +pyray = PyRay() + +pyray.init_window(800, 450, "Raylib texture test") +pyray.set_target_fps(60) + +camera = pyray.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0) +image = pyray.load_image("examples/models/resources/heightmap.png") +texture = pyray.load_texture_from_image(image) +mesh = pyray.gen_mesh_heightmap(image, (16, 8, 16)) +model = pyray.load_model_from_mesh(mesh) +model.materials.maps[pyray.MAP_DIFFUSE].texture = texture + +pyray.unload_image(image) +pyray.set_camera_mode(camera, pyray.CAMERA_ORBITAL) + +pos = pyray.get_mouse_position() +ray = pyray.get_mouse_ray(pos, camera) +rayhit = pyray.get_collision_ray_ground(ray, 0) +print(str(rayhit.position.x)) + +while not pyray.window_should_close(): + pyray.update_camera(pyray.pointer(camera)) + pyray.begin_drawing() + pyray.clear_background(RAYWHITE) + pyray.begin_mode_3d(camera) + pyray.draw_model(model, (-8.0, 0.0, -8.0), 1.0, RED) + pyray.draw_grid(20, 1.0) + pyray.end_mode_3d() + pyray.draw_text("This mesh should be textured", 190, 200, 20, VIOLET) + pyray.end_drawing() + + pos = pyray.get_mouse_position() + ray = pyray.get_mouse_ray(pos, camera) + rayhit = pyray.get_collision_ray_ground(ray, 0) + print(str(rayhit.position.x)) + +pyray.close_window() diff --git a/tests/xtest_static.py b/test_static.py similarity index 84% rename from tests/xtest_static.py rename to test_static.py index a9c3390..a2dcd95 100644 --- a/tests/xtest_static.py +++ b/test_static.py @@ -3,7 +3,7 @@ This shows how to use the CFFI static (API) binding. It should be fast and code C code. """ -from raylib import * +from raylib.static import * InitWindow(800, 450, b"Raylib static texture test") SetTargetFPS(60) @@ -13,12 +13,13 @@ image = LoadImage(b"examples/models/resources/heightmap.png") texture = LoadTextureFromImage(image) mesh = GenMeshHeightmap(image, (16, 8, 16)) model = LoadModelFromMesh(mesh) -model.materials.maps[MATERIAL_MAP_ALBEDO].texture = texture +model.materials.maps[MAP_DIFFUSE].texture = texture UnloadImage(image) +SetCameraMode(camera[0], CAMERA_ORBITAL) while not WindowShouldClose(): - UpdateCamera(camera, CAMERA_ORBITAL) + UpdateCamera(camera) BeginDrawing() ClearBackground(RAYWHITE) BeginMode3D(camera[0]) diff --git a/tests/run_tests.sh b/tests/run_tests.sh deleted file mode 100755 index 653a442..0000000 --- a/tests/run_tests.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -rm raylib pyray examples -ln -s ../raylib -ln -s ../pyray -ln -s ../examples -for FILE in *.py -do - if python3 $FILE; then - echo $FILE returned true - else - echo $FILE returned some error - rm raylib pyray examples - exit - fi -done -rm raylib pyray examples \ No newline at end of file diff --git a/tests/run_tests_dynamic.sh b/tests/run_tests_dynamic.sh deleted file mode 100755 index 1942448..0000000 --- a/tests/run_tests_dynamic.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -rm raylib pyray examples -ln -s ../dynamic/raylib -ln -s ../dynamic/pyray -ln -s ../examples -for FILE in test_*.py -do - if python3 $FILE; then - echo $FILE returned true - else - echo $FILE returned some error - rm raylib pyray examples - exit - fi -done -rm raylib pyray examples \ No newline at end of file diff --git a/tests/test_color.py b/tests/test_color.py deleted file mode 100644 index fcdbc1e..0000000 --- a/tests/test_color.py +++ /dev/null @@ -1,22 +0,0 @@ -import pyray - -pyray.init_window(800, 400, 'demo') - - -white = pyray.get_color(0xFFFFFFFF) -red = pyray.get_color(0xFF0000FF) -green = pyray.get_color(0x00FF00FF) -blue = pyray.get_color(0x0000FFFF) - -red = pyray.Color(255, 0, 0) -print(red.r) -red.a=255 - -while not pyray.window_should_close(): - pyray.begin_drawing() - pyray.clear_background(white) - pyray.draw_rectangle(0, 0, 100, 100, red) - pyray.draw_rectangle(100, 100, 100, 100, green) - pyray.draw_rectangle(200, 200, 100, 100, blue) - pyray.end_drawing() -pyray.close_window() diff --git a/tests/test_float_pointers.py b/tests/test_float_pointers.py deleted file mode 100644 index d3d0607..0000000 --- a/tests/test_float_pointers.py +++ /dev/null @@ -1,11 +0,0 @@ -import pyray as pr -import pytest - -pr.init_window(1280, 720, "any") - -shader = pr.load_shader("", "shader.fs") -time = pr.ffi.new("float *", 0.0) -timeLoc = pr.get_shader_location(shader, "uTime") -pr.set_shader_value(shader, timeLoc, time, pr.SHADER_UNIFORM_FLOAT) -with pytest.raises(TypeError): - pr.set_shader_value(shader, timeLoc, 0.0, pr.SHADER_UNIFORM_FLOAT) \ No newline at end of file diff --git a/tests/test_gamepad.py b/tests/test_gamepad.py deleted file mode 100644 index 762d466..0000000 --- a/tests/test_gamepad.py +++ /dev/null @@ -1,17 +0,0 @@ -import pyray as pr -pr.set_config_flags(pr.FLAG_MSAA_4X_HINT) -pr.init_window(800, 600, 'Test gamepad') -pr.set_target_fps(60) -while not pr.window_should_close(): - pr.begin_drawing() - pr.clear_background(pr.BLACK) - if pr.is_gamepad_available(0): - pr.draw_text(f'GP0: {pr.get_gamepad_name(0)}', 5, 5, 20, pr.RAYWHITE) - pr.draw_text(f'Axis: {pr.get_gamepad_axis_count(0)}', 5, 30, 20, pr.RAYWHITE) - pr.draw_text(f'Button: {pr.get_gamepad_button_pressed()}', 5, 55, 20, pr.RAYWHITE) - _hy_anon_var_1 = pr.draw_text( - f'Axis 0: {pr.get_gamepad_axis_movement(0, 0)}', 5, 85, 20, pr.RAYWHITE) - else: - _hy_anon_var_1 = None - pr.end_drawing() -pr.close_window() \ No newline at end of file diff --git a/tests/test_hello_world.py b/tests/test_hello_world.py deleted file mode 100644 index 44e86b6..0000000 --- a/tests/test_hello_world.py +++ /dev/null @@ -1,10 +0,0 @@ -from pyray import * -init_window(800, 450, "Hello") -while not window_should_close(): - begin_drawing() - clear_background(WHITE) - font = load_font_ex("/usr/share/fonts/TTF/FiraSans-Ultra.ttf", 30, None, 0) - draw_text_ex(font, "hellow font", (300, 300), 30, 0, BLACK) - draw_text("Hello world", 190, 200, 20, VIOLET) - end_drawing() -close_window() diff --git a/tests/test_pyray.py b/tests/test_pyray.py deleted file mode 100644 index e9f54bc..0000000 --- a/tests/test_pyray.py +++ /dev/null @@ -1,46 +0,0 @@ -""" -This shows how to use the Pyray wrapper around the static binding. -""" - -import pyray as pr - -pr.init_window(800, 450, "Raylib texture test") -pr.set_target_fps(60) - -test_typedef_init = pr.Texture2D() # Texture2D is typedef for Texture - -image = pr.gen_image_color(800, 400, (0,0,0,255) ) -texture = pr.load_texture_from_image(image) -pr.update_texture(texture, image.data) - -camera = pr.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0) -image = pr.load_image("examples/models/resources/heightmap.png") -texture = pr.load_texture_from_image(image) -mesh = pr.gen_mesh_heightmap(image, (16, 8, 16)) -model = pr.load_model_from_mesh(mesh) -model.materials.maps[pr.MaterialMapIndex.MATERIAL_MAP_ALBEDO].texture = texture - -pr.unload_image(image) - -pos = pr.get_mouse_position() -ray = pr.get_screen_to_world_ray(pos, camera) -#rayhit = pr.get_ray_collision_ground(ray, 0) -#print(str(rayhit.position.x)) - -while not pr.window_should_close(): - pr.update_camera(camera, pr.CAMERA_ORBITAL) - pr.begin_drawing() - pr.clear_background(pr.RAYWHITE) - pr.begin_mode_3d(camera) - pr.draw_model(model, (-8.0, 0.0, -8.0), 1.0, pr.RED) - pr.draw_grid(20, 1.0) - pr.end_mode_3d() - pr.draw_text("This mesh should be textured", 190, 200, 20, pr.VIOLET) - pr.end_drawing() - - pos = pr.get_mouse_position() - ray = pr.get_screen_to_world_ray(pos, camera) - #rayhit = pr.get_ray_collision_ground(ray, 0) - #print(str(rayhit.position.x)) - -pr.close_window() diff --git a/tests/test_pyray_no_prefix.py b/tests/test_pyray_no_prefix.py deleted file mode 100644 index bc27240..0000000 --- a/tests/test_pyray_no_prefix.py +++ /dev/null @@ -1,44 +0,0 @@ -""" -This shows how to use the Pyray wrapper around the static binding. -""" - -from pyray import * - -init_window(800, 450, "Raylib texture test") -set_target_fps(60) - -image = gen_image_color(800, 400, (0,0,0,255) ) -texture = load_texture_from_image(image) -update_texture(texture, image.data) - -camera = Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0) -image = load_image("examples/models/resources/heightmap.png") -texture = load_texture_from_image(image) -mesh = gen_mesh_heightmap(image, (16, 8, 16)) -model = load_model_from_mesh(mesh) -model.materials.maps[MATERIAL_MAP_ALBEDO].texture = texture - -unload_image(image) - -pos = get_mouse_position() -ray = get_screen_to_world_ray(pos, camera) -#rayhit = get_ray_collision_ground(ray, 0) -#print(str(rayhit.position.x)) - -while not window_should_close(): - update_camera(camera, CAMERA_ORBITAL) - begin_drawing() - clear_background(RAYWHITE) - begin_mode_3d(camera) - 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 tesxtured", 190, 200, 20, VIOLET) - end_drawing() - - pos = get_mouse_position() - ray = get_screen_to_world_ray(pos, camera) - #rayhit = get_ray_collision_ground(ray, 0) - #print(str(rayhit.position.x)) - -close_window() diff --git a/tests/xtest_defines.py b/tests/xtest_defines.py deleted file mode 100644 index e6c36be..0000000 --- a/tests/xtest_defines.py +++ /dev/null @@ -1,14 +0,0 @@ -""" -This shows how to use the Pyray wrapper around the static binding. -""" - -import pyray as pr - -print(pr.WHITE) -print(pr.MOUSE_BUTTON_LEFT) -print(pr.MOUSE_LEFT_BUTTON ) -print(pr.MATERIAL_MAP_SPECULAR) - -import raylib as rl - -print(rl.MATERIAL_MAP_DIFFUSE) \ No newline at end of file diff --git a/tests/xtest_jpg_support.py b/tests/xtest_jpg_support.py deleted file mode 100644 index 3538558..0000000 --- a/tests/xtest_jpg_support.py +++ /dev/null @@ -1,31 +0,0 @@ -from raylib import * - -screenWidth = 800 -screenHeight = 450 - -InitWindow(screenWidth, screenHeight, b"raylib [textures] example - image loading") - - - -image = LoadImage(b"examples/textures/resources/raylib_logo.jpg") -texture = LoadTextureFromImage(image) - -UnloadImage(image) - -while not WindowShouldClose(): - - BeginDrawing() - - ClearBackground(RAYWHITE) - - DrawTexture(texture, int(screenWidth/2 - texture.width/2), int(screenHeight/2 - texture.height/2), WHITE) - - DrawText(b"this IS a texture loaded from an image!", 300, 370, 10, GRAY) - - EndDrawing() - - - - -UnloadTexture(texture) -CloseWindow() diff --git a/tests/xtest_music.py b/tests/xtest_music.py deleted file mode 100644 index 2e9ddd0..0000000 --- a/tests/xtest_music.py +++ /dev/null @@ -1,19 +0,0 @@ -from pyray import * -init_window(800, 450, "Hello") - -init_audio_device() - -music = load_music_stream("examples/audio/resources/country.mp3") -music.looping = True -play_music_stream(music); - - -while not window_should_close(): - update_music_stream(music); - begin_drawing() - clear_background(WHITE) - draw_text("music "+str(music.looping), 190, 200, 20, VIOLET) - end_drawing() -unload_music_stream(music) -close_audio_device() -close_window() diff --git a/tests/xtest_physac.py b/tests/xtest_physac.py deleted file mode 100644 index 877b5e5..0000000 --- a/tests/xtest_physac.py +++ /dev/null @@ -1,70 +0,0 @@ -from raylib import * - -screenWidth = 800 -screenHeight = 450 - -SetConfigFlags(FLAG_MSAA_4X_HINT) -InitWindow(screenWidth, screenHeight, b"[physac] Basic demo") - - -logoX = screenWidth - MeasureText(b"Physac", 30) - 10 -logoY = 15 - - -InitPhysics() - - -floor = CreatePhysicsBodyRectangle([screenWidth/2, screenHeight ], 500, 100, 10) -floor.enabled = False - - -circle = CreatePhysicsBodyCircle([screenWidth/2, screenHeight/2], 45, 10) -circle.enabled = False - -SetTargetFPS(60) - -while not WindowShouldClose(): - - UpdatePhysics(); - - if IsMouseButtonPressed(MOUSE_BUTTON_LEFT): - body = CreatePhysicsBodyPolygon(GetMousePosition(), GetRandomValue(20, 80), GetRandomValue(3, 8), 10) - - elif IsMouseButtonPressed(MOUSE_BUTTON_RIGHT): - CreatePhysicsBodyCircle(GetMousePosition(), GetRandomValue(10, 45), 10) - - - bodiesCount = GetPhysicsBodiesCount() - for i in range(bodiesCount): - body = GetPhysicsBody(i) - if body and (body.position.y > screenHeight*2): - DestroyPhysicsBody(body) - - - BeginDrawing() - ClearBackground(BLACK) - DrawFPS(screenWidth - 90, screenHeight - 30) - - - bodiesCount = GetPhysicsBodiesCount() - for i in range(bodiesCount): - body = GetPhysicsBody(i) - if body: - vertexCount = GetPhysicsShapeVerticesCount(i) - for j in range(vertexCount): - vertexA = GetPhysicsShapeVertex(body, j) - jj = j + 1 if (j + 1) < vertexCount else 0 - vertexB = GetPhysicsShapeVertex(body, jj) - DrawLineV(vertexA, vertexB, GREEN) - - DrawText(b"Left mouse button to create a polygon", 10, 10, 10, WHITE) - DrawText(b"Right mouse button to create a circle", 10, 25, 10, WHITE) - - DrawText(b"Physac", logoX, logoY, 30, WHITE) - DrawText(b"Powered by", logoX + 50, logoY - 7, 10, WHITE) - - EndDrawing() - -ClosePhysics() - -CloseWindow() \ No newline at end of file diff --git a/tests/xtest_physac2.py b/tests/xtest_physac2.py deleted file mode 100644 index ff5749a..0000000 --- a/tests/xtest_physac2.py +++ /dev/null @@ -1,76 +0,0 @@ -from raylib import * - -VELOCITY = 0.5 - -screenWidth = 800 -screenHeight = 450 - -SetConfigFlags(FLAG_MSAA_4X_HINT) -InitWindow(screenWidth, screenHeight, b"[physac] Basic demo") -logoX = screenWidth - MeasureText(b"Physac", 30) - 10 -logoY = 15 - - -InitPhysics() - -floor = CreatePhysicsBodyRectangle([screenWidth/2, screenHeight ], screenWidth, 100, 10) -platformLeft = CreatePhysicsBodyRectangle([screenWidth*0.25, screenHeight*0.6 ], screenWidth*0.25, 10, 10) -platformRight = CreatePhysicsBodyRectangle([screenWidth*0.75, screenHeight*0.6 ], screenWidth*0.25, 10, 10) -wallLeft = CreatePhysicsBodyRectangle([-5, screenHeight/2 ], 10, screenHeight, 10) -wallRight = CreatePhysicsBodyRectangle([screenWidth + 5, screenHeight/2 ], 10, screenHeight, 10) - - -floor.enabled = False -platformLeft.enabled = False -platformRight.enabled = False -wallLeft.enabled = False -wallRight.enabled = False - - -body = CreatePhysicsBodyRectangle([screenWidth/2, screenHeight/2 ], 50, 50, 1) -body.freezeOrient = True - -SetTargetFPS(60) - -while not WindowShouldClose(): - - UpdatePhysics(); - - if IsKeyDown(KEY_RIGHT): - body.velocity.x = VELOCITY - elif IsKeyDown(KEY_LEFT): - body.velocity.x = -VELOCITY - - - if IsKeyDown(KEY_UP) and body.isGrounded: - body.velocity.y = -VELOCITY*4 - - BeginDrawing() - - ClearBackground(BLACK) - - DrawFPS(screenWidth - 90, screenHeight - 30) - - - bodiesCount = GetPhysicsBodiesCount() - for i in range(bodiesCount): - body = GetPhysicsBody(i) - vertexCount = GetPhysicsShapeVerticesCount(i) - for j in range(vertexCount): - vertexA = GetPhysicsShapeVertex(body, j) - - jj = j + 1 if j + 1 < vertexCount else 0 - vertexB = GetPhysicsShapeVertex(body, jj) - - DrawLineV(vertexA, vertexB, GREEN) - - DrawText(b"Use 'ARROWS' to move player", 10, 10, 10, WHITE) - - DrawText(b"Physac", logoX, logoY, 30, WHITE) - DrawText(b"Powered by", logoX + 50, logoY - 7, 10, WHITE) - - EndDrawing() - -ClosePhysics() - -CloseWindow() \ No newline at end of file diff --git a/tests/xtest_raygui.py b/tests/xtest_raygui.py deleted file mode 100644 index 1355e8f..0000000 --- a/tests/xtest_raygui.py +++ /dev/null @@ -1,49 +0,0 @@ -from raylib import * -import pyray as pr - -screenWidth = 800 -screenHeight = 600 - -SetConfigFlags(FLAG_WINDOW_UNDECORATED) -InitWindow(screenWidth, screenHeight, b"raygui - portable window") - - -mousePosition = pr.Vector2(0, 0) -windowPosition = pr.Vector2(500, 200 ) -panOffset = mousePosition -dragWindow = False - -SetWindowPosition(int(windowPosition.x), int(windowPosition.y)) - -exitWindow = False - -SetTargetFPS(60) - - -while not exitWindow and not WindowShouldClose(): - - mousePosition = GetMousePosition() - - if IsMouseButtonPressed(MOUSE_BUTTON_LEFT): - if CheckCollisionPointRec(mousePosition, pr.Rectangle(0, 0, screenWidth, 20) ): - dragWindow = True - panOffset = mousePosition - - - - if (dragWindow): - windowPosition.x += (mousePosition.x - panOffset.x) - windowPosition.y += (mousePosition.y - panOffset.y) - if IsMouseButtonReleased(MOUSE_BUTTON_LEFT): - dragWindow = False - - SetWindowPosition(int(windowPosition.x), int(windowPosition.y)) - - - BeginDrawing() - ClearBackground(RAYWHITE) - exitWindow = GuiWindowBox(pr.Rectangle(0, 0, screenWidth, screenHeight) , b"#198# PORTABLE WINDOW") - pr.draw_text(f"Mouse Position: {mousePosition.x} {mousePosition.y}", 10, 40, 10, DARKGRAY) - EndDrawing() - -CloseWindow() \ No newline at end of file diff --git a/tests/xtest_raygui2.py b/tests/xtest_raygui2.py deleted file mode 100644 index 49c2f01..0000000 --- a/tests/xtest_raygui2.py +++ /dev/null @@ -1,49 +0,0 @@ -import pyray -from pyray import * -import pytest - -SCREEN_WIDTH = 640 -SCREEN_HEIGHT = 480 - - -def main(): - init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raygui") - set_exit_key(KeyboardKey.KEY_ESCAPE) - set_target_fps(30) - - _bool_pointer = pyray.ffi.new("bool *", True) - _bool = True - _float = 5.5 - _float_pointer = pyray.ffi.new("float *", 5.2) - color = RED - color_pointer = Color() - _int=0 - _int_pointer = pyray.ffi.new("int *", 0) - _string ="cant edit this string" - _string_pointer = pyray.ffi.new("char []", b"0123456789") - - while not window_should_close(): - begin_drawing() - clear_background(WHITE) - - gui_check_box((40, 40, 30, 30), "checkbox", _bool_pointer) - with pytest.raises(TypeError): - gui_check_box(Rectangle(40, 40, 100, 100), "checkbox", _bool) - - gui_color_bar_alpha((40, 80, 100, 20), "bar", _float_pointer) - with pytest.raises(TypeError): - gui_color_bar_alpha((40, 80, 100, 20), "bar", _float) - - gui_color_picker((40,120, 100, 100), "color", color_pointer) - with pytest.raises(TypeError): - gui_color_picker((40,120, 100, 100), "color", color) - - gui_text_box((40,230, 100, 30), _string_pointer, 10, True) - gui_text_box((200,230, 100, 30), _string, 10, True) - - gui_tab_bar((40,300, 100, 30), ["foo", "boo"], 2, _int_pointer) - with pytest.raises(TypeError): - gui_tab_bar((40,300, 100, 30), ["foo", "boo"], 2, _int) - - end_drawing() -main() \ No newline at end of file diff --git a/tests/xtest_raygui_pyray.py b/tests/xtest_raygui_pyray.py deleted file mode 100644 index f49acee..0000000 --- a/tests/xtest_raygui_pyray.py +++ /dev/null @@ -1,49 +0,0 @@ -import pyray as pr - -screenWidth = 800 -screenHeight = 600 - -pr.set_config_flags(pr.FLAG_WINDOW_UNDECORATED) - -pr.init_window(screenWidth, screenHeight, "raygui - portable window") - - -mousePosition = pr.Vector2(0, 0) -windowPosition = pr.Vector2(500, 200 ) -panOffset = mousePosition -dragWindow = False - -pr.set_window_position(int(windowPosition.x), int(windowPosition.y)) - -exitWindow = False - -pr.set_target_fps(60) - -if pr.GuiSliderProperty.SLIDER_WIDTH.value != pr.SLIDER_WIDTH: - raise Exception('enums not working') - - -while not exitWindow and not pr.window_should_close(): - - mousePosition = pr.get_mouse_position() - - if pr.is_mouse_button_pressed(pr.MouseButton.MOUSE_BUTTON_LEFT): - if pr.check_collision_point_rec(mousePosition, pr.Rectangle(0, 0, screenWidth, 20)): - dragWindow = True - panOffset = mousePosition - - if dragWindow: - windowPosition.x += (mousePosition.x - panOffset.x) - windowPosition.y += (mousePosition.y - panOffset.y) - if pr.is_mouse_button_released(pr.MouseButton.MOUSE_BUTTON_LEFT): - dragWindow = False - - pr.set_window_position(int(windowPosition.x), int(windowPosition.y)) - - pr.begin_drawing() - pr.clear_background(pr.RAYWHITE) - exitWindow = pr.gui_window_box(pr.Rectangle(0, 0, screenWidth, screenHeight), "#198# PORTABLE WINDOW") - pr.draw_text(f"Mouse Position: {mousePosition.x} {mousePosition.y}", 10, 40, 10, pr.DARKGRAY) - pr.end_drawing() - -pr.close_window() \ No newline at end of file diff --git a/tests/xtest_raymath.py b/tests/xtest_raymath.py deleted file mode 100644 index cf1e3d0..0000000 --- a/tests/xtest_raymath.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -This shows how to use the Pyray wrapper around the static binding. -""" - -import pyray as pr - -v1 = pr.Vector2(10,10) -v2 = pr.Vector2(20,20) -v3 = pr.vector2_add(v1, v2) -print(v3.x, v3.y) -v4 = pr.vector2_normalize((20,10)) -print(v4.x, v4.y) \ No newline at end of file diff --git a/tests/xtest_rlgl.py b/tests/xtest_rlgl.py deleted file mode 100644 index d2bea55..0000000 --- a/tests/xtest_rlgl.py +++ /dev/null @@ -1,7 +0,0 @@ -from raylib import * - -InitWindow(800, 450, b"rlGL test") -SetTargetFPS(60) - - -print(rlGetVersion()) diff --git a/tests/xtest_static_with_prefix.py b/tests/xtest_static_with_prefix.py deleted file mode 100644 index d407937..0000000 --- a/tests/xtest_static_with_prefix.py +++ /dev/null @@ -1,31 +0,0 @@ -""" -This shows how to use the CFFI static (API) binding. It should be fast and code be as close as possible to original -C code. -""" - -import raylib as rl - -rl.InitWindow(800, 450, b"Raylib static binding test with prefix") -rl.SetTargetFPS(60) - -camera = rl.ffi.new("struct Camera3D *", [[18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0]) -image = rl.LoadImage(b"examples/models/resources/heightmap.png") -texture = rl.LoadTextureFromImage(image) -mesh = rl.GenMeshHeightmap(image, [16, 8, 16]) -model = rl.LoadModelFromMesh(mesh) -print(model.materials) # SHOULD BE A pointer to a 'struct Material' but some is NULL pointer to 'Material' ? -model.materials.maps[rl.MATERIAL_MAP_ALBEDO].texture = texture - -rl.UnloadImage(image) - -while not rl.WindowShouldClose(): - rl.UpdateCamera(camera, rl.CAMERA_ORBITAL) - rl.BeginDrawing() - rl.ClearBackground(rl.RAYWHITE) - rl.BeginMode3D(camera[0]) - rl.DrawModel(model, (-8.0, 0.0, -8.0), 1.0, rl.RED) - rl.DrawGrid(20, 1.0) - rl.EndMode3D() - rl.DrawText(b"This mesh should be textured", 190, 200, 20, rl.VIOLET) - rl.EndDrawing() -rl.CloseWindow() diff --git a/version.py b/version.py deleted file mode 100644 index 819d349..0000000 --- a/version.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "5.5.0.2" \ No newline at end of file diff --git a/web_examples.py b/web_examples.py deleted file mode 100644 index f99713f..0000000 --- a/web_examples.py +++ /dev/null @@ -1,115 +0,0 @@ -# Written by AI - -import os -import shutil - -def convert(file_name): - with open(file_name, "r") as f: - # Read the lines of the file - lines = f.readlines() - - # Create a temporary file name - temp_file_name = file_name + ".tmp" - - # Open the temporary file in write mode - with open(temp_file_name, "w") as f: - # Write the first line to define the main() function - f.write("""# /// script -# dependencies = [ -# "cffi", -# "inflection", -# "raylib" -# ] -# /// -import asyncio -import platform -from raylib import * -from pyray import * -async def main(): -""") - # Indent each line of the original file and write it to the temporary file - for line in lines: - if "from raylib import *" in line or "from pyray import *" in line: - pass - else: - f.write(" " + line) - - indent = line[:len(line) - len(line.lstrip())] - if "init_window" in line or "InitWindow" in line: - f.write(indent + " platform.window.window_resize()\n") - if "end_drawing" in line or "EndDrawing" in line: - f.write(indent + " await asyncio.sleep(0)\n") - - - - - # Write the last line to call the main() function - f.write("\nasyncio.run(main())\n") - - # Delete the original file - os.remove(file_name) - - # Rename the temporary file to the original file name - os.rename(temp_file_name, file_name) - -# Define the directory to start from -start_dir = "examples" - -# Define the output directory -output_dir = "webexamples" -os.mkdir(output_dir) - -# Loop through all the files and subdirectories -for root, dirs, files in os.walk(start_dir): - # Loop through the files that match the pattern '*.py' - for file in files: - if ((file.startswith("core") or file.startswith("phys") or file.startswith("shapes") or file.startswith("text")) - and file.endswith(".py")): - # Get the full path of the file - file_path = os.path.join(root, file) - # Get the file name without the extension - file_name = os.path.splitext(file)[0] - # Create a new directory with the same name as the file in the output directory - new_dir = os.path.join(output_dir, file_name) - os.mkdir(new_dir) - # Copy the file into the new directory and rename it 'main.py' - new_file = os.path.join(new_dir, "main.py") - shutil.copy(file_path, new_file) - convert(new_file) - os.system(f"cp -R examples/textures/resources {new_dir}") - os.system("python3.12 -m pygbag --git --PYBUILD 3.12 --no_opt --can_close 1 --ume_block 0 --template noctx.tmpl --build "+new_file) - os.system(f"rm -rf {new_dir}/resources") - -os.system(f"touch {output_dir}/.nojekyll") - -# Open the index.html file in write mode -with open(output_dir+"/index.html", "w") as index_file: - - # Write the HTML header - index_file.write("\n\nDirectory Index\n\n\n") - - # Write the title of the page - index_file.write("

Directory Index

\n") - - # Write the list of subdirectories - index_file.write("
    \n") - sub_dirs = os.listdir(output_dir) - - # Sort the list of subdirectories in alphabetical order - sub_dirs.sort() - - # Loop through the sorted subdirectories - for sub_dir in sub_dirs: - - # Check if the subdirectory is a directory - if os.path.isdir(os.path.join(output_dir, sub_dir)): - - # Write the subdirectory name and the link to frank.html - index_file.write(f"
  • {sub_dir}") - #- code
  • \n") - - # Close the list tag - index_file.write("
\n") - - # Write the HTML footer - index_file.write("\n\n") diff --git a/windows_is_shit.bat b/windows_is_shit.bat new file mode 100644 index 0000000..639ae0f --- /dev/null +++ b/windows_is_shit.bat @@ -0,0 +1,2 @@ +"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.24.28314\bin\HostX86\x64\cl.exe" /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\Richard\AppData\Local\Programs\Python\Python36\include -IC:\Users\Richard\AppData\Local\Programs\Python\Python36\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.24.28314\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /Tc_raylib_cffi.c /Fo.\Release\_raylib_cffi.obj +"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.24.28314\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\Users\Richard\AppData\Local\Programs\Python\Python36\libs /LIBPATH:C:\Users\Richard\AppData\Local\Programs\Python\Python36\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.24.28314\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x64" raylib_static.lib gdi32.lib shell32.lib user32.lib OpenGL32.lib winmm.lib /EXPORT:PyInit__raylib_cffi .\Release\_raylib_cffi.obj /OUT:.\_raylib_cffi.cp36-win_amd64.pyd /IMPLIB:.\Release\_raylib_cffi.cp36-win_amd64.lib /NODEFAULTLIB:MSVCRTD