Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions create_define_consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ def process(filename):
strval = str(e['value']).strip()
if strval.startswith("__"):
continue
if strval in known_enum:
print(e['name'] + " = raylib." + strval)
# if strval in known_enum:
# print(e['name'] + " = raylib." + strval)
elif strval in known_define:
print(e['name'] + " = " + strval)
else:
Expand Down
31 changes: 26 additions & 5 deletions create_stub_pyray.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@
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):")
for value in e['values']:
print(" "+value['name']+" = "+str(value['value']))
print("")


def ctype_to_python_type(t):
Expand All @@ -42,29 +48,39 @@ def ctype_to_python_type(t):
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 "char" in t:
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

import _cffi_backend # type: ignore

def pointer(struct):
...
ffi: _cffi_backend.FFI
""")

# These words can be used for c arg names, but not in python
Expand All @@ -90,6 +106,8 @@ def pointer(struct):
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
Expand Down Expand Up @@ -128,11 +146,14 @@ def pointer(struct):
print(f' """ struct """')
sig = ""
for arg in ffi.typeof(struct).fields:
sig += ", " + arg[0]
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]}={arg[0]}")
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")
Expand Down
33 changes: 24 additions & 9 deletions create_stub_static.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,27 +42,35 @@ def ctype_to_python_type(t):
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]"
return "list[bytes]"
elif "char *" in t:
return "str"
return "bytes"
elif "char" in t:
return "str" # not sure about this one
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

import _cffi_backend
import _cffi_backend # type: ignore

ffi: _cffi_backend.FFI
rl: _cffi_backend.Lib
Expand Down Expand Up @@ -96,6 +104,8 @@ class struct: ...
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
Expand All @@ -121,17 +131,22 @@ class struct: ...
# if ffi.typeof(struct).fields is None:
# print("weird empty struct, skipping", file=sys.stderr)
# continue
print(f"{struct}: struct")
print(f"class {struct}:")
# sig = ""
# for arg in ffi.typeof(struct).fields:
# sig += ", " + arg[0]
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:
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")
print(f"{struct} = int")
else:
print("ERROR UNKNOWN TYPE", ffi.typeof(struct), file=sys.stderr)

Expand Down
4 changes: 2 additions & 2 deletions docs/.buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 614f580883a5bffb7f1606004f7be223
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 6b88b88b20947586d6498748ffd23a92
tags: 645f666f9bcd5a90fca523b33c5a78b7
20 changes: 9 additions & 11 deletions docs/BUILDING.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@


<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
Expand All @@ -6,19 +8,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Building from source &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />


<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->

<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
Expand Down
21 changes: 9 additions & 12 deletions docs/README.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@


<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
Expand All @@ -6,19 +8,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Python Bindings for Raylib 5.0 &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />


<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->

<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
Expand Down Expand Up @@ -105,7 +103,6 @@

<section id="python-bindings-for-raylib-5-0">
<h1>Python Bindings for Raylib 5.0<a class="headerlink" href="#python-bindings-for-raylib-5-0" title="Link to this heading"></a></h1>
<iframe src="https://electronstudio.github.io/raylib-python-cffi-pygbag-examples/shapes_bouncing_ball/build/web/" style="border:0px #ffffff none;" name="myiFrame" scrolling="no" frameborder="1" marginheight="0px" marginwidth="0px" height="450px" width="800px" allowfullscreen></iframe>
<p>Chatroom: <a class="reference external" href="https://discord.gg/fKDwt85aX6">Discord</a> or <a class="reference external" href="https://matrix.to/#/#raylib-python-cffi:matrix.org">Matrix</a></p>
<p>New CFFI API static bindings.</p>
<ul class="simple">
Expand Down
20 changes: 9 additions & 11 deletions docs/RPI.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@


<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
Expand All @@ -6,19 +8,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Raspberry Pi &mdash; Raylib Python documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />


<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->

<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
Expand Down
15 changes: 2 additions & 13 deletions docs/_static/basic.css
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/

/* -- main layout ----------------------------------------------------------- */
Expand Down Expand Up @@ -115,15 +108,11 @@ img {
/* -- search page ----------------------------------------------------------- */

ul.search {
margin: 10px 0 0 20px;
padding: 0;
margin-top: 10px;
}

ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
padding: 5px 0;
}

ul.search li a {
Expand Down
2 changes: 1 addition & 1 deletion docs/_static/css/badge_only.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading