draw_lines, random_triangle demo

This commit is contained in:
James Turk 2011-03-15 22:37:29 -04:00
parent f9c500f4c6
commit fc3c379a09
3 changed files with 69 additions and 1 deletions

View File

@ -112,6 +112,16 @@ class RendererInfo(ctypes.Structure):
('max_texture_height', ctypes.c_int)
)
_render_driver_list = []
def get_render_drivers():
if not _render_driver_list:
num = _SDL.SDL_GetNumRenderDrivers()
for i in xrange(num):
rinfo = RendererInfo()
errcheck(_SDL.SDL_GetRenderDriverInfo(i, ctypes.byref(rinfo)))
_render_driver_list.append(rinfo)
return _render_driver_list
class Renderer(object):
def __init__(self, window, index=-1, flags=0):
@ -125,6 +135,17 @@ class Renderer(object):
def set_draw_color(self, r, g, b, a=255):
errcheck(_SDL.SDL_SetRenderDrawColor(self._renderer, r, g, b, a))
@property
def draw_color(self):
r = ctypes.c_uint8()
g = ctypes.c_uint8()
b = ctypes.c_uint8()
a = ctypes.c_uint8()
errcheck(_SDL.SDL_GetRenderDrawColor(self._renderer, ctypes.byref(r),
ctypes.byref(g), ctypes.byref(b),
ctypes.byref(a)))
return (r,g,b,a)
def clear(self):
errcheck(_SDL.SDL_RenderClear(self._renderer))
@ -134,6 +155,11 @@ class Renderer(object):
def draw_line(self, x1, y1, x2, y2):
errcheck(_SDL.SDL_RenderDrawLine(self._renderer, x1, y1, x2, y2))
def draw_lines(self, points):
T = Point*len(points)
_sdl_points = T(*[Point(*pt) for pt in points])
errcheck(_SDL.SDL_RenderDrawLines(self._renderer, _sdl_points,
len(points)))
_SDL.SDL_GetWindowTitle.restype = ctypes.c_char_p
@ -216,7 +242,7 @@ class Window(object):
def minimize(self):
_SDL.SDL_MinimizeWindow(self._handle)
def raise(self):
def raise_window(self):
_SDL.SDL_RaiseWindow(self._handle)
def restore(self):
@ -283,6 +309,12 @@ class Rect(ctypes.Structure):
('height', ctypes.c_int),
)
class Point(ctypes.Structure):
_fields_ = (
('x', ctypes.c_int),
('y', ctypes.c_int),
)
def get_display_bounds(display_index):
rect = Rect()
errcheck(_SDL.SDL_GetDisplayBounds(display_index, ctypes.byref(rect)))

23
demo/random_triangles.py Normal file
View File

@ -0,0 +1,23 @@
from csdl import init, Window, SDL_INIT_EVERYTHING
import random
import time
def main():
init(SDL_INIT_EVERYTHING)
window = Window('test', 100, 100, 512, 512, 0)
while True:
window.renderer.set_draw_color(0,0,0,255)
window.renderer.clear()
window.renderer.set_draw_color(255,0,0,255)
for i in xrange(20):
window.renderer.set_draw_color(random.randint(0,255),
random.randint(0,255),
random.randint(0,255))
p1 = (random.randint(0,512), random.randint(0, 512))
p2 = (random.randint(0,512), random.randint(0, 512))
p3 = (random.randint(0,512), random.randint(0, 512))
window.renderer.draw_lines([p1, p2, p3, p1])
window.renderer.present()
time.sleep(.001)
main()

View File

@ -13,3 +13,16 @@ http://wiki.libsdl.org/moin.cgi/CategoryVideo
SDL_SetWindowFullscreen -- later
SDL_VideoInit -- later
SDL_VideoQuit -- later
SDL_GL_* -- later?
CategoryRender
SDL_CreateSoftwareRenderer
SDL_CreateTexture, SDL_CreateTextureFromSurface, SDL_DestroyTexture, SDL_DirtyTexture
SDL_GetRenderDrawBlendMode
SDL_GetTextureAlphaMod
SDL_GetTextureBlendMode
SDL_GetTextureColorMode
SDL_LockTexture
SDL_QueryTexture
SDL_QueryTexturePixels
SDL_RenderCopy