Anonymous avatar Anonymous committed ec9dd15

Start pygame wrap

Comments (0)

Files changed (7)

pygame/__init__.py

+##    pygame - Python Game Library
+##    Copyright (C) 2000-2001  Pete Shinners
+##
+##    This library is free software; you can redistribute it and/or
+##    modify it under the terms of the GNU Library General Public
+##    License as published by the Free Software Foundation; either
+##    version 2 of the License, or (at your option) any later version.
+##
+##    This library is distributed in the hope that it will be useful,
+##    but WITHOUT ANY WARRANTY; without even the implied warranty of
+##    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+##    Library General Public License for more details.
+##
+##    You should have received a copy of the GNU Library General Public
+##    License along with this library; if not, write to the Free
+##    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+##
+##    Pete Shinners
+##    pete@shinners.org
+
+'''Top-level Pygame module.
+
+Pygame is a set of Python modules designed for writing games.
+It is written on top of the excellent SDL library. This allows you
+to create fully featured games and multimedia programs in the Python
+language. The package is highly portable, with games running on
+Windows, MacOS, OS X, BeOS, FreeBSD, IRIX, and Linux.
+'''
+
+__docformat__ = 'restructuredtext'
+__version__ = '$Id$'
+
+import os
+import sys
+
+class MissingModule:
+    def __init__(self, name, info='', urgent=0):
+        self.name = name
+        self.info = str(info)
+        self.urgent = urgent
+        if urgent:
+            self.warn()
+
+    def __getattr__(self, var):
+        if not self.urgent:
+            self.warn()
+            self.urgent = 1
+        MissingPygameModule = "%s module not available" % self.name
+        raise NotImplementedError, MissingPygameModule
+
+    def __nonzero__(self):
+        return 0
+
+    def warn(self):
+        if self.urgent: type = 'import'
+        else: type = 'use'
+        message = '%s %s: %s' % (type, self.name, self.info)
+        try:
+            import warnings
+            if self.urgent: level = 4
+            else: level = 3
+            warnings.warn(message, RuntimeWarning, level)
+        except ImportError:
+            print message
+
+
+
+#we need to import like this, each at a time. the cleanest way to import
+#our modules is with the import command (not the __import__ function)
+
+#first, the "required" modules
+from pygame.base import *
+from pygame.constants import *
+#from pygame.version import *
+from pygame.rect import Rect
+#import pygame.rwobject
+#import pygame.surflock
+import pygame.color
+Color = pygame.color.Color
+#__version__ = ver
+
+#next, the "standard" modules
+#we still allow them to be missing for stripped down pygame distributions
+try: import pygame.cdrom
+except (ImportError,IOError), msg:cdrom=MissingModule("cdrom", msg, 1)
+
+try: import pygame.cursors
+except (ImportError,IOError), msg:cursors=MissingModule("cursors", msg, 1)
+
+try: import pygame.display
+except (ImportError,IOError), msg:display=MissingModule("display", msg, 1)
+
+try: import pygame.draw
+except (ImportError,IOError), msg:draw=MissingModule("draw", msg, 1)
+
+try: import pygame.event
+except (ImportError,IOError), msg:event=MissingModule("event", msg, 1)
+
+try: import pygame.image
+except (ImportError,IOError), msg:image=MissingModule("image", msg, 1)
+
+try: import pygame.joystick
+except (ImportError,IOError), msg:joystick=MissingModule("joystick", msg, 1)
+
+try: import pygame.key
+except (ImportError,IOError), msg:key=MissingModule("key", msg, 1)
+
+try: import pygame.mouse
+except (ImportError,IOError), msg:mouse=MissingModule("mouse", msg, 1)
+
+try: import pygame.sprite
+except (ImportError,IOError), msg:sprite=MissingModule("sprite", msg, 1)
+
+try: from pygame.surface import *
+except (ImportError,IOError):Surface = lambda:Missing_Function
+
+try: from pygame.overlay import *
+except (ImportError,IOError):Overlay = lambda:Missing_Function
+
+try: import pygame.time
+except (ImportError,IOError), msg:time=MissingModule("time", msg, 1)
+
+try: import pygame.transform
+except (ImportError,IOError), msg:transform=MissingModule("transform", msg, 1)
+
+#lastly, the "optional" pygame modules
+try:
+    import pygame.font
+    import pygame.sysfont
+    pygame.font.SysFont = pygame.sysfont.SysFont
+    pygame.font.get_fonts = pygame.sysfont.get_fonts
+    pygame.font.match_font = pygame.sysfont.match_font
+except (ImportError,IOError), msg:font=MissingModule("font", msg, 0)
+
+try: import pygame.mixer
+except (ImportError,IOError), msg:mixer=MissingModule("mixer", msg, 0)
+
+try: import pygame.movie
+except (ImportError,IOError), msg:movie=MissingModule("movie", msg, 0)
+
+try: import pygame.movieext
+except (ImportError,IOError), msg:movieext=MissingModule("movieext", msg, 0)
+
+try: import pygame.surfarray
+except (ImportError,IOError), msg:surfarray=MissingModule("surfarray", msg, 0)
+
+try: import pygame.sndarray
+except (ImportError,IOError), msg:sndarray=MissingModule("sndarray", msg, 0)
+
+try: import pygame.fastevent
+except (ImportError,IOError), msg:fastevent=MissingModule("fastevent", msg, 0)
+
+#there's also a couple "internal" modules not needed
+#by users, but putting them here helps "dependency finder"
+#programs get everything they need (like py2exe)
+try: import pygame.imageext; del pygame.imageext
+except (ImportError,IOError):pass
+
+try: import pygame.mixer_music; del pygame.mixer_music
+except (ImportError,IOError):pass
+
+def packager_imports():
+    """
+    Some additional things that py2app/py2exe will want to see
+    """
+    import OpenGL.GL
+
+#make Rects pickleable
+import copy_reg
+def __rect_constructor(x,y,w,h):
+	return Rect(x,y,w,h)
+def __rect_reduce(r):
+	assert type(r) == Rect
+	return __rect_constructor, (r.x, r.y, r.w, r.h)
+copy_reg.pickle(Rect, __rect_reduce, __rect_constructor)
+
+#cleanup namespace
+del pygame, os, sys, #TODO rwobject, surflock, MissingModule, copy_reg
+#!/usr/bin/env python
+
+'''Pygame core routines
+
+Contains the core routines that are used by the rest of the
+pygame modules. Its routines are merged directly into the pygame
+namespace. This mainly includes the auto-initialization `init` and
+`quit` routines.
+
+There is a small module named `locals` that also gets merged into
+this namespace. This contains all the constants needed by pygame.
+Object constructors also get placed into this namespace, you can
+call functions like `Rect` and `Surface` to create objects of
+that type. As a convenience, you can import the members of
+pygame.locals directly into your module's namespace with::
+
+    from pygame.locals import *
+    
+Most of the pygame examples do this if you'd like to take a look.
+'''
+
+__docformat__ = 'restructuredtext'
+__version__ = '$Id$'
+
+import atexit
+import sys
+
+import SDL
+
+_quitfunctions = []
+
+class error(RuntimeError):
+    pass
+
+def init():
+    '''Autoinitialize all imported pygame modules.
+
+    Initialize all imported pygame modules. Includes pygame modules
+    that are not part of the base modules (like font and image).
+
+    It does not raise exceptions, but instead silently counts which
+    modules have failed to init. The return argument contains a count
+    of the number of modules initialized, and the number of modules
+    that failed to initialize.
+
+    You can always initialize the modules you want by hand. The
+    modules that need it have an `init` and `quit` routine built in,
+    which you can call directly. They also have a `get_init` routine
+    which you can use to doublecheck the initialization. Note that
+    the manual `init` routines will raise an exception on error. Be
+    aware that most platforms require the display module to be
+    initialized before others. This `init` will handle that for you,
+    but if you initialize by hand, be aware of this constraint.
+
+    As with the manual `init` routines. It is safe to call this
+    `init` as often as you like. 
+
+    :rtype: int, int
+    :return: (count_passed, count_failed)
+    '''
+    success = 0
+    fail = 0
+
+    SDL.SDL_Init(SDL.SDL_INIT_EVENTTHREAD | SDL.SDL_INIT_TIMER)
+    for mod in sys.modules.values():
+        if hasattr(mod, '__PYGAMEinit__') and callable(mod.__PYGAMEinit__):
+            try:
+                mod.__PYGAMEinit__()
+                success += 1
+            except:
+                fail += 1
+    return success, fail
+
+def register_quit(func):
+    '''Routine to call when pygame quits.
+
+    The given callback routine will be called when pygame is
+    quitting. Quit callbacks are served on a 'last in, first out'
+    basis.
+    '''
+    _quitfunctions.append(func)
+
+def _video_autoquit():
+    if SDL.SDL_WasInit(SDL.SDL_INIT_VIDEO):
+        SDL.SDL_QuitSubSystem(SDL.SDL_INIT_VIDEO)
+
+def _video_autoinit():
+    if not SDL.SDL_WasInit(SDL.SDL_INIT_VIDEO):
+        SDL.SDL_InitSubSystem(SDL.SDL_INIT_VIDEO)
+        SDL.SDL_EnableUNICODE(1)
+
+def _atexit_quit():
+    while _quitfunctions:
+        func = _quitfunctions.pop()
+        func()
+    _video_autoquit()
+    SDL.SDL_Quit()
+
+def get_sdl_version():
+    '''Get the version of the linked SDL runtime.
+
+    :rtype: int, int, int
+    :return: major, minor, patch
+    '''
+    v = SDL.SDL_Linked_Version()
+    return v.major, v.minor, v.patch
+
+def quit():
+    '''Uninitialize all pygame modules.
+
+    Uninitialize all pygame modules that have been initialized. Even
+    if you initialized the module by hand, this `quit` will
+    uninitialize it for you.
+
+    All the pygame modules are uninitialized automatically when your
+    program exits, so you will usually not need this routine. If you
+    program plans to keep running after it is done with pygame, then
+    would be a good time to make this call.
+    '''
+    _atexit_quit()
+
+def get_error():
+    '''Get current error message.
+
+    SDL maintains an internal current error message. This message is
+    usually given to you when an SDL related exception occurs, but
+    sometimes you may want to call this directly yourself.
+
+    :rtype: str
+    '''
+    return SDL.SDL_GetError()
+
+atexit.register(_atexit_quit)
+
+##    pygame - Python Game Library
+##    Copyright (C) 2000-2003  Pete Shinners
+##
+##    This library is free software; you can redistribute it and/or
+##    modify it under the terms of the GNU Library General Public
+##    License as published by the Free Software Foundation; either
+##    version 2 of the License, or (at your option) any later version.
+##
+##    This library is distributed in the hope that it will be useful,
+##    but WITHOUT ANY WARRANTY; without even the implied warranty of
+##    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+##    Library General Public License for more details.
+##
+##    You should have received a copy of the GNU Library General Public
+##    License along with this library; if not, write to the Free
+##    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+##
+##    Pete Shinners
+##    pete@shinners.org
+
+"""Manipulate colors"""
+
+
+try:
+    from colordict import THECOLORS
+except ImportError:
+    #the colordict module isn't available
+    THECOLORS = {}
+
+
+
+def Color(colorname):
+    """pygame.color.Color(colorname) -> RGBA
+       Get RGB values from common color names
+
+       The color name can be the name of a common english color,
+       or a "web" style color in the form of 0xFF00FF. The english
+       color names are defined by the standard 'rgb' colors for X11.
+       With the hex color formatting you may optionally include an
+       alpha value, the formatting is 0xRRGGBBAA. You may also specify
+       a hex formatted color by starting the string with a '#'.
+       The color name used is case insensitive and whitespace is ignored.
+    """
+
+    if colorname[:2] == '0x' or colorname[0] == '#': #webstyle
+        if colorname[0] == '#':
+            colorname = colorname[1:]
+        else:
+            colorname = colorname[2:]
+        a = 255
+        try:
+            r = int('0x' + colorname[0:2], 16)
+            g = int('0x' + colorname[2:4], 16)
+            b = int('0x' + colorname[4:6], 16)
+            if len(colorname) > 6:
+                a = int('0x' + colorname[6:8], 16)
+        except ValueError:
+            raise ValueError, "Illegal hex color"
+        return r, g, b, a
+
+    else: #color name
+        #no spaces and lowercase
+        name = colorname.replace(' ', '').lower()
+        try:
+            return THECOLORS[name]
+        except KeyError:
+            raise ValueError, "Illegal color name, " + name
+
+
+
+def _splitcolor(color, defaultalpha=255):
+    try:
+        second = int(color)
+        r = g = b = color
+        a = defaultalpha
+    except TypeError:
+        if len(color) == 4:
+            r, g, b, a = color
+        elif len(color) == 3:
+            r, g, b = color
+            a = defaultalpha
+    return r, g, b, a
+
+
+def add(color1, color2):
+    """pygame.color.add(color1, color2) -> RGBA
+       add two colors
+
+       Add the RGB values of two colors together. If one of the
+       colors is only a single numeric value, it is applied to the
+       RGB components of the first color. Color values will be clamped
+       to the maximum color value of 255.
+    """
+    r1, g1, b1, a1 = _splitcolor(color1)
+    r2, g2, b2, a2 = _splitcolor(color2)
+    m, i = min, int
+    return m(i(r1+r2), 255), m(i(g1+g2), 255), m(i(b1+b2), 255), m(i(a1+a2), 255)
+
+
+def subtract(color1, color2):
+    """pygame.color.subtract(color1, color2) -> RGBA
+       subtract two colors
+
+       Subtract the RGB values of two colors together. If one of the
+       colors is only a single numeric value, it is applied to the
+       RGB components of the first color. Color values will be clamped
+       to the minimum color value of 0.
+    """
+    r1, g1, b1, a1 = _splitcolor(color1)
+    r2, g2, b2, a2 = _splitcolor(color2, 0)
+    m, i = max, int
+    return m(i(r1-r2), 0), m(i(g1-g2), 0), m(i(b1-b2), 0), m(i(a1-a2), 0)
+
+
+def multiply(color1, color2):
+    """pygame.color.multiply(color1, color2) -> RGBA
+       multiply two colors
+
+       Multiply the RGB values of two colors together. If one of the
+       colors is only a single numeric value, it is applied to the
+       RGB components of the first color.
+    """
+    r1, g1, b1, a1 = _splitcolor(color1)
+    r2, g2, b2, a2 = _splitcolor(color2)
+    m, i = min, int
+    return m(i(r1*r2)/255, 255), m(i(g1*g2)/255, 255), m(i(b1*b2)/255, 255), m(i(a1*a2)/255, 255)
+

pygame/colordict.py

+##    pygame - Python Game Library
+##    Copyright (C) 2000-2003  Pete Shinners
+##
+##    This library is free software; you can redistribute it and/or
+##    modify it under the terms of the GNU Library General Public
+##    License as published by the Free Software Foundation; either
+##    version 2 of the License, or (at your option) any later version.
+##
+##    This library is distributed in the hope that it will be useful,
+##    but WITHOUT ANY WARRANTY; without even the implied warranty of
+##    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+##    Library General Public License for more details.
+##
+##    You should have received a copy of the GNU Library General Public
+##    License along with this library; if not, write to the Free
+##    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+##
+##    Pete Shinners
+##    pete@shinners.org
+
+THECOLORS = {
+'gray17' : (43, 43, 43, 255) ,
+'gold' : (255, 215, 0, 255) ,
+'gray10' : (26, 26, 26, 255) ,
+'yellow' : (255, 255, 0, 255) ,
+'gray11' : (28, 28, 28, 255) ,
+'grey61' : (156, 156, 156, 255) ,
+'grey60' : (153, 153, 153, 255) ,
+'darkseagreen' : (143, 188, 143, 255) ,
+'grey62' : (158, 158, 158, 255) ,
+'grey65' : (166, 166, 166, 255) ,
+'gray12' : (31, 31, 31, 255) ,
+'grey67' : (171, 171, 171, 255) ,
+'grey66' : (168, 168, 168, 255) ,
+'grey69' : (176, 176, 176, 255) ,
+'gray21' : (54, 54, 54, 255) ,
+'lightsalmon4' : (139, 87, 66, 255) ,
+'lightsalmon2' : (238, 149, 114, 255) ,
+'lightsalmon3' : (205, 129, 98, 255) ,
+'lightsalmon1' : (255, 160, 122, 255) ,
+'gray32' : (82, 82, 82, 255) ,
+'green4' : (0, 139, 0, 255) ,
+'gray30' : (77, 77, 77, 255) ,
+'gray31' : (79, 79, 79, 255) ,
+'green1' : (0, 255, 0, 255) ,
+'gray37' : (94, 94, 94, 255) ,
+'green3' : (0, 205, 0, 255) ,
+'green2' : (0, 238, 0, 255) ,
+'darkslategray1' : (151, 255, 255, 255) ,
+'darkslategray2' : (141, 238, 238, 255) ,
+'darkslategray3' : (121, 205, 205, 255) ,
+'aquamarine1' : (127, 255, 212, 255) ,
+'aquamarine3' : (102, 205, 170, 255) ,
+'aquamarine2' : (118, 238, 198, 255) ,
+'papayawhip' : (255, 239, 213, 255) ,
+'black' : (0, 0, 0, 255) ,
+'darkorange3' : (205, 102, 0, 255) ,
+'oldlace' : (253, 245, 230, 255) ,
+'lightgoldenrod4' : (139, 129, 76, 255) ,
+'gray90' : (229, 229, 229, 255) ,
+'orchid1' : (255, 131, 250, 255) ,
+'orchid2' : (238, 122, 233, 255) ,
+'orchid3' : (205, 105, 201, 255) ,
+'grey68' : (173, 173, 173, 255) ,
+'brown' : (165, 42, 42, 255) ,
+'purple2' : (145, 44, 238, 255) ,
+'gray80' : (204, 204, 204, 255) ,
+'antiquewhite3' : (205, 192, 176, 255) ,
+'antiquewhite2' : (238, 223, 204, 255) ,
+'antiquewhite1' : (255, 239, 219, 255) ,
+'palevioletred3' : (205, 104, 137, 255) ,
+'hotpink' : (255, 105, 180, 255) ,
+'lightcyan' : (224, 255, 255, 255) ,
+'coral3' : (205, 91, 69, 255) ,
+'gray8' : (20, 20, 20, 255) ,
+'gray9' : (23, 23, 23, 255) ,
+'grey32' : (82, 82, 82, 255) ,
+'bisque4' : (139, 125, 107, 255) ,
+'cyan' : (0, 255, 255, 255) ,
+'gray0' : (0, 0, 0, 255) ,
+'gray1' : (3, 3, 3, 255) ,
+'gray6' : (15, 15, 15, 255) ,
+'bisque1' : (255, 228, 196, 255) ,
+'bisque2' : (238, 213, 183, 255) ,
+'bisque3' : (205, 183, 158, 255) ,
+'skyblue' : (135, 206, 235, 255) ,
+'gray' : (190, 190, 190, 255) ,
+'darkturquoise' : (0, 206, 209, 255) ,
+'rosybrown4' : (139, 105, 105, 255) ,
+'deepskyblue3' : (0, 154, 205, 255) ,
+'grey63' : (161, 161, 161, 255) ,
+'indianred1' : (255, 106, 106, 255) ,
+'grey78' : (199, 199, 199, 255) ,
+'lightpink' : (255, 182, 193, 255) ,
+'gray88' : (224, 224, 224, 255) ,
+'gray22' : (56, 56, 56, 255) ,
+'red' : (255, 0, 0, 255) ,
+'grey11' : (28, 28, 28, 255) ,
+'lemonchiffon3' : (205, 201, 165, 255) ,
+'lemonchiffon2' : (238, 233, 191, 255) ,
+'lemonchiffon1' : (255, 250, 205, 255) ,
+'indianred3' : (205, 85, 85, 255) ,
+'violetred1' : (255, 62, 150, 255) ,
+'plum2' : (238, 174, 238, 255) ,
+'plum1' : (255, 187, 255, 255) ,
+'lemonchiffon4' : (139, 137, 112, 255) ,
+'gray99' : (252, 252, 252, 255) ,
+'grey13' : (33, 33, 33, 255) ,
+'grey55' : (140, 140, 140, 255) ,
+'darkcyan' : (0, 139, 139, 255) ,
+'chocolate4' : (139, 69, 19, 255) ,
+'lightgoldenrodyellow' : (250, 250, 210, 255) ,
+'gray54' : (138, 138, 138, 255) ,
+'lavender' : (230, 230, 250, 255) ,
+'chartreuse3' : (102, 205, 0, 255) ,
+'chartreuse2' : (118, 238, 0, 255) ,
+'chartreuse1' : (127, 255, 0, 255) ,
+'grey48' : (122, 122, 122, 255) ,
+'grey16' : (41, 41, 41, 255) ,
+'thistle' : (216, 191, 216, 255) ,
+'chartreuse4' : (69, 139, 0, 255) ,
+'darkorchid4' : (104, 34, 139, 255) ,
+'grey42' : (107, 107, 107, 255) ,
+'grey41' : (105, 105, 105, 255) ,
+'grey17' : (43, 43, 43, 255) ,
+'dimgrey' : (105, 105, 105, 255) ,
+'dodgerblue4' : (16, 78, 139, 255) ,
+'darkorchid2' : (178, 58, 238, 255) ,
+'darkorchid3' : (154, 50, 205, 255) ,
+'blue' : (0, 0, 255, 255) ,
+'rosybrown2' : (238, 180, 180, 255) ,
+'honeydew' : (240, 255, 240, 255) ,
+'gray18' : (46, 46, 46, 255) ,
+'cornflowerblue' : (100, 149, 237, 255) ,
+'grey91' : (232, 232, 232, 255) ,
+'gray14' : (36, 36, 36, 255) ,
+'gray15' : (38, 38, 38, 255) ,
+'gray16' : (41, 41, 41, 255) ,
+'maroon4' : (139, 28, 98, 255) ,
+'maroon3' : (205, 41, 144, 255) ,
+'maroon2' : (238, 48, 167, 255) ,
+'maroon1' : (255, 52, 179, 255) ,
+'gray13' : (33, 33, 33, 255) ,
+'gold3' : (205, 173, 0, 255) ,
+'gold2' : (238, 201, 0, 255) ,
+'gold1' : (255, 215, 0, 255) ,
+'grey79' : (201, 201, 201, 255) ,
+'palevioletred1' : (255, 130, 171, 255) ,
+'palevioletred2' : (238, 121, 159, 255) ,
+'gold4' : (139, 117, 0, 255) ,
+'gray41' : (105, 105, 105, 255) ,
+'gray84' : (214, 214, 214, 255) ,
+'mediumpurple' : (147, 112, 219, 255) ,
+'rosybrown1' : (255, 193, 193, 255) ,
+'lightblue2' : (178, 223, 238, 255) ,
+'lightblue3' : (154, 192, 205, 255) ,
+'grey57' : (145, 145, 145, 255) ,
+'lightblue1' : (191, 239, 255, 255) ,
+'lightblue4' : (104, 131, 139, 255) ,
+'gray33' : (84, 84, 84, 255) ,
+'skyblue4' : (74, 112, 139, 255) ,
+'grey97' : (247, 247, 247, 255) ,
+'skyblue1' : (135, 206, 255, 255) ,
+'gray27' : (69, 69, 69, 255) ,
+'skyblue3' : (108, 166, 205, 255) ,
+'skyblue2' : (126, 192, 238, 255) ,
+'lavenderblush1' : (255, 240, 245, 255) ,
+'darkgrey' : (169, 169, 169, 255) ,
+'lavenderblush3' : (205, 193, 197, 255) ,
+'darkslategrey' : (47, 79, 79, 255) ,
+'lavenderblush4' : (139, 131, 134, 255) ,
+'deeppink4' : (139, 10, 80, 255) ,
+'grey99' : (252, 252, 252, 255) ,
+'gray36' : (92, 92, 92, 255) ,
+'coral4' : (139, 62, 47, 255) ,
+'magenta3' : (205, 0, 205, 255) ,
+'lightskyblue4' : (96, 123, 139, 255) ,
+'mediumturquoise' : (72, 209, 204, 255) ,
+'gray34' : (87, 87, 87, 255) ,
+'floralwhite' : (255, 250, 240, 255) ,
+'grey39' : (99, 99, 99, 255) ,
+'grey36' : (92, 92, 92, 255) ,
+'grey37' : (94, 94, 94, 255) ,
+'grey34' : (87, 87, 87, 255) ,
+'gray26' : (66, 66, 66, 255) ,
+'royalblue2' : (67, 110, 238, 255) ,
+'grey33' : (84, 84, 84, 255) ,
+'turquoise1' : (0, 245, 255, 255) ,
+'grey31' : (79, 79, 79, 255) ,
+'steelblue1' : (99, 184, 255, 255) ,
+'sienna4' : (139, 71, 38, 255) ,
+'steelblue3' : (79, 148, 205, 255) ,
+'lavenderblush2' : (238, 224, 229, 255) ,
+'sienna1' : (255, 130, 71, 255) ,
+'steelblue4' : (54, 100, 139, 255) ,
+'sienna3' : (205, 104, 57, 255) ,
+'aquamarine4' : (69, 139, 116, 255) ,
+'lightyellow1' : (255, 255, 224, 255) ,
+'lightyellow2' : (238, 238, 209, 255) ,
+'lightsteelblue' : (176, 196, 222, 255) ,
+'lightyellow4' : (139, 139, 122, 255) ,
+'magenta2' : (238, 0, 238, 255) ,
+'lightskyblue1' : (176, 226, 255, 255) ,
+'lightgoldenrod' : (238, 221, 130, 255) ,
+'magenta4' : (139, 0, 139, 255) ,
+'gray87' : (222, 222, 222, 255) ,
+'greenyellow' : (173, 255, 47, 255) ,
+'navajowhite4' : (139, 121, 94, 255) ,
+'darkslategray4' : (82, 139, 139, 255) ,
+'olivedrab' : (107, 142, 35, 255) ,
+'navajowhite1' : (255, 222, 173, 255) ,
+'navajowhite2' : (238, 207, 161, 255) ,
+'darkgoldenrod1' : (255, 185, 15, 255) ,
+'sienna' : (160, 82, 45, 255) ,
+'blue1' : (0, 0, 255, 255) ,
+'yellow1' : (255, 255, 0, 255) ,
+'gray61' : (156, 156, 156, 255) ,
+'magenta1' : (255, 0, 255, 255) ,
+'grey52' : (133, 133, 133, 255) ,
+'orangered4' : (139, 37, 0, 255) ,
+'palegreen' : (152, 251, 152, 255) ,
+'gray86' : (219, 219, 219, 255) ,
+'grey80' : (204, 204, 204, 255) ,
+'seashell' : (255, 245, 238, 255) ,
+'royalblue' : (65, 105, 225, 255) ,
+'firebrick3' : (205, 38, 38, 255) ,
+'blue4' : (0, 0, 139, 255) ,
+'peru' : (205, 133, 63, 255) ,
+'gray60' : (153, 153, 153, 255) ,
+'aquamarine' : (127, 255, 212, 255) ,
+'grey53' : (135, 135, 135, 255) ,
+'tan4' : (139, 90, 43, 255) ,
+'darkgoldenrod' : (184, 134, 11, 255) ,
+'tan2' : (238, 154, 73, 255) ,
+'tan1' : (255, 165, 79, 255) ,
+'darkslategray' : (47, 79, 79, 255) ,
+'royalblue3' : (58, 95, 205, 255) ,
+'red2' : (238, 0, 0, 255) ,
+'red1' : (255, 0, 0, 255) ,
+'dodgerblue' : (30, 144, 255, 255) ,
+'violetred4' : (139, 34, 82, 255) ,
+'lightyellow' : (255, 255, 224, 255) ,
+'paleturquoise1' : (187, 255, 255, 255) ,
+'firebrick2' : (238, 44, 44, 255) ,
+'mediumaquamarine' : (102, 205, 170, 255) ,
+'lemonchiffon' : (255, 250, 205, 255) ,
+'chocolate' : (210, 105, 30, 255) ,
+'orchid4' : (139, 71, 137, 255) ,
+'maroon' : (176, 48, 96, 255) ,
+'gray38' : (97, 97, 97, 255) ,
+'darkorange4' : (139, 69, 0, 255) ,
+'mintcream' : (245, 255, 250, 255) ,
+'darkorange1' : (255, 127, 0, 255) ,
+'antiquewhite' : (250, 235, 215, 255) ,
+'darkorange2' : (238, 118, 0, 255) ,
+'grey18' : (46, 46, 46, 255) ,
+'grey19' : (48, 48, 48, 255) ,
+'grey38' : (97, 97, 97, 255) ,
+'moccasin' : (255, 228, 181, 255) ,
+'grey10' : (26, 26, 26, 255) ,
+'chocolate1' : (255, 127, 36, 255) ,
+'chocolate2' : (238, 118, 33, 255) ,
+'chocolate3' : (205, 102, 29, 255) ,
+'saddlebrown' : (139, 69, 19, 255) ,
+'grey15' : (38, 38, 38, 255) ,
+'darkslateblue' : (72, 61, 139, 255) ,
+'lightskyblue' : (135, 206, 250, 255) ,
+'gray69' : (176, 176, 176, 255) ,
+'gray68' : (173, 173, 173, 255) ,
+'deeppink' : (255, 20, 147, 255) ,
+'gray65' : (166, 166, 166, 255) ,
+'gray64' : (163, 163, 163, 255) ,
+'gray67' : (171, 171, 171, 255) ,
+'gray66' : (168, 168, 168, 255) ,
+'gray25' : (64, 64, 64, 255) ,
+'coral' : (255, 127, 80, 255) ,
+'gray63' : (161, 161, 161, 255) ,
+'gray62' : (158, 158, 158, 255) ,
+'goldenrod4' : (139, 105, 20, 255) ,
+'grey35' : (89, 89, 89, 255) ,
+'gray89' : (227, 227, 227, 255) ,
+'goldenrod1' : (255, 193, 37, 255) ,
+'goldenrod2' : (238, 180, 34, 255) ,
+'goldenrod3' : (205, 155, 29, 255) ,
+'springgreen1' : (0, 255, 127, 255) ,
+'springgreen2' : (0, 238, 118, 255) ,
+'springgreen3' : (0, 205, 102, 255) ,
+'springgreen4' : (0, 139, 69, 255) ,
+'mistyrose1' : (255, 228, 225, 255) ,
+'sandybrown' : (244, 164, 96, 255) ,
+'grey30' : (77, 77, 77, 255) ,
+'seashell2' : (238, 229, 222, 255) ,
+'seashell3' : (205, 197, 191, 255) ,
+'tan' : (210, 180, 140, 255) ,
+'seashell1' : (255, 245, 238, 255) ,
+'mistyrose3' : (205, 183, 181, 255) ,
+'magenta' : (255, 0, 255, 255) ,
+'pink' : (255, 192, 203, 255) ,
+'ivory2' : (238, 238, 224, 255) ,
+'ivory1' : (255, 255, 240, 255) ,
+'lightcyan2' : (209, 238, 238, 255) ,
+'mediumseagreen' : (60, 179, 113, 255) ,
+'ivory4' : (139, 139, 131, 255) ,
+'darkorange' : (255, 140, 0, 255) ,
+'powderblue' : (176, 224, 230, 255) ,
+'dodgerblue1' : (30, 144, 255, 255) ,
+'gray95' : (242, 242, 242, 255) ,
+'firebrick1' : (255, 48, 48, 255) ,
+'gray7' : (18, 18, 18, 255) ,
+'mistyrose4' : (139, 125, 123, 255) ,
+'tomato' : (255, 99, 71, 255) ,
+'indianred2' : (238, 99, 99, 255) ,
+'steelblue2' : (92, 172, 238, 255) ,
+'gray100' : (255, 255, 255, 255) ,
+'seashell4' : (139, 134, 130, 255) ,
+'grey89' : (227, 227, 227, 255) ,
+'grey88' : (224, 224, 224, 255) ,
+'grey87' : (222, 222, 222, 255) ,
+'grey86' : (219, 219, 219, 255) ,
+'grey85' : (217, 217, 217, 255) ,
+'grey84' : (214, 214, 214, 255) ,
+'midnightblue' : (25, 25, 112, 255) ,
+'grey82' : (209, 209, 209, 255) ,
+'grey81' : (207, 207, 207, 255) ,
+'yellow3' : (205, 205, 0, 255) ,
+'ivory3' : (205, 205, 193, 255) ,
+'grey22' : (56, 56, 56, 255) ,
+'gray85' : (217, 217, 217, 255) ,
+'violetred3' : (205, 50, 120, 255) ,
+'dodgerblue2' : (28, 134, 238, 255) ,
+'gray42' : (107, 107, 107, 255) ,
+'sienna2' : (238, 121, 66, 255) ,
+'grey72' : (184, 184, 184, 255) ,
+'grey73' : (186, 186, 186, 255) ,
+'grey70' : (179, 179, 179, 255) ,
+'palevioletred' : (219, 112, 147, 255) ,
+'lightslategray' : (119, 136, 153, 255) ,
+'grey77' : (196, 196, 196, 255) ,
+'grey74' : (189, 189, 189, 255) ,
+'slategray1' : (198, 226, 255, 255) ,
+'pink1' : (255, 181, 197, 255) ,
+'mediumpurple1' : (171, 130, 255, 255) ,
+'pink3' : (205, 145, 158, 255) ,
+'antiquewhite4' : (139, 131, 120, 255) ,
+'lightpink1' : (255, 174, 185, 255) ,
+'honeydew2' : (224, 238, 224, 255) ,
+'khaki4' : (139, 134, 78, 255) ,
+'darkolivegreen4' : (110, 139, 61, 255) ,
+'gray45' : (115, 115, 115, 255) ,
+'slategray3' : (159, 182, 205, 255) ,
+'darkolivegreen1' : (202, 255, 112, 255) ,
+'khaki1' : (255, 246, 143, 255) ,
+'khaki2' : (238, 230, 133, 255) ,
+'khaki3' : (205, 198, 115, 255) ,
+'lavenderblush' : (255, 240, 245, 255) ,
+'honeydew4' : (131, 139, 131, 255) ,
+'salmon3' : (205, 112, 84, 255) ,
+'salmon2' : (238, 130, 98, 255) ,
+'gray92' : (235, 235, 235, 255) ,
+'salmon4' : (139, 76, 57, 255) ,
+'gray49' : (125, 125, 125, 255) ,
+'gray48' : (122, 122, 122, 255) ,
+'linen' : (250, 240, 230, 255) ,
+'burlywood1' : (255, 211, 155, 255) ,
+'green' : (0, 255, 0, 255) ,
+'gray47' : (120, 120, 120, 255) ,
+'blueviolet' : (138, 43, 226, 255) ,
+'brown2' : (238, 59, 59, 255) ,
+'brown3' : (205, 51, 51, 255) ,
+'peachpuff' : (255, 218, 185, 255) ,
+'brown4' : (139, 35, 35, 255) ,
+'firebrick4' : (139, 26, 26, 255) ,
+'azure1' : (240, 255, 255, 255) ,
+'azure3' : (193, 205, 205, 255) ,
+'azure2' : (224, 238, 238, 255) ,
+'azure4' : (131, 139, 139, 255) ,
+'tomato4' : (139, 54, 38, 255) ,
+'orange4' : (139, 90, 0, 255) ,
+'firebrick' : (178, 34, 34, 255) ,
+'indianred' : (205, 92, 92, 255) ,
+'orange1' : (255, 165, 0, 255) ,
+'orange3' : (205, 133, 0, 255) ,
+'orange2' : (238, 154, 0, 255) ,
+'darkolivegreen' : (85, 107, 47, 255) ,
+'gray2' : (5, 5, 5, 255) ,
+'slategrey' : (112, 128, 144, 255) ,
+'gray81' : (207, 207, 207, 255) ,
+'darkred' : (139, 0, 0, 255) ,
+'gray3' : (8, 8, 8, 255) ,
+'lightsteelblue1' : (202, 225, 255, 255) ,
+'lightsteelblue2' : (188, 210, 238, 255) ,
+'lightsteelblue3' : (162, 181, 205, 255) ,
+'lightsteelblue4' : (110, 123, 139, 255) ,
+'tomato3' : (205, 79, 57, 255) ,
+'gray43' : (110, 110, 110, 255) ,
+'darkgoldenrod4' : (139, 101, 8, 255) ,
+'grey50' : (127, 127, 127, 255) ,
+'yellow4' : (139, 139, 0, 255) ,
+'mediumorchid' : (186, 85, 211, 255) ,
+'yellow2' : (238, 238, 0, 255) ,
+'darkgoldenrod2' : (238, 173, 14, 255) ,
+'darkgoldenrod3' : (205, 149, 12, 255) ,
+'chartreuse' : (127, 255, 0, 255) ,
+'mediumblue' : (0, 0, 205, 255) ,
+'gray4' : (10, 10, 10, 255) ,
+'springgreen' : (0, 255, 127, 255) ,
+'orange' : (255, 165, 0, 255) ,
+'gray5' : (13, 13, 13, 255) ,
+'lightsalmon' : (255, 160, 122, 255) ,
+'gray19' : (48, 48, 48, 255) ,
+'turquoise' : (64, 224, 208, 255) ,
+'lightseagreen' : (32, 178, 170, 255) ,
+'grey8' : (20, 20, 20, 255) ,
+'grey9' : (23, 23, 23, 255) ,
+'grey6' : (15, 15, 15, 255) ,
+'grey7' : (18, 18, 18, 255) ,
+'grey4' : (10, 10, 10, 255) ,
+'grey5' : (13, 13, 13, 255) ,
+'grey2' : (5, 5, 5, 255) ,
+'grey3' : (8, 8, 8, 255) ,
+'grey0' : (0, 0, 0, 255) ,
+'grey1' : (3, 3, 3, 255) ,
+'gray50' : (127, 127, 127, 255) ,
+'goldenrod' : (218, 165, 32, 255) ,
+'grey58' : (148, 148, 148, 255) ,
+'grey59' : (150, 150, 150, 255) ,
+'gray51' : (130, 130, 130, 255) ,
+'grey54' : (138, 138, 138, 255) ,
+'mediumorchid4' : (122, 55, 139, 255) ,
+'grey56' : (143, 143, 143, 255) ,
+'navajowhite3' : (205, 179, 139, 255) ,
+'mediumorchid1' : (224, 102, 255, 255) ,
+'grey51' : (130, 130, 130, 255) ,
+'mediumorchid3' : (180, 82, 205, 255) ,
+'mediumorchid2' : (209, 95, 238, 255) ,
+'cyan2' : (0, 238, 238, 255) ,
+'cyan3' : (0, 205, 205, 255) ,
+'gray23' : (59, 59, 59, 255) ,
+'cyan1' : (0, 255, 255, 255) ,
+'darkgreen' : (0, 100, 0, 255) ,
+'gray24' : (61, 61, 61, 255) ,
+'cyan4' : (0, 139, 139, 255) ,
+'darkviolet' : (148, 0, 211, 255) ,
+'peachpuff4' : (139, 119, 101, 255) ,
+'gray28' : (71, 71, 71, 255) ,
+'slateblue4' : (71, 60, 139, 255) ,
+'slateblue3' : (105, 89, 205, 255) ,
+'peachpuff1' : (255, 218, 185, 255) ,
+'peachpuff2' : (238, 203, 173, 255) ,
+'peachpuff3' : (205, 175, 149, 255) ,
+'gray29' : (74, 74, 74, 255) ,
+'paleturquoise' : (175, 238, 238, 255) ,
+'darkgray' : (169, 169, 169, 255) ,
+'grey25' : (64, 64, 64, 255) ,
+'darkmagenta' : (139, 0, 139, 255) ,
+'palegoldenrod' : (238, 232, 170, 255) ,
+'grey64' : (163, 163, 163, 255) ,
+'grey12' : (31, 31, 31, 255) ,
+'deeppink3' : (205, 16, 118, 255) ,
+'gray79' : (201, 201, 201, 255) ,
+'gray83' : (212, 212, 212, 255) ,
+'deeppink2' : (238, 18, 137, 255) ,
+'burlywood4' : (139, 115, 85, 255) ,
+'palevioletred4' : (139, 71, 93, 255) ,
+'deeppink1' : (255, 20, 147, 255) ,
+'slateblue2' : (122, 103, 238, 255) ,
+'grey46' : (117, 117, 117, 255) ,
+'royalblue4' : (39, 64, 139, 255) ,
+'yellowgreen' : (154, 205, 50, 255) ,
+'royalblue1' : (72, 118, 255, 255) ,
+'slateblue1' : (131, 111, 255, 255) ,
+'lightgoldenrod3' : (205, 190, 112, 255) ,
+'lightgoldenrod2' : (238, 220, 130, 255) ,
+'navy' : (0, 0, 128, 255) ,
+'orchid' : (218, 112, 214, 255) ,
+'ghostwhite' : (248, 248, 255, 255) ,
+'purple' : (160, 32, 240, 255) ,
+'darkkhaki' : (189, 183, 107, 255) ,
+'grey45' : (115, 115, 115, 255) ,
+'gray94' : (240, 240, 240, 255) ,
+'wheat4' : (139, 126, 102, 255) ,
+'gray96' : (245, 245, 245, 255) ,
+'gray97' : (247, 247, 247, 255) ,
+'wheat1' : (255, 231, 186, 255) ,
+'gray91' : (232, 232, 232, 255) ,
+'wheat3' : (205, 186, 150, 255) ,
+'wheat2' : (238, 216, 174, 255) ,
+'indianred4' : (139, 58, 58, 255) ,
+'coral2' : (238, 106, 80, 255) ,
+'coral1' : (255, 114, 86, 255) ,
+'violetred' : (208, 32, 144, 255) ,
+'rosybrown3' : (205, 155, 155, 255) ,
+'deepskyblue2' : (0, 178, 238, 255) ,
+'deepskyblue1' : (0, 191, 255, 255) ,
+'bisque' : (255, 228, 196, 255) ,
+'grey49' : (125, 125, 125, 255) ,
+'khaki' : (240, 230, 140, 255) ,
+'wheat' : (245, 222, 179, 255) ,
+'lightslateblue' : (132, 112, 255, 255) ,
+'mediumpurple3' : (137, 104, 205, 255) ,
+'gray55' : (140, 140, 140, 255) ,
+'deepskyblue' : (0, 191, 255, 255) ,
+'gray98' : (250, 250, 250, 255) ,
+'steelblue' : (70, 130, 180, 255) ,
+'aliceblue' : (240, 248, 255, 255) ,
+'lightskyblue2' : (164, 211, 238, 255) ,
+'lightskyblue3' : (141, 182, 205, 255) ,
+'lightslategrey' : (119, 136, 153, 255) ,
+'blue3' : (0, 0, 205, 255) ,
+'blue2' : (0, 0, 238, 255) ,
+'gainsboro' : (220, 220, 220, 255) ,
+'grey76' : (194, 194, 194, 255) ,
+'purple3' : (125, 38, 205, 255) ,
+'plum4' : (139, 102, 139, 255) ,
+'gray56' : (143, 143, 143, 255) ,
+'plum3' : (205, 150, 205, 255) ,
+'plum' : (221, 160, 221, 255) ,
+'lightgrey' : (211, 211, 211, 255) ,
+'mediumslateblue' : (123, 104, 238, 255) ,
+'mistyrose' : (255, 228, 225, 255) ,
+'lightcyan1' : (224, 255, 255, 255) ,
+'grey71' : (181, 181, 181, 255) ,
+'darksalmon' : (233, 150, 122, 255) ,
+'beige' : (245, 245, 220, 255) ,
+'grey24' : (61, 61, 61, 255) ,
+'azure' : (240, 255, 255, 255) ,
+'honeydew1' : (240, 255, 240, 255) ,
+'slategray2' : (185, 211, 238, 255) ,
+'dodgerblue3' : (24, 116, 205, 255) ,
+'slategray4' : (108, 123, 139, 255) ,
+'grey27' : (69, 69, 69, 255) ,
+'lightcyan3' : (180, 205, 205, 255) ,
+'cornsilk' : (255, 248, 220, 255) ,
+'tomato1' : (255, 99, 71, 255) ,
+'gray57' : (145, 145, 145, 255) ,
+'mediumvioletred' : (199, 21, 133, 255) ,
+'tomato2' : (238, 92, 66, 255) ,
+'snow4' : (139, 137, 137, 255) ,
+'grey75' : (191, 191, 191, 255) ,
+'snow2' : (238, 233, 233, 255) ,
+'snow3' : (205, 201, 201, 255) ,
+'snow1' : (255, 250, 250, 255) ,
+'grey23' : (59, 59, 59, 255) ,
+'cornsilk3' : (205, 200, 177, 255) ,
+'lightcoral' : (240, 128, 128, 255) ,
+'orangered' : (255, 69, 0, 255) ,
+'navajowhite' : (255, 222, 173, 255) ,
+'mediumpurple2' : (159, 121, 238, 255) ,
+'slategray' : (112, 128, 144, 255) ,
+'pink2' : (238, 169, 184, 255) ,
+'grey29' : (74, 74, 74, 255) ,
+'grey28' : (71, 71, 71, 255) ,
+'gray82' : (209, 209, 209, 255) ,
+'burlywood' : (222, 184, 135, 255) ,
+'mediumpurple4' : (93, 71, 139, 255) ,
+'mediumspringgreen' : (0, 250, 154, 255) ,
+'grey26' : (66, 66, 66, 255) ,
+'grey21' : (54, 54, 54, 255) ,
+'grey20' : (51, 51, 51, 255) ,
+'blanchedalmond' : (255, 235, 205, 255) ,
+'pink4' : (139, 99, 108, 255) ,
+'gray78' : (199, 199, 199, 255) ,
+'tan3' : (205, 133, 63, 255) ,
+'gray76' : (194, 194, 194, 255) ,
+'gray77' : (196, 196, 196, 255) ,
+'white' : (255, 255, 255, 255) ,
+'gray75' : (191, 191, 191, 255) ,
+'gray72' : (184, 184, 184, 255) ,
+'gray73' : (186, 186, 186, 255) ,
+'gray70' : (179, 179, 179, 255) ,
+'gray71' : (181, 181, 181, 255) ,
+'lightgray' : (211, 211, 211, 255) ,
+'ivory' : (255, 255, 240, 255) ,
+'gray46' : (117, 117, 117, 255) ,
+'gray74' : (189, 189, 189, 255) ,
+'lightyellow3' : (205, 205, 180, 255) ,
+'lightpink2' : (238, 162, 173, 255) ,
+'lightpink3' : (205, 140, 149, 255) ,
+'paleturquoise4' : (102, 139, 139, 255) ,
+'lightpink4' : (139, 95, 101, 255) ,
+'paleturquoise3' : (150, 205, 205, 255) ,
+'seagreen4' : (46, 139, 87, 255) ,
+'seagreen3' : (67, 205, 128, 255) ,
+'seagreen2' : (78, 238, 148, 255) ,
+'seagreen1' : (84, 255, 159, 255) ,
+'paleturquoise2' : (174, 238, 238, 255) ,
+'gray52' : (133, 133, 133, 255) ,
+'cornsilk4' : (139, 136, 120, 255) ,
+'cornsilk2' : (238, 232, 205, 255) ,
+'darkolivegreen3' : (162, 205, 90, 255) ,
+'cornsilk1' : (255, 248, 220, 255) ,
+'limegreen' : (50, 205, 50, 255) ,
+'darkolivegreen2' : (188, 238, 104, 255) ,
+'grey' : (190, 190, 190, 255) ,
+'violetred2' : (238, 58, 140, 255) ,
+'salmon1' : (255, 140, 105, 255) ,
+'grey92' : (235, 235, 235, 255) ,
+'grey93' : (237, 237, 237, 255) ,
+'grey94' : (240, 240, 240, 255) ,
+'grey95' : (242, 242, 242, 255) ,
+'grey96' : (245, 245, 245, 255) ,
+'grey83' : (212, 212, 212, 255) ,
+'grey98' : (250, 250, 250, 255) ,
+'lightgoldenrod1' : (255, 236, 139, 255) ,
+'palegreen1' : (154, 255, 154, 255) ,
+'red3' : (205, 0, 0, 255) ,
+'palegreen3' : (124, 205, 124, 255) ,
+'palegreen2' : (144, 238, 144, 255) ,
+'palegreen4' : (84, 139, 84, 255) ,
+'cadetblue' : (95, 158, 160, 255) ,
+'violet' : (238, 130, 238, 255) ,
+'mistyrose2' : (238, 213, 210, 255) ,
+'slateblue' : (106, 90, 205, 255) ,
+'grey43' : (110, 110, 110, 255) ,
+'grey90' : (229, 229, 229, 255) ,
+'gray35' : (89, 89, 89, 255) ,
+'turquoise3' : (0, 197, 205, 255) ,
+'turquoise2' : (0, 229, 238, 255) ,
+'burlywood3' : (205, 170, 125, 255) ,
+'burlywood2' : (238, 197, 145, 255) ,
+'lightcyan4' : (122, 139, 139, 255) ,
+'rosybrown' : (188, 143, 143, 255) ,
+'turquoise4' : (0, 134, 139, 255) ,
+'whitesmoke' : (245, 245, 245, 255) ,
+'lightblue' : (173, 216, 230, 255) ,
+'grey40' : (102, 102, 102, 255) ,
+'gray40' : (102, 102, 102, 255) ,
+'honeydew3' : (193, 205, 193, 255) ,
+'dimgray' : (105, 105, 105, 255) ,
+'grey47' : (120, 120, 120, 255) ,
+'seagreen' : (46, 139, 87, 255) ,
+'red4' : (139, 0, 0, 255) ,
+'grey14' : (36, 36, 36, 255) ,
+'snow' : (255, 250, 250, 255) ,
+'darkorchid1' : (191, 62, 255, 255) ,
+'gray58' : (148, 148, 148, 255) ,
+'gray59' : (150, 150, 150, 255) ,
+'cadetblue4' : (83, 134, 139, 255) ,
+'cadetblue3' : (122, 197, 205, 255) ,
+'cadetblue2' : (142, 229, 238, 255) ,
+'cadetblue1' : (152, 245, 255, 255) ,
+'olivedrab4' : (105, 139, 34, 255) ,
+'purple4' : (85, 26, 139, 255) ,
+'gray20' : (51, 51, 51, 255) ,
+'grey44' : (112, 112, 112, 255) ,
+'purple1' : (155, 48, 255, 255) ,
+'olivedrab1' : (192, 255, 62, 255) ,
+'olivedrab2' : (179, 238, 58, 255) ,
+'olivedrab3' : (154, 205, 50, 255) ,
+'orangered3' : (205, 55, 0, 255) ,
+'orangered2' : (238, 64, 0, 255) ,
+'orangered1' : (255, 69, 0, 255) ,
+'darkorchid' : (153, 50, 204, 255) ,
+'thistle3' : (205, 181, 205, 255) ,
+'thistle2' : (238, 210, 238, 255) ,
+'thistle1' : (255, 225, 255, 255) ,
+'salmon' : (250, 128, 114, 255) ,
+'gray93' : (237, 237, 237, 255) ,
+'thistle4' : (139, 123, 139, 255) ,
+'gray39' : (99, 99, 99, 255) ,
+'lawngreen' : (124, 252, 0, 255) ,
+'hotpink3' : (205, 96, 144, 255) ,
+'hotpink2' : (238, 106, 167, 255) ,
+'hotpink1' : (255, 110, 180, 255) ,
+'lightgreen' : (144, 238, 144, 255) ,
+'hotpink4' : (139, 58, 98, 255) ,
+'darkseagreen4' : (105, 139, 105, 255) ,
+'darkseagreen3' : (155, 205, 155, 255) ,
+'darkseagreen2' : (180, 238, 180, 255) ,
+'darkseagreen1' : (193, 255, 193, 255) ,
+'deepskyblue4' : (0, 104, 139, 255) ,
+'gray44' : (112, 112, 112, 255) ,
+'navyblue' : (0, 0, 128, 255) ,
+'darkblue' : (0, 0, 139, 255) ,
+'forestgreen' : (34, 139, 34, 255) ,
+'gray53' : (135, 135, 135, 255) ,
+'grey100' : (255, 255, 255, 255) ,
+'brown1' : (255, 64, 64, 255) ,
+}

pygame/display.py

+#!/usr/bin/env python
+
+'''
+'''
+
+__docformat__ = 'restructuredtext'
+__version__ = '$Id$'
+
+import sys
+
+from SDL import *
+import pygame.base
+
+_display_surface = None
+_icon_was_set = 0
+
+def __PYGAMEinit__():
+    pygame.base.register_quit(_display_autoquit)
+
+def _display_autoquit():
+    global _display_surface
+    _display_surface = None
+
+def quit():
+    pygame.base._video_autoquit()
+    _display_autoquit()
+
+def init():
+    '''Initialize the display module.
+
+    Manually initialize SDL's video subsystem.  Will raise an
+    exception if it cannot be initialized. It is safe to call this
+    function if the video has is currently initialized.
+    '''
+    pygame.base._video_autoinit()
+    __PYGAMEinit__()
+
+def get_init():
+    '''Get status of display module initialization.
+
+    :rtype: bool
+    :return: True if SDL's video system is currently initialized.
+    '''
+    return SDL_WasInit(SDL_INIT_VIDEO) != 0
+
+def get_active():
+    '''get state of display mode
+
+    Returns True if the current display is active on the screen. This
+    done with the call to ``pygame.display.set_mode()``. It is
+    potentially subject to the activity of a running window manager.
+
+    Calling `set_mode` will change all existing display surface
+    to reference the new display mode. The old display surface will
+    be lost after this call.
+    '''
+    return SDL_GetAppState() & SDL_APPACTIVE != 0
+
+class Info:
+    def __init__(self):
+        info = SDL_GetVideoInfo()
+        if not info:
+            raise pygame.base.error, 'Could not retrieve video info'
+        self.hw = info.hw_available
+        self.wm = info.wm_available
+        self.blit_hw = info.blit_hw
+        self.blit_hw_CC = info.blit_hw_CC
+        self.blit_hw_A = info.blit_hw_A
+        self.blit_sw = info.blit_sw
+        self.blit_sw_CC = info.blit_sw_CC
+        self.blit_sw_A = info.blit_sw_A
+        self.blit_fill = info.blit_fill
+        self.video_mem = info.video_mem
+        self.bitsize = info.vfmt.BitsPerPixel
+        self.bytesize = info.vfmt.BytesPerPixel
+        self.masks = (info.vfmt.Rmask, info.vfmt.Gmask, 
+                      info.vfmt.Bmask, info.vfmt.Amask)
+        self.shifts = (info.vfmt.Rshift, info.vfmt.Gshift, 
+                       info.vfmt.Bshift, info.vfmt.Ashift)
+        self.losses = (info.vfmt.Rloss, info.vfmt.Gloss, 
+                       info.vfmt.Bloss, info.vfmt.Aloss)
+
+    def __str__(self):
+        return ('<VideoInfo(hw = %d, wm = %d,video_mem = %d\n' + \
+                '           blit_hw = %d, blit_hw_CC = %d, blit_hw_A = %d,\n'
+                '           blit_sw = %d, blit_sw_CC = %d, blit_sw_A = %d,\n'
+                '           bitsize  = %d, bytesize = %d,\n'
+                '           masks =  (%d, %d, %d, %d),\n'
+                '           shifts = (%d, %d, %d, %d),\n'
+                '           losses =  (%d, %d, %d, %d)>\n') % \
+               (self.hw, self.wm, self.video_mem,
+                self.blit_hw, self.blit_hw_CC, self.blit_hw_A,
+                self.blit_sw, self.blit_sw_CC, self.blit_sw_A,
+                self.bitsize, self.bytesize,
+                self.masks[0], self.masks[1], self.masks[2], self.masks[3],
+                self.shifts[0], self.shifts[1], self.shifts[2], self.shifts[3],
+                self.losses[0], self.losses[1], self.losses[2], self.losses[3])
+
+    def __repr__(self):
+        return str(self)
+
+def get_driver():
+    '''Get the current SDL video driver.
+
+    Once the display is initialized, this will return the name of the
+    currently running video driver. There is no way to get a list of
+    all the supported video drivers.
+
+    :rtype: str
+    '''
+    return SDL_VideoDriverName()
+
+def get_wm_info():
+    '''Get settings from the system window manager.
+
+    :note: Currently unimplemented, returns an empty dict.
+    :rtype: dict
+    '''
+    return {}
+
+def get_surface():
+    '''Get current display surface.
+
+    Returns a `Surface` object representing the current display.  Will
+    return None if called before the display mode is set.
+    '''
+    return _display_surface
+
+def gl_set_attribute(flag, value):
+    '''Set special OpenGL attributes.
+
+    When calling `pygame.display.set_mode` with the OPENGL flag,
+    pygame automatically handles setting the OpenGL attributes like
+    color and doublebuffering. OpenGL offers several other attributes
+    you may want control over. Pass one of these attributes as the
+    flag, and its appropriate value.
+
+    This must be called before `pygame.display.set_mode`.
+
+    The OPENGL flags are: GL_ALPHA_SIZE, GL_DEPTH_SIZE, GL_STENCIL_SIZE,
+    GL_ACCUM_RED_SIZE, GL_ACCUM_GREEN_SIZE, GL_ACCUM_BLUE_SIZE,
+    GL_ACCUM_ALPHA_SIZE GL_MULTISAMPLEBUFFERS, GL_MULTISAMPLESAMPLES,
+    GL_STEREO.
+
+    :Parameters:
+     - `flag`: int
+     - `value`: int
+
+    '''
+    SDL_GL_SetAttribute(flag, value)
+
+def gl_get_attribute(flag):
+    '''Get special OpenGL attributes.
+
+    After calling `pygame.display.set_mode` with the OPENGL flag
+    you will likely want to check the value of any special OpenGL
+    attributes you requested. You will not always get what you
+    requested.
+
+    See `gl_set_attribute` for a list of flags.
+
+    :Parameters:
+     - `flag`: int
+
+    :rtype: int
+    '''
+    return SDL_GL_GetAttribute(flag)
+
+def set_mode(size, flags=0, depth=0):
+    '''Set the display mode.
+
+    Sets the current display mode. If calling this after the mode has
+    already been set, this will change the display mode to the
+    desired type. Sometimes an exact match for the requested video
+    mode is not available. In this case SDL will try to find the
+    closest match and work with that instead.
+
+    The size is a 2-number-sequence containing the width and height
+    of the desired display mode. Flags represents a set of different
+    options for the new display mode. If omitted or given as 0, it
+    will default to a simple software window. You can mix several
+    flags together with the bitwise-or (|) operator. Possible flags
+    are HWSURFACE (or the value 1), HWPALETTE, DOUBLEBUF, and/or
+    FULLSCREEN. There are other flags available but these are the
+    most usual. A full list of flags can be found in the pygame
+    documentation.
+
+    The optional depth argument is the requested bits
+    per pixel. It will usually be left omitted, in which case the
+    display will use the best/fastest pixel depth available.
+
+    You can create an OpenGL surface (for use with PyOpenGL)
+    by passing the OPENGL flag. You will likely want to use the
+    DOUBLEBUF flag when using OPENGL. In which case, the flip()
+    function will perform the GL buffer swaps. When you are using
+    an OPENGL video mode, you will not be able to perform most of the
+    pygame drawing functions (fill, set_at, etc) on the display surface.
+
+    :Parameters:
+     - `size`: int, int
+     - `flags`: int
+     - `depth`: int
+    '''
+    global _display_surface
+
+    w, h = size
+    if w <= 0 or h <= 0:
+        raise pygame.base.error, 'Cannot set 0 sized display mode'
+
+    if not SDL_WasInit(SDL_INIT_VIDEO):
+        init()
+
+    if flags & SDL_OPENGL:
+        if flags & SDL_DOUBLEBUF
+            flags &= ~SDL_DOUBLEBUF
+            SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1)
+        else:
+            SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0)
+        if depth:
+            SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, depth)
+        surf = SDL_SetVideoMode(w, h, depth, flags)
+        if SDL_GL_GetAttribute(SDL_GL_DOUBLEBUFFER):
+            surf.flags |= SDL_DOUBLEBUF
+    else:
+        if not depth:
+            flags |= SDL_ANYFORMAT
+        surf = SDL_SetVideoMode(w, h, depth, flags)
+        title, icontitle = SDL_WM_GetCaption()
+        if not title:
+            SDL_WM_SetCaption('pygame window', 'pygame')
+
+        SDL_PumpEvents()
+
+        if _display_surface:
+            _display_surface.surf = surf
+        else:
+            _display_surface = Surface(surf)
+
+    if sys.platform != 'darwin' and False # XXX
+        if not _icon_was_set:
+            iconsurf = _display_resource(_icon_defaultname)
+            SDL_SetColorKey(iconsurf.surf, SDL_SRCCOLORKEY, 0)
+            _do_set_icon(iconsurf)
+
+    return _display_surface
+##    pygame - Python Game Library
+##    Copyright (C) 2000-2003  Pete Shinners
+##
+##    This library is free software; you can redistribute it and/or
+##    modify it under the terms of the GNU Library General Public
+##    License as published by the Free Software Foundation; either
+##    version 2 of the License, or (at your option) any later version.
+##
+##    This library is distributed in the hope that it will be useful,
+##    but WITHOUT ANY WARRANTY; without even the implied warranty of
+##    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+##    Library General Public License for more details.
+##
+##    You should have received a copy of the GNU Library General Public
+##    License along with this library; if not, write to the Free
+##    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+##
+##    Pete Shinners
+##    pete@shinners.org
+
+
+
+"""Set of functions from PyGame that are handy to have in
+the local namespace for your module"""
+
+from pygame.constants import *
+from pygame.rect import Rect
+import pygame.color as color
+Color = color.Color
+
             else:
                 raise TypeError, 'Argument must be rect style object'
         if len(args) == 4:
-            object.__setattr__(self, '_r', SDL.video.SDL_Rect(*args))
+            object.__setattr__(self, '_r', SDL.SDL_Rect(*args))
         elif len(args) == 2:
             object.__setattr__(self, '_r', 
-                               SDL.video.SDL_Rect(args[0][0], args[0][1], 
-                                                  args[1][0], args[1][1]))
+                               SDL.SDL_Rect(args[0][0], args[0][1], 
+                                            args[1][0], args[1][1]))
         else:
             raise TypeError, 'Argument must be rect style object'
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.