├── README ├── Readme.txt ├── brainworkshop.pyw ├── brainworkshop.sh ├── data ├── Readme-stats.txt ├── config.ini └── stats.txt ├── pyglet ├── __init__.py ├── __init__.pyc ├── app │ ├── __init__.py │ ├── __init__.pyc │ ├── carbon.py │ ├── win32.py │ ├── xlib.py │ └── xlib.pyc ├── clock.py ├── clock.pyc ├── com.py ├── event.py ├── event.pyc ├── font │ ├── __init__.py │ ├── __init__.pyc │ ├── base.py │ ├── base.pyc │ ├── carbon.py │ ├── freetype.py │ ├── freetype.pyc │ ├── freetype_lib.py │ ├── freetype_lib.pyc │ ├── ttf.py │ └── win32.py ├── gl │ ├── __init__.py │ ├── __init__.pyc │ ├── agl.py │ ├── agl.pyc │ ├── gl.py │ ├── gl.pyc │ ├── gl_info.py │ ├── gl_info.pyc │ ├── glext_arb.py │ ├── glext_arb.pyc │ ├── glext_missing.py │ ├── glext_missing.pyc │ ├── glext_nv.py │ ├── glu.py │ ├── glu.pyc │ ├── glu_info.py │ ├── glu_info.pyc │ ├── glx.py │ ├── glx.pyc │ ├── glx_info.py │ ├── glx_info.pyc │ ├── glxext_arb.py │ ├── glxext_arb.pyc │ ├── glxext_mesa.py │ ├── glxext_mesa.pyc │ ├── glxext_nv.py │ ├── lib.py │ ├── lib.pyc │ ├── lib_agl.py │ ├── lib_glx.py │ ├── lib_glx.pyc │ ├── lib_wgl.py │ ├── wgl.py │ ├── wgl_info.py │ ├── wglext_arb.py │ └── wglext_nv.py ├── graphics │ ├── __init__.py │ ├── __init__.pyc │ ├── allocation.py │ ├── allocation.pyc │ ├── vertexattribute.py │ ├── vertexattribute.pyc │ ├── vertexbuffer.py │ ├── vertexbuffer.pyc │ ├── vertexdomain.py │ └── vertexdomain.pyc ├── image │ ├── __init__.py │ ├── __init__.pyc │ ├── atlas.py │ ├── atlas.pyc │ └── codecs │ │ ├── __init__.py │ │ ├── __init__.pyc │ │ ├── bmp.py │ │ ├── bmp.pyc │ │ ├── dds.py │ │ ├── dds.pyc │ │ ├── gdiplus.py │ │ ├── gdiplus.pyc │ │ ├── gdkpixbuf2.py │ │ ├── gdkpixbuf2.pyc │ │ ├── gif.py │ │ ├── gif.pyc │ │ ├── pil.py │ │ ├── pil.pyc │ │ ├── png.py │ │ ├── png.pyc │ │ ├── pypng.py │ │ ├── pypng.pyc │ │ ├── quicktime.py │ │ ├── quicktime.pyc │ │ ├── s3tc.py │ │ └── s3tc.pyc ├── info.py ├── lib.py ├── lib.pyc ├── media │ ├── __init__.py │ ├── __init__.pyc │ ├── avbin.py │ ├── avbin.pyc │ ├── drivers │ │ ├── __init__.py │ │ ├── __init__.pyc │ │ ├── alsa │ │ │ ├── __init__.py │ │ │ ├── __init__.pyc │ │ │ ├── asound.py │ │ │ └── asound.pyc │ │ ├── directsound │ │ │ ├── __init__.py │ │ │ ├── __init__.pyc │ │ │ ├── lib_dsound.py │ │ │ └── lib_dsound.pyc │ │ ├── openal │ │ │ ├── __init__.py │ │ │ ├── __init__.pyc │ │ │ ├── lib_alc.py │ │ │ ├── lib_openal.py │ │ │ └── lib_openal.pyc │ │ └── silent.py │ ├── procedural.py │ └── riff.py ├── resource.py ├── sprite.py ├── sprite.pyc ├── text │ ├── __init__.py │ ├── __init__.pyc │ ├── caret.py │ ├── caret.pyc │ ├── document.py │ ├── document.pyc │ ├── formats │ │ ├── __init__.py │ │ ├── __init__.pyc │ │ ├── attributed.py │ │ ├── html.py │ │ ├── plaintext.py │ │ ├── plaintext.pyc │ │ └── structured.py │ ├── layout.py │ ├── layout.pyc │ ├── runlist.py │ └── runlist.pyc └── window │ ├── __init__.py │ ├── __init__.pyc │ ├── carbon │ ├── __init__.py │ ├── __init__.pyc │ ├── constants.py │ ├── constants.pyc │ ├── quartzkey.py │ ├── types.py │ └── types.pyc │ ├── event.py │ ├── event.pyc │ ├── key.py │ ├── key.pyc │ ├── mouse.py │ ├── mouse.pyc │ ├── win32 │ ├── __init__.py │ ├── __init__.pyc │ ├── constants.py │ ├── types.py │ └── winkey.py │ └── xlib │ ├── __init__.py │ ├── __init__.pyc │ ├── cursorfont.py │ ├── cursorfont.pyc │ ├── xinerama.py │ ├── xinerama.pyc │ ├── xlib.py │ ├── xlib.pyc │ ├── xsync.py │ └── xsync.pyc └── res ├── misc ├── applause │ └── applause.wav ├── brain │ └── brain.png ├── colored-squares │ ├── spr_square_blue.png │ ├── spr_square_cyan.png │ ├── spr_square_green.png │ ├── spr_square_grey.png │ ├── spr_square_magenta.png │ ├── spr_square_red.png │ ├── spr_square_white.png │ └── spr_square_yellow.png ├── splash-black │ └── brain_graphic_blk.png └── splash │ └── brain_graphic.png ├── music ├── advance │ ├── Concert.ogg │ ├── Hot Swing.ogg │ └── Victory.ogg ├── good │ ├── Corncob.ogg │ ├── Emptiness.ogg │ └── Sea Song.ogg └── great │ ├── Butterfly Tea - Cavern of Time.ogg │ ├── Human Beat.ogg │ └── Lachaim.ogg ├── sounds ├── corsica-letters │ ├── __details_and_attribution.txt │ ├── h.wav │ ├── j.wav │ ├── k.wav │ ├── l.wav │ ├── q.wav │ ├── r.wav │ ├── s.wav │ └── t.wav ├── letters │ ├── c.wav │ ├── h.wav │ ├── k.wav │ ├── l.wav │ ├── q.wav │ ├── r.wav │ ├── s.wav │ └── t.wav ├── morse │ ├── 0.wav │ ├── 1.wav │ ├── 2.wav │ ├── 3.wav │ ├── 4.wav │ ├── 5.wav │ ├── 6.wav │ ├── 7.wav │ ├── 8.wav │ ├── 9.wav │ ├── a.wav │ ├── b.wav │ ├── c.wav │ ├── d.wav │ ├── e.wav │ ├── f.wav │ ├── g.wav │ ├── h.wav │ ├── i.wav │ ├── j.wav │ ├── k.wav │ ├── l.wav │ ├── m.wav │ ├── n.wav │ ├── o.wav │ ├── p.wav │ ├── q.wav │ ├── r.wav │ ├── s.wav │ ├── t.wav │ ├── u.wav │ ├── v.wav │ ├── w.wav │ ├── x.wav │ ├── y.wav │ └── z.wav ├── nato │ ├── a.wav │ ├── b.wav │ ├── c.wav │ ├── d.wav │ ├── e.wav │ ├── f.wav │ ├── g.wav │ ├── h.wav │ ├── i.wav │ ├── j.wav │ ├── k.wav │ ├── l.wav │ ├── m.wav │ ├── n.wav │ ├── nato_LICENSE.txt │ ├── o.wav │ ├── p.wav │ ├── q.wav │ ├── r.wav │ ├── s.wav │ ├── t.wav │ ├── u.wav │ ├── v.wav │ ├── w.wav │ ├── x.wav │ ├── y.wav │ └── z.wav ├── numbers │ ├── 0.wav │ ├── 1.wav │ ├── 10.wav │ ├── 11.wav │ ├── 12.wav │ ├── 13.wav │ ├── 2.wav │ ├── 3.wav │ ├── 4.wav │ ├── 5.wav │ ├── 6.wav │ ├── 7.wav │ ├── 8.wav │ └── 9.wav ├── operations │ ├── add.wav │ ├── divide.wav │ ├── multiply.wav │ └── subtract.wav └── piano │ ├── A4.wav │ ├── B4.wav │ ├── C4.wav │ ├── C5.wav │ ├── D4.wav │ ├── E4.wav │ ├── F4.wav │ └── G4.wav └── sprites ├── cartoon-faces ├── face-01.png ├── face-02.png ├── face-03.png ├── face-04.png ├── face-05.png ├── face-06.png ├── face-07.png ├── face-08.png ├── face-09.png ├── face-10.png ├── face-11.png ├── face-12.png ├── face-13.png ├── face-14.png ├── face-15.png ├── face-16.png ├── face-17.png ├── face-18.png ├── face-19.png ├── face-20.png ├── face-21.png ├── face-22.png ├── face-23.png ├── face-24.png ├── face-25.png └── face-26.png ├── national-park-service ├── 4-wheel-drive.png ├── airport.png ├── amphitheater.png ├── bicycle-trail.png ├── boat-launch.png ├── boat-tour.png ├── bus-stop.png ├── campfire.png ├── campground.png ├── canoe-access.png ├── cross-country.png ├── downhill-skiing.png ├── drinking-water.png ├── fishing.png ├── food-service.png ├── gas-station.png ├── golfing.png ├── horseback-riding.png ├── ice-skating.png ├── information.png ├── litter-receptacle.png ├── lodging.png ├── marina.png ├── motor-bike-trail.png ├── pets-on-leash.png ├── picnic-area.png ├── post-office.png ├── radiator-water.png ├── ranger-station.png ├── recycling.png ├── restrooms.png ├── rv-campground.png ├── sailing.png ├── sanitary-disposal-station.png ├── scuba-diving.png ├── shelter.png ├── sledding.png ├── snowmobile-trail.png ├── stable.png ├── store.png ├── swimming.png ├── telephone.png ├── trailhead.png └── wheelchair-accessible.png ├── pentominoes ├── pento-f.png ├── pento-p.png ├── pento-t.png ├── pento-u.png ├── pento-v.png ├── pento-w.png ├── pento-x.png └── pento-z.png ├── polygons-basic ├── diamond.png ├── hemicircle.png ├── hexagon.png ├── octagon.png ├── pentagon.png ├── square.png ├── star.png └── triangle.png └── tetrominoes-fixed ├── f-1.png ├── f-2.png ├── f-3.png ├── f-4.png ├── l-1.png ├── l-2.png ├── l-3.png ├── l-4.png ├── skew-1.png ├── skew-2.png ├── skew-3.png ├── skew-4.png ├── square.png ├── t-1.png ├── t-2.png ├── t-3.png └── t-4.png /README: -------------------------------------------------------------------------------- 1 | Mirror for http://brainworkshop.sourceforge.net 2 | 3 | Updated 5 March 2012 4 | -------------------------------------------------------------------------------- /brainworkshop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | BRW_DIR=$HOME/.brainworkshop 4 | if [ ! -d $BRW_DIR ] ;then 5 | mkdir $BRW_DIR 6 | fi 7 | 8 | BRW_CONFIGFILE=$BRW_DIR/config 9 | BRW_STATFILE=$BRW_DIR/stats 10 | 11 | exec python2 /usr/share/brainworkshop/brainworkshop.pyw --configfile $BRW_CONFIGFILE --statsfile $BRW_STATFILE 12 | -------------------------------------------------------------------------------- /data/Readme-stats.txt: -------------------------------------------------------------------------------- 1 | The session stats are output to a comma-separated file "stats.txt" (for the 2 | default user) or "USERNAME-stats.txt" (for other users) in this directory. 3 | Detailed per-trial stats, including reaction times, can be found in the 4 | "USERNAME-sessions.dat" in python's pickle data format. 5 | 6 | The rest of this file documents the format of the "stats.txt" files. 7 | 8 | NOTE: To specify a different stats file than "stats.txt", either create a new 9 | user profile, or use the command-line option: --statsfile 10 | Example: 11 | brainworkshop.exe --statsfile fred.txt 12 | brainworkshop.exe --statsfile mary.txt 13 | 14 | Each line holds the data for one session (about 60 seconds). To be parsed 15 | properly by Brain Workshop, a particular format must be maintained. 16 | 17 | Example line: 18 | 19 | 2010-08-17 02:45:38,2xD3B,61,258,3,35,24,0,1,33,75,0,0,0,0,0,0,0,75,0,0,0,0,0,0 20 | 21 | 0. The date format is as shown: YYYY-MM-DD HH:MM:SS 22 | 23 | 1. The mode string can be any of the following: 24 | D#B - dual #-back 25 | T#B - triple #-back 26 | A#B - arithmetic #-back 27 | DC#B - dual combination #-back 28 | TC#B - triple combination #-back 29 | QC#B - quad combination #-back 30 | 2x???#B - double-stim ??? #-back 31 | C???# - crab ??? #-back 32 | 33 | 34 | 2. The percentage score from 0-100. 35 | 36 | 3. The mode number. For a more complete listing, see config.ini. 37 | Some possibilities: 38 | 2 = D#B - dual #-back 39 | 3 = T#B - triple #-back 40 | 4 = DC#B - dual combination #-back 41 | 5 = TC#B - triple combination #-back 42 | 6 = QC#B - quad combination #-back 43 | ? + 128 = C???#B = crab ??? #-back 44 | ? + 256 = 2x???#B = double-stim ??? #-back 45 | ? + 512 = 3x???#B = triple-stim ??? #-back 46 | ? + 768 = 4x???#B = quadruple-stim ??? #-back 47 | For example, 386 = 2 + 128 + 256 = Double-stim crab dual n-back. 48 | 49 | 4. The n-back number. for example, 3 = 3-Back 50 | 51 | 5. Number of 0.1 seconds per trial. 52 | 15 = 1.5 seconds 53 | 30 = 3 seconds 54 | etc. 55 | 56 | 6. Number of trials in the session. 57 | 58 | 7. 0 = Standard mode, 1 = Manual mode. 59 | 60 | 8. Session number, the number followed by # in game 61 | 62 | 9-24. The next sixteen numbers are percentage scores for 63 | each of the input categories. 64 | 9. Position1 65 | 10. Audio 66 | 11. Color 67 | 12. Vis & N-Vis 68 | 13. Audio & N-Vis 69 | 14. Arithmetic 70 | 15. Image 71 | 16. Vis & N-Audio 72 | 17. Audio2 73 | 18. Position2 74 | 19. Position3 75 | 20. Position4 76 | 21. Color1 or Image1 (multi-stim mode only) 77 | 22. Color2 or Image2 78 | 23. Color3 or Image3 79 | 24. Color4 or Image4 80 | 81 | Each column is delimited by the comma character: , 82 | 83 | If there's an error loading the stats file, please make 84 | sure each line conforms to the above format. 85 | 86 | -------------------------------------------------------------------------------- /data/stats.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/data/stats.txt -------------------------------------------------------------------------------- /pyglet/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/__init__.pyc -------------------------------------------------------------------------------- /pyglet/app/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/app/__init__.pyc -------------------------------------------------------------------------------- /pyglet/app/carbon.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: $' 40 | 41 | import ctypes 42 | 43 | from pyglet.app import windows, BaseEventLoop 44 | from pyglet.window.carbon import carbon, types, constants, _oscheck 45 | 46 | EventLoopTimerProc = ctypes.CFUNCTYPE(None, ctypes.c_void_p, ctypes.c_void_p) 47 | kEventDurationForever = ctypes.c_double(constants.kEventDurationForever) 48 | 49 | class CarbonEventLoop(BaseEventLoop): 50 | def run(self): 51 | self._setup() 52 | 53 | e = ctypes.c_void_p() 54 | event_dispatcher = carbon.GetEventDispatcherTarget() 55 | self._event_loop = event_loop = carbon.GetMainEventLoop() 56 | event_queue = carbon.GetMainEventQueue() 57 | self._timer = timer = ctypes.c_void_p() 58 | idle_event_proc = EventLoopTimerProc(self._timer_proc) 59 | carbon.InstallEventLoopTimer(event_loop, 60 | ctypes.c_double(0.1), #? 61 | kEventDurationForever, 62 | idle_event_proc, 63 | None, 64 | ctypes.byref(timer)) 65 | 66 | self._force_idle = False 67 | self._allow_polling = True 68 | 69 | self.dispatch_event('on_enter') 70 | 71 | while not self.has_exit: 72 | if self._force_idle: 73 | duration = 0 74 | else: 75 | duration = kEventDurationForever 76 | if carbon.ReceiveNextEvent(0, None, duration, 77 | True, ctypes.byref(e)) == 0: 78 | carbon.SendEventToEventTarget(e, event_dispatcher) 79 | carbon.ReleaseEvent(e) 80 | 81 | # Manual idle event 82 | if carbon.GetNumEventsInQueue(event_queue) == 0 or self._force_idle: 83 | self._force_idle = False 84 | self._timer_proc(timer, None, False) 85 | 86 | carbon.RemoveEventLoopTimer(self._timer) 87 | self.dispatch_event('on_exit') 88 | 89 | def _stop_polling(self): 90 | carbon.SetEventLoopTimerNextFireTime(self._timer, ctypes.c_double(0.0)) 91 | 92 | def _enter_blocking(self): 93 | carbon.SetEventLoopTimerNextFireTime(self._timer, ctypes.c_double(0.0)) 94 | self._allow_polling = False 95 | 96 | def _exit_blocking(self): 97 | self._allow_polling = True 98 | 99 | def _timer_proc(self, timer, data, in_events=True): 100 | allow_polling = True 101 | 102 | for window in windows: 103 | # Check for live resizing 104 | if window._resizing is not None: 105 | allow_polling = False 106 | old_width, old_height = window._resizing 107 | rect = types.Rect() 108 | carbon.GetWindowBounds(window._window, 109 | constants.kWindowContentRgn, 110 | ctypes.byref(rect)) 111 | width = rect.right - rect.left 112 | height = rect.bottom - rect.top 113 | if width != old_width or height != old_height: 114 | window._resizing = width, height 115 | window.switch_to() 116 | window.dispatch_event('on_resize', width, height) 117 | 118 | # Check for live dragging 119 | if window._dragging: 120 | allow_polling = False 121 | 122 | # Check for deferred recreate 123 | if window._recreate_deferred: 124 | if in_events: 125 | # Break out of ReceiveNextEvent so it can be processed 126 | # in next iteration. 127 | carbon.QuitEventLoop(self._event_loop) 128 | self._force_idle = True 129 | else: 130 | # Do it now. 131 | window._recreate_immediate() 132 | 133 | sleep_time = self.idle() 134 | 135 | if sleep_time is None: 136 | sleep_time = constants.kEventDurationForever 137 | elif sleep_time < 0.01 and allow_polling and self._allow_polling: 138 | # Switch event loop to polling. 139 | if in_events: 140 | carbon.QuitEventLoop(self._event_loop) 141 | self._force_idle = True 142 | sleep_time = constants.kEventDurationForever 143 | carbon.SetEventLoopTimerNextFireTime(timer, ctypes.c_double(sleep_time)) 144 | 145 | -------------------------------------------------------------------------------- /pyglet/app/win32.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | # $Id:$ 35 | 36 | __docformat__ = 'restructuredtext' 37 | __version__ = '$Id: $' 38 | 39 | import ctypes 40 | import time 41 | 42 | from pyglet.app import windows, BaseEventLoop 43 | from pyglet.window.win32 import _user32, types, constants 44 | 45 | class Win32EventLoop(BaseEventLoop): 46 | def run(self): 47 | self._setup() 48 | 49 | self._timer_proc = types.TIMERPROC(self._timer_func) 50 | self._timer = timer = _user32.SetTimer(0, 0, 0, self._timer_proc) 51 | self._polling = False 52 | self._allow_polling = True 53 | msg = types.MSG() 54 | 55 | self.dispatch_event('on_enter') 56 | 57 | while not self.has_exit: 58 | if self._polling: 59 | while _user32.PeekMessageW(ctypes.byref(msg), 60 | 0, 0, 0, constants.PM_REMOVE): 61 | _user32.TranslateMessage(ctypes.byref(msg)) 62 | _user32.DispatchMessageW(ctypes.byref(msg)) 63 | self._timer_func(0, 0, timer, 0) 64 | else: 65 | _user32.GetMessageW(ctypes.byref(msg), 0, 0, 0) 66 | _user32.TranslateMessage(ctypes.byref(msg)) 67 | _user32.DispatchMessageW(ctypes.byref(msg)) 68 | 69 | # Manual idle event 70 | msg_types = \ 71 | _user32.GetQueueStatus(constants.QS_ALLINPUT) & 0xffff0000 72 | if (msg.message != constants.WM_TIMER and 73 | not msg_types & ~(constants.QS_TIMER<<16)): 74 | self._timer_func(0, 0, timer, 0) 75 | 76 | self.dispatch_event('on_exit') 77 | 78 | def _idle_chance(self): 79 | if (self._next_idle_time is not None and 80 | self._next_idle_time <= time.time()): 81 | self._timer_func(0, 0, self._timer, 0) 82 | 83 | def _timer_func(self, hwnd, msg, timer, t): 84 | sleep_time = self.idle() 85 | 86 | if sleep_time is None: 87 | # Block indefinitely 88 | millis = constants.USER_TIMER_MAXIMUM 89 | self._next_idle_time = None 90 | self._polling = False 91 | _user32.SetTimer(0, timer, millis, self._timer_proc) 92 | elif sleep_time < 0.01 and self._allow_polling: 93 | # Degenerate to polling 94 | millis = constants.USER_TIMER_MAXIMUM 95 | self._next_idle_time = 0. 96 | if not self._polling: 97 | self._polling = True 98 | _user32.SetTimer(0, timer, millis, self._timer_proc) 99 | else: 100 | # Block until timer 101 | # XXX hack to avoid oversleep; needs to be api 102 | sleep_time = max(sleep_time - 0.01, 0) 103 | millis = int(sleep_time * 1000) 104 | self._next_idle_time = time.time() + sleep_time 105 | self._polling = False 106 | _user32.SetTimer(0, timer, millis, self._timer_proc) 107 | -------------------------------------------------------------------------------- /pyglet/app/xlib.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: xlib.py 2496 2009-08-19 01:17:30Z benjamin.coder.smith $' 40 | 41 | import select 42 | 43 | from pyglet.app import displays, windows, BaseEventLoop 44 | from pyglet.window.xlib import xlib 45 | 46 | class XlibEventLoop(BaseEventLoop): 47 | def run(self): 48 | self._setup() 49 | 50 | e = xlib.XEvent() 51 | t = 0 52 | sleep_time = 0. 53 | 54 | self.dispatch_event('on_enter') 55 | 56 | while not self.has_exit: 57 | # Check for already pending events 58 | for display in displays: 59 | if xlib.XPending(display._display): 60 | pending_displays = (display,) 61 | break 62 | else: 63 | # None found; select on all file descriptors or timeout 64 | iwtd = self.get_select_files() 65 | pending_displays, _, _ = select.select(iwtd, (), (), sleep_time) 66 | 67 | # Dispatch platform events 68 | for display in pending_displays: 69 | while xlib.XPending(display._display): 70 | xlib.XNextEvent(display._display, e) 71 | 72 | # Key events are filtered by the xlib window event 73 | # handler so they get a shot at the prefiltered event. 74 | if e.xany.type not in (xlib.KeyPress, xlib.KeyRelease): 75 | if xlib.XFilterEvent(e, e.xany.window): 76 | continue 77 | try: 78 | window = display._window_map[e.xany.window] 79 | except KeyError: 80 | continue 81 | 82 | window.dispatch_platform_event(e) 83 | 84 | # Dispatch resize events 85 | for window in windows: 86 | if window._needs_resize: 87 | window.switch_to() 88 | window.dispatch_event('on_resize', 89 | window._width, window._height) 90 | window.dispatch_event('on_expose') 91 | window._needs_resize = False 92 | 93 | sleep_time = self.idle() 94 | 95 | self.dispatch_event('on_exit') 96 | 97 | def get_select_files(self): 98 | return list(displays) 99 | -------------------------------------------------------------------------------- /pyglet/app/xlib.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/app/xlib.pyc -------------------------------------------------------------------------------- /pyglet/clock.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/clock.pyc -------------------------------------------------------------------------------- /pyglet/com.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | # $Id:$ 35 | 36 | '''Minimal Windows COM interface. 37 | 38 | Allows pyglet to use COM interfaces on Windows without comtypes. Unlike 39 | comtypes, this module does not provide property interfaces, read typelibs, 40 | nice-ify return values or permit Python implementations of COM interfaces. We 41 | don't need anything that sophisticated to work with DirectX. 42 | 43 | All interfaces should derive from IUnknown (defined in this module). The 44 | Python COM interfaces are actually pointers to the implementation (take note 45 | when translating methods that take an interface as argument). 46 | 47 | Interfaces can define methods:: 48 | 49 | class IDirectSound8(com.IUnknown): 50 | _methods_ = [ 51 | ('CreateSoundBuffer', com.STDMETHOD()), 52 | ('GetCaps', com.STDMETHOD(LPDSCAPS)), 53 | ... 54 | ] 55 | 56 | Only use STDMETHOD or METHOD for the method types (not ordinary ctypes 57 | function types). The 'this' pointer is bound automatically... e.g., call:: 58 | 59 | device = IDirectSound8() 60 | DirectSoundCreate8(None, ctypes.byref(device), None) 61 | 62 | caps = DSCAPS() 63 | device.GetCaps(caps) 64 | 65 | Because STDMETHODs use HRESULT as the return type, there is no need to check 66 | the return value. 67 | 68 | Don't forget to manually manage memory... call Release() when you're done with 69 | an interface. 70 | ''' 71 | 72 | import ctypes 73 | import sys 74 | 75 | if sys.platform != 'win32': 76 | raise ImportError('pyglet.com requires a Windows build of Python') 77 | 78 | class GUID(ctypes.Structure): 79 | _fields_ = [ 80 | ('Data1', ctypes.c_ulong), 81 | ('Data2', ctypes.c_ushort), 82 | ('Data3', ctypes.c_ushort), 83 | ('Data4', ctypes.c_ubyte * 8) 84 | ] 85 | 86 | def __init__(self, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8): 87 | self.Data1 = l 88 | self.Data2 = w1 89 | self.Data3 = w2 90 | self.Data4[:] = (b1, b2, b3, b4, b5, b6, b7, b8) 91 | 92 | LPGUID = ctypes.POINTER(GUID) 93 | IID = GUID 94 | REFIID = ctypes.POINTER(IID) 95 | 96 | class METHOD(object): 97 | '''COM method.''' 98 | def __init__(self, restype, *args): 99 | self.restype = restype 100 | self.argtypes = args 101 | 102 | def get_field(self): 103 | return ctypes.WINFUNCTYPE(self.restype, *self.argtypes) 104 | 105 | class STDMETHOD(METHOD): 106 | '''COM method with HRESULT return value.''' 107 | def __init__(self, *args): 108 | super(STDMETHOD, self).__init__(ctypes.HRESULT, *args) 109 | 110 | class COMMethodInstance(object): 111 | '''Binds a COM interface method.''' 112 | def __init__(self, name, i, method): 113 | self.name = name 114 | self.i = i 115 | self.method = method 116 | 117 | def __get__(self, obj, tp): 118 | if obj is not None: 119 | return lambda *args: \ 120 | self.method.get_field()(self.i, self.name)(obj, *args) 121 | raise AttributeError() 122 | 123 | class COMInterface(ctypes.Structure): 124 | '''Dummy struct to serve as the type of all COM pointers.''' 125 | _fields_ = [ 126 | ('lpVtbl', ctypes.c_void_p), 127 | ] 128 | 129 | class InterfaceMetaclass(type(ctypes.POINTER(COMInterface))): 130 | '''Creates COM interface pointers.''' 131 | def __new__(cls, name, bases, dct): 132 | methods = [] 133 | for base in bases[::-1]: 134 | methods.extend(base.__dict__.get('_methods_', ())) 135 | methods.extend(dct.get('_methods_', ())) 136 | 137 | for i, (n, method) in enumerate(methods): 138 | dct[n] = COMMethodInstance(n, i, method) 139 | 140 | dct['_type_'] = COMInterface 141 | 142 | return super(InterfaceMetaclass, cls).__new__(cls, name, bases, dct) 143 | 144 | class Interface(ctypes.POINTER(COMInterface)): 145 | '''Base COM interface pointer.''' 146 | __metaclass__ = InterfaceMetaclass 147 | 148 | class IUnknown(Interface): 149 | _methods_ = [ 150 | ('QueryInterface', STDMETHOD(REFIID, ctypes.c_void_p)), 151 | ('AddRef', METHOD(ctypes.c_int)), 152 | ('Release', METHOD(ctypes.c_int)) 153 | ] 154 | 155 | -------------------------------------------------------------------------------- /pyglet/event.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/event.pyc -------------------------------------------------------------------------------- /pyglet/font/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/font/__init__.pyc -------------------------------------------------------------------------------- /pyglet/font/base.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/font/base.pyc -------------------------------------------------------------------------------- /pyglet/font/freetype.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/font/freetype.pyc -------------------------------------------------------------------------------- /pyglet/font/freetype_lib.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/font/freetype_lib.pyc -------------------------------------------------------------------------------- /pyglet/gl/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/__init__.pyc -------------------------------------------------------------------------------- /pyglet/gl/agl.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/agl.pyc -------------------------------------------------------------------------------- /pyglet/gl/gl.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/gl.pyc -------------------------------------------------------------------------------- /pyglet/gl/gl_info.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/gl_info.pyc -------------------------------------------------------------------------------- /pyglet/gl/glext_arb.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/glext_arb.pyc -------------------------------------------------------------------------------- /pyglet/gl/glext_missing.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Additional hand-coded GL extensions. 36 | 37 | These are hand-wrapped extension tokens and functions that are in 38 | the OpenGL Extension Registry but have not yet been added to either 39 | the registry's glext.h or nVidia's glext.h. Remove wraps from here 40 | when the headers are updated (and glext_arb.py or glext_nv.py are 41 | regenerated). 42 | 43 | When adding an extension here, include the name and URL, and any tokens and 44 | functions appearing under "New Tokens" and "New Procedures" headings. Don't 45 | forget to add the GL_/gl prefix. 46 | 47 | Unnumbered extensions in the registry are not included. 48 | ''' 49 | 50 | __docformat__ = 'restructuredtext' 51 | __version__ = '$Id: glext_missing.py 1579 2008-01-15 14:47:19Z Alex.Holkner $' 52 | 53 | from ctypes import * 54 | from pyglet.gl.lib import link_GL as _link_function 55 | from pyglet.gl.lib import c_ptrdiff_t 56 | 57 | # At time of writing, ABI glext.h was last updated 2005/06/20, so numbered 58 | # non-ARB extensions from 312 on must be included here. 59 | 60 | # GL_EXT_packed_depth_stencil 61 | # http://oss.sgi.com/projects/ogl-sample/registry/EXT/packed_depth_stencil.txt 62 | 63 | GL_DEPTH_STENCIL_EXT = 0x84F9 64 | GL_UNSIGNED_INT_24_8_EXT = 0x84FA 65 | GL_DEPTH24_STENCIL8_EXT = 0x88F0 66 | GL_TEXTURE_STENCIL_SIZE_EXT = 0x88F1 67 | 68 | # GL_EXT_texture_sRGB 69 | # http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_sRGB.txt 70 | 71 | GL_SRGB_EXT = 0x8C40 72 | GL_SRGB8_EXT = 0x8C41 73 | GL_SRGB_ALPHA_EXT = 0x8C42 74 | GL_SRGB8_ALPHA8_EXT = 0x8C43 75 | GL_SLUMINANCE_ALPHA_EXT = 0x8C44 76 | GL_SLUMINANCE8_ALPHA8_EXT = 0x8C45 77 | GL_SLUMINANCE_EXT = 0x8C46 78 | GL_SLUMINANCE8_EXT = 0x8C47 79 | GL_COMPRESSED_SRGB_EXT = 0x8C48 80 | GL_COMPRESSED_SRGB_ALPHA_EXT = 0x8C49 81 | GL_COMPRESSED_SLUMINANCE_EXT = 0x8C4A 82 | GL_COMPRESSED_SLUMINANCE_ALPHA_EXT = 0x8C4B 83 | GL_COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C 84 | GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D 85 | GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E 86 | GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F 87 | 88 | # GL_EXT_stencil_clear_tag 89 | # http://oss.sgi.com/projects/ogl-sample/registry/EXT/stencil_clear_tag.txt 90 | 91 | GLuint = c_uint # /usr/include/GL/gl.h:62 92 | GLsizei = c_int # /usr/include/GL/gl.h:59 93 | glStencilClearTagEXT = _link_function( 94 | 'glStencilClearTagEXT', None, [GLsizei, GLuint]) 95 | 96 | GL_STENCIL_TAG_BITS_EXT = 0x88F2 97 | GL_STENCIL_CLEAR_TAG_VALUE_EXT = 0x88F3 98 | 99 | # GL_EXT_framebuffer_blit 100 | # http://oss.sgi.com/projects/ogl-sample/registry/EXT/framebuffer_blit.txt 101 | 102 | GLenum = c_uint # /usr/include/GL/gl.h:53 103 | GLint = c_int # /usr/include/GL/gl.h:58 104 | glBlitFramebufferEXT = _link_function( 105 | 'glBlitFramebufferEXT', None, [GLint, GLint, GLint, GLint, 106 | GLint, GLint, GLint, GLint, 107 | GLuint, GLenum]) 108 | 109 | GL_READ_FRAMEBUFFER_EXT = 0x8CA8 110 | GL_DRAW_FRAMEBUFFER_EXT = 0x8CA9 111 | GL_DRAW_FRAMEBUFFER_BINDING_EXT = 0x8CA6 112 | GL_READ_FRAMEBUFFER_BINDING_EXT = 0x8CAA 113 | 114 | # GL_EXT_framebuffer_multisample 115 | # http://oss.sgi.com/projects/ogl-sample/registry/EXT/framebuffer_multisample.txt 116 | 117 | GL_RENDERBUFFER_SAMPLES_EXT = 0x8CAB 118 | 119 | # GL_MESAX_texture_stack 120 | # http://oss.sgi.com/projects/ogl-sample/registry/MESAX/texture_stack.txt 121 | 122 | GL_TEXTURE_1D_STACK_MESAX = 0x8759 123 | GL_TEXTURE_2D_STACK_MESAX = 0x875A 124 | GL_PROXY_TEXTURE_1D_STACK_MESAX = 0x875B 125 | GL_PROXY_TEXTURE_2D_STACK_MESAX = 0x875C 126 | GL_TEXTURE_1D_STACK_BINDING_MESAX = 0x875D 127 | GL_TEXTURE_2D_STACK_BINDING_MESAX = 0x875E 128 | -------------------------------------------------------------------------------- /pyglet/gl/glext_missing.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/glext_missing.pyc -------------------------------------------------------------------------------- /pyglet/gl/glu.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/glu.pyc -------------------------------------------------------------------------------- /pyglet/gl/glu_info.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Information about version and extensions of current GLU implementation. 36 | 37 | Usage:: 38 | 39 | from pyglet.gl import glu_info 40 | 41 | if glu_info.have_extension('GLU_EXT_nurbs_tessellator'): 42 | # ... 43 | 44 | If multiple contexts are in use you can use a separate GLUInfo object for each 45 | context. Call `set_active_context` after switching to the desired context for 46 | each GLUInfo:: 47 | 48 | from pyglet.gl.glu_info import GLUInfo 49 | 50 | info = GLUInfo() 51 | info.set_active_context() 52 | if info.have_version(1, 3): 53 | # ... 54 | 55 | Note that GLUInfo only returns meaningful information if a context has been 56 | created. 57 | ''' 58 | 59 | __docformat__ = 'restructuredtext' 60 | __version__ = '$Id: glu_info.py 1979 2008-03-28 15:23:51Z Alex.Holkner $' 61 | 62 | from ctypes import * 63 | import warnings 64 | 65 | from pyglet.gl.glu import * 66 | 67 | class GLUInfo(object): 68 | '''Information interface for the GLU library. 69 | 70 | A default instance is created automatically when the first OpenGL context 71 | is created. You can use the module functions as a convenience for 72 | this default instance's methods. 73 | 74 | If you are using more than one context, you must call `set_active_context` 75 | when the context is active for this `GLUInfo` instance. 76 | ''' 77 | have_context = False 78 | version = '0.0.0' 79 | extensions = [] 80 | 81 | _have_info = False 82 | 83 | def set_active_context(self): 84 | '''Store information for the currently active context. 85 | 86 | This method is called automatically for the default context. 87 | ''' 88 | self.have_context = True 89 | if not self._have_info: 90 | self.extensions = \ 91 | cast(gluGetString(GLU_EXTENSIONS), c_char_p).value.split() 92 | self.version = cast(gluGetString(GLU_VERSION), c_char_p).value 93 | self._have_info = True 94 | 95 | def have_version(self, major, minor=0, release=0): 96 | '''Determine if a version of GLU is supported. 97 | 98 | :Parameters: 99 | `major` : int 100 | The major revision number (typically 1). 101 | `minor` : int 102 | The minor revision number. 103 | `release` : int 104 | The release number. 105 | 106 | :rtype: bool 107 | :return: True if the requested or a later version is supported. 108 | ''' 109 | if not self.have_context: 110 | warnings.warn('No GL context created yet.') 111 | ver = '%s.0.0' % self.version.split(' ', 1)[0] 112 | imajor, iminor, irelease = [int(v) for v in ver.split('.', 3)[:3]] 113 | return imajor > major or \ 114 | (imajor == major and iminor > minor) or \ 115 | (imajor == major and iminor == minor and irelease >= release) 116 | 117 | def get_version(self): 118 | '''Get the current GLU version. 119 | 120 | :return: the GLU version 121 | :rtype: str 122 | ''' 123 | if not self.have_context: 124 | warnings.warn('No GL context created yet.') 125 | return self.version 126 | 127 | def have_extension(self, extension): 128 | '''Determine if a GLU extension is available. 129 | 130 | :Parameters: 131 | `extension` : str 132 | The name of the extension to test for, including its 133 | ``GLU_`` prefix. 134 | 135 | :return: True if the extension is provided by the implementation. 136 | :rtype: bool 137 | ''' 138 | if not self.have_context: 139 | warnings.warn('No GL context created yet.') 140 | return extension in self.extensions 141 | 142 | def get_extensions(self): 143 | '''Get a list of available GLU extensions. 144 | 145 | :return: a list of the available extensions. 146 | :rtype: list of str 147 | ''' 148 | if not self.have_context: 149 | warnings.warn('No GL context created yet.') 150 | return self.extensions 151 | 152 | # Single instance useful for apps with only a single context (or all contexts 153 | # have same GLU driver, common case). 154 | _glu_info = GLUInfo() 155 | 156 | set_active_context = _glu_info.set_active_context 157 | have_version = _glu_info.have_version 158 | get_version = _glu_info.get_version 159 | have_extension = _glu_info.have_extension 160 | get_extensions = _glu_info.get_extensions 161 | -------------------------------------------------------------------------------- /pyglet/gl/glu_info.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/glu_info.pyc -------------------------------------------------------------------------------- /pyglet/gl/glx.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/glx.pyc -------------------------------------------------------------------------------- /pyglet/gl/glx_info.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Information about version and extensions of current GLX implementation. 36 | 37 | Usage:: 38 | 39 | from pyglet.gl import glx_info 40 | 41 | if glx_info.have_extension('GLX_NV_float_buffer'): 42 | # ... 43 | 44 | Or, if using more than one display:: 45 | 46 | from pyglet.gl.glx_info import GLXInfo 47 | 48 | info = GLXInfo(window._display) 49 | if info.get_server_vendor() == 'ATI': 50 | # ... 51 | 52 | ''' 53 | 54 | __docformat__ = 'restructuredtext' 55 | __version__ = '$Id: glx_info.py 1579 2008-01-15 14:47:19Z Alex.Holkner $' 56 | 57 | from ctypes import * 58 | 59 | from pyglet.gl.glx import * 60 | from pyglet.gl.glx import Display 61 | 62 | class GLXInfoException(Exception): 63 | pass 64 | 65 | class GLXInfo(object): 66 | def __init__(self, display=None): 67 | self.display = display 68 | 69 | def set_display(self, display): 70 | self.display = cast(pointer(display), POINTER(Display)) 71 | 72 | def check_display(self): 73 | if not self.display: 74 | raise GLXInfoException('No X11 display has been set yet.') 75 | 76 | def have_version(self, major, minor=0): 77 | self.check_display() 78 | if not glXQueryExtension(self.display, None, None): 79 | raise GLXInfoException('pyglet requires an X server with GLX') 80 | 81 | server_version = self.get_server_version().split()[0] 82 | client_version = self.get_client_version().split()[0] 83 | 84 | server = [int(i) for i in server_version.split('.')] 85 | client = [int(i) for i in client_version.split('.')] 86 | return (tuple(server) >= (major, minor) and 87 | tuple(client) >= (major, minor)) 88 | 89 | def get_server_vendor(self): 90 | self.check_display() 91 | return glXQueryServerString(self.display, 0, GLX_VENDOR) 92 | 93 | def get_server_version(self): 94 | # glXQueryServerString was introduced in GLX 1.1, so we need to use the 95 | # 1.0 function here which queries the server implementation for its 96 | # version. 97 | self.check_display() 98 | major = c_int() 99 | minor = c_int() 100 | if not glXQueryVersion(self.display, byref(major), byref(minor)): 101 | raise GLXInfoException('Could not determine GLX server version') 102 | return '%s.%s'%(major.value, minor.value) 103 | 104 | def get_server_extensions(self): 105 | self.check_display() 106 | return glXQueryServerString(self.display, 0, GLX_EXTENSIONS).split() 107 | 108 | def get_client_vendor(self): 109 | self.check_display() 110 | return glXGetClientString(self.display, GLX_VENDOR) 111 | 112 | def get_client_version(self): 113 | self.check_display() 114 | return glXGetClientString(self.display, GLX_VERSION) 115 | 116 | def get_client_extensions(self): 117 | self.check_display() 118 | return glXGetClientString(self.display, GLX_EXTENSIONS).split() 119 | 120 | def get_extensions(self): 121 | self.check_display() 122 | return glXQueryExtensionsString(self.display, 0).split() 123 | 124 | def have_extension(self, extension): 125 | self.check_display() 126 | if not self.have_version(1, 1): 127 | return False 128 | return extension in self.get_extensions() 129 | 130 | # Single instance suitable for apps that use only a single display. 131 | _glx_info = GLXInfo() 132 | 133 | set_display = _glx_info.set_display 134 | check_display = _glx_info.check_display 135 | have_version = _glx_info.have_version 136 | get_server_vendor = _glx_info.get_server_vendor 137 | get_server_version = _glx_info.get_server_version 138 | get_server_extensions = _glx_info.get_server_extensions 139 | get_client_vendor = _glx_info.get_client_vendor 140 | get_client_version = _glx_info.get_client_version 141 | get_client_extensions = _glx_info.get_client_extensions 142 | get_extensions = _glx_info.get_extensions 143 | have_extension = _glx_info.have_extension 144 | -------------------------------------------------------------------------------- /pyglet/gl/glx_info.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/glx_info.pyc -------------------------------------------------------------------------------- /pyglet/gl/glxext_arb.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/glxext_arb.pyc -------------------------------------------------------------------------------- /pyglet/gl/glxext_mesa.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | '''This file is currently hand-coded; I don't have a MESA header file to build 35 | off. 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: glxext_mesa.py 1579 2008-01-15 14:47:19Z Alex.Holkner $' 40 | 41 | import ctypes 42 | from ctypes import * 43 | from pyglet.gl.lib import link_GLX as _link_function 44 | 45 | glXSwapIntervalMESA = _link_function('glXSwapIntervalMESA', c_int, [c_int], 'MESA_swap_control') 46 | -------------------------------------------------------------------------------- /pyglet/gl/glxext_mesa.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/glxext_mesa.pyc -------------------------------------------------------------------------------- /pyglet/gl/lib.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: lib.py 1978 2008-03-28 15:11:48Z Alex.Holkner $' 40 | 41 | import sys 42 | import ctypes 43 | 44 | import pyglet 45 | 46 | __all__ = ['link_GL', 'link_GLU', 'link_AGL', 'link_GLX', 'link_WGL'] 47 | 48 | _debug_gl = pyglet.options['debug_gl'] 49 | _debug_gl_trace = pyglet.options['debug_gl_trace'] 50 | _debug_gl_trace_args = pyglet.options['debug_gl_trace_args'] 51 | 52 | class MissingFunctionException(Exception): 53 | def __init__(self, name, requires=None, suggestions=None): 54 | msg = '%s is not exported by the available OpenGL driver.' % name 55 | if requires: 56 | msg += ' %s is required for this functionality.' % requires 57 | if suggestions: 58 | msg += ' Consider alternative(s) %s.' % ', '.join(suggestions) 59 | Exception.__init__(self, msg) 60 | 61 | def missing_function(name, requires=None, suggestions=None): 62 | def MissingFunction(*args, **kwargs): 63 | raise MissingFunctionException(name, requires, suggestions) 64 | return MissingFunction 65 | 66 | _int_types = (ctypes.c_int16, ctypes.c_int32) 67 | if hasattr(ctypes, 'c_int64'): 68 | # Some builds of ctypes apparently do not have c_int64 69 | # defined; it's a pretty good bet that these builds do not 70 | # have 64-bit pointers. 71 | _int_types += (ctypes.c_int64,) 72 | for t in _int_types: 73 | if ctypes.sizeof(t) == ctypes.sizeof(ctypes.c_size_t): 74 | c_ptrdiff_t = t 75 | 76 | class c_void(ctypes.Structure): 77 | # c_void_p is a buggy return type, converting to int, so 78 | # POINTER(None) == c_void_p is actually written as 79 | # POINTER(c_void), so it can be treated as a real pointer. 80 | _fields_ = [('dummy', ctypes.c_int)] 81 | 82 | class GLException(Exception): 83 | pass 84 | 85 | def errcheck(result, func, arguments): 86 | if _debug_gl_trace: 87 | try: 88 | name = func.__name__ 89 | except AttributeError: 90 | name = repr(func) 91 | if _debug_gl_trace_args: 92 | trace_args = ', '.join([repr(arg)[:20] for arg in arguments]) 93 | print '%s(%s)' % (name, trace_args) 94 | else: 95 | print name 96 | 97 | from pyglet import gl 98 | context = gl.current_context 99 | if not context: 100 | raise GLException('No GL context; create a Window first') 101 | if not context._gl_begin: 102 | error = gl.glGetError() 103 | if error: 104 | msg = ctypes.cast(gl.gluErrorString(error), ctypes.c_char_p).value 105 | raise GLException(msg) 106 | return result 107 | 108 | def errcheck_glbegin(result, func, arguments): 109 | from pyglet import gl 110 | context = gl.current_context 111 | if not context: 112 | raise GLException('No GL context; create a Window first') 113 | context._gl_begin = True 114 | return result 115 | 116 | def errcheck_glend(result, func, arguments): 117 | from pyglet import gl 118 | context = gl.current_context 119 | if not context: 120 | raise GLException('No GL context; create a Window first') 121 | context._gl_begin = False 122 | return errcheck(result, func, arguments) 123 | 124 | def decorate_function(func, name): 125 | if _debug_gl: 126 | if name == 'glBegin': 127 | func.errcheck = errcheck_glbegin 128 | elif name == 'glEnd': 129 | func.errcheck = errcheck_glend 130 | elif name not in ('glGetError', 'gluErrorString') and \ 131 | name[:3] not in ('glX', 'agl', 'wgl'): 132 | func.errcheck = errcheck 133 | 134 | link_AGL = None 135 | link_GLX = None 136 | link_WGL = None 137 | 138 | if sys.platform in ('win32', 'cygwin'): 139 | from pyglet.gl.lib_wgl import link_GL, link_GLU, link_WGL 140 | elif sys.platform == 'darwin': 141 | from pyglet.gl.lib_agl import link_GL, link_GLU, link_AGL 142 | else: 143 | from pyglet.gl.lib_glx import link_GL, link_GLU, link_GLX 144 | 145 | -------------------------------------------------------------------------------- /pyglet/gl/lib.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/lib.pyc -------------------------------------------------------------------------------- /pyglet/gl/lib_agl.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: $' 40 | 41 | from ctypes import * 42 | 43 | import pyglet.lib 44 | from pyglet.gl.lib import missing_function, decorate_function 45 | 46 | __all__ = ['link_GL', 'link_GLU', 'link_AGL'] 47 | 48 | gl_lib = pyglet.lib.load_library( 49 | framework='/System/Library/Frameworks/OpenGL.framework') 50 | agl_lib = pyglet.lib.load_library( 51 | framework='/System/Library/Frameworks/AGL.framework') 52 | 53 | def link_GL(name, restype, argtypes, requires=None, suggestions=None): 54 | try: 55 | func = getattr(gl_lib, name) 56 | func.restype = restype 57 | func.argtypes = argtypes 58 | decorate_function(func, name) 59 | return func 60 | except AttributeError, e: 61 | return missing_function(name, requires, suggestions) 62 | 63 | link_GLU = link_GL 64 | 65 | def link_AGL(name, restype, argtypes, requires=None, suggestions=None): 66 | try: 67 | func = getattr(agl_lib, name) 68 | func.restype = restype 69 | func.argtypes = argtypes 70 | decorate_function(func, name) 71 | return func 72 | except AttributeError, e: 73 | return missing_function(name, requires, suggestions) 74 | 75 | -------------------------------------------------------------------------------- /pyglet/gl/lib_glx.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: lib_glx.py 1579 2008-01-15 14:47:19Z Alex.Holkner $' 40 | 41 | from ctypes import * 42 | 43 | import pyglet.lib 44 | from pyglet.gl.lib import missing_function, decorate_function 45 | 46 | __all__ = ['link_GL', 'link_GLU', 'link_GLX'] 47 | 48 | gl_lib = pyglet.lib.load_library('GL') 49 | glu_lib = pyglet.lib.load_library('GLU') 50 | 51 | # Look for glXGetProcAddressARB extension, use it as fallback (for 52 | # ATI fglrx and DRI drivers). 53 | try: 54 | glXGetProcAddressARB = getattr(gl_lib, 'glXGetProcAddressARB') 55 | glXGetProcAddressARB.restype = POINTER(CFUNCTYPE(None)) 56 | glXGetProcAddressARB.argtypes = [POINTER(c_ubyte)] 57 | _have_getprocaddress = True 58 | except AttributeError: 59 | _have_get_procaddress = False 60 | 61 | def link_GL(name, restype, argtypes, requires=None, suggestions=None): 62 | try: 63 | func = getattr(gl_lib, name) 64 | func.restype = restype 65 | func.argtypes = argtypes 66 | decorate_function(func, name) 67 | return func 68 | except AttributeError, e: 69 | if _have_getprocaddress: 70 | # Fallback if implemented but not in ABI 71 | bname = cast(pointer(create_string_buffer(name)), POINTER(c_ubyte)) 72 | addr = glXGetProcAddressARB(bname) 73 | if addr: 74 | ftype = CFUNCTYPE(*((restype,) + tuple(argtypes))) 75 | func = cast(addr, ftype) 76 | decorate_function(func, name) 77 | return func 78 | 79 | return missing_function(name, requires, suggestions) 80 | 81 | link_GLX = link_GL 82 | 83 | def link_GLU(name, restype, argtypes, requires=None, suggestions=None): 84 | try: 85 | func = getattr(glu_lib, name) 86 | func.restype = restype 87 | func.argtypes = argtypes 88 | decorate_function(func, name) 89 | return func 90 | except AttributeError, e: 91 | return missing_function(name, requires, suggestions) 92 | 93 | -------------------------------------------------------------------------------- /pyglet/gl/lib_glx.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/gl/lib_glx.pyc -------------------------------------------------------------------------------- /pyglet/gl/lib_wgl.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: lib_glx.py 597 2007-02-03 16:13:07Z Alex.Holkner $' 40 | 41 | import ctypes 42 | from ctypes import * 43 | 44 | import pyglet 45 | from pyglet.gl.lib import missing_function, decorate_function 46 | 47 | __all__ = ['link_GL', 'link_GLU', 'link_WGL'] 48 | 49 | _debug_trace = pyglet.options['debug_trace'] 50 | 51 | gl_lib = ctypes.windll.opengl32 52 | glu_lib = ctypes.windll.glu32 53 | wgl_lib = gl_lib 54 | 55 | if _debug_trace: 56 | from pyglet.lib import _TraceLibrary 57 | gl_lib = _TraceLibrary(gl_lib) 58 | glu_lib = _TraceLibrary(glu_lib) 59 | wgl_lib = _TraceLibrary(wgl_lib) 60 | 61 | try: 62 | wglGetProcAddress = wgl_lib.wglGetProcAddress 63 | wglGetProcAddress.restype = CFUNCTYPE(POINTER(c_int)) 64 | wglGetProcAddress.argtypes = [c_char_p] 65 | _have_get_proc_address = True 66 | except AttributeError: 67 | _have_get_proc_address = False 68 | 69 | class WGLFunctionProxy(object): 70 | __slots__ = ['name', 'requires', 'suggestions', 'ftype', 'func'] 71 | def __init__(self, name, ftype, requires, suggestions): 72 | assert _have_get_proc_address 73 | self.name = name 74 | self.ftype = ftype 75 | self.requires = requires 76 | self.suggestions = suggestions 77 | self.func = None 78 | 79 | def __call__(self, *args, **kwargs): 80 | if self.func: 81 | return self.func(*args, **kwargs) 82 | 83 | from pyglet.gl import current_context 84 | if not current_context: 85 | raise Exception( 86 | 'Call to function "%s" before GL context created' % self.name) 87 | address = wglGetProcAddress(self.name) 88 | if cast(address, POINTER(c_int)): # check cast because address is func 89 | self.func = cast(address, self.ftype) 90 | decorate_function(self.func, self.name) 91 | else: 92 | self.func = missing_function( 93 | self.name, self.requires, self.suggestions) 94 | result = self.func(*args, **kwargs) 95 | return result 96 | 97 | def link_GL(name, restype, argtypes, requires=None, suggestions=None): 98 | try: 99 | func = getattr(gl_lib, name) 100 | func.restype = restype 101 | func.argtypes = argtypes 102 | decorate_function(func, name) 103 | return func 104 | except AttributeError, e: 105 | # Not in opengl32.dll. Try and get a pointer from WGL. 106 | try: 107 | fargs = (restype,) + tuple(argtypes) 108 | ftype = ctypes.WINFUNCTYPE(*fargs) 109 | if _have_get_proc_address: 110 | from pyglet.gl import gl_info 111 | if gl_info.have_context(): 112 | address = wglGetProcAddress(name) 113 | if address: 114 | func = cast(address, ftype) 115 | decorate_function(func, name) 116 | return func 117 | else: 118 | # Insert proxy until we have a context 119 | return WGLFunctionProxy(name, ftype, requires, suggestions) 120 | except: 121 | pass 122 | 123 | return missing_function(name, requires, suggestions) 124 | 125 | def link_GLU(name, restype, argtypes, requires=None, suggestions=None): 126 | try: 127 | func = getattr(glu_lib, name) 128 | func.restype = restype 129 | func.argtypes = argtypes 130 | decorate_function(func, name) 131 | return func 132 | except AttributeError, e: 133 | # Not in glu32.dll. Try and get a pointer from WGL. 134 | try: 135 | fargs = (restype,) + tuple(argtypes) 136 | ftype = ctypes.WINFUNCTYPE(*fargs) 137 | if _have_get_proc_address: 138 | from pyglet.gl import gl_info 139 | if gl_info.have_context(): 140 | address = wglGetProcAddress(name) 141 | if address: 142 | func = cast(address, ftype) 143 | decorate_function(func, name) 144 | return func 145 | else: 146 | # Insert proxy until we have a context 147 | return WGLFunctionProxy(name, ftype, requires, suggestions) 148 | except: 149 | pass 150 | 151 | return missing_function(name, requires, suggestions) 152 | 153 | link_WGL = link_GL 154 | -------------------------------------------------------------------------------- /pyglet/gl/wgl_info.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Cached information about version and extensions of current WGL 36 | implementation. 37 | ''' 38 | 39 | __docformat__ = 'restructuredtext' 40 | __version__ = '$Id: glx_info.py 615 2007-02-07 13:17:05Z Alex.Holkner $' 41 | 42 | from ctypes import * 43 | import warnings 44 | 45 | from pyglet.gl.lib import MissingFunctionException 46 | from pyglet.gl.gl import * 47 | from pyglet.gl import gl_info 48 | from pyglet.gl.wgl import * 49 | from pyglet.gl.wglext_arb import * 50 | 51 | class WGLInfoException(Exception): 52 | pass 53 | 54 | class WGLInfo(object): 55 | def get_extensions(self): 56 | if not gl_info.have_context(): 57 | warnings.warn("Can't query WGL until a context is created.") 58 | return [] 59 | 60 | try: 61 | return wglGetExtensionsStringEXT().split() 62 | except MissingFunctionException: 63 | return cast(glGetString(GL_EXTENSIONS), c_char_p).value.split() 64 | 65 | def have_extension(self, extension): 66 | return extension in self.get_extensions() 67 | 68 | _wgl_info = WGLInfo() 69 | 70 | get_extensions = _wgl_info.get_extensions 71 | have_extension = _wgl_info.have_extension 72 | -------------------------------------------------------------------------------- /pyglet/graphics/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/graphics/__init__.pyc -------------------------------------------------------------------------------- /pyglet/graphics/allocation.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/graphics/allocation.pyc -------------------------------------------------------------------------------- /pyglet/graphics/vertexattribute.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/graphics/vertexattribute.pyc -------------------------------------------------------------------------------- /pyglet/graphics/vertexbuffer.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/graphics/vertexbuffer.pyc -------------------------------------------------------------------------------- /pyglet/graphics/vertexdomain.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/graphics/vertexdomain.pyc -------------------------------------------------------------------------------- /pyglet/image/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/__init__.pyc -------------------------------------------------------------------------------- /pyglet/image/atlas.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/atlas.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/__init__.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/bmp.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/bmp.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/dds.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/dds.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/gdiplus.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/gdiplus.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/gdkpixbuf2.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: gdkpixbuf2.py 2496 2009-08-19 01:17:30Z benjamin.coder.smith $' 40 | 41 | from ctypes import * 42 | 43 | from pyglet.gl import * 44 | from pyglet.image import * 45 | from pyglet.image.codecs import * 46 | from pyglet.image.codecs import gif 47 | 48 | import pyglet.lib 49 | import pyglet.window 50 | 51 | gdk = pyglet.lib.load_library('gdk-x11-2.0') 52 | gdkpixbuf = pyglet.lib.load_library('gdk_pixbuf-2.0') 53 | 54 | GdkPixbufLoader = c_void_p 55 | GdkPixbuf = c_void_p 56 | gdkpixbuf.gdk_pixbuf_loader_new.restype = GdkPixbufLoader 57 | gdkpixbuf.gdk_pixbuf_loader_get_pixbuf.restype = GdkPixbuf 58 | gdkpixbuf.gdk_pixbuf_get_pixels.restype = c_void_p 59 | gdkpixbuf.gdk_pixbuf_loader_get_animation.restype = c_void_p 60 | gdkpixbuf.gdk_pixbuf_animation_get_iter.restype = c_void_p 61 | gdkpixbuf.gdk_pixbuf_animation_iter_get_pixbuf.restype = GdkPixbuf 62 | 63 | class GTimeVal(Structure): 64 | _fields_ = [ 65 | ('tv_sec', c_long), 66 | ('tv_usec', c_long) 67 | ] 68 | 69 | class GdkPixbuf2ImageDecoder(ImageDecoder): 70 | def get_file_extensions(self): 71 | return ['.png', '.xpm', '.jpg', '.jpeg', '.tif', '.tiff', '.pnm', 72 | '.ras', '.bmp', '.gif'] 73 | 74 | def get_animation_file_extensions(self): 75 | return ['.gif', '.ani'] 76 | 77 | def _load(self, file, filename, load_func): 78 | data = file.read() 79 | err = c_int() 80 | loader = gdkpixbuf.gdk_pixbuf_loader_new() 81 | gdkpixbuf.gdk_pixbuf_loader_write(loader, data, len(data), byref(err)) 82 | result = load_func(loader) 83 | if not gdkpixbuf.gdk_pixbuf_loader_close(loader, byref(err)): 84 | raise ImageDecodeException(filename) 85 | if not result: 86 | raise ImageDecodeException('Unable to load: %s' % filename) 87 | return result 88 | 89 | def _pixbuf_to_image(self, pixbuf): 90 | # Get format and dimensions 91 | width = gdkpixbuf.gdk_pixbuf_get_width(pixbuf) 92 | height = gdkpixbuf.gdk_pixbuf_get_height(pixbuf) 93 | channels = gdkpixbuf.gdk_pixbuf_get_n_channels(pixbuf) 94 | rowstride = gdkpixbuf.gdk_pixbuf_get_rowstride(pixbuf) 95 | pixels = gdkpixbuf.gdk_pixbuf_get_pixels(pixbuf) 96 | 97 | # Copy pixel data. 98 | buffer = (c_ubyte * (rowstride * height))() 99 | memmove(buffer, pixels, rowstride * (height - 1) + width * channels) 100 | 101 | # Release pixbuf 102 | gdk.g_object_unref(pixbuf) 103 | 104 | # Determine appropriate GL type 105 | if channels == 3: 106 | format = 'RGB' 107 | else: 108 | format = 'RGBA' 109 | 110 | return ImageData(width, height, format, buffer, -rowstride) 111 | 112 | def decode(self, file, filename): 113 | pixbuf = self._load(file, filename, 114 | gdkpixbuf.gdk_pixbuf_loader_get_pixbuf) 115 | 116 | return self._pixbuf_to_image(pixbuf) 117 | 118 | def decode_animation(self, file, filename): 119 | # Extract GIF control data. If it's not a GIF, this method will 120 | # raise. 121 | gif_stream = gif.read(file) 122 | delays = [image.delay for image in gif_stream.images] 123 | 124 | # Get GDK animation iterator 125 | file.seek(0) 126 | anim = self._load(file, filename, 127 | gdkpixbuf.gdk_pixbuf_loader_get_animation) 128 | time = GTimeVal(0, 0) 129 | iter = gdkpixbuf.gdk_pixbuf_animation_get_iter(anim, byref(time)) 130 | 131 | frames = [] 132 | 133 | # Extract each image 134 | for control_delay in delays: 135 | pixbuf = gdkpixbuf.gdk_pixbuf_animation_iter_get_pixbuf(iter) 136 | image = self._pixbuf_to_image(pixbuf) 137 | frames.append(AnimationFrame(image, control_delay)) 138 | 139 | gdk_delay = gdkpixbuf.gdk_pixbuf_animation_iter_get_delay_time(iter) 140 | gdk_delay *= 1000 # milliseconds to microseconds 141 | # Compare gdk_delay to control_delay for interest only. 142 | #print control_delay, gdk_delay / 1000000. 143 | 144 | if gdk_delay == -1: 145 | break 146 | 147 | us = time.tv_usec + gdk_delay 148 | time.tv_sec += us // 1000000 149 | time.tv_usec = us % 1000000 150 | gdkpixbuf.gdk_pixbuf_animation_iter_advance(iter, byref(time)) 151 | 152 | return Animation(frames) 153 | 154 | def get_decoders(): 155 | return [GdkPixbuf2ImageDecoder()] 156 | 157 | def get_encoders(): 158 | return [] 159 | 160 | def init(): 161 | gdk.g_type_init() 162 | 163 | init() 164 | 165 | -------------------------------------------------------------------------------- /pyglet/image/codecs/gdkpixbuf2.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/gdkpixbuf2.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/gif.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Read GIF control data. 36 | 37 | http://www.w3.org/Graphics/GIF/spec-gif89a.txt 38 | ''' 39 | 40 | __docformat__ = 'restructuredtext' 41 | __version__ = '$Id: gif.py 2496 2009-08-19 01:17:30Z benjamin.coder.smith $' 42 | 43 | import struct 44 | 45 | from pyglet.image.codecs import ImageDecodeException 46 | 47 | class GIFStream(object): 48 | def __init__(self): 49 | self.images = [] 50 | 51 | class GIFImage(object): 52 | delay = None 53 | 54 | class GraphicsScope(object): 55 | delay = None 56 | 57 | # Appendix A. 58 | LABEL_EXTENSION_INTRODUCER = 0x21 59 | LABEL_GRAPHIC_CONTROL_EXTENSION = 0xf9 60 | LABEL_IMAGE_DESCRIPTOR = 0x2c 61 | LABEL_TRAILER = 0x3b 62 | 63 | def unpack(format, file): 64 | size = struct.calcsize(format) 65 | data = file.read(size) 66 | if len(data) < size: 67 | raise ImageDecodeException('Unexpected EOF') 68 | return struct.unpack(format, data) 69 | 70 | def read_byte(file): 71 | data = file.read(1) 72 | if not len(data): 73 | raise ImageDecodeException('Unexpected EOF') 74 | return ord(data) 75 | 76 | def read(file): 77 | '''Read a GIF file stream. 78 | 79 | :rtype: GIFStream 80 | ''' 81 | # 17. Header 82 | signature = file.read(3) 83 | version = file.read(3) 84 | if signature != 'GIF': 85 | raise ImageDecodeException('Not a GIF stream') 86 | 87 | stream = GIFStream() 88 | 89 | # 18. Logical screen descriptor 90 | (logical_screen_width, 91 | logical_screen_height, 92 | fields, 93 | background_color_index, 94 | pixel_aspect_ratio) = unpack('HHBBB', file) 95 | global_color_table_flag = fields & 0x80 96 | global_color_table_size = fields & 0x7 97 | 98 | # 19. Global color table 99 | if global_color_table_flag: 100 | global_color_table = file.read(6 << global_color_table_size) 101 | 102 | # * 103 | graphics_scope = GraphicsScope() 104 | block_type = read_byte(file) 105 | 106 | while block_type != LABEL_TRAILER: 107 | if block_type == LABEL_IMAGE_DESCRIPTOR: 108 | read_table_based_image(file, stream, graphics_scope) 109 | graphics_scope = GraphicsScope() 110 | elif block_type == LABEL_EXTENSION_INTRODUCER: 111 | extension_block_type = read_byte(file) 112 | if extension_block_type == LABEL_GRAPHIC_CONTROL_EXTENSION: 113 | read_graphic_control_extension(file, stream, graphics_scope) 114 | else: 115 | skip_data_sub_blocks(file) 116 | else: 117 | # Skip bytes until a valid start character is found 118 | print block_type 119 | pass 120 | block_type = read_byte(file) 121 | 122 | return stream 123 | 124 | def skip_data_sub_blocks(file): 125 | # 15. Data sub-blocks 126 | block_size = read_byte(file) 127 | while block_size != 0: 128 | data = file.read(block_size) 129 | block_size = read_byte(file) 130 | 131 | def read_table_based_image(file, stream, graphics_scope): 132 | gif_image = GIFImage() 133 | stream.images.append(gif_image) 134 | gif_image.delay = graphics_scope.delay 135 | 136 | # 20. Image descriptor 137 | (image_left_position, 138 | image_top_position, 139 | image_width, 140 | image_height, 141 | fields) = unpack('HHHHB', file) 142 | 143 | local_color_table_flag = fields & 0x80 144 | local_color_table_size = fields & 0x7 145 | 146 | # 21. Local color table 147 | if local_color_table_flag: 148 | local_color_table = file.read(6 << local_color_table_size) 149 | 150 | # 22. Table based image data 151 | lzw_code_size = file.read(1) 152 | skip_data_sub_blocks(file) 153 | 154 | def read_graphic_control_extension(file, stream, graphics_scope): 155 | # 23. Graphic control extension 156 | (block_size, 157 | fields, 158 | delay_time, 159 | transparent_color_index, 160 | terminator) = unpack('BBHBB', file) 161 | if block_size != 4: 162 | raise ImageDecodeException('Incorrect block size') 163 | 164 | if delay_time: 165 | # Follow Firefox/Mac behaviour: use 100ms delay for any delay 166 | # less than 10ms. 167 | if delay_time <= 1: 168 | delay_time = 10 169 | graphics_scope.delay = float(delay_time) / 100 170 | -------------------------------------------------------------------------------- /pyglet/image/codecs/gif.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/gif.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/pil.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: pil.py 1768 2008-02-17 12:45:54Z Alex.Holkner $' 40 | 41 | import os.path 42 | 43 | from pyglet.gl import * 44 | from pyglet.image import * 45 | from pyglet.image.codecs import * 46 | 47 | import Image 48 | 49 | class PILImageDecoder(ImageDecoder): 50 | def get_file_extensions(self): 51 | # Only most common ones shown here 52 | return ['.bmp', '.cur', '.gif', '.ico', '.jpg', '.jpeg', '.pcx', '.png', 53 | '.tga', '.tif', '.tiff', '.xbm', '.xpm'] 54 | 55 | def decode(self, file, filename): 56 | try: 57 | image = Image.open(file) 58 | except Exception, e: 59 | raise ImageDecodeException( 60 | 'PIL cannot read %r: %s' % (filename or file, e)) 61 | 62 | image = image.transpose(Image.FLIP_TOP_BOTTOM) 63 | 64 | # Convert bitmap and palette images to component 65 | if image.mode in ('1', 'P'): 66 | image = image.convert() 67 | 68 | if image.mode not in ('L', 'LA', 'RGB', 'RGBA'): 69 | raise ImageDecodeException('Unsupported mode "%s"' % image.mode) 70 | type = GL_UNSIGNED_BYTE 71 | width, height = image.size 72 | 73 | return ImageData(width, height, image.mode, image.tostring()) 74 | 75 | class PILImageEncoder(ImageEncoder): 76 | def get_file_extensions(self): 77 | # Most common only 78 | return ['.bmp', '.eps', '.gif', '.jpg', '.jpeg', 79 | '.pcx', '.png', '.ppm', '.tiff', '.xbm'] 80 | 81 | def encode(self, image, file, filename): 82 | # File format is guessed from filename extension, otherwise defaults 83 | # to PNG. 84 | pil_format = (filename and os.path.splitext(filename)[1][1:]) or 'png' 85 | 86 | if pil_format.lower() == 'jpg': 87 | pil_format = 'JPEG' 88 | 89 | image = image.get_image_data() 90 | format = image.format 91 | if format != 'RGB': 92 | # Only save in RGB or RGBA formats. 93 | format = 'RGBA' 94 | pitch = -(image.width * len(format)) 95 | 96 | # Note: Don't try and use frombuffer(..); different versions of 97 | # PIL will orient the image differently. 98 | pil_image = Image.fromstring( 99 | format, (image.width, image.height), image.get_data(format, pitch)) 100 | 101 | try: 102 | pil_image.save(file, pil_format) 103 | except Exception, e: 104 | raise ImageEncodeException(e) 105 | 106 | def get_decoders(): 107 | return [PILImageDecoder()] 108 | 109 | def get_encoders(): 110 | return [PILImageEncoder()] 111 | -------------------------------------------------------------------------------- /pyglet/image/codecs/pil.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/pil.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/png.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Encoder and decoder for PNG files, using PyPNG (pypng.py). 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: $' 40 | 41 | import array 42 | 43 | from pyglet.gl import * 44 | from pyglet.image import * 45 | from pyglet.image.codecs import * 46 | 47 | import pyglet.image.codecs.pypng 48 | 49 | class PNGImageDecoder(ImageDecoder): 50 | def get_file_extensions(self): 51 | return ['.png'] 52 | 53 | def decode(self, file, filename): 54 | try: 55 | reader = pyglet.image.codecs.pypng.Reader(file=file) 56 | width, height, pixels, metadata = reader.read() 57 | except Exception, e: 58 | raise ImageDecodeException( 59 | 'PyPNG cannot read %r: %s' % (filename or file, e)) 60 | 61 | if metadata['greyscale']: 62 | if metadata['has_alpha']: 63 | format = 'LA' 64 | else: 65 | format = 'L' 66 | else: 67 | if metadata['has_alpha']: 68 | format = 'RGBA' 69 | else: 70 | format = 'RGB' 71 | pitch = len(format) * width 72 | return ImageData(width, height, format, pixels.tostring(), -pitch) 73 | 74 | class PNGImageEncoder(ImageEncoder): 75 | def get_file_extensions(self): 76 | return ['.png'] 77 | 78 | def encode(self, image, file, filename): 79 | image = image.get_image_data() 80 | 81 | has_alpha = 'A' in image.format 82 | greyscale = len(image.format) < 3 83 | if has_alpha: 84 | if greyscale: 85 | image.format = 'LA' 86 | else: 87 | image.format = 'RGBA' 88 | else: 89 | if greyscale: 90 | image.format = 'L' 91 | else: 92 | image.format = 'RGB' 93 | 94 | image.pitch = -(image.width * len(image.format)) 95 | 96 | writer = pyglet.image.codecs.pypng.Writer( 97 | image.width, image.height, 98 | bytes_per_sample=1, 99 | greyscale=greyscale, 100 | has_alpha=has_alpha) 101 | 102 | data = array.array('B') 103 | data.fromstring(image.data) 104 | writer.write_array(file, data) 105 | 106 | def get_decoders(): 107 | return [PNGImageDecoder()] 108 | 109 | def get_encoders(): 110 | return [PNGImageEncoder()] 111 | -------------------------------------------------------------------------------- /pyglet/image/codecs/png.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/png.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/pypng.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/pypng.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/quicktime.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/quicktime.pyc -------------------------------------------------------------------------------- /pyglet/image/codecs/s3tc.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/image/codecs/s3tc.pyc -------------------------------------------------------------------------------- /pyglet/lib.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/lib.pyc -------------------------------------------------------------------------------- /pyglet/media/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/media/__init__.pyc -------------------------------------------------------------------------------- /pyglet/media/avbin.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/media/avbin.pyc -------------------------------------------------------------------------------- /pyglet/media/drivers/__init__.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | -------------------------------------------------------------------------------- /pyglet/media/drivers/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/media/drivers/__init__.pyc -------------------------------------------------------------------------------- /pyglet/media/drivers/alsa/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/media/drivers/alsa/__init__.pyc -------------------------------------------------------------------------------- /pyglet/media/drivers/alsa/asound.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/media/drivers/alsa/asound.pyc -------------------------------------------------------------------------------- /pyglet/media/drivers/directsound/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/media/drivers/directsound/__init__.pyc -------------------------------------------------------------------------------- /pyglet/media/drivers/directsound/lib_dsound.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/media/drivers/directsound/lib_dsound.pyc -------------------------------------------------------------------------------- /pyglet/media/drivers/openal/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/media/drivers/openal/__init__.pyc -------------------------------------------------------------------------------- /pyglet/media/drivers/openal/lib_openal.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/media/drivers/openal/lib_openal.pyc -------------------------------------------------------------------------------- /pyglet/media/drivers/silent.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Fallback driver producing no audio. 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: silent.py 1680 2008-01-27 09:13:50Z Alex.Holkner $' 40 | 41 | import time 42 | 43 | from pyglet.media import AudioPlayer, Listener, AudioData 44 | from pyglet.media import MediaException 45 | 46 | class SilentAudioPlayer(AudioPlayer): 47 | UPDATE_PERIOD = 0.1 48 | 49 | def __init__(self, audio_format): 50 | super(SilentAudioPlayer, self).__init__(audio_format) 51 | 52 | self._playing = False 53 | self._eos_count = 0 54 | 55 | self._audio_data_list = [] 56 | self._head_time = 0.0 57 | self._head_timestamp = 0.0 58 | self._head_system_time = time.time() 59 | 60 | def get_write_size(self): 61 | bytes = int(self.audio_format.bytes_per_second * self.UPDATE_PERIOD) 62 | return max(0, bytes - sum( 63 | [a.length for a in self._audio_data_list if a is not None])) 64 | 65 | def write(self, audio_data): 66 | if not self._audio_data_list: 67 | self._head_time = 0.0 68 | self._head_timestamp = audio_data.timestamp 69 | self._head_system_time = time.time() 70 | self._audio_data_list.append( 71 | AudioData(None, 72 | audio_data.length, 73 | audio_data.timestamp, 74 | audio_data.duration)) 75 | audio_data.consume(audio_data.length, self.audio_format) 76 | 77 | def write_eos(self): 78 | if self._audio_data_list: 79 | self._audio_data_list.append(None) 80 | 81 | def write_end(self): 82 | pass 83 | 84 | def play(self): 85 | self._playing = True 86 | self._head_system_time = time.time() 87 | 88 | def stop(self): 89 | self._playing = False 90 | self._head_time = time.time() - self._head_system_time 91 | 92 | def clear(self): 93 | self._audio_data_list = [] 94 | self._head_time = 0.0 95 | self._head_system_time = time.time() 96 | self._eos_count = 0 97 | 98 | def pump(self): 99 | if not self._playing: 100 | return 101 | system_time = time.time() 102 | head_time = system_time - self._head_system_time 103 | try: 104 | while head_time >= self._audio_data_list[0].duration: 105 | head_time -= self._audio_data_list[0].duration 106 | self._audio_data_list.pop(0) 107 | while self._audio_data_list[0] is None: 108 | self._eos_count += 1 109 | self._audio_data_list.pop(0) 110 | self._head_timestamp = self._audio_data_list[0].timestamp 111 | self._head_system_time = system_time - head_time 112 | except IndexError: 113 | pass 114 | 115 | def get_time(self): 116 | if not self._audio_data_list: 117 | return time.time() - self._head_system_time + self._head_timestamp 118 | 119 | if self._playing: 120 | system_time = time.time() 121 | head_time = system_time - self._head_system_time 122 | return head_time + self._audio_data_list[0].timestamp 123 | else: 124 | return self._audio_data_list[0].timestamp + self._head_time 125 | 126 | def clear_eos(self): 127 | if self._eos_count: 128 | self._eos_count -= 1 129 | return True 130 | return False 131 | 132 | class SilentListener(Listener): 133 | def _set_volume(self, volume): 134 | self._volume = volume 135 | 136 | def _set_position(self, position): 137 | self._position = position 138 | 139 | def _set_velocity(self, velocity): 140 | self._velocity = velocity 141 | 142 | def _set_forward_orientation(self, orientation): 143 | self._forward_orientation = orientation 144 | 145 | def _set_up_orientation(self, orientation): 146 | self._up_orientation = orientation 147 | 148 | def _set_doppler_factor(self, factor): 149 | self._doppler_factor = factor 150 | 151 | def _set_speed_of_sound(self, speed_of_sound): 152 | self._speed_of_sound = speed_of_sound 153 | 154 | def driver_init(): 155 | pass 156 | 157 | driver_listener = SilentListener() 158 | driver_audio_player_class = SilentAudioPlayer 159 | -------------------------------------------------------------------------------- /pyglet/media/procedural.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | # $Id:$ 35 | 36 | from pyglet.media import Source, AudioFormat, AudioData 37 | 38 | import ctypes 39 | import os 40 | import math 41 | 42 | class ProceduralSource(Source): 43 | def __init__(self, duration, sample_rate=44800, sample_size=16): 44 | self._duration = float(duration) 45 | self.audio_format = AudioFormat( 46 | channels=1, 47 | sample_size=sample_size, 48 | sample_rate=sample_rate) 49 | 50 | self._offset = 0 51 | self._bytes_per_sample = sample_size >> 3 52 | self._bytes_per_second = self._bytes_per_sample * sample_rate 53 | self._max_offset = int(self._bytes_per_second * self._duration) 54 | 55 | if self._bytes_per_sample == 2: 56 | self._max_offset &= 0xfffffffe 57 | 58 | def _get_audio_data(self, bytes): 59 | bytes = min(bytes, self._max_offset - self._offset) 60 | if bytes <= 0: 61 | return None 62 | 63 | timestamp = float(self._offset) / self._bytes_per_second 64 | duration = float(bytes) / self._bytes_per_second 65 | data = self._generate_data(bytes, self._offset) 66 | self._offset += bytes 67 | is_eos = self._offset >= self._max_offset 68 | 69 | return AudioData(data, 70 | bytes, 71 | timestamp, 72 | duration) 73 | 74 | def _generate_data(self, bytes, offset): 75 | '''Generate `bytes` bytes of data. 76 | 77 | Return data as ctypes array or string. 78 | ''' 79 | raise NotImplementedError('abstract') 80 | 81 | def _seek(self, timestamp): 82 | self._offset = int(timestamp * self._bytes_per_second) 83 | 84 | # Bound within duration 85 | self._offset = min(max(self._offset, 0), self._max_offset) 86 | 87 | # Align to sample 88 | if self._bytes_per_sample == 2: 89 | self._offset &= 0xfffffffe 90 | 91 | class Silence(ProceduralSource): 92 | def _generate_data(self, bytes, offset): 93 | if self._bytes_per_sample == 1: 94 | return '\127' * bytes 95 | else: 96 | return '\0' * bytes 97 | 98 | class WhiteNoise(ProceduralSource): 99 | def _generate_data(self, bytes, offset): 100 | return os.urandom(bytes) 101 | 102 | class Sine(ProceduralSource): 103 | def __init__(self, duration, frequency=440, **kwargs): 104 | super(Sine, self).__init__(duration, **kwargs) 105 | self.frequency = frequency 106 | 107 | def _generate_data(self, bytes, offset): 108 | if self._bytes_per_sample == 1: 109 | start = offset 110 | samples = bytes 111 | bias = 127 112 | amplitude = 127 113 | data = (ctypes.c_ubyte * samples)() 114 | else: 115 | start = offset >> 1 116 | samples = bytes >> 1 117 | bias = 0 118 | amplitude = 32767 119 | data = (ctypes.c_short * samples)() 120 | step = self.frequency * (math.pi * 2) / self.audio_format.sample_rate 121 | for i in range(samples): 122 | data[i] = int(math.sin(step * (i + start)) * amplitude + bias) 123 | return data 124 | 125 | class Saw(ProceduralSource): 126 | def __init__(self, duration, frequency=440, **kwargs): 127 | super(Saw, self).__init__(duration, **kwargs) 128 | self.frequency = frequency 129 | 130 | def _generate_data(self, bytes, offset): 131 | # XXX TODO consider offset 132 | if self._bytes_per_sample == 1: 133 | samples = bytes 134 | value = 127 135 | max = 255 136 | min = 0 137 | data = (ctypes.c_ubyte * samples)() 138 | else: 139 | samples = bytes >> 1 140 | value = 0 141 | max = 32767 142 | min = -32768 143 | data = (ctypes.c_short * samples)() 144 | step = (max - min) * 2 * self.frequency / self.audio_format.sample_rate 145 | for i in range(samples): 146 | value += step 147 | if value > max: 148 | value = max - (value - max) 149 | step = -step 150 | if value < min: 151 | value = min - (value - min) 152 | step = -step 153 | data[i] = value 154 | return data 155 | 156 | class Square(ProceduralSource): 157 | def __init__(self, duration, frequency=440, **kwargs): 158 | super(Square, self).__init__(duration, **kwargs) 159 | self.frequency = frequency 160 | 161 | def _generate_data(self, bytes, offset): 162 | # XXX TODO consider offset 163 | if self._bytes_per_sample == 1: 164 | samples = bytes 165 | value = 0 166 | amplitude = 255 167 | data = (ctypes.c_ubyte * samples)() 168 | else: 169 | samples = bytes >> 1 170 | value = -32768 171 | amplitude = 65535 172 | data = (ctypes.c_short * samples)() 173 | period = self.audio_format.sample_rate / self.frequency / 2 174 | count = 0 175 | for i in range(samples): 176 | count += 1 177 | if count == period: 178 | value = amplitude - value 179 | count = 0 180 | data[i] = value 181 | return data 182 | -------------------------------------------------------------------------------- /pyglet/sprite.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/sprite.pyc -------------------------------------------------------------------------------- /pyglet/text/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/text/__init__.pyc -------------------------------------------------------------------------------- /pyglet/text/caret.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/text/caret.pyc -------------------------------------------------------------------------------- /pyglet/text/document.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/text/document.pyc -------------------------------------------------------------------------------- /pyglet/text/formats/__init__.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | '''Document formats. 35 | 36 | :since: pyglet 1.1 37 | ''' 38 | 39 | __docformat__ = 'restructuredtext' 40 | __version__ = '$Id: __init__.py 1848 2008-03-01 04:21:43Z Alex.Holkner $' 41 | -------------------------------------------------------------------------------- /pyglet/text/formats/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/text/formats/__init__.pyc -------------------------------------------------------------------------------- /pyglet/text/formats/attributed.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Extensible attributed text format for representing pyglet formatted 36 | documents. 37 | ''' 38 | 39 | __docformat__ = 'restructuredtext' 40 | __version__ = '$Id: $' 41 | 42 | import operator 43 | import parser 44 | import re 45 | import token 46 | 47 | import pyglet 48 | 49 | _pattern = re.compile(r''' 50 | (?P\{\#x(?P[0-9a-fA-F]+)\}) 51 | | (?P\{\#(?P[0-9]+)\}) 52 | | (?P\{\{) 53 | | (?P\}\}) 54 | | (?P\{ 55 | (?P[^ \{\}]+)\s+ 56 | (?P[^\}]+)\}) 57 | | (?P\n(?=[ \t])) 58 | | (?P\{\}\n) 59 | | (?P\n(?=\S)) 60 | | (?P\n\n+) 61 | | (?P[^\{\}\n]+) 62 | ''', re.VERBOSE | re.DOTALL) 63 | 64 | class AttributedTextDecoder(pyglet.text.DocumentDecoder): 65 | def decode(self, text, location=None): 66 | self.doc = pyglet.text.document.FormattedDocument() 67 | 68 | self.length = 0 69 | self.attributes = {} 70 | next_trailing_space = True 71 | trailing_newline = True 72 | 73 | for m in _pattern.finditer(text): 74 | group = m.lastgroup 75 | trailing_space = True 76 | if group == 'text': 77 | t = m.group('text') 78 | self.append(t) 79 | trailing_space = t.endswith(' ') 80 | trailing_newline = False 81 | elif group == 'nl_soft': 82 | if not next_trailing_space: 83 | self.append(' ') 84 | trailing_newline = False 85 | elif group in ('nl_hard1', 'nl_hard2'): 86 | self.append('\n') 87 | trailing_newline = True 88 | elif group == 'nl_para': 89 | self.append(m.group('nl_para')) 90 | trailing_newline = True 91 | elif group == 'attr': 92 | try: 93 | ast = parser.expr(m.group('attr_val')) 94 | if self.safe(ast): 95 | val = eval(ast.compile()) 96 | else: 97 | val = None 98 | except (parser.ParserError, SyntaxError): 99 | val = None 100 | name = m.group('attr_name') 101 | if name[0] == '.': 102 | if trailing_newline: 103 | self.attributes[name[1:]] = val 104 | else: 105 | self.doc.set_paragraph_style(self.length, self.length, 106 | {name[1:]: val}) 107 | else: 108 | self.attributes[name] = val 109 | elif group == 'escape_dec': 110 | self.append(unichr(int(m.group('escape_dec_val')))) 111 | elif group == 'escape_hex': 112 | self.append(unichr(int(m.group('escape_hex_val'), 16))) 113 | elif group == 'escape_lbrace': 114 | self.append('{') 115 | elif group == 'escape_rbrace': 116 | self.append('}') 117 | next_trailing_space = trailing_space 118 | 119 | return self.doc 120 | 121 | def append(self, text): 122 | self.doc.insert_text(self.length, text, self.attributes) 123 | self.length += len(text) 124 | self.attributes.clear() 125 | 126 | _safe_names = ('True', 'False', 'None') 127 | 128 | def safe(self, ast): 129 | tree = ast.totuple() 130 | return self.safe_node(tree) 131 | 132 | def safe_node(self, node): 133 | if token.ISNONTERMINAL(node[0]): 134 | return reduce(operator.and_, map(self.safe_node, node[1:])) 135 | elif node[0] == token.NAME: 136 | return node[1] in self._safe_names 137 | else: 138 | return True 139 | -------------------------------------------------------------------------------- /pyglet/text/formats/plaintext.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Plain text decoder. 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: $' 40 | 41 | import pyglet 42 | 43 | class PlainTextDecoder(pyglet.text.DocumentDecoder): 44 | def decode(self, text, location=None): 45 | document = pyglet.text.document.UnformattedDocument() 46 | document.insert_text(0, text) 47 | return document 48 | -------------------------------------------------------------------------------- /pyglet/text/formats/plaintext.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/text/formats/plaintext.pyc -------------------------------------------------------------------------------- /pyglet/text/layout.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/text/layout.pyc -------------------------------------------------------------------------------- /pyglet/text/runlist.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/text/runlist.pyc -------------------------------------------------------------------------------- /pyglet/window/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/__init__.pyc -------------------------------------------------------------------------------- /pyglet/window/carbon/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/carbon/__init__.pyc -------------------------------------------------------------------------------- /pyglet/window/carbon/constants.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/carbon/constants.pyc -------------------------------------------------------------------------------- /pyglet/window/carbon/types.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: $' 40 | 41 | from ctypes import * 42 | 43 | import pyglet.gl.agl 44 | agl = pyglet.gl.agl 45 | 46 | Boolean = c_ubyte # actually an unsigned char 47 | Fixed = c_int32 48 | ItemCount = c_uint32 49 | ByteOffset = ByteCount = c_uint32 50 | 51 | GDHandle = agl.GDHandle 52 | 53 | class Rect(Structure): 54 | _fields_ = [ 55 | ('top', c_short), 56 | ('left', c_short), 57 | ('bottom', c_short), 58 | ('right', c_short) 59 | ] 60 | 61 | class Point(Structure): 62 | _fields_ = [ 63 | ('v', c_short), 64 | ('h', c_short), 65 | ] 66 | 67 | class CGPoint(Structure): 68 | _fields_ = [ 69 | ('x', c_float), 70 | ('y', c_float), 71 | ] 72 | 73 | class CGSize(Structure): 74 | _fields_ = [ 75 | ('width', c_float), 76 | ('height', c_float) 77 | ] 78 | 79 | class CGRect(Structure): 80 | _fields_ = [ 81 | ('origin', CGPoint), 82 | ('size', CGSize) 83 | ] 84 | __slots__ = ['origin', 'size'] 85 | 86 | CGDirectDisplayID = c_void_p 87 | CGDisplayCount = c_uint32 88 | CGTableCount = c_uint32 89 | CGDisplayCoord = c_int32 90 | CGByteValue = c_ubyte 91 | CGOpenGLDisplayMask = c_uint32 92 | CGRefreshRate = c_double 93 | CGCaptureOptions = c_uint32 94 | 95 | HIPoint = CGPoint 96 | HISize = CGSize 97 | HIRect = CGRect 98 | 99 | class EventTypeSpec(Structure): 100 | _fields_ = [ 101 | ('eventClass', c_uint32), 102 | ('eventKind', c_uint32) 103 | ] 104 | 105 | WindowRef = c_void_p 106 | EventRef = c_void_p 107 | EventTargetRef = c_void_p 108 | EventHandlerRef = c_void_p 109 | 110 | MenuRef = c_void_p 111 | MenuID = c_int16 112 | MenuItemIndex = c_uint16 113 | MenuCommand = c_uint32 114 | 115 | CFStringEncoding = c_uint 116 | WindowClass = c_uint32 117 | WindowAttributes = c_uint32 118 | WindowPositionMethod = c_uint32 119 | EventMouseButton = c_uint16 120 | EventMouseWheelAxis = c_uint16 121 | 122 | OSType = c_uint32 123 | OSStatus = c_int32 124 | 125 | 126 | class MouseTrackingRegionID(Structure): 127 | _fields_ = [('signature', OSType), 128 | ('id', c_int32)] 129 | 130 | MouseTrackingRef = c_void_p 131 | 132 | RgnHandle = c_void_p 133 | 134 | class ProcessSerialNumber(Structure): 135 | _fields_ = [('highLongOfPSN', c_uint32), 136 | ('lowLongOfPSN', c_uint32)] 137 | 138 | 139 | class HICommand_Menu(Structure): 140 | _fields_ = [ 141 | ('menuRef', MenuRef), 142 | ('menuItemIndex', MenuItemIndex), 143 | ] 144 | 145 | class HICommand(Structure): 146 | _fields_ = [ 147 | ('attributes', c_uint32), 148 | ('commandID', c_uint32), 149 | ('menu', HICommand_Menu) 150 | ] 151 | 152 | class EventRecord(Structure): 153 | _fields_ = [ 154 | ('what', c_uint16), 155 | ('message', c_uint32), 156 | ('when', c_uint32), 157 | ('where', Point), 158 | ('modifiers', c_uint16) 159 | ] 160 | -------------------------------------------------------------------------------- /pyglet/window/carbon/types.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/carbon/types.pyc -------------------------------------------------------------------------------- /pyglet/window/event.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Events for `pyglet.window`. 36 | 37 | See `Window` for a description of the window event types. 38 | ''' 39 | 40 | __docformat__ = 'restructuredtext' 41 | __version__ = '$Id: event.py 1669 2008-01-27 01:31:58Z Alex.Holkner $' 42 | 43 | import sys 44 | 45 | from pyglet.window import key 46 | from pyglet.window import mouse 47 | 48 | class WindowExitHandler(object): 49 | '''Determine if the window should be closed. 50 | 51 | This event handler watches for the ESC key or the window close event 52 | and sets `self.has_exit` to True when either is pressed. An instance 53 | of this class is automatically attached to all new `pyglet.window.Window` 54 | objects. 55 | 56 | :deprecated: This class's functionality is provided directly on `Window` 57 | in pyglet 1.1. 58 | 59 | :Ivariables: 60 | `has_exit` : bool 61 | True if the user wants to close the window. 62 | 63 | ''' 64 | has_exit = False 65 | 66 | def on_close(self): 67 | self.has_exit = True 68 | 69 | def on_key_press(self, symbol, modifiers): 70 | if symbol == key.ESCAPE: 71 | self.has_exit = True 72 | 73 | class WindowEventLogger(object): 74 | '''Print all events to a file. 75 | 76 | When this event handler is added to a window it prints out all events 77 | and their parameters; useful for debugging or discovering which events 78 | you need to handle. 79 | 80 | Example:: 81 | 82 | win = window.Window() 83 | win.push_handlers(WindowEventLogger()) 84 | 85 | ''' 86 | def __init__(self, logfile=None): 87 | '''Create a `WindowEventLogger` which writes to `logfile`. 88 | 89 | :Parameters: 90 | `logfile` : file-like object 91 | The file to write to. If unspecified, stdout will be used. 92 | 93 | ''' 94 | if logfile is None: 95 | import sys 96 | logfile = sys.stdout 97 | self.file = logfile 98 | 99 | def on_key_press(self, symbol, modifiers): 100 | print >> self.file, 'on_key_press(symbol=%s, modifiers=%s)' % ( 101 | key.symbol_string(symbol), key.modifiers_string(modifiers)) 102 | 103 | def on_key_release(self, symbol, modifiers): 104 | print >> self.file, 'on_key_release(symbol=%s, modifiers=%s)' % ( 105 | key.symbol_string(symbol), key.modifiers_string(modifiers)) 106 | 107 | def on_text(self, text): 108 | print >> self.file, 'on_text(text=%r)' % text 109 | 110 | def on_text_motion(self, motion): 111 | print >> self.file, 'on_text_motion(motion=%s)' % ( 112 | key.motion_string(motion)) 113 | 114 | def on_text_motion_select(self, motion): 115 | print >> self.file, 'on_text_motion_select(motion=%s)' % ( 116 | key.motion_string(motion)) 117 | 118 | def on_mouse_motion(self, x, y, dx, dy): 119 | print >> self.file, 'on_mouse_motion(x=%d, y=%d, dx=%d, dy=%d)' % ( 120 | x, y, dx, dy) 121 | 122 | def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers): 123 | print >> self.file, 'on_mouse_drag(x=%d, y=%d, dx=%d, dy=%d, '\ 124 | 'buttons=%s, modifiers=%s)' % ( 125 | x, y, dx, dy, 126 | mouse.buttons_string(buttons), key.modifiers_string(modifiers)) 127 | 128 | def on_mouse_press(self, x, y, button, modifiers): 129 | print >> self.file, 'on_mouse_press(x=%d, y=%d, button=%r, '\ 130 | 'modifiers=%s)' % (x, y, 131 | mouse.buttons_string(button), key.modifiers_string(modifiers)) 132 | 133 | def on_mouse_release(self, x, y, button, modifiers): 134 | print >> self.file, 'on_mouse_release(x=%d, y=%d, button=%r, '\ 135 | 'modifiers=%s)' % (x, y, 136 | mouse.buttons_string(button), key.modifiers_string(modifiers)) 137 | 138 | def on_mouse_scroll(self, x, y, dx, dy): 139 | print >> self.file, 'on_mouse_scroll(x=%f, y=%f, dx=%f, dy=%f)' % ( 140 | x, y, dx, dy) 141 | 142 | def on_close(self): 143 | print >> self.file, 'on_close()' 144 | 145 | def on_mouse_enter(self, x, y): 146 | print >> self.file, 'on_mouse_enter(x=%d, y=%d)' % (x, y) 147 | 148 | def on_mouse_leave(self, x, y): 149 | print >> self.file, 'on_mouse_leave(x=%d, y=%d)' % (x, y) 150 | 151 | def on_expose(self): 152 | print >> self.file, 'on_expose()' 153 | 154 | def on_resize(self, width, height): 155 | print >> self.file, 'on_resize(width=%d, height=%d)' % (width, height) 156 | 157 | def on_move(self, x, y): 158 | print >> self.file, 'on_move(x=%d, y=%d)' % (x, y) 159 | 160 | def on_activate(self): 161 | print >> self.file, 'on_activate()' 162 | 163 | def on_deactivate(self): 164 | print >> self.file, 'on_deactivate()' 165 | 166 | def on_show(self): 167 | print >> self.file, 'on_show()' 168 | 169 | def on_hide(self): 170 | print >> self.file, 'on_hide()' 171 | 172 | def on_context_lost(self): 173 | print >> self.file, 'on_context_lost()' 174 | 175 | def on_context_state_lost(self): 176 | print >> self.file, 'on_context_state_lost()' 177 | 178 | -------------------------------------------------------------------------------- /pyglet/window/event.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/event.pyc -------------------------------------------------------------------------------- /pyglet/window/key.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/key.pyc -------------------------------------------------------------------------------- /pyglet/window/mouse.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | '''Mouse constants and utilities for pyglet.window. 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: mouse.py 1579 2008-01-15 14:47:19Z Alex.Holkner $' 40 | 41 | def buttons_string(buttons): 42 | '''Return a string describing a set of active mouse buttons. 43 | 44 | Example:: 45 | 46 | >>> buttons_string(LEFT | RIGHT) 47 | 'LEFT|RIGHT' 48 | 49 | :Parameters: 50 | `buttons` : int 51 | Bitwise combination of mouse button constants. 52 | 53 | :rtype: str 54 | ''' 55 | button_names = [] 56 | if buttons & LEFT: 57 | button_names.append('LEFT') 58 | if buttons & MIDDLE: 59 | button_names.append('MIDDLE') 60 | if buttons & RIGHT: 61 | button_names.append('RIGHT') 62 | return '|'.join(button_names) 63 | 64 | # Symbolic names for the mouse buttons 65 | LEFT = 1 << 0 66 | MIDDLE = 1 << 1 67 | RIGHT = 1 << 2 68 | -------------------------------------------------------------------------------- /pyglet/window/mouse.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/mouse.pyc -------------------------------------------------------------------------------- /pyglet/window/win32/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/win32/__init__.pyc -------------------------------------------------------------------------------- /pyglet/window/xlib/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/xlib/__init__.pyc -------------------------------------------------------------------------------- /pyglet/window/xlib/cursorfont.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | 35 | ''' 36 | ''' 37 | 38 | __docformat__ = 'restructuredtext' 39 | __version__ = '$Id: cursorfont.py 1579 2008-01-15 14:47:19Z Alex.Holkner $' 40 | 41 | # /usr/include/X11/cursorfont.h 42 | 43 | XC_num_glyphs = 154 44 | XC_X_cursor = 0 45 | XC_arrow = 2 46 | XC_based_arrow_down = 4 47 | XC_based_arrow_up = 6 48 | XC_boat = 8 49 | XC_bogosity = 10 50 | XC_bottom_left_corner = 12 51 | XC_bottom_right_corner = 14 52 | XC_bottom_side = 16 53 | XC_bottom_tee = 18 54 | XC_box_spiral = 20 55 | XC_center_ptr = 22 56 | XC_circle = 24 57 | XC_clock = 26 58 | XC_coffee_mug = 28 59 | XC_cross = 30 60 | XC_cross_reverse = 32 61 | XC_crosshair = 34 62 | XC_diamond_cross = 36 63 | XC_dot = 38 64 | XC_dotbox = 40 65 | XC_double_arrow = 42 66 | XC_draft_large = 44 67 | XC_draft_small = 46 68 | XC_draped_box = 48 69 | XC_exchange = 50 70 | XC_fleur = 52 71 | XC_gobbler = 54 72 | XC_gumby = 56 73 | XC_hand1 = 58 74 | XC_hand2 = 60 75 | XC_heart = 62 76 | XC_icon = 64 77 | XC_iron_cross = 66 78 | XC_left_ptr = 68 79 | XC_left_side = 70 80 | XC_left_tee = 72 81 | XC_leftbutton = 74 82 | XC_ll_angle = 76 83 | XC_lr_angle = 78 84 | XC_man = 80 85 | XC_middlebutton = 82 86 | XC_mouse = 84 87 | XC_pencil = 86 88 | XC_pirate = 88 89 | XC_plus = 90 90 | XC_question_arrow = 92 91 | XC_right_ptr = 94 92 | XC_right_side = 96 93 | XC_right_tee = 98 94 | XC_rightbutton = 100 95 | XC_rtl_logo = 102 96 | XC_sailboat = 104 97 | XC_sb_down_arrow = 106 98 | XC_sb_h_double_arrow = 108 99 | XC_sb_left_arrow = 110 100 | XC_sb_right_arrow = 112 101 | XC_sb_up_arrow = 114 102 | XC_sb_v_double_arrow = 116 103 | XC_shuttle = 118 104 | XC_sizing = 120 105 | XC_spider = 122 106 | XC_spraycan = 124 107 | XC_star = 126 108 | XC_target = 128 109 | XC_tcross = 130 110 | XC_top_left_arrow = 132 111 | XC_top_left_corner = 134 112 | XC_top_right_corner = 136 113 | XC_top_side = 138 114 | XC_top_tee = 140 115 | XC_trek = 142 116 | XC_ul_angle = 144 117 | XC_umbrella = 146 118 | XC_ur_angle = 148 119 | XC_watch = 150 120 | XC_xterm = 152 121 | -------------------------------------------------------------------------------- /pyglet/window/xlib/cursorfont.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/xlib/cursorfont.pyc -------------------------------------------------------------------------------- /pyglet/window/xlib/xinerama.py: -------------------------------------------------------------------------------- 1 | # ---------------------------------------------------------------------------- 2 | # pyglet 3 | # Copyright (c) 2006-2008 Alex Holkner 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions 8 | # are met: 9 | # 10 | # * Redistributions of source code must retain the above copyright 11 | # notice, this list of conditions and the following disclaimer. 12 | # * Redistributions in binary form must reproduce the above copyright 13 | # notice, this list of conditions and the following disclaimer in 14 | # the documentation and/or other materials provided with the 15 | # distribution. 16 | # * Neither the name of pyglet nor the names of its 17 | # contributors may be used to endorse or promote products 18 | # derived from this software without specific prior written 19 | # permission. 20 | # 21 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | # POSSIBILITY OF SUCH DAMAGE. 33 | # ---------------------------------------------------------------------------- 34 | '''Wrapper for Xinerama 35 | 36 | Generated with: 37 | tools/genwrappers.py 38 | 39 | Do not modify this file. 40 | ''' 41 | 42 | __docformat__ = 'restructuredtext' 43 | __version__ = '$Id: xinerama.py 1579 2008-01-15 14:47:19Z Alex.Holkner $' 44 | 45 | import ctypes 46 | from ctypes import * 47 | 48 | import pyglet.lib 49 | 50 | _lib = pyglet.lib.load_library('Xinerama') 51 | 52 | _int_types = (c_int16, c_int32) 53 | if hasattr(ctypes, 'c_int64'): 54 | # Some builds of ctypes apparently do not have c_int64 55 | # defined; it's a pretty good bet that these builds do not 56 | # have 64-bit pointers. 57 | _int_types += (ctypes.c_int64,) 58 | for t in _int_types: 59 | if sizeof(t) == sizeof(c_size_t): 60 | c_ptrdiff_t = t 61 | 62 | class c_void(Structure): 63 | # c_void_p is a buggy return type, converting to int, so 64 | # POINTER(None) == c_void_p is actually written as 65 | # POINTER(c_void), so it can be treated as a real pointer. 66 | _fields_ = [('dummy', c_int)] 67 | 68 | 69 | import pyglet.gl.glx 70 | import pyglet.window.xlib.xlib 71 | 72 | class struct_anon_181(Structure): 73 | __slots__ = [ 74 | 'screen_number', 75 | 'x_org', 76 | 'y_org', 77 | 'width', 78 | 'height', 79 | ] 80 | struct_anon_181._fields_ = [ 81 | ('screen_number', c_int), 82 | ('x_org', c_short), 83 | ('y_org', c_short), 84 | ('width', c_short), 85 | ('height', c_short), 86 | ] 87 | 88 | XineramaScreenInfo = struct_anon_181 # /usr/include/X11/extensions/Xinerama.h:40 89 | Display = pyglet.gl.glx.Display 90 | # /usr/include/X11/extensions/Xinerama.h:44 91 | XineramaQueryExtension = _lib.XineramaQueryExtension 92 | XineramaQueryExtension.restype = c_int 93 | XineramaQueryExtension.argtypes = [POINTER(Display), POINTER(c_int), POINTER(c_int)] 94 | 95 | # /usr/include/X11/extensions/Xinerama.h:50 96 | XineramaQueryVersion = _lib.XineramaQueryVersion 97 | XineramaQueryVersion.restype = c_int 98 | XineramaQueryVersion.argtypes = [POINTER(Display), POINTER(c_int), POINTER(c_int)] 99 | 100 | # /usr/include/X11/extensions/Xinerama.h:56 101 | XineramaIsActive = _lib.XineramaIsActive 102 | XineramaIsActive.restype = c_int 103 | XineramaIsActive.argtypes = [POINTER(Display)] 104 | 105 | # /usr/include/X11/extensions/Xinerama.h:67 106 | XineramaQueryScreens = _lib.XineramaQueryScreens 107 | XineramaQueryScreens.restype = POINTER(XineramaScreenInfo) 108 | XineramaQueryScreens.argtypes = [POINTER(Display), POINTER(c_int)] 109 | 110 | 111 | __all__ = ['XineramaScreenInfo', 'XineramaQueryExtension', 112 | 'XineramaQueryVersion', 'XineramaIsActive', 'XineramaQueryScreens'] 113 | -------------------------------------------------------------------------------- /pyglet/window/xlib/xinerama.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/xlib/xinerama.pyc -------------------------------------------------------------------------------- /pyglet/window/xlib/xlib.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/xlib/xlib.pyc -------------------------------------------------------------------------------- /pyglet/window/xlib/xsync.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/pyglet/window/xlib/xsync.pyc -------------------------------------------------------------------------------- /res/misc/applause/applause.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/applause/applause.wav -------------------------------------------------------------------------------- /res/misc/brain/brain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/brain/brain.png -------------------------------------------------------------------------------- /res/misc/colored-squares/spr_square_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/colored-squares/spr_square_blue.png -------------------------------------------------------------------------------- /res/misc/colored-squares/spr_square_cyan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/colored-squares/spr_square_cyan.png -------------------------------------------------------------------------------- /res/misc/colored-squares/spr_square_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/colored-squares/spr_square_green.png -------------------------------------------------------------------------------- /res/misc/colored-squares/spr_square_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/colored-squares/spr_square_grey.png -------------------------------------------------------------------------------- /res/misc/colored-squares/spr_square_magenta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/colored-squares/spr_square_magenta.png -------------------------------------------------------------------------------- /res/misc/colored-squares/spr_square_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/colored-squares/spr_square_red.png -------------------------------------------------------------------------------- /res/misc/colored-squares/spr_square_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/colored-squares/spr_square_white.png -------------------------------------------------------------------------------- /res/misc/colored-squares/spr_square_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/colored-squares/spr_square_yellow.png -------------------------------------------------------------------------------- /res/misc/splash-black/brain_graphic_blk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/splash-black/brain_graphic_blk.png -------------------------------------------------------------------------------- /res/misc/splash/brain_graphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/misc/splash/brain_graphic.png -------------------------------------------------------------------------------- /res/music/advance/Concert.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/music/advance/Concert.ogg -------------------------------------------------------------------------------- /res/music/advance/Hot Swing.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/music/advance/Hot Swing.ogg -------------------------------------------------------------------------------- /res/music/advance/Victory.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/music/advance/Victory.ogg -------------------------------------------------------------------------------- /res/music/good/Corncob.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/music/good/Corncob.ogg -------------------------------------------------------------------------------- /res/music/good/Emptiness.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/music/good/Emptiness.ogg -------------------------------------------------------------------------------- /res/music/good/Sea Song.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/music/good/Sea Song.ogg -------------------------------------------------------------------------------- /res/music/great/Butterfly Tea - Cavern of Time.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/music/great/Butterfly Tea - Cavern of Time.ogg -------------------------------------------------------------------------------- /res/music/great/Human Beat.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/music/great/Human Beat.ogg -------------------------------------------------------------------------------- /res/music/great/Lachaim.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/music/great/Lachaim.ogg -------------------------------------------------------------------------------- /res/sounds/corsica-letters/h.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/corsica-letters/h.wav -------------------------------------------------------------------------------- /res/sounds/corsica-letters/j.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/corsica-letters/j.wav -------------------------------------------------------------------------------- /res/sounds/corsica-letters/k.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/corsica-letters/k.wav -------------------------------------------------------------------------------- /res/sounds/corsica-letters/l.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/corsica-letters/l.wav -------------------------------------------------------------------------------- /res/sounds/corsica-letters/q.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/corsica-letters/q.wav -------------------------------------------------------------------------------- /res/sounds/corsica-letters/r.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/corsica-letters/r.wav -------------------------------------------------------------------------------- /res/sounds/corsica-letters/s.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/corsica-letters/s.wav -------------------------------------------------------------------------------- /res/sounds/corsica-letters/t.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/corsica-letters/t.wav -------------------------------------------------------------------------------- /res/sounds/letters/c.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/letters/c.wav -------------------------------------------------------------------------------- /res/sounds/letters/h.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/letters/h.wav -------------------------------------------------------------------------------- /res/sounds/letters/k.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/letters/k.wav -------------------------------------------------------------------------------- /res/sounds/letters/l.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/letters/l.wav -------------------------------------------------------------------------------- /res/sounds/letters/q.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/letters/q.wav -------------------------------------------------------------------------------- /res/sounds/letters/r.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/letters/r.wav -------------------------------------------------------------------------------- /res/sounds/letters/s.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/letters/s.wav -------------------------------------------------------------------------------- /res/sounds/letters/t.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/letters/t.wav -------------------------------------------------------------------------------- /res/sounds/morse/0.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/0.wav -------------------------------------------------------------------------------- /res/sounds/morse/1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/1.wav -------------------------------------------------------------------------------- /res/sounds/morse/2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/2.wav -------------------------------------------------------------------------------- /res/sounds/morse/3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/3.wav -------------------------------------------------------------------------------- /res/sounds/morse/4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/4.wav -------------------------------------------------------------------------------- /res/sounds/morse/5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/5.wav -------------------------------------------------------------------------------- /res/sounds/morse/6.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/6.wav -------------------------------------------------------------------------------- /res/sounds/morse/7.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/7.wav -------------------------------------------------------------------------------- /res/sounds/morse/8.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/8.wav -------------------------------------------------------------------------------- /res/sounds/morse/9.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/9.wav -------------------------------------------------------------------------------- /res/sounds/morse/a.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/a.wav -------------------------------------------------------------------------------- /res/sounds/morse/b.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/b.wav -------------------------------------------------------------------------------- /res/sounds/morse/c.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/c.wav -------------------------------------------------------------------------------- /res/sounds/morse/d.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/d.wav -------------------------------------------------------------------------------- /res/sounds/morse/e.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/e.wav -------------------------------------------------------------------------------- /res/sounds/morse/f.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/f.wav -------------------------------------------------------------------------------- /res/sounds/morse/g.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/g.wav -------------------------------------------------------------------------------- /res/sounds/morse/h.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/h.wav -------------------------------------------------------------------------------- /res/sounds/morse/i.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/i.wav -------------------------------------------------------------------------------- /res/sounds/morse/j.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/j.wav -------------------------------------------------------------------------------- /res/sounds/morse/k.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/k.wav -------------------------------------------------------------------------------- /res/sounds/morse/l.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/l.wav -------------------------------------------------------------------------------- /res/sounds/morse/m.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/m.wav -------------------------------------------------------------------------------- /res/sounds/morse/n.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/n.wav -------------------------------------------------------------------------------- /res/sounds/morse/o.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/o.wav -------------------------------------------------------------------------------- /res/sounds/morse/p.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/p.wav -------------------------------------------------------------------------------- /res/sounds/morse/q.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/q.wav -------------------------------------------------------------------------------- /res/sounds/morse/r.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/r.wav -------------------------------------------------------------------------------- /res/sounds/morse/s.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/s.wav -------------------------------------------------------------------------------- /res/sounds/morse/t.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/t.wav -------------------------------------------------------------------------------- /res/sounds/morse/u.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/u.wav -------------------------------------------------------------------------------- /res/sounds/morse/v.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/v.wav -------------------------------------------------------------------------------- /res/sounds/morse/w.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/w.wav -------------------------------------------------------------------------------- /res/sounds/morse/x.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/x.wav -------------------------------------------------------------------------------- /res/sounds/morse/y.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/y.wav -------------------------------------------------------------------------------- /res/sounds/morse/z.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/morse/z.wav -------------------------------------------------------------------------------- /res/sounds/nato/a.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/a.wav -------------------------------------------------------------------------------- /res/sounds/nato/b.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/b.wav -------------------------------------------------------------------------------- /res/sounds/nato/c.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/c.wav -------------------------------------------------------------------------------- /res/sounds/nato/d.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/d.wav -------------------------------------------------------------------------------- /res/sounds/nato/e.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/e.wav -------------------------------------------------------------------------------- /res/sounds/nato/f.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/f.wav -------------------------------------------------------------------------------- /res/sounds/nato/g.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/g.wav -------------------------------------------------------------------------------- /res/sounds/nato/h.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/h.wav -------------------------------------------------------------------------------- /res/sounds/nato/i.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/i.wav -------------------------------------------------------------------------------- /res/sounds/nato/j.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/j.wav -------------------------------------------------------------------------------- /res/sounds/nato/k.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/k.wav -------------------------------------------------------------------------------- /res/sounds/nato/l.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/l.wav -------------------------------------------------------------------------------- /res/sounds/nato/m.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/m.wav -------------------------------------------------------------------------------- /res/sounds/nato/n.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/n.wav -------------------------------------------------------------------------------- /res/sounds/nato/nato_LICENSE.txt: -------------------------------------------------------------------------------- 1 | Author: Michael Klier 2 | Link: http://www.chimeric.de/projects/npa 3 | Voice: Christian Spellenberg 4 | 5 | These samples represent the NATO phonetical alphabet. They are protected 6 | by the Creative Commons Sampling Plus 1.0 License. You are free to use 7 | and redistribute these samples under the conditions defined by the 8 | license. For further information read the LICENSE file and visit 9 | http://www.creativecommons.org. 10 | 11 | This work is licensed under the Creative Commons Sampling Plus 1.0 License. To 12 | view a copy of this license, visit 13 | http://creativecommons.org/licenses/sampling+/1.0/ or send a letter to Creative 14 | Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. 15 | -------------------------------------------------------------------------------- /res/sounds/nato/o.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/o.wav -------------------------------------------------------------------------------- /res/sounds/nato/p.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/p.wav -------------------------------------------------------------------------------- /res/sounds/nato/q.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/q.wav -------------------------------------------------------------------------------- /res/sounds/nato/r.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/r.wav -------------------------------------------------------------------------------- /res/sounds/nato/s.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/s.wav -------------------------------------------------------------------------------- /res/sounds/nato/t.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/t.wav -------------------------------------------------------------------------------- /res/sounds/nato/u.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/u.wav -------------------------------------------------------------------------------- /res/sounds/nato/v.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/v.wav -------------------------------------------------------------------------------- /res/sounds/nato/w.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/w.wav -------------------------------------------------------------------------------- /res/sounds/nato/x.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/x.wav -------------------------------------------------------------------------------- /res/sounds/nato/y.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/y.wav -------------------------------------------------------------------------------- /res/sounds/nato/z.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/nato/z.wav -------------------------------------------------------------------------------- /res/sounds/numbers/0.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/0.wav -------------------------------------------------------------------------------- /res/sounds/numbers/1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/1.wav -------------------------------------------------------------------------------- /res/sounds/numbers/10.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/10.wav -------------------------------------------------------------------------------- /res/sounds/numbers/11.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/11.wav -------------------------------------------------------------------------------- /res/sounds/numbers/12.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/12.wav -------------------------------------------------------------------------------- /res/sounds/numbers/13.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/13.wav -------------------------------------------------------------------------------- /res/sounds/numbers/2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/2.wav -------------------------------------------------------------------------------- /res/sounds/numbers/3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/3.wav -------------------------------------------------------------------------------- /res/sounds/numbers/4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/4.wav -------------------------------------------------------------------------------- /res/sounds/numbers/5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/5.wav -------------------------------------------------------------------------------- /res/sounds/numbers/6.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/6.wav -------------------------------------------------------------------------------- /res/sounds/numbers/7.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/7.wav -------------------------------------------------------------------------------- /res/sounds/numbers/8.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/8.wav -------------------------------------------------------------------------------- /res/sounds/numbers/9.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/numbers/9.wav -------------------------------------------------------------------------------- /res/sounds/operations/add.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/operations/add.wav -------------------------------------------------------------------------------- /res/sounds/operations/divide.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/operations/divide.wav -------------------------------------------------------------------------------- /res/sounds/operations/multiply.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/operations/multiply.wav -------------------------------------------------------------------------------- /res/sounds/operations/subtract.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/operations/subtract.wav -------------------------------------------------------------------------------- /res/sounds/piano/A4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/piano/A4.wav -------------------------------------------------------------------------------- /res/sounds/piano/B4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/piano/B4.wav -------------------------------------------------------------------------------- /res/sounds/piano/C4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/piano/C4.wav -------------------------------------------------------------------------------- /res/sounds/piano/C5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/piano/C5.wav -------------------------------------------------------------------------------- /res/sounds/piano/D4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/piano/D4.wav -------------------------------------------------------------------------------- /res/sounds/piano/E4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/piano/E4.wav -------------------------------------------------------------------------------- /res/sounds/piano/F4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/piano/F4.wav -------------------------------------------------------------------------------- /res/sounds/piano/G4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sounds/piano/G4.wav -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-01.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-02.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-03.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-04.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-05.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-06.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-07.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-08.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-09.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-10.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-11.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-12.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-13.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-14.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-15.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-16.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-17.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-18.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-19.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-20.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-21.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-22.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-23.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-24.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-25.png -------------------------------------------------------------------------------- /res/sprites/cartoon-faces/face-26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/cartoon-faces/face-26.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/4-wheel-drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/4-wheel-drive.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/airport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/airport.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/amphitheater.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/amphitheater.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/bicycle-trail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/bicycle-trail.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/boat-launch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/boat-launch.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/boat-tour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/boat-tour.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/bus-stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/bus-stop.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/campfire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/campfire.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/campground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/campground.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/canoe-access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/canoe-access.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/cross-country.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/cross-country.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/downhill-skiing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/downhill-skiing.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/drinking-water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/drinking-water.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/fishing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/fishing.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/food-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/food-service.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/gas-station.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/gas-station.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/golfing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/golfing.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/horseback-riding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/horseback-riding.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/ice-skating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/ice-skating.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/information.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/litter-receptacle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/litter-receptacle.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/lodging.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/lodging.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/marina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/marina.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/motor-bike-trail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/motor-bike-trail.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/pets-on-leash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/pets-on-leash.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/picnic-area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/picnic-area.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/post-office.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/post-office.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/radiator-water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/radiator-water.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/ranger-station.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/ranger-station.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/recycling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/recycling.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/restrooms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/restrooms.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/rv-campground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/rv-campground.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/sailing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/sailing.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/sanitary-disposal-station.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/sanitary-disposal-station.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/scuba-diving.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/scuba-diving.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/shelter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/shelter.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/sledding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/sledding.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/snowmobile-trail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/snowmobile-trail.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/stable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/stable.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/store.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/swimming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/swimming.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/telephone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/telephone.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/trailhead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/trailhead.png -------------------------------------------------------------------------------- /res/sprites/national-park-service/wheelchair-accessible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/national-park-service/wheelchair-accessible.png -------------------------------------------------------------------------------- /res/sprites/pentominoes/pento-f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/pentominoes/pento-f.png -------------------------------------------------------------------------------- /res/sprites/pentominoes/pento-p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/pentominoes/pento-p.png -------------------------------------------------------------------------------- /res/sprites/pentominoes/pento-t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/pentominoes/pento-t.png -------------------------------------------------------------------------------- /res/sprites/pentominoes/pento-u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/pentominoes/pento-u.png -------------------------------------------------------------------------------- /res/sprites/pentominoes/pento-v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/pentominoes/pento-v.png -------------------------------------------------------------------------------- /res/sprites/pentominoes/pento-w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/pentominoes/pento-w.png -------------------------------------------------------------------------------- /res/sprites/pentominoes/pento-x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/pentominoes/pento-x.png -------------------------------------------------------------------------------- /res/sprites/pentominoes/pento-z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/pentominoes/pento-z.png -------------------------------------------------------------------------------- /res/sprites/polygons-basic/diamond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/polygons-basic/diamond.png -------------------------------------------------------------------------------- /res/sprites/polygons-basic/hemicircle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/polygons-basic/hemicircle.png -------------------------------------------------------------------------------- /res/sprites/polygons-basic/hexagon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/polygons-basic/hexagon.png -------------------------------------------------------------------------------- /res/sprites/polygons-basic/octagon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/polygons-basic/octagon.png -------------------------------------------------------------------------------- /res/sprites/polygons-basic/pentagon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/polygons-basic/pentagon.png -------------------------------------------------------------------------------- /res/sprites/polygons-basic/square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/polygons-basic/square.png -------------------------------------------------------------------------------- /res/sprites/polygons-basic/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/polygons-basic/star.png -------------------------------------------------------------------------------- /res/sprites/polygons-basic/triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/polygons-basic/triangle.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/f-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/f-1.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/f-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/f-2.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/f-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/f-3.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/f-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/f-4.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/l-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/l-1.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/l-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/l-2.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/l-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/l-3.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/l-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/l-4.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/skew-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/skew-1.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/skew-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/skew-2.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/skew-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/skew-3.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/skew-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/skew-4.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/square.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/t-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/t-1.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/t-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/t-2.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/t-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/t-3.png -------------------------------------------------------------------------------- /res/sprites/tetrominoes-fixed/t-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ktec/brainworkshop/4478afc3bbe1590e6a4537c77f38adea2d29dfeb/res/sprites/tetrominoes-fixed/t-4.png --------------------------------------------------------------------------------